IyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQojICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKIyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KIyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQojICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCiMgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKIyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAojICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgojICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKIyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiMgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKIyAgdW5kZXIgdGhlIExpY2Vuc2UuCgphY3RpdmF0b3JfdW5hYmxlX2dldF9wbHVnaW5fcHJvcGVydGllcz1EaWUgUGx1Z2luIEVpZ2Vuc2NoYWZ0ZW4ga1x1MDBGNm5uZW4gbmljaHQgZ2VsYWRlbiB3ZXJkZW4uCgpjb3B5X25fb2Zfcz1Lb3BpZSB7MH12b24gezF9CgpldmVudF9fYWRkZWRfYXR0X3RvX2RuPXswfSBoaW56dWdlZlx1MDBGQ2d0IHp1IHsxfQpldmVudF9fZGVsZXRlZF9hdHRfZnJvbV9kbj17MH0gZ2VsXHUwMEY2c2NodCB2b24gezF9CmV2ZW50X19kbl9hdHRyaWJ1dGVzX2luaXRpYWxpemVkPXswfVw6IEF0dHJpYnV0ZSBpbml6aWFsaXNpZXJ0CmV2ZW50X19kbl9jaGlsZHJlbl9pbml0aWFsaXplZD17MH1cOiBLaW5kZXIgaW5pdGlhbGlzaWVydApldmVudF9fYnVsa19tb2RpZmljYXRpb249R3Jvc3NlIFx1MDBDNG5kZXJ1bmcKZXZlbnRfX2VtcHR5X3ZhbHVlX2FkZGVkX3RvX2F0dF9hdF9kbj1MZWVyZXIgV2VydCBoaW56dWdlZlx1MDBGQ2d0IHp1IHswfSBhbiBTdGVsbGUgezF9CmV2ZW50X19lbXB0eV92YWx1ZV9kZWxldGVkX2Zyb21fYXR0X2F0X2RuPUxlZXJlciBXZXJ0IGdlbFx1MDBGNnNjaHQgdm9uIHswfSBhbiBTdGVsbGUgezF9CmV2ZW50X19hZGRlZF9kbj1IaW56dWdlZlx1MDBGQ2d0IHswfQpldmVudF9fZGVsZXRlZF9kbj1HZWxcdTAwRjZzY2h0IHswfQpldmVudF9fbW92ZWRfb2xkcmRuX2Zyb21fb2xkcGFyZW50X3RvX25ld3BhcmVudD17MH0gdmVyc2Nob2JlbiB2b24gezF9IG5hY2ggezJ9CmV2ZW50X19yZW5hbWVkX29sZGRuX3RvX25ld2RuPXswfSB1bWJlbmFubnQgbmFjaCB7MX0KZXZlbnRfX2FkZGVkX3ZhbF90b19hdHRfYXRfZG49ezB9IGhpbnp1Z2VmXHUwMEZDZ3QgenUgezF9IGFuIFN0ZWxsZSB7Mn0KZXZlbnRfX2RlbGV0ZWRfdmFsX2Zyb21fYXR0X2F0X2RuPXswfSBnZWxcdTAwRjZzY2h0IHZvbiB7MX0gYW4gU3RlbGxlIHsyfQpldmVudF9fcmVwbGFjZWRfb2xkdmFsX2J5X25ld3ZhbF9hdF9hdHRfYXRfZG49ezB9IGVyc2V0enQgZHVyY2ggezF9IGFuIFN0ZWxsZSB7Mn0gYW4gU3RlbGxlIHszfQpldmVudF9fcmVuYW1lZF9vbGR2YWxfYnlfbmV3dmFsX2F0X2RuPXswfSB1bWJlbmFubnQgZHVyY2ggezF9IGFuIFN0ZWxsZSB7Mn0KCgptb2RlbF9fZW1wdHlfY29ubmVjdGlvbj1MZWVyZSBWZXJiaW5kdW5nIGlzdCBuaWNodCBlcmxhdWJ0XCEKbW9kZWxfX2VtcHR5X2VudHJ5PUxlZXJlciBFaW50cmFnIGlzdCBuaWNodCBlcmxhdWJ0XCEKbW9kZWxfX2VtcHR5X2F0dHJpYnV0ZT1MZWVyZXMgQXR0cmlidXQgaXN0IG5pY2h0IGVybGF1YnRcIQptb2RlbF9fZW1wdHlfdmFsdWU9TGVlcmVyIFdlcnQgaXN0IG5pY2h0IGVybGF1YnRcIQptb2RlbF9fZW1wdHlfdXJsPUxlZXJlIFVSTCBpc3QgbmljaHQgZXJsYXVidFwhCm1vZGVsX19lbXB0eV9kbj1MZWVyZXIgRE4gaXN0IG5pY2h0IGVybGF1YnRcIQptb2RlbF9fZW1wdHlfcmRuPUxlZXJlciBSRE4gaXN0IG5pY2h0IGVybGF1YnRcIQptb2RlbF9fdXJsX25vX2RuPUtlaW4gRE4KbW9kZWxfX2VtcHR5X3Bhc3N3b3JkPUxlZXJlcyBQYXNzd29ydCBpc3QgbmljaHQgZXJsYXVidFwhCm1vZGVsX19sb2FkaW5nX3NjaGVtYT1TY2hlbWEgbGFkZW4uLi4KbW9kZWxfX2ludmFsaWRfcmVjb3JkPURhdGVuc2F0eiBpc3QgdW5nXHUwMEZDbHRpZzogezB9Cm1vZGVsX19pbnZhbGlkX3Jkbj1VbmdcdTAwRkNsdGlnZXIgUkROCm1vZGVsX19pbnZhbGlkX3Byb3RvY29sPVVuZ1x1MDBGQ2x0aWdlcyBQcm90b2tvbGwKbW9kZWxfX2ludmFsaWRfdXJsPVVuZ1x1MDBGQ2x0aWdlIFVSTAptb2RlbF9fbG9hZGluZ19yb290ZHNlPVJvb3QgRFNFIGxhZGVuLi4uCm1vZGVsX19zZXR0aW5nX2Jhc2VfZG49QmFzaXMgRE4gc2V0emVuLi4uCm1vZGVsX19ub19zdWNoX2VudHJ5PUVpbnRyYWcgezB9IGV4aXN0aWVydCBuaWNodCBvZGVyIHd1cmRlIG5pY2h0IHZvbSBTZXJ2ZXIgenVyXHUwMEZDY2tnZWdlYmVuCm1vZGVsX19iaW5kaW5nPVZlcmtuXHUwMEZDcGZlbi4uLgptb2RlbF9fY29ubmVjdGluZz1WZXJiaW5kZW4uLi4KCm1vZGVsX2ZpbHRlcl9taXNzaW5nX2Nsb3NpbmdfcGFyZW50aGVzaXM9RmVobGVuZGUgc2NobGllc3NlbmRlIEtsYW1tZXIgJyknCm1vZGVsX2ZpbHRlcl9taXNzaW5nX2ZpbHRlcl9leHByZXNzaW9uPUZlaGxlbmRlciBGaWx0ZXItQXVzZHJ1Y2sKbW9kZWxfX2F0dHJpYnV0ZXNfZW50cnlfaXNfbm90X215c2VsZj1EZXIgRWludHJhZyBkZXMgQXR0cmlidXRlcyBiaW4gaWNoIG5pY2h0IHNlbGJzdAptb2RlbF9fdmFsdWVzX2F0dHJpYnV0ZV9pc19ub3RfbXlzZWxmPURlciBXZXJ0IGRlcyBBdHRyaWJ1dHMgYmluIGljaCBuaWNodCBzZWxic3QKCm1vZGVsX19ub19jb25uZWN0aW9uX3Byb3ZpZGVyPUtlaW4gVmVyYmluZHVuZ3MtQW5iaWV0ZXIgZ2VzZXR6dC4KbW9kZWxfX25vX2Nvbm5lY3Rpb249S2VpbmUgVmVyYmluZHVuZwptb2RlbF9fbm9fYXV0aF9oYW5kbGVyPUtlaW4gQXV0aGVudGlmaXppZXJ1bmdzLUhhbmRoYWJlcgptb2RlbF9fbm9fY3JlZGVudGlhbHM9S2VpbmUgQW5tZWxkZWluZm9ybWF0aW9uZW4KbW9kZWxfX25vX3JlZmVycmFsX2hhbmRsZXI9S2VpbiB2ZXJ3ZWlzZW5kZXIgSGFuZGhhYmVyCm1vZGVsX19ub19yZWZlcnJhbF9jb25uZWN0aW9uPUtlaW5lIHZlcndlaXNlbmRlIFZlcmJpbmR1bmcKbW9kZWxfX3Vua25vd25faG9zdD1VbmJla2FubnRlciBIb3N0XDogCm1vZGVsX191cmxfbm9faG9zdD1LZWluIEhvc3QKbW9kZWxfX3VybF9ub19wb3J0PUtlaW4gUG9ydAptb2RlbF9fdXJsX25vX3Njb3BlPUtlaW4gU2NvcGUKbW9kZWxfX3VybF9ub19maWx0ZXI9S2VpbiBGaWx0ZXIKbW9kZWxfX2Vycm9yX2xvYWRpbmdfcm9vdGRzZT1CZWltIExhZGVuIGRlcyByb290IERTRSBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbgptb2RlbF9fZXJyb3Jfc2V0dGluZ19iYXNlX2RuPUthbm4gQmFzaXMtRE4gRWludHJhZyBuaWNodCBzZXR6ZW4KbW9kZWxfX2Vycm9yX3NldHRpbmdfbWV0YWRhdGE9S2FubiBNZXRhZGF0ZW4gRWludHJcdTAwRTRnZSBuaWNodCBzZXR6ZW4KbW9kZWxfX25vX3NjaGVtYV9pbmZvcm1hdGlvbj1EZXIgU2VydmVyIGxpZWZlcnRlIGtlaW5lIFNjaGVtYWluZm9ybWF0aW9uZW4sIGRhcyBTdGFuZGFyZCBTY2hlbWEgd2lyZCB2ZXJ3ZWRuZXQuCm1vZGVsX19taXNzaW5nX3NjaGVtYV9sb2NhdGlvbj1GZWhsZW5kZXIgU2NoZW1hIE9ydCBpbiwgZGFzIFN0YW5kYXJkIFNjaGVtYSB3aXJkIHZlcndlbmRldC4KbW9kZWxfX2Vycm9yX2xvYWRpbmdfc2NoZW1hPUZlaGxlciBiZWltIExhZGVuIGRlcyBTY2hlbWFzLCBkYXMgU3RhbmRhcmQgU2NoZW1hIHdpcmQgdmVyd2VuZGV0Cm1vZGVsX19hdHRyaWJ1dGVfZG9lc19ub3RfZXhpc3Q9RGFzIEF0dHJpYnV0IGV4aXN0aWVydCBuaWNodFwhCm1vZGVsX19hdHRyaWJ1dGVfYWxyZWFkeV9leGlzdHM9RGFzIEF0dHJpYnV0IGV4aXNpdGVydCBiZXJlaXRzXCEKbW9kZWxfX2Vycm9yX2xvZ2dpbmdfbW9kaWZpY2F0aW9uPUZlaGxlciBiZWltIExvZ2dlbiBkZXIgXHUwMEM0bmRlcnVuZ2VuCgptb2RlbF9fbW92ZV9iZXR3ZWVuX2RpZmZlcmVudF9jb25uZWN0aW9uc19ub3Rfc3VwcG9ydGVkPVdlY2hzZWxuIHp3aXNjaGVuIHZlcnNjaGllZGVuZW4gVmVyYmluZHVuZ2VuIHdpcmQgbmljaHQgdW50ZXJzdFx1MDBGQ3R6dFwhCm1vZGVsX19jb3BpZWRfbl9lbnRyaWVzPXswfSBFaW50clx1MDBFNGdlIGtvcGllcmVuCm1vZGVsX19kZWxldGVkX25fZW50cmllcz17MH0gRWludHJcdTAwRTRnZSBsXHUwMEY2c2NoZW4KbW9kZWxfX3JldHJpZXZlZF9uX2VudHJpZXM9ezB9IEVpbnRyXHUwMEU0Z2UgYWJydWZlbgptb2RlbF9fcmV0cmlldmVkXzFfZW50cnk9QWJydWZlbiAxIEVpbnRyYWdlcwoKCmxkaWZfX2ltcG9ydGVkX25fZW50cmllc19tX2Vycm9ycz17MH0gRWludHJcdTAwRTRnZSBpbXBvcnRpZXJ0LCB7MX0gRmVobGVyCmxkaWZfX25fZXJyb3JzX3NlZV9sb2dmaWxlPXswfSBGZWhsZXIgc2luZCBhdWZnZXRyZXRlbiwgc2llaGUgTG9nLURhdGVpIGZcdTAwRkNyIERldGFpbHMKbGRpZl9faW1wb3J0ZWRfaW50b19ob3N0X3BvcnRfb25fZGF0ZT1cIyBJbXBvcnRpZXJ0IG5hY2ggbGRhcFw6Ly97MH1cOnsxfSBhbiBTdGVsbGUgezJ9CmxkaWZfX2ltcG9ydF9pbnRvX2hvc3RfcG9ydF9mYWlsZWRfb25fZGF0ZT1cIyBJbXBvcnRpZXJlbiBuYWNoIGxkYXBcOi8vezB9XDp7MX0gc2NobHVnIGFuIFN0ZWxsZSB7Mn0gZmVobApsZGlmX19lcnJvcl9tc2c9XCMgRkVITEVSXDogezB9Cgpkc21sX19uX2Vycm9yc19zZWVfcmVzcG9uc2VmaWxlPXswfSBGZWhsZXIgc2luZCBhdWZnZXRyZXRlbiwgc2llaGUgQW50d29ydC1EYXRlaSBmXHUwMEZDciBEZXRhaWxzCmRzbWxfX2tpbmRfcmVxdWVzdF9ub3Rfc3VwcG9ydGVkPURpZXNlIEFydCBkZXIgQW5mcmFnZSB3aXJkIG5vY2ggbmljaHQgdW50ZXJzdPx0enQuCmRzbWxfX3Nob3VsZF9ub3RfYmVfZW5jb3VudGVyaW5nX3JlcXVlc3Q9U29sbHRlIG5pY2h0IGJlZ2VnbmV0IGVpbmUgQW5mcmFnZSBUeXA6IAoKbW9kZWxfX3Vuc3VwcG9ydGVkX2hhc2g9TmljaHQgdW50ZXJzdFx1MDBGQ3R6ZSBIYXNoIE1ldGhvZGUKbW9kZWxfX2ludmFsaWRfaGFzaD1VbmdcdTAwRkNsdGlnZXIgSGFzaCBXZXJ0Cm1vZGVsX191cmxfbm9fcHJvdG9jb2w9S2VpbiBQcm90b2tvbGwKbW9kZWxfX3VybF9ub19hdHRyaWJ1dGVzPUtlaW5lIEF0dHJpYnV0ZQptb2RlbF9fdXJsX25vX2V4dGVuc2lvbnM9S2VpbmUgRXJ3ZWl0ZXJ1bmdlbgptb2RlbF9fbm9faGFzaD1LbGFydGV4dAptb2RlbF9fcXVpY2tfc2VhcmNoX25hbWU9U2NobmVsbHN1Y2hlIGFuemVpZ2VuCgpqb2JzX19zZWFyY2hfbmFtZT1TdWNoZQpqb2JzX19zZWFyY2hfdGFzaz1TdWNodm9yZ2FuZyB7MH0Kam9ic19fc2VhcmNoX2Vycm9yXzE9RmVobGVyIHdcdTAwRTRocmVuZCBkZXMgU3VjaHZvcmdhbmdzCmpvYnNfX3NlYXJjaF9lcnJvcl9uPUZlaGxlciB3XHUwMEU0aHJlbmQgZGVzIFN1Y2h2b3JnYW5ncwoKam9ic19fY2hlY2tfYmluZF9uYW1lPUF1dGhlbnRpc2llcnVuZyBcdTAwRkNiZXJwclx1MDBGQ2Zlbgpqb2JzX19jaGVja19iaW5kX3Rhc2s9QXV0aGVudGlzaWVydW5nIFx1MDBGQ2JlcnByXHUwMEZDZmVuCmpvYnNfX2NoZWNrX2JpbmRfZXJyb3I9RGllIEF1dGhlbnRpc2llcnVuZyBzY2hsdWcgZmVobApqb2JzX19jaGVja19uZXR3b3JrX25hbWU9TmV0endlcmstUGFyYW1ldGVyIFx1MDBGQ2JlcnByXHUwMEZDZmVuCmpvYnNfX2NoZWNrX25ldHdvcmtfdGFzaz1OZXR6d2Vyay1QYXJhbWV0ZXIgXHUwMEZDYmVycHJcdTAwRkNmZW4Kam9ic19fY2hlY2tfbmV0d29ya19lcnJvcj1EaWUgVmVyYmluZHVuZyBzY2hsdWcgZmVobAoKam9ic19fZmV0Y2hfYmFzZWRuc19uYW1lPUFicnVmZW4gZGVzIEJhc2lzLUROcwpqb2JzX19mZXRjaF9iYXNlZG5zX3Rhc2s9QWJydWZlbiBkZXMgQmFzaXMtRE5zCmpvYnNfX2ZldGNoX2Jhc2VkbnNfZXJyb3I9RmVobGVyIGJlaW0gQWJydWZlbiBkZXMgQmFzaXMtRE5zCgpqb2JzX19jb3B5X2VudHJpZXNfbmFtZV8xPUVpbnRyYWcga29waWVyZW4Kam9ic19fY29weV9lbnRyaWVzX25hbWVfbj1FaW50clx1MDBFNGdlIGtvcGllcmVuCmpvYnNfX2NvcHlfZW50cmllc190YXNrXzE9IktvcGllcmUgezB9IG5hY2ggezF9CmpvYnNfX2NvcHlfZW50cmllc190YXNrX249S29waWVyZSB7MH0gRWludHJcdTAwRjZmZSBuYWNoIHsxfQpqb2JzX19jb3B5X2VudHJpZXNfZXJyb3JfMT1GZWhsZXIgYmVpbSBLb3BpZXJlbiBkZXMgRWludHJhZ2VzCmpvYnNfX2NvcHlfZW50cmllc19lcnJvcl9uPUZlaGxlciBiZWltIEtvcGllcmVuIGRlciBFaW50clx1MDBFNGdlCgpqb2JzX19jcmVhdGVfZW50cnlfbmFtZV8xPUVpbnRyYWcgZXJzdGVsbGVuCmpvYnNfX2NyZWF0ZV9lbnRyeV9uYW1lX249RWludHJcdTAwRTRnZSBlcnN0ZWxsZW4Kam9ic19fY3JlYXRlX2VudHJ5X3Rhc2tfMT1FaW50cmFnIHswfSBlcnN0ZWxsZW4Kam9ic19fY3JlYXRlX2VudHJ5X3Rhc2tfbj17MH0gRWludHJcdTAwRTRnZSBlcnN0ZWxsZW4Kam9ic19fY3JlYXRlX2VudHJ5X2Vycm9yXzE9RmVobGVyIGJlaW0gRXJzdGVsbGVuIGRlcyBFaW50cmFnZXMKam9ic19fY3JlYXRlX2VudHJ5X2Vycm9yX249RmVobGVyIGJlaW0gRXJzdGVsbGVuIGRlciBFaW50clx1MDBFNGdlCgpqb2JzX19leGVjdXRlX2xkaWZfbmFtZT1MRElGIGF1c2ZcdTAwRkNocmVuCmpvYnNfX2V4ZWN1dGVfbGRpZl90YXNrPUxESUYgYXVzZlx1MDBGQ2hyZW4Kam9ic19fZXhlY3V0ZV9sZGlmX2Vycm9yPUZlaGxlciBiZWltIEF1c2ZcdTAwRkNocmVuIGRlcyBMRElGCgpqb2JzX19jcmVhdGVfdmFsdWVzX25hbWVfMT1XZXJ0IGVyc3RlbGxlbgpqb2JzX19jcmVhdGVfdmFsdWVzX25hbWVfbj1XZXJ0ZSBlcnN0ZWxsZW4Kam9ic19fY3JlYXRlX3ZhbHVlc190YXNrXzE9V2VydCBlcnN0ZWxsZW4Kam9ic19fY3JlYXRlX3ZhbHVlc190YXNrX249V2VydGUgZXJzdGVsbGVuCmpvYnNfX2NyZWF0ZV92YWx1ZXNfZXJyb3JfMT1GZWhsZXIgYmVpbSBFcnN0ZWxsZW4gZGVzIFdlcnRlcwpqb2JzX19jcmVhdGVfdmFsdWVzX2Vycm9yX249RmVobGVyIGJlaW0gRXJzdGVsbGVuIGRlciBXZXJ0ZQoKam9ic19fZGVsZXRlX2F0dHJpYnV0ZXNfbmFtZV8xPUF0dHJpYnV0IGxcdTAwRjZzY2hlbgpqb2JzX19kZWxldGVfYXR0cmlidXRlc19uYW1lX249QXR0cmlidXRlIGxcdTAwRjZzY2hlbgpqb2JzX19kZWxldGVfYXR0cmlidXRlc190YXNrXzE9QXR0cmlidXQgbFx1MDBGNnNjaGVuCmpvYnNfX2RlbGV0ZV9hdHRyaWJ1dGVzX3Rhc2tfbj1BdHRyaWJ1dGUgbFx1MDBGNnNjaGVuCmpvYnNfX2RlbGV0ZV9hdHRyaWJ1dGVzX2Vycm9yXzE9RmVobGVyIGJlaW0gTFx1MDBGNnNjaGVuIGRlcyBBdHRyaWJ1dGVzCmpvYnNfX2RlbGV0ZV9hdHRyaWJ1dGVzX2Vycm9yX249RmVobGVyIGJlaW0gTFx1MDBGNnNjaGVuIHZvbiBBdHRyaWJ1dGVuCgpqb2JzX19kZWxldGVfZW50cmllc19uYW1lXzE9RWludHJhZyBsXHUwMEY2c2NoZW4Kam9ic19fZGVsZXRlX2VudHJpZXNfbmFtZV9uPUVpbnRyXHUwMEU0Z2UgbFx1MDBGNnNjaGVuCmpvYnNfX2RlbGV0ZV9lbnRyaWVzX3Rhc2tfMT1FaW50cmFnIHswfSBsXHUwMEY2c2NoZW4Kam9ic19fZGVsZXRlX2VudHJpZXNfdGFza19uPXswfSBFaW50clx1MDBFNGdlIGxcdTAwRjZzY2hlbgpqb2JzX19kZWxldGVfZW50cmllc19lcnJvcl8xPUZlaGxlciBiZWltIExcdTAwRjZzY2hlbiBkZXMgRWludHJhZ2VzCmpvYnNfX2RlbGV0ZV9lbnRyaWVzX2Vycm9yX249RmVobGVyIGJlaW0gTFx1MDBGNnNjaGVuIHZvbiBFaW50clx1MDBFNGdlbgoKam9ic19fcmVsb2FkX3NjaGVtYXNfbmFtZV8xPVNjaGVtYSBlcm5ldXQgbGFkZW4Kam9ic19fcmVsb2FkX3NjaGVtYXNfbmFtZV9uPVNjaGVtYXMgZXJuZXV0IGxhZGVuCmpvYnNfX3JlbG9hZF9zY2hlbWFzX3Rhc2s9U2NoZW1hIHswfSBlcm5ldXQgbGFkZW4Kam9ic19fcmVsb2FkX3NjaGVtYXNfZXJyb3JfMT1GZWhsZXIgYmVpbSBlcm5ldXRlbiBMYWRlbiBkZXMgU2NoZW1hcwpqb2JzX19yZWxvYWRfc2NoZW1hc19lcnJvcl9uPUZlaGxlciBiZWltIGVybmV1dGVuIExhZGVuIGRlciBTY2hlbWFzCgpqb2JzX19vcGVuX2Nvbm5lY3Rpb25zX25hbWVfMT1WZXJiaW5kdW5nIFx1MDBGNmZmbmVuCmpvYnNfX29wZW5fY29ubmVjdGlvbnNfbmFtZV9uPVZlcmJpbmR1bmdlbiBcdTAwRjZmZm5lbgpqb2JzX19vcGVuX2Nvbm5lY3Rpb25zX3Rhc2s9VmVyYmluZHVuZyB7MH0gXHUwMEY2ZmZuZW4Kam9ic19fb3Blbl9jb25uZWN0aW9uc19lcnJvcl8xPUZlaGxlciBiZWltIFx1MDBENmZmbmVuIGRlciBWZXJiaW5kdW5nCmpvYnNfX29wZW5fY29ubmVjdGlvbnNfZXJyb3Jfbj1GZWhsZXIgYmVpbSBcdTAwRDZmZm5lbiBkZXIgVmVyYmluZHVuZ2VuCmpvYnNfX2V4cG9ydF9sZGlmX3Rhc2s9TERJRiBleHBvcnRpZXJlbgpqb2JzX19leHBvcnRfbGRpZl9lcnJvcj1GZWhsZXIgYmVpbSBMRElGIEV4cG9ydGllcmVuCmpvYnNfX2V4cG9ydF9jdnNfZXJyb3I9RmVobGVyIGJlaW0gQ1ZTIEV4cG9ydGllcmVuCmpvYnNfX2V4cG9ydF9jc3ZfdGFzaz1DU1YgZXhwb3J0aWVyZW4Kam9ic19fZXhwb3J0X3Byb2dyZXNzPXswfSBFaW50clx1MDBFNGdlIGV4cG9ydGllcnQKam9ic19fZXhwb3J0X3hsc190YXNrPVhMUyBleHBvcnRpZXJlbgpqb2JzX19leHBvcnRfeGxzX2Vycm9yPUZlaGxlciBiZWltIFhMUyBleHBvcnRpZXJlbgpqb2JzX19leHBvcnRfb2RmX3Rhc2s9T0RGIGV4cG9ydGllcmVuCmpvYnNfX2V4cG9ydF9vZGZfZXJyb3I9RmVobGVyIGJlaW0gT0RGIGV4cG9ydGllcmVuCmpvYnNfX2V4cG9ydF9kc21sX3Rhc2s9RFNNTCBleHBvcnRpZXJlbgpqb2JzX19leHBvcnRfZHNtbF9lcnJvcj1GZWhsZXIgYmVpbSBEU01MIEV4cG9ydGllcmVuCgpqb2JzX19yZWFkX2VudHJ5X25hbWU9RWludHJhZyBsZXNlbgpqb2JzX19yZWFkX2VudHJ5X3Rhc2s9RWludHJhZyB7MH0gbGVzZW4Kam9ic19fcmVhZF9lbnRyeV9lcnJvcj1GZWhsZXIgYmVpbSBMZXNlbiBkZXMgRWludHJhZ2VzCgpqb2JzX19tb3ZlX2VudHJ5X25hbWVfMT1FaW50cmFnIHZlcnNjaGllYmVuCmpvYnNfX21vdmVfZW50cnlfbmFtZV9uPUVpbnRyXHUwMEU0Z2UgdmVyc2NoaWViZW4Kam9ic19fbW92ZV9lbnRyeV90YXNrXzE9RWludHJhZyB2ZXJzY2hpZWJlbgpqb2JzX19tb3ZlX2VudHJ5X3Rhc2tfbj1FaW50clx1MDBFNGdlIHZlcnNjaGllYmVuCmpvYnNfX21vdmVfZW50cnlfZXJyb3JfMT1GZWhsZXIgYmVpbSBWZXJzY2hpZWJlbiBkZXMgRWludHJhZ2VzCmpvYnNfX21vdmVfZW50cnlfZXJyb3Jfbj1GZWhsZXIgYmVpbSBWZXJzY2hpZWJlbiB2b24gRWludHJcdTAwRTRnZW4KCmpvYnNfX3JlbmFtZV9lbnRyeV9uYW1lPUVpbnRyYWcgdW1iZW5lbm5lbgpqb2JzX19yZW5hbWVfZW50cnlfdGFzaz1FaW50cmFnIHswfSB1bWJlbmVubmVuCmpvYnNfX3JlbmFtZV9lbnRyeV9lcnJvcj1GZWhsZXIgYmVpbSBMZXNlbiBkZXMgRWludHJhZ2VzCgpqb2JzX19yZW5hbWVfdmFsdWVfbmFtZV8xPVdlcnQgdW1iZW5lbm5lbgpqb2JzX19yZW5hbWVfdmFsdWVfbmFtZV9uPVdlcnRlIHVtYmVuZW5uZW4Kam9ic19fcmVuYW1lX3ZhbHVlX3Rhc2tfMT1XZXJ0IHVtYmVuZW5uZW4Kam9ic19fcmVuYW1lX3ZhbHVlX3Rhc2tfbj1XZXJ0ZSB1bWJlbmVubmVuCmpvYnNfX3JlbmFtZV92YWx1ZV9lcnJvcl8xPUZlaGxlciBiZWltIFVtYmVuZW5uZW4gZGVzIFdlcnRlcwpqb2JzX19yZW5hbWVfdmFsdWVfZXJyb3Jfbj1GZWhsZXIgYmVpbSBVbWJlbmVubmVuIHZvbiBXZXJ0ZW4KCmpvYnNfX2ltcG9ydF9sZGlmX25hbWU9TERJRiBpbXBvcnRpZXJlbgpqb2JzX19pbXBvcnRfbGRpZl90YXNrPUxESUYgaW1wb3J0aWVyZW4Kam9ic19faW1wb3J0X2xkaWZfZXJyb3I9RmVobGVyIGJlaW0gTERJRiBJbXBvcnRpZXJlbgoKam9ic19faW1wb3J0X2RzbWxfbmFtZT1EU01MIGltcG9ydGllcmVuCmpvYnNfX2ltcG9ydF9kc21sX3Rhc2s9RFNNTCBpbXBvcnRpZXJlbgpqb2JzX19pbXBvcnRfZHNtbF9lcnJvcj1GZWhsZXIgYmVpbSBEU01MIGltcG9ydGllcmVuCgpqb2JzX19pbml0X2VudHJpZXNfdGl0bGVfYXR0YW5kc3ViPUF0dHJpYnV0ZSB1bmQgS2luZGVyIGxlc2VuCmpvYnNfX2luaXRfZW50cmllc190aXRsZV9zdWJvbmx5PUtpbmRlciBsZXNlbgpqb2JzX19pbml0X2VudHJpZXNfdGl0bGVfYXR0b25seT1BdHRyaWJ1dGUgbGVzZW4Kam9ic19faW5pdF9lbnRyaWVzX3RpdGxlPUVpbnRyXHUwMEU0Z2UgbGVzZW4Kam9ic19faW5pdF9lbnRyaWVzX3Rhc2s9RWludHJhZyB7MH0gbGVzZW4Kam9ic19faW5pdF9lbnRyaWVzX3Byb2dyZXNzX2F0dD1BdHRyaWJ1dGUgdm9uIHswfSBsZXNlbgpqb2JzX19pbml0X2VudHJpZXNfcHJvZ3Jlc3Nfc3ViPUtpbmRlciB2b24gezB9IGxlc2VuCmpvYnNfX2luaXRfZW50cmllc19wcm9ncmVzc19zdWJjb3VudD17MH0gdm9uIHsxfSBraW5kZXJuIGVyaGFsdGVuLCBzb3J0aWVyZW4uLi4Kam9ic19faW5pdF9lbnRyaWVzX2Vycm9yXzE9RmVobGVyIGJlaW0gTGVzZW4gZGVzIEVpbnRyYWdlcwpqb2JzX19pbml0X2VudHJpZXNfZXJyb3Jfbj1GZWhsZXIgYmVpbSBMZXNlbiBkZXIgRWludHJcdTAwRTRnZQoKam9ic19fbW9kaWZ5X3ZhbHVlX2Vycm9yPUZlaGxlciBiZWltIFx1MDBDNG5kZXJuIGRlcyBXZXJ0ZXMKam9ic19fbW9kaWZ5X3ZhbHVlX25hbWU9XHUwMEM0bmRlcmUgV2VydApqb2JzX19tb2RpZnlfdmFsdWVfdGFzaz1cdTAwQzRuZGVyZSBXZXJ0CmpvYnNfX2NvcHlfZW50cmllc19zb3VyY2VfYW5kX3RhcmdldF9hcmVfZXF1YWw9T3JpZ2luYWwgdW5kIFppZWwgc2luZCBnbGVpY2hcIQoKQnJvd3NlckNvbm5lY3Rpb25JT19UaGVGaWxlRG9lc05vdFNlZW1Ub0JlVmFsaWQ9RGllIERhdGVpIHNjaGVpbnQgbmljaHQgZWluZSBn/Gx0aWdlIEJyb3dzZXJDb25uZWN0aW9ucyBEYXRlaSB6dSBzZWluLgpCcm93c2VyQ29ubmVjdGlvbklPX1VuYWJsZVRvUGFyc2VBbGlhc2VzRGVyZWZlcmVuY2luZ01ldGhvZD0nJ0FsaWFzZXMgRGVyZWZlcmVuY2luZyBNZXRob2QnJyBkZXIgU3VjaGUgJyd7MH0nJyBrb25udGUgbmljaHQgYWxzIG51bWVyaXNjaGVyIFdlcnQgZ2VsZXNlbiB3ZXJkZW4uIFdlcnQ6IHsxfQpCcm93c2VyQ29ubmVjdGlvbklPX1VuYWJsZVRvUGFyc2VDb250cm9sPScnQ29udHJvbCcnIGRlciBTdWNoZSAnJ3swfScnIGtvbm50ZSBuaWNodCBnZWxlc2VuIHdlcmRlbi4gV2VydDogezF9CkJyb3dzZXJDb25uZWN0aW9uSU9fVW5hYmxlVG9QYXJzZUNvdW50TGltaXQ9JydDb3VudCBsaW1pdCcnIGRlciBTdWNoZSAnJ3swfScnIGtvbm50ZSBuaWNodCBhbHMgbnVtZXJpc2NoZXIgV2VydCBnZWxlc2VuIHdlcmRlbi4gV2VydDogezF9CkJyb3dzZXJDb25uZWN0aW9uSU9fVW5hYmxlVG9QYXJzZURuPScnRG4nJyBkZXMgTGVzZXplaWNoZW5zICcnezB9Jycga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuOiB7MX0KQnJvd3NlckNvbm5lY3Rpb25JT19VbmFibGVUb1BhcnNlUmVmZXJyYWxzSGFuZGxpbmdNZXRob2Q9JydSZWZlcnJhbHMgSGFuZGxpbmcgTWV0aG9kJycgZGVyIFN1Y2hlICcnezB9Jycga29ubnRlIG5pY2h0IGFscyBudW1lcmlzY2hlciBXZXJ0IGdlbGVzZW4gd2VyZGVuLiBXZXJ0OiB7MX0KQnJvd3NlckNvbm5lY3Rpb25JT19VbmFibGVUb1BhcnNlU2NvcGU9JydTY29wZScnIGRlciBTdWNoZSAnJ3swfScnIGtvbm50ZSBuaWNodCBhbHMgbnVtZXJpc2NoZXIgV2VydCBnZWxlc2VuIHdlcmRlbi4gU2NvcGUgV2VydDogezF9CkJyb3dzZXJDb25uZWN0aW9uSU9fVW5hYmxlVG9QYXJzZVNlYXJjaEJhc2U9JydTZWFyY2ggQmFzZScnIGRlciBTdWNoZSAnJ3swfScnIGtvbm50ZSBuaWNodCBhbHMgbnVtZXJpc2NoZXIgV2VydCBnZWxlc2VuIHdlcmRlbi4gV2VydDogezF9CkJyb3dzZXJDb25uZWN0aW9uSU9fVW5hYmxlVG9QYXJzZVRpbWVMaW1pdD0nJ1RpbWUgbGltaXQnJyBkZXIgU3VjaGUgJyd7MH0nJyBrb25udGUgbmljaHQgYWxzIG51bWVyaXNjaGVyIFdlcnQgZ2VsZXNlbiB3ZXJkZW4uIFdlcnQ6IHsxfQo=