XGlucHV0IHRleGluZm8gICAgQGMgLSotdGV4aW5mby0qLQpAYyAlKipzdGFydCBvZiBoZWFkZXIKQHNldGZpbGVuYW1lIHBhcnRlZC1wdF9CUi5pbmZvCkBzZXR0aXRsZSBNYW51YWwgZG8gVXN14XJpbyBkbyBQYXJ0ZWQKQGMgJSoqZW5kIG9mIGhlYWRlcgoKQGMgUk1LOiBmb3IgZGVmaW5pdGlvbnMgYW5kIGRpc2N1c3Npb24gb2YgbXkgbWV0aG9kcywgc2tpcCB0byB0aGUgZW5kCkBjIG9mIHRoZSBmaWxlLCBhZnRlciAgdGhlICJieWUiIGRpcmVjdGl2ZS4KCkBpbmNsdWRlIHZlcnNpb24udGV4aQoKQHBhcmFncmFwaGluZGVudCA0CgpAZGlyZW50cnkKKiBwYXJ0ZWQ6IChwYXJ0ZWQpLiAgICAgICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGRlIHBhcnRpY2lvbmFtZW50byBHTlUKQGMgUk1LOiB0aGUgZm9sbG93aW5nIGRvZXNuJ3Qgd29yay4gICdpbmZvIC0tdXNhZ2UnIGlzIGltcHJvcGVybHkgZG9jdW1lbnRlZC4KQGMgKiBDaGFtYW5kbyBvIHBhcnRlZDogKHBhcnRlZClDaGFtYW5kbyBvIFBhcnRlZC4gICAgT3Dn9WVzIGRlIGxpbmhhIGRlIGNvbWFuZG8gZSBjb21hbmRvcwpAZW5kIGRpcmVudHJ5CgpAYyBSTUs6IHRleGk6IGFuIGluZm8gc2VjdGlvbiBkZXNjcmliaW5nIHRoZSBmaWxlIGlzIHRleGluZm8gY3VzdG9tLgpAaWZpbmZvClRoaXMgZmlsZSBkb2N1bWVudHMgdGhlIHVzZSBvZiBHTlUgUGFydGVkLCBhIHByb2dyYW0gZm9yIGNyZWF0aW5nLApyZXNpc2luZywgY2hlY2tpbmcgYW5kIGNvcHkgcGFydGl0aW9ucywgYW5kIGZpbGUgc3lzdGVtcyBvbiB0aGVtLgoKQ29weXJpZ2h0IDE5OTksIDIwMDAsIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCgpQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4xIG9yCmFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3aXRoIHRoZQpubyBJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIG5vIEZyb250LUNvdmVyIFRleHRzLCBhbmQgd2l0aCBubwpCYWNrLUNvdmVyIFRleHRzLiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uCmVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlJycuCgpAZW5kIGlmaW5mbwoKQGMgUk1LOiB0ZXhpIDogdGhlIHRpdGxlcGFnZSBzZWN0aW9uIGlzIHRleGluZm8gY3VzdG9tLgpAdGl0bGVwYWdlCkB0aXRsZSBNYW51YWwgZG8gR05VIFBhcnRlZApAc3VidGl0bGUgR05VIFBhcnRlZCwgdmVyc+NvIEB2YWx1ZXtWRVJTSU9OfSwgQHZhbHVle1VQREFURUR9CkBhdXRob3IgQW5kcmV3IENsYXVzZW4gQGVtYWlse2NsYXVzZW5AQGdudS5vcmd9CkBjIEZETDogRm9sbG93aW5nIHNlY3Rpb24gNC5CIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsCkBjIEkgYW0gcmVxdWlyZWQgdG8gbGlzdCBteXNlbGYgYXMgYW4gYXV0aG9yIG9mIHRoaXMgd29yay4KQGF1dGhvciBSaWNoYXJkIE0uIEtyZXV0ZXIgQGVtYWlse2tyZXV0ZXJAQGFuZHVyaWwucnV0Z2Vycy5lZHV9CkBhdXRob3IgQmVybmFyZG8gSm/jbyBUb3JyZXMgZGEgU2lsdmVpcmEgKFRyYWR15+NvIFBvcnR1Z3Vlc2EpIEBlbWFpbHtiZXJuYXJkb2p0c0BAaWcuY29tLmJyfQoKQHBhZ2UKQHZza2lwIDBwdCBwbHVzIDFmaWxsbAoKQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CnVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMSBvcgphbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubwpJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggbm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCB3aXRoIG5vIEJhY2stQ292ZXIKVGV4dHMuICBBIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUKRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UnJy4KQGVuZCB0aXRsZXBhZ2UKCkBpZm5vdHRleApAbm9kZSBUb3AKQHRvcCBUSVRMRQoKQGMgUk1LOiBhZGRlZCBUb3Agbm9kZSBkZXNjcmliaW5nIHRoaXMgbWFudWFsIFNob3VsZCBpdCBiZSBtb3JlIHZlcmJvc2U/ClRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSB1c2Ugb2YgR05VIFBhcnRlZCwgYSBwcm9ncmFtIGZvciBjcmVhdGluZywKZGVzdHJveWluZywgcmVzaXppbmcsIGNoZWNraW5nIGFuZCBjb3B5aW5nIGhhcmQgZHJpdmUgcGFydGl0aW9ucywgYW5kCnRoZSBmaWxlIHN5c3RlbXMgb24gdGhlbS4KClRoaXMgZG9jdW1lbnQgYXBwbGllcyB0byBAdmFsdWV7VkVSU0lPTn0gb2YgR05VIFBhcnRlZC4gIEl0cyBjb250ZW50IGlzCnN1YnN0YW50aWFsbHkgc2ltaWxhciB0byB0aGUgdXNlcidzIG1hbnVhbCBpbmNsdWRlZCBpbiB0aGUgc291cmNlCmRpc3RyaWJ1dGlvbiBvZiBHTlUgUGFydGVkIEB2YWx1ZXtWRVJTSU9OfS4gIFRoYXQgZmlsZSB3YXMgd3JpdHRlbiBieQpBbmRyZXcgQ2xhdXNlbi4KQGVuZCBpZm5vdHRleAoKQGMgaWYgd2UgZG9uJ3QgZ2V0IG1lbnVzIChlZzogSFRNTCksIHVzZSBjb250ZW50cyBpbnN0ZWFkCkBzaG9ydGNvbnRlbnRzCgpAbWVudQoqIEluc3Ryb2R15+NvOjogICAgICAgICAgICAgICAgIE92ZXJ2aWV3CiogVXNhbmRvIG8gUGFydGVkOjogICAgICAgICAgICAgUGFydGljaW9uYW5kbyB1bSBEaXNjbyBS7WdpZG8KKiBCSU9TZXMgZSBGaXJtd2FyZXM6OiAgICAgICAgICBFbnRyZSBsaWdhciBlIGNhcnJlZ2FyCiogQ2FycmVnYWRvcmVzIGRlIEJvb3Q6OiAgICAgICAgQ29tbyBvIHNpc3RlbWEgb3BlcmFjaW9uYWwgaW5pY2lhCiogU2lzdGVtYXMgT3BlcmFjaW9uYWlzOjogICAgICAgU2lzdGVtYXMgT3BlcmFjaW9uYWlzIGUgc2lzdGVtYXMgZGUgYXJxdWl2bwoqIFNpc3RlbWFzIGRlIEFycXVpdm86OiAgICAgICAgIFNpc3RlbWFzIGRlIGFycXVpdm8gc3Vwb3J0YWRvcywgZSBzZXVzIHRydXF1ZXMKKiBMVk0gZSBSQUlEOjogICAgICAgICAgICAgICAgICBWb2x1bWVzIHZpcnR1YWlzIGRlIGRpc2NvCiogRXNwZWxoYW1lbnRvIGRlIERpc2NvOjogICAgICAgQ2xvbmFuZG8gaW5zdGFsYef1ZXMKKiBTb2Z0d2FyZSBSZWxhY2lvbmFkbzo6ICAgICAgICBMZWl0dXJhIHBvc3RlcmlvciBlbSB083BpY29zIHJlbGFjaW9uYWRvcwoqIENvcGlhbmRvIGVzc2UgTWFudWFsOjogICAgICAgICBDb21vIGZhemVyIGPzcGlhcyBkZXNzZSBtYW51YWwKKiBIaXN083JpYTo6ICAgICAgICAgICAgICAgICAgICAgQSBoaXN083JpYSBkZXNzZSBtYW51YWwKQGlmbm90cGxhaW50ZXh0CiogzW5kaWNlOjogICAgICAgICAgICAgICAgICAgICAgIM1uZGljZSBkZSBjb25jZWl0b3MgY2l0YWRvcwpAZW5kIGlmbm90cGxhaW50ZXh0CkBlbmQgbWVudQoKQG5vZGUgICAgSW50cm9kdefjbwpAY2hhcHRlciBJbnRyb2R15+NvCgpAbWVudQoqIE92ZXJ2aWV3OjogICAgICAgICAgICAgICAgICAgIEdOVSBQYXJ0ZWQgZSBjb25oZWNpbWVudG9zIG5lY2Vzc+FyaW9zCiogU29mdHdhcmUgTmVjZXNz4XJpbzo6ICAgICAgICAgRGVwZW5k6m5jaWFzIGRlIHNvZnR3YXJlIGRvIEdOVSBQYXJ0ZWQKKiBQbGF0YWZvcm1hcyBTdXBvcnRhZGFzOjogICAgICBBb25kZSB2b2PqIHBvZGUgdXNhciBvIEdOVSBQYXJ0ZWQKKiBMaWNlbudhOjogICAgICAgICAgICAgICAgICAgICBPIHF1ZSB2b2PqIHBvZGUgZSBvIHF1ZSBu428gcG9kZSBjb20gbyBHTlUgUGFydGVkCiogQ29tcGlsYW5kbzo6ICAgICAgICAgICAgICAgICAgQ29tbyBjb21waWxhciBvIEdOVSBQYXJ0ZWQKKiBEaXNjb3MgZGUgYm9vdCBkbyBQYXJ0ZWQ6OiAgICBDb21vIHVzYXIgbyBQYXJ0ZWQgZW0gcGxhdGFmb3JtYXMgbuNvIHN1cG9ydGFkYXMKQGVuZCBtZW51CgpAbm9kZSBPdmVydmlldwpAc2VjdGlvbiBPdmVydmlldyBkbyBHTlUgUGFydGVkCkBjaW5kZXggZGVzY3Jp5+NvIGRvIHBhcnRlZApAY2luZGV4IG92ZXJ2aWV3CkBjaW5kZXggZGVzY3Jp5+NvIGRvIHBhcnRlZApAY2luZGV4IGJ1Z3MsIGNvbW8gcmVsYXRhcgpAY2luZGV4IHJlbGF0YW5kbyBidWdzCkBjaW5kZXggZmFsYW5kbyBjb20gb3MgZGVzZW52b2x2ZWRvcmVzCgpPIEdOVSBQYXJ0ZWQg6SB1bSBwcm9ncmFtYSBwYXJhIGNyaWFyLCBkZXN0cnVpciwgcmVkaW1lbnNpb25hciwKY2hlY2FyIGUgY29waWFyIHBhcnRp5/VlcywgZSBvcyBzaXN0ZW1hcyBkZSBhcnF1aXZvcyBuZWxhcy4KRWxlIOkg+nRpbCBwYXJhIGNyaWFyIGVzcGHnbyBwYXJhIG5vdm9zIHNpc3RlbWFzIG9wZXJhY2lvbmFpcywKcmVvcmdhbml6YXIgbyB1c28gZGUgZGlzY28sIGNvcGlhciBkYWRvcyBlbnRyZSBkaXNjb3Mgcu1naWRvcywgZQpgYGVzcGVsaGFtZW50byBkZSBkaXNjb3MnJyAtLS0gY2xvbmFyIGluc3RhbGHn9WVzIGVtIG11aXRvcwpjb21wdXRhZG9yZXMuCgpFc3RhIGRvY3VtZW50YefjbyBhc3N1bWUgcXVlIHZvY+ogY29uaGVjZSBwYXJ0aef1ZXMgZSBzaXN0ZW1hcyBkZQphcnF1aXZvcy4gU2Ugdm9j6iBwb2RlIHF1ZXJlciBhcHJlbmRlciBtYWlzIHNvYnJlIGVsZXMsIGEgUGFydGl0aW9uCm1pbmktSE9XVE8g6SBsZWl0dXJhIHJlY29tZW5kYWRhLiBFbGEgcHJvdmF2ZWxtZW50ZSB2ZW0gY29tIGEgc3VhCmRpc3RyaWJ1aefjbywgb3UgZXN04SBkaXNwb27tdmVsIGVtCgpAYyBGSVhNRTogc3RhbmRhcmRzOiBob3d0byBsYWJlbGxlZCBub24tZnJlZSBieSBMRFAKQHVyZWZ7aHR0cDovL3d3dy5saW51eGRvYy5vcmcvSE9XVE8vbWluaS9QYXJ0aXRpb24vaW5kZXguaHRtbH0KCk8gR05VIFBhcnRlZCBmb2kgZmVpdG8gcGFyYSBtaW5pemFyIGFzIGNoYW5jZXMgZGUgcGVyZGFzIGRlIGRhZG9zLgpQb3IgZXhlbXBsbywgZWxlIGZvaSBmZWl0byBwYXJhIGV2aXRhciBwZXJkYSBkZSBkYWRvcyBkdXJhbnRlCmludGVycnVw5/VlcyAoY29tbyBmYWx0YSBkZSBsdXopIGUgcmVhbGl6YSBtdWl0YXMgY2hlY2FnZW5zIGRlIGVycm8uCkNvbnR1ZG8gcG9kZW0gZXhpc3RpciBidWdzIG5vIFBhcnRlZCwgZW50428gdm9j6iBkZXZlIGZhemVyIGJhY2t1cCBkZQphcnF1aXZvcyBpbXBvcnRhbnRlcy4KCkEgcOFnaW5hIGRvIEdOVSBQYXJ0ZWQg6SBAdXJlZnt3d3cuZ251Lm9yZy9zb2Z0d2FyZS9wYXJ0ZWR9LiAgRWxlIHBvZGUKc2VyIGJhaXhhZG8gZW0gQHVyZWZ7ZnRwLmdudS5vcmcvZ251L3BhcnRlZH0uCgpBIGxpc3RhIGRlIGUtbWFpbHMgZG8gUGFydGVkIOkgQGVtYWlse3BhcnRlZEBAZ251Lm9yZ30uICBQYXJhIHNlCmluc2NyZXZlciwgZXNjcmV2ZSBwYXJhIEBlbWFpbHtidWctcGFydGVkLXJlcXVlc3RAQGdudS5vcmd9IGNvbSBAc2FtcHtzdWJzY3JpYmV9IG5vIGFzc3VudG8uICBJbmZvcm1h5/VlcyBwYXJhIGluc2NyaefjbyBlIG9zIGFycXVpdm9zIGVzdONvIGRpc3Bvbu12ZWlzIGVtOgoKQHVyZWZ7aHR0cDovL21haWwuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2J1Zy1wYXJ0ZWR9CgpQb3IgZmF2b3IgbWFuZGUgcmVsYXRvcyBkZSBidWdzIHBhcmEgQGVtYWlse2J1Zy1wYXJ0ZWRAQGdudS5vcmd9LgpRdWFuZG8gZW52aWFyIHJlbGF0b3MgZGUgYnVncywgcG9yIGZhdm9yIGluY2x1YSBhIHZlcnPjbyBkbyBHTlUgUGFydGVkLgpTZSBvIGJ1ZyDpIHJlbGF0aXZvIGEgdGFiZWxhcyBkZSBwYXJ0aefjbywgZW50428gcG9yIGZhdm9yIGluY2x1YSBhCnNh7WRhIGRlc3NlcyBjb21hbmRvczoKCkBleGFtcGxlCkBncm91cAojIEBrYmR7ZmRpc2sgL2Rldi9oZGEgLWx9CiMgQGtiZHtmZGlzayAvZGV2L2hkYX0KQ29tbWFuZCAobSBmb3IgaGVscCk6IEBrYmR7cH0KQ29tbWFuZCAobSBmb3IgaGVscCk6IEBrYmR7eH0KRXh0ZW5kZWQgY29tbWFuZCAobSBmb3IgaGVscCk6IEBrYmR7cH0KQGVuZCBncm91cApAZW5kIGV4YW1wbGUKClNpbnRhLXNlIOAgdm9udGFkZSBwYXJhIHBlZGlyIGFqdWRhIG5lc3NhIGxpc3RhIC0tLSBzb21lbnRlIGNvbmZpcmEgc2UKYSBzdWEgcGVyZ3VudGEgbuNvIGZvaSByZXNwb25kaWRhIGFxdWkgYWluZGEuICBTZSB2b2PqIG7jbyBlbnRlbmRlIGEKZG9jdW1lbnRh5+NvLCBwb3IgZmF2b3Igbm9zIGRpZ2EsIHBhcmEgcXVlIHBvc3NhbW9zIGV4cGxpY2FyIG1lbGhvci4KTm9zc2EgZmlsb3NvZmlhIOk6IHNlIHZvY+ogcHJlY2lzYXIgcGVkaXIgcG9yIGFqdWRhLCBlbnTjbyBhbGdvIHByZWNpc2EKc2VyIGFqdXN0YWRvIHBhcmEgcXVlIHZvY+ogKGUgb3V0cm9zKSBu428gcHJlY2lzZW0gcGVkaXIgcG9yIGFqdWRhLgoKRG8gbWVzbW8gbW9kbywgYWRvcmFy7WFtb3Mgb3V2aXIgc3VhcyBpZOlpYXMgOi0pCgpAbm9kZSBTb2Z0d2FyZSBOZWNlc3PhcmlvCkBzZWN0aW9uIFNvZnR3YXJlIG5lY2Vzc+FyaW8gcGFyYSB1c2FyIG8gUGFydGVkCkBjaW5kZXggZGVwZW5k6m5jaWFzIGRlIHNvZnR3YXJlCkBjaW5kZXggc29mdHdhcmUgbmVjZXNz4XJpbwpAY2luZGV4IGxpYnV1aWQKQGNpbmRleCBlMmZzcHJvZ3MKQGNpbmRleCByZWFkbGluZQpAY2luZGV4IGdldHRleHQKCk8gR05VIFBhcnRlZCBkZXBlbmRlIGRvcyBzZWd1aW50ZXMgcGFjb3RlcyBwYXJhIGNvbXBpbGFyIGNvcnJldGFtZW50ZToKCkBpdGVtaXplIEBidWxsZXQKCkBpdGVtIGxpYnV1aWQsIHBhcnQgb2YgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLiAgU2Ugdm9j6iBu428gdGVtLCB2b2PqCnBvZGUgcGVn4S1sYSBlbToKCglAdXJlZntodHRwOi8vd2ViLm1pdC5lZHUvdHl0c28vd3d3L2xpbnV4L2UyZnNwcm9ncy5odG1sfQoKU2Ugdm9j6iBxdWVyIGNvbXBpbGFyIG8gUGFydGVkIGUgYSBlMmZzcHJvZ3MsIG5vdGUgcXVlIHZvY+ogdmFpCnByZWRjaXNhciBmYXplciBAa2Jke21ha2UgaW5zdGFsbH0gYW5kIEBrYmR7bWFrZSBpbnN0YWxsLWxpYnN9IGUyZnNwcm9ncy4KCkBpdGVtIEdOVSBSZWFkbGluZSAob3BjaW9uYWwpLCBkaXNwb27tdmVsIGVtCgoJQHVyZWZ7ZnRwOi8vZnRwLmdudS5vcmcvZ251L3JlYWRsaW5lfQoKU2Ugdm9j6iBlc3ThIGNvbXBpbGFuZG8gbyBQYXJ0ZWQsIGUgdm9j6iBu428gdGVtIHJlYWRsaW5lLCB2b2PqCnBvZGUgZGVzYWJpbGl0YXIgbyBzdXBvcnRlIGRvIFBhcnRlZCBhIHJlYWRsaW5lIGNvbSBvIGEgb3Dn428KQGtiZHstLWRpc2FibGUtcmVhZGxpbmV9IHBhcmEgbyBAY29tbWFuZHtjb25maWd1cmV9LgoKQGl0ZW0gR05VIGdldHRleHQgKG91IHNvZnR3YXJlIGNvbXBhdO12ZWwpIHBhcmEgY29tcGlsYefjbywgc2UKdm9j6iBkZXNlIHN1cG9ydGUgYSBpbnRlcm5hY2lvbmFsaXph5+NvLgoKCUB1cmVme2Z0cDovL2Z0cC5nbnUub3JnL2dudS9nZXR0ZXh0fQoKQGl0ZW0gbGlicmVpc2VyZnMsIHNlIHZvY8ogcXVpc2VyIHN1cG9ydGUgYSByZWlzZXJmczoKCglAdXJlZntodHRwOi8vcmVpc2VyZnMubGludXgua2lldi51YX0KClByZXN0ZSBhdGVu5+NvIHF1ZSBvIHBhcnRlZCB2YWkgYXV0b21hdGljYW1lbnRlIGRldGVjdGFyIGEgbGlicmVpc2VyZnMKcXVhbmRvIHJvZGFyLCBlIHZhaSBoYWJpbGl0YXIgbyBzdXBvcnRlIGEgcmVpc2VyZnMuICBBIGxpYnJlaXNlcmZzIOkKbm92YSBlIG7jbyBmb2kgbXVpdG8gdGVzdGFkYSBhaW5kYS4KCkBlbmQgaXRlbWl6ZQoKQG5vZGUgUGxhdGFmb3JtYXMgU3Vwb3J0YWRhcwpAc2VjdGlvbiBQbGF0Zm9ybWFzIGFvbmRlIG8gR05VIFBhcnRlZCByb2RhCkBjaW5kZXggcGxhdGFmb3JtYXMgc3Vwb3J0YWRhcwpAY2luZGV4IHBsYXRmb3JtYXMsIHN1cG9ydGFkYXMKCkVzcGVyYW1vcyBxdWUgZXNzYSBsaXN0YSBjcmVz52EgYmFzdGFudGUuIFNlIHZvY+ogbuNvIHRlbSB1bWEgZGVzc2FzCnBsYXRhZm9ybWFzIChMaW51eCBubyBtb21lbnRvISksIGVudONvIHZvY+ogcHJlY2lzYXIgdXNhciB1bSBkaXNjbyBkZQpib290LiBAeHJlZntEaXNjb3MgZGUgYm9vdCBkbyBQYXJ0ZWQsIFVzYW5kbyBvcyBEaXNjb3MgZGUgQm9vdCBkbyBQYXJ0ZWR9LgoKQHRhYmxlIEBhc2lzCkBpdGVtIEdOVS9MaW51eApMaW51eCB2ZXJz9WVzIDIuMCBwYXJhIGNpbWEsIG5vIEFscGhhLCBQQ3MgeDg2LCBQQzk4LCBNYWNpbnRvc2ggUG93ZXJQQywgZSBTdW4uCgpAYyBSTUs6IHZlcmFjaWRhZGU6IGJlbSwgKkV1KiBudW5jYSB1c3NlaSBvIHBhcnRlZCBudW0gR05VL0h1cmQgLi4uIDopCkBpdGVtIEdOVS9IdXJkClN1cG9ydGUgZXhwZXJpbWVudGFsLgoKQGVuZCB0YWJsZQoKQSBHTlUgbGliYyAyLjEgb3Ugc3VwZXJpb3Ig6SBuZWNlc3PhcmlhLiBWb2PqIHByb3ZhdmVsbWVudGUgcG9kZSB1c2FyCnZlcnP1ZXMgYW50ZXJpb3JlcyB1c2FuZG8gYSBvcOfjbyBAc2FtcHstLWRpc2FibGUtbmxzfS4gCkB4cmVme0NvbXBpbGFuZG8gbyBHTlUgUGFydGVkfS4gKE5vdGE6IEV1IGFjaG8gcXVlIG7zcyBq4SB0aXJhbW9zIGVzc2EKbmVjZXNzaWRhZGUuICDBIGZhemVyOiBjaGVjYXIgc2UgZnVuY2lvbmEgbmEgbGliYyAyLjAhKQoKQG5vZGUgTGljZW7nYQpAc2VjdGlvbiBUZXJtb3MgZGUgZGlzdHJpYnVp5+NvIHBhcmEgbyBHTlUgUGFydGVkCkBjaW5kZXggdGVybW9zIGRhIGxpY2Vu52EKQGNpbmRleCB0ZXJtcyBkYSBkaXN0cmlidWnn428KQGNpbmRleCBnbnUgZ3BsCkBjaW5kZXggZ3BsCgpPIEdOVSBQYXJ0ZWQg6SBzb2Z0d2FyZSBsaXZyZSwgcHJldmlzdG8gcGVsYSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZXNlIFZlcnNpb24gMi4gRWxhIGRldmUgdmlyIGNvbSBhIGRpc3RyaWJ1aefjbyBkbyBQYXJ0ZWQsIG5vIGFycXVpdm8KQ09QWUlORy4gU2UgbuNvLCBlc2NyZXZhIHBhcmEgYSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCjUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCgpMaWJwYXJ0ZWQg6SBjb25zaWRlcmFkYSBwYXJ0ZSBkbyBHTlUgUGFydGVkLiBFbGEg6SBwcmV2aXN0YSBwZWxhIEdOVQpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBOw08g6SBsYW7nYWRhIHNvYnJlIGEgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIChMR1BMKS4KCkBub2RlIENvbXBpbGFuZG8KQHNlY3Rpb24gQ29tcGlsYW5kbyBvIEdOVSBQYXJ0ZWQKQGNpbmRleCBjb21waWxhbmRvIG8gcGFydGVkCkBjaW5kZXggY29tcGlsYW5kbyBvIHBhcnRlZAoKU2Ugdm9j6iBxdWVyIGNvbXBpbGFyIG8gR05VIFBhcnRlZCwgZ2VyYWxtZW50ZSDpIGZlaXRvIGNvbToKCkBleGFtcGxlCkBncm91cAokIEBrYmR7Li9jb25maWd1cmV9CiQgQGtiZHttYWtlfQpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKQ29udHVkbyBo4SBhbGd1bWFzIG9w5/VlcyBwYXJhIG8gQGNvbW1hbmR7Y29uZmlndXJlfToKCkB0YWJsZSBAY29kZQpAaXRlbSAtLXdpdGhvdXQtcmVhZGxpbmUJCQpkZXNsaWdhIG8gdXNvIGRlIHJlYWRsaW5lLiBJc3NvIOkg+nRpbCBwYXJhIGZhemVyIGRpc2NvcyBkZSBib290LApldGMuLCBvbmRlIHBvdWNhcyBiaWJsaW90ZWNhcyBlc3TjbyBkaXNwb27tdmVpcy4KCkBpdGVtIC0tZGlzYWJsZS1kZWJ1Zwpu428gaW5jbHVpIHPtbWJvbG9zIHBhcmEgZGVidWdhcgoKQGl0ZW0gLS1kaXNhYmxlLWR5bmFtaWMtbG9hZGluZwpkZXNhYmlsaXRhIG8gY2FycmVnYW1lbnRvIGRpbuJtaWNvIGRlIGFsZ3VtYXMgYmlibGlvdGVhcyAoc29tZW50ZQpyZWlzZXJmcyBubyBtb21lbnRvLCBhcGVzYXIgZGUgaGF2ZXIgcHJldGVuc/VlcyBkZSBleHBhbnPjbykuIENhcnJlZ2FtZW50bwpkaW7ibWljbyDpIPp0aWwgcG9ycXVlIGVsZSBwZXJtaXRlIHZvY+ogcmV1c2FyIGFzIGJpYmxpb3RlY2FzIGNvbXBhcnRpbGhhZGFzCmRvIGxpYnBhcnRlZCBtZXNtbyBxdWFuZG8gdm9j6iBu428gc2FiZSBzZSBhbGd1bWFzIGJpYmxpb3RlY2FzIHbjbyBlc3RhcgpkaXNwb27tdmVpcy4gSXNzbyB0ZW0gdW0gcGVxdWVubyBhdW1lbnRvIChwcmluY2lwYWxtZW50ZSBsaWdhbmRvIGNvbSBhCmxpYmRsKSwgZW50428gcG9kZSBzZXIg+nRpbCBkZXNhYmlsaXRhciBpc3NvIGVtIGRpc2NvcyBkZSBib290IHNlIHZvY+oKbuNvIHByZWNpc2EgZGUgZmxleGliaWxpZGFkZS4KCkBpdGVtIC0tZGlzYWJsZS1mcwpkZXNhYmlsaXRhIG8gc3Vwb3J0ZSBhIHRvZG9zIG9zIHNpc3RlbWFzIGRlIGFycXVpdm8KCkBpdGVtIC0tZGlzYWJsZS1ubHMJCQkKZGVzYXRpdmEgbyBzdXBvcnRlIGEgbO1uZ3VhIG5hdGl2YS4gSXNzbyDpIPp0aWwgcGFyIHVzYXIgY29tIHZlcnP1ZXMKYW50aWdhcyBkYSBnbGliYywgb3UgdW1hIHZlcnPjbyByZWR1emlkYSBkYSBnbGliYyBib2EgcGFyYSBkaXNjb3MgZGUKYm9vdC4KCkBpdGVtIC0tZGlzYWJsZS1zaGFyZWQJCQpkZXNhYmlsaXRhIG8gdXNvIGRlIGJpYmxpb3RlY2FzIGNvbXBhcnRpbGhhZGFzLiBFbGEgcG9kZSBzZXIgbmVjZXNz4XJpYQpwYXJhIHVzbyBjb20gdmVyc/VlcyBhbnRpZ2FzIGRhIEdOVSBsaWJjLCBzZSB2b2PqIHJlY2ViZXIgdW0gZXJybyBzb2JyZQphbGd1bSBgYHJlZ2lzdHJhZG9yIGN1c3BpZG8nJy4gIFRhbWLpbSD6dGlsIHBhcmEgZGlzY29zIGRlIGJvb3QuCgpAaXRlbSAtLWRpc2FibGUtV2Vycm9yCmlnbm9yYXIgYXZpc29zIG5hIGNvbXBpbGHn428KCkBpdGVtIC0tZW5hYmxlLWFsbC1zdGF0aWMJCQpjb21waWxhIG8gZXhlY3V04XZlbCBkbyBQYXJ0ZWQgY29tbyB1bSBiaW7hcmlvIGNvbXBsZXRhbWVudGUgZXN04XRpY28KSXN0byDpIGNvbnZlbmllbnRlIHBhcmEgZGlzY29zIGRlIGJvb3QsIHBvcnF1ZSB2b2PqIG7jbyBwcmVjaXNhIGluc3RhbGFyCnF1YWxxdWVyIGJpYmxpb3RlY2FzIG5vIGRpc2NvIGRlIGJvb3QgKGNvbnR1ZG8sIGFsZ3VucyBwcm9ncmFtYXMgcG9kZW0KcHJlY2lzYXIgZGVsYXNAZG90c3t9KSBOb3RhOiB2b2PqIHRhbWLpbSB2YWkgcHJlY2lzYXIgcm9kYXIgbyBzdHJpcCgxKS4KCkBpdGVtIC0tZW5hYmxlLWRpc2NvdmVyLW9ubHkKc3Vwb3J0YSBzb21lbnRlIGxlaXR1cmEvY2hlY2FnZW0KCkBpdGVtIC0tZW5hYmxlLW10cmFjZQpoYWJpbGl0YSBkZWJ1Z2FyIG9zIG1hbGxvYygpJ3MKCkBpdGVtIC0tZW5hYmxlLXJlYWQtb25seQpkZXNhYmlsaXRhIGVzY3JpdGEgKHBhcmEgZGVidWdhcikKCkBlbmQgdGFibGUKCkBub2RlIERpc2NvcyBkZSBCb290IGRvIFBhcnRlZApAc2VjdGlvbiBVc2FuZG8gdW0gRGlzY28gZGUgQm9vdCBkbyBQYXJ0ZWQKQGNpbmRleCBkaXNjbyBkZSBib290CkBjaW5kZXggZGlzcXVldGUgZGUgYm9vdApAY2luZGV4IHBsYXRhZm9ybWFzIG7jby1zdXBvcnRhZGFzCgpTZSB2b2PqIHF1ZXIgcm9kYXIgbyBQYXJ0ZWQgbnVtYSBt4XF1aW5hIHNlbSBvIEdOVS9MaW51eCBpbnN0YWxhZG8sIG91CnZv6iBxdWVyIHJlZGltZW5zaW9uYXIgdW1hIHBhcnRp5+NvIHJh7Xogb3UgZGUgYm9vdCwgdm9j6iB2YWkgcHJlY2lzYXIKdXNhciB1bSBkaXNjbyBkZSBib290LgoKVW1hIGltYWdlbSBwYXJhIHVtIGRpc2NvIGRlIGJvb3QgZXN04SBkaXNwb27tdmVsIGVtOgoKQHVyZWZ7ZnRwOi8vZnRwLmdudS5vcmcvZ251L3BhcnRlZC9ib290ZGlzay9wYXJ0Ym9vdC5pbWd9CgpAYyBSTUs6IHByaW50aW5nOiBhZGRlZCBzb21lIHdvcmRpbmcgaGVyZSB0byBtYWtlIHRoZSBwYXJhZ3JhcGggbG9vawpAYyBhY2NlcHRhYmxlIGluIHByaW50ClBhcmEgY3JpYXIgb3MgZGlzY29zIGRlIGJvb3QsIGEgaW1hZ2VtIGRlIGRpc2NvIGRldmUgc2VyIGVzY3JpdGEgcGFyYQp1bSBkaXNxdWV0ZSBkZSBib290LiBObyBHTlUvTGludXgsIGlzc28gcG9kZSBzZXIgZmVpdG8gY29tCgpAZXhhbXBsZQojIEBrYmR7ZGQgaWY9cGFydGJvb3QuaW1nIG9mPS9kZXYvZmQwIGJzPTE0NDBrfQpAZW5kIGV4YW1wbGUKCkBub2luZGVudCBPdSB1c2UgbyBSQVdSSVRFLkVYRSBkZW50cm8gZG8gRE9TLgoKSW5mZWxpem1lbnRlLCBvIGRpc2NvIGRlIGJvb3QgbuNvIGThIHN1cG9ydGUgYSB24XJpb3MgdGlwb3MgZGUgaGFyZHdhcmUuClNlIG8gc2V1IGRpc2NvIHLtZ2lkbyBu428g6SBzdXBvcnRhZG8sIGVudONvIHZvY+ogdmFpIHByZWNpc2FyIGZhemVyIG8Kc2V1IHBy83ByaW8gZGlzY28gZGUgYm9vdC4gVm9j6iBwb2RlIGNvcGlhciBvIGJpbuFyaW8gZG8gcGFydGVkIGRvIGRpc2NvCmRlIGJvb3QgZG8gcGFydGVkIHBhcmEgb3V0cm8gZGlzY28sIG91IHRlbnRhciBvdXRyb3MgZGlzY29zIGRlIGJvb3QsIG91CmZhemVyIG8gc2V1IHBy83ByaW8uIFZvY+ogcG9kZSBhY2hhciBvIG1rcGFydGVkIPp0aWwsIHF1ZSDpIHVtIHNjcmlwdApzaGVsbCBwYXJhIGZhemVyIHNldXMgcHLzcHJpb3MgZGlzY29zIGRlIGJvb3QgZG8gcGFydGVkLiBFbGUgZXN04QpkaXNwb27tdmVsIGVtOgoKQHVyZWZ7ZnRwOi8vZnRwLnR1eC5vcmcvcHViL3Blb3BsZS9rZW50LXJvYm90dGkvbWtwYXJ0ZWR9CgpQYXJhIGNvcGlhciBvIHBhcnRlZCBkbyBkaXNjbyBkZSBib290IHBhcmEgb3V0cm8gZGlzY286CgpAZW51bWVyYXRlCkBpdGVtIEZhemVyIG8gQm9vdCBkZSB1bSBkaXNjbyBkZSBib290IGRvIFBhcnRlZC4KCkBpdGVtIEluc2lyYSBvdXRybyBkaXNxdWV0ZSBkZSBib290IGZvcm1hdGFkbyBlbSBleHQyLiBTZSBlbGUgbuNvIGVzdOEKZm9ybWF0YWRvLCB2b2PqIHBvZGUgY3JpYXIgdW0gc2lzdGVtYSBkZSBhcnF1aXZvIGNvbSwgcG9yIGV4ZW1wbG86CgpAZXhhbXBsZQokIEBrYmR7cGFydGVkIC9kZXYvZmQwIG1rbGFiZWwgbG9vcCBta3BhcnRmcyBwcmltYXJ5IGV4dDIgMCAxLjR9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gTW9udGUgbyBkaXNxdWV0ZSwgZXg6CgpAZXhhbXBsZQokIEBrYmR7bW91bnQgLXQgZXh0MiAvZGV2L2ZkMCAvbW50L2Zsb3BweX0KQGVuZCBleGFtcGxlCgpAaXRlbSBDb3BpZSBvIEBmaWxley9zYmluL3BhcnRlZH0gcGFyYSBvIGRpc3F1ZXRlLCBleDoKCkBleGFtcGxlCiQgQGtiZHtjcCAvc2Jpbi9wYXJ0ZWQgL21udC9mbG9wcHl9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQ29waWUgQGZpbGV7L2xpYi8qfSBwYXJhIG8gZGlzcXVldGUsIGV4OgoKQGV4YW1wbGUKJCBAa2Jke2NwIC9saWIvKiAvbW50L2Zsb3BweX0KQGVuZCBleGFtcGxlCgpAaXRlbSBEZXNtb250ZSBvIGRpc3F1ZXRlLCBleDoKCkBleGFtcGxlCiQgQGtiZHt1bW91bnQgL21udC9mbG9wcHl9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQWNoZSB1bSBkaXNxdWV0ZSBkZSBib290IHF1ZSBAZW1waHtyZWFsbWVudGV9IHN1cG9ydGUgbyBzZXUKZGlzY28gcu1naWRvcy4gKERpY2E6IHRyeSBsb29raW5nIGZvciByZXNjdWUgZGlza3MgZnJvbSB2YXJpb3VzCmRpc3RyaWJ1dGlvbnMgb24gYmlnIG1pcnJvciBzaXRlcykKCkBpdGVtIFRpcmUgbyBzZXUgZGlzcXVldGUgZGUgYm9vdC4gIE1vbnRlIG8gZGlzcXVldGUgYW9uZGUgdm9j6iBjb3Bpb3UgbyBQYXJ0ZWQuCgpAaXRlbSBSb2RlIG8gUGFydGVkLiBQb3IgZXhlbXBsbywKCkBleGFtcGxlCiMgQGtiZHtjZCAvbW50L2Zsb3BweX0KIyBAa2Jke0xEX0xJQlJBUllfUEFUSD0uIC4vcGFydGVkfQpAZW5kIGV4YW1wbGUKQGVuZCBlbnVtZXJhdGUKCkBub2RlICAgIFVzYW5kbyBvIFBhcnRlZApAY2hhcHRlciBVc2FuZG8gbyBQYXJ0ZWQKQGNpbmRleCBjb21hbmRvcwoKQG1lbnUKKiBQYXJ0aWNpb25hbmRvOjogICAgICAgICAgICAgICAgICAgUGFydGljaW9uYW1lbnRvIGRlIGRpc2NvIG5vIGNvbnRleHQKKiBSb2RhbmRvIG8gUGFydGVkOjogICAgICAgICAgICAgICAgUGFydGljaW9uYW1lbnRvIGNvbSBvIFBhcnRlZAoqIENoYW1hbmRvIG8gUGFydGVkOjogICAgICAgICAgICAgICBDaGFtYW5kbyBvIHBhcnRlZCBlIHN1YXMgb3Dn9WVzCiogRXhwbGljYefjbyBkb3MgY29tbWFuZDo6ICAgICAgICAgIEV4cGxpY2Hn428gY29tcGxldGEgZG9zIGNvbWFuZG9zIGRvIHBhcnRlZAoqIEV4ZW1wbG9zOjogICAgICAgICAgICAgICAgICAgICAgICBTZXNz9WVzIGRlIGV4ZW1wbG8gZG8gUGFydGVkCkBlbmQgbWVudQoKQG5vZGUgUGFydGljaW9uYW5kbwpAc2VjdGlvbiBDb25jZWl0b3MgZGUgUGFydGljaW9uYW1lbnRvCkBjaW5kZXggb3ZlcnZpZXcgZG8gcGFydGljaW9uYW1lbnRvCgpJbmZlbGl6bWVudGUsIHBhcnRpY2lvbmFyIG8gZGlzY28g6SBtYWlzIGNvbXBsaWNhZG8uIElzdG8g6SBwb3JxdWUKZXhpc3N0ZW0gaW50ZXJh5/VlcyBlbnRyZSBtdWl0b3Mgc2lzdGVtYXMgb3BlcmFjaW9uYWlzIGRpZmVyZW50ZXMKcXVlIHByZWNpc2FtIHNlciBsZXZhZGFzIGVtIGNvbnRhOgoKQGl0ZW1pemUgQGJ1bGxldApAaXRlbQpBIEJJT1Mgb3UgZmlybXdhcmUgLSBvIHByb2dyYW1hIHF1ZSDpIGNvbG9jYWRvIG51bWEgUk9tIGRlbnRybyBkbyBzZXUKY29tcHV0YWRvciwgcXVlIGZheiBjaGVjYWdlbSBkZSBtZW3zcmlhLCBldGMuIFZvY+ogbuNvIHBvZGUgKGZhY2lsbWVudGUpCm11ZGFyIG9zIHByb2dyYW1hcyBuZXNzZSBzaXN0ZW1hLiBFeGVtcGxvcyBkZSBCSU9TIG91IHByb2dyYW1hcyBmaXJtd2FyZToKQW1pQklPUywgQXdhcmQsIFBob2VuaXgsIE9wZW5GaXJtd2FyZS4gVm9j6iBzb21lbnRlIHZhaSB0ZXIgdW0gZGVzc2VzCnByb2dyYW1hcy4KCkBpdGVtCk8gY2FycmVnYWRvciBkZSBib290IC0gbyBwcm9ncmFtYSBxdWUgcGVybWl0ZSB2b2PqIHNlbGVjaW9uYXIgcXVhbApzaXN0ZW1hIG9wZXJhY2lvbmFsIHF1ZSB2b2PqIHF1ZXIgdXNhciwgZSBjYXJyZWdhIGFxdWVsZSBzaXN0ZW1hCm9wZXJhY2lvbmFsLiBFeGVtcGxvczogTElMTywgR1JVQiwgWWFib290LCBRdWlrLiBWb2PqIHBvZGUgdGVyIG1haXMgZGUKdW0gY2FycmVnYWRvciBkZSBib290IGluc3RhbGFkbywgZXNwZWNpYWxtZW50ZSBzZSB2b2PqIHRlbSBtYWlzIGRlIHVtCnRpcG8gZGUgc2lzdGVtYSBvcGVyYWNpb25hbCBpbnN0YWxhZG8uCgpAaXRlbQpPIHNpc3RlbWEgb3BlcmFjaW9uYWwgKG5lc3NlIG1vbWVudG8sIGVzdGUgZGV2ZSBzZXIgbyBHTlUvTGludXgpIHF1ZQpyb2RlIFBhcnRlZCBlIG91dHJvcyBzaXN0ZW1hcyBvcGVyYWNpb25haXMgcXVlIHZvY+ogdXNlLgoKQGl0ZW0KT3MgdGlwb3MgZGUgc2lzdGVtYXMgZGUgYXJxdWl2byAtIGEgbWFuZWlyYSBjb21vIG9zIGRhZG9zIGRldmVtIHNlcgpndWFyZGFkb3MgbmFzIHBhcnRp5/Vlcy4gRXhlbXBsb3MgZGVsZXMgc+NvOiBleHQyLCBmYXQzMiwgaGZzLCByZWlzZXJmcy4KVm9j6iBmcmVx/GVudGVtZW50ZSB0ZXIgcGFydGnn9WVzIGRlIHNpc3RlbWFzIGRlIGFycXVpdm8gZGlmZXJlbnRlLgpAZW5kIGl0ZW1pemUKCk8gUGFydGVkIHN1cG9ydGEgbXVpdGFzIGNvbWJpbmHn9WVzIGRlIEJJT1MsIGNhcnJlZ2Fkb3JlcyBkZSBib290LApzaXN0ZW1hcyBvcGVyYWNpb25haXMsIGUgc2lzdGVtYXMgZGUgYXJxdWl2bywgZSB2YWkgc3Vwb3J0YXIgbWFpcwphaW5kYSBubyBmdXR1cm8uIFBhcmEgbWVsaG9yIGVudGVuZGVyIGFzIHJlZ3JhcyBkZSBjYWRhLCBwb3IgZmF2b3IKdmVqYSBAcmVme0JJT1NlcyBhbmQgRmlybXdhcmV9LCBAcmVme0Jvb3QgTG9hZGVyc30sIApAcmVme1Npc3RlbWFzIG9wZXJhY2lvbmFpc30sIGUgQHJlZntTaXN0ZW1hcyBkZSBhcnF1aXZvfS4KCkVzdGUgY2Fw7XR1bG8gZGVzY3JldmUgY29tbyB1c2FyIG8gUGFydGVkLCBxdWUg6SBzZW1wcmUgbyBtZXNtbywgbuNvCmltcG9ydGEgcXVlIHNpc3RlbWFzIHF1ZSB2b2PqIGVzdOEgdXNhbmRvLiBWb2PqIGRldmUgbGVyIGVzc2UgY2Fw7XR1bG8sCmVudONvIGNhZGEgdW0gZG9zIGNhcO10dWxvcyBzb2JyZSBCSU9TJ3MsIGNhcnJlZ2Fkb3JlcyBkZSBib290LCBzaXN0ZW1hcwpvcGVyYWNpb25haXMsIGUgc2lzdGVtYXMgZGUgYXJxdWl2by4gQ29udHVkbywgdm9j6iBz8yBwcmVjaXNhIGxlciBhcwpzZef1ZXMgcXVlIHPjbyByZWxldmFudGVzIHByYSB2b2PqLiBQb3IgZXhlbXBsbywgc2Ugdm9j6iBz8yB1c2EgbyBMSUxPCmNvbW8gY2FycmVnYWRvciBkZSBib290LCB2b2PqIHPzIHByZWNpc2FyIGxlciBhIGludHJvZHXn428gZSAKQHJlZntMSUxPLCB0aGUgc2VjdGlvbiBvbiBMSUxPfS4KCkBub2RlIFJvZGFuZG8gbyBQYXJ0ZWQKQHNlY3Rpb24gVXNhbmRvIG8gR05VIFBhcnRlZApAY2luZGV4IG1vZG9zIGRlIHVzbwoKTyBQYXJ0ZWQgdGVtIGRvaXMgbW9kb3M6IGxpbmhhIGRlIGNvbWFuZG8gZSBpbnRlcmF0aXZvLiBPIFBhcnRlZApzZW1wcmUgZGV2ZSBjb21l52FyIGNvbToKCkBleGFtcGxlCiMgQGtiZHtwYXJ0ZWQgQHZhcntkZXZpY2V9fQpAZW5kIGV4YW1wbGUKCkBub2luZGVudCBhb25kZSBAdmFye2RldmljZX0gbyBkaXNwb3NpdGl2byBkZSBkaXNjbyBy7WdpZG8gcXVlIHZvY+oKcXVlciBlZGl0YXIuIChTZSB2b2PqIOkgbWFsYW5kcm8sIG8gUGFydGVkIHZhaSB0ZW50YXIgYWRpdmluaGFyIHF1YWwKZGlzcG9zaXRpdm8gdm9j6iBxdWVyLikKCk5vIG1vZG8gZGUgbGluaGEgZGUgY29tYW5kbywgZWxlIOkgc2VndWlkbyBwb3IgdW0gb3UgbWFpcyBjb21hbmRvcy4KUG9yIGV4ZW1wbG86CgpAZXhhbXBsZQojIEBrYmR7cGFydGVkIC9kZXYvc2RhIHJlc2l6ZSAxIDUyIDEwNCBta2ZzIDIgZmF0MTZ9CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50IE9w5/VlcyAoY29tbyBAa2Jkey0taGVscH0pIHPzIHBvZGVtIHNlciBlc3BlY2lmaWNhZGFzIG5hCmxpbmhhIGRlIGNvbWFuZG8uCgpObyBtb2RvIGludGVyYXRpdm8sIG9zIGNvbWFuZG9zIHPjbyBpbnNlcmlkb3MgdW0gZGUgY2FkYSB2ZXogbnVtIHByb21wdCwKZSB2b2PqIG1vZGlmaWNhIG8gZGlzY28gaW1lZGlhdGFtZW50ZS4gUG9yIGV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3Jlc2l6ZSAxIDUyLjAwMDUgMTA0LjV9CihwYXJ0ZWQpIEBrYmR7bWtmcyAyIGZhdDE2fQpAZW5kIGV4YW1wbGUKCkBjIFJNSyBNQVJLCgpAbm9pbmRlbnQgQWJyZXZpYef1ZXMgbuNvLWFtYu1ndWFzIHPjbyBwZXJtaXRpZGFzLiBQb3IgZXhlbXBsbywgdm9j6iBwb2RlCmRpZ2l0YXIgYGBwJycgYW8gaW526XMgZGUgYGBwcmludCcnLCBlIGBgcmUnJyBhbyBpbnbpcyBkZSBgYHJlc2l6ZScnLgpDb21hbmRvcyBwb2RlbSBzZXIgZGlnaXRhZG9zLCB0YW50byBlbSBpbmds6nMsIG91IGVtIHBvcnR1Z3Xqcy4gSXN0bwpwb2RlIGNyaWFyIGFtYmlndWlkYWRlcy4KClRhbWLpbSBwZXJjZWJhIHF1ZSB2b2PqIHBvZGUgc3BlY2lmaWNhciBjYXNhcyBkZWNpbWFpcyBub3MgbvptZXJvcwpjb3JyZXNwb25kZW50ZXMgKGVtIG1lZ2FieXRlcykuIE76bWVyb3MgbmVnYXRpdm9zIHPjbyBjb250YWRvcyBhIHBhcnRpcgpkbyBmaW5hbCBkbyBkaXNjbywgY29tICItMCIgc2VuZG8gbyBmaW5hbCBkbyBkaXNjby4KClNlIHZvY+ogbuNvIGRlciB1bSBwYXJhbep0cm8gcGFyYSB1bSBjb21hbmRvLCBvIFBhcnRlZCB2YWkgcGVyZ3VudGFyIHBhcmEKdm9j6i4gUG9yIGV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3Jlc2l6ZSAxfQpTdGFydD8gQGtiZHswfQpFbmQ/IEBrYmR7NDAwfQpAZW5kIGV4YW1wbGUKCk8gUGFydGVkIHNlbXByZSB2YWkgYXZpc2FyIHZvY+ogYW50ZXMgZGUgZmF6ZXIgYWxnbyBxdWUg6SBwb3RlbmNpYWxtZW50ZQpwZXJpZ29zbywgYSBu428gc2VyIHF1ZSBhbGdvIHNlamEgYWxnbyBvYnZpYW1lbnRlIHBlcmlnb3NvIChwb3IgZXhlbXBsbzoKcm0sIG1rbGFiZWwsIG1rZnMpLiBQb3IgZXhlbXBsbywgc2Ugdm9j6iB0ZW50YSBkaW1pbnVpciBgYG11aXRvJycgdW1hCnBhcnRp5+NvIChwb3IgZXhlbXBsbywgbWVub3MgcXVlIG8gZXNwYedvIGRpc3Bvbu12ZWwpLCBvIFBhcnRlZCB2YWkKYXV0b21hdGljYW1lbnRlIHJlZGltZW5zaW9uYXIgcGFyYSBvIG3tbmltbyBxdWUgZWxlIHBvZGUgZmF6ZXIgc2VtIHBlcmRlcgpkYWRvcy4gU2UgZXN0ZSBt7W5pbW8g6SBtdWl0byBkaWZlcmVudGUgZG8gcXVlIHZvY+ogcGVkaXUsIGVsZSB2YWkgYXZpc2FyCnF1ZSB2YWkgZmF6ZXIgdW1hIGNvaXNhIHNpZ25pZmljYW50ZW1lbnRlIGRpZmVyZW50ZSBkbyBxdWUgdm9j6iBwZWRpdS4KUG9yIGNhdXNhIGRvcyBzaXN0ZW1hcyBkZSBwYXJ0aWNpb25hbWVudG8gdGVyZW0gcmVzdHJp5/VlcyBjb21wbGljYWRhcywKbyBQYXJ0ZWQgZ2VyYWxtZW50ZSB2YWkgZmF6ZXIgYWxnbyBkaWZlcmVudGUgZG8gcXVlIHZvY+ogcGVkaXUgKFBvcgpleGVtcGxvLCBjcmlhciB1bSBwYXJ0aWNpb25hbWVudG8gY29tZedhbmRvIGVtIDEwLjM1MiwgZSBu428gMTAuNCkuCgpAbm9kZSBDaGFtYW5kbyBvIFBhcnRlZApAc2VjdGlvbiBPcOf1ZXMgZGUgTGluaGEgZGUgQ29tYW5kbwpAY2luZGV4IG9w5/VlcyBuYSBjaGFtYWRhCkBjaW5kZXggY29tYW5kb3MsIG92ZXJ2aWV3CkBjaW5kZXggb3Dn9WVzIG5hIGNoYW1hZGEKClF1YW5kbyBjaGFtYWRvIG5hIGxpbmhhIGRlIGNvbWFuZG8sIG8gcGFydGVkIHN1cG9ydGEgYSBzZWd1aW50ZSBzaW50YXhlOgoKQGV4YW1wbGUKIyBAa2Jke3BhcnRlZCBbQHZhcntvcOfjb31dIEB2YXJ7ZGlzcG9zaXRpdm99IFtAdmFye2NvbWFuZG99IFtAdmFye2FyZ3VtZW50b31dXX0KQGVuZCBleGFtcGxlCgpBcyBzZWd1aW50ZXMgb3Dn9WVzIGUgY29tYW5kb3MgZXN0428gZGlzcG9u7XZlaXMuIFBhcmEgZXhwbGljYef1ZXMKZGV0YWxoYWRhcyBkbyB1c28gZG9zIGNvbWFuZG9zIGRvIHBhcnRlZCwgdmVqYSBAcmVme0NvbW1hbmQgZXhwbGFuYXRpb25zfS4KT3Dn9WVzIGNvbWXnYW0gY29tIHVtIGjtZmVuLCBlIGNvbWFuZG9zIG7jbzoKCk9w5/VlcwoKQHRhYmxlIEBzYW1wCkBpdGVtIC1oCkBpdGVteCAtLWhlbHAKbW9zdHJhIHVtYSBtZW5zYWdlbSBkZSBhanVkYQoKQGl0ZW0gLWkKQGl0ZW14IC0taW50ZXJhY3RpdmUKcXVhbmRvIG5lY2Vzc+FyaW8sIHBlZGUgYW8gdXN14XJpbyBwb3IgaW50ZXJ2ZW7n428KCkBpdGVtIC1zCkBpdGVteCAtLXNjcmlwdApudW5jYSBwZWRlIHBlbGEgaW50ZXJ2ZW7n428gZG8gdXN14XJpbwoKQGl0ZW0gLXYKQGl0ZW14IC0tdmVyc2lvbgptb3N0cmEgYSB2ZXJz428KZGlzcGxheSB0aGUgdmVzaW9uCkBlbmQgdGFibGUKCkBub2RlIEV4cGxpY2Hn428gZG9zIGNvbWFuZG9zCkBzZWN0aW9uIENvbWFuZG9zIGRlIFNlc3PjbyBubyBQYXJ0ZWQKQGNpbmRleCBzaW50YXhlIGRvcyBjb21hbmRvcwpAY2luZGV4IGxpc3RhZ2VtIGRldGFsaGFkYSBkb3MgY29tYW5kb3MKQGNpbmRleCBjb21hbmRvcywgbGlzdGEgZGV0YWxoYWRhCgpPIEdOVSBQYXJ0ZWQgbm9zIGThIG9zIHNlZ3VpbnRlcyBjb21hbmRvczoKCkBtZW51CiogY2hlY2s6OgoqIGNwOjoKKiBoZWxwOjoKKiBta2xhYmVsOjoKKiBta2ZzOjoKKiBta3BhcnQ6OgoqIG1rcGFydGZzOjoKKiBtb3ZlOjoKKiBuYW1lOjoKKiBwcmludDo6CiogcXVpdDo6CiogcmVzY3VlOjoKKiByZXNpemU6OgoqIHJtOjoKKiBzZWxlY3Q6OgoqIHNldDo6CkBlbmQgbWVudQoKQG5vZGUgY2hlY2sKQHN1YnNlY3Rpb24gY2hlY2sKQGNpbmRleCBjaGVjaywgZGVzY3Jp5+NvIGRvIGNvbWFuZG8KQGNpbmRleCBkZXNjcmnn428gZG8gY29tYW5kbywgY2hlY2sKCkBkZWZmbiBDb21hbmRvIGNoZWNrIEB2YXJ7bWlub3J9CgpDaGVjYSBzZSBvIHNpc3RlbWFzIGRlIGFycXVpdm8gbmEgcGFydGnn428gQHZhcnttaW5vcn0KdGVtIGFsZ3VtIGVycm8uCgpFeGVtcGxvOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtjaGVjayAxfQpAZW5kIGV4YW1wbGUKCkNoZWNhIG8gc2lzdGVtYSBuYSBwYXJ0aefjbyAxLgpAZW5kIGRlZmZuCgpAbm9kZSBjcApAc3Vic2VjdGlvbiBjcApAY2luZGV4IGNwLCBkZXNjcmnn428gZG8gY29tYW5kbwpAY2luZGV4IGRlc2NyaefjbyBkbyBjb21hbmRvLCBjcAoKQGRlZmZuIENvbWFuZG8gY3AgW0B2YXJ7cXVhbC1kaXNwb3NpdGl2b31dIEB2YXJ7ZnJvbS1taW5vcn0gQHZhcnt0by1taW5vcn0KCkNvcGlhIG8gc2lzdGVtYXMgZGUgYXJxdWl2byBuYSBwYXJ0aefjbyBAdmFye2Zyb20tbWlub3J9IHBhcmEgYSBwYXJ0aefjbwpAdmFye3RvLW1pbm9yfSwgYXBhZ2FuZG8gbyBjb250ZfpkbyBvcmlnaW5hbCBkYSBwYXJ0aefjbyBkZSBkZXN0aW5vLgoKVW0gcGFy4m1ldHJvIG9wY2lvbmFsIHBvZGUgc2VyIGRhZG8sIEB2YXJ7cXVhbC1kaXNwb3NpdGl2b30sIHF1ZQplc3BlY2lmaWNhIGRlIHF1YWwgZGlzcG9zaXRpdm8gYSBwYXJ0aefjbyBkZSBvcmlnZW0g6S4KClNpc3RlbWFzIGRlIGFycXVpdm8gc3Vwb3J0YWRvcwpAaXRlbWl6ZQpAaXRlbSBleHQyLCBleHQzCihkZXNkZSBxdWUgYSBwYXJ0aefjbyBkZSBkZXN0aW5vIOkgbWFpb3IgcXVlIGEgcGFydGnn428gZGUgb3JpZ2VtKQoKQGl0ZW0gZmF0MTYsIGZhdDMyCkBpdGVtIGxpbnV4LXN3YXAJCihlcXVpdmFsZW50ZSBhbyBta3N3YXAgbmEgcGFydGnn428gZGUgZGVzdGlubykKQGl0ZW0gcmVpc2VyZnMgKHNlIGEgbGlicmVpc2VyZnMgZXN04SBpbnN0YWxhZGEpCgpAZW5kIGl0ZW1pemUKCkV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke2NwIC9kZXYvaGRiIDIgM30KQGVuZCBleGFtcGxlCgpAYyBGSVhNRTogdGhpcyBkb2Vzbid0IGZvcm1hdCByaWdodC4KCkNvcGlhIGEgcGFydGnn428gMiBkbyBAZmlsZXsvZGV2L2hkYn0gKHBvciBleGVtcGxvLCBAZmlsZXsvZGV2L2hkYjJ9KQpwYXJhIGEgcGFydGnn428gZW0gMywgbm8gZGlzcG9zaXRpdm8gYW9uZGUgbyBQYXJ0ZWQgZm9pIGNhcnJlZ2FkbywKZGVzdHJ1aW5kbyBvIGNvbnRl+mRvIG9yaWdpbmFsIGRhIHBhcnRp5+NvIDMuCkBlbmQgZGVmZm4KCkBub2RlIGhlbHAKQHN1YnNlY3Rpb24gaGVscApAY2luZGV4IGhlbHAsIGRlc2NyaefjbyBkbyBjb21hbmRvCkBjaW5kZXggZGVzY3Jp5+NvIGRvIGNvbWFuZG8sIGhlbHAKCkBkZWZmbiBDb21hbmRvIGhlbHAgW0B2YXJ7Y29tYW5kb31dCgpNb3N0cmEgYSBhanVkYSBnZXJhbCwgb3UgYSBhanVkYSBubyBAdmFye2NvbWFuZG99LgoKRXhlbXBsbzoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7aGVscCByZXNpemV9CkBlbmQgZXhhbXBsZQoKTW9zdHJhIGEgYWp1ZGEgcGFyYSBvIGNvbWFuZG8gcmVzaXplLgpAZW5kIGRlZmZuCgpAbm9kZSBta2xhYmVsCkBzdWJzZWN0aW9uIG1rbGFiZWwKQGNpbmRleCBta2xhYmVsLCBkZXNjcmnn428gZG8gY29tYW5kbwpAY2luZGV4IGRlc2NyaefjbyBkbyBjb21hbmRvLCBta2luZGV4CgpAZGVmZm4gQ29tYW5kbyBta2xhYmVsIEB2YXJ7dGlwby1kZS1ldGlxdWV0YX0KCkNyaWEgdW1hIG5vdmEgZXRpcXVldGEgZGUgZGlzY28sIGRvIHRpcG8gQHZhcnt0aXBvLWRlLWV0aXF1ZXRhfS4gQSBub3ZhCmV0aXF1ZXRhIGRlIGRpc2NvIG7jbyB2YWkgdGVyIHBhcnRp5/Vlcy4gRXN0ZSBjb21hbmRvIChub3JtYWxtZW50ZSkgbuNvCnZhaSB0ZWNuaWNhbWVudGUgZGVzdHJ1aXIgc2V1cyBkYWRvcywgbWFzIHZhaSBmYXrqLWxvcyBpbnV0aWxpeuF2ZWlzLAplIHZvY+ogdmFpIHByZWNpc2FyIHVzYXIgbyBjb21hbmRvIHJlc2N1ZSAoQHB4cmVme1NvZnR3YXJlcyBSZWxhY2lvbmFkb3N9KQpwYXJhIHJlY3VwZXJhciBxdWFscXVlciBwYXJ0aefjby4gR3BhcnQgc/MgdHJhYmFsaGEgY29tIGV0aXF1ZXRhcyBkZQpkaXNjbyBkbyBtc2RvcyAoQUZBSUspLCBtYXMg6SBtdWl0byBtZWxob3IgcXVlIG8gcGFydGVkIHBhcmEgcmVjdXBlcmFyCnBhcnRp5/Vlcy4gTyBQYXJ0ZWQgZnVuY2lvbmEgZW0gdG9kYXMgYXMgdGFiZWxhcyBkZSBwYXJ0aefjby4KQGZvb3Rub3Rle1RvZG8gbXVuZG8gcGFyZWNlIHRlciBkaWZlcmVudGVzIHBhbGF2cmFzIHBhcmEgYGBldGlxdWV0YQpkZSBkaXNjbycnIC0tLSB0b2RhcyBlc3NhcyBwYWxhdnJhcyBzaWduaWZpY2FtIGEgbWVzbWEgY29pc2E6IHRhYmVsYQpkZSBwYXJ0aef1ZXMsIG1hcGEgZGFzIHBhcnRp5/Vlcy4gVGFtYultIG8gUmVnaXN0cm8gTWVzdHJlIGRvIEJvb3QgZW0KbeFxdWluYXMgeDg2IOkgZ3VhcmRhZG8gbm8gbWVzbW8gc2V0b3IgZGFzIFRhYmVsYXMgZGUgUGFydGnn428gKHZvY+oKbuNvIHByZWNpc2Egc2FiZXIgZGlzc28gcGFyYSB1c2FyIG8gUGFydGVkKS59CgpAdmFye3RpcG8tZGUtZXRpcXVldGF9IGRldmUgc2VyIGRlIHVtIGRlc3NlcyB0aXBvcyBkZSB0YWJlbGFzIGRlIHBhcnRp5+NvIHN1cG9ydGFkb3M6CkBpdGVtaXplCkBpdGVtIGJzZApAaXRlbSBsb29wIChhY2Vzc28gYnJ1dG8gYW8gZGlzY28pCkBpdGVtIGdwdApAaXRlbSBtYWMKQGl0ZW0gbXNkb3MKQGl0ZW0gcGM5OApAaXRlbSBzdW4KQGVuZCBpdGVtaXplCgpFeGVtcGxvOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtta2xhYmVsIG1zZG9zfQpAZW5kIGV4YW1wbGUKCkNyaWEgdW1hIGV0aXF1ZXRhIGRlIGRpc2NvIGFvIGVzdGlsbyBtc2Rvcy4KQGVuZCBkZWZmbgoKQG5vZGUgbWtmcwpAc3Vic2VjdGlvbiBta2ZzCkBjaW5kZXggbWtmcywgZGVzY3Jp5+NvIGRvIGNvbWFuZG8KQGNpbmRleCBkZXNjcmnn428gZG8gY29tYW5kbywgbWtmcwoKQGRlZmZuIENvbW1hbmQgbWtmcyBAdmFye21pbm9yfSBAdmFye3RpcG8tZGUtc2lzdGVtYS1kZS1hcnF1aXZvfQoKRmF6IHVtIHNpc3RlbWFzIGRlIGFycXVpdm8gQHZhcnt0aXBvLWRlLXNpc3RlbWEtZGUtYXJxdWl2b30gbmEgcGFydGnn428KQHZhcnttaW5vcn0sIGRlc3RydWluZG8gdG9kb3Mgb3MgZGFkb3MgcXVlIHJlc2lkZW0gbmFxdWVsYSBwYXJ0aefjby4KClRpcG9zIGRlIGFycXVpdm8gc3Vwb3J0YWRvczoKQGl0ZW1pemUKQGl0ZW0gZXh0MgpAaXRlbSBtaXBzCkBpdGVtIGZhdDE2CkBpdGVtIGZhdDMyCkBpdGVtIGxpbnV4LXN3YXAKQGl0ZW0gcmVpc2VyZnMgKHNlIGEgbGlicmVpc2VyZnMgZXN0aXZlciBpbnN0YWxhZGEpCkBlbmQgaXRlbWl6ZQoKRXhlbXBsbzoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7bWtmcyAyIGZhdDMyfQpAZW5kIGV4YW1wbGUKCkZheiB1bSBzaXN0ZW1hcyBkZSBhcnF1aXZvIEB2YXJ7ZmF0MzJ9IG5hIHBhcnRp5+NvIDIuCkBlbmQgZGVmZm4KCkBub2RlIG1rcGFydApAc3Vic2VjdGlvbiBta3BhcnQKQGNpbmRleCBta3BhcnQsIGRlc2NyaefjbyBkbyBjb21hbmRvCkBjaW5kZXggZGVzY3Jp5+NvIGRvIGNvbWFuZG8sIG1rcGFydAoKQGRlZmZuIENvbWFuZG8gbWtwYXJ0IEB2YXJ7dGlwby1kZS1wYXJ0aefjb30gW0B2YXJ7dGlwby1kZS1zaXN0ZW1hcy1kZS1hcnF1aXZvfV0gQHZhcntjb21l5299IEB2YXJ7ZmltfQoKQ3JpYSB1bWEgbm92YSBwYXJ0aefjbywgQGVtcGh7c2VtfSBjcmlhciB1bSBub3ZvIHNpc3RlbWFzIGRlIGFycXVpdm8KbmEgcGFydGnn428uIEVsYSDpIPp0aWwgcGFyYSBjcmlhciBwYXJ0aef1ZXMgcGFyYSBzaXN0ZW1hcyBkZSBhcnF1aXZvCihvdSBMVk0sIGV0Yy4pIHF1ZSBvIFBhcnRlZCBu428gc3Vwb3J0YS4gVm9j6iBwb2RlIGVzcGVjaWZpY2FyIHRpcG8KZGUgc2lzdGVtYXMgZGUgYXJxdWl2bywgcGFyYSBkZWZpbmlyIG8gY/NkaWdvIGRlIHBhcnRp5+NvIGFwcm9wcmlhZG8KbmEgdGFiZWxhIGRlIHBhcnRp5/VlcyBwYXJhIGEgbm92YSBwYXJ0aefjby4gQHZhcnt0aXBvLWRlLXNpc3RlbWFzLWRlLWFycXVpdm99CukgbmVjZXNz4XJpbyBwYXJhIHBhcnRp5/VlcyBkZSBkYWRvcyAocG9yIGV4ZW1wbG8sIHBhcnRp5/VlcyBu428tCmV4dGVuZGlkYXMpLiBAdmFye2NvbWXnb30gZSBAdmFye2ZpbX0gc+NvIGEgZGlzdOJuY2lhIGRvIGNvbWXnbyBkbwpkaWRjbywgaXN0byDpLCBhIGBgZGlzdOJuY2lhJycgZG8gY29tZedvIGRvIGRpc2NvLiAKCkB2YXJ7dGlwby1kZS1wYXJ0aefjb30g6SB1bWEgZGVzc2FzOiBwcmltYXJ5IChwcmlt4XJpYSksIGV4dGVuZGVkCihleHRlbmRpZGEpLCBsb2dpY2FsIChs82dpY2EpLiBFeHRlbmRpZGEgZSBs82dpY2Egc29tZW50ZSBz428gdXNhZGFzCnBhcmEgdGFiZWxhcyBkZSBwYXJ0aefjbyBkbyB0aXBvIG1zZG9zIGUgbWlwcy4KCkB2YXJ7dGlwby1kZS1zaXN0ZW1hcy1kZS1hcnF1aXZvfSBkZXZlIHNlciB1bSBkb3Mgc3Vwb3J0YWRvczoKQGl0ZW1pemUKQGl0ZW0gZXh0MgpAaXRlbSBmYXQzMgpAaXRlbSBmYXQxNgpAaXRlbSBIRlMKQGl0ZW0gbGludXgtc3dhcApAaXRlbSBOVEZTCkBpdGVtIHJlaXNlcmZzCkBpdGVtIHVmcwpAZW5kIGl0ZW1pemUKCkV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke21rcGFydCBsb2dpY2FsIDAuMCA2OTIuMX0KQGVuZCBleGFtcGxlCgpDcmlhIHVtYSBwYXJ0aefjbyBs82dpY2EgcXVlIHZhaSBjb250ZXIgdW0gc2lzdGVtYXMgZGUgYXJxdWl2byBleHQyLgpBIHBhcnRp5+NvIHZhaSBjb21l52FyIG5vIGNvbWXnbyBkbyBkaXNjbywgZSBmaW5hbGl6YXIgZW0gNjkyLjEKbWVnYWJ5dGVzIG5hcXVlbGUgZGlzY28uCgpAZW5kIGRlZmZuCgpAbm9kZSBta3BhcnRmcwpAc3Vic2VjdGlvbiBta3BhcnRmcwpAY2luZGV4IG1rcGFydGZzLCBkZXNjcmnn428gZG8gY29tYW5kbwpAY2luZGV4IGRlc2NyaefjbyBkbyBjb21hbmRvLCBta3BhcnRmcwoKQGRlZmZuIENvbWFuZG8gbWtwYXJ0ZnMgQHZhcnt0aXBvLWRlLXBhcnRp5+NvfSBAdmFye3RpcG8tZGUtc2lzdGVtYXMtZGUtYXJxdWl2b3N9IEB2YXJ7Y29tZedvfSBAdmFye2ZpbX0KCkNyaWEgdW1hIG5vdmEgcGFydGnn428gZG8gdGlwbyBAdmFye3RpcG8tZGUtcGFydGnn4299IGNvbSB1bSBub3ZvCnNpc3RlbWFzIGRlIGFycXVpdm8gZG8gdGlwbyBAdmFye3RpcG8tZGUtc2lzdGVtYXMtZGUtYXJxdWl2b30gbmVsZS4KYSBub3ZhIHBhcnRp5+NvIHZhaSBjb21l52FyIGVtIEB2YXJ7Y29tZedvfSBtZWdhYnl0ZXMsIGUgdGVtIGZpbSBlbQpAdmFye2ZpbX0gbWVnYWJ5dGVzIGRvIGNvbWXnbyBkbyBkaXNjby4KTuNvIHVzZSBlc3NlIGNvbWFuZG8gcGFyYSByZWN1cGVyYXIgdW1hIHBhcnRp5+NvICh1c2UgbWtwYXJ0IGFvIGludulzCmRpc3NvKS4KCkB2YXJ7dGlwby1kZS1wYXJ0aefjb30g6SB1bWEgZGVzc2FzOiBwcmltYXJ5IChwcmlt4XJpYSksIGV4dGVuZGVkCihleHRlbmRpZGEpLCBsb2dpY2FsIChs82dpY2EpLiBFeHRlbmRpZGEgZSBs82dpY2Egc+NvIHNvbWVudGUgdXNhZGFzCnBvciB0YWJlbGFzIGRlIHBhcnRp5+NvIGRvIHRpcG8gbXNkb3MgZSBtaXBzLgoKQHZhcnt0aXBvLWRlLXNpc3RlbWFzLWRlLWFycXVpdm99IGRldmUgc2VyIHVtIGRvcyBzZWd1aW50ZXMgc3Vwb3J0YWRvczoKQGl0ZW1pemUKQGl0ZW0gZXh0MgpAaXRlbSBmYXQzMgpAaXRlbSBmYXQxNgpAaXRlbSBsaW51eC1zd2FwCkBpdGVtIHJlaXNlcmZzIChzZSBhIGxpYnJlaXNlcmZzIGVzdOEgaW5zdGFsYWRhKQpAZW5kIGl0ZW1pemUKCkV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke21rcGFydGZzIGxvZ2ljYWwgZXh0MiA0NDAgNjcwfQpAZW5kIGV4YW1wbGUKCkNyaWEgdW1hIHBhcnRp5+NvIGzzZ2ljYSBlIGNvbG9jYSB1bSBzaXN0ZW1hcyBkZSBhcnF1aXZvIGRvIHRpcG8KZXh0MiwgY29tZedhbmRvIGVtIDQ0MCBtZWdhYnl0ZXMgZSBmaW5hbGl6YW5kbyBlbSA2NzAgbWVnYWJ5dGVzCmRvIGNvbWXnbyBkbyBkaXNjby4KQGVuZCBkZWZmbgoKQG5vZGUgbW92ZQpAc3Vic2VjdGlvbiBtb3ZlCkBjaW5kZXggbW92ZSwgZGVzY3Jp5+NvIGRvIGNvbWFuZG8KQGNpbmRleCBkZXNjcmnn428gZG8gY29tYW5kbywgbW92ZQoKQGRlZmZuIENvbWFuZG8gbW92ZSBAdmFye21pbm9yfSBAdmFye2NvbWXnb30gW0B2YXJ7ZmltfV0KCk1vdmUgYSBwYXJ0aefjbyBubyBkaXNjbywgbW92ZW5kbyBzZXUgY29tZedvIHBhcmEgQHZhcntjb21l5299LgpOb3RhOiBtb3ZlciBudW5jYSBtdWRhIG8gbvptZXJvIGRvIG1pbm9yLgoKU2UgbmVuaHVtIEB2YXJ7ZmltfSDpIGRhZG8sIG8gdGFtYW5obyBkYSBwYXJ0aefjbyBwZXJtYW5lY2UgbyBtZXNtby4KClNpc3RlbWFzIGRlIGFycXVpdm8gc3Vwb3J0YWRvczoKQGl0ZW1pemUKQGl0ZW0gZXh0MiwgZXh0MwooZGVzZGUgcXVlIGEgcGFydGnn428gZGUgZGVzdGlubyDpIG1haW9yIHF1ZSBhIHBhcnRp5+NvIGRlIG9yaWdlbSkKQGl0ZW0gZmF0MzIKQGl0ZW0gZmF0MTYKQGl0ZW0gbGludXgtc3dhcApAaXRlbSByZWlzZXJmcyAoc2UgYSBsaWJyZWlzZXJmcyBlc3ThIGluc3RhbGFkYSkKQGVuZCBpdGVtaXplCgpFeGVtcGxvOgoKQGV4YW1wbGUKKHBhcnRlZCkgbW92ZSAyIDE1MApAZW5kIGV4YW1wbGUKCk1vdmUgYSBwYXJ0aefjbyBjb20gbyBtaW5vciBu+m1lcm8gMiBwYXJhIHF1ZSBlbGEgY29tZWNlIDE1MCBtZWdhYnl0ZXMKZG8gaW7tY2lvIGRvIGRpc2NvLgoKQGVuZCBkZWZmbgoKQG5vZGUgbmFtZQpAc3Vic2VjdGlvbiBuYW1lCkBjaW5kZXggbmFtZSwgZGVzY3Jp5+NvIGRvIGNvbWFuZG8KQGNpbmRleCBkZXNjcmnn428gZG8gY29tYW5kbywgbmFtZQoKQGRlZmZuIENvbWFuZG8gbmFtZSBAdmFye21pbm9yfSBAdmFye25vbWV9CgpEZWZpbmUgdW0gbm9tZSBwYXJhIGEgcGFydGnn428gQHZhcnttaW5vcn0gKE1hYyBlIFBDOTggc29tZW50ZSkuIE8Kbm9tZSBwb2RlciBzZXIgY29sb2NhZG8gZW50cmUgYXNwYXMuCgpFeGVtcGxvOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtuYW1lIDIgJ1NlY3JldG8nfQpAZW5kIGV4YW1wbGUKCkRlZmluZSBvIG5vbWUgZGEgcGFydGnn428gMiBwYXJhIGBTZWNyZXRvJy4KQGVuZCBkZWZmbgoKQG5vZGUgcHJpbnQKQHN1YnNlY3Rpb24gcHJpbnQKQGNpbmRleCBwcmludCwgZGVzY3Jp5+NvIGRvIGNvbWFuZG8KQGNpbmRleCBkZXNjcmnn428gZG8gY29tYW5kbywgcHJpbnQKCkBkZWZmbiBDb21hbmRvIHByaW50CgpNb3N0cmEgYSB0YWJlbGEgZGUgcGFydGnn9WVzIHF1ZSBvIHBhcnRlZCBlc3ThIGVkaXRhbmRvLgoKRXhlbXBsbzoKCkBleGFtcGxlCkBncm91cAoocGFydGVkKSBAa2Jke3ByaW50fQpEaXNrIGdlb21ldHJ5IGZvciAvZGV2L2hkYTogMC4wMDAtMjQ0NS42NzkgbWVnYWJ5dGVzCkRpc2sgbGFiZWwgdHlwZTogbXNkb3MKTWlub3IgICAgU3RhcnQgICAgICAgRW5kICAgICBUeXBlICAgICAgRmlsZXN5c3RlbSAgRmxhZ3MKMSAgICAgICAgICAwLjAzMSAgICA5NDUuMDAwICBwcmltYXJ5ICAgRkFUICAgICAgICAgYm9vdCwgbGJhCjIgICAgICAgIDk0NS4wMDAgICAyMzU4LjU2MiAgcHJpbWFyeSAgIGV4dDIKMyAgICAgICAyMzU4LjU2MiAgIDI0NDUuMTg3ICBwcmltYXJ5ICAgbGludXgtc3dhcApAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQpAZW5kIGRlZmZuCgpAbm9kZSBxdWl0CkBzdWJzZWN0aW9uIHF1aXQKQGNpbmRleCBxdWl0LCBkZXNjcmnn428gZG8gY29tYW5kbwpAY2luZGV4IGRlc2NyaefjbyBkbyBjb21hbmRvLCBxdWl0CgpAZGVmZm4gQ29tYW5kbyBxdWl0CgpTYWkgZG8gUGFydGVkLgoKQGMgUk1LOiBnZW5lcmFsaXR5OiB0aGUgZm9sbG93aW5nIHdpbGwgYXBwbHkgdG8gYW55IG9wZXJhdGluZyBzeXN0ZW0gb24KQGMgd2hpY2ggcGFydGVkIHdpbGwgcnVuLCBub3Qgb25seSBMaW51eC1iYXNlZCBvbmVzLgpAYyBjbGF1c2VuOiB5ZWFoLi4uIGp1c3QgdGhhdCB0aGUgd2F5IGh1cmQgYW5kIGxpbnV4IHdvcmsgYXJlIHRvdGFsbHkKQGMgZGlmZmVyZW50LCBhbmQgaXQncyBhY3R1YWxseSB2ZXJ5IGhhcmQgdG8gc3BlYWsgaW4gZ2VuZXJhbC4gIE5lZWQgdG8KQGMgZGlzY3VzcyB0aGlzIG1vcmUKySBzb21lbnRlIGRlcG9pcyBxdWUgbyBQYXJ0ZWQgc2FpIHF1ZSBvIGtlcm5lbCBkbyBMaW51eCBmaWNhIHNhYmVuZG8KZGFzIG11ZGFu52FzIHF1ZSBvIFBhcnRlZCBmZXogbm9zIGRpc2Nvcy4gQ29udHVkbywgYXMgbXVkYW7nYXMgY2F1c2FkYXMKcXVhbmRvIHZvY+ogZGlnaXRhIHVtIGNvbWFuZG8gdmFpIEBlbXBoe3Byb3ZhdmVsbWVudGV9IHNlcmVtIGZlaXRhcyBwYXJhCm8gZGlzY28gaW1lZGlhdGFtZW50ZSBhcPNzIGRpZ2l0YXIgdW0gY29tYW5kby4gTWFzLCBMaW51eCDpIGNhY2hlLCBlIG8KY2FjaGUgZG8gaGFyZHdhcmUgZG8gZGlzY28gcG9kZSBwb3IgdW1hIGRlbW9yYSBuaXNzby4KQGVuZCBkZWZmbgoKQG5vZGUgcmVzY3VlCkBzdWJzZWN0aW9uIHJlc2N1ZQpAY2luZGV4IHJlc2N1ZSwgZGVzY3Jp5+NvIGRvIGNvbWFuZG8KQGNpbmRleCBkZXNjcmnn428gZG8gY29tYW5kbywgcmVzY3VlCgpAZGVmZm4gQ29tYW5kbyByZXNjdWUgQHZhcntjb21l5299IEB2YXJ7ZmltfQpyZXNnYXRhIHBhcnRp5/VlcyBwZXJkaWRhcyBlbnRyZSBAdmFye2NvbWXnb30gZSBAdmFye2ZpbX0KUHJvY3VyYSBlbnRyZSBAdmFye2NvbWXnb30gZSBAdmFye2ZpbX0gcG9yIGFzc2luYXR1cmFzIGRlIHNpc3RlbWFzIGRlCmFycXVpdm8uIFNlIGFsZ3VtYSDpIGVuY29udHJhZGEsIGVsZSB2YWkgcGVyZ3VudGFyIHNlIHZvY+ogcXVlciBjcmlhcgp1bWEgcGFydGnn428gcHJhIGVsZS4gSXN0byDpIPp0aWwgcXVhbmRvIHZvY+ogYWNpZGVudGFsbWVudGUgYXBhZ291IHVtYQpwYXJ0aefjbyBjb20gbyBjb21hbmRvIHJtIGRvIHBhcnRlZCwgcG9yIGV4ZW1wbG8uCgpJbmZlbGl6bWVudGUgbuNvIGjhIHVtYSBiYXJyYSBkZSBwcm9ncmVzc28sIHBvcnF1ZSDpIGRpZu1jaWwgKHVtYQpwb3Nz7XZlbCBjb3JyZefjbyEpIHBhcmEgZGl6ZXIgcXVhbnRvIHZhaSBkZW1vcmFyLiBTZSBvIFBhcnRlZCBu428gYWNoYQpuYWRhLCBlbGUgdmFpIGRlbW9yYXIgbXVpdG8gdGVtcG8gcHJvY3VyYW5kbyAobyBxdWUg6SB1bSBidWcgcXVlIGRldmUKc2VyIGNvcnJpZ2lkbykuIE5vIGVudGFudG8sIG5vIGV4ZW1wbG8gYWJhaXhvLCBhIHBhcnRp5+NvIOkKaW5zdGFudGFuZWFtZW50ZSByZWN1cGVyYWRhLgoKRXhlbXBsbzoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7cHJpbnR9CkBncm91cApEaXNrIGdlb21ldHJ5IGZvciAvZGV2L2hkYzogMC4wMDAtODA2My41MDcgbWVnYWJ5dGVzCkRpc2sgbGFiZWwgdHlwZTogbXNkb3MKTWlub3IgICAgU3RhcnQgICAgICAgRW5kICAgICBUeXBlICAgICAgRmlsZXN5c3RlbSAgRmxhZ3MKMSAgICAgICAgICAwLjAzMSAgIDgwNTYuMDMyICBwcmltYXJ5ICAgZXh0MwpAZW5kIGdyb3VwCihwYXJ0ZWQpIEBrYmR7cm19ClBhcnRpdGlvbiBudW1iZXI/IDEKKHBhcnRlZCkgQGtiZHtwcmludH0KQGdyb3VwCkRpc2sgZ2VvbWV0cnkgZm9yIC9kZXYvaGRjOiAwLjAwMC04MDYzLjUwNyBtZWdhYnl0ZXMKRGlzayBsYWJlbCB0eXBlOiBtc2RvcwpNaW5vciAgICBTdGFydCAgICAgICBFbmQgICAgIFR5cGUgICAgICBGaWxlc3lzdGVtICBGbGFncwpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKQUkhIE7zcyBkZWxldGFtb3MgYSBub3NzYSBwYXJ0aefjbyBleHQzISEhIFBhcnRlZCB2ZW0gcGFyYSBub3Mgc2FsdmFyLi4uCgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3Jlc2N1ZX0KU3RhcnQ/IDAuMDAwNT8KRW5kPyA4MDYzLjUwNzM/CkluZm9ybWF0aW9uOiBBIGV4dDMgcHJpbWFyeSBwYXJ0aXRpb24gd2FzIGZvdW5kIGF0IDAuMDMxTWIgLT4KODA1Ni4wMzBNYi4gIERvIHlvdSB3YW50IHRvIGFkZCBpdCB0byB0aGUgcGFydGl0aW9uIHRhYmxlPwpZZXMvTm8vQ2FuY2VsPyBAa2Jke3l9CihwYXJ0ZWQpIEBrYmR7cHJpbnR9CkBncm91cApEaXNrIGdlb21ldHJ5IGZvciAvZGV2L2hkYzogMC4wMDAtODA2My41MDcgbWVnYWJ5dGVzCkRpc2sgbGFiZWwgdHlwZTogbXNkb3MKTWlub3IgICAgU3RhcnQgICAgICAgRW5kICAgICBUeXBlICAgICAgRmlsZXN5c3RlbSAgRmxhZ3MKMSAgICAgICAgICAwLjAzMSAgIDgwNTYuMDMyICBwcmltYXJ5ICAgZXh0MwpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKRXN04SBkZSB2b2x0YSEgIDopCgpAZW5kIGRlZmZuCgpAbm9kZSByZXNpemUKQHN1YnNlY3Rpb24gcmVzaXplCkBjaW5kZXggcmVzaXplLCBkZXNjcmnn428gZG8gY29tYW5kbwpAY2luZGV4IGRlc2NyaefjbyBkbyBjb21hbmRvLCByZXNpemUKCkBkZWZmbiBDb21hbmRvIHJlc2l6ZSBAdmFye21pbm9yfSBAdmFye2NvbWXnb30gQHZhcntmaW19CgpSZWRpbWVuc2lvbmEgYSBwYXJ0aefjbyBjb20gbyBu+m1lcm8gQHZhcnttaW5vcn0uIEEgcGFydGnn428gdmFpIGNvbWXnYXIKZW0gQHZhcntjb21l5299IGRvIGNvbWXnbyBkbyBkaXNjbywgZSB0ZXJtaW5hciBlbSBAdmFye2ZpbX0gZG8gY29tZedvIGRvCmRpc2NvLiBPIHJlc2l6ZSBudW5jYSBtdWRhIG8gbvptZXJvIGRvIG1pbm9yLiBQYXJ0aef1ZXMgZXh0ZW5kaWRhcyBwb2RlbQpzZXIgcmVkaW1lbnNpb25hZGFzLCBkZXNkZSBxdWUgYSBub3ZhIHBhcnRp5+NvIGVudGVuZGlkYSBjb250ZW5oYQp0b2RhcyBhcyBwYXJ0aef1ZXMgbPNnaWNhcy4KCk5vdGUgcXVlIG8gUGFydGVkIG7jbyByZXF1ZXIgcXVlIHVtIHNpc3RlbWEgc2VqYSBgYGRlc2ZyYWdtZW50YWRvJycKKFBhcnRlZCBwb2RlIG1vdmVyIG9zIGRhZG9zIHNlZ3VyYW1lbnRlIHNlIG5lY2Vzc+FyaW8pLiDJIHVtYSBwZXJkYQpkZSB0ZW1wbyBkZXNmcmFtZW50YXIuIE7jbyBzZSBwcmVvY3VwZSEKClNpc3RlbWFzIGRlIGFycXVpdm8gc3Vwb3J0YWRvczoKQGl0ZW1pemUKQGl0ZW0gZXh0MiwgZXh0MyAtIHJlc3RyaefjbzogbyBub3ZvIEB2YXJ7Y29tZedvfSBkZXZlIHNlciBvIG1lc21vIGRvIGFudGlnbyBAdmFye2NvbWXnb30uCgpAaXRlbSBmYXQxNiwgZmF0MzIKCkBpdGVtIGxpbnV4LXN3YXAKQGl0ZW0gcmVpc2VyZnMgKHNlIGEgbGlicmVpc2VyZnMgZXN0aXZlciBpbnN0YWxhZGEpCkBlbmQgaXRlbWl6ZQoKRXhlbXBsbzoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7cmVzaXplIDMgMjAwIDg1MH0KQGVuZCBleGFtcGxlCgpSZWRpbWVuc2lvbmEgYSBwYXJ0aefjbyAzLCBwYXJhIHF1ZSBlbGEgY29tZedhIGVtIDIwMCBtZWdhYnl0ZXMKZSB0ZXJtaW5lIGVtIDg1MCBtZWdhYnl0ZXMgZG8gY29tZedvIGRvIGRpc2NvLgpAZW5kIGRlZmZuCgpAbm9kZSBybQpAc3Vic2VjdGlvbiBybQpAY2luZGV4IHJtLCBkZXNjcmnn428gZG8gY29tYW5kbwpAY2luZGV4IGRlc2NyaefjbyBkbyBjb21hbmRvLCBybQoKCkBkZWZmbiBDb21hbmRvIHJtIEB2YXJ7bWlub3J9CgpSZW1vdmUgYSBwYXJ0aefjbyBjb20gbvptZXJvIEB2YXJ7bWlub3J9LiBTZSB2b2PqIGFjaWRlbnRhbG1lbnRlIGFwYWdhcgphIHBhcnRp5+NvIGNvbSBlc3NlIGNvbWFuZG8sIHVzZSBvIG1rcGFydCAoQGVtcGh7buNvfSBvIG1rcGFydGZzKSBwYXJhCnJlY3VwZXLhLWxhLiBWb2PqIHRhbWLpbSBwb2RlIHVzYXIgbyBwcm9ncmFtYSBncGFydCAoQHB4cmVme1Byb2dyYW1hcwpSZWxhY2lvbmFkb3N9KSBwYXJhIHJlY3VwZXJhciB0YWJlbGFzIGRlIHBhcnRp5+NvIGRhbmlmaWNhZGFzLgoKTm90YSBwYXJhIHRhYmVsYXMgZGUgcGFydGnn428gZG8gdGlwbyBtc2Rvczogc2Ugdm9j6iBhcGFnYXIgdW1hIHBhcnRp5+NvCmzzZ2ljYSwgdG9kYXMgYXMgcGFydGnn9WVzIGzzZ2ljYXMgY29tIHVtIG76bWVybyBtYWlvciBxdWUgZXNzYSB2428gc2VyCmFwYWdhZG9zLiBQb3IgZXhlbXBsbywgc2Ugdm9j6iBhcGFnYXIgdW1hIHBhcnRp5+NvIGzzZ2ljYSBjb20gdW0gbvptZXJvCm1pbm9yIDYsIGVudONvIGFzIHBhcnRp5/VlcyBxdWUgZXJhbSBu+m1lcm8gNywgOCBlIDkgZGV2ZW0gc2VyIHJlbnVtZXJhZGFzCnBhcmEgNiwgNyBlIDggcmVzcGVjdGl2YW1lbnRlLiBJc3RvIHNpZ25pZmljYSBxdWUgdm9j6iBkZXZlIGF0dWFsaXphciBhCkBmaWxley9ldGMvZnN0YWJ9IGVtIHNpc3RlbWFzIEdOVS9MaW51eC4KCkV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3JtIDN9CkBlbmQgZXhhbXBsZQoKUmVtb3ZlIGEgcGFydGnn428gMy4KQGVuZCBkZWZmbgoKQG5vZGUgc2VsZWN0CkBzdWJzZWN0aW9uIHNlbGVjdApAY2luZGV4IHNlbGVjdCwgZGVzY3Jp5+NvIGRvIGNvbWFuZG8KQGNpbmRleCBkZXNjcmnn428gZG8gY29tYW5kbywgc2VsZWN0CgpAZGVmZm4gQ29tYW5kbyBzZWxlY3QgQHZhcntkaXNwb3NpdGl2b30KClNlbGVjaW9uYSBvIGRpc3Bvc2l0aXZvLCBAdmFye2Rpc3Bvc2l0aXZvfSwgcGFyYSBvIFBhcnRlZCBlZGl0YXIuIE8KZGlzcG9zaXRpdm8gZ2VyYWxtZW50ZSDpIHVtIGRpc3Bvc2l0aXZvIGRlIGRpc2NvIHLtZ2lkbyBkbyBMaW51eCwgb3UsCnNlIGFjZXNzbyBkaXJldG8gYSB1bSBhcnF1aXZvIOkgbmVjZXNz4XJpbyAtLS0gdW1hIHBhcnRp5+NvLCBkaXNwb3NpdGl2bwpSQUlEIGVtIHNvZnR3YXJlLCBvdSB1bSB2b2x1bWUgbPNnaWNvIExWTS4KCkV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3NlbGVjdCAvZGV2L2hkYn0KQGVuZCBleGFtcGxlCgpTZWxlY2lvbmEgQGZpbGV7L2Rldi9oZGJ9IChvIGRpc2NvIHNsYXZlIG5hIHByaW1laXJhIGNvbnRyb2xhZG9yYSBpZGUKbm8gTGludXgpIGNvbW8gdW0gZGlzcG9zaXRpdm8gcGFyYSBlZGl0YXIuCkBlbmQgZGVmZm4KCkBub2RlIHNldApAc3Vic2VjdGlvbiBzZXQKQGNpbmRleCBzZXQsIGRlc2NyaefjbyBkbyBjb21hbmRvCkBjaW5kZXggZGVzY3Jp5+NvIGRvIGNvbWFuZG8sIHNldAoKQGRlZmZuIENvbWFuZG8gc2V0IEB2YXJ7bWlub3J9IEB2YXJ7c2luYWxpemFkb3J9IEB2YXJ7ZXN0YWRvfQoKTXVkYSB1bSBzaW5hbGl6YWRvciBuYSBwYXJ0aefjbyBkZSBu+m1lcm8gQHZhcnttaW5vcn0uIFVtIApzaW5hbGl6YWRvciBwb2RlIHNlciBgYG9uJycgb3UgYGBvZmYnJy4gQWxndW1hcyBvdSB0b2RhcyBlc3NhcyAKZmxhZ3MgZXN0YXLjbyBkaXNwb27tdmVpcywgZGVwZW5kZW5kbyBxdWFsIHRhYmVsYSBkZSBwYXJ0aef1ZXMKdm9j6iBlc3ThIHVzYW5kbzoKCkB0YWJsZSBAc2FtcApAaXRlbSBib290CihNYWMsIE1TRE9TLCBQQzk4KSAtIHPzIGRldmUgc2VyIGhhYmlsaXRhZGEgc2Ugdm9j6iBxdWVyIGZhemVyCmJvb3QgZGEgcGFydGnn428uIEEgc2Vt4m50aWNhIHBvZGVyIHZhcmlhciBlbnRyZSBhcyB0YWJlbGFzIGRlCnBhcnRp5+NvLiBQYXJhIHRhYmVsYXMgZGUgcGFydGnn428gZG8gTVNET1MsIHNvbWVudGUgdW1hIHBhcnRp5+NvCnBvZGUgc2VyIGNhcnJlZ+F2ZWwuIFNlIHZvY+ogZXN04SBpbnN0YWxhbmRvIExJTE8gbnVtYSBwYXJ0aefjbwooQHB4cmVme0xJTE99KSwgZW50428gYXF1ZWxhIHBhcnRp5+NvIGRldmUgc2VyIGNhcnJlZ+F2ZWwuIFBhcmEgdGFiZWxhcwpkZSBwYXJ0aefjbyBkbyBQQzk4LCB0b2RhcyBhcyBwYXJ0aef1ZXMgZXh0MiBkZXZlbSBzZXIgY2FycmVn4XZlaXMKKElzdG8g6SByZWZvcudhZG8gcGVsbyBQYXJ0ZWQpLgoKQGl0ZW0gbGJhCihNU0RPUykgLSBlc3RlIHNpbmFsaXphZG9yIHBvZGUgc2VyIGhhYmlsaXRhZG8sIHBhcmEgZGl6ZXIgYW8gTVMgRE9TLApvIE1TIFdpbmRvd3MgOXggYW8gTVMgV2luZG93cyBNRSBlIG91dHJvcyBzaXN0ZW1hcyBiYXNlYWRvcyBuZWxlcwpwYXJhIHVzYXIgbyBtb2RvIExpbmVhciAoTEJBKS4KCkBpdGVtIHJvb3QKKE1hYykgLSBlc3RlIHNpbmFsaXphZG9yIGRldmUgc2VyIGhhYmlsaXRhZG8gc2UgYSBwYXJ0aefjbyBlc3ThIG5hCnBhcnRp5+NvIHJhaXogYSBzZXIgdXNhZGEgcGVsbyBMaW51eC4KCkBpdGVtIHN3YXAKKE1hYykgLSBlc3RlIHNpbmFsaXphZG9yIGRldmUgc2VyIGhhYmlsaXRhZG8gc2UgYSBwYXJ0aefjbyDpIGEgc3dhcApxdWUgdmFpIHNlciB1c2FkYSBwZWxvIExpbnV4LgoKQGl0ZW0gaGlkZGVuCihNU0RPUywgUEM5OCkgLSBlc3RhIGZsYWcgZGV2ZSBzZXIgaGFiaWxpdGFkYSBwYXJhIGVzY29uZGVyIHBhcnRp5/VlcwpkZSBzaXN0ZW1hcyBvcGVyYWNpb25haXMgTWljcm9zb2Z0LgoKQGl0ZW0gcmFpZAooTVNET1MpIC0gZXN0ZSBzaW5hbGl6YWRvciBwb2RlIHNlciBoYWJpbGl0YWRvIHBhcmEgZGl6ZXIgYW8gTGludXggcXVlCmVzc2EgcGFydGnn428g6SB1bWEgcGFydGnn428gZGUgc29mdHdhcmUgUkFJRCBAeHJlZntMVk0gZSBSQUlEfS4KCkBpdGVtIExWTQooTVNET1MpIC0gZXN0ZSBzaW5hbGl6YWRvciBwb2RlIHNlciBoYWJpbGl0YWRvIHBhcmEgZGl6ZXIg4CBwYXJ0aefjbwpsaW51eCBxdWUgYSBwYXJ0aefjbyDpIHVtIHZvbHVtZSBm7XNpY28uCgpAZW5kIHRhYmxlCgpPIGNvbWFuZG8gcHJpbnQgbW9zdHJhIHRvZGFzIG9zIHNpbmFsaXphZG9yZXMgcGFyYSBjYWRhIHBhcnRp5+NvLgoKRXhlbXBsbzoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7c2V0IDEgYm9vdCBvbn0KQGVuZCBleGFtcGxlCgpEZWZpbmUgbyBzaW5hbGl6YWRvciBkZSBAc2FtcHtib290fSBuYSBwYXJ0aefjbyAxLgpAZW5kIGRlZmZuCgpAbm9kZSBFeGV4bXBsb3MKQHNlY3Rpb24gU2Vzc/VlcyBkZSBFeGVtcGxvIGRvIFBhcnRlZApAY2luZGV4IHNlc3P1ZXMgZGUgZXhlbXBsbyBkbyBwYXJ0ZWQKQGNpbmRleCBzZXNz9WVzIGRlIGV4ZW1wbG8gZG8gcGFydGVkCgpFc3RlcyBleGVtcGxvcyB0ZW50YSBjb2JyaXIgYSBtYWlvciBwYXJ0ZSBkYXMgY2lyY3Vuc3TibmNpYXMsIGNvbSBhCmV4Y2Xn428gZGUgZXNwZWxoYW1lbnRvIGRlIGRpc2NvLCBxdWUg6SBkaXNjdXRpZG8gZW0gQHJlZntFc3BlbGhhbWVudG8KZGUgZGlzY299LgoKQG1lbnUKKiBBdW1lbnRhbmRvIHVtYSBwYXJ0aefjbyB1c2FuZG8gZXNwYedvIG7jby11c2Fkbzo6CiogUmVkaW1lbnNpb25hbmRvIHVtYSBwYXJ0aefjbyBleHQyIG51bSBkaXNjbyBjaGVpbzo6CkBlbmQgbWVudQoKQG5vZGUgQXVtZW50YW5kbyB1bWEgcGFydGnn428gdXNhbmRvIGVzcGHnbyBpbnVzYWRvCkBzdWJzZWN0aW9uIEV4ZW1wbG86IEF1bWVudGFuZG8gdW1hIHBhcnRp5+NvIHBhcmEgdXNhciBlc3Bh528gaW51c2FkbwpAY2luZGV4IGF1bWVudGFuZG8gdW1hIHBhcnRp5+NvLCBleGVtcGxvCkBjaW5kZXggZXhlbXBsbywgYXVtZW50YW5kbyB1bWEgcGFydGnn428KClN1cG9uaOMgcXVlIHNldSBkaXNjbyBzZSBwYXJl52EgY29tIGlzc286CgpAZXhhbXBsZQpAZ3JvdXAKKHBhcnRlZCkgQGtiZHtwcmludH0KRGlzayBnZW9tZXRyeSBmb3IgL2Rldi9oZGE6IDAuMDAwLTEwMDAuMDAwIG1lZ2FieXRlcwpEaXNrIGxhYmVsIHR5cGU6IG1zZG9zCk1pbm9yICAgIFN0YXJ0ICAgICAgIEVuZCAgICAgVHlwZSAgICAgIEZpbGVzeXN0ZW0gIEZsYWdzCjEgICAgICAgICAgMC4wNjMgICAgNTAwLjAwMCAgcHJpbWFyeSAgIGV4dDIKMiAgICAgICAgNTAwLjAwMCAgICA2MjUuMDAwICBwcmltYXJ5ICAgbGludXgtc3dhcApAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50IEV4aXN0ZW0gMzc1IE1iIGRlIGVzcGHnbyBsaXZyZSBubyBmaW5hbCBkbyBkaXNjbyAoZGVwb2lzIGRhCnBhcnRp5+NvIDIpLiBBIFBhcnRp5+NvIDEgdGVtIHVtIHNpc3RlbWFzIGRlIGFycXVpdm8gZXh0MiwgcXVlIOkgbwpkaXNwb3NpdGl2byByaWF6LiBBIHBhcnRp5+NvIDIg6SB1bSBkaXNwb3NpdGl2byBkZSBzd2FwLgoKU3Vwb25oYSBxdWUgdm9j6iBxdWVpcmEgdXNhciBvIGVzcGHnbyBsaXZyZSBubyBmaW5hbCBkbyBkaXNjbyBwYXJhIG8Kc2lzdGVtYXMgZGUgYXJxdWl2byBuYSBwYXJ0aefjbyAxLiBWb2PqIHBvZGUgZmF6ZXIgbyBzZWd1aW50ZToKCkBlbnVtZXJhdGUKQGl0ZW0gRXN0ZXMgcGFzc29zIHbjbyBtb2RpZmljYXIgdGFudG8gbyBzaXN0ZW1hcyBkZSBhcnF1aXZvIHJhaXogbmEKcGFydGnn428gMSwgcXVhbnRvIG8gZGlzcG9zaXRpdm8gZGUgc3dhcCBuYSBwYXJ0aefjbyAyLiBQb3J0YW50bywgdm9j6gpu428gZGV2ZXJpYSBlc3RhciB1c2FuZG8gbmVuaHVtYSBkYXMgZHVhcyBwYXJ0aef1ZXMuIFZvY+ogcHJvdmF2ZWxtZW50ZQpkZXZlIHVzYXIgdW0gZGlzY28gZGUgYm9vdCBkbyBQYXJ0ZWQuIEB4cmVme0Rpc2NvcyBkZSBib290IGRvIFBhcnRlZH0uCkRvIGRpc2NvIGRlIGJvb3QsIHJvZGUgbyBQYXJ0ZWQ6CgpAZXhhbXBsZQojIEBrYmR7cGFydGVkIC9kZXYvaGRhfQpAZW5kIGV4YW1wbGUKCkBpdGVtIFJlbW92ZSBhIHBhcnRp5+NvIDIgKGEgcGFydGnn428gZGUgc3dhcCkuIE5vcm1hbG1lbnRlLCB2b2PqIG7jbwppYSBxdWVyZXIgYXBhZ2FyIHVtYSBwYXJ0aefjbyBjb20gZGFkb3MgbmVsYS4gTWFzLCB1bWEgcGFydGnn428gbuNvCmNvbnTpbSBkYWRvcyBlbnF1YW50byBu428gZXN04SBtb250YWRhLCBlbnTjbyB2b2PqIHBvZGUgcmVtb3bqLWxhLCBlCmNyaWFyIHVtYSBvdXRyYSBwYXJ0aefjbyBkZSBzd2FwIG5vIHNldSBsdWdhci4KCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7cm0gMn0KQGVuZCBleGFtcGxlCgpAaXRlbSBDcmlhIHVtYSBub3ZhIHBhcnRp5+NvIGRlIHN3YXAgbm8gZmltIGRvIGRpc2NvOgoKQGV4YW1wbGUKQGdyb3VwCihwYXJ0ZWQpIEBrYmR7bWtwYXJ0ZnMgcHJpbWFyeSBsaW51eC1zd2FwIDg3NSA5OTkuOX0KKHBhcnRlZCkgQGtiZHtwcmludH0KRGlzayBnZW9tZXRyeSBmb3IgL2Rldi9oZGE6IDAuMDAwLTEwMDAuMDAwIG1lZ2FieXRlcwpEaXNrIGxhYmVsIHR5cGU6IG1zZG9zCk1pbm9yICAgIFN0YXJ0ICAgICAgIEVuZCAgICAgVHlwZSAgICAgIEZpbGVzeXN0ZW0gIEZsYWdzCjEgICAgICAgICAgMC4wNjMgICAgNTAwLjAwMCAgcHJpbWFyeSAgIGV4dDIKMiAgICAgICAgODc1LjAwMCAgIDEwMDAuMDAwICBwcmltYXJ5ICAgbGludXgtc3dhcApAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKQGl0ZW0gQXVtZW50YSBhIHBhcnRp5+NvIDEgbm8gZXNwYedvIHF1ZSBlc3ThIHNvYnJhbmRvCgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3Jlc2l6ZSAxIDAuMDYzIDg3NC45fQpAZW5kIGV4YW1wbGUKClR1ZG8gZmVpdG8hCgpAZXhhbXBsZQpAZ3JvdXAKKHBhcnRlZCkgQGtiZHtwcmludH0KRGlzayBnZW9tZXRyeSBmb3IgL2Rldi9oZGE6IDAuMDAwLTEwMDAuMDAwIG1lZ2FieXRlcwpEaXNrIGxhYmVsIHR5cGU6IG1zZG9zCk1pbm9yICAgIFN0YXJ0ICAgICAgIEVuZCAgICAgVHlwZSAgICAgIEZpbGVzeXN0ZW0gIEZsYWdzCjEgICAgICAgICAgMC4wNjMgICAgODc0Ljk5OSAgcHJpbWFyeSAgIGV4dDIKMiAgICAgICAgODc1LjAwMCAgIDEwMDAuMDAwICBwcmltYXJ5ICAgbGludXgtc3dhcApAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQpAZW5kIGVudW1lcmF0ZQoKCkBub2RlIFJlZGltZW5zaW9uYW5kbyB1bWEgcGFydGnn428gZXh0MiBlbSB1bSBkaXNjbyBjaGVpbwpAc3Vic2VjdGlvbiBFeGVtcGxvOiBSZWRpbWVuc2lvbmFuZG8gdW1hIHBhcnRp5+NvIGV4dDIgbnVtIGRpc2NvIGNoZWlvCkBjaW5kZXggcmVkaW1lbnNpb25hbmRvIHVtYSBwYXJ0aefjbyBudW0gZGlzY28gY2hlaW8sIGV4ZW1wbG8KQGNpbmRleCBleGVtcGxvLCByZWRpbWVuc2lvbmFuZG8gdW1hIHBhcnRp5+NvIG51bSBkaXNjbyBjaGVpbwoKU3Vwb25oYSBxdWUgbyBzZXUgZGlzY28gc2UgcGFyZedhIGNvbSBpc3NvOgoKQGV4YW1wbGUKQGdyb3VwCihwYXJ0ZWQpIEBrYmR7cHJpbnR9CkRpc2sgZ2VvbWV0cnkgZm9yIC9kZXYvaGRhOiAwLTgwNjMuNSBtZWdhYnl0ZXMKRGlzayBsYWJlbCB0eXBlOiBtc2RvcwpNaW5vciAgIFN0YXJ0ICAgICBFbmQgICAgVHlwZSAgICAgICAgICAgIEZpbGVzeXN0ZW0gICAgIEZsYWdzCjEgICAgICAgICAgMC4wICAgICAyMy41ICBwcmltYXJ5ICAgICAgICAgZXh0MiAgICAgICAgICAgYm9vdAoyICAgICAgICAgMjMuNSAgIDgwNTYuMCAgZXh0ZW5kZWQKNSAgICAgICAgIDIzLjYgICAzNTQ1LjYgIGxvZ2ljYWwgICAgICAgICBleHQyCjYgICAgICAgMzU0NS42ICAgNzA2Ny43ICBsb2dpY2FsICAgICAgICAgZXh0Mgo3ICAgICAgIDcwNjcuNyAgIDczMjYuNSAgbG9naWNhbCAgICAgICAgIGV4dDIKOCAgICAgICA3MzI2LjUgICA3NTg1LjQgIGxvZ2ljYWwgICAgICAgICBleHQyCjkgICAgICAgNzU4NS40ICAgNzg0NC4yICBsb2dpY2FsICAgICAgICAgbGludXgtc3dhcApAZW5kIGdyb3VwCgpAZ3JvdXAKJCBAa2Jke2RmIC1ofQpGaWxlc3lzdGVtICAgICAgICAgICAgU2l6ZSAgVXNlZCBBdmFpbCBVc2UlIE1vdW50ZWQgb24KL2Rldi9oZGE4ICAgICAgICAgICAgIDI1MU0gICAzMU0gIDIwN00gIDEzJSAvCi9kZXYvaGRhMSAgICAgICAgICAgICAgMjNNICAyLjRNICAgMTlNICAxMSUgL2Jvb3QKL2Rldi9oZGE1ICAgICAgICAgICAgIDMuNEcgIDU3N00gIDIuN0cgIDE4JSAvdXNyCi9kZXYvaGRhNiAgICAgICAgICAgICAzLjRHICAyODlNICAyLjlHICAgOSUgL2hvbWUKL2Rldi9oZGE3ICAgICAgICAgICAgIDI1MU0gICAxMk0gIDIyNk0gICA1JSAvdmFyCkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCgpTdXBvbmhhIHF1ZSB2b2PqIHF1ZWlyYSBhdW1lbnRhciBhIHBhcnRp5+NvIGRvIEBmaWxley92YXJ9CkBmaWxley9kZXYvaGRhN30pIHBhcmEgMUdCLCB1c2FuZG8gYWxndW0gZXNwYedvIGRhIHBhcnRp5+NvCmRvIEBmaWxley9ob21lfSAoQGZpbGV7L2Rldi9oZGE2fSkuCgpQYXJhIHJlZGltZW5zaW9uYXIgdW1hIHBhcnRp5+NvIHVzYW5kbyBvIFBhcnRlZCwgdm9j6iBwb2RlIHVzYXIKbyBjb21hbmRvIHJlc2l6ZToKCkBleGFtcGxlCihwYXJ0ZWQpIHJlc2l6ZSBAdmFye251bWVyby1kYS1wYXJ0aWNhb30gQHZhcntub3ZvLWNvbWXnb30gQHZhcntub3ZvLWZpbX0KQGVuZCBleGFtcGxlCgpAbm9pbmRlbnQgQHZhcntub3ZvIGNvbWXnb30gZGV2ZSBzZXIgbyBtZXNtbyBxdWUgbyBhbnRpZ28gY29tZedvIGVtCnBhcnRp5/VlcyBleHQyIChpbmZlbGl6bWVudGUpLiBFbnTjbyBlc3NlIHByb2Nlc3NvIHZhaSBmaWNhciBtYWlzCmNvbXBsaWNhZG8uIEBlbXBoe8l9IHBvc3PtdmVsLCBwb3J0YW50by4gQGZvb3Rub3Rle1NlIG8gUGFydGVkIHN1cG9ydGFzc2UKbW92ZXIgbyBjb21l528gZGUgcGFydGnn9WVzIGV4dDIgKGNvbW8gZWxlIGZheiBjb20gcGFydGnn9WVzIEZBVCksIGVudONvCnNlcmlhIG11aXRvIG1haXMgc2ltcGxlczoKCkBleGFtcGxlCkBncm91cAoocGFydGVkKSBAa2Jke3Jlc2l6ZSA2IDM1NDUuNiA2MjAwfQoocGFydGVkKSBAa2Jke3Jlc2l6ZSA3IDYyMDAgNzMyNi41fQpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQp9CgpAZW51bWVyYXRlCkBpdGVtIERpbWludWlyIGEgcGFydGnn428gZG8gQGZpbGV7L2hvbWV9IChAZmlsZXsvZGV2L2hkYTZ9KSBlbSA1MDBNQjoKCkBleGFtcGxlCiMgQGtiZHtwYXJ0ZWQgL2Rldi9oZGF9CihwYXJ0ZWQpIEBrYmR7cmVzaXplIDYgMzU0NS42IDYyMDB9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQ3JpYSB1bWEgbm92YSBwYXJ0aefjbyBubyBzZXUgbHVnYXIuIEFsaSDpIG9uZGUgQGZpbGV7L3Zhcn0gdmFpCmVzdGFyLCBldmVudHVhbG1lbnRlLiBFc3RhIG5vdmEgcGFydGnn428gdmFpIHNlciBudW1lcmFkYSBjb21vIDEwLgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtta3BhcnRmcyBsb2dpY2FsIGV4dDIgNjIwMCA3MDY3Ljd9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQ29waWEgYSBhbnRpZ2EgcGFydGnn428gZG8gQGZpbGV7L3Zhcn0gKEBmaWxley9kZXYvaGRhN30pIHBhcmEKYSBub3ZhIChAZmlsZXsvZGV2L2hkYTEwfSkuCgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke2NwIDcgMTB9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQXBhZ2EgYSBhbnRpZ2EgQGZpbGV7L3Zhcn0KCkBleGFtcGxlCihwYXJ0ZWQpIHJtIDcKQGVuZCBleGFtcGxlCgpOZXNzZSBtb21lbnRvOiB0b2RhcyBhcyBwYXJ0aef1ZXMgbPNnaWNhcyBjb20gbvptZXJvIG1haW9yIHF1ZSA3Cm11ZGFyYW0gZGUgbvptZXJvLiBFbnTjbyA4LCA5IGUgMTAgdmlyYXJhbSA3LCA4IGUgOSByZXNwZWN0aXZhbWVudGUuCgpFc3RhIHJlbnVtZXJh5+NvIG7jbyB2YWkgYWNvbnRlY2VyIGRlIHZlcmRhZGUgZW5xdWFudG8gcXVhbHF1ZXIgdW1hIGRlbGFzCmVzdGl2ZXIgbW9udGFkYXMgbmFxdWVsZSBkaXNjbyAoc/MgdmFpIGFjb250ZWNlciBxdWFuZG8gdm9j6iByZWluaWNpYXIpLgpJc3RvIOkgZG8gcXVlIGVzc2EgbWVuc2FnZW0gZGUgYXZpc28gdHJhdGEuIEVudONvIHZvY+ogQGVtcGh7bnVuY2F9IGRldmUKdGVudGFyIG1vbnRhciB1bSBzaXN0ZW1hcyBkZSBhcnF1aXZvIHRvY2FkbyBwZWxvIFBhcnRlZCAocmVkaW1lbnNpb25hZG8Kb3UgY3JpYWRvIHBlbG8gUGFydGVkKSwgYW50ZXMgZGUgcmVpbmljaWFyIHNlIHZvY+ogcmVjZWJlciBlc3NhIG1lbnNhZ2VtLgoKQGl0ZW0gUmVkaW1lbnNpb25hIGEgbm92YSBwYXJ0aefjbyBkbyBAZmlsZXsvdmFyfSAoYWdvcmEgbnVtZXJhZGEgcGFyYSA5KSwKYWRpY2lvbmFuZG8gbyBlc3Bh528gZGEgYW50aWdhIHBhcnRp5+NvIGRvIEBmaWxley92YXJ9OgoKQGV4YW1wbGUKQGdyb3VwCihwYXJ0ZWQpIEBrYmR7cmVzaXplIDkgNjIwMCA3MzI2LjV9CihwYXJ0ZWQpIEBrYmR7cXVpdH0KV2FybmluZzogVGhlIGtlcm5lbCB3YXMgdW5hYmxlIHRvIHJlLXJlYWQgdGhlIHBhcnRpdGlvbiB0YWJsZSBvbgovZGV2L2hkYSAoRGV2aWNlIG9yIHJlc291cmNlIGJ1c3kpLiAgVGhpcyBtZWFucyBMaW51eCBrbm93cyBub3RoaW5nCmFib3V0IGFueSBtb2RpZmljYXRpb25zIHlvdSBtYWRlLiAgWW91IHNob3VsZCByZWJvb3QgeW91ciBjb21wdXRlcgpiZWZvcmUgZG9pbmcgYW55dGhpbmcgd2l0aCAvZGV2L2hkYS4KQGVuZCBncm91cApAZW5kIGV4YW1wbGUKCkBpdGVtIFBlbG9zIG76bWVyb3MgZGFzIHBhcnRp5/VlcyB0ZXJlbSBtdWRhZG8sIGEgQGZpbGV7L2V0Yy9mc3RhYn0gZGV2ZQpzZXIgYXR1YWxpemFkYS4gSXN0byBwb2RlIHNlciBmZWl0byBhbnRlcyBkZSByZWluaWNpYXIsIHBvcnF1ZSBhIHBhcnRp5+NvCnJhaXogbuNvIGZvaSB0b2NhZGEgcGVsbyBQYXJ0ZWQuIChTZSB2b2PqIHF1ZXIgcXVlIG8gUGFydGVkIGZh52EgYWxnbyBjb20KYSBwYXJ0aefjbyByYWl6LCB2b2PqIHByZWNpc2EgdXNhciBvIGRpc2NvIGRlIGJvb3QpLgoKU2UgYSBhbnRpZ2EgQGZpbGV7L2V0Yy9mc3RhYn0gc2UgcGFyZWNlIGNvbSBpc3NvOgoKQGV4YW1wbGUKQGdyb3VwCi9kZXYvaGRhOCAgICAgIC8gICAgICAgICAgICBleHQyICAgIGRlZmF1bHRzICAgICAgICAxIDEKL2Rldi9oZGExICAgICAgL2Jvb3QgICAgICAgIGV4dDIgICAgZGVmYXVsdHMgICAgICAgIDEgMgovZGV2L2hkYTYgICAgICAvaG9tZSAgICAgICAgZXh0MiAgICBncnBxdW90YSx1c3JxdW90YSAgMCAgMgovZGV2L2Nkcm9tICAgICAvbW50L2Nkcm9tICAgaXNvOTY2MCBub2F1dG8sb3duZXIscm8gMCAwCi9kZXYvaGRhNSAgICAgIC91c3IgICAgICAgICBleHQyICAgIGRlZmF1bHRzICAgICAgICAxIDIKL2Rldi9oZGE3ICAgICAgL3ZhciAgICAgICAgIGV4dDIgICAgZ3JwcXVvdGEsdXNycXVvdGEgIDAgIDIKL2Rldi9mZDAgICAgICAgL21udC9mbG9wcHkgIGF1dG8gICAgbm9hdXRvLG93bmVyICAgIDAgMApub25lICAgICAgICAgICAvcHJvYyAgICAgICAgcHJvYyAgICBkZWZhdWx0cyAgICAgICAgMCAwCm5vbmUgICAgICAgICAgIC9kZXYvcHRzICAgICBkZXZwdHMgIGdpZD01LG1vZGU9NjIwICAwIDAKL2Rldi9oZGE5ICAgICAgc3dhcCAgICAgICAgIHN3YXAgICAgZGVmYXVsdHMgICAgICAgIDAgMApAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKQWxndW1hcyBsaW5oYXMgcHJlY2lzYW0gc2VyIGFsdGVyYWRhczoKQSBmZXcgbGluZXMgbmVlZCB0byBiZSBjaGFuZ2VkOgpAaXRlbWl6ZQpAaXRlbSBAZmlsZXsvdmFyfSBpcyBub3cgL2Rldi9oZGE5IChiZWNhdXNlIHdlIGNvcGllZCBpdCB0byBhIG5ldwpwYXJ0aXRpb24pCgpAaXRlbSBAZmlsZXsvZGV2L2hkYTh9ICh0aGUgcm9vdCBkZXZpY2UpIGhhcyBiZWVuIHJlbnVtYmVyZWQgdG8KQGZpbGV7L2Rldi9oZGE3fQoKQGl0ZW0gQGZpbGV7L2Rldi9oZGE5fSAodGhlIHN3YXAgZGV2aWNlKSBoYXMgYmVlbiByZW51bWJlcmVkIHRvCkBmaWxley9kZXYvaGRhOH0KQGVuZCBpdGVtaXplCgpUaGUgbmV3IEBmaWxley9ldGMvZnN0YWJ9IGxvb2tzIGxpa2UgdGhpczoKCkBleGFtcGxlCkBncm91cAovZGV2L2hkYTcgICAgICAvICAgICAgICAgICAgZXh0MiAgICBkZWZhdWx0cyAgICAgICAgMSAxCi9kZXYvaGRhMSAgICAgIC9ib290ICAgICAgICBleHQyICAgIGRlZmF1bHRzICAgICAgICAxIDIKL2Rldi9oZGE2ICAgICAgL2hvbWUgICAgICAgIGV4dDIgICAgZ3JwcXVvdGEsdXNycXVvdGEgIDAgIDIKL2Rldi9jZHJvbSAgICAgL21udC9jZHJvbSAgIGlzbzk2NjAgbm9hdXRvLG93bmVyLHJvIDAgMAovZGV2L2hkYTUgICAgICAvdXNyICAgICAgICAgZXh0MiAgICBkZWZhdWx0cyAgICAgICAgMSAyCi9kZXYvaGRhOSAgICAgIC92YXIgICAgICAgICBleHQyICAgIGdycHF1b3RhLHVzcnF1b3RhICAwICAyCi9kZXYvZmQwICAgICAgIC9tbnQvZmxvcHB5ICBhdXRvICAgIG5vYXV0byxvd25lciAgICAwIDAKbm9uZSAgICAgICAgICAgL3Byb2MgICAgICAgIHByb2MgICAgZGVmYXVsdHMgICAgICAgIDAgMApub25lICAgICAgICAgICAvZGV2L3B0cyAgICAgZGV2cHRzICBnaWQ9NSxtb2RlPTYyMCAgMCAwCi9kZXYvaGRhOCAgICAgIHN3YXAgICAgICAgICBzd2FwICAgIGRlZmF1bHRzICAgICAgICAwIDAKQGVuZCBncm91cApAZW5kIGV4YW1wbGUKCkBpdGVtIFJlYm9vdC4gIFRoYXQncyBpdCEKQGVuZCBlbnVtZXJhdGUKCkBub2RlICAgIEJJT1NlcyBhbmQgRmlybXdhcmUKQGNoYXB0ZXIgQklPU2VzIGFuZCBGaXJtd2FyZQpAY2luZGV4IGJpb3MKQGNpbmRleCBmaXJtd2FyZQoKYGBCSU9TJycgKEJhc2ljIElucHV0L091dHB1dCBTeXN0ZW0pIGFuZCBgYGZpcm13YXJlJycgbWVhbiB0aGUgc2FtZQp0aGluZy4gIEhvd2V2ZXIsIG9uIFBDIGFuZCBQQzk4IGJhc2VkIGNvbXB1dGVycywgdGhlIHdvcmQgQklPUyBpcyBtb3JlCmNvbW1vbi4gIE9uIEFwcGxlIE1hY2ludG9zaCBhbmQgU3VuIGNvbXB1dGVycywgdGhlIHdvcmQgYGBmaXJtd2FyZScnIGlzCm1vcmUgY29tbW9uLiAgVGhlIEJJT1Mgb3IgZmlybXdhcmUgcHJvZ3JhbSBpcyBidWlsdCBpbnRvIGEgUk9NIGNoaXAKaW5zaWRlIHlvdXIgY29tcHV0ZXIsIHRoYXQgZG9lcyBtZW1vcnkgY2hlY2tzLCBldGMuICBZb3UgY2FuIG5vdAooZWFzaWx5KSBjaGFuZ2UgdGhpcyBwcm9ncmFtLiAgU2luY2UgQklPU2VzIHRvZGF5IGFyZSBnZW5lcmFsbHkKY29tcGF0aWJsZSB3aXRoIEJJT1NlcyBpbiB1c2UgMjAgeWVhcnMgYWdvLCB0aGVzZSBwcm9ncmFtcyB0ZW5kIHRvIGhhdmUKYW4gYW50aXF1YXRlZCBkZXNpZ24uICBGZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQgaW4gY291bnRlci1pbnR1aXRpdmUKd2F5cyBvdmVyIHRoZSB5ZWFycywgbGVhZGluZyB0byBvdmVybHkgY29tcGxpY2F0ZWQgc3lzdGVtcyB0aGF0IGNhdXNlIGEKbG90IG9mIGNvbmZ1c2lvbiB0b2RheS4KCkBtZW51CiogUEMgQklPU2VzOjogICAgICAgICAgICAgICAgICAgVGhlIExlZ2FjeSBvZiBJQk0KKiBNYWNpbnRvc2ggT3BlbkZpcm13YXJlOjogICAgICBHbyBGb3J0aCwgWW91bmcgSGFja2VyIQoqIFBDOTggQklPUzo6ICAgICAgICAgICAgICAgICAgIFRoZSBCSU9TIG9mIHRoZSBQQzk4IGNvbXB1dGVyCiogU0dJIC8gTUlQUyBGaXJtd2FyZTo6ICAgICAgICAgVGhlIGZpcm13YXJlIG9mIFNHSSBNSVBTIGNvbXB1dGVycwpAZW5kIG1lbnUKCkBub2RlIFBDIEJJT1NlcwpAc2VjdGlvbiBUaGUgUEMgQklPUwpAY2luZGV4IHBjIGJpb3MKQGNpbmRleCBiaW9zLCBwYwoKVGhlcmUgYXJlIGEgZmV3IHBvcHVsYXIgUEMgQklPU2VzOiBBbWlCSU9TLCBBd2FyZCwgUGhvZW5peCwgYW5kIG90aGVycy4KVGhleSBhbGwgd29yayBpbiBhIHNpbWlsYXIgd2F5LiAgTm9uZSBvZiB0aGVzZSBCSU9TZXMgdW5kZXJzdGFuZCBvciBrbm93CmFib3V0IHBhcnRpdGlvbiB0YWJsZXMuICBUaGV5IGFmZmVjdCBwYXJ0aXRpb25pbmcgaW5kaXJlY3RseS4KClRoZXJlIGFyZSBhIGZldyBwb3B1bGFyIFBDIEJJT1NlczogQW1pQklPUywgQXdhcmQsIFBob2VuaXgsIGFuZCBvdGhlcnMuClRoZXkgYWxsIHdvcmsgaW4gYSBzaW1pbGFyIHdheS4gIE5vbmUgb2YgdGhlc2UgQklPU2VzIHVuZGVyc3RhbmQgb3Iga25vdwphYm91dCBwYXJ0aXRpb24gdGFibGVzLiAgVGhleSBhZmZlY3QgcGFydGl0aW9uaW5nIGluZGlyZWN0bHkuCgpvdXRyYXMuIEVsYXMgdG9kYXMgdHJhYmFsaGFtIGRlIG1vZG8gc2VtZWxoYW50ZS4gTmVuaG1hIGRlc3NhcyBCSU9TcwplbnRlbmRlIG91IGNvbmhlY2VtIHNvYnJlIHRhYmVsYXMgZGUgcGFydGnn428sIG1hcyBlbGFzIGEgYWZldGFtCmluZGlyZXRhbWVudGUuCgpPIHNlZ3VpbnRlIG9jb3JyZSBxdWFuZG8gbyBzZXUgY29tcHV0YWRvciDpIGxpZ2FkbzoKCkBlbnVtZXJhdGUKQGl0ZW0gRXN0YXMgQklPU3MgY2FycmVnYW0gbyBwcmltZWlybyBiaXQgZG8gcHJvZ3JhbWEgY2FycmVnYWRvciBkZSBib290LApndWFyZGFkbyBuYSBNQlIgKE1hc3RlciBCb290IFJlY29yZCAtIFJlZ2lzdHJvIE1lc3RyZSBkbyBCb290KSBubwpkaXNjbyBy7WdpZG8uCgpAaXRlbSBBIEJJT1MgZXhlY3V0ZSBvIHByaW1laXJvIGJpdCBkbyBjYXJyZWdhZG9yIGRlIGJvb3QsIGd1YXJkYWRvIG5hIE1CUgooTWFzdGVyIEJvb3QgUmVjb3JkIC0gUmVnaXN0cm8gTWVzdHJlIGRvIEJvb3QpIG5vIGRpc2NvIHLtZ2lkby4KCkBpdGVtIE8gcHJvZ3JhbWEgY2FycmVnYWRvciBkZSBib290IHVzYSBhIEJJT1MgcGFyYSBjYXJyZWdhciBvIHJlc3RvIGRvCnBy83ByaW8gcHJvZ3JhbWEuCgpAaXRlbSBPIGNhcnJlZ2Fkb3IgZGUgYm9vdCB1c2EgYSBCSU9TIHBhcmEgY2FycmVnYXIgbyBzaXN0ZW1hIG9wZXJhY2lvbmFsCihvdSBxdWVtIHNhYmUsIG91dHJvIGNhcnJlZ2Fkb3IgZGUgYm9vdCwgbmVzc2UgY2Fzbywgdm9j6iB2YWkgcGFyYSBvIHBhc3NvCjIgZGUgbm92bykuCgpAaXRlbSBPIHNpc3RlbWEgb3BlcmFjaW9uYWwgcG9kZSBvdSBu428gdXNhciBhIGJpb3MgcGFyYSBhY2Vzc2FyIGFycXVpdm9zCihvIFdpbmRvd3MgZ2VyYWxtZW50ZSB1c2EsIG8gTGludXggb3UgbyBCU2QgbuNvKS4KQGVuZCBlbnVtZXJhdGUKCkBjIFJNSzogRklYTUU6IGxlYXJuIGhvdyB0byByZWZlciB0byBlbnRyaWVzIGluIHRoZSBhYm92ZSBsaXN0LCBzbyB0aGF0CkBjIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBocyBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgb3JkZXIgZGV0YWlscyBvZiB0aGUKQGMgbGlzdC4KCk9zIHBhc3NvcyAoMykgYSAoNSkgaW52b2x2ZW0gcHJvZ3JhbWFzIGNvbXVuaWNhbmRvLXNlIGNvbSBhIEJJT1MsIHBhcmEKcGVkaXIgcGFyYSBmYWxhciBjb20gb3MgZGlzY29zLiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgc2UgY29tdW5pY2FyCmNvbSBhIEJJT1MgcGFyYSBmYXplciBpc3NvOiB1c2FuZG8gQ0hTIChDeWxpbmRlcnMgSGVhZHMgYW5kIFNlY3RvcnMgLQpDaWxpbmRyb3MgVHJpbGhhcyBlIFNldG9yZXMpIG91IExCQSAoTGluZWFyIEJsb2NrIEFkZHJlc3NpbmcgLQpFbmRlcmXnYW1lbnRvIGRlIEJsb2NvcyBMaW5lYXIpLiBCSU9TcyBhbnRpZ2FzIHNvbWVudGUgduNvIHN1cG9ydGFyIENIUy4KQXMgbm92YXMgQklPU3MgZ2VyYWxtZW50ZSBzdXBvcnRhbSB0YW50byBMQkEgcXVhbnRvIENIUywgYXBlc2FyIGRvCnN1cG9ydGUgYSBDSFMgc2VyIGludGVycm9tcGlkbyBubyBmdXR1cm8uIChvIENIUyDpIGNvbnNpZGVyYWRvIHVtIHNpc3RlbWEKbGVnYWRvIGhvcnLtdmVsLikKClBhc3NvcyAoMykgZSAoNCksIGZlaXRvcyBwZWxvIGNhcnJlZ2Fkb3IgZGVib290LCBzZW1wcmUgduNvIHVzYXIgbyBtZXNtbwpt6XRvZG8gZGUgYWNlc3NvIC0tLSBzZW1wcmUgTEJBIG91IHNlbXByZSBDSFMuIE5vIGNhc28gZG8gY2FycmVnYWRvciBkZQpib290IGRvIFdpbmRvd3MsIGVsZSDpIGRldGVybWluYWRvIHBlbG8gaW5kaWNhZG9yIGRlIExCQSBuYSBwYXJ0aefjbyBkZQpib290IGRvIFdpbmRvd3MgKEBweHJlZntkZWZpbmlkYX0gcGFyYSBpbmZvcm1h5/VlcyBzb2JyZSBpbmRpY2Fkb3JlcykuCk5vIGNhc28gZG8gTGludXgsIHZvY+ogcHJvdmF2ZWxtZW50ZSBlc3RhcuEgdXNhbmRvIExJTE8gb3UgR1JVQiBjb21vCmNhcnJlZ2Fkb3IgZGUgYm9vdC4gTyBHUlVCIHVzYSBMQkEgc2UgZXN0aXZlciBkaXNwb27tdmVsLCBlIENIUyBzZSBu428uCk8gTElMTyByZXF1ZXIgcXVlIHZvY+ogZXNjb2xoYSBxdWFuZG8gdm9j6iBpbnN0YWxhIGVsZSAoY29tIGFzIG9w5/VlcwoibGluZWFyIiBvdSAibGJhMzIiKS4KCkBjIFJNSzogRklYTUU6IGZpbmQgd2F5IHRvIHJlZmVyIHRvIGFib3ZlIHN0ZXBzIGJ5IEAtY29tbWFuZApQYXNzbyAoNSkgLSBFL1MgZmVpdGEgcGVsbyBzaXN0ZW1hIG9wZXJhY2lvbmFsIC0gc29tZW50ZSBvIFdpbmRvd3MKZmF6IEUvUyBwZWxhIEJJT1MuIFtO83MgYWluZGEgbuNvIHNhYmVtb3MgbyBzdWZpY2llbnRlIHNvYnJlIG9zCnByb2JsZW1hcywgbWFzIHBhcmVjZSBxdWUgbyBXaW5kb3dzIHBvZGUgdGVyIHNldXMgcHLzcHJpb3MgcHJvYmxlbWFzCmNvbSBvIG1vZG8gQ0hTLiBBcyBwZXNzb2FzIG5vcyBkaXNzZXJhbSBkZSB2ZXplcyBlbSBxdWUgbyBXaW5kb3dzCmNvcnJvbXBlIHNldSBwcvNwcmlvIHNpc3RlbWFzIGRlIGFycXVpdm8sIGV0Yy4gySByZWFsbWVudGUgZGlm7WNpbApwYXJhIG7zcyBzYWJlciBvIHF1ZSBlc3ThIGFjb250ZWNlbmRvLiBO83MgcmVjb21lbmRhbW9zIGZvcnRlbWVudGUKcXVlIHZvY+ogdXNlIExCQSwgc2Ugdm9j6iBwb2RlIV0KCkVudONvIGV4aXN0ZW0gMyBwb3Nz7XZlaXMgc2l0dWHn9WVzLCB0b2RhcyBkaXNjdXRpZGFzIGFxdWk6CgpAZW51bWVyYXRlCkBpdGVtIFZvY+ogZXN04SB1c2FuZG8gbyBtb2RvIENIUywgZSBhIHN1YSBCSU9TIHPzIHN1cG9ydGEgbyBtb2RvIENIUy4KQGl0ZW0gVm9j6iBlc3ThIHVzYW5kbyBvIG1vZG8gQ0hTLCBlIGEgc3VhIEJJT1Mgc3Vwb3J0YSB0YW50byBMQkEgcXVhbnRvIENIUy4KRW50428sIHZvY+ogcXVlciBjb252ZXJ0ZXIgZG8gbW9kbyBDSFMgcGFyYSBMQkEgTyBNYWlzIFLhcGlkbyBQb3Nz7XZlbApAc2N7dG19LgpAaXRlbSBWb2PqIGrhIGVzdOEgdXNhbmRvIG8gbW9kbyBMQkEuCkBlbmQgZW51bWVyYXRlCgpAbWVudQoqIE8gUGFydGVkIGUgbyBtb2RvIENIUzo6ICAgICAgICAgVXNhbmRvIG8gUGFydGVkIGVtIEJJT1NzIGNvbSBtb2RvIENIUwoqIERvIG1vZG8gQ0hTIHBhcmEgTEJBOjogICAgICAgICAgQ29udmVydGVuZG8gYSBCSU9TIGRvIG1vZG8gQ0hTIHBhcmEgTEJBCiogTyBQYXJ0ZWQgZSBvIG1vZG8gTEJBOjogICAgICAgICBVc2FuZG8gbyBQYXJ0ZWQgY29tIG8gbW9kbyBMQkEKQGVuZCBtZW51CgpAbm9kZSBPIFBhcnRlZCBlIG8gbW9kbyBDSFMKQHN1YnNlY3Rpb24gVXNhbmRvIG8gUGFydGVkIGVtIEJJT1MgZG8gbW9kbyBDSFMKQGNpbmRleCBiaW9zIGRlIG1vZG8gY2hzCkBjaW5kZXggY2hzLCBiaW9zIGNvbSBnZW9tZXRyaWEgZGUgZGlzY28gZG8gbW9kbwoKTyBMaW51eCBub3JtYWxtZW50ZSBkZXRlY3RhIGEgZ2VvbWV0cmlhIGRhIEJJT1MgYXV0b21hdGljYW1lbnRlLiBDb250dWRvLArgcyB2ZXplcyBpc3NvIGThIGVycmFkby4gTmVzdGUgY2Fzbywgdm9j6iBtZXNtbyBkZXZlIGRpemVyIGFvIExpbnV4LApwYXNzYW5kbyB1bSBwYXLibWV0cm8gcGFyYSBlbGUuIFBvciBleGVtcGxvLCBzZSBvIExpbnV4IHBlbnNhIHF1ZSBvIHNldQpkaXNjbyBy7WdpZG8gQGZpbGV7L2Rldi9oZGF9IHRlbSBhIGdlb21ldHJpYSAyNTYvNjQvNjMsIG1hcyBvIHByb2dyYW1hCmRlIGNvbmZpZ3VyYefjbyBkYSBCSU9TIGRpeiBxdWUgYSBnZW9tZXRyaWEg6SA1MTIvMzIvNjMsIGVudONvIHZvY+ogZGV2ZQpwYXNzYXIgZXNzZSBwYXLibWV0cm8gYW8gTGludXg6CgpAZXhhbXBsZQpAa2Jke2hkYT01MTIsMzIsNjN9CkBlbmQgZXhhbXBsZQoKT3MgcGFy4m1ldHJvcyBz428gcGFzc2Fkb3MgZGUgZGl2ZXJzYXMgbWFuZWlyYXMsIGRlcGVuZGVuZG8gZG8gY2FycmVnYWRvcgpkZSBib290IHF1ZSB2b2PqIGVzdOEgdXNhbmRvLiBWb2PqIHByb3ZhdmVsbWVudGUgZXN04SB1c2FuZG8gbyBMSUxPLiBOZXN0ZQpjYXNvLCB2b2PqIGFkaWNpb25hIGEgc2VndWludGUgbGluaGEgcGFyYSBvIEBmaWxley9ldGMvbGlsby5jb25mfTogKFZvY+oKZW50428gcHJlY2lzYSByb2RhciBvIEBjb21tYW5key9zYmluL2xpbG99LCBlIHJlaW5pY2lhciBwYXJhIGFzIG11ZGFu52FzCnRlcmVtIGVmZWl0bykKCkBjIFJNSzogRklYTUU6IGNhbid0IGdldCB0aGUgcXVvdGVzIHJpZ2h0OiB0ZXhpbmZvIGRvdWJsZSBxdW90ZXMgYGAnJyBkb24ndApAYyB3b3JrIGluIGV4YW1wbGUncywgYW5kIGtleWJvYXJkIGRvdWJsZSBxdW90ZXMgIiIgZG9uJ3QgbG9vayByaWdodCBpbiB0ZXh0LgpAZXhhbXBsZQphcHBlbmQ9ImhkYT01MTIsMzIsNjMiCkBlbmQgZXhhbXBsZQoKTyBQYXJ0ZWQgZ2VyYWxtZW50ZSBwb2RlIGRldGVjdGFyIHNlIG8gTGludXggZGV0ZWN0b3UgYSBnZW9tZXRyaWEgaW5jb3JyZXRhLgpDb250dWRvLCBlbGUgbuNvIHBvZGUgZmF6ZXIgaXNzbyBzZSBu428gZXhpc3RlbSBwYXJ0aef1ZXMgbm8gZGlzY28uIE5lc3RlCmNhc28sIHZvY+ogbWVzbW8gcG9kZSBjaGVjYXIuIMkgbXVpdG8gaW1wb3J0YW50ZSBxdWUgdm9j6iBmYedhIGlzc28uCgpBbGd1bWFzIHZlemVzLCBvIFBhcnRlZCB2YWkgcmVjbGFtYXIgcXVlIGFzIHBhcnRp5/VlcyBu428gZXN0428gYWxpbmhhZGFzCmFvcyBsaW1pdGVzIGRvcyBjaWxpbmRyb3MuIE8gUGFydGVkIHZhaSB0ZSBkYXIgYSBvcOfjbyBkZSBpZ25vcmFyLiBTZSB2b2PqCmlnbm9yYXIsIGVudONvIG8gUGFydGVkIHZpYSBmYXplciBhbGd1bnMgdHJ1cXVlcyBjb20gYSBzdWEgdGFiZWxhIGRlCnBhcnRp5/Vlcy4gTm8gTGludXggbuNvIHZhaSB0ZXIgcHJvYmxlbWFzLiBObyBET1MgZSBubyBXaW5kb3dzIG7jbyB2428gdGVyCnByb2JsZW1hcyBzZSBlbGVzIGVzdONvIHVzYW5kbyBvIG1vZG8gTEJBLiBTZSBvIERPUy9XaW5kb3dzIGVzdOEgdXNhbmRvCm8gbW9kbyBDSFMsIGVudONvIHJlaW5zdGFsYXIgbyBnZXJlbmNpYWRvciBkZSBib290IChAcHhyZWZ7TVMgRE9TCk1TIFdpbmRvd3MgOXggTVMgV2luZG93cyBNRX0pIGRldmUgcmVzb2x2ZXIgcXVhbHF1ZXIgcHJvYmxlbWEgLSBtYXMgbXVkYXIKcHJvIG1vZG8gTEJBIOkgcHJlZmVy7XZlbCAodmVqYSBAcHhyZWZ7RG8gbW9kbyBDSFMgcGFyYSBMQkF9KS4KClBhcnRp5/VlcyBxdWUgZXN0428gZW52b2x2aWRhcyBubyBwcm9jZXNzbyBkZSBib290IGRldmVtIGZpbmFsaXphciBhbnRlcwpkbyBjaWxpbmRybyAxMDI0LCBzZSBvIG1vZG8gQ0hTIGVzdOEgc2VuZG8gdXNhZG8uIFZlamEgYSBzZefjbyBzb2JyZQpvIHByb2Nlc3NvIGRlIGJvb3QgcGFyYSBkZXRlcm1pbmFyIHNlIGEgcGFydGnn428gZXN04SBlbnZvbHZpZGEgbm8KcHJvY2Vzc28gZGUgYm9vdC4gQSBjb25maWd1cmHn428gdO1waWNhIOkgdGVyIHVtYSBwZXF1ZW5hIHBhcnRp5+NvCkxpbnV4IHBhcmEgbyBAZmlsZXsvYm9vdH0sIHVtYSBwYXJ0aefjbyBXaW5kb3dzLCBlIGVudONvIGEocykKcGFydGnn428o9WVzKSBMaW51eC4KCkBub2RlIERvIG1vZG8gQ0hTIHBhcmEgbyBMQkEKQHN1YnNlY3Rpb24gQ29udmVydGVuZG8gZG8gbW9kbyBDSFMgcGFyYSBvIExCQQpAY2luZGV4IGNocyBwYXJhIGxiYSwgY29udmVydGluZyBkZQoKUGFyYSBmYXplciBjb20gcXVlIG8gY2FycmVnYWRvciBkZSBib290IGRvIFdpbmRvd3MgZSBvIHNpc3RlbWEKb3BlcmFjaW9uYWwgdXNhcmVtIG8gbW9kbyBMQkEsIHNvbWVudGUgZGVmaW5hIG8gaW5kaWNhZG9yIExCQSBlbSB0b2RhcwphcyBwYXJ0aef1ZXMgRkFUIEByZWZ7c2V0fS4gVm9j6iBu428gZGV2ZSB0ZXIgcHJvYmxlbWFzLiBTZSB2b2PqCnRpdmVyIHByb2JsZW1hcyBjYXJyZWdhbmRvIG8gV2luZG93cywgZW50428gcmVpbnN0YWxhciBvIGNhcnJlZ2Fkb3IKZGUgYm9vdCBkbyBXaW5kb3dzIHZhaSBjb25zZXJ0YXIgaXNzbyBAcmVme01TIERPUyBNUyBXaW5kb3dzIDl4IE1TCldpbmRvd3MgTUV9LgoKTyBMaW51eCBu428gdXNhIGEgQklPUyBwYXJhIEUvUy4gQ29udHVkbywgbyBjYXJyZWdhZG9yIGRlIGJvb3QgKExJTE8Kb3UgR1JVQikgcG9kZS4gTyBHUlVCIGF1dG9tYXRpY2FtZW50ZSB1c2EgTEJBLCBjYXNvIGVzdGVqYSBkaXNwb27tdmVsLgpPIExJTE8gZXhpZ2UgYSBvcOfjbyBgYGxpbmVhcicnIG91IGBgbGJhMzInJy4gRW50428sIHNlIG8gTElMTyBhaW5kYQpjYXJyZWdhIGFw83MgbXVkYXIgbyBAZmlsZXsvZXRjL2xpbG8uY29uZn0gZSByb2RhciBvIEBjb21tYW5key9zYmluL2xpbG99LAplbnTjbyBlc3ThIHR1ZG8gZmVpdG8hIEB4cmVme0xJTE99LiAoU2Ugdm9j6iB0aXZlciBwcm9ibGVtYXMsIHJldmVydGEKcGFyYSBDSFMgZGUgdm9sdGEsIHJlbW92ZW5kbyBhIG9w5+NvIGBgbGluZWFyJycgb3UgYGBsYmEzMicnLCBlCnJlaW5zdGFsYW5kbyBvIGxpbG8gZG8gZGlzY28gZGUgYm9vdC4pCgpBZ29yYSBxdWUgdm9j6iBlc3ThIHVzYW5kbyBMQkEgY29udGludWUgbGVuZG9AZG90c3t9CgpAbm9kZSBPIFBhcnRlZCBlIG8gbW9kbyBMQkEKQHN1YnNlY3Rpb24gVXNhbmRvIG8gUGFydGVkIG5vIG1vZG8gTEJBCkBjaW5kZXggbW9kbyBsYmEKQGNpbmRleCBsYmEsIGdlb21ldHJpYSBkZSBkaXNjbyBkbyBtb2RvCgpPIG1vZG8gTEJBIHJlc29sdmUgdG9kb3Mgb3MgcHJvYmxlbWFzIGRvIENIUy4gQ29udHVkbywgbuNvIGV4aXN0ZSB1bWEKbWFuZWlyYSBjb25maeF2ZWwgcGFyYSBvIExpbnV4IG91IG8gUGFydGVkIHNhYmVyIHF1ZSB2b2PqIGVzdOEgdXNhbmRvCkxCQSwgZW50428gbyBQYXJ0ZWQgcG9kZSB0ZSBkYXIgYXZpc29zIHNvYnJlIGNpbGluZHJvcyBu428gYWxpbmhhZG9zLApvdSBhIGdlb21ldHJpYSBkYSBCSU9TIHNlciBpbmNvbnNpc3RlbnRlLCBldGMuIFZvY+ogcG9kZSBpZ25vcmFyIGVzc2FzCm1lbnNhZ2Vucywgc2Ugdm9j6iBlc3ThIHVzYW5kbyBvIG1vZG8gTEJBLiAoVmVyc/VlcyBhbnRpZ2FzIGRvIFBhcnRlZAp0aW5oYW0gcHJvYmxlbWFzLCBtYXMgdG9kb3MgZm9yYW0gcmVzb2x2aWRvcykuCgpRdWFuZG8gbyBzZXUgZGlzY28gZXN04SBubyBtb2RvIExCQSwgbyBQYXJ0ZWQgKGUgYSBtYWlvcmlhIGRvcyBvdXRyb3MKcHJvZ3JhbWFzKSB2YWkgZGl6ZXIgcXVlIGEgc3VhIGdlb21ldHJpYSDpIFgvMjU1LzYzIC0gYSBtZW5vcyBxdWUKdm9j6iB0ZW5oYSBtdWRhZG8gZG8gQ0hTIHBhcmEgTEJBLgoKQG5vZGUgTWFjaW50b3NoIE9wZW5GaXJtd2FyZQpAc2VjdGlvbiBPcGVuRmlybXdhcmUgZG8gdGhlIEFwcGxlIE1hY2ludG9zaApAY2luZGV4IG9wZW4gZmlybXdhcmUsIG1hY2ludG9zaApAY2luZGV4IG1hY2ludG9zaCBvcGVuIGZpcm13YXJlCgpFeGlzdGVtIGR1YXMgdmVyc/VlcyBkbyBPcGVuRmlybXdhcmUgZG8gUG93ZXJNYWMgLSB1bWEgdXNhZGEgbm8KYGBhbnRpZ28gbXVuZG8nJyBkbyBQb3dlck1hYywgZSBvdXRyYSB1c2FkYSBubyBgYG5vdm8gbXVuZG8nJy4gTwpgYE5vdm8gbXVuZG8nJyBzZSByZWZlcmUgYW9zIFBvd2VyUENzIGNvbG9yaWRvcyBmZWl0b3MgZGVzZGUgMTk5OS4KRWxlcyB0ZW0gZGlmZXJlbudhcyBzaWduaWZpY2FudGVzLiBDb250dWRvLCBhbWJvcyBlbnRlbmRlbSB0YWJlbGFzCmRlIHBhcnRp5+NvLgoKQW1iYXMgcmVxdWVyZW0gcXVlIG8gdXN14XJpbyBlc2NvbGhhIGV4YXRhbWVudGUgdW1hIHBhcnRp5+NvIHBhcmEgc2VyCmEgcGFydGnn428gZGUgYm9vdCAoYSBwYXJ0aefjbyBjb20gbyBjYXJyZWdhZG9yIGRlIGJvb3QpLiBDb250dWRvLAplbGVzIHVzYW0gbWVjYW5pc21vcyBkaWZlcmVudGVzIHBhcmEgZmF6ZXIgaXNzby4KCkBtZW51CiogVmVsaG8gTXVuZG86OgoqIE5vdm8gTXVuZG86OgpAZW5kIG1lbnUKCkBub2RlIFZlbGhvIE11bmRvCkBzdWJzZWN0aW9uIE9wZW5GaXJ3YXJlIE1hY2ludG9zaCBkbyBWZWxobyBNdW5kbwpAY2luZGV4IGZpcm13YXJlIG1hY2ludG9zaCBkbyB2ZWxobyBtdW5kbwpAY2luZGV4IHZlbGhvIG11bmRvLCBmaXJtd2FyZSBtYWNpbnRvc2ggZG8KQGNpbmRleCBmaXJtd2FyZSBtYWNpbnRvc2ggZG8gdmVsaG8gbXVuZG8KCkEgcGFydGnn428gZXNjb2xoaWRhIHBhcmEgZGFyIGJvb3Qg6SBkZWZpbmlkYSBwb3IgduFyaW9zIGNhcnJlZ2Fkb3JlcwpkZSBib290LCBjb21vIG8gUXVpay4gRW50428sIHZvY+ogbuNvIGRldmUgcHJlY2lzYXIgZmF6ZXIgbmFkYS4gTvNzCnBvZGVy7WFtb3MgYWRpY2lvbmFyIHN1cG9ydGUgYSBpc3NvIG5vIFBhcnRlZCwgc2UgYWxndeltIGdyaXRhciBtdWl0bwphbHRvQGRvdHN7fQoKQG5vZGUgTm92byBNdW5kbwpAc3Vic2VjdGlvbiBPcGVuRmlyd2FyZSBNYWNpbnRvc2ggZG8gTm92byBNdW5kbwpAY2luZGV4IGZpcndhcmUgbWFjaW50b3NoIGRvIHZlbGhvIG11bmRvCkBjaW5kZXggbm92byBtdW5kbywgZmlyd2FyZW0gbWFjaW50b3NoIGRvCkBjaW5kZXggZmlyd2FyZW0gbWFjaW50b3NoIGRvIG5vdm8gbXVuZG8KCkBjIFJNSzogY29tcGxldGVuZXNzOiBkbyB3ZSBoYXZlIGEgZGVzY3JpcHRpb24gb2YgSEZTIGFueXdoZXJlIGhlcmU/Ck9wZW5GaXJtd2FyZSBkbyBub3ZvIG11bmRvIHJlcXVlciBxdWUgYSBwYXJ0aefjbyBxdWUgZOEgYm9vdCBzZWphIEhGUwplIG1hcmNhZGEgY29tbyBwYXJ0aefjbyBkZSBib290LiBFbGEgdXNhIHVtIG1lY2FuaXNtbyBkaWZlcmVudGUgcGFyYQpzZXIgbWFyY2FkYSBjb21vIGEgcGFydGnn428gZGUgYm9vdC4gSXN0byDpIGNvbnRyb2xhZG8gY29tIG8gaW5kaWNhZG9yCmBgYm9vdCcnIG5vIFBhcnRlZC4gUG9yIGV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3NldCAyIGJvb3Qgb259CkBlbmQgZXhhbXBsZQoKQG5vZGUgQklPUyBkb3MgUEM5OApAc2VjdGlvbiBBcyBCSU9TIGRvcyBQQzk4CkBjaW5kZXggYmlvcyBkbyBwYzk4CgpAYyBSTUs6IGNvbXBsZXRlbmVzcyA6IHNob3VsZCB3ZSBkZXNjcmliZSB3aGF0IG1hY2hpbmVzIGFyZSBsaWtlbHkgdG8KQGMgaGF2ZSBhIFBDIDk4IGJpb3M/CkBjIFJNSzogaWxsaXRlcmFjeTogdGhlIG9ubHkgcGFnZXMgSSBmb3VuZCBmb3IgUEM5OCBpbmZvIHdlcmUgaW4gSmFwYW5lc2UsCkBjIHdoaWNoIEkgY2FuJ3QgcmVhZCA6KApBIEJJT1MgZG9zIFBDOTggcGVybWl0ZW0gYSB2b2PqIG1hcmNhciBxdWFscXVlciBu+m1lcm8gZGUgcGFydGnn428KY29tbyBib2904XZlbC4gVm9j6iBwb2RlIGRlc21hcmNhciBvdSBtYXJjYXIgdW1hIHBhcnRp5+NvIGNvbW8gYm9vdOF2ZWwKY29tIG8gaW5kaWNhZG9yIGBgYm9vdCcnIGRvIFBhcnRlZC4gUG9yIGV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3NldCAyIGJvb3Qgb2ZmfQpAZW5kIGV4YW1wbGUKCgpAbm9kZSBGaXJtd2FyZXMgZG9zIFNHSSAvIE1JUFMKQHNlY3Rpb24gRmlybXdhcmUgZG9zIFNHSSAvIE1JUFMKQGNpbmRleCBmaXJtd2FyZSBkb3Mgc2dpCkBjaW5kZXggZmlybXdhcmUgZG9zIG1pcHMKCgoKTyBmaXJtd2FyZSBkb3MgU0dJIC8gTUlQUyBwZXJtaXRlIHZvY+ogZmF6ZXIgbyBib290IGRlIGFycXVpdm9zIGRlCmJvb3QgZXNwZWNpYWlzLCBxdWUgc+NvIGdlcmVuY2lhZG9zIHBlbGEgdGFiZWxhIGRlIHBhcnRp5/Vlcy4gTm8KUGFydGVkLCBlc3NlcyBhcnF1aXZvcyBkZSBib290IHPjbyB0cmF0YWRvcyBjb21vIHBhcnRp5/VlcyBs82dpY2FzCmRlbnRybyBkYXMgcGFydGnn9WVzIGV4dGVuZGlkYXMuCgpQb3IgZXhlbXBsbzoKCkBleGFtcGxlCkRpc2sgbGFiZWwgdHlwZTogbWlwcwpNaW5vciAgICBTdGFydCAgICAgICBFbmQgICAgIFR5cGUgICAgICBGaWxlc3lzdGVtICBOYW1lICAgICAgICBGbGFncwo5ICAgICAgICAgIDAuMDAwICAgICAgMi43MzIgIGV4dGVuZGVkCjE3ICAgICAgICAgMC4wMDIgICAgICAwLjAwMiAgbG9naWNhbCAgICAgICAgICAgICAgIHNnaWxhYmVsCjE4ICAgICAgICAgMC4wMDMgICAgICAxLjE2MiAgbG9naWNhbCAgICAgICAgICAgICAgIHN5bW1vbgoxOSAgICAgICAgIDEuNDA0ICAgICAgMS42NzAgIGxvZ2ljYWwgICAgICAgICAgICAgICBzYXNoCjEgICAgICAgICAgMi43MzIgICA4NTU1LjIxMiAgcHJpbWFyeSAgIHhmcyAgICAgICAgICAgICAgICAgICAgIHJvb3QKMiAgICAgICA4NTU1LjIxMyAgIDg2ODIuMjcwICBwcmltYXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcApAZW5kIGV4YW1wbGUKCkEgUGFydGnn428gOSDpIGEgcGFydGnn428gZXh0ZW5kaWRhICh1bSBjYWJl52FsaG8gZGUgdm9sdW1lLCBuYSB0ZXJtaW5vbG9naWEKZG9zIFNHSS9NSVBTKSBhb25kZSBvIGFycXVpdm8gZGUgYm9vdCBwb2RlIGZpY2FyLiBBcyBwYXJ0aef1ZXMgMTcsIDE4IGUgMTkKc+NvIG9zIGFycXVpdm9zIGRlIGJvb3QuIFNldXMgbm9tZXMgcG9kZW0gc2VyIG1hbmlwdWxhZG9zIGNvbSBvIGNvbWFuZG8gbmFtZQpkbyBQYXJ0ZWQuIEEgcGFydGnn428gMSBlIDIgc+NvIHBhcnRp5/VlcyBub3JtYWlzLiBFbGFzIG7jbyBwb2RlbSB0ZXIgbm9tZXMuCgpOb3RlIHF1ZSBvIExpbnV4IG7jbyB26iBvcyBhcnF1aXZvcyBkZSBib290IGNvbW8gcGFydGnn9WVzICh0YWx2ZXogZGV2ZXNzZT8pLgpFbnTjbyBvIC9kZXYvaGRhMTcgbuNvIGV4aXN0ZSBubyBMaW51eC4gVm9j6iBkZXZlIHVzYXIgbyBkdmh0b29sKDgpIHBhcmEKbWFuaXB1bGFyIGFycXVpdm9zIGRlIGJvb3QuCgpAbm9kZSAgICBDYXJyZWdhZG9yZXMgZGUgQm9vdApAY2hhcHRlciBDYXJyZWdhZG9yZXMgZGUgQm9vdApAY2luZGV4IGNhcnJlZ2Fkb3JlcyBkZSBib290CgpPIGNhcnJlZ2Fkb3IgZGUgYm9vdCDpIG8gcHJvZ3JhbWEgcXVlIHBlcm1pdGUgcXVlIHZvY+ogc2VsZWNpb25lIHF1YWwKc2lzdGVtYSBvcGVyYWNpb25hbCB2b2PqIHF1ZXIgdXNhciwgZSBjYXJyZWdhIGFxdWVsZSBzaXN0ZW1hIG9wZXJhY2lvbmFsLgpWb2PqIHBvZGUgdGVyIG1haXMgZGUgdW0gY2FycmVnYWRvciBkZSBib290IGluc3RhbGFkbywgZXNwZWNpYWxtZW50ZSBzZQp2b2PqIHRlbSBtYWlzIGRlIHVtIHRpcG8gZGUgc2lzdGVtYSBvcGVyYWNpb25hbCBpbnN0YWxhZG8uIMkgY29tdW0gcGFyYQpjYXJyZWdhZG9yZXMgZGUgYm9vdCBwb2RlcmVtIGNhcnJlZ2FyIG91dHJvcyBjYXJyZWdhZG9yZXMgZGUgYm9vdC4KClF1YW5kbyBzZSByZWRpbWVuc2lvbmEgdW1hIHBhcnRp5+NvLCBtdWl0b3MgZGFkb3Mgc2UgbW92ZW0uIE11aXRvcwpjYXJyZWdhZG9yZXMgZGUgYm9vdCBu428gZW50ZW5kZW0gbyBzaXN0ZW1hcyBkZSBhcnF1aXZvLiBFbGVzIHPzIGxlbWJyYW0KYW9uZGUgcXVlIGFzIGluZm9ybWHn9WVzIG5lY2Vzc+FyaWFzIHBhcmEgbyBjYXJyZWdhZG9yIGRlIGJvb3QgcmVzaWRlLgpTZSBlc3RhIGluZm9ybWHn428g6SBtb3ZpZGEsIGRldmUtc2UgZGl6ZXIgYW8gY2FycmVnYWRvciBkZSBib290IHByYQpvbmRlIGVsYXMgc2UgbW92ZXJhbS4gSXN0byDpIGZlaXRvIHJlaW5zdGFsYW5kbyBvIGNhcnJlZ2Fkb3IgZGUgYm9vdAoocG9yIGV4ZW1wbG8sIHJvZGFuZG8gbm92YW1lbnRlIG8gcHJvZ3JhbWEgaW5zdGFsYWRvciBkbyBjYXJyZWdhZG9yIGRlCmJvb3QsIHF1ZSBub3JtYWxtZW50ZSBlbnZvbHZlIGRpZ2l0YXIgdW0g+m5pY28gY29tYW5kbyBuYSBzaGVsbCkuIE5lbQp0b2RvcyBvcyBjYXJyZWdhZG9yZXMgZGUgYm9vdCBleGlnZW0gaXNzby4KCkBtZW51CiogTElMTzo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE8gTEludXggTE9hZGVyCiogR05VIEdSVUI6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdOVSBHUmFuZCBVbmlmaWVkIEJvb3QtbG9hZGVyCiogTVMgRE9TIE1TIFdpbmRvd3MgOXggTVMgV2luZG93cyBNRTo6ICAgICAgICAgIFNvZnR3YXJlIExlZ2FkbyBkYSBNUwoqIE1TIFdpbmRvd3MgTlQ6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXJyZWdhZG9yIGRvIE1TIFdpbmRvd3MgTlQKKiBNUyBXaW5kb3dzIDIwMDA6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FycmVnYWRvciBkbyBNUyBXaW5kb3dzIDIwMDAKKiBRdWlrOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVpawoqIFlhYm9vdDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZYWJvb3QKCkBlbmQgbWVudQoKQG5vZGUgTElMTwpAc2VjdGlvbiBMSUxPOiB1bSBjYXJyZWdhZG9yIGRlIGJvb3QgcGFyYSBvIGtlcm5lbCBkbyBMaW51eApAY2luZGV4IGxpbG8KCkxJTE8g6SB1bSBjYXJyZWdhZG9yIGRlIGJvb3QgcG9wdWxhciBwYXJhIG9zIHg4Ni4gTyBjYXJyZWdhZG9yIGRlCmJvb3QgZG8gTElMTyDpIGdlcmFsbWVudGUgaW5zdGFsYWRvIGNvbToKCkBleGFtcGxlCiMgQGtiZHsvc2Jpbi9saWxvfQpAZW5kIGV4YW1wbGUKClNlIHZvY+ogZXN04SB1c2FuZG8gdW0gZGlzY28gZGUgYm9vdCwgZW50428gdm9j6iBkZXZlIGZhemVyIGlzc286Cihhb25kZSBAZmlsZXsvZGV2L2hkYTF9IGRldmUgc2VyIHN1YnN0aXR17WRvIGNvbSBhIHBhcnRp5+NvIHJhaXopCgpAZXhhbXBsZQojIEBrYmR7bW91bnQgL2Rldi9oZGExIC9tbnR9CiMgQGtiZHtjaHJvb3QgL21udCAvc2Jpbi9saWxvfQojIEBrYmR7dW1vdW50IC9kZXYvaGRhMX0KQGVuZCBleGFtcGxlCgpWZXJz9WVzIGFudGlnYXMgZG8gTElMTyBu428gc3Vwb3J0YW0gbyBtb2RvIExCQSAoQHB4cmVme0JJT1NzIGRlIFBDfSkuCk8gbW9kbyBMQkEg6SBoYWJpbGl0YWRvIGNvbSBhcyBvcOf1ZXMgbGJhMzIgb3UgbGluZWFyLCBubyBAZmlsZXsvZXRjL2xpbG8uY29uZn0KKHZlamEgYSBkb2N1bWVudGHn428gZG8gTElMTyBwYXJhIG1haW9yZXMgaW5mb3JtYef1ZXMpLgoKU2Ugdm9j6iB1c2EgbyBtb2RvIExCQSwgdm9j6iBu428gZGV2ZSB0ZXIgcHJvYmxlbWFzLCBjb250YW50byBxdWUgYQpzdWEgQklPUyBzdXBvcnRlIExCQS4KClNlIHZvY+ogdXNhIG8gbW9kbyBDSFMsIGVudONvIGEgcGFydGnn428gY29tIG8gZGlyZXTzcmlvIEBmaWxley9ib290fQpkZXZlIGFjYWJhciBhbnRlcyBkbyBjaWxpbmRybyAxMDI0LiBFbnTjbywgc2Ugdm9j6iB0ZW0gdW0gZGlzY28gZ3JhbmRlCih2YW1vcyBkaXplciwgY29tIG1haXMgZGUgOCBnaWdhYnl0ZXMpLCB2b2PqIGRldmUgdGVyIHVtIHBhcnRp5+NvIHBhcmEKbyBAZmlsZXsvYm9vdH0gcHLzeGltbyBhbyBjb21l528gZG8gZGlzY28uCgpAbm9kZSBHTlUgR1JVQgpAc2VjdGlvbiBHUlVCOiBPIEdOVSBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIKQGNpbmRleCBncnViCgpHUlVCIOkgdW0gY2FycmVnYWRvciBkZSBib290IHJlbGF0aXZhbWVudGUgbm92bywgcGFyYSB4ODYuIERlcGVuZGVuZG8KZGUgY29tbyBvIEdSVUIg6SBpbnN0YWxhZG8sIGVsZSBwb2RlIGVudGVuZGVyIG8gc2lzdGVtYXMgZGUgYXJxdWl2bywKb3Ugc2ltcGxlc21lbnRlIGxlbWJyYXIgYW9uZGUgb3MgYXJxdWl2b3MgZGUgYm9vdCBlc3TjbyBndWFyZGFkb3MuIEVsZQplbnRlbmRlIG8gc2lzdGVtYXMgZGUgYXJxdWl2byBzZSBlbGUgZXN04SB1c2FuZG8gYGBTdGFnZTEuNScnLiBTZSBlbGUKbuNvIGVzdOEgdXNhbmRvIFN0YWdlMS41LCBvdSBvIG76bWVybyBkYSBwYXJ0aefjbyBtdWRhLCBlbnTjbyB2b2PqIHByZWNpc2EKcmVpbnN0YWxhciBvIFN0YWdlMiAocG9yIGZhdm9yIHZlamEgYSBkb2N1bWVudGHn428gZG8gR1JVQikuIERvIG1vZG8KY29udHLhcmlvLCB2b2PqIG7jbyBwcmVjaXNhIGZhemVyIG5hZGEuCgpPIEdSVUIgYXV0b21hdGljYW1lbnRlIGRldGVjdGEgc2UgTEJBIGVzdOEgZGlzcG9u7XZlbCwgZSB2YWkgIHVz4S1sbwpzZSBlbGUgZXN04SBkaXNwb27tdmVsIChlcXVpdmFsZW50ZSDgIG9w5+NvIGBgbGJhMzInJyBkbyBMSUxPKS4KCkBub2RlIE1TIERPUyBNUyBXaW5kb3dzIDl4IE1TIFdpbmRvd3MgTUUKQHNlY3Rpb24gQ2FycmVnYWRvcmVzIGRlIEJvb3QgTGVnYWRvcyBkb3MgU2lzdGVtYXMgT3BlcmFjaW9uYWlzIE1pY3Jvc29mdApAY2luZGV4IGNhcnJlZ2Fkb3IgZGUgYm9vdCBkbyB3aW4zMgpAY2luZGV4IGNhcnJlZ2Fkb3IgZGUgYm9vdCBsZWdhZG8gZG9zIHNpc3RlbWFzIG9wZXJhY2luYWlzIG1pY3Jvc29mdAoKTyBET1MgZSBXaW5kb3dzIHJlcXVlcmVtIHF1ZSB2b2PqIHJlaW5zdGFsZSBvIGNhcnJlZ2Fkb3IgZGUgYm9vdCBzZSB2b2PqCm11ZGFyIG8gdGlwbyBkZSBGQVQgKEZBVDE2IG91IEZBVDMyKSBkYSBwYXJ0aefjbyBkZSBib290LiBPIFBhcnRlZCB2YWkKYXZpc2FyIHZvY+ogYW50ZXMgZGUgZmF6ZXIgaXNzby4gUGFyYSByZWluc3RhbGFyIG8gY2FycmVnYWRvciBkZSBib290LAp2b2PqIHBvZGUgdGFudG8gY3JpYXIgdW0gZGlzY28gZGUgYm9vdCwgb3UgdXNhciBvIENEUk9NIGRlIGJvb3QuIE8Kbel0b2RvIGRvIGRpc2NvIGRlIGJvb3QgbuNvIGZ1bmNpb25hIGNvbSBvIFdpbmRvd3MgTUUuCgpAaXRlbWl6ZSBAbWludXMKQGl0ZW0gTclUT0RPIERPIERJU0NPIERFIEJPT1QgIChET1MvV2luZG93cyA5eCkKCkBlbnVtZXJhdGUKCkBpdGVtIENyaWFyIHVtIGRpc2NvIGRlIGJvb3QgZG8gV2luZG93cwoKQGl0ZW1pemUgQGJ1bGxldAoKQGl0ZW0gQ2FycmVndWUgbyBXaW5kb3dzLiBAZW1waHtJc3RvIGltcGxpY2EgcXVlIHZvY+ogZGV2ZQpmYXplciB1bSBkaXNjbyBkZSBib290IGFudGVzIGRlIHVzYXIgbyBwYXJ0ZWR9LgoKQGl0ZW0gQ2xpcXVlIGNvbSBvIGRpcmVpdG8gbm8gZHJpdmUgZGUgZGlzcXVldGUgbm8gV2luZG93cyBFeHBsb3Jlci4KCkBpdGVtIENsaXF1ZSBlbSBgYEZvcm1hdGFyJycuCgpAaXRlbSBTZWxlY2lvbmUgYGBDb3BpYXIgc29tZW50ZSBvcyBhcnF1aXZvcyBkZSBzaXN0ZW1hJycuCgpAaXRlbSBDbGlxdWUgZW0gYGBGb3JtYXRhcicnLgoKQGl0ZW0gQ29waWUgbyBDOlxXSU5ET1dTXENPTU1BTkRcU1lTLkNPTSBwYXJhIG8gQTpcIE5vdGE6IHZvY+ogZGV2ZQp0ZXIgY2hhbWFkbyBvIEM6XFdJTkRPV1MgZGUgYWxnbyBtYWlzLCBjb21vIEM6XFdJTjk4LgoKQGVuZCBpdGVtaXplCgpAaXRlbSBDYXJyZWd1ZSBvIGRpc2NvIGRlIGJvb3QgZG8gV2luZG93cywgZGVpeGFuZG8gbyBkaXNjbyBkZSBib290IG5vCmRyaXZlIGRlIGRpc3F1ZXRlIHF1YW5kbyBjYXJyZWdhci4gVm9j6iBwb2RlIHByZWNpc2FyIGRpemVyIOAgc3VhIEJJT1MKcGFyYSB1c2FyIG8gZGlzcXVldGUgY29tbyBib290LgoKQGl0ZW0gRGlnaXRlIG8gc2VndWludGUgbm8gcHJvbXB0IGRvIERPUzoKCkBleGFtcGxlCkE6XD5Aa2Jke3N5cyBjOn0KQGVuZCBleGFtcGxlCgpAZW5kIGVudW1lcmF0ZQoKQGl0ZW0gTclUT0RPIERPIENEUk9NOiAgKFdpbmRvd3MgOXgvTUUpCgpAZW51bWVyYXRlCgpAaXRlbSBJbnNpcmEgbyBDRFJPTSBkbyBXaW5kb3dzLCBlIGZh52EgYm9vdCBkZWxlLiAoU2VsZWNpb25lIGBgYm9vdCBzZW0Kc3Vwb3J0ZSBhIENEUk9NJycpLgoKQGl0ZW0gRGlnaXRlOgoKQGV4YW1wbGUKQTpcPkBrYmR7Yzp9CkM6XD5Aa2Jke2NkIFx3aW5kb3dzXGNvbW1hbmR9ICAgIChwb2RlIHNlciBcd2luOThcY29tbWFuZCwgb3Ugc2ltaWxhcikKQzpcV0lORE9XU1xDT01NQU5EPkBrYmR7c3lzIGM6fQpAZW5kIGV4YW1wbGUKCklzdG8g6SB0dWRvLgoKQGVuZCBlbnVtZXJhdGUKQGVuZCBpdGVtaXplCgpBbOltIGRpc3NvLCBvIERPUyBlIFdpbmRvd3MgaW1w9WUgYWxndW1hcyByZXN0cmnn9WVzOgoKQGl0ZW1pemUgQGJ1bGxldAoKQGl0ZW0gQSBwYXJ0aefjbyBkZSBib290IGRldmUgc2VyIHNlbGVjaW9uYWRhIGNvbSBvIGluZGljYWRvciBgYGJvb3QnJy4KU29tZW50ZSB1bWEgcGFydGnn428gcG9kZW0gc2VyIHNlbGVjaW9uYWRhcyAoYWxndW1hcyB2ZXplcyBjaGFtYWRhcyBkZQpwYXJ0aef1ZXMgYGBhdGl2YXMnJykuIFBvciBleGVtcGxvLCBwYXJhIGRlZmluaXIgYSBwYXJ0aefjbyAzIGNvbW8gYQpwYXJ0aefjbyBkZSBib290IGZh52E6CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke3NldCAzIGJvb3Qgb259CkBlbmQgZXhhbXBsZQoKQGl0ZW0gTyBNUyBET1MgZSBvIE1TIFdpbmRvd3MgOXgvTUUgc/MgcG9kZW0gZmF6ZXIgYm9vdCBkYSBwcmltZWlyYQpwYXJ0aefjbyBGQVQuIElzdG8g6SwgYSBwYXJ0aefjbyBGQVQgY29tIG8gbWVub3IgbvptZXJvIGRlIHBhcnRp5+NvLApxdWUgbuNvIGVzdOEgb2N1bHRhLiBOb3RlIHF1ZSBvcyBjYXJyZWdhZG9yZXMgZGUgYm9vdCBjb21vIG8gR1JVQiBlIG8KTElMTyAoZSBhbGd1bWFzIEJJT1NzKSBwb2RlbSBtdWRhciBlc3NlIGNvbXBvcnRhbWVudG9AZG90c3t9CgpAaXRlbSBTZSB2b2PqIGVzdOEgdXNhbmRvIGVuZGVyZedhbWVudG8gQ0hTIChhbyBpbnbpcyBkZSBlbmRlcmXnYW1lbnRvCkxCQSksIGVudONvIG8gaW7tY2lvIGRhIHBhcnRp5+NvIGRlIGJvb3QgZGV2ZSBzZXIgYW50ZXMgZG8gY2lsaW5kcm8gMTAyNC4KVm9j6iBwb2RlIGRpemVyIGFvIE1TIERPUyBwYXJhIHVzYXIgKG91IG7jbyB1c2FyKSBvIGVuZGVyZedhbWVudG8gTEJBLApoYWJpbGl0YW5kbyBvdSBkZXNhYmlsaXRhbmRvIG8gaW5kaWNhZG9yIExCQSBuYSBwYXJ0aefjbyBkZSBib290LiBQb3IKZXhlbXBsbywgaGFiaWxpdGFyIG8gaW5kaWNhZG9yIExCQSBuYSBwYXJ0aefjbyAyLCBmYedhOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtzZXQgMiBsYmEgb259CkBlbmQgZXhhbXBsZQoKTm90YTogbyBlbmRlcmXnYW1lbnRvIExCQSBu428g6SBzdXBvcnRhZG8gcGVsbyBNUy1ET1MgNi4yMiBvdSBpbmZlcmlvciwKYmVtIGNvbW8gdG9kYXMgYXMgdmVyc/VlcyBkbyBQQy1ET1MuCgpBdmlzbzogYWxndW1hcyBCSU9TcyBu428gduNvIGhhYmlsaXRhciBvIGVuZGVyZedhbWVudG8gTEJBLCBhbyBtZW5vcwpxdWUgdm9j6iBoYWJpbGl0ZSBuYSBCSU9TIHRhbWLpbS4gU2UsIHBvciBhbGd1bWEgcmF6428sIG8gV2luZG93cyBu428KaW5pY2lhbGl6YXIgYXDzcyBtdWRhciBlc3NlIGluZGljYWRvciwgZW50428gZXN0ZSDpIHByb3ZhdmVsbWVudGUgbwpwcm9ibGVtYS4KCkBpdGVtIG8gTVMtRE9TIGBgcmVhbCcnIChwb3IgZXhlbXBsbywgdmVyc+NvIDYuMiBwcmEgY2ltYSkgZSBvIE1TLURPUwo3LjAgKHBvciBleGVtcGxvLCBvIFdpbmRvd3MgOTUvOThhKSBu428gY29uaGVjZW0gRkFUMzIuIEVudONvIOkgcG9zc+12ZWwKaW5pY2lhbGl6YXIgZWxlcyBkYSBAZW1waHtzZWd1bmRhIHBhcnRp5+NvIGZhdH0gKHNvbWVudGUgRkFUMTYsIGNsYXJvKSwKcXVhbmRvIEBlbXBoe2EgcHJpbWVpcmEgcGFydGnn428gZmF0fSDpIEZBVDMyLiBBbWJhcyB0ZW0gcXVlIHNlciBwYXJ0aef1ZXMKcHJpbeFyaWFzLCBlbnTjbyB2b2PqIHByb3ZhdmVsbWVudGUgdmFpIHRlciBxdWUgZGVmaW5pciBxdWFsIHZvY+ogcXVlcgppbmljaWFsaXphciBjb21vIHBhcnRp5+NvIGF0aXZhLgoKQGVuZCBpdGVtaXplCgpAbm9kZSBNUyBXaW5kb3dzIE5UCkBzZWN0aW9uIE8gQ2FycmVnYWRvciBkZSBCb290IGRvIE1pY3Jvc29mdCBXaW5kb3dzIE5UCkBjaW5kZXggY2FycmVnYWRvciBkZSBib290IGRvIG1pY3Jvc29mdCB3aW5kb3dzIG50CgpPIFdpbmRvd3MgTlQgbuNvIHBvZGUgbGVyIG91IGluaWNpYWxpemFyIGRlIHBhcnRp5/VlcyBGQVQzMi4gUG9ydGFudG8sCnZvY+ogbuNvIGRldmUgbnVuY2EgY29udmVydGVyIHBhcnRp5/VlcyBGQVQxNiBwYXJhIEZBVDMyLCBzZSB2b2PqIHF1ZXIKdXPhLWxhcyBjb20gbyBXaW5kb3dzIE5ULgoKQG5vZGUgTVMgV2luZG93cyAyMDAwCkBzZWN0aW9uIE8gQ2FycmVnYWRvciBkZSBCb290IGRvIE1pY3Jvc29mdCBXaW5kb3dzIDIwMDAKQGNpbmRleCBjYXJyZWdhZG9yIGRlIGJvb3QgZG8gbWljcm9zb2Z0IHdpbmRvd3MgMjAwMAoKTyBXaW5kb3dzIDIwMDAgcmVxdWVyIHF1ZSB2b2PqIHJlaW5zdGFsZSBvIGNhcnJlZ2Fkb3IgZGUgYm9vdCBzZSB2b2PqCm11ZGFyIG8gdGlwbyBkZSBGQVQgKEZBVDE2IG91IEZBVDMyKSBkbyBzaXN0ZW1hcyBkZSBwYXJ0aef1ZXMuIE8gUGFydGVkCnZhaSBhdmlzYXIgdm9j6iBhbnRlcyBkZSB0ZW50YXIgZmF6ZXIgaXNzby4gUGFyYSByZWluc3RhbGFyIG8gY2FycmVnYWRvcgpkZSBib290LCBmYedhOgoKQGVudW1lcmF0ZQpAaXRlbSBGYedhIGJvb3QgZG8gQ0QgZG8gV2luZG93cyAyMDAwLgpAaXRlbSBFbGUgdmFpIHBlcmd1bnRhciBzZSB2b2PqIHF1ZXIgY29udGludWFyLiBBcGVydGUgRW50ZXIuCkBpdGVtIEVsZSBlbnTjbyB2YWkgcGVyZ3VudGFyIHNlIHZvY+ogcXVlciBpbnN0YWxhciB1bSBub3ZvIHNpc3RlbWEsIG91CkNvbnNlcnRhciB1bSBzaXN0ZW1hIHBy6S1leGlzdGVudGUuIEVzY29saGEgYSD6bHRpbWEgKGFwZXJ0YW5kbyBgYFInJykuCkVsZSB2YWkgcGVyZ3VudGFyIHNlIHZvY+ogcXVlciByZXBhcmFyIGF1dG9tYXRpY2FtZW50ZSwgb3Ugc2Ugdm9j6iBxdWVyCnVzYXIgbyBjb25zb2xlIGRlIHJlY3VwZXJh5+NvLiBFc2NvbGhhIHVzYXIgbyBjb25zb2xlIGRlIHJlY3VwZXJh5+NvLgpAaXRlbSBObyBjb25zb2xlLCBkaWdpdGU6CgpAZXhhbXBsZQpDOlw+QGtiZHtmaXhib290fQpAZW5kIGV4YW1wbGUKCk8gc2lzdGVtYSBkZXZlIGluaWNpYWxpemFyIGNvbSBzdWNlc3NvIGFnb3JhLgpAZW5kIGVudW1lcmF0ZQoKTyBjYXJyZWdhZG9yIGRlIGJvb3QgZG8gTlQvMjAwMCB0YW1i6W0gcHJlY2lzYToKCkBpdGVtaXplIEBidWxsZXQKCkBpdGVtIHNldSBwcvNwcmlvIGPzZGlnbyBubyBzZXRvciBkZSBib290IGRlIHVtYSBwYXJ0aefjbyBQUklNwVJJQQpGQVQxMiwgRkFUMTYgb3UgTlRGUyAoRkFUMzIg6SBwb3Nz7XZlbCBjb20gbyBXaW5kb3dzIDIwMDApLCBxdWUg6QpjaGFtYWRhIGRlIGBgcGFydGnn428gZGUgc2lzdGVtYScnLiBFc3RhIHBhcnRp5+NvIGRldmUgc2VyIG1hcmNhZGEKY29tIG8gaW5kaWNhZG9yIGRlIGBgYm9vdCcnIG5vIFBhcnRlZC4KCkBpdGVtIG9zIGFycXVpdm9zIE5UTERSLCBCT09ULklOSSBlIE5UREVURUNULkNPTSBkZW50cm8gZG8gc2lzdGVtYQpkYSBwYXJ0aefjby4gTyBCT09ULklOSSBndWFyZGEgdG9kYSBhIGluZm9ybWHn428gc29icmUgYSBsb2NhbGl6Yefjbwpm7XNpY2EgZGEgcHJpbWVpcmEgcGFydGnn428gb3UgZGUgdW0gZHJpdmUgbPNnaWNvIGFvbmRlIG8gV2luZG93cyBOVApmb2kgaW5zdGFsYWRvLCBjaGFtYWRvIGRlIGBgcGFydGnn428gZGUgYm9vdCcnLiBBIHBhcnRp5+NvIGRlIGJvb3QgZQphIHBhcnRp5+NvIGRlIHNpc3RlbWEgcG9kZW0gZXN0YXIgbG9jYWxpemFkYXMganVudGFzIG51bWEgcGFydGnn428KcHJpbeFyaWEuCgpAYyBSTUs6IHVzYWdlOiBhbWJpZ3VvdXMgdXNlIG9mICd0aGlzJzogaXQgcmVmZXJzIHRvIGRpc2sgY29udHJvbGxlcj8KQGl0ZW0gb3BjaW9uYWxtZW50ZSwgbyBhcnF1aXZvIE5UQk9PVERELlNZUyBkZW50cm8gZG8gc2lzdGVtYXMgZGUKcGFydGnn9WVzIHF1ZSDpIHJlbm9tZWFkbyBkcml2ZXIgZGUgZGlzY28gcGFyYSBvIHNldSBjb250cm9sYWRvciBTQ1NJCm91IElERSwgcXVhbmRvIGVsZSBu428gdGVtIEJJT1MgcHLzcHJpYSAob3Ugc3VhIEJJT1MgbuNvIGFjZXNzYSBkaXNjb3MKZ3JhbmRlcykuCgpAaXRlbSBjb20gbyBNUyBXaW5kb3dzIE5ULCBvIHNpc3RlbWFzIGRlIHBhcnRp5/VlcyBkZXZlIHRlcm1pbmFyIGFudGVzCmRvIGNpbGluZHJvIDEwMjQgZSBAZW1waHtkZXZlfSBjb21l52FyIGFudGVzIGRvIGNpbGluZHJvIDEwMjQuIFNlIGVsZQp0ZXJtaW5hIGFudGVzIGRvIGNpbGluZHJvIDEwMjQgZSBvcyBhcnF1aXZvcyBuZWNlc3PhcmlvcyBwYXJhIGEKaW5pY2lhbGl6YefjbyBz428gbW92aWRvcyBkZXBvaXMgZGVzc2EgYm9yZGEsIG8gTVMgV2luZG93cyBOVCBu428gdmFpIG1haXMKaW5pY2lhbGl6YXIuCkBpdGVtIGFtYm9zIGEgcGFydGnn428gZGUgYm9vdCBlIGRlIHNpc3RlbWFzIGRldmUgc2VyIHJlZGltZW5zaW9uYWRhLCBzZW0KYSBuZWNlc3NpZGFkZSBkZSBxdWFscXVlciBvdXRyYSBtdWRhbudhLgoKQGl0ZW0gc2UgbyBu+m1lcm8gZGEgcGFydGnn428gZGUgYm9vdCBtdWRhIChwb3IgZXhlbXBsbywgc2V1IG76bWVybwpkZSBwYXJ0aefjbyksIGVudONvIG8gQk9PVC5JTkkgZGV2ZSBzZXIgYXR1YWxpemFkby4KCkBlbmQgaXRlbWl6ZQoKQG5vZGUgUXVpawpAc2VjdGlvbiBRdWlrOiB1bSBjYXJyZWdhZG9yIGRlIGJvb3QgcGFyYSBQb3dlclBDcyBNYWNpbnRvc2gKQGNpbmRleCBjYXJyZWdhZG9yIGRlIGJvb3QgcGFyYSBtYWNpbnRvc2hzIGRvIHZlbGhvIG11bmRvCkBjaW5kZXggdmVsaG8gbXVuZG8sIGNhcnJlZ2Fkb3IgZGUgYm9vdCBkbyBtYWNpbnRvc2ggZG8KCk8gUXVpayDpIHVtIGNhcnJlZ2Fkb3IgZGUgYm9vdCBwb3B1bGFyIHBhcmEgUG93ZXJQQ3MgTWFjaW50b3NoIGRvCmBgVmVsaG8gTXVuZG8nJy4gVm9j6iBwcmVjaXNhIHJlaW5zdGFsYXIgbyBRdWlrIHNlIHZvY+ogcmVkaW1lbnNpb25hcgp1bWEgcGFydGnn428gZXh0MiwgdXNhbmRvOgoKQGV4YW1wbGUKIyBAa2Jkey9zYmluL3F1aWt9CkBlbmQgZXhhbXBsZQoKQG5vZGUgWWFib290CkBzZWN0aW9uIFlhYm9vdDogdW0gY2FycmVnYWRvciBkZSBib290IHBhcmEgUG93ZXJQQ3MgTWFjaW50b3NoCkBjaW5kZXggY2FycmVnYWRvciBkZSBib290IHBhcmEgbWFjaW50b3NocyBkbyB2ZWxobyBtdW5kbwpAY2luZGV4IHZlbGhvIG11bmRvLCBjYXJyZWdhZG9yZXMgZGUgYm9vdCBwYXJhIG1hY2ludG9zaHMgZG8KTyBZYWJvb3Qg6SB1bSBjYXJyZWdhZG9yIGRlIGJvb3QgcG9wdWxhciBwYXJhIFBvd2VyIFBDcyBNYWNpbnRvc2gKZG8gYGB2ZWxobyBtdW5kbycnLiAoYGBOb3ZvLW11bmRvJycgc2UgcmVmZXJlIGFvcyBQb3dlclBDcyBjb2xvcmlkb3MKZmFicmljYWRvcyBkZXNkZSAxOTk5LikKCk8gWWFib290IHByZWNpc2EgZGUgc3VhIHBhcnRp5+NvIGRlIGJvb3QgcXVlIGRldmUgc2VyIHBlbG8gbWVub3MgODAway4KRW50428sIHNlIHZvY+ogZXN04SBpbnN0YWxhbmRvIG8gR05VL0xpbnV4IGRvIHplcm8sIHZvY+ogZmFyaWEgYWxnbwpjb21vIGlzc286CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke21rbGFiZWwgbWFjfQpAZ3JvdXAKKHBhcnRlZCkgQGtiZHtwcmludH0KRGlzayBnZW9tZXRyeSBmb3IgL2Rldi9zZGE6IDAuMDAwLTYxNDkuODgyIG1lZ2FieXRlcwpEaXNrIGxhYmVsIHR5cGU6IG1hYwpNaW5vciAgICBTdGFydCAgICAgICBFbmQgICAgIEZpbGVzeXN0ZW0gIE5hbWUgICAgICAgICAgRmxhZ3MKMSAgICAgICAgICAwLjAwMCAgICAgIDAuMDMxICAgICAgICAgICAgICBBcHBsZQpAZW5kIGdyb3VwCihwYXJ0ZWQpIEBrYmR7bWtwYXJ0IHByaW1hcnkgaGZzIDAuMDMyIDF9CkBncm91cAoocGFydGVkKSBAa2Jke3ByaW50fQpEaXNrIGdlb21ldHJ5IGZvciAvZGV2L2hkYjogMC4wMDAtNjE0OS44ODIgbWVnYWJ5dGVzCkRpc2sgbGFiZWwgdHlwZTogbWFjCk1pbm9yICAgIFN0YXJ0ICAgICAgIEVuZCAgICAgRmlsZXN5c3RlbSAgTmFtZSAgICAgICAgICBGbGFncwoxICAgICAgICAgIDAuMDAwICAgICAgMC4wMzEgICAgICAgICAgICAgIEFwcGxlCjIgICAgICAgICAgMC4wMzEgICAgICAxLjAwMApAZW5kIGdyb3VwCihwYXJ0ZWQpIEBrYmR7c2V0IDIgYm9vdCBvbn0KQGdyb3VwCihwYXJ0ZWQpIEBrYmR7cHJpbnR9CkRpc2sgZ2VvbWV0cnkgZm9yIC9kZXYvaGRiOiAwLjAwMC02MTQ5Ljg4MiBtZWdhYnl0ZXMKRGlzayBsYWJlbCB0eXBlOiBtYWMKTWlub3IgICAgU3RhcnQgICAgICAgRW5kICAgICBGaWxlc3lzdGVtICBOYW1lICAgICAgICAgIEZsYWdzCjEgICAgICAgICAgMC4wMDAgICAgICAwLjAzMSAgICAgICAgICAgICAgQXBwbGUKMiAgICAgICAgICAwLjAzMSAgICAgIDEuMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3QKQGVuZCBncm91cApAZW5kIGV4YW1wbGUKClZvY+ogbuNvIHByZWNpc2EgcmVpbnN0YWxhciBvIFlhYm9vdCBkZXBvaXMgZGUgcmVkaW1lbnNpb25hciB1bWEgcGFydGnn428uCk8gWWFib290IOkgaW5zdGFsYWRvIGNvbSBvIHliaW4gQHJlZntTb2Z0d2FyZSBSZWxhY2lvbmFkb30uCgpAbm9kZSBTaXN0ZW1hcyBPcGVyYWNpb25haXMKQGNoYXB0ZXIgU2lzdGVtYXMgT3BlcmFjaW9uYWlzCkBjaW5kZXggc2lzdGVtYXMgb3BlcmFjaW9uYWlzCgpPIFBhcnRlZCBzb21lbnRlIHJvZGEgc29iIG8gR05VL0xpbnV4IGUgbyBHTlUvSHVyZCwgbm8gbW9tZW50by4gQ29udHVkbywKZWxlIHBvZGUgc2VyIHVzYWRvIHBhcmEgcmVkaW1lbnNpb25hciBwYXJ0aef1ZXMgdXNhZGFzIHBvciwgb3UKY29tcGFydGlsaGFkYXMgY29tIG91dHJvcyBzaXN0ZW1hcyBvcGVyYWNpb25haXMuCgpRdWFuZG8gdm9j6iBxdWVyIHJlZGltZW5zaW9uYXIgdW0gc2lzdGVtYXMgZGUgYXJxdWl2bywgY2VydGlmaXF1ZS1zZQpkZSBxdWUgbuNvIGVzdOEgbW9udGFkby4gTyBQYXJ0ZWQgbuNvIHBvZGUgcmVkaW1lbnNpb25hciBwYXJ0aef1ZXMKbW9udGFkYXMgKGlzdG8gcG9kZSBtdWRhciBubyBmdXR1cm9AZG90c3t9KS4KU2Ugdm9j6iBtb2RpZmljYXIgYSB0YWJlbGEgZGUgcGFydGnn9WVzIG51bSBkaXNjbyBjb20gdW0gcGFydGnn428gbW9udGFkYQpuZWxhLCB2b2PqIGRldmUgcmVpbmljaWFyIGltZWRpYXRhbWVudGUuIE8gTGludXggbuNvIHZhaSBzYWJlciBzb2JyZSBhcwptdWRhbudhcyBxdWUgdm9j6iBmZXogbmEgdGFiZWxhIGRlIHBhcnRp5/Vlcy4gKElzdG8gdmFpIHNlciBjb3JyaWdpZG8sCmNvbSBvIGtlcm5lbCAyLjQsIGUgcXVhbmRvIG7zcyBhZGljaW9uYXJtb3Mgc3Vwb3J0ZSBhIGVsZS4pCgpTZSB2b2PqIHF1ZXIgcmVkaW1lbnNpb25hciBzdWEgcGFydGnn428gcm9vdCBvdSBkZSBib290LCB1c2UgdW0gZGlzY28KZGUgYm9vdCBAeHJlZntEaXNjb3MgZGUgYm9vdCBkbyBQYXJ0ZWR9LCBvdSB1c2UgbyByZWRpbWVuc2lvbmFkb3IKb25saW5lIGRvIEFuZHJlYXMgRGlsZ2VyLCBpbmNsde1kbyBubyBwYWNvdGUgZXh0MnJlc2l6ZSBAcmVme0V4dDJ9LgoKQG1lbnUKKiBHTlUvTGludXggZSBGcmVlQlNEOjogICAgIFN1cG9ydGUgYSB0YWJlbGFzIGRlIHBhcnRp5+NvIG5lc3NlcyBzaXN0ZW1hcyBsaXZyZXMKKiBNUyBXaW5kb3dzIGFuZCBPUy8yOjogICAgIFN1cG9ydGUgYSB0YWJlbGFzIGRlIHBhcnRp5+NvIG5lc3NlcyBzaXN0ZW1hcwoqIE1hY09TOjogICAgICAgICAgICAgICAgICAgQXMgdGFiZWxhcyBkZSBwYXJ0aefjbyBzdXBvcnRhZGFzIHBlbG8gTWFjT1MKQGVuZCBtZW51CgpAbm9kZSBHTlUvTGludXggZSBGcmVlQlNECkBzZWN0aW9uIFRhYmVsYXMgZGUgcGFydGnn428gdXNhZGFzIHBlbG8gR05VL0xpbnV4IGUgRnJlZUJTRApAY2luZGV4IHRhYmVsYXMgZGUgcGFydGnn428gZG8gZ251L2xpbnV4CkBjaW5kZXggdGFiZWxhcyBkZSBwYXJ0aefjbyBkbyBmcmVlYnNkCkBjaW5kZXggZnJlZWJzZCwgdGFiZWxhcyBkZSBwYXJ0aefjbyBkbwpAY2luZGV4IGxpbnV4LCB0YWJlbGFzIGRlIHBhcnRp5+NvIGRvCgpBbWJvcyBvcyBzaXN0ZW1hcyBHTlUvTGludXggZSBGcmVlQlNEIHPjbyBtYWlzIG1haXMgZmxleO12ZWlzIHF1YW50bwphIHRhYmVsYXMgZGUgcGFydGnn428sIHN1cG9ydGFuZG8gbXVpdG9zIHRpcG9zIGRlIHRhYmVsYXMgZGUgcGFydGnn428uCgpAYyBSTUs6IHBhZGRpbmc6IGFkZGVkIG5vdGVzIGFib3V0IGRpc2tsYWJlbCBzdXBwb3J0IGZvciBMaW51eCBrZXJuZWwKUG9yIHNlciBtYWlzIGRpZu1jaWwgcGFyYSB1bWEgbeFxdWluYSB1c2FyIGRpc2NvcyBy7WdpZG9zIGNvbSB0YWJlbGFzCmRlIHBhcnRp5+NvIG5vcm1hbG1lbnRlIHVzYWRhcyBwb3Igb3V0cmFzIGFycXVpdGV0dXJhcywgZGlzdHJpYnVp5/VlcwpwYWRy428gZG8ga2VybmVsIGRvIExpbnV4IHNvbWVudGUgc3Vwb3J0YW0gYXMgdGFiZWxhcyBkZSBwYXJ0aefjbwpwb3B1bGFyZXMgcGFyYSBhIGFycXVpdGV0dXJhIHBhcmEgYXMgcXVhaXMgZm9yYW0gY29tcGlsYWRhcy4gUG9yCmV4ZW1wbG8sIHVtIGtlcm5lbCBkbyBMaW51eCBwYWRy428gY29tcGlsYWRvIHBhcmEgbyBQQyBwcm92YXZlbG1lbnRlCm7jbyB2YWkgdGVyIHN1cG9ydGUgYSB0YWJlbGFzIGRlIHBhcnRp5+NvIGRvIE1hYyBvdSBkYSBTdW4uIFBhcmEgYWNlc3NhcgpvcyBzaXN0ZW1hcyBkZSBhcnF1aXZvIGVtIGRpc2NvcyBjb20gdGFiZWxhcyBkZSBwYXJ0aefjbyBu428gc3Vwb3J0YWRvcywKbyBrZXJuZWwgdmFpIHRlciBxdWUgc2VyIHJlY29tcGlsYWRvLgoKTyBGcmVlQlNEIHRlbSB1bSBzaXN0ZW1hcyBkZSB0YWJlbGFzIGRlIHBhcnRp5/VlcyBxdWUg6SBpbmNvbXBhdO12ZWwKY29tIGFzIHRhYmVsYXMgZGUgcGFydGnn9WVzIGRvIE1TRE9TLiBPIFBhcnRlZCBzb21lbnRlIHN1cG9ydGEgbwpzaXN0ZW1hcyBkZSB0YWJlbGFzIGRlIHBhcnRp5+NvIGRvcyBCU0RzLiDJIGltcHJvduF2ZWwgcXVlIHN1cG9ydGUKbyBzaXN0ZW1hcyBkZSBwYXJ0aef1ZXMgZW0gZmF0aWFzLCBwb3JxdWUgYSBzZW3ibnRpY2Eg6SBtdWl0byBlc3RyYW5oYSwKZSBu428gdHJhYmFsaGEgY29tbyB0YWJlbGFzIGRlIHBhcnRp5+NvIGBgbm9ybWFpcycnLgoKQG5vZGUgTyBNUyBXaW5kb3dzIGUgbyBPUy8yCkBzZWN0aW9uIFRhYmVsYXMgZGUgcGFydGnn428gZGUgZGlzY28gc3Vwb3J0YWRhcyBwb3Igc2lzdGVtYXMgTWljcm9zb2Z0IGUgbyBPUy8yCkBjaW5kZXggdGFiZWxhcyBkZSBwYXJ0aefjbyBsZWdhZGFzIHBlbGEgbWljcm9zb2Z0IGUgYSBpYm0KQGNpbmRleCBtaWNyb3NvZnQgZSBpYm0sIHRhYmVsYXMgZGUgcGFydGnn428gbGVnYWRhcyBwZWxhCgpPIE1TIFdpbmRvd3MgZSBvIE9TLzIgc29tZW50ZSBzdXBvcnRhbSBhcyB0YWJlbGFzIGRlIHBhcnRp5+NvIGRvIE1TRE9TLgpQb3J0YW50bywgc2Ugdm9j6iBjcmlhciB1bWEgbm92YSB0YWJlbGEgZGUgcGFydGnn9WVzLCB2b2PqIGRldmUgdXNhcjoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7bWtsYWJlbCBtc2Rvc30KQGVuZCBleGFtcGxlCgpAbm9kZSBNYWNPUwpAc2VjdGlvbiBTdXBvcnRlIGEgVGFiZWxhcyBkZSBQYXJ0aefjbyBubyBTaXN0ZW1hIE9wZXJhY2lvbmFsIE1hY2ludG9zaApAY2luZGV4IHRhYmVsYXMgZGUgcGFydGnn428gZG8gbWFjaW50b3NoCkBjaW5kZXggbWFjaW50b3NoLCB0YWJlbGFzIGRlIHBhcnRp5+NvIGRvCgpAYyBSTUs6IGNvbXBsZXRlbmVzczogZG9lcyBNYWMgT1MgWCB1bmRlcnN0YW5kIG5vbi1tYWMgZGlza2xhYmVscz8KTyBNYWNPUyAoZSBvIE9wZW5GaXJtd2FyZSkgc29tZW50ZSBlbnRlbmRlIGFzIHRhYmVsYXMgZGUgcGFydGnn428KZG8gbWFjLiBQb3J0YW50byBzZSB2b2PqIGNyaWFyIHVtYSBub3ZhIHRhYmVsYXMgZGUgcGFydGnn9WVzLAp2b2PqIGRldmUgdXNhcjoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7bWtsYWJlbCBtYWN9CkBlbmQgZXhhbXBsZQoKTm90ZSBxdWUgcGFyYSB0YWJlbGFzIGRlIHBhcnRp5+NvIGRvIE1hYywgdm9j6iBkZXZlIGV2aXRhciBkZWl4YXIKZXNwYedvcyBsaXZyZXMgZW0gdm9sdGEsIHBvcnF1ZSBhcyByZWdp9WVzIGRlIGVzcGHnbyBsaXZyZSBkZWl4YW0KZW50cmFkYXMgbmEgdGFiZWxhIGRlIHBhcnRp5/VlcyAoZSBvIExpbnV4IG7jbyBnb3N0YSBkZSB0ZXIgbWFpcyBkZQoxNSBlbnRyYWRhcykuIFBvciBleGVtcGxvLCBzZSB2b2PqIGZpemVyOgoKQGV4YW1wbGUKQGdyb3VwCihwYXJ0ZWQpIEBrYmR7cHJpbnR9CkRpc2sgZ2VvbWV0cnkgZm9yIC9kZXYvc2RhOiAwLjAwMC02MTQ5Ljg4MiBtZWdhYnl0ZXMKRGlzayBsYWJlbCB0eXBlOiBtYWMKTWlub3IgICAgU3RhcnQgICAgICAgRW5kICAgICBGaWxlc3lzdGVtICBOYW1lICAgICAgICAgIEZsYWdzCjEgICAgICAgICAgMC4wMDAgICAgICAwLjAzMSAgICAgICAgICAgICAgQXBwbGUKMiAgICAgICAgICAwLjAzMSAgICAgIDEuMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3QKMyAgICAgICAgICAxLjAwMCAgIDEwMDAuMDAwICBleHQyICAgICAgICByb290ICAgICAgICAgIHJvb3QKQGVuZCBncm91cAoocGFydGVkKSBAa2JkeyBta3BhcnRmcyBwcmltYXJ5IGV4dDIgMTAwMSAyMDAwfQpAZ3JvdXAKKHBhcnRlZCkgQGtiZHtwcmludH0KRGlzayBnZW9tZXRyeSBmb3IgL2Rldi9zZGE6IDAuMDAwLTYxNDkuODgyIG1lZ2FieXRlcwpEaXNrIGxhYmVsIHR5cGU6IG1hYwpNaW5vciAgICBTdGFydCAgICAgICBFbmQgICAgIEZpbGVzeXN0ZW0gIE5hbWUgICAgICAgICAgRmxhZ3MKMSAgICAgICAgICAwLjAwMCAgICAgIDAuMDMxICAgICAgICAgICAgICBBcHBsZQoyICAgICAgICAgIDAuMDMxICAgICAgMS4wMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdAozICAgICAgICAgIDEuMDAwICAgMTAwMC4wMDAgIGV4dDIgICAgICAgIHJvb3QgICAgICAgICAgcm9vdAo0ICAgICAgIDEwMDEuMDAwICAgMjAwMC4wMDAgIGV4dDIKQGVuZCBncm91cApAZW5kIGV4YW1wbGUKCkV4aXN0ZSAxIG1lZ2FieXRlIGRlIGVzcGHnbyBsaXZyZSBlbnRyZSBhcyBwYXJ0aef1ZXMgMyBlIDQuIFZvY+ogcG9kZQpldml0YXIgaXNzbywgY3JpYW5kbyBwYXJ0aef1ZXMgZGUgMC4xTSAobm8gY2FzbywgbyBQYXJ0ZWQgYXV0b21hdGljYW1lbnRlCmBganVudGEnJyBlbGFzKS4gRW50428sIG5vIGV4ZW1wbG8gYWNpbWEsIHZvY+ogZGV2ZXJpYSBmYXplciBpc3NvIGFvIGludulzOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtta3BhcnRmcyBwcmltYXJ5IGV4dDIgMTAwMC4xIDIwMDB9CkBncm91cAoocGFydGVkKSBAa2Jke3ByaW50fQpEaXNrIGdlb21ldHJ5IGZvciAvZGV2L3NkYTogMC4wMDAtNjE0OS44ODIgbWVnYWJ5dGVzCkRpc2sgbGFiZWwgdHlwZTogbWFjCk1pbm9yICAgIFN0YXJ0ICAgICAgIEVuZCAgICAgRmlsZXN5c3RlbSAgTmFtZSAgICAgICAgICBGbGFncwoxICAgICAgICAgIDAuMDAwICAgICAgMC4wMzEgICAgICAgICAgICAgIEFwcGxlCjIgICAgICAgICAgMC4wMzEgICAgICAxLjAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290CjMgICAgICAgICAgMS4wMDAgICAxMDAwLjAwMCAgZXh0MiAgICAgICAgcm9vdCAgICAgICAgICByb290CjQgICAgICAgMTAwMC4wMDAgICAyMDAwLjAwMCAgZXh0MgpAZW5kIGdyb3VwCkBlbmQgZXhhbXBsZQoKQG5vZGUgICAgU2lzdGVtYXMgZGUgQXJxdWl2bwpAY2hhcHRlciBTaXN0ZW1hcyBkZSBBcnF1aXZvIHN1cG9ydGFkb3MgcGVsbyBQYXJ0ZWQKQGNpbmRleCBzaXN0ZW1hcyBkZSBhcnF1aXZvCgpAbWVudQoqIFNpc3RlbWFzIFN1cG9ydGFkb3M6OiAgICAgIEZpbGUgc3lzdGVtcyBvcGVyYXRpb25zIHN1cHBvcnRlZCBieSBHTlUgUGFydGVkCiogRXh0Mjo6ICAgICAgICAgICAgICAgICAgICAgU2lzdGVtYXMgZXh0MiBkbyBMaW51eCBubyBQYXJ0ZWQKKiBGQVQxNiBhbmQgRkFUMzI6OiAgICAgICAgICBTaXN0ZW1hcyBMZWdhZG9zIGUgbyBQYXJ0ZWQgZGEgTWljcm9zb2Z0IGUgbyBQYXJ0ZWQKKiBSZWlzZXJmczo6ICAgICAgICAgICAgICAgICBTaXN0ZW1hIGpvcm5hbO1zdGljbyBSZWlzZXIgZSBvIFBhcnRlZApAZW5kIG1lbnUKCkBub2RlIFNpc3RlbWFzIGRlIEFycXVpdm8gU3Vwb3J0YWRvcwpAc2VjdGlvbiBTaXN0ZW1hcyBkZSBBcnF1aXZvIFN1cG9ydGFkb3MgcGVsbyBHTlUgUGFydGVkCkBjaW5kZXggc2lzdGVtYXMgZGUgYXJxdWl2byBzdXBvcnRhZG9zCkBjaW5kZXggc2lzdGVtYXMgZGUgYXJxdWl2byBzdXBvcnRhZG9zCgpPIFBhcnRlZCB0ZW0gc3Vwb3J0ZSBhIGVzc2FzIG9wZXJh5/VlczoKCkBjIFJNSzogRklYTUU6IGNhbiB3ZSBwdXQgaW4gbmljZXIgbWFya3MgZm9yICJ0cnVlIiwgYW5kIG5vdGUgbWFya2VycwpAYyB0byBhc3NvY2lhdGUgbm90ZXMgYmVsb3cgd2l0aCBlbnRyaWVzIGluIHRoaXMgdGFibGU/CgpAbXVsdGl0YWJsZSB7RmlsZXN5c3RlbX0ge2RldGVjdH0ge2NyZWF0ZX0ge3Jlc2l6ZX0ge2NvcHl9IHtjaGVja30KQGl0ZW0gU2lzdGVtYSBkZSBBcnF1aXZvIEB0YWIgZGV0ZWN0YSBAdGFiIGNyaWEgQHRhYiByZWRpbWVuc2lvbmEgQHRhYiBjb3BpYSBAdGFiIGNoZWNhCkBpdGVtIGV4dDIgQHRhYiAqIEB0YWIgKiBAdGFiICoxIEB0YWIgKjIgQHRhYiAqMwpAaXRlbSBleHQzIEB0YWIJKiBAdGFiIEB0YWIgKjEgQHRhYiAqMiBAdGFiICozCkBpdGVtIGZhdDE2IEB0YWIgKiBAdGFiICogQHRhYiAqNCBAdGFiICo0IEB0YWIgKgpAaXRlbSBmYXQzMiBAdGFiICogQHRhYiAqIEB0YWIgKiBAdGFiICogQHRhYiAqCkBpdGVtIGhmcyBAdGFiICogQHRhYiBAdGFiIEB0YWIgQHRhYgpAaXRlbSBqZnMgQHRhYiAqIEB0YWIgQHRhYiBAdGFiIEB0YWIKQGl0ZW0gbGludXgtc3dhcCBAdGFiICogQHRhYiAqIEB0YWIgKiBAdGFiICogQHRhYiAqCkBpdGVtIG50ZnMgQHRhYiAqIEB0YWIgQHRhYiBAdGFiIEB0YWIKQGl0ZW0gcmVpc2VyZnMgQHRhYiAqIEB0YWIgKjUgQHRhYiAqMSw1IEB0YWIgKjUgQHRhYiAqMyw1CkBpdGVtIHVmcyBAdGFiICogQHRhYiBAdGFiIEB0YWIgQHRhYgpAaXRlbSB4ZnMgQHRhYiAqIEB0YWIgQHRhYiBAdGFiIEB0YWIKQGVuZCBtdWx0aXRhYmxlCgpAYyBSTUs6IG5vdGU6IHRoZSBmb2xsb3dpbmcgaXMgbm90IGFuIGVudW1lcmF0ZWQgbGlzdCwganVzdCBhIGJ1bmNoIG9mCkBjIG5vdGVzIGFzc29jaWF0ZWQgdG8gZW50cmllcyBpbiB0aGUgYWJvdmUgbWF0cml4LiAgVGhhdCdzIGJhZC4KCkBub2luZGVudCBOT1RBUzoKKDEpIE8gaW7tY2lvIGRhIHBhcnRp5+NvIGRldmUgZXN0YXIgZml4YSBwYXJhIGV4dDIsIGV4dDMgZSByZWlzZXJmcy4KCigyKSBBIHBhcnRp5+NvIHF1ZSB2b2PqIGNvcGlhIGRldmUgc2VyIG1haW9yIChvdSBleGF0YW1lbnQgbyBtZXNtbwp0YW1hbmhvKSBkYSBwYXJ0aefjbyBxdWUgdm9j6iBlc3ThIGNvcGlhbmRvLgoKKDMpIENoZWNhZ2VtIGxpbWl0YWRhIOkgZmVpdGEgcXVhbmRvIG8gc2lzdGVtYXMgZGUgYXJxdWl2byDpIGFiZXJ0by4KRXN0YSDpIGEg+m5pY2EgY2hlY2FnZW0gbm8gbW9tZW50by4gVG9kb3Mgb3MgY29tYW5kb3MgKGluY2x1aW5kbyBvCnJlc2l6ZSkgduNvIGZhbGhhciBncmFjaW9zYW1lbnRlLCBkZWl4YW5kbyBvIHNpc3RlbWFzIGRlIGFycXVpdm8KaW50YWN0bywgc2UgbuNvIGV4aXN0aXIgZXJyb3Mgbm8gc2lzdGVtYXMgZGUgYXJxdWl2byAoZSBhIHZhc3RhIG1haW9yaWEKZGUgZXJyb3Mgbm8gZ2VyYWwpLgoKKDQpIE8gdGFtYW5obyBkYSBub3ZhIHBhcnRp5+NvLCBhcPNzIHJlZGltZW5zaW9uYXIgb3UgY29waWFyLCDpIHJlc3RyaXRvCnBlbG8gdGFtYW5obyBkZSBjbHVzdGVyIHBhcmEgYSBmYXQgKHByaW5jaXBhbG1lbnRlIGFmZXRhIEZBVDE2KS4gSXN0bwrpIHBpb3IgZG8gcXVlIHZvY+ogcGVuc2EsIHBvcnF1ZSB2b2PqIG7jbyBjaGVnYSBhIGVzY29saGVyIG8gdGFtYW5obwpkbyBjbHVzdGVyIChpc3NvIOkgdW0gYnVnIG5vIFdpbmRvd3MsIG1hcyB2b2PqIHF1ZXIgY29tcGF0aWJpbGlkYWRlLApjZXJ0bz8pLgoKRW50428sIGVtIHBy4XRpY2EsIHZvY+ogc2VtcHJlIHBvZGUgZGltaW51aXIgc3VhIHBhcnRp5+NvIChwb3JxdWUgbwpQYXJ0ZWQgcG9kZSBkaW1pbnVpciBvIHRhbWFuaG8gZG8gY2x1c3RlciksIHZvY+ogbuNvIHZhaSBwb2RlciBhdW1lbnRhcgphIHBhcnRp5+NvIHBybyB0YW1hbmhvIHF1ZSB2b2PqIHF1ZXIuIFNlIHZvY+ogbuNvIHRpdmVyIHByb2JsZW1hcyBlbQp1c2FyIEZBVDMyLCB2b2PqIHNlbXByZSB2YWkgcG9kZXIgYXVtZW50YXIgYSBwYXJ0aefjbyBwcm8gdGFtYW5obwpxdWUgdm9j6iBxdWlzZXIuCgpSZXN1bW86IHZvY+ogc2VtcHJlIHBvZGUgZGltaW51aXIgYSBzdWEgcGFydGnn428uIFNlIHZvY+ogbuNvIHBvZGUKdXNhciBGQVQzMiBwb3IgYWxndW1hIHJheuNvLCBlbnTjbyB2b2PqIG7jbyB2YWkgcG9kZXIgYXVtZW50YXIgc3VhCnBhcnRp5+NvLgoKKDUpIE8gc3Vwb3J0ZSBhIHJlaXNlcmZzIOkgaGFiaWxpdGFkbyBzZSB2b2PqIGluc3RhbGFyIGxpYnJlaXNlcmZzLApkaXNwb27tdmVsIGVtIEB1cmVme3JlaXNlcmZzLmxpbnV4LmtpZXYudWF9LiAoySBwcm924XZlbCBxdWUgZXN0ZWphCmRpc29u7XZlbCBsb2dvIGVtIHd3dy5uYW1lc3lzLmNvbS4uLiBub3MgZGlnYSBzZS9xdWFuZG8gaXNzbyBhY29udGVjZXIhKQoKQG5vZGUgRXh0MgpAc2VjdGlvbiBPIEdOVSBQYXJ0ZWQgZSBvIFNlY29uZCBFeHRlbmRlZCBGaWxlc3lzdGVtCkBjaW5kZXggc3Vwb3J0ZSBhIHNpc3RlbWEgZGUgYXJxdWl2byBleHQyCkBjaW5kZXggc3Vwb3J0ZSBhIHNpc3RlbWFzIHNlY29uZCBleHRlbmRlZAoKTyBQYXJ0ZWQgbuNvIHN1cG9ydGEgZGlyZXRhbWVudGUgY/NwaWEgZGUgc2lzdGVtYXMgZGUgYXJxdWl2byBleHQyCihhaW5kYSkuIENvbnR1ZG8sIGV4aXN0ZW0gYWxndW1hcyBtYW5laXJhcyBkZSBzZSBjb25zZWd1aXIgaXNzbzoKCkBpdGVtaXplCkBpdGVtIFVzZSBvIGNvbWFuZG8gbWtmcyAob3UgbWtmcy5leHQyKSwgZSBlbnTjbyByb2RlIG5hIHNoZWxsOgoKTUUgQ09OU0VSVEUhISEgaXN0byBhaW5kYSBu428gZnVuY2lvbmEgbXVpdG8gYmVtIC0gbWFzIGRldmUgZXN0YXIgT0sKcGFyYSBhIG1haW9yaWEgZGFzIHBlc3NvYXNAZG90c3t9CgpAZXhhbXBsZQojIEBrYmR7bW91bnQgLXQgZXh0MiAvZGV2L2hkYTIgL21udC9kc3R9CiMgQGtiZHtmaW5kIC9tbnQvc3JjIC1kZXB0aCB8IGNwaW8gLXBtIC9tbnQvZHN0fQpAZW5kIGV4YW1wbGUKCkBpdGVtIFNlIHZvY+ogZHVwbGljYXIgdW1hIHBhcnRp5+NvIHF1ZSBzZXLhIG1haW9yIHF1ZSBvIG9yaWdpbmFsLAppc3RvIHRhbWLpbSBwb2RlIHNlciBmZWl0bzogcHJpbWVpcm8sIGNyaWUgdW1hIG5vdmEgcGFydGnn428gZXh0Mi4KRW504286CgpAZXhhbXBsZQojIEBrYmR7ZGQgaWY9L2Rldi9kc3AtYW50aWdvIG9mPS9kZXYvZHNwLW5vdm8gYnM9MTAyNCBjb3VudD1AdmFye3RhbV9hbnR9fQojIEBrYmR7cGFydGVkIC9kZXYvaGRhIHJlc2l6ZSAyIEB2YXJ7aW7tY2lvfSBAdmFye2ZpbX19CkBlbmQgZXhhbXBsZQoKQG5vaW5kZW50IGFvbmRlIEB2YXJ7dGFtX2FudH0g6SBvIHRhbWFuaG8gZGEgcGFydGnn428gb3JpZ2luYWwgZW0ga2lsb2J5dGVzLgpAdmFye2lu7WNpb30gZSBAdmFye2ZpbX0gc+NvIG8gbm92byBjb21l528gZSBmaW0gcGFyYSBhIHBhcnRp5+NvIGR1cGxpY2FkYS4KQGVuZCBpdGVtaXplCgpAbm9kZSBGQVQxNiBlIEZBVDMyCkBzZWN0aW9uIFN1cG9ydGUgYSBTaXN0ZW1hcyBkZSBBcnF1aXZvIGRhIE1pY3Jvc29mdApAY2luZGV4IHN1cG9ydGUgYSBzaXN0ZW1hcyBkZSBhcnF1aXZvIGZhdApAY2luZGV4IHN1cG9ydGUgYSBzaXN0ZW1hcyBkZSBhcnF1aXZvIGxlZ2Fkb3MgZGEgbWljcm9zb2Z0CgpPIFBhcnRlZCBu428gcG9kZSBhdW1lbnRhciBvIHRhbWFuaG8gZG8gY2x1c3RlciBkZSBzaXN0ZW1hcyBkZSBhcnF1aXZvCkZBVCAoYWluZGEpLiBJc3RvIHD1ZSByZXN0cmnn9WVzIGVtIHJlZGltZW5zaW9uYXIgZSBjb3BpYXIgcGFydGnn9WVzLgpJc3RvIOkgZ2VyYWxtZW50ZSBiaXphcnJvLCBwb3JxdWUgbyBQYXJ0ZWQgcG9kZSBjb252ZXJ0ZXIgc2lzdGVtYXMgZGUKYXJxdWl2byBlbnRyZSBGQVQxNiBlIEZBVDMyLCBxdWUgdGVtIHJlc3Ryaef1ZXMgZGlmZXJlbnRlcyBubyBxdWUgbwp0YW1hbmhvIGRvIGNsdXN0ZXIgcG9kZSBzZXIuCgpQb3IgZXhlbXBsbywgdmFtb3MgZGl6ZXIgcXVlIHVtYSBwYXJ0aefjbyBkZSAxMDBNYiBjb20gdW0gdGFtYW5obyBkZQpjbHVzdGVyIGRlIDRrLiBFc3RhIHBhcnRp5+NvIG7jbyBwb2RlIHNlciByZWRpbWVuc2lvbmFkb3MgcGFyYSA0MDBNYiwKcG9ycXVlIG8gdGFtYW5obyBkbyBjbHVzdGVyIGRldmVyaWEgc2VyIG11ZGFkbyBwYXJhIDE2ay4gQ29udHVkbywgZWxlCnBvZGUgc2VyIHJlZGltZW5zaW9uYWRvIHBhcmEgNjAwTWIgc2Ugdm9j6iB1c2FyIEZBVDMyLiBPIGNvbnRy4XJpbyDpCnZlcmRhZGUgcGFyYSBzaXN0ZW1hcyBkZSBhcnF1aXZvIEZBVDMyIGRlIDYwME1iLgoKTm90ZTogcXVhbmRvIHZvY+ogY29waWEgb3UgcmVkaW1lbnNpb25hIHVtIHNpc3RlbWFzIGRlIGFycXVpdm8sIG8gUGFydGVkCnZhaSBwZXJndW50YXIgc2Ugdm9j6iBxdWVyIGNvbnZlcnRlciBlbnRyZSBGQVQxNiBlIEZBVDMyIChzZSBpc3NvIGZvcgpwb3Nz7XZlbCkuIFBvcnRhbnRvLCBzZSB2b2PqIHPzIHF1ZXIgY29udmVydGVyIHVtIHBhcnRp5+NvIHBhcmEgRkFUMzIKKHNlbSByZWRpbWVuc2lvbmFyKSwgdm9j6iBz8yBwcmVjaXNhIHJlZGltZW5zaW9uYXIgYSBwYXJ0aefjbyBwYXJhIG8KbWVzbW8gdGFtYW5oby4KCkBtZW51CiogTVMgRHJpdmVTcGFjZTo6ICAgICAgICAgICAgICAgICAgICBQYXJ0aef1ZXMgTVMgRHJpdmVTcGFjZQpAZW5kIG1lbnUKCgpAbm9kZSBNUyBEcml2ZVNwYWNlCkBzdWJzZWN0aW9uIFBhcnRp5/VlcyBNUyBEcml2ZVNwYWNlCkBjaW5kZXggcGFydGnn9WVzIGRyaXZlc3BhY2UKCk8gTVMgRHJpdmVTcGFjZSDpIHVtIHByb2dyYW1hIHF1ZSB2ZW0gY29tIG8gTVMgV2luZG93cyA5NSBxdWUgcGRvZSBzZXIKdXNhZG8gcGFyYSBjb21wcmltaXIgc2lzdGVtYXMgZGUgYXJxdWl2byBGQVQuIEV1IGFjcmVkaXRvIHF1ZSBlbGUKZnVuY2lvbmUgZG8gbWVzbW8gamVpdG8gcXVlIG8gRG91YmxlU3BhY2UsIGVudONvIHR1ZG8gZGl0byBhcXVpIHBvZGUKc2VyIGFwbGljYWRvIG5vIERvdWJsZVNwYWNlIHRhbWLpbS4KCskgcG9zc+12ZWwgcGFyYSBvIFBhcnRlZCByZWRpbWVuc2lvbmFyIGUgY29waWFyIGVzc2FzIHBhcnRp5/VlcywgbWFzCnZvY+ogdGVtIHF1ZSBmYXplciBhbGd1bWFzIGNvaXNhcyBhIG1haXNAZG90c3t9CgpAbWVudQoqIEF1bWVudGFuZG8gdW1hIHBhcnRp5+NvIERyaXZlU3BhY2U6OgoqIERpbWludWluZG8gdW0gcGFydGnn428gRHJpdmVTcGFjZTo6CiogQ29waWFuZG8gdW1hIHBhcnRp5+NvIERyaXZlU3BhY2U6OgpAZW5kIG1lbnUKCgpAbm9kZSBBdW1lbnRhbmRvIHVtYSBwYXJ0aefjbyBEcml2ZVNwYWNlCkBzdWJzZWN0aW9uIEF1bWVudGFuZG8gdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UKQGNpbmRleCBwYXJ0aefjbyBkcml2ZXNwYWNlLCBhdW1lbnRhbmRvIHVtYQoKUGFyYSBhdW1lbnRhciBvIHRhbWFuaG8gZGUgdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UsIGZh52EgbyBzZWd1aW50ZQpAZW51bWVyYXRlCkBpdGVtIFVzZSBvIGNvbWFuZG8gcmVzaXplIGRvIFBhcnRlZCBwYXJhIGF1bWVudGFyIGEgcGFydGnn428gcGFyYSBvIHRhbWFuaG8gZGVzZWphZG8uCgpAaXRlbSBVc2UgbyBNUyBEcml2ZVNwYWNlIHBhcmEgZW52aWFyIG8gZXNwYedvIGxpdnJlIGRvIGRyaXZlIGRlIG9yaWdlbQpwYXJhIG8gZHJpdmUgY29tcHJpbWlkby4KCkBlbmQgZW51bWVyYXRlCgpAbm9kZSBEaW1pbnVpbmRvIHVtYSBwYXJ0aefjbyBEcml2ZVNwYWNlCkBzdWJzdWJzZWN0aW9uIERpbWludWluZG8gdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UKQGNpbmRleCBwYXJ0aefjbyBkcml2ZXNwYWNlLCBkaW1pbnVpbmRvIHVtYQoKUGFyYSBhdW1lbnRhciBvIHRhbWFuaG8gZGUgdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UsIGZh52EgbyBzZWd1aW50ZToKCkBlbnVtZXJhdGUKQGl0ZW0gVXNlIG8gTVMgRHJpdmVTcGFjZSBwYXJhIGpvZ2FyIG8gZXNwYedvIGxpdnJlIGRvIGRyaXZlIGNvbXByaW1pZG8KcGFyYSBvIGRyaXZlIGRlIG9yaWdlbS4gTyBu+m1lcm8gZGUgZXNwYedvIGpvZ2FkbyBjb3JyZXNwb25kZSBhbwptb250YW50ZSBxdWUgc2UgZGV2ZSBkaW1pbnVpciBhIHBhcnRp5+NvLgoKQGMgUk1LOiB1c2FnZTogIlBhcnRlZCBkb2Vzbid0IGdpdmUgZ29vZCBmZWVkYmFjayBvbiB3aGF0IHRoZSBudWJtZXJzIiBodWg/CkBpdGVtIFVzZSBvIGNvbWFuZG8gcmVzaXplIGRvIFBhcnRlZCBwYXJhIGRpbWludWlyIHVtYSBwYXJ0aefjbyBwYXJhIG8KdGFtYW5obyBkZXNlamFkby4gTk9UQTogTyBQYXJ0ZWQgbuNvIHRlbSB1bWEgYm9hIHJlc3Bvc3RhIGNvbSBvcyBu+m1lcm9zCnBlbG8gcXVhbCBzZSBwZWRlIHBhcmEgdW1hIHBhcnRp5+NvIGRpbWludWlyLiBJc3RvIGVzdOEgbmEgbGlzdGEgZGUKYWZhemVyZXMuCgpAZW5kIGVudW1lcmF0ZQoKQG5vZGUgQ29waWFuZG8gdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UKQHN1YnN1YnNlY3Rpb24gQ29waWFuZG8gdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UKQGNpbmRleCBwYXJ0aefjbyBkcml2ZXNwYWNlLCBjb3BpYW5kbyB1bWEKClNlIHZvY+ogcXVlciBjb3BpYXIgdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UgcGFyYSB1bWEgcGFydGnn428gcXVlIOkKbWFpb3IsIGVudONvIHZvY+ogcG9kZSBzZWd1aXIgYXMgaW5zdHJ15/VlcyBwYXJhIGF1bWVudGFyIHVtYSBwYXJ0aefjbwpEcml2ZVNwYWNlLCBleGNldG8gc2Ugdm9j6iBjb3BpYXIgYW8gaW526XMgZGUgcmVkaW1lbnNpb25hciBwYXJhIGEKcGFydGnn428gZGVzZWphZGEsIGUgdGVyIGNlcnRlemEgZGUgcXVlIHZvY+ogdXNvdSBhIG5vdmEgcGFydGnn428gbm8KRHJpdmVTcGFjZS4KCkNvbnR1ZG8sIHNlIHZvY+ogcXVlciBjb3BpYXIgdW1hIHBhcnRp5+NvIERyaXZlU3BhY2UgcXVlIOkgbWVub3IsIGFzCmNvaXNhcyBmaWNhbSB1bSBwb3VjbyBtYWlzIGNvbXBsaWNhZGFzOgoKQGVudW1lcmF0ZQpAaXRlbSBVc2UgbyBNUyBEcml2ZVNwYWNlIHBhcmEgZW1wdXJyYXIgbyBlc3Bh528gbGl2cmUgZG8gZGlzY28KY29tcHJpbWlkbyBwYXJhIG8gZHJpdmUgZGUgb3JpZ2VtLiBPIG1vbnRhbnRlIGRlIGRpc2NvIGVtcHVycmFkbyBkZXZlIHNlcgptYWlzIHF1ZSBhIGRpZmVyZW7nYSBlbnRyZSBvIGRpc2NvIGRlIG9yaWdlbSBlIG8gdGFtYW5obyBkZXNlamFkbyBkZQp1bWEgZGFzIHBhcnRp5/VlcyBkdXBsaWNhZGFzLgoKQGl0ZW0gVXNlIG8gUGFydGVkIHBhcmEgY29waWFyIGEgcGFydGnn428gZGUgZGVzdGlubyBwYXJhIGEgcGFydGnn428KZHVwbGljYWRhLgoKQGl0ZW0gVXNlIG8gTVMgRHJpdmVTcGFjZSBwYXJhIGVtcHVycmFyIG8gZXNwYedvIGxpdnJlIGRvIGRpc2NvIGRlCm9yaWdlbSBkZSB2b2x0YSBwYXJhIG8gZGlzY28gY29tcHJpbWlkby4KCkBpdGVtIFVzZSBvIE1TIERyaXZlU3BhY2UgcGFyYSBlbXB1cnJhciBvIGVzcGHnbyBsaXZyZSBkbyBkcml2ZSBkdXBsaWNhZG8KZGUgdm9sdGEgcGFyYSBvIGRyaXZlIGNvbXByaW1pZG8uCkBlbmQgZW51bWVyYXRlCgoKQG5vZGUgUmVpc2VyZnMKQHNlY3Rpb24gU2lzdGVtYXMgZGUgQXJxdWl2byBKb3JuYWztc3RpY28gUmVpc2VyZnMKQGNpbmRleCByZWlzZXJmcwoKTyBQYXJ0ZWQgc3Vwb3J0YSByZWlzZXJmcyBzZSBhIGxpYnJlaXNlcmZzIGVzdOEgaW5zdGFsYWRhLiBPIFBhcnRlZApkZXRlY3RhIGlzc28gYW8gcm9kYXIsIGUgYXV0b21hdGljYW1lbnRlIGF0aXZhIG8gc3Vwb3J0ZS4gVm9j6iBwb2RlCmJhaXhhciBhIGxpYnJlaXNlcmZzIGVtOgoKCUB1cmVme2h0dHA6Ly9yZWlzZXJmcy5saW51eC5raWV2LnVhfQoKTm90ZSBxdWUgYSBsaWJyZWlzZXJmcyDpIHNvZnR3YXJlIG5vdm8sIGUgbuNvIGZvaSBsYXJnYW1lbnRlIHRlc3RhZG8uCgoKQG5vZGUgICAgTFZNIGUgUkFJRApAY2hhcHRlciBMVk0gZSBSQUlECkBjaW5kZXggbHZtIGUgcmFpZApAY2luZGV4IHJhaWQgZSBsdm0KCkBtZW51CiogVmlz428gZ2VyYWwgZGEgTFZNIGUgUkFJRDo6ICAgICAgICAgICBWaXPjbyBnZXJhbCBkYSBMVk0gZSBSQUlECiogQ3JpYW5kbyBwYXJ0aef1ZXMgUkFJRCBvdSBMVk06OiAgICAgICBDb25maWd1cmFuZG8gcGFydGnn9WVzIFJBSUQgZSBMVk0KKiBNYW5pcHVsYW5kbyB1bSB2b2x1bWUgUkFJRCBvdSBMVk06OiAgIE9wZXJh5/VlcyBlbSBwYXJ0aef1ZXMgUkFJRCBvdSBMVk0KQGVuZCBtZW51CgpAbm9kZSBWaXPjbyBnZXJhbCBkbyBMVk0gZSBSQUlECkBzZWN0aW9uIExvZ2ljYWwgVm9sdW1lIE1hbmFnZXIgZSBSZWR1bmRhbnQgQXJyYXlzIG9mIEluZXhwZW5zaXZlIERpc2tzCkBjaW5kZXggbHZtIGUgcmFpZCwgdmlz428gZ2VyYWwgZG8KQGNpbmRleCBsdncsIHZpc+NvIGdlcmFsCkBjaW5kZXggcmFpZCwgdmlz428gZ2VyYWwKCk8gTFZNIChMb2dpY2FsIFZvbHVtZSBNYW5hZ2VyKSDpIHVtIHNpc3RlbWEgYWx0ZXJuYXRpdm8gcGFyYQpwYXJ0aWNpb25hbWVudG8uIEVsZSBwZXJtaXRlIHZvbHVtZXMgbPNnaWNvcyAocG9yIGV4ZW1wbG8sIGBgcGFydGnn9WVzCnZpcnR1YWlzJycpIGEgc2VyZW0gZXNwYWxoYWRhcyBlbSBtdWl0b3Mgdm9sdW1lcyBm7XNpY29zIChwb3IgZXhlbXBsbywKZGlzY29zIGUvb3UgcGFydGnn9WVzKS4gTyBMVk0g6SBzdXBvcnRhZG8gbm8gTGludXggdmVyc+NvIDIuNCBlCnN1cGVyaW9yLgoKUkFJRCAoUmVkdW5kYW50IEFycmF5IG9mIEluZXhwZW5zaXZlIERpc2tzIC0gT3JkZW0gUmVkdW5kYW50ZSBkZSBEaXNjb3MKQmFyYXRvcykg6SB1bSBzaXN0ZW1hIHBhcmEgdXNhciBtdWl0b3MgZGlzY29zIGUvb3UgcGFydGnn9WVzIGp1bnRhcywgY29tbwp1bWEgYGBwYXJ0aefjbyB2aXJ0dWFsJycuIEV4aXN0ZW0gbXVpdG8gcG91Y29zIG1vZG9zIGRlIHVzYXIgc29mdHdhcmUKUkFJRCwgZSBz428gZXNzZW5jaWFsbWVudGU6CgpAYyBSTUs6IGlmIHRoZXJlIGFyZSBvbmx5IHR3byBvcHRpb25zLCB3aHkgbm90IHB1dCB0aGVtIGludG8gYSBzZW50ZW5jZT8KQGl0ZW1pemUKQGl0ZW0gdXNhciBt+mx0aXBsb3MgKHBlcXVlbm9zKSBkaXNjb3MgcGFyIHVtIPpuaWNvIHNpc3RlbWFzIGRlIGFycXVpdm8sCmF1bWVudGFyIGEgcGVyZm9ybWFuY2UgZSBmYXplciB0b2RvIG8gZXNwYedvIGRpc3Bvbu12ZWwgc2VyIGRpc3Bvbu12ZWwKbnVtIPpuaWNvIHNpc3RlbWFzIGRlIGFycXVpdm8uCkBpdGVtIHVzYXIgbfpsdGlwbG9zIGRpc2NvcyBwYXJhIGd1YXJkYXIgY/NwaWFzIHJlZHVuZGFudGVzIGRlIGluZm9ybWHn428sCnBhcmEgYXVtZW50YXIgYSBjb25maWFu52EgZSBwZXJmb3JtYW5jZS4KQGVuZCBpdGVtaXplClJBSUQgcG9yIHNvZnR3YXJlIOkgc3Vwb3J0YWRvIG5vIExpbnV4IHZlcnPjbyAyLjAgZSBzdXBlcmlvci4KCkBjIFJNSzogdXNhZ2U6IHdoYXQgZG9lcyBgYGlzIHN1cHBvcnRlZCBub3JtYWxseSBieSBQYXJ0ZWQnJyBtZWFuPwpSQUlEIHBvciBoYXJkd2FyZSDpIG5vcm1hbG1lbnRlIHN1cG9ydGFkbyBwZWxvIFBhcnRlZCAtIGVudONvIHZvY+ogbuNvCnByZWNpc2EgbGVyIGVzc2Egc2Xn428gc2Ugdm9j6iBlc3ThIHVzYW5kbyBSQUlEIHBvciBoYXJkd2FyZSAobwpvcG9zdG8gcGFyYSBSQUlEIHBvciBzb2Z0d2FyZSkuCgpMVk0sIFJBSUQgcG9yIHNvZnR3YXJlIGUgcGFydGnn9WVzIHPjbyBjb211bWVudGUgdXNhZGFzIHNpbXVsdGFuZWFtZW50ZSwKbWFzIGVsYXMgdG9kYXMgcG9kZW0gc2VyIHVzYWRhcyBpbmRlcGVuZGVudGVtZW50ZS4gTFZNIGUgUkFJRCBwb3IKc29mdHdhcmUgc+NvIGdlcmFsbWVudGUgY29tcG9zdGFzIGRlIHBhcnRp5/VlcywgbWFpcyBkbyBxdWUgZGlzY29zCnLtZ2lkb3MuCgpPIEdOVSBQYXJ0ZWQgbuNvIHN1cG9ydGEgTFZNIGUgUkFJRCBwb3Igc29mdHdhcmUgY29tcGxldGFtZW50ZSwKbWFzIGVsZSDpIGFpbmRhIPp0aWwgcXVhbmRvIHVzYWRvIGVtIGNvbWJpbmHn428gY29tIHN1YXMgZmVycmFtZW50YXMKcmVzcGVjdGl2YXMuIE8gUGFydGVkIOkg+nRpbCBwYXJhIGVzc2FzIHRhcmVmYXM6CgpAaXRlbWl6ZQpAaXRlbSBjcmlhciB1bWEgcGFydGnn428gUkFJRCBvdSBMVk0gZGUgc29mdHdhcmUKCkBpdGVtIGNyaWFuZG8sIHJlZGltZW5zaW9uYW5kbyBvdSBjb3BpYW5kbyB1bSBzaXN0ZW1hIGRlIGFycXVpdm8gbnVtCnZvbHVtZSBs82dpY28gKG91IGBgcGFydGnn428gbPNnaWNhJycpCkBlbmQgaXRlbWl6ZQoKQG5vZGUgQ3JpYW5kbyBwYXJ0aef1ZXMgTFZNIG91IFJBSUQKQHNlY3Rpb24gQ3JpYW5kbyBwYXJ0aef1ZXMgTFZNIG91IFJBSUQKQGNpbmRleCBjcmlh5+NvIGRlIHBhcnRp5/VlcyBsdm0KQGNpbmRleCBjcmlh5+NvIGRlIHBhcnRp5/VlcyByYWlkCgpQYXJhIGNyaWFyIHVtYSBwYXJ0aefjbyBSQUlEIG91IExWTSwgdm9j6iBkZXZlOgpAZW51bWVyYXRlCkBpdGVtIENyaWFyIHVtYSBwYXJ0aefjbyBjb20gbyBjb21hbmRvIG1rcGFydApAaXRlbSBEZWZpbmlyIG8gaW5kaWNhZG9yIExWTSBvdSBSQUlEIG5hIHBhcnRp5+NvLgpAZW5kIGVudW1lcmF0ZQoKUG9yIGV4ZW1wbG86CgpAZXhhbXBsZQoocGFydGVkKSBAa2Jke21rcGFydCBwcmltYXJ5IGV4dDIgMCA0MDAwfQoocGFydGVkKSBAa2Jke3NldCAxIGx2bSBvbn0KQGVuZCBleGFtcGxlCgpOb3RhOiBhIHBhcnRp5+NvIExWTSBvdSBSQUlEIG7jbyB2YWkgZXN0YXIgcHJvbnRhIHBhcmEgdXNvIGFpbmRhLiBWb2PqCmFpbmRhIHByZWNpc2Egcm9kYXIgbyBta3JhaWQoOCkgcGFyYSBSQUlEcywgb3UgdXNhciBhcyBmZXJyYW1lbnRhcyBkZQpMVk0gcGFyYSBpbmljaWFsaXphciBvIHZvbHVtZSBm7XNpY28sIGUgY3JpYXIgZ3J1cG9zIGzzZ2ljb3MsIGV0Yy4KCkBub2RlIE1hbmlwdWxhbmRvIHVtIHZvbHVtZSBSQUlEIG91IExWTQpAc2VjdGlvbiBNYW5pcHVsYW5kbyB1bSBTaXN0ZW1hIGRlIEFycXVpdm8gbnVtIHZvbHVtZSBSQUlEIG91IExWTQpAY2luZGV4IG9wZXJh5+NvIGVtIHBhcnRp5/VlcyByYWlkCkBjaW5kZXggb3BlcmHn9WVzIGVtIHBhcnRp5/VlcyBsdm0KCk8gUGFydGVkIHBvZGUgbWFuaXB1bGFyIHZvbHVtZXMgbPNnaWNvcyBSQUlEIGUgTFZNLCBtZXNtbyBu428gZW50ZW5kZW5kbwpSQUlEIG91IExWTS4gRWxlIHV0aWxpemEgbyBzdXBvcnRlIGRvIExpbnV4IGEgUkFJRCBlIExWTS4gUG9ydGFudG8sIHZvY+oKc29tZW50ZSBwb2RlIHVzYXIgZXNzZXMgbel0b2RvcyBzZSBvIHNldSBrZXJuZWwgZG8gTGludXggc3Vwb3J0YSBSQUlECmUvb3UgTFZNLgoKUGFyYSBtYW5pcHVsYXIgdW0gc2lzdGVtYSBkZSBhcnF1aXZvIG51bSB2b2x1bWUgbPNnaWNvIFJBSUQgb3UgTFZNIChvdSwKdW1hIHBhcnRp5+NvIHNvemluaGEsIHBhcmEgZXNzZSBpbnR1aXRvKSwgdm9j6iBwb2RlIGluaWNpYXIgbyBwYXJ0ZWQKc2VsZWNpb25hbmRvIG8gZGlzcG9zaXRpdm8gZG8gdm9sdW1lIChwYXJ0aefjbykgbPNnaWNvLiBQb3IgZXhlbXBsbzoKCkBleGFtcGxlCiMgQGtiZHtwYXJ0ZWQgL2Rldi9tZDB9CkBlbmQgZXhhbXBsZQoKUGFyYSBvIHJlc3RvIGRlc3NlIGNhcO10dWxvLCBgYGRpc3Bvc2l0aXZvIHZpcnR1YWwnJyB2YWkgc2UgcmVmZXJpcgphbyBkaXNwb3NpdGl2byBxdWUgbyBQYXJ0ZWQgZXN04SBlZGl0YW5kbyAobm8gbm9zc28gZXhlbXBsbywgQGZpbGV7L2Rldi9tZDB9KS4KRm9yIHRoZSByZXN0IG9mIHRoaXMgY2hhcHRlciwgYGB2aXJ0dWFsIGRldmljZScnIHdpbGwgcmVmZXIgdG8gdGhlCmRldmljZSBQYXJ0ZWQgaXMgZWRpdHRpbmcgKGluIG91ciBleGFtcGxlIGNhc2VzLCBAZmlsZXsvZGV2L21kMH0pLgoKQG1lbnUKKiBDcmlhbmRvIHVtIHNpc3RlbWEgZGUgYXJxdWl2byBudW0gZGlzcG9zaXRpdm8gUkFJRCBvdSBMVk06OgoqIFJlZGltZW5zaW9uYW5kbyB1bSBzaXN0ZW1hIGRlIGFycXVpdm86OgoqIENvcGlhbmRvIHVtIHNpc3RlbWEgZGUgYXJxdWl2byBkZSB1bSBkaXNwb3NpdGl2byB2aXJ0dWFsIHBhcmEgdW1hIHBhcnRp5+NvOjoKKiBDb3BpYW5kbyB1bSBzaXN0ZW1hIGRlIGFycXVpdm8gcGFyYSB1bSBkaXNwb3NpdGl2byB2aXJ0dWFsOjoKQGVuZCBtZW51CgpAbm9kZSBDcmlhbmRvIHVtIFNpc3RlbWEgZGUgQXJxdWl2byBudW0gZGlzcG9zaXRpdm8gUkFJRCBvdSBMVk0KQHN1YnNlY3Rpb24gQ3JpYW5kbyB1bSBTaXN0ZW1hIGRlIEFycXVpdm8gbnVtIERpc3Bvc2l0aXZvIFZJcnR1YWwgTFZNIG91IFJBSUQKQGNpbmRleCBsdm0sIGNyaWFuZG8gdW0gc2lzdGVtYSBkZSBhcnF1aXZvIGVtCkBjaW5kZXggcmFpZCwgY3JpYW5kbyB1bSBzaXN0ZW1hIGRlIGFycXVpdm8gZW0KClBhcmEgY3JpYXIgdW0gc2lzdGVtYSBkZSBhcnF1aXZvIG51bSB2b2x1bWUgTFZNLCB1c2Ugb3Mgc2VndWludGVzIHBhc3NvczoKCkBlbnVtZXJhdGUKQGl0ZW0gQ3JpZSB1bWEgdGFiZWxhcyBkZSBwYXJ0aefjbyBkZSBsb29wLiBFc3RlIOkgdW1hIHRhYmVsYSBkZSBwYXJ0aef1ZXMKZmFsc2EsIHF1ZSBkaXogYW8gUGFydGVkIHBhcmEgdHJhdGFyIG8gZGlzcG9zaXRpdm8gdmlydHVhbCBjb21vIHVtIPpuaWNvCnNpc3RlbWEgZGUgYXJxdWl2by4gQ29tIGVzc2EgZmFsc2EgdGFiZWxhIGRlIHBhcnRp5/VlcywgZXhpc3RlIG91IG5lbmh1bWEKb3UgdW1hIHBhcnRp5+NvLgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtta2xhYmVsIGxvb3B9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQ3JpZSBvIHNpc3RlbWEgZGUgYXJxdWl2bywgdXNhbmRvIG8gY29tYW5kbyBta3BhcnRmcyBkbyBQYXJ0ZWQuClZvY+ogZGV2ZSBkZWl4YXIgbyBpbu1jaW8gZG8gc2lzdGVtYSBkZSBhcnF1aXZvIDAuIEEgcGFydGnn428gcG9kZQp0ZXJtaW5hciBlbSBxdWFscXVlciBsdWdhciBkZW50cm8gZG8gZGlzcG9zaXRpdm8gdmlydHVhbC4gVm9j6iBwb2RlCmVuY29udHJhciBvIHRhbWFuaG8gZG8gZGlzcG9zaXRpdm8gdmlydHVhbCBjb20gbyBjb21hbmRvIHByaW50LiBQb3IKZXhlbXBsbzoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7cHJpbnR9CkBncm91cApEaXNrIGdlb21ldHJ5IGZvciAvZGV2L21kMDogMC4wMDAtNDcuMDY1IG1lZ2FieXRlcwpEaXNrIGxhYmVsIHR5cGU6IGxvb3AKTWlub3IgICAgU3RhcnQgICAgICAgRW5kICAgICBGaWxlc3lzdGVtICBGbGFncwpAZW5kIGdyb3VwCihwYXJ0ZWQpIEBrYmR7bWtwYXJ0ZnMgcHJpbWFyeSBleHQyIDAgNDcuMDY1fQoocGFydGVkKSBAa2Jke3ByaW50fQpAZ3JvdXAKRGlzayBnZW9tZXRyeSBmb3IgL2Rldi9tZDA6IDAuMDAwLTQ3LjA2NSBtZWdhYnl0ZXMKRGlzayBsYWJlbCB0eXBlOiBsb29wCk1pbm9yICAgIFN0YXJ0ICAgICAgIEVuZCAgICAgRmlsZXN5c3RlbSAgRmxhZ3MKMSAgICAgICAgICAwLjAwMCAgICAgNDcuMDY1ICBleHQyCkBlbmQgZ3JvdXAKQGVuZCBleGFtcGxlCkBlbmQgZW51bWVyYXRlCgpAbm9kZSBSZWRpbWVuc2lvbmFuZG8gdW0gc2lzdGVtYXMgZGUgYXJxdWl2bwpAc3Vic2VjdGlvbiBSZWRpbWVuc2lvbmFuZG8gdW0gU2lzdGVtYSBkZSBBcnF1aXZvcyBudW0gRGlzcG9zaXRpdm8gVmlydHVhbCBMVk0gb3UgUkFJRApAY2luZGV4IGx2bSwgcmVkaW1lbnNpb25hbmRvIHVtIHNpc3RlbWEgZGUgYXJxdWl2bwpAY2luZGV4IHJhaWQsIHJlZGltZW5zaW9uYW5kbyB1bSBzaXN0ZW1hIGRlIGFycXVpdm8KClZvY+ogZ2VyYWxtZW50ZSByZWRpbWVuc2lvbmEgbyBzaXN0ZW1hIGRlIGFycXVpdm8gYW8gbWVzbW8gdGVtcG8gcXVlCnZvY+ogcmVkaW1lbnNpb25hIG8gc2V1IGRpc3Bvc2l0aXZvIHZpcnR1YWwuIFNlIHZvY+ogZXN04SBhdW1lbnRhbmRvCm8gc2lzdGVtYSBkZSBhcnF1aXZvIGUgbyBkaXNwb3NpdGl2byB2aXJ0dWFsLCB2b2PqIGRldmUgcHJpbWVpcm8KYXVtZW50YXIgbyBkaXNwb3NpdGl2byB2aXJ0dWFsIChjb20gYXMgZmVycmFtZW50YXMgUkFJRCBvdSBMVk0pLCBlIGVudONvCmF1bWVudGFyIG8gc2lzdGVtYSBkZSBhcnF1aXZvLiBTZSB2b2PqIGVzdOEgZGltaW51aW5kbyBvIHNpc3RlbWEgZGUKYXJxdWl2byBlIG8gZGlzcG9zaXRpdm8gdmlydHVhbCwgdm9j6iBkZXZlIGRpbWludWlyIG8gc2lzdGVtYSBkZSBhcnF1aXZvCnByaW1laXJvLCBlIGVudONvIG8gZGlzcG9zaXRpdm8gdmlydHVhbC4KClBhcmEgcmVkaW1lbnNpb25hciBvIHNpc3RlbWEgZGUgYXJxdWl2byBubyBQYXJ0ZWQsIHVzZSBvIGNvbWFuZG8gcmVzaXplLgpQb3IgZXhlbXBsbzoKCkBleGFtcGxlCihwYXJ0ZWQpIEBrYmR7c2VsZWN0IC9kZXYvbWQwfQoocGFydGVkKSBAa2Jke3Jlc2l6ZSAxIDAgMjB9CkBlbmQgZXhhbXBsZQoKQG5vZGUgQ29waWFuZG8gdW0gc2lzdGVtYSBkZSBhcnF1aXZvIGRlIHVtIGRpc3Bvc2l0aXZvIHZpcnR1YWwgcGFyYSB1bWEgcGFydGnn428KQHN1YnNlY3Rpb24gQ29waWFuZG8gdW0gU2lzdGVtYSBkZSBBcnF1aXZvIGRlIHVtIERpc3Bvc2l0aXZvIExWTSBvdSBSQUlEIHBhcmEgdW1hIHBhcnRp5+NvCkBjaW5kZXggbHZtLCBjb3BpYW5kbyBkZSB1bSBsdm0gcGFyYSB1bWEgcGFydGnn428KQGNpbmRleCByYWlkLCBjb3BpYW5kbyBkZSB1bSByYWlkIHBhcmEgdW1hIHBhcnRp5+NvCgpQYXJhIGNvcGlhciB1bSBzaXN0ZW1hIGRlIGFycXVpdm8gZGUgdW0gZGlzcG9zaXRpdm8gdmlydHVhbCBMVk0gb3UgUkFJRCwK6SBz8yB1c2FyIG8gY29tYW5kbyBjcC4gUG9yIGV4ZW1wbG86CgoocGFydGVkKSBAa2Jke3NlbGVjdCAvZGV2L2hkYX0KKHBhcnRlZCkgQGtiZHtjcCAvZGV2L21kMCAxIDN9CkBub2RlIENvcGlhbmRvIHVtIHNpc3RlbWEgZGUgYXJxdWl2byBwYXJhIHVtIGRpc3Bvc2l0aXZvIHZpcnR1YWwKQHN1YnNlY3Rpb24gQ29waWFuZG8gdW0gU2lzdGVtYSBkZSBBcnF1aXZvIGRlIHVtIERpc3Bvc2l0aXZvIFZpcnR1YWwgUkFJRCBvdSBMVk0KQGNpbmRleCBsdm0sIGNvcGlhbmRvIGRlIHVtYSBwYXJ0aefjbyBsdm0gcGFyYSB1bSB2b2x1bWUKQGNpbmRleCByYWlkLCBjb3BpYW5kbyBkZSB1bWEgcGFydGnn428gcGFyYSB1bSB2b2x1bWUgcmFpZAoKUGFyYSBjb3BpYXIgbyBzaXN0ZW1hIGRlIGFycXVpdm8gcGFyYSB1bSBkaXNwb3NpdGl2byB2aXJ0dWFsIExWTSBvdSBSQUlELAp1c2UgYSBzZWd1aW50ZSByZWNlaXRhOgoKQGVudW1lcmF0ZQpAaXRlbSBDcmllIGEgdGFiZWxhIGRlIHBhcnRp5/VlcyBkZSBsb29wIG5vIGRpc3Bvc2l0aXZvIHZpcnR1YWwuIFBvciBleGVtcGxvOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtzZWxlY3QgL2Rldi9tZDB9CihwYXJ0ZWQpIEBrYmR7bWtsYWJlbCBsb29wfQpAZW5kIGV4YW1wbGUKCkBpdGVtIENyaWUgdW0gc2lzdGVtYSBkZSBhcnF1aXZvIG5vIGRpc3Bvc2l0aXZvIHZpcnR1YWwsIGNvbSBvIGNvbWFuZG8KbWtwYXJ0ZnMuIFBvciBleGVtcGxvOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtta3BhcnRmcyBwcmltYXJ5IGV4dDIgMCA0Ny4wNjV9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQ29waWUgYSBwYXJ0aefjbyBjb20gbyBjb21hbmRvIGNwOgoKQGV4YW1wbGUKKHBhcnRlZCkgQGtiZHtzZWxlY3QgL2Rldi9oZGF9CihwYXJ0ZWQpIEBrYmR7Y3AgL2Rldi9tZDAgMyAxfQpAZW5kIGV4YW1wbGUKQGVuZCBlbnVtZXJhdGUKCkBub2RlICAgIEVzcGVsaGFtZW50byBkZSBEaXNjb3MKQGNoYXB0ZXIgRXNwZWxoYW1lbnRvIGRlIERpc2NvcwpAY2luZGV4IGVzcGVsaGFtZW50byBkZSBkaXNjb3MKCkVzcGVsaGFtZW50byBkZSBkaXNjbyDpIG8gbel0b2RvIHBhcmEgZXZpdGFyIG8gdGVkaW9zbyBwcm9jZXNzbyBkZQppbnN0YWxh5+NvIGRvIFdpbmRvd3MuIFBvciBleGVtcGxvLCBzZSB2b2PqIHF1ZXIgaW5zdGFsYXIgbyBXaW5kb3dzIGUKbyBPZmZpY2UgZW0gMTAwMCBt4XF1aW5hcywgdmFpIGxldmFyIHByb3ZhdmVsbWVudGUgNSB2ZXplcyAxMDAwIGhvcmFzLgpBcyBjb2lzYXMgbuNvIHPjbyB0428gcnVpbnMgY29tIG8gR05VL0xpbnV4LCBwb3JxdWUgZXhpc3RlbSBwcm9ncmFtYXMKY29tbyBvIGtpY2tzdGFydCBkYSBSZWQgSGF0LCBxdWUgcGVybWl0ZSB2b2PqIGF1dG9tYXRpemFyIGEgaW5zdGFsYefjbwpkZSBvdXRyb3MgcHJvZ3JhbWFzLCBvdSBwcmF0aWNhbWVudGUgcXVhbHF1ZXIgY29pc2EgcXVlIHZvY+ogcHJlY2lzZQpmYXplci4gUG9ydGFudG8sIG8gZXNwZWxoYW1lbnRvIGRlIGRpc2NvIOkgc29tZW50ZSB1c2FkbyBwYXJhIG3hcXVpbmFzCldpbmRvd3MgKG91IHF1YWxxdWVyIHNvZnR3YXJlIG7jby1saXZyZSkgZW0gZ2VyYWwsIG1hcyBu83MgaW1hZ2luYW1vcwpxdWUgYSBtYWlvcmlhIGRhcyBvcmdhbml6Yef1ZXMgYWNoYXJpYW0gaW1wb3Nz7XZlbCBtaWdyYXIgZG8gV2luZG93cwpwYXJhIG8gR05VL0xpbnV4IChvdSBxdWFscXVlciBvdXRybyBzb2Z0d2FyZSBsaXZyZSkgc2VtIHVtIHBlcu1vZG8gZGUKdHJhbnNp5+NvLCBhb25kZSBhbWJvcyBvcyBzaXN0ZW1hcyBlc3TjbyBkaXNwb27tdmVpcy4KCkBjIEZJWE1FOiBzdGFuZGFyZHM6IHRoZSBDRC1Xcml0aW5nIGhvd3RvIGlzIGxpc3RlZCBhcyBub24tZnJlZSBieSBMRFAKQ29tIG8gZXNwZWxoYW1lbnRvIGRlIGRpc2NvLCB2b2PqIHBvZGUgdG9ycmFyIHVtIENEIGNvbSB1bWEgaW1hZ2VtIGRlCmRpc2NvIG91IGRlIHVtYSBwYXJ0aefjbyBjb250ZW5kbyBvIFdpbmRvd3MgZSBvIE9mZmljZSwgZSBjb3BpYXIgYQpwYXJ0aefjbyBkaXJldGFtZW50ZSBub3MgZGlzY29zIHLtZ2lkb3MgZGUgdG9kb3Mgb3MgY29tcHV0YWRvcmVzLApjb2xvY2FuZG8gdW0gZGlzY28gZGUgYm9vdCBlIHVtIENELCBlIGRlaXhhbmRvIHJvbGFyLiBNYXMgYSBwYXJ0aefjbwpubyBkaXNjbyBXaW5kb3dzIHZhaSBwcm92YXZlbG1lbnRlIHNlciBtYWlvciwgZW50428gYSBwYXJ0aefjbyB0YW1i6W0KdmFpIHRlciBkZSBzZXIgcmVkaW1lbnNpb25hZGEuIEV1IGrhIHZpIHbhcmlhcyBwZXNzb2FzIGNvbWVudGFyZW0gcXVlCmVsYXMgZ2VyZW5jaWFyYW0gZXNzZSBwcm9jZXNzbyB1c2FuZG8gZGlzY29zIGRlIGJvb3QgZG8gTGludXggZSBvIFBhcnRlZC4KySBwb3Nz7XZlbCB1c2FyIG8gQ0RST00gc29tZW50ZSwgdXNhbmRvIG8gZGlzcXVldGUgZGUgYm9vdCBjb21vIGEgaW1hZ2VtCmRlIGJvb3QgZG8gQ0QuIExlaWEgYSBDRCB3cml0aW5nIEhPV1RPIHBhcmEgbWFpb3JlcyBpbmZvcm1h5/Vlcy4gRXhpc3RlbQphbGd1bWFzIGNvaXNhcyBwZWN1bGlhcmVzIHF1ZSB2b2PqIHRlbSBxdWUgZmF6ZXIgcHJhIGNvaXNhIHRvZGEgZnVuY2lvbmFyCihxdWUgdmFpIHNlciByZXNvbHZpZGEgbmEgcHLzeGltYSBz6XJpZSBlc3ThdmVsIGRvIFBhcnRlZCkuIERlIHF1YWxxdWVyCm1vZG8sIGVzdGUg6SBvIHByb2Nlc3NvIGdlcmFsOgoKQGVudW1lcmF0ZQpAaXRlbSBJbnN0YWxlIG8gV2luZG93cyBudW1hIG3hcXVpbmEsIGNvbSBhIGNvbmZpZ3VyYefjbyBxdWUgdm9j6gpxdWlzZXIuIFZvY+ogcG9kZSB0ZXIgdW1hIHBhcnRp5+NvIGRvIHRhbWFuaG8gcXVlIHF1aXNlciwgY29udGFudG8KcXVlIG7jbyB1c2UgbWFpcyBkZSA2NDBNYiwgZSBkZWl4ZSBlc3Bh528gcGFyYSB1bSBpbnN0YWxh5+NvIGNvbXBsZXRhCmRvIExpbnV4LCBlIG91dHJvcyAxMzAwTWIgcGFyYSBkdWFzIGPzcGlhcyBkYSBpbWFnZW0gZGUgZGlzY28uCgpAaXRlbSBJbnN0YWxlIG8gTGludXggbmEgbeFxdWluYS4KCkBpdGVtIEZh52EgdW0gZGlyZXTzcmlvIHBhcmEgaW1hZ2VtIGRvIENEIChleGVtcGxvOiBAZmlsZXsvcm9vdC9pbWFnZW19KQoKQGl0ZW0gQ3JpZSB1bSBhcnF1aXZvIGRlIGltYWdlbSBkZSBkaXNjbyAoZXhlbXBsbzogQGZpbGV7L3Jvb3QvaW1hZ2VtL2Rpc2NvfSkKbm8gZGlyZXTzcmlvIGRvIENEOgoKQGV4YW1wbGUKIyBAa2Jke2RkIGlmPS9kZXYvemVybyBvZj0vcm9vdC9pbWFnZW0vZGlzY28gYnM9MU0gY291bnQ9NjQwfQpAZW5kIGV4YW1wbGUKCkBpdGVtIFVzZSBvIFBhcnRlZCBwYXJhIGNvcGlhciBhIHBhcnRp5+NvIFdpbmRvd3MgcGFyYSBhIGltYWdlbSBkZSBkaXNjbzoKCkBleGFtcGxlCiMgQGtiZHtwYXJ0ZWQgL3Jvb3QvY2RpbWFnZS9kaXNraW1hZ2UgbWtsYWJlbCBtc2Rvc30KIyBAa2Jke3BhcnRlZCAvcm9vdC9jZGltYWdlL2Rpc2tpbWFnZSBta3BhcnQgcHJpbWFyeSBmYXQzMiAwIDYzOX0KIyBAa2Jke3BhcnRlZCAvcm9vdC9jZGltYWdlL2Rpc2tpbWFnZSBjcCAvZGV2L2hkYSAxIDF9CkBlbmQgZXhhbXBsZQoKQGl0ZW0gQ3JpZSB1bWEgaW1hZ2VtIGRlIENEIGRvIGRpcmV083JpbyBkYSBpbWFnZW0gZGUgQ0QgZSB0b3JyZSBlc3NlCkNEIGNvbSBhIHN1YSBmZXJyYW1lbnRhIGZhdm9yaXRhIGRlIGdyYXZh5+NvLgoKQGl0ZW0gQ29tcGlsZSB1bWEgdmVyc+NvIGVzcGVjaWFsIGRvIFBhcnRlZCBzZW0gc3Vwb3J0ZSBhIGztbmd1YQpuYWNpb25hbCBlIHN1cG9ydGUgYSByZWFkbGluZSAob3UgYmFpeGUgYSBSUE0gZXNwZWNpYWwgZGEgRnJlc2htZWF0KToKCkBleGFtcGxlCmxvY2FsaG9zdDp+L3BhcnRlZC0xLjAuMCMgQGtiZHsuL2NvbmZpZ3VyZSAtLWRpc2FibGUtbmxzIC0td2l0aG91dC1yZWFkbGluZSAtLWRpc2FibGUtc2hhcmVkOyBtYWtlfQpAZW5kIGV4YW1wbGUKCkBjIEZJWE1FOiBzdGFuZGFyZHM6IExEUCBsYWJlbGxlZCB0aGUgQm9vdGRpc2sgSE9XVE8gbm9uLWZyZWUuCkBpdGVtIENyaWUgdW0gZGlzcXVldGUgZGUgYm9vdCBkbyBMaW51eCAodmVqYSBhIEJvb3RkaXNrIEhPV1RPKS4KCkBpdGVtIFBvbmhhIGEgdmVyc+NvIHJlZHV6aWRhIGRvIFBhcnRlZCBubyBkaXNxdWV0ZSBkZSBib290IChvdQp1bSBkaXNjbyByYWl6IHN1cGxlbWVudGFyKS4KCkBpdGVtIEVzY3JldmEgdW0gc2NyaXB0IHNoZWxsIHBhcmEgZmF6ZXIgbyBzZWd1aW50ZToKCkBleGFtcGxlCkBhc2lze21vdW50IC9kZXYvY2Ryb20gL21udC9jZHJvbX0KQGFzaXN7cGFydGVkIC0tc2NyaXB0IC9kZXYvaGRhIG1rbGFiZWwgbXNkb3N9CkBhc2lze3BhcnRlZCAtLXNjcmlwdCAvZGV2L2hkYSBta3BhcnRmcyBwcmltYXJ5IGZhdCAwIEB2YXJ7YWxndW0tdGFtYW5ob319CkBhc2lze3BhcnRlZCAtLXNjcmlwdCAvZGV2L2hkYSBjcCAvbW50L2Nkcm9tL2Rpc2tpbWFnZSAxIDF9CkBhc2lze3BhcnRlZCAtLXNjcmlwdCAvZGV2L2hkYSBzZXQgMSBib290IG9ufQpAYXNpc3svc2Jpbi9oYWx0fQpAZW5kIGV4YW1wbGUKCkB2YXJ7YWxndW0tdGFtYW5ob30g6SBvIHRhbWFuaG8gcXVlIHZvY+ogcXVlciBxdWUgYSBwcmltZWlyYSBwYXJ0aefjbyB1c2UuCgpAaXRlbSBJbmljaWUgYSBpbnN0YWxh5+NvISBQb25oYSBvIGRpc3F1ZXRlICsgQ0QgZGVudHJvIGRlIGNhZGEgY29tcHV0YWRvciwKZSBkZWl4ZSByb2xhckBkb3Rze30KQGVuZCBlbnVtZXJhdGUKCk9idmlhbWVudGUgZXUgcG9zc28gZSB2b3UgZmF6ZXIgZXNzZSBwcm9jZXNzbyBtdWl0byBtYWlzIGbhY2lsLiBO83MKZXN0YW1vcyBjb25zaWRlcmFuZG8gZmF6ZXIgdW1hIG1pbmktZGlzdHJpYnVp5+NvIHBhcmEgZmF6ZXIgaXNzby4KRXUgbuNvIHRlcmlhIHRlbXBvIHBhcmEgZmF6ZXIgaXNzbyAtLS0gYWxndW0gdm9sdW504XJpbz8KCkBub2RlIFNvZnR3YXJlIFJlbGFjaW9uYWRvCkBjaGFwdGVyIFNvZnR3YXJlIFJlbGFjaW9uYWRvCkBjaW5kZXggc29mdHdhcmUgcmVsYWNpb25hZG8KQGNpbmRleCBsZWl0dXJhIHBvc3RlcmlvcgpAY2luZGV4IGRvY3VtZW50YefjbyByZWxhY2lvbmFkYQoKU2Ugdm9j6iBxdWVyIHByb2N1cmFyIG1haXMgaW5mb3JtYef1ZXMsIHNpbnRhLXNlIOAgdm9udGFkZSBwYXJhIGVudmlhcgpwZXJndW50YXMgcGFyYSBAZW1haWx7cGFydGVkQEBnbnUub3JnfS4gKCEpIGluZGljYSBxdWUgYSAKaW5mb3JtYefjby9zb2Z0d2FyZSBlc3ThIHByb3ZhdmVsbWVudGUgaW5jbHXtZGEgbmEgc3VhIGRpc3RyaWJ1aefjby4KCkVzdGVzIGFycXVpdm9zIG5hIGRpc3RyaWJ1aefjbyBkbyBQYXJ0ZWQgY29udOltIGluZm9ybWHn9WVzIGFkaWNpb25haXM6CgpAaXRlbWl6ZSBAYnVsbGV0CgpAaXRlbSBBQk9VVC1OTFMgLSBpbmZvcm1h5/VlcyBzb2JyZSB1c2FyIG8gU3Vwb3J0ZSBhIEztbmd1YSBOYXRpdmEsIGUgbyBQcm9qZXRvIGRlIFRyYWR15+NvIExpdnJlCgpAaXRlbSBBUEkgLSBhIGRvY3VtZW50YefjbyBzb2JyZSBhIEFQSSBkYSBsaWJwYXJ0ZWQKCkBpdGVtIEFVVEhPUlMgLSBxdWVtIGVzY3JldmV1IG8gcXVlCgpAaXRlbSBCVUdTIC0gZXJyb3MgbuNvIGFycnVtYWRvcwoKQGl0ZW0gQ2hhbmdlTG9nIC0gbXVkYW7nYXMgZmVpdGFzIG5vIFBhcnRlZAoKQGl0ZW0gQ09QWUlORyAtIGEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIG9zIHRlcm1vcyBwZWxvcyBxdWFpcyBvIEdOVSBQYXJ0ZWQgcG9kZSBzZXIgZGlzdHJpYnVpZG8KCkBpdGVtIENPUFlJTkcuRE9DIC0gYSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2VuY2UsIG8gdGVybW8gcGVsbyBxdWFsCmEgZG9jdW1lbnRh5+NvIGRvIFBhcnRlZCBwb2RlIHNlciBkaXN0cmlide1kYS4KCkBpdGVtIEZBVCAtLSBpbmZvcm1h5/VlcyBzb2JyZSBjb21vIG8gcmVkaW1lbnNpb25hZG9yIGRlIEZBVCBmdW5jaW9uYSAocGFyYSBwcm9ncmFtYWRvcmVzKQoKQGl0ZW0gSU5TVEFMTCAtLS0gY29tbyBjb21waWxhciBlIGluc3RhbGFyIG8gUGFydGVkLCBlIGEgbWFpb3JpYSBkb3Mgb3V0cm9zIHNvZnR3YXJlcyBsaXZyZXMKCkBpdGVtIFRPRE8gLS0tIHJlY3Vyc29zIHBsYW5lamFkb3MgcXVlIGFpbmRhIG7jbyBmb3JhbSBpbXBsZW1lbnRhZG9zCkBlbmQgaXRlbWl6ZQoKRXN0ZXMgZG9jdW1lbnRvcyBu428gc+NvIGRpc3RyaWJ17WRvcyBjb20gbyBQYXJ0ZWQsIG1hcyB2b2PqIHBvZGUgYWNoYXIKZWxlcyD6dGVpcy4gQSBtYWlvcmlhIGRlbGVzIHByb3ZhdmVsbWVudGUgdmFpIGVzdGFyIG5hIHN1YSBkaXN0cmlidWnn428uClBvciBleGVtcGxvLCBubyBSZWQgSGF0IExpbnV4LCBvbGhlIG5vIGNkIGRlbnRybyBkZSBAZmlsZXsvZG9jL0hPV1RPfSBlCkBmaWxley9kb2MvRkFRfS4KCkBpdGVtaXplIEBidWxsZXQKCkBjIFJNSzogdXNlZnVsbmVzczogYXZhaWxhYmxlIGF0IHRoZSBMRFAgLS0gc2hvdWxkIHRoZXNlIHVybHMgYmUgdXBkYXRlZD8KQGMgUk1LOiBzdGFuZGFyZHM6IEdQTCdkIGRvY3VtZW50YXRpb24uCkBpdGVtIEZpbGVzeXN0ZW1zIEhPV1RPICAgQHVyZWZ7aHR0cDovL3Blbmd1aW4uY3ovfm1oaS9mc30KCkBjIFJNSzogdXNlZnVsbmVzczogYXZhaWxhYmxlIGF0IHRoZSBMRFAgLS0gc2hvdWxkIHRoZXNlIHVybHMgYmUgdXBkYXRlZD8KQGMgRklYTUU6IHN0YW5kYXJkczogTERQIGxhYmVsbGVkIHRoaXMgbm9uLWZyZWUKQGl0ZW0gSGFyZCBEaXNrIFVwZ3JhZGUgbWluaS1IT1dUTyAoISk6ICAgQHVyZWZ7aHR0cDovL3N1bnNpdGUudW5jLmVkdS9MRFAvSE9XVE99CgpAYyBSTUs6IHVzZWZ1bG5lc3M6IGF2YWlsYWJsZSBhdCB0aGUgTERQIC0tIHNob3VsZCB0aGVzZSB1cmxzIGJlIHVwZGF0ZWQ/CkBjIEZJWE1FOiBzdGFuZGFyZHM6IExEUCBsYWJlbGxlZCB0aGlzIG5vbi1mcmVlCkBpdGVtIExhcmdlIERpc2sgSE9XVE8gICBAdXJlZntodHRwOi8vd3d3Lndpbi50dWUubmwvfmFlYi9saW51eC9MYXJnZS1EaXNrLmh0bWx9CgpAaXRlbSBMSUxPIG1pbmktSE9XVE8gKCEpICAgQHVyZWZ7aHR0cDovL3N1bnNpdGUudW5jLmVkdS9MRFAvSE9XVE99CgpAYyBSTUs6IHVzZWZ1bG5lc3M6IGF2YWlsYWJsZSBhdCB0aGUgTERQIC0tIHNob3VsZCB0aGVzZSB1cmxzIGJlIHVwZGF0ZWQ/CkBpdGVtIE1JTE8gSE9XVE8gKCEpICAgQHVyZWZ7aHR0cDovL3N1bnNpdGUudW5jLmVkdS9MRFAvSE9XVE99CgpAYyBGSVhNRTogc3RhbmRhcmRzOiBpbiBzaG9ydCwgbm9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIGZyZWUgZG9jdW1lbmF0aW9uCkBjIEZJWE1FOiBzdGFuZGFyZHM6IExpbnV4K0RPUytXaW45NStPUzIgbGFiZWxsZWQgbm9uLWZyZWUgYnkgTERQCkBjIEZJWE1FOiBzdGFuZGFyZHM6IExpbnV4K0ZyZWVCU0QtbWluaSBsYWJlbGxlZCBub24tZnJlZSBieSBMRFAKQGMgRklYTUU6IHJlZmVyZW5jZTogY2FuJ3QgZmluZCBhIExpbnV4K1dpbjk1LCBvbmx5IExpbnV4K1dpbjk1LW1pbmkKQGMgRklYTUU6IHN0YW5kYXJkczogTGludXgrV2luOTUtbWluaSBsYWJlbGxlZCBub24tZnJlZSBieSBMRFAKQGMgRklYTUU6IHJlZmVyZW5jZTogY2FuJ3QgZmluZCBhIExpbnV4K0ZyZWVCU0QsIG9ubHkgTGludXgrRnJlZUJTRC1taW5pCkBjIEZJWE1FOiByZWZlcmVuY2U6IGNhbid0IGZpbmQgYSBMaW51eCtOVC1Mb2FkZXIsIG9ubHkgIk5UIE9TIExvYWRlciArCkBjIExpbnV4IG1pbmkKQGMgRklYTUU6IHN0YW5kYXJkczogTlQgT1MgTG9hZGVyICsgTGludXggbWluaSBsYWJlbGxlZCBub24tZnJlZSBieSBMRFAKQGl0ZW0gTGludXgrT1MgbWluaS1IT1dUT3MgKCEpOiBMaW51eCtET1MrV2luOTUrT1MyLCBMaW51eCtGcmVlQlNELW1pbmktSE9XVE8sCkxpbnV4K1dpbjk1LCBMaW51eCtGcmVlQlNELCBMaW51eCtOVC1Mb2FkZXIuICBZb3UgY2FuIGdldCB0aGVzZSBmcm9tOiBAdXJlZntodHRwOi8vc3Vuc2l0ZS51bmMuZWR1L0xEUC9IT1dUT30KCkBjIEZJWE1FOiBzdGFuZGFyZHM6IFBhcnRpdGlvbiBtaW5pICBsYWJlbGxlZCBub24tZnJlZSBieSBMRFAKQGl0ZW0gUGFydGl0aW9uIG1pbmktSE9XVE8gKCEpOiBAdXJlZntodHRwOi8vd3d3LmxpbnV4ZG9jLm9yZy9IT1dUTy9taW5pL1BhcnRpdGlvbi9pbmRleC5odG1sfQoKQGMgUk1LOiBzdGFuZGFyZHM6IG5vIGNsZWFyIGRpc3RyaWJ1dGlvbiB0ZXJtcwpAaXRlbSBQYXJ0aXRpb24gVGFibGUgSE9XVE8gQHVyZWZ7aHR0cDovL3d3dy53aW4udHVlLm5sL35hZWIvcGFydGl0aW9ucy9wYXJ0aXRpb25fdGFibGVzLmh0bWx9CgpAYyBGSVhNRTogc3RhbmRhcmRzOiBubyBjbGVhciBkaXN0cmlidXRpb24gdGVybXMKQGl0ZW0gTGlzdGEgZGUgVGlwb3MgZGUgUGFydGnn9WVzIEB1cmVme2h0dHA6Ly93d3cud2luLnR1ZS5ubC9+YWViL3BhcnRpdGlvbnMvcGFydGl0aW9uX3R5cGVzLmh0bWx9CgpAaXRlbSBTb2Z0d2FyZSBSQUlEIEhPV1RPIEB1cmVme2h0dHA6Ly9saW5hcy5vcmcvbGludXgvU29mdHdhcmUtUkFJRC9Tb2Z0d2FyZS1SQUlELmh0bWx9CgpAZW5kIGl0ZW1pemUKCk91dHJvcyBwcm9ncmFtYXMgcmVsYWNpb25hZG9zIGVzdONvIGxpc3RhZG9zIGFxdWkuIEFsZ3VucyBkZWxlcyB0YW1i6W0KdGVtIGRvY3VtZW50YefjbyD6dGlsOgoKQGl0ZW1pemUgQGJ1bGxldAoKQGl0ZW0gRGlzayBEcmFrZS4gRGlzcG9u7XZlbCBlbSBAdXJlZnt3d3cubGludXgtbWFuZHJha2UuY29tL2Rpc2tkcmFrZX0KRWxlIOkgc2ltdWxhciBlbSBmdW5jaW9uYWxpZGFkZSBhbyBQYXJ0ZWQuIE8gY/NkaWdvIGRlIEZBVCBubyBEaXNrIERyYWtlCukgYmFzZWFkbyBubyBub3NzbyBj82RpZ28gZG8gUGFydGVkLiBBcXVpIOkgY29tbyBvIERpc2sgRHJha2Ugc2UKY29tcGFyYSBhbyBQYXJ0ZWQ6IChxdWUgYW1ib3MgY29uY29yZGFtb3MgOi0pIE8gRGlzayBEcmFrZSDpOgoKQGl0ZW1pemUgQG1pbnVzCkBpdGVtIG1haXMgZuFjaWwgZGUgdXNhciwgdGUgcHJvdGVqZSBkZSBjb21ldGVyIGVuZ2Fub3MKQGl0ZW0gdW1hIHNvbHXn428gbWFpcyBjb21wbGV0YSAobGlkYSBjb20gbyBAZmlsZXsvZXRjL2ZzdGFifSwgbGlsbywgZXRjLikKQGl0ZW0gbWVub3Mgc3Vwb3J0ZSDgIEZBVCAobuNvIHBvZGUgY29udmVydGVyIEZBVDE2PC0+RkFUMzIsIG7jbyBjb3BpYSBwYXJ0aef1ZXMpCkBpdGVtIG1lbm9zIHN1cG9ydGUgYSBleHQyIChubyBtb21lbnRvKQpAaXRlbSBtZW5vcyBhdGVu5+NvIOAgY29tcGF0aWJpbGlkYWRlIGVudHJlIHNpc3RlbWFzIERPUy9XaW5kb3dzIChtYWlzIGFudGlnb3MpCkBpdGVtIHNlbSBzdXBvcnRlIGEgYXJxdWl0ZXR1cmFzIG7jby1QQwpAZW5kIGl0ZW1pemUKCkBpdGVtIGR2aHRvb2wgKHBhcmEgU0dJL01JUFMpICghKQoKQGMgUk1LOiBzdGFuZGFyZHM6IHVuY2hlY2tlZApAaXRlbSBkb3Nmc2NrICghKQoKQGl0ZW0gZTJmc2NrLCByZXNpemUyZnMgZTJmc3Byb2dzICghKSBAdXJlZntodHRwOi8vd2ViLm1pdC5lZHUvdHl0c28vd3d3L2xpbnV4L2UyZnNwcm9ncy5odG1sfQoKQGl0ZW0gZXh0MnJlc2l6ZSAtIHVzYSBvIG1lc21vIGPzZGlnbyBkbyBQYXJ0ZWQsIG1hcyBpbmNsdWkgYWxndW1hcwpvdXRyYXMgY29pc2FzIHRhbWLpbSwgY29tbyB1bSByZWRpbWVuc2lvbmFyIGV4dDIgbmEgaG9yYSwgcXVlIG7jbwpyZXF1ZXIgZGVzbW9udGFnZW0uIEB1cmVme2h0dHA6Ly9leHQycmVzaXplLnNvdXJjZWZvcmdlLm5ldH0KCkBpdGVtIGZkaXNrICghKQoKQGl0ZW0gRklQUyAoISkgKEZpcnN0IEludGVyYWN0aXZlIFBhcnRpdGlvbiBTcGxpdHRlciAtIFByaW1laXJvIERpdmlzb3IgZGUgUGFydGnn9WVzIEludGVyYXRpdm8pIEB1cmVme2h0dHA6Ly93d3cuaWdkLmZoZy5kZS9+YXNjaGFlZmUvZmlwc30KCkAgUk1LOiBzdGFuZGFyZHM6IEdQTCdkCkBpdGVtIEdQYXJ0IC0gcmVjdXBlcmEgdGFiZWxhcyBkZSBwYXJ0aefjbyBxdWVicmFkYXMuIEB1cmVme2h0dHA6Ly93d3cuc3R1ZC51bmktaGFubm92ZXIuZGUvdXNlci83NjIwMS9ncGFydH0KCkBpdGVtIEdOVSBHUlVCIC0gR1JhbmQgVW5pZmllZCBCb290LWxvYWRlciBAdXJlZntodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ3J1Yi9ncnViLmh0bWx9CgpAaXRlbSBMSUxPICghKSAoTEludXggTE9hZGVyKSAgQHVyZWZ7ZnRwOi8vdHN4LTExLm1pdC5lZHUvcHViL2xpbnV4L3BhY2thZ2VzL2xpbG99CgpAaXRlbSBMVk0gQHVyZWZ7aHR0cDovL2xpbnV4Lm1zZWRlLmNvbS9sdm19CgpAYyBSTUs6IHN0YW5kYXJkczogaXMgbWtkb3NmcyBGcmVlPwpAaXRlbSBta2Rvc2ZzICghKSAgKOBzIHZlemVzIGNoYW1hZGEgZGUgbWtmcy5tc2RvcykKCkBpdGVtIG1rZTJmcyAoISkgICjgcyB2ZXplcyBjaGFtYWRhIGRlIG1rZnMuZXh0MikKCkBpdGVtIG1rZnMgKCEpCgpAaXRlbSBta3N3YXAgKCEpCgpAaXRlbSBxdWlrICghKQoKQGl0ZW0gcmVpc2VyZnM6IE5PVEE6IHVtIHJlZGltZW5zaW9uYWRvciByZWlzZXJmcyDpIGluY2x17WRvIGNvbSBhCmRpc3RyaWJ1aefjbyByZWlzZXJmcyBub3JtYWwuIEB1cmVme2h0dHA6Ly9kZXZsaW51eC5jb20vcHJvamVjdHMvcmVpc2VyZnN9ClRhbWLpbSwgdW1hIGltcGxlbWVudGHn428gaW5kZXBlbmRlbnRlIGRhIHJhaXNlcmZzIHVzZXJsYW5kIChxdWUgbyBwYXJ0ZWQKdGFtYultIHV0aWxpemEpIEB1cmVme2h0dHA6Ly9yZWlzZXJmcy5saW51eC5raWV2LnVhfS4gIEVsZSBwb2RlIHNlciBhZG90YWRvCnBvciBvdXRyb3MgdXN14XJpb3Mgbm8gZnV0dXJvLi4uCgpAaXRlbSB5YWJvb3QgKCEpICBAdXJlZntodHRwOi8vcGVuZ3VpbnBwYy5vcmcvYm9vdGxvYWRlcnMveWFib290L30KCkBpdGVtIHliaW4gKCEpICBAdXJlZntodHRwOi8vcGVuZ3VpbnBwYy5vcmcvYm9vdGxvYWRlcnMveWFib290L30KCkBlbmQgaXRlbWl6ZQoKQG5vZGUgQ29waWFuZG8gRXN0ZSBNYW51YWwKQGFwcGVuZGl4IENvcGlhbmRvIEVzdGUgTWFudWFsCgpAbWVudQoqIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZTo6ICBMaWNlbudhIHBhcmEgY29waWFyIGVzc2UgbWFudWFsCkBlbmQgbWVudQoKQGluY2x1ZGUgZmRsLnRleGkKCkBjIEZETDogRkRMIDQuSSBzdWdnZXN0cyBhIEhJU1RPUlkgc2VjdGlvbiBiZSBpbmNsdWRlZCBpbgpAYyB0aGUgZG9jdW1lbnRhdGlvbi4gIEluIHRoaXMgY2FzZSBpdCBzZWVtcyBzdXBlcmZsdW91cywgYnV0CkBjIGhlcmUncyBvbmUsIGluIGNhc2UgaXQgaXMgZGVzaXJlZC4gIEFzIGZhciBhcyBJJ20gY29uY2VybmVkLApAYyB0aGlzIG5vZGUgZG9lc24ndCBmaXQgd2VsbCBpbnRvIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGRvY3VtZW50CkBjIGF0IHByZXNlbnQuCkBub2RlIEhpc3TzcmlhCkBhcHBlbmRpeCBBIGhpc3TzcmlhIGRlc3NlIG1hbnVhbApAY2luZGV4ICBhIGhpc3TzcmlhIGRlc3NlIG1hbnVhbAoKRXNzZSBtYW51YWwg6SBiYXNlYWRvIG5vIGFycXVpdm8sIFVTRVIsIGluY2x17WRvIG5hIHZlcnPjbyAxLjQuMjIuCk8gY/NkaWdvLWZvbnRlIGRvIEdOVSBQYXJ0ZWQgZXN04SBkaXNwb27tdmVsIGVtIEB1cmVme2Z0cC5nbnUub3JnL2dudS9wYXJ0ZWR9LgoKRm9ybWF0YefjbyB0ZXhpbmZvIHBvciBSaWNoYXJkIE0uIEtyZXV0ZXIsIDIwMDIuCgpFc3RlIG1hbnVhbCDpIGRpc3RyaWJ17WRvIHNvYiBhIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwKdmVyc+NvIDEuMSBvdSBzdXBlcmlvciwg4CBzdWEgZGlzY3Jp5+NvLCBzZW0gU2Xn9WVzIEludmFyaWFudGVzLApzZW0gVGV4dG9zIG5hIENhcGEsIGUgc2VtIFRleHRvcyBuYSBDb250cmEtY2FwYS4gQHhyZWZ7Q29waWFuZG8KZXN0ZSBNYW51YWx9LCBwYXJhIG1haXMgZGV0YWxoZXMuCgpAYyBGSVhNRTogd2h5IGRvZXNuJ3QgdGhpcyBAaWZub3RwbGFpbnRleHQgd29yaz8hCkBjIEBpZm5vdHBsYWludGV4dApAbm9kZSDNbmRpY2UKQHVubnVtYmVyZWQgzW5kaWNlCkBwcmludGluZGV4IGNwCkBjIEBlbmQgaWZub3RwbGFpbnRleHQKCkBieWUKCkBpZ25vcmUKSSd2ZSAodGhhdCBpcywgUk1LKSBpbmNsdWRlZCAodG9vIG11Y2gpIGNvbW1lbnRhcnkgaW4gdGhpcyBmaWxlLgoKTGluZXMgb2YgdGhlIGZvcm0KCiAgICBGSVhNRTo8Y2F0ZWdvcnk+OgoKYXJlIGJ1Z3MsIGFuZCBzaG91bGQgYmUgZml4ZWQuICBUaGUgY2F0ZWdvcmllcyBhcmUgc29ydCBvZiB2YWd1ZSwgYnV0CiJzdGFuZGFyZHMiIG1lYW5zIHRoYXQgc29tZXRoaW5nIGRvZXNudCd0IG1lZXQgc29tZWJvZHkncyAocHJvYmFibHkKSSd2ZSB0cmllZCB0byBjaGVjayB0aGUgbGljZW5zZSBmb3IgZWFjaCBwcm9ncmFtIGFuZCBkb2N1bWVudGF0aW9uCnJlZmVyZW5jZWQsIGJ1dCBoYXZlIG1pc3NlZCBzb21lLiAgQXMgYSBydWxlLCBpZiBhIEhvd3RvIG9yIG1pbmktSG93dG8KaGFzIGJlZW4gbGFiZWxsZWQgYXMgbm9uLWZyZWUgYnkgdGhlIExEUCwgdGhlbiBJJ3ZlIGFzc3VtZWQgaXQncyBhbHNvCm5vbi1GcmVlIGZvciBHTlUgcHVycG9zZXMuICBJJ3ZlIGFsc28gdHJpZWQgdG8gbm90ZSB0aGUgZnJlZSBzb2Z0d2FyZQphbmQgZG9jdW1lbnRhdGlvbiwgc2luY2Ugb21pc3Npb24gb2Ygc3VjaCBub3RlcyBsZWFkIG1lIHRvIHJlY2hlY2sgdGhpbmdzCkknZCBmb3Jnb3R0ZW4gSSdkIGNoZWNrLCBldGMuCgpNYW55IG5vZGVzIGdpdmUgc29tZSBkZXRhaWxlZCBleHBsYW5hdGlvbiBvZiBob3cgdG8gdXNlIHBhcnRlZCBhbG9uZwp3aXRoIGEgbm9uLWZyZWUgb3BlcmF0aW5nIHN5c3RlbSB1c2luZyBub24tZnJlZSB1dGlsaXRpZXMgdGhhdCBhcmUgcGFydApvZiB0aGF0IHN5c3RlbS4gIFRoaXMgbWF5IGJlIGEgdmlvbGF0aW9uIG9mIHRoZSBHTlUgc3RhbmRhcmRzLApub2RlL3NlY3Rpb24gIlJlZmVyZW5jZXMiLiAgSSd2ZSBtYXJrZWQgdXAgdGhlIHRleHQgYW55aG93LCBpbiBjYXNlIHRoZQpjb250ZW50IGlzIGRlZW1lZCBhY2NlcHRhYmxlIGJ5IGRlY2lzaW9uIG1ha2VycywgYW5kIGhvcGUgdGhhdCBteQpjb250cmlidXRpb24gaGVyZSBkb2Vzbid0IHN3YXkgZGVjaXNpb25zLgoKRm9yIHdoYXQgaXQncyB3b3J0aCwgSSd2ZSBub3RlZCByZWZlcmVuY2VzIHRvIG5vbi1mcmVlIHNvZnR3YXJlIGFzCiJhY2NlcHRhYmxlIiBpbiBjYXNlIHRoZSByZWZlcmVuY2UgaW5jbHVkZXMgYSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoZQpzb2Z0d2FyZSBjYW4ndCBkbyAoZS5nLiwgbm90IHN1Y2ssIG5vdCBoYXJtIG1hbmtpbmQpLiAgVGhpcyBpZGlvc3luY3JhdGljCmFzc2Vzc21lbnQgb2YgdGhlIHBlcm1pc3NpYmlsaXR5IG9mIHJlZmVyZW5jZSBvZiBub24tZnJlZSBzb2Z0d2FyZSBpcwptZWFudCBwYXJ0bHkgYXMgYSBqb2tlLgoKTm90ZTogdGhlcmUgaXMgYSBmcmVlIChHUEwnZCkgRE9TIGNvbXBhdGlibGUgb3BlcmF0aW5nIHN5c3RlbSwgRnJlZURPUywKdGhhdCBJJ3ZlIHRlc3RlZCBhbmQgZm91bmQgdG8gd29yayBwcmV0dHkgd2VsbCwgYmV0dGVyIGluIG1hbnkgcmVzcGVjdHMKdGhhdCBNaWNyb3N+MSdzIERPUy4gIE1hbnkgb2YgdGhlIHRpcHMgYW5kIHRyaWNrcyBkZXNjcmliZWQgaW4gdGhlCm1hbnVhbCBtaWdodCB3b3JrIHdpdGggb3IgYmUgbmVlZGVkIGZvciBhIEZyZWVET1MgYmFzZWQgc3lzdGVtLiAgSW4KcHJpbmNpcGxlLCBvbmUgY291bGQgcmV3cml0ZSB0aGUgc2VjdGlvbnMgb2YgdGhpcyBtYW51YWwgdG8gbWFrZQpyZWZlcmVuY2Ugb25seSB0byAnRE9TLWNvbXBhdGlibGUnIHN5c3RlbXMsIGFuZCByZWZlciBwZW9wbGUgdG8gRnJlZURPUy4KCkksIGZvciBvbmUsIHdvdWxkIGJlIGhhcHB5IHRvIHJlZmVyIHBlb3BsZSB0byBGcmVlRE9TLCBzaW5jZSBpdCdzIGEgbmljZQpwcm9qZWN0IHRoYXQgY291bGQgcGxheSBhIHZhbHVhYmxlIHJvbGUgYW1vbmcgZnJlZSBvcGVyYXRpbmcgc3lzdGVtcwooYWN0dWFsbHksIGl0IGRvZXM6IGl0J3MgdGhlIERPUyBrZXJuZWwgZm9yIERPU0VNVSkuICBCdXQgd291bGQKcmV3b3JraW5nIHJlZmVyZW5jZXMgdG8gTVMgRE9TIGFuZCBpdHMgcHJvZ2VueSB0byByZWZlciB0byBGcmVlRE9TIGp1c3QKYmUgYSBjbGV2ZXIgaGFjayBhcm91bmQgdGhlIEdOVSBzdGFuZGFyZHM/ICBJIGR1bm5vLi4uCgo8U2lnaD4gIFNjcmVlZCBvdmVyLgoKTm90ZXMgb24gcG9zc2libGUgKHVuaW1wbGVtZW50ZWQhKSBtb2RpZmljYXRpb25zOgoKVGhlIG91dHB1dCBzYW1wbGVzIGZyb20gcGFydGVkJ3MgcHJpbnQgY29tbWFuZCwgZmRpc2sncyBwIGNvbW1hbmQsIGV0Yy4sCm1pZ2h0IGJlIG1hZGUgaW50byB0YWJsZXMgKG11bHRpLWNvbHVtbiB0YWJsZXMpIHRvIGVuc3VyZSBzcGlmZnkgZm9ybWF0dGluZy4KCkknZCBsaWtlIHRvIGZpbmQgYSB3YXkgdG8gbWFrZSAqZW50cnk6IHNlZSAqc3lub255bSB0eXBlIHJlZmVyZW5jZXMgaW4KdGhlIGluZGV4LCBzbywgZS5nLiwgdG8gcmVmZXIgcGVvcGxlIGxvb2tpbmcgZm9yIEFwcGxlIHRvIE1hY2ludG9zaCwgYW5kClBvd2VyUEMgdG8gTWFjaW50b3NoLCBldGMuICBQcm9iYWJseSB0ZXhpbmZvIGRvZXMgdGhpcyBhbHJlYWR5OyBJIGR1bm5vLgoKCk5vdGVzIG9uIGdlbmVyYWwgZml4ZXM6CgpSTUs6IHVzYWdlOiBlZyAtPiBlLmcuICAoImUuZy4iIGlzIGN1c3RvbWFyaWx5IHNwZWxsZWQgdGh1cykuCgpSTUs6IHVzYWdlOiAiaXRzIiBpcyBFbmdsaXNoIHBvc3Nlc3NpdmUgdGhpcmQgcGVyc29uIHNpbmd1bGFyIGFkamVjdGl2ZQooY2YgInNlaW4vaWhyIiwgInNvbi9zYS9zZXMiKS4gICJpdCdzIiBpcyBhIGNvbnRyYWN0aW9uIG9mICJpdCBpcyIsCmkuZS4sIHRoaXJkIHBlcnNvbiBzaW5ndWxhciBwcmVzZW50IGFjdGl2ZSBpbmRpY2F0aXZlIG9mICJ0byBiZSIgKGNmCiJkYXMgaXN0IiwgImlsIGVzdCIpLiAgSSBob3BlIHRoYXQgZGVzY3JpcHRpb24gZG9lc24ndCBjb21lIG9mZiB0b28Kc25vdHR5LiAgSSd2ZSBjaGFuZ2VkICdpdCdzJyB0byAnaXRzJyBtb3JlIHRpbWVzIHRoYW4gbm90ZWQgYWJvdmUuCgpSTUs6IHVzYWdlIChwdW5jdHVhdGlvbik6IGluIEVuZ2xpc2gsIGNvbW1hcyBhcmUgb25seSB1c2VkIHRvIHNlcGFyYXRlCnJlbGF0aXZlIGNsYXVzZXMgd2hlbiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIGNsYXVzZSBpcyBkZWVtZWQKbm9uLWVzc2VudGlhbCBmb3IgaWRlbnRpZnlpbmcgdGhlIHJlZmVyZW50IG9mIHRoZSBub3VuIG9uIHdoaWNoIHRoZQpjbGF1c2UgZGVwZW5kcyAoR2VybWFuIHVzZXMgY29tbWFzIGFyb3VuZCBldmVyeSByZWxhdGl2ZSBjbGF1c2UsIGJ5CmNvbnRyYXN0KS4gIFNvOiAiSSBoYXZlIHJlYWQgdGhlIGJvb2sgdGhhdCB3YXMgYXNzaWduZWQiIGRvZXNuJ3QgaGF2ZSBhCmNvbW1hIGJlY2F1c2UgdGhlIGNsYXVzZSAndGhhdCB3YXMgYXNzaWduZWQnIGlzIG5lZWRlZCB0byBpZGVudGlmeSB3aGljaApib29rIGlzIHRoZSBvYmplY3Qgb2YgJ3JlYWQnLCB3aGVyZWFzICJJIGhhdmUgcmVhZCB0aGUgYm9vaywgd2hpY2gKd2Fzbid0IHZlcnkgZ29vZCIgaW1wbGllcyB0aGF0IHRoZSBmYWN0IHRoYXQgdGhlIGJvb2sgd2Fzbid0IHZlcnkgZ29vZAppcyBleHRyYSBpbmZvcm1hdGlvbiwgbm90IHJlcXVpcmVkIGZvciB0aGUgaWRlbnRpZmljYXRpb24gb2YgdGhlIGJvb2ssCmUuZy4gaXRzIGlkZW50aXR5IGhhcyBhbHJlYWR5IGJlZW4gZXN0YWJsaXNoZWQpLgoKQGVuZCBpZ25vcmUKCg==