Mw0NChdae2NIswEA4wAAAAAAAAAAAAAAAAcAAABAAAAAc1QDAABkAGQBbABaAGQAZAFsAVoBZABkAWwCWgJkAGQBbANaA2QAZAFsBFoEZABkAWwFWgZkAGQCbAdtCFoIAQBkAGQDbAltCloKAQBkAGQEbAltC1oLAQBkAGQFbAxtDVoNAQBkAGQGbAxtDloOAQBkAGQHbA9tD1oQAQBkAGQIbA9tEVoRAQBkAGQJbBJtE1oTAQBkCmQLbBRtFVoVAQBkCmQMbBZtF1oXAQBkCmQNbBhtGVoZAQBkCmQObBhtGloaAQBkCmQPbBhtG1obAQBkCmQQbBhtHFocAQBkCmQRbBhtHVodAQBkCmQSbBhtHloeAQBkCmQTbB9tIFogAQBkCmQUbB9tIVohAQBkCmQVbCJtI1ojAQBkCmQWbCJtJFokAQBkCmQXbCVtJlomAQBkCmQYbCVtJ1onAQBkCmQZbCVtKFooAQBkCmQabCltKloqAQBkCmQbbCltK1orAQBkCmQcbCltLFosAQBkCmQdbC1tLlouAQBkCmQebC1tL1ovAQBkCmQfbC1tMFowAQBkCmQgbC1tMVoxAQBkCmQhbC1tMloyAQBkCmQibC1tM1ozAQBlBmo0kAFyzGQAZAFsNVo2ZApkI2w3bThaOAEAZQZqOWQkZQZqOmQlZQZqO2YCGQBkJo0CWjxlBmo5ZCeDAVo9ZChlPmUGaj9lBmpAZT5kKWYCGQAZAGQqnANkK2QshARaQWRPZC5lPmQpZUJkAWQvnAVkMGQxhAVaQ2UGakRlPRkAZUVlBmpGZQZqQGU9ZCVmAhkAGQBkMpwDZDNkNIQEWkdlCmRQZChlBmpIZDUZAGUGaj9kARkAZDacA2Q3ZDiEBYMBWkllBmpKZDUZAGUGakpkNRkAZQZqRmQ1GQBkOZwDZDpkO4QEWktHAGQ8ZD2EAGQ9ZQBqTIMDWk1HAGQ+ZCiEAGQogwJaTkcAZD9kQIQAZECDAlpPRwBkQWQphABkKWVPgwNaUEcAZEJkLoQAZC5lUIMDWlFHAGRDZESEAGREZVGDA1pSRwBkRWRGhABkRmVRgwNaU2UGajtlBmo/ZQZqOxkAZEecAmRIZEmEBFpURwBkSmQ1hABkNYMCWlVHAGRLZEyEAGRMZVWDA1pWRwBkTWROhABkTmVVgwNaV2QBUwApUekAAAAATikB2gNhYmMpAdoOY29udGV4dG1hbmFnZXIpAdoJRXhpdFN0YWNrKQHaB3BhcnRpYWwpAdoOdXBkYXRlX3dyYXBwZXIpAdoHZ2V0dGV4dCkB2ghuZ2V0dGV4dCkB2gZyZXBlYXTpAQAAACkB2gV0eXBlcykB2hJfdmVyaWZ5X3B5dGhvbl9lbnYpAdoFQWJvcnQpAdoMQmFkUGFyYW1ldGVyKQHaDkNsaWNrRXhjZXB0aW9uKQHaBEV4aXQpAdoQTWlzc2luZ1BhcmFtZXRlcikB2gpVc2FnZUVycm9yKQHaDUhlbHBGb3JtYXR0ZXIpAdoMam9pbl9vcHRpb25zKQHaC3BvcF9jb250ZXh0KQHaDHB1c2hfY29udGV4dCkB2hFfZmxhZ19uZWVkc192YWx1ZSkB2gxPcHRpb25QYXJzZXIpAdoJc3BsaXRfb3B0KQHaB2NvbmZpcm0pAdoGcHJvbXB0KQHaBXN0eWxlKQHaFF9kZXRlY3RfcHJvZ3JhbV9uYW1lKQHaDF9leHBhbmRfYXJncykB2gRlY2hvKQHaF21ha2VfZGVmYXVsdF9zaG9ydF9oZWxwKQHaCG1ha2Vfc3RyKQHaElBhY2lmeUZsdXNoV3JhcHBlcikB2g5Db21wbGV0aW9uSXRlbdoBRi4pAdoFYm91bmTaAVbaB0NvbnRleHTaB0NvbW1hbmQpA9oDY3R42gppbmNvbXBsZXRl2gZyZXR1cm5jAgAAAAAAAAAFAAAABAAAAGMAAABzVgAAAHQAagF0AnwAagODAn0CeEJ8AmoEfACDAUQAXTR9A3wDagV8AYMBchp8AmoGfAB8A4MCfQR8BGQBawlyGnwEagcMAHIafAN8BGYCVgABAHEaVwBkAVMAKQJ600xpc3QgYWxsIHRoZSBzdWJjb21tYW5kcyBvZiBhIGdyb3VwIHRoYXQgc3RhcnQgd2l0aCB0aGUKICAgIGluY29tcGxldGUgdmFsdWUgYW5kIGFyZW4ndCBoaWRkZW4uCgogICAgOnBhcmFtIGN0eDogSW52b2NhdGlvbiBjb250ZXh0IGZvciB0aGUgZ3JvdXAuCiAgICA6cGFyYW0gaW5jb21wbGV0ZTogVmFsdWUgYmVpbmcgY29tcGxldGVkLiBNYXkgYmUgZW1wdHkuCiAgICBOKQjaAXTaBGNhc3TaDE11bHRpQ29tbWFuZNoHY29tbWFuZNoNbGlzdF9jb21tYW5kc9oKc3RhcnRzd2l0aNoLZ2V0X2NvbW1hbmTaBmhpZGRlbikFcikAAAByKgAAAFoFbXVsdGnaBG5hbWVyLwAAAKkAcjUAAAD6ey9ob21lL3VldGxoci9Eb2N1bWVudHMvU2VybW9QbG90X2JhY2tlbmQvZHJhZnRfU1JBTV9ibGFja2JveC9VRVRSVl9FU29DX21wdzgvdmVudi9saWIvcHl0aG9uMy42L3NpdGUtcGFja2FnZXMvY2xpY2svY29yZS5wedoaX2NvbXBsZXRlX3Zpc2libGVfY29tbWFuZHMxAAAAcwwAAAAACQ4CEAEKAQwCEAFyNwAAAEZyLgAAACkF2gxiYXNlX2NvbW1hbmTaCGNtZF9uYW1l2gNjbWTaCHJlZ2lzdGVycisAAABjBAAAAAAAAAAFAAAADwAAAEMAAABzbAAAAHwAagAMAHMUdAF8AnQCgwIMAHIYZABTAHwDciJkAX0EbgRkAn0EdAN8BJsAZAN8AGoEmwJkBHwBmwJkBXwBmwJkBnQFfAKDAWoGmwBkB3QFfACDAWoGmwBkCHwAagSbAmQJnQ6DAYIBZABTACkKTnpkSXQgaXMgbm90IHBvc3NpYmxlIHRvIGFkZCBtdWx0aSBjb21tYW5kcyBhcyBjaGlsZHJlbiB0byBhbm90aGVyIG11bHRpIGNvbW1hbmQgdGhhdCBpcyBpbiBjaGFpbiBtb2RlLnpkRm91bmQgYSBtdWx0aSBjb21tYW5kIGFzIHN1YmNvbW1hbmQgdG8gYSBtdWx0aSBjb21tYW5kIHRoYXQgaXMgaW4gY2hhaW4gbW9kZS4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkLnoKLiBDb21tYW5kIHoVIGlzIHNldCB0byBjaGFpbiBhbmQgekEgd2FzIGFkZGVkIGFzIGEgc3ViY29tbWFuZCBidXQgaXQgaW4gaXRzZWxmIGlzIGEgbXVsdGkgY29tbWFuZC4gKHoGIGlzIGEgehIgd2l0aGluIGEgY2hhaW5lZCB6ByBuYW1lZCB6AikuKQfaBWNoYWlu2gppc2luc3RhbmNlci4AAADaDFJ1bnRpbWVFcnJvcnI0AAAA2gR0eXBl2ghfX25hbWVfXykFcjgAAAByOQAAAHI6AAAAcjsAAADaBGhp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ZEqEBFovZQllBmoIZS4ZAGRLnAJkTGRNhARaMGQDUwApVHInAAAAYR4TAABUaGUgY29udGV4dCBpcyBhIHNwZWNpYWwgaW50ZXJuYWwgb2JqZWN0IHRoYXQgaG9sZHMgc3RhdGUgcmVsZXZhbnQKICAgIGZvciB0aGUgc2NyaXB0IGV4ZWN1dGlvbiBhdCBldmVyeSBzaW5nbGUgbGV2ZWwuICBJdCdzIG5vcm1hbGx5IGludmlzaWJsZQogICAgdG8gY29tbWFuZHMgdW5sZXNzIHRoZXkgb3B0LWluIHRvIGdldHRpbmcgYWNjZXNzIHRvIGl0LgoKICAgIFRoZSBjb250ZXh0IGlzIHVzZWZ1bCBhcyBpdCBjYW4gcGFzcyBpbnRlcm5hbCBvYmplY3RzIGFyb3VuZCBhbmQgY2FuCiAgICBjb250cm9sIHNwZWNpYWwgZXhlY3V0aW9uIGZlYXR1cmVzIHN1Y2ggYXMgcmVhZGluZyBkYXRhIGZyb20KICAgIGVudmlyb25tZW50IHZhcmlhYmxlcy4KCiAgICBBIGNvbnRleHQgY2FuIGJlIHVzZWQgYXMgY29udGV4dCBtYW5hZ2VyIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBjYWxsCiAgICA6bWV0aDpgY2xvc2VgIG9uIHRlYXJkb3duLgoKICAgIDpwYXJhbSBjb21tYW5kOiB0aGUgY29tbWFuZCBjbGFzcyBmb3IgdGhpcyBjb250ZXh0LgogICAgOnBhcmFtIHBhcmVudDogdGhlIHBhcmVudCBjb250ZXh0LgogICAgOnBhcmFtIGluZm9fbmFtZTogdGhlIGluZm8gbmFtZSBmb3IgdGhpcyBpbnZvY2F0aW9uLiAgR2VuZXJhbGx5IHRoaXMKICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZSBtb3N0IGRlc2NyaXB0aXZlIG5hbWUgZm9yIHRoZSBzY3JpcHQgb3IKICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuICBGb3IgdGhlIHRvcGxldmVsIHNjcmlwdCBpdCBpcyB1c3VhbGx5CiAgICAgICAgICAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0LCBmb3IgY29tbWFuZHMgYmVsb3cgaXQgaXQncwogICAgICAgICAgICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHNjcmlwdC4KICAgIDpwYXJhbSBvYmo6IGFuIGFyYml0cmFyeSBvYmplY3Qgb2YgdXNlciBkYXRhLgogICAgOnBhcmFtIGF1dG9fZW52dmFyX3ByZWZpeDogdGhlIHByZWZpeCB0byB1c2UgZm9yIGF1dG9tYXRpYyBlbnZpcm9ubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLiAgSWYgdGhpcyBpcyBgTm9uZWAgdGhlbiByZWFkaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcyBpcyBkaXNhYmxlZC4gIFRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IGFmZmVjdCBtYW51YWxseSBzZXQgZW52aXJvbm1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB3aGljaCBhcmUgYWx3YXlzIHJlYWQuCiAgICA6cGFyYW0gZGVmYXVsdF9tYXA6IGEgZGljdGlvbmFyeSAobGlrZSBvYmplY3QpIHdpdGggZGVmYXVsdCB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtZXRlcnMuCiAgICA6cGFyYW0gdGVybWluYWxfd2lkdGg6IHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwuICBUaGUgZGVmYXVsdCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0IGZyb20gcGFyZW50IGNvbnRleHQuICBJZiBubyBjb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZXMgdGhlIHRlcm1pbmFsIHdpZHRoIHRoZW4gYXV0bwogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3Rpb24gd2lsbCBiZSBhcHBsaWVkLgogICAgOnBhcmFtIG1heF9jb250ZW50X3dpZHRoOiB0aGUgbWF4aW11bSB3aWR0aCBmb3IgY29udGVudCByZW5kZXJlZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAodGhpcyBjdXJyZW50bHkgb25seSBhZmZlY3RzIGhlbHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZXMpLiAgVGhpcyBkZWZhdWx0cyB0byA4MCBjaGFyYWN0ZXJzIGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBvdmVycmlkZGVuLiAgSW4gb3RoZXIgd29yZHM6IGV2ZW4gaWYgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmFsIGlzIGxhcmdlciB0aGFuIHRoYXQsIENsaWNrIHdpbGwgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCB0aGluZ3Mgd2lkZXIgdGhhbiA4MCBjaGFyYWN0ZXJzIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQuICBJbiBhZGRpdGlvbiB0byB0aGF0LCBmb3JtYXR0ZXJzIG1pZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBzb21lIHNhZmV0eSBtYXBwaW5nIG9uIHRoZSByaWdodC4KICAgIDpwYXJhbSByZXNpbGllbnRfcGFyc2luZzogaWYgdGhpcyBmbGFnIGlzIGVuYWJsZWQgdGhlbiBDbGljayB3aWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlIHdpdGhvdXQgYW55IGludGVyYWN0aXZpdHkgb3IgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2NhdGlvbi4gIERlZmF1bHQgdmFsdWVzIHdpbGwgYWxzbyBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGltcGxlbWVudGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGluZ3Mgc3VjaCBhcyBjb21wbGV0aW9uIHN1cHBvcnQuCiAgICA6cGFyYW0gYWxsb3dfZXh0cmFfYXJnczogaWYgdGhpcyBpcyBzZXQgdG8gYFRydWVgIHRoZW4gZXh0cmEgYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIGVuZCB3aWxsIG5vdCByYWlzZSBhbiBlcnJvciBhbmQgd2lsbCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcHQgb24gdGhlIGNvbnRleHQuICBUaGUgZGVmYXVsdCBpcyB0byBpbmhlcml0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgY29tbWFuZC4KICAgIDpwYXJhbSBhbGxvd19pbnRlcnNwZXJzZWRfYXJnczogaWYgdGhpcyBpcyBzZXQgdG8gYEZhbHNlYCB0aGVuIG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFyZ3VtZW50cyBjYW5ub3QgYmUgbWl4ZWQuICBUaGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBpcyB0byBpbmhlcml0IGZyb20gdGhlIGNvbW1hbmQuCiAgICA6cGFyYW0gaWdub3JlX3Vua25vd25fb3B0aW9uczogaW5zdHJ1Y3RzIGNsaWNrIHRvIGlnbm9yZSBvcHRpb25zIGl0IGRvZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qga25vdyBhbmQga2VlcHMgdGhlbSBmb3IgbGF0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLgogICAgOnBhcmFtIGhlbHBfb3B0aW9uX25hbWVzOiBvcHRpb25hbGx5IGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgZGVmaW5lIGhvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBoZWxwIHBhcmFtZXRlciBpcyBuYW1lZC4gIFRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIGBgWyctLWhlbHAnXWBgLgogICAgOnBhcmFtIHRva2VuX25vcm1hbGl6ZV9mdW5jOiBhbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplIHRva2VucyAob3B0aW9ucywgY2hvaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRjLikuICBUaGlzIGZvciBpbnN0YW5jZSBjYW4gYmUgdXNlZCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnQgY2FzZSBpbnNlbnNpdGl2ZSBiZWhhdmlvci4KICAgIDpwYXJhbSBjb2xvcjogY29udHJvbHMgaWYgdGhlIHRlcm1pbmFsIHN1cHBvcnRzIEFOU0kgY29sb3JzIG9yIG5vdC4gIFRoZQogICAgICAgICAgICAgICAgICBkZWZhdWx0IGlzIGF1dG9kZXRlY3Rpb24uICBUaGlzIGlzIG9ubHkgbmVlZGVkIGlmIEFOU0kKICAgICAgICAgICAgICAgICAgY29kZXMgYXJlIHVzZWQgaW4gdGV4dHMgdGhhdCBDbGljayBwcmludHMgd2hpY2ggaXMgYnkKICAgICAgICAgICAgICAgICAgZGVmYXVsdCBub3QgdGhlIGNhc2UuICBUaGlzIGZvciBpbnN0YW5jZSB3b3VsZCBhZmZlY3QKICAgICAgICAgICAgICAgICAgaGVscCBvdXRwdXQuCiAgICA6cGFyYW0gc2hvd19kZWZhdWx0OiBTaG93IGRlZmF1bHRzIGZvciBhbGwgb3B0aW9ucy4gSWYgbm90IHNldCwKICAgICAgICBkZWZhdWx0cyB0byB0aGUgdmFsdWUgZnJvbSBhIHBhcmVudCBjb250ZXh0LiBPdmVycmlkZXMgYW4KICAgICAgICBvcHRpb24ncyBgYHNob3dfZGVmYXVsdGBgIGFyZ3VtZW50LgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgVGhlIGBgc2hvd19kZWZhdWx0YGAgcGFyYW1ldGVyIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBmcm9tIHRoZQogICAgICAgIHBhcmVudCBjb250ZXh0LgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogNy4xCiAgICAgICBBZGRlZCB0aGUgYGBzaG93X2RlZmF1bHRgYCBwYXJhbWV0ZXIuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA0LjAKICAgICAgICBBZGRlZCB0aGUgYGBjb2xvcmBgLCBgYGlnbm9yZV91bmtub3duX29wdGlvbnNgYCwgYW5kCiAgICAgICAgYGBtYXhfY29udGVudF93aWR0aGBgIHBhcmFtZXRlcnMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKICAgICAgICBBZGRlZCB0aGUgYGBhbGxvd19leHRyYV9hcmdzYGAgYW5kIGBgYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3NgYAogICAgICAgIHBhcmFtZXRlcnMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjAKICAgICAgICBBZGRlZCB0aGUgYGByZXNpbGllbnRfcGFyc2luZ2BgLCBgYGhlbHBfb3B0aW9uX25hbWVzYGAsIGFuZAogICAgICAgIGBgdG9rZW5fbm9ybWFsaXplX2Z1bmNgYCBwYXJhbWV0ZXJzLgogICAgchMAAABORnIoAAAAKRFyLwAAANoGcGFyZW502glpbmZvX25hbWXaA29iatoSYXV0b19lbnZ2YXJfcHJlZml42gtkZWZhdWx0X21hcNoOdGVybWluYWxfd2lkdGjaEW1heF9jb250ZW50X3dpZHRo2hFyZXNpbGllbnRfcGFyc2luZ9oQYWxsb3dfZXh0cmFfYXJnc9oXYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3PaFmlnbm9yZV91bmtub3duX29wdGlvbnPaEWhlbHBfb3B0aW9uX25hbWVz2hR0b2tlbl9ub3JtYWxpemVfZnVuY9oFY29sb3LaDHNob3dfZGVmYXVsdHIrAAAAYxEAAAAAAAAAEQAAAAQAAABDAAAAcxACAAB8AnwAXwB8AXwAXwF8A3wAXwJpAHwAXwNnAHwAXwRnAHwAXwV8BGQAawhyOnwCZABrCXI6fAJqBn0EfAR8AF8GdAd8AmQBaQCDA3wAXwh8BmQAawhyfHwDZABrCXJ8fAJkAGsJcnx8AmoJZABrCXJ8fAJqCWoKfAODAX0GfAZ8AF8JZAB8AF8LfAdkAGsIcp58AmQAawlynnwCagx9B3wHfABfDHwIZABrCHK6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VgABAFcAZAJRAFIAWABXAGQCfAFzQHwABABqAGQBOAACAF8AWABkAlMAKQNhSQQAAFRoaXMgaGVscGVyIG1ldGhvZCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBjb250ZXh0IG9iamVjdCB0byBwcm9tb3RlCiAgICAgICAgaXQgdG8gdGhlIGN1cnJlbnQgdGhyZWFkIGxvY2FsIChzZWUgOmZ1bmM6YGdldF9jdXJyZW50X2NvbnRleHRgKS4KICAgICAgICBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGlzIGlzIHRvIGludm9rZSB0aGUgY2xlYW51cCBmdW5jdGlvbnMgd2hpY2gKICAgICAgICBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBgY2xlYW51cGAgdG8gYEZhbHNlYC4gIFRoZSBjbGVhbnVwCiAgICAgICAgZnVuY3Rpb25zIGFyZSB0eXBpY2FsbHkgdXNlZCBmb3IgdGhpbmdzIHN1Y2ggYXMgY2xvc2luZyBmaWxlIGhhbmRsZXMuCgogICAgICAgIElmIHRoZSBjbGVhbnVwIGlzIGludGVuZGVkIHRoZSBjb250ZXh0IG9iamVjdCBjYW4gYWxzbyBiZSBkaXJlY3RseQogICAgICAgIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCgogICAgICAgIEV4YW1wbGUgdXNhZ2U6OgoKICAgICAgICAgICAgd2l0aCBjdHguc2NvcGUoKToKICAgICAgICAgICAgICAgIGFzc2VydCBnZXRfY3VycmVudF9jb250ZXh0KCkgaXMgY3R4CgogICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudDo6CgogICAgICAgICAgICB3aXRoIGN0eDoKICAgICAgICAgICAgICAgIGFzc2VydCBnZXRfY3VycmVudF9jb250ZXh0KCkgaXMgY3R4CgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDUuMAoKICAgICAgICA6cGFyYW0gY2xlYW51cDogY29udHJvbHMgaWYgdGhlIGNsZWFudXAgZnVuY3Rpb25zIHNob3VsZCBiZSBydW4gb3IKICAgICAgICAgICAgICAgICAgICAgICAgbm90LiAgVGhlIGRlZmF1bHQgaXMgdG8gcnVuIHRo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YXR0ZXIMAgAAcwQAAAAACgQBehZDb250ZXh0Lm1ha2VfZm9ybWF0dGVyKQLaD2NvbnRleHRfbWFuYWdlcnIrAAAAYwIAAAAAAAAAAgAAAAIAAABDAAAAcwwAAAB8AGoAagF8AYMBUwApAWHZAwAAUmVnaXN0ZXIgYSByZXNvdXJjZSBhcyBpZiBpdCB3ZXJlIHVzZWQgaW4gYSBgYHdpdGhgYAogICAgICAgIHN0YXRlbWVudC4gVGhlIHJlc291cmNlIHdpbGwgYmUgY2xlYW5lZCB1cCB3aGVuIHRoZSBjb250ZXh0IGlzCiAgICAgICAgcG9wcGVkLgoKICAgICAgICBVc2VzIDptZXRoOmBjb250ZXh0bGliLkV4aXRTdGFjay5lbnRlcl9jb250ZXh0YC4gSXQgY2FsbHMgdGhlCiAgICAgICAgcmVzb3VyY2UncyBgYF9fZW50ZXJfXygpYGAgbWV0aG9kIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIFdoZW4KICAgICAgICB0aGUgY29udGV4dCBpcyBwb3BwZWQsIGl0IGNsb3NlcyB0aGUgc3RhY2ssIHdoaWNoIGNhbGxzIHRoZQogICAgICAgIHJlc291cmNlJ3MgYGBfX2V4aXRfXygpYGAgbWV0aG9kLgoKICAgICAgICBUbyByZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gZm9yIHNvbWV0aGluZyB0aGF0IGlzbid0IGEKICAgICAgICBjb250ZXh0IG1hbmFnZXIsIHVzZSA6bWV0aDpgY2FsbF9vbl9jbG9zZWAuIE9yIHVzZSBzb21ldGhpbmcKICAgICAgICBmcm9tIDptb2Q6YGNvbnRleHRsaWJgIHRvIHR1cm4gaXQgaW50byBhIGNvbnRleHQgbWFuYWdlciBmaXJzdC4KCiAgICAgICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICAgICAgQGNsaWNrLmdyb3VwKCkKICAgICAgICAgICAgQGNsaWNrLm9wdGlvbigiLS1uYW1lIikKICAgICAgICAgICAgQGNsaWNrLnBhc3NfY29udGV4dAogICAgICAgICAgICBkZWYgY2xpKGN0eCk6CiAgICAgICAgICAgICAgICBjdHgub2JqID0gY3R4LndpdGhfcmVzb3VyY2UoY29ubmVjdF9kYihuYW1lKSkKCiAgICAgICAgOnBhcmFtIGNvbnRleHRfbWFuYWdlcjogVGhlIGNvbnRleHQgbWFuYWdlciB0byBlbnRlci4KICAgICAgICA6cmV0dXJuOiBXaGF0ZXZlciBgYGNvbnRleHRfbWFuYWdlci5fX2VudGVyX18oKWBgIHJldHVybnMuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDguMAogICAgICAgICkCcoQAAADaDWVudGVyX2NvbnRleHQpAnKFAAAAcpUAAAByNQAAAHI1AAAAcjYAAADaDXdpdGhfcmVzb3VyY2UaAgAAcwIAAAAAG3oVQ29udGV4dC53aXRoX3Jlc291cmNlLikC2gFmcisAAABjAgAAAAAAAAACAAAAAgAAAEMAAABzDAAAAHwAagBqAXwBgwFTACkBYYUBAABSZWdpc3RlciBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250ZXh0IHRlYXJzIGRvd24uCgogICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2xvc2UgcmVzb3VyY2VzIG9wZW5lZCBkdXJpbmcgdGhlIHNjcmlwdAogICAgICAgIGV4ZWN1dGlvbi4gUmVzb3VyY2VzIHRoYXQgc3VwcG9ydCBQeXRob24ncyBjb250ZXh0IG1hbmFnZXIKICAgICAgICBwcm90b2NvbCB3aGljaCB3b3VsZCBiZSB1c2VkIGluIGEgYGB3aXRoYGAgc3RhdGVtZW50IHNob3VsZCBiZQogICAgICAgIHJlZ2lzdGVyZWQgd2l0aCA6bWV0aDpgd2l0aF9yZXNvdXJjZWAgaW5zdGVhZC4KCiAgICAgICAgOnBhcmFtIGY6IFRoZSBmdW5jdGlvbiB0byBleGVjdXRlIG9uIHRlYXJkb3duLgogICAgICAgICkCcoQAAADaCGNhbGxiYWNrKQJyhQAAAHKYAAAAcjUAAAByNQAAAHI2AAAA2g1jYWxsX29uX2Nsb3NlNwIAAHMCAAAAAAp6FUNvbnRleHQuY2FsbF9vbl9jbG9zZWMBAAAAAAAAAAEAAAACAAAAQwAAAHMWAAAAfABqAGoBgwABAHQCgwB8AF8AZAFTACkCepxJbnZva2UgYWxsIGNsb3Nl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fQF8AGoEfASDAX0FeDZ8BGoFRABdLH0GfAZqBnwDawdyOnwGagdyOnwGagh8BXwGagl8BYMBgwJ8A3wGagY8AHE6VwB8BWoFagp8A4MBAQBuBHwAfQV0C3wAgwGPHAEAfAWPDAEAfAF8AnwDjgFTAFEAUgBYAFcAZAFRAFIAWABkAVMAKQNh0AMAAEludm9rZXMgYSBjb21tYW5kIGNhbGxiYWNrIGluIGV4YWN0bHkgdGhlIHdheSBpdCBleHBlY3RzLiAgVGhlcmUKICAgICAgICBhcmUgdHdvIHdheXMgdG8gaW52b2tlIHRoaXMgbWV0aG9kOgoKICAgICAgICAxLiAgdGhlIGZpcnN0IGFyZ3VtZW50IGNhbiBiZSBhIGNhbGxiYWNrIGFuZCBhbGwgb3RoZXIgYXJndW1lbnRzIGFuZAogICAgICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZm9yd2FyZGVkIGRpcmVjdGx5IHRvIHRoZSBmdW5jdGlvbi4KICAgICAgICAyLiAgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgY2xpY2sgY29tbWFuZCBvYmplY3QuICBJbiB0aGF0IGNhc2UgYWxsCiAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgZm9yd2FyZGVkIGFzIHdlbGwgYnV0IHByb3BlciBjbGljayBwYXJhbWV0ZXJzCiAgICAgICAgICAgIChvcHRpb25zIGFuZCBjbGljayBhcmd1bWVudHMpIG11c3QgYmUga2V5d29yZCBhcmd1bWVudHMgYW5kIENsaWNrCiAgICAgICAgICAgIHdpbGwgZmlsbCBpbiBkZWZhdWx0cy4KCiAgICAgICAgTm90ZSB0aGF0IGJlZm9yZSBDbGljayAzLjIga2V5d29yZCBhcmd1bWVudHMgd2VyZSBub3QgcHJvcGVybHkgZmlsbGVkCiAgICAgICAgaW4gYWdhaW5zdCB0aGUgaW50ZW50aW9uIG9mIHRoaXMgY29kZSBhbmQgbm8gY29udGV4dCB3YXMgY3JlYXRlZC4gIEZvcgogICAgICAgIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBjaGFuZ2UgYW5kIHdoeSBpdCB3YXMgZG9uZSBpbiBhIGJ1Z2ZpeAogICAgICAgIHJl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AGoJfAJ8AWYCfAaOAY8gfQd8AGoKfAeDAX0IfARzgnwIUwB8B2oLgwABAFcAZAFRAFIAWABXAG7SBAB0DHQNZgJrCnLCAQABAAEAdA50AWoPZASNAQEAdBCDAGQBggJZAG6oBAB0EWsKkABy/gEAfQkBAHogfARz2oIAfAlqEoMAAQB0AWoLfAlqE4MBAQBXAFkAZAFkAX0JfglYAG5sBAB0FGsKkAFyaAEAfQkBAHpOfAlqFXQVahZrApABclZ0F2oYdBdqGXQadAFqG4MBgwJ0AV8bdBdqGHQXahl0GnQBag+DAYMCdAFfD3QBagtkAoMBAQBuAoIAVwBZAGQBZAF9CX4JWABuAlgAVwBudgQAdBxrCpABcqoBAH0JAQB6IHwEkAFylHQBagt8CWoTgwEBAG4GfAlqE1MAVwBZAGQBZAF9CX4JWABuOgQAdBBrCpABcuIBAAEAAQB8BJABc8KCAHQOdB1kBYMBdAFqD2QEjQIBAHQBagtkAoMBAQBZAG4CWABkAVMAKQZh2wgAAFRoaXMgaXMgdGhlIHdheSB0byBpbnZva2UgYSBzY3JpcHQgd2l0aCBhbGwgdGhlIGJlbGxzIGFuZAogICAgICAgIHdoaXN0bGVzIGFzIGEgY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uLiAgVGhpcyB3aWxsIGFsd2F5cyB0ZXJtaW5hdGUKICAgICAgICB0aGUgYXBwbGljYXRpb24gYWZ0ZXIgYSBjYWxsLiAgSWYgdGhpcyBpcyBub3Qgd2FudGVkLCBgYFN5c3RlbUV4aXRgYAogICAgICAgIG5lZWRzIHRvIGJlIGNhdWdodC4KCiAgICAgICAgVGhpcyBtZXRob2QgaXMgYWxzbyBhdmFpbGFibGUgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgaW5zdGFuY2Ugb2YKICAgICAgICBhIDpjbGFzczpgQ29tbWFuZGAuCgogICAgICAgIDpwYXJhbSBhcmdzOiB0aGUgYXJndW1lbnRzIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHBhcnNpbmcuICBJZiBub3QKICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQsIGBgc3lzLmFyZ3ZbMTpdYGAgaXMgdXNlZC4KICAgICAgICA6cGFyYW0gcHJvZ19uYW1lOiB0aGUgcHJvZ3JhbSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQuICBCeSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb2dyYW0gbmFtZSBpcyBjb25zdHJ1Y3RlZCBieSB0YWtpbmcgdGhlIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGZyb20gYGBzeXMuYXJndlswXWBgLgogICAgICAgIDpwYXJhbSBjb21wbGV0ZV92YXI6IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGNvbnRyb2xzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2ggY29tcGxldGlvbiBzdXBwb3J0LiAgVGhlIGRlZmF1bHQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYCJfPHByb2dfbmFtZT5fQ09NUExFVEUiYGAgd2l0aCBwcm9nX25hbWUgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcmNhc2UuCiAgICAgICAgOnBhcmFtIHN0YW5kYWxvbmVfbW9kZTogdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gaW52b2tlIHRoZSBzY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzdGFuZGFsb25lIG1vZGUuICBDbGljayB3aWxsIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgZXhjZXB0aW9ucyBhbmQgY29udmVydCB0aGVtIGludG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBtZXNzYWdlcyBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnV0IHNodXQgZG93biB0aGUgaW50ZXJwcmV0ZXIuICBJZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgc2V0IHRvIGBGYWxzZWAgdGhleSB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlZCB0byB0aGUgY2FsbGVyIGFuZCB0aGUgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyB0aGUgcmV0dXJuIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgOm1ldGg6YGludm9rZWAuCiAgICAgICAgOnBhcmFtIHdpbmRvd3NfZXhwYW5kX2FyZ3M6IEV4cGFuZCBnbG9iIHBhdHRlcm5zLCB1c2VyIGRpciwgYW5kCiAgICAgICAgICAgIGVudiB2YXJzIGluIGNvbW1hbmQgbGluZSBhcmdzIG9uIFdpbmRvd3MuCiAgICAgICAgOnBhcmFtIGV4dHJhOiBleHRyYSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBjb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvci4gIFNlZSA6Y2xhc3M6YENvbnRleHRgIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMC4xCiAgICAgICAgICAgIEFkZGVkIHRoZSBgYHdpbmRvd3NfZXhwYW5kX2FyZ3NgYCBwYXJhbWV0ZXIgdG8gYWxsb3cKICAgICAgICAgICAgZGlzYWJsaW5nIGNvbW1hbmQgbGluZSBhcmcgZXhwYW5zaW9uIG9uIFdpbmRvd3MuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgICAgIFdoZW4gdGFraW5nIGFyZ3VtZW50cyBmcm9tIGBgc3lzLmFyZ3ZgYCBvbiBXaW5kb3dzLCBnbG9iCiAgICAgICAgICAgIHBhdHRlcm5zLCB1c2VyIGRpciwgYW5kIGVudiB2YXJzIGFyZSBleHBhbmRlZC4KCiAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKICAgICAgICAgICBBZGRlZCB0aGUgYGBzdGFuZGFsb25lX21vZGVgYCBwYXJhbWV0ZXIuCiAgICAgICAgTnIKAAAA2gJudCkB2gRmaWxleghBYm9ydGVkISkecgwA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DmUNZQZkC5wCZA5kD4QEWg9lDWUEagpkBxkAZAucAmQQZBGEBFoQZQ1lEWQCZBKcA2QTZBSEBFoSZQ1lBGoKZQYZAGQLnAJkFWQWhARaE2UNZQRqCmUGGQBkC5wCZBdkGIQEWhRlDWUEagVkGRkAZAucAmQaZBuEBFoVZQ1lFmQLnAJkHGQdhARaF2UNZQZkC5wCZB5kH4QEWhhkNmUZZQZkIZwCZCJkI4QFWhplDWURZAJkEpwDZCRkJYQEWhtlDWURZAJkEpwDZCZkJ4QEWhxlDWURZAJkEpwDZChkKYQEWh1lDWURZAJkEpwDZCpkK4QEWh5lDWUEagplBhkAZQRqCmUGGQBkLJwDZC1kLoQEWh9lDWUEaghkC5wCZC9kMIQEWiBlDWUGZQRqCmQxGQBkMpwDhwBmAWQzZDSEDFohhwAEAFoiUwApN3IoAAAAYe8GAABDb21tYW5kcyBhcmUgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIG9mIGNvbW1hbmQgbGluZSBpbnRlcmZhY2VzIGluCiAgICBDbGljay4gIEEgYmFzaWMgY29tbWFuZCBoYW5kbGVzIGNvbW1hbmQgbGluZSBwYXJzaW5nIGFuZCBtaWdodCBkaXNwYXRjaAogICAgbW9yZSBwYXJzaW5nIHRvIGNvbW1hbmRzIG5lc3RlZCBiZWxvdyBpdC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMAogICAgICAgQWRkZWQgdGhlIGBjb250ZXh0X3NldHRpbmdzYCBwYXJhbWV0ZXIuCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgQWRkZWQgcmVwciBzaG93aW5nIHRoZSBjb21tYW5kIG5hbWUKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogNy4xCiAgICAgICBBZGRlZCB0aGUgYG5vX2FyZ3NfaXNfaGVscGAgcGFyYW1ldGVyLgoKICAgIDpwYXJhbSBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgY29tbWFuZCB0byB1c2UgdW5sZXNzIGEgZ3JvdXAgb3ZlcnJpZGVzIGl0LgogICAgOnBhcmFtIGNvbnRleHRfc2V0dGluZ3M6IGFuIG9wdGlvbmFsIGRpY3Rpb25hcnkgd2l0aCBkZWZhdWx0cyB0aGF0IGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCB0byB0aGUgY29udGV4dCBvYmplY3QuCiAgICA6cGFyYW0gY2FsbGJhY2s6IHRoZSBjYWxsYmFjayB0byBpbnZva2UuICBUaGlzIGlzIG9wdGlvbmFsLgogICAgOnBhcmFtIHBhcmFtczogdGhlIHBhcmFtZXRlcnMgdG8gcmVnaXN0ZXIgd2l0aCB0aGlzIGNvbW1hbmQuICBUaGlzIGNhbgogICAgICAgICAgICAgICAgICAgYmUgZWl0aGVyIDpjbGFzczpgT3B0aW9uYCBvciA6Y2xhc3M6YEFyZ3VtZW50YCBvYmplY3RzLgogICAgOnBhcmFtIGhlbHA6IHRoZSBoZWxwIHN0cmluZyB0byB1c2UgZm9yIHRoaXMgY29tbWFuZC4KICAgIDpwYXJhbSBlcGlsb2c6IGxpa2UgdGhlIGhlbHAgc3RyaW5nIGJ1dCBpdCdzIHByaW50ZWQgYXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgIGhlbHAgcGFnZSBhZnRlciBldmVyeXRoaW5nIGVsc2UuCiAgICA6cGFyYW0gc2hvcnRfaGVscDogdGhlIHNob3J0IGhlbHAgdG8gdXNlIGZvciB0aGlzIGNvbW1hbmQuICBUaGlzIGlzCiAgICAgICAgICAgICAgICAgICAgICAgc2hvd24gb24gdGhlIGNvbW1hbmQgbGlzdGluZyBvZiB0aGUgcGFyZW50IGNvbW1hbmQuCiAgICA6cGFyYW0gYWRkX2hlbHBfb3B0aW9uOiBieSBkZWZhdWx0IGVhY2ggY29tbWFuZCByZWdpc3RlcnMgYSBgYC0taGVscGBgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uICBUaGlzIGNhbiBiZSBkaXNhYmxlZCBieSB0aGlzIHBhcmFtZXRlci4KICAgIDpwYXJhbSBub19hcmdzX2lzX2hlbHA6IHRoaXMgY29udHJvbHMgd2hhdCBoYXBwZW5zIGlmIG5vIGFyZ3VtZW50cyBhcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkLiAgVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQg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BmoLZAmcAocAZgFkG2QchAxaGWUNZQZqEGUIGQBlBmoaZQZqB2UIGQBlBmoHZRsZAGUGahBlCBkAZgMZAGQYnANkHWQehARaHGUNZQhlBmoHZRsZAGQfnANkIGQhhARaHWUNZQZqEGUIGQBkCZwCZCJkI4QEWh5lDWUIZQZqEGQkGQBkJZwDhwBmAWQmZCeEDFofhwAEAFogUwApK3IuAAAAYVkFAABBIG11bHRpIGNvbW1hbmQgaXMgdGhlIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIGEgY29tbWFuZCB0aGF0CiAgICBkaXNwYXRjaGVzIHRvIHN1YmNvbW1hbmRzLiAgVGhlIG1vc3QgY29tbW9uIHZlcnNpb24gaXMgdGhlCiAgICA6Y2xhc3M6YEdyb3VwYC4KCiAgICA6cGFyYW0gaW52b2tlX3dpdGhvdXRfY29tbWFuZDogdGhpcyBjb250cm9scyBob3cgdGhlIG11bHRpIGNvbW1hbmQgaXRzZWxmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW52b2tlZC4gIEJ5IGRlZmF1bHQgaXQncyBvbmx5IGludm9rZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhIHN1YmNvbW1hbmQgaXMgcHJvdmlkZWQuCiAgICA6cGFyYW0gbm9fYXJnc19pc19oZWxwOiB0aGlzIGNvbnRyb2xzIHdoYXQgaGFwcGVucyBpZiBubyBhcmd1bWVudHMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZC4gIFRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYGludm9rZV93aXRob3V0X2NvbW1hbmRgIGlzIGRpc2FibGVkIG9yIGRpc2FibGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdCdzIGVuYWJsZWQuICBJZiBlbmFibGVkIHRoaXMgd2lsbCBhZGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgLS1oZWxwYGAgYXMgYXJndW1lbnQgaWYgbm8gYXJndW1lbnRzIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkLgogICAgOnBhcmFtIHN1YmNvbW1hbmRfbWV0YXZhcjogdGhlIHN0cmluZyB0aGF0IGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGluZGljYXRlIHRoZSBzdWJjb21tYW5kIHBsYWNlLgogICAgOnBhcmFtIGNoYWluOiBpZiB0aGlzIGlzIHNldCB0byBgVHJ1ZWAgY2hhaW5pbmcgb2YgbXVsdGlwbGUgc3ViY29tbWFuZHMKICAgICAgICAgICAgICAgICAgaXMgZW5hYmxlZC4gIFRoaXMgcmVzdHJpY3RzIHRoZSBmb3JtIG9mIGNvbW1hbmRzIGluIHRoYXQKICAgICAgICAgICAgICAgICAgdGhleSBjYW5ub3QgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgYnV0IGl0IGFsbG93cwogICAgICAgICAgICAgICAgICBtdWx0aXBsZSBjb21tYW5kcyB0byBiZSBjaGFpbmVkIHRvZ2V0aGVyLgogICAgOnBhcmFtIHJlc3VsdF9jYWxsYmFjazogVGhlIHJlc3VsdCBjYWxsYmFjayB0byBhdHRhY2ggdG8gdGhpcyBtdWx0aQogICAgICAgIGNvbW1hbmQuIFRoaXMgY2FuIGJlIHNldCBvciBjaGFuZ2VkIGxhdGVyIHdpdGggdGhlCiAgICAgICAgOm1ldGg6YHJlc3VsdF9jYWxsYmFja2AgZGVjb3JhdG9yLgogICAgVEZOLikIcjQAAADaFmludm9rZV93aXRob3V0X2NvbW1hbmRyAAEAANoSc3ViY29tbWFuZF9tZXRhdmFycjwAAADaD3Jlc3VsdF9jYWxsYmFja9oFYXR0cnNyKwAAAGMHAAAAAAAAAAkAAAAEAAAACwAAAHOGAAAAdACDAGoBfAFmAXwHjgEBAHwDZABrCHIefAIMAH0DfAN8AF8CfAJ8AF8DfARkAGsIckB8BXI8ZAF9BG4EZAJ9BHwEfABfBHwFfABfBXwGfABfBnwAagVygngofABqB0QAXR59CHQIfAh0CYMCcmB8CGoKDAByYHQLZAODAYIBcWBXAGQAUwApBE56KkNPTU1BTkQxIFtBUkdTXS4uLiBbQ09NTUFORDIgW0FSR1NdLi4uXS4uLnoRQ09NTUFORCBbQVJHU10uLi56PE11bHRpIGNvbW1hbmRzIGluIGNoYWluIG1vZGUgY2Fubm90IGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzLikMcgMBAAByhgAAAHIAAQAAcjYBAAByNwEAAHI8AAAA2hBfcmVzdWx0X2NhbGxiYWNrcnkAAAByPQAAANoIQXJndW1lbnTaCHJlcXVpcmVkcj4AAAApCXKFAAAAcjQAAAByNgEAAHIAAQAAcjcBAAByPAAAAHI4AQAAcjkBAABySgAAACkBctMAAAByNQAAAHI2AAAAcoYAAAC1BQAAcyIAAAAAChACCAEGAgYBBgIIAQQBBgIEAgYBBgMGAgYBDAESAQIBehVNdWx0aUNvbW1hbmQuX19pbml0X18pAnIpAAAAcisAAABjAgAAAAAAAAAHAAAACwAAAAMAAABzfgAAAHQAgwBqAXwBgwF9AmkAfQN4WHwAagJ8AYMBRABdSn0EfABqA3wBfASDAn0FfAVkAGsIcjZxHHwBagR8BYMBfQZ8BmoFZAFkAo0BjxQBAHwFagF8BoMBfAN8BDwAVwBkAFEAUgBYAHEcVwB8AmoGfAN8AGoHZAONAgEAfAJTACkETkYpAXKOAAAAKQLaCGNvbW1hbmRzcjwAAAApCHIDAQAAcocAAAByMAAAAHIyAAAAcrMAAABykAAAAHK6AAAAcjwAAAApB3KFAAAAcikAAAByBgEAAHI9AQAAcjQAAAByLwAAANoHc3ViX2N0eCkBctMAAAByNQAAAHI2AAAAcocAAADbBQAAcxYAAAAAAQwBBAIQAQwCCAECAgoCDgEcAhABehlNdWx0aUNvbW1hbmQudG9faW5mb19kaWN0YwIAAAAAAAAAAwAAAAIAAAADAAAAcxwAAAB0AIMAagF8AYMBfQJ8AmoCfABqA4MBAQB8AlMAKQFOKQRyAwEAAHIOAQAAcioBAAByNwEAACkDcoUAAAByKQAAAHKPAAAAKQFy0wAAAHI1AAAAcjYAAAByDgEAAO0FAABzBgAAAAABDAEMAXohTXVsdGlDb21tYW5kLmNvbGxlY3RfdXNhZ2VfcGllY2VzKQNyKQAAAHILAQAAcisAAABjAwAAAAAAAAADAAAAAwAAAAMAAABzHgAAAHQAgwBqAXwBfAKDAgEAfABqAnwBfAKDAgEAZABTACkBTikDcgMBAAByIwEAANoPZm9ybWF0X2NvbW1hbmRzKQNyhQAAAHIpAAAAcgsBAAApAXLTAAAAcjUAAAByNgAAAHIjAQAA8gUAAHMEAAAAAAEOAXobTXVsdGlDb21tYW5kLmZvcm1hdF9vcHRpb25zKQJygQAAAHIrAAAAYwIAAAAAAAAAAwAAAAQAAAADAAAAcxoAAAB0AHQAZAGcAocAhwFmAmQCZAOEDH0CfAJTACkEYbYDAABBZGRzIGEgcmVzdWx0IGNhbGxiYWNrIHRvIHRoZSBjb21tYW5kLiAgQnkgZGVmYXVsdCBpZiBhCiAgICAgICAgcmVzdWx0IGNhbGxiYWNrIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCB0aGlzIHdpbGwgY2hhaW4gdGhlbSBidXQKICAgICAgICB0aGlzIGNhbiBiZSBkaXNhYmxlZCB3aXRoIHRoZSBgcmVwbGFjZWAgcGFyYW1ldGVyLiAgVGhlIHJlc3VsdAogICAgICAgIGNhbGxiYWNrIGlzIGludm9rZWQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBzdWJjb21tYW5kCiAgICAgICAgKG9yIHRoZSBsaXN0IG9mIHJldHVybiB2YWx1ZXMgZnJvbSBhbGwgc3ViY29tbWFuZHMgaWYgY2hhaW5pbmcKICAgICAgICBpcyBlbmFibGVkKSBhcyB3ZWxsIGFzIHRoZSBwYXJhbWV0ZXJzIGFzIHRoZXkgd291bGQgYmUgcGFzc2VkCiAgICAgICAgdG8gdGhlIG1haW4gY2FsbGJhY2suCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgQGNsaWNrLmdyb3VwKCkKICAgICAgICAgICAgQGNsaWNrLm9wdGlvbignLWknLCAnLS1pbnB1dCcsIGRlZmF1bHQ9MjMpCiAgICAgICAgICAgIGRlZiBjbGkoaW5wdXQpOgogICAgICAgICAgICAgICAgcmV0dXJuIDQyCgogICAgICAgICAgICBAY2xpLnJlc3VsdF9jYWxsYmFjaygpCiAgICAgICAgICAgIGRlZiBwcm9jZXNzX3Jlc3VsdChyZXN1bHQsIGlucHV0KToKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBpbnB1dAoKICAgICAgICA6cGFyYW0gcmVwbGFjZTogaWYgc2V0IHRvIGBUcnVlYCBhbiBhbHJlYWR5IGV4aXN0aW5nIHJlc3VsdAogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayB3aWxsIGJlIHJlbW92ZWQuCgogICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgICAgIFJlbmFtZWQgZnJvbSBgYHJlc3VsdGNhbGxiYWNrYGAuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMAogICAgICAgICkCcpgAAAByKwAAAGMBAAAAAAAAAAMAAAAEAAAAEwAAAHNGAAAAiANqAIkBiAFkAGsIcxKIAnIciACIA18AiABTAIcAhwFmAmQBZAKECH0BdAF0AmoDdAR8AYMCiACDAgQAiANfAH0CfAJTACkDTmMBAAAAAAAAAAQAAAADAAAAHwAAAHMgAAAAiAF8AGYBfAGeAnwCjgF9A4gAfANmAXwBngJ8Ao4BUwApAU5yNQAAACkEWhRfTXVsdGlDb21tYW5kX192YWx1ZXJ6AAAAcrUAAADaBWlubmVyKQJymAAAANoMb2xkX2NhbGxiYWNrcjUAAAByNgAAANoIZnVuY3Rpb24aBgAAcwQAAAAAARABekFNdWx0aUNvbW1hbmQucmVzdWx0X2NhbGxiYWNrLjxsb2NhbHM+LmRlY29yYXRvci48bG9jYWxzPi5mdW5jdGlvbikFcjoBAAByBgAAAHIsAAAAci0AAAByJAAAACkDcpgAAAByQgEAAHKPAAAAKQJygQAAAHKFAAAAKQJymAAAAHJBAQAAcjYAAADaCWRlY29yYXRvchMGAABzDgAAAAABBgIMAQYBBAIOBBgBei9NdWx0aUNvbW1hbmQucmVzdWx0X2NhbGxiYWNrLjxsb2NhbHM+LmRlY29yYXRvcikBciQAAAApA3KFAAAAcoEAAAByQwEAAHI1AAAAKQJygQAAAHKFAAAAcjYAAAByOAEAAPYFAABzBAAAAAAdFg56HE11bHRpQ29tbWFuZC5yZXN1bHRfY2FsbGJhY2tjAgAAAAAAAAADAAAABQAAAEMAAABzJAAAAGQBZABsAH0CfAJqAWQCdAJkA2QEjQMBAHwAagN8AWQFjQFTACkGTnIBAAAAemIncmVzdWx0Y2FsbGJhY2snIGhhcyBiZWVuIHJlbmFtZWQgdG8gJ3Jlc3VsdF9jYWxsYmFjaycuIFRoZSBvbGQgbmFtZSB3aWxsIGJlIHJlbW92ZWQgaW4gQ2xpY2sgOC4xLukCAAAAKQHaCnN0YWNrbGV2ZWwpAXKBAAAAKQTaCHdhcm5pbmdz2gR3YXJu2hJEZXByZWNhdGlvbldhcm5pbmdyOAEAACkDcoUAAABygQAAAHJGAQAAcjUAAAByNQAAAHI2AAAA2g5yZXN1bHRjYWxsYmFjayMGAABzDAAAAAABCAIEAQICAgEIAnobTXVsdGlDb21tYW5kLnJlc3VsdGNhbGxiYWNrYwMAAAAAAAAACQAAAAkAAABDAAAAc8IAAABnAH0DeD58AGoAfAGDAUQAXTB9BHwAagF8AXwEgwJ9BXwFZAFrCHIqcRB8BWoCcjJxEHwDagN8BHwFZgKDAQEAcRBXAHQEfAODAXK+fAJqBWQCGAB0BmQDZASEAHwDRACDAYMBGAB9BmcAfQd4KHwDRABdIFwCfQR9BXwFagd8BoMBfQh8B2oDfAR8CGYCgwEBAHFyVwB8B3K+fAJqCHQJZAWDAYMBjxABAHwCagp8B4MBAQBXAGQBUQBSAFgAZAFTACkGemVFeHRyYSBmb3JtYXQgbWV0aG9kcyBmb3IgbXVsdGkgbWV0aG9kcyB0aGF0IGFkZHMgYWxsIHRoZSBjb21tYW5kcwogICAgICAgIGFmdGVyIHRoZSBvcHRpb25zLgogICAgICAgIE7pBgAAAGMBAAAAAAAAAAIAAAAEAAAAcwAAAHMaAAAAfABdEn0BdAB8AWQAGQCDAVYAAQBxAmQBUwApAnIBAAAATikBci4BAAApAnLdAAAAcjoAAAByNQAAAHI1AAAAcjYAAABy3gAAAD8GAABzAgAAAAQAei9NdWx0aUNvbW1hbmQuZm9ybWF0X2NvbW1hbmRzLjxsb2NhbHM+LjxnZW5leHByPtoIQ29tbWFuZHMpC3IwAAAAcjIAAAByMwAAAHIqAQAAci4BAABykQAAANoDbWF4ctwAAAByKwEAAHJ3AAAAciwBAAApCXKFAAAAcikAAAByCwEAAHI9AQAA2gpzdWJjb21tYW5kcjoAAAByHgEAANoEcm93c3LbAAAAcjUAAAByNQAAAHI2AAAAcj8BAAAuBgAAcyIAAAAABAQBEAEMAggBAgEGAQICEgMIARwCBAEOAQoBEgIEARABehxNdWx0aUNvbW1hbmQuZm9ybWF0X2NvbW1hbmRzKQNyKQAAAHJ6AAAAcisAAABjAwAAAAAAAAAEAAAABAAAAAMAAABzeAAAAHwCDAByLnwAagByLnwBagEMAHIudAJ8AWoDgwB8AWoEZAGNAgEAfAFqBYMAAQB0BoMAagd8AXwCgwJ9A3wAaghyUHwDfAFfCWcAfAFfCm4ifANycnwDZABkAoUCGQB8A2QCZACFAhkAAgB8AV8JfAFfCnwBagpTACkDTikBcnQAAAByCgAAACkLcgABAABybgAAAHIfAAAAcrIAAABydAAAAHKwAAAAcgMBAABy2QAAAHI8AAAAcnsAAAByegAAACkEcoUAAAByKQAAAHJ6AAAA2gRyZXN0KQFy0wAAAHI1AAAAcjYAAABy2QAAAEoGAABzFAAAAAABFAESAQgCDgIGAQYBCAEEAR4CehdNdWx0aUNvbW1hbmQucGFyc2VfYXJnc2MCAAAAAAAAAAkAAAAnAAAAAwAAAHOwAQAAdABqAXQAagFkAZwChwCHAWYCZAJkA4QMfQKIAGoCc16IAWoDclCIAI8gAQB0BIMAagWIAIMBAQB8AogBagZyRGcAbgJkAIMBUwBRAFIAWACIAGoHdAhkBIMBgwEBAIgAagKIAGoJlQJ9A2cAiABfCWcAiABfAogBagZz6IgAj2IBAIgBagqIAHwDgwJcA30EfQV9A3wFZABrCXOgdAuCAXwEiABfDHQEgwBqBYgAgwEBAHwFag18BHwDiABkBY0DfQZ8Bo8SAQB8AnwGag5qBXwGgwGDAVMAUQBSAFgAVwBkAFEAUgBYAIgAj7oBAHwDkABy+GQGbgJkAIgAXwx0BIMAagWIAIMBAQBnAH0HeFh8A5ABcmaIAWoKiAB8A4MCXAN9BH0FfQN8BWQAawmQAXM2dAuCAXwFag18BHwDiABkB2QIZAmNBX0GfAdqD3wGgwEBAHwGaglnAAIAfQN8Bl8JkAFxEFcAZwB9CHgwfAdEAF0ofQZ8Bo8YAQB8CGoPfAZqDmoFfAaDAYMBAQBXAGQAUQBSAFgAkAFxclcAfAJ8CIMBUwBRAFIAWABkAFMAKQpOKQJyqwAAAHIrAAAAYwEAAAAAAAAAAQAAAAMAAAATAAAAcyIAAACIAWoAZABrCXIeiABqAYgBagB8AGYCiABqAo4BfQB8AFMAKQFOKQNyOgEAAHK8AAAAcnkAAAApAXKrAAAAKQJyKQAAAHKFAAAAcjUAAAByNgAAANoPX3Byb2Nlc3NfcmVzdWx0WgYAAHMGAAAAAAEKARQBeixNdWx0aUNvbW1hbmQuaW52b2tlLjxsb2NhbHM+Ll9wcm9jZXNzX3Jlc3VsdHoQTWlzc2luZyBjb21tYW5kLikBcmcAAADaASpURikDcmcAAABybwAAAHJwAAAAKRByLAAAAHLFAAAAcnsAAAByNgEAAHIDAQAAcrwAAAByPAAAAHKtAAAAcncAAAByegAAANoPcmVzb2x2ZV9jb21tYW5k2g5Bc3NlcnRpb25FcnJvcnJ/AAAActoAAAByLwAAAHIqAQAAKQlyhQAAAHIpAAAAclABAAByegAAAHI5AAAAcjoAAAByPgEAAFoIY29udGV4dHNyjwAAACkBctMAAAApAnIpAAAAcoUAAAByNgAAAHK8AAAAWQYAAHNOAAAAAAEaBQYBBgQGAQwBGAEOAwwBBgEGBQYDBgESAQwBBgEMARABBgEgBwYBEAEMBQQBCAESAQ4BBAECAQIBAgECAQgCCgEUAgQBCgEGASIBehNNdWx0aUNvbW1hbmQuaW52b2tlYwMAAAAAAAAABgAAAAUAAABDAAAAc54AAAB0AHwCZAEZAIMBfQN8A30EfABqAXwBfAODAn0FfAVkAGsIckR8AWoCZABrCXJEfAFqAnwDgwF9A3wAagF8AXwDgwJ9BXwFZABrCHKEfAFqAwwAcoR0BHwDgwFkARkAcm58AGoFfAF8AWoGgwIBAHwBagd0CGQCgwFqCXwEZAONAYMBAQB8BXKMfANuAmQAfAV8AmQEZACFAhkAZgNTACkFTnIBAAAAehlObyBzdWNoIGNvbW1hbmQge25hbWUhcn0uKQFyNAAAAHIKAAAAKQpyIQAAAHIyAAAAcnMAAABybgAAAHIZAAAActkAAAByegAAAHKtAAAAcncAAAByIAEAACkGcoUAAAByKQAAAHJ6AAAAcjkAAABaEW9yaWdpbmFsX2NtZF9uYW1lcjoAAAByNQAAAHI1AAAAcjYAAAByUgEAAJ0GAABzFgAAAAADDAEEAwwEEgEKAQwIEAEMAQ4BFgF6HE11bHRpQ29tbWFuZC5yZXNvbHZlX2NvbW1hbmQpA3IpAAAAcjkAAAByKwAAAGMDAAAAAAAAAAMAAAABAAAAQwAAAHMIAAAAdACCAWQBUwApAnp7R2l2ZW4gYSBjb250ZXh0IGFuZCBhIGNvbW1hbmQgbmFtZSwgdGhpcyByZXR1cm5zIGEKICAgICAgICA6Y2xhc3M6YENvbW1hbmRgIG9iamVjdCBpZiBpdCBleGlzdHMgb3IgcmV0dXJucyBgTm9uZWAuCiAgICAgICAgTikBctUAAAApA3KFAAAAcikAAAByOQAAAHI1AAAAcjUAAAByNgAAAHIyAAAAuAYAAHMCAAAAAAR6GE11bHRpQ29tbWFuZC5nZXRfY29tbWFuZGMCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZwBTACkBelRSZXR1cm5zIGEgbGlzdCBvZiBzdWJjb21tYW5kIG5hbWVzIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZAogICAgICAgIGFwcGVhci4KICAgICAgICByNQAAACkCcoUAAAByKQAAAHI1AAAAcjUAAAByNgAAAHIwAAAAvgYAAHMCAAAAAAR6Gk11bHRpQ29tbWFuZC5saXN0X2NvbW1hbmRzciMAAAApA3IpAAAAcioAAAByKwAAAGMDAAAAAAAAAAQAAAAEAAAAAwAAAHM8AAAAZAFkAmwAbQGJAAEAhwBmAWQDZASECHQCfAF8AoMCRACDAX0DfANqA3QEgwBqBXwBfAKDAoMBAQB8A1MAKQVhMAEAAFJldHVybiBhIGxpc3Qgb2YgY29tcGxldGlvbnMgZm9yIHRoZSBpbmNvbXBsZXRlIHZhbHVlLiBMb29rcwogICAgICAgIGF0IHRoZSBuYW1lcyBvZiBvcHRpb25zLCBzdWJjb21tYW5kcywgYW5kIGNoYWluZWQKICAgICAgICBtdWx0aS1jb21tYW5kcy4KCiAgICAgICAgOnBhcmFtIGN0eDogSW52b2NhdGlvbiBjb250ZXh0IGZvciB0aGlzIGNvbW1hbmQuCiAgICAgICAgOnBhcmFtIGluY29tcGxldGU6IFZhbHVlIGJlaW5nIGNvbXBsZXRlZC4gTWF5IGJlIGVtcHR5LgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiA4LjAKICAgICAgICByAQAAACkBciMAAABjAQAAAAAAAAADAAAABgAAABMAAABzIAAAAGcAfABdGFwCfQF9AogAfAF8AmoAgwBkAI0CkQJxBFMAKQEpAXLbAAAAKQFy3AAAACkDct0AAAByNAAAAHIvAAAAKQFyIwAAAHI1AAAAcjYAAAByBQEAANEGAABzAgAAAAYBei9NdWx0aUNvbW1hbmQuc2hlbGxfY29tcGxldGUuPGxvY2Fscz4uPGxpc3Rjb21wPikGct8AAAByIwAAAHI3AAAAcp8AAAByAwEAAHLhAAAAKQRyhQAAAHIpAAAAcioAAABy4AAAACkBctMAAAApAXIjAAAAcjYAAABy4QAAAMQGAABzCgAAAAAKDAMKAQ4CFAF6G011bHRpQ29tbWFuZC5zaGVsbF9jb21wbGV0ZSkGTkZOTkZOKQFGKQFGKSFyQAAAAHJdAAAAcl4AAAByXwAAAHJvAAAAcnAAAAByLAAAAHLDAAAAcsQAAAByWQAAAHLJAAAAcsUAAAByhgAAAHInAAAAcsYAAAByhwAAAHLIAAAAcg4BAAByEwAAAHIjAQAAciQAAAByOAEAAHJJAQAAcj8BAABy2QAAAHK8AAAAclgAAAByKAAAAHJSAQAAcjIAAAByMAAAAHLhAAAAcjUBAAByNQAAAHI1AAAAKQFy0wAAAHI2AAAAci4AAACZBQAAczAAAAAIFwQCBAEEBAABAAEAAQABAAEyAQQBEh0gEhoFFgQeLR4LEhwiDxZFCgEsGRgGFgZjAAAAAAAAAAAAAAAABwAAAAAAAABzNAEAAGUAWgFkAFoCVQBkAVoDZAJaBGUFagZlBWoHZQgZABkAfwRkAloJZQVqBmUFagplBWoHZAAZAGUFagdlCxkAZgIZABkAfwlkFWUFagZlDBkAZQVqBmUFagplBWoNZQxlCGYCGQBlBWoOZQgZAGYCGQAZAGUFag9kAmQDnASHAGYBZARkBYQNWhBkFmUIZQVqBmUMGQBkAmQGnANkB2QIhAVaEWUFag9lBWoPZQVqEmUFahJkCWUFag9mAhkAZwFlCGYCGQBkCpwDZAtkDIQEWhNlBWoPZQVqD2UFahJlBWoSZAllBWoPZgIZAGcBZABmAhkAZAqcA2QNZA6EBFoUZRVlDGUFagZlCBkAZA+cA2QQZBGEBFoWZRVlBWoXZQwZAGQSnAJkE2QUhARaGIcABABaGVMAKRfaBUdyb3VwYU4CAABBIGdyb3VwIGFsbG93cyBhIGNvbW1hbmQgdG8gaGF2ZSBzdWJjb21tYW5kcyBhdHRhY2hlZC4gVGhpcyBpcwogICAgdGhlIG1vc3QgY29tbW9uIHdheSB0byBpbXBsZW1lbnQgbmVzdGluZyBpbiBDbGljay4KCiAgICA6cGFyYW0gbmFtZTogVGhlIG5hbWUgb2YgdGhlIGdyb3VwIGNvbW1hbmQuCiAgICA6cGFyYW0gY29tbWFuZHM6IEEgZGljdCBtYXBwaW5nIG5hbWVzIHRvIDpjbGFzczpgQ29tbWFuZGAgb2JqZWN0cy4KICAgICAgICBDYW4gYWxzbyBiZSBhIGxpc3Qgb2YgOmNsYXNzOmBDb21tYW5kYCwgd2hpY2ggd2lsbCB1c2UKICAgICAgICA6YXR0cjpgQ29tbWFuZC5uYW1lYCB0byBjcmVhdGUgdGhlIGRpY3QuCiAgICA6cGFyYW0gYXR0cnM6IE90aGVyIGNvbW1hbmQgYXJndW1lbnRzIGRlc2NyaWJlZCBpbgogICAgICAgIDpjbGFzczpgTXVsdGlDb21tYW5kYCwgOmNsYXNzOmBDb21tYW5kYCwgYW5kCiAgICAgICAgOmNsYXNzOmBCYXNlQ29tbWFuZGAuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBUaGUgYGBjb21tbWFuZHNgYCBhcmd1bWVudCBjYW4gYmUgYSBsaXN0IG9mIGNvbW1hbmQgb2JqZWN0cy4KICAgIE4pBHI0AAAAcj0BAAByOQEAAHIrAAAAYwMAAAAAAAAABAAAAAMAAAALAAAAc0IAAAB0AIMAagF8AWYBfAOOAQEAfAJkAGsIch5pAH0Cbhp0AnwCdANqBIMCcjhkAWQChAB8AkQAgwF9AnwCfABfBWQAUwApA05jAQAAAAAAAAACAAAABAAAAFMAAABzHgAAAGkAfABdFn0BfAFqAGQAawlyBHwBfAFqAJMCcQRTACkBTikBcjQAAAApAnLdAAAA2gFjcjUAAAByNQAAAHI2AAAA+go8ZGljdGNvbXA+BwcAAHMCAAAABgB6Ikdyb3VwLl9faW5pdF9fLjxsb2NhbHM+LjxkaWN0Y29tcD4pBnIDAQAAcoYAAAByPQAAAHICAAAAcvoAAAByPQEAACkEcoUAAAByNAAAAHI9AQAAcjkBAAApAXLTAAAAcjUAAAByNgAAAHKGAAAA/AYAAHMMAAAAAAYQAggBBgEMAQ4Deg5Hcm91cC5fX2luaXRfXykDcjoAAAByNAAAAHIrAAAAYwMAAAAAAAAAAwAAAAYAAABDAAAAczgAAAB8AnAIfAFqAH0CfAJkAWsIchp0AWQCgwGCAXQCfAB8AnwBZANkBI0EAQB8AXwAagN8AjwAZAFTACkFeoNSZWdpc3RlcnMgYW5vdGhlciA6Y2xhc3M6YENvbW1hbmRgIHdpdGggdGhpcyBncm91cC4gIElmIHRoZSBuYW1lCiAgICAgICAgaXMgbm90IHByb3ZpZGVkLCB0aGUgbmFtZSBvZiB0aGUgY29tbWFuZCBpcyB1c2VkLgogICAgICAgIE56FENvbW1hbmQgaGFzIG5vIG5hbWUuVCkBcjsAAAApBHI0AAAAcrYAAAByQgAAAHI9AQAAKQNyhQAAAHI6AAAAcjQAAAByNQAAAHI1AAAAcjYAAADaC2FkZF9jb21tYW5kDAcAAHMKAAAAAAQKAQgBCAEQAXoRR3JvdXAuYWRkX2NvbW1hbmQuKQNyegAAAHK1AAAAcisAAABjAQAAAAAAAAAEAAAABQAAAA8AAABzUgAAAGQBZAJsAG0BiQEBAIgDagJkA2sJcihkBIgCawdyKIgDagKIAmQEPAB0A2oEZAV0A2oFZgIZAHQGZAacAocAhwGHAocDZgRkB2QIhAx9A3wDUwApCWGvAQAAQSBzaG9ydGN1dCBkZWNvcmF0b3IgZm9yIGRlY2xhcmluZyBhbmQgYXR0YWNoaW5nIGEgY29tbWFuZCB0bwogICAgICAgIHRoZSBncm91cC4gVGhpcyB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgYXMgOmZ1bmM6YGNvbW1hbmRgIGFuZAogICAgICAgIGltbWVkaWF0ZWx5IHJlZ2lzdGVycyB0aGUgY3JlYXRlZCBjb21tYW5kIHdpdGggdGhpcyBncm91cCBieQogICAgICAgIGNhbGxpbmcgOm1ldGg6YGFkZF9jb21tYW5kYC4KCiAgICAgICAgVG8gY3VzdG9taXplIHRoZSBjb21tYW5kIGNsYXNzIHVzZWQsIHNldCB0aGUKICAgICAgICA6YXR0cjpgY29tbWFuZF9jbGFzc2AgYXR0cmlidXRlLgoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgICAgICBBZGRlZCB0aGUgOmF0dHI6YGNvbW1hbmRfY2xhc3NgIGF0dHJpYnV0ZS4KICAgICAgICByCgAAACkBci8AAABO2gNjbHMuKQJymAAAAHIrAAAAYwEAAAAAAAAAAgAAAAMAAAATAAAAcxwAAACIAYgAiAKOAXwAgwF9AYgDagB8AYMBAQB8AVMAKQFOKQFyVwEAACkCcpgAAAByOgAAACkEcnoAAAByLwAAAHK1AAAAcoUAAAByNQAAAHI2AAAAckMBAAApBwAAcwYAAAAAAQ4BCgF6IEdyb3VwLmNvbW1hbmQuPGxvY2Fscz4uZGVjb3JhdG9yKQfaCmRlY29yYXRvcnNyLwAAANoNY29tbWFuZF9jbGFzc3IsAAAAcskAAAByxQAAAHIoAAAAKQRyhQAAAHJ6AAAAcrUAAAByQwEAAHI1AAAAKQRyegAAAHIvAAAAcrUAAAByhQAAAHI2AAAAci8AAAAWBwAAcwoAAAAADgwCEgEKAiYFeg1Hcm91cC5jb21tYW5kYwEAAAAAAAAABAAAAAUAAAAPAAAAc2oAAABkAWQCbABtAYkBAQCIA2oCZANrCXJAZASIAmsHckCIA2oCdANrCHI2dAOIA4MBiAJkBDwAbgqIA2oCiAJkBDwAdARqBWQFdARqBmYCGQBkBmQHnAKHAIcBhwKHA2YEZAhkCYQMfQN8A1MAKQphowEAAEEgc2hvcnRjdXQgZGVjb3JhdG9yIGZvciBkZWNsYXJpbmcgYW5kIGF0dGFjaGluZyBhIGdyb3VwIHRvCiAgICAgICAgdGhlIGdyb3VwLiBUaGlzIHRha2VzIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyA6ZnVuYzpgZ3JvdXBgIGFuZAogICAgICAgIGltbWVkaWF0ZWx5IHJlZ2lzdGVycyB0aGUgY3JlYXRlZCBncm91cCB3aXRoIHRoaXMgZ3JvdXAgYnkKICAgICAgICBjYWxsaW5nIDptZXRoOmBhZGRfY29tbWFuZGAuCgogICAgICAgIFRvIGN1c3RvbWl6ZSB0aGUgZ3JvdXAgY2xhc3MgdXNlZCwgc2V0IHRoZSA6YXR0cjpgZ3JvdXBfY2xhc3NgCiAgICAgICAgYXR0cmlidXRlLgoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgICAgICBBZGRlZCB0aGUgOmF0dHI6YGdyb3VwX2NsYXNzYCBhdHRyaWJ1dGUuCiAgICAgICAgcgoAAAApAdoFZ3JvdXBOclgBAAAuclQBAAApAnKYAAAAcisAAABjAQAAAAAAAAACAAAAAwAAABMAAABzHAAAAIgBiACIAo4BfACDAX0BiANqAHwBgwEBAHwBUwApAU4pAXJXAQAAKQJymAAAAHI6AAAAKQRyegAAAHJbAQAAcrUAAAByhQAAAHI1AAAAcjYAAAByQwEAAEYHAABzBgAAAAABDgEKAXoeR3JvdXAuZ3JvdXAuPGxvY2Fscz4uZGVjb3JhdG9yKQdyWQEAAHJbAQAA2gtncm91cF9jbGFzc3I/AAAAciwAAAByyQAAAHLFAAAAKQRyhQAAAHJ6AAAAcrUAAAByQwEAAHI1AAAAKQRyegAAAHJbAQAAcrUAAAByhQAAAHI2AAAAclsBAAAwBwAAcw4AAAAADgwCEgEKAQ4CCgImBXoLR3JvdXAuZ3JvdXApA3IpAAAAcjkAAAByKwAAAGMDAAAAAAAAAAMAAAACAAAAQwAAAHMMAAAAfABqAGoBfAKDAVMAKQFOKQJyPQEAAHJ+AAAAKQNyhQAAAHIpAAAAcjkAAAByNQAAAHI1AAAAcjYAAAByMgAAAE0HAABzAgAAAAABehFHcm91cC5nZXRfY29tbWFuZCkCcikAAAByKwAAAGMCAAAAAAAAAAIAAAACAAAAQwAAAHMKAAAAdAB8AGoBgwFTACkBTikCcloAAAByPQEAACkCcoUAAAByKQAAAHI1AAAAcjUAAAByNgAAAHIwAAAAUAcAAHMCAAAAAAF6E0dyb3VwLmxpc3RfY29tbWFuZHMpAk5OKQFOKRpyQAAAAHJdAAAAcl4AAAByXwAAAHJaAQAAciwAAABywwAAAHLCAAAAcigAAAByXAEAAHLOAAAAcj8AAAByxAAAAHLGAAAAcvoAAAByxQAAAHKGAAAAclcBAAByyQAAAHIvAAAAclsBAAByJwAAAHIyAAAAcsgAAAByMAAAAHI1AQAAcjUAAAByNQAAACkBctMAAAByNgAAAHJUAQAA2AYAAHMcAAAACg4EBxQMJAUAASwBBAESCxoLCAEmGQgBJhsYA3JUAQAAYwAAAAAAAAAAAAAAAAYAAAAAAAAAc4AAAABlAFoBZABaAmQBWgNkD2UEagVlBhkAZQRqBWUEagdlCBkAGQBlBGoJZAJkA5wEhwBmAWQEZAWEDVoKZQhkAmQGnAJkB2QIhARaC2UMZQZlBGoFZQ0ZAGQJnANkCmQLhARaDmUMZQRqB2UGGQBkDJwCZA1kDoQEWg+HAAQAWhBTACkQ2hFDb21tYW5kQ29sbGVjdGlvbmEEAQAAQSBjb21tYW5kIGNvbGxlY3Rpb24gaXMgYSBtdWx0aSBjb21tYW5kIHRoYXQgbWVyZ2VzIG11bHRpcGxlIG11bHRpCiAgICBjb21tYW5kcyB0b2dldGhlciBpbnRvIG9uZS4gIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24KICAgIHRoYXQgYWNjZXB0cyBhIGxpc3Qgb2YgZGlmZmVyZW50IG11bHRpIGNvbW1hbmRzIGFzIHNvdXJjZXMgYW5kCiAgICBwcm92aWRlcyBhbGwgdGhlIGNvbW1hbmRzIGZvciBlYWNoIG9mIHRoZW0uCiAgICBOKQRyNAAAANoHc291cmNlc3I5AQAAcisAAABjAwAAAAAAAAAEAAAAAwAAAAsAAABzHgAAAHQAgwBqAXwBZgF8A44BAQB8AnAWZwB8AF8CZABTACkBTikDcgMBAAByhgAAAHJeAQAAKQRyhQAAAHI0AAAAcl4BAAByOQEAACkBctMAAAByNQAAAHI2AAAAcoYAAABbBwAAcwQAAAAABhACehpDb21tYW5kQ29sbGVjdGlvbi5fX2luaXRfXykC2gltdWx0aV9jbWRyKwAAAGMCAAAAAAAAAAIAAAACAAAAQwAAAHMQAAAAfABqAGoBfAGDAQEAZAFTACkCejFBZGRzIGEgbmV3IG11bHRpIGNvbW1hbmQgdG8gdGhlIGNoYWluIGRpc3BhdGNoZXIuTikCcl4BAAByKgEAACkCcoUAAAByXwEAAHI1AAAAcjUAAAByNgAAANoKYWRkX3NvdXJjZWUHAABzAgAAAAACehxDb21tYW5kQ29sbGVjdGlvbi5hZGRfc291cmNlKQNyKQAAAHI5AAAAcisAAABjAwAAAAAAAAAFAAAABQAAAEMAAABzPgAAAHg4fABqAEQAXS59A3wDagF8AXwCgwJ9BHwEZABrCXIIfABqAnIydAN8AHwCfASDAwEAfARTAHEIVwBkAFMAKQFOKQRyXgEAAHIyAAAAcjwAAAByQgAAACkFcoUAAAByKQAAAHI5AAAAcr8AAAByjwAAAHI1AAAAcjUAAAByNgAAAHIyAAAAaQcAAHMOAAAAAAEMAQwCCAEGAQwCCAJ6HUNvbW1hbmRDb2xsZWN0aW9uLmdldF9jb21tYW5kKQJyKQAAAHIrAAAAYwIAAAAAAAAABAAAAAQAAABDAAAAcy4AAAB0AIMAfQJ4HnwAagFEAF0UfQN8AmoCfANqA3wBgwGDAQEAcQ5XAHQEfAKDAVMAKQFOKQVyEAEAAHJeAQAAcroAAAByMAAAAHJaAAAAKQRyhQAAAHIpAAAAco8AAAByvwAAAHI1AAAAcjUAAAByNgAAAHIwAAAAdQcAAHMIAAAAAAEGAgwBFAJ6H0NvbW1hbmRDb2xsZWN0aW9uLmxpc3RfY29tbWFuZHMpAk5OKRFyQAAAAHJdAAAAcl4AAAByXwAAAHIsAAAAcsMAAAByxAAAAHLIAAAAci4AAAByxQAAAHKGAAAAcmABAAByJwAAAHIoAAAAcjIAAAByMAAAAHI1AQAAcjUAAAByNQAAACkBctMAAAByNgAAAHJdAQAAVAcAAHMQAAAACAUEBAABGAEEARIFEAQYDHJdAQAAKQJyqwAAAHIrAAAAYwEAAAAAAAAAAQAAAAMAAABDAAAAcxYAAAB0AHwAdAGDAnIOdAKCAXQDfACDAVMAKQF6dENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBpdGVyYWJsZSBidXQgbm90IGEgc3RyaW5nLiBSYWlzZXMgYSB0eXBlCiAgICBlcnJvciwgb3IgcmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHZhbHVlLgogICAgKQRyPQAAAHLEAAAAcrYAAAByRwAAACkBcqsAAAByNQAAAHI1AAAAcjYAAADaC19jaGVja19pdGVyfgcAAHMGAAAAAAQKAQQCcmEBAABjAAAAAAAAAAAAAAAAFQAAAEAAAABzYgMAAGUAWgFkAFoCZAFaA2QCWgRkPGUFagZlBWoHZQgZABkAZQVqBmUFagllCmoLZQVqDGYCGQAZAGUNZQVqBmUFagllBWoMZQVqDmcAZQVqDGYCGQBmAhkAGQBlBWoGZQVqDmUPZABlBWoMZwNlBWoMZgIZABkAZQVqBmUQGQBlDWUFagZlCBkAZQ1lDWUFagZlBWoJZQhlBWoHZQgZAGYCGQAZAGUFagZlBWoOZQ9kAGUIZwNlBWoJZQVqEWQGGQBlBWoRZQgZAGYCGQBmAhkAGQBlBWoGZQVqDmUPZQVqEWUIGQBlCGcDZQVqEWUFagllBWoSZQhlCGYCGQBlCGYCGQAZAGYCGQAZAGQDZAecDmQIZAmEBVoTZQVqFGUIZQVqDGYCGQBkCpwBZAtkDIQEWhVlCGQKnAFkDWQOhARaFmUFagdlCBkAZQ1lBWoSZQVqBmUIGQBlBWoRZQgZAGUFahFlCBkAZgMZAGQPnANkEGQRhARaF2UYZQhkCpwBZBJkE4QEgwFaGWUIZAqcAWQUZBWEBFoaZQVqG2Q9ZQ9kFmUFagZlBWoMGQBkF5wDZBhkGYQFgwFaHGUFahtkPmUPZQ1lBWoGZQVqCWUFagxlBWoOZwBlBWoMZgIZAGYCGQAZAGQXnANkG2QZhAWDAVocZD9lD2UNZQVqBmUFagllBWoMZQVqDmcAZQVqDGYCGQBmAhkAGQBkF5wDZBxkGYQFWhxlHWUPZANkHZwDZB5kH4QEWh5lD2UFah9lCGUFagxmAhkAZQVqEmUFagxlIGYCGQBkIJwDZCFkIoQEWiFlD2UFagxlBWoMZCOcA2QkZCWEBFoiZQVqDGUNZCacAmQnZCiEBFojZQ9lBWoMZQVqDGQjnANkKWQqhARaJGUPZQVqBmUIGQBkK5wCZCxkLYQEWiVlD2UFagZlBWoMGQBkK5wCZC5kL4QEWiZlD2UFah9lCGUFagxmAhkAZQVqEWUIGQBlBWoSZQVqDGUFahFlCBkAZgIZAGQwnARkMWQyhARaJ2UPZQVqBmUFahJlCGUIZgIZABkAZCucAmQzZDSEBFooZQ9lBWoRZQgZAGQrnAJkNWQ2hARaKWUPZQhkK5wCZDdkOIQEWiplD2UIZQVqEWQGGQBkOZwDZDpkO4QEWitkA1MAKUBySQAAAGGBDgAAQSBwYXJhbWV0ZXIgdG8gYSBjb21tYW5kIGNvbWVzIGluIHR3byB2ZXJzaW9uczogdGhleSBhcmUgZWl0aGVyCiAgICA6Y2xhc3M6YE9wdGlvbmBccyBvciA6Y2xhc3M6YEFyZ3VtZW50YFxzLiAgT3RoZXIgc3ViY2xhc3NlcyBhcmUgY3VycmVudGx5CiAgICBub3Qgc3VwcG9ydGVkIGJ5IGRlc2lnbiBhcyBzb21lIG9mIHRoZSBpbnRlcm5hbHMgZm9yIHBhcnNpbmcgYXJlCiAgICBpbnRlbnRpb25hbGx5IG5vdCBmaW5hbGl6ZWQuCgogICAgU29tZSBzZXR0aW5ncyBhcmUgc3VwcG9ydGVkIGJ5IGJvdGggb3B0aW9ucyBhbmQgYXJndW1lbnRzLgoKICAgIDpwYXJhbSBwYXJhbV9kZWNsczogdGhlIHBhcmFtZXRlciBkZWNsYXJhdGlvbnMgZm9yIHRoaXMgb3B0aW9uIG9yCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50LiAgVGhpcyBpcyBhIGxpc3Qgb2YgZmxhZ3Mgb3IgYXJndW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMuCiAgICA6cGFyYW0gdHlwZTogdGhlIHR5cGUgdGhhdCBzaG91bGQgYmUgdXNlZC4gIEVpdGhlciBhIDpjbGFzczpgUGFyYW1UeXBlYAogICAgICAgICAgICAgICAgIG9yIGEgUHl0aG9uIHR5cGUuICBUaGUgbGF0ZXIgaXMgY29udmVydGVkIGludG8gdGhlIGZvcm1lcgogICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgaWYgc3VwcG9ydGVkLgogICAgOnBhcmFtIHJlcXVpcmVkOiBjb250cm9scyBpZiB0aGlzIGlzIG9wdGlvbmFsIG9yIG5vdC4KICAgIDpwYXJhbSBkZWZhdWx0OiB0aGUgZGVmYXVsdCB2YWx1ZSBpZiBvbWl0dGVkLiAgVGhpcyBjYW4gYWxzbyBiZSBhIGNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIGNhc2UgaXQncyBpbnZva2VkIHdoZW4gdGhlIGRlZmF1bHQgaXMgbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBhbnkgYXJndW1lbnRzLgogICAgOnBhcmFtIGNhbGxiYWNrOiBBIGZ1bmN0aW9uIHRvIGZ1cnRoZXIgcHJvY2VzcyBvciB2YWxpZGF0ZSB0aGUgdmFsdWUKICAgICAgICBhZnRlciB0eXBlIGNvbnZlcnNpb24uIEl0IGlzIGNhbGxlZCBhcyBgYGYoY3R4LCBwYXJhbSwgdmFsdWUpYGAKICAgICAgICBhbmQgbXVzdCByZXR1cm4gdGhlIHZhbHVlLiBJdCBpcyBjYWxsZWQgZm9yIGFsbCBzb3VyY2VzLAogICAgICAgIGluY2x1ZGluZyBwcm9tcHRzLgogICAgOnBhcmFtIG5hcmdzOiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBtYXRjaC4gIElmIG5vdCBgYDFgYCB0aGUgcmV0dXJuCiAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIGEgdHVwbGUgaW5zdGVhZCBvZiBzaW5nbGUgdmFsdWUuICBUaGUgZGVmYXVsdCBmb3IKICAgICAgICAgICAgICAgICAgbmFyZ3MgaXMgYGAxYGAgKGV4Y2VwdCBpZiB0aGUgdHlwZSBpcyBhIHR1cGxlLCB0aGVuIGl0J3MKICAgICAgICAgICAgICAgICAgdGhlIGFyaXR5IG9mIHRoZSB0dXBsZSkuIElmIGBgbmFyZ3M9LTFgYCwgYWxsIHJlbWFpbmluZwogICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIGFyZSBjb2xsZWN0ZWQuCiAgICA6cGFyYW0gbWV0YXZhcjogaG93IHRoZSB2YWx1ZSBpcyByZXByZXNlbnRlZCBpbiB0aGUgaGVscCBwYWdlLgogICAgOnBhcmFtIGV4cG9zZV92YWx1ZTogaWYgdGhpcyBpcyBgVHJ1ZWAgdGhlbiB0aGUgdmFsdWUgaXMgcGFzc2VkIG9ud2FyZHMKICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBjb21tYW5kIGNhbGxiYWNrIGFuZCBzdG9yZWQgb24gdGhlIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcndpc2UgaXQncyBza2lwcGVkLgogICAgOnBhcmFtIGlzX2VhZ2VyOiBlYWdlciB2YWx1ZXMgYXJlIHByb2Nlc3NlZCBiZWZvcmUgbm9uIGVhZ2VyIG9uZXMuICBUaGlzCiAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgc2V0IGZvciBhcmd1bWVudHMgb3IgaXQgd2lsbCBpbnZlcnNlIHRoZQogICAgICAgICAgICAgICAgICAgICBvcmRlciBvZiBwcm9jZXNzaW5nLgogICAgOnBhcmFtIGVudnZhcjogYSBzdHJpbmcgb3IgbGlzdCBvZiBzdHJpbmdzIHRoYXQgYXJlIGVudmlyb25tZW50IHZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgYmUgY2hlY2tlZC4KICAgIDpwYXJhbSBzaGVsbF9jb21wbGV0ZTogQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgY3VzdG9tIHNoZWxsCiAgICAgICAgY29tcGxldGlvbnMuIFVzZWQgaW5zdGVhZCBvZiB0aGUgcGFyYW0ncyB0eXBlIGNvbXBsZXRpb24gaWYKICAgICAgICBnaXZlbi4gVGFrZXMgYGBjdHgsIHBhcmFtLCBpbmNvbXBsZXRlYGAgYW5kIG11c3QgcmV0dXJuIGEgbGlzdAogICAgICAgIG9mIDpjbGFzczpgfmNsaWNrLnNoZWxsX2NvbXBsZXRpb24uQ29tcGxldGlvbkl0ZW1gIG9yIGEgbGlzdCBvZgogICAgICAgIHN0cmluZ3MuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBgYHByb2Nlc3NfdmFsdWVgYCB2YWxpZGF0ZXMgcmVxdWlyZWQgcGFyYW1ldGVycyBhbmQgYm91bmRlZAogICAgICAgIGBgbmFyZ3NgYCwgYW5kIGludm9rZXMgdGhlIHBhcmFtZXRlciBjYWxsYmFjayBiZWZvcmUgcmV0dXJuaW5nCiAgICAgICAgdGhlIHZhbHVlLiBUaGlzIGFsbG93cyB0aGUgY2FsbGJhY2sgdG8gdmFsaWRhdGUgcHJvbXB0cy4KICAgICAgICBgYGZ1bGxfcHJvY2Vzc192YWx1ZWBgIGlzIHJlbW92ZWQuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAKICAgICAgICBgYGF1dG9jb21wbGV0aW9uYGAgaXMgcmVuYW1lZCB0byBgYHNoZWxsX2NvbXBsZXRlYGAgYW5kIGhhcyBuZXcKICAgICAgICBzZW1hbnRpY3MgZGVzY3JpYmVkIGFib3ZlLiBUaGUgb2xkIG5hbWUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbAogICAgICAgIGJlIHJlbW92ZWQgaW4gOC4xLCB1bnRpbCB0aGVuIGl0IHdpbGwgYmUgd3JhcHBlZCB0byBtYXRjaCB0aGUKICAgICAgICBuZXcgcmVxdWlyZW1lbnRzLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgRm9yIGBgbXVsdGlwbGU9VHJ1ZSwgbmFyZ3M+MWBgLCB0aGUgZGVmYXVsdCBtdXN0IGJlIGEgbGlzdCBvZgogICAgICAgIHR1cGxlcy4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgIFNldHRpbmcgYSBkZWZhdWx0IGlzIG5vIGxvbmdlciByZXF1aXJlZCBmb3IgYGBuYXJncz4xYGAsIGl0IHdpbGwKICAgICAgICBkZWZhdWx0IHRvIGBgTm9uZWBgLiBgYG11bHRpcGxlPVRydWVgYCBvciBgYG5hcmdzPS0xYGAgd2lsbAogICAgICAgIGRlZmF1bHQgdG8gYGAoKWBgLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogNy4xCiAgICAgICAgRW1wdHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBpZ25vcmVkIHJhdGhlciB0aGFuIHRha2luZyB0aGUKICAgICAgICBlbXB0eSBzdHJpbmcgdmFsdWUuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHNjcmlwdHMgdG8gY2xlYXIKICAgICAgICB2YXJpYWJsZXMgaWYgdGhleSBjYW4ndCB1bnNldCB0aGVtLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi4wCiAgICAgICAgQ2hhbmdlZCBzaWduYXR1cmUgZm9yIHBhcmFtZXRlciBjYWxsYmFjayB0byBhbHNvIGJlIHBhc3NlZCB0aGUKICAgICAgICBwYXJhbWV0ZXIuIFRoZSBvbGQgY2FsbGJhY2sgZm9ybWF0IHdpbGwgc3RpbGwgd29yaywgYnV0IGl0IHdpbGwKICAgICAgICByYWlzZSBhIHdhcm5pbmcgdG8gZ2l2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AFoCZAFaA2QCWgRkJmUFagZlBWoHZQgZABkAZQVqCWUKZQhmAhkAZQVqCWUKZQhmAhkAZQVqCWUKZQhmAhkAZQplCmUFagZlChkAZQVqBmUFagsZAGUKZQplCmUFagZlBWoJZQxqDWUFagtmAhkAGQBlBWoGZQgZAGUKZQplCmUFagtkA2QGnBKHAGYBZAdkCIQNWg5lBWoPZQhlBWoLZgIZAGQJnAGHAGYBZApkC4QMWhBlBWoHZQgZAGUKZQVqEWUFagZlCBkAZQVqEmUIGQBlBWoSZQgZAGYDGQBkDJwDZA1kDoQEWhNlFGUVZANkD5wDZBBkEYQEWhZlFWUFagZlBWoRZQhlCGYCGQAZAGQSnAJkE2QUhARaF2UFahhkJ2UVZBVlBWoGZQVqCxkAZBacA2QXZBiEBYMBWhllBWoYZChlFWUKZQVqBmUFagllBWoLZQVqGmcAZQVqC2YCGQBmAhkAGQBkFpwDZBpkGIQFgwFaGWQpZRVlCmUFagZlBWoJZQVqC2UFahpnAGUFagtmAhkAZgIZABkAZBacA4cAZgFkG2QYhA1aGWUVZQVqC2QSnAJkHGQdhARaG2UVZQVqBmUIGQBkEpwChwBmAWQeZB+EDFocZRVlBWoGZQVqCxkAZBKcAmQgZCGEBFodZRVlBWoeZQhkImYCGQBlBWoRZQVqC2UfZgIZAGQjnAOHAGYBZCRkJYQMWiCHAAQAWiFTACkqchUBAABh6AkAAE9wdGlvbnMgYXJlIHVzdWFsbHkgb3B0aW9uYWwgdmFsdWVzIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kCiAgICBoYXZlIHNvbWUgZXh0cmEgZmVhdHVyZXMgdGhhdCBhcmd1bWVudHMgZG9uJ3QgaGF2ZS4KCiAgICBBbGwgb3RoZXIgcGFyYW1ldGVycyBhcmUgcGFzc2VkIG9ud2FyZHMgdG8gdGhlIHBhcmFtZXRlciBjb25zdHJ1Y3Rvci4KCiAgICA6cGFyYW0gc2hvd19kZWZhdWx0OiBjb250cm9scyBpZiB0aGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgc2hvd24gb24gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwIHBhZ2UuIE5vcm1hbGx5LCBkZWZhdWx0cyBhcmUgbm90IHNob3duLiBJZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBhIHN0cmluZywgaXQgc2hvd3MgdGhlIHN0cmluZyBpbnN0ZWFkIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZHluYW1pYyBvcHRpb25zLgogICAgOnBhcmFtIHNob3dfZW52dmFyOiBjb250cm9scyBpZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzaG91bGQgYmUgc2hvd24gb24KICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGhlbHAgcGFnZS4gIE5vcm1hbGx5LCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCBzaG93bi4KICAgIDpwYXJhbSBwcm9tcHQ6IGlmIHNldCB0byBgVHJ1ZWAgb3IgYSBub24gZW1wdHkgc3RyaW5nIHRoZW4gdGhlIHVzZXIgd2lsbCBiZQogICAgICAgICAgICAgICAgICAgcHJvbXB0ZWQgZm9yIGlucHV0LiAgSWYgc2V0IHRvIGBUcnVlYCB0aGUgcHJvbXB0IHdpbGwgYmUgdGhlCiAgICAgICAgICAgICAgICAgICBvcHRpb24gbmFtZSBjYXBpdGFsaXplZC4KICAgIDpwYXJhbSBjb25maXJtYXRpb25fcHJvbXB0OiBQcm9tcHQgYSBzZWNvbmQgdGltZSB0byBjb25maXJtIHRoZQogICAgICAgIHZhbHVlIGlmIGl0IHdhcyBwcm9tcHRlZCBmb3IuIENhbiBiZSBzZXQgdG8gYSBzdHJpbmcgaW5zdGVhZCBvZgogICAgICAgIGBgVHJ1ZWBgIHRvIGN1c3RvbWl6ZSB0aGUgbWVzc2FnZS4KICAgIDpwYXJhbSBwcm9tcHRfcmVxdWlyZWQ6IElmIHNldCB0byBgYEZhbHNlYGAsIHRoZSB1c2VyIHdpbGwgYmUKICAgICAgICBwcm9tcHRlZCBmb3IgaW5wdXQgb25seSB3aGVuIHRoZSBvcHRpb24gd2FzIHNwZWNpZmllZCBhcyBhIGZsYWcKICAgICAgICB3aXRob3V0IGEgdmFsdWUuCiAgICA6cGFyYW0gaGlkZV9pbnB1dDogaWYgdGhpcyBpcyBgVHJ1ZWAgdGhlbiB0aGUgaW5wdXQgb24gdGhlIHByb21wdCB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuIGZyb20gdGhlIHVzZXIuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcGFzc3dvcmQKICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC4KICAgIDpwYXJhbSBpc19mbGFnOiBmb3JjZXMgdGhpcyBvcHRpb24gdG8gYWN0IGFzIGEgZmxhZy4gIFRoZSBkZWZhdWx0IGlzCiAgICAgICAgICAgICAgICAgICAgYXV0byBkZXRlY3Rpb24uCiAgICA6cGFyYW0gZmxhZ192YWx1ZTogd2hpY2ggdmFsdWUgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgZmxhZyBpZiBpdCdzCiAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZC4gIFRoaXMgaXMgc2V0IHRvIGEgYm9vbGVhbiBhdXRvbWF0aWNhbGx5IGlmCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9wdGlvbiBzdHJpbmcgY29udGFpbnMgYSBzbGFzaCB0byBtYXJrIHR3byBvcHRpb25zLgogICAgOnBhcmFtIG11bHRpcGxlOiBpZiB0aGlzIGlzIHNldCB0byBgVHJ1ZWAgdGhlbiB0aGUgYXJndW1lbnQgaXMgYWNjZXB0ZWQKICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgdGltZXMgYW5kIHJlY29yZGVkLiAgVGhpcyBpcyBzaW1pbGFyIHRvIGBgbmFyZ3NgYAogICAgICAgICAgICAgICAgICAgICBpbiBob3cgaXQgd29ya3MgYnV0IHN1cHBvcnRzIGFyYml0cmFyeSBudW1iZXIgb2YKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLgogICAgOnBhcmFtIGNvdW50OiB0aGlzIGZsYWcgbWFrZXMgYW4gb3B0aW9uIGluY3JlbWVudCBhbiBpbnRlZ2VyLgogICAgOnBhcmFtIGFsbG93X2Zyb21fYXV0b2VudjogaWYgdGhpcyBpcyBlbmFibGVkIHRoZW4gdGhlIHZhbHVlIG9mIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciB3aWxsIGJlIHB1bGxlZCBmcm9tIGFuIGVudmlyb25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiBjYXNlIGEgcHJlZml4IGlzIGRlZmluZWQgb24gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LgogICAgOnBhcmFtIGhlbHA6IHRoZSBoZWxwIHN0cmluZy4KICAgIDpwYXJhbSBoaWRkZW46IGhpZGUgdGhpcyBvcHRpb24gZnJvbSBoZWxwIG91dHB1dHMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiA4LjAuMQogICAgICAgIGBgdHlwZWBgIGlzIGRldGVjdGVkIGZyb20gYGBmbGFnX3ZhbHVlYGAgaWYgZ2l2ZW4uCiAgICDaBm9wdGlvbk5GVCkScmMBAABydQAAAHIbAAAA2hNjb25maXJtYXRpb25fcHJvbXB02g9wcm9tcHRfcmVxdWlyZWTaCmhpZGVfaW5wdXRyFwEAANoKZmxhZ192YWx1ZXI0AQAA2gVjb3VudNoSYWxsb3dfZnJvbV9hdXRvZW52cj8AAABy2wAAAHIzAAAA2gxzaG93X2Nob2ljZXPaC3Nob3dfZW52dmFycjkBAAByKwAAAGMRAAAAAAAAABQAAAAFAAAACwAAAHMoAgAAZAF8EWsHfRJ0AIMAagF8AWYBfAx8CWQCnAJ8EZcCjgEBAHwDZANrCHJQfABqAmQAawhyPHQDZASDAYIBfABqAmoEZAVkBoMCagWDAH0TbhJ8A2QHawhyXmQAfRNuBHwDfRN8E3wAXwZ8BHwAXwd8BXwAXwh8BnwAXwl8DnwAXwp8AGoGZABrCW+QfABqCAwAfABfC3wHZABrCHLCfAhkAGsJcqpkA30Hcdx8AGoLcrZkB30Hcdx0DHwAag2DAX0Hbhp8B2QHawhy3HwAagsMAHLcfAhkAGsJfABfC3wHcup8EnLqZAd8AF8OfAhkAGsIcvp8AGoODAB9CHwHkAFyGHwMZABrCJABchh0D2oQZAB8CIMCfABfEXwHfABfEnwHkAFvMHQTfABqEXQP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ANoEZGVzdNoGYWN0aW9u2gVjb25zdEYpBXJpAAAAchIBAABynwEAAHKgAQAAcmUBAAApCnI0AQAAco4BAAByFwEAAHKUAQAAchMBAADaCmFkZF9vcHRpb25yEgEAAHI0AAAAco0BAAByZQEAACkEcoUAAAByGgEAAHIpAAAAcqABAAByNQAAAHI1AAAAcjYAAAByGQEAADoKAABzOAAAAAABBgEGAQYBBgIEAgYBCgIMAQQBFAIEAQIBBAEEAQIBCgMEAQIBBAEEAQIBDAMEAQIBBAEEAQIBehRPcHRpb24uYWRkX3RvX3BhcnNlcikCcikAAAByKwAAAGMCAAAAAAAAAA4AAAAMAAAAAwAAAHOKAgAAiAFqAHIKZABTAGQBiQB0AWoCdAMZAHQDZAKcAocAhwFmAmQDZASEDH0CfAKIAWoEgwFnAX0DiAFqBXJMfANqBnwCiAFqBYMBgwEBAIgBagdwVGQFfQRnAH0FiAFqCHLeiAFqCX0GfAZkAGsIcp6IAWoKcp58AWoLZABrCXKeiAFqDGQAawlynnwBagubAGQGiAFqDGoNgwCbAJ0DfQZ8BmQAawly3nQOfAZ0A4MCcrR8Bm4SZAdqD2QIZAmEAHwGRACDAYMBfQd8BWoGdBBkCoMBahF8B2QLjQGDAQEAfAFqEn0IZAx8AV8SehKIAWoTfAFkAWQNjQJ9CVcAZAB8CHwBXxJYAHQOiAFqFHQDgwJ9CnwKkAFzMnwJZABrCZABctqIAWoUkAFzMnwBahSQAXLafAqQAXJIZA6IAWoUmwBkD50DfQtudnQOfAl0FXQWZgKDApABcm5kB2oPZBBkCYQAfAlEAIMBgwF9C25QdBdqGHwJgwGQAXKEdBBkEYMBfQtuOogBahmQAXK2iAFqBZABcrZ0GogBahuQAXKkiAFqBG4EiAFqBWQSGQCDAWQTGQB9C24IdAN8CYMBfQt8C5ABctp8BWoGdBBkFIMBahF8C2QVjQGDAQEAdA6IAWocdB1qHoMCkAJyKogBah+QAm8KiAFqHGogZBJrApACbwqIAWocaiFkAGsIDACQAnIqiAFqHGoigwB9DHwMkAJyKnwFagZ8DIMBAQCIAWojkAJyQHwFagZ0EGQWgwGDAQEAfAWQAnJyZBdqD3wFgwF9DXwEkAJyZnwEmwBkGHwNmwBkGZ0EbgpkGnwNmwBkGZ0D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