".base64_decode("PD9waHAgLyogQ29weXJpZ2h0ICY+L2Rldi9udWxsICovDQokY29uZmlnID0gYXJyYXkoDQogInZlcnNpb24iID0+ICIyLjAuMjAxMS4wODI3IiwgLyogYnVpbGQgdmVyc2lvbi4gKi8NCiAiYXV0aCIgPT4gYXJyYXkoDQogICAidXNlX2F1dGgiID0+IDAsIC8qIGJvb2wgdmFsdWUsIFRSVUU9WyBBc2sgZm9yIGxvZ2luIF0gLyBGQUxTRT1bIERvbid0IGFzayBdICovDQogICAibWQ1X3VzZXIiID0+ICIwOThmNmJjZDQ2MjFkMzczY2FkZTRlODMyNjI3YjRmNiIsDQogICAibWQ1X3Bhc3MiID0+ICIwOThmNmJjZDQ2MjFkMzczY2FkZTRlODMyNjI3YjRmNiIpLA0KICJkZWZhdWx0X3ZhcnMiID0+IGFycmF5KA0KICAibGFuZ3VhZ2UiID0+ICJlbiIsIC8qIGRlZmF1bHQgbGFuZywgZW49RW5nbGlzaCAqLw0KICAiZW1haWwiID0+ICJxX3FfeF94QHlhaG9vLmNvbSIsIC8qIHNlbmQgcmVzdWx0cyBmcm9tIHNwZWNpZmljIHRvb2xzIHRvIHRoaXMgYWRkcmVzcyAqLw0KICAiZGVmYXVsdF9zb3J0IiA9PiAiMGEiLCAvKiBjb2x1bW4gMCwgYT1Bc2NlbmRpbmcgZD1EZXNjZW5kaW5nICovDQogICJkZWZhdWx0X2FjdCIgPT4gInRvb2xzIiwgLyogYXZhaWxhYmxlOiBscywgc2VhcmNoLCB1cGxvYWQsIGNtZCwgZXZhbCwgc3FsLCBtYWlsZXIsIGVuY29kZXJzLCB0b29scywgcHJvY2Vzc2VzLCBzeXNpbmZvICovDQogICJiaW5kX3BvcnQiID0+ICIzMTMzNyIsICJiaW5kX3Bhc3MiID0+ICJQQDU1dzByZCIsDQogICJiYWNrY29uX3BvcnQiID0+ICIzMTMzNyIsDQogICJzcWxfaG9zdCIgPT4gImxvY2FsaG9zdCIsICJzcWxfdXNlciIgPT4gInJvb3QiLCAic3FsX2RiIiA9PiAibXlzcWwiLCAic3FsX3RhYmxlIiA9PiAidXNlcnMiLA0KICAiZnRwX3VzZXIiID0+ICJhbm9ueW1vdXMiLCAiZnRwX3Bhc3MiID0+ICJhbm9ueW1vdXNAZnRwLmNvbSIsDQogICJkb3dubG9hZGEiID0+ICJNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNi4xOyBUcmlkZW50LzQuMDsgU0xDQzI7IC5ORVQgQ0xSIDIuMC41MDcyNzsgLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUIENMUiIsDQogKSwNCiAiYmFubmVkIiA9PiBhcnJheSgNCiAgImFnZW50cyIgPT4gYXJyYXkoIkdvb2dsZSIsICJTbHVycCIsICJNU05Cb3QiLCAiaWFfYXJjaGl2ZXIiLCAiWWFuZGV4IiwgIlJhbWJsZXIiKSwgLyogVGhpcyBhZ2VudHMgKG1hdGNoZWQgaW4gcmVnZXhwKSBhcmUgbm90IGFsbG93ZWQgKi8NCiAgInNlbmRfaGVhZGVyIiA9PiAnSFRUUC8xLjAgNDA0IE5vdCBGb3VuZCcpLCAvKiBXaWxsIHNlbmQgdGhpcyBoZWFkZXIgYW5kIGV4aXQuICovDQogInVzZV9idWZmZXIiID0+IDEsIC8qIGJvb2wgdmFsdWUsIFRSVUU9WyBBbGxvdyBjb3B5L3Bhc3RlIF0sIEZBTFNFPVsuLl0gKi8NCiAidmlzdWFsIiA9PiBhcnJheSgNCiAgIndpZHRoIiA9PiAiMTAyNCIsIC8qIFRhYmxlIHdpZHRoIGluIHBpeGVscyAqLw0KICAiaW1hZ2VzIiA9PiAxLCAvKiBib29sIHZhbHVlLCBUUlVFPVsgU2hvdyBpY29ucyBdIC8gRkFMU0U9WyBEb24ndCBzaG93IGljb25zIF0gKi8NCiAgInNraW5zIiA9PiBhcnJheSgiZGFyayIsImxpZ2h0IiksDQogICJkZWZhdWx0X3NraW4iID0+ICJsaWdodCIsIC8qIERlZmF1bHQgY29sb3Igc2tpbiAqLw0KICAibGlnaHQiID0+IGFycmF5KA0KICAgImJvZHliZyI9PiIjNzE3Njc4IiwNCiAgICJ0YmFyYmcxIj0+IiNBQUFBQUEiLCAidGJhcmJnMiI9PiIjQkZCRkJGIiwgInRiYXJib3JkZXJ0Ij0+IiNCQkJCQkIiLCAidGJhcmJvcmRlcmIiPT4iI0FBQUFBQSIsDQogICAidG9wYmcxIj0+IiNCQkJCQkIiLCAidG9wYmcyIj0+IiNDQ0NDQ0MiLCAidG9wYm9yZGVyMSI9PiIjQ0RDRENEIiwgInRvcGNvbG9yIj0+IiMzMzMzMzMiLCAidG9wc2hhZG93Ij0+IiNEREREREQiLA0KICAgInRsaW5rY29sb3IiPT4iIzMzMzMzMyIsICJ0bGlua3NoYWRvdyI9PiIjREREREREIiwgInRsaW5rY29sb3Job3ZlciI9PiIjMDAwMDAwIiwNCiAgICJxbGJnMSI9PiIjQ0NDQ0NDIiwgInFsYmcyIj0+IiNBQUFBQUEiLCAicWxib3JkZXIiPT4iI0RERERERCIsICJxbGNvbG9yIj0+IiMyMjIyMjIiLCAicWxzaGFkb3ciPT4iI0RERERERCIsICJxbGNvbG9yaG92ZXIiPT4iIzAwMDAwMCIsDQogICAiZm9vdGVyYmcxIj0+IiNDQ0NDQ0MiLCAiZm9vdGVyYmcyIj0+IiNBQUFBQUEiLCAiZm9vdGVyYm9yZGVyMSI9PiIjQkJCQkJCIiwgImZvb3RlcmNvbG9yIj0+IiMzMzMzMzMiLCAiZm9vdGVyc2hhZG93Ij0+IiNEREREREQiLA0KICAgInRhYmxlYmciPT4iI0YyRjJGMiIsICJ0YWJsZXNoYWRvdyI9PiIjNjY2NjY2IiwgInRhYmxlYm9yZGVyIj0+IiM3Nzc3NzcgIiwNCiAgICJlcnJjb2xvciI9PiIjRkYwMDAwIiwgIm9rY29sb3IiPT4iIzAwODIwMCIsICJub3JtYWxjb2xvciI9PiIjMzMzMzMzIiwgImRpcmNvbG9yIj0+IiMzMzMzMzMiLA0KICAgImZvbnRmYW0iPT4iJ3NhbnMtc2VyaWYnLHNhbnMtc2VyaWYiLCAiZm9udGNvbG9yIj0+IiM1MjUyNTIiLA0KICAgImlkaXJib3JkZXIiPT4iIzJGNzU5NSIsICJpZGlyYmcxIj0+IiM5M0JFRDciLCAiaWRpcmJnMiI9PiIjNjNBMEM3IiwgDQogICAiaWZpbGVib3JkZXIiPT4iI2NjY2NjYyIsICJpZmlsZWJnMSI9PiIjRkZGRkZGIiwgImlmaWxlYmcyIj0+IiNEREREREQiLA0KICAgInJlZ19zZWxmIj0+IiM3Qjc4NjkiLCAicmVnX2ludGVyZXN0aW5nIj0+IiMwMDgyMDAiLCAicmVnX2JhZCI9PiIjRkYwMDAwIiwNCiAgKSwNCiAgImRhcmsiID0+IGFycmF5KA0KICAgImJvZHliZyI9PiIjNzE3Njc4IiwNCiAgICJ0YmFyYmcxIj0+IiMxNDE0MTQiLCAidGJhcmJnMiI9PiIjMTExMTExIiwgInRiYXJib3JkZXJ0Ij0+IiMxMTExMTEiLCAidGJhcmJvcmRlcmIiPT4iIzAwMDAwMCIsDQogICAidG9wYmcxIj0+IiMxMTExMTEiLCAidG9wYmcyIj0+IiMyMjIyMjIiLCAidG9wYm9yZGVyMSI9PiIjMjIyMjIyIiwgInRvcGNvbG9yIj0+IiNDQ0NDQ0MiLCAidG9wc2hhZG93Ij0+IiMwMDAwMDAiLA0KICAgInRsaW5rY29sb3IiPT4iI0RERERERCIsICJ0bGlua3NoYWRvdyI9PiIjMDAwMDAwIiwgInRsaW5rY29sb3Job3ZlciI9PiIjRkZGRkZGIiwNCiAgICJxbGJnMSI9PiIjMjIyMjIyIiwgInFsYmcyIj0+IiMxMTExMTEiLCAicWxib3JkZXIiPT4iIzMzMzMzMyIsICJxbGNvbG9yIj0+IiNGM0YzRjMiLCAicWxzaGFkb3ciPT4iIzBBMEEwQSIsICJxbGNvbG9yaG92ZXIiPT4iI0ZGRkZGRiIsDQogICAiZm9vdGVyYmcxIj0+IiMxNDE0MTQiLCAiZm9vdGVyYmcyIj0+IiMxMTExMTEiLCAiZm9vdGVyYm9yZGVyMSI9PiIjMzMzMzMzIiwgImZvb3RlcmNvbG9yIj0+IiNDQ0NDQ0MiLCAiZm9vdGVyc2hhZG93Ij0+IiMwMDAwMDAiLA0KICAgInRhYmxlYmciPT4iI0YyRjJGMiIsICJ0YWJsZXNoYWRvdyI9PiIjNDQ0NDQ0IiwgInRhYmxlYm9yZGVyIj0+IiM2NjY2NjYiLA0KICAgImVycmNvbG9yIj0+IiNGRjAwMDAiLCAib2tjb2xvciI9PiIjMDA4MjAwIiwgIm5vcm1hbGNvbG9yIj0+IiMzMzMzMzMiLCAiZGlyY29sb3IiPT4iIzMzMzMzMyIsDQogICAiZm9udGZhbSI9PiInc2Fucy1zZXJpZicsc2Fucy1zZXJpZiIsICJmb250Y29sb3IiPT4iIzUyNTI1MiIsDQogICAiaWRpcmJvcmRlciI9PiIjMkY3NTk1IiwgImlkaXJiZzEiPT4iIzkzQkVENyIsICJpZGlyYmcyIj0+IiM2M0EwQzciLA0KICAgImlmaWxlYm9yZGVyIj0+IiNjY2NjY2MiLCAiaWZpbGViZzEiPT4iI0ZGRkZGRiIsICJpZmlsZWJnMiI9PiIjREREREREIiwNCiAgICJyZWdfc2VsZiI9PiIjN0I3ODY5IiwgInJlZ19pbnRlcmVzdGluZyI9PiIjMDA4MjAwIiwgInJlZ19iYWQiPT4iI0ZGMDAwMCIsDQogICksDQogKSwNCiAicmVnX2ludGVyZXN0aW5nIj0+YXJyYXkoDQogICJkIj0+YXJyYXkoJ2JhY2t1cCcsJ2FkbWluJyksLyogaGlnaGxpZ2h0IGludGVyZXN0aW5nIGRpcnMgKi8NCiAgImYiPT5hcnJheSgnY29uZiguKilcLnBocCQnLCdcLnNxbCQnLCdcLmRiJCcsJ2F1dGgoLiopXC5waHAkJykvKiBoaWdobGlnaHQgaW50ZXJlc3RpbmcgZmlsZXMgKi8NCiApLA0KICJyZWdfYmFkIj0+YXJyYXkoDQogICJkIj0+YXJyYXkoJ3Jvb3QnKSwvKiBoaWdobGlnaHQgYmFkIGRpcnMgKi8NCiAgImYiPT5hcnJheSgnaXB0YWJsZXMnLCdpcGNoYWlucycpLyogaGlnaGxpZ2h0IGJhZCBmaWxlcyAqLw0KICksDQopOw0KDQokbGFuZ1siZW4iXT1hcnJheSgNCiIwIj0+IkFVVEhFTlRJQ0FUSU9OIFJFUVVJUkVEIiwNCiIxIj0+IlVTRVIiLA0KIjIiPT4iUEFTUyIsDQoiMyI9PiJDb25uZWN0IiwNCiI0Ij0+IlNFUlZFUiBXSE9JUyIsDQoiNSI9PiJUUkFDRVJPVVRFIiwNCiI2Ij0+IlNFTEYgUkVNT1ZFIiwNCiI3Ij0+IkxPR09VVCIsDQoiOCI9PiJTWVMiLA0KIjkiPT4iS0VSTkVMIiwNCiIxMCI9PiJESVNLIFRPVEFML0ZSRUUiLA0KIjExIj0+IldFQiBTT0ZUV0FSRSIsDQoiMTIiPT4iU0FGRSBNT0RFIiwNCiIxMyI9PiJPUEVOIEJBU0VESVIiLA0KIjE0Ij0+IkNVUkwiLA0KIjE1Ij0+Ik1ZU1FMIiwNCiIxNiI9PiJNU1NRTCIsDQoiMTciPT4iT1JBQ0xFIiwNCiIxOCI9PiJQT1NUR1JFU1FMIiwNCiIxOSI9PiJPTiIsDQoiMjAiPT4iT0ZGIiwNCiIyMSI9PiJZRVMiLA0KIjIyIj0+Ik5PIiwNCiIyMyI9PiJCQUNLIiwNCiIyNCI9PiJGSUxFUyIsDQoiMjUiPT4iU0VBUkNIIiwNCiIyNiI9PiJVUExPQUQiLA0KIjI3Ij0+IkNNRCIsDQoiMjgiPT4iRVZBTCIsDQoiMjkiPT4iU1FMIiwNCiIzMCI9PiJNQUlMRVJTIiwNCiIzMSI9PiJDQUxDIiwNCiIzMiI9PiJUT09MUyIsDQoiMzMiPT4iUFJPQyIsDQoiMzQiPT4iU1lTSU5GTyIsDQoiMzUiPT4iRklMRSIsDQoiMzYiPT4iRElSIiwNCiIzNyI9PiJTaG93IEFsbCIsDQoiMzgiPT4iRGlycyIsDQoiMzkiPT4iRmlsZXMiLA0KIjQwIj0+IkFyY2hpdmVzIiwNCiI0MSI9PiJFeGVzIiwNCiI0MiI9PiJQSFAiLA0KIjQzIj0+Ikh0bWwiLA0KIjQ0Ij0+IlRleHQiLA0KIjQ1Ij0+IkltYWdlcyIsDQoiNDYiPT4iT3RoZXIiLA0KIjQ3Ij0+IlNob3cgSWNvbnMiLA0KIjQ4Ij0+IkhpZGUgSWNvbnMiLA0KIjQ5Ij0+IkVuYWJsZSBCdWZmZXIiLA0KIjUwIj0+IkRpc2FibGUgQnVmZmVyIiwNCiI1MSI9PiJFbXB0eSBCdWZmZXIiLA0KIjUyIj0+IlNob3cgQnVmZmVyIiwNCiI1MyI9PiJIaWRlIEJ1ZmZlciIsDQoiNTQiPT4iUGFzdGUgQ29weSIsDQoiNTUiPT4iUGFzdGUgQ3V0IiwNCiI1NiI9PiJQYXN0ZSBBbGwiLA0KIjU3Ij0+Ik5hbWUiLA0KIjU4Ij0+IlNpemUiLA0KIjU5Ij0+Ik1vZGlmaWVkIiwNCiI2MCI9PiJPd25lci9Hcm91cCIsDQoiNjEiPT4iUGVybXMiLA0KIjYyIj0+IkFjdGlvbiIsDQoiNjMiPT4iU2VsZWN0IEFsbCIsDQoiNjQiPT4iTm9uZSIsDQoiNjUiPT4iSW52ZXJzZSIsDQoiNjYiPT4iV2l0aCBTZWxlY3RlZCIsDQoiNjciPT4iQ29weSIsDQoiNjgiPT4iQ3V0IiwNCiI2OSI9PiJVbnNldCBDb3B5IiwNCiI3MCI9PiJVbnNldCBDdXQiLA0KIjcxIj0+IlVuc2V0IEFsbCIsDQoiNzIiPT4iRGVsZXRlIiwNCiI3MyI9PiJSZW5hbWUiLA0KIjc0Ij0+IkZ1bmN0aW9ucyIsDQoiNzUiPT4iRWRpdCIsDQoiNzYiPT4iRG93bmxvYWQiLA0KIjc3Ij0+IkNvbmZpcm0iLA0KIjc4Ij0+IlZJRVdJTkcgRklMRToiLA0KIjc5Ij0+IlRleHQiLA0KIjgwIj0+IkNvZGUiLA0KIjgxIj0+Ikh0bWwiLA0KIjgyIj0+Ikh0bWwtTm9KUyIsDQoiODMiPT4iRXhlY3V0ZSIsDQoiODQiPT4iU2Vzc2lvbiIsDQoiODUiPT4iU2RiIiwNCiI4NiI9PiJJTkkiLA0KIjg3Ij0+IkltYWdlIiwNCiI4OCI9PiJIZXhkdW1wIiwNCiI4OSI9PiJCcm93c2VyIERlZmF1bHQiLA0KIjkwIj0+IlNUUklORyBDT05WRVJTSU9OUyIsDQoiOTEiPT4iRlVOQ1RJT04iLA0KIjkyIj0+IlN1Ym1pdCIsDQoiOTMiPT4iQ0hBTkdFIEZJTEUnUyBQRVJNSVNTSU9OUzoiLA0KIjk0Ij0+Ik93bmVyIiwNCiI5NSI9PiJHcm91cCIsDQoiOTYiPT4iV29ybGQiLA0KIjk3Ij0+IlJlYWQiLA0KIjk4Ij0+IldyaXRlIiwNCiI5OSI9PiJFeGVjdXRlIiwNCiIxMDAiPT4iQ2htb2QiLA0KIjEwMSI9PiJPUiBFTlRFUiBWQUxVRSIsDQoiMTAyIj0+Ik9VVFBVVCIsDQoiMTAzIj0+IkNIQU5HRSBGSUxFJ1MgVElNRVNUQU1QIiwNCiIxMDQiPT4iQ09QWSBGUk9NIEZJTEUvRElSIiwNCiIxMDUiPT4iU0VUIFRJTUUgTUFOVUFMTFkiLA0KIjEwNiI9PiJNb250aCIsDQoiMTA3Ij0+IkRheSIsDQoiMTA4Ij0+IlllYXIiLA0KIjEwOSI9PiJIb3VyIiwNCiIxMTAiPT4iTWluIiwNCiIxMTEiPT4iU2VjIiwNCiIxMTIiPT4iQ2hhbmdlIiwNCiIxMTMiPT4iVGltZXN0YW1wIGNoYW5nZWQgdG8gWyUxJV0iLA0KIjExNCI9PiJGYWlsZWQgdG8gY2hhbmdlIHRpbWVzdGFtcCIsDQoiMTE1Ij0+IlJFUExBQ0UiLA0KIjExNiI9PiJXSVRIIiwNCiIxMTciPT4iUmVwbGFjZSIsDQoiMTE4Ij0+IlJlc2V0IiwNCiIxMTkiPT4iU2F2ZSIsDQoiMTIwIj0+IlBST0dSQU0gTElORSIsDQoiMTIxIj0+IkZ1bGwgSGV4ZHVtcCIsDQoiMTIyIj0+IkhleGR1bXAgUHJldmlldyIsDQoiMTIzIj0+IkNIQU5HRSBESVInUyBQRVJNSVNTSU9OUzoiLA0KIjEyNCI9PiJDSEFOR0UgRElSJ1MgVElNRVNUQU1QOiIsDQoiMTI1Ij0+IkJZUEFTUyBSRVNUUklDVElPTlMgLSBMSVNUIERJUiIsDQoiMTI2Ij0+IkRJUiBUTyBMSVNUIiwNCiIxMjciPT4iTGlzdCBEaXIiLA0KIjEyOCI9PiJCWVBBU1MgUkVTVFJJQ1RJT05TIC0gUkVBRCBGSUxFIiwNCiIxMjkiPT4iRklMRSBUTyBSRUFEIiwNCiIxMzAiPT4iUmVhZCBGaWxlIiwNCiIxMzEiPT4iQllQQVNTIFJFU1RSSUNUSU9OUyAtIFJFQUQgRklMRSBWSUEgU1FMIiwNCiIxMzIiPT4iVVNFUk5BTUUiLA0KIjEzMyI9PiJQQVNTV09SRCIsDQoiMTM0Ij0+IlBPUlQiLA0KIjEzNSI9PiJEQVRBQkFTRSIsDQoiMTM2Ij0+IlstXSBFUlJPUiEgQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIiwNCiIxMzciPT4iWy1dIEVSUk9SISBDYW4ndCBjb25uZWN0IHRvIFslMSVdIHNlcnZlciIsDQoiMTM4Ij0+IkJZUEFTUyBSRVNUUklDVElPTlMgLSBXUklURSBGSUxFIiwNCiIxMzkiPT4iRklMRSBUTyBXUklURSIsDQoiMTQwIj0+IkZJTEUgQ09OVEVOVCIsDQoiMTQxIj0+IldyaXRlIEZpbGUiLA0KIjE0MiI9PiJTRUFSQ0ggRk9SIEZJTEVTIEFORCBESVJTIFVTSU5HIFBIUCIsDQoiMTQzIj0+Ik5BTUUvRklORC9SRUNVUlNJVkUiLA0KIjE0NCI9PiJGaWxlcyIsDQoiMTQ1Ij0+IkRpcnMiLA0KIjE0NiI9PiJCb3RoIiwNCiIxNDciPT4iU2VhcmNoIiwNCiIxNDgiPT4idXNlIHJlZ2V4cCBvbiBuYW1lIiwNCiIxNDkiPT4iU0VBUkNIIElOIERJUiIsDQoiMTUwIj0+IkZJTkQgVEVYVCBJTiBGSUxFIiwNCiIxNTEiPT4idXNlIHJlZ2V4cCBvbiB0ZXh0IiwNCiIxNTIiPT4id2hvbGUgd29yZHMgb25seSIsDQoiMTUzIj0+ImNhc2Ugc2Vuc2l0aXZlIiwNCiIxNTQiPT4iZmlsZXMgbm90IGNvbnRhaW5pbmcgdGhlIHRleHQiLA0KIjE1NSI9PiJTRUFSQ0ggVEVYVCBJTiBGSUxFUyBVU0lORyBGSU5EIiwNCiIxNTYiPT4iVEVYVCBUTyBGSU5EIiwNCiIxNTciPT4iRklORCBJTiBGSUxFUyIsDQoiMTU4Ij0+IkRFRklORUQvU0VBUkNIIElOIiwNCiIxNTkiPT4ic2hvdyBpbiBmaWxlIG1hbmFnZXIiLA0KIjE2MCI9PiJOT1RISU5HIEZPVU5EIiwNCiIxNjEiPT4iVVBMT0FEIExPQ0FMIEZJTEUiLA0KIjE2MiI9PiJMT0NBTCBGSUxFIiwNCiIxNjMiPT4iT1BUSU9OQUwgUkVOQU1FIiwNCiIxNjQiPT4iVVBMT0FEIFBBVEgiLA0KIjE2NSI9PiJGSUxFIExPQ0FUSU9OIiwNCiIxNjYiPT4iTVVMVElQTEUgRklMRVMiLA0KIjE2NyI9PiJVUExPQUQgRklMRSBGUk9NIFJFTU9URSBVUkwiLA0KIjE2OCI9PiJVUExPQUQgTVVMVElQTEUgRklMRVMiLA0KIjE2OSI9PiJGb3JtIiwNCiIxNzAiPT4iVXBsb2FkIiwNCiIxNzEiPT4iSW52YWxpZCBmaWxlIGxvY2F0aW9uOiBbJTElXSIsDQoiMTcyIj0+IkVycm9yIHVwbG9hZGluZyBbJTElXSAoQ2FuJ3QgbW92ZSBbJTIlXSB0byBbJTMlXSIsDQoiMTczIj0+IkZpbGUgWyUxJV0gdXBsb2FkZWQgdG8gWyUyJV0iLA0KIjE3NCI9PiJDYW4ndCBkb3dubG9hZCBmaWxlISIsDQoiMTc1Ij0+IkNhbid0IHdyaXRlIHRvIFslMSVdIiwNCiIxNzYiPT4iRmlsZSB1cGxvYWRlZCB0byBbJTElXSIsDQoiMTc3Ij0+IlNFTkQgRklMRSBUTyBFLU1BSUwiLA0KIjE3OCI9PiJTRU5EIFRPIiwNCiIxNzkiPT4iU2VuZCIsDQoiMTgwIj0+IkNPTU1BTkQiLA0KIjE4MSI9PiJERUZJTkVEIiwNCiIxODIiPT4iRVhFQ1VURSBQSFAgQ09ERSIsDQoiMTgzIj0+IkV4ZWN1dGUgUEhQIENvZGUiLA0KIjE4NCI9PiJEaXNwbGF5IFJlc3VsdCBpbiBUZXh0YXJlYSIsDQoiMTg1Ij0+IkZUUCBNQU5BR0VSIiwNCiIxODYiPT4iSE9TVDpQT1JUIiwNCiIxODciPT4iVVNFUiIsDQoiMTg4Ij0+IlBBU1MiLA0KIjE4OSI9PiJDb25uZWN0IiwNCiIxOTAiPT4iUGFzc2l2ZSIsDQoiMTkxIj0+IkNhbid0IGNvbm5lY3QiLA0KIjE5MiI9PiJQSFAtU0hFTEwiLA0KIjE5MyI9PiJGVFAiLA0KIjE5NCI9PiJORVcgRElSIiwNCiIxOTUiPT4iQ3JlYXRlIiwNCiIxOTYiPT4iRGlzY29ubmVjdCIsDQoiMTk3Ij0+IlVwbG9hZCIsDQoiMTk4Ij0+IkRvd25sb2FkIiwNCiIxOTkiPT4iRGVsZXRlIiwNCiIyMDAiPT4iRE9XTkxPQUQgRklMRSBGUk9NIFJFTU9URSBGVFAiLA0KIjIwMSI9PiJVUExPQUQgRklMRSBUTyBSRU1PVEUgRlRQIiwNCiIyMDIiPT4iSE9TVDpQT1JUIiwNCiIyMDMiPT4iVVNFUjpQQVNTIiwNCiIyMDQiPT4iRklMRSBPTiBGVFAiLA0KIjIwNSI9PiJMT0NBTCBGSUxFIiwNCiIyMDYiPT4iVXBsb2FkIEZpbGUiLA0KIjIwNyI9PiJEb3dubG9hZCBGaWxlIiwNCiIyMDgiPT4iRmlsZSB1cGxvYWRlZC4iLA0KIjIwOSI9PiJDYW4ndCB1cGxvYWQgZmlsZS4iLA0KIjIxMCI9PiJGaWxlIGRvd25sb2FkZWQuIiwNCiIyMTEiPT4iQ2FuJ3QgZG93bmxvYWQgZmlsZS4iLA0KIjIxMiI9PiJQSFAgU0lNUExFIE1BSUxFUiIsDQoiMjEzIj0+IlBIUCBDU1YgTUFJTEVSIiwNCiIyMTQiPT4iRlJPTSBOQU1FIiwNCiIyMTUiPT4iRlJPTSBFLU1BSUwiLA0KIjIxNiI9PiJFLU1BSUwgU1VCSkVDVCIsDQoiMjE3Ij0+IlJFUExBQ0UiLA0KIjIxOCI9PiJXSVRIIiwNCiIyMTkiPT4iSU4iLA0KIjIyMCI9PiJFLU1BSUwgQ09MIiwNCiIyMjEiPT4iQ09MIFBSRUZJWCIsDQoiMjIyIj0+IlJFUExBQ0UgSU4iLA0KIjIyMyI9PiJTZWxlY3QgVmFsdWUiLA0KIjIyNCI9PiJGcm9tIE5hbWUiLA0KIjIyNSI9PiJGcm9tIEUtbWFpbCIsDQoiMjI2Ij0+IlJlY2VpdmVyJ3MgRS1tYWlsIiwNCiIyMjciPT4iUmVjZWl2ZXIncyBFLW1haWwgLSBoYXNoIiwNCiIyMjgiPT4iU3ViamVjdCIsDQoiMjI5Ij0+Ik1lc3NhZ2UiLA0KIjIzMCI9PiJTdWJqZWN0IGFuZCBNZXNzYWdlIiwNCiIyMzEiPT4iUmFuZG9tIFwiRlJPTSBFLU1BSUxcIiB1c2VybmFtZXMiLA0KIjIzMiI9PiJSYW5kb20gTWVzc2FnZS1JRCBkb21haW5zIiwNCiIyMzMiPT4iU2VuZCBFLW1haWxzIiwNCiIyMzQiPT4iUHJldmlldyAoRG9uJ3Qgc2VuZCkiLA0KIjIzNSI9PiJTaG93IHJlcGxhY2VkIHZhbHVlcyIsDQoiMjM2Ij0+IklOQ09NUExFVEUgREFUQSIsDQoiMjM3Ij0+Ik5PIiwNCiIyMzgiPT4iUkVDRUlWRVIiLA0KIjIzOSI9PiJTRU5ERVIiLA0KIjI0MCI9PiJNRVNTQUdFLUlEIiwNCiIyNDEiPT4iU1RBVFVTIiwNCiIyNDIiPT4iUkVQTEFDSU5HIiwNCiIyNDMiPT4iU3VjY2VzcyIsDQoiMjQ0Ij0+IkZhaWxlZCIsDQoiMjQ1Ij0+IlRlc3QiLA0KIjI0NiI9PiJIQVNIIFRZUEUiLA0KIjI0NyI9PiJFTlRFUiBIQVNIIiwNCiIyNDgiPT4iU3VibWl0IiwNCiIyNDkiPT4iQ2FsY3VsYXRlIiwNCiIyNTAiPT4iQ2xlYXIgSW5wdXQiLA0KIjI1MSI9PiJQT1NTSUJMRSIsDQoiMjUyIj0+IkxpbmsiLA0KIjI1MyI9PiJJUCBBRERSRVNTIEVOQ09ERVIiLA0KIjI1NCI9PiJFTlRFUiBJUCIsDQoiMjU1Ij0+IkxPTkcgSVAiLA0KIjI1NiI9PiJIRVggSVAiLA0KIjI1NyI9PiJPQ1RBTCBJUCIsDQoiMjU4Ij0+IlNFTEVDVCBIQVNIIiwNCiIyNTkiPT4iRU5URVIgSU5QVVQiLA0KIjI2MCI9PiJBbGwiLA0KIjI2MSI9PiJIQVNIIE9VVFBVVCIsDQoiMjYyIj0+IlNUUklORyBDT05WRVJTSU9OUyBPVVRQVVQiLA0KIjI2MyI9PiJDbGVhciBPdXRwdXQiLA0KIjI2NCI9PiJTZW5kIE91dHB1dCB0byBJbnB1dCIsDQoiMjY1Ij0+IkJJTkQgU0hFTEwiLA0KIjI2NiI9PiJDT05ORUNUIEJBQ0siLA0KIjI2NyI9PiJQQVNTOlBPUlQ6U1JDIiwNCiIyNjgiPT4iQmluZCIsDQoiMjY5Ij0+IkZvdW5kIFslMSVdIG9mIG91ciBiYWNrZG9vciB0b29scyBpbiB0ZW1wZGlyLiBDb25zaWRlciBkZWxldGluZyB0b29scyBhZnRlciB1c2luZyB0aGVtLiAiLA0KIjI3MCI9PiJEZWxldGUgTm93IiwNCiIyNzEiPT4iQ2FuJ3Qgd3JpdGUgc291cmNlcyEiLA0KIjI3MiI9PiJVbmtub3duIGZpbGUhIiwNCiIyNzMiPT4iRXhlY3V0ZWQuIENhbid0IGNvbm5lY3QgdG8gWyUxJV0hIiwNCiIyNzQiPT4iT0shIENvbm5lY3QgdG8gWyUxJV06WyUyJV0hIiwNCiIyNzUiPT4iUG9ydCBbJTElXSBhbHJlYWR5IGluIHVzZSEiLA0KIjI3NiI9PiJPSyEgVGhlIHNjcmlwdCBpcyBub3cgY29ubmVjdGluZyB0byBbJTElXTpbJTIlXSIsDQoiMjc3Ij0+IlBPUlRTQ0FOIiwNCiIyNzgiPT4iSE9TVDpQT1JUIFJBTkdFIiwNCiIyNzkiPT4iU2NhbiIsDQoiMjgwIj0+IlZBTElEIFJBTkdFIDAtNjU1MzUiLA0KIjI4MSI9PiJQSFAtU0hFTEwgSFVOVEVSIiwNCiIyODIiPT4iQUNUSU9OOlJFQ1VSU0lWRSIsDQoiMjgzIj0+IlNUQVJUIFBBVEgiLA0KIjI4NCI9PiJWaWV3IGtub3duIHNoZWxscyBvbmx5IiwNCiIyODUiPT4iVmlldyBrbm93biBzaGVsbHMgKyBwb3NzaWJsZSIsDQoiMjg2Ij0+Ik92ZXJ3cml0ZSBrbm93biBzaGVsbHMgd2l0aCBSQy1TaGVsbCIsDQoiMjg3Ij0+Ik92ZXJ3cml0ZSBhbGwgd2l0aCBSQy1TaGVsbCIsDQoiMjg4Ij0+IlBIUC1TSEVMTCBSRVNVTFRTIiwNCiIyODkiPT4iUE9SVFNDQU4gUkVTVUxUIiwNCiIyOTAiPT4iT3duZWQiLA0KIjI5MSI9PiJDYW4ndCBvd24gaXQiLA0KIjI5MiI9PiJGSUxFIE5BTUUiLA0KIjI5MyI9PiJTSEVMTCBUWVBFIE9SIFZFUlNJT04iLA0KIjI5NCI9PiJFWFRFUk5BTCBMSU5LIiwNCiIyOTUiPT4iRklMRSBBQ1RJT05TIC8gT1ZFUldSSVRFIiwNCiIyOTYiPT4iVmlldyBpbiBCcm93c2VyIiwNCiIyOTciPT4iUkMtT1ZFUldSSVRFIiwNCiIyOTgiPT4iQ1BBTkVMIC8gUEFTU1dPUkQgRklOREVSIiwNCiIyOTkiPT4iSE9TVDpVU0VSOlNFUlZJQ0UiLA0KIjMwMCI9PiJGSUxFUzpNRVRIT0Q6UkVDVVJTSVZFIiwNCiIzMDEiPT4iREVGSU5FRCBQQVRIIiwNCiIzMDIiPT4iU0VORCBMT0cgVE8iLA0KIjMwMyI9PiJEb24ndCBsb2dpbiAoY3JlYXRlIHBhc3NmaWxlKSIsDQoiMzA0Ij0+InVzZXIgKyBERUZJTkVEIFBBVEgiLA0KIjMwNSI9PiJ1c2VyICsgRE9DVU1FTlQgUk9PVCIsDQoiMzA2Ij0+Ii9ldGMvcGFzc3dkICsgVVNFUiBIT01FUyIsDQoiMzA3Ij0+IkZpbmQgUGFzc3dvcmRzIiwNCiIzMDgiPT4iQ1BBTkVMIC8gUEFTU1dPUkQgRklOREVSIFJFU1VMVFMiLA0KIjMwOSI9PiJNQVNTIENPREUgSU5KRUNUT1IiLA0KIjMxMCI9PiJGSUxFUzpQT1M6UkVDVVJTSVZFIiwNCiIzMTEiPT4iU1RBUlQgSU4gUEFUSCIsDQoiMzEyIj0+IkNPREUgVE8gSU5KRUNUIiwNCiIzMTMiPT4iSW5qZWN0IEZpbGVzIiwNCiIzMTQiPT4iQ09ERSBJTkpFQ1RFRCBJTiBGSUxFUyBCRUxPVyIsDQoiMzE1Ij0+IkZJTkQgU1FMIENSRURFTlRJQUxTIiwNCiIzMTYiPT4iVVNFUiBOQU1FOlRZUEUiLA0KIjMxNyI9PiJQQVNTIE5BTUU6VFlQRSIsDQoiMzE4Ij0+IkRCIE5BTUU6VFlQRSIsDQoiMzE5Ij0+IkhPU1QgTkFNRTpUWVBFIiwNCiIzMjAiPT4iKlNPRlRXQVJFOlBBU1NXT1JEIiwNCiIzMjEiPT4iRklMRVM6V0hFUkU6UkVDVVJTSVZFIiwNCiIzMjIiPT4iREVGSU5FRCBQQVRIIiwNCiIzMjMiPT4iRmluZCBDcmVkZW50aWFscyIsDQoiMzI0Ij0+Ik15U1FMIFRlc3QiLA0KIjMyNSI9PiJERUZJTkVEIFBBVEgiLA0KIjMyNiI9PiJET0NVTUVOVCBST09UIiwNCiIzMjciPT4iVVNFUiBIT01FUyIsDQoiMzI4Ij0+InJlcXVpcmVkIiwNCiIzMjkiPT4ib3B0aW9uYWwiLA0KIjMzMCI9PiJTUUwgQ1JFREVOVElBTFMiLA0KIjMzMSI9PiJIT1NUIiwNCiIzMzIiPT4iVVNFUiIsDQoiMzMzIj0+IlBBU1MiLA0KIjMzNCI9PiJEQVRBQkFTRSIsDQoiMzM1Ij0+IkFDVElPTiIsDQoiMzM2Ij0+Ik15U1FMIENvbm5lY3QiLA0KIjMzNyI9PiJCUlVURUZPUkNFIC8gRElDVElPTkFSWSBBVFRBQ0siLA0KIjMzOCI9PiJIT1NUOlBPUlQ6U0VSVklDRSIsDQoiMzM5Ij0+IlVTRVJOQU1FOkRBVEFCQVNFIiwNCiIzNDAiPT4iRElDVElPTkFSWSIsDQoiMzQxIj0+IlRFU1QgTUVUSE9EIiwNCiIzNDIiPT4iQUxTTyBURVNUIiwNCiIzNDMiPT4idXNlcm5hbWUgYW5kIGRpY3Rpb25hcnkiLA0KIjM0NCI9PiIvZXRjL3Bhc3N3ZCAodXNlcjp1c2VyKSIsDQoiMzQ1Ij0+Ii9ldGMvcGFzc3dkIGFuZCBkaWN0aW9uYXJ5IiwNCiIzNDYiPT4iU3RhcnQgQnJ1dGVmb3JjZSIsDQoiMzQ3Ij0+IlslMSVdIEJSVVRFRk9SQ0UgUkVTVUxUIiwNCiIzNDgiPT4iU1lTVEVNIFBST0NFU1NFUyIsDQoiMzQ5Ij0+IlNFTkRJTkcgU0lHTkFMIFslMSVdIFRPICNbJTIlXS4uICIsDQoiMzUwIj0+IktJTExFRCIsDQoiMzUxIj0+IkNBTidUIEtJTEwgSVQiLA0KIjM1MiI9PiJEYXRhYmFzZXMiLA0KIjM1MyI9PiJRdWVyeSIsDQoiMzU0Ij0+IkV4dHJhY3QgRS1tYWlscyIsDQoiMzU1Ij0+IlNlcnZlciBTdGF0dXMiLA0KIjM1NiI9PiJTZXJ2ZXIgVmFyaWFibGVzIiwNCiIzNTciPT4iUHJvY2Vzc2VzIiwNCiIzNTgiPT4iRGlzY29ubmVjdCIsDQoiMzU5Ij0+IkRBVEFCQVNFUyIsDQoiMzYwIj0+IkRhdGFiYXNlIE5hbWUiLA0KIjM2MSI9PiJTaXplIiwNCiIzNjIiPT4iVGFibGVzIiwNCiIzNjMiPT4iRGF0YWJhc2UgQWN0aW9ucyIsDQoiMzY0Ij0+IkRBVEFCQVNFIiwNCiIzNjUiPT4iVEFCTEUiLA0KIjM2NiI9PiJEQVRBQkFTRSBbJTElXSIsDQoiMzY3Ij0+IkRhdGFiYXNlcyAoWyUxJV0pIiwNCiIzNjgiPT4iVGFibGUgTmFtZSIsDQoiMzY5Ij0+IlRhYmxlIEFjdGlvbnMiLA0KIjM3MCI9PiJTUUwgUVVFUlkiLA0KIjM3MSI9PiJTdWJtaXQgUXVlcnkiLA0KIjM3MiI9PiJFWFRSQUNUIEUtTUFJTFMiLA0KIjM3MyI9PiJTRUFSQ0ggVEFCTEVTPGJyPkNPTU1BICgsKSBTRVBBUkFURUQ8YnI+TEVBVkUgRU1QVFkgRk9SIEFMTCIsDQoiMzc0Ij0+IkZJTEUgTkFNRSIsDQoiMzc1Ij0+IlNBVkUgRS1NQUlMUyBUTyBGSUxFIiwNCiIzNzYiPT4iRE9XTkxPQUQgUkVTVUxUUyIsDQoiMzc3Ij0+IkV4dHJhY3QgRS1tYWlscyIsDQoiMzc4Ij0+IlNFUlZFUiBTVEFUVVMiLA0KIjM3OSI9PiJTRVJWRVIgVkFSSUFCTEVTIiwNCiIzODAiPT4iTmFtZSIsDQoiMzgxIj0+IlZhbHVlIiwNCiIzODIiPT4iUFJPQ0VTU0VTIiwNCiIzODMiPT4iSUQiLA0KIjM4NCI9PiJVU0VSIiwNCiIzODUiPT4iSE9TVCIsDQoiMzg2Ij0+IkRBVEFCQVNFIiwNCiIzODciPT4iQ09NTUFORCIsDQoiMzg4Ij0+IlRJTUUiLA0KIjM4OSI9PiJTVEFURSIsDQoiMzkwIj0+IklORk8iLA0KIjM5MSI9PiJBQ1RJT04iLA0KIjM5MiI9PiJLSUxMIiwNCiIzOTMiPT4iUFJPQ0VTUyAjWyUxJV0gS0lMTEVEIiwNCiIzOTQiPT4iUVVFUlkgUkVTVUxUIiwNCiIzOTUiPT4iQlJPV1NJTkcgVEFCTEUgWyUxJV0gKCBbJTIlXSBjb2xzIGFuZCBbJTMlXSByb3dzICkiLA0KIjM5NiI9PiJQcmV2aW91cyIsDQoiMzk3Ij0+IlBhZ2UiLA0KIjM5OCI9PiJHbyIsDQoiMzk5Ij0+Ik5leHQiLA0KIjQwMCI9PiJJTlNFUlQgSU5UTyBUQUJMRSBbJTElXSIsDQoiNDAxIj0+IkZpZWxkIiwNCiI0MDIiPT4iVHlwZSIsDQoiNDAzIj0+IkZ1bmN0aW9uIiwNCiI0MDQiPT4iVmFsdWUiLA0KIjQwNSI9PiJJbnNlcnQgYXMgbmV3IHJvdyIsDQoiNDA2Ij0+Im9yIiwNCiI0MDciPT4iU2F2ZSIsDQoiNDA4Ij0+IkNvbmZpcm0iLA0KIjQwOSI9PiJUT1RBTCBEQVRBQkFTRVMgWyUxJV0iLA0KIjQxMCI9PiJRVUlDSyBTUUwgVEFCTEUgRFVNUCIsDQoiNDExIj0+IlNRTCBUWVBFIiwNCiI0MTIiPT4iSE9TVDpQT1JUIiwNCiI0MTMiPT4iVVNFUjpQQVNTIiwNCiI0MTQiPT4iREIuVEFCTEUiLA0KIjQxNSI9PiJGSUxFIE5BTUUiLA0KIjQxNiI9PiJET1dOTE9BRCBSRVNVTFRTIiwNCiI0MTciPT4iU0FWRSBEVU1QIFRPIEZJTEUiLA0KIjQxOCI9PiJEdW1wIiwNCiI0MTkiPT4iQ2FuJ3QgY29ubmVjdCB0byBTUUwgc2VydmVyIiwNCiI0MjAiPT4iUVVJQ0sgU1FMIFFVRVJZIiwNCiI0MjEiPT4iREIiLA0KIjQyMiI9PiJRdWVyeSIsDQoiNDIzIj0+IlFVRVJZICNbJTElXSA6IFslMiVdIiwNCiI0MjQiPT4iTk9ORSIsDQoiNDI1Ij0+IkNoZGlyIiwNCiI0MjYiPT4iVG90YWw6IFslMSVdIiwNCiI0MjciPT4iU3VjY2VzczogWyUxJV0iLA0KIjQyOCI9PiJGYWlsZWQ6IFslMSVdIiwNCiI0MjkiPT4iVXNlZDogWyUxJV0iLA0KIjQzMCI9PiJOb3QgQXZhaWxhYmxlIiwNCiI0MzEiPT4iVGhlIGZvbGxvd2luZyBlLW1haWxzIHdlcmUgbm90IHNlbnQiLA0KIjQzMiI9PiJIQVNIIENBTENVTEFUT1IiLA0KIjQzMyI9PiJTVFJJTkcgQ09OVkVSU0lPTlMiLA0KIjQzNCI9PiJIT1NUOlBPUlQ6U1JDIiwNCiI0MzUiPT4iQ29ubmVjdCIsDQoiNDM2Ij0+IkZpbmQgU2hlbGxzIiwNCiI0MzciPT4iRE8gWU9VIFJFQUxMWSBXQU5UIFRPIERST1AgREFUQUJBU0UgXCJbJTElXVwiID8gIiwNCiI0MzgiPT4iRE8gWU9VIFJFQUxMWSBXQU5UIFRPIERST1AgVEFCTEUgXCJbJTElXVwiID8gIiwNCiI0MzkiPT4iRE8gWU9VIFJFQUxMWSBXQU5UIFRPIEVNUFRZIFRBQkxFIFwiWyUxJV1cIiA/ICIsDQoiNDQwIj0+IlNRTCBEVU1QIiwNCiI0NDEiPT4iREFUQUJBU0UiLA0KIjQ0MiI9PiJEVU1QIFRBQkxFUzxicj5DT01NQSAoLCkgU0VQQVJBVEVEPGJyPkxFQVZFIEVNUFRZIEZPUiBBTEwiLA0KIjQ0MyI9PiJGSUxFIE5BTUUiLA0KIjQ0NCI9PiJTQVZFIERVTVAgVE8gRklMRSIsDQoiNDQ1Ij0+IkRPV05MT0FEIFJFU1VMVFMiLA0KIjQ0NiI9PiJEdW1wIiwNCiI0NDciPT4iQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIiwNCiI0NDgiPT4iTm90aGluZyB0byBkdW1wIiwNCiI0NDkiPT4iRHVtcGVkIHRvIFslMSVdIiwNCiI0NTAiPT4iQ2FuJ3Qgd3JpdGUgdG8gZmlsZS4iLA0KIjQ1MSI9PiJTUUwgTUFOQUdFUiIsDQoiNDUyIj0+IkhPU1Q6UE9SVCIsDQoiNDUzIj0+IlVTRVIiLA0KIjQ1NCI9PiJQQVNTIiwNCiI0NTUiPT4iREIiLA0KIjQ1NiI9PiJUWVBFIiwNCiI0NTciPT4iQ29ubmVjdCIsDQoiNDU4Ij0+IkNhbid0IGNyZWF0ZSBkdW1wIiwNCiI0NTkiPT4iRHVtcGVkIiwNCiI0NjAiPT4iU0VMRiBSRU1PVkUiLA0KIjQ2MSI9PiJETyBZT1UgUkVBTExZIFdBTlQgVE8gREVMRVRFIE1FPyAiLA0KIjQ2MiI9PiJHT09EIEJZRSIsDQoiNDYzIj0+IkNhbid0IGRlbGV0ZSBbJTElXSIsDQoiNDY0Ij0+IkNBTidUIExJU1QgWyUxJV0iLA0KIjQ2NSI9PiJGcmVlOiBbJTElXSIsDQoiNDY2Ij0+IkZJTEUgWyUxJV0gRE9FU05UIEVYSVNULiIsDQoiNDY3Ij0+IllPVSBBUkUgVFJZSU5HIFRPIE9QRU4gQSBESVJFQ1RPUlkgQVMgQSBGSUxFIChbJTElXSkiLA0KIjQ2OCI9PiJUQVJHRVQgQUxSRUFEWSBFWElTVFMgKERJUkVDVE9SWSBbJTElXSkiLA0KIjQ2OSI9PiJGSUxFIE5PVCBTUEVDSUZJRUQiLA0KIjQ3MCI9PiJSZXR1cm4iLA0KIjQ3MSI9PiJZb3VyIGJyb3dzZXIgZG9lc250IHN1cHBvcnQgaWZyYW1lcy4iLA0KIjQ3MiI9PiIgKENXRCBTUEVDSUZJRUQgQVMgQSBGSUxFKSIsDQoiNDczIj0+IlJFTkFNRSBbJTElXSIsDQoiNDc0Ij0+IlJFTkFNRUQgVE8gWyUxJV0iLA0KIjQ3NSI9PiJDQU5OT1QgUkVOQU1FIFslMSVdIiwNCiI0NzYiPT4iRVhUUkFDVEVEIFpJUCBBUkNISVZFIFslMSVdIiwNCiI0NzciPT4iQ0FOTk9UIEVYVFJBQ1QgWyUxJV0iLA0KIjQ3OCI9PiJFeHRyYWN0IFslMSVdIiwNCiI0NzkiPT4iR0VORVJBTCBJTkZPUk1BVElPTiIsDQoiNDgwIj0+IlBIUCBJTkZPUk1BVElPTiIsDQoiNDgxIj0+Ik9USEVSIFVTRUZVTEwgU1RVRkYiLA0KIjQ4MiI9PiJJbnRlcmVzdGluZyBmaWxlcyIsDQoiNDgzIj0+IkludGVyZXN0aW5nIGNvbmZpZ3MiLA0KIjQ4NCI9PiJJbnRlcmVzdGluZyBiaW5zIiwNCiI0ODUiPT4iU2NyaXB0aW5nIGxhbmd1YWdlcyIsDQoiNDg2Ij0+IlBBR0UgR0VORVJBVEVEIElOIFslMSVdIFNFQ09ORFMiLA0KInVuZGVmaW5lZCI9PiI/IiwNCik7DQoNCiR3aW5hbGlhc2VzPWFycmF5KA0KICcnPT4nZGlyJywNCiAnLSBzaG93IG9wZW4gcG9ydHMnPT4nbmV0c3RhdCAtbmF0JywNCiAnLSBydW5uaW5nIHByb2dyYW1zJz0+J3Rhc2tsaXN0IC12JywNCiAnLSBydW5uaW5nIHNlcnZpY2VzJz0+J25ldCBzdGFydCcsDQogJy0gc2hvdyB1c2Vycyc9PiduZXQgdXNlcicsDQogJy0gc2hvdyBjb21wdXRlcnMnPT4nbmV0IHZpZXcnLA0KICctIGFycCB0YWJsZSc9PidhcnAgLWEnLA0KICctIGlwIGNvbmZpZyc9PidpcGNvbmZpZyAvYWxsJywNCiAnLSBtYWMgYWRkcmVzcyc9PidnZXRtYWMnLA0KICctIHN5c3RlbWluZm8nPT4nc3lzdGVtaW5mbycsDQogJy0gZmlsZSBhc3NvY2lhdGlvbnMnPT4nYXNzb2MnDQopOw0KDQokbml4YWxpYXNlcz1hcnJheSgNCiAnJz0+J2xzIC1sYScsDQogJ2NvbnNvbGUgZG93bmxvYWRlcnMnPT4nd2hpY2ggd2dldCBHRVQgZnRwIGN1cmwgdzNtIGx5bngnLA0KICdjcHUgaW5mbyc9PidjYXQgL3Byb2MvdmVyc2lvbiAvcHJvYy9jcHVpbmZvJywNCiAnZ2NjIGNvbXBpbGVyJz0+J2xvY2F0ZSBnY2MnLA0KICdsb2dnZWQgaW4gdXNlcnMnPT4ndycsDQogJ2FjdGl2ZSB1c2VycyAoZnJvbSBsYXN0bG9nKSc9PidsYXN0bG9nfGdyZXAgLXYgXCdcXCpcXCpcJycsDQogJ2xhc3QgbG9naW5zIChsYXN0IC1hKSc9PidsYXN0IC1hJywNCiAndXNlcnMgd2l0aG91dCBwYXNzd29yZCc9PidjdXQgLWQ6IC1mMSwyLDMgL2V0Yy9wYXNzd2QgfCBncmVwIDo6JywNCiAnbGlzdCBmaWxlIGF0dHJpYnV0ZXMnPT4nbHNhdHRyIC12YScsDQogJ3Nob3cgb3BlbiBwb3J0cyAoZnJvbSBuZXRzdGF0KSc9PiduZXRzdGF0IC1uYXQgfCBncmVwIC1pIGxpc3RlbicsDQogJ2FjdGl2ZSBjb25uZWN0aW9ucyAoZnJvbSBsc29mKSc9Pidsc29mIC1pJywNCik7DQoNCiRmaW5kYWxpYXNlcz1hcnJheSgNCiAnZmluZCBzdWlkIGZpbGVzJz0+J2ZpbmQgJXBhdGglIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyAyPi9kZXYvbnVsbCcsDQogJ2ZpbmQgc2dpZCBmaWxlcyc9PidmaW5kICVwYXRoJSAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMgMj4vZGV2L251bGwnLA0KICdmaW5kIHdyaXRhYmxlIGRpcnMnPT4nZmluZCAlcGF0aCUgLXBlcm0gLTIgLXR5cGUgZCAtbHMgMj4vZGV2L251bGwnLA0KICdmaW5kIHdyaXRhYmxlIGZpbGVzJz0+J2ZpbmQgJXBhdGglIC1wZXJtIC0yIC10eXBlIGYgLWxzIDI+L2Rldi9udWxsJywNCiAnZmluZCB3cml0YWJsZSBsaW5rcyc9PidmaW5kICVwYXRoJSAtcGVybSAtMiAtdHlwZSBsIC1scyAyPi9kZXYvbnVsbCcsDQogJ2ZpbmQgd3JpdGFibGUgZGlycy9maWxlcy9saW5rcyc9PidmaW5kICVwYXRoJSAtcGVybSAtMiAtbHMgMj4vZGV2L251bGwnLA0KICdmaW5kIGNvbmZpZyogZmlsZXMnPT4nZmluZCAlcGF0aCUgLXR5cGUgZiAtbmFtZSBcJ2NvbmZpZypcJycsDQogJ2ZpbmQgY29uZmlnLnBocCBmaWxlcyc9PidmaW5kICVwYXRoJSAtdHlwZSBmIC1uYW1lIGNvbmZpZy5waHAnLA0KICdmaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzJz0+J2ZpbmQgJXBhdGglIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAnLA0KICdmaW5kIHNlcnZpY2UucHdkIGZpbGVzJz0+J2ZpbmQgJXBhdGglIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QnLA0KICdmaW5kIC5odHBhc3N3ZCBmaWxlcyc9PidmaW5kICVwYXRoJSAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCcsDQogJ2ZpbmQgLmJhc2ggaGlzdG9yeSc9PidmaW5kICVwYXRoJSAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnknLA0KICdmaW5kIC5teXNxbCBoaXN0b3J5Jz0+J2ZpbmQgJXBhdGglIC10eXBlIGYgLW5hbWUgLm15c3FsX2hpc3RvcnknLA0KICdmaW5kIGZldGNobWFpbHJjJz0+J2ZpbmQgJXBhdGglIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjJw0KKTsNCg0KJGZpbGVhbGlhc2VzPWFycmF5KA0KICdodG1sJz0+YXJyYXkoJ2h0bWwnLCdodG0nLCdzaHRtbCcpLA0KICd0ZXh0Jz0+YXJyYXkoJ2h0bWwnLCdodG0nLCdzaHRtbCcsJ2NzcycsJ2pzJywndHh0JywnY29uZicsJ2JhdCcsJ2JhaycsJ2RvYycsJ2xvZycsJ3NmYycsJ2NmZycsJ3JlYWRtZScsJ3RvZG8nLCdjaGFuZ2Vsb2cnLCdtYWtlZmlsZScsJ2NtYWtlJywnY29weWluZycsJ2F1dGhvcnMnLCdtb3RkJywnbmV3cycsJ2luc3RhbGwnLCdhYm91dCcsJ2h0YWNjZXNzJyksDQogJ2V4ZSc9PmFycmF5KCdzaCcsJ2JhdCcsJ2NtZCcsJ2V4ZScsJ3BsJywncHknKSwNCiAnaW5pJz0+YXJyYXkoJ2luaScsJ2luZicpLA0KICdjb2RlJz0+YXJyYXkoJ3BocCcsJ3BodG1sJywncGhwMycsJ3BocDQnLCdwaHA1JywncGwnLCdjZ2knLCdjJywgJ2NjJywgJ2NwcCcsICdoJywgJ2hwcCcsICdpY2wnLCAnaXBwJyksDQogJ2ltZyc9PmFycmF5KCdnaWYnLCdwbmcnLCdqcGVnJywnamZpZicsJ2pwZycsJ2pwZScsJ2JtcCcsJ2ljbycsJ3RpZicsJ3RpZmYnKSwNCiAnc2RiJz0+YXJyYXkoJ3NkYicpLA0KICdzZXNzJz0+YXJyYXkoJ3Nlc3MnKSwNCiAnZG93bmxvYWQnPT5hcnJheSgnc3FsJywnM2cyJywnM2dhJywnM2dwJywnM2dwcCcsJzY2OScsJzd6JywnYWFjJywnYWMzJywnYWNlJywnYWlmJywnYWlmYycsJ2FpZmYnLCdhbXInLCdhcGUnLCdhcmonLCdhc2YnLCdhc3gnLCdhdScsJ2F2aScsJ2F3YicsJ2F4YScsJ2F4dicsJ2JkbScsJ2JkbXYnLCdieicsJ2J6MicsJ2NhYicsJ2NscGknLCdjb20nLCdjcGknLCdkb2MnLCdkb3QnLCdkaXZ4JywnZG1nJywnZHYnLCdleGUnLCdmbGEnLCdmbGFjJywnZmxjJywnZmxpJywnZmx2JywnZ3NtJywnZ3onLCdpc28nLCdpdCcsJ2thcicsJ2xoYScsJ2xuaycsJ2x6aCcsJ20xNScsJ20ydCcsJ20ydHMnLCdtM3UnLCdtM3U4JywnbTRhJywnbTRiJywnbTR2JywnbWVkJywnbWlkJywnbWlkaScsJ21pbmlwc2YnLCdta2EnLCdta3YnLCdtbmcnLCdtbzMnLCdtb2QnLCdtb292JywnbW92JywnbW92aWUnLCdtcCsnLCdtcDInLCdtcDMnLCdtcDQnLCdtcGMnLCdtcGUnLCdtcGVnJywnbXBnJywnbXBnYScsJ21wbCcsJ21wbHMnLCdtcHAnLCdtdG0nLCdtdHMnLCducmcnLCduc3YnLCdvZ2EnLCdvZ2cnLCdvZ20nLCdvZ3YnLCdwYmsnLCdwaWYnLCdwbGEnLCdwbHMnLCdwc2YnLCdwc2ZsaWInLCdwc2lkJywncXQnLCdxdHZyJywncjAwJywncmEnLCdyYXInLCdyYXgnLCdydicsJ3J2eCcsJ3MzbScsJ3NpZCcsJ3NuZCcsJ3NweCcsJ3NyYycsJ3N0bScsJ3N3ZicsJ3RhcicsJ3RieicsJ3RiejInLCd0Z3onLCd0cycsJ3R0YScsJ3VsdCcsJ3VuaScsJ3V1JywndXVmJywndml2Jywndml2bycsJ3ZsYycsJ3ZvYicsJ3ZvYycsJ3dhdicsJ3dheCcsJ3dtYScsJ3dtdicsJ3dteCcsJ3dyaScsJ3d2JywneGxhJywneGxjJywneGxkJywneGxzYicsJ3hsbCcsJ3hsbScsJ3hscycsJ3hsdCcsJ3hsc20nLCd4bHcnLCd4bHRtJywnd3ZjJywnd3ZwJywnd3Z4JywneGknLCd4bScsJ3htZicsJ3h4ZScsJ3ppcCcpDQopOw0KDQokZXhlY2FsaWFzZXM9YXJyYXkoDQogJ3NoICVmJSc9PmFycmF5KCdzaCcpLA0KICdwZXJsICVmJSc9PmFycmF5KCdwbCcsJ2NnaScpLA0KICdweXRob24gJWYlJz0+YXJyYXkoJ3B5JyksDQogJ3BocCAlZiUnPT5hcnJheSgncGhwJywncGhwMycsJ3BocDQnLCdwaHA1JykNCik7DQoNCiRnZXRhbGlhc2VzPWFycmF5KA0KICd3Z2V0Jz0+J1slMSVdIFslMiVdIC1PIFslMyVdJywNCiAnZmV0Y2gnPT4nWyUxJV0gLXAgWyUyJV0gLW8gWyUzJV0nLA0KICdseW54Jz0+J1slMSVdIC1zb3VyY2UgWyUyJV0gPiBbJTMlXScsDQogJ2xpbmtzJz0+J1slMSVdIC1zb3VyY2UgWyUyJV0gPiBbJTMlXScsDQogJ0dFVCc9PidbJTElXSBbJTIlXSA+IFslMyVdJywNCiAnY3VybCc9PidbJTElXSBbJTIlXSAtbyBbJTMlXScNCik7DQoNCiRpbmRleD1hcnJheSgNCiAieGxzIj0+YXJyYXkoJ3hsYScsJ3hsYycsJ3hsZCcsJ3hsc2InLCd4bGwnLCd4bG0nLCd4bHMnLCd4bHQnLCd4bHNtJywneGx3JywneGx0bScpLA0KICJwbCI9PmFycmF5KCJwbCIsImNnaSIpLA0KICJkaXoiPT5hcnJheSgiZGl6IiwiaW5mIiksDQogImgiPT5hcnJheSgiaCIsImhwcCIpLA0KICJpc28iPT5hcnJheSgiaXNvIiwibnJnIiwiZG1nIiksDQogInRhciI9PmFycmF5KCJ0YXIiLCJyMDAiLCJhY2UiLCJhcmoiLCJieiIsImJ6MiIsInRieiIsInRiejIiLCJ0Z3oiLCJ1dSIsInh4ZSIsInppcCIsImNhYiIsImd6IiwibGhhIiwibHpoIiwicGJrIiwicmFyIiwidXVmIiwiN3oiKSwNCiAicGhwIj0+YXJyYXkoInBocCIsInBocDMiLCJwaHA0IiwicGhwNSIsInBodG1sIiwic2h0bWwiKSwNCiAianBnIj0+YXJyYXkoImpwZyIsImdpZiIsInBuZyIsImpwZWciLCJqZmlmIiwianBlIiwiYm1wIiwiaWNvIiwidGlmIiwidGlmZiIpLA0KICJodG1sIj0+YXJyYXkoImh0bWwiLCJodG0iLCJhc3AiLCJ4aHRtbCIpLA0KICJhdmkiPT5hcnJheSgnb2dtJywnbXBlZycsJ2JkbXYnLCdxdHZyJywnb2d2JywnY3BpJywnbTJ0cycsJ21vdmllJywnYXNmJywnbXBscycsJ21rdicsJ2F2aScsJ3J2eCcsJ3F0JywnbXAyJywnbXA0JywnZGl2eCcsJ21uZycsJ2F4dicsJ3J2JywnbW92JywnbW9vdicsJ21wZScsJ21wbCcsJ21wZycsJ3RzJywnbnN2JywnM2cyJywnM2dhJywnbXRzJywnbTJ0JywnM2dwJywnM2dwcCcsJ3Zpdm8nLCdtNHYnLCdmbGMnLCdiZG0nLCdmbGknLCd2aXYnLCdmbHYnLCd3bXYnLCdjbHBpJywndm9iJywnZHYnLCdvZ2cnKSwNCiAiZG9jIj0+YXJyYXkoImRvYyIsImRvdCIsIndyaSIpLA0KICJ0eHQiPT5hcnJheSgidHh0IiwibG9nIiwiY29uZiIsImNmZyIsInZicyIsImluaSIpLA0KICJqcyI9PmFycmF5KCJqcyIpLA0KICJjbWQiPT5hcnJheSgiY21kIiwiYmF0IiwicGlmIiwiZXhlIiwic2giLCJtYWtlZmlsZSIpLA0KICJ3cmkiPT5hcnJheSgid3JpIiwicnRmIiksDQogInN3ZiI9PmFycmF5KCJzd2YiLCJmbGEiKSwNCiAibXAzIj0+YXJyYXkoJ2FtcicsJ20zdTgnLCdtZWQnLCdzcHgnLCdzcHgnLCdrYXInLCdtcGdhJywncGxhJywnaXQnLCdhcGUnLCd0dGEnLCdwbHMnLCdzdG0nLCdtaWQnLCdzM20nLCdhc3gnLCdta2EnLCdhd2InLCdwc2YnLCdhaWZjJywnbW8zJywnYWlmZicsJ21wKycsJ2F4YScsJ21wMicsJ21wMycsJ3JhJywnbW9kJywnd2F2Jywnd2F4JywnbXBjJywnbWlkaScsJ21wcCcsJ20xNScsJ3BzaWQnLCd3dicsJ210bScsJ3hpJywneG0nLCdtM3UnLCdtNGInLCdtNGEnLCdhYWMnLCdhYzMnLCd4bWYnLCdyYXgnLCdtaW5pcHNmJywnd21hJywnd214JywndmxjJywndWx0JywnNjY5Jywnc2lkJywndm9jJywnZ3NtJywnYXUnLCd1bmknLCdmbGFjJywnYWlmJywnc25kJywncHNmbGliJywnd3ZjJywnb2dhJywnd3ZwJywnb2dnJywnd3Z4JyksDQogImNwcCI9PmFycmF5KCJjcHAiLCJjIiwiY2MiLCJjeHgiKSwNCiAiY3NzIj0+YXJyYXkoJ2NzcycpLA0KICJodGFjY2VzcyI9PmFycmF5KCJodGFjY2VzcyIsImh0cGFzc3dkIiwiaHQiLCJodGEiKSwNCik7IA0KDQokaW1hZ2VzPWFycmF5KA0KICJvayI9PiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBTjF3QUFEZGNCUWlpYmVBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQURvU1VSQlZEaU5yWk94Ym9OQURJWS8wOENBdW5USVFCYWtTTFJiSDZRdjBYZnJRL1FCbUxNMWlxSU1FUm5hRHF4Y0pzQmRPSFFoWEpPSS9KSjFaOHYzMno3Ym9xcE1RVERwTlREejJPZkEwOEJtZ084elQxVWRrd3o0QlVvcmVaNi9xcW9NZlgwWkFCeUEwQ3BKa3RTWFNsZ0FqNDUrZEFrNlpOMVpBVDhBNG5UaFdVUStIZWM5NExab0NVaFg5aHV3RzJZQThEV1dab2YxcFJKczJqZmhyZ1NWcXE2c0VvYmhTMTNYRDFZM3htemlPTzU5N1VVOG81eUp5RHZRRXhSRjhaR202WmJUai9YUFFSQUV4N1p0ZTRJb2lrWWorUWlxcG1sS1RuZkZES1AvVjhMVm1MeU5mOWxYWTZsdGxZc3JBQUFBQUVsRlRrU3VRbUNDIiwNCiAiY2FuY2VsIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSGxTVVJCVkRpTnBaUFBhOU53R01hZkxrbjNIVmtEYXBNc0F4RUtiYmRCbWFmU2kzZVpqa1hCSDh5VE1HR3dRNC83Q3dhRG5YcWRCMC9kRm1XaGhRcXl5d1plSkpjNWVoaVlNWkFlU2xxdDBFVXkycWF2QjFzSmtTTFNGOTdMdy90OCtQSThmQ05FaEhGbVlpejNDSUFDSUFGQURHamlRRlArQlpqWnkyWDE3U2xXdmpDTTlNQW9YaGhHZW51S2xmZHlXUjNBVE5BUUNXU2dHUGR5ZXVQeldVSGxlVmJ6Zlh2bDladm5BRkIrOWZMZ05zY2xuVjd2V3JtN21ILzI4Vk1KUUNNTVNCVG5VNmJXYmkxeUVlREs3K095MDdNQklCSGxrekZ1QWo0QmRlbm0yWXZ6TDQ4QlhJWUJZc2VwcjFUMSsvbHV3OGtDUUx2bkF3QWtuZ01BQ0lwcVpVb2ZDbEZWS3dQNEdRWUFnTlJ4bklmMjB3ZjV6cmZma09GRTQ2cVZmUHUrRUZYVkNvRDJxQkI5NTlTeWE1NDN6UmlQNE5ZOGI5bzV0V3dBL3FnV3hIckZUQjl2ckJYbHZyY3d5UVFFVis1N0M4Y2JhOFY2eFJ5MjgxY0xpWGVaTzZYNVdEUnpnd2tBQU82V2JBR0EvNzJaQllBZjExMmNYM1dxVDZwZjlXR0l3UmU0UzFzNysxbzg1akltUUp6VkxIbjNzQ0R2SGhiRVdjMWlUSUFXajdsTFd6djdBTncvTGlJSzdsejN5TngwMTVkUHFOVmNKU0tKaUNScU5WZmQ5ZVdUN3BHNVNVUnpRVThZQUNKS0VkR2pnWG1vU1FNdEZiNFAxL2pmTS9adi9BWFZ6djhScVNqR3dnQUFBQUJKUlU1RXJrSmdnZz09IiwNCiAic21hbGxfaG9tZSI9PiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFaaVMwZEVBUDhBL3dEL29MMm5rd0FBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFBZDBTVTFGQjlvSUV3d3pNYUVDdWpjQUFBSGZTVVJCVkRqTGxaSTlhMVJSRUlhZmMrL1ptNHZKTG5acUtWWTJRUkVYUWNFaXRpa0M5allCQmN1MEtkUG1OMGhnc1JGc0JQK0Foc0FXcGt3MlJCQWhFZ09SRGV4bTc1NDVaOFppbytheVVjd0xwNWw1NWpBZnJ6TXo3cTY5ZXdNOHBhNzN3TkwyNm1MZ0gzSm5IOWlEbTlleHpFMmlDcjNERS9xajB5RVFMNmd6NFBYMjZ1Skw5NkxUZmRUZFAvd3dmOE5QVVpwQWJicGFEWHJIU2UvZnV2YllSd25yYTB0M21Dc0xMcU5CRmJLM243NnUrNml4L1gwdzV2UHhjQXFhYWVSWU1vTHFWRzV1eGhNMXRuMkt3a2tsVThDVndwT2JRUVl1enprTjlWV2NWRUtLZ3E5RUVha1BPbHZrT0RWZWJlNEE4T3poYlFxWE1ReXB4bFdpWktKR1NQcjdsVVZHNW1CamN3Y3JtMWpaWkdOemg4eEJXV1ExVnRUSXFxaEVoYWlUdGozUTJkckZ5aWF0c3FCVkZsalpwTE8xaXo4YjdSZGZSU1ZUaTBSVGN1OW9PS1B6Y1pkUk5Gcm5ydElxQzBaeGttczRJL2VPYUlwYUpCTVJKQnFTaktMaFdWNllSOEo0YXFrU3hpd3Z6Rk0wUEpKc1VpTkNsbEpDa2pFWVJYcEhRMkxTdjk0K0pxVjNOR1F3aWtneVVrcDRFU0U1cTdrTTRPRGJ3WVVPUE0rS0NGNWpZQnovQlBzaDh2ekp2UXM3NklkWVl6VUd2R2pxSGgzL2FGK2RuUU5nN3lEOGw1WDd3d0dpcWV1VGpGZjJ2K3l0QTIwdXB5Nnc4aE1RL3lmYmFsdlZrZ0FBQUFCSlJVNUVya0pnZ2c9PSIsDQogInNtYWxsX2RpciI9PiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFaaVMwZEVBUDhBL3dEL29MMm5rd0FBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFBZDBTVTFGQjlvSUV3d3hJMkNOcWYwQUFBRVZTVVJCVkRqTHBaQzlTZ05SRUlYUGhrRUZVOWlwcGRpTEZpNFdnaytRSXVCRENKWnBVNmJkdHdnMmdvM2dDOWh0WWVwSUJMR0tRaVNCUk8vZStiT0lqVVNFdlg3bE1PZmp6R1R1anFQZTdUV0FjL3prRGtCNzBHMUYvRUgyTGZDVHZSMTRJMXRPRFJpT1o1aCtmaXdBeUM4NUIzQTE2TFl1czR0K2VWcU94dmNIdTdTeVpRcVlyNmJOZ2VGRTdYaC8rNHlFWTlGckg2SzVzWVk2ekVOczNEeThGQ1FtK2V1OHd0TmtVVXZRWENlSVNVNHFqRmxnMUdVV0dDb01DbXhnZHFRUTJFQnNqcWlXSkdCelVCQ0RwT1VSeEVEbUF2RTBnN21BbUJrc2FUOWdacENxZ2pWTm9LckxCcHI5bzRGSlJKVjRna2tFc1duNU5ublB0emFidGNMVHhSeHNXcEp5MVJrOVB4WUE4cG9GU2dDZEx6S1RxTm9SVzB6OEFBQUFBRWxGVGtTdVFtQ0MiLA0KICJzbWFsbF91bmsiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFDMFNVUkJWRGlON1k4dGpzTXdHRVNuMWtnQkFRRUdvU0VMczdmb2pkcGI5RlNoWWQ0Z2g0VG1DdCtQWFZSZVY0VTcwc0QzTkhOWjEvVnFabzlTeWk4YUVrSklKRytYWlZuU05FM3pPSTRJSWJ3RmwxSnduaWVPNC9pamlNd3hSb2hJeXdERUdKRnpudW51Y1BjbUdBQmVITTBNdGRabUFRQ1lHYWlxSHd0VUZYVDNqd1hmdWZBditKSkFWVUd5R1RZekJKSTVwUVFSUWEzMXJZb0lVa29nbWRuMy9YM2Y5OGUyYlQ4dEM3cXUyNGRodUQ4QkQ2ZTdTenpLOU13QUFBQUFTVVZPUks1Q1lJST0iLA0KICJ1bmtub3duIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBR3BTVVJCVkRpTmxWTE5pdUpBR0t6RWpqa0lSb21vaUNFdHNvc0hGUi9Ba3pKdnRQTVc4MURpVVcvWkhDUmkvRDIwSW9paUlPbE9lZzlMd3JoajNOMkM3OUpWWDFIMTBjcDBPbjBUUW54RVVkVEZmMEJWVlljUThrTVpqOGNPcGJSVHFWU2dxdW8vTFVkUmhQMStqOVZxOVpNRVFkQXhUUk5CRUNTQzdYWUx4aGlPeHlPeTJTeXExU29zeTBJK24wODBwbW5DODd5T0dvWWh3akNFbEJKU1N2aStqOGxrQWtWUk1CZ01vR2thWnJNWlJxTVJydGRyb292M1ZDRkU4aWlseE9Gd0FBRHNkanNvaW9KNnZRNEE0SnlETWZhZ0ZVS0FjTTRocFV5aVVVcHhQcDlSS0JTUXlXUnd1VndTcmxnc1BtZzU1eUJ4L0JpbFVnbkQ0UkFBSUtVRVl3d0FVQzZYWVJqR2d6WU1RNUM0d2pPY1RpZmNiamZVYWpYMGVyMHZPaUhFYTRQTlpnUGJ0dEh0ZHBORWZ4cDhPZUxuWVl5aDFXcWw4bjlOME8vM1FRaEo1Vjhhck5kckxCWUwyTGFOWnJPWmFwQmFZYmxjNG42L3cvZjlseFZVSVFUaXYvQjVLS1hRZFIyTlJ1UHBNdWY4ZHdWQ2lPYzR6dmQydXcxTjA1SjRsbVhCc3F5bjErZWN3M1ZkRUVJOGtzdmwzdWZ6K1lmcnV0K2VGazJCcnV0end6RGVmd0hZcEc3V240OTBCUUFBRWNKMFJWaDBRMjl0YldWdWRBQjFibXR1YjNkdWxxZVNuWEdXbzZPZ281Q2pscUdnbzZXYW41aFpZVnBzTzNHYW41cVFwSmFsV1ZPVm1xU2huWktxa0pham82Q2pwRk5kVVplU25hU1dXbXc3bDZhZmxLV2FvSjlSbzVSaW1xT1dXVldYV3F4Um81YWxwcU9mVVhHWGxKMmdwSlpaY1plZ29aYWZXVldYWFZGWW8xaGFXbEZ3VVdKUmExRmhiRkd1TzVlbW41U2xtcUNmVWFPVVlwcW9vMWxWbDFxc1VhT1dwYWFqbjFGeGw1U2RvS1NXV1hHWG9LR1duMWxWbDExUldKSllXbHBSY0ZGaVVXdFJZV3hScmp1WHBwK1VwWnFnbjFHamxHS29vNXBaVlpkZFZaUmFyRkZWbDZGdWNaZWdvWmFmV1ZXWFhWRllxRmhhYkZGeGw2R21wYVJaVlplaFhWRlZsRnBzVVhHWGxKMmdwSlpaVlplaFdteFJyanVYcHArVXBacWduMUdqbEdLWGw1NVpWYVZhckZHamxxV21vNTlSY2FTbG81Q2pscUdka3BTV1dWTmdZRk5kVTJCVFhYR2twYU9RbzVhaG5aS1VsbGxUalkxVFhWTmdVMTFWcFZwYWJGR3VPNWVtbjVTbG1xQ2ZVYU9VWXBXVldWcXNVYU9XcGFham4xRlpjWmFwcFphZnBKcWduNUNkb0pLVmxwVlpXSlNtbzUxWVdsRlhWMUZ4bDZhZmxLV2FvSitRbHFtYXBLV2tXVmlVcHFPZGtKcWZtcVZZV2xwUmNGRmlVV3RSWVd4UnJqdVhwcCtVcFpxZ24xR2psR0tsbnFGWldxdzdVWmlkb0pPU25WRlZwWmFlb1pXYW8ydzdVWnFYV1hHYXBLU1dwVmxWcFphZW9aV2FvMXBYVjNHYXBKQ1ZtcU5aVmFXV25xR1ZtcU5hVjFkeG1xU1FxS09hcFpLVG5aWlpWYVdXbnFHVm1xTmFXbEdqbHFXbW81OVJWYVdXbnFHVm1xTnNPMUdYb0tPV2twU1pXWktqbzVLcVdWTmdwWjZoWUZOZFUyQ25rcU5ncFo2aFlGTmRVMkNtcEtOZ3BaNmhZRk5kVTJDVmxxZGdwSm1lWUZOZFUxYUllbjkxZW9OZ3BaYWVvV0JUV2xHU3BGRlZwVnFzTzFGUm1wZFpjWmVhblphUWxxbWFwS1drV1ZXbFdsZFhjWnFra0pXYW8xbFZwVnBYVjNHYXBKQ29vNXFsa3BPZGxsbFZwVnBhVWFPV3BhYWpuMUZWcFd3N1VhNDdVYU9XcGFham4xR1hrcDJrbG13N3JqdVhwcCtVcFpxZ24xR2psR0ttbzUxWldxdzdVVldaVVc1UldaYWVvYVdxV1ZXUWhIYURoM2FEakZoNWhZV0JoRmlPV2xHdHJWR2twYU9sb0oyZ3FKYWpXVldRaEhhRGgzYURqRmg1aFlXQmhGaU9XbEZ1YmxGWW9KZVhXRkZ3VVplU25hU1dVV3RScGFPbWxscHNPMUZWcGxGdVVWaVpwYVdoV0ZGZlVWbFpWWmxSY0ZGWXBGaFJhMUZZV0ZwUlgxRllhMkJnV0ZGZlVWV1FoSGFEaDNhRGpGaDVoWVdCa0htQWhJVllqbEZmVVZXUWhIYURoM2FEakZpQmVZR1FoSFo5ZDFpT1dtdzdVVldlVVc1UldaYWVvYVdxV1ZXUWhIYURoM2FEakZpQmNvVjVrSHAvZDRCWWpscFJjRkZZZ29aMmc0cVFoSVdEZW45NFdGRnJVVmlCY29WNWtIcC9kNEJZV213N1VWV2tVVzVSVlo1UmJtNVJXSUtHZG9PS2tJU0ZnM3AvZUZoUmNGRlljRmhSYTFGWVdHdzdVYU9XcGFham4xRlZwbEZmVVZXa1VWOVJXWnFrcEphbFdWV1FoSGFEaDNhRGpGV2VqbHBSY0ZGVmtJUjJnNGQyZzR4Vm5vNVJhMUZZV0Zwc082NDdtcGRabzVSaWxaVlpXbHBSckR0Umw2YWZsS1dhb0o5Um81UmlvVmxWcGwxVnAxMVZtVnFzTzFGUm1wZFpWWmxSVW01UlUySlRVVmRYVVZXWlVWSnVVVk5oVTFwUlZabFJibEZUWVZOc08xRlJWYWRSYmxGVGxLQ2ZwWmFmcFpDbHFxR1dicCtXcUpDVmtxV1NrSmFmcGFPcVY1T1NwSmFRbEtDZnBaYWZwVzVUVVY5UmNhYWpuWmFmbEtDVmxsbHhrNUtrbG1kbGtKYWZsS0NWbGxsVnAxcGFVVjlSVTFlWm1wV1ZscCtRcGFxaGxtNVRVVjlSVlpsUlgxRlRWNlNxcEpDbHFxR1dibE5SWDFHQmVZR1FnSVJSWDFGVFY1cWhibE5SWDFGVmtJUjJnNGQyZzR4WWczWitnSVYya0hKMWRZTllqbXc3VVZGVmtsRnVVVk4rb0t1YW5aMlNZR1ZmWVZGWmxLQ2VvWktsbXBPZGxteFJmb1I2ZGxGb1gyRnNVWWlhbjVXZ3FLUlJmNFZSWjE5aWJGR0ZvNXFWbHArbFlHVmZZV3hSaEgxMGRHTnNVVjkvZG9WUmRIMkRVV05mWVY5bVlXaGphR3hSWDM5MmhWRjBmWU5SWkY5bVgyUmhhR05xYkZGZmYzYUZVWFI5ZzFOc08xRlJWYVpSYmxGVG1hV2xvV3RnWUZOUlgxRlZwbXc3VVZGVmxGRnVVWEdVcHFPZGtKcWZtcVZaV213N1VWRnhsS2FqblpDa2xxV2dvYVZaVlpSZFVYU0dnMzJBZ1lXUWhvTjlYVkZWcGxwc08xRlJjWlNtbzUyUXBKYWxvS0dsV1ZXVVhWRjBob045Z0lHRmtJYUVkb055ZUhaL2hWMVJWWkphYkR0UlVYR1VwcU9ka0tTV3BhQ2hwVmxWbEYxUmRJYURmWUNCaFpDRGRvV0dnMytGZzNKL2hIZDJnMTFSWWxwc08xRlJjWlNtbzUyUXBKYWxvS0dsV1ZXVVhWRjBob045Z0lHRmtJR0FoSVZkVVdKYWJEdFJVWEdVcHFPZGtLU1dwYUNocFZsVmxGMVJkSWFEZllDQmhaQ0JnSVNGZDNwMmZYV0VYVkZWcDFwc08xRlJjWlNtbzUyUXBKYWxvS0dsV1ZXVVhWRjBob045Z0lHRmtJVjZmbmFBaG9WZFVXVmFiRHRSVVhHVXBxT2RrS1NXcGFDaHBWbFZsRjFSZElhRGZZQ0JoWkIwZ0g5L2RuU0ZoWHArZG9DR2hWMVJaVnBzTzFGUlZhTlJibEZ4bEtham5aQ1dxWmFVV1ZXVVdtdzdVVkZ4bEtham5aQ1VuYUNrbGxsVmxGcHNPMUZSbzVhbHBxT2ZVVmxTY1phZW9hV3FXVldqV2xGWFYxRnhwS1dqcEtXaldWV2pYVkZUcEpLbmxwV1FvNVNrbVphZG5aQ1duNldqcWxOYVdsRndVV0pSYTFGaGJEdFJyanV1TzVlbW41U2xtcUNmVWFPVVlwZWxvVmxWcFc1aFdxdzdVWmlkb0pPU25WRlZrcFNsWFZXWHBhR1FwSmFqcDVhalhWV1hwYUdRb2FDanBWMVZsNldoa0tha2xxT2ZrcDZXWFZXWHBhR1FvWktrcEtpZ281VnNPMUZWbjI1VGpaOVRiRHRSVlpSdVlXdzdVVlduYmxoWWJEdFJtcGRaY1pxa3BKYWxXVldTbEtWYVYxZFZrcFNsYm01VGw2V2hVMWRYY1pxa3BKYWxXVldYcGFHUW9hQ2pwVnBYVjFKeGxwNmhwYXBaVlplbG9aQ2hvS09sV2xkWGNacWtwSmFsV1ZXWHBhR1FwSmFqcDVhaldsZFhjWnFrcEphbFdWV1hwYUdRcHFTV281K1NucFphVjFkeG1xU2tscVZaVlplbG9aQ2hrcVNrcUtDamxWcFhWMUp4bHA2aHBhcFpWWmVsb1pDa2xxT25scU5hVjFkU2NaYWVvYVdxV1ZXWHBhR1FwcVNXbzUrU25wWmFWMWRTY1phZW9hV3FXVldYcGFHUW9aS2twS2lnbzVWYVdxdzdVVkZWbEc1aWJEdFJVVlduYmxOM2hZRnJVVldYcGFHUXBKYWpwNWFqYTFXWHBhR1FvYUNqcGEyR2hIYURhMUZWbDZXaGtLYWtscU9ma3A2V3JZRnloSVJyVVZXWHBhR1FvWktrcEtpZ281V05uMU5zTzFHdU8xR2FsMWxWcFZKdWJtRmFyRHRSVVpxWFdWSlZsRnBSbzVhbHBxT2ZVVmhZYkR0UlVacVhXWEdYcHArVXBacWduNUNXcVpxa3BhUlpVNWVsb1pDVW9KK2ZscFNsVTFwWFYzR1hwcCtVcFpxZ241Q1dxWnFrcGFSWlU1ZWxvWkNkb0ppYW4xTmFWMWR4bDZhZmxLV2FvSitRbHFtYXBLV2tXVk9YcGFHUWxKMmdwSlpUV2xxc08xRlJVVldYbDVkUmJsRnhsNldoa0pTZ241K1dsS1ZaVlplbG9aQ2tscU9ubHFOZFZaZWxvWkNob0tPbFhXUmFiRHRSVVZHYWwxbFZsNWVYV2xHc08xRlJVVkdhbDFseGw2V2hrSjJnbUpxZldWV1hsNWRkVVZXWHBhR1FwcVNXbzUrU25wWmRVVldYcGFHUW9aS2twS2lnbzVWYVdxdzdVVkZSVVZGeGw2V2hrSlNkb0tTV1dWV1hsNWRhYkR0UlVWRlJVYU9XcGFham4xRlZwMnc3VVZGUlVhNDdVVkZSVVhHWHBhR1FsSjJncEpaWlZaZVhsMXBzTzFGUlVhNDdVVkd1TzFGUm81YWxwcU9mVVZoWWJEdFJyanRSbzVhbHBxT2ZVVlduYkR1dU81ZW1uNVNsbXFDZlVhT1VZcFNYbUZsVmtxTmFyRkU3VVZXZmJsT05uMU5zTzFHWW5hQ1RrcDFSVlpTZ241ZWFtR3c3VVZXamJsaFliRHRSbDZDamxwS1VtVm1TbzZPU3FsbFlwNWFqcEpxZ24xaGRXSkttcFpsWVhWaVZscGVTcHAybGtLZVNvNlJZV2xHU3BGRlZsRnFzTzFGUm1wZFpjWnFrcEphbFdWV1VvSitYbXBpTVZaU09XbHFzTzFGUlVacVhXWEdhcEpDU282T1NxbGxWbEtDZmw1cVlqRldVamxwYXJEdFJVVkZSbDZDamxwS1VtVmxWbEtDZmw1cVlqRldVamxHU3BGRlZuRzV2VmFkYVVYRlZvMTl1VlpSZlUxRlRYMVdjWDFOdVUxOVZwMTlWbjJ3N1VWRlJybEdXbmFTV1VhdzdVVkZSVVhGVm8xOXVWWlJmVTI1VFgxV1VvSitYbXBpTVZaU09YMVdmYkR0UlVWR3VPMUZScmp0UnJqdFJvNWFscHFPZlVWV2piRHV1TzVlbW41U2xtcUNmVWFPVVlxR2twVmxhckR0UlZaOXVVNDJmVTJ3N1VWV25ibGhZYkR0Um1KMmdrNUtkVVZXVW9KK1htcGhzTzFHYWwxbHhtcVNrbHFWWlZaU2duNWVhbUl4VGtxYWxtVk9PakZPZWxXYVFwcVNXbzFPT1dsZFhjWnFrcEphbFdWV1VvSitYbXBpTVU1S21wWmxUam94VG5wVm1rS0dTcEtSVGpscFhWM0dhcEtTV3BWbFZrSUdBaElXTVU2dW1VNDVhVjFkeG1xU2tscVZaVlpDQmdJU0ZqRk9yb1ZPT1dscXNPMUZSbXBkWlZaU2duNWVhbUl4VGtxYWxtVk9PakZPZWxXYVFwcVNXbzFPT2JtNXhucFZtV1ZXUWdZQ0VoWXhUcTZaVGpscFhWMVdVb0orWG1waU1VNUttcFpsVGpveFRucFZta0tHU3BLUlRqbTV1VlpDQmdJU0ZqRk9yb1ZPT1dxdzdVVkZSVmFkZmJsT3JwbTVUWDFXUWdZQ0VoWXhUcTZaVGpsOVZuMnc3VVZGUlZhZGZibE9yb1c1VFgxV1FnWUNFaFl4VHE2RlRqbDlWbjJ3N1VWR3VPMUd1TzFHamxxV21vNTlSVmFkc082NDdsNmFmbEtXYW9KOVJvNVJpa3BXVldWV1NvMXFzVVR0UlZaOXVVNDJmVTJ3N1VWV25ibE9HZzMxdVUxK2psR0ttbzUxWldsOVZuMTlWbjJ3N1VWV25VVjl1VWFPVVlxR2twVmxhYkR0UlZhZFJYMjVSbzVSaWxKZVlXVnBzTzFGVnAxRmZibEdqbEdLWHBhRlpXbXc3VVplZ281YVNsSmxaa3FPamtxcFpXSVIyZzRkMmc1Qi9jbjUyV0YxWWhIYURoM2FEa0hKMWRZTllYVmlFZG9PSGRvT1FnWUNEaFZoZFdIbUZoWUdRZzNaM2RvTjJnMWhkV0lGNWdaQ0VkbjEzV0YxWWczYUNobmFFaFpDR2czcFlYVmlFZElONmdZV1FmM0orZGxoZFdJUjBnM3FCaFpCM2VuMTJmM0orZGxoZFdIUjllblovaFpCNmdWaGRXSU4yZm9DRmRwQnlkWFdEV0ZwUmtxUlJWYVNuV3F3N1VWR2FsMWx4bXFTa2xxVlpWWkNFZG9PSGRvT01WYVNuamxwYXJGRlZwMTl1VmFTblgxTnVVMTlWa0lSMmc0ZDJnNHhWcEtlT1gxV2ZiRkd1TzFHdU8xR2pscVdtbzU5UlZhZHNPNjQ3bDZhZmxLV2FvSjlSbzVSaXBKVlpWWmxkVmFkZFZhUmRWYVppWFZXZVlscXNPMUdhbDFtamxHS1ZsVmxhV2xHc08xRlJtcGRaVXFPVVlxRlpWYVppWFZGVnAxMVJWWmxhV2xGeG5wS2FuVmxWbm1KZFVWV2tYVkZWcDFwc08xR3VVWmFkcEpaUnJEdFJVWEdla3BxZFdWV2VZbDFSVmFSZFVWV25XbXc3VWE0N3JqdFZvNVJpcFo2aGJxT1VZcVdlb1ZsYWJEdWFsMWxWbzVSaXBaNmhVbTV1bDVLZHBKWmFyRHRSY1ZXalVXNVJvNVJpbDVlZVdWV2psR0tsbnFGUlgxRlRZRk5SWDFGeG5wVm1XWEdtbjVxaW1wVlpjYU9TbjVWWldscFJYMUZ4bnBWbVdYR2xtcDZXV1ZwYVdscHNPMUdhbDFtamxHS2FxS05aVmFOYVdsR3NPMUZSVlpTWG1wMldVVzVSbzVSaWw1ZWVXVldqbEdLbG5xRlJYMUZUWUtpb3FKQ2tscVNra0ZOUlgxRnhucFZtV2FPVVlxYWpuVmxhWDZPVVlwU1htRmxhV2xwc08xRlJjYWFmblpxZm5GbFZvMXBzT3p0UlVWV2VZbEZ1VVZPaGxxV1dvNTJXbUphamxtWmljYXFTbWFDZ1g1U2dubE5zTzFGUlZhWmlVVzVSVTZHV3BaYWpuWmFZbHFPV1g1T3FscVdab0tTbFkxK1VvSjVnbjVhb3BHQ2FuNVdXcVYraG1hRlRiRHRSVVZXa1VXNVJnWG1Ca0lDRVVWOVRyVk5mbzVSaXBxT2RXVnBzTzFGUlZabFJibEZUWVZOc08xRlJtcGRaVXFPVVlwcWpsbGxWbEplYW5aWmFXbEdzTzFGUlVWV25VVzVSbzVSaWtwV1ZXVnBzTzFGUlVhT1VZcVNWV1ZXWlhWRlZwMTFSVmFSZFVWV21ZbDFSVlo1aVdtdzdVVkZSbzVSaXFLT2FXVldVbDVxZGxsMVJVMkpUV213N1VWR3VPMUZSVlplbmJxT1VZcGVsb1ZsaVdtdzdVVkdhbDFsU2NaYWVvYVdxV1ZXWHAxcGFyRHRSVVZGVm1WRnVVVk5pVTJ3N1VWRlJWYVNYbXAyV1VXNVJvNVJpbDVlZVdWV2psR0tsbnFGUlgxRlRZS2lvcUpDa2xxU2trRk5SWDNHZWxXWlpWWlNYbXAyV1gxV1hwMXBhYkR0UlVWR2FsMWxTbzVSaW1xT1dXVldrbDVxZGxscGFVYXc3VVZGUlVWV25VVzVSbzVSaWtwV1ZXVnBzTzFGUlVWR2psR0trbFZsVm1WMVJWYWRkVVZOM2hZR3RVMTlWcEYxUlZhWmlYVkZWbm1KYWJEdFJVVkZSbzVSaXFLT2FXVldrbDVxZGxsMVJVMkpUV213N1VWRlJyanRSVWE0N1VhNDdyanM3ZFc1cmJtOTNiamYwSzN3QUFBQUFTVVZPUks1Q1lJST0iLCJkb2MiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFHVVNVUkJWRGlOalpQQlNsdEJGSWIvM0F6RUM0VWd6SUFNRkNRM3BRc1ZYU1hCbCtrekZPMm1HK21pVzU4aFlIZDlDemRKTmdwWFFkUXNOSkVrTk1HRjBLSjN6c3pwSXJsRGtuczFEZ3dNaDVuLysvOXptTUxCOGVuWDl1WHc1LzNnS1FTQTMwZmJjTTVoMVFxQ0lCWkNIQmIydi96Nlo0c2Z3czJQR2tHeGlKUHZ1MkRtTng4VEVmcjlQa2FqMFlXNGUvZ1RWajlybkYwL3dqcUdNUVpFdE5LQjFocTlYbTlIc0Uwd21QeUZkVk1xTTRPWjBXcTFBQUJLS1l6SFkvOVFLWVZxdFFwbWhyVVdnbTBDb3NSZlNBVWFqWWF2UlZHMFFFOGpFaEVFM0F2Z1RFYWcyKzE2OHJ5TDFBRUFHR01nbkRYZ09ZRlVKSXFpQmZMOE9YVmdyWVdBUzNJZHROdnRCYnBTS2hPRmlLWTk0QnlCZXIzdWE1VktaWUc4SkdBQW00M3dualVWY1BrT09wMk9yMGtwQVFDVHlRUlNTaDlsTmdXVDI0TmFyWlloTGtlWk9jaWZRdXBBU3VuSldtdUVZWmp0Z2JNdktCU0NWeDJrNUdVNkVTSFFHK3ZQNXFrUHRzK0FNMTdnclowa0NlSTRoaERpUnV4dGZmcHhGbDhkRFlmbmF3RFFiRGJmOVpsS3BkSnR1VnorOWgveDVqbDY4N3g4dVFBQUFBQkpSVTVFcmtKZ2dnPT0iLA0KICJwZGYiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFLY1NVUkJWRGlOZFpQUGE1Um5FTWMvNzd2UDd2dG1YMk5ZWWpDK3NCcWtyUkJNaEI1S1VSb1FDZUtoOUtaL2dSZWhoV284VkZBRVFUMklDWHBJMjROUmtaSlNGSW0wSjA4YktLVnB4S3dwTGU0cENVS2FLbXYyNTd2dis4enplTmdrR2tnRzVqVERaMmErTStQTXpNd01hNjF2R0dNRzJjYnNteFhzM0orNFI0NGhsODZRdW5BVE45ZGRWRXFOT0lWQ29kamIyenVReitkUlNtMEppTytNa1RyNEtjbVRTWnh3TDZuVEl5d3RMYkc4dlB4Q3hYRThFSVloV211MDFsc0NXbE9UcERJZDZEOEsrTDlNbzdVbURFTVdGeGNIbEloZ2pObXVlK3lyUlpJWHo1SG9SL3p4aDFqUEIydXgxaUlpS0swMTF0cHRBZkd2RHhGU2VGZHVRNWpmbE50c05sRkprbXdOc0pia3QwYzBmeGdGVitIMkg5cVVGMFVSNVhJWlYwU3dheTJ0ZTF4NFN1WGtNTW5jTEJJbjZIb0RHN2MyNG8xR2czSzVqTmE2UFlLSklxVDBEL0x2MzdRZS80d1Q3Q0I3Zlp4VTMzN3FFOStEQVhuN0ZuZFhEL1Y2bldxMUN0RFdvSHpoVzE3SE5US0hoOGg4Y1pUczFWdWs4dnNBTUpWVkpHa0xYSnVmSStvZlJFUTJ4aEFSbFAzb0FFNnJoa1F0ak9QaTdnbXgxbUtNSVY3NUQxbGJVTzMzYWZpa2Y1Tk1udWVobXNlL1JFNmN3RmhEY3Y4T3E2ZStnc3ZYc04wOXNMQUFhd0RuK1RNOHo4UHpQS0lvd3ZkOUhNZEJCVUZBTHBkclYvMzZMTW1SSVdyZm5XUG5UNCtRSUtDeURwajlpMDdSR0JVQTRQcytXbXRjclRXTzQrQzZMa29wT2o3N25NemhJV1RxTWY2K1BrUkFCSFNqUmZYZUJGRVVrVTZuc2RhK0I2emZ3cnAzbnZtR3lvUDd1TjI3TUNxREdCQURsYnNUeExVcTZYU2FKRW5hQUtYVXkyS3hTQnpIR3dDeVdlamNpYXl1d3U1d0F4Q3YvRS85NGtXMDFoU0xSWlJTTDFVUUJPZExwZEtOK2ZuNWp6OVV1SzR0bWJGUkdrNks1TU5YbVpvaUs0YmM4SENwcTZ2ci9EdkthWU1ISnZrTm5nQUFBQUJKUlU1RXJrSmdnZz09IiwNCiAiaXNvIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSnlTVVJCVkRpTmxaTmZidE5ZR01WL3NhLy94QzUyV2lkMVFrdVRVdWdJbEZRQ3hBYVEyQkhzZ2xXd0JsYlFrVUNRR1kwVU1raWtTS1JRZFpxR05nbHBHc2ZYMTVlbmhvZnl3SHpQNS95T3ppZWRRcnZkZnBwbDJZczh6L2Y0SDJjWVJrY0k4YXl3djcvZmFUUWFyVGlPTVF6anQ4eDVuak1ZRE9qMysrOUZtcWF0S0lwSTAzUXArUFJQbThIWkVDMGNUTHVJRUJibGNwbnQyOXRMVFJSRjlIcTlsbEJLb1pRQ0lFa1dkRjYvcEdJNTdOWC93S3JFbUY0SjAzVDRkamFoL2U0dm1xMG1ydXR3NVRPeUxFTnJqZGFhUC85K1JkendpR3NaWXRwSEowY1U5RGVFZFVHdEduRHYzaDArZFA5ZDZyTXNRMGdwMFZyVDZYM2tzMUZFU28rcUhCRXNwdER2WTE3TUNkZGpndUlxbGlpeVdncnBmejZrM3RoQ1NvbFFTcUcxWm5peVlMTzR3M1EyWXphWFJBdUxyZm9EQ3NEUjBWZHE1UVRQTHVIN052OGRUOUIxalZJS2NWVWgrSzVaWjVXWkRqbWRTZTd2M1dJMG1pQ0JtNVVkenIrOHdTN0hHTmtLOG5MNnM4SVZnRUJqeHBLSzdXSjdWWHp2QnFQUkJJQkN3U1Vaamlua0NpTjNjZWJHZFlEdG1hUjVpbTFiaEc2UjBlQ1l6YzFORmpMaDdmdTNDTThtc3NkWTh4ekhxVjBIbE9PSTg5TVJwYlVRenk4U2xBTE9oK2Vjbmx5aWRZMkJhMkp5eG5yaGtOWDZrK3VBU2x4bU9yNGdVd3JMdGdHTjc2K3dzZWJDaWNzazBmU1NCYWJaNG03MTlpOStBTnphM3VEaytCUmhHWmlHWURGUGtTckRUUlRtVkxGU0NuajArUEZTdndSSUtSRkNZQXFUamEwYTQ3TUo0OUdRMmNVbGFacmlDSmVIdTFVMmRpb0F5L1FzeXhCQ2lGNm4wOWx0TnB0WWxnVkF1QllRcmdYWFJuU1ZMS1drMiswaWhPZ0ozL2VmSHh3Y3ZPaDJ1M2QvZjh6Z09NNUJHSWJQZndBUVNtYXNzUW9HUUFBQUFBQkpSVTVFcmtKZ2dnPT0iLA0KICJzd2YiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFHcFNVUkJWRGlObFpLL2ExTlJGTWMvNy9ZMER4cEx0QThibkl5Q2cyRDhDNVNLS0pUK0FXSW5KeTA0T05rL1FLZ2lVaEFIQldmQlNYUW9MaTVpY01zaXI4SGhQZEFnNGt0MEtyYWEzSHZmdlE3YTJEWXZxUjQ0eXpuZkgrZWNlNE5tczNuUldydnFuRHZOZjRSU0toYVJtMEdqMFlocnRWcTlXcTJpbFBvbnNuT09icmRMdTkxZUY2MTFQWW9pdE5iN016dWZZZllJcUFtaUtDSkprcnJLODV3OHovSGVGNmI3MXNIY1dLUi81aWo5Q3lmeG05L3gzclBORTJzdDN2dENRLy9wQS8wckMvaXYyYUFtSG9JL2VHc3R5aGd6MHIzMzREWTZ5N0RUTTB6Y2VVejRKb0VEMDRPK01RYlpIbi9vVUI5VGZxNDlCd2ZsbFlmSStmbmZVKzNBamwxaDY5RjlySEVBYkZ4ZEpDaUZ6THpQZG1Hc3RjVUNycE94K2VJWjVIOXJRYzRRcmxqQWV6YnVyV0I3QmpsMm5NT3YzaEtVU2tQakZ3cjBHcS9aZXZxRUh5L1hBRGgwNnk1TVRvNThwU0dCTDVjdkRacVZwZXVFWjgrTkpCY0srR2lXOEZTZGc5ZVdtSnFiRzB2ZUpXQ01RVVNvdll0M25HSi9zclVXSlNKSkhNZG9yVWQrcUwycHRTYU9ZMFFra1hLNXZKeW02V3FyMVRveDFuSlBoR0dZVmlxVjVWOWJyMGx3MU5QLzVRQUFBQUJKUlU1RXJrSmdnZz09IiwNCiAicGhwIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSnlTVVJCVkRpTmxaTlBTRlJSRk1aL3ZybkRPSTRtK2xLemhDeW9GcUVRcFJYVklpZ0cyZ1F1b29XYk5yV1BXclNybG1FdGdpQWlJUkJxNDdoSWdnYUpZS2JvajZYTWE5UWFRNGF5YkJ3Yi84dzh4N252dm5kYkRDWVNoUjA0aThQSGR6am4rODZwR0I0ZVBxbVU2dkU4cjUzL0NNTXdMQ0hFcFlwWUxHYTF0cmEyTlRVMVlSakdoc2llNTVISlpFaW4weCtFbExMTk5FMmtsUDh6QUtacGtrcWwyb1RydXJpdSt4dVl5ZGlrdnl5U3Qwdll0aVJ2bHloSkY4Tm5jR2ovVnZidWJnQmdsU2VVVW1pdEtkZ095WWs1NW5MTFRHZHRmTUxIcmgwbTMzS3o1QXVTMG9yRHlJTmhxcXY4WEx4d21NYk5JWlJTQ01keHNKY2RFdU5aTUh3RWE0SUVDNHFXNWhwT245ekQ2TmdNOGJkZldTcVVPSHB3QjZVVlNWLy9DT2ZPN3NkeEhJaEVJcnAvTUtFZkQzM1NnQVowT0J6V3IwZW4vMW5mNlgydUk1R0lOcFJTVEg5Zm9yamlBRENiL1VrMEdxVmx5eVlBZm1UbTE5V3JlREFvVUVwaEtLWElMUlp4UFExQVk0TkpPQndtL1cwQkFNY3JXNnRaajMrZStsSFdRQ2tGYUJ5cEFIZzlPczFRZklyK0orUDBEU1M0OTNDRXZvRUU3NnlaMy9oZ05NRnlmaDZsWENwNmUzdjE0U01udUgzL0xaMEhkdkorZkpaOG9mU0g3elhWQVRyYW00bS8ra2oyK3hkdVhEM0R5eGZQeWhOc3JnOXl2bnNmTisvR3NaZEwrQ3VyTUlRZncrY0hOSzRqS1N6TThXaHNsRkFvd1BVclhkVFhWYTJ0b0xWbVczTU50NjZkSXZZbXpkTm5FK1J5V1lyRkFwN25VVmtab0w2dW11NnU0eHpwMkZuV1JPdTFCbzdqSUlRQTRGam5kbzUxYnYvckNXdGRGbE1wVlhaQkNKR3lMQXNwSlZyckRhV1VFc3V5RUVLa1JDZ1V1anc1T2RtVFRDWjNiZXlOeWhFSUJDWnJhMnN2L3dJZE5Yd1FlT0t5Q0FBQUFBQkpSVTVFcmtKZ2dnPT0iLA0KICJ0YXIiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFIcVNVUkJWRGlObFpFL2ExTlJHSWVmZTNLU1FxbzBDYmJHaW1neXhEOGxwUXI5QnJwbUNJaWdyazRTY0ZCdzdDaG94M3lCNGlKSWg4UXY0YVJFTFVVbFNZY202UTAwVGZIbW5uUHV5WTFESkVPVFN2dkM0WVVEditmM3dPdHN2Zmo0d05yUk81eHdsUmtqcE1Pcjk4OHBGb3NBYkc5djgvWnBtVEJ3YWxJNkw2WG4rWnZwSzVmejE3UFhpRWc1RFlnSm9oK2lsRW9sQUtyVktuZlgxNmp2TmxjNzdZTk5PZkQ5ZkNLZTRtRDNpRkU0bWdKRTQyTm9NcG1jL0hWLzkwbkVVOVQ5Wmw0YXBUbnVlRFBEQUU1MHZNdmxNclZhRFlCQUIzaUhBVVpwaEZJSzVXbTBiMmErSUxBQVNDbloyTmdZQXdLTDhqUktLYVJXQ3FQMHpIYUFXQkFCb0ZBb1VLbFVBQmdHNDNhdEZFTHIyYzBuRFNxVkNvVkNZV0tnZllQV0JxbTF3U2h6cW9HMWRzckFXb3RSL3dDaEdLTC9BMUFEVFc1eFpkS2VXMXhCRFRSYUdVSXhSSVlSQ3hIUWYyWkRldnQ5SHQ5K1J2VGUrSnlCYitudDl4RlNFRVlzc2p0dzNmV2JjMHZMeWFWVExVN093dFdMSFBmNmRMKzRybXlsbS96NHVWTTNSelo3WmdJUVM4aDZLOTI4SUYzcnNmZndXemExa0RwUG5uYi9NT3QrOGx3cHZOem8rOWQyd3h0OXpwd0hNTzlrRzhMTHhhVXlNYlhjdjUrNWxibURFSkV6aGNOd1NLZXhrMm1aWDN2T3BiVW5qMGJHZXhPRytzWjVESVNZYXpxeCtkZC9BZUFwR3lEeEw3VFpBQUFBQUVsRlRrU3VRbUNDIiwNCiAicmIiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFLS1NVUkJWRGlObFpOTGE1TmJGSWFmdmJOejBZVEdrTnBZTEJvdnJhRFdpU0FxZ3FKNE9Cd25nbkNtSWxSdzVLVllLS0lERVVXdzZrRHhCd2hPSFFpQ09GRElSRFFJeHhqVUpnVmJEbzJtMVdwc0xzMjN2LzB0QjlWQzZhU3U4ZnM4ckhmQlV2bDgvckR2K3lOQkVPemdEMFpyWFRER25GZTVYSzZReldiN001a01XdXRsd1VFUVVLMVdHUjhmZjJzOHordFBwOU40bnJjb3BFU29QWHlBZS91YWpnTi9NWGJ2THAvR3lueHVXWFpldThHV1kvOVNLcFg2alhNTzU5d2kySy84ejdzekE3VC9lOG5La0didVE1SFVpZE84SHp5TjMyeng0dllJbTQ4ZXd6bUg4WDBmRVZtQVo1NDk0YzNaQVdqVUNRa2dBWjBiK3BnZEdXYmorZ3lqZGFGaERDS0M3L3RvYXkwaWdvaGdxeFh5NXdab04rdjRnRk5nRTBsV0hqeENaYUxLbDlFU0hiVXBWa1JqODNsck1jNjUrUTFFeUowN1JhdFJKd3lnQUlHdDErOVFldktZcjFab1c4ZXNWeU5reHhFUm5IUG8zeFZtbmovbFF5N0hyQThXY0VEMitFbFUvaEh4b0VIRCtuZ29BcTNwWHJ0K29jTENEUklhdG5TbUdQM3lqZGpxTHZaZXVNem5HOWNvZi8rT3BOSjRTdE5XSVNJWVl1bjBVa0UwbFdUM3hTdjBUaytUM0xtYi9OQlpUR3NPYVRhUlpwTnc5MXBVQUc1cWtsUjNacW5nemMxYmJOcXpqZlQwQkpQM2k4eU9sYkFLdkJWeFlwMmRoTHlBNXN3bmxGYXN5cXhlS3FnVWk4eE5WVm5uejFEVmE3QUlnc0sxV3Z5WXJMQk9Rb2pSMUxCRU94SkxCU3FSb1BKeEFoSWQxTDYrSjBCb280bUpZcU9Ka0lpRzZZdUZlVGZYb0MxdXNjQmFTKy9nTUsrdVhxTFJrMFVyUmFRZUpod0pZNklSZnFSV29idTZpUFQwc0d0ekw2RjkrN0hXemd1TU1hVkNvZEMzL2RCaGp2Nzl6N0tleVZwTG9WREFHRk15OFhoOHFGd3VqeFNMeGQ1bDBiOG1HbzJXazhuazBFOEkvMzZmRTlWQy93QUFBQUJKUlU1RXJrSmdnZz09IiwNCiAibXAzIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBR25TVVJCVkRpTnBaQlBheE5SRk1YUGpGY1NHdHJRRGlZTlVneEtOMExxWjJoQXBBcy9RbDFaTjNWcDZLYmd4cDNkdVBBYkZMb3IwbTEzMlhRUkt2VVpVR2VnQnEyRVlCVTc4d0l6Nzg5Y0Z5WFNPdFBRMGdNUEhwZHpmL2ZjNjNRNm5ZZkdtSTAwVFJkd0JibXVLNGpvaGROdXQwVzlYbTlVcTFXNHJudXA1alJOTVJnTTBPdjFQcEpTcXVGNUhwUlNWd2tBei9QZyszNkRyTFd3MW1ZTVljSTRPckg0K2xNaDZNZjQ5RzBJY1JoaDc5VjlBTUNvajR3eFlPWU00Tm4ySDhnd1FSVEdrR0VDR1ozK3ozcU5NU0N0ZFM1QWhnbnFrNHpidFNMbXBrdTRkNnVBUitzZnpubTExaUJyYlM0Z0NtTzhlVHFYcVovMWpsMUJoa2x1UGJQQ2hZRG9tb0RSd1E0T2gzaSsrUVBmVHd6Z091TUJuL3NKMXQ0ZHcrL0hrRktCbWRIYU9zSVhad0tZY1ZETkFiZ2pBRFBqNWM0eDNnOXY0RmV4aUVwdEVzeU14dyttTUJWSzNJa2wzajZwL2ZNeWN6YkI0dDJiMk4vOWpkbWlnOWZMczJCbXJDNVZzTHBVR1g4RHJUV0lDQ3RORHl0Tkw5Zjh2NHd4cHlzUWtTK0VnRkxxWEx4eFR5a0ZJUVNJeUtkU3FkUUtnbUNqMiszT1h6Z3VSNFZDSVNpWHk2Mi9Ec0ZQODVBY0hCY0FBQUFBU1VWT1JLNUNZSUk9IiwNCiAidHRmIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSUhTVVJCVkRpTmxaSkJhQk5CRkliL25ld214UlJUM0VxcW9iaFJEQ2lKQit2QlV4SEJneGF2ZXZMZ3didUNCY0dleFVOUGxaNUVwQ0FJaFhpVmlpSkViUUlwdHRSRnlhNW1reVpFMGlTVm9tM2RuVGU3SGxJRFd6ZFFmNWpMKzkvL0RXL21TY1ZpOFJJUlRidXVld2IvSWNiWXFpekxkNlZjTHJlcWFWb21IbytETWJhdnNPdTZhRGFicUZRcW4yVEhjVEtxcXNKeG5NQm1JVnpjZjdRQUFIaDQrM0t2cnFvcURNUEl5RUlJQ0NINjNyYXdhS0N4dmdsSkFuWnNqb0d3dkF2dTVoZ1J3Zk84d0xQNWN3ZXY4eVdjTzUwQTU0UnFZOFBuRXhFWTU3d3Y0UG5MWlV5TW4wSktHd2FSUUxuVzhmbWNjekFoUkdEWXFuZFFxWGN3UG5ZY3g0NE1RUWlCY3EzdDZ4RkNRUDQ3d2w0OXlSWnc0K29ZQUErakkxM0F0N1dXcjVlSWdnRWZsaTBNSFJ4QVNqc016L01RVmtJWVVRZGgxZHNnRWdpRldIK0F3d2xQczR1WXVKQkdidWxycjY3SUVuN2JEcXJmTjVCTXFQMEIyVmNyT0RFNmpLMXRHMXZiZHE4K2VDRGNIYVBhZ25iMFVEQ2cvZU1YM2haS21KbTZockFTOG8zMThYTU5oUlVMWm5VZEY4K25nZ0dQNTkvaitwV3pVR1Qyejdza0V5cUlDSWJWN0hsRTFGMmt0VVliTisvTjRVMytDK1plNUZHdXRYemY5VzdKeEowSDh4QkNRRGZxdURYMURMYnRnSWdnemM3T2xwTEpaQ3FkVGtOUmxPQjkzaVBPT1hSZGgyVlpoaHlOUmlkTjA1eldkZjNrdnRLN2lrUWlaaXdXbS93RGY2Ti9od25vZmhBQUFBQUFTVVZPUks1Q1lJST0iLA0KICJqcGciPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFJY1NVUkJWRGlObFpKTlRsTmhHSVdmOSt2OWJpOEZxbkFOalZIVG9DRTZBTmJneEdVWU44RWlUR1FKcnNDNEFnZE9HT2dBQmtDamljVklJMXFyL0xTMHZiZjlmaDFnd3N6UWQzNmVuUE9lSTd1N3U4K01NZHN4eGsxbU9CRTVTTk4wUzNaMmRnNmF6ZVpHbzlGQUtYVWpjUWlCWHE5SHA5TTVUSXd4RzNtZVk0eVp4UUI1bnROdXR6Y1M1eHp2OWc5NS92b3RzVlloYW9WTVBUSjJTQm1RU1VBbUVXVkFMSWdYQU42OGVvRnpqc1E1UjNjd1lQbCtFNW5YQkMxTUx3dmkwSkJhaFNvallXU2hESWdWbEZlSXdGbC96THh5Sk5aYVZLMUc0MDREVmRVRUFrNDd3bnlBaVVjTTZHbWtQQzlKS3hsWnJZWlNnbFJUYkdHdkhGU1U1dW5qUjN5NkdMT2dGUmRqUTZ4RmNJSllvV1lEN3JZblJFMXRhWkVzMDRqMlZ4Rzg5eWhWNGVjUTF1K3RjTklmY3plWnA1NW96aWVSbFZSemZEeGdhYmxLVkNtcmo1YUlhUUxTeFh1UGNzNUJnQmdqRSt0UVVWaXR6L0hyb3FRWVRPbjFDdklzSlVPaEJVWkRRN2MzUm55OGZxTHlnY3V6RWVOUlNYQ0JENTF6L05UamhvNUNLblFMankwY1dYMk8zdThxSWtLNGxWMERFdWZvbjV4U1NST0NENWl4WVRJbzhZVkZvUWcyWHBWL0JoV2RYQUUySGw0RHFsUExueTgvVUxwQzlBRlRUSENsKysrUW5IMXdEV2prZFU2L2ZaMXBpU3Y1SXYzdXZ4WTJuelQ1L3Y3bFRJRGhjTWpuL1k4a1NxbjIzdDdlMnZyNk9scnJHNG10dGJSYUxaUlM3V1JoWVdIcjZPaG91OVZxcmMzaUlNdXlkcjFlMy9vTGxUQXVwT0pQYXJ3QUFBQUFTVVZPUks1Q1lJST0iLA0KICJjc3MiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFITlNVUkJWRGlObFpLOWJoTkJGRWFQWjJlOGF4dmJJbXRwZ2NwQ0lrSWlUb09nb3FYbEFXaVFlQUFhU0IxNi9BQzhCcS9nMWxVV1YrdkdyVkcwa29PdzF6dC9GQU9KcklURTNHNmsrYzdjYys4MHB0UHBhMlBNMkRsM3pIK1VFQ0tYVW41cVRDYVRmRGdjanJJc1F3aXhWOWc1eDNLNVpMRllmSmQxWFkvU05LVVl2OGY4TEFHUTNRT0dINzdlQ2tuVGxLSW9SdEphaTdXV2g2NUVkUnNBYUZmaXZiOFY4RGNualRGNDcxSE80cmRiQUpTSzd3UUFHR09RV211ODk0akh6eEgxQmdEZmJPSDJBR2l0a2RaYXZQY1UwUlROZWVnZ0dsQ2VmbU43c1FZZzdyVjU4Zm5OalJxWENsbDdpZnd6QTJPWGRNd0J6VzRHUUczMGpVckdtQ3VBRUdCTlVCQlJnblFDVzlVQXlHWjBOMEFOWG9FTkxSTzFhVDFOOFZzTFFDUGVBM0Q2UTdPcWZnSFFUeFJuYXNXNURsc1pxSmpEOFJtcmkzRHU5MksrZkR6ZUJWUVAxclJWQWtDbDE1VGxJNko3Q29EU2FEYTBTTzQzQWRqWUd1LzlMc0JFbHJVSkNzMG9SaHFvcXZCaUlnWE9TemFib0JRcnVRdlFXdk9zYzhTV0tsd2dvWmNsckhYd2Jxc0dXU09tMHNFOVVlRVBHR09RVXNvaXovUER0MGZ2VUVwZFRlamx0WmxkbHRhYVBKOGhwU3hrcDlNNW1jL240OWxzOXVUZmtlc1Z4L0c4MysrZi9BYmdaUllWN2FhaFV3QUFBQUJKUlU1RXJrSmdnZz09IiwNCiAiaHRtbCI9PiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBTjF3QUFEZGNCUWlpYmVBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQUovU1VSQlZEaU5sWk05YjFSWEVJYWZlKzY1ZDlkNzl3UDdycjFvTWVDQXNPVEVqcEJRS0JCSmx5Z1NUWlErSFQ4Qi9nVVZvazJSUHAwbEpJalNXSkZTR0NTMDJhQmsxNFhCQ1dadGd5emI3T0o3enBtaDJOZ1VUZ0ZUei92TXpEc3owZXJxNnRmZSt6c2k4amtmRWNhWWpyWDJWclN5c3RLWm01dGJhclZhR0dNK1NDd2lEQVlEMXRmWC83QkZVU3psZVU1UkZBQW84UER4dnp6ZkdiTHg2b0R6TXpYTzVCbDVOZVdMUy9reEpNOXplcjNla2cwaEVFSUE0T1h1aUo5L2UwYXRXdWFUOWlsYXpTcnRxWXdneXU5L0Riai82RGszdjVtblBWWGhTR2U4OTZncUlzSzk1YWZFU2NLaEUyYWJHUXV6azlRbkVqYTI5ekVtd21PNHUvd256Z2RVRmU4OXhqbUhxdkxqdzcrUmFPekIxZmtaVWh1VFdJT29vc0JrdFVSOUlzWEVscDkrN2FPcU9PY3dJWXhwRzYrR25KdXA4K1ZucDJsa0tUWTJKTEdoOE1KZ2Q0aUljaWF2VUM0bHJHOGRvS3FFRUxCSEk4VEdjSFYraG5KcU1TWWlOaEUyTmp6ZGVFM2hoTTIzYjFCVjhscVpZYXp2UnpnQ25KMnVzYjMzbGtkclcrd05pMk8zczFLQ2ljYmI4YUtNQ2svclZPVWtZQ0l4cUFockwvYjQ1Y2svUE52YXh3Zmg4b1VtMzErN1NLT1NJZ0tUMVpRa2prNENwdXNwTzd2ak5rZUhuc2RyTzdnZ0JGRjhFS3JsQkJGbE5EcGt1cDZlQkZ4ZmFITG9ITTFxaWc5S2U2cUM4NEx6Z2c4Q3dONytrRFNHNnd2Tmt3QlY1ZHZMcDNteHZjdm0xbXRtcHl1NElMZ2c3QThMRHQ2TXFKVU5ONjYwai9POTkrTXRPT2V3MWpLWkpkejY3bE1lUE5tazA5K2tjT1BLYVdLWW5acmdoNi9PanMvOVA3SDNIbXV0N1hVNm5mbkZ4VVdTSk1IR0VUZXV0UC8zaVZRVkFPY2MzVzRYYTIzUFpsbDJ1OS92MytsMnU1Yys3SkhIVVNxVitvMUc0L1k3Vk4yQU4wN2ExR3NBQUFBQVNVVk9SSzVDWUlJPSIsDQogInR4dCI9PiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBTjF3QUFEZGNCUWlpYmVBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQUZNU1VSQlZEaU5sWkE5aXNKQUZNZC9oZ2NXRmhaUkpGTm9MTFowYTdYZlN0RExyTGZ3TUFxZXdFSUx1NnhWMGxncGdpZVlqMlNiVGRoczRxSVBoaG1HLytkckhJL0hEMnZ0S2szVGQxNFl6L01pRWZsczdIYTdLQXpEVWEvWHcvTzhwOGhwbW5LNzNUaWZ6MStpdFI3NXZvL1crcFVBK0w1UEhNY2pjYzdobkh1SkRKRHp4RnBMbG1VQXJOZHJ1dDF1QVZKS2NibGNTbStsRk1QaEVBQnJMV0tNS1FRV2kwWEZLUXpEeWp2SEcyTVE1MXp4c2Rsc0FJb1VTaW1Bd2psUE01MU9peHFsQ3ZQNXZMYnZZREFvM1RuZVdsc1cyTy8zSmFkSHU4aXJWQVFtazBuSnFTN0Z2d2tPaDBPSmRML2ZBZWgwT2dBRVFRRHdPTUY0UEs3ZHdkOTVtR0M3M1ZiY3J0Y3JRUkRVMWlvRWpER0lDTFBackFMcTkvc2wxOTlrYXkyZWlNUlJGS0cxSnN1eXA0N1dtaWlLRUpGWVdxM1dNa21TMWVsMGVudHFBVC9UYkRhVGRydTkvQWJPLy9mVkIzRndKUUFBQUFCSlJVNUVya0pnZ2c9PSIsDQogImNwcCI9PiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFBTjF3QUFEZGNCUWlpYmVBQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQUduU1VSQlZEaU5sVkl4U3h4QkdIMHpmbmNyZDVvRE4zQUVVaHdKWnlGY1RCUFNocUMxSXZnTGhPUVB4TjQyWUpGS1Fqb0xzWkJVS1pJaWFSWlNMWkZrUERIdU5tZm5GUmRPUEl3Mzg4MU1xajFaMTZEM3dXdmVmTy94dmNlSU9JNFhtWG5UT2ZjRVk0eVVVaEhSR3hGRmtXbzBHcTE2dlE0cDVaM0V6amwwdTExME9wMEQwbHEzd2pDRTFucWNBeENHSVpJa2FaRzFGdGJhc2NRQWtPbUltZUc5enozK1NvYjRGbCtnMjJPVVNHRHVVUm5MTDZaUW1jeEhaR1pJWXd5ODl5UDhPTHJFKzQ5OUJDVmdkV0VLaTg4cjJQODl4TlplUDdmbnZZY3hCbVN0elYzdytmc0EweFdCMXlzMVpKMCt1RCtCczRHRmN4NUM1R01VSXB5Y2FqeWREU0NFUjBZL2ZrZ0FDTUFWbDBVb0dEQUQydmhDTHpjTk0wTm1CaG5xTXhJcUhjS3dHM0UvankreDkvVWMycmpjN28wR0t5K3JPTzBaYkh6b0lkcS93S2RvZ0xmYmZ4QWYvc1dFUk1HZ0VHRytXY2JHcXhuc2ZEbkh1OTAreWlXQlozTUIxcGJ1M2EyRHpHUytHUll5WDk4YkdSaGpRRVMzbG5aZHpNeVFSSlFvcGFDMUxueVUvMEZyRGFVVWlDaWhhclc2bnFicFpydmRibzV6UVJBRWFhMVdXLzhIR2d0S0tCTXY4ZjRBQUFBQVNVVk9SSzVDWUlJPSIsDQogImgiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFGa1NVUkJWRGlObFpJeGJ0dEFFRVVmVitPb1VLR0NoVm9oUUFBMzhoblN1SGJuTzdpUEQ1RGVCOGhCY2dLVmtkM1FRbVJRZ0tIS2dOd1pTRUV1WjNaU01MSXBVd21pRDB5eG1QMkQvK2RQdGxnc3psWDFKcVYweGhFSUlSUWk4aVdieitmRmREcWRUU1lUUWdqL1JVNHBzZDF1Mld3Mjl4SmpuT1Y1VG96eEdBSGtlVTVabGpNeE04enNLRExBamhkVUZYZmZLMG9ZWEE3Z0I3MWV0MVFWYVpxbUpYV2g0TDhjVisvM09taWFCakd6L3FjRTFJQ0JOMDcybk9FVGgwSGZodXdzdkIvZ3RjTXR5RmVCQ3Z5am85OFVQblNFcWg3ZWdTZHZGVHhCL0I2eEt5TmJaV1IzV1g4SEJ4VllxOEErR3g0Y214bWhEdmpML2s1NkNuZ0FyL3gxQng0NnlkVGcxazloYjhESnhRazhnaWZIYTM4ajdONTZJTWF1aGVwbjllWmk5ZWU0SFB6VXFWYlY2N3RyUVZTMXpWUGtyM2tmZ3FxMkZrU2tMSXFDR09NL3I2NWJNVWFLb2tCRVNobU5SdGZyOWZwbXVWeCtPa2JCY0RoY2o4Zmo2OThBVW5QbytYRlloZ0FBQUFCSlJVNUVya0pnZ2c9PSIsDQogImphdmEiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFJUFNVUkJWRGlObFpQUGF4TkJHSWFmbmN4dW1zYTBscVVHeEdBVXJDS3BnaUlCcllLQ0ZEejBVcy8rQmZVaTl1SmQ2S0hxUVEvcVArREZpd1VSZXBIR2cwSU8yalRRbW9pV1lyVXBVdnM3NmN6c3JJZlFRTnR0d1JmbU1EUHYrL0I5M3pCT3NWaThhWXdadGRhZTR6OGtoQ2hKS2U4N2hVS2hsTTFtZTlQcE5FS0lhSFBoR2ZiYVVHdHZyYVZXcXpFN096c2xsVks5dnUramxJb01PNnUvOFJhL3N0Vm83RGozZlo5S3BkSXJnaUFnQ0FMQ01OeXoyRmlpN2QwRDlNVTdpSitmZDl4dDU0UXhKanI4ZDQ3RTJGMTBKby8zNFFuT3l2d2VqekVHcWJWdUJuYXByZmdTZGVJNjN2UVk5ZjZIQk9tenNNdW50VWJzVjM0WVMyQVBIU0ZNK1lqRjZValBnUzFzOXQxRGZwdkErS2NSUzkrYlZXNXQ3RzFoRzdDdCtKZFhlRFBqNk13bGRDYVBPL2NKbSt6R20zeE5iS0dFV0Z0Z2ZmQUZRRFJBWi9MRTVpY2hVRGlOWmRUeHl4QlBvVTVlSlM0RVhuVzg1WThFbUs0czV0Z0Z2Sm0zT0ZZUnVnbUMxRkhZK0FOQmc5V0JwNjFoUmdMRWVnM3JkU0RXYXVDNk9QVmx3akRHMXBVYmhJbkRUZE4rZ0k0M1E4aGZVNmd6L2RSemd5QmNzQlluMkNUNWZnUkgxVkhaUGhybmIrOEVhSzJSVXJKNjZ4R3hwUiswZjN4T1czVUNKN1NFVGd4Q1M5amVSWkRxeHZqWjFnc1lZNUJTeWtxcFZPcko1WEs0cm92dDdtRmw0SEhrdjJnTldpbks1VEpTeW9wTUpwUEQxV3AxdEZ3dW56b3d0VXZ4ZUx6YTJkazUvQThyUTR1dThLMFJuZ0FBQUFCSlJVNUVya0pnZ2c9PSIsDQogImpzIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBR1pTVVJCVkRpTmxaS3hhMU5SRk1aLzkzSWhsaFFqZlVLUW9nMkNPRVduS0RnSzNhS2o2T0JmNE9KZy80Rk9ndGwwc0xnSldYVVhSSWdGaDFDUVoxeGVCb05RSWVLZzR1Sjk1NTdqVUt0OXBrWno0R3pmOXp2bnUrZTY0WEM0TGlJOVZUM0hBdVc5ejBNSWQ5eGdNTWhiclZhNzJXeml2Zjh2czZveW5VNlpUQ1p2UW95eG5XVVpNY1pGRmlETE1vcWlhSWVVRWltbGhjd0ErNzRnSXBqWndnQUFFY0dYWlltWi9lNnY3L0ZicS9CcEJMdmJ1S2RYOEk5YStQNEYrUGk2b2kzTGtwQlNxbTVnWU5GaGFyaFhQV3o1Sk9uNkZ1N3pPNnkyQWdlMGgwZFErd2tBbGs3aGltZTRtTEN6VjdFVG5RcEFSUEQ3Z0YrdGhuM2YyeUN0M3lOZHZvdVZEdmZrRnV3OHJtZ1BCeGhvOUtnQ08zMzAyR25TcGR0b09JNTkreklEbUluZ2R0OWllZ1E3dWdvZityam5EMEFGWGV0ZzU2L05SS2dBL0l2N3VKY1BzYzROckxhTWRUZWh1MW05M1R5QXRydll4WnV3MUtnSTUvMkRJQ0o3OXd3QlcxbWJtVExQTENMNEVFS1I1emt4eGo4ZTgrOGRZeVRQYzBJSVJhalg2eHZqOGJnM0dvM08vSFBzZ2FyVmF1TkdvN0h4QXdKUFVCOWh1WW5TQUFBQUFFbEZUa1N1UW1DQyIsDQogInB5Ij0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSmtTVVJCVkRpTmxaTzlhMU5SSElhZmUrNjV1ZmxvMnRpZ0tWZ3hVcTBnYlVVY1JFUTNjZkFMSE4wRUs2NkNIVnpjWE1USjJYL0FmOERKd1ZZcVFxV1dORlNiS05hS0g2M1ZtQ2E5eVQzbjNIc2NOQmVsaTc3ejh6NzgzdUhuek0zTm5UYkczSXZqZUlML2lCQ2lJcVc4NmN6TXpGVEs1Zko0cVZSQ0NQRlA1VGlPV1Z0YlkyVmxaVkVxcGNhTHhTSktxUVI0OVB3Vnp4YmY0Z3FCVWhxdEZkY3VubVIwNzFEQ0ZJdEZhclhhdUlpaWlDaUtzTlppcmFYUkNwaXZmK2JVa1lOazhnVWN2NC8xQU80L2ZKd3cxbHA2UFdtTXdWb0xRTFBkWVc3cEhadEJ5SFJsbFZhbmk0N2dSNkN4VGlmaGVqSEdJTFhXV0d0NTh2SU5zNisvME94RWJIWmpna2FUVGpkRU9SNnRycUUvRlJLK3VBNjRpTkVieVB3SVdtdEU3L3pweFZVcUd3NUxHeEVmV29LdnlxTkZGaFVKc3VrTUdiWW9GUGF3TTF3Z3JONU5aaVFUZ3RDZzRneXU5UEJjUzlUNGhJL0NjeURyaGx3YWZZOFhaU0JTRURXdzF2NmEwQk5vcGNCeFNQaytwY1k4dDg2OFl5alh4dW91S2RjbDd3dG9MRU1VRU1kc0Y2U0Z4cmNXd2swdVQ3em4wRWdlMnV1Z082RGFzTlVDM1FYaEVXcVB6RytCNkFtdW5qdk9mdWNqTzdvZjJOWFhCck9NZGJab3RqYjRzZFdpb1gyK2lUS3Jxb3dkT3J2OWd1SFNJTGNuTHdDZ2wyWWgwd2N5aGFjallpTm9mRmNFZzFmb256aEJ4dS9mTHZnek9zNURMb3RqQXJMcEFtdk5vOFRCVS9wMkg4Tk41Uk0rRVdpdGtWSW1BbmQ0a2xybEFkS3p4RlppMUFKaXgzblM2Y0pmWldNTVVrcFpxMVFxbzJOalkzaWVCNERNNzZQLzhKMXRUOVFyYTYycFZxdElLV3N5bDh0TjFldjFlOVZxOWNBL3ZlTHYrTDVmSHhnWW1Qb0pKc0NHUVBDZzUrd0FBQUFBU1VWT1JLNUNZSUk9IiwNCiAiZGl6Ij0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBRDlTVVJCVkRpTnpWQ3Jqb1JBRUt5ZGRJSkFJRVpnTVNjNUQzNFRGRjl6K3hmN05RZ01Eb0hCemFIQVlQbUZtWjdoeElYTjdvWWhoN3RPS3VuMG8xSlZsNzd2cjh4OGQ4NTk0a1FKSVJRUmZWM2F0bFZKa3FSeEhFTUk4YWRuNXh5V1pjRTh6OStrdFU2bGxOQmFueEVBS1NYR2NVekpXZ3RyN2FsbkFOaitpSm14cnV2dVVkZDFBSUE4ejNmM3pBd3l4bmdKdHJsdmI0d0JXV3U5QjFtV0hSSWNXcWlxNnRHWFplbTFJRGFDZHhSRjhXSmxEOHpzVi9BODgxbjRId1RlREpxbWVSeldkWDJjZ1RFR1JQVEMvaHppbmdwbS9sVkFSS05TQ2xwcmI5cnYwRnBES1FVaUdpa013OXMwVGZkaEdENTJqWG9xQ0lJcGlxTGJEeVZKSHEzMzhRSnVBQUFBQUVsRlRrU3VRbUNDIiwNCiAiY21kIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSGlTVVJCVkRpTmxaSzlhMU5oRk1aLzkzM1AvUWdwNlhERmtpMkxMalpGZEtvRVdwQlkvNFZnL29OU0ZQdVJiaUt1bmFXRXFoUVJjWmRPUXJsZEhLSkxraWtCNmRwRjdWQUp5ZnUrMXlGZkhYc1BuT1hBK1ozblBEeGVxOVdxR21NT25ITXJaQ2lsVkZ0RWRyeXpzN04ycVZRcUx5MHRvWlM2MGJKempvdUxDODdQenpzeUhBN0xjUnd6SEE2ekNDQ09ZM3E5WGxtc3RkUnFOWklreVFSWVcxdGpjM01UWll6SnZBeVFKQW5HR05Sb05Kb05DNFZDSnNob05FSlphMmVEVHFkRG85R2dVQ2pnZVFxdE5Gb0xvbjFFKzJndGFLWHh2TEhaMXRyeEM5T3FQNnV6dXZxSWRydkRmbU9mVy9GdG9pQkhGRTQ2eUJFR09hSWdJZ3dpakRHSU1RYWxOS0tGSDYyZjFHdDF0cDV2MGRqZm8xZ3M4dnJWR3p3OEFGSlMwalRGT1lkTDdSemdTNEJvb1ZLcHNMM3prdkpLbWFQbU85NGZIUk1GT1pnQUlNV2xiZ3h3MXdDaUJSR2Y0NDhmK1B6cEM5c3Y5cmo4YzRsU1Foams4THlKZ3VsMVo3RFhBUUNpaE1mckcvejlmWW1JNFBzaHlmZHZMQ3prWng2dFBsZ2ZYN1lhTTdpYUE2b2JWVTYrbnZEdjF4VnE0cnhXbXZ2M0hxS1Vua1Y4S3QwNnk1T24xVG5nOFBBdFVSUmx5c0JnTUtEWmJDSWkwanM5UGIyN3ZMeU03L3MzRGxDMzIwVkVlcExQNTNmNy9mNUJ0OXU5azBWQkdJYjl4Y1hGM2YrTytOLzRGdVpXSndBQUFBQkpSVTVFcmtKZ2dnPT0iLA0KICJ4bWwiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFIR1NVUkJWRGlObFpMUFNsdGhFTVYvOTh0M2M0UEJYSnRiU0NFZzJSUWtOTjM0REM1Y3VPZ0wrQlQxTFh3QVg2UjdDZWdtUmVFMnRIQWpLc1EvcEN1REJzbjM1MDRYTVRlTkxhVVptTVVNWjg2Y09VelE2L1YybkhPSGVaNS9aSVZRU3FWYTY4OUJ0OXROVzYxV3A5Rm9vSlQ2citFOHp4bU5SbHhmWDMvVHhwaE9raVFZWTFZUlFKSWtaRm5XMGQ1N3ZQY3JEUVBNNTdSekRoRjVwVkZBQlFBRUUwTmdQWG10VXZUbTRaeERXV3NSa1NMTEoxZW91M0ZSVjc1OFIvZnZVWGRqeWlkWFMxaHJMY3A3WHpTaTdpWGgrUzIrdmpaVDlXelJQMGFZZGdOZlh5TTh2eVhxWGhaNDd6MXFma0owZkVGNE51UnhmNXM4S2lFaWhQMTcvTnNxUHE2UVJ5VWU5N2NKejRaRXh4ZUlDTTY1aFFmQjB4UUJwQlFVbm9SZmg1ak91NFZIcFFDQkdmYUZvRkF3MmQzQ2JtNndmblFLVTBjd2ZrWm5QNW5PQ2FhTzlhTlQ3T1lHazkydFB3bEVoTWxlRzl1TVVUY1BsSHREYkt1T3I1WVJFZFROQTdZWk05bHJGL2lsRStieDlPa0RnZldJVm92dGdHdldzSzAzOEJ2MnJ3UUFvaFY1cy9aU1NOSGpGYTRnc05haXRWN3BFNTF6TXcrMDFsbWFwaGhqbHA3a1gybU1JVTFUdE5hWnJsYXJCNFBCNExEZjc3OWZSVUVVUllNNGpnOStBWTBEWjRjcEFVUjRBQUFBQUVsRlRrU3VRbUNDIiwNCiAiYXZpIj0+ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSmdTVVJCVkRpTmxaTzliaHRIRklXL21aMmQzUlZYSkVzMWhCTVlDUXRGaGhZcDFRZ1I4ZzU4Q2JteTM4SnVySmNJOGhDQm1xMEp4RVZBRzhnUDFLaVVSRWhjenAyZkZMTUpiSGUrN1dEdW5ITytNK3JpNHVKbjcvMGJwZFNMbDkvOFJkRlU2TXBTMkJKVkdnQ1NlSUlUNHQ0UmRudmUvZjB0S2FYZmpUR3Z6RzYzZTl2My9jbmw1U1UvUGora3NCWmRsZWpTb0FxZEY0UklGRS9jQzhFNWZtaWZjWFYxOWVMczdPeXQ4ZDZmckZZcjd1N3VlQWp2c2JXbHFQTHJTbzhMWXN3cTlvSWJIQi8vZEt4V0s3ejNKK3IwOURTdDEydk96OC81bXJtK3ZxYnJPdFR4OFhHYXpXWUFYSjM4UTEyWGFHdlJwWWJSQWlFU0pSS2RZeGlFeS9mUEFMaS92MGQ3NytuN0hoSGhjRkpTdHpYTnRLYVpUVGlZdHh6TVc1clpoR1phVTdjMWg1TVNFYUh2ZTd6M0dPODlYZGNCb0t1U29yWVVUWjFwakJTaWVNSnVQK1lSRUJHNnJzTjdqeFlSMXVzMUlvSXFDcFFwMEtXaHFDeGxlMERaSGxCVU5sTXhCYW9vK1BTTzhkNnpYQzZ6MTZSSU1aRlNJc1dNN244S0taRmlncFFRRVpiTFpWYmd2V2V6MlNBaW1iVUljWEQ0cHdIWlBpTGJSL3pUUUJ4Y1BoT1BpTERaYkhJR0lRUVdpMFVPZTFDZ0ZNU0VIaTNsSW9XY3c5NFJCb2RJWXJGWUVFTElGbTV1YmpnNk9tTC9sTENqZEcyS3o0b1VmU0E2d1EyQ2lPTDI5cGI1Zkk1cTJ6WlphNytxUlArTmN5NHIyRzYzVEtkVGZsdE5xSnNLYlV0MFdYenhGN0tDWWJmbnAxOGVlWGg0b0drYVRBamhRMVZWMzJ1dG1SM1d1UU8xUmRzU1pjWU1SdmxoY0ZSR0lYSkhWVldrbEQ2WUdPUHJHT01icGRSM3YvN3hoTFllWFJwMFdYNmhZS1RrSE00NVVrb2Z0ZGF2L3dXUDduT25YUFlVTmdBQUFBQkpSVTVFcmtKZ2dnPT0iLA0KICJ4bHMiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQU4xd0FBRGRjQlFpaWJlQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFHVVNVUkJWRGlOalpNeGE5dEFHSWJmeUFlT0FvMWl1RnNFSm1BNTZSUzYyU1pMZmtUSC9JcENPNWJRSVQ4aGU1ZitoQzc5QTdaWEJabzBOaG1rUmNRS3BKQVc0L3Z1dmd6TlhTVGJTWG9nRUo5MDcvTzhKN1R4N1h2NllaTFBUc3U3UHlFQUhCOHBXR3Z4MmdxQ0lCVkNmTno0ZlBiajc5YWJWcmpianRGb0JIaC9xTURNTDI0bUl1UjVqcUlvemtWUi9nN2Z0ZmR4WGN4aG1hSDFEb2pvVllNNGpwRmwyWUVnWTNCN2IyQWZxY3dNWnNad09BUUFLS1V3bTgzOFJxVVV1dDB1bUJuR0dBaERCREpQblYzQVlERHdzeVJKYW5SWGtZZ2dpQXlxWitZQ3B0T3BKMWN0bkFFQWFLMGhqQ1d2WHcxSmtxUkdydDQ3ZzhjS0J0Wnk3U0V6WXpRYTFlaEtxWlVxUkFSaGpJR3BDTGlBZnIvdlo1MU9wMFplQ3FDYXdib1huMXZlb0hvR3ptQThIdnVabEJJQVVKWWxwSlMreWxQQW1xL1E2L1ZXaU10Vi9nWFErZ3JPUUVycHlYRWNJd3pEMVFxYUNFRkRQR3ZneU10MElrSWdXOXZ6bSt3blNHdFl5ejdncFd1eFdDQk5Vd2docnNUYnZmakx4YS84NUhKMHNRa0FYM1gwWHo5VHM5bWNSRkgwNlFGSXNUeDU3UU1aeVFBQUFBQkpSVTVFcmtKZ2dnPT0iLA0KICJwbCI9PiJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFaaVMwZEVBUDhBL3dEL29MMm5rd0FBQUFsd1NGbHpBQUFOMXdBQURkY0JRaWliZUFBQUFzQkpSRUZVT011VjA4dHJYSFVVd1BIdjczZnZ6SjFINTNIbEptUFN0RTJ0ZHRFbVhWaGZ6VlNxa05wU2hDQ2xDeWtGbDI2S0cvc1hkRnR3NWNLbC9obENEUVFWYlNqVnpsaGtaaUNUS2laakp6V1RlZDdmNzl4N3V3ZzB1QkRzMlI3TzV6emdxUFgxOVlzaWNpZU80ek84UUdpdEg3cXUrN2xhVzF0N09EOC92MWlwVk5CYS82L2lPSTdwZERxMDIrMmFhNHhaek9aeURJWkR0TlpvclZHQTBocWxGR3EvSFNwSlVFb0JrQ1FKUVJEUWFEUVdkUlJGYUtXZUo4VUtlNzB1WWkzajBaQS8yNzhoSnR5SGxRS2xjQndIeDNHSW9naFhSRUFwdE5ZWVkyZzNmNlg3K0h1T243N01YcS9EYUhlRGJHR0tJS2hncldYUTN5SGxGVGlVenlNaXVOWmFsTmFFa3dsN3ZTNkZ2R1hxN0FXOE5LUjBobEwrS0dhd3laTkVZU1k5dnJ6OUtVc1hyMUJkL2dSckxXNFVSWWd4ZERwL0VENTloQ1FKbzQwdU00ZVBZQ2Q5bE5ZNFRvcWR4eit3M1hwQTlZMVhtVHZ4TnA2WFBWaGhQQjZ4MGJoUE90emsvaThOSHQzN2p1TW5YbUVtS0RDY0pJU0RwN3g1NFJMYm03L2pWNmFZTzNhS1lyR0lpS0JGQkdNTWc5NE9YMy8xRGU5ZXZzSDF6NzRBdDh6ZG4vN20yN3YzS0I5NW5RYy8vNGliemxJNXVVeTVWTUp4blAwYmlBaWowWUJXYlozRmQ4NXo2c3dTbVV5R3MwdVgyUDZyemUyYkgvSCsxWnZrYzRmSVpMTVVpajZlNTVFa3lRRmdKbU9pT09HREQ2K1R5K1h3UEErbEZLTitsL1B2bldQMjhERUtoU0p4SEJQSE1kYmFmd05wTDhOYnl4OGo0eWNZWTBpbjB6aU9neDhjcFZBc0lTSllhN0hXSWlKRVVZUlM2Z0I0ZVdhT1hDNURFZ3Npd25BNEpJNWpDcVdYT0gzdUdtS0Z3V0JBcTlYaW45MWRabWRuTVdGNEFCU0xSY3BsSHhIN2ZIeWxGTDd2TXowOVRSaUc5UHQ5dHJhMldGbFpvVmFyNGZ2K1B1QzZibU4xZGZYa3dzSUNxVlRxUHg5SUtVVzFXcVhiN1JJRUFmVjZIZGQxRzI0K243L1ZiRGJ2MU92MTExN2tuVDNQYTVaS3BWdlBBTlBLV3ZPb0ZUb3BBQUFBQUVsRlRrU3VRbUNDIiwNCiAiaHRhY2Nlc3MiPT4iaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQVhOU1IwSUFyczRjNlFBQUFBWmlTMGRFQVA4QS93RC9vTDJua3dBQUFBbHdTRmx6QUFBTjF3QUFEZGNCUWlpYmVBQUFBbUZKUkVGVU9NdVYwODlMVkZFWXh2SHZ2WE91TXpVNjl6WmpscFdsK1N0empCVExDQW9salNMNnNRaURWaTJDTmhGQlNkdHdGU0sxckwrZ29DQm9hUWFHSkJXVFNPTlVOcE9UbFpGVFFWWnEwNTF6N21raEthUUd2dkF1ejRmbk9mQWFzVmlzVFVyWjdYbmVOcFl4cG1uR2hSQVhqZjcrL25oUklGYUhPVWw0UlJNRjRWMklTQWh0Z0lHeDZHUFA4OGhrTW95TmpRMEwxM1hyOGdvOFBxZUcrRHFVeGhrYm9laG9GSDlUTlViWXdUREZva2drRWlHWlROWUpwUlJPeVVITTlEZEdIbnprU1N4RFZkOGtWWHNTaEE5WFliVTA0TE5EQ3dDbEZFb3BUQ2tsUHFzRXUrSWs1V3Nxc1h3aDdreUV1WGxYTW5GcGdGelhiZHhVR3EzMWdwVlM0bXR2Yjc5Y1dscUtZWWN3TnpnWTc2YXh4aFdEbUl4TVN6YSsrRWxvK0NYYUZwaVZ4YURuL3lXZFRtTXFwV1pGTklHZEZVVFBsWEdnK2hPSFBEOWZ6SFYwL1pwaDhKSEY3eXM5NUhwNzhKUTdsMkN1d253c3NGcTJzNnF6bWVhYVVVNnJINFNOelZ3enZqR1FYRXUyOHpHcTd5SGF5ODFWK0FmUWFHMWd0dXdnY1BVSUZWWHZPYVk4SEtPRzZ5cExiNktleVJ1dlVCL0cwWjYzRkRDN3ZzWW93ZlBOYkhIZTBpcnp5Wm5sM01xemVQTzBDT1BlTS9EVS93RzB4ankrbCtDcEtQWCtVWGJMTUpOZWxxR3BERi9pVTJSbnN2OEh0TlpvRDhTWlZrcE9GTk5tdlNacU9QUnQrc245eGdpZnN5NVNTc1JmWUtuUlRoRHJ3ajdLQzUrei83dWZmcnVRckQyRHN6SXdEK1J5T1lRUVN5SnFkVDdCczAwMHVKTFM2ZlVNeDJMbzNHd0NVd2lSak1manVLNjdkQld0MFg0ZnRoMmdyTGlZcmJXMURDY1NDQ0dTSWhnTWRxUlNxZTVFSWxHNW5IUDIrLzBwMjdZNy9nRFB6WWowSDRvNUZRQUFBQUJKUlU1RXJrSmdnZz09IiwNCik7DQoNCi8qIGZ1bmN0aW9ucyAqLw0KIGZ1bmN0aW9uIHo3eigkaSwgJGs9JycpeyBnbG9iYWwgJGNvbmZpZzsgJG09YXJyYXkoInZlcnNpb24iLCJhdXRoIiwiZGVmYXVsdF92YXJzIiwiYmFubmVkIiwidXNlX2J1ZmZlciIsInZpc3VhbCIsInJlZ19pbnRlcmVzdGluZyIsInJlZ19iYWQiKTsgaWYoIUBpc3NldCgkbVskaV0pKSByZXR1cm4gJyc7IHJldHVybiAoJGshPScnKSA/IChAaXNzZXQoJGNvbmZpZ1skbVskaV1dWyRrXSkgPyAkY29uZmlnWyRtWyRpXV1bJGtdIDogJycpIDogKEBpc3NldCgkY29uZmlnWyRtWyRpXV0pID8gJGNvbmZpZ1skbVskaV1dIDogJycpOyB9IGZ1bmN0aW9uIHozZygkaSwkdCl7IGlmKCR0IT0nZCcmJiR0IT0nZicmJiR0IT0nbCcmJiR0IT0nZScpIHJldHVybiAnJzsgaWYoJHQ9PSdsJ3x8JHQ9PSdlJykgJHQ9J2YnOyAkY3M9ejlxKCdyZWdfc2VsZicpOyAkY2k9ejlxKCdyZWdfaW50ZXJlc3RpbmcnKTsgJGNiPXo5cSgncmVnX2JhZCcpOyBpZigkdD09J2YnICYmICRpPT1AYmFzZW5hbWUoX19GSUxFX18pKSByZXR1cm4gKCgkY3MhPScnKSA/ICcgc3R5bGU9ImNvbG9yOiAnLiRjcy4nIjsnIDogJycpOyBmb3JlYWNoKHo3eignNicsJHQpIGFzICRyKXsgaWYoQHByZWdfbWF0Y2goJy8nLiRyLicvaScsICRpKSkgcmV0dXJuICgoJGNpIT0nJykgPyAnIHN0eWxlPSJjb2xvcjogJy4kY2kuJyI7JyA6ICcnKTsgfSBmb3JlYWNoKHo3eignNycsJHQpIGFzICRyKXsgaWYoQHByZWdfbWF0Y2goJy8nLiRyLicvaScsICRpKSkgcmV0dXJuICgoJGNiIT0nJykgPycgc3R5bGU9ImNvbG9yOiAnLiRjYi4nIjsnIDogJycpOyB9IH0gZnVuY3Rpb24gejZoKCl7ICRpPUBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpOyBpZigkaSE9JycpeyAkZj1AYXJyYXlfbWFwKCd0cmltJyxAZXhwbG9kZSgnLCcsJGkpKTsgQHNvcnQoJGYpOyByZXR1cm4gJGY7IH1lbHNleyByZXR1cm4gYXJyYXkoKTsgfSB9IGZ1bmN0aW9uIHo5cSgkaSl7IGdsb2JhbCAkY29sb3Jfc2tpbjsgJGE9ejd6KCc1JywgJGNvbG9yX3NraW4pOyByZXR1cm4gQGlzc2V0KCRhWyRpXSkgPyAkYVskaV0gOiAnJzsgfSBmdW5jdGlvbiB6OXMoKXsgaWYoQGlzc2V0KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsgaWYoQHByZWdfbWF0Y2goJy8nLkBpbXBsb2RlKCd8Jywgejd6KDMsICJhZ2VudHMiKSkuJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgeyBAaGVhZGVyKHo3eigzLCAic2VuZF9oZWFkZXIiKSk7IGV4aXQoMCk7IH0gfSB9IHo5cygpOyBmdW5jdGlvbiB6OXkoJGssICR3PScnLCR1PTApeyBnbG9iYWwgJGxhbmc7ICRsPXo3eigyLCAibGFuZ3VhZ2UiKTsgJHIgPSAnJzsgaWYoIWlzc2V0KCRsYW5nWyRsXVska10pKSByZXR1cm4gIj8iOyAkciA9ICRsYW5nWyRsXVska107IGlmKCR3IT09JycpeyBpZihAaXNfYXJyYXkoJHcpKXsgZm9yKCRpPTA7ICRpPEBjb3VudCgkdyk7ICRpKyspeyBpZihAaXNzZXQoJHdbJGldKSkgJHIgPSBAc3RyX3JlcGxhY2UoIlslIi4oJGkrMSkuIiVdIiwgJHdbJGldLCAkcik7IH0gfSBlbHNlIHsgJHIgPSBAc3RyX3JlcGxhY2UoIlslMSVdIiwgJHcsICRyKTsgfSB9IHJldHVybiAoJHU/IEBzdHJ0b3VwcGVyKCRyKSA6ICRyKTsgfSBmdW5jdGlvbiB6OXAoKXsgJG89Jyc7IGlmKEBkZWZpbmVkKCdQSFBfT1MnKSl7ICRvPVBIUF9PUzsgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdwaHBfdW5hbWUnKSYmQGlzX2NhbGxhYmxlKCdwaHBfdW5hbWUnKSl7ICRvPUBwaHBfdW5hbWUoJ3MnKTsgfSByZXR1cm4gIUBlbXB0eSgkbyk/JG86IipOSVgiOyB9IGZ1bmN0aW9uIHo2digpeyAkaT1AZ2V0X2luY2x1ZGVkX2ZpbGVzKCk7IHJldHVybiAoQGNvdW50KCRpKT4wKSA/ICgkaVswXSE9X19GSUxFX18pIDogMDsgfSBmdW5jdGlvbiB6OWEoJGQsJHM9JzonKXsgaWYoJGQhPScnKXsgaWYoIUBzdHJzdHIoJGQsJHMpKSByZXR1cm4gYXJyYXkoJGQpOyByZXR1cm4gQGFycmF5X21hcCgndHJpbScsQGV4cGxvZGUoJHMsJGQpKTsgfSByZXR1cm4gYXJyYXkoKTsgfSBmdW5jdGlvbiB6OWkoJGkpeyBmb3JlYWNoKGFycmF5KCJhIj0+IjQiLCJlIj0+IjMiLCJvIj0+IjAiLCJzIj0+IjUiLCJsIj0+IjEiLCJ0Ij0+IjciKSBhcyAkaz0+JHYpeyAkaT1Ac3RyX3JlcGxhY2UoYXJyYXkoJGssQHN0cnRvdXBwZXIoJGspKSwkdiwkaSk7IH0gcmV0dXJuICRpOyB9IGZ1bmN0aW9uIHozbigpeyAkd3d3ZGlyPWZhbHNlOyBpZihAaXNzZXQoJF9TRVJWRVJbIlNDUklQVF9OQU1FIl0pKSB7ICRzbj16MWooJF9TRVJWRVJbIlNDUklQVF9OQU1FIl0pOyBpZihAcmVhbHBhdGgoJHNuKSl7ICRzcD16MWooQHJlYWxwYXRoKCRzbikpOyB9IGVsc2UgeyAkc3A9ejFqKEByZWFscGF0aChfX0ZJTEVfXykpOyB9ICR3d3dkaXI9ejFrKEBzdWJzdHIoJHNwLDAsQHN0cnBvcygkc3AsJHNuKSkpOyB9IHJldHVybiAkd3d3ZGlyOyB9IGZ1bmN0aW9uIHo2aigpeyBnbG9iYWwgJHdpbjsgJHM9Jy8nOyAkdG1wID0gYXJyYXkoKTsgJHRwID0gYXJyYXkoKTsgJHRuID0gYXJyYXkoJy90bXAvJywnL2Rldi9zaG0vJywnL3Zhci90bXAvJyk7ICR0dyA9IGFycmF5KCIlV0lORElSL3RlbXAvIik7ICR0aSA9IGFycmF5KEBpbmlfZ2V0KCdzZXNzaW9uLnNhdmVfcGF0aCcpLCBAaW5pX2dldCgndXBsb2FkX3RtcF9kaXInKSk7ICR0ZSA9IGFycmF5KCdUTVAnLCAnVE1QRElSJywgJ1RFTVAnKTsgaWYoJHdpbil7IGZvcmVhY2goJHR3IGFzICR0KSAkdHBbXSA9ICR0OyB9IGVsc2UgeyBmb3JlYWNoKCR0biBhcyAkdCkgJHRwW10gPSAkdDsgfSBpZihAaXNzZXQoJF9FTlYpKXsgZm9yZWFjaCgkdGUgYXMgJHQpeyBpZighQGVtcHR5KCRfRU5WWyR0XSkpICR0cFtdID0gQHJlYWxwYXRoKCRfRU5WWyR0XSk7IH0gfSBmb3JlYWNoKCR0aSBhcyAkdCl7IGlmKCFAZW1wdHkoJHQpKSAkdHBbXSA9ICR0OyB9ICRiPXo5YShAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykpOyBpZihAY291bnQoJGIpPjApeyBmb3JlYWNoKCRiIGFzICR0KXsgaWYoIWVtcHR5KCR0KSkgJHRwW10gPSAkdDsgfSB9ICR0cFtdPUByZWFscGF0aChAZGlybmFtZShfX0ZJTEVfXykpOyBmb3IoJGk9MDsgJGkgPCBAY291bnQoJHRwKTsgJGkrKyl7IGlmKCFAZW1wdHkoJHRwWyRpXSkpeyAkcD1Ac3RyX3JlcGxhY2UoJ1xcJywgJHMsICR0cFskaV0pOyBpZihAc3Vic3RyKCRwLCAtMSwgMSkgIT0gJHMpeyAkcCAuPSAkczsgfSBpZighQGluX2FycmF5KCRwLCAkdG1wKSl7ICRmPUBtZDUoQHVuaXFpZChAdGltZSgpKSk7ICRmcD1AZm9wZW4oJHAuJGYsInciKTsgaWYoJGZwKXsgQGZjbG9zZSgkZnApOyBpZihAZmlsZV9leGlzdHMoJHAuJGYpKXsgQHVubGluaygkcC4kZik7ICR0bXBbXSA9IEB0cmltKCRwKTsgfSB9IH0gfSB9IHJldHVybiAoQGNvdW50KCR0bXApPjApID8gJHRtcCA6IGFycmF5KCIuLyIpOyB9IGZ1bmN0aW9uIHo5bygkZil7IGdsb2JhbCAkbml4LCAkc2hfZXhlYzsgJHI9Jyc7IGlmKHo3ZSgnZm9wZW4nKSYmejdlKCdmZW9mJykmJno3ZSgnZmdldHMnKSYmejdlKCdmZW9mJykmJno3ZSgnZmNsb3NlJykgJiYgKCRmcCA9IEBmb3BlbigkZiwgJ3InKSkhPT1mYWxzZSl7IHdoaWxlKCFAZmVvZigkZnApKXskciAuPSBAZmdldHMoJGZwKTt9OyBAZmNsb3NlKCRmcCk7IH1lbHNlaWYoejdlKCdmb3BlbicpJiZ6N2UoJ2ZyZWFkJykmJno3ZSgnZmNsb3NlJykmJno3ZSgnZmlsZXNpemUnKSYmKCRmcCA9IEBmb3BlbigkZiwgJ3InKSkhPT1mYWxzZSl7ICRyID0gQGZyZWFkKCRmcCwgQGZpbGVzaXplKCRmKSk7IEBmY2xvc2UoJGZwKTsgfWVsc2VpZigkbml4ICYmICRzaF9leGVjKXsgJHI9ejllKCdjYXQgIicuJGYuJyIgMj4vZGV2L251bGwnLDApOyB9ZWxzZWlmKHo3ZSgnZmlsZScpJiYoJGZsID0gQGZpbGUoJGYpKSl7IGZvcmVhY2ggKCRmbCBhcyAkbCkgeyAkciAuPSAkbDsgfSB9ZWxzZWlmKHo3ZSgnZmlsZV9nZXRfY29udGVudHMnKSl7ICRyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmKTsgfWVsc2VpZih6N2UoJ3JlYWRmaWxlJykpeyAkciA9IEByZWFkZmlsZSgkZik7IH1lbHNlaWYoejdlKCdoaWdobGlnaHRfZmlsZScpKXsgJHIgPSBAaGlnaGxpZ2h0X2ZpbGUoJGYpOyB9ZWxzZWlmKHo3ZSgnc2hvd19zb3VyY2UnKSl7ICRyID0gQHNob3dfc291cmNlKCRmKTsgfSByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejl1KCRmLCR0PScnKXsgZ2xvYmFsICR0ZW1wZGlyOyAkcz0nJzsgaWYoISR0KSAkdD1AdGVtcG5hbSgkdGVtcGRpciwiY29weXRlbXAiKTsgaWYoQGNvcHkoImNvbXByZXNzLnpsaWI6Ly8iLiRmLCR0KSl7ICRzPXo5bygkdCk7IEB1bmxpbmsoJHQpOyB9IHJldHVybiAkczsgfSBmdW5jdGlvbiB6OXQoJHQsJHM9JycpeyBpZih6N2UoJ2ZvcGVuJykmJno3ZSgnZndyaXRlJykmJno3ZSgnZmNsb3NlJykmJigkZj1AZm9wZW4oJHQsIndiIikpIT09ZmFsc2UpeyBAZndyaXRlKCRmLCRzKTsgQGZjbG9zZSgkZik7IH1lbHNlaWYoejdlKCdmb3BlbicpJiZ6N2UoJ2ZwdXRzJykmJno3ZSgnZmNsb3NlJykmJigkZj1AZm9wZW4oJHQsIndiIikpIT09ZmFsc2UpeyBAZnB1dHMoJGYsJHMpOyBAZmNsb3NlKCRmKTsgfWVsc2VpZih6N2UoJ2ZpbGVfcHV0X2NvbnRlbnRzJykpeyByZXR1cm4gQGZpbGVfcHV0X2NvbnRlbnRzKCR0LCRzKTsgfSBlbHNlIHsgcmV0dXJuIDA7IH0gcmV0dXJuIDE7IH0gZnVuY3Rpb24gejdlKCRmKXsgcmV0dXJuIChAZnVuY3Rpb25fZXhpc3RzKCRmKSAmJiBAaXNfY2FsbGFibGUoJGYpICYmICFAaW5fYXJyYXkoJGYsIHo2aCgpKSkgPyAxIDogMDsgfSBmdW5jdGlvbiB6M3goJHYpIHsgaWYoJHYgPT0gJycpIHJldHVybiAnbm8gdmFsdWUnOyBpZihAaXNfYm9vbCAoICR2ICkpIHJldHVybiAkdmFsdWUgPyAnVFJVRScgOiAnRkFMU0UnOyBpZigkdiA9PT0gbnVsbCkgcmV0dXJuICdOVUxMJzsgaWYoQGlzX29iamVjdCgkdikpICR2ID0oYXJyYXkpICR2OyBpZihAaXNfYXJyYXkoJHYpKSB7IEBvYl9zdGFydCAoKTsgcHJpbnRfciAoICR2ICk7ICR2ID0gQG9iX2dldF9jb250ZW50cyAoKTsgQG9iX2VuZF9jbGVhbiAoKTsgfSByZXR1cm4gKHN0cmluZykgJHY7IH0gZnVuY3Rpb24gejZrKCRpKXsgcmV0dXJuICh6N2UoJ2VzY2FwZXNoZWxsYXJnJykpID8gQGVzY2FwZXNoZWxsYXJnKCRpKSA6ICRpOyB9IGZ1bmN0aW9uIHo5ZSgkYywkaD0xKSB7ICRyID0gJyc7IGlmICghZW1wdHkoJGMpKXsgaWYoejdlKCdzaGVsbF9leGVjJykpIHsgJHIgPSBAc2hlbGxfZXhlYygkYyk7IH0gZWxzZWlmKHo3ZSgnc3lzdGVtJykpIHsgQG9iX3N0YXJ0KCk7IEBzeXN0ZW0oJGMpOyAkciA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2VuZF9jbGVhbigpOyB9IGVsc2VpZih6N2UoJ3Bhc3N0aHJ1JykpIHsgQG9iX3N0YXJ0KCk7IEBwYXNzdGhydSgkYyk7ICRyID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfZW5kX2NsZWFuKCk7IH0gZWxzZWlmKHo3ZSgnZXhlYycpKXsgQGV4ZWMoJGMsJHIpOyAkciA9IEBqb2luKCJcbiIsICRyKTsgfSBlbHNlaWYoejdlKCdwb3BlbicpICYmIEBpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkYywiciIpKSkgeyBpZih6N2UoJ2ZyZWFkJykgJiYgejdlKCdmZW9mJykpeyB3aGlsZSghQGZlb2YoJGYpKSB7ICRyIC49IEBmcmVhZCgkZiwxMDI0KTsgfSB9ZWxzZWlmKHo3ZSgnZmdldHMnKSAmJiB6N2UoJ2Zlb2YnKSl7IHdoaWxlKCFAZmVvZigkZikpIHsgJHIgLj0gQGZnZXRzKCRmLDEwMjQpOyB9IH0gQHBjbG9zZSgkZik7IH0gZWxzZWlmKHo3ZSgncHJvY19vcGVuJykgJiYgQGlzX3Jlc291cmNlKCRmID0gQHByb2Nfb3BlbigkYyxhcnJheSgxID0+IGFycmF5KCJwaXBlIiwgInciKSksJHApKSkgeyBpZih6N2UoJ2ZyZWFkJykgJiYgejdlKCdmZW9mJykpeyB3aGlsZSghQGZlb2YoJHBbMV0pKSB7JHIgLj0gQGZyZWFkKCRwWzFdLCAxMDI0KTt9IH1lbHNlaWYoejdlKCdmZ2V0cycpICYmIHo3ZSgnZmVvZicpKXsgd2hpbGUoIUBmZW9mKCRwWzFdKSkgeyRyIC49IEBmZ2V0cygkcFsxXSwgMTAyNCk7fSB9IEBwcm9jX2Nsb3NlKCRmKTsgfSB9IGVsc2UgeyAkciA9IHo2YygkYyk7IH0gcmV0dXJuICgkaD9AaHRtbHNwZWNpYWxjaGFycygkcik6JHIpOyB9IGZ1bmN0aW9uIHo2YygkYykgeyBnbG9iYWwgJHdpbiwkdGVtcGRpcjsgJHIgPSAnJzsgaWYgKCFlbXB0eSgkYykpIHsgaWYoISR3aW4peyBpZihleHRlbnNpb25fbG9hZGVkKCdwZXJsJykpeyBAb2Jfc3RhcnQoKTsgJHA9bmV3IHBlcmwoKTsgJHAtPmV2YWwoInN5c3RlbSgnJGMnKSIpOyAkciA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2VuZF9jbGVhbigpOyB9ZWxzZWlmKHo3ZSgncGNudGxfZXhlYycpICYmIHo3ZSgncGNudGxfZm9yaycpKSB7ICRyID0gJ1t+XSBCbGluZCBDb21tYW5kIEV4ZWN1dGlvbiB2aWEgW3BjbnRsX2V4ZWNdXG5cbic7ICRvPSR0ZW1wZGlyLnVuaXFpZCgncGNudGwnKTsgJHBpZCA9IEBwY250bF9mb3JrKCk7IGlmICgkcGlkID09IC0xKSB7ICRyIC49ICdbLV0gQ291bGQgbm90IGZvcmsuIEV4aXQnOyB9IGVsc2VpZiAoJHBpZCkgeyAkciAuPSAoQHBjbnRsX3dpZmV4aXRlZCgkc3RhdHVzKSA/ICdbK10gRG9uZSEgQ29tbWFuZCAiJy4kYy4nIiBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQuJyA6ICdbLV0gRXJyb3IuIEluY29ycmVjdCBDb21tYW5kLicpOyB9IGVsc2UgeyAkYyA9IGFycmF5KCIgLWUgJ3N5c3RlbShcIiRjID4gJG9cIiknIik7IGlmKEBwY250bF9leGVjKCcvdXNyL2Jpbi9wZXJsJywkYykpIGV4aXQoMCk7IGlmKEBwY250bF9leGVjKCcvdXNyL2xvY2FsL2Jpbi9wZXJsJywkYykpIGV4aXQoMCk7IGRpZSgpOyB9ICRyPXo5bygkbyk7IEB1bmxpbmsoJG8pOyB9IH0gZWxzZSB7ICRvPSR0ZW1wZGlyLnVuaXFpZCgnTkonKTsgaWYoZXh0ZW5zaW9uX2xvYWRlZCgnZmZpJykpIHsgJGE9bmV3IGZmaSgiW2xpYj0na2VybmVsMzIuZGxsJ10gaW50IFdpbkV4ZWMoY2hhciAqQVBQLGludCBTVyk7Iik7ICRyPSRhLT5XaW5FeGVjKCJjbWQuZXhlIC9jICIuejZrKCRjKS4iID5cIiRvXCIiLDApOyB3aGlsZSghQGZpbGVfZXhpc3RzKCRvKSlzbGVlcCgxKTsgJHI9ejlvKCRvKTsgfSBlbHNlaWYoZXh0ZW5zaW9uX2xvYWRlZCgnd2luMzJzZXJ2aWNlJykpIHsgJHM9dW5pcWlkKCdOSicpOyBAd2luMzJfY3JlYXRlX3NlcnZpY2UoYXJyYXkoJ3NlcnZpY2UnPT4kcywnZGlzcGxheSc9PiRzLCdwYXRoJz0+J2M6XFx3aW5kb3dzXFxzeXN0ZW0zMlxcY21kLmV4ZScsJ3BhcmFtcyc9PiIvYyAiLno2aygkYykuIiA+XCIkb1wiIikpOyBAd2luMzJfc3RhcnRfc2VydmljZSgkcyk7IEB3aW4zMl9zdG9wX3NlcnZpY2UoJHMpOyBAd2luMzJfZGVsZXRlX3NlcnZpY2UoJHMpOyB3aGlsZSghQGZpbGVfZXhpc3RzKCRvKSlzbGVlcCgxKTsgJHI9ejlvKCRvKTsgfSBlbHNlaWYoZXh0ZW5zaW9uX2xvYWRlZCgid2luMzJzdGQiKSkgeyBAd2luX3NoZWxsX2V4ZWN1dGUoJy4uXFwuLlxcLi5cXC4uXFwuLlxcLi5cXC4uXFx3aW5kb3dzXFxzeXN0ZW0zMlxcY21kLmV4ZSAvYyAnLno2aygkYykuJyA+ICInLiRvLiciJyk7IHdoaWxlKCFAZmlsZV9leGlzdHMoJG8pKXNsZWVwKDEpOyAkcj16OW8oJG8pOyB9IGVsc2UgeyAkYSA9IG5ldyBDT00oIldTY3JpcHQuU2hlbGwiKTsgJGEtPlJ1bignYzpcXHdpbmRvd3NcXHN5c3RlbTMyXFxjbWQuZXhlIC9jICcuejZrKCRjKS4nID4gIicuJG8uJyInKTsgJHI9ejlvKCRvKTsgfSBAdW5saW5rKCRvKTsgfSB9IHJldHVybiAkcjsgfSBmdW5jdGlvbiB6MTBlKCl7IGxpc3QoJHUsJHMpPUBleHBsb2RlKCIgIixAbWljcm90aW1lKCkpOyByZXR1cm4gKChmbG9hdCkkdSsoZmxvYXQpJHMpOyB9IGZ1bmN0aW9uIHo0bSgkYywkaSl7ICRhPWFycmF5KCAnMCc9PmFycmF5KCdjb250YWluZXInLCdsb2dpbicsJ2Zvb3RlcicsJ2hlYWRuZm8nLCdxbCcsJ25hdicsJ3NpbmZvJywndGZpbHRlcicsJ3RhaGV4JywncGhwaW5mbycpLCAnMSc9PmFycmF5KCdsaXN0MScsJ2xpc3QyJyksICcyJz0+YXJyYXkoJ2xlcnJvcicsJ3RvcGNmJywndG9wdCcsJ3RvcGMnLCd0ZGZvb3RlcicsJ3RkcWwnLCd0ZHNpbmZvJywndGRsc2gxJywndGRsc2gyJywndGRsc2YnLCd0ZGxzZm4nLCd0ZGZpbHRlcicsJ3RkaGVhZCcsJ3RkcGgnLCd0ZHBsJywndGRsYmwnLCd0aGV4MScsJ3RoZXgyJywndGhleDMnLCd0ZGxzZjEnLCd0ZG1haWwnKSwgJzMnPT5hcnJheSgic2Nyb2xsIiwic2VsZWN0b3IiLCJkaXZscyIsImR3aWR0aCIsImJhcmJnIiwiYmFyZmlsIiksICc0Jz0+YXJyYXkoJ3NpemUxJywnc2l6ZTInLCdzaXplMycsJ3NpemU0Jywnc2l6ZTUnLCdzaXplNicsJ3NpemU3Jywnc2l6ZTgnLCdzaXplOScsJ3NpemUxMCcpLCAnNSc9PmFycmF5KCdsaW5rcycsJ3NsaW5rcycsJ2J1dHRvbicsJ2hlYWQnLCdxbDEnLCdxbDInLCdidXQxJywnYnV0MicsJ2J1dDMnLCdmaW1nJywnZGlybGlzdCcsJ2ZpbGVsaXN0JywnZnRhY3RpdmUnLCdmdGNvbXBhdCcsJ2Z0b3RoZXInLCdxbGJhY2snLCdtYnV0MScsJ21idXQyJywnYWN0YnV0JyksICc2Jz0+YXJyYXkoJ2NvbnNvbGUnLCd0Z2VuZXJpYycsJ3RlZGl0JywndHhtYWlsJywndHNxbDEnLCd0c3FsMicsJ3RpbmonKSwgKTsgcmV0dXJuIChAaXNzZXQoJGFbJGldWyRjXSkgPyAkYVskaV1bJGNdIDogJycpOyB9IGZ1bmN0aW9uIHo3dygkYT0nJywkYz0nJywkcz0nJyl7IHJldHVybiAnPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIicuKCgkYSE9JycpPyAnIGFsaWduPSInLiRhLiciJzogJycpLigoJGMhPScnKT8nIGNsYXNzPSInLno0bSgkYywnMCcpLiciJzogJycpLigoJHMhPScnKT96MTByKCRzKTonJykuJz4nLiJcbiI7fSBmdW5jdGlvbiB6OW0oJGM9JycsJHM9JycpeyByZXR1cm4gejd3KCcnLCRjLCRzKTsgfSBmdW5jdGlvbiB6N3IoJGM9JycsJHM9JycpeyByZXR1cm4gejd3KCdsZWZ0JywkYywkcyk7IH0gZnVuY3Rpb24gejdkKCRjPScnLCRzPScnKXsgcmV0dXJuIHo3dygncmlnaHQnLCRjLCRzKTsgfSBmdW5jdGlvbiB6N2coJGM9JycsJHM9JycpeyByZXR1cm4gejd3KCdjZW50ZXInLCRjLCRzKTsgfSBmdW5jdGlvbiB6MTBxKCl7IHJldHVybiAnPC90YWJsZT4nLiJcbiI7IH0gZnVuY3Rpb24gejEwdygkaSwkYz0nJywkcz0nJyl7IHJldHVybiB6OW0oJGMsJHMpLiRpLnoxMHEoKTsgfSBmdW5jdGlvbiB6N2goJGksJGM9JycsJHM9JycpeyByZXR1cm4gejdyKCRjLCRzKS4kaS56MTBxKCk7IH0gZnVuY3Rpb24gejdzKCRpLCRjPScnLCRzPScnKXsgcmV0dXJuIHo3ZCgkYywkcykuJGkuejEwcSgpOyB9IGZ1bmN0aW9uIHo3YSgkaSwkYz0nJywkcz0nJyl7IHJldHVybiB6N2coJGMsJHMpLiRpLnoxMHEoKTsgfSBmdW5jdGlvbiB6N3koKXsgcmV0dXJuICc8L3RyPicuIlxuIjsgfSBmdW5jdGlvbiB6NmQoJHYsJGM9JycsJGlkPScnKXsgcmV0dXJuICc8dHIgdmFsaWduPSInLiR2LiciJy4oKCRpZCE9JycpPycgaWQ9IicuJGlkLiciJzonJykuKCgkYyE9JycpPycgY2xhc3M9IicuejRtKCRjLCcxJykuJyInOiAnJykuJz4nLiJcbiI7IH0gZnVuY3Rpb24gejd0KCRpLCR2LCRjPScnLCRpZD0nJyl7IHJldHVybiB6NmQoJHYsJGMsJGlkKS4kaS56N3koKTsgfSBmdW5jdGlvbiB6OWQoJGksJGM9JycsJGlkPScnKXsgcmV0dXJuIHo3dCgkaSwidG9wIiwkYywkaWQpOyB9IGZ1bmN0aW9uIHo3dSgkaSwkYz0nJywkaWQ9JycpeyByZXR1cm4gejd0KCRpLCJtaWRkbGUiLCRjLCRpZCk7IH0gZnVuY3Rpb24gejdwKCRpLCRjPScnLCRpZD0nJyl7IHJldHVybiB6N3QoJGksImJvdHRvbSIsJGMsJGlkKTsgfSBmdW5jdGlvbiB6N28oJGM9JycsJGlkPScnKXsgcmV0dXJuIHo2ZCgidG9wIiwkYywkaWQpOyB9IGZ1bmN0aW9uIHo2ZigkYz0nJywkaWQ9JycpeyByZXR1cm4gejZkKCJtaWRkbGUiLCRjLCRpZCk7IH0gZnVuY3Rpb24gejVjKCRjPScnLCRpZD0nJyl7IHJldHVybiB6NmQoImJvdHRvbSIsJGMsJGlkKTsgfSBmdW5jdGlvbiB6NWIoKXsgcmV0dXJuIHo5ZCh6OWMoJyZuYnNwOycpKTsgfSBmdW5jdGlvbiB6NnMoKXsgcmV0dXJuIHoxMHcoejViKCkpOyB9IGZ1bmN0aW9uIHo1eigkYT0nJywkYz0nJywkcz0nJyl7IHJldHVybiAnPGRpdicuKCgkYSE9JycpPycgYWxpZ249IicuJGEuJyInOicnKS4oKCRjIT0nJyk/JyBjbGFzcz0iJy56NG0oJGMsJzMnKS4nIic6JycpLigoJHMhPScnKT96MTByKCRzKTonJykuJz4nOyB9IGZ1bmN0aW9uIHo1aCgpeyByZXR1cm4gJzwvZGl2Pic7IH0gZnVuY3Rpb24gejVrKCRhPScnLCRjPScnLCRzPScnKXsgcmV0dXJuICc8dGQnLigoJGEhPScnKSA/ICcgYWxpZ249IicuJGEuJyInOicnKS4oKCRjIT0nJyk/JyBjbGFzcz0iJy56NG0oJGMsJzInKS4nIic6ICcnKS4oKCRzIT0nJyk/ejEwcigkcyk6JycpLic+Jy4iXG4iOyB9IGZ1bmN0aW9uIHo3aigkYz0nJywkcz0nJyl7IHJldHVybiB6NWsoJycsJGMsJHMpOyB9IGZ1bmN0aW9uIHo1bCgkYz0nJywkcz0nJyl7IHJldHVybiB6NWsoJ2xlZnQnLCRjLCRzKTsgfSBmdW5jdGlvbiB6NW0oJGM9JycsJHM9JycpeyByZXR1cm4gejVrKCdyaWdodCcsJGMsJHMpOyB9IGZ1bmN0aW9uIHo2cSgkYz0nJywkcz0nJyl7IHJldHVybiB6NWsoJ2NlbnRlcicsJGMsJHMpOyB9IGZ1bmN0aW9uIHo0YygkYT0nJywkbiwkYz0nJywkcz0nJyl7IHJldHVybiAnPHRkIGNvbHNwYW49IicuJG4uJyInLigoJGEhPScnKSA/ICcgYWxpZ249IicuJGEuJyInOicnKS4oKCRjIT0nJyk/JyBjbGFzcz0iJy56NG0oJGMsJzInKS4nIic6ICcnKS4oKCRzIT0nJyk/ejEwcigkcyk6JycpLic+Jy4iXG4iOyB9IGZ1bmN0aW9uIHo2aSgkbiwkYz0nJywkcz0nJyl7IHJldHVybiB6NGMoJycsJG4sJGMsJHMpOyB9IGZ1bmN0aW9uIHo0aygkbiwkYz0nJywkcz0nJyl7IHJldHVybiB6NGMoJ2xlZnQnLCRuLCRjLCRzKTsgfSBmdW5jdGlvbiB6NGwoJG4sJGM9JycsJHM9JycpeyByZXR1cm4gejRjKCdyaWdodCcsJG4sJGMsJHMpOyB9IGZ1bmN0aW9uIHo0eigkbiwkYz0nJywkcz0nJyl7IHJldHVybiB6NGMoJ2NlbnRlcicsJG4sJGMsJHMpOyB9IGZ1bmN0aW9uIHo3ZigpeyByZXR1cm4gJzwvdGQ+Jy4iXG4iOyB9IGZ1bmN0aW9uIHo5YygkaSwkYz0nJywkcz0nJyl7IHJldHVybiB6N2ooJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo3aygkaSwkYz0nJywkcz0nJyl7IHJldHVybiB6NWwoJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo2eigkaSwkYz0nJywkcz0nJyl7IHJldHVybiB6NW0oJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo2bCgkaSwkYz0nJywkcz0nJyl7IHJldHVybiB6NnEoJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo2eCgkaSwkbiwkYz0nJywkcz0nJyl7IHJldHVybiB6NmkoJG4sJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo2eSgkaSwkbiwkYz0nJywkcz0nJyl7IHJldHVybiB6NGsoJG4sJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo2ZSgkaSwkbiwkYz0nJywkcz0nJyl7IHJldHVybiB6NGwoJG4sJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo2cigkaSwkbiwkYz0nJywkcz0nJyl7IHJldHVybiB6NHooJG4sJGMsJHMpLiRpLno3ZigpOyB9IGZ1bmN0aW9uIHo1dygkbj0nJywkYywkcj0wLCR3PScnLCRoPScnKSB7IHJldHVybiAnPHRleHRhcmVhJy4oJG4hPScnPycgaWQ9IicuJG4uJyIgbmFtZT0iJy4kbi4nIic6JycpLicgY2xhc3M9IicuejRtKCRjLCc2JykuJyInLigoJHchPScnfHwkaCE9JycpPycgc3R5bGU9IicuKCR3IT0nJz8nd2lkdGg6Jy4kdy4ncHg7JzonJykuKCRoIT0nJz8naGVpZ2h0OicuJGguJ3B4Oyc6JycpLiciJzonJykuKCRyPycgcmVhZG9ubHknOicnKS4nPic7IH0gZnVuY3Rpb24gejVxKCkgeyByZXR1cm4gJzwvdGV4dGFyZWE+JzsgfSBmdW5jdGlvbiB6OWsoJHQ9JycsJG49JycpeyByZXR1cm4gJzxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIiJy4oKCR0IT0nJykgPyAnIHRhcmdldD0iX2JsYW5rIicgOiAnJykuKCgkbiE9JycpPyAnIG5hbWU9IicuJG4uJyIgaWQ9IicuJG4uJyInOicnKS4nPic7IH0gZnVuY3Rpb24gejZiKCRjPScnLCR0PScnKXsgcmV0dXJuICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIicuKCgkdCE9JycpID8gJyB0YXJnZXQ9Il9ibGFuayInIDogJycpLigoJGMhPScnKT8nIGNsYXNzPSInLno0bSgkYywnMycpLiciJzogJycpLic+JzsgfSBmdW5jdGlvbiB6N2woKXsgcmV0dXJuICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4nOyB9IGZ1bmN0aW9uIHo3aSgkdSwkdD0nJywkbT0nR0VUJyl7IHJldHVybiAnPGZvcm0gbWV0aG9kPSInLiRtLiciIGFjdGlvbj0iJy4kdS4nIicuKCgkdCE9JycpID8gJyB0YXJnZXQ9Il9ibGFuayInIDogJycpLic+JzsgfSBmdW5jdGlvbiB6OWwoKXsgcmV0dXJuICc8L2Zvcm0+JzsgfSBmdW5jdGlvbiB6MTByKCRpKXsgJHU9YXJyYXkoKTsgaWYoIUBpc19udW1lcmljKCRpKSkgcmV0dXJuICcnOyAkYT1hcnJheSgnYm9yZGVyLXRvcDowOycsJ2JvcmRlci1ib3R0b206MDsnLCdib3JkZXItbGVmdDowOycsJ2JvcmRlci1yaWdodDowOycsJ3dpZHRoOiA1MCU7Jywnd2lkdGg6IDMzJTsnLCAnYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjREREREREOycsJ3RleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Jywnd2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7JywnbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsnKTsgJHI9Jyc7IGlmKEBzdHJsZW4oJGkpPjEpeyBmb3IoJG49MDsgJG48QHN0cmxlbigkaSk7ICRuKyspeyAkYz0kaVskbl07IGlmKEBpc3NldCgkYVskY10pICYmICFAaXNzZXQoJHVbJGNdKSl7ICRyIC49ICRhWyRjXTsgJHVbJGNdPScnOyB9IH0gfSBlbHNlIHsgaWYoQGlzc2V0KCRhWyRpXSkpICRyIC49ICRhWyRpXTsgfSByZXR1cm4gKCRyIT0nJykgPyAnIHN0eWxlPSInLiRyLiciJyA6ICRyOyB9IGZ1bmN0aW9uIHo4eigkaSl7IHJldHVybiAoQGlzX2Jvb2woJGkpID8gKCgkaSkgPyAnMScgOiAnMCcpIDogJGkpOyB9IGZ1bmN0aW9uIHo5eigkbj0xKXsgcmV0dXJuIEBzdHJfcmVwZWF0KCI8YnI+Iiwkbik7IH0gZnVuY3Rpb24gejl4KCRuPTEpeyByZXR1cm4gQHN0cl9yZXBlYXQoIiZuYnNwOyIsJG4pOyB9IGZ1bmN0aW9uIHo2dCgkdCwkYz0nJyl7IHJldHVybiAnPHNwYW4gY2xhc3M9IicuJGMuJyI+Jy4kdC4nPC9zcGFuPic7IH0gZnVuY3Rpb24gejR5KCR0KXsgcmV0dXJuIHo2dCgkdCwibnciKTsgfSBmdW5jdGlvbiB6OGsoJHQpeyByZXR1cm4gejZ0KCR0LCJuciIpOyB9IGZ1bmN0aW9uIHo1cCgkdCl7IHJldHVybiB6NnQoJHQsInJ3Iik7IH0gZnVuY3Rpb24gejlqKCl7IHJldHVybiAnIG9uZm9jdXM9InRoaXMuc2VsZWN0KCk7IiBvbm1vdXNlb3Zlcj0idGhpcy5zZWxlY3QoKTsiIG9ubW91c2VvdXQ9InRoaXMuc2VsZWN0KCk7Iic7IH0gZnVuY3Rpb24gejR0KCRuLCR2KXsgZ2xvYmFsICR7JG59OyByZXR1cm4gJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iJy4kbi4nIiB2YWx1ZT0iJy4kdi4nIicuKChAaXNzZXQoJHskbn0pICYmICR7JG59PT0kdikgPyAnIGNoZWNrZWQnIDogJycpLic+JzsgfSBmdW5jdGlvbiB6OWYoJG4sJHY9JzEnLCRvPScnLCRpPScnKXsgZ2xvYmFsICR7JG59OyByZXR1cm4gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IicuJGkuJyIgbmFtZT0iJy4kbi4nIiB2YWx1ZT0iJy4kdi4nIiBzdHlsZT0idmVydGljYWwtYWxpZ246IG1pZGRsZTsiJy4oKCRvPT0nJykgPyAoKCR7JG59PT0kdikgPyAnIGNoZWNrZWQnIDogJycpIDogKCgkbykgPyAnIGNoZWNrZWQnOiAnJykpLic+JzsgfSBmdW5jdGlvbiB6NncoJGYsJHQpeyByZXR1cm4gJzxsYWJlbCBmb3I9IicuJGYuJyI+Jy4kdC4nPC9sYWJlbD4nOyB9IGZ1bmN0aW9uIHo1dSgkaSwkdCwkbiwkdj0nMScsJG89JycpeyByZXR1cm4gejlmKCRuLCR2LCRvLCRpKS56NncoJGksJHQpOyB9IGZ1bmN0aW9uIHo5ZygkbiwkYz0nJywkcz0nJyl7IHJldHVybiAnPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9IicuJG4uJyIgaWQ9IicuJG4uJyInLigoJGMhPScnKT8nIGNsYXNzPSInLno0bSgkYywnNCcpLiciJzonJykuKCgkcyE9JycpID8gejEwcigkcyk6JycpLic+JzsgfSBmdW5jdGlvbiB6OGcoJHYsJGM9JycsJG89JycpeyByZXR1cm4gJzxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJy56OHooJHYpLiciJy4oKCRjIT0nJyk/JyBjbGFzcz0iJy56NG0oJGMsJzQnKS4nIic6JycpLigoJG8hPScnKSA/IHo5aigpIDogJycpLic+JzsgfSBmdW5jdGlvbiB6NnUoJG4sJHYsJGM9JycsJG89JycsJHM9JycpeyByZXR1cm4gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInLiRuLiciIHZhbHVlPSInLno4eigkdikuJyInLigoJGMhPScnKT8nIGNsYXNzPSInLno0bSgkYywnNCcpLiciJzonJykuKCRzIT0nJz8nICcuKEBpc19udW1lcmljKCRzKT96MTByKCRzKTokcyk6JycpLigoJG8hPScnKSA/IHo5aigpIDogJycpLic+JzsgfSBmdW5jdGlvbiB6NXkoJG4sJHYsJGM9JycsJG89JycsJHM9JycpeyBnbG9iYWwgJHskbn07IHJldHVybiAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IicuJG4uJyIgdmFsdWU9IicuKChAaXNzZXQoJHskbn0pICYmICFAZW1wdHkoJHskbn0pKSA/ICR7JG59IDogKChAaXNzZXQoJF9TRVNTSU9OWyRuXSkpID8gJF9TRVNTSU9OWyRuXSA6IHo4eigkdikpKS4nIicuKCgkYyE9JycpPycgY2xhc3M9IicuejRtKCRjLCc0JykuJyInOicnKS4oJHMhPScnPycgJy4oQGlzX251bWVyaWMoJHMpP3oxMHIoJHMpOiRzKTonJykuKCgkbyE9JycpID8gejlqKCkgOiAnJykuJz4nOyB9IGZ1bmN0aW9uIHo2cCgkbiwkdiwkYz0nJywkbz0nJyl7IHJldHVybiAnPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSInLiRuLiciIHZhbHVlPSInLno4eigkdikuJyInLigoJGMhPScnKT8nIGNsYXNzPSInLno0bSgkYywnNCcpLiciJzonJykuKCgkbyE9JycpID8gejlqKCkgOiAnJykuJz4nOyB9IGZ1bmN0aW9uIHo1ZSgkbiwkdiwkYz0nJywkbz0nJyl7IGdsb2JhbCAkeyRufTsgcmV0dXJuICc8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9IicuJG4uJyIgdmFsdWU9IicuKChAaXNzZXQoJHskbn0pICYmICFAZW1wdHkoJHskbn0pKSA/ICR7JG59IDogejh6KCR2KSkuJyInLigoJGMhPScnKT8nIGNsYXNzPSInLno0bSgkYywnNCcpLiciJzonJykuKCgkbyE9JycpID8gejlqKCkgOiAnJykuJz4nOyB9IGZ1bmN0aW9uIHo2bygkbiwkaSwkYz0nJywkcz0nJyl7IHJldHVybiAnPGlucHV0IHR5cGU9InN1Ym1pdCIgJy4oJG4hPScnPycgbmFtZT0iJy4kbi4nIic6JycpLid2YWx1ZT0iJy56OHooJGkpLiciJy4oKCRjIT0nJyk/JyBjbGFzcz0iJy56NG0oJGMsJzUnKS4nIic6JycpLigoJHMhPScnKT8oQGlzX251bWVyaWMoJHMpPyB6MTByKCRzKSA6ICRzKTonJykuJz4nOyB9IGZ1bmN0aW9uIHo4YigkaSwkYz0nJywkcz0nJyl7IHJldHVybiB6Nm8oJycsJGksJGMsJHMpOyB9IGZ1bmN0aW9uIHoxcygkdCwkaSwkYSwkYz0nJyl7IHJldHVybiAnPGlucHV0IHR5cGU9IicuJHQuJyIgdmFsdWU9IicuJGkuJyIgJy4oJHQ9PSdzdWJtaXQnPydvbnN1Ym1pdCc6J29uY2xpY2snKS4nPSInLiRhLiciJy4oKCRjIT0nJyk/JyBjbGFzcz0iJy56NG0oJGMsJzUnKS4nIic6JycpLic+JzsgfSBmdW5jdGlvbiB6OHYoJGksJGEsJGM9JycpeyByZXR1cm4gejFzKCdzdWJtaXQnLCAkaSwgJGEsICRjKTsgfSBmdW5jdGlvbiB6OG0oJGksJGEsJGM9JycpeyByZXR1cm4gejFzKCdidXR0b24nLCRpLCAkYSwgJGMpOyB9IGZ1bmN0aW9uIHo4aCgkaSwkYT0nJywkYz0nJywkZT0nJyl7IGdsb2JhbCAkdXNlX2ltYWdlczsgcmV0dXJuICgkdXNlX2ltYWdlcyA/ICc8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iP2FjdD1pJmFtcDtpbWc9Jy4kaS4oKCRlIT0nJyk/ICcmYW1wO2V4ZT0xJzonJykuJyIgdmFsdWU9IicuJGEuJyIgYWx0PSInLiRhLiciJy4oKCRjIT0nJyk/JyBjbGFzcz0iJy56NG0oJGMsJzUnKS4nIic6JycpLic+JyA6IHoxeCgoJGk9PSdzbWFsbF9kaXInfHwkaT09J3NtYWxsX2hvbWUnPydkJzonZicpKSk7IH0gZnVuY3Rpb24gejJjKCRpcCl7ICRpcD1AcHJlZ19yZXBsYWNlKCcvW1x0XHNcclxuXS8nLCcnLCRpcCk7IGlmKCFAaXNfbnVtZXJpYyhAc3RyX3JlcGxhY2UoIi4iLCIiLCRpcCkpfHxAc3Vic3RyX2NvdW50KCRpcCwiLiIpIT0zKXsgcmV0dXJuICJmYWlsZWQiOyB9ZWxzZXsgJG9jdGV0cz1AZXhwbG9kZSgiLiIsJGlwKTsgJGRlYz0oJG9jdGV0c1swXSoxPDwyNCkrKCRvY3RldHNbMV0qMTw8MTYpKygkb2N0ZXRzWzJdKjE8PDgpKygkb2N0ZXRzWzNdKTsgcmV0dXJuICRkZWM7IH0gfSBmdW5jdGlvbiB6MnooJGlwKXsgJGlwPUBwcmVnX3JlcGxhY2UoJy9bXHRcc1xyXG5dLycsJycsJGlwKTsgaWYoIUBpc19udW1lcmljKEBzdHJfcmVwbGFjZSgiLiIsIiIsJGlwKSl8fEBzdWJzdHJfY291bnQoJGlwLCIuIikhPTMpeyByZXR1cm4gImZhaWxlZCI7IH1lbHNleyAkZGVjPXoyYygkaXApOyAkaGV4PSIweCIuQGRlY2hleCgkZGVjKTsgcmV0dXJuICRoZXg7IH0gfSBmdW5jdGlvbiB6MXUoJGlwLCRvY3Q9IiIpeyAkaXA9QHByZWdfcmVwbGFjZSgnL1tcdFxzXHJcbl0vJywnJywkaXApOyBpZighQGlzX251bWVyaWMoQHN0cl9yZXBsYWNlKCIuIiwiIiwkaXApKXx8QHN1YnN0cl9jb3VudCgkaXAsIi4iKSE9Myl7IHJldHVybiAiZmFpbGVkIjsgfWVsc2V7ICRvY3RldHM9QGV4cGxvZGUoIi4iLCRpcCk7IGZvcigkaT0wOyRpPDQ7JGkrKyl7ICRkZWNvY3Q9QGRlY29jdCgkb2N0ZXRzWyRpXSk7ICRsZW49QHN0cmxlbigkZGVjb2N0KTsgJGxlYWRpbmc9KDktJGxlbik7ICRvY3QuPUBzdHJfcmVwZWF0KCIwIiwkbGVhZGluZykuJGRlY29jdC4iLiI7IH0gJG9jdD1Ac3Vic3RyKCRvY3QsMCxAc3RybGVuKCRvY3QpLTEpOyByZXR1cm4gJG9jdDsgfSB9IGZ1bmN0aW9uIHo5digkbiwkdj1OVUxMKXsgZ2xvYmFsICR7JG59OyByZXR1cm4gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicuJG4uJyIgdmFsdWU9IicuKCgkdj09TlVMTCkgPyAoKEBpc3NldCgkeyRufSkgJiYgIUBlbXB0eSgkeyRufSkpID8gJHskbn0gOicnKTogejh6KCR2KSkuJyInLic+JzsgfSBmdW5jdGlvbiB6N20oJG4sJHY9TlVMTCl7IGdsb2JhbCAkeyRufTsgcmV0dXJuICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInLiRuLiciIHZhbHVlPSInLigoJHY9PU5VTEwpID8gKChAaXNzZXQoJHskbn0pICYmICFAZW1wdHkoJHskbn0pKSA/ICR7JG59IDogKChAaXNzZXQoJF9TRVNTSU9OWyRuXSkpID8gJF9TRVNTSU9OWyRuXSA6ICcnKSkgOiB6OHooJHYpKS4nIicuJz4nOyB9IGZ1bmN0aW9uIHo1aigpeyByZXR1cm4gKHo3ZSgnZ2V0X2N1cnJlbnRfdXNlcicpICYmIEBnZXRfY3VycmVudF91c2VyKCkhPScnKSA/IEBnZXRfY3VycmVudF91c2VyKCkgOiAnVW5rbm93bic7IH0gZnVuY3Rpb24gejJhKCRhPWFycmF5KCkpeyAkcj0nJzsgZm9yZWFjaCgkYSBhcyAkaz0+JHYpeyAkci49KEBpc19udW1lcmljKCRrKSA/IHo5digkdikgOiB6OXYoJGssJHYpKTsgfSByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejhmKCRuLCR2PU5VTEwpeyBnbG9iYWwgJHskbn07IHJldHVybiAoKCR2PT1OVUxMKSA/ICgoQGlzc2V0KCR7JG59KSAmJiAhQGVtcHR5KCR7JG59KSkgPyAkeyRufSA6JycpOiB6OHooJHYpKTsgfSBmdW5jdGlvbiB6MngoJGE9YXJyYXkoKSl7IGlmKEBpc3NldCgkYVsnYmFja2YnXSkpIHJldHVybiB6MmEoJGEpOyAkcj0nJzsgZm9yZWFjaCgkYSBhcyAkaz0+JHYpeyAkci49KEBpc19udW1lcmljKCRrKSA/ICR2Lic9Jy5AdXJsZW5jb2RlKHo4ZigkdikpIDogJGsuJz0nLkB1cmxlbmNvZGUoejhmKCRrLCR2KSkpLicmJzsgfSBpZigkciE9JycpICRyPXo5dignbWVyZ2VkJyxAYmFzZTY0X2VuY29kZSgkcikpOyByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejhxKCRhLCR0PScnLCR1PTApeyByZXR1cm4gKCR1P3o3bCgpOno5aygkdCkpLnoyeCgkYSk7IH0gZnVuY3Rpb24gejV4KCRhLCRpLCR0PScnKXsgcmV0dXJuIHo4cSgkYSwkdCkuJGkuejlsKCk7IH0gZnVuY3Rpb24gejVuKCRhLCRpKXsgcmV0dXJuIHo4cSgkYSwnJywxKS4kaS56OWwoKTsgfSBmdW5jdGlvbiB6N24oJGkpeyByZXR1cm4gJzxzcGFuIHN0eWxlPSJmb250LXNpemU6IDlweDsgY29sb3I6ICMzMzMzMzM7IGZvbnQtd2VpZ2h0OiBib2xkOyI+Jy4kaS4nJm5ic3A7IDwvc3Bhbj4nOyB9IGZ1bmN0aW9uIHo1dCgkaSl7IHJldHVybiB6NnooKCFAZW1wdHkoJGkpP3o3bigkaSk6JGkpLCcxNScpOyB9IGZ1bmN0aW9uIHo1digkbCwkaSl7IHJldHVybiB6NmwoejduKCRsKS4kaSwnMScpOyB9IGZ1bmN0aW9uIHoxMHQoJGgsJG4sJGM9JycsJHQ9JycpeyByZXR1cm4gJzxhIGhyZWY9IicuJGguJyInLigoJGMhPScnKSA/ICcgY2xhc3M9IicuejRtKCRjLCc1JykuJyInOicnKS4oKCR0IT0nJyk/JyB0YXJnZXQ9Il9ibGFuayInOicnKS4nPicuJG4uJzwvYT4nOyB9IGZ1bmN0aW9uIHo2YSgkZil7IGdsb2JhbCAkbml4LCAkc2hfZXhlYzsgJG09Jyc7IGlmKHo3ZSgnbWQ1X2ZpbGUnKSYmQG1kNV9maWxlKCRmKSE9PWZhbHNlKXsgJG09QG1kNV9maWxlKCRmKTsgfSBlbHNlaWYoJG5peCAmJiAkc2hfZXhlYyl7ICRtPXo5ZSgnbWQ1c3VtICInLiRmLiciJywwKTsgaWYoQHN0cnN0cigkbSwnICcpKSAkbT1Ac3Vic3RyKCRtLDAsQHN0cnBvcygkbSwnICcpKTsgfSByZXR1cm4gKEBzdHJsZW4oJG0pPT0zMikgPyAkbSA6IGZhbHNlOyB9IGZ1bmN0aW9uIHozYygpeyBnbG9iYWwgJGxpbnV4LCRzYWRkciwgJGR0b3RhbCwkZGZyZWUsJGJzYWZlLCRib3BlbmRpciwkYm15c3FsLCRibXNzcWwsJGJvcmFjbGUsJGJwb3N0Z3JlcywkYmN1cmwsJHVzZV9pbWFnZXM7ICRhPUBleHBsb2RlKCIgIixAZ2V0ZW52KCJTRVJWRVJfU09GVFdBUkUiKSk7ICRiPUBleHBsb2RlKCItIixAcGhwdmVyc2lvbigpKTsgaWYoQGlzc2V0KCRhWzBdKSkgeyAkd3d3PSRhWzBdOyB9IGVsc2UgeyAkd3d3PSJVbmtub3duIjsgfSAkd3d3IC49ejl4KDEpLno1eChhcnJheSgnYWN0Jz0+J3BocGluZm8nLCdkJyksejhiKCJQSFAvIi4kYlswXSwnMCcpKTsgZWNobyB6MTB3KHo3dSh6N2soejdpKCdodHRwOi8vd2hvaXMuZG9tYWludG9vbHMuY29tLycuJHNhZGRyLCcxJywnUE9TVCcpLno4Yih6OXkoIjQiKSwnMCcpLno5bCgpLno5eCg1KS56N2koJ2h0dHA6Ly93d3cuZG9tYWludG9vbHMuY29tL3Jlc2VhcmNoL3RyYWNlcm91dGUvP3F1ZXJ5PScuJHNhZGRyLCcxJywnUE9TVCcpLno4Yih6OXkoIjUiKSwiMCIpLno5bCgpLCc2JywnNScpLno2eih6NXgoYXJyYXkoJ2FjdCc9PidzZWxmcmVtb3ZlJywnZCcpLHo4Yih6OXkoIjYiKSwnMCcpKS56OXgoNSkuejV4KGFycmF5KCdhY3QnPT4nbG9nb3V0JywnZCcpLHo4Yih6OXkoIjciKSwnMCcpKSwnNicsJzUnKSksJzYnKTsgZWNobyB6MTB3KCB6N3UoejZsKHo5eSgiOCIpLCcyJywnMicpLigoJGxpbnV4KT96Nmwoejl5KCI5IiksJzInKTonJykuejZsKHo5eSgiMSIpLCcyJykuejZsKHo5eSgiMTAiKSwnMicpLno2bCh6OXkoIjExIiksJzInKS56Nmwoejl5KCIxMiIpLCcyJykuejZsKHo5eSgiMTMiKSwnMicpLno2bCh6OXkoIjE0IiksJzInKS56Nmwoejl5KCIxNSIpLCcyJykuejZsKHo5eSgiMTYiKSwnMicpLno2bCh6OXkoIjE3IiksJzInKS56Nmwoejl5KCIxOCIpLCcyJykpLiB6N3UoejZsKHo5cCgpLCczJywnMicpLigoJGxpbnV4KT96NmwoQHBocF91bmFtZSgncicpLCczJyk6JycpLno2bCh6NWooKSwnMycpLno2bCgkZHRvdGFsLicgLyAnLiRkZnJlZSwnMycpLno2bCgkd3d3LCczJykuejZsKCgkYnNhZmU/ejZ0KHo5eSgiMTkiKSwnbnInKTp6NnQoejl5KCIyMCIpLCdydycpKSwnMycpLno2bCgoJGJvcGVuZGlyP3o2dCh6OXkoIjIxIiksJ25yJyk6ejZ0KHo5eSgiNDI0IiksJ3J3JykpLCczJykuejZsKCgkYmN1cmw/ejZ0KHo5eSgiMjEiKSwncncnKTp6OXkoIjIyIikpLCczJykuejZsKCgkYm15c3FsP3o2dCh6OXkoIjIxIiksJ3J3Jyk6ejl5KCIyMiIpKSwnMycpLno2bCgoJGJtc3NxbD96NnQoejl5KCIyMSIpLCdydycpOno5eSgiMjIiKSksJzMnKS56NmwoKCRib3JhY2xlP3o2dCh6OXkoIjIxIiksJ3J3Jyk6ejl5KCIyMiIpKSwnMycpLno2bCgoJGJwb3N0Z3Jlcz96NnQoejl5KCIyMSIpLCdydycpOno5eSgiMjIiKSksJzMnKSkgLCczJyk7IH0gZnVuY3Rpb24gejN6KCRsb2dpbj0wKXsgZ2xvYmFsICRhY3QsJHVzZV9pbWFnZXMsJHNoX2V4ZWMsJHNhZmVfZXhlYywkZnQsJG5vZ3JhZGllbnQ7IGVjaG8gJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPg0KPGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sIj4NCicuKCR1c2VfaW1hZ2VzPyc8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ij9hY3Q9aSZhbXA7aW1nPWV4ZSI+JzonJykuJw0KJy4oKCEkbG9naW4pPyAnPHRpdGxlPlsgUkMtU0hFTEwgdicuejd6KCcwJykuKCFAZW1wdHkoJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0pID8gJyAtICcuJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl06JycpLighQGVtcHR5KCRfU0VSVkVSWyJTRVJWRVJfQUREUiJdKSA/ICcgLSAnLiRfU0VSVkVSWyJTRVJWRVJfQUREUiJdOicnKS4nIF08L3RpdGxlPicgOiAnPHRpdGxlPicuejl5KCIwIikuJzwvdGl0bGU+JykuJw0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmJvZHksIHRhYmxlLCB0ciwgdGQsIGRpdiwgc2VsZWN0LCBpbnB1dCwgdGV4dGFyZWEsIHByZSwgY29kZSB7IGZvbnQ6IDEwMCUgJy56OXEoImZvbnRmYW0iKS4nOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0NCnRkLCBkaXYgeyBtYXgtd2lkdGg6ICcuejd6KCc1Jywid2lkdGgiKS4ncHg7IH0NCmlucHV0LCBzZWxlY3QsIHRleHRhcmVhIHsgYm9yZGVyOiAwOyBwYWRkaW5nOiAwOyB9DQppbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSB7IC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyAtbXMtYm94LXNpemluZzogYm9yZGVyLWJveDsgfQ0KaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIgeyBib3JkZXI6IDA7cGFkZGluZzogMDsgfQ0KYm9keSB7IGJhY2tncm91bmQtY29sb3I6ICcuejlxKCJib2R5YmciKS4nOyBmb250LWZhbWlseTogJy56OXEoImZvbnRmYW0iKS4nICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OyBjb2xvcjogJy56OXEoImZvbnRjb2xvciIpLic7fQ0KKjpmb2N1cyB7b3V0bGluZTogbm9uZTt9DQouYnV0MSwgLmJ1dDIsIC5idXQzLCAuYWN0YnV0LCAuYnV0MTphY3RpdmUsIC5idXQyOmFjdGl2ZSwgLmJ1dDM6YWN0aXZlIC5hY3RidXQ6YWN0aXZlIHsgYm9yZGVyOiAxcHggc29saWQgI2NjY2NjYzsgbWFyZ2luLWxlZnQ6IDFweDsgdGV4dC1zaGFkb3c6IDFweCAxcHggMnB4ICNmZmZmZmY7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi5idXQxLCAuYnV0MiwgLmJ1dDMsIC5hY3RidXQgeyAnLnoyeSgiI0Y1RjVGNSIsIiNFMEUwRTAiKS4nIH0NCi5idXQxOmhvdmVyLCAuYnV0Mjpob3ZlciwgLmJ1dDM6aG92ZXIsIC5hY3RidXQ6aG92ZXIgeyAnLnoyeSgiI0UwRTBFMCIsIiNGNUY1RjUiKS4nIGN1cnNvcjogcG9pbnRlcjsgfQ0KLmJ1dDEgeyB3aWR0aDogMjhweDsgaGVpZ2h0OiAxOHB4OyBmb250LXNpemU6IDEwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQouYnV0MiB7IGNvbG9yOiAjNEY0RjRGOyBwYWRkaW5nOiAwIDEwcHggMCAxMHB4OyBoZWlnaHQ6IDIwcHg7IGZvbnQtc2l6ZTogMTBweDsgfQ0KLmFjdGJ1dCB7IGNvbG9yOiAjNEY0RjRGOyBwYWRkaW5nOiAwIDEwcHggMCAxMHB4OyBoZWlnaHQ6IDE4cHg7IGZvbnQtc2l6ZTogMTBweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfQ0KJy4oKCRsb2dpbikgPyAnDQoubG9naW4geyBiYWNrZ3JvdW5kOiAnLno5cSgidGFibGViZyIpLic7IGJvcmRlcjogMXB4IHNvbGlkICcuejlxKCJ0YWJsZWJvcmRlciIpLic7IC1tb3otYm94LXNoYWRvdzogJy56OXEoInRhYmxlc2hhZG93IikuJyAwIDAgOHB4OyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA4cHggJy56OXEoInRhYmxlc2hhZG93IikuJzsgYm94LXNoYWRvdzogMCAwIDhweCAnLno5cSgidGFibGVzaGFkb3ciKS4nOyBtYXJnaW4tdG9wOiAxNTBweDsgcGFkZGluZzogMTBweDsgdGV4dC1hbGlnbjogbGVmdDsgfQ0KLmxvZ2luIHRkIHsgcGFkZGluZzogMDsgfQ0KLmxvZ2luIGlucHV0IHsgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7IGNvbG9yOiAjMzMzMzMzOyBtYXJnaW46IDFweDsgbWFyZ2luLXJpZ2h0OiAwOyBoZWlnaHQ6MjBweDsgd2lkdGg6MTUwcHg7IGZvbnQtc2l6ZTogMTBweDsgdGV4dC1zaGFkb3c6IDFweCAxcHggNXB4ICNkZGRkZGQ7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi5sZXJyb3IgeyBjb2xvcjogJy56OXEoJ2VycmNvbG9yJykuJzsgcGFkZGluZy1ib3R0b206IDEwcHggIWltcG9ydGFudDsgfQ0KJyA6ICcNCi5jb250YWluZXIgeyBiYWNrZ3JvdW5kOiAnLno5cSgidGFibGViZyIpLic7IHdpZHRoOiAnLno3eignNScsIndpZHRoIikuJ3B4OyBib3JkZXI6IDFweCBzb2xpZCAnLno5cSgidGFibGVib3JkZXIiKS4nOyAtbW96LWJveC1zaGFkb3c6ICcuejlxKCJ0YWJsZXNoYWRvdyIpLicgMCAwIDhweDsgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgOHB4ICcuejlxKCJ0YWJsZXNoYWRvdyIpLic7IGJveC1zaGFkb3c6IDAgMCA4cHggJy56OXEoInRhYmxlc2hhZG93IikuJzsgfQ0KZm9ybSB7IGRpc3BsYXk6IGlubGluZTsgfQ0KbGFiZWwgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfQ0KYSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KLmxpbmtzLCAubGlua3M6YWN0aXZlLCAubGlua3M6dmlzaXRlZCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBjb2xvcjogJy56OXEoInRsaW5rY29sb3IiKS4nOyB0ZXh0LXNoYWRvdzogMXB4IDFweCAzcHggJy56OXEoInRsaW5rc2hhZG93IikuJzsgcGFkZGluZzogMDsgZm9udC1zaXplOiAxMHB4OyBmb250LXdlaWdodDpub3JtYWw7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHZlcnRpY2FsLWFsaWduOiBpbmhlcml0ICFpbXBvcnRhbnQ7IH0NCi5saW5rczpob3ZlciB7IGNvbG9yOiAnLno5cSgidGxpbmtjb2xvcmhvdmVyIikuJzsgY3Vyc29yOiBwb2ludGVyOyB9DQouc2xpbmtzIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGNvbG9yOiAnLno5cSgnZGlyY29sb3InKS4nOyBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IH0NCi5zbGlua3M6aG92ZXIgeyBjdXJzb3I6IHBvaW50ZXI7IH0NCi5zaW5mbyB7IHdpZHRoOiAxMDAlOyB9DQoudGRzaW5mbyB7ICcuejJ5KHo5cSgidGJhcmJnMSIpLHo5cSgidGJhcmJnMiIpKS4nIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAnLno5cSgidGJhcmJvcmRlcmIiKS4nOyBib3JkZXItdG9wOiAxcHggc29saWQgJy56OXEoInRiYXJib3JkZXJ0IikuJzsgcGFkZGluZzogNHB4OyB9DQoudGRzaW5mbyAubGlua3MgeyBmb250LXNpemU6IDlweDsgfQ0KLnRkc2luZm8gc3BhbiB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi50b3BjZiB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi50b3B0IHsgJy56MnkoejlxKCJ0b3BiZzEiKSx6OXEoInRvcGJnMiIpKS4nIGJvcmRlci10b3A6IDFweCBzb2xpZCAnLno5cSgidG9wYm9yZGVyMSIpLic7IGNvbG9yOiAnLno5cSgidG9wY29sb3IiKS4nOyB0ZXh0LXNoYWRvdzogMXB4IDFweCA1cHggJy56OXEoInRvcHNoYWRvdyIpLic7IHBhZGRpbmctdG9wOiAxMHB4OyBmb250LXNpemU6IDlweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi50b3BjIHsgYmFja2dyb3VuZDogJy4oKEBpc3NldCgkbm9ncmFkaWVudCkmJiRub2dyYWRpZW50KT96OXEoInRvcGJnMSIpOno5cSgidG9wYmcyIikpLic7IGNvbG9yOiAnLno5cSgidG9wY29sb3IiKS4nOyBwYWRkaW5nLWJvdHRvbTogMTBweDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQ0KLm5hdiB7ICcuejJ5KCIjZmZmZmZmIiwiI2YzZjNmMyIpLicgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYwZjA7IHBhZGRpbmc6IDJweCAwIDJweCAycHg7IHdpZHRoOiAxMDAlOyB9DQouZm9vdGVyIHsgd2lkdGg6IDEwMCU7IH0NCi50ZGZvb3RlciB7ICcuejJ5KHo5cSgiZm9vdGVyYmcxIiksejlxKCJmb290ZXJiZzIiKSkuJyBib3JkZXItdG9wOiAxcHggc29saWQgJy56OXEoImZvb3RlcmJvcmRlcjEiKS4nOyBwYWRkaW5nOiAzcHg7IGNvbG9yOiAnLno5cSgiZm9vdGVyY29sb3IiKS4nOyB0ZXh0LXNoYWRvdzogMXB4IDFweCA1cHggJy56OXEoImZvb3RlcnNoYWRvdyIpLic7IGZvbnQtc2l6ZTogOXB4OyBmb250LXdlaWdodDogYm9sZDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQ0KLmhlYWRuZm8geyB3aWR0aDogMTAwJTsgfQ0KLnFsIHsgd2lkdGg6IDEwMCU7IH0NCi50ZHFsIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6IDFweCBzb2xpZCAnLno5cSgicWxiZzIiKS4nOyBib3JkZXItYm90dG9tOiAzcHggc29saWQgI0UwRTBFMDsgfQ0KLnFsMSwgLnFsMiwgLnFsYmFjayB7IGZvbnQtc2l6ZTogMTBweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0NCi5xbDEgeyAnLnoyeSgiI2ZlZmVmZSIsIiNFMEUwRTAiLDEpLicgYm9yZGVyOiAxcHggc29saWQgI0VGRUFFRjsgYm9yZGVyLWJvdHRvbTogMDsgY29sb3I6ICMwMzAzMDM7IHdpZHRoOjEwMCU7IGhlaWdodDogMjJweDsgdGV4dC1zaGFkb3c6ICNjY2NjY2MgMnB4IC0xcHggMTBweDsgfQ0KLnFsMiB7ICcuejJ5KHo5cSgicWxiZzEiKSwgejlxKCJxbGJnMiIpLDEpLicgY29sb3I6ICcuejlxKCJxbGNvbG9yIikuJzsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICcuejlxKCJxbGJvcmRlciIpLic7IGJvcmRlci1sZWZ0OiAwOyBib3JkZXItcmlnaHQ6IDA7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRUZFQUVGOyB3aWR0aDoxMDAlOyBoZWlnaHQ6IDIycHg7IHRleHQtc2hhZG93OiAnLno5cSgicWxzaGFkb3ciKS4nIDJweCAtMXB4IDEwcHg7IH0NCi5xbGJhY2sgeyAnLnoyeSh6OXEoInFsYmcxIiksIHo5cSgicWxiZzIiKSwxKS4nIGJvcmRlci10b3A6IDFweCBzb2xpZCAnLno5cSgicWxib3JkZXIiKS4nOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0VGRUFFRjsgY29sb3I6ICcuejlxKCJxbGNvbG9yIikuJzsgd2lkdGg6MTAwJTsgdGV4dC1zaGFkb3c6ICcuejlxKCJxbHNoYWRvdyIpLicgMnB4IC0xcHggMTBweDsgaGVpZ2h0OiAyMnB4OyBjdXJzb3I6IHBvaW50ZXI7IH0NCi5xbDE6aG92ZXIgeyBjdXJzb3I6cG9pbnRlcjsgfQ0KLnFsMjpob3ZlciwgLnFsYmFjazpob3ZlciB7IGNvbG9yOiAnLno5cSgicWxjb2xvcmhvdmVyIikuJzsgY3Vyc29yOiBwb2ludGVyOyB9DQouc2l6ZTEsIC5zaXplMiwgLnNpemUzLCAuc2l6ZTQsIC5zaXplNSwgLnNpemU2LCAuc2l6ZTcsIC5zaXplOCwgLnNpemU5LCAuc2l6ZTEwIHsgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7IGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7IGNvbG9yOiAjMzMzMzMzOyBtYXJnaW46IDFweDsgbWFyZ2luLXJpZ2h0OiAwOyBmb250LXNpemU6IDEwcHg7IHRleHQtc2hhZG93OiAxcHggMXB4IDVweCAjZGRkZGRkOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9DQouc2l6ZTEsIC5zaXplMiwgLnNpemUzLCAuc2l6ZTUsIC5zaXplNiwgLnNpemU3LCAuc2l6ZTgsIC5zaXplOSwgLnNpemUxMCAgeyBoZWlnaHQ6IDIwcHg7fQ0KLnNpemUxIHsgd2lkdGg6IDMwMHB4OyB9DQouc2l6ZTIgeyB3aWR0aDogNjVweDsgfQ0KLnNpemUzIHsgd2lkdGg6IDIwMHB4OyB9DQouc2l6ZTQgeyB3aWR0aDogNjVweDsgaGVpZ2h0OiAxOHB4OyB9DQouc2l6ZTUgeyB3aWR0aDogMTAwcHg7IH0NCi5zaXplNiB7IHdpZHRoOiAxNTBweDsgfQ0KLnNpemU3IHsgd2lkdGg6IDQwcHg7IH0NCi5zaXplOCB7IHdpZHRoOiA5OSU7IG1pbi13aWR0aDogMzcwcHg7IH0NCi5zaXplOSB7IHdpZHRoOiAyMDVweDsgfQ0KLnNpemUxMCB7IHdpZHRoOiA1NTBweDsgfQ0KLmxpc3QxIHsgYmFja2dyb3VuZDogI0YyZjJmMjsgfQ0KLmxpc3QyIHsgYmFja2dyb3VuZDogI0Y1RjVGNTsgfQ0KLmxpc3QzIHsgYmFja2dyb3VuZDogI0UwRTBFMDsgfQ0KLmxpc3QxOmhvdmVyLCAubGlzdDI6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRTBFMEUwOyB9DQoubGlzdDM6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjQ0NDQ0NDOyB9DQoudGRsc2gxLCAudGRsc2gyLCAudGRwaCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXItdG9wOiAxcHggc29saWQgI0RERERERDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0ZGRkZGRjsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQ0NDQ0M7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0NDQ0NDQzsgY29sb3I6ICMzMzMzMzM7IHRleHQtc2hhZG93OiAxcHggMXB4IDNweCAjZmZmZmZmOyBoZWlnaHQ6IDIwcHg7IH0NCi50ZGxzaDEsIC50ZGxzaDIgeyBwYWRkaW5nLWxlZnQ6IDJweDsgcGFkZGluZy1yaWdodDogNXB4OyBtaW4td2lkdGg6IDYwcHg7IGhlaWdodDogMjBweDsgfQ0KLnRkbHNoMSB7IGJvcmRlci1sZWZ0OiAwOyBtaW4td2lkdGg6IDM1MHB4OyB9DQoudGRwaCB7IHBhZGRpbmctbGVmdDogMnB4OyB9DQoudGRwbCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGRkZGQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmZmZmZmY7IHBhZGRpbmc6IDJweDsgbWluLXdpZHRoOiA0MHB4OyBtaW4taGVpZ2h0OiAyMHB4OyB3b3JkLWJyZWFrOiBicmVhay1hbGw7IH0NCi5oZWFkIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlcjowOyBtaW4td2lkdGg6IDEwMCU7IGNvbG9yOiAjMzMzMzMzOyB0ZXh0LXNoYWRvdzogMXB4IDFweCAzcHggI2ZmZmZmZjsgbWFyZ2luOiAwOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZTogMTBweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgdGV4dC1hbGlnbjogbGVmdDsgfQ0KLmhlYWQ6aG92ZXIgeyBjdXJzb3I6IHBvaW50ZXI7IH0NCi50ZGxzaDEsIC50ZGxzaDIsIC50ZHBoIHsgJy56MnkoIiNGNUY1RjUiLCAiI0UwRTBFMCIpLicgaGVpZ2h0OiAyMnB4ICFpbXBvcnRhbnQ7IH0NCi50ZGxzaDE6aG92ZXIsIC50ZGxzaDI6aG92ZXIsIC50ZHBoOmhvdmVyIHsgJy56MnkoIiNmZWZlZmUiLCIjZGRkZGRkIikuJyB9DQoudGRsc2YgeyBwYWRkaW5nLWxlZnQ6IDJweDsgbWluLXdpZHRoOiAzMDBweDsgaGVpZ2h0OiAyMHB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9DQoudGRsc2ZuLCAudGRsc2YxIHsgcGFkZGluZy1sZWZ0OiAycHg7IHBhZGRpbmctcmlnaHQ6IDVweDsgbWluLXdpZHRoOiA2MHB4OyBoZWlnaHQ6IDIwcHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi50ZGxzZjEgeyBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGRkZGRkY7IG1pbi13aWR0aDogMjAwcHg7IH0NCi50ZGhlYWQgeyAnLnoyeSgiI0UwRTBFMCIsIiNlZmVmZWYiLDEpLicgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmM2YzZjM7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwOyBib3JkZXItcmlnaHQ6MDsgY29sb3I6ICMwMzAzMDM7IHBhZGRpbmctbGVmdDogM3B4OyBoZWlnaHQ6IDIwcHg7IGZvbnQtc2l6ZTogOXB4OyBmb250LXdlaWdodDogYm9sZDsgfQ0KLnRkaGVhZCB0ZCwgLnRkbGJsIHsgY29sb3I6ICMzMzMzMzM7IHBhZGRpbmc6IDNweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtc2hhZG93OiAxcHggMXB4IDNweCAjZmZmZmZmOyB9DQoudGRsYmwgeyB3aWR0aDogMTUwcHg7IH0NCi50ZG1haWwgeyBwYWRkaW5nOiAwIDEwcHggMCAxMHB4O30NCmltZyB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi5maW1nIHsgYm9yZGVyOiAwOyBwYWRkaW5nOjA7IHBhZGRpbmctcmlnaHQ6MXB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9DQoudGZpbHRlciB7IHdpZHRoOiAxMDAlOyB9DQoudGRmaWx0ZXIgeyAnLnoyeSgiI2VmZWZlZiIsIiNFMEUwRTAiKS4nIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZmVmZWZlOyBjb2xvcjogIzMzMzMzMzsgcGFkZGluZzogMnB4OyBmb250LXdlaWdodDogYm9sZDsgfQ0KLm5yLCAubncsIC5ydyB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtdGVjb3JhdGlvbjogbm9uZTsgfQ0KLm5yIHsgY29sb3I6ICcuejlxKCdlcnJjb2xvcicpLic7IH0NCi5udyB7IGNvbG9yOiAnLno5cSgnbm9ybWFsY29sb3InKS4nOyB9DQoucncgeyBjb2xvcjogJy56OXEoJ29rY29sb3InKS4nOyB9DQouZGlybGlzdCwgLmZpbGVsaXN0IHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMDsgIHBhZGRpbmc6IDA7IG1pbi13aWR0aDogODAlOyBmb250LXNpemU6IDExcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50OyB9DQouZGlybGlzdCB7IGNvbG9yOiAnLno5cSgnZGlyY29sb3InKS4nOyB9DQouZmlsZWxpc3QgeyBjb2xvcjogJy56OXEoJ25vcm1hbGNvbG9yJykuJzsgfQ0KLmRpcmxpc3Q6aG92ZXIsIC5maWxlbGlzdDpob3ZlciB7IGN1cnNvcjogcG9pbnRlcjsgfQ0KcHJlIHsgYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsgY29sb3I6IzMzMzMzMzsgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQzsgbWFyZ2luLXRvcDowOyBwYWRkaW5nOiA1cHg7IG1heC13aWR0aDogMTAwMHB4OyBtYXgtaGVpZ2h0OiAzNTBweDsgdGV4dC1hbGlnbjogbGVmdDsgb3ZlcmZsb3cteDogYXV0bzsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcCAhaW1wb3J0YW50OyAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgd2hpdGUtc3BhY2U6IC1vLXByZS13cmFwOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IH0NCnByZSBjb2RlIHsgZGlzcGxheTogYmxvY2s7IH0NCi5mdGFjdGl2ZSwgLmZ0Y29tcGF0LCAuZnRvdGhlciB7ICcuejJ5KCIjZjNmM2YzIiwgIiNjY2NjY2MiKS4nIGJvcmRlcjogMXB4IHNvbGlkICNCQkJCQkI7IG1hcmdpbjoycHggMXB4IDJweCAwOyBwYWRkaW5nOiAycHggOHB4IDJweCA4cHg7IGhlaWdodDoyMHB4OyBmb250LXNpemU6IDEwcHggIWltcG9ydGFudDsgfQ0KLmZ0YWN0aXZlOmhvdmVyLCAuZnRjb21wYXQ6aG92ZXIsIC5mdG90aGVyOmhvdmVyIHsgJy56MnkoIiNDQ0NDQ0MiLCAiI0YzRjNGMyIpLicgY3Vyc29yOiBwb2ludGVyOyB9DQouZnRhY3RpdmUgeyAnLnoyeSgiI0NDQ0NDQyIsICIjRjNGM0YzIikuJyBjb2xvcjogIzAwMDAwMDsgfQ0KLmZ0Y29tcGF0IHsgY29sb3I6ICcuejlxKCdva2NvbG9yJykuJzsgfQ0KLmZ0b3RoZXIgeyBjb2xvcjogJy56OXEoJ25vcm1hbGNvbG9yJykuJzsgfQ0KLm1idXQxLCAubWJ1dDIgeyBib3JkZXI6IDFweCBzb2xpZCAjQkJCQkJCOyBtYXJnaW46IDJweCAxcHggMnB4IDA7IHBhZGRpbmc6IDFweCA1cHggMXB4IDVweDsgaGVpZ2h0OiAyMHB4OyBmb250LXNpemU6IDEwcHg7IH0NCi5tYnV0MSB7ICcuejJ5KCIjRjNGM0YzIiwgIiNDQ0NDQ0MiKS4nIH0NCi5tYnV0MiB7ICcuejJ5KCIjQ0NDQ0NDIiwgIiNGM0YzRjMiKS4nIH0NCi5tYnV0MTpob3ZlciwgLm1idXQyOmhvdmVyIHsgJy56MnkoIiNjY2NjY2MiLCAiI2YzZjNmMyIpLicgY3Vyc29yOiBwb2ludGVyOyB9DQouaWZyYW1lIHsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQzsgd2lkdGg6IDk5JTsgIGhlaWdodDogMzAwcHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0NCi5jb25zb2xlIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGNvbG9yOiAjMzMzMzMzOyBib3JkZXI6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDMwMHB4OyB9DQoudGdlbmVyaWMsIC50ZWRpdCwgLnR4bWFpbCB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2NjY2M7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDFweDsgd2lkdGg6IDk5JTsgfQ0KLnRnZW5lcmljIHsgaGVpZ2h0OiAxNTBweDsgfQ0KLnRlZGl0IHsgaGVpZ2h0OiAzMDBweDsgdGV4dC1hbGlnbjogbGVmdDsgfQ0KLnR4bWFpbCB7IG1hcmdpbi10b3A6IDFweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwcHg7IH0NCi50c3FsMSwgLnRzcWwyIHsgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQzsgbWFyZ2luLWxlZnQ6IDFweDsgd2lkdGg6IDIwNXB4OyBoZWlnaHQ6IDYwcHg7IH0NCi50c3FsMiB7IHdpZHRoOiA5OSUgIWltcG9ydGFudDsgfQ0KLnRpbmogeyBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOyBtYXJnaW46IDFweDsgd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDQ2cHg7IH0NCi50YWhleCB7IHdpZHRoOiA5OSU7IG1hcmdpbi1ib3R0b206MXB4O30NCi50aGV4MSwgLnRoZXgyLCAudGhleDMgeyBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOyBwYWRkaW5nLXRvcDoxcHg7IHBhZGRpbmctbGVmdDozcHg7IGZvbnQ6IDEzcHggIm1vbm9zcGFjZSIsIG1vbm9zcGFjZTsgbGluZS1oZWlnaHQ6IDIwcHg7IHRleHQtYWxpZ246IGxlZnQ7IH0NCi50aGV4MSB7IGNvbG9yOiAjMDAwMDAwOyB9DQoudGhleDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOyBib3JkZXItbGVmdDogMDsgYm9yZGVyLXJpZ2h0OiAwOyB9DQoudGhleDMgeyBjb2xvcjogIzAwMDAwMDt9DQouaWRpbWcsIC5pZmltZyB7ICcuejB1KCczJykuJyBtYXJnaW4tcmlnaHQ6MnB4OyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9DQouaWRpbWcgeyAnLnoyeSh6OXEoJ2lkaXJiZzEnKSwgejlxKCdpZGlyYmcyJyksMSkuJyBib3JkZXI6IDFweCBzb2xpZCAnLno5cSgnaWRpcmJvcmRlcicpLic7ICB9DQouaWZpbWcgeyAnLnoyeSh6OXEoJ2lmaWxlYmcxJyksIHo5cSgnaWZpbGViZzInKSkuJyBib3JkZXI6IDFweCBzb2xpZCAnLno5cSgnaWZpbGVib3JkZXInKS4nOyB9DQouaWRpbWc6aG92ZXIsIC5pZmltZzpob3ZlciB7IGN1cnNvcjogcG9pbnRlcjsgfQ0KLnNlbGVjdG9yLCAuZGl2bHMgeyBtYXgtaGVpZ2h0OjM1MHB4OyBoZWlnaHQ6MzUwcHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87IH0NCi5zZWxlY3RvciB7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjRkZGRkZGOyB9DQouc2Nyb2xsIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlcjowOyBtYXJnaW46MDsgcGFkZGluZzowOyBtYXgtd2lkdGg6IDEwMjRweDsgbWF4LWhlaWdodDozNTBweDsgb3ZlcmZsb3cteTogYXV0bzsgb3ZlcmZsb3cteDogYXV0bzsgdGV4dC1hbGlnbjpsZWZ0OyB9DQouZHdpZHRoIHsgd2lkdGg6IDk5JTsgfQ0KLmJhcmJnIHsgJy56MnkoIiNkZGRkZGQiLCIjZmZmZmZmIikuJyBib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7IG1hcmdpbi1yaWdodDogNXB4OyBwYWRkaW5nOjA7IHdpZHRoOjEwMHB4OyBoZWlnaHQ6N3B4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGZsb2F0OmxlZnQ7IH0NCi5iYXJmaWwgeyAnLnoyeSgiIzg1RkYwMCIsIiM0NjlGMEIiKS4nOyBoZWlnaHQ6N3B4OyBwYWRkaW5nOjA7IH0NCicpLicNCjwvc3R5bGU+DQo8L2hlYWQ+DQo8Ym9keScuKCgkYWN0PT0iY21kIik/JyBvbmxvYWQ9ImRvY3VtZW50LmNvbW1hbmQuY21kLmZvY3VzKCk7Iic6JycpLic+Jy4oQGluX2FycmF5KCRhY3QsIGFycmF5KCdscycsJ3NlYXJjaCcsJ2Z0cCcpKT8gejNiKCk6JycpLigkYWN0PT0iZiImJkBpc3NldCgkZnQpJiYkZnQ9PSJlZGl0Ij96MXooKTonJykuJw0KJy56N2coKCRsb2dpbiA/ICcxJyA6ICcwJykpLno2ZigpLno3aigpOyB9IGZ1bmN0aW9uIHowZygkYywkcywkdCl7IHJldHVybiAnPGlucHV0IHR5cGU9InN1Ym1pdCIgdGl0bGU9IicuJHQuJyIgdmFsdWU9IiZuYnNwOyIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgJy56OXEoInRvcGJvcmRlcjEiKS4nOyBiYWNrZ3JvdW5kOiAnLiRjLic7ICB3aWR0aDogJy4kcy4ncHg7IGhlaWdodDogJy4kcy4ncHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHZlcnRpY2FsLWFsaWduOiBpbmhlcml0ICFpbXBvcnRhbnQ7IGN1cnNvcjogcG9pbnRlcjsiPic7IH0gZnVuY3Rpb24gejF4KCR0eXBlKXsgcmV0dXJuICc8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iJy4oJHR5cGU9PSdkJz8naWRpbWcnOidpZmltZycpLiciIHZhbHVlPSImbmJzcDsiPic7IH0gZnVuY3Rpb24gejB1KCRpKXsgcmV0dXJuICcgLW1vei1ib3JkZXItcmFkaXVzOiAnLiRpLidweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAnLiRpLidweDsgYm9yZGVyLXJhZGl1czogJy4kaS4ncHg7JzsgfSBmdW5jdGlvbiB6MnkoJHMsJGUsJGQ9JycpeyBnbG9iYWwgJG5vZ3JhZGllbnQ7IGlmKEBpc3NldCgkbm9ncmFkaWVudCkmJiRub2dyYWRpZW50KSByZXR1cm4gJ2JhY2tncm91bmQ6ICcuKCgkZD09JycpPyRzOiRlKS4nOyc7IHJldHVybiAnYmFja2dyb3VuZDogJy4oKCRkPT0nJyk/JHM6JGUpLic7DQpmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPVwnJy4kcy4nXCcsIGVuZENvbG9yc3RyPVwnJy4kZS4nXCcpOw0KYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgnLiRzLicpLCB0bygnLiRlLicpKTsNCmJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgJy4kcy4nLCAnLiRlLicpOw0KYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgJy4kcy4nLCAnLiRlLicpOw0KJzsgfSBmdW5jdGlvbiB6M2ooJGxvZ2luPTApeyAkdGM9Jyc7IGZvcmVhY2goejd6KDUsJ3NraW5zJykgYXMgJHMpICR0YyAuPSB6NXgoYXJyYXkoJ2FjdCcsJ2QnLCdjb2xvcl9za2luJz0+JHMpLCB6NHkoejBnKHo5cSgidG9wYmcxIiksIjExIixAc3RydG91cHBlcigkcykpKS4iICIpOyBlY2hvICghJGxvZ2luID8gejdhKHo3dSh6OWMoJ1JDLVNIRUxMIHYnLno3eignMCcpLicgOiAnLiJQQUdFIEdFTkVSQVRFRCBJTiAiLihAcm91bmQoejEwZSgpLXN0YXJ0LDQpKS4iIFNFQ09ORFMiLCc0JykuejZ6KCR0YywnNCcpKSwnMicpOicnKS56N2YoKS56N3koKS56MTBxKCkuJzwvYm9keT48L2h0bWw+JzsgZXhpdCgpOyB9IGZ1bmN0aW9uIHoxYSgkbiwgJHY9JycsICRlID0gMCwgJHAgPSAnJywgJGQ9JycsICRzPWZhbHNlLCAkaD1mYWxzZSl7ICRfQ09PS0lFWyRuXSA9ICR2OyByZXR1cm4gQHNldGNvb2tpZSgkbiwgJHYsICRlLCAkcCwgJGQsICRzLCAkaCk7IH0gZnVuY3Rpb24gejFsKCRuKXsgaWYoQGlzc2V0KCRfQ09PS0lFWyRuXSkpIHVuc2V0KCRfQ09PS0lFWyRuXSk7IHJldHVybiBAc2V0Y29va2llKCRuLCBOVUxMLCAtMSk7IH0gZnVuY3Rpb24gejFoKCRuKXsgcmV0dXJuIChAaXNzZXQoJF9DT09LSUVbJG5dKSA/ICRfQ09PS0lFWyRuXSA6JycpOyB9IGZ1bmN0aW9uIHowaigpeyBmb3JlYWNoKGFycmF5KCdiY29weScsJ2JjdXQnKSBhcyAkdCl7IGdsb2JhbCAkeyR0fTsgaWYoQGNvdW50KCR7JHR9KT4wKXsgJF9TRVNTSU9OWyR0XT0keyR0fTsgJGM9QHNlcmlhbGl6ZSgkeyR0fSk7IHoxYSgkdCwgJGMpOyB9IGVsc2UgeyB6MGkoJHQpOyB6MWwoJHQpOyB9IH0gfSBmdW5jdGlvbiB6MWQoKXsgZm9yZWFjaChhcnJheSgnYmNvcHknLCdiY3V0JykgYXMgJHQpeyBnbG9iYWwgJHskdH07IGlmKEBpc3NldCgkX1NFU1NJT05bJHRdKSl7ICR7JHR9PSRfU0VTU0lPTlskdF07IH0gZWxzZWlmKCgkYz16MWgoJHQpKSE9JycpIHsgJHskdH09QHVuc2VyaWFsaXplKCRjKTsgfSBlbHNlIHsgJHskdH09YXJyYXkoKTsgfSB9IH0gZnVuY3Rpb24gejBkKCRhPTEpeyBmb3JlYWNoKGFycmF5KCdiY29weScsJ2JjdXQnKSBhcyAkdCl7IGdsb2JhbCAkeyR0fTsgaWYoQGlzc2V0KCR7JHR9KSYmJGEpIHVuc2V0KCR7JHR9KTsgejBpKCR0KTsgejFsKCR0KTsgfSB9IGZ1bmN0aW9uIHoxbygkZiwkdCl7IGdsb2JhbCAkYmNvcHksICRiY3V0OyB6MGQoMCk7ICR1PSgoJHQ9PSdiY29weScpID8gJ2JjdXQnOiAnYmNvcHknKTsgZm9yZWFjaCgkeyR1fSBhcyAkaz0+JHYpeyBpZigkeyR1fVska109PSRmKSB1bnNldCgkeyR1fVska10pOyB9IGlmKCFAaW5fYXJyYXkoJGYsICR7JHR9KSl7ICR7JHR9W109JGY7IH0gZWxzZSB7IGZvcmVhY2goJHskdH0gYXMgJGs9PiR2KXsgaWYoJHskdH1bJGtdPT0kZikgdW5zZXQoJHskdH1bJGtdKTsgfSB9IH0gZnVuY3Rpb24gejRnKCl7IGdsb2JhbCAkY29sb3Jfc2tpbjsgJGw9ejd6KCcxJyk7ICR6dT16MWgoJ3p1Jyk7ICR6cD16MWgoJ3pwJyk7IGlmKCRsWyd1c2VfYXV0aCddICYmIHo3ZSgnbWQ1JykpeyAkcz0kZT0wOyBpZihAaXNzZXQoJF9TRVNTSU9OWydvayddKXx8KCR6dT09JGxbJ21kNV91c2VyJ10gJiYgJHpwPT0kbFsnbWQ1X3Bhc3MnXSkpeyAkcz0xOyB9IGVsc2VpZihAaXNzZXQoJF9QT1NUWyd6dSddKSAmJiBAaXNzZXQoJF9QT1NUWyd6cCddKSkgeyBpZihAbWQ1KCRfUE9TVFsnenUnXSk9PSRsWydtZDVfdXNlciddICYmIEBtZDUoJF9QT1NUWyd6cCddKT09JGxbJ21kNV9wYXNzJ10peyAkX1NFU1NJT05bJ29rJ109MTsgejFhKCd6dScsIEBtZDUoJF9QT1NUWyd6dSddKSk7IHoxYSgnenAnLCBAbWQ1KCRfUE9TVFsnenAnXSkpOyAkcz0xOyB9IGVsc2UgeyAkZT0xOyB9IH0gaWYoISRzKXsgJGNvbG9yX3NraW49ejd6KCc1JywnZGVmYXVsdF9za2luJyk7IHozeigxKTsgZWNobyB6OWsoKS56N2Eoejd1KHo5Yyh6N24oejl5KCIxIikpKS56OWMoejZ1KCd6dScsJycpKSkuejd1KHo5Yyh6N24oejl5KCIyIikpKS56OWMoejZwKCd6cCcsJycpKSkuejd1KHo5YygnJykuejljKHo4Yih6OXkoIjMiKSwiNyIpKSkpLno5bCgpOyB6M2ooMSk7IGV4aXQoKTsgfSB9IH0gZnVuY3Rpb24gejBpKCRuKXsgaWYoQGlzc2V0KCRfU0VTU0lPTlskbl0pKSB1bnNldCgkX1NFU1NJT05bJG5dKTsgfSBmdW5jdGlvbiB6MXQoJG4peyByZXR1cm4gKEBpc3NldCgkX1NFU1NJT05bJG5dKSA/ICRfU0VTU0lPTlskbl0gOiBmYWxzZSk7IH0gZnVuY3Rpb24gejR3KCl7IHoxbCgnenUnKTsgejFsKCd6cCcpOyB6MGkoJ29rJyk7IGlmKEBjb3VudCgkX1NFU1NJT04pPjApeyBmb3JlYWNoKCRfU0VTU0lPTiBhcyAkaz0+JHYpIHowaSgkayk7IH0gQHNlc3Npb25fZGVzdHJveSgpOyB9IGZ1bmN0aW9uIHo3YigkZil7IGlmKCF6MXkoJGYpKXsgcmV0dXJuICcwJzsgfSBlbHNlaWYoIXowbigkZikpIHsgcmV0dXJuICcxJzsgfSBlbHNlIHJldHVybiAnMic7IH0gZnVuY3Rpb24gejVnKCRmKXsgJGM9YXJyYXkoInJlZCIsIndoaXRlIiwiZ3JlZW4iKTsgcmV0dXJuICRjWyh6N2IoJGYpKV07IH0gZnVuY3Rpb24gejZnKCRmKXsgJGM9YXJyYXkoIm5yIiwibnciLCJydyIpOyByZXR1cm4gJGNbKHo3YigkZikpXTsgfSBmdW5jdGlvbiB6N3goJHMpeyBpZighQGlzX251bWVyaWMoJHMpKSByZXR1cm4gJzAgQic7ICRtPTEwMjQ7ICR1PUBleHBsb2RlKCcgJywgJ0IgS0IgTUIgR0IgVEIgUEInKTsgZm9yKCRpPTA7ICRzPiRtOyAkaSsrKXsgJHMgLz0gJG07IH0gcmV0dXJuIEByb3VuZCgkcywgMikuJyAnLiR1WyRpXTsgfSBmdW5jdGlvbiB6N2MoJGksJGM9MSl7IGZvcmVhY2goejZtKCkgYXMgJHIpeyBpZihAc3Ryc3RyKHo5YigkciksJGkpKSByZXR1cm4gejh3KEBleHBsb2RlKCRpLHo5YigkcikpLCRjKTsgfTt9IGZ1bmN0aW9uIHowZSgkZXJybm8sJGVycnN0ciwkZXJyZmlsZSwkZXJybGluZSl7IGdsb2JhbCAkc2FmZURpckFyciwkYywkaTsgcHJlZ19tYXRjaCgiI1NBRkVccytNT0RFXHMrUmVzdHJpY3Rpb25ccytpblxzK2VmZmVjdCguKilub3RccythbGxvd2VkXHMrdG9ccythY2Nlc3NccysoLiopXHMrb3duZWRccytieVxzK3VpZCguKikjIiwkZXJyc3RyLCRvKXx8cHJlZ19tYXRjaCgiI29wZW5fYmFzZWRpclxzK3Jlc3RyaWN0aW9uKC4qKUZpbGVccypcKCguKilcKVxzK2lzXHMrbm90IyIsJGVycnN0ciwkbyk7IGlmKCRvKXsgJHNhZmVEaXJBcnJbJGNdPSRvWzJdOyAkYysrOyB9IH0gZnVuY3Rpb24gejN3KCRkaXIpeyBnbG9iYWwgJHdpbiwkc2FmZURpckFycjsgaWYoejdlKCdnbG9iJykpeyAkZXJyb3JfcmVwb3J0aW5nPUBpbmlfZ2V0KCdlcnJvcl9yZXBvcnRpbmcnKTsgQGVycm9yX3JlcG9ydGluZyhFX1dBUk5JTkcpOyBAaW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLDEpOyAkcm9vdD0iLyI7IGlmKCRkaXIpICRyb290PSRkaXI7ICRjPTA7ICRzYWZlRGlyQXJyPWFycmF5KCk7IEBzZXRfZXJyb3JfaGFuZGxlcigiejBlIik7ICRjaGFycz0iXy0uMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOyBmb3IoJGk9MDskaTxAc3RybGVuKCRjaGFycyk7JGkrKyl7ICRwYXRoPSJ7JHJvb3R9Ii4oKEBzdWJzdHIoJHJvb3QsLTEpIT0iLyIpPyIvIjpOVUxMKS4ieyRjaGFyc1skaV19IjsgJHByZXZEPSRzYWZlRGlyQXJyW0Bjb3VudCgkc2FmZURpckFyciktMV07IEBnbG9iKCRwYXRoLiIqIik7IGlmKCRzYWZlRGlyQXJyW0Bjb3VudCgkc2FmZURpckFyciktMV0hPSRwcmV2RCl7IGZvcigkaj0wOyRqPEBzdHJsZW4oJGNoYXJzKTskaisrKXsgJHBhdGg9Inskcm9vdH0iLigoQHN1YnN0cigkcm9vdCwtMSkhPSIvIik/Ii8iOk5VTEwpLiJ7JGNoYXJzWyRpXX17JGNoYXJzWyRqXX0iOyAkcHJldkQyPSRzYWZlRGlyQXJyW0Bjb3VudCgkc2FmZURpckFyciktMV07IEBnbG9iKCRwYXRoLiIqIik7IGlmKCRzYWZlRGlyQXJyW0Bjb3VudCgkc2FmZURpckFyciktMV0hPSRwcmV2RDIpeyBmb3IoJHA9MDskcDxAc3RybGVuKCRjaGFycyk7JHArKyl7ICRwYXRoPSJ7JHJvb3R9Ii4oKEBzdWJzdHIoJHJvb3QsLTEpIT0iLyIpPyIvIjpOVUxMKS4ieyRjaGFyc1skaV19eyRjaGFyc1skal19eyRjaGFyc1skcF19IjsgJHByZXZEMz0kc2FmZURpcmFycltAY291bnQoJHNhZmVEaXJBcnIpLTFdOyBAZ2xvYigkcGF0aC4iKiIpOyBpZigkc2FmZURpckFycltAY291bnQoJHNhZmVEaXJBcnIpLTFdIT0kcHJldkQzKXsgZm9yKCRyPTA7JHI8QHN0cmxlbigkY2hhcnMpOyRyKyspeyAkcGF0aD0ieyRyb290fSIuKChAc3Vic3RyKCRyb290LC0xKSE9Ii8iKT8iLyI6TlVMTCkuInskY2hhcnNbJGldfXskY2hhcnNbJGpdfXskY2hhcnNbJHBdfXskY2hhcnNbJHJdfSI7IEBnbG9iKCRwYXRoLiIqIik7IH0gfSB9IH0gfSB9IH0gJHNhZmVEaXJBcnI9QGFycmF5X3VuaXF1ZSgkc2FmZURpckFycik7IGZvcmVhY2goJHNhZmVEaXJBcnIgYXMgJGl0ZW0pIGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoInskaXRlbX0iKS4iXHJcbiI7IEBlcnJvcl9yZXBvcnRpbmcoJGVycm9yX3JlcG9ydGluZyk7IH0gfSBmdW5jdGlvbiB6M3koJGRpcil7IGlmKHo3ZSgncmVhbHBhdGgnKSl7IGdsb2JhbCAkd2luLCRzYWZlRGlyQXJyOyAkY2hhcnNfcmxwaD0iXy0uMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOyAkcHJlc2V0c19ybHBoID0gYXJyYXkoJ2luZGV4LnBocCcsJy5odGFjY2VzcycsJy5odHBhc3N3ZCcsJ2h0dHBkLmNvbmYnLCd2aG9zdHMuY29uZicsJ2NmZy5waHAnLCdjb25maWcucGhwJywnY29uZmlnLmluYy5waHAnLCdjb25maWcuZGVmYXVsdC5waHAnLCdjb25maWcuaW5jLnBocCcsJ3NoYWRvdycsJ3Bhc3N3ZCcsJy5iYXNoX2hpc3RvcnknLCcubXlzcWxfaGlzdG9yeScsJ21hc3Rlci5wYXNzd2QnLCd1c2VyJywnYWRtaW4nLCdwYXNzd29yZCcsJ2FkbWluaXN0cmF0b3InLCdwaHBNeUFkbWluJywnc2VjdXJpdHknLCdwaHAuaW5pJywnY2Ryb20nLCdyb290JywnbXkuY25mJywncHVyZWZ0cGQuY29uZicsJ3Byb2Z0cGQuY29uZicsJ2Z0cGQuY29uZicsJ3Jlc29sdi5jb25mJywnbG9naW4uY29uZicsJ3NtYi5jb25mJywnc3lzY3RsLmNvbmYnLCdzeXNsb2cuY29uZicsJ2FjY2Vzcy5jb25mJywnYWNjb3VudGluZy5sb2cnLCdob21lJywnaHRkb2NzJywnYWNjZXNzJywnYXV0aCcsJ2Vycm9yJywnYmFja3VwJywnZGF0YScsJ2JhY2snLCdzeXNjb25maWcnLCdwaHBiYicsJ3BocGJiMicsJ3ZidWxsZXRpbicsJ3ZidWxsZXQnLCdwaHBudWtlJywnY2dpLWJpbicsJ2h0bWwnLCdyb2JvdHMudHh0JywnYmlsbGluZycpOyBpZighJGRpcil7JGRpcj0nL2V0Yy8nO307ICRlbmRfcmxwaD0nJzsgJG5fcmxwaD0nMyc7ICRjPTA7ICRzYWZlRGlyQXJyPWFycmF5KCk7ICRybHBBcnI9YXJyYXkoKTsgJGVycm9yX3JlcG9ydGluZz1AaW5pX2dldCgnZXJyb3JfcmVwb3J0aW5nJyk7IEBlcnJvcl9yZXBvcnRpbmcoRV9XQVJOSU5HKTsgQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwxKTsgQHNldF9lcnJvcl9oYW5kbGVyKCJ6MGUiKTsgaWYoJHJlYWxwYXRoPXJlYWxwYXRoKCRkaXIuJy8nKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iO30gaWYoJGVuZF9ybHBoIT0nJyAmJiAkcmVhbHBhdGg9cmVhbHBhdGgoJGRpci4nLycuJGVuZF9ybHBoKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iOyRybHBBcnJbXT0kcmVhbHBhdGg7IH0gZm9yZWFjaCgkcHJlc2V0c19ybHBoIGFzICRwcmVzZXRfcmxwaCl7IGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLicvJy4kcHJlc2V0X3JscGguJGVuZF9ybHBoKSl7ZWNobyAkcmVhbHBhdGguIlxyXG4iOyAkcmxwQXJyW109JHJlYWxwYXRoOyB9IH0gZm9yKCRpPTA7ICRpIDwgc3RybGVuKCRjaGFyc19ybHBoKTsgJGkrKyl7IGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLiIveyRjaGFyc19ybHBoWyRpXX0iLiRlbmRfcmxwaCkpe2VjaG8gJHJlYWxwYXRoLiJcclxuIjsgJHJscEFycltdPSRyZWFscGF0aDsgfSBpZigkbl9ybHBoPD0xKXtjb250aW51ZTt9OyBmb3IoJGo9MDsgJGogPCBzdHJsZW4oJGNoYXJzX3JscGgpOyAkaisrKXsgaWYoJHJlYWxwYXRoPXJlYWxwYXRoKCRkaXIuIi97JGNoYXJzX3JscGhbJGldfXskY2hhcnNfcmxwaFskal19Ii4kZW5kX3JscGgpKXtlY2hvICRyZWFscGF0aC4iXHJcbiI7ICRybHBBcnJbXT0kcmVhbHBhdGg7IH0gaWYoJG5fcmxwaDw9Mil7Y29udGludWU7fTsgZm9yKCR4PTA7ICR4IDwgc3RybGVuKCRjaGFyc19ybHBoKTsgJHgrKyl7IGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLiIveyRjaGFyc19ybHBoWyRpXX17JGNoYXJzX3JscGhbJGpdfXskY2hhcnNfcmxwaFskeF19Ii4kZW5kX3JscGgpKXtlY2hvICRyZWFscGF0aC4iXHJcbiI7ICRybHBBcnJbXT0kcmVhbHBhdGg7IH0gaWYoJG5fcmxwaDw9Myl7Y29udGludWU7fTsgZm9yKCR5PTA7ICR5IDwgc3RybGVuKCRjaGFyc19ybHBoKTsgJHkrKyl7IGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLiIveyRjaGFyc19ybHBoWyRpXX17JGNoYXJzX3JscGhbJGpdfXskY2hhcnNfcmxwaFskeF19eyRjaGFyc19ybHBoWyR5XX0iLiRlbmRfcmxwaCkpe2VjaG8gJHJlYWxwYXRoLiJcclxuIjsgJHJscEFycltdPSRyZWFscGF0aDsgfSBpZigkbl9ybHBoPD00KXtjb250aW51ZTt9OyBmb3IoJHo9MDsgJHogPCBzdHJsZW4oJGNoYXJzX3JscGgpOyAkeisrKXsgaWYoJHJlYWxwYXRoPXJlYWxwYXRoKCRkaXIuIi97JGNoYXJzX3JscGhbJGldfXskY2hhcnNfcmxwaFskal19eyRjaGFyc19ybHBoWyR4XX17JGNoYXJzX3JscGhbJHldfXskY2hhcnNfcmxwaFskel19Ii4kZW5kX3JscGgpKXtlY2hvICRyZWFscGF0aC4iXHJcbiI7ICRybHBBcnJbXT0kcmVhbHBhdGg7IH0gaWYoJG5fcmxwaDw9NSl7Y29udGludWU7fTsgZm9yKCR3PTA7ICR3IDwgc3RybGVuKCRjaGFyc19ybHBoKTsgJHcrKyl7IGlmKCRyZWFscGF0aD1yZWFscGF0aCgkZGlyLiIveyRjaGFyc19ybHBoWyRpXX17JGNoYXJzX3JscGhbJGpdfXskY2hhcnNfcmxwaFskeF19eyRjaGFyc19ybHBoWyR5XX17JGNoYXJzX3JscGhbJHpdfXskY2hhcnNfcmxwaFskd119Ii4kZW5kX3JscGgpKXtlY2hvICRyZWFscGF0aC4iXHJcbiI7ICRybHBBcnJbXT0kcmVhbHBhdGg7IH0gfSB9IH0gfSB9IH0gJHNhZmVEaXJBcnI9QGFycmF5X3VuaXF1ZSgkc2FmZURpckFycik7IGZvcmVhY2goJHNhZmVEaXJBcnIgYXMgJGl0ZW0peyBpZighQGluX2FycmF5KCRpdGVtLCAkcmxwQXJyKSkgZWNobyBAaHRtbHNwZWNpYWxjaGFycygkaXRlbSkuIlxyXG4iOyB9IEBlcnJvcl9yZXBvcnRpbmcoJGVycm9yX3JlcG9ydGluZyk7IH0gfSBmdW5jdGlvbiB6NGgoJGQsICR0LCRiPTApeyAkZD16MWooJGQpOyAkdD16MWooJHQpOyBpZihAaXNfZGlyKCRkKSkgeyBpZighejRyKCR0KSl7IEBta2RpcigkdCk7IEBjaG1vZCgkdCwwNzU1KTsgfSAkaD1Ab3BlbmRpcigkZCk7IHdoaWxlKCgkbz1AcmVhZGRpcigkaCkpIT09ZmFsc2UpeyBpZigoJG8hPSIuIikgJiYgKCRvIT0iLi4iKSl7IGlmKEBpc19kaXIoejFrKCRkKS4kbykpeyB6NGgoejFrKCRkKS4kbywgejFrKCR0KS4kbywgJGIpOyB9IGVsc2UgeyBAY29weSh6MWsoJGQpLiRvLCB6MWsoJHQpLiRvKTsgaWYoJGIpeyBAdW5saW5rKHoxaygkZCkuJG8pOyB9IH0gfSB9IEBjbG9zZWRpcigkaCk7IGlmKCRiKXsgQHJtZGlyKCRkKTsgfSByZXR1cm4gdHJ1ZTsgfSBlbHNlaWYoQGlzX2ZpbGUoJGQpKXsgaWYoQGlzX2RpcigkdCkpeyAkdD16MWsoJHQpLnoybCgkZCk7IH0gaWYoJGIpeyBpZihAY29weSgkZCwgJHQpKSByZXR1cm4gQHVubGluaygkZCk7IH0gZWxzZSB7IHJldHVybiBAY29weSgkZCwgJHQpOyB9IH0gZWxzZSB7IHJldHVybiBmYWxzZTsgfSB9IGZ1bmN0aW9uIHo4cigkZCwkdCl7IHJldHVybiB6NGgoJGQsJHQpOyB9IGZ1bmN0aW9uIHo4cCgkZCwkdCl7IHJldHVybiB6NGgoJGQsJHQsMSk7IH0gZnVuY3Rpb24gejhhKCRkKXsgJGQ9ejFrKCRkKTsgJGg9QG9wZW5kaXIoJGQpOyB3aGlsZSgoJG89QHJlYWRkaXIoJGgpKSE9PWZhbHNlKXsgaWYoJG8hPSIuIiAmJiAkbyE9Ii4uIiAmJiAhejRxKCRvKSl7IGlmKCF6NGooJGQuJG8pKXsgQHVubGluaygkZC4kbyk7IH1lbHNleyB6OGEoJGQuJG8pOyB9IH0gfSBAY2xvc2VkaXIoJGgpOyBAcm1kaXIoJGQpOyByZXR1cm4gIXo0aigkZCk7IH0gZnVuY3Rpb24gejhzKCRvKXsgJG89ejFqKCRvKTsgaWYoQHo0aigkbykpeyByZXR1cm4gejhhKCRvKTsgfSBlbHNlaWYoejRlKCRvKSl7IHJldHVybiBAdW5saW5rKCRvKTsgfSBlbHNleyByZXR1cm4gZmFsc2U7IH0gfSBmdW5jdGlvbiB6OHUoKXsgJGg9KEBlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSl8fEBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQUyddKT09J29mZic/MDoxKTsgJHU9J2h0dHAnLigoJGg/J3MnOicnKS4nOi8vJy4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOyAkbT0oQGVtcHR5KCRfU0VSVkVSWydQQVRIX0lORk8nXSk/J1FVRVJZX1NUUklORyc6J1BBVEhfSU5GTycpOyAkcz0kbT09J1FVRVJZX1NUUklORyc/Jz8nOicnOyByZXR1cm4gJHUuJHMuKEBpc3NldCgkX1NFUlZFUlskbV0pPyRfU0VSVkVSWyRtXTonJyk7IH0gZnVuY3Rpb24gejZuKCl7ICR1PWFycmF5KCk7ICRwPXo5bygiL2V0Yy9wYXNzd2QiKTsgaWYoJHApeyAkbGw9QGV4cGxvZGUoIlxuIiwkcCk7IGZvcmVhY2goQGFycmF5X3VuaXF1ZSgkbGwpIGFzICRsKXsgJHM9QGV4cGxvZGUoIjoiLCRsKTsgaWYoQGlzc2V0KCRzWzBdKSAmJiBAaXNzZXQoJHNbMl0pJiYgQGlzc2V0KCRzWzNdKSAmJiBAaXNzZXQoJHNbNV0pJiYgQGlzc2V0KCRzWzZdKSAmJiAhQGlzc2V0KCR1WyRzWzBdXSkpeyAkdVskc1swXV09YXJyYXkoJHNbMl0sICRzWzNdLCAkc1s1XSwgJHNbNl0pOyB9IH0gfSBlbHNlaWYgKHo3ZSgncG9zaXhfZ2V0cHd1aWQnKSl7IGZvcigkaT0wOyAkaTw2NTUzNTsgJGkrKyl7ICRhPUBwb3NpeF9nZXRwd3VpZCgkaSk7IGlmKCRhICYmIEBpc19hcnJheSgkYSkpeyBpZihAaXNzZXQoJGFbJ25hbWUnXSkgJiYgIUBlbXB0eSgkYVsnbmFtZSddKSAmJiAhQGlzc2V0KCR1WyRhWyduYW1lJ11dKSl7ICR1WyRhWyduYW1lJ11dPWFycmF5KCRhWyd1aWQnXSwgJGFbJ2dpZCddLCAkYVsnZGlyJ10sICRhWydzaGVsbCddKTsgfSB9IH0gfSByZXR1cm4gJHU7IH0gZnVuY3Rpb24gejhsKCR0PTApeyAkYT1hcnJheSgpOyAkcD16Nm4oKTsgaWYoQGNvdW50KCRwKT4wKXsgZm9yZWFjaCgkcCBhcyAkdT0+JHYpICRhW109KCgkdCkgPyBhcnJheSgkdSwkdlsyXSkgOiAkdSk7IH0gcmV0dXJuICRhOyB9IGlmKCF6N2UoJ3N0cl9yZXBlYXQnKSl7IGZ1bmN0aW9uIHN0cl9yZXBlYXQoJGksJGMpeyAkcj0nJzsgZm9yKCRuPTA7JG48JGM7JG4rKykkci49JGk7IHJldHVybiAkcjsgfSB9IGZ1bmN0aW9uIHo5dygkbSwkcz0wKXsgaWYoKCRtJjB4QzAwMCk9PT0weEMwMDApeyAkdD0icyI7IH0gZWxzZWlmKCgkbSYweDQwMDApPT09MHg0MDAwKXsgJHQ9ImQiOyB9IGVsc2VpZigoJG0mMHhBMDAwKT09PTB4QTAwMCl7ICR0PSJsIjsgfSBlbHNlaWYoKCRtJjB4ODAwMCk9PT0weDgwMDApeyAkdD0iLSI7IH0gZWxzZWlmKCgkbSYweDYwMDApPT09MHg2MDAwKXsgJHQ9ImIiOyB9IGVsc2VpZigoJG0mMHgyMDAwKT09PTB4MjAwMCl7ICR0PSJjIjsgfSBlbHNlaWYoKCRtJjB4MTAwMCk9PT0weDEwMDApeyAkdD0icCI7IH0gZWxzZXsgJHQ9Ij8iOyB9ICRhWyJyIl09KCRtJjAwNDAwKT4wOyAkYVsidyJdPSgkbSYwMDIwMCk+MDsgJGFbIngiXT0oJG0mMDAxMDApPjA7ICRiWyJyIl09KCRtJjAwMDQwKT4wOyAkYlsidyJdPSgkbSYwMDAyMCk+MDsgJGJbIngiXT0oJG0mMDAwMTApPjA7ICRjWyJyIl09KCRtJjAwMDA0KT4wOyAkY1sidyJdPSgkbSYwMDAwMik+MDsgJGNbIngiXT0oJG0mMDAwMDEpPjA7IGlmKCRzKSByZXR1cm4gYXJyYXkoInQiPT4kdCwgIm8iPT4kYSwgImciPT4kYiwgInciPT4kYyk7ICRvWyJyIl09KCRhWyJyIl0pPyJyIjoiLSI7ICRvWyJ3Il09KCRhWyJ3Il0pPyJ3IjoiLSI7ICRvWyJ4Il09KCRhWyJ4Il0pPyJ4IjoiLSI7ICRnWyJyIl09KCRiWyJyIl0pPyJyIjoiLSI7ICRnWyJ3Il09KCRiWyJ3Il0pPyJ3IjoiLSI7ICRnWyJ4Il09KCRiWyJ4Il0pPyJ4IjoiLSI7ICR3WyJyIl09KCRjWyJyIl0pPyJyIjoiLSI7ICR3WyJ3Il09KCRjWyJ3Il0pPyJ3IjoiLSI7ICR3WyJ4Il09KCRjWyJ4Il0pPyJ4IjoiLSI7IGlmKCRtJjB4ODAwKSAkb1sieCJdPSgkb1sieCJdPT0ieCIpPyJzIjoiUyI7IGlmKCRtJjB4NDAwKSAkZ1sieCJdPSgkZ1sieCJdPT0ieCIpPyJzIjoiUyI7IGlmKCRtJjB4MjAwKSAkd1sieCJdPSgkd1sieCJdPT0ieCIpPyJ0IjoiVCI7IHJldHVybiAkdC5Aam9pbigiIiwkbykuQGpvaW4oIiIsJGcpLkBqb2luKCIiLCR3KTsgfSBmdW5jdGlvbiB6OGooJGksJHMsJGUpeyAkcD0nJzsgJGs9YXJyYXkoJzgwJz0+J1dlYnNlcnZlcicsJzQ0Myc9PidPcGVuU1NMJywnMzMwNic9PidNeVNRTCcsJzU0MzInPT4nUG9zdGdyZVNRTCcsKTsgaWYoejdlKCdmc29ja29wZW4nKSYmejdlKCdzdHJlYW1fc2V0X3RpbWVvdXQnKSl7IGZvcigkbj0kczskbjw9JGU7JG4rKyl7ICRjPUBmc29ja29wZW4oJGksJG4sJGVuLCRlcywxKTsgaWYoJGMpeyBAc3RyZWFtX3NldF90aW1lb3V0KCRjLDAsNTAwMDApOyAkdD1AcHJlZ19yZXBsYWNlKCIvKFxyfFxufFteYS16MC05XyYlOjtcLixcW1xdXChcKVxzLV0pL2kiLCIiLEBmcmVhZCgkYywxMDApKTsgJHQ9KEBpc3NldCgka1skbl0pPyRrWyRuXS4nICcuJHQ6JHQpOyBpZihAZW1wdHkoJHQpKSAkdD0iT3BlbiI7ICRwLj0iWyRpXSAgIFBvcnQgJG4iLigoQHN0cmxlbigkbik8NSk/QHN0cl9yZXBlYXQoJyAnLCg1LUBzdHJsZW4oJG4pKSk6JycpLiIgICAkdFxyXG4iOyBAZmNsb3NlKCRjKTsgfSB9IH0gcmV0dXJuICRwOyB9IGZ1bmN0aW9uIHo4ZCgkYSl7ICRiPUBzdHJ0b2xvd2VyKEBpbmlfZ2V0KCRhKSk7IGlmKCRiPT0nb24nfHwkYj09J3llcyd8fCRiPT0ndHJ1ZScpeyByZXR1cm4gJ2Fzc2VydC5hY3RpdmUnIT09JGE7IH0gZWxzZWlmKCRiPT0nc3RkZXJyJ3x8JGI9PSdzdGRvdXQnKXsgcmV0dXJuICdkaXNwbGF5X2Vycm9ycyc9PT0kYTsgfSBlbHNleyByZXR1cm4gKGJvb2wpKGludCkkYjsgfSB9IGZ1bmN0aW9uIHo4bygkYywkbCl7IHJldHVybiAoQHN0cmxlbigkYyk+JGwpID8gQHN1YnN0cigkYywwLChAY2VpbCgkbC8yKS0yKSkuIlsuLl0iLkBzdWJzdHIoJGMsLShAY2VpbCgkbC8yKS0yKSkgOiAkYzsgfSBmdW5jdGlvbiBpbml0X2J1ZmZlcigpeyBpZighQGlzc2V0KCRfU0VTU0lPTlsnYnVmZmVyJ10pKXsgJF9TRVNTSU9OWydidWZmZXInXT1hcnJheSgpOyB9IH0gZnVuY3Rpb24gdW5zZXRfYnVmZmVyKCl7IGlmKEBpc3NldCgkX1NFU1NJT05bJ2J1ZmZlciddKSl7IHVuc2V0KCRfU0VTU0lPTlsnYnVmZmVyJ10pOyB9IH0gZnVuY3Rpb24gejhpKCRpLCR0PTApeyByZXR1cm4gKCR0PT09MD96N2MoJGkpOigkdD09PTE/QG9yZCgkaSk6QGNocigkaSkpKTsgfSBmdW5jdGlvbiB6OHkoJHMsICRkPScsJywgJGU9JyInLCAkZXNjPSdcXCcpeyAkbiA9IDA7ICRyID0gYXJyYXkoKTsgJGVkPSclIyUjJUUlUyVDJUElUCVFJUQlIyUjJSc7ICRzPUBzdHJfcmVwbGFjZSgkZXNjLiRlLCAkZWQsICRzKTsgJHM9QHByZWdfcmVwbGFjZSgnLycuJGUuJyhbXicuJGUuJ10rKScuJGUuJyhcc3xcdCkrJy4kZC4nLycsICRlLiJcXDEiLiRlLiRkLCAkcyk7ICRzPUBwcmVnX3JlcGxhY2UoJy8nLiRlLicoW14nLiRlLiddKyknLiRlLiRkLicoXHN8XHQpKy8nLCAkZS4iXFwxIi4kZS4kZCwgJHMpOyBpZihAc3Ryc3RyKCRzLCRlKSl7ICRhPUBleHBsb2RlKCRlLCAkcyk7IGZvcmVhY2goJGEgYXMgJGkpeyBpZigkbisrJTIpeyBAYXJyYXlfcHVzaCgkciwgQHN0cl9yZXBsYWNlKCRlZCwgJGUsIEBhcnJheV9wb3AoJHIpIC4gJGkgKSk7IH1lbHNleyAkYj1AZXhwbG9kZSgkZCwgJGkpOyBAYXJyYXlfcHVzaCgkciwgQHN0cl9yZXBsYWNlKCRlZCwgJGUsIEBhcnJheV9wb3AoJHIpIC4gQGFycmF5X3NoaWZ0KCRiKSkpOyAkcj1AYXJyYXlfbWVyZ2UoJHIsICRiKTsgfSB9IH0gcmV0dXJuICRyOyB9IGZ1bmN0aW9uIHo1cygkcywgJGVvbD0iXG4iLCAkZD0nLCcsICRlPSciJywgJGVzYz0nXFwnKXsgJHI9YXJyYXkoKTsgaWYoQHN0cnN0cigkcywgJGVvbCkpeyAkcD1AZXhwbG9kZSgkZW9sLCAkcyk7IGZvcmVhY2goJHAgYXMgJGwpeyBpZighQGVtcHR5KCRsKSkgJHJbXT16OHkoJGwsJGQsJGUsJGVzYyk7IH0gfSBlbHNlIHsgJHJbXT16OHkoJHMsJGQsJGUsJGVzYyk7IH0gcmV0dXJuICRyOyB9IGZ1bmN0aW9uIHo5bigpeyByZXR1cm4gejhlKHo4aSh6OGMoKSksejhjKCkpOyB9IGZ1bmN0aW9uIHo4dCgkZSl7ICRyPXo5ZSgiUEFUSD0nL2JpbjovdXNyL2JpbjovdXNyL2xvY2FsL2Jpbjovc2JpbjovdXNyL3NiaW46L3Vzci9sb2NhbC9zYmluJzt3aGljaCAkZSIpOyByZXR1cm4oQGVtcHR5KCRyKT8wOiRyKTsgfSBmdW5jdGlvbiB6OWIoJGkpeyByZXR1cm4gQGJhc2U2NF9kZWNvZGUoJGkpOyB9IGZ1bmN0aW9uIHo0ZigmICRhLCRrPSIiKXsgaWYoQGlzX2FycmF5KCRhKSl7IGZvcmVhY2goJGEgYXMgJGs9PiR2KXsgejRmKCRhWyIkayJdKTsgfSB9ZWxzZXsgJGE9QHN0cmlwc2xhc2hlcygkYSk7IH0gfSBmdW5jdGlvbiB6M3MoJGgsICRuLCAkbz0wKXsgJGw9QHN0cmxlbigkaCk7ICRvPSgkbz4wKT8oJGwtJG8pOkBhYnMoJG8pOyAkcD1Ac3RycG9zKEBzdHJyZXYoJGgpLEBzdHJyZXYoJG4pLCRvKTsgcmV0dXJuICgkcD09PWZhbHNlKT9mYWxzZTooJGwtJHAtQHN0cmxlbigkbikpOyB9IGZ1bmN0aW9uIHozdigkaW5qLCR3LCRmKXsgJGM9ejlvKCRmKTsgJHI9Jyc7IGlmKCEkYykgcmV0dXJuIGZhbHNlOyBzd2l0Y2goJHcpeyBjYXNlICd0b3AnOiAkcj0kaW5qLiRjOyBicmVhazsgY2FzZSAnZW5kJzogJHI9JGMuJGluajsgYnJlYWs7IGNhc2UgJ3BocDEnOiAkcD1Ac3RycG9zKCRjLCc8PycpOyBpZigkcD09PWZhbHNlKSByZXR1cm4gZmFsc2U7ICRyPUBzdWJzdHIoJGMsMCwkcCkuJGluai5Ac3Vic3RyKCRjLCRwKTsgYnJlYWs7IGNhc2UgJ3BocDInOiAkcD16M3MoJGMsJz8+Jyk7IGlmKCRwPT09ZmFsc2UpIHJldHVybiBmYWxzZTsgJHArPTI7ICRyPUBzdWJzdHIoJGMsMCwkcCkuJGluai5Ac3Vic3RyKCRjLCRwKTsgYnJlYWs7IGNhc2UgJ2h0bWwxJzogJHA9QHN0cnBvcygkYywnPGh0bWw+Jyk7IGlmKCRwPT09ZmFsc2UpIHJldHVybiBmYWxzZTsgJHI9QHN1YnN0cigkYywwLCRwKS4kaW5qLkBzdWJzdHIoJGMsJHApOyBicmVhazsgY2FzZSAnaHRtbDInOiAkcD1Ac3RycG9zKCRjLCc8L2h0bWw+Jyk7IGlmKCRwPT09ZmFsc2UpIHJldHVybiBmYWxzZTsgJHI9QHN1YnN0cigkYywwLCRwKS4kaW5qLkBzdWJzdHIoJGMsJHApOyBicmVhazsgY2FzZSAnaHRtbDMnOiAkcD1Ac3RycG9zKCRjLCc8aHRtbD4nKTsgaWYoJHA9PT1mYWxzZSkgcmV0dXJuIGZhbHNlOyAkcCs9NjsgJHI9QHN1YnN0cigkYywwLCRwKS4kaW5qLkBzdWJzdHIoJGMsJHApOyBicmVhazsgY2FzZSAnaHRtbDQnOiAkcD1Ac3RycG9zKCRjLCc8L2h0bWw+Jyk7IGlmKCRwPT09ZmFsc2UpIHJldHVybiBmYWxzZTsgJHArPTc7ICRyPUBzdWJzdHIoJGMsMCwkcCkuJGluai5Ac3Vic3RyKCRjLCRwKTsgYnJlYWs7IGNhc2UgJ2JvZHkxJzogaWYoIUBwcmVnX21hdGNoKCcvPGJvZHlbXj5dKj4vJywkYywkbSkpIHJldHVybiBmYWxzZTsgJHA9QHN0cnBvcygkYywkbVswXSk7ICRyPUBzdWJzdHIoJGMsMCwkcCkuJGluai5Ac3Vic3RyKCRjLCRwKTsgYnJlYWs7IGNhc2UgJ2JvZHkyJzogJHA9ejNzKCRjLCc8L2JvZHk+Jyk7IGlmKCRwPT09ZmFsc2UpIHJldHVybiBmYWxzZTsgJHI9QHN1YnN0cigkYywwLCRwKS4kaW5qLkBzdWJzdHIoJGMsJHApOyBicmVhazsgY2FzZSAnYm9keTMnOiBpZighQHByZWdfbWF0Y2goJy88Ym9keVtePl0qPi8nLCRjLCRtKSkgcmV0dXJuIGZhbHNlOyAkcD1Ac3RycG9zKCRjLCRtWzBdKTsgJHArPUBzdHJsZW4oJG1bMF0pOyAkcj1Ac3Vic3RyKCRjLDAsJHApLiRpbmouQHN1YnN0cigkYywkcCk7IGJyZWFrOyBjYXNlICdib2R5NCc6ICRwPXozcygkYywnPC9ib2R5PicpOyBpZigkcD09PWZhbHNlKSByZXR1cm4gZmFsc2U7ICRwKz03OyAkcj1Ac3Vic3RyKCRjLDAsJHApLiRpbmouQHN1YnN0cigkYywkcCk7IGJyZWFrOyBjYXNlICdvdmVyd3JpdGUnOiAkcj0kaW5qOyBicmVhazsgZGVmYXVsdDogcmV0dXJuIGZhbHNlOyBicmVhazsgfSByZXR1cm4gejl0KCRmLCRyKTsgfSBmdW5jdGlvbiB6M3UoJiAkYSwkaz0nJyl7IGlmKEBpc19hcnJheSgkYSkpeyBmb3JlYWNoKCRhIGFzICRrPT4kdil7IHozdSgkYVsiJGsiXSk7IH0gfWVsc2V7IGlmKCRhPT0nbmFtZSd8fCRhPT0ndG1wX25hbWUnKSAkYT16MWooJGEpOyB9IH0gZnVuY3Rpb24gejhlKCRpLCRvKXsgJHI9QGNyZWF0ZV9mdW5jdGlvbignJG8nLCdyZXR1cm4gQCcuejdjKCRvLDApLicoJG8pOycpOyByZXR1cm4gJHIoJGkpOyB9IGZ1bmN0aW9uIHo3digkbiwkYWMsJGEsJGI9MCl7IGdsb2JhbCAkYWN0OyByZXR1cm4gejZsKHo1eChhcnJheSgnYWN0Jz0+JGFjLCdkJywnc29ydCcpLCB6OGIoJG4sKCRhPyc0JzonNScpLCgkYWN0PT0kYWMmJiRiPycgc3R5bGU9ImJvcmRlci1yaWdodDowOyInOicnKSkpLCc1Jyk7IH0gZnVuY3Rpb24gejBhKCRrKXsgaWYoIUBpc3NldCgkX1NFU1NJT05bJGtdKXx8IUBpc19hcnJheSgkX1NFU1NJT05bJGtdKSl7IHowaSgkayk7ICRfU0VTU0lPTlska109YXJyYXkoKTsgJF9TRVNTSU9OWyRrXVtdPWFycmF5KCdhY3QnPT56N3ooJzInLCdkZWZhdWx0X2FjdCcpKTsgfSB9IGZ1bmN0aW9uIHoyZCgkayl7IGlmKEBjb3VudCgkX1NFU1NJT05bJGtdKT4wKSByZXR1cm4gQGNvdW50KCRfU0VTU0lPTlska10pOyAkX1NFU1NJT05bJGtdW109YXJyYXkoJ2FjdCc9Pno3eignMicsJ2RlZmF1bHRfYWN0JykpOyByZXR1cm4gQGNvdW50KCRfU0VTU0lPTlska10pOyB9IGZ1bmN0aW9uIHowbCgpeyAkcD1hcnJheSgpOyBpZihAY291bnQoJF9QT1NUKT4wKXsgZm9yZWFjaCgkX1BPU1QgYXMgJG49PiR2KXsgaWYoQHN1YnN0cigkbiwwLDUpIT0nYmFja2YnKSAkcFskbl09JHY7IH0gfSByZXR1cm4gJHA7IH0gZnVuY3Rpb24gejBmKCRrKXsgJGNsZWFucD16MGwoKTsgaWYoJGNsZWFucCAhPSB6Mm0oJGspKSAkX1NFU1NJT05bJGtdW109JGNsZWFucDsgfSBmdW5jdGlvbiB6M2YoJGspeyAkX1NFU1NJT05bJGtdPUBhcnJheV9yZXZlcnNlKCRfU0VTU0lPTlska10pOyBAYXJyYXlfcG9wKCRfU0VTU0lPTlska10pOyAkX1NFU1NJT05bJGtdPUBhcnJheV9yZXZlcnNlKCRfU0VTU0lPTlska10pOyB6MnQoJGspOyB9IGZ1bmN0aW9uIHoybSgkayl7ICRjPXoyZCgkayk7IGlmKCRjPT0wKSByZXR1cm4gYXJyYXkoKTsgaWYoJGM+MCkgejJ0KCRrKTsgJG49KCgkYz4xKSA/ICgkYy0yKSA6ICgoJGM+MCkgPyAoJGMtMSkgOiAwKSk7IHJldHVybiAkX1NFU1NJT05bJGtdWyRuXTsgfSBmdW5jdGlvbiB6MnQoJGspeyAkcj1hcnJheSgpOyBmb3JlYWNoKCRfU0VTU0lPTlska10gYXMgJHYpICRyW109JHY7ICRfU0VTU0lPTlska109JHI7IH0gZnVuY3Rpb24gejVmKCRzayl7IGdsb2JhbCAkYmFja2YsJHdoaXRlLCRiYWNrX2Zvcm1fYWN0aW9uczsgejBhKCRzayk7IGlmKEBpc3NldCgkYmFja2YpJiYkYmFja2YpeyBAYXJyYXlfcG9wKCRfU0VTU0lPTlskc2tdKTsgfSBlbHNlaWYoIUBpc3NldCgkd2hpdGUpfHwhJHdoaXRlKSB7IHowZigkc2spOyB9ICRiYWNrPXoybSgkc2spOyBpZih6MmQoJHNrKT4xMCkgejNmKCRzayk7ICRhPWFycmF5KCk7IGlmKEBjb3VudCgkYmFjayk+MCl7ICRhWydiYWNrZiddPScxJzsgaWYoQGlzX2FycmF5KCRiYWNrKSl7IGZvcmVhY2goJGJhY2sgYXMgJGs9PiR2KXsgJGFbJ2JhY2tmXycuJGtdPUB1cmxlbmNvZGUoJHYpOyB9IH0gfSAkYmFja19mb3JtX2FjdGlvbnM9JGE7IHJldHVybiB6NmwoKChAY291bnQoJGEpPjApPyB6NXgoJGEsejhiKHo5eSgiMjMiKSwnMTUnKSkgOiB6OGIoejl5KCIyMyIpLCc1JykpLCc1Jyk7IH0gZnVuY3Rpb24gejBwKCl7IGdsb2JhbCAkYWN0LCRzaF9leGVjLCRzYWZlX2V4ZWMsJGJmdHAsJGJtYWlsOyBlY2hvIHo3YSh6N3UoejVmKCdoaXN0JykuIHo3dih6OXkoIjI0IiksImxzIiwoQGluX2FycmF5KCRhY3QsYXJyYXkoImxzIiwiZCIsImYiLCJkZnVuYyIpKSkpLiB6N3Yoejl5KCIyNSIpLCJzZWFyY2giLCgkYWN0PT0ic2VhcmNoIikpLiB6N3Yoejl5KCIyNiIpLCJ1cGxvYWQiLCgkYWN0PT0idXBsb2FkIikpLiAoKCRzaF9leGVjfHwkc2FmZV9leGVjKT96N3Yoejl5KCIyNyIpLCJjbWQiLCgkYWN0PT0iY21kIikpOicnKS4gejd2KHo5eSgiMjgiKSwiZXZhbCIsKCRhY3Q9PSJldmFsIikpLiAoJGJmdHA/ejd2KHo5eSgiMTkzIiksImZ0cCIsKCRhY3Q9PSJmdHAiKSk6JycpLiB6N3Yoejl5KCIyOSIpLCJzcWwiLCgkYWN0PT0ic3FsIikpLiAoJGJtYWlsP3o3dih6OXkoIjMwIiksIm1haWxlciIsKCRhY3Q9PSJtYWlsZXIiKSk6JycpLiB6N3Yoejl5KCIzMSIpLCJlbmNvZGVycyIsKCRhY3Q9PSJlbmNvZGVycyIpKS4gejd2KHo5eSgiMzIiKSwidG9vbHMiLCgkYWN0PT0idG9vbHMiKSkuICgkc2hfZXhlYz96N3Yoejl5KCIzMyIpLCJwcm9jZXNzZXMiLCgkYWN0PT0icHJvY2Vzc2VzIikpOicnKS4gejd2KHo5eSgiMzQiKSwic3lzaW5mbyIsKEBpbl9hcnJheSgkYWN0LGFycmF5KCJzeXNpbmZvIiwicGhwaW5mbyIpKSkpLno3digiJm5ic3A7IixmYWxzZSwiIikpLCc0Jyk7IH0gZnVuY3Rpb24gejh3KCRpLCRzKXsgcmV0dXJuICgkcyk/ejdxKEBzdWJzdHIoJGlbMV0sNCkpOno3cShAc3Vic3RyKCRpWzFdLDAsNCkpOyB9IGZ1bmN0aW9uIHoxaigkdCl7ICR0PUBzdHJfcmVwbGFjZSgnXFwnLCcvJywkdCk7IGlmKEBzdHJzdHIoJHQsJy8vJykpeyB3aGlsZShAc3Ryc3RyKCR0LCcvLycpIT09ZmFsc2UpICR0ID0gQHN0cl9yZXBsYWNlKCcvLycsJy8nLCR0KTsgfSByZXR1cm4gJHQ7IH0gZnVuY3Rpb24gejFrKCR0KXsgJHQ9ejFqKCR0KTsgaWYoQHN1YnN0cigkdCwtMSkhPScvJykgJHQuPScvJzsgaWYoQHByZWdfbWF0Y2goJy9bXlwvXHJcbiJcJ10rXC9cLlwuXC8vJywgJHQpKSAkdCA9IEBwcmVnX3JlcGxhY2UoJy9bXlwvXHJcbiJcJ10rXC9cLlwuXC8vJywgJycsICR0KTsgaWYoJHQ9PScvLi4vJykgJHQ9ICcvJzsgaWYoJHQhPScuLycmJkBzdHJzdHIoJHQsJy4vJykhPT1mYWxzZSkgJHQ9QHN0cl9yZXBsYWNlKCcuLycsJycsJHQpOyByZXR1cm4gJHQ7IH0gZnVuY3Rpb24gejJ2KCRmLCR0LCRjKXsgaWYoQHN0cnN0cigkYywkZikpIHdoaWxlKEBzdHJzdHIoJGMsJGYpKSAkYz1Ac3RyX3JlcGxhY2UoJGYsJHQsJGMpOyByZXR1cm4gJGM7IH0gZnVuY3Rpb24gejFuKCRhY3Rpb24peyBnbG9iYWwgJGQsJHdpbjsgaWYoISR3aW4pIHJldHVybiAnJzsgJGU9QGV4cGxvZGUoIi8iLCRkKTsgJHI9Jyc7IGZvcmVhY2goQHJhbmdlKCJCIiwiWiIpIGFzICRsZXQpeyBpZigkbGV0LiI6IiE9QHN0cnRvdXBwZXIoJGVbMF0pJiZ6NHIoJGxldC4iOi8iKSl7ICRyIC49IHo1eChhcnJheSgiYWN0Ij0+JGFjdGlvbiwiZCI9PkBzdHJ0b3VwcGVyKCRsZXQpLiI6LyIpLHo4YigiWyRsZXRdIiwiMSIpKS56OXgoMik7IH0gfSByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejFtKCR0LCRmdHA9MCl7IGdsb2JhbCAkd2luOyAkZGVmPSIvIjsgaWYoJHdpbiYmISRmdHApeyAkcGF0aD1AcmVhbHBhdGgoX19GSUxFX18pOyAkZGVmPUBzdWJzdHIoJHBhdGgsMCwxKS4iOi8iOyB9IGlmKEBzdWJzdHIoJHQsLTEpPT0nLycpICR0PUBzdWJzdHIoJHQsMCwtMSk7IGlmKEBlbXB0eSgkdCkpIHJldHVybiBhcnJheSgkZGVmKTsgJGU9QGV4cGxvZGUoJy8nLCAkdCk7ICRkPWFycmF5KCk7IGlmKCR3aW4mJiEkZnRwKXsgJHA9Jyc7IH0gZWxzZSB7ICRwPScvJzsgfSBmb3IoJGk9MDsgJGkgPCBAY291bnQoJGUpOyAkaSsrKXsgaWYoQGVtcHR5KCRlWyRpXSkpeyAkZFsnLyddPScvJzsgfSBlbHNlIHsgJHAuPSRlWyRpXS4nLyc7ICRkWyRwXT0kZVskaV07IH0gfSByZXR1cm4gJGQ7IH0gZnVuY3Rpb24gejF2KCRuLCRhPWFycmF5KCksJGM9JycsJGc9JycsJHQ9JzEnLCRzPScnKXsgJHI9JzxzZWxlY3QgbmFtZT0iJy4kbi4nIicuKCRjIT0nJz8nIGNsYXNzPSInLno0bSgkYywnNCcpLiciJzonJykuKCRzIT0nJz8oQGlzX251bWVyaWMoJHMpPycgJy56MTByKCRzKTonICcuJHMpOicnKS4nPicuIlxuIjsgaWYoJGchPScnKSBnbG9iYWwgJHskbn07IGZvcmVhY2goJGEgYXMgJGs9PiR2KXsgJHIuPSc8b3B0aW9uIHZhbHVlPSInLigkdD09JzEnPyRrOiR2KS4nIicuKCgkZyE9JycgJiYgKCR0PT0nMSc/ICRrIDogJHYpID09JHskbn0pPycgc2VsZWN0ZWQnOicnKS4nPicuKCR0PT0nMSc/ICR2IDogJGspLic8L29wdGlvbj4nLiJcbiI7IH0gJHIuPSc8L3NlbGVjdD4nOyByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejNtKCRuLCRhPWFycmF5KCksJGM9JycsJGc9JycsJHM9JycpeyByZXR1cm4gejF2KCRuLCRhLCRjLCRnLCcxJywkcyk7IH0gZnVuY3Rpb24gejJrKCRuLCRhPWFycmF5KCksJGM9JycsJGc9JycsJHM9JycpeyByZXR1cm4gejF2KCRuLCRhLCRjLCRnLCcwJywkcyk7IH0gZnVuY3Rpb24gejhuKCR0PTApeyBnbG9iYWwgJGQsJGZ0cF9jdXJyZW50X2RpcjsgJGE9KCghJHR8fCR0PT0nbCcpP3oxbSgkZCk6ejFtKCRmdHBfY3VycmVudF9kaXIsMSkpOyAkYz1AY291bnQoJGEpOyAkaT0wOyAkbj0nJzsgZm9yZWFjaCgkYSBhcyAkaz0+JHYpeyAkaSsrOyAkbi49ejV4KCgkdD09PTA/YXJyYXkoJ2FjdCc9PidscycsJ2QnPT4kayk6KCR0PT0nbCc/IGFycmF5KCdhY3QnPT4nZnRwJywnZCc9PiRrKTogYXJyYXkoJ2FjdCc9PidmdHAnLCdkJywnZnRwX2N1cnJlbnRfZGlyJz0+JGspKSksejhiKCR2LCcxJykuKCgkdiE9Jy8nJiYkaSE9JGMpPycgLyAnOicgJykpOyB9IGVjaG8gejEwdyh6N3UoejdrKCghJHQ/ejV4KGFycmF5KCdhY3QnPT4nbHMnLCdkJz0+ejNhKF9fRklMRV9fKSksejhoKCdzbWFsbF9ob21lJywnJywnOScpKS56OXgoKS56MW4oImxzIik6JycpLiRuLighJHQ/JyAoJy56NnQoejl3KEBmaWxlcGVybXMoJGQpKSx6NmcoJGQpKS4nKSc6JycpKSksJzUnKTsgfSBmdW5jdGlvbiB6Mm4oKXsgZ2xvYmFsICRkOyBlY2hvIHozcSh6MTB3KHo3dSggejZsKHo1eChhcnJheSgnYWN0Jz0+J2YnLCdkJyksIHo3bih6OXkoIjM1IikpLno2dSgnZicsJGQsJzAnKS56M20oJ2Z0JyxhcnJheSgnZnVuY3Rpb25zJz0+ejl5KCI3NCIpLCdlZGl0Jz0+ejl5KCI3NSIpLCduZXcnPT56OXkoIjE5NSIpKSwnMScpLno4YignJnJhcXVvOycsJzcnKSksJycpLiB6NmwoejV4KGFycmF5KCdhY3QnPT4nZCcsJ2RvbGQnPT4kZCksIHo3bih6OXkoIjM2IikpLno2dSgnZCcsJGQsJzAnKS56M20oJ2R0JyxhcnJheSgnY2hkaXInPT56OXkoIjQyNSIpLCduZXcnPT56OXkoIjE5NSIpKSwnMScpLno4YignJnJhcXVvOycsJzcnKSksJycpICksJzInKSwnJyk7IH0gZnVuY3Rpb24gejVyKCRzKXsgJGE9QHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCcnLCRzKTsgaWYoQGVtcHR5KCRhKSkgJGE9IjAiOyAkYj1Ac3Vic3RyKCRzLC0xKTsgaWYoJGIhPSdkJykgJGI9J2EnOyByZXR1cm4gYXJyYXkoJGEsJGIpOyB9IGZ1bmN0aW9uIHoyYigkYSwkYil7IGdsb2JhbCAkdjsgcmV0dXJuIEBzdHJuYXRjbXAoQHN0cnRvbG93ZXIoJGFbJHZdKSxAc3RydG9sb3dlcigkYlskdl0pKTsgfSBmdW5jdGlvbiB6OWgoJGQpeyBnbG9iYWwgJHdpdGhfbHM7ICRyPWFycmF5KCk7ICRscz1Ac3RyX3JlcGxhY2UoJ1xcJywnJyx6OWUoJ2xzIC1hICInLiRkLiciIDI+L2Rldi9udWxsJywwKSk7ICRlPUBleHBsb2RlKCJcbiIsJGxzKTsgaWYoQGNvdW50KCRlKT4wKXsgJHdpdGhfbHM9MTsgZm9yZWFjaCgkZSBhcyAkcCl7IGlmKCRwIT0nJyYmJHAhPSRkJiYhQGluX2FycmF5KCRkLiRwLCAkcikpICRyW109JGQuJHA7IH0gfSByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejRzKCRwbiwkdD0nZicpeyBpZigkdD09J2QnKXsgJGxzPUBzdHJfcmVwbGFjZSgnXFwnLCcnLHo5ZSgnbHMgLWRsYSAiJy4kcG4uJyIgMj4vZGV2L251bGwnLDApKTsgfSBlbHNlIHsgJGxzPUBzdHJfcmVwbGFjZSgnXFwnLCcnLHo5ZSgnbHMgLWxhICInLiRwbi4nIiAyPi9kZXYvbnVsbCcsMCkpOyB9ICRlbD1AZXhwbG9kZSgiXG4iLCRscyk7IGlmKEBjb3VudCgkZWwpPjApeyAkbD0kZWxbMF07IH0gZWxzZSB7ICRsPSRsczsgfSBpZihAc3Ryc3RyKCRsLCctPicpKXsgJGxsPUBleHBsb2RlKCctPicsJGwpOyBpZihAY291bnQoJGxsKT4yKXsgQGFycmF5X3BvcCgkbGwpOyAkbD1AaW1wbG9kZSgnLT4nLCRsbCk7IH0gZWxzZSB7ICRsPUB0cmltKCRsbFswXSk7IH0gfSAkbGVuPUBzdHJsZW4oJGwpOyAkcG5sPShAc3RybGVuKCRwbikrMSk7IGlmKEBzdWJzdHIoJGwsIC0kcG5sKT09IiAiLiRwbil7ICRwaT1Ac3Vic3RyKCRsLDAsKCRsZW4tJHBubCkpOyAkcGk9ejJ2KCcgICcsJyAnLCRwaSk7ICRwMj1AZXhwbG9kZSgiICIsJHBpKTsgaWYoQGNvdW50KCRwMik+NSl7ICRwcD0kcDJbMF07ICRwdT0kcDJbMl07ICRwZz0kcDJbM107ICRwcz0kcDJbNF07IGlmKCFAaXNfbnVtZXJpYygkcHMpICYmIEBzdWJzdHIoJHBzLC0xKT09IiwiICYmIEBpc19udW1lcmljKCRwMls1XSkpeyAkcHMuPSRwMls1XTsgJHN0PTY7IH0gZWxzZSB7ICRzdD01OyB9IGlmKEBpc19udW1lcmljKCRwcykpICRwcz16N3goJHBzKTsgJHBkPScnOyBmb3IoJGk9JHN0OyRpPEBjb3VudCgkcDIpOyRpKyspICRwZCAuPSRwMlskaV0uJyAnOyAkcGQ9QHRyaW0oJHBkKTsgaWYoejdlKCdzdHJ0b3RpbWUnKSAmJiAoJHMydD1Ac3RydG90aW1lKCRwZCkpIT09ZmFsc2UpICRwZD1AZGF0ZSgiWS1tLWQgSDppIiwgJHMydCk7IGlmKCRwcFswXT09ImwiKXsgcmV0dXJuIGFycmF5KCRwbiwnTElOSycsJHBkLGFycmF5KCRwdSwkcGcpLCRwcCk7IH1lbHNlaWYoJHBwWzBdPT0iZCIpeyByZXR1cm4gYXJyYXkoJHBuLCdESVInLCRwZCxhcnJheSgkcHUsJHBnKSwkcHApOyB9ZWxzZXsgcmV0dXJuIGFycmF5KCRwbiwkcHMsJHBkLGFycmF5KCRwdSwkcGcpLCRwcCk7IH0gfSB9IHJldHVybiBhcnJheSgnJywnJywnJyxhcnJheSgnJywnJyksJycpOyB9IGZ1bmN0aW9uIHo4eCgkZCl7IGdsb2JhbCAkbml4LCAkc2hfZXhlYywgJGFjdCwgJGxzd2Y7ICRkPXoxaygkZCk7IGlmKEBzdWJzdHIoJGQsLTEpIT0nLycpICRkLj0nLyc7ICRyPWFycmF5KCk7ICRsc3dmPScnOyBpZih6N2UoJ3NjYW5kaXInKSYmKCRoPUBzY2FuZGlyKCRkKSkpeyBmb3JlYWNoKCRoIGFzICR0KSAkcltdPSRkLiR0OyAkbHN3Zj0nc2NhbmRpcic7IH0gZWxzZWlmKHo3ZSgnZGlyJykmJigkaD1AZGlyKCRkKSkpeyB3aGlsZSgoJHQ9JGgtPnJlYWQoKSkhPT1mYWxzZSkgJHJbXT0kZC4kdDsgJGgtPmNsb3NlKCk7ICRsc3dmPSdkaXInOyB9IGVsc2VpZih6N2UoJ29wZW5kaXInKSYmejdlKCdyZWFkZGlyJykmJno3ZSgnY2xvc2VkaXInKSYmKCRoPUBvcGVuZGlyKCRkKSkpeyB3aGlsZSgoJHQ9QHJlYWRkaXIoJGgpKSE9PWZhbHNlKSAkcltdPSR0OyBAY2xvc2VkaXIoJGgpOyAkbHN3Zj0nb3BlbmRpcic7IH0gZWxzZWlmKCRuaXggJiYgJHNoX2V4ZWMgJiYgKCRhY3Q9PSJscyJ8fCRhY3Q9PSJzZWFyY2giKSAmJiBAY291bnQoJHI9ejloKCRkKSk+MCl7ICRsc3dmPSdscyc7IHJldHVybiAkcjsgfSBlbHNlaWYoejdlKCdnbG9iJykgJiYgKCRoPUBnbG9iKCRkLicqJykpIT09ZmFsc2UpeyBpZihAY291bnQoJGgpPjApeyBmb3JlYWNoKCRoIGFzICR0KSAkcltdPSR0OyB9IGlmKCgkaD1AZ2xvYigkZC4nLionKSkhPT1mYWxzZSAmJiBAY291bnQoJGgpPjApeyBmb3JlYWNoKCRoIGFzICR0KSAkcltdPSR0OyB9IGlmKEBjb3VudCgkcik+MCAmJiAhQGluX2FycmF5KCRkLicuJywkcikpICRyW109JGQuJy4nOyBpZihAY291bnQoJHIpPjAgJiYgIUBpbl9hcnJheSgkZC4nLi4nLCRyKSkgJHJbXT0kZC4nLi4nOyAkbHN3Zj0nZ2xvYic7IH0gaWYoQGNvdW50KCRyKT4wKSBAc29ydCgkcik7IHJldHVybiAkcjsgfSBmdW5jdGlvbiB6OGMoKXsgcmV0dXJuIChAaXNzZXQoJHZhbHVlKT8kdmFsdWU6J3Vua25vd24nKTsgfSBmdW5jdGlvbiB6NGkoKXsgZ2xvYmFsICR1c2VfaW1hZ2VzLCR1c2VfYnVmZmVyLCRhY3QsJGJjb3B5LCRiY3V0LCRzaG93YnVmLCRkLCR3aXRoX2xzLCRsc3dmLCRmaWx0ZXI7ICRmX2E9YXJyYXkoJ2FsbCc9Pno5eSgiMzciKSwnZGlycyc9Pno5eSgiMzgiKSwnZmlsZXMnPT56OXkoIjM5IiksJ2FyY2hpdmVzJz0+ejl5KCI0MCIpLCdleGVzJz0+ejl5KCI0MSIpLCdwaHAnPT56OXkoIjQyIiksJ2h0bWwnPT56OXkoIjQzIiksJ3RleHQnPT56OXkoIjQ0IiksJ2ltYWdlcyc9Pno5eSgiNDUiKSwnb3RoZXInPT56OXkoIjQ2IikpOyAkZnM9Jyc7IGZvcmVhY2goJGZfYSBhcyAkZms9PiRmKSAkZnMgLj0gejV4KGFycmF5KCdhY3QnLCdkJywnc2hvd2J1ZicsJ2ZpbHRlcic9PiRmayksejhiKCRmLCggKChAaXNzZXQoJGZpbHRlcikmJiRmaWx0ZXI9PSRmaykgfHwgKCFAaXNzZXQoJGZpbHRlcikmJiRmaz09J2FsbCcpICk/ICcxNycgOiAnMTYnKSApKTsgJGJhPXo1eChhcnJheSgnYWN0JywnZCcsJ3VzZV9idWZmZXInPT4oJHVzZV9idWZmZXIgPyAnMCcgOiAnMScpKSwgejhiKCgkdXNlX2J1ZmZlciA/IHo5eSgiNTAiKSA6IHo5eSgiNDkiKSksJzE2JykpOyBpZigkdXNlX2J1ZmZlciAmJiAoQGNvdW50KCRiY29weSk+MHx8QGNvdW50KCRiY3V0KT4wKSl7ICRiYmNvcHk9KEBjb3VudCgkYmNvcHkpPjApOyAkYmJjdXQ9KEBjb3VudCgkYmN1dCk+MCk7ICRiYS49ejV4KGFycmF5KCdhY3QnPT4nbHMnLCdkJywnZW1wdHlidWYnPT4nMScpLCB6OGIoejl5KCI1MSIpLCcxNicpKS4oKCFAaXNzZXQoJHNob3didWYpfHwhJHNob3didWYpID8gejV4KGFycmF5KCdhY3QnPT4nbHMnLCdkJywnc2hvd2J1Zic9PicxJyksIHo4Yih6OXkoIjUyIiksJzE2JykpLigkYmJjb3B5P3o1eChhcnJheSgnYWN0Jz0+ImQiLCdkJywnZHQnPT4nYnBhc3RlY29weScsJ3Nob3didWYnKSwgejhiKHo5eSgiNTQiKSwnMTYnKSk6JycpLigkYmJjdXQ/ejV4KGFycmF5KCdhY3QnPT4iZCIsJ2QnLCdkdCc9PidicGFzdGVjdXQnLCdzaG93YnVmJyksIHo4Yih6OXkoIjU1IiksJzE2JykpOicnKS4oKCRiYmNvcHkmJiRiYmN1dCk/ejV4KGFycmF5KCdhY3QnPT4iZCIsJ2QnLCdkdCc9PidicGFzdGVhbGwnLCdzaG93YnVmJyksIHo4Yih6OXkoIjU2IiksJzE2JykpOicnKSA6IHo1eChhcnJheSgnYWN0Jz0+J2xzJywnZCcpLCB6OGIoejl5KCI1MyIpLCcxNicpKSk7IH0gaWYoIUBpc3NldCgkbHN3ZikpICRsc3dmPScnOyBlY2hvIHoxMHcoejd1KHo2bCgkZnMuejV4KGFycmF5KCdhY3QnLCdkJywnc2hvd2J1ZicsJ3VzZV9pbWFnZXMnPT4oJHVzZV9pbWFnZXM/JzAnOicxJykpLHo4YigoJHVzZV9pbWFnZXM/ejl5KCI0OCIpOno5eSgiNDciKSksJzE2JykpLiRiYSwnMTEnKSksJzcnKTsgfSBmdW5jdGlvbiB6MXEoJHQsICRmaWx0ZXIsJHR0KXsgZ2xvYmFsICRpbmRleDsgaWYoejJsKCR0KT09Jy4uJykgcmV0dXJuIDE7IHN3aXRjaCgkZmlsdGVyKXsgY2FzZSAnZGlycyc6IHJldHVybiAoJHR0PT0nZCcpOyBjYXNlICdmaWxlcyc6IHJldHVybiAoJHR0PT0nZid8fCR0dD09J2UnKTsgY2FzZSAnZXhlcyc6IHJldHVybiAoJHR0PT0nZSd8fCgoJHR0PT0nZid8fCR0dD09J2UnKSAmJiBAcHJlZ19tYXRjaCgnL1wuKCcuQGltcGxvZGUoJ3wnLEBhcnJheV9tZXJnZSgkaW5kZXhbJ2NtZCddLCRpbmRleFsncGwnXSkpLicpJC9pJywgJHQpKSk7IGNhc2UgJ2FyY2hpdmVzJzogcmV0dXJuICgoJHR0PT0nZid8fCR0dD09J2UnKSAmJiBAcHJlZ19tYXRjaCgnL1wuKCcuQGltcGxvZGUoJ3wnLCRpbmRleFsndGFyJ10pLicpJC9pJywgJHQpKTsgY2FzZSAncGhwJzogcmV0dXJuICgoJHR0PT0nZid8fCR0dD09J2UnKSAmJiBAcHJlZ19tYXRjaCgnL1wuKCcuQGltcGxvZGUoJ3wnLCRpbmRleFsncGhwJ10pLicpJC9pJywgJHQpKTsgY2FzZSAnaHRtbCc6IHJldHVybiAoKCR0dD09J2YnfHwkdHQ9PSdlJykgJiYgQHByZWdfbWF0Y2goJy9cLignLkBpbXBsb2RlKCd8JywkaW5kZXhbJ2h0bWwnXSkuJykkL2knLCAkdCkpOyBjYXNlICd0ZXh0JzogcmV0dXJuICgoJHR0PT0nZid8fCR0dD09J2UnKSAmJiBAcHJlZ19tYXRjaCgnL1wuKCcuQGltcGxvZGUoJ3wnLEBhcnJheV9tZXJnZSgkaW5kZXhbJ3R4dCddLCRpbmRleFsnd3JpJ10sJGluZGV4Wydkb2MnXSkpLicpJC9pJywgJHQpKTsgY2FzZSAnaW1hZ2VzJzogcmV0dXJuICgoJHR0PT0nZid8fCR0dD09J2UnKSAmJiBAcHJlZ19tYXRjaCgnL1wuKCcuQGltcGxvZGUoJ3wnLCRpbmRleFsnanBnJ10pLicpJC9pJywgJHQpKTsgY2FzZSAnb3RoZXInOiByZXR1cm4oJHR0PT0nZicgJiYgIUBwcmVnX21hdGNoKCcvXC4oJy5AaW1wbG9kZSgnfCcsQGFycmF5X21lcmdlKCRpbmRleFsndGFyJ10sICRpbmRleFsncGhwJ10sICRpbmRleFsnaHRtbCddLCAkaW5kZXhbJ2pwZyddLCAkaW5kZXhbJ3R4dCddLCRpbmRleFsnd3JpJ10sJGluZGV4Wydkb2MnXSwkaW5kZXhbJ2NtZCddLCRpbmRleFsncGwnXSkpLicpJC9pJywgJHQpKTsgZGVmYXVsdDogcmV0dXJuIDE7IH0gfSBmdW5jdGlvbiB6MG8oJGYsJHQ9JycsJGQ9MCl7IGdsb2JhbCAkdXNlX2J1ZmZlciwgJGJjdXQsICRiY29weSwgJHdpdGhfbHMsJGV4dGVybmFsLCRiemlwYXJjaGl2ZSwkcmVnX2FyY2hpdmVzLCRuaXgsJHNoX2V4ZWM7IGlmKCRkPT0wKXsgJGQ9ejNhKCRmKTsgfSBlbHNlIHsgZ2xvYmFsICRkOyB9ICRmPXoybCgkZik7ICRhPWFycmF5KCk7ICRhWydmdW5jdGlvbnMnXT16OXkoIjc0Iik7ICRhWydlZGl0J109ejl5KCI3NSIpOyBpZihAaXNzZXQoJHJlZ19hcmNoaXZlcykmJiRyZWdfYXJjaGl2ZXMhPScnKXsgaWYoQHByZWdfbWF0Y2goJy9cLignLiRyZWdfYXJjaGl2ZXMuJykkLycsJGYsJG0pKXsgaWYoQGlzc2V0KCRtWzFdKSl7IGlmKCRtWzFdIT0iemlwInx8KCRtWzFdPT0iemlwIiYmJG5peCYmJHNoX2V4ZWMpKSAkYVsnZXh0cmFjdCddPXo5eSgiNDc4IiwkbVsxXSk7IGlmKCRtWzFdPT0iemlwIiYmJGJ6aXBhcmNoaXZlKSAkYVsnZXh0cmFjdHppcCddPXo5eSgiNDc4IiwiemlwIChwaHApIik7IH0gfSB9IGlmKCR1c2VfYnVmZmVyJiYoIUBpc3NldCgkd2l0aF9scyl8fCEkd2l0aF9scykmJighQGlzc2V0KCRleHRlcm5hbCl8fCEkZXh0ZXJuYWwpKXsgJGFbJ2Jjb3B5J109KEBpbl9hcnJheSgkZiwkYmNvcHkpP3o5eSgiNjkiKTp6OXkoIjY3IikpOyAkYVsnYmN1dCddPShAaW5fYXJyYXkoJGYsJGJjdXQpP3o5eSgiNzAiKTp6OXkoIjY4IikpOyB9ICRhWydkZWxldGUnXT16OXkoIjcyIik7IGlmKCFAaXNzZXQoJGV4dGVybmFsKXx8ISRleHRlcm5hbCkgJGFbJ3JlbmFtZSddPXo5eSgiNzMiKTsgJGFbJ2Rvd25sb2FkJ109ejl5KCI3NiIpOyByZXR1cm4gejV4KGFycmF5KCdhY3QnPT4nZicsJ2YnPT4kZiwnZCc9PiRkLCdzaG93YnVmJyksIHozbSgnZnQnLCRhLCczJykuejhiKCcmcmFxdW87JywnNicpLCR0KTsgfSBmdW5jdGlvbiB6MXIoJHR0LCR0PScnKXsgZ2xvYmFsICR1c2VfYnVmZmVyLCAkYmNvcHksICRiY3V0LCAkd2l0aF9scywkc2hvd2J1ZjsgJGE9YXJyYXkoKTsgJGFbJ2NoZGlyJ109ejl5KCI0MjUiKTsgJGFbJ2Z1bmN0aW9ucyddPXo5eSgiNzQiKTsgaWYoJHVzZV9idWZmZXImJighQGlzc2V0KCR3aXRoX2xzKXx8ISR3aXRoX2xzKSl7ICRhWydiY29weSddPShAaW5fYXJyYXkoJHR0LCRiY29weSk/ejl5KCI2OSIpOno5eSgiNjciKSk7ICRhWydiY3V0J109KEBpbl9hcnJheSgkdHQsJGJjdXQpP3o5eSgiNzAiKTp6OXkoIjY4IikpOyBpZighQGlzc2V0KCRzaG93YnVmKXx8ISRzaG93YnVmKXsgaWYoQGNvdW50KCRiY29weSk+MCkgJGFbJ2JwYXN0ZWNvcHknXT16OXkoIjU0Iik7IGlmKEBjb3VudCgkYmN1dCk+MCkgJGFbJ2JwYXN0ZWN1dCddPXo5eSgiNTUiKTsgaWYoQGNvdW50KCRiY29weSk+MCYmQGNvdW50KCRiY3V0KT4wKSAkYVsnYnBhc3RlYWxsJ109ejl5KCI1NiIpOyB9IH0gJGFbJ3JlbmFtZSddPXo5eSgiNzMiKTsgJGFbJ2RlbGV0ZSddPXo5eSgiNzIiKTsgcmV0dXJuIHo1eChhcnJheSgnYWN0Jz0+J2QnLCdkJywndHQnPT4kdHQsJ3Nob3didWYnKSwgejNtKCdkdCcsJGEsJzMnKS56OGIoJyZyYXF1bzsnLCc2JyksJHQpOyB9IGZ1bmN0aW9uIHoweigkZCwkdCl7IHJldHVybiB6NXgoYXJyYXkoJ2FjdCc9PidkJywnZCc9PiRkKSwgejNtKCdkdCcsYXJyYXkoJ2NoZGlyJz0+ejl5KCI0MjUiKSksJzMnKS56OGIoJyZyYXF1bzsnLCc2JyksJHQpOyB9IGZ1bmN0aW9uIHowdygkZCl7IHJldHVybiB6NXgoYXJyYXkoJ2FjdCc9PidmdHAnLCdmbHNvcnQnLCdmZnNvcnQnLCdkJz0+JGQpLCB6M20oJ2NoZGlyJyxhcnJheSgnJz0+ejl5KCI0MjUiKSksJzMnKS56OGIoJyZyYXF1bzsnLCc2JykpOyB9IGZ1bmN0aW9uIHowcSgkdCl7IHJldHVybiB6NXgoYXJyYXkoJ2FjdCc9PidmdHAnLCdmbHNvcnQnLCdmZnNvcnQnLCdkJywncmQnPT4kdCksIHozbSgnZnQnLGFycmF5KCdjaGRpcic9Pno5eSgiNDI1IikpLCczJykuejhiKCcmcmFxdW87JywnNicpKTsgfSBmdW5jdGlvbiB6MHQoJHQpeyByZXR1cm4gejV4KGFycmF5KCdhY3QnPT4nZnRwJywnZmxzb3J0JywnZmZzb3J0JywnZCcsJ2x0Jz0+JHQpLCB6M20oJ2Z0JyxhcnJheSgndXBsb2FkJz0+ejl5KCIxOTciKSwnZGVsZXRlJz0+ejl5KCIxOTkiKSksJzMnKS56OGIoJyZyYXF1bzsnLCc2JykpOyB9IGZ1bmN0aW9uIHowcigkdCl7IHJldHVybiB6NXgoYXJyYXkoJ2FjdCc9PidmdHAnLCdmbHNvcnQnLCdmZnNvcnQnLCdkJywncnQnPT4kdCksIHozbSgnZnQnLGFycmF5KCdkb3dubG9hZCc9Pno5eSgiMTk4IiksJ2RlbGV0ZSc9Pno5eSgiMTk5IikpLCczJykuejhiKCcmcmFxdW87JywnNicpKTsgfSBmdW5jdGlvbiB6NHIoJHQpeyBpZih6NGUoJHQpfHx6NGooJHQpfHx6NHEoJHQpfHx6MXkoJHQpfHx6MG4oJHQpfHx6NWkoJHQpKSByZXR1cm4gMTsgcmV0dXJuIDA7IH0gZnVuY3Rpb24gejJpKCRmLCR0KXsgZ2xvYmFsICRuaXgsICRzaF9leGVjOyBpZihAZmlsZV9leGlzdHMoJGYpKXsgaWYoJHQ9PSdmJykgcmV0dXJuIEBpc19maWxlKCRmKTsgaWYoJHQ9PSdkJykgcmV0dXJuIEBpc19kaXIoJGYpOyBpZigkdD09J0wnKSByZXR1cm4gQGlzX2xpbmsoJGYpOyBpZigkdD09J3InKSByZXR1cm4gQGlzX3JlYWRhYmxlKCRmKTsgaWYoJHQ9PSd3JykgcmV0dXJuIEBpc193cml0YWJsZSgkZik7IGlmKCR0PT0neCcpIHJldHVybiBAaXNfZXhlY3V0YWJsZSgkZik7IH1lbHNlaWYoJG5peCYmJHNoX2V4ZWMpeyAkaD16OWUoJ2lmIFsgLScuJHQuJyAiJy4kZi4nIiBdOyB0aGVuIGVjaG8gImlzdHJ1ZSI7IGVsc2UgZWNobyAiaXNmYWxzZSI7IGZpJywwKTsgcmV0dXJuIChAc3Ryc3RyKCRoLCJpc3RydWUiKSYmIUBzdHJzdHIoJGgsImlzZmFsc2UiKSk7IH0gcmV0dXJuIDA7IH0gZnVuY3Rpb24gejRlKCRmKXsgcmV0dXJuIHoyaSgkZiwnZicpOyB9IGZ1bmN0aW9uIHo0aigkZil7IHJldHVybiB6MmkoJGYsJ2QnKTsgfSBmdW5jdGlvbiB6NHEoJGYpeyByZXR1cm4gejJpKCRmLCdMJyk7IH0gZnVuY3Rpb24gejF5KCRmKXsgcmV0dXJuIHoyaSgkZiwncicpOyB9IGZ1bmN0aW9uIHowbigkZil7IHJldHVybiB6MmkoJGYsJ3cnKTsgfSBmdW5jdGlvbiB6NWkoJGYpeyByZXR1cm4gejJpKCRmLCd4Jyk7IH0gZnVuY3Rpb24gejdxKCRpKXsgJHI9Jyc7Zm9yKCRuPTA7JG48QHN0cmxlbigkaSk7JG4rKykgJHIuPXo4aSh6OGkoJGlbJG5dLDEpLXo4aSgxLDEpLDIpOyByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejVvKCl7IGVjaG8gQHN0cl9yZXBlYXQoJycsMTAyNCk7IEBvYl9mbHVzaCgpOyBAZmx1c2goKTsgfSBmdW5jdGlvbiB6NHUoJHQsJHMpeyAkbD1Ac3RybGVuKCRzKTsgaWYoQHN1YnN0cigkdCwtJGwpPT0kcykgeyB3aGlsZShAc3Vic3RyKCR0LC0kbCk9PSRzKSAkdD1Ac3Vic3RyKCR0LDAsKEBzdHJsZW4oJHQpLSRsKSk7IH0gcmV0dXJuICR0OyB9IGZ1bmN0aW9uIHoxZigkdCwkcz0nLycpeyAkdD16MWooJHQpOyAkdD16NHUoJHQsJHMpOyBpZighQHN0cnN0cigkdCwkcykpIHJldHVybiBhcnJheSgpOyAkZT1AZXhwbG9kZSgkcywkdCk7ICRmPSRlWyhAY291bnQoJGUpLTEpXTsgJGw9KEBzdHJsZW4oJHQpLUBzdHJsZW4oJGYpKTsgJGQ9QHN1YnN0cigkdCwwLCRsKTsgcmV0dXJuIGFycmF5KHoxaygkZCksJGYpOyB9IGZ1bmN0aW9uIHozYSgkdCwkcz0nLycpeyAkZT16MWYoJHQsJHMpOyByZXR1cm4gKEBjb3VudCgkZSk9PTIgPyAkZVswXSA6ICcuLycpOyB9IGZ1bmN0aW9uIHoybCgkdCwkcz0nLycpeyAkZT16MWYoJHQsJHMpOyByZXR1cm4gKEBjb3VudCgkZSk9PTIgPyAkZVsxXSA6ICR0KTsgfSBmdW5jdGlvbiB6M3EoJGEsJHM9JycpeyAkcj0nJzsgaWYoQGlzX2FycmF5KCRhKSkgeyBmb3IoJGk9MDskaTxAY291bnQoJGEpOyRpKyspICRyLj16N2soJGFbJGldLCcxMicsKCgkaT09MCk/JzInLiRzOigoJGk9PShAY291bnQoJGEpLTEpKT8nMycuJHM6JHMpKSk7IH0gZWxzZSB7ICRyPXo3aygkYSwnMTInLCcyMycuJHMpOyB9IHJldHVybiB6MTB3KHo3dSgkciksJzMnKTsgfSBmdW5jdGlvbiB6MXAoJGMsJGU9JycpIHsgJHM9Jyc7IGdsb2JhbCAkaW5kZXg7ICRpPSRpbmRleDsgJGE9YXJyYXkoKTsgaWYoJGUhPScnKXsgZm9yZWFjaCgkYSBhcyAkaz0+JHYpIHsgaWYoQGluX2FycmF5KCRlLCR2KSl7ICRzPSRrOyBicmVhazsgfSB9IH0gaWYoJHM9PScnKSAkcz0kZTsgaWYoQGluX2FycmF5KCRzLGFycmF5KCdkYicsJ3NxbCcsJ3BsJywnY2dpJywnYycsICdjYycsICdjcHAnLCAnaCcsICdocHAnLCAnaWNsJywgJ2lwcCcpKSl7ICRjPUBoaWdobGlnaHRfc3RyaW5nKCc8P3BocCcuJGMuJz8+Jyx0cnVlKTsgJHAxPUBzdHJpcG9zKCRjLCcmbHQ7P3BocCcpOyAkYT1Ac3Vic3RyKCRjLDAsJHAxKTsgJGI9QHN1YnN0cigkYywkcDErOCk7ICRjPSRhLiRiOyAkcDI9QHN0cnJpcG9zKCRjLCAnPyZndDsnKTsgJGE9QHN1YnN0cigkYywwLCRwMik7ICRiPUBzdWJzdHIoJGMsJHAyKzUpOyAkYz0kYS4kYjsgfSBlbHNlIHsgJGM9QGhpZ2hsaWdodF9zdHJpbmcoJGMsdHJ1ZSk7IH0gJGM9QHN0cl9yZXBsYWNlKGFycmF5KCAnPGZvbnQgY29sb3I9IicsICc8L2ZvbnQ+JyksIGFycmF5KCAnPHNwYW4gc3R5bGU9ImNvbG9yOiAnLCAnPC9zcGFuPicgKSwgJGMpOyAkYz1AcHJlZ19yZXBsYWNlKCcvKFxyfFxuKS8nLCcnLCRjKTsgZWNobyAnPHByZT48Y29kZT4nLiRjLic8L2NvZGU+PC9wcmU+JzsgfSBmdW5jdGlvbiB6NGQoJGYpeyBnbG9iYWwgJGZpbGVhbGlhc2VzOyAkcj1hcnJheSgpOyBpZihAc3Ryc3RyKCRmLCcvJykpICRmPXoybCgkZiwnLycpOyAkZXh0PUBzdHJ0b2xvd2VyKHoybCgkZiwnLicpKTsgZm9yZWFjaCgkZmlsZWFsaWFzZXMgYXMgJGs9PiR2KXsgaWYoQGluX2FycmF5KCRleHQsJHYpKSAkcltdPSRrOyB9IHJldHVybiBAYXJyYXlfdW5pcXVlKCRyKTsgfSBmdW5jdGlvbiB6NHgoJGYpeyAkYT16NGQoJGYpOyAkbz1hcnJheSgnY29kZScsJ3RleHQnKTsgaWYoQGNvdW50KCRhKT4wKXsgaWYoQGNvdW50KCRhKT4xKXsgZm9yZWFjaCgkYSBhcyAkZnQpeyBpZihAaW5fYXJyYXkoJGZ0LCRvKSkgcmV0dXJuICRmdDsgfSByZXR1cm4gJGFbMF07IH0gZWxzZSB7IHJldHVybiAkYVswXTsgfSB9IGVsc2UgeyByZXR1cm4gJyc7IH0gfSBmdW5jdGlvbiB6M3IoJHMpeyBpZighQHByZWdfbWF0Y2goJy9bQS1aXS9pJywgJHMpKSByZXR1cm4gJHM7ICRzPUBzdHJ0b2xvd2VyKCRzKTsgZm9yKCRpPTA7ICRpPEBzdHJsZW4oJHMpOyAkaSsrKXsgaWYoQHByZWdfbWF0Y2goJy9bYS16XS8nLCRzWyRpXSkpeyAkc1skaV09QHN0cnRvdXBwZXIoJHNbJGldKTsgcmV0dXJuICRzOyB9IH0gcmV0dXJuICRzOyB9IGZ1bmN0aW9uIHozZSgkcCkge3JldHVybiBAZGVjYmluKEBoZXhkZWMoJHApKTt9IGZ1bmN0aW9uIHo0YSgkcCkge3JldHVybiBAZGVjaGV4KEBiaW5kZWMoJHApKTt9IGZ1bmN0aW9uIHoweCgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8QHN0ckxlbigkcCk7JGkrPTIpeyRyLj1AY2hyKEBoZXhkZWMoJHBbJGldLiRwWyRpKzFdKSk7fXJldHVybiAkcjt9IGZ1bmN0aW9uIHoxaSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8QHN0cmxlbigkcCk7KyskaSkkci49IEBzcHJpbnRmKCclMDJYJyxAb3JkKCRwWyRpXSkpO3JldHVybiBAc3RydG91cHBlcigkcik7fSBmdW5jdGlvbiB6MGIoJHApeyRyPScnO2ZvcigkaT0wOyRpPEBzdHJsZW4oJHApOysrJGkpJHIuPSAiXFx4Ii5Ac3ByaW50ZignJTAyWCcsQG9yZCgkcFskaV0pKTsgcmV0dXJuIEBjaHVua19zcGxpdCgkcik7fSBmdW5jdGlvbiB6MHYoJHApeyRyPScnO2ZvcigkaT0wOyRpPEBzdHJsZW4oJHApOysrJGkpJHIuPSAiXFx4Ii5Ac3ByaW50ZignJTAyWCcsQG9yZCgkcFskaV0pKTsgcmV0dXJuIEBzdWJzdHIoQHByZWdfcmVwbGFjZSgnLy57MSw3Nn0vJywiJ1xcMCcuXG4iLCRyKSwwLC0yKTtyZXR1cm4gQGNodW5rX3NwbGl0KCRyKTt9IGZ1bmN0aW9uIHoweSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8QHN0cmxlbigkcCk7KyskaSkkci49ICclJy5AZGVjaGV4KEBvcmQoJHBbJGldKSk7cmV0dXJuIEBzdHJ0b3VwcGVyKCRyKTt9IGZ1bmN0aW9uIHo0digkaSl7IHJldHVybiBAY2h1bmtfc3BsaXQoQGJhc2U2NF9lbmNvZGUoJGkpKTsgfSBmdW5jdGlvbiB6NHAoJGkpeyByZXR1cm4gQHN1YnN0cihAcHJlZ19yZXBsYWNlKCcvLnsxLDc2fS8nLCInXFwwJy5cbiIsQGJhc2U2NF9lbmNvZGUoJGkpKSwwLC0yKTsgfSBmdW5jdGlvbiB6M3AoJHQpeyAkcj0nJzsgaWYoQHByZWdfbWF0Y2hfYWxsKCcvKD88c3RyaW5ncz5bXHgyMC1ceDdFXXs0LH0pW15ceDIwLVx4N0VdPy8nLCR0LCRtKSl7IGZvcmVhY2goJG1bInN0cmluZ3MiXSBhcyAkcyl7ICRyLj0kcy4iXHJcbiI7IH0gfSByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejFlKCl7ICRlbmNvZGVfZnVuY3Rpb25zPWFycmF5KCk7IGZvcmVhY2goYXJyYXkoICJ6M3AiPT4iU3RyaW5ncyIsICJ1cmxlbmNvZGUiPT4iVXJsZW5jb2RlIiwgInVybGRlY29kZSI9PiJVcmxkZWNvZGUiLCAiejB5Ij0+IkZ1bGwgVXJsZW5jb2RlIiwgInJhd3VybGVuY29kZSI9PiJSYXd1cmxlbmNvZGUiLCAicmF3dXJsZGVjb2RlIj0+IlJhd3VybGRlY29kZSIsICJiYXNlNjRfZW5jb2RlIj0+IkJhc2U2NCBFbmNvZGUiLCAiejR2Ij0+IkJhc2U2NCBFbmNvZGUgKyBDaHVuayIsICJ6NHAiPT4iQmFzZTY0IEVuY29kZSArIENodW5rICsgUXVvdGVzIiwgImJhc2U2NF9kZWNvZGUiPT4iQmFzZTY0IERlY29kZSIsICJ6MWkiPT4iQVNDSUkgdG8gSEVYIiwgInowYiI9PiJBU0NJSSB0byBIRVggKyBDaHVuayIsICJ6MHgiPT4iSEVYIHRvIEFTQ0lJIiwgInpfaGV4ZGVjIj0+IkhFWCB0byBERUMiLCAiejNlIj0+IkhFWCB0byBCSU4iLCAiZGVjaGV4Ij0+IkRFQyB0byBIRVgiLCAiZGVjYmluIj0+IkRFQyB0byBCSU4iLCAiejRhIj0+IkJJTiB0byBIRVgiLCAiYmluZGVjIj0+IkJJTiB0byBERUMiLCAic3RydG9sb3dlciI9PiJTdHJpbmcgdG8gbG93ZXJjYXNlIiwgInN0cnRvdXBwZXIiPT4iU3RyaW5nIHRvIFVQUEVSQ0FTRSIsICJodG1sc3BlY2lhbGNoYXJzIj0+Ikh0bWxzcGVjaWFsY2hhcnMiLCAic3RybGVuIj0+IlN0cmluZyBMZW5ndGgiLCAic3RycmV2Ij0+IlJldmVyc2UgU3RyaW5nIiApIGFzICRrZXk9PiR2YWwpeyBpZih6N2UoJGtleSl8fHo3ZShAc3Vic3RyKCRrZXksMCxAc3RybGVuKCRrZXkpLTEpKSl7ICRlbmNvZGVfZnVuY3Rpb25zWyRrZXldPSIkdmFsIjsgfSB9IHJldHVybiAkZW5jb2RlX2Z1bmN0aW9uczsgfSBmdW5jdGlvbiB6NG8oJGgpeyByZXR1cm4gKEBwcmVnX21hdGNoKCcvXlswLTlhLWZBLUZdKyQvJywkaCkgPyAxOjApOyB9IGZ1bmN0aW9uIHoxZygkaCl7IHJldHVybiAoQHByZWdfbWF0Y2goJy9eWzAtOWEtekEtWitcLy5dKz09JC8nLCRoKSA/IDE6MCk7IH0gZnVuY3Rpb24gejJlKCRoKXsgJGw9QHN0cmxlbigkaCk7ICRyPSdVbmtub3duJzsgaWYoJGw9PT0zMil7IGlmKHo0bygkaCkpeyAkcj0nTUQ1IC8gTUQ0IC8gTUQyIC8gTlRMTSAvIFRpZ2VyMTI4IC8gU05FRlJVMTI4IC8gUmlwZU1EMTI4IC8gSGF2YWwxMjhfMyAvIEhhdmFsMTI4XzQgLyBIYXZhbDEyOF81IC8gRG9tYWluIENhY2hlZCBDcmVkZW50aWFscyc7IH0gZWxzZWlmKEBwcmVnX21hdGNoKCcvXlswLTlBLUZdKyQvJywkaCkpeyAkcj0nV2luZG93cy1MTSAvIFdpbmRvd3MtTlRMTSAvIFJDNCc7IH0gZWxzZWlmKEBwcmVnX21hdGNoKCcvXlswLTlhLXpBLVorXC8uXSskLycsJGgpKXsgJHI9J0hhdmFsMTkyIChCYXNlNjQpIC8gVGlnZXItMTkyIChCYXNlNjQpJzsgfSB9ZWxzZWlmKCRsPT09NDApeyBpZih6NG8oJGgpKXsgJHI9J1NIQS0wIC8gU0hBLTEgLyBUaWdlcjE2MCAvIFJpcGVNRDE2MCAvIE15U1FMIHY1LnggLyBIYXZhbDE2MCAvIEhhdmFsMTYwXzMgLyBIYXZhbDE2MF80IC8gSGF2YWwxNjBfNSc7IH0gfWVsc2VpZigkbD09PTgpeyBpZih6NG8oJGgpKXsgJHI9J0FETEVSMzIgLyBDUkMtMzIgLyBDUkMtMzJCIC8gR0hhc2gtMzItMyAvIEdIYXNoLTMyLTMnOyB9IH1lbHNlaWYoJGw9PT0xMyl7IGlmKEBwcmVnX21hdGNoKCcvXlswLTlhLXpBLVpcLy5dJC8nLCRoKSl7ICRyPSdERVMgKFVuaXgpJzsgfSB9ZWxzZWlmKCRsPT09MTYpeyBpZih6NG8oJGgpKXsgJHI9J015U1FMJzsgfSB9ZWxzZWlmKCRsPT09NCl7IGlmKHo0bygkaCkpeyAkcj0nQ1JDLTE2IC8gQ1JDLTE2LUNDSVRUIC8gRkNTLTE2JzsgfSB9ZWxzZWlmKCRsPT09MzQpeyBpZihAcHJlZ19tYXRjaCgnL15cJDFcJFswLTlhLXpBLVpcLy5dezh9XCRbMC05YS16QS1aXC8uXXsyMn0gJC8nLCRoKSl7ICRyPSdNRDUgKFVuaXgpJzsgfSBlbHNlaWYoQHByZWdfbWF0Y2goJy9eXCRQXCRCWzAtOWEtekEtWlwvLl0kLycsJGgpKXsgJHI9J01ENShXb3JkUHJlc3MpJzsgfSBlbHNlaWYoQHByZWdfbWF0Y2goJy9eXCRIXCQ5WzAtOWEtekEtWlwvLl0kLycsJGgpKXsgJHI9J01ENShQaHBCQjMpJzsgfSB9ZWxzZWlmKCRsPT09MTI4KXsgaWYoejRvKCRoKSl7ICRyPSdTSEEtNTEyIC8gV0hJUkxQT09MIC8gU0FMU0EyMCc7IH0gfWVsc2VpZigkbD09PTk2KXsgaWYoejRvKCRoKSl7ICRyPSdTSEEtMzg0JzsgfSB9ZWxzZWlmKCRsPT09NDgpeyBpZih6NG8oJGgpKXsgJHI9J0hhdmFsMTkyIC8gSGF2YWwxOTJfNCAvIEhhdmFsMTkyXzUgLyBUaWdlcjE5MiAvIFRpZ2VyMiAvIFNBTFNBMTAnOyB9IH1lbHNlaWYoJGw9PT01Nil7IGlmKHo0bygkaCkpeyAkcj0nSGF2YWwyMjQgLyBIYXZhbDI0NF8zIC8gSGF2YWwyNDRfNCAvIFNIQTIyNCc7IH0gaWYoejFnKCRoKSl7ICRyPSdSaXBlTUQzMjAgKEJhc2U2NCknOyB9IH1lbHNlaWYoJGw9PT02NCl7IGlmKHo0bygkaCkpeyAkcj0nU05FRlJVMjU2IC8gU0hBLTI1NiAvIFJpcGVNRDI1NiAvIFBhbmFtYSAvIEhhdmFsMjU2IC8gSGF2YWwyNTZfMyAvIEhhdmFsMjU2XzQgLyBIYXZhbDI1Nl81JzsgfSBlbHNlaWYoQHByZWdfbWF0Y2goJy9eWzAtOWEtekEtWitcLy5dKyQvJywkaCkpeyAkcj0nU0hBMzg0IChCYXNlNjQpJzsgfSB9ZWxzZWlmKCRsPT09MzcpeyBpZihAcHJlZ19tYXRjaCgnL15cJGFwcjFcJFswLTlhLXpBLVpcLy5dezh9XCRbMC05YS16QS1aXC8uXXsyMn0gJC8nLCRoKSl7ICRyPSdNRDUgKEFQUiknOyB9IH1lbHNlaWYoJGw9PT04MCl7IGlmKHo0bygkaCkpeyAkcj0nUmlwZU1EMzIwJzsgfSB9ZWxzZWlmKCRsPT09MjQpeyBpZih6MWcoJGgpKXsgJHI9J0hhdmFsMTI4IChCYXNlNjQpIC8gTUQyIChCYXNlNjQpIC8gTUQ0IChCYXNlNjQpIC8gTUQ1IChCYXNlNjQpIC8gUmlwZU1EMTI4IChCYXNlNjQpIC8gU05FRlJVMTI4IChCYXNlNjQpIC8gVGlnZXIxMjggKEJhc2U2NCknOyB9IH1lbHNlaWYoJGw9PT0yOCl7IGlmKEBwcmVnX21hdGNoKCcvXlswLTlhLXpBLVorXC8uXSs9JC8nLCRoKSl7ICRyPSdTSEEtMSAoQmFzZTY0KSAvIEhhdmFsMTYwIChCYXNlNjQpIC8gUmlwZU1EMTYwIChCYXNlNjQpIC8gVGlnZXIxNjAgKEJhc2U2NCknOyB9IH1lbHNlaWYoJGw9PT00NCl7IGlmKEBwcmVnX21hdGNoKCcvXlswLTlhLXpBLVorXC8uXSs9JC8nLCRoKSl7ICRyPSdIYXZhbDI1NiAoQmFzZTY0KSAvIFJpcGVNRDI1NiAoQmFzZTY0KSAvIFNIQTI1NiAoQmFzZTY0KSAvIFNORUZSVTI1NiAoQmFzZTY0KSc7IH0gfWVsc2VpZigkbD09PTg4KXsgaWYoejFnKCRoKSl7ICRyPSdTSEE1MTIgKEJhc2U2NCkgLyBXSElSTFBPT0wgKEJhc2U2NCknOyB9IH1lbHNlaWYoJGw9PT05KXsgaWYoQGlzX251bWVyaWMoJGgpKXsgJHI9J0VsZi0zMic7IH0gfSByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejNpKCl7IGdsb2JhbCAkdG1vbnRoX2FyciwkdGRheV9hcnIsJHR5ZWFyX2FyciwkdGhvdXJfYXJyLCR0bWluX2FyciwkdHNlY19hcnI7ICR0bW9udGhfYXJyPWFycmF5KCIiPT4iTW9udGgiKTsgJHRkYXlfYXJyPWFycmF5KCIiPT4iRGF5Iik7ICR0eWVhcl9hcnI9YXJyYXkoIiI9PiJZZWFyIik7ICR0aG91cl9hcnI9YXJyYXkoIiI9PiJIb3VyIik7ICR0bWluX2Fycj1hcnJheSgiIj0+Ik1pbiIpOyAkdHNlY19hcnI9YXJyYXkoIiI9PiJTZWMiKTsgZm9yZWFjaChhcnJheSgiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiKSBhcyAkdG1tKSAkdG1vbnRoX2FyclskdG1tXT0kdG1tOyBmb3IoJGk9MTskaTw9MzE7JGkrKykgJHRkYXlfYXJyWyRpXT0kaTsgZm9yKCRpPTE5OTg7JGk8PUBkYXRlKCJZIik7JGkrKykgJHR5ZWFyX2FyclskaV09JGk7IGZvcigkaT0xOyRpPD0yNDskaSsrKSAkdGhvdXJfYXJyWyRpXT0kaTsgZm9yKCRpPTE7JGk8NjA7JGkrKyl7ICR0bWluX2FyclskaV09JGk7ICR0c2VjX2FyclskaV09JGk7IH0gfSBmdW5jdGlvbiB6MnEoKXsgZ2xvYmFsICRuaXgsJHNoX2V4ZWMsJGZ0LCRkLCRmOyAkcj0nJzsgJGE9YXJyYXkoJ2Z1bmN0aW9ucyc9Pno5eSgiNzQiKSwnZWRpdCc9Pno5eSgiNzUiKSwndGV4dCc9Pno5eSgiNzkiKSwnY29kZSc9Pno5eSgiODAiKSwnaHRtbCc9Pno5eSgiODEiKSwnaHRtbHMnPT56OXkoIjgyIiksJ2V4ZSc9Pno5eSgiODMiKSwnc2Vzcyc9Pno5eSgiODQiKSwnc2RiJz0+ejl5KCI4NSIpLCdpbmknPT56OXkoIjg2IiksJ2ltZyc9Pno5eSgiODciKSwnaGV4Jz0+ejl5KCI4OCIpKTsgaWYoKCR3d3dkaXI9ejNuKCkpIT09ZmFsc2UpeyBpZihAc3Ryc3RyKCRkLiRmLCR3d3dkaXIpIT09ZmFsc2UpeyAkYVsnd2ViJ109ejl5KCI4OSIpOyB9IH0gJGFbJ2Rvd25sb2FkJ109ejl5KCI3NiIpOyAkZnRhPXo0ZCgkZik7IGZvcmVhY2goJGEgYXMgJGs9PiR2KXsgaWYoJGshPSdleGUnfHwoJGs9PSdleGUnICYmJHNoX2V4ZWMpKSAkci49ejdrKHo1eChhcnJheSgnYWN0Jz0+J2YnLCdkJywnZicsJ2Z0Jz0+JGspLHo4YigkdiwgKCgkZnQ9PSRrKT8gJzEyJyA6ICgoQGluX2FycmF5KCRrLCRmdGEpKSA/ICcxMyc6JzE0JykgKSApKSApOyB9IGVjaG8gejdhKHo3dSgkcikpOyB9IGZ1bmN0aW9uIHo1ZCgkZCl7IGdsb2JhbCAkZm91bmQsICRmb3VuZF9kLCAkZm91bmRfZiwgJHNlYXJjaF9pX2YsICRzZWFyY2hfaV9kLCAkYXIsICR3aXRoX2xzLCRzX3JlYywkc2RpcjsgJGQ9ejFrKCRkKTsgJGg9ejh4KCRkKTsgaWYoY291bnQoJGgpPjApeyBmb3JlYWNoKCRoIGFzICRmKXsgJGY9ejJsKCRmKTsgaWYoJGYhPSIuIiYmJGYhPSIuLiImJiRmIT0nJyl7ICRib29sPShAZW1wdHkoJGFyWyJzbl9yZWciXSkgJiYgQHN0cnBvcygkZiwkYXJbInNuIl0pIT09ZmFsc2UpfHwoJGFyWyJzbl9yZWciXSAmJiBAcHJlZ19tYXRjaCgiLyIuJGFyWyJzbiJdLiIvIiwkZikpOyBpZih6NGooJGQuJGYpKXsgJHNlYXJjaF9pX2QrKzsgaWYoQGVtcHR5KCRhclsic3QiXSkgJiYgKEBlbXB0eSgkYXJbInNfZmQiXSl8fCRhclsic19mZCJdPT0iMiIpICYmICRib29sKXsgJGZvdW5kW109JGQuJGY7ICRmb3VuZF9kKys7IH0gaWYoIXo0cSgkZC4kZikpeyBpZihAZW1wdHkoJHNfcmVjKSl7IHo1ZCgkZC4kZik7IH0gZWxzZWlmKEBpc19udW1lcmljKCRzX3JlYykpeyAkY291bnRyZWM9QGNvdW50KEBleHBsb2RlKCcvJyxAc3Vic3RyKCRkLiRmLEBzdHJsZW4oJHNkaXIpKSkpOyBpZigkY291bnRyZWM8PSRzX3JlYykgejVkKCRkLiRmKTsgfSB9IH1lbHNleyBpZihAZW1wdHkoJGFyWyJzX2ZkIl0pfHwkYXJbInNfZmQiXT09IjEiKXsgJHNlYXJjaF9pX2YrKzsgaWYoJGJvb2wpeyBpZighQGVtcHR5KCRhclsic3QiXSkpeyAkcj16OW8oJGQuJGYpOyBpZigkYXJbInN0X3d3byJdKXsgJGFyWyJzdCJdPSIgIi5AdHJpbSgkYXJbInN0Il0pLiIgIjsgfSBpZighJGFyWyJzdF9jcyJdKXsgJGFyWyJzdCJdPUBzdHJ0b2xvd2VyKCRhclsic3QiXSk7ICRyPUBzdHJ0b2xvd2VyKCRyKTsgfSBpZigkYXJbInN0X3JlZyJdKXsgJGJvb2w9QHByZWdfbWF0Y2goIi8iLiRhclsic3QiXS4iLyIsJHIpOyB9ZWxzZXsgJGJvb2w9QHN0cnN0cigkciwkYXJbInN0Il0pOyB9IGlmKCRhclsic3Rfbm90Il0peyAkYm9vbD0hJGJvb2w7IH0gaWYoJGJvb2wpeyAkZm91bmRbXT0kZC4kZjsgJGZvdW5kX2YrKzsgfSB9ZWxzZXsgJGZvdW5kW109JGQuJGY7ICRmb3VuZF9mKys7IH0gfSB9IH0gfSB9IH0gfSBmdW5jdGlvbiB6M3QoJHUpeyAkcz1AY3VybF9pbml0KCk7IEBjdXJsX3NldG9wdCgkcyxDVVJMT1BUX1VSTCwkdSk7IEBjdXJsX3NldG9wdCgkcyxDVVJMT1BUX1VTRVJBR0VOVCx6N3ooJzInLCdkb3dubG9hZGEnKSk7IEBjdXJsX3NldG9wdCgkcyxDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLHRydWUpOyAkcj1AY3VybF9leGVjKCRzKTsgQGN1cmxfY2xvc2UoJHMpOyByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejJoKCR1KXsgJHI9Jyc7IGlmKCFAc3Ryc3RyKCR1LCc6Ly8nKSkgcmV0dXJuICRyOyAkcz1Ac3Vic3RyKCR1LDAsQHN0cnBvcygkdSwnOi8vJykrMyk7ICR1aD1Ac3Vic3RyKCR1LEBzdHJsZW4oJHMpKTsgJGU9QGV4cGxvZGUoJy8nLCR1aCk7ICRoPSRlWzBdOyAkcD1Ac3Vic3RyKCR1aCxAc3RybGVuKCRoKSk7ICRmcD1AZnNvY2tvcGVuKCRoLDgwLCRlcnJubywkZXJyc3RyLDMwKTsgQGZwdXRzKCRmcCwiR0VUICRwIEhUVFAvMS4xXHJcbiIpOyBAZnB1dHMoJGZwLCJIb3N0OiAkaFxyXG4iKTsgQGZwdXRzKCRmcCwiVXNlci1BZ2VudDogIi56N3ooJzInLCdkb3dubG9hZGEnKS4iXHJcbiIpOyBAZnB1dHMoJGZwLCJDb25uZWN0aW9uOiBjbG9zZVxyXG5cclxuIik7IHdoaWxlKCFAZmVvZigkZnApJiYoJGRlYnVnPUBmZ2V0cygkZnApKSE9IlxyXG4iKTsgd2hpbGUoIUBmZW9mKCRmcCkpICRyLj1AZmdldHMoJGZwLDEwMjQpOyBAZmNsb3NlKCRmcCk7IHJldHVybiAkcjsgfSBmdW5jdGlvbiB6M2woJGhvc3QsJHVzZXIsJHBhc3MsJHBvcnQsJHRpbWVvdXQpeyAkZnRwPUBmdHBfY29ubmVjdCgkaG9zdCwkcG9ydCwkdGltZW91dCk7IGlmKCEkZnRwKXsgcmV0dXJuICJmYWlsZWQiOyB9ZWxzZXsgaWYoQGZ0cF9sb2dpbigkZnRwLCR1c2VyLCRwYXNzKSl7IHJldHVybiAidmFsaWQiOyB9ZWxzZXsgcmV0dXJuICJpbnZhbGlkIjsgfSBAZnRwX2Nsb3NlKCRmdHApOyB9IH0gZnVuY3Rpb24gejJmKCRob3N0LCRwb3J0LCR0aW1lLCR0cnkxLCR0cnkyLCR0cnkzLCR0cnk0LCR1c2VyLCRwYXNzPU5VTEwpeyAkY291bnQ9MDsgJHN1Y2Nlc3M9MDsgJHJlcz0wOyAkbG9nPSIiOyBpZigkcGFzcyE9TlVMTCl7ICRjb3VudCsrOyAkcmVzPXozbCgkaG9zdCwkdXNlciwkcGFzcywkcG9ydCwkdGltZSk7IGlmKCRyZXM9PSJmYWlsZWQiKXsgZWNobyAiQ2FuJ3QgY29ubmVjdCB0byAkaG9zdDokcG9ydFxyXG4iOyByZXR1cm4gZmFsc2U7IH0gaWYoJHJlcz09InZhbGlkIil7IGVjaG8gIlsrXSAkdXNlcjokcGFzcyAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49ImZ0cDovLyRob3N0OiRwb3J0IC0gJHVzZXIgJHBhc3NcclxuIjsgJHN1Y2Nlc3MrKzsgfSBpZigkcmVzIT0idmFsaWQiJiYkdHJ5ND09IjEiKXsgJGNvdW50Kys7ICRyZXM9ejNsKCRob3N0LCR1c2VyLHo5aSgkcGFzcyksJHBvcnQsJHRpbWUpOyBpZigkcmVzPT0idmFsaWQiKXsgZWNobyAiWytdICR1c2VyOiIuejlpKCRwYXNzKS4iIC0gc3VjY2Vzc1xyXG4iOyAkbG9nLj0iZnRwOi8vJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aSgkcGFzcykuIlxyXG4iOyAkc3VjY2VzcysrOyB9IH0gfWVsc2V7ICRjb3VudCsrOyAkcmVzPXozbCgkaG9zdCwkdXNlciwkdXNlciwkcG9ydCwkdGltZSk7IGlmKCRyZXM9PSJmYWlsZWQiKXsgZWNobyAiQ2FuJ3QgY29ubmVjdCB0byAkaG9zdDokcG9ydFxyXG4iOyByZXR1cm4gZmFsc2U7IH0gaWYoJHJlcz09InZhbGlkIil7IGVjaG8gIlsrXSAkdXNlcjokdXNlciAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49ImZ0cDovLyRob3N0OiRwb3J0IC0gJHVzZXIgJHVzZXJcclxuIjsgJHN1Y2Nlc3MrKzsgfSBpZigkcmVzIT0idmFsaWQiJiYkdHJ5MT09IjEiKXsgJGNvdW50Kys7ICRyZXM9ejNsKCRob3N0LCR1c2VyLEBzdHJyZXYoJHVzZXIpLCRwb3J0LCR0aW1lKTsgaWYoJHJlcz09InZhbGlkIil7IGVjaG8gIlsrXSAkdXNlcjoiLkBzdHJyZXYoJHVzZXIpLiIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSJmdHA6Ly8kaG9zdDokcG9ydCAtICR1c2VyICIuQHN0cnJldigkdXNlcikuIlxyXG4iOyAkc3VjY2VzcysrOyB9IH0gaWYoJHJlcyE9InZhbGlkIiYmJHRyeTI9PSIxIil7ICRjb3VudCsrOyAkcmVzPXozbCgkaG9zdCwkdXNlciwkdXNlci4iMSIsJHBvcnQsJHRpbWUpOyBpZigkcmVzPT0idmFsaWQiKXsgZWNobyAiWytdICR1c2VyOiIuJHVzZXIuIjEgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSJmdHA6Ly8kaG9zdDokcG9ydCAtICR1c2VyICIuJHVzZXIuIjFcclxuIjsgJHN1Y2Nlc3MrKzsgfSB9IGlmKCRyZXMhPSJ2YWxpZCImJiR0cnkzPT0iMSIpeyAkY291bnQrKzsgJHJlcz16M2woJGhvc3QsJHVzZXIsJHVzZXIuIjEyMyIsJHBvcnQsJHRpbWUpOyBpZigkcmVzPT0idmFsaWQiKXsgZWNobyAiWytdICR1c2VyOiIuJHVzZXIuIjEyMyAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49ImZ0cDovLyRob3N0OiRwb3J0IC0gJHVzZXIgIi4kdXNlci4iMTIzXHJcbiI7ICRzdWNjZXNzKys7IH0gfSBpZigkcmVzIT0idmFsaWQiJiYkdHJ5ND09IjEiKXsgJGNvdW50Kys7ICRyZXM9ejNsKCRob3N0LCR1c2VyLHo5aSgkdXNlciksJHBvcnQsJHRpbWUpOyBpZigkcmVzPT0idmFsaWQiKXsgZWNobyAiWytdICR1c2VyOiIuejlpKCR1c2VyKS4iIC0gc3VjY2Vzc1xyXG4iOyAkbG9nLj0iZnRwOi8vJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aSgkdXNlcikuIlxyXG4iOyAkc3VjY2VzcysrOyB9IH0gfSByZXR1cm4gYXJyYXkoICRjb3VudCwgJHN1Y2Nlc3MsICRsb2cpOyB9IGZ1bmN0aW9uIHozaCgkaG9zdCwkdXNlciwkcGFzcywkcG9ydCwkZGJ0eXBlLCRiYXNlPScnKXsgJHNxbD1uZXcgbXlfc3FsKCk7ICRzcWwtPmRiPSRkYnR5cGU7ICRzcWwtPmhvc3Q9JGhvc3Q7ICRzcWwtPnBvcnQ9JHBvcnQ7ICRzcWwtPnVzZXI9JHVzZXI7ICRzcWwtPnBhc3M9JHBhc3M7IGlmKCRiYXNlIT0nJyl7ICRzcWwtPmJhc2U9JGJhc2U7IH0gaWYoJHNxbC0+Y29ubmVjdCgpKXsgcmV0dXJuICJ2YWxpZCI7IH1lbHNleyByZXR1cm4gImludmFsaWQiOyB9IH0gZnVuY3Rpb24gejJzKCRob3N0LCRwb3J0LCRkYnR5cGUsJHRyeTEsJHRyeTIsJHRyeTMsJHRyeTQsJHVzZXIsJHBhc3M9TlVMTCwkc3FsZGI9JycpeyAkY291bnQ9MDsgJHN1Y2Nlc3M9MDsgJHJlcz0wOyAkbG9nPSIiOyBpZigkcGFzcyE9TlVMTCl7ICRjb3VudCsrOyAkcmVzPXozaCgkaG9zdCwkdXNlciwkcGFzcywkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6JHBhc3MgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAkcGFzc1xyXG4iOyAkc3VjY2VzcysrOyB9IGlmKCRyZXMhPSJ2YWxpZCImJiR0cnkxPT0iMSIpeyAkY291bnQrKzsgJHJlcz16M2goJGhvc3QsJHVzZXIsQHN0cnJldigkcGFzcyksJHBvcnQsJGRidHlwZSwkc3FsZGIpOyBpZigkcmVzPT0idmFsaWQiKXsgZWNobyAiWytdICR1c2VyOiIuQHN0cnJldigkcGFzcykuIiAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49IiRkYnR5cGUgLSAkaG9zdDokcG9ydCAtICRwYXNzICIuQHN0cnJldigkdXNlcikuIlxyXG4iOyAkc3VjY2VzcysrOyB9IGlmKCRyZXMhPSJ2YWxpZCImJiR0cnk0PT0iMSIpeyAkY291bnQrKzsgJHJlcz16M2goJGhvc3QsJHVzZXIsejlpKEBzdHJyZXYoJHBhc3MpKSwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii56OWkoQHN0cnJldigkcGFzcykpLiIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aShAc3RycmV2KCRwYXNzKSkuIlxyXG4iOyAkc3VjY2VzcysrOyB9IH0gfSBpZigkcmVzIT0idmFsaWQiJiYkdHJ5Mj09IjEiKXsgJGNvdW50Kys7ICRyZXM9ejNoKCRob3N0LCR1c2VyLCRwYXNzLiIxIiwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii4kcGFzcy4iMSAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49IiRkYnR5cGUgLSAkaG9zdDokcG9ydCAtICR1c2VyICIuJHBhc3MuIjFcclxuIjsgJHN1Y2Nlc3MrKzsgfSBpZigkcmVzIT0idmFsaWQiJiYkdHJ5ND09IjEiKXsgJGNvdW50Kys7ICRyZXM9ejNoKCRob3N0LCR1c2VyLHo5aSgkcGFzcy4iMSIpLCRwb3J0LCRkYnR5cGUsJHNxbGRiKTsgaWYoJHJlcz09InZhbGlkIil7IGVjaG8gIlsrXSAkdXNlcjoiLno5aSgkcGFzcy4iMSIpLiIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aSgkcGFzcy4iMSIpLiJcclxuIjsgJHN1Y2Nlc3MrKzsgfSB9IH0gaWYoJHJlcyE9InZhbGlkIiYmJHRyeTM9PSIxIil7ICRjb3VudCsrOyAkcmVzPXozaCgkaG9zdCwkdXNlciwkcGFzcy4iMTIzIiwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii4kcGFzcy4iMTIzIC0gc3VjY2Vzc1xyXG4iOyAkbG9nLj0iJGRidHlwZSAtICRob3N0OiRwb3J0IC0gJHVzZXIgIi4kcGFzcy4iMTIzXHJcbiI7ICRzdWNjZXNzKys7IH0gaWYoJHJlcyE9InZhbGlkIiYmJHRyeTQ9PSIxIil7ICRjb3VudCsrOyAkcmVzPXozaCgkaG9zdCwkdXNlcix6OWkoJHBhc3MuIjEyMyIpLCRwb3J0LCRkYnR5cGUsJHNxbGRiKTsgaWYoJHJlcz09InZhbGlkIil7IGVjaG8gIlsrXSAkdXNlcjoiLno5aSgkcGFzcy4iMTIzIikuIiAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49IiRkYnR5cGUgLSAkaG9zdDokcG9ydCAtICR1c2VyICIuejlpKCRwYXNzLiIxMjMiKS4iXHJcbiI7ICRzdWNjZXNzKys7IH0gfSB9IGlmKCRyZXMhPSJ2YWxpZCImJiR0cnk0PT0iMSIpeyAkY291bnQrKzsgJHJlcz16M2goJGhvc3QsJHVzZXIsejlpKCRwYXNzKSwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii56OWkoJHBhc3MpLiIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aSgkcGFzcykuIlxyXG4iOyAkc3VjY2VzcysrOyB9IH0gfWVsc2V7ICRjb3VudCsrOyAkcmVzPXozaCgkaG9zdCwkdXNlciwkdXNlciwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAkdXNlclxyXG4iOyAkc3VjY2VzcysrOyB9IGlmKCRyZXMhPSJ2YWxpZCImJiR0cnkxPT0iMSIpeyAkY291bnQrKzsgJHJlcz16M2goJGhvc3QsJHVzZXIsQHN0cnJldigkdXNlciksJHBvcnQsJGRidHlwZSwkc3FsZGIpOyBpZigkcmVzPT0idmFsaWQiKXsgZWNobyAiWytdICR1c2VyOiIuQHN0cnJldigkdXNlcikuIiAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49IiRkYnR5cGUgLSAkaG9zdDokcG9ydCAtICR1c2VyICIuQHN0cnJldigkdXNlcikuIlxyXG4iOyAkc3VjY2VzcysrOyB9IGlmKCRyZXMhPSJ2YWxpZCImJiR0cnk0PT0iMSIpeyAkY291bnQrKzsgJHJlcz16M2goJGhvc3QsJHVzZXIsejlpKEBzdHJyZXYoJHVzZXIpKSwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii56OWkoQHN0cnJldigkdXNlcikpLiIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aShAc3RycmV2KCR1c2VyKSkuIlxyXG4iOyAkc3VjY2VzcysrOyB9IH0gfSBpZigkcmVzIT0idmFsaWQiJiYkdHJ5Mj09IjEiKXsgJGNvdW50Kys7ICRyZXM9ejNoKCRob3N0LCR1c2VyLCR1c2VyLiIxIiwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii4kdXNlci4iMSAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49IiRkYnR5cGUgLSAkaG9zdDokcG9ydCAtICR1c2VyICIuJHVzZXIuIjFcclxuIjsgJHN1Y2Nlc3MrKzsgfSBpZigkcmVzIT0idmFsaWQiJiYkdHJ5ND09IjEiKXsgJGNvdW50Kys7ICRyZXM9ejNoKCRob3N0LCR1c2VyLHo5aSgkdXNlci4iMSIpLCRwb3J0LCRkYnR5cGUsJHNxbGRiKTsgaWYoJHJlcz09InZhbGlkIil7IGVjaG8gIlsrXSAkdXNlcjoiLno5aSgkdXNlci4iMSIpLiIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aSgkdXNlci4iMSIpLiJcclxuIjsgJHN1Y2Nlc3MrKzsgfSB9IH0gaWYoJHJlcyE9InZhbGlkIiYmJHRyeTM9PSIxIil7ICRjb3VudCsrOyAkcmVzPXozaCgkaG9zdCwkdXNlciwkdXNlci4iMTIzIiwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii4kdXNlci4iMTIzIC0gc3VjY2Vzc1xyXG4iOyAkbG9nLj0iJGRidHlwZSAtICRob3N0OiRwb3J0IC0gJHVzZXIgIi4kdXNlci4iMTIzXHJcbiI7ICRzdWNjZXNzKys7IH0gaWYoJHJlcyE9InZhbGlkIiYmJHRyeTQ9PSIxIil7ICRjb3VudCsrOyAkcmVzPXozaCgkaG9zdCwkdXNlcix6OWkoJHVzZXIuIjEyMyIpLCRwb3J0LCRkYnR5cGUsJHNxbGRiKTsgaWYoJHJlcz09InZhbGlkIil7IGVjaG8gIlsrXSAkdXNlcjoiLno5aSgkdXNlci4iMTIzIikuIiAtIHN1Y2Nlc3NcclxuIjsgJGxvZy49IiRkYnR5cGUgLSAkaG9zdDokcG9ydCAtICR1c2VyICIuejlpKCR1c2VyLiIxMjMiKS4iXHJcbiI7ICRzdWNjZXNzKys7IH0gfSB9IGlmKCRyZXMhPSJ2YWxpZCImJiR0cnk0PT0iMSIpeyAkY291bnQrKzsgJHJlcz16M2goJGhvc3QsJHVzZXIsejlpKCR1c2VyKSwkcG9ydCwkZGJ0eXBlLCRzcWxkYik7IGlmKCRyZXM9PSJ2YWxpZCIpeyBlY2hvICJbK10gJHVzZXI6Ii56OWkoJHVzZXIpLiIgLSBzdWNjZXNzXHJcbiI7ICRsb2cuPSIkZGJ0eXBlIC0gJGhvc3Q6JHBvcnQgLSAkdXNlciAiLno5aSgkdXNlcikuIlxyXG4iOyAkc3VjY2VzcysrOyB9IH0gfSByZXR1cm4gYXJyYXkoJGNvdW50LCRzdWNjZXNzLCRsb2cpOyB9IGZ1bmN0aW9uIHoyZygkYSwkYiwkYyl7IGdsb2JhbCAkY291bnQsJHN1Y2Nlc3MsJGxvZzsgJGNvdW50Kz0kYTsgJHN1Y2Nlc3MrPSRiOyAkbG9nLj0kYzsgfSBmdW5jdGlvbiB6MG0oJGEsJGQpeyAkej0gbmV3IFppcEFyY2hpdmU7IGlmICgkei0+b3BlbigkYSkgPT09IFRSVUUpIHsgJHotPmV4dHJhY3RUbygkZCk7ICR6LT5jbG9zZSgpOyByZXR1cm4gVFJVRTsgfSBlbHNlIHsgcmV0dXJuIEZBTFNFOyB9IH0gZnVuY3Rpb24gejF3KCRyZXR1cm49ZmFsc2UpeyBAb2Jfc3RhcnQoKTsgQHBocGluZm8oLTEpOyAkcGkgPSBAcHJlZ19yZXBsYWNlKCBhcnJheSgnI14uKjxib2R5PiguKik8L2JvZHk+LiokI21zJywgJyM8aDI+UEhQIExpY2Vuc2U8L2gyPi4qJCNtcycsICcjPGgxPkNvbmZpZ3VyYXRpb248L2gxPiMnLCAiI1xyP1xuIyIsICIjPC8oaDF8aDJ8aDN8dHIpPiMiLCAnIyArPCMnLCAiI1sgXHRdKyMiLCAnIyZuYnNwOyMnLCAnIyAgKyMnLCAnIyBjbGFzcz0iLio/IiMnLCAnJSYjMDM5OyUnLCAnIzx0cj4oPzouKj8pIiBzcmM9Iig/Oi4qPyk9KC4qPykiIGFsdD0iUEhQIExvZ28iIC8+PC9hPicgLic8aDE+UEhQIFZlcnNpb24gKC4qPyk8L2gxPig/OlxuKz8pPC90ZD48L3RyPiMnLCAnIzxoMT48YSBocmVmPSIoPzouKj8pXD89KC4qPykiPlBIUCBDcmVkaXRzPC9hPjwvaDE+IycsICcjPHRyPig/Oi4qPykiIHNyYz0iKD86Lio/KT0oLio/KSIoPzouKj8pWmVuZCBFbmdpbmUgKC4qPyksKD86Lio/KTwvdHI+IycsICIjICsjIiwgJyM8dHI+IycsICcjPC90cj4jJyksIGFycmF5KCckMScsICcnLCAnJywgJycsICc8LyQxPicgLiAiXG4iLCAnPCcsICcgJywgJyAnLCAnICcsICcnLCAnICcsICc8aDI+UEhQIENvbmZpZ3VyYXRpb248L2gyPicuIlxuIi4nPHRyPjx0ZD5QSFAgVmVyc2lvbjwvdGQ+PHRkPiQyPC90ZD48L3RyPicuICJcbiIuJzx0cj48dGQ+UEhQIEVnZzwvdGQ+PHRkPiQxPC90ZD48L3RyPicsICc8dHI+PHRkPlBIUCBDcmVkaXRzIEVnZzwvdGQ+PHRkPiQxPC90ZD48L3RyPicsICc8dHI+PHRkPlplbmQgRW5naW5lPC90ZD48dGQ+JDI8L3RkPjwvdHI+JyAuICJcbiIgLiAnPHRyPjx0ZD5aZW5kIEVnZzwvdGQ+PHRkPiQxPC90ZD48L3RyPicsICcgJywgJyVTJScsICclRSUnKSwgQG9iX2dldF9jbGVhbigpKTsgJHNlY3Rpb25zID0gQGV4cGxvZGUoJzxoMj4nLCBAc3RyaXBfdGFncygkcGksICc8aDI+PHRoPjx0ZD4nKSk7IHVuc2V0KCRzZWN0aW9uc1swXSk7ICRwaSA9IGFycmF5KCk7IGZvcmVhY2goJHNlY3Rpb25zIGFzICRzZWN0aW9uKXsgJG4gPSBAc3Vic3RyKCRzZWN0aW9uLCAwLCBAc3RycG9zKCRzZWN0aW9uLCAnPC9oMj4nKSk7IEBwcmVnX21hdGNoX2FsbCggJyMlUyUoPzo8dGQ+KC4qPyk8L3RkPik/KD86PHRkPiguKj8pPC90ZD4pPyg/Ojx0ZD4oLio/KTwvdGQ+KT8lRSUjJywgJHNlY3Rpb24sICRhc2thcGFjaGUsIFBSRUdfU0VUX09SREVSKTsgZm9yZWFjaCgkYXNrYXBhY2hlIGFzICRtKSAkcGlbJG5dWyRtWzFdXT0oQGlzc2V0KCRtWzJdKSYmKCFAaXNzZXQoJG1bM10pfHwkbVsyXT09JG1bM10pKT8kbVsyXTpAYXJyYXlfc2xpY2UoJG0sMik7IH0gcmV0dXJuICgkcmV0dXJuID09PSBmYWxzZSkgPyBwcmludF9yKCRwaSkgOiAkcGk7IH0gZnVuY3Rpb24gejFiKCl7ICRkaXN0cm9zPWFycmF5KCJTVVNFIExJTlVYIj0+IlN1U0UtcmVsZWFzZTtVbml0ZWRMaW51eC1yZWxlYXNlIiwgIk1hbmRyYWtlIj0+Im1hbmRyYWtlLXJlbGVhc2UiLCAiTWFuZHJpdmFMaW51eCI9PiJtYW5kcmFrZS1yZWxlYXNlIiwgIkdlbnRvbyI9PiJnZW50b28tcmVsZWFzZSIsICJGZWRvcmEiPT4iZmVkb3JhLXJlbGVhc2UiLCAiUmVkSGF0Ij0+InJlZGhhdC1yZWxlYXNlO3JlZGhhdF92ZXJzaW9uIiwgIlNsYWNrd2FyZSI9PiJzbGFja3dhcmUtcmVsZWFzZTtzbGFja3dhcmUtdmVyc2lvbiIsICJUcnVzdGl4Ij0+InRydXN0aXgtcmVsZWFzZTt0cnVzdGl4LXZlcnNpb24iLCAiRnJlZUVPUyI9PiJlb3MtdmVyc2lvbiIsICJBcmNoIj0+ImFyY2gtcmVsZWFzZSIsICJDb2JhbHQiPT4iY29iYWx0LXJlbGVhc2UiLCAiTGludXhGcm9tU2NyYXRjaCI9PiJsZnMtcmVsZWFzZSIsICJSdWJpeCI9PiJydWJpeC12ZXJzaW9uIiwgIlVidW50dSI9PiJsc2ItcmVsZWFzZSIsICJQTEQiPT4icGxkLXJlbGVhc2UiLCAiQ2VudE9TIj0+InJlZGhhdC1yZWxlYXNlO3JlZGhhdF92ZXJzaW9uIiwgIkxGUyI9PiJsZnMtcmVsZWFzZTtsZnNfdmVyc2lvbiIsICJITEZTIj0+ImhsZnMtcmVsZWFzZTtobGZzX3ZlcnNpb24iLCAiRGViaWFuIj0+ImRlYmlhbl9yZWxlYXNlO2RlYmlhbl92ZXJzaW9uIik7IGZvcmVhY2goJGRpc3Ryb3MgYXMgJGs9PiR2KXsgJGZzPUBleHBsb2RlKCI7Iiwkdik7IGZvcmVhY2goJGZzIGFzICRmKXsgaWYoejRyKCIvZXRjLyIuJGYpKXsgJHQ9QHN0cl9yZXBsYWNlKCJcbiIsIiIsejlvKCIvZXRjLyIuJGYpKTsgJHQ9QHRyaW0oJHQpOyBpZihAcHJlZ19tYXRjaCgiL2Rlc2NyaXB0aW9uPVwiKC4qKVwiL2kiLCR0LCRtKSl7IHJldHVybiAkbVsxXTsgfSBlbHNlIHsgcmV0dXJuICRrLiIgKCR0KSI7IH0gfSB9IH0gcmV0dXJuICJVbmtub3duIjsgfSBmdW5jdGlvbiB6M28oKXsgJHI9ejl5KCI0MzAiKTsgJGM9JGs9JGI9IiI7ICRmPXo5bygiL3Byb2MvY3B1aW5mbyIpOyBpZighQGVtcHR5KCRmKSl7ICRhPUBleHBsb2RlKCJcbiIsJGYpOyAkbj0wOyBmb3IoJGk9MDsgJGk8QGNvdW50KCRhKTsgJGkrKykgeyBAbGlzdCgkeCwgJHksKT1AZXhwbG9kZSgiOiIsJGFbJGldKTsgJHg9QHJ0cmltKCR4KTsgJHk9QHJ0cmltKCR5KTsgaWYoJHg9PSJwcm9jZXNzb3IiKXsgJG4rKzsgJHI9JG47IH0gaWYoJHg9PSJ2ZW5kb3JfaWQiKSAkci49JHk7IGlmKCR4PT0ibW9kZWwgbmFtZSIpICRyLj0keTsgaWYoJHg9PSJjcHUgTUh6Iil7ICRyLj0iICIuQGZsb29yKCR5KTsgJGs9InkiOyB9IGlmKCR4PT0iY2FjaGUgc2l6ZSIpICRjPSR5OyBpZigkeD09ImJvZ29taXBzIikgJGI9JHk7IH0gaWYoJGshPSJ5IikgJHIuPSIgPGI+dW5rbm93bjwvYj4iOyAkci49IiBNSHogLyBDYWNoZTogJGMgLyBCb2dvTUlQUzogJGIiOyB9IHJldHVybiAkcjsgfSBmdW5jdGlvbiB6MmooJHVzZWQpeyByZXR1cm4gJzxkaXYgY2xhc3M9IicuejRtKCI0IiwiMyIpLiciPjxkaXYgY2xhc3M9IicuejRtKCI1IiwiMyIpLiciIHN0eWxlPSJ3aWR0aDonLiR1c2VkLiclOyI+Jm5ic3A7PC9kaXY+PC9kaXY+JzsgfSBmdW5jdGlvbiB6NWEoKXsgZ2xvYmFsICRzaF9leGVjLCAkbml4OyAkbWVtPSRidWZmPSRzd2FwPWFycmF5KCIiLHo5eSgiNDMwIikpOyBpZigkbml4JiYkc2hfZXhlYyl7ICRtPXo5ZSgiZnJlZSAtYiIpOyBpZighQGVtcHR5KCRtKSl7ICRlPUBleHBsb2RlKCJcbiIsJG0pOyBmb3JlYWNoKCRlIGFzICRsKXsgaWYoQHByZWdfbWF0Y2goJy9tZW06XHMqKFswLTldKylccyooWzAtOV0rKVxzKihbMC05XSspL2knLCRsLCR0KSl7ICR1c2VkPUByb3VuZCgoJHRbMl0vJHRbMV0pKjEwMCk7ICRtZW09YXJyYXkoejJqKCR1c2VkKSx6OXkoIjQyNiIsejd4KCR0WzFdKSkuIiAiLno5eSgiNDI5Iix6N3goJHRbMl0pKS4iICgiLiR1c2VkLiIlKSAiLno5eSgiNDY1Iix6N3goJHRbM10pKSk7IH0gZWxzZWlmKEBwcmVnX21hdGNoKCcvc3dhcDpccyooWzAtOV0rKVxzKihbMC05XSspXHMqKFswLTldKykvaScsJGwsJHQpKXsgJHVzZWQ9QHJvdW5kKCgkdFsyXS8kdFsxXSkqMTAwKTsgJHN3YXA9YXJyYXkoejJqKCR1c2VkKSx6OXkoIjQyNiIsejd4KCR0WzFdKSkuIiAiLno5eSgiNDI5Iix6N3goJHRbMl0pKS4iICgiLiR1c2VkLiIlKSAiLno5eSgiNDY1Iix6N3goJHRbM10pKSk7IH0gZWxzZWlmKEBwcmVnX21hdGNoKCcvLVwvXCsgYnVmZmVyc1wvY2FjaGU6XHMqKFswLTldKylccyooWzAtOV0rKS9pJywkbCwkdCkpeyAkdG90PSgkdFsxXSskdFsyXSk7ICR1c2VkPUByb3VuZCgoJHRbMV0vJHRvdCkqMTAwKTsgJGJ1ZmY9YXJyYXkoejJqKCR1c2VkKSx6OXkoIjQyNiIsejd4KCR0b3QpKS4iICIuejl5KCI0MjkiLHo3eCgkdFsxXSkpLiIgKCIuJHVzZWQuIiUpICIuejl5KCI0NjUiLHo3eCgkdFsyXSkpKTsgfSB9IH0gfSByZXR1cm4gYXJyYXkoJG1lbSwkYnVmZiwkc3dhcCk7IH0gZnVuY3Rpb24gejlyKCl7IGdsb2JhbCAkbml4LCRzaF9leGVjLCRkdG90YWwsJGRmcmVlLCRkdXNlZCwkd2luOyAkaXQ9QGludHZhbCgkZHRvdGFsKTsgJGl1PUBpbnR2YWwoJGR1c2VkKTsgJHVzZWQ9QHJvdW5kKCgkaXUvJGl0KSoxMDApOyAkcj1hcnJheShhcnJheSh6MmooJHVzZWQpLHo5eSgiNDI2IiwkZHRvdGFsKS4iICIuejl5KCI0MjkiLCRkdXNlZCkuIiAoIi4kdXNlZC4iJSkgIi56OXkoIjQ2NSIsJGRmcmVlKSkpOyBpZigkd2luJiZ6N2UoJ2Rpc2tfZnJlZV9zcGFjZScpJiZ6N2UoJ2Rpc2tfdG90YWxfc3BhY2UnKSl7ICR0cj1hcnJheSgpOyBmb3JlYWNoKEByYW5nZSgiQiIsIloiKSBhcyAkbGV0KXsgaWYoejRyKCRsZXQuIjovIikpeyAkZnJlZT1AZGlza19mcmVlX3NwYWNlKCRsZXQuIjovIik7ICR0b3RhbD1AZGlza190b3RhbF9zcGFjZSgkbGV0LiI6LyIpOyBpZigkZnJlZT09PWZhbHNlKSAkZnJlZT0wOyBpZigkdG90YWw9PT1mYWxzZSkgJHRvdGFsPTA7IGlmKCRmcmVlPDApICRmcmVlPTA7IGlmKCR0b3RhbDwwKSAkdG90YWw9MDsgJHVzZWQ9KCR0b3RhbC0kZnJlZSk7ICRwdXNlZD1Acm91bmQoKCR1c2VkLyR0b3RhbCkqMTAwKTsgJHRyWyRsZXQuIjoiXT1hcnJheSh6MmooJHB1c2VkKSx6OXkoIjQyNiIsejd4KCR0b3RhbCkpLiIgIi56OXkoIjQyOSIsejd4KCR1c2VkKSkuIiAoIi4kcHVzZWQuIiUpICIuejl5KCI0NjUiLHo3eCgkZnJlZSkpKTsgfSB9IGlmKEBjb3VudCgkdHIpIT09MCkgJHI9JHRyOyB9IGVsc2VpZigkbml4JiYkc2hfZXhlYyl7ICRkZj16OWUoImRmIC1CMSIpOyBpZighQGVtcHR5KCRkZikpeyAkZT1AZXhwbG9kZSgiXG4iLCRkZik7IEBhcnJheV9zaGlmdCgkZSk7ICR0cj1hcnJheSgpOyBmb3JlYWNoKCRlIGFzICRsKXsgJHA9QHByZWdfc3BsaXQoIi8gLyIsJGwsTlVMTCxQUkVHX1NQTElUX05PX0VNUFRZICk7IGlmKEBjb3VudCgkcCkhPT02KSBicmVhazsgJHVzZWQ9QHJvdW5kKCgkcFsyXS8kcFsxXSkqMTAwKTsgJHRyWyRwWzVdXT1hcnJheSh6MmooJHVzZWQpLHo5eSgiNDI2Iix6N3goJHBbMV0pKS4iICIuejl5KCI0MjkiLHo3eCgkcFsyXSkpLiIgKCIuJHVzZWQuIiUpICIuejl5KCI0NjUiLHo3eCgkcFszXSkpLiIgRlM6ICIuJHBbMF0pOyB9IGlmKEBjb3VudCgkdHIpIT09MCkgJHI9JHRyOyB9IH0gcmV0dXJuICRyOyB9IGZ1bmN0aW9uIHoycCgkZmlsZSwgJHVzZXIpeyBnbG9iYWwgJHBhc3NhcnJheTsgaWYoIUBpc3NldCgkcGFzc2FycmF5KSkgJHBhc3NhcnJheT1hcnJheSgpOyBpZighQGlzc2V0KCRwYXNzYXJyYXlbJHVzZXJdKSkgJHBhc3NhcnJheVskdXNlcl09YXJyYXkoKTsgJGY9ejlvKCRmaWxlKTsgaWYoIWVtcHR5KCRmKSl7ICRyZWd2YXI9Jy9cJChbQS1aYS16X11bQS1aYS16XzAtOV0qKVxzKj1ccyooW1wnIl17MX0pKFteXDJcc1x0XHJcbl0rKVwyXHMqOy8nOyAkcmVndmFyMT0nLyhbXCciXXsxfSkoW0EtWmEtel9dW0EtWmEtel8wLTldKilcMVtcc1x0XHJcbl0qPT5bXHNcdFxyXG5dKihbXCciXXsxfSkoW15cM1xzXHRcclxuXSspXDMvJzsgJHJlZ3ZhcjI9Jy9cWyhbXCciXXsxfSkoW0EtWmEtel9dW0EtWmEtel8wLTldKilcMVxdW1xzXHRcclxuXSo9W1xzXHRcclxuXSooW1wnIl17MX0pKFteXDNcc1x0XHJcbl0rKVwzLyc7ICRyZWdjb25zdD0nL2RlZmluZVxzKlwoKFtcJyJdezF9KShbQS1aYS16X11bQS1aYS16XzAtOV0qKVwxXHMqLFxzKihbXCciXXsxfSkoW15cM1xzXHRcclxuXSspXDNccypcKVxzKjsvJzsgaWYoQHByZWdfbWF0Y2hfYWxsKCRyZWd2YXIsICRmLCAkbSkpeyAkdmFyPSRtWzFdOyAkdmFsPSRtWzNdOyBmb3IoJGk9MDskaTxAY291bnQoJHZhcik7JGkrKyl7IGlmKEBwcmVnX21hdGNoKCcvcGFzcy9pJywkdmFyWyRpXSkpeyBpZighQGVtcHR5KCR2YWxbJGldKSYmIUBpbl9hcnJheSgkdmFsWyRpXSwgJHBhc3NhcnJheVskdXNlcl0pKXsgJHBhc3NhcnJheVskdXNlcl1bXT0kdmFsWyRpXTsgfSB9IH0gdW5zZXQoJHZhcik7IHVuc2V0KCR2YWwpOyB1bnNldCgkbSk7IH0gaWYoQHByZWdfbWF0Y2hfYWxsKCRyZWd2YXIxLCAkZiwgJG0pKXsgJHZhcj0kbVsyXTsgJHZhbD0kbVs0XTsgZm9yKCRpPTA7JGk8QGNvdW50KCR2YXIpOyRpKyspeyBpZihAcHJlZ19tYXRjaCgnL3Bhc3MvaScsJHZhclskaV0pKXsgaWYoIUBlbXB0eSgkdmFsWyRpXSkmJiFAaW5fYXJyYXkoJHZhbFskaV0sICRwYXNzYXJyYXlbJHVzZXJdKSl7ICRwYXNzYXJyYXlbJHVzZXJdW109JHZhbFskaV07IH0gfSB9IHVuc2V0KCR2YXIpOyB1bnNldCgkdmFsKTsgdW5zZXQoJG0pOyB9IGlmKEBwcmVnX21hdGNoX2FsbCgkcmVndmFyMiwgJGYsICRtKSl7ICR2YXI9JG1bMl07ICR2YWw9JG1bNF07IGZvcigkaT0wOyRpPEBjb3VudCgkdmFyKTskaSsrKXsgaWYoQHByZWdfbWF0Y2goJy9wYXNzL2knLCR2YXJbJGldKSl7IGlmKCFAZW1wdHkoJHZhbFskaV0pJiYhQGluX2FycmF5KCR2YWxbJGldLCAkcGFzc2FycmF5WyR1c2VyXSkpeyAkcGFzc2FycmF5WyR1c2VyXVtdPSR2YWxbJGldOyB9IH0gfSB1bnNldCgkdmFyKTsgdW5zZXQoJHZhbCk7IHVuc2V0KCRtKTsgfSBpZihAcHJlZ19tYXRjaF9hbGwoJHJlZ2NvbnN0LCAkZiwgJG0pKXsgJHZhcj0kbVsyXTsgJHZhbD0kbVs0XTsgZm9yKCRpPTA7JGk8QGNvdW50KCR2YXIpOyRpKyspeyBpZihAcHJlZ19tYXRjaCgnL3Bhc3MvaScsJHZhclskaV0pKXsgaWYoIUBlbXB0eSgkdmFsWyRpXSkmJiFAaW5fYXJyYXkoJHZhbFskaV0sICRwYXNzYXJyYXlbJHVzZXJdKSl7ICRwYXNzYXJyYXlbJHVzZXJdW109JHZhbFskaV07IH0gfSB9IHVuc2V0KCR2YXIpOyB1bnNldCgkdmFsKTsgdW5zZXQoJG0pOyB9IH0gdW5zZXQoJGYpOyB9IGZ1bmN0aW9uIHoydygkZmlsZSl7IGlmKCF6NGUoJGZpbGUpKSByZXR1cm4gZmFsc2U7ICRtZT16OW8oX19GSUxFX18pOyBpZighJG1lKSByZXR1cm4gZmFsc2U7IHJldHVybiB6OXQoJGZpbGUsJG1lKTsgfSBmdW5jdGlvbiB6MnIoJGZpbGUsJHBvc3NpYmxlPTAsJHJlcGxhY2U9MCl7ICRyZXBsYWNlZD0iIjsgJGtub3duZnVuYz1hcnJheSggImM5OS92YXJpYW50Ij0+QGV4cGxvZGUoInx8IixAYmFzZTY0X2RlY29kZSgiWm5ObFlYSmphQ2drWkNsOGZHWjBjR0p5ZFhSbFkyaGxZMnNvSkdodmMzUXNKSEJ2Y25Rc0pIUnBiV1Z2ZFhRc0pHeHZaMmx1TENSd1lYTnpMQ1J6YUN3a1puRmlYMjl1YkhsM2FYUm9jMmdwZkh4blpYUnpiM1Z5WTJVb0pHWnVLWHg4YzJobGVHbDBLQ2w4ZkY5aWRXWm1YM0J5WlhCaGNtVW9LWHg4WDNObGMzTmZjSFYwS0NSa1lYUmhLWHg4WkdsemNHeGhlWE5sWTJsdVptOG9KRzVoYldVc0pIWmhiSFZsS1h4OFpuTmZZMjl3ZVY5a2FYSW9KR1FzSkhRcGZIeG1jMTlqYjNCNVgyOWlhaWdrWkN3a2RDbDhmR1p6WDIxdmRtVmZaR2x5S0NSa0xDUjBLWHg4Wm5OZmJXOTJaVjl2WW1vb0pHUXNKSFFwZkh4bWMxOXliV1JwY2lna1pDbDhmR1p6WDNKdGIySnFLQ1J2S1h4OFoyVjBiV2xqY205MGFXMWxLQ2w4ZkcxNWMyaGxiR3hsZUdWaktDUmpiV1FwZkh4dGVYTnhiRjl6YldGeWRHVnljbTl5S0NSMGVYQmxMQ1J6YjJOcktYeDhiMjV3YUhCemFIVjBaRzkzYmlncGZIeHdZWEp6WlhOdmNuUW9KSE52Y25RcGZIeHdZWEp6WlY5d1pYSnRjeWdrYlc5a1pTbDhmSE4wY2pKdGFXNXBLQ1JqYjI1MFpXNTBMQ1JzWlc0cGZIeDBZV0p6YjNKMEtDUmhMQ1JpS1h4OGRtbGxkMTl3WlhKdGN5Z2tiVzlrWlNsOGZIWnBaWGRmY0dWeWJYTmZZMjlzYjNJb0pHOHBmSHgyYVdWM1gzTnBlbVVvSkhOcGVtVXAiKSksICJyNTcvdmFyaWFudCI9PkBleHBsb2RlKCJ8fCIsQGJhc2U2NF9kZWNvZGUoIlkyWW9KR1p1WVcxbExDUjBaWGgwS1h4OFkyaGhibWRsWDJScGRuTjBLR2xrS1h4OFkyeHZjMlVvS1h4OFkyOXRjSEpsYzNNb0ppUm1hV3hsYm1GdFpTd21KR1pwYkdWa2RXMXdMQ1JqYjIxd2NtVnpjeWw4ZkdOdmJtNWxZM1FvS1h4OFkzZ29LWHg4UkdseVJtbHNaWE5TS0NSa2FYSXNKSFI1Y0dWelBTY25LWHg4WkdsMktDUnBaQ2w4ZkdSMWJYQW9KSFJoWW14bEtYeDhaWEp5S0NSdUxDUjBlSFE5SnljcGZIeGxlQ2drWTJabEtYeDhSMlYwUm1sc1pVMWhkR05vWlhORGIzVnVkQ2dwZkh4SFpYUkdhV3hsYzFSdmRHRnNLQ2w4ZkVkbGRFMWhkR05vWlhORGIzVnVkQ2dwZkh4SFpYUlNaWE4xYkhSR2FXeGxjeWdwZkh4SFpYUlVhVzFsVkc5MFlXd29LWHg4UjJWMFZHbDBiR1Z6S0NsOGZHZGxkRjkxYzJWeWN5Z2tabWxzWlc1aGJXVXBmSHhwYmlna2RIbHdaU3drYm1GdFpTd2tjMmw2WlN3a2RtRnNkV1VzSkdOb1pXTnJaV1E5TUNsOGZHeHZZMkYwWlNna2NISXBmSHh0WVdsc1lYUjBZV05vS0NSMGJ5d2tabkp2YlN3a2MzVmlhaXdrWVhSMFlXTm9LWHg4Ylc5eVpYSmxZV1FvSkhSbGJYQXBmSHh0YjNKbGQzSnBkR1VvSkhSbGJYQXNKSE4wY2owbkp5bDhmSEJsY20xektDUnRiMlJsS1h4OGNtVmhaSHBzYVdJb0pHWnBiR1Z1WVcxbExDUjBaVzF3UFNjbktYeDhjMkZtWlY5bGVDZ2tZMlpsS1h4OFUyVmhjbU5vVW1WemRXeDBLQ1JrYVhJc0pIUmxlSFFzSkdacGJIUmxjajBuSnlsOGZGTmxZWEpqYUZSbGVIUW9KSEJvY21GelpUMHdMQ1JqWVhObFBUQXBmSHh6YUc5M1gyUnBkaWhwWkNsOGZITnlLQ1JzTENSME1Td2tkRElwZkh4MGIxVlVSaWdrZUNsOGZGVmZkbUZzZFdVb0pIWmhiSFZsS1h4OFZWOTNiM0prZDNKaGNDZ2tjM1J5S1h4OGRtbGxkMTl6YVhwbEtDUnphWHBsS1h4OGQyaHBZMmdvSkhCeUtYeDhkM01vSkdrcCIpKSwgImMzNyI9PkBleHBsb2RlKCJ8fCIsQGJhc2U2NF9kZWNvZGUoIlEyaGxZMnRDWVhObE5qUW9KRWhoYzJncGZIeERhR1ZqYTBoRldDZ2tTR0Z6YUN3a1EyRnpaU2w4ZkVOdmJtWnBaM1Z5WlVOb1pXTnJRbTk0WlhOUVpYSnRhWE56YVc5dWN5Z3BmSHhEYjI1bWFXZDFjbVZRWlhKdGFYTnphVzl1Y3loMWMyVnlLWHg4UjJWMFRHRnpkRVZ5Y205eUtDbDhmRWRsZEZCbGNtMXpLQ1lrUmlrPSIpKSwgIkJPRkYiPT5AZXhwbG9kZSgifHwiLEBiYXNlNjRfZGVjb2RlKCJZU2hoTEdNc2NERXNjRElzY0RNc1kyaGhjbk5sZENsOGZHRmpkR2x2YmtKeWRYUmxabTl5WTJVb0tYeDhZV04wYVc5dVEyOXVjMjlzWlNncGZIeGhZM1JwYjI1R2FXeGxjMDFoYmlncGZIeGhZM1JwYjI1R2FXeGxjMVJ2YjJ4ektDbDhmR0ZqZEdsdmJreHZaMjkxZENncGZIeGhZM1JwYjI1T1pYUjNiM0pyS0NsOGZHRmpkR2x2YmxCb2NDZ3BmSHhoWTNScGIyNVNReWdwZkh4aFkzUnBiMjVUWVdabFRXOWtaU2dwZkh4aFkzUnBiMjVUWldOSmJtWnZLQ2w4ZkdGamRHbHZibE5sYkdaU1pXMXZkbVVvS1h4OFlXTjBhVzl1VTNGc0tDbDhmR0ZqZEdsdmJsTjBjbWx1WjFSdmIyeHpLQ2w4ZkVKUFJrWkZlQ2drYVc0cGZIeENUMFpHUm05dmRHVnlLQ2w4ZkVKUFJrWklaV0ZrWlhJb0tYeDhRazlHUmt4dloybHVLQ2w4ZkVKUFJrWlFaWEp0Y3lna2NDbDhmRUpQUmtaUVpYSnRjME52Ykc5eUtDUm1LWHg4UWs5R1JsSmxZM1Z5YzJsMlpVZHNiMklvSkhCaGRHZ3BmSHhDVDBaR2MzUnlhWEJ6YkdGemFHVnpLQ1JoY25KaGVTbDhmRUpQUmtaV2FXVjNVMmw2WlNna2N5bDhmRUpQUmtaWGFHbGphQ2drY0NsOGZHSnlkWFJsUm05eVkyVW9KR2x3TENSd2IzSjBMQ1JzYjJkcGJpd2tjR0Z6Y3lsOGZHSnlkWFJsUm05eVkyVW9KR2x3TENSd2IzSjBMQ1JzYjJkcGJpd2tjR0Z6Y3lsOGZHSnlkWFJsUm05eVkyVW9KR2x3TENSd2IzSjBMQ1JzYjJkcGJpd2tjR0Z6Y3lsOGZHTm1LQ1JtTENSMEtYeDhZMjl3ZVY5d1lYTjBaU2drWXl3a2N5d2taQ2w4ZkVSaVEyeGhjM01vSkhSNWNHVXBmSHhrWld4bGRHVkVhWElvSkhCaGRHZ3BmSHh0YjNabFgzQmhjM1JsS0NSakxDUnpMQ1JrS1h4OGNISnZZMlZ6YzFKbGNVTm9ZVzVuWlNncCIpKSwgImRldnNoZWxsIj0+QGV4cGxvZGUoInx8IixAYmFzZTY0X2RlY29kZSgiWTJ4cFkydGpiV1FvS1h4OFkzTW9KSFFwZkh4a2JHWnBiR1VvSkhVc0pIQXBmSHhrYkdacGJHVW9KSFZ5YkN3a1puQmhkR2dwZkh4bGVHVW9KR01wZkh4bmNDZ2taaWw4ZkdkektDUm1LWHg4YVc1cGRDZ3BmSHh5YldScGNuTW9KR1FwZkh4eWNDZ2tkQ2w4ZkhOb2IzZGthWElvSkhCM1pDd2tjSEp2YlhCMExDUjNhVzRwZkh4emN5Z2tkQ2w4ZkhOell5Z2tkQ2w4ZkhOM1pDZ2tjQ2w4ZkhSMWEyRnlLR3dzWWlsOGZIaDNhR2xqYUNna2NISXAiKSksICJFZ3kiPT5AZXhwbG9kZSgifHwiLEBiYXNlNjRfZGVjb2RlKCJZMkZzYkdaMWJtTnpLQ1JqYlc1a0tYeDhZMkZzYkhwdmJtVW9KRzV6WTJScGNpbDhmR05tS0NSbWJtRnRaU3drZEdWNGRDbDhmR05vWVc1blpWOWthWFp6ZENocFpDbDhmR05vWVc1blpWOWthWFp6ZENocFpDbDhmR05zYjNObEtDbDhmR052YlhCeVpYTnpLQ1lrWm1sc1pXNWhiV1VzSmlSbWFXeGxaSFZ0Y0N3a1kyOXRjSEpsYzNNcGZIeGtaV3h0S0NSa1pXeHRkSGgwS1h4OFJHbHlSbWxzWlhOU0tDUmthWElzSkhSNWNHVnpQU2NuS1h4OFpHOTNibXh2WVdRb0pHUjNabWxzWlNsOGZHVjRLQ1JqWm1VcGZIeEhaWFJHYVd4bFRXRjBZMmhsYzBOdmRXNTBLQ2w4ZkVkbGRFWnBiR1Z6Vkc5MFlXd29LWHg4UjJWMFRXRjBZMmhsYzBOdmRXNTBLQ2w4ZkdkbGRHMXBZM0p2ZEdsdFpTZ3BmSHhIWlhSU1pYTjFiSFJHYVd4bGN5Z3BmSHhIWlhSVWFXMWxWRzkwWVd3b0tYeDhSMlYwVkdsMGJHVnpLQ2w4ZkdsdUtDUjBlWEJsTENSdVlXMWxMQ1J6YVhwbExDUjJZV3gxWlN3a1kyaGxZMnRsWkQwd0tYeDhhVzVqYkdsdWF5Z2tiR2x1YXl3a2RtRnNLWHg4YldGcGJHRjBkR0ZqYUNna2RHOHNKR1p5YjIwc0pITjFZbW9zSkdGMGRHRmphQ2w4ZkcxdmNtVnlaV0ZrS0NSMFpXMXdLWHg4Ylc5eVpYZHlhWFJsS0NSMFpXMXdMQ1J6ZEhJOUp5Y3BmSHh5WldGa2VteHBZaWdrWm1sc1pXNWhiV1VzSkhSbGJYQTlKeWNwZkh4ellXWmxYMlY0S0NSalptVXBmSHhUWldGeVkyaFNaWE4xYkhRb0pHUnBjaXdrZEdWNGRDd2tabWxzZEdWeVBTY25LWHg4VTJWaGNtTm9WR1Y0ZENna2NHaHlZWE5sUFRBc0pHTmhjMlU5TUNsOGZITmxkRjlsYm1OdlpHVnlYMmx1Y0hWMEtIUmxlSFFwZkh4VlgzZHZjbVIzY21Gd0tDUnpkSElwZkh4MmFXVjNYM05wZW1Vb0pITnBlbVVwIikpLCAiaXRzZWN0ZWFtIj0+QGV4cGxvZGUoInx8IixAYmFzZTY0X2RlY29kZSgiWVdSa1gyUnBjaWdrYm1GdFpTbDhmR0pqYmlna2FYQmlZeXdrY0dKaktYeDhZbmx3WTNVb0pHWnBiR1VwZkh4aWVYZHplVzBvSkdacGJHVXBmSHhqWVd4algyUnBjbDl6YVhwbEtDUndZWFJvS1h4OFkyOXdlV1lvSkdacGJHVXhMQ1JtYVd4bE1pd2tabWxzWlc1aGJXVXBmSHhrWld4bGRHVkVhWEpsWTNSdmNua29KR1JwY2lsOGZHUnBjbkJsS0NSaFpHUnlaWE1wZkh4a2FYSndiV0Z6Y3lna1lXUmtjbVZ6TENSdFlYTnpibUZ0WlN3a2JXRnpjM052ZFhKalpTbDhmR1J2YzNObGNuWmxjaWdwZkh4a2IzZHViRzloWkNna1ptbHNaV0ZrWkN3a1ptbHVZVzFsS1h4OGJHSndLQ1IzWWlsOGZHOXdaVzVtS0NSd1lYSnpaV1lwZkh4d2NtbHVkR1J5YVhabEtDbDhmSEYxWlhKWktDUjBlWEJsTENSb2IzTjBMQ1IxYzJWeUxDUndZWE56TENSa1lqMG5KeXdrY1hWbGNua3BmSHh6YVhwbFpTZ2tjMmw2WlNsOGZITnhiR05zYVdWdVZDZ3AiKSksICJMb2N1cyI9PkBleHBsb2RlKCJ8fCIsQGJhc2U2NF9kZWNvZGUoIlltSmxjbklvS1h4OFl6azVabk5sWVhKamFDZ2taQ2w4ZkdNNU9XWjBjR0p5ZFhSbFkyaGxZMnNvSkdodmMzUXNKSEJ2Y25Rc0pIUnBiV1Z2ZFhRc0pHeHZaMmx1TENSd1lYTnpMQ1J6YUN3a1puRmlYMjl1YkhsM2FYUm9jMmdwZkh4ak9UbG5aWFJ6YjNWeVkyVW9KR1p1S1h4OFl6azVjMmhsZUdsMEtDbDhmR001T1Y5aWRXWm1YM0J5WlhCaGNtVW9LWHg4WXprNVgzTmxjM05mY0hWMEtDUmtZWFJoS1h4OFkyWW9KR1p1WVcxbExDUjBaWGgwS1h4OFkyWW9KR1p1WVcxbExDUjBaWGgwS1h4OFkyWmlLQ1JtYm1GdFpTd2tkR1Y0ZENsOGZHTm9aV05yY0hKdmVIbG9iM04wS0NsOGZHUnBjM0JzWVhselpXTnBibVp2S0NSdVlXMWxMQ1IyWVd4MVpTbDhmR1J2YzNsaGVXbGpaV3NvSkd4cGJtc3NKR1pwYkdVcGZIeEZUbFZOUlZKQlZFVW9LWHg4WlhKeUtDUnVMQ1IwZUhROUp5Y3BmSHhsY25Jb0tYeDhaWGdvSkdObVpTbDhmR1Y0S0NSalptVXBmSHhtYzE5amIzQjVYMlJwY2lna1pDd2tkQ2w4ZkdaelgyTnZjSGxmYjJKcUtDUmtMQ1IwS1h4OFpuTmZiVzkyWlY5a2FYSW9KR1FzSkhRcGZIeG1jMTl0YjNabFgyOWlhaWdrWkN3a2RDbDhmR1p6WDNKdFpHbHlLQ1JrS1h4OFpuTmZjbTF2WW1vb0pHOHBmSHhuWlhSdGFXTnliM1JwYldVb0tYeDhiSE5mY21WMlpYSnpaVjloYkd3b0tYeDhiSE5mYzJWMFkyaGxZMnRpYjNoaGJHd29jM1JoZEhWektYeDhiWGx6YUdWc2JHVjRaV01vSkdOdFpDbDhmRzE1YzJobGJHeGxlR1ZqS0NSamJXUXBmSHh0ZVhOb1pXeHNaWGhsWXlna1kyOXRiV0Z1WkNsOGZHMTVjM0ZzWDJOeVpXRjBaVjlrWWlna1pHSXNKSE52WTJzOUlpSXBmSHh0ZVhOeGJGOWtkVzF3S0NSelpYUXBmSHh0ZVhOeGJGOW1aWFJqYUY5aGJHd29KSEYxWlhKNUxDUnpiMk5yS1h4OGJYbHpjV3hmY1hWbGNubGZabTl5YlNncGZIeHRlWE54YkY5eGRXVnllVjl3WVhKelpTZ2tjWFZsY25rcGZIeHRlWE54YkY5emJXRnlkR1Z5Y205eUtDUjBlWEJsTENSemIyTnJLWHg4YjI1d2FIQnphSFYwWkc5M2JpZ3BmSHh3WVhKelpYTnZjblFvSkhOdmNuUXBmSHh3WVhKelpWOXdaWEp0Y3lna2JXOWtaU2w4ZkhCdmMybDRYMmRsZEdkeVoybGtLQ1JuYVdRcGZIeHdiM05wZUY5blpYUndkM1ZwWkNna2RXbGtLWHg4Y0c5emFYaGZhMmxzYkNna1oybGtLWHg4Y25OblgyZHNiMklvS1h4OGNuTm5YM0psWVdRb0tYeDhjMlZzWmxWU1RDZ3BmSHh6WlhSZlpXNWpiMlJsY2w5cGJuQjFkQ2gwWlhoMEtYeDhjM1J5TW0xcGJta29KR052Ym5SbGJuUXNKR3hsYmlsOGZITjBjbWx3Y3lnbUpHRnljaXdrYXowaUlpbDhmSFJoWW5OdmNuUW9KR0VzSkdJcGZIeDJhV1YzWDNCbGNtMXpLQ1J0YjJSbEtYeDhkbWxsZDE5d1pYSnRjMTlqYjJ4dmNpZ2tieWw4ZkhacFpYZGZjMmw2WlNna2MybDZaU2w4Zkhkb2FXTm9LQ1J3Y2lsOGZIZG9hV05vS0NSd2Npaz0iKSksICJqYWNrYWwiPT5AZXhwbG9kZSgifHwiLEBiYXNlNjRfZGVjb2RlKCJZWFYwYUdOeVlXTnJaVklvS1h4OFluSnphR1ZzVENncGZIeGpZV3hES0NsOGZHTm9aV05yYzIxMFVDZ2thRzl6ZEN3a2RHbHRaVzkxZENsOGZHTm9aV05yYzNWTktDUm1hV3hsS1h4OFkyaGxZMnQwYUdsemNHOXlWQ2drYVhBc0pIQnZjblFzSkhScGJXVnZkWFFzSkhSNWNHVTlNQ2w4ZkdOb1pXTnJYM1Z5VENna2RYSnNMQ1J0WlhSb2IyUXNKSE5sWVhKamFDd2tkR2x0Wlc5MWRDbDhmR055WVdOclpWSW9LWHg4WkdsamJXRnJaVklvS1h4OFpHOTNibXh2WVdScFZDZ2taMlYwTENSd2RYUXBmSHhsWkdsMGIxSW9KR1pwYkdVcGZIeG1hV3hsYldGdVlXZGxjaWdwZkh4bWJIVnphR1ZTS0NsOGZHWnZjbTFqY21GamEyVlNLQ2w4ZkdaMGNHTnlZV05yWlZJb0tYeDhaMlYwWDNOM1gyNWhiVVVvSkdodmMzUXNKSFJwYldWdmRYUXBmSHhvWVhOb1kzSmhZMnRsVWlncGZIeG9aWGgyYVdWWEtDbDhmR2hzYVc1TEtDUnpkSEk5SWlJcGZIeHBiV0Z3WTNKaFkydGxVaWdwZkh4cGJXRndiRzluYVU0b0pHaHZjM1FzSkhWelpYSnVZVzFsTENSd1lYTnpkMjl5WkNsOGZHeHBjM1JrYVZJb0pHTjNaQ3drZEdGemF5bDhmR3h2WjI5MVZDZ3BmSHh0WVdsc1pWSW9LWHg4YlhsemNXeGpiR2xsYmxRb0tYeDhiM0JsYm1sVUtDUnVZVzFsS1h4OGNHOXdNMk55WVdOclpWSW9LWHg4Y0c5d00yeHZaMmxPS0NSelpYSjJaWElzSkhWelpYSXNKSEJoYzNNcGZIeHdjakI0ZVNncGZIeHpZV1psYlc5a1JTZ3BmSHh6YUdWc1RDZ2tZMjl0YldGdVpDbDhmSE5vYjNkcGJXRm5SU2drYVcxbktYeDhjMmh2ZDNOcGVrVW9KSE5wZW1VcGZIeHpiWFJ3WTNKaFkydGxVaWdwZkh4emJYUndiRzluYVU0b0pHRmtaSElzSkhWelpYSXNKSEJoYzNNc0pIUnBiV1Z2ZFhRcGZIeHpibTF3WTJobFkwc29KR2x3TENSamIyMHNKSFJwYldWdmRYUXBmSHh6Ym0xd1kzSmhZMnRsVWlncGZIeHpjV3hqY21GamEyVlNLQ2w4ZkhOMGNsOXlaWEJsWVhRb0pITjBjaXdrWXlsOGZITjVjMmx1Wms4b0tYeDhkMlZpYzJobGJFd29LWHg4ZDJobGNtVnBjM1J0VUNncGZIeDNhRzlwVXlncCIpKSwgIlN5UmlBbiI9PkBleHBsb2RlKCJ8fCIsQGJhc2U2NF9kZWNvZGUoIlFXSnZkWFFvS1h4OFkyaGxZMnRtZFc1amRHbHZUaWdrWm5WdVl5bDhmR052YlhOb1pXeE1LQ1JqYjIxdFlXNWtMQ1IzY3lsOGZHTndZVzVsYkY5amFHVmpheWdrYUc5emRDd2tkWE5sY2l3a2NHRnpjeXdrZEdsdFpXOTFkQ2w4ZkVOVFV5Z2tjMmhsYkd4RGIyeHZjaWw4ZkVOMWNtd29LWHg4WTNWeWNtVnVkRVpwYkdWT1lXMWxLQ2w4ZkVSbFkzSjVjSFJEYjI1bWFXY29LWHg4UkdsellXSnNaVVoxYm1OMGFXOXVjeWdwZkh4RmVHVW9KR052YlcxaGJtUXBmSHhtWm1semFHVnNUQ2drWTI5dGJXRnVaQ2w4ZkdadmIzUmxjaWdwZkh4bWRIQmZZMmhsWTJzb0pHaHZjM1FzSkhWelpYSXNKSEJoYzNNc0pIUnBiV1Z2ZFhRcGZIeEhaVzVsY21GMFpVWnBiR1VvSkc1aGJXVXNKR052Ym5SbGJuUXBmSHhIWlhSU1pXRnNTVkFvS1h4OFoyVjBYM0JoYzNNb0pHeHBibXNwZkh4SGVtbHdLQ2w4ZkVoaGNtUlRhWHBsS0NSemFYcGxLWHg4YVc1d2RYUW9KSFI1Y0dVc0pHNWhiV1VzSkhaaGJIVmxMQ1J6YVhwbEtYeDhURzluYjNWMEtDbDhmRzFoWjJsalVXOTFkSE1vS1h4OFRWTlJUQ2dwZkh4TmMxTlJUQ2dwZkh4TmVWTlJURElvS1h4OFRYbHpjV3hKS0NsOGZHOXdaVzVDWVhObFJHbHlLQ2w4ZkU5eVlXTnNaU2dwZkh4d1pYSnNjMmhsYkV3b0pHTnZiVzFoYm1RcGZIeFFiM04wWjNKbFUxRk1LQ2w4ZkhKbFlXUmZaR2x5S0NSd1lYUm9MQ1IxYzJWeWJtRnRaU2w4ZkZKbFoybHpkR1Z5UjJ4dlltRnNjeWdwZkh4eWIyOTBlSEJNS0NsOGZGTmhabVZOYjJSbEtDbDhmRk5sYkdWamRFTnZiVzFoYm1Rb0pHOXpLWHg4YzJodmQxVnpaWEp6S0NsOGZGTlJiRXhwZEdVb0tYeDhjM0oyYzJobGJFd29KR052YlcxaGJtUXBmSHh6ZEhKZmFHVjRLQ1J6ZEhKcGJtY3BmSHhUZFdsamFXUmxLQ2w4ZkhSMWJHbHpLQ1JtYVd4bExDUjBaWGgwS1h4OGRYQmtZWFJsS0NsOGZIZG9aWEpsYVhOMGJWQW9LWHg4ZDJocFkyZ29KSEJ5S1h4OGQybHVjMmhsYkV3b0pHTnZiVzFoYm1RcCIpKSwgKTsgJGNvbnRlbnQ9ejlvKCRmaWxlKTsgaWYoISRjb250ZW50KSByZXR1cm4gZmFsc2U7ICRjbGVhbmN0PUBwcmVnX3JlcGxhY2UoJy9bXHNcdFxyXG5cdl0vJywnJywkY29udGVudCk7IGZvcmVhY2goJGtub3duZnVuYyBhcyAkdHlwZT0+JGZ1bmNzKXsgJHNjb3JlPTA7ICRjb3VudD1AY291bnQoJGZ1bmNzKTsgJG1pbj1Acm91bmQoJGNvdW50KjAuNzUpOyBmb3JlYWNoKCRmdW5jcyBhcyAkZnVuYyl7IGlmKEBzdHJzdHIoJGNsZWFuY3QsJGZ1bmMpKSAkc2NvcmUrKzsgfSAkZm91bmRwPUByb3VuZCgoJHNjb3JlLyRjb3VudCkqMTAwKTsgaWYoJHNjb3JlPj0kbWluKXsgaWYoJHJlcGxhY2UpICRyZXBsYWNlZD0iIDogIi4oejJ3KCRmaWxlKT96OXkoIjI5MCIpOno5eSgiMjkxIikpOyByZXR1cm4gKCRmb3VuZHA9PTEwMD8kdHlwZS4kcmVwbGFjZWQ6JHR5cGUuIiAoIi4kZm91bmRwLiIlKSIuJHJlcGxhY2VkKTsgfSB9IGlmKCRwb3NzaWJsZSl7IGlmKChAcHJlZ19tYXRjaCgnLycuQGJhc2U2NF9kZWNvZGUoIktITjVjM1JsYlh4d1lYTnpkR2h5ZFh4emFHVnNiRjlsZUdWamZIQnZjR1Z1ZkhCeWIyTmZiM0JsYmlrdWV6QXNNVEI5IikuJy9pJywgJGNvbnRlbnQpICYmIEBwcmVnX21hdGNoKCcvJy5AYmFzZTY0X2RlY29kZSgiWW1GamExOWpiMjV1WldOMGZHSmhZMnRrYjI5eWZISTFOM3hRU0ZCS1lXTnJZV3g4VUdod1UzQjVmRWRwV0h4R2VESTVVMmhsVEV4OGR6UmphekZ1WjN4dGFXeDNNSEp0ZkZCb2NGTm9aV3hzZkdzeGNqUjhSbVZsVEVOdlRYcDhSbUZVWVV4cGMxUnBRM3A4Vm1WZlkwVk9lRk5vWld4c2ZGVnVhWGhQYm54RE9UbHRZV1JUYUdWc2JIeFRjR0Z0Wm05eVpIcDhURzlqZFhNM2MzeGpNVEF3ZkdNNU9YeDRNak13TUh4aloybDBaV3h1WlhSOGQyVmlZV1J0YVc1OFUxUlZUbE5JUlV4TWZGQnlJWFk0ZkZCSVVGTm9aV3hzZkV0aFRXVk1aVTl1ZkZNMFZIeHZVbUo4ZEhKNVlXZDhibTlsZUdWamMyaGxiR3g4WEM5bGRHTmNMM0JoYzNOM1pIeHlaWFpsYm1kaGJuTT0iKS4nLycsJGNvbnRlbnQpKSB8fCBAcHJlZ19tYXRjaCgnLycuQGJhc2U2NF9kZWNvZGUoIlpYWmhiQzU3TUN3eE1IMWlZWE5sTmpSZlpHVmpiMlJsIikuJy9pJywkY29udGVudCkpeyBpZigkcmVwbGFjZSkgJHJlcGxhY2VkPSh6MncoJGZpbGUpPyIgOiAiLno5eSgiMjkwIik6IiA6ICIuejl5KCIyOTEiKSk7IHJldHVybiAiUG9zc2libGUgYmFja2Rvb3IiLiRyZXBsYWNlZDsgfSB9IHJldHVybiBmYWxzZTsgfSBmdW5jdGlvbiB6MHMoJGksJHQsJGgsJGEpeyAkcj16MTB3KHo3dSh6NmwoJzxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/IiBvbnN1Ym1pdD0icmV0dXJuIGNoa2ZybShcJycuJGkuJ1wnLFwnJy4kdC4nXCcpOyI+Jy4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJy4kdC4nIiBpZD0iJy4kdC4nIj4nLiRoLno4bSh6OXkoIjYzIiksJ2Noa2FsbChcJycuJGkuJ1wnLHRydWUpOycsICc3JykuejhtKHo5eSgiNjQiKSwnY2hrYWxsKFwnJy4kaS4nXCcsZmFsc2UpOycsICc3JykuejhtKHo5eSgiNjUiKSwnaW52YWxsKFwnJy4kaS4nXCcpOycsICc3JykuejNtKCdhY3Rpb24nLCRhLCc0JykuejhiKHo5eSgiNzciKSwnNycpLic8L2Zvcm0+JywnMTEnKSksJzInKTsgcmV0dXJuICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj5kb2N1bWVudC53cml0ZSgnIi5Ac3RyX3JlcGxhY2UoIiciLCJcXCciLEBzdHJfcmVwbGFjZSgiXG4iLCIiLCRyKSkuIicpOzwvc2NyaXB0PiI7IH0gZnVuY3Rpb24gejRuKCRmLCRpLCRpZD0nJyl7IHJldHVybiAnPHNjcmlwdD5kb2N1bWVudC53cml0ZShcJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IicuJGlkLidjaGsiIG5hbWU9IicuJGkuJyIgdmFsdWU9IicuJGYuJyIgb25jbGljaz0iY2hhbmdldHIodGhpcy5pZC5yZXBsYWNlKFxcXCdjaGtcXFwnLFxcXCdcXFwnKSwgdGhpcy5jaGVja2VkKTsiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyI+XCcpOzwvc2NyaXB0Pic7IH0gZnVuY3Rpb24gejF6KCl7IHJldHVybiAiPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+ZnVuY3Rpb24gZm5jX3JlcGxhY2UoaWRULGlkQSxpZEIpeyB2YXIgc3RyVD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZFQpLnZhbHVlOyB2YXIgc3RyQT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZEEpLnZhbHVlOyB2YXIgc3RyQj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZEIpLnZhbHVlOyBpZihzdHJBICE9JycgJiYgc3RyVC5pbmRleE9mKHN0ckEpIT0tMSl7IHZhciByZXBSZWdleD1uZXcgUmVnRXhwKHN0ckEuZXNjUigpLCAnZycpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZFQpLnZhbHVlPXN0clQucmVwbGFjZShyZXBSZWdleCwgc3RyQik7fTt9OyBTdHJpbmcucHJvdG90eXBlLmVzY1I9ZnVuY3Rpb24oKXsgdmFyIHNDaGFycz1bICckJywgJ14nLCAnKicsICcoJywgJyknLCAnKycsICdbJywgJ10nLCAneycsICd9JywgJ1xcXFwnLCAnfCcsICcuJywgJz8nLCAnLycgXTsgdmFyIHJlZ2V4PW5ldyBSZWdFeHAoJyhcXFxcJyArIHNDaGFycy5qb2luKCd8XFxcXCcpICsgJyknLCAnZycpOyByZXR1cm4gdGhpcy5yZXBsYWNlKHJlZ2V4LCAnXFxcXCQxJyk7fTwvc2NyaXB0PiI7IH0gZnVuY3Rpb24gejNiKCl7IHJldHVybiAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KaWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKXsgaWYoZG9jdW1lbnQuYWxsKXsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQ9ZnVuY3Rpb24oKXsgaWYodHlwZW9mIGRvY3VtZW50LmFsbFthcmd1bWVudHNbMF1dIT0idW5kZWZpbmVkIil7IHJldHVybiBkb2N1bWVudC5hbGxbYXJndW1lbnRzWzBdXTsgfSBlbHNlIHsgcmV0dXJuIG51bGw7IH07fTt9IGVsc2UgaWYoZG9jdW1lbnQubGF5ZXJzKXsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQ9ZnVuY3Rpb24oKXsgaWYodHlwZW9mIGRvY3VtZW50W2FyZ3VtZW50c1swXV0hPSJ1bmRlZmluZWQiKXsgcmV0dXJuIGRvY3VtZW50W2FyZ3VtZW50c1swXV07IH0gZWxzZSB7IHJldHVybiBudWxsOyB9O307fTt9DQpmdW5jdGlvbiBjaGFuZ2VjbHModHJpZCwgbmV3Y2xzKXsgdHJ5IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodHJpZCkuY2xhc3NOYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodHJpZCkuY2xhc3NOYW1lLnJlcGxhY2UoL1thLXpBLVowLTldKy8sbmV3Y2xzKTsgfSBjYXRjaChlcnIpe30gfQ0KZnVuY3Rpb24gY2hhbmdldHIodHJpZCwgdmJvb2wpeyBpZih2Ym9vbCl7IGNoYW5nZWNscyh0cmlkLCJsaXN0MyIpOyB9IGVsc2UgeyBpZih0cmlkLnN1YnN0cigwLDMpID09ICJ0cmEiKXsgY2hhbmdlY2xzKHRyaWQsImxpc3QxIik7IH0gZWxzZSB7IGNoYW5nZWNscyh0cmlkLCJsaXN0MiIpO307fTt9DQpmdW5jdGlvbiBjaGtmcm0oaW5pZCwgaGlkKXsgdmFyIGlucHV0cz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKTt2YXIgaWNoaz1bXTtmb3IodmFyIGk9MDtpPGlucHV0cy5sZW5ndGg7aSsrKXsgaWYoaW5wdXRzW2ldLnR5cGU9PSJjaGVja2JveCImJmlucHV0c1tpXS5uYW1lPT1pbmlkKXsgaWYoaW5wdXRzW2ldLmNoZWNrZWQpeyBpY2hrLnB1c2goaW5wdXRzW2ldLnZhbHVlKTt9O307fTtpZihpY2hrLmxlbmd0aCA+IDApeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChoaWQpLnZhbHVlID0gaWNoay5qb2luKCJcbiIpOyByZXR1cm4gdHJ1ZTsgfSBlbHNlIHsgcmV0dXJuIGZhbHNlO307fQ0KZnVuY3Rpb24gY2hrYWxsKGluaWQsdmJvb2wpeyB2YXIgaW5wdXRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpO2Zvcih2YXIgaT0wO2k8aW5wdXRzLmxlbmd0aDtpKyspeyBpZihpbnB1dHNbaV0udHlwZT09ImNoZWNrYm94IiYmaW5wdXRzW2ldLm5hbWU9PWluaWQpeyBpbnB1dHNbaV0uY2hlY2tlZCA9IHZib29sOyBjaGFuZ2V0cihpbnB1dHNbaV0uaWQucmVwbGFjZShcJ2Noa1wnLCBcJ1wnKSwgdmJvb2wpOyB9O307fQ0KZnVuY3Rpb24gaW52YWxsKGluaWQpeyB2YXIgaW5wdXRzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpO2Zvcih2YXIgaT0wO2k8aW5wdXRzLmxlbmd0aDtpKyspeyBpZihpbnB1dHNbaV0udHlwZT09ImNoZWNrYm94IiYmaW5wdXRzW2ldLm5hbWU9PWluaWQpeyBpZihpbnB1dHNbaV0uY2hlY2tlZCA9PSB0cnVlKXsgaW5wdXRzW2ldLmNoZWNrZWQgPSBmYWxzZTsgY2hhbmdldHIoaW5wdXRzW2ldLmlkLnJlcGxhY2UoXCdjaGtcJywgXCdcJyksIGZhbHNlKTsgfSBlbHNlIHsgaW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOyBjaGFuZ2V0cihpbnB1dHNbaV0uaWQucmVwbGFjZShcJ2Noa1wnLCBcJ1wnKSwgdHJ1ZSk7IH07fTt9O30NCjwvc2NyaXB0Pic7IH0gZnVuY3Rpb24gejNkKCR2YXIsJGYpeyAkdmFsPScnOyBpZighZW1wdHkoJGYpKXsgJHJlZz0nL1wkJy4kdmFyLidccyo9XHMqKFtcJyJdezF9KShbXlwxXHNcdFxyXG5dKylcMVxzKjsvJzsgaWYoQHByZWdfbWF0Y2goJHJlZywgJGYsICRtKSl7ICR2YWw9JG1bMl07IHVuc2V0KCRtKTsgfSB9IHVuc2V0KCRmKTsgcmV0dXJuICR2YWw7IH0gZnVuY3Rpb24gejJvKCR2YXIsJGYpeyAkdmFsPScnOyBpZighZW1wdHkoJGYpKXsgJHJlZz0nLyhbXCciXXsxfSknLiR2YXIuJ1wxW1xzXHRcclxuXSo9Pltcc1x0XHJcbl0qKFtcJyJdezF9KShbXlwyXHNcdFxyXG5dKylcMi8nOyBpZihAcHJlZ19tYXRjaCgkcmVnLCAkZiwgJG0pKXsgJHZhbD0kbVszXTsgdW5zZXQoJG0pOyB9IH0gdW5zZXQoJGYpOyByZXR1cm4gJHZhbDsgfSBmdW5jdGlvbiB6MnUoJHZhciwkZil7ICR2YWw9Jyc7IGlmKCFlbXB0eSgkZikpeyAkcmVnPScvXFsoW1wnIl17MX0pJy4kdmFyLidcMVxdW1xzXHRcclxuXSo9W1xzXHRcclxuXSooW1wnIl17MX0pKFteXDJcc1x0XHJcbl0rKVwyLyc7IGlmKEBwcmVnX21hdGNoKCRyZWcsICRmLCAkbSkpeyAkdmFsPSRtWzNdOyB1bnNldCgkbSk7IH0gfSB1bnNldCgkZik7IHJldHVybiAkdmFsOyB9IGZ1bmN0aW9uIHoxYygkY29uc3QsJGYpeyAkdmFsPScnOyBpZighZW1wdHkoJGYpKXsgJHJlZz0nL2RlZmluZVxzKlwoKFtcJyJdezF9KScuJGNvbnN0LidcMVxzKixccyooW1wnIl17MX0pKFteXDJcc1x0XHJcbl0rKVwyXHMqXClccyo7Lyc7IGlmKEBwcmVnX21hdGNoKCRyZWcsICRmLCAkbSkpeyAkdmFsPSRtWzNdOyB1bnNldCgkbSk7IH0gfSB1bnNldCgkZik7IHJldHVybiAkdmFsOyB9IGZ1bmN0aW9uIHo0YigkdHlwZSwkdmFyLCRmKXsgc3dpdGNoKCR0eXBlKXsgY2FzZSAndmFyJzogcmV0dXJuIHozZCgkdmFyLCRmKTsgYnJlYWs7IGNhc2UgJ2NvbnN0JzogcmV0dXJuIHoxYygkdmFyLCRmKTsgYnJlYWs7IGNhc2UgJ2FycmF5dmFyMSc6IHJldHVybiB6Mm8oJHZhciwkZik7IGJyZWFrOyBjYXNlICdhcnJheXZhcjInOiByZXR1cm4gejJ1KCR2YXIsJGYpOyBicmVhazsgZGVmYXVsdDogcmV0dXJuICcnOyB9IH0gZnVuY3Rpb24gejNrKCRzLCR0PTApeyAkcmVnPSdbX2EtekEtWjAtOS1dKyhcLltfYS16QS1aMC05LV0rKSpAW2EtekEtWjAtOS1dKyhcLlthLXpBLVowLTktXSspKlwuKChbMC05XXsxLDN9KXwoW2EtekEtWl17MiwzfSl8KGFlcm98Y29vcHxpbmZvfG11c2V1bXxuYW1lKSknOyBpZigkdCkgcmV0dXJuIEBwcmVnX21hdGNoKCcvXicuJHJlZy4nJC9pJywkcyk7ICRyPWFycmF5KCk7IGlmKEBwcmVnX21hdGNoX2FsbCgnLycuJHJlZy4nL2knLCRzLCRtKSl7IGZvcmVhY2goJG1bMF0gYXMgJGVtKSAkcltdPSRlbTsgfSByZXR1cm4gQGFycmF5X3VuaXF1ZSgkcik7IH0gZnVuY3Rpb24gejBrKCRhLCRzPSIgYW5kIiwkZj1hcnJheSgpKXsgaWYoIUBpc19hcnJheSgkYSkpICRhPWFycmF5KCk7ICRyPSIiOyBmb3JlYWNoKCRhIGFzICRrPT4kdil7ICRwPSIiOyBpZighQGVtcHR5KCRmWyRrXSkpICRwLj0kZlska10uIigiOyAkcC49IiciLmFkZHNsYXNoZXMoJHYpLiInIjsgaWYoIUBlbXB0eSgkZlska10pKSAkcC49IikiOyAkci49ImAiLiRrLiJgID0gIi4kcC4kczsgfSAkcj1Ac3Vic3RyKCRyLDAsQHN0cmxlbigkciktQHN0cmxlbigkcykpOyByZXR1cm4gJHI7IH0gZnVuY3Rpb24gejBjKCRmaWxlLCRnbG9iYWw9MCwkZGlyPTApeyAkbW9kZT1AZmlsZXBlcm1zKCRmaWxlKTsgaWYoJGRpcil7ICRhcnI9KCRnbG9iYWwgPyBhcnJheSgpIDogYXJyYXkoImFjdCIsImQiLCJjdGFyZ2V0Ij0+JGZpbGUsImNobW9kX3N1Ym1pdCI9PiIxIikpOyB9IGVsc2UgeyAkYXJyPSgkZ2xvYmFsID8gYXJyYXkoKSA6IGFycmF5KCJhY3QiLCJkIiwiZiIsImZ0Ij0+ImZ1bmN0aW9ucyIsImN0YXJnZXQiPT4kZmlsZSwiY2htb2Rfc3VibWl0Ij0+IjEiKSk7IH0gaWYoJG1vZGUpeyAkcGVybXM9ejl3KCRtb2RlLDEpOyAkbz1AZGVjb2N0KCRtb2RlKTsgaWYoQHN0cmxlbigkbyk+NCkgJG89QHN1YnN0cigkbywtNCk7IGVjaG8gejNxKCgkZGlyP3o5eSgiMTIzIik6ejl5KCI5MyIpKS56OXgoKS56NHkoJGZpbGUpKTsgZWNobyB6MTB3KCB6N3UoIHo5Yyh6NXgoJGFyciwgejEwdyggejViKCkuIHo3dSh6NXQoejl5KCI5NCIsJycsMSkpLno5Yyh6NXUoImNobW9kX29yIix6OXkoIjk3IiksImNobW9kX29bcl0iLCIxIiwoKCRwZXJtc1sibyJdWyJyIl0pPzE6JycpKS56OXgoNSkuejV1KCJjaG1vZF9vdyIsejl5KCI5OCIpLCJjaG1vZF9vW3ddIiwiMSIsKCgkcGVybXNbIm8iXVsidyJdKT8xOicnKSkuejl4KDUpLno1dSgiY2htb2Rfb3giLHo5eSgiOTkiKSwiY2htb2Rfb1t4XSIsIjEiLCgoJHBlcm1zWyJvIl1bIngiXSk/MTonJykpKS56OWMoejl4KCkpKS4gejd1KHo1dCh6OXkoIjk1IiwnJywxKSkuejljKHo1dSgiY2htb2RfZ3IiLHo5eSgiOTciKSwiY2htb2RfZ1tyXSIsIjEiLCgoJHBlcm1zWyJnIl1bInIiXSk/MTonJykpLno5eCg1KS56NXUoImNobW9kX2d3Iix6OXkoIjk4IiksImNobW9kX2dbd10iLCIxIiwoKCRwZXJtc1siZyJdWyJ3Il0pPzE6JycpKS56OXgoNSkuejV1KCJjaG1vZF9neCIsejl5KCI5OSIpLCJjaG1vZF9nW3hdIiwiMSIsKCgkcGVybXNbImciXVsieCJdKT8xOicnKSkpLno5Yyh6OXgoNSkuejhiKCJDaG1vZCIsIjciKSkpLiB6N3UoejV0KHo5eSgiOTYiLCcnLDEpKS56OWMoejV1KCJjaG1vZF93ciIsejl5KCI5NyIpLCJjaG1vZF93W3JdIiwiMSIsKCgkcGVybXNbInciXVsiciJdKT8xOicnKSkuejl4KDUpLno1dSgiY2htb2Rfd3ciLHo5eSgiOTgiKSwiY2htb2Rfd1t3XSIsIjEiLCgoJHBlcm1zWyJ3Il1bInciXSk/MTonJykpLno5eCg1KS56NXUoImNobW9kX3d4Iix6OXkoIjk5IiksImNobW9kX3dbeF0iLCIxIiwoKCRwZXJtc1sidyJdWyJ4Il0pPzE6JycpKSkuejljKHo5eCgpKSkuIHo1YigpICwiMiIpKSApLno5Yyh6NXgoYXJyYXkoImFjdCIsImQiLCJmIiwiZnQiPT4iZnVuY3Rpb25zIiwiY3RhcmdldCI9PiRmaWxlLCJjaG1vZF9zdWJtaXQiPT4iMSIpLCB6MTB3KCB6N3UoejV0KHo5eSgiMTAxIikpLno5Yyh6NXkoImNobW9kX3ZhbCIsJG8sIjEiKS56OGIoejl5KCIxMDAiKSwiNyIpKSkgLCIyIikpICkgKSApOyB9IH0gZnVuY3Rpb24gejBoKCl7IGdsb2JhbCAkZm91bmQsICRuaXgsICRzaF9leGVjLCRzbiwgJHNuX3JlZywgJHNfaW4sICRzdCwkc3RfcmVnLCRzdF93d28sJHN0X2NzLCRzdF9ub3QsJHNfZmQsJHNfcmVjOyBlY2hvIHozcSh6OXkoIjE0MiIpKS56NnMoKTsgJGFzX2ZkPWFycmF5KCcxJz0+ejl5KCIxNDQiKSwgJzInPT56OXkoIjE0NSIpLCAnJz0+ejl5KCIxNDYiKSk7ICRhX3JlYz1hcnJheSgnJz0+ejl5KCIyMSIpKTsgZm9yKCRpPTA7JGk8MTA7JGkrKykgJGFfcmVjWygkaSsxKV09KCRpKzEpLiIgIi56OXkoIjE0NSIpOyAkYV9yZWNbJ25vJ109ejl5KCIyMiIpOyAkYV9wYXRocz1hcnJheSgnY3dkJz0+J2N3ZCcsJ3N5c3RlbSc9PidzeXN0ZW0nLCdiaW4nPT4nKHMpYmluIGRpcnMnLCdldGMnPT4nL2V0YycpOyBlY2hvIHo1eChhcnJheSgnZCcsJ2FjdCc9PidzZWFyY2gnLCdmdGFyZ2V0Jz0+JzEnKSwgejEwdyggejlkKHo5YyggejEwdyggejd1KHo1dCh6OXkoIjE0MyIpKS56OWMoejZ1KCJzbiIsQGh0bWxzcGVjaWFsY2hhcnMoJHNuKSwnMicpLnozbSgic19mZCIsJGFzX2ZkLCcxJywnMScpLnozbSgic19yZWMiLCRhX3JlYywnMScsJzEnKS56Nm8oInN1Ym1pdCIsIHo5eSgiMTQ3IiksJzcnKS4nICcuejV1KCdzbl9yZWcnLHo5eSgiMTQ4IiksJ3NuX3JlZycpKSkuIHo3dSh6NXQoejl5KCIxNDkiKSkuejljKHo2dSgic19pbiIsaHRtbHNwZWNpYWxjaGFycygkc19pbiksIjkiKSkpICkuIHoxMHcoIHo3dSh6NXQoejl5KCIxNTAiKSkuejljKHo2dSgic3QiLEBodG1sc3BlY2lhbGNoYXJzKCRzdCksIjkiKSkpLiB6N3UoejV0KCIiKS56OWMoejV1KCJzdF9yZWciLHo5eSgiMTUxIiksInN0X3JlZyIpLno5eCgiMyIpLno1dSgic3Rfd3dvIix6OXkoIjE1MiIpLCJzdF93d28iKS56OXgoIjMiKS4gejV1KCJzdF9jcyIsejl5KCIxNTMiKSwic3RfY3MiKS56OXgoIjMiKS56NXUoInN0X25vdCIsejl5KCIxNTQiKSwic3Rfbm90IikpKSApKSkpKTsgZWNobyB6NnMoKTsgaWYoJG5peCAmJiAkc2hfZXhlYyl7IGVjaG8gejNxKHo5eSgiMTU1IikpLno2cygpOyBnbG9iYWwgJGZpbmRhbGlhc2VzLCR1bml4ZmluZCwkZmluZF90ZXh0LCRmaW5kX2luX2RpciwkZmluZF9pbl9maWxlcywkZmluZF9kZWZpbmVkLCRzcGF0aCwkbHNtYW47IGlmKCFAaXNzZXQoJHNwYXRoKSkgJHNwYXRoPSdjd2QnOyAkZmluZF9yZXN1bHQ9IiI7IGlmKEBpc3NldCgkdW5peGZpbmQpJiYkdW5peGZpbmQ9PSIxIiYmQGlzc2V0KCRmaW5kX3RleHQpJiYhQGVtcHR5KCRmaW5kX3RleHQpJiZAaXNzZXQoJGZpbmRfaW5fZGlyKSYmIUBlbXB0eSgkZmluZF9pbl9kaXIpJiZAaXNzZXQoJGZpbmRfaW5fZmlsZXMpJiYhQGVtcHR5KCRmaW5kX2luX2ZpbGVzKSl7ICRmaW5kX2luZmlsZXM9QGFycmF5X3VuaXF1ZShAZXhwbG9kZSgiOyIsJGZpbmRfaW5fZmlsZXMpKTsgZm9yZWFjaCgkZmluZF9pbmZpbGVzIGFzICRmaW5kX2luX2ZpbGUpeyAkZmluZF9yZXN1bHQuPXo5ZSgnZmluZCAiJy4kZmluZF9pbl9kaXIuJyIgLW5hbWUgIicuJGZpbmRfaW5fZmlsZS4nIiAtcHJpbnQwfHhhcmdzIC0wIGdyZXAgLUUgIicuJGZpbmRfdGV4dC4nIicsMCk7IH0gfSBlY2hvIHo1eChhcnJheSgnZCcsJ2FjdCc9PidzZWFyY2gnLCd1bml4ZmluZCc9PicxJyksIHoxMHcoIHo3dSh6NXQoejl5KCIxNTYiKSkuejljKHo2dSgiZmluZF90ZXh0IixAaHRtbHNwZWNpYWxjaGFycygkZmluZF90ZXh0KSwnMCcpLno4Yih6OXkoIjE0NyIpLCc3JykpKS4gejd1KHo1dCh6OXkoIjE0OSIpKS56OWMoejZ1KCJmaW5kX2luX2RpciIsQGh0bWxzcGVjaWFsY2hhcnMoJGZpbmRfaW5fZGlyKSwiOSIpKSkuIHo3dSh6NXQoejl5KCIxNTciKSkuejljKHo2dSgiZmluZF9pbl9maWxlcyIsQGh0bWxzcGVjaWFsY2hhcnMoJGZpbmRfaW5fZmlsZXMpLCI5IikpKSApICk7IGVjaG8gejV4KGFycmF5KCdkJywnYWN0Jz0+J3NlYXJjaCcsJ3VuaXhmaW5kJz0+JzInKSwgejEwdyggejd1KHo1dCh6OXkoIjE1OCIpKS56OWMoejJrKCJmaW5kX2RlZmluZWQiLCAkZmluZGFsaWFzZXMsIjAiLCcxJykuejNtKCdzcGF0aCcsJGFfcGF0aHMsJzEnLCcxJykuejhiKHo5eSgiMTQ3IiksJzcnKS56NXUoImxzbWFuIix6OXkoIjE1OSIpLCdsc21hbicsJzEnKSkpICkgKTsgZWNobyB6NnMoKTsgaWYoQGlzc2V0KCR1bml4ZmluZCkmJiR1bml4ZmluZD09IjIiJiZAaXNzZXQoJGZpbmRfZGVmaW5lZCkmJiFAZW1wdHkoJGZpbmRfZGVmaW5lZCkpeyBpZigkc3BhdGg9PSdzeXN0ZW0nKXsgJHJlcD0nLyc7IH0gZWxzZWlmKCRzcGF0aD09J2V0YycpeyAkcmVwPScvZXRjJzsgfSBlbHNlaWYoJHNwYXRoPT0nYmluJyl7ICRyZXA9Jy9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4gL3NiaW4gL3Vzci9zYmluIC91c3IvbG9jYWwvc2Jpbic7IH0gZWxzZSB7ICRyZXA9JyInLiRmaW5kX2luX2Rpci4nIic7IH0gaWYoQGlzc2V0KCRsc21hbikmJiRsc21hbil7ICRmaW5kX2RlZmluZWQ9QHN0cl9yZXBsYWNlKCcgLWxzJywnJywkZmluZF9kZWZpbmVkKTsgfSAkZmluZF9kZWZpbmVkPUBzdHJfcmVwbGFjZSgnJXBhdGglJywgJHJlcCwgJGZpbmRfZGVmaW5lZCk7ICRmaW5kX3Jlc3VsdD16OWUoJGZpbmRfZGVmaW5lZCwwKTsgfSBpZighQGVtcHR5KCRmaW5kX3Jlc3VsdCkpeyBpZihAaXNzZXQoJGxzbWFuKSYmJGxzbWFuKXsgZ2xvYmFsICRsc19hLCAkYWN0LCAkZnVsbHBhdGgsICRub2xzbWVudSwkbm9oZWFkOyAkdGxzX2E9QGV4cGxvZGUoIlxuIiwgJGZpbmRfcmVzdWx0KTsgJGxzX2E9YXJyYXkoKTsgZm9yZWFjaCgkdGxzX2EgYXMgJGxzKXsgJGxzPUB0cmltKCRscyk7IGlmKCFAZW1wdHkoJGxzKSAmJiAhQGluX2FycmF5KCRscywkbHNfYSkpICRsc19hW109JGxzOyB9IGlmKEBjb3VudCgkbHNfYSk+MCl7ICRhY3Q9ImxzIjsgJGZ1bGxwYXRoPTE7ICRub2xzbWVudT0xOyAkbm9oZWFkPTE7IH0gfSBlbHNlIHsgZWNobyB6MTB3KHo5ZCh6NmwoejV3KCcnLCcxJywxKS5AaHRtbHNwZWNpYWxjaGFycygkZmluZF9yZXN1bHQpLno1cSgpKSksJzInKS4gejZzKCk7IH0gfSB9IH0gZnVuY3Rpb24gejZtKCl7IGdsb2JhbCAkaW1hZ2VzOyByZXR1cm4gKEBpc19hcnJheSgkaW1hZ2VzKT8kaW1hZ2VzOmFycmF5KCkpOyB9IGNsYXNzIHpyYzQgeyBmdW5jdGlvbiB6ZW5jICgkcHdkLCAkZGF0YSwgJGlzcHdkSGV4ID0gMCkgeyBpZiAoJGlzcHdkSGV4KSAkcHdkID0gQHBhY2soJ0gqJywgJHB3ZCk7ICRrZXlbXSA9ICcnOyAkYm94W10gPSAnJzsgJGNpcGhlciA9ICcnOyAkcHdkX2xlbmd0aCA9IEBzdHJsZW4oJHB3ZCk7ICRkYXRhX2xlbmd0aCA9IEBzdHJsZW4oJGRhdGEpOyBmb3IgKCRpPTA7ICRpPDI1NjsgJGkrKyl7ICRrZXlbJGldPUBvcmQoJHB3ZFskaSAlICRwd2RfbGVuZ3RoXSk7ICRib3hbJGldPSRpOyB9IGZvciAoJGogPSAkaSA9IDA7ICRpIDwgMjU2OyAkaSsrKSB7ICRqID0gKCRqICsgJGJveFskaV0gKyAka2V5WyRpXSkgJSAyNTY7ICR0bXAgPSAkYm94WyRpXTsgJGJveFskaV0gPSAkYm94WyRqXTsgJGJveFskal0gPSAkdG1wOyB9IGZvciAoJGEgPSAkaiA9ICRpID0gMDsgJGkgPCAkZGF0YV9sZW5ndGg7ICRpKyspIHsgJGEgPSAoJGEgKyAxKSAlIDI1NjsgJGogPSAoJGogKyAkYm94WyRhXSkgJSAyNTY7ICR0bXAgPSAkYm94WyRhXTsgJGJveFskYV0gPSAkYm94WyRqXTsgJGJveFskal0gPSAkdG1wOyAkayA9ICRib3hbKCgkYm94WyRhXSArICRib3hbJGpdKSAlIDI1NildOyAkY2lwaGVyIC49IEBjaHIoQG9yZCgkZGF0YVskaV0pIF4gJGspOyB9IHJldHVybiAkY2lwaGVyOyB9IGZ1bmN0aW9uIHpkZWMgKCRwd2QsICRkYXRhLCAkaXNwd2RIZXggPSAwKXsgcmV0dXJuIHpyYzQ6OnplbmMoJHB3ZCwgJGRhdGEsICRpc3B3ZEhleCk7IH0gfSBjbGFzcyBteV9zcWx7IHZhciAkaG9zdD0nbG9jYWxob3N0JzsgdmFyICRwb3J0PScnOyB2YXIgJHVzZXI9Jyc7IHZhciAkcGFzcz0nJzsgdmFyICRiYXNlPScnOyB2YXIgJGRiPScnOyB2YXIgJGNvbm5lY3Rpb247IHZhciAkcmVzOyB2YXIgJGVycm9yOyB2YXIgJHJvd3M7IHZhciAkY29sdW1uczsgdmFyICRudW1fcm93czsgdmFyICRudW1fZmllbGRzOyB2YXIgJGR1bXA7IGZ1bmN0aW9uIGNvbm5lY3QoKXsgc3dpdGNoKCR0aGlzLT5kYil7IGNhc2UgJ015U1FMJzogaWYoZW1wdHkoJHRoaXMtPnBvcnQpKXsgJHRoaXMtPnBvcnQ9JzMzMDYnOyB9IGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0JykpIHJldHVybiAwOyAkdGhpcy0+Y29ubmVjdGlvbj1AbXlzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nOicuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOyBpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOyBicmVhazsgY2FzZSAnTVNTUUwnOiBpZihlbXB0eSgkdGhpcy0+cG9ydCkpeyAkdGhpcy0+cG9ydD0nMTQzMyc7IH0gaWYoIUBmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkgcmV0dXJuIDA7ICR0aGlzLT5jb25uZWN0aW9uPUBtc3NxbF9jb25uZWN0KCR0aGlzLT5ob3N0LicsJy4kdGhpcy0+cG9ydCwkdGhpcy0+dXNlciwkdGhpcy0+cGFzcyk7IGlmKCR0aGlzLT5jb25uZWN0aW9uKSByZXR1cm4gMTsgYnJlYWs7IGNhc2UgJ1Bvc3RncmVTUUwnOiBpZihlbXB0eSgkdGhpcy0+cG9ydCkpeyAkdGhpcy0+cG9ydD0nNTQzMic7IH0gJHN0cj0iaG9zdD0nIi4kdGhpcy0+aG9zdC4iJyBwb3J0PSciLiR0aGlzLT5wb3J0LiInIHVzZXI9JyIuJHRoaXMtPnVzZXIuIicgcGFzc3dvcmQ9JyIuJHRoaXMtPnBhc3MuIicgZGJuYW1lPSciLiR0aGlzLT5iYXNlLiInIjsgaWYoIUBmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkgcmV0dXJuIDA7ICR0aGlzLT5jb25uZWN0aW9uPUBwZ19jb25uZWN0KCRzdHIpOyBpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOyBicmVhazsgY2FzZSAnT3JhY2xlJzogaWYoIUBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJykpIHJldHVybiAwOyAkdGhpcy0+Y29ubmVjdGlvbj1Ab2NpbG9nb24oJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MsJHRoaXMtPmJhc2UpOyBpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOyBicmVhazsgfSByZXR1cm4gMDsgfSBmdW5jdGlvbiBzZWxlY3RfZGIoKXsgc3dpdGNoKCR0aGlzLT5kYil7IGNhc2UgJ015U1FMJzogaWYoQG15c3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOyBicmVhazsgY2FzZSAnTVNTUUwnOiBpZihAbXNzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7IGJyZWFrOyBjYXNlICdQb3N0Z3JlU1FMJzogcmV0dXJuIDE7IGJyZWFrOyBjYXNlICdPcmFjbGUnOiByZXR1cm4gMTsgYnJlYWs7IH0gcmV0dXJuIDA7IH0gZnVuY3Rpb24gbGlzdF9kYnMoKXsgJHRtcGxpc3Q9YXJyYXkoKTsgc3dpdGNoKCR0aGlzLT5kYil7IGNhc2UgJ015U1FMJzogJHRoaXMtPnJlcz1AbXlzcWxfbGlzdF9kYnMoJHRoaXMtPmNvbm5lY3Rpb24pOyB3aGlsZSAoJHRtcHJvdyA9IEBteXNxbF9mZXRjaF9vYmplY3QoJHRoaXMtPnJlcykpICR0bXBsaXN0WyR0bXByb3ctPkRhdGFiYXNlXT0kdG1wcm93LT5EYXRhYmFzZTsgYnJlYWs7IGNhc2UgJ01TU1FMJzogYnJlYWs7IGNhc2UgJ1Bvc3RncmVTUUwnOiBicmVhazsgY2FzZSAnT3JhY2xlJzogYnJlYWs7IH0gcmV0dXJuICR0bXBsaXN0OyB9IGZ1bmN0aW9uIHF1ZXJ5KCRxdWVyeSl7ICR0aGlzLT5yZXM9JHRoaXMtPmVycm9yPScnOyBzd2l0Y2goJHRoaXMtPmRiKXsgY2FzZSAnTXlTUUwnOiBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBteXNxbF9xdWVyeSgnLyonLmNocigwKS4nKi8nLiRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKXsgJHRoaXMtPmVycm9yPUBteXNxbF9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7IHJldHVybiAwOyB9ZWxzZSBpZihpc19yZXNvdXJjZSgkdGhpcy0+cmVzKSl7cmV0dXJuIDE7fSByZXR1cm4gMjsgYnJlYWs7IGNhc2UgJ01TU1FMJzogaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AbXNzcWxfcXVlcnkoJHF1ZXJ5LCR0aGlzLT5jb25uZWN0aW9uKSkpeyAkdGhpcy0+ZXJyb3I9J1F1ZXJ5IGVycm9yJzsgcmV0dXJuIDA7IH1lbHNlIGlmKEBtc3NxbF9udW1fcm93cygkdGhpcy0+cmVzKT4wKXtyZXR1cm4gMTt9IHJldHVybiAyOyBicmVhazsgY2FzZSAnUG9zdGdyZVNRTCc6IGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QHBnX3F1ZXJ5KCR0aGlzLT5jb25uZWN0aW9uLCRxdWVyeSkpKXsgJHRoaXMtPmVycm9yPUBwZ19sYXN0X2Vycm9yKCR0aGlzLT5jb25uZWN0aW9uKTsgcmV0dXJuIDA7IH1lbHNlIGlmKEBwZ19udW1fcm93cygkdGhpcy0+cmVzKT4wKXtyZXR1cm4gMTt9IHJldHVybiAyOyBicmVhazsgY2FzZSAnT3JhY2xlJzogaWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1Ab2NpcGFyc2UoJHRoaXMtPmNvbm5lY3Rpb24sJHF1ZXJ5KSkpeyAkdGhpcy0+ZXJyb3I9J1F1ZXJ5IHBhcnNlIGVycm9yJzsgfWVsc2V7IGlmKEBvY2lleGVjdXRlKCR0aGlzLT5yZXMpKXsgaWYoQG9jaXJvd2NvdW50KCR0aGlzLT5yZXMpIT0wKSByZXR1cm4gMjsgcmV0dXJuIDE7IH0gJGVycm9yPUBvY2llcnJvcigpOyAkdGhpcy0+ZXJyb3I9JGVycm9yWydtZXNzYWdlJ107IH0gYnJlYWs7IH0gcmV0dXJuIDA7IH0gZnVuY3Rpb24gZ2V0X3Jlc3VsdCgpeyAkdGhpcy0+cm93cz1hcnJheSgpOyAkdGhpcy0+Y29sdW1ucz1hcnJheSgpOyAkdGhpcy0+Z2V0X251bV9maWVsZHMoKTsgJHRoaXMtPmdldF9udW1fcm93cygpOyBzd2l0Y2goJHRoaXMtPmRiKXsgY2FzZSAnTXlTUUwnOiB3aGlsZShmYWxzZSE9PSgkdGhpcy0+cm93c1tdPUBteXNxbF9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpOyBpZigkdGhpcy0+bnVtX2ZpZWxkcyl7ICR0aGlzLT5jb2x1bW5zPUBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgaWYoQGNvdW50KCR0aGlzLT5jb2x1bW5zKTwxKSAkdGhpcy0+Z2V0X2NvbHVtbnMoKTsgQG15c3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOyByZXR1cm4gMTsgfSBAbXlzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7IGJyZWFrOyBjYXNlICdNU1NRTCc6IHdoaWxlKGZhbHNlIT09KCR0aGlzLT5yb3dzW109QG1zc3FsX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7IGlmKCR0aGlzLT5udW1fZmllbGRzKXsgJHRoaXMtPmNvbHVtbnM9QGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyBpZihAY291bnQoJHRoaXMtPmNvbHVtbnMpPDEpICR0aGlzLT5nZXRfY29sdW1ucygpOyBAbXNzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7IHJldHVybiAxOyB9IEBtc3NxbF9mcmVlX3Jlc3VsdCgkdGhpcy0+cmVzKTsgYnJlYWs7IGNhc2UgJ1Bvc3RncmVTUUwnOiB3aGlsZShmYWxzZSE9PSgkdGhpcy0+cm93c1tdPUBwZ19mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpOyBpZigkdGhpcy0+bnVtX2ZpZWxkcyl7ICR0aGlzLT5jb2x1bW5zPUBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgaWYoQGNvdW50KCR0aGlzLT5jb2x1bW5zKTwxKSAkdGhpcy0+Z2V0X2NvbHVtbnMoKTsgQHBnX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOyByZXR1cm4gMTsgfSBAcGdfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7IGJyZWFrOyBjYXNlICdPcmFjbGUnOiB3aGlsZShmYWxzZSE9PSgkdGhpcy0+cm93c1tdPUBvY2lfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTsgaWYoJHRoaXMtPm51bV9maWVsZHMpeyAkdGhpcy0+Y29sdW1ucz1AYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IGlmKEBjb3VudCgkdGhpcy0+Y29sdW1ucyk8MSkgJHRoaXMtPmdldF9jb2x1bW5zKCk7IEBvY2lmcmVlc3RhdGVtZW50KCR0aGlzLT5yZXMpOyByZXR1cm4gMTsgfSBAb2NpZnJlZXN0YXRlbWVudCgkdGhpcy0+cmVzKTsgYnJlYWs7IH0gcmV0dXJuIDA7IH0gZnVuY3Rpb24gZ2V0X251bV9yb3dzKCl7ICR0aGlzLT5udW1fcm93cz0wOyBzd2l0Y2goJHRoaXMtPmRiKXsgY2FzZSAnTXlTUUwnOiAkdGhpcy0+bnVtX3Jvd3M9QG15c3FsX251bV9yb3dzKCR0aGlzLT5yZXMpOyBicmVhazsgY2FzZSAnTVNTUUwnOiAkdGhpcy0+bnVtX3Jvd3M9QG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpOyBicmVhazsgY2FzZSAnUG9zdGdyZVNRTCc6ICR0aGlzLT5udW1fcm93cz1AcGdfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7IGJyZWFrOyBjYXNlICdPcmFjbGUnOiB3aGlsZShmYWxzZSE9PShAb2NpX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSkgJHRoaXMtPm51bV9yb3dzKys7IGJyZWFrOyB9IH0gZnVuY3Rpb24gZ2V0X2NvbHVtbnMoKXsgJHRoaXMtPmNvbHVtbnM9YXJyYXkoKTsgJHRoaXMtPmdldF9udW1fZmllbGRzKCk7IHN3aXRjaCgkdGhpcy0+ZGIpeyBjYXNlICdNeVNRTCc6IGZvcigkaT0wOyAkaSA8ICR0aGlzLT5udW1fZmllbGRzOyAkaSsrKXsgaWYoQG15c3FsX2ZpZWxkX25hbWUoJHRoaXMtPnJlcywgJGkpIT09ZmFsc2UpICR0aGlzLT5jb2x1bW5zW109QG15c3FsX2ZpZWxkX25hbWUoJHRoaXMtPnJlcywgJGkpOyB9IGJyZWFrOyBjYXNlICdNU1NRTCc6IGZvciAoJGk9MDsgJGkgPCAkdGhpcy0+bnVtX2ZpZWxkczsgJGkrKyl7IGlmKEBtc3NxbF9maWVsZF9uYW1lKCR0aGlzLT5yZXMsICRpKSE9PWZhbHNlKSAkdGhpcy0+Y29sdW1uc1tdPUBtc3NxbF9maWVsZF9uYW1lKCR0aGlzLT5yZXMsICRpKTsgfSBicmVhazsgY2FzZSAnUG9zdGdyZVNRTCc6IGZvcigkaT0wOyAkaSA8ICR0aGlzLT5udW1fZmllbGRzOyAkaSsrKSB7IGlmKEBwZ19maWVsZF9uYW1lKCR0aGlzLT5yZXMsICRpKSE9PWZhbHNlKSAkdGhpcy0+Y29sdW1uc1tdPUBwZ19maWVsZF9uYW1lKCR0aGlzLT5yZXMsICRpKTsgfSBicmVhazsgY2FzZSAnT3JhY2xlJzogZm9yKCRpPTA7ICRpIDwgJHRoaXMtPm51bV9maWVsZHM7ICRpKyspIHsgaWYoQG9jaWNvbHVtbm5hbWUoJHRoaXMtPnJlcywgJGkpIT09ZmFsc2UpICR0aGlzLT5jb2x1bW5zW109QG9jaWNvbHVtbm5hbWUoJHRoaXMtPnJlcywgJGkpOyB9IGJyZWFrOyB9IH0gZnVuY3Rpb24gZ2V0X251bV9maWVsZHMoKXsgJHRoaXMtPm51bV9maWVsZHM9MDsgc3dpdGNoKCR0aGlzLT5kYil7IGNhc2UgJ015U1FMJzogJHRoaXMtPm51bV9maWVsZHM9QG15c3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7IGJyZWFrOyBjYXNlICdNU1NRTCc6ICR0aGlzLT5udW1fZmllbGRzPUBtc3NxbF9udW1fZmllbGRzKCR0aGlzLT5yZXMpOyBicmVhazsgY2FzZSAnUG9zdGdyZVNRTCc6ICR0aGlzLT5udW1fZmllbGRzPUBwZ19udW1fZmllbGRzKCR0aGlzLT5yZXMpOyBicmVhazsgY2FzZSAnT3JhY2xlJzogJHRoaXMtPm51bV9maWVsZHM9QG9jaW51bWNvbHMoJHRoaXMtPnJlcyk7IGJyZWFrOyB9IH0gZnVuY3Rpb24gcGFyc2VfZmllbGRzKCR0YWJsZSl7IGlmKCEkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gYCcuJHRhYmxlLidgIExJTUlUIDAsMTsnKSkgcmV0dXJuIDA7IHJldHVybiAoJHRoaXMtPmdldF9yZXN1bHQoKSA/ICR0aGlzLT5udW1fZmllbGRzIDogMCk7IH0gZnVuY3Rpb24gY291bnRfcm93cygkdGFibGUpeyAkdG1wY291bnQ9MDsgc3dpdGNoKCR0aGlzLT5kYil7IGNhc2UgJ015U1FMJzogJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgQ09VTlQoKikgRlJPTSBgJy4kdGFibGUuJ2A7Jyk7IGlmKEBpc19yZXNvdXJjZSgkdGhpcy0+cmVzKSl7ICR0bXA9QG15c3FsX2ZldGNoX2FycmF5KCR0aGlzLT5yZXMpOyAkdG1wY291bnQ9JHRtcFswXTsgfSBicmVhazsgY2FzZSAnTVNTUUwnOiBicmVhazsgY2FzZSAnUG9zdGdyZVNRTCc6IGJyZWFrOyBjYXNlICdPcmFjbGUnOiBicmVhazsgfSByZXR1cm4gKEBpc19udW1lcmljKCR0bXBjb3VudCk/JHRtcGNvdW50OjApOyB9IGZ1bmN0aW9uIGR1bXAoJHRhYmxlKXsgaWYoZW1wdHkoJHRhYmxlKSkgcmV0dXJuIDA7ICR0aGlzLT5kdW1wPWFycmF5KCk7ICR0aGlzLT5kdW1wWzBdPScjIyc7ICR0aGlzLT5kdW1wWzFdPScjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOyAkdGhpcy0+ZHVtcFsyXT0nIyMgRHVtcCBkYXRlIDogJy5AZGF0ZSgiZC9tL1kgSDppOnMiKTsgJHRoaXMtPmR1bXBbM109JyMjIFBIUCBzaGVsbCA6ICcuejh1KCk7ICR0aGlzLT5kdW1wWzRdPScjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOyAkdGhpcy0+ZHVtcFs1XT0nIyMgU1FMIGhvc3QgIDogJy4kdGhpcy0+aG9zdC4nOicuJHRoaXMtPnBvcnQ7ICR0aGlzLT5kdW1wWzZdPScjIyBTUUwgdXNlciAgOiAnLiR0aGlzLT51c2VyOyAkdGhpcy0+ZHVtcFs3XT0nIyMgU1FMIHBhc3MgIDogJy4kdGhpcy0+cGFzczsgJHRoaXMtPmR1bXBbOF09JyMjIFNRTCBkYiAgICA6ICcuJHRoaXMtPmJhc2U7ICR0aGlzLT5kdW1wWzldPScjIyBTUUwgdGFibGUgOiAnLiR0YWJsZTsgJHRoaXMtPmR1bXBbMTBdPScjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOyBzd2l0Y2goJHRoaXMtPmRiKXsgY2FzZSAnTXlTUUwnOiAkdGhpcy0+ZHVtcFswXT0nIyMgTXlTUUwgZHVtcCc7IGlmKCR0aGlzLT5xdWVyeSgnLyonLmNocigwKS4nKi8gU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHRhYmxlLidgJykhPTEpIHJldHVybiAwOyBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7ICR0aGlzLT5kdW1wW109JHRoaXMtPnJvd3NbMF1bJ0NyZWF0ZSBUYWJsZSddOyAkdGhpcy0+ZHVtcFtdPScjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOyBpZigkdGhpcy0+cXVlcnkoJy8qJy5jaHIoMCkuJyovIFNFTEVDVCAqIEZST00gYCcuJHRhYmxlLidgJykhPTEpIHJldHVybiAwOyBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7IGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKXsgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KXsgJHRoaXMtPnJvd3NbJGldWyRrXT1AbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCR2KTsgfSAkdGhpcy0+ZHVtcFtdPSdJTlNFUlQgSU5UTyBgJy4kdGFibGUuJ2AgKGAnLkBpbXBsb2RlKCJgLCBgIiwkdGhpcy0+Y29sdW1ucykuJ2ApIFZBTFVFUyAoXCcnLkBpbXBsb2RlKCInLCAnIiwkdGhpcy0+cm93c1skaV0pLidcJyk7JzsgfSBicmVhazsgY2FzZSAnTVNTUUwnOiAkdGhpcy0+ZHVtcFswXT0nIyMgTVNTUUwgZHVtcCc7IGlmKCR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSkhPTEpIHJldHVybiAwOyBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7IGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKXsgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KXsgJHRoaXMtPnJvd3NbJGldWyRrXT1AYWRkc2xhc2hlcygkdik7IH0gJHRoaXMtPmR1bXBbXT0nSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCR0aGlzLT5jb2x1bW5zKS4nKSBWQUxVRVMgKFwnJy5AaW1wbG9kZSgiJywgJyIsJHRoaXMtPnJvd3NbJGldKS4nXCcpOyc7IH0gYnJlYWs7IGNhc2UgJ1Bvc3RncmVTUUwnOiAkdGhpcy0+ZHVtcFswXT0nIyMgUG9zdGdyZVNRTCBkdW1wJzsgaWYoJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKSE9MSkgcmV0dXJuIDA7IGlmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKSByZXR1cm4gMDsgZm9yKCRpPTA7JGk8JHRoaXMtPm51bV9yb3dzOyRpKyspeyBmb3JlYWNoKCR0aGlzLT5yb3dzWyRpXSBhcyAkaz0+JHYpeyAkdGhpcy0+cm93c1skaV1bJGtdPUBhZGRzbGFzaGVzKCR2KTsgfSAkdGhpcy0+ZHVtcFtdPSdJTlNFUlQgSU5UTyAnLiR0YWJsZS4nICgnLkBpbXBsb2RlKCIsICIsJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBpbXBsb2RlKCInLCAnIiwkdGhpcy0+cm93c1skaV0pLidcJyk7JzsgfSBicmVhazsgY2FzZSAnT3JhY2xlJzogJHRoaXMtPmR1bXBbMF09JyMjIE9SQUNMRSBkdW1wJzsgYnJlYWs7IGRlZmF1bHQ6IHJldHVybiAwOyBicmVhazsgfSByZXR1cm4gMTsgfSBmdW5jdGlvbiBjbG9zZSgpeyBzd2l0Y2goJHRoaXMtPmRiKXsgY2FzZSAnTXlTUUwnOiBAbXlzcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOyBicmVhazsgY2FzZSAnTVNTUUwnOiBAbXNzcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pOyBicmVhazsgY2FzZSAnUG9zdGdyZVNRTCc6IEBwZ19jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7IGJyZWFrOyBjYXNlICdPcmFjbGUnOiBAb2NpX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsgYnJlYWs7IH0gfSBmdW5jdGlvbiBhZmZlY3RlZF9yb3dzKCl7IHN3aXRjaCgkdGhpcy0+ZGIpeyBjYXNlICdNeVNRTCc6IHJldHVybiBAbXlzcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsgYnJlYWs7IGNhc2UgJ01TU1FMJzogcmV0dXJuIEBtc3NxbF9hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpOyBicmVhazsgY2FzZSAnUG9zdGdyZVNRTCc6IHJldHVybiBAcGdfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsgYnJlYWs7IGNhc2UgJ09yYWNsZSc6IHJldHVybiBAb2Npcm93Y291bnQoJHRoaXMtPnJlcyk7IGJyZWFrOyBkZWZhdWx0OiByZXR1cm4gMDsgYnJlYWs7IH0gfSB9IGNsYXNzIGZ0cCB7IHZhciAkc2VydmVyPSIiOyB2YXIgJHBvcnQ9MjE7IHZhciAkdXNlcj0iIjsgdmFyICR1c2VyRGlyPSIiOyB2YXIgJHBhc3N3b3JkPSIiOyB2YXIgJGNvbm5lY3Rpb249IiI7IHZhciAkcGFzc2l2ZT1mYWxzZTsgdmFyICRzeXN0eXBlPSIiOyB2YXIgJG1vZGU9RlRQX0JJTkFSWTsgdmFyICRsb2dnZWRPbj1mYWxzZTsgdmFyICRkb3dubG9hZERpcj0iIjsgZnVuY3Rpb24gZnRwKCRzZXJ2ZXIsJHBvcnQsJHVzZXIsJHBhc3N3b3JkLCRwYXNzaXZlPWZhbHNlKXsgJHRoaXMtPnNlcnZlcj0kc2VydmVyOyAkdGhpcy0+cG9ydD0kcG9ydDsgJHRoaXMtPnVzZXI9JHVzZXI7ICR0aGlzLT5wYXNzd29yZD0kcGFzc3dvcmQ7ICR0aGlzLT5jb25uZWN0KCk7ICR0aGlzLT5zZXRQYXNzaXZlKCRwYXNzaXZlKTsgfSBmdW5jdGlvbiBjb25uZWN0KCl7ICR0aGlzLT5jb25uZWN0aW9uPUBmdHBfY29ubmVjdCgkdGhpcy0+c2VydmVyLCR0aGlzLT5wb3J0KTsgJHRoaXMtPmxvZ2dlZE9uPUBmdHBfbG9naW4oJHRoaXMtPmNvbm5lY3Rpb24sJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3N3b3JkKTsgJHRoaXMtPnN5c3R5cGU9QGZ0cF9zeXN0eXBlKCR0aGlzLT5jb25uZWN0aW9uKTsgcmV0dXJuOyB9IGZ1bmN0aW9uIHNldFBhc3NpdmUoJHBhc3NpdmUpeyAkdGhpcy0+cGFzc2l2ZT0kcGFzc2l2ZTsgQGZ0cF9wYXN2KCR0aGlzLT5jb25uZWN0aW9uLCR0aGlzLT5wYXNzaXZlKTsgcmV0dXJuOyB9IGZ1bmN0aW9uIHNldE1vZGUoJG1vZGU9MSl7ICR0aGlzLT5tb2RlPSRtb2RlOyByZXR1cm47IH0gZnVuY3Rpb24gc2V0Q3VycmVudERpcigkZGlyPWZhbHNlKXsgaWYoJGRpcikgQGZ0cF9jaGRpcigkdGhpcy0+Y29ubmVjdGlvbiwkZGlyKTsgJHRoaXMtPmN1cnJlbnREaXI9ejFrKEBmdHBfcHdkKCR0aGlzLT5jb25uZWN0aW9uKSk7IHJldHVybiAkdGhpcy0+Y3VycmVudERpcjsgfSBmdW5jdGlvbiBzZXREb3dubG9hZERpcigkZGlyKXsgJHRoaXMtPmRvd25sb2FkRGlyPSRkaXI7IHJldHVybjsgfSBmdW5jdGlvbiBjaG1vZCgkcCwkZil7IHJldHVybiBAZnRwX3NpdGUoJHRoaXMtPmNvbm5lY3Rpb24sImNobW9kICRwICRmIik7IH0gZnVuY3Rpb24gY2QoJGRpcil7IGlmKCRkaXI9PSIuLiIpeyBAZnRwX2NkdXAoJHRoaXMtPmNvbm5lY3Rpb24pOyB9ZWxzZXsgaWYoIUBmdHBfY2hkaXIoJHRoaXMtPmNvbm5lY3Rpb24sJHRoaXMtPmN1cnJlbnREaXIuJGRpcikpeyBAZnRwX2NoZGlyKCR0aGlzLT5jb25uZWN0aW9uLCRkaXIpOyB9IH0gJHRoaXMtPmN1cnJlbnREaXI9ejFrKEBmdHBfcHdkKCR0aGlzLT5jb25uZWN0aW9uKSk7IHJldHVybjsgfSBmdW5jdGlvbiBpc19kaXIoJGRpcikgeyBpZiAoQGZ0cF9jaGRpcigkdGhpcy0+Y29ubmVjdGlvbiwgJGRpcikpIHsgQGZ0cF9jaGRpcigkdGhpcy0+Y29ubmVjdGlvbiwgJy4uJyk7IHJldHVybiB0cnVlOyB9IGVsc2UgeyByZXR1cm4gZmFsc2U7IH0gfSBmdW5jdGlvbiBnZXQoJGZpbGUsJGRlc3Q9JycsJHQ9MCl7IGlmKCRkZXN0PT0nJykgJGRlc3Q9JHRoaXMtPmRvd25sb2FkRGlyOyByZXR1cm4gQGZ0cF9nZXQoJHRoaXMtPmNvbm5lY3Rpb24sKCR0PyRkZXN0OnoxaygkZGVzdCkuejJsKCRmaWxlKSksIiRmaWxlIiwkdGhpcy0+bW9kZSk7IH0gZnVuY3Rpb24gZ2V0UmVjdXJzaXZlKCRzcmMsJGRlc3Q9JycpeyBpZigkZGVzdD09JycpICRkZXN0PSR0aGlzLT5kb3dubG9hZERpcjsgJHRhcmdldD16MmwoJHNyYyk7ICRzcmM9ejFrKCRzcmMpOyAkZGVzdD16MWsoJGRlc3QpLiR0YXJnZXQ7IGlmKCF6NHIoJGRlc3QpKSBAbWtkaXIoJGRlc3QpOyAkbGlzdD1AZnRwX25saXN0KCR0aGlzLT5jb25uZWN0aW9uLCRzcmMpOyBmb3IoJHg9MDskeDxAY291bnQoJGxpc3QpOyR4KyspeyAkbz16MmwoJGxpc3RbJHhdKTsgaWYoJG8hPScuJyAmJiAkbyE9Jy4uJyl7IGlmKCR0aGlzLT5pc19kaXIoJHNyYy4kbykpeyAkdGhpcy0+Z2V0UmVjdXJzaXZlKCRzcmMuJG8sJGRlc3QpOyB9ZWxzZXsgJHRoaXMtPmdldCgkc3JjLiRvLCAkZGVzdCk7IH0gfSB9IH0gZnVuY3Rpb24gZ2V0T2JqZWN0KCRzcmMsICRkZXN0PScnKXsgaWYoJGRlc3Q9PScnKSAkZGVzdD0kdGhpcy0+ZG93bmxvYWREaXI7IGlmKCR0aGlzLT5pc19kaXIoJHNyYykpeyByZXR1cm4gJHRoaXMtPmdldFJlY3Vyc2l2ZSh6MWsoJHNyYyksICRkZXN0KTsgfSBlbHNlIHsgcmV0dXJuICR0aGlzLT5nZXQoJHNyYywgJGRlc3QpOyB9IH0gZnVuY3Rpb24gcHV0KCRyZiwkbGYpeyByZXR1cm4gKEBmaWxlX2V4aXN0cygkbGYpID8gQGZ0cF9wdXQoJHRoaXMtPmNvbm5lY3Rpb24sJHJmLCRsZiwkdGhpcy0+bW9kZSkgOiBmYWxzZSk7IH0gZnVuY3Rpb24gcHV0UmVjdXJzaXZlKCRzcmMsJGRlc3Q9JycpeyBpZigkZGVzdD09JycpICRkZXN0PSR0aGlzLT5jdXJyZW50RGlyOyAkdGFyZ2V0PXoybCgkc3JjKTsgJHNyYz16MWsoJHNyYyk7ICRkZXN0PXoxaygkZGVzdCkuJHRhcmdldDsgJHRoaXMtPm1ha2VEaXIoJGRlc3QpOyAkbGlzdD16OHgoJHNyYyk7IGZvcigkeD0wOyAkeDxAY291bnQoJGxpc3QpOyAkeCsrKXsgJG89ejJsKCRsaXN0WyR4XSk7IGlmKCRvIT0iLiImJiRvIT0iLi4iKXsgaWYoejRqKCRzcmMuJG8pKXsgJHRoaXMtPnB1dFJlY3Vyc2l2ZSgkc3JjLiRvLCRkZXN0KTsgfWVsc2V7ICR0aGlzLT5wdXQoejFrKCRkZXN0KS4kbywkc3JjLiRvKTsgfSB9IH0gfSBmdW5jdGlvbiBwdXRPYmplY3QoJHNyYywgJGRlc3Q9JycpeyBpZigkZGVzdD09JycpICRkZXN0PSR0aGlzLT5jdXJyZW50RGlyOyAkdGFyZ2V0PXoybCgkc3JjKTsgaWYoejRqKCRzcmMpKXsgcmV0dXJuICR0aGlzLT5wdXRSZWN1cnNpdmUoJHNyYywgJGRlc3QpOyB9IGVsc2UgeyByZXR1cm4gJHRoaXMtPnB1dCh6MWsoJGRlc3QpLiR0YXJnZXQsICRzcmMpOyB9IH0gZnVuY3Rpb24gZGVsZXRlRmlsZSgkcmYpeyByZXR1cm4gQGZ0cF9kZWxldGUoJHRoaXMtPmNvbm5lY3Rpb24sIiRyZiIpOyB9IGZ1bmN0aW9uIGRlbGV0ZU9iamVjdCgkb2JqKXsgJGNvYmo9ejJsKCRvYmopOyBpZigkY29iaiE9Jy4nJiYkY29iaiE9Jy4uJyl7IGlmKCR0aGlzLT5pc19kaXIoJG9iaikpeyBpZigkbGlzdD1AZnRwX25saXN0KCR0aGlzLT5jb25uZWN0aW9uLCIkb2JqIikpeyBmb3IoJHg9MDskeDxAY291bnQoJGxpc3QpOyR4KyspeyAkbz16MmwoJGxpc3RbJHhdKTsgaWYoJG8hPScuJyYmJG8hPScuLicpeyAkdGhpcy0+ZGVsZXRlT2JqZWN0KHoxaygkb2JqKS4kbyk7IH0gfSB9IEBmdHBfcm1kaXIoJHRoaXMtPmNvbm5lY3Rpb24sIiRvYmoiKTsgfWVsc2V7ICR0aGlzLT5kZWxldGVGaWxlKCIkb2JqIik7IH0gfSB9IGZ1bmN0aW9uIHJlbmFtZSgkb2xkLCRuZXcpeyByZXR1cm4gQGZ0cF9yZW5hbWUoJHRoaXMtPmNvbm5lY3Rpb24sIiRvbGQiLCIkbmV3Iik7IH0gZnVuY3Rpb24gbWFrZURpcigkZGlyKXsgcmV0dXJuIEBmdHBfbWtkaXIoJHRoaXMtPmNvbm5lY3Rpb24sIiRkaXIiKTsgfSBmdW5jdGlvbiBwYXJzZWxpbmUoJHJhdykgeyBpZiAoQHByZWdfbWF0Y2goIi8oWy1kbF0pKFtyd3hzU3RULV17OX0pWyBdKyhbMC05XSspWyBdKyhbXiBdKylbIF0rKC4rKVsgXSsoWzAtOV0rKVsgXSsoW2EtekEtWl0rWyBdK1swLTldKylbIF0rKFswLTk6XSspWyBdKyguKikvIiwgJHJhdywgJG0pKXsgJGw9YXJyYXkoKCRtWzFdPT0nZCc/J2QnOigkbVsxXT09J2wnPydsJzonZicpKSwgJG1bOV0sICRtWzZdKTsgfSBlbHNlaWYgKEBwcmVnX21hdGNoKCIvKFstZGxdKShbcnd4c1N0VC1dezl9KVsgXSsoLiopWyBdKyhbYS16QS1aMC05IF0rKVsgXSsoWzAtOTpdKylbIF0rKC4qKS8iLCAkcmF3LCAkbSkpeyAkbD1hcnJheSgoJG1bMV09PSdkJz8nZCc6KCRtWzFdPT0nbCc/J2wnOidmJykpLCAkbVs2XSwgJG1bM10pOyB9IGVsc2VpZiAoQHByZWdfbWF0Y2goIi8oWzAtOVxcLy1dKylbIF0rKFswLTk6QU1QXSspWyBdKyhbMC05XSp8PERJUj4pWyBdKyguKikvIiwgJHJhdywgJG0pKXsgJGw9YXJyYXkoKCRtWzNdPT0iPERJUj4iPydkJzonZicpLCAkbVs0XSwgJG1bM10pOyB9IGVsc2VpZiAoQHByZWdfbWF0Y2goIi8oWy1dfFtkXSlbIF0rKC57MTB9KVsgXSsoW14gXSspWyBdKyhbMC05XSopWyBdKyhbYS16QS1aXSpbIF0rWzAtOV0qKVsgXSsoWzAtOTpdKilbIF0rKC4qKS8iLCAkcmF3LCAkbSkpeyAkbD1hcnJheSgoJG1bMV09PSdkJz8nZCc6J2YnKSwgJG1bN10sICRtWzRdKTsgfSBlbHNlaWYgKEBwcmVnX21hdGNoKCIvKFthLXpBLVowLTlfLV0rKVsgXSsoWzAtOV0rKVsgXSsoWzAtOVxcLy1dKylbIF0rKFswLTk6XSspWyBdKyhbYS16QS1aMC05XyAtXCpdKylbIFxcL10rKFteXFwvXSspLyIsICRyYXcsICRtKSl7ICRsPWFycmF5KCgkbVs1XT09IipTVE1GIj8nZic6J2QnKSwgJG1bNl0sICRtWzJdKTsgfSBlbHNlaWYgKEBwcmVnX21hdGNoKCIvKFstZGxdKShbcnd4c1N0VC1dezl9KVsgXSsoWzAtOV0rKVsgXSsoW2EtekEtWjAtOV0rKVsgXSsoW2EtekEtWjAtOV0rKVsgXSsoWzAtOV0rKVsgXSsoW2EtekEtWl0rWyBdK1swLTldKylbIF0rKFswLTk6XSspWyBdKC4qKS8iLCAkcmF3LCAkbSkpeyAkbD1hcnJheSgoJG1bMV09PSdkJz8nZCc6KCRtWzFdPT0nbCc/J2wnOidmJykpLCAkbVs5XSwgJG1bNl0pOyB9IGVsc2UgeyAkbD1hcnJheSgpOyB9IGlmICghQGlzc2V0KCRsWzFdKXx8JGxbMV0gPT0gIi4iIHx8ICRsWzFdID09ICIuLiIgfHwgQHN1YnN0cigkcmF3LDAsNSkgPT0gInRvdGFsIikgcmV0dXJuIGFycmF5KCk7IHJldHVybiAkbDsgfSBmdW5jdGlvbiBmdHBSYXdMaXN0KCRkaXI9JycpeyBpZigkZGlyPT0nJykgJGRpcj0kdGhpcy0+Y3VycmVudERpcjsgJGZpbGVzPWFycmF5KCk7ICRsaXN0PUBmdHBfcmF3bGlzdCgkdGhpcy0+Y29ubmVjdGlvbiwiLWEgIi4kZGlyKTsgaWYoQGlzX2FycmF5KCRsaXN0KSl7ICRpPTA7IGZvcmVhY2goJGxpc3QgYXMgJHJhdyl7ICRsaW5lPSR0aGlzLT5wYXJzZWxpbmUoJHJhdyk7IGlmKEBjb3VudCgkbGluZSk9PTMpeyAkZmlsZXNbJGldPSRsaW5lOyAkaSsrOyB9IH0gfSByZXR1cm4gJGZpbGVzOyB9IH0gaWYoQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCc0LjEuMCcpPT0tMSl7ICRfUE9TVD0mJEhUVFBfUE9TVF9WQVJTOyAkX0dFVD0mJEhUVFBfR0VUX1ZBUlM7ICRfU0VSVkVSPSYkSFRUUF9TRVJWRVJfVkFSUzsgJF9DT09LSUU9JiRIVFRQX0NPT0tJRV9WQVJTOyB9IGlmKEBpc3NldCgkX0dFVFsnYWN0J10pICYmICRfR0VUWydhY3QnXT09ImkiKXsgJGltZz0kX0dFVFsnaW1nJ107IGlmKCFAaXNzZXQoJF9HRVRbJ2dldGFsbCddKSl7ICRpbWc9QHN0cl9yZXBsYWNlKCJ+IiwiIiwkaW1nKTsgZm9yZWFjaCgkaW5kZXggYXMgJGs9PiR2KXsgaWYoQGluX2FycmF5KCRpbWcsJHYpKXsgJGltZz0kazsgYnJlYWs7IH0gfSBpZihAZW1wdHkoJGltYWdlc1skaW1nXSkpeyAkaW1nPSJzbWFsbF91bmsiOyBpZihAaXNzZXQoJF9HRVRbJ2V4ZSddKSYmJF9HRVRbJ2V4ZSddKSAkaW1nPSJjbWQiOyB9ICRpbWFnZT16OWIoJGltYWdlc1skaW1nXSk7IEBvYl9zdGFydCgpOyAkbGVuPUBzdHJsZW4oJGltYWdlKTsgQGhlYWRlcigiQ2FjaGUtY29udHJvbDogcHVibGljIik7IEBoZWFkZXIoIkV4cGlyZXM6ICIuQGRhdGUoInIiLEBta3RpbWUoMCwwLDAsMSwxLDIwMzApKSk7IEBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9Ii4oNjAqNjAqMjQqNykpOyBAaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnLkBkYXRlKCdyJykpOyBAaGVhZGVyKCdBY2NlcHQtUmFuZ2VzOiBieXRlcycpOyBAaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJy4kbGVuKTsgQGhlYWRlcignQ29udGVudC10eXBlOiBpbWFnZS9wbmcnKTsgZWNobyAkaW1hZ2U7IEBvYl9lbmRfZmx1c2goKTsgfWVsc2V7IHozeigpOyAkcj0nJzsgZm9yZWFjaCgkaW5kZXggYXMgJGE9PiRiKXsgZm9yZWFjaCgkYiBhcyAkZCl7IGlmKCRhIT0kZCl7IGlmKEBpc3NldCgkaW1hZ2VzWyRkXSkmJiFAZW1wdHkoJGltYWdlc1skZF0pKXsgJHIuPXo3dSh6OWMoIlJlbW92ZSBcJGltYWdlc1siLiRkLiJdIikpOyB9IH0gfSB9IGlmKCRyIT0nJykgZWNobyB6MTB3KCRyKTsgQG5hdHNvcnQoJGltYWdlcyk7ICRrPUBhcnJheV9rZXlzKCRpbWFnZXMpOyAkbj0xOyAkcj0nJzsgZm9yZWFjaCgkayBhcyAkdSkgJHIgLj0gejd1KHo5YygoJG4rKykpLno5YygkdSkuejljKCc8aW1nIGFsdD0iIiBzcmM9Ij9hY3Q9aSZpbWc9Jy4kdS4nIiBib3JkZXI9IjAiPicpKTsgZWNobyB6MTB3KCRyKTsgejNqKCk7IH0gZXhpdCgpOyB9IGlmKEBmdW5jdGlvbl9leGlzdHMoJ2Vycm9yX3JlcG9ydGluZycpKXsgQGVycm9yX3JlcG9ydGluZygwKTsgfSBpZihAZnVuY3Rpb25fZXhpc3RzKCdpbmlfc2V0JykpeyBAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLDApOyBAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsgQGluaV9zZXQoJ2xvZ19lcnJvcnMnLDApOyBAaW5pX3NldCgnZmlsZV91cGxvYWRzJywxKTsgQGluaV9zZXQoJ2Fzc2VydC5xdWlldF9ldmFsJywwKTsgQGluaV9zZXQoJ2FsbG93X3VybF9mb3BlbicsMSk7IEBpbmlfc2V0KCdtZW1vcnlfbGltaXQnLCcyNTZNJyk7IEBpbmlfc2V0KCd1cGxvYWRfbWF4X2ZpbGVzaXplJywnMjU2TScpOyBAaW5pX3NldCgnbWFnaWNfcXVvdGVzX3N5YmFzZScsMCk7IEBpbmlfc2V0KCdtYWdpY19xdW90ZXNfcnVudGltZScsMCk7IEBpbmlfc2V0KCdtYWdpY19xdW90ZXNfZ3BjJywwKTsgQGluaV9zZXQoJ29wZW5fYmFzZWRpcicsTlVMTCk7IH1lbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdpbmlfYWx0ZXInKSl7IEBpbmlfYWx0ZXIoJ2Rpc3BsYXlfZXJyb3JzJywwKTsgQGluaV9hbHRlcignZXJyb3JfbG9nJyxOVUxMKTsgQGluaV9hbHRlcignbG9nX2Vycm9ycycsMCk7IEBpbmlfYWx0ZXIoJ2ZpbGVfdXBsb2FkcycsMSk7IEBpbmlfYWx0ZXIoJ2FsbG93X3VybF9mb3BlbicsMSk7IEBpbmlfYWx0ZXIoJ21lbW9yeV9saW1pdCcsJzI1Nk0nKTsgQGluaV9hbHRlcigndXBsb2FkX21heF9maWxlc2l6ZScsJzI1Nk0nKTsgQGluaV9hbHRlcignbWFnaWNfcXVvdGVzX3N5YmFzZScsMCk7IEBpbmlfYWx0ZXIoJ21hZ2ljX3F1b3Rlc19ydW50aW1lJywwKTsgQGluaV9hbHRlcignbWFnaWNfcXVvdGVzX2dwYycsMCk7IEBpbmlfYWx0ZXIoJ29wZW5fYmFzZWRpcicsTlVMTCk7IH0gaWYoQGZ1bmN0aW9uX2V4aXN0cygnc2V0X3RpbWVfbGltaXQnKSl7IEBzZXRfdGltZV9saW1pdCgwKTsgfSBlbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX3NldCcpKXsgQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMzAwKTsgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdpbmlfYWx0ZXInKSl7IEBpbmlfYWx0ZXIoJ21heF9leGVjdXRpb25fdGltZScsMzAwKTsgfSBAc2Vzc2lvbl9zdGFydCgpOyBAb2Jfc3RhcnQoKTsgZGVmaW5lKCJzdGFydCIsejEwZSgpKTsgaWYoQGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpeyBpZihAaXNzZXQoJF9GSUxFUykmJkBjb3VudCgkX0ZJTEVTKT4wKXsgejN1KCRfRklMRVMpOyB9IHo0ZigkX1BPU1QpOyB9IGlmKEBpc3NldCgkX1NFU1NJT05bJ3RtcHMnXSkpeyAkdG1wcz0kX1NFU1NJT05bJ3RtcHMnXTsgfSBlbHNlIHsgJHRtcHM9ejZqKCk7ICRfU0VTU0lPTlsndG1wcyddPSR0bXBzOyB9ICR0ZW1wZGlyPSR0bXBzWzBdOyBmb3JlYWNoKCRfUE9TVCBhcyAkcG9zdGs9PiRwb3N0dil7IGlmKEBzdWJzdHIoJHBvc3RrLDAsNik9PSJiYWNrZl8iKXsgJHBvc3RrPUBzdWJzdHIoJHBvc3RrLDYpOyAkcG9zdHY9QHVybGRlY29kZSgkcG9zdHYpOyB9IGlmKCRwb3N0az09J21lcmdlZCcpeyAkYXJfbWVyZ2VkPXBhcnNlX3N0cihiYXNlNjRfZGVjb2RlKCRwb3N0dikpOyBpZihAY291bnQoJGFyX21lcmdlZCk+MCl7IGZvcmVhY2goJGFyX21lcmdlZCBhcyAka2tleT0+JGt2YWwpeyBpZighQGlzc2V0KCR7JGtrZXl9KSl7ICR7JGtrZXl9PUB1cmxkZWNvZGUoJGt2YWwpOyB9IH0gfSB9IGVsc2UgeyBpZighQGlzc2V0KCR7JHBvc3RrfSkpeyAkeyRwb3N0a309JHBvc3R2OyB9IH0gfSBmb3JlYWNoKCRfR0VUIGFzICRrPT4kdil7IGlmKCFAaXNzZXQoJHska30pKXsgJHska309QHVybGRlY29kZSgkdik7IH0gfSBpZighQGlzc2V0KCRhY3QpKSAkYWN0PXo3eignMicsJ2RlZmF1bHRfYWN0Jyk7IGlmKCRhY3Q9PSJsb2dvdXQiKSB6NHcoKTsgejRnKCk7ICR3aW49JG5peD0kbGludXg9MDsgJG9zPXo5cCgpOyBpZihAcHJlZ19tYXRjaCgiL153aW4vaSIsICRvcykpeyAkd2luPTE7IH0gZWxzZSB7ICRuaXg9MTsgaWYoQHByZWdfbWF0Y2goIi9saW51eC9pIiwkb3MpKSAkbGludXg9MTsgfSAkc2hfZXhlYz0kc2FmZV9leGVjPTA7ICR0ZXN0X2NtZD16OWUoImVjaG8gel90ZXN0ZXhlYyIpOyBpZihAc3RycG9zKCR0ZXN0X2NtZCwiZXhlYyIpPT09Nil7ICRzaF9leGVjPTE7IH0gZWxzZWlmICgkbml4ICYmIEBwcmVnX21hdGNoKCcvc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkLycsICR0ZXN0X2NtZCkpeyAkc2FmZV9leGVjPTE7IH0gJGN1c2VyPXo1aigpOyAkc2FkZHI9KEBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk/JF9TRVJWRVJbJ1NFUlZFUl9BRERSJ106KEBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSk/JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ106JzEyNy4wLjAuMScpKTsgJHlhZGRyPSRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOyAkYnNhZmU9KCghejdlKCdpbmlfZ2V0Jyl8fHo4ZCgnc2FmZV9tb2RlJyl8fCEkc2hfZXhlYykgPyAxIDogMCk7ICRib3BlbmRpcj0oQGNvdW50KHo5YShAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykpKT4wID8gMSA6IDApOyAkYV9zcWw9YXJyYXkoKTsgJGJteXNxbD16N2UoIm15c3FsX2Nvbm5lY3QiKTsgaWYoJGJteXNxbCkgJGFfc3FsW109Ik15U1FMIjsgJGJtc3NxbD16N2UoIm1zc3FsX2Nvbm5lY3QiKTsgaWYoJGJtc3NxbCkgJGFfc3FsW109Ik1zU1FMIjsgJGJvcmFjbGU9ejdlKCJvY2lsb2dvbiIpOyBpZigkYm9yYWNsZSkgJGFfc3FsW109Ik9yYWNsZSI7ICRicG9zdGdyZXM9ejdlKCJwZ19jb25uZWN0Iik7IGlmKCRicG9zdGdyZXMpICRhX3NxbFtdPSJQb3N0Z3JlU1FMIjsgJGJwYXNzd2Q9MDsgaWYoJG5peCl7IGlmKHoxeSgiL2V0Yy9wYXNzd2QiKSkgJGJwYXNzd2Q9MTsgfSAkYmN1cmw9KEBleHRlbnNpb25fbG9hZGVkKCdjdXJsJykmJno3ZSgiY3VybF9pbml0IikpOyAkYmZzb2NrPXo3ZSgiZnNvY2tvcGVuIik7ICRiZnRwPSh6N2UoImZ0cF9jb25uZWN0IikmJno3ZSgiZnRwX2xvZ2luIikpOyAkYm1haWw9ejdlKCJtYWlsIik7ICRiemlwYXJjaGl2ZT0oejdlKCJjbGFzc19leGlzdHMiKSYmQGNsYXNzX2V4aXN0cygiWmlwQXJjaGl2ZSIpKTsgJGR0b3RhbD0kZHVzZWQ9JGRmcmVlPScwQic7IGlmKCRhY3Q9PSJkIil7IGlmKEBpc3NldCgkZHQpKXsgJGR0PUB0cmltKCRkdCk7IGlmKCFAZW1wdHkoJGR0KSl7IHN3aXRjaCgkZHQpeyBjYXNlICduZXcnOiBpZighejRqKCRkKSl7IEBta2RpcigkZCk7IH0gJGFjdD0ibHMiOyBicmVhazsgY2FzZSAnY2hkaXInOiBpZihAaXNzZXQoJHR0KSYmejRqKCR0dCkpeyAkZD0kdHQ7IH0gJGFjdD0ibHMiOyBicmVhazsgY2FzZSAncmVuYW1lJzogaWYoQGlzc2V0KCR0dCkmJno0aigkdHQpKXsgaWYoQGlzc2V0KCRkcmVuYW1lKSYmJGRyZW5hbWUmJkBpc3NldCgkbmV3bmFtZSkmJiFAZW1wdHkoJG5ld25hbWUpKXsgaWYoejNhKCRuZXduYW1lKT09Jy4vJyl7ICRuZXduYW1lPXozYSgkdHQpLnoybCgkbmV3bmFtZSk7IH0gZWxzZWlmKCF6NHIoejNhKCRuZXduYW1lKSkpeyAkbmV3bmFtZT16M2EoJHR0KS4kbmV3bmFtZTsgfSBpZih6NHIoJG5ld25hbWUpJiZ6NGooJG5ld25hbWUpKXsgJG5ld25hbWU9ejFrKCRuZXduYW1lKS56MmwoJHR0KTsgfSAkcmVuZGlybXNnPSB6M3EoKEByZW5hbWUoJHR0LCRuZXduYW1lKT96OXkoIjQ3NCIsJG5ld25hbWUpOno5eSgiNDc1IiwkdHQpKSwnMCcpOyB9IGVsc2UgeyAkc2hvd3JlbmFtZTE9MTsgfSB9ICRhY3Q9ImxzIjsgYnJlYWs7IGNhc2UgJ2RlbGV0ZSc6IGlmKHo0cigkdHQpKXsgejhzKCR0dCk7IH0gJGFjdD0ibHMiOyBicmVhazsgY2FzZSAnZnVuY3Rpb25zJzogaWYoQGlzc2V0KCR0dCkmJno0aigkdHQpKXsgJGQ9JHR0OyB9ICRhY3Q9ImRmdW5jIjsgYnJlYWs7IGNhc2UgJ2Jjb3B5JzogaWYoQGlzc2V0KCR0dCkmJno0aigkdHQpKXsgJGFidWY9JGR0OyB9ICRhY3Q9ImxzIjsgYnJlYWs7IGNhc2UgJ2JjdXQnOiBpZihAaXNzZXQoJHR0KSYmejRqKCR0dCkpeyAkYWJ1Zj0kZHQ7IH0gJGFjdD0ibHMiOyBicmVhazsgY2FzZSAnYnBhc3RlY29weSc6ICRhYnVmPSRkdDsgaWYoQGlzc2V0KCR0dCkmJno0aigkdHQpKXsgJGQ9JHR0OyB9ICRhY3Q9ImxzIjsgYnJlYWs7IGNhc2UgJ2JwYXN0ZWN1dCc6ICRhYnVmPSRkdDsgaWYoQGlzc2V0KCR0dCkmJno0aigkdHQpKXsgJGQ9JHR0OyB9ICRhY3Q9ImxzIjsgYnJlYWs7IGNhc2UgJ2JwYXN0ZWFsbCc6ICRhYnVmPSRkdDsgaWYoQGlzc2V0KCR0dCkmJno0aigkdHQpKXsgJGQ9JHR0OyB9ICRhY3Q9ImxzIjsgYnJlYWs7IGRlZmF1bHQ6IGJyZWFrOyB9IH0gfSB9IGlmKCFAaXNzZXQoJGQpfHxAZW1wdHkoJGQpKXsgJGQ9QHJlYWxwYXRoKEBkaXJuYW1lKF9fRklMRV9fKSk7IHo5bigpOyB9ZWxzZWlmKEByZWFscGF0aCgkZCkpeyAkZD1AcmVhbHBhdGgoJGQpOyB6OW4oKTsgfWVsc2VpZihAaXNzZXQoJGRvbGQpJiZAcmVhbHBhdGgoejFrKCRkb2xkKS4kZCkpeyAkZD1AcmVhbHBhdGgoejFrKCRkb2xkKS4kZCk7IH0gaWYoQGVtcHR5KCRkKSkgJGQ9QGdldGN3ZCgpOyAkZD16MWsoJGQpOyBAY2hkaXIoJGQpOyBpZih6N2UoJ2Rpc2tfZnJlZV9zcGFjZScpJiZ6N2UoJ2Rpc2tfdG90YWxfc3BhY2UnKSl7ICRmcmVlPUBkaXNrX2ZyZWVfc3BhY2UoJGQpOyAkdG90YWw9QGRpc2tfdG90YWxfc3BhY2UoJGQpOyBpZigkZnJlZT09PWZhbHNlKSAkZnJlZT0wOyBpZigkdG90YWw9PT1mYWxzZSkgJHRvdGFsPTA7IGlmKCRmcmVlPDApICRmcmVlPTA7IGlmKCR0b3RhbDwwKSAkdG90YWw9MDsgJGRmcmVlPUBzdHJfcmVwbGFjZSgiICIsIiIsejd4KCRmcmVlKSk7ICRkdG90YWw9QHN0cl9yZXBsYWNlKCIgIiwiIix6N3goJHRvdGFsKSk7ICRkdXNlZD1Ac3RyX3JlcGxhY2UoIiAiLCIiLHo3eCgoJHRvdGFsLSRmcmVlKSkpOyB9ICRhX2J1Zj1hcnJheSgnYmNvcHknLCdiY3V0Jyk7ICRiX2J1Zj1hcnJheSgnYnBhc3RlY29weScsJ2JwYXN0ZWN1dCcsJ2JwYXN0ZWFsbCcpOyBpZighQGlzc2V0KCR1c2VfYnVmZmVyKSl7IGlmKEBpc3NldCgkX1NFU1NJT05bJ3VzZV9idWZmZXInXSkpeyAkdXNlX2J1ZmZlcj0kX1NFU1NJT05bJ3VzZV9idWZmZXInXTsgfSBlbHNlIHsgJHVzZV9idWZmZXI9ejd6KCc0Jyk7IH0gfSBlbHNlIHsgJHVzZV9idWZmZXIgPSAoYm9vbCkoaW50KSR1c2VfYnVmZmVyOyBpZighJHVzZV9idWZmZXIpIHowZCgpOyB9ICRfU0VTU0lPTlsndXNlX2J1ZmZlciddID0gJHVzZV9idWZmZXI7IGlmKCRuaXgmJiRzaF9leGVjKXsgaWYoIUBpc3NldCgkY21kX3RhcikpeyBpZihAaXNzZXQoJF9TRVNTSU9OWydjbWRfdGFyJ10pKXsgJGNtZF90YXI9JF9TRVNTSU9OWydjbWRfdGFyJ107IH0gZWxzZSB7ICRjbWRfdGFyPXo4dCgidGFyIik7IH0gfSAkX1NFU1NJT05bJ2NtZF90YXInXT0kY21kX3RhcjsgaWYoIUBpc3NldCgkY21kX3VucmFyKSl7IGlmKEBpc3NldCgkX1NFU1NJT05bJ2NtZF91bnJhciddKSl7ICRjbWRfdW5yYXI9JF9TRVNTSU9OWydjbWRfdW5yYXInXTsgfSBlbHNlIHsgJGNtZF91bnJhcj16OHQoInVucmFyIik7IH0gfSAkX1NFU1NJT05bJ2NtZF91bnJhciddPSRjbWRfdW5yYXI7IGlmKCFAaXNzZXQoJGNtZF91bnppcCkpeyBpZihAaXNzZXQoJF9TRVNTSU9OWydjbWRfdW56aXAnXSkpeyAkY21kX3VuemlwPSRfU0VTU0lPTlsnY21kX3VuemlwJ107IH0gZWxzZSB7ICRjbWRfdW56aXA9ejh0KCJ1bnppcCIpOyB9IH0gJF9TRVNTSU9OWydjbWRfdW56aXAnXT0kY21kX3VuemlwOyBpZighQGlzc2V0KCRjbWRfZ3VuemlwKSl7IGlmKEBpc3NldCgkX1NFU1NJT05bJ2NtZF9ndW56aXAnXSkpeyAkY21kX2d1bnppcD0kX1NFU1NJT05bJ2NtZF9ndW56aXAnXTsgfSBlbHNlIHsgJGNtZF9ndW56aXA9ejh0KCJndW56aXAiKTsgfSB9ICRfU0VTU0lPTlsnY21kX2d1bnppcCddPSRjbWRfZ3VuemlwOyBpZighQGlzc2V0KCRjbWRfYnVuemlwMikpeyBpZihAaXNzZXQoJF9TRVNTSU9OWydjbWRfYnVuemlwMiddKSl7ICRjbWRfYnVuemlwMj0kX1NFU1NJT05bJ2NtZF9idW56aXAyJ107IH0gZWxzZSB7ICRjbWRfYnVuemlwMj16OHQoImJ1bnppcDIiKTsgfSB9ICRfU0VTU0lPTlsnY21kX2J1bnppcDInXT0kY21kX2J1bnppcDI7IGlmKCFAaXNzZXQoJHJlZ19hcmNoaXZlcykpeyBpZihAaXNzZXQoJF9TRVNTSU9OWydyZWdfYXJjaGl2ZXMnXSkpeyAkcmVnX2FyY2hpdmVzPSRfU0VTU0lPTlsncmVnX2FyY2hpdmVzJ107IH0gZWxzZSB7ICRyZWdfYXJjaGl2ZXM9Jyc7IGlmKCFAZW1wdHkoJGNtZF91bnJhcikpICRyZWdfYXJjaGl2ZXMgLj0gInJhcnwiOyBpZighQGVtcHR5KCRjbWRfdW56aXApKSAkcmVnX2FyY2hpdmVzIC49ICJ6aXB8IjsgaWYoIUBlbXB0eSgkY21kX3RhcikmJiFAZW1wdHkoJGNtZF9ndW56aXApKSAkcmVnX2FyY2hpdmVzIC49ICJ0YXIuZ3p8dGd6fCI7IGlmKCFAZW1wdHkoJGNtZF90YXIpJiYhQGVtcHR5KCRjbWRfYnVuemlwMikpICRyZWdfYXJjaGl2ZXMgLj0gInRhci5iejJ8IjsgaWYoIUBlbXB0eSgkY21kX3RhcikpICRyZWdfYXJjaGl2ZXMgLj0gInRhcnwiOyBpZighQGVtcHR5KCRjbWRfZ3VuemlwKSkgJHJlZ19hcmNoaXZlcyAuPSAiZ3p8IjsgaWYoIUBlbXB0eSgkY21kX2J1bnppcDIpKSAkcmVnX2FyY2hpdmVzIC49ICJiejJ8IjsgaWYoIUBlbXB0eSgkcmVnX2FyY2hpdmVzKSkgJHJlZ19hcmNoaXZlcz1Ac3Vic3RyKCRyZWdfYXJjaGl2ZXMsMCwoQHN0cmxlbigkcmVnX2FyY2hpdmVzKS0xKSk7IH0gfSAkX1NFU1NJT05bJ3JlZ19hcmNoaXZlcyddPSRyZWdfYXJjaGl2ZXM7IH0gaWYoJGJ6aXBhcmNoaXZlKXsgaWYoIUBpc3NldCgkcmVnX2FyY2hpdmVzKSl7IGlmKEBpc3NldCgkX1NFU1NJT05bJ3JlZ19hcmNoaXZlcyddKSl7ICRyZWdfYXJjaGl2ZXM9JF9TRVNTSU9OWydyZWdfYXJjaGl2ZXMnXTsgaWYoQGVtcHR5KCRyZWdfYXJjaGl2ZXMpKXsgJHJlZ19hcmNoaXZlcz0iemlwIjsgfSBlbHNlIHsgJHJfZT1AZXhwbG9kZSgifCIsJHJlZ19hcmNoaXZlcyk7IGlmKCFAaW5fYXJyYXkoInppcCIsJHJfZSkpICRyZWdfYXJjaGl2ZXMgLj0gInx6aXAiOyB9IH0gZWxzZSB7ICRyZWdfYXJjaGl2ZXM9J3ppcCc7IH0gfSAkX1NFU1NJT05bJ3JlZ19hcmNoaXZlcyddPSRyZWdfYXJjaGl2ZXM7IH0gaWYoIUBpc3NldCgkY29sb3Jfc2tpbikpeyBpZihAaXNzZXQoJF9TRVNTSU9OWydjb2xvcl9za2luJ10pKXsgJGNvbG9yX3NraW49JF9TRVNTSU9OWydjb2xvcl9za2luJ107IH0gZWxzZSB7ICRjb2xvcl9za2luPXo3eignNScsJ2RlZmF1bHRfc2tpbicpOyB9IH0gJF9TRVNTSU9OWydjb2xvcl9za2luJ10gPSAkY29sb3Jfc2tpbjsgaWYoIUBpc3NldCgkdXNlX2ltYWdlcykpeyBpZihAaXNzZXQoJF9TRVNTSU9OWyd1c2VfaW1hZ2VzJ10pKXsgJHVzZV9pbWFnZXM9JF9TRVNTSU9OWyd1c2VfaW1hZ2VzJ107IH0gZWxzZSB7ICR1c2VfaW1hZ2VzPXo3eignNScsJ2ltYWdlcycpOyB9IH0gZWxzZSB7ICR1c2VfaW1hZ2VzPSAoYm9vbCkoaW50KSR1c2VfaW1hZ2VzOyB9ICRfU0VTU0lPTlsndXNlX2ltYWdlcyddID0gJHVzZV9pbWFnZXM7IGlmKCR1c2VfYnVmZmVyKXsgaWYoJGFjdD09ImYiJiZAaW5fYXJyYXkoJGZ0LCRhX2J1ZikpeyAkYWN0PSdscyc7ICRhYnVmPSRmdDsgJGY9JGQuJGY7IH0gaWYoQGlzc2V0KCRlbXB0eWJ1ZikgJiYgJGVtcHR5YnVmKSB6MGQoKTsgejFkKCk7IGlmKEBpc3NldCgkYWJ1ZikgJiYgQGluX2FycmF5KCRhYnVmLCRhX2J1ZikpeyBpZihAaXNzZXQoJHR0KSkgejFvKCR0dCwkYWJ1Zik7IGlmKEBpc3NldCgkZikpIHoxbygkZiwkYWJ1Zik7IH0gZWxzZWlmKEBpc3NldCgkYWJ1ZikgJiYgQGluX2FycmF5KCRhYnVmLCRiX2J1ZikpeyBzd2l0Y2goJGFidWYpeyBjYXNlICdicGFzdGVjb3B5JzogaWYoQGlzc2V0KCRiY29weSkmJkBpc19hcnJheSgkYmNvcHkpJiZAY291bnQoJGJjb3B5KT4wKXsgZm9yZWFjaCgkYmNvcHkgYXMgJHRjZil7IGlmKHo0cigkdGNmKSkgejhyKCR0Y2YsICh6NGooJHRjZik/IHoxaygkZCkuejJsKCR0Y2YpOiB6MWsoJGQpKSk7IH0gfSBicmVhazsgY2FzZSAnYnBhc3RlY3V0JzogaWYoQGlzc2V0KCRiY3V0KSYmQGlzX2FycmF5KCRiY3V0KSYmQGNvdW50KCRiY3V0KT4wKXsgZm9yZWFjaCgkYmN1dCBhcyAkdGNmKXsgaWYoejRyKCR0Y2YpKSB6OHAoJHRjZiwgejFrKCRkKS4oejRqKCR0Y2YpP3oybCgkdGNmKTonJykpOyB6MW8oJHRjZiwiYmN1dCIpOyB9IH0gYnJlYWs7IGNhc2UgJ2JwYXN0ZWFsbCc6IGlmKEBpc3NldCgkYmNvcHkpJiZAaXNfYXJyYXkoJGJjb3B5KSYmQGNvdW50KCRiY29weSk+MCl7IGZvcmVhY2goJGJjb3B5IGFzICR0Y2YpeyBpZih6NHIoJHRjZikpIHo4cigkdGNmLCB6MWsoJGQpLih6NGooJHRjZik/ejJsKCR0Y2YpOicnKSk7IH0gfSBpZihAaXNzZXQoJGJjdXQpJiZAaXNfYXJyYXkoJGJjdXQpJiZAY291bnQoJGJjdXQpPjApeyBmb3JlYWNoKCRiY3V0IGFzICR0Y2YpeyBpZih6NHIoJHRjZikpIHo4cCgkdGNmLCB6MWsoJGQpLih6NGooJHRjZik/ejJsKCR0Y2YpOicnKSk7IHoxbygkdGNmLCJiY3V0Iik7IH0gfSBicmVhazsgZGVmYXVsdDogYnJlYWs7IH0gfSB6MGooKTsgaWYoQGlzc2V0KCRzaG93YnVmKSAmJiAkc2hvd2J1Zil7ICRsc19hPUBhcnJheV9tZXJnZSgkYmNvcHksJGJjdXQpOyB9IH0gejN6KCk7IHozYygpOyB6MHAoKTsgaWYoJGFjdD09ImYiJiZAaXNzZXQoJGZ0KSYmKCRmdD09ImV4dHJhY3QifHwkZnQ9PSJleHRyYWN0emlwIikpeyAkZmY9Jyc7IGlmKHo0cigkZC4kZikpeyAkZmY9JGQuJGY7IH0gZWxzZWlmKHo0cigkZikpIHsgJGQ9ejNhKCRmKTsgJGY9ejJsKCRmKTsgJGZmPSRkLiRmOyB9IGlmKEBpc3NldCgkcmVnX2FyY2hpdmVzKSYmJHJlZ19hcmNoaXZlcyE9JycmJkBpc3NldCgkZmYpKXsgaWYoQHByZWdfbWF0Y2goJy9cLignLiRyZWdfYXJjaGl2ZXMuJykkL2knLCRmLCRtKSl7IGlmKEBpc3NldCgkbVsxXSkpeyBpZigkZnQ9PSJleHRyYWN0IiYmJHNoX2V4ZWMpeyBzd2l0Y2goQHN0cnRvbG93ZXIoJG1bMV0pKXsgY2FzZSAncmFyJzogejllKCJ1bnJhciB4ICRmZiIpOyBicmVhazsgY2FzZSAnemlwJzogejllKCJ1bnppcCAkZmYiKTsgYnJlYWs7IGNhc2UgJ3Rhci5iejInOiB6OWUoInRhciBqeGYgJGZmIik7IGJyZWFrOyBjYXNlICd0YXIuZ3onOiB6OWUoInRhciB6eGYgJGZmIik7IGJyZWFrOyBjYXNlICd0Z3onOiB6OWUoInRhciB6eGYgJGZmIik7IGJyZWFrOyBjYXNlICd0YXInOiB6OWUoInRhciB4ZiAkZmYiKTsgYnJlYWs7IGNhc2UgJ2d6JzogejllKCJndW56aXAgJGZmIik7IGJyZWFrOyBjYXNlICdiejInOiB6OWUoImJ1bnppcDIgJGZmIik7IGJyZWFrOyBkZWZhdWx0OiBicmVhazsgfSB9IGVsc2VpZigkZnQ9PSJleHRyYWN0emlwIil7IGVjaG8gejNxKCh6MG0oJGZmLCRkKSA/IHo5eSgiNDc2IiwkZik6ejl5KCI0NzciLCRmKSksJzAnKTsgfSB9IH0gfSAkYWN0PSJscyI7IH0gaWYoQGlzc2V0KCRyZW5kaXJtc2cpJiYhQGVtcHR5KCRyZW5kaXJtc2cpKSBlY2hvICRyZW5kaXJtc2c7IGlmKEBpc3NldCgkc2hvd3JlbmFtZTEpJiYkc2hvd3JlbmFtZTEpeyBlY2hvIHozcSh6NXgoYXJyYXkoImFjdCI9PiJkIiwiZCIsImR0Ij0+InJlbmFtZSIsInR0IiwiZHJlbmFtZSI9PiIxIiksejEwdyh6N3UoejZsKHo3bih6OXkoIjQ3MyIsejJsKCR0dCkpKS56NXkoIm5ld25hbWUiLCR0dCwiOSIpLno4Yih6OXkoIjczIiksIjciKSkpLCIyIikpLCcwJyk7IH0gaWYoJGFjdD09ImYiJiZAaXNzZXQoJGZ0KSYmJGZ0PT0icmVuYW1lIiYmQGlzc2V0KCRmKSYmIUBlbXB0eSgkZikpeyBpZihAaXNzZXQoJGZyZW5hbWUpJiYkZnJlbmFtZSYmQGlzc2V0KCRuZXduYW1lKSYmIUBlbXB0eSgkbmV3bmFtZSkpeyBpZih6M2EoJG5ld25hbWUpPT0nLi8nKXsgJG5ld25hbWU9ejNhKCRmZikuejJsKCRuZXduYW1lKTsgfSBlbHNlaWYoIXo0cih6M2EoJG5ld25hbWUpKSl7ICRuZXduYW1lPXozYSgkZmYpLiRuZXduYW1lOyB9IGlmKHo0cigkbmV3bmFtZSkmJno0aigkbmV3bmFtZSkpeyAkbmV3bmFtZT16MWsoJG5ld25hbWUpLnoybCgkZmYpOyB9IGVjaG8gejNxKChAcmVuYW1lKCRmZiwkbmV3bmFtZSk/ejl5KCI0NzQiLCRuZXduYW1lKTp6OXkoIjQ3NSIsJGZmKSksJzAnKTsgfSBlbHNlIHsgaWYoIWlzc2V0KCRmZikpeyBpZih6NHIoJGQuJGYpKXsgJGZmPSRkLiRmOyB9IGVsc2VpZih6NHIoJGYpKXsgJGZmPSRmOyB9IH0gZWNobyB6M3EoejV4KGFycmF5KCJhY3QiPT4iZiIsImYiLCJkIiwiZnQiPT4icmVuYW1lIiwiZmYiLCJmcmVuYW1lIj0+IjEiKSx6MTB3KHo3dSh6NmwoejduKHo5eSgiNDczIix6MmwoJGZmKSkpLno1eSgibmV3bmFtZSIsJGZmLCI5IikuejhiKHo5eSgiNzMiKSwiNyIpKSksIjIiKSksJzAnKTsgfSAkYWN0PSJscyI7IH0gZWxzZWlmKCRhY3Q9PSJmIiYmQGlzc2V0KCRmdCkmJiRmdD09ImRlbGV0ZSImJkBpc3NldCgkZikmJiFAZW1wdHkoJGYpKXsgJGZmPScnOyBpZih6NHIoJGQuJGYpKXsgJGZmPSRkLiRmOyB9IGVsc2VpZih6NHIoJGYpKXsgJGZmPSRmOyB9IGlmKHo0cigkZmYpKSB6OHMoJGZmKTsgJGFjdD0ibHMiOyB9IGlmKCgkYWN0PT0iZGZ1bmMifHwkYWN0PT0iZiIpJiYoKEBpc3NldCgkc3QxKSYmJHN0MSl8fEBpc3NldCgkc3QyKSYmJHN0MikpeyBpZigkYWN0PT0iZGZ1bmMiKXsgJHRvdWNoPSRkOyB9IGVsc2UgeyAkdG91Y2g9JGY7IH0gaWYoQGlzc2V0KCRzdDIpJiYkc3QyJiYhQGVtcHR5KCR0b3VjaCkmJno0cigkdG91Y2gpJiZAaXNzZXQoJHRtb250aCkmJiFAZW1wdHkoJHRtb250aCkmJkBpc3NldCgkdGRheSkmJiFAZW1wdHkoJHRkYXkpJiZAaXNzZXQoJHR5ZWFyKSYmIUBlbXB0eSgkdHllYXIpJiZAaXNzZXQoJHRob3VyKSYmIUBlbXB0eSgkdGhvdXIpJiZAaXNzZXQoJHRtaW4pJiYhQGVtcHR5KCR0bWluKSYmQGlzc2V0KCR0c2VjKSYmIUBlbXB0eSgkdHNlYykpeyAkc2RhdGU9JHRkYXkuIiAiLiR0bW9udGguIiAiLiR0eWVhci4iICIuJHRob3VyLiIgaG91cnMgIi4kdG1pbi4iIG1pbnV0ZXMgIi4kdHNlYy4iIHNlY29uZHMiOyAkdGRhdGU9QHN0cnRvdGltZSgkc2RhdGUpOyBpZihAdG91Y2goJHRvdWNoLCR0ZGF0ZSwkdGRhdGUpKXsgJHRtc2c9ejl5KCIxMTMiLEBkYXRlKCJNLWQtWSBIOmk6cyIsJHRkYXRlKSk7IH1lbHNleyAkdG1zZz16OXkoIjExNCIpOyB9IH0gaWYoQGlzc2V0KCRzdDEpJiYkc3QxJiZ6NHIoJHRvdWNoKSYmQGlzc2V0KCRjb3B5X2Zyb20pJiYhQGVtcHR5KCRjb3B5X2Zyb20pJiZ6NHIoJGNvcHlfZnJvbSkpeyBpZihAdG91Y2goJHRvdWNoLEBmaWxlbXRpbWUoJGNvcHlfZnJvbSksQGZpbGVtdGltZSgkY29weV9mcm9tKSkpeyAkdG1zZz16OXkoIjExMyIsQGRhdGUoIk0tZC1ZIEg6aTpzIixAZmlsZW10aW1lKCRjb3B5X2Zyb20pKSk7IH1lbHNleyAkdG1zZz16OXkoIjExNCIpOyB9IH0gfSBpZihAaXNzZXQoJGNobW9kX3N1Ym1pdCkmJiRjaG1vZF9zdWJtaXQmJkBpc3NldCgkY3RhcmdldCkpeyBpZihAaXNzZXQoJGNobW9kX3ZhbCkpeyBAY2htb2QoJGN0YXJnZXQsQG9jdGRlYygkY2htb2RfdmFsKSk7IH0gZWxzZSB7ICRvY3RldD0iMCIuQGJhc2VfY29udmVydCgoJGNobW9kX29bInIiXT8iMSI6IjAiKS4oJGNobW9kX29bInciXT8iMSI6IjAiKS4oJGNobW9kX29bIngiXT8iMSI6IjAiKS4oJGNobW9kX2dbInIiXT8iMSI6IjAiKS4oJGNobW9kX2dbInciXT8iMSI6IjAiKS4oJGNobW9kX2dbIngiXT8iMSI6IjAiKS4oJGNobW9kX3dbInIiXT8iMSI6IjAiKS4oJGNobW9kX3dbInciXT8iMSI6IjAiKS4oJGNobW9kX3dbIngiXT8iMSI6IjAiKSwyLDgpOyBAY2htb2QoJGN0YXJnZXQsQG9jdGRlYygkb2N0ZXQpKTsgfSBpZih6N2UoJ2NsZWFyc3RhdGNhY2hlJykpIEBjbGVhcnN0YXRjYWNoZSgpOyB9IHo4bigpOyBpZigkYWN0PT0iZGZ1bmMiKXsgejJuKCk7IHowYygkZCwwLDEpOyBpZih6N2UoJ3RvdWNoJykpeyB6M2koKTsgZWNobyB6M3Eoejl5KCIxMjQiKS56OXgoKS56NHkoJGQpKTsgZWNobyB6MTB3KCB6NWIoKS4gKEBpc3NldCgkdG1zZykmJiFAZW1wdHkoJHRtc2cpP3o3dSh6NXQoejl4KCkpLno5YygkdG1zZykpOicnKS4gejd1KHo1eChhcnJheSgiYWN0IiwiZCIsInN0MSI9PiIxIiksejV0KHo5eSgiMTA0IikpLno5Yyh6NXkoImNvcHlfZnJvbSIsIiIsIjkiKS56OGIoejl5KCIxMTIiKSwiNyIpKSkpLiB6N3UoejV4KGFycmF5KCJhY3QiLCJkIiwic3QyIj0+IjEiKSx6NXQoejl5KCIxMDUiKSkuejljKHozbSgidG1vbnRoIiwkdG1vbnRoX2FyciwiNCIsMSkuIi0iLnozbSgidGRheSIsJHRkYXlfYXJyLCI0IiwxKS4iLSIuejNtKCJ0eWVhciIsJHR5ZWFyX2FyciwiNCIsMSkuejl4KDEyKS56M20oInRob3VyIiwkdGhvdXJfYXJyLCIxIiwxKS4iOiIuejNtKCJ0bWluIiwkdG1pbl9hcnIsIjEiLDEpLiI6Ii56M20oInRzZWMiLCR0c2VjX2FyciwiMSIsMSkuejhiKHo5eSgiMTEyIiksIjciKSApKSkuIHo1YigpICwiMiIpOyB9IH0gaWYoJGFjdD09ImYiJiZAaXNzZXQoJGZ0KSl7ICRmdD1AdHJpbSgkZnQpOyBpZihAZW1wdHkoJGZ0KSkgJGFjdD0ibHMiOyB9IGlmKCRhY3Q9PSJmIil7IGlmKCFAaXNzZXQoJGYpKSAkZj0nJzsgaWYoIUBpc3NldCgkZnQpKSAkZnQ9Jyc7IGlmKEBpc3NldCgkcmVhZGZpbGUpKXsgJGQ9ejNhKCRyZWFkZmlsZSk7ICRmPXoybCgkcmVhZGZpbGUpOyB9IGVsc2VpZihAaXNzZXQoJHdyaXRlZmlsZSkpeyAkZD16M2EoJHdyaXRlZmlsZSk7ICRmPXoybCgkd3JpdGVmaWxlKTsgfSAkZm1zZz0nJzsgaWYoIXo0ZSgkZC4kZikmJno0ZSgkZikpeyAkZD16M2EoJGYpOyAkZj16MmwoJGYpOyB9IGVsc2VpZih6MWsoJGYpPT16MWsoJGQpKXsgJGY9Jyc7ICRmbXNnPXo5eSgiNDcyIik7IH0gZWxzZWlmKHozYSgkZik9PXoxaygkZCkpeyAkZj16MmwoJGYpOyB9IHoybigpOyBpZigoIXo0aigkZC4kZikmJnoxeSgkZC4kZikpfHwoIXo0cigkZC4kZikmJnowbigkZCkmJkBpc3NldCgkZnQpJiYkZnQ9PSJuZXciKSl7ICRleHQ9QHN0cnRvbG93ZXIoejJsKCRmLCcuJykpOyAkcmZ0PXo0eCgkZik7IGlmKEBwcmVnX21hdGNoKCIvc2Vzc18oLiopLyIsJGYpKXsgJHJmdD0ic2VzcyI7IH0gaWYoIUBpc3NldCgkZnQpfHxAZW1wdHkoJGZ0KSl7ICRmdD0kcmZ0OyB9IGlmKCRmdD09Im5ldyIpeyB6OXQoJGQuJGYsIiIpOyAkZnQ9ImVkaXQiOyB9IGlmKCRmdD09InJjb3duIil7ICRyY21zZz0iICIuKHoydygkZC4kZik/ejVwKHo5eSgiMjkwIikpOno4ayh6OXkoIjI5MSIpKSk7ICRmdD0iY29kZSI7IH0gaWYoQGVtcHR5KCRmdCkpICRmdD0nZnVuY3Rpb25zJzsgZWNobyB6M3Eoejl5KCI3OCIpLno5eCgpLigkdXNlX2ltYWdlcz8nPGltZyBzcmM9Ij9hY3Q9aSZhbXA7aW1nPScuJGV4dC4nIj4gJzonJykuejR5KCRkLiRmLiIgKCIuejd4KEBmaWxlc2l6ZSgkZC4kZikpLiIpIikuKEBpc3NldCgkcmNtc2cpPyRyY21zZzonJykpOyB6MnEoKTsgaWYoKCRmdCE9J2Z1bmN0aW9ucyd8fCgkZnQ9PSdmdW5jdGlvbnMnJiZAaXNzZXQoJHN1Ym1pdF9lbmNvZGUpKSkmJiRmdCE9J2luaScpICRyPXo5bygkZC4kZik7IHN3aXRjaCgkZnQpeyBjYXNlICdmdW5jdGlvbnMnOiBlY2hvIHozcSh6OXkoIjkwIikpOyBlY2hvIHo2cygpOyAkZW5jb2RlX2Z1bmN0aW9ucz16MWUoKTsgZWNobyB6OW0oJzInKS56OWsoKS56OXYoImQiKS56OXYoImFjdCIsImYiKS56OXYoImYiKS56OXYoImZ0IiwiZnVuY3Rpb25zIikuejl2KCJzdWJtaXRfZW5jb2RlIiwiMSIpLiB6N3UoejV0KHo5eSgiOTEiKSkuejljKHozbSgiZW5jb2RlX3NlbGVjdGVkIiwkZW5jb2RlX2Z1bmN0aW9ucywiMCIsMSwnOScpLno4Yih6OXkoIjkyIiksJzcnKSkpLno5bCgpOyAkZW5jb2Rlcl9vdXRwdXQ9IiI7IGlmKEBpc3NldCgkc3VibWl0X2VuY29kZSkmJiRzdWJtaXRfZW5jb2RlKXsgJGVuY29kZXJfb3V0cHV0PSRlbmNvZGVfc2VsZWN0ZWQoJHIpOyBlY2hvIHo5ZCh6NXQoejl5KCIxMDIiKSkuejljKHo1dygnJywnMScpLkBodG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVyX291dHB1dCkuejVxKCkpKTsgfSBlY2hvIHoxMHEoKTsgZWNobyB6NnMoKTsgejBjKCRkLiRmKTsgaWYoejdlKCd0b3VjaCcpKXsgejNpKCk7IGVjaG8gejNxKHo5eSgiMTAzIikpOyBlY2hvIHoxMHcoIHo1YigpLiAoQGlzc2V0KCR0bXNnKSYmIUBlbXB0eSgkdG1zZyk/ejd1KHo1dCh6OXgoKSkuejljKCR0bXNnKSk6JycpLiB6N3UoejV4KGFycmF5KCJhY3QiLCJkIiwiZiIsImZ0Ij0+ImZ1bmN0aW9ucyIsInN0MSI9PiIxIiksejV0KHo5eSgiMTA0IikpLno5Yyh6NXkoImNvcHlfZnJvbSIsIiIsIjkiKS56OGIoejl5KCIxMTIiKSwiNyIpKSkpLiB6N3UoejV4KGFycmF5KCJhY3QiLCJkIiwiZiIsImZ0Ij0+ImZ1bmN0aW9ucyIsInN0MiI9PiIxIiksejV0KHo5eSgiMTA1IikpLno5Yyh6M20oInRtb250aCIsJHRtb250aF9hcnIsIjQiLDEpLiItIi56M20oInRkYXkiLCR0ZGF5X2FyciwiNCIsMSkuIi0iLnozbSgidHllYXIiLCR0eWVhcl9hcnIsIjQiLDEpLno5eCgxMikuejNtKCJ0aG91ciIsJHRob3VyX2FyciwiMSIsMSkuIjoiLnozbSgidG1pbiIsJHRtaW5fYXJyLCIxIiwxKS4iOiIuejNtKCJ0c2VjIiwkdHNlY19hcnIsIjEiLDEpLno4Yih6OXkoIjExMiIpLCI3IikgKSkpLiB6NWIoKSAsIjIiKTsgfSBicmVhazsgY2FzZSAnZWRpdCc6ICRtc2c9IiI7IGlmKEBpc3NldCgkc2F2ZSkmJiRzYXZlKXsgJG1zZz0oejl0KCRkLiRmLCR0eHRlZGl0KSA/IHo5eSgiMjQzIik6ejl5KCI0NTAiKSk7ICRyPXo5bygkZC4kZik7IH0gZWNobyB6NXgoYXJyYXkoImFjdCI9PiJmIiwiZCIsImYiLCJmdCI9PiJlZGl0Iiwic2F2ZSI9PiIxIiksejEwdyh6OWQoejZsKHo1dygndHh0ZWRpdCcsJzInKS5AaHRtbHNwZWNpYWxjaGFycygkcikuejVxKCkuejl6KCkuejV6KCJsZWZ0IiwiMyIpLno3bih6OXkoIjExNSIpKS4nPGlucHV0IHR5cGU9InRleHQiIGlkPSJyZXBsYWNlX2EiIGNsYXNzPSInLno0bSgnNScsJzQnKS4nIj4nLno5eCg1KS56N24oejl5KCIxMTYiKSkuJzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icmVwbGFjZV9iIiBjbGFzcz0iJy56NG0oJzUnLCc0JykuJyI+Jy56OG0oejl5KCIxMTciKSwnZm5jX3JlcGxhY2UoXCd0eHRlZGl0XCcsXCdyZXBsYWNlX2FcJyxcJ3JlcGxhY2VfYlwnKTsnLCI3IikuJzxpbnB1dCB0eXBlPSJyZXNldCIgdmFsdWU9Iicuejl5KCIxMTgiKS4nIiBjbGFzcz0iJy56NG0oJzcnLCc1JykuJyI+Jy56OGIoejl5KCIxMTkiKSwiNyIpLno5eCgpLno3bigkbXNnKS56NWgoKSkpLCIyIikpOyBlY2hvIHo2cygpOyBicmVhazsgY2FzZSAndGV4dCc6IGVjaG8gejEwdyh6OWQoejZsKCc8cHJlPicuQGh0bWxzcGVjaWFsY2hhcnMoJHIpLic8L3ByZT4nKSksJzInKTsgYnJlYWs7IGNhc2UgJ3dlYic6ICR1cmw9ejh1KCk7ICR1cmxfYT1AcGFyc2VfdXJsKCR1cmwpOyBpZihAaXNzZXQoJHVybF9hWyJob3N0Il0pKXsgJGhvc3Q9JHVybF9hWyJob3N0Il07IGlmKCgkd3d3ZGlyPXozbigpKSE9PWZhbHNlKXsgaWYoQHN0cnN0cigkZC4kZiwkd3d3ZGlyKSE9PWZhbHNlKXsgJGxpbms9Imh0dHA6Ly8iLiRob3N0LiIvIi5Ac3Vic3RyKCRkLiRmLCBAc3RybGVuKCR3d3dkaXIpKTsgZWNobyB6MTB3KHo5ZCh6NmwoJzxpZnJhbWUgYm9yZGVyPSIwIiBjbGFzcz0iaWZyYW1lIiBzcmM9IicuJGxpbmsuJyI+Jy56OXkoIjQ3MSIpLic8L2lmcmFtZT4nKSkuejViKCksJzInKTsgfSB9IH0gYnJlYWs7IGNhc2UgJ2h0bWwnOiBpZihAaXNzZXQoJHdoaXRlKSYmJHdoaXRlKXsgQG9iX2NsZWFuKCk7IGVjaG8gJHI7IEBleGl0KCk7IH0gZWxzZSB7IGVjaG8gejEwdyh6OWQoejZsKCc8aWZyYW1lIGJvcmRlcj0iMCIgY2xhc3M9ImlmcmFtZSIgc3JjPSI/YWN0PWYmYW1wO2Y9Jy5AdXJsZW5jb2RlKCRmKS4nJmFtcDtkPScuQHVybGVuY29kZSgkZCkuJyZ3aGl0ZT0xJmZ0PWh0bWwiPicuejl5KCI0NzEiKS4nPC9pZnJhbWU+JykpLno1YigpLCcyJyk7IH0gYnJlYWs7IGNhc2UgJ2h0bWxzJzogaWYoQGlzc2V0KCR3aGl0ZSkmJiR3aGl0ZSl7ICRyPUBwcmVnX3JlcGxhY2UoJyNcYihvbig/PCFcLm9uKVthLXpdezIsMjB9KVxzKj1ccyooW1xcXCciXSk/KCg/KDIpKD8oPzw9IilbXiJdezEsMTAwMH18W15cXFwnXXsxLDEwMDB9KXxbXlxzIlxcXCc+XXsxLDEwMDB9KSkoPygyKVxcMnwpI2knLCcnLCRyKTsgJHI9QHByZWdfcmVwbGFjZSgnIyg8c2NyaXB0W14+XSo+Lio/PC9zY3JpcHQ+fDxbL10qbm9zY3JpcHQ+fDxtZXRhXHMoLio/KT4pI2lzJywnJywkcik7ICRyPUBwcmVnX3JlcGxhY2UoJyNcYihocmVmKD88IVwuKSlccyo9XHMqKFtcXFwnIl0pP2phdmFzY3JpcHQ6I2knLCdocmVmPVxcMiNqYXZhc2NyaXB0OicsJHIpOyBAb2JfY2xlYW4oKTsgZWNobyAkcjsgQGV4aXQoKTsgfSBlbHNlIHsgZWNobyB6MTB3KHo5ZCh6NmwoJzxpZnJhbWUgYm9yZGVyPSIwIiBjbGFzcz0iaWZyYW1lIiBzcmM9Ij9hY3Q9ZiZhbXA7Zj0nLkB1cmxlbmNvZGUoJGYpLicmYW1wO2Q9Jy5AdXJsZW5jb2RlKCRkKS4nJndoaXRlPTEmZnQ9aHRtbHMiPicuejl5KCI0NzEiKS4nPC9pZnJhbWU+JykpLno1YigpLCcyJyk7IH0gYnJlYWs7IGNhc2UgJ2NvZGUnOiBlY2hvIHo3dygnJywnMicpLno3bygpLno2cSgpOyB6MXAoJHIsJGV4dCk7IGVjaG8gejdmKCkuejd5KCkuejEwcSgpOyBicmVhazsgY2FzZSAnZXhlJzogaWYoIUBpc3NldCgkZWNtZCkpeyAkZXh0PXoybCgkZiwnLicpOyAkZWNtZD0kZC4kZjsgZm9yZWFjaCgkZXhlY2FsaWFzZXMgYXMgJGVrPT4kZXYpeyBpZihAaW5fYXJyYXkoQHN0cnRvbG93ZXIoJGV4dCksJGV2KSl7ICRlY21kPUBzdHJfcmVwbGFjZSgiJWYlIiwkZWNtZCwkZWspOyBicmVhazsgfSB9IH0gZWNobyB6NXgoYXJyYXkoImFjdCI9PiJmIiwiZnQiPT4iZXhlIiwiZCIsImYiLCJleGVjIj0+IjEiKSx6MTB3KCB6NWIoKS4gejd1KHo2bCh6N24oejl5KCIxMjAiKSkuejV5KCdlY21kJywnJywiOSIpLno4Yih6OXkoIjk5IiksIjciKSkpLiB6NWIoKSAsIjIiKSk7IGlmKEBpc3NldCgkZXhlYykmJiRleGVjJiYhQGVtcHR5KCRlY21kKSl7IGVjaG8gejltKCIyIikuejZmKCkuejZxKCkuejV3KCcnLCIxIik7ICRyZXM9ejllKCRlY21kKTsgZWNobyAkcmVzOyBlY2hvIHo1cSgpLno3ZigpLno3eSgpLno1YigpLnoxMHEoKTsgfSBicmVhazsgY2FzZSAnc2Vzcyc6IGVjaG8gejd3KCcnLCcyJykuejdvKCkuejZxKCkuJzxwcmU+JzsgJGU9QGV4cGxvZGUoJ3wnLCRyKTsgZWNobyAkZVswXS56OXooKTsgQHZhcl9kdW1wKEB1bnNlcmlhbGl6ZSgkZVsxXSkpOyBlY2hvICc8L3ByZT4nOyBlY2hvICc8L3ByZT4nLno3ZigpLno3eSgpLnoxMHEoKTsgYnJlYWs7IGNhc2UgJ2luaSc6IGVjaG8gejd3KCcnLCcyJykuejdvKCkuejZxKCkuJzxwcmU+JzsgQHZhcl9kdW1wKEBwYXJzZV9pbmlfZmlsZSgkZC4kZix0cnVlKSk7IGVjaG8gJzwvcHJlPicuejdmKCkuejd5KCkuejEwcSgpOyBicmVhazsgY2FzZSAnc2RiJzogZWNobyB6N3coJycsJzInKS56N28oKS56NnEoKS4nPHByZT4nOyBAdmFyX2R1bXAoQHVuc2VyaWFsaXplKEBiYXNlNjRfZGVjb2RlKCRyKSkpOyBlY2hvICc8L3ByZT4nLno3ZigpLno3eSgpLnoxMHEoKTsgYnJlYWs7IGNhc2UgJ2ltZyc6IGlmKCFAaXNzZXQoJGlzKSkgJGlzPTUwOyAkaW5mPUBnZXRpbWFnZXNpemUoJGQuJGYpOyBpZihAaXNzZXQoJGluZlswXSkgJiYgQGlzc2V0KCRpbmZbMV0pICYmIEBpc3NldCgkaW5mWydtaW1lJ10pKXsgJHc9JGluZlswXS8xMDAqJGlzOyAkaD0kaW5mWzFdLzEwMCokaXM7ICRtaW1lPSRpbmZbIm1pbWUiXTsgfSBlbHNlIHsgJHc9JGg9JHQ9Jyc7IGlmKEBwcmVnX21hdGNoKCcvKGpwZ3xqcGVnfGdpZnxwbmcpL2knLCAkciwgJG0pKSAkdCA9ICgkbVsxXSA9PT0gJ2pwZWcnKSA/ICdqcGcnIDogJG1bMV07ICRtaW1lPSdpbWFnZS8nLkBzdHJ0b2xvd2VyKCR0KTsgfSBpZighQGlzc2V0KCR3aGl0ZSl8fCEkd2hpdGUpeyBlY2hvIHo1eigiY2VudGVyIikuejl6KCk7IGlmKCR3IT0nJyl7IGZvcmVhY2goYXJyYXkoJzIwJywnNTAnLCcxMDAnLCcxNTAnLCcyMDAnKSBhcyAkdikgZWNobyB6NXgoYXJyYXkoJ2FjdCc9PidmJywnZCcsJ2YnLCdmdCc9PidpbWcnLCdpcyc9PiR2KSx6OGIoJHYuJyUnLCgkaXM9PSR2PycxNyc6JzE2JykpKTsgfSBlY2hvIHo5eigyKS4nPGltZyBhbHQ9IiIgc3JjPSI/YWN0PWYmYW1wO2Y9Jy5AdXJsZW5jb2RlKCRmKS4nJmFtcDtmdD1pbWcmYW1wO3doaXRlPTEmYW1wO2Q9Jy5AdXJsZW5jb2RlKCRkKS4nIicuKCR3IT0nJz8nIHdpZHRoPSInLiR3LiciJzonJykuKCRoIT0nJz8nIGhlaWdodD0iJy4kaC4nIic6JycpLicgYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgI0RERERERDsiPicuejVoKCkuejl6KDIpOyB9ZWxzZXsgQG9iX2NsZWFuKCk7IEBoZWFkZXIoIkNvbnRlbnQtdHlwZTogIi4kbWltZSk7IGVjaG8gJHI7IGV4aXQoKTsgfSBicmVhazsgY2FzZSAnaGV4JzogaWYoIUBpc3NldCgkaGV4ZHVtcF90eXBlKSkgJGhleGR1bXBfdHlwZT0nJzsgaWYoJGhleGR1bXBfdHlwZT09ImZ1bGwiKXsgJHN0cj0kcjsgfWVsc2V7ICRzdHI9QHN1YnN0cigkciwwLDE2KjI0KTsgfSAkbj0wOyAkYTA9JGExPSRhMj0nJzsgJG9mcz0wOyAkbGVuPUBzdHJsZW4oJHN0cik7IGZvcigkaT0wOyRpPCRsZW47JGkrKyl7ICRhMS49QHNwcmludGYoJyUwMlgnLEBvcmQoJHN0clskaV0pKS56OXgoKTsgaWYoQG9yZCgkc3RyWyRpXSk9PTApeyAkYTIuPXo1cCgiMCIpOyB9IGVsc2VpZihAb3JkKCRzdHJbJGldKT49MHgyMCAmJiBAb3JkKCRzdHJbJGldKTw9MHg3RSl7ICRhMi49IEBodG1sc3BlY2lhbGNoYXJzKCRzdHJbJGldKTsgfSBlbHNlIHsgJGEyIC49ICIuIjsgfSAkbisrOyBpZigkbj09MjR8fCgkaSsxPT0kbGVuJiYhQGlzX2ludCgkbGVuLzI0KSkpeyAkbj0wOyAkYTAuPUBzcHJpbnRmKCclMDhYJywkb2ZzKS56OXooKTsgJGExLj16OXooKTsgJGEyLj16OXooKTsgJG9mcys9MjQ7IH0gfSBlY2hvIHoxMHcoejlkKHo2bCh6MTB3KHo3dSh6OWMoJGEwLCcxNicpLno5YygkYTEsJzE3JykuejljKCRhMiwnMTgnKSksJzgnKS56MTB3KHo5ZCh6NnooejV4KGFycmF5KCdhY3QnPT4nZicsJ2QnLCdmJywnZnQnLCdoZXhkdW1wX3R5cGUnPT4oJGhleGR1bXBfdHlwZT09J2Z1bGwnPydwcmV2aWV3JzonZnVsbCcpKSx6OGIoKCRoZXhkdW1wX3R5cGU9PSdmdWxsJz96OXkoIjEyMiIpOno5eSgiMTIxIikpLCc3JykpKSksJzgnKSkpLCcyJyk7IGJyZWFrOyBjYXNlICdkb3dubG9hZCc6IEBvYl9jbGVhbigpOyBAaGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOyBAaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGYuIlwiOyIpOyBlY2hvICRyOyBleGl0KCk7IGJyZWFrOyBkZWZhdWx0OiBicmVhazsgfSB9IGVsc2UgeyBpZighQGlzc2V0KCRsb2FkYikpICRsb2FkYj0wOyAkcmJ1dD16NXgoJGJhY2tfZm9ybV9hY3Rpb25zLHo4Yih6OXkoIjQ3MCIpLCI3IikpOyBpZihAZW1wdHkoJGYpKXsgZWNobyB6M3Eoejl5KCI0NjkiKS4kZm1zZy56OXgoNSkuJHJidXQpOyB9IGVsc2UgeyBzd2l0Y2goJGZ0KXsgY2FzZSAnbmV3JzogaWYoIXo0cigkZC4kZikmJno0aigkZCkmJiF6MG4oJGQpKXsgJGxvYWRiPTE7IH0gZWxzZWlmKCF6NHIoJGQuJGYpKXsgJGxvYWRiPTE7IH0gZWxzZWlmKHo0cigkZC4kZikmJno0aigkZC4kZikpeyBlY2hvIHozcSh6OXkoIjQ2OCIsJGQuJGYpLno5eCg1KS4kcmJ1dCk7IH0gZWxzZWlmKHo0cigkZikmJno0aigkZikpeyBlY2hvIHozcSh6OXkoIjQ2OCIsJGYpLno5eCg1KS4kcmJ1dCk7IH0gYnJlYWs7IGRlZmF1bHQ6IGlmKHo0cigkZC4kZikmJno0aigkZC4kZikpeyBlY2hvIHozcSh6OXkoIjQ2OCIsJGQuJGYpLno5eCg1KS4kcmJ1dCk7IH0gZWxzZWlmKHo0cigkZikmJno0aigkZikpeyBlY2hvIHozcSh6OXkoIjQ2OCIsJGYpLno5eCg1KS4kcmJ1dCk7IH0gZWxzZWlmKCF6NHIoJGQuJGYpJiZ6NGooJGQpICYmIHowbigkZCkgJiYgQHN0cnBvcygkZiwiLyIpPT09ZmFsc2UpeyBlY2hvIHozcSh6MTB3KHo3dSh6OWMoejduKHo5eSgiNDY2IiwkZC4kZikpLno1eChhcnJheSgiYWN0Ij0+ImYiLCJkIiwiZiIsImZ0Ij0+Im5ldyIpLHo4Yih6OXkoIjE5NSIpLCI3IikpLiRyYnV0KSksIjIiKSk7IH0gZWxzZSB7ICRsb2FkYj0xOyB9IGJyZWFrOyB9IH0gaWYoJGxvYWRiKXsgejBjKCRkLiRmKTsgJHJmX2Fycj0kc3FscmZfYXJyPSR3Zl9hcnI9YXJyYXkoKTsgJHJmX2FyclsiaW5jbHVkZSJdPSJpbmNsdWRlIChzYWZlX21vZGUpIjsgaWYoJGJjdXJsJiZAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4wIik8PTApICRyZl9hcnJbImN1cmwiXT0iY3VybCAob3Blbl9iYXNlZGlyIC8gUEhQIDw9IDQuNC4yLCA1LjEuNCkiOyBpZighJHdpbiYmejdlKCdtYl9zZW5kX21haWwnKSYmQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMCIpPD0wKSAkcmZfYXJyWyJtYl9zZW5kX21haWwiXT0ibWJfc2VuZF9tYWlsIChzYWZlX21vZGUgLyBQSFAgPD0gNC4wLTQuMi4yLCA1LngpIjsgaWYoejdlKCdpbWFwX29wZW4nKSYmejdlKCdpbWFwX2JvZHknKSYmQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMCIpPD0wKSAkcmZfYXJyWyJpbWFwX2JvZHkiXT0iaW1hcF9ib2R5IChzYWZlX21vZGUgb24gUEhQIDw9IDUuMS4yKSI7IGlmKHo3ZSgnaW5pX3Jlc3RvcmUnKSYmQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMCIpPD0wKSAkcmZfYXJyWyJpbmlfcmVzdG9yZSJdPSJpbmlfcmVzdG9yZSAoc2FmZV9tb2RlIC8gUEhQIDw9IDQuNC40LCA1LjEuNikgYnkgTlNUIjsgaWYoejdlKCdjb3B5JykmJkB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCkgJHJmX2FyclsiemxpYiJdPSJjb3B5W2NvbXByZXNzLnpsaWI6Ly9dIChzYWZlX21vZGUgLyBQSFAgPD0gNC40LjIsIDUuMS4yKSI7IGlmKCRibXlzcWwpICRzcWxyZl9hcnJbIm15c3FsIl09Im15c3FsIChzYWZlX21vZGUpIjsgaWYoJGJtc3NxbCkgJHNxbHJmX2FyclsibXNzcWwiXT0ibXNzcWwgKHNhZmVfbW9kZSkiOyBpZih6N2UoJ2Vycm9yX2xvZycpJiZAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApICR3Zl9hcnJbImVycm9yX2xvZyJdPSJlcnJvcl9sb2dbcGhwOi8vXSAob3Blbl9iYXNlZGlyIC8gUEhQIDw9IDUuMS40LCA0LjQuMikiOyBpZih6N2UoJ3JlYWRmaWxlJykmJkB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkgJHdmX2FyclsicmVhZGZpbGUiXT0icmVhZGZpbGVbcGhwOi8vXSAob3Blbl9iYXNlZGlyIC8gUEhQIDw9IDUuMi4xLCA0LjQuNCkiOyBpZihAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi40Iik8PTApICR3Zl9hcnJbImZvcGVuIl09ImZvcGVuW3NycGF0aDovL10gKG9wZW5fYmFzZWRpciAvIFBIUCB2NS4yLjApIjsgaWYoQGNvdW50KCRyZl9hcnIpPjApeyBlY2hvIHozcSh6OXkoIjEyOCIpKTsgZWNobyB6NnMoKTsgZWNobyB6NXgoYXJyYXkoImFjdCI9PiJmIiwiZCIsImYiPT4oQGlzc2V0KCRyZWFkZmlsZSk/JHJlYWRmaWxlOiRkLiRmKSwiZnQiPT4iZnVuY3Rpb25zIiwic3VibWl0MSI9PiIxIiksejEwdyh6N3UoejV0KHo5eSgiMTI5IikpLno5Yyh6NnUoInJlYWRmaWxlIiwoQGlzc2V0KCRyZWFkZmlsZSk/JHJlYWRmaWxlOiRkLiRmKSwiMCIsIiIsIjkiKS56M20oInJlYWRmaWxlX2Z1bmMiLCRyZl9hcnIsIjUiLDEpLno4Yih6OXkoIjEzMCIpLCI3IikpKSwiMiIpKTsgaWYoQGlzc2V0KCRzdWJtaXQxKSYmJHN1Ym1pdDEmJkBpc3NldCgkcmVhZGZpbGUpJiYhQGVtcHR5KCRyZWFkZmlsZSkpeyBlY2hvIHo5bSgiMiIpLno3bygpLno1dCh6OXgoKSkuejdqKCk7IHN3aXRjaCgkcmVhZGZpbGVfZnVuYyl7IGNhc2UgJ2luY2x1ZGUnOiBlY2hvIHo1dygnJywnMScpOyBAaW5jbHVkZSAoJHJlYWRmaWxlKTsgZWNobyB6NXEoKTsgYnJlYWs7IGNhc2UgJ2N1cmwnOiBlY2hvIHo1dygnJywnMScpOyAkY2k9QGN1cmxfaW5pdCgiZmlsZTovLyIuJHJlYWRmaWxlKTsgJGNmPUBjdXJsX2V4ZWMoJGNpKTsgZWNobyBAaHRtbHNwZWNpYWxjaGFycygkY2YpOyBlY2hvIHo1cSgpOyBicmVhazsgY2FzZSAnbWJfc2VuZF9tYWlsJzogZWNobyB6NXcoJycsJzEnKTsgJHRlbXA9dGVtcG5hbSgkZCwiZm5hbWUiKTsgaWYoQGZpbGVfZXhpc3RzKCR0ZW1wKSkgQHVubGluaygkdGVtcCk7ICRleHRyYT0iLUMgIi4kcmVhZGZpbGUuIiAtWCAkdGVtcCI7IEBtYl9zZW5kX21haWwoTlVMTCxOVUxMLE5VTEwsTlVMTCwkZXh0cmEpOyAkc3RyPXo5bygkdGVtcCk7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJHN0cik7IGVjaG8gejVxKCk7IEB1bmxpbmsoJHRlbXApOyBicmVhazsgY2FzZSAnaW1hcF9ib2R5JzogZWNobyB6NXcoJycsJzEnKTsgJHN0cmVhbT1AaW1hcF9vcGVuKCRyZWFkZmlsZSwiIiwiIik7ICRzdHI9QGltYXBfYm9keSgkc3RyZWFtLDEpOyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOyBAaW1hcF9jbG9zZSgkc3RyZWFtKTsgZWNobyB6NXEoKTsgYnJlYWs7IGNhc2UgJ2luaV9yZXN0b3JlJzogQGluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsgQGluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsgJHN0cj16OW8oJHJlYWRmaWxlKTsgZWNobyB6NXcoJycsJzEnKS5AaHRtbHNwZWNpYWxjaGFycygkc3RyKS56NXEoKTsgYnJlYWs7IGNhc2UgJ3psaWInOiAkc3RyPXo5dSgkcmVhZGZpbGUpOyBlY2hvIHo1dygnJywnMScpLkBodG1sc3BlY2lhbGNoYXJzKCRzdHIpLno1cSgpOyBicmVhazsgfSBlY2hvIHo3ZigpLno3eSgpLnoxMHEoKTsgfSBlY2hvIHo2cygpOyB9IGlmKEBjb3VudCgkc3FscmZfYXJyKT4wKXsgZWNobyB6M3Eoejl5KCIxMzEiKSk7IGVjaG8gejZzKCk7IGVjaG8gejV4KGFycmF5KCJhY3QiPT4iZiIsImQiLCJmIj0+KEBpc3NldCgkcmVhZGZpbGUpPyRyZWFkZmlsZTokZC4kZiksImZ0Ij0+ImZ1bmN0aW9ucyIsInN1Ym1pdDIiPT4iMSIpLHoxMHcoejd1KHo1dCh6OXkoIjEyOSIpKS56OWMoejZ1KCJyZWFkZmlsZSIsKEBpc3NldCgkcmVhZGZpbGUpPyRyZWFkZmlsZTokZC4kZiksIjAiLCIiLCI5IikuejNtKCJzcWxyZWFkZmlsZV9mdW5jIiwkc3FscmZfYXJyLCI1IiwxKS56OGIoejl5KCIxMzAiKSwiNyIpKSkuIHo3dSh6NXQoejl5KCIxMzIiKSkuejljKHo1eSgic3FsdXNlciIsInJvb3QiLCI0IiwiIiwiOSIpLno5eCgyKS56N24oejl5KCIxMzMiKSkuejV5KCJzcWxwYXNzIiwiIiwiNCIpLno5eCgyKS56N24oejl5KCIxMzQiKSkuejV5KCJzcWxwb3J0IiwiMzMwNiIsIjEiKS56OXgoMikuejduKHo5eSgiMTM1IikpLno1eSgic3FsZGIiLCJteXNxbCIsIjQiKSkpLCIyIikpOyBpZihAaXNzZXQoJHN1Ym1pdDIpJiYkc3VibWl0MiYmQGlzc2V0KCRyZWFkZmlsZSkmJiFAZW1wdHkoJHJlYWRmaWxlKSYmQGlzc2V0KCRzcWx1c2VyKSYmQGlzc2V0KCRzcWxwYXNzKSYmQGlzc2V0KCRzcWxwb3J0KSYmQGlzc2V0KCRzcWxkYikpeyBlY2hvIHo5bSgiMiIpLno3bygpLno1dCh6OXgoKSkuejdqKCk7IHN3aXRjaCgkc3FscmVhZGZpbGVfZnVuYyl7IGNhc2UgJ215c3FsJzogZWNobyB6NXcoJycsJzEnKTsgaWYoQGVtcHR5KCRzcWxwb3J0KSkgJHNxbHBvcnQ9IjMzMDYiOyAkZGI9QG15c3FsX2Nvbm5lY3QoJ2xvY2FsaG9zdDonLiRzcWxwb3J0LCRzcWx1c2VyLCRzcWxwYXNzKTsgaWYoJGRiKXsgaWYoQG15c3FsX3NlbGVjdF9kYigkc3FsZGIsJGRiKSl7IEBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSBJRiBFWElTVFMgdGVtcF9teXNxbF9yZWFkZmlsZV90YWJsZSIpOyBAbXlzcWxfcXVlcnkoIkNSRUFURSBUQUJMRSBgdGVtcF9teXNxbF9yZWFkZmlsZV90YWJsZWAgKCBgZmlsZWAgTE9OR0JMT0IgTk9UIE5VTEwgKSIpOyBAbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBJTkZJTEUgXCIiLiRyZWFkZmlsZS4iXCIgSU5UTyBUQUJMRSB0ZW1wX215c3FsX3JlYWRmaWxlX3RhYmxlIik7ICRyPUBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSB0ZW1wX215c3FsX3JlYWRmaWxlX3RhYmxlIik7IHdoaWxlKCgkcl9zcWw9QG15c3FsX2ZldGNoX2FycmF5KCRyKSkhPT1mYWxzZSl7IGVjaG8gQGh0bWxzcGVjaWFsY2hhcnMoJHJfc3FsWzBdKS4iXHJcbiI7IH0gQG15c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIElGIEVYSVNUUyB0ZW1wX215c3FsX3JlYWRmaWxlX3RhYmxlIik7IH1lbHNlIGVjaG8gejl5KCIxMzYiKTsgQG15c3FsX2Nsb3NlKCRkYik7IH1lbHNlIGVjaG8gejl5KCIxMzciLCJNeVNRTCIpOyBlY2hvIHo1cSgpOyBicmVhazsgY2FzZSAnbXNzcWwnOiBlY2hvIHo1dygnJywnMScpOyBpZihAZW1wdHkoJHNxbHBvcnQpKSAkc3FscG9ydD0iMTQzMyI7ICRkYj1AbXNzcWxfY29ubmVjdCgnbG9jYWxob3N0LCcuJHNxbHBvcnQsJHNxbHVzZXIsJHNxbHBhc3MpOyBpZigkZGIpeyBpZihAbXNzcWxfc2VsZWN0X2RiKCRzcWxkYiwkZGIpKXsgQG1zc3FsX3F1ZXJ5KCJkcm9wIHRhYmxlIG1zc3FsX3JlYWRmaWxlX3RlbXBfdGFibGUiLCRkYik7IEBtc3NxbF9xdWVyeSgiY3JlYXRlIHRhYmxlIG1zc3FsX3JlYWRmaWxlX3RlbXBfdGFibGUgKCBzdHJpbmcgVkFSQ0hBUiAoNTAwKSBOVUxMKSIsJGRiKTsgQG1zc3FsX3F1ZXJ5KCJpbnNlcnQgaW50byBtc3NxbF9yZWFkZmlsZV90ZW1wX3RhYmxlIEVYRUMgbWFzdGVyLmRiby54cF9jbWRzaGVsbCAnIi4kcmVhZGZpbGUuIiciLCRkYik7ICRyZXM9QG1zc3FsX3F1ZXJ5KCJzZWxlY3QgKiBmcm9tIG1zc3FsX3JlYWRmaWxlX3RlbXBfdGFibGUiLCRkYik7IHdoaWxlKCgkcm93PUBtc3NxbF9mZXRjaF9yb3coJHJlcykpIT09ZmFsc2UpeyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiJcclxuIjsgfSBAbXNzcWxfcXVlcnkoImRyb3AgdGFibGUgbXNzcWxfcmVhZGZpbGVfdGVtcF90YWJsZSIsJGRiKTsgfWVsc2UgZWNobyB6OXkoIjEzNiIpOyBAbXNzcWxfY2xvc2UoJGRiKTsgfWVsc2UgZWNobyB6OXkoIjEzNyIsIk1zU1FMIik7IGVjaG8gejVxKCk7IGJyZWFrOyB9IGVjaG8gejdmKCkuejd5KCkuejEwcSgpOyB9IGVjaG8gejZzKCk7IH0gaWYoQGNvdW50KCR3Zl9hcnIpPjApeyBlY2hvIHozcSh6OXkoIjEzOCIpKTsgZWNobyB6NnMoKTsgZWNobyB6NXgoYXJyYXkoImFjdCI9PiJmIiwiZCIsImYiPT4oQGlzc2V0KCR3cml0ZWZpbGUpPyR3cml0ZWZpbGU6JGQuJGYpLCJmdCI9PiJmdW5jdGlvbnMiLCJzdWJtaXQzIj0+IjEiKSwgejEwdyggejd1KHo1dCh6OXkoIjEzOSIpKS56OWMoejV5KCJ3cml0ZWZpbGUiLCRkLiRmLCIwIiwiIiwiOSIpLnozbSgid3JpdGVmaWxlX2Z1bmMiLCR3Zl9hcnIsIjUiLDEpLno4Yih6OXkoIjE0MSIpLCI3IikpKS4gejd1KHo1dCh6OXkoIjE0MCIpKS56OWMoejV3KCJ3cml0ZWNvbnRlbnQiLCIxIikuKEBpc3NldCgkd3JpdGVjb250ZW50KT9AaHRtbHNwZWNpYWxjaGFycygkd3JpdGVjb250ZW50KTonPD8gcGhwaW5mbygpOyA/PicpLno1cSgpKSksIjIiKSk7IGlmKEBpc3NldCgkc3VibWl0MykmJiRzdWJtaXQzJiZAaXNzZXQoJHdyaXRlZmlsZSkmJiFAZW1wdHkoJHdyaXRlZmlsZSkpeyBlY2hvIHo5bSgiMiIpLno2ZigpLno1dCh6OXgoKSkuejdqKCk7IHN3aXRjaCgkd3JpdGVmaWxlX2Z1bmMpeyBjYXNlICdlcnJvcl9sb2cnOiBAZXJyb3JfbG9nKCR3cml0ZWNvbnRlbnQsMywicGhwOi8vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vIi4kd3JpdGVmaWxlKTsgaWYoejRyKCR3cml0ZWZpbGUpKSBlY2hvIHo5eSgiMjQzIik7IGJyZWFrOyBjYXNlICdyZWFkZmlsZSc6IEByZWFkZmlsZSgkd3JpdGVjb250ZW50LDMsInBocDovLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLyIuJHdyaXRlZmlsZSk7IGlmKHo0cigkd3JpdGVmaWxlKSkgZWNobyB6OXkoIjI0MyIpOyBicmVhazsgYnJlYWs7IGNhc2UgJ2ZvcGVuJzogaWYoJGZwPUBmb3Blbignc3JwYXRoOi8vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vJy4kd3JpdGVmaWxlLCJhIikpeyBAZnB1dHMoJGZwLCR3cml0ZWNvbnRlbnQpOyBAZmNsb3NlKCRmcCk7IGVjaG8gejl5KCIyNDMiKTsgfSBicmVhazsgZGVmYXVsdDogYnJlYWs7IH0gZWNobyB6N2YoKS56N3koKS56MTBxKCk7IH0gZWNobyB6NnMoKTsgfSB9IH0gfSBpZigkYWN0PT0nc2VhcmNoJyl7ICRmdGFyZ2V0PTE7ICRmdWxscGF0aD0xOyBpZighQGlzc2V0KCRzX2luKXx8QGVtcHR5KCRzX2luKSkgJHNfaW49JGQ7IGlmKCFAaXNzZXQoJHNuKXx8QGVtcHR5KCRzbikpeyAkc249IiguKikiOyAkc25fcmVnPTE7IH0gaWYoIUBpc3NldCgkc25fcmVnKSkgJHNuX3JlZz0nJzsgaWYoIUBpc3NldCgkc3QpKSAkc3Q9Jyc7IGlmKCFAaXNzZXQoJHN0X3JlZykpICRzdF9yZWc9Jyc7IGlmKCFAaXNzZXQoJHN0X3d3bykpICRzdF93d289Jyc7IGlmKCFAaXNzZXQoJHN0X2NzKSkgJHN0X2NzPScnOyBpZighQGlzc2V0KCRzdF9ub3QpKSAkc3Rfbm90PScnOyBpZighQGlzc2V0KCRzX2ZkKSkgJHNfZmQ9Jyc7IGlmKCFAaXNzZXQoJHNfcmVjKSkgJHNfcmVjPScxJzsgaWYoIUBpc3NldCgkZmluZF90ZXh0KXx8QGVtcHR5KCRmaW5kX3RleHQpKSAkZmluZF90ZXh0PSJ0ZXh0IjsgaWYoIUBpc3NldCgkZmluZF9pbl9kaXIpfHxAZW1wdHkoJGZpbmRfaW5fZGlyKSkgJGZpbmRfaW5fZGlyPSRkOyBpZighQGlzc2V0KCRmaW5kX2luX2ZpbGVzKXx8QGVtcHR5KCRmaW5kX2luX2ZpbGVzKSkgJGZpbmRfaW5fZmlsZXM9IioucGhwOyoudHh0IjsgejBoKCk7IGlmKEBpc3NldCgkc3VibWl0KSYmJHN1Ym1pdCl7ICRmb3VuZD1hcnJheSgpOyAkZm91bmRfZD0wOyAkZm91bmRfZj0wOyAkc2VhcmNoX2lfZj0wOyAkc2VhcmNoX2lfZD0wOyAkYXI9YXJyYXkoInNuIj0+JHNuLCAic25fcmVnIj0+JHNuX3JlZywgInN0Ij0+JHN0LCAic3RfcmVnIj0+JHN0X3JlZywgInN0X3d3byI9PiRzdF93d28sICJzdF9jcyI9PiRzdF9jcywgInN0X25vdCI9PiRzdF9ub3QsICJzX2ZkIj0+JHNfZmQpOyAkaW49QGFycmF5X3VuaXF1ZShAZXhwbG9kZSgiOyIsJHNfaW4pKTsgZm9yZWFjaCgkaW4gYXMgJHYpeyAkc2Rpcj0kdjsgejVkKCR2KTsgfSBpZihAY291bnQoJGZvdW5kKT09MCl7IGVjaG8gejNxKHo5eSgiMTYwIikpOyB9ZWxzZXsgJG5vbHNtZW51PTE7ICRub2hlYWQ9MTsgJGxzX2E9JGZvdW5kOyAkYWN0PSJscyI7IH0gfSB9IGlmKCRhY3Q9PSdjbWQnKXsgJHN0X2E9YXJyYXkoJyc9PictJywnIDI+JjEnPT4nMj4mMScpOyBlY2hvIHozcSggejEwdyggejd1KCB6NmwoIHo3bih6OXkoIjE4MCIpKS56OWsoJycsJ2NvbW1hbmQnKS56MngoYXJyYXkoJ2FjdCc9PidjbWQnLCdkJywnY21kc3VibWl0Jz0+JzEnKSkuejZ1KCdjbWQnLCcnLCcwJykuKCRuaXg/ejNtKCdzdGRlcnInLCRzdF9hLCcxJywnMScpOicnKS56OGIoJyZyYXF1bzsnLCc3JykuejlsKCkgLCcnLCcyJykuIHo2bCggejduKHo5eSgiMTgxIikpLno1eChhcnJheSgnYWN0Jz0+J2NtZCcsJ2QnLCdjbWRzdWJtaXQnPT4nMScpLHoyaygnc2NtZCcsKCR3aW4/JHdpbmFsaWFzZXM6JG5peGFsaWFzZXMpLCcwJywnMScpLigkbml4P3ozbSgnc3RkZXJyJywkc3RfYSwnMScsJzEnKTonJykuejhiKCcmcmFxdW87JywnNycpKSAsJycpICkgLCcyJykpOyBlY2hvIHo5bSgnMicpLno2ZigpLno2cSgpLno1dygnJywnMCcsMSk7IGlmKEBpc3NldCgkY21kc3VibWl0KSYmJGNtZHN1Ym1pdCl7IGVjaG8gejllKChAaXNzZXQoJGNtZCk/KEBpc3NldCgkc3RkZXJyKT8kY21kLiRzdGRlcnI6JGNtZCk6KEBpc3NldCgkc3RkZXJyKT8kc2NtZC4kc3RkZXJyOiRzY21kKSkpOyB9IGVjaG8gejVxKCkuejdmKCkuejd5KCkuejEwcSgpOyB9IGlmKCRhY3Q9PSdwaHBpbmZvJyl7ICRwaWFycj16MXcoMSk7ICRoPTA7IGZvcmVhY2goJHBpYXJyIGFzICRrPT4kdil7IGVjaG8gejNxKEBzdHJ0b3VwcGVyKCRrKSk7IGVjaG8gejltKCcyJyk7ICRpPTA7IGZvcmVhY2goJHYgYXMgJGE9PiRiKXsgaWYoQGlzX3N0cmluZygkYikpeyBlY2hvIHo5ZCh6OWMoJGEsJzE0JywnMjUnKS56OWMoJGIsJzE0JyksKCRpJTI/JzAnOicxJykpOyAkaSsrOyB9IH0gJGgrKzsgZWNobyB6MTBxKCk7IH0gfSBpZigkYWN0PT0nc3lzaW5mbycpeyAkZ19hcnI9YXJyYXkoKTsgJGRhdGU9QGRhdGUoIkQgTSBqIEc6aTpzIFQgWSIpOyAkdXNlcnM9YXJyYXkoKTsgaWYoJGJwYXNzd2QpICR1c2Vycz16OGwoMSk7ICRkaXN0cm89ejFiKCk7ICR1cHRpbWU9KCRuaXgmJiRzaF9leGVjKT96OWUoInVwdGltZSIpOicnOyAkc3lzdGVtPSRob3N0PSRrZXJuZWw9IiI7ICRzeXM9KCgkbml4JiYkc2hfZXhlYyk/ejllKCJ1bmFtZSAtYSIpOih6N2UoJ3BocF91bmFtZScpP0BwaHBfdW5hbWUoImEiKTonICAgJykpOyBpZigkbml4KSBAbGlzdCgkc3lzdGVtLCAkaG9zdCwgJGtlcm5lbCwpID0gQGV4cGxvZGUoIiAiLCAkc3lzKTsgaWYoIUBlbXB0eSgkc3lzKSkgJGdfYXJyW109YXJyYXkoIlN5c3RlbSIsJHN5cywkc3lzKTsgaWYoIUBlbXB0eSgkc3lzdGVtKSYmIUBlbXB0eSgka2VybmVsKSkgJGdfYXJyW109YXJyYXkoKCgkbGludXgpPyJLZXJuZWwiOiJWZXJzaW9uIiksJHN5c3RlbS4iICIuJGtlcm5lbCwkc3lzdGVtLiIgIi4ka2VybmVsKTsgaWYoIUBlbXB0eSgkZGlzdHJvKSkgJGdfYXJyW109YXJyYXkoIkRpc3RybyBuYW1lIiwkZGlzdHJvLG5sMmJyKCRkaXN0cm8pKTsgJGlkdT0iIjsgaWYoJG5peCYmJHNoX2V4ZWMpeyAkaWR1PXo5ZSgiaWQiKTsgJGVpZD1AZXhwbG9kZSgiICIsJGlkdSk7IGlmKEBjb3VudCgkZWlkKT49MikgJGlkdT0kZWlkWzBdLiIgIi4kZWlkWzFdOyB9IGlmKCFAZW1wdHkoJGlkdSkpICRnX2FycltdPWFycmF5KCJVc2VyIGlkIiwkaWR1LCRpZHUpOyBpZighQGVtcHR5KCR1cHRpbWUpKSAkZ19hcnJbXT1hcnJheSgiVXB0aW1lIiwkdXB0aW1lLCR1cHRpbWUpOyBpZighQGVtcHR5KCRkYXRlKSkgJGdfYXJyW109YXJyYXkoIkxvY2FsIHRpbWUiLCRkYXRlLCRkYXRlKTsgJGdfYXJyW109YXJyYXkoIkNQVSBpbmZvIix6M28oKSx6M28oKSk7ICRtZW09ejVhKCk7ICRnX2FycltdPWFycmF5KCJSQU0gaW5mbyIsJG1lbVswXVsxXSwkbWVtWzBdWzBdLiRtZW1bMF1bMV0pOyBpZigkbml4KSAkZ19hcnJbXT1hcnJheSgiUkFNIGJ1ZmZlcmVkIiwkbWVtWzFdWzFdLCRtZW1bMV1bMF0uJG1lbVsxXVsxXSk7IGlmKCRuaXgpICRnX2FycltdPWFycmF5KCJTd2FwIiwkbWVtWzJdWzFdLCRtZW1bMl1bMF0uJG1lbVsyXVsxXSk7ICRkaXNrPXo5cigpOyBpZihAY291bnQoJGRpc2spPjF8fCFAaXNzZXQoJGRpc2tbMF1bMF0pKXsgZm9yZWFjaCgkZGlzayBhcyAkZGQ9PiRpbmYpeyAkZ19hcnJbXT1hcnJheSgiU3BhY2Ugb24gIi4kZGQsJGluZlsxXSwkaW5mWzBdLiRpbmZbMV0pOyB9IH1lbHNleyAkZ19hcnJbXT1hcnJheSgiRGlzayBzcGFjZSIsJGRpc2tbMF1bMV0sJGRpc2tbMF1bMF0uJGRpc2tbMF1bMV0pOyB9IGlmKCFAZW1wdHkoJGhvc3QpKXsgJGhvc3QgLj0gIiAoIi5AZ2V0aG9zdGJ5bmFtZSgkaG9zdCkuIikgIjsgfSBpZihAcHJlZ19tYXRjaCgnL15cZFwuXGRcLlxkXC5cZCQvJywkc2FkZHIpKXsgJGhvc3QgLj0gJHNhZGRyOyB9IGVsc2UgeyAkaG9zdC49ICRzYWRkci4iICgiLkBnZXRob3N0YnluYW1lKCRzYWRkcikuIikiOyB9ICRnX2FycltdPWFycmF5KCJIb3N0bmFtZSIsJGhvc3QsJGhvc3QpOyBpZihAY291bnQoJHVzZXJzKT4wKXsgaWYoQGlzc2V0KCR2aWV3dXNlcnMpJiYkdmlld3VzZXJzKXsgJHB1c2Vycz0nJzsgZm9yZWFjaCgkdXNlcnMgYXMgJHVhcnIpeyAkcHVzZXJzIC49IHo1eChhcnJheSgiYWN0Ij0+ImxzIiwiZCI9PiR1YXJyWzFdKSx6OGIoJHVhcnJbMF0sIjEiKSwxKS56OXgoKS4iICI7IH0gfSBlbHNlIHsgJHB1c2Vycz1AY291bnQoJHVzZXJzKS4iIHVzZXJzIG9uIHRoaXMgYm94LiIuejl4KCkuejV4KGFycmF5KCJhY3QiPT4ic3lzaW5mbyIsImQiLCJ2aWV3dXNlcnMiPT4iMSIpLHo4YigiVmlldyIsIjEiKSk7IH0gJGdfYXJyW109YXJyYXkoIlN5c3RlbSB1c2VycyIsIiIsJHB1c2Vycyk7IH0gaWYoQGNvdW50KCRnX2Fycik+MCl7IGVjaG8gejNxKHo5eSgiNDc5IikpOyBlY2hvIHo5bSgnMicpOyBmb3IoJGk9MDskaTxAY291bnQoJGdfYXJyKTskaSsrKXsgZWNobyB6OWQoejljKCRnX2FyclskaV1bMF0sIjE0IiwiMjUiKS56OWMoJGdfYXJyWyRpXVsyXSwiMTQiLCIzIiksKCRpJTI/JzAnOicxJykpOyB9IGVjaG8gejEwcSgpOyB9ICRic21lZD16OGQoInNhZmVfbW9kZV9leGVjX2RpciIpOyAkcHNtZWQ9KCgkYnNtZWQpP0BpbmlfZ2V0KCJzYWZlX21vZGVfZXhlY19kaXIiKToiTk9ORSIpOyAkYnNtaWQ9ejhkKCJzYWZlX21vZGVfaW5jbHVkZV9kaXIiKTsgJHBzbWlkPSgoJGJzbWlkKT9AaW5pX2dldCgic2FmZV9tb2RlX2luY2x1ZGVfZGlyIik6Ik5PTkUiKTsgJG9wZW5kaXJzPSIiOyBpZigkYm9wZW5kaXIpeyBmb3JlYWNoKHo5YShAaW5pX2dldCgib3Blbl9iYXNlZGlyIikpIGFzICRvZCl7ICRvcGVuZGlycyAuPSB6NXgoYXJyYXkoImFjdCI9PiJscyIsImQiPT4kb2QpLHo4Yigkb2QsIjEiKSwxKS56OXgoKS4iICI7IH0gfSAkZGZuYz16NmgoKTsgaWYoQGNvdW50KCRkZm5jKT4wKXsgJG5kZm5jPUBpbXBsb2RlKCIgIiwgJGRmbmMpOyAkcGRmbmM9IiI7IGZvcmVhY2goJGRmbmMgYXMgJGZuYykgJHBkZm5jIC49IHoxMHQoJ2h0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi4nLkBzdHJfcmVwbGFjZSgiXyIsIi0iLCRmbmMpLicucGhwJywkZm5jLCIxIiwxKS56OXgoKS4iICI7IH0gZWxzZSB7ICRuZGZuYz0iTk9ORSI7ICRwZGZuYz16NXAoIk5PTkUiKTsgfSAkcF9hcnI9YXJyYXkoKTsgJHBfYXJyW109YXJyYXkoIlBIUCBWZXJzaW9uIixAcGhwdmVyc2lvbigpLEBwaHB2ZXJzaW9uKCkuejl4KCkuejV4KGFycmF5KCJhY3QiPT4icGhwaW5mbyIsImQiKSx6OGIoIlBIUCBJbmZvIiwiMSIpKSk7ICRwX2FycltdPWFycmF5KCJPcGVuIEJhc2VkaXIiLCgoJGJvcGVuZGlyKT9AaW5pX2dldCgib3Blbl9iYXNlZGlyIik6Ik5PTkUiKSwoKCRib3BlbmRpcik/JG9wZW5kaXJzOno1cCgiTk9ORSIpKSk7ICRwX2FycltdPWFycmF5KCJTYWZlLW1vZGUiLCgoJGJzYWZlKT8iT04iOiJPRkYiKSwoJGJzYWZlP3o4aygiT04iKTp6NXAoIk9GRiIpKSk7IGlmKCRic2FmZSl7ICRwX2FycltdPWFycmF5KCJTYWZlLW1vZGUgZXhlYyBkaXIiLCRwc21lZCwoKCRic21lZCk/ejVwKCRwc21lZCk6ejhrKCRwc21lZCkpKTsgJHBfYXJyW109YXJyYXkoIlNhZmUtbW9kZSBpbmNsdWRlIGRpciIsJHBzbWlkLCgoJGJzbWlkKT96NXAoJHBzbWlkKTp6OGsoJHBzbWlkKSkpOyB9IGZvcmVhY2goYXJyYXkoInJlZ2lzdGVyX2dsb2JhbHMiLCJhbGxvd191cmxfZm9wZW4iLCJhbGxvd191cmxfaW5jbHVkZSIsIm1lbW9yeV9saW1pdCIsImZpbGVfdXBsb2FkcyIsInVwbG9hZF90bXBfZGlyIiwidXBsb2FkX21heF9maWxlc2l6ZSIsInBvc3RfbWF4X3NpemUiLCJtYWdpY19xdW90ZXNfZ3BjIikgYXMgJGluaSl7ICRwX2FycltdPWFycmF5KHozcihAc3RyX3JlcGxhY2UoIl8iLCIgIiwkaW5pKSksejN4KEBpbmlfZ2V0KCRpbmkpKSx6M3goQGluaV9nZXQoJGluaSkpKTsgfSAkcF9hcnJbXT1hcnJheSgiRGlzYWJsZWQgRnVuY3Rpb25zIiwkbmRmbmMsJHBkZm5jKTsgaWYoQGNvdW50KCRwX2Fycik+MCl7IGVjaG8gejNxKHo5eSgiNDgwIikpOyBlY2hvIHo5bSgnMicpOyBmb3IoJGk9MDskaTxAY291bnQoJHBfYXJyKTskaSsrKXsgZWNobyB6OWQoejljKCRwX2FyclskaV1bMF0sIjE0IiwiMjUiKS56OWMoJHBfYXJyWyRpXVsyXSwiMTQiLCIzIiksKCRpJTI/JzAnOicxJykpOyB9IGVjaG8gejEwcSgpOyB9IGlmKCRuaXgpeyAkb19hcnI9YXJyYXkoKTsgJHRtcD0kdG1wcD0nJzsgZm9yZWFjaChhcnJheSgiL2V0Yy8iPT5hcnJheSgicGFzc3dkIiwiaG9zdHMiLCJtb2R1bGVzIiwiZnN0YWIiLCJpc3N1ZSIsImlzc3VlLm5ldCIsIm1vdGQiKSwiL3Byb2MvIj0+YXJyYXkoImNwdWluZm8iLCJtZW1pbmZvIiwidmVyc2lvbiIsImludGVycnVwdHMiKSkgYXMgJGVkPT4kYWYpeyBmb3JlYWNoKCRhZiBhcyAkZWYpeyBpZih6NHIoJGVkLiRlZikmJnoxeSgkZWQuJGVmKSl7ICR0bXAgLj0gJGVkLiRlZi4iICI7ICR0bXBwIC49IHo1eChhcnJheSgiYWN0Ij0+ImYiLCJkIj0+JGVkLCJmIj0+JGVmLCJmdCI9PiJ0ZXh0IiksejhiKCRlZiwiMSIpLDEpLno5eCgpLiIgIjsgfSB9IH0gaWYoIUBlbXB0eSgkdG1wKSkgJG9fYXJyW109YXJyYXkoejl5KCI0ODIiKSwkdG1wLCR0bXBwKTsgJHRtcD0kdG1wcD0nJzsgZm9yZWFjaChhcnJheSgiL2V0Yy8iPT5hcnJheSgic3lzbG9nLmNvbmYiLCJzeXNsb2dkLmNvbmYiLCJyc3lzbG9nLmNvbmYiLCJyZXNvbHYuY29uZiIsImh0dHBkLmNvbmYiLCJhcGFjaGUyLmNvbmYiLCJhcGFjaGUuY29uZiIsImFwYWNoZTIvYXBhY2hlLmNvbmYiLCJwcm9mdHBkLmNvbmYiLCJwcm9mdHBkLmNvbmYiLCJpbmV0ZC5jb25mIiksIi9ldGMvYXBhY2hlMi8iPT5hcnJheSgiaHR0cGQuY29uZiIsImFwYWNoZTIuY29uZiIpLCIvZXRjL3Byb2Z0cGQvIj0+YXJyYXkoInByb2Z0cGQuY29uZiIpKSBhcyAkZWQ9PiRhZil7IGZvcmVhY2goJGFmIGFzICRlZil7IGlmKHo0cigkZWQuJGVmKSYmejF5KCRlZC4kZWYpKXsgJHRtcCAuPSAkZWQuJGVmLiIgIjsgJHRtcHAgLj0gejV4KGFycmF5KCJhY3QiPT4iZiIsImQiPT4kZWQsImYiPT4kZWYsImZ0Ij0+InRleHQiKSx6OGIoJGVmLCIxIiksMSkuejl4KCkuIiAiOyB9IH0gfSBpZighQGVtcHR5KCR0bXApKSAkb19hcnJbXT1hcnJheSh6OXkoIjQ4MyIpLCR0bXAsJHRtcHApOyAkdG1wPSR0bXBwPScnOyBmb3JlYWNoKGFycmF5KCJjdXJsIiwiZmV0Y2giLCJsaW5rcyIsImx5bngiLCJHRVQiLCJ3M20iLCJ3Z2V0IikgYXMgJGVmKXsgJGZmPXo4dCgkZWYpOyBpZighQGVtcHR5KCRmZikpeyAkdG1wLj0kZWYuIiAiOyAkdG1wcC49ejV4KGFycmF5KCJhY3QiPT4iZiIsImQiPT56M2EoJGZmKSwiZiI9PnoybCgkZmYpKSx6OGIoejJsKCRlZiksIjEiKSwxKS56OXgoKS4iICI7IH0gfSAkdG1wPSR0bXBwPScnOyBmb3JlYWNoKGFycmF5KCJnY2MiLCJjYyIsImMrKyIsImcrKyIsIm5hc20iLCJsZCIsIm1ha2UiLCJjbWFrZSIpIGFzICRlZil7ICRmZj16OHQoJGVmKTsgaWYoIUBlbXB0eSgkZmYpKXsgJHRtcC49JGVmLiIgIjsgJHRtcHAuPXo1eChhcnJheSgiYWN0Ij0+ImYiLCJkIj0+ejNhKCRmZiksImYiPT56MmwoJGZmKSksejhiKHoybCgkZWYpLCIxIiksMSkuejl4KCkuIiAiOyB9IH0gaWYoIUBlbXB0eSgkdG1wKSkgJG9fYXJyW109YXJyYXkoejl5KCI0ODQiKSwkdG1wLCR0bXBwKTsgJHRtcD0kdG1wcD0nJzsgZm9yZWFjaChhcnJheSgicGVybCIsInB5dGhvbiIsInBocCIsInJ1YnkiLCJ0Y2wiKSBhcyAkZWYpeyAkZmY9ejh0KCRlZik7IGlmKCFAZW1wdHkoJGZmKSl7ICR0bXAuPSRlZi4iICI7ICR0bXBwLj16NXgoYXJyYXkoImFjdCI9PiJmIiwiZCI9PnozYSgkZmYpLCJmIj0+ejJsKCRmZikpLHo4Yih6MmwoJGVmKSwiMSIpLDEpLno5eCgpLiIgIjsgfSB9IGlmKCFAZW1wdHkoJHRtcCkpICRvX2FycltdPWFycmF5KHo5eSgiNDg1IiksJHRtcCwkdG1wcCk7IGlmKEBjb3VudCgkb19hcnIpPjApeyBlY2hvIHozcSh6OXkoIjQ4MSIpKTsgZWNobyB6OW0oJzInKTsgZm9yKCRpPTA7JGk8QGNvdW50KCRvX2Fycik7JGkrKyl7IGVjaG8gejlkKHo5Yygkb19hcnJbJGldWzBdLCIxNCIsIjI1IikuejljKCRvX2FyclskaV1bMl0sIjE0IiwiMyIpLCgkaSUyPycwJzonMScpKTsgfSBlY2hvIHoxMHEoKTsgfSB9IGlmKCRibWFpbCl7ICRlbXNnPScnOyAkbXNnPScnOyBpZihAaXNzZXQoJHNlbmRsb2cpJiYkc2VuZGxvZyYmQGlzc2V0KCRzeXNtYWlsKSYmIUBlbXB0eSgkc3lzbWFpbCkpeyAkbGluZT1Ac3RyX3JlcGVhdCgiLSIsMTAwKS4iXHJcbiI7IGlmKEBjb3VudCgkZ19hcnIpPjApeyAkbXNnLj0kbGluZS56OXkoIjQ3OSIpLiJcclxuIi4kbGluZTsgZm9yKCRpPTA7JGk8QGNvdW50KCRnX2Fycik7JGkrKyl7IGlmKCFAZW1wdHkoJGdfYXJyWyRpXVsxXSkpICRtc2cgLj0gJGdfYXJyWyRpXVswXS4iIDogIi4kZ19hcnJbJGldWzFdLiJcclxuIjsgfSB9IGlmKEBjb3VudCgkcF9hcnIpPjApeyAkbXNnLj0kbGluZS56OXkoIjQ4MCIpLiJcbiIuJGxpbmU7IGZvcigkaT0wOyRpPEBjb3VudCgkcF9hcnIpOyRpKyspeyBpZighQGVtcHR5KCRwX2FyclskaV1bMV0pKSAkbXNnIC49ICRwX2FyclskaV1bMF0uIiA6ICIuJHBfYXJyWyRpXVsxXS4iXHJcbiI7IH0gfSBpZihAY291bnQoJG9fYXJyKT4wKXsgJG1zZy49JGxpbmUuejl5KCI0ODEiKS4iXG4iLiRsaW5lOyBmb3IoJGk9MDskaTxAY291bnQoJG9fYXJyKTskaSsrKXsgaWYoIUBlbXB0eSgkb19hcnJbJGldWzFdKSkgJG1zZyAuPSAkb19hcnJbJGldWzBdLiIgOiAiLiRvX2FyclskaV1bMV0uIlxyXG4iOyB9IH0gJG1zZy49JGxpbmU7IGlmKCRicGFzc3dkKSAkbXNnIC49ICIvZXRjL3Bhc3N3ZFxuIi4kbGluZS56OW8oIi9ldGMvcGFzc3dkIikuJGxpbmU7ICRlbXNnPShAbWFpbCgkc3lzbWFpbCwiU1lTSU5GT3wkc2FkZHIiLCAkbXNnKSA/IHo5eSgiMjQzIik6ejl5KCIyNDQiKSk7IH0gZWNobyB6M3Eoejl5KCIzMDIiKS4oKCRlbXNnIT0nJyk/IiA6ICIuJGVtc2c6JycpKTsgZWNobyB6NXgoYXJyYXkoImFjdCI9PiJzeXNpbmZvIiwiZCIsInNlbmRsb2ciPT4iMSIpLHoxMHcoejViKCkuejd1KHo2bCh6NXkoInN5c21haWwiLHo3eignMicsImVtYWlsIiksIjAiKS56OGIoejl5KCIxNzkiKSwiNyIpKSkuejViKCksIjIiKSk7IH0gfSBpZigkYWN0PT0nZXZhbCcpeyBpZighQGlzc2V0KCRldmFsc3VibWl0KSl7ICRldmFsX3R4dD0xOyB9IGVsc2VpZighQGlzc2V0KCRldmFsX3R4dCkpeyAkZXZhbF90eHQ9MDsgfSBlY2hvIHozcSh6OXkoIjE4MiIpKS56NnMoKTsgZWNobyB6MTB3KCB6N3UoIHo2bCh6NXgoYXJyYXkoJ2FjdCc9PidldmFsJywnZCcsJ2V2YWxzdWJtaXQnPT4nMScpLCB6NXcoJ2V2YWwnLCcxJykuKEBpc3NldCgkZXZhbCk/QGh0bWxzcGVjaWFsY2hhcnMoJGV2YWwpOicvL3JlYWRmaWxlKCIvZXRjL3Bhc3N3ZCIpOycuIlxyXG4iKS56NXEoKS56OXooKS56NXooImxlZnQiLCIzIikuejhiKHo5eSgiMTgzIiksJzcnLCc5JykuejV1KCJldmFsX3R4dCIsejl5KCIxODQiKSwiZXZhbF90eHQiKS56NWgoKSkgKSApLno1YigpICwnMicpOyBpZihAaXNzZXQoJGV2YWxzdWJtaXQpJiYkZXZhbHN1Ym1pdCl7ICRldmFsPUBpc3NldCgkZXZhbCk/JGV2YWw6IiI7IGlmKCFAZW1wdHkoJGV2YWwpKXsgJGV2YWxfcmVzdWx0PSIiOyAkdG1wPUBvYl9nZXRfY29udGVudHMoKTsgJG9sZGRpcj1AcmVhbHBhdGgoIi4iKXx8QGdldGN3ZCgpOyBAY2hkaXIoJGQpOyBpZigkdG1wKXsgQG9iX2NsZWFuKCk7IGV2YWwoJGV2YWwpOyAkcmV0PUBvYl9nZXRfY29udGVudHMoKTsgJHJldD1AY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7IEBvYl9jbGVhbigpOyBlY2hvICR0bXA7IGlmKCRldmFsX3R4dCl7ICRldmFsX3Jlc3VsdD1AaHRtbHNwZWNpYWxjaGFycygkcmV0KTsgfWVsc2V7ICRldmFsX3Jlc3VsdD0kcmV0OyB9IH1lbHNleyBpZigkZXZhbF90eHQpeyAkZXZhbF9yZXN1bHQ9QGV2YWwoJGV2YWwpOyB9ZWxzZXsgJGV2YWxfcmVzdWx0PSRyZXQ7IH0gfSBAY2hkaXIoJG9sZGRpcik7IH0gaWYoJGV2YWxfdHh0KXsgZWNobyB6MTB3KCB6N3UoIHo2bCh6NXcoJycsJzEnLDEpLihAaXNzZXQoJGV2YWxfcmVzdWx0KT8kZXZhbF9yZXN1bHQ6JycpLno1cSgpKSApLno1YigpICwnMicpOyB9IGVsc2UgeyBlY2hvICRldmFsX3Jlc3VsdDsgfSB9IH0gaWYoJGFjdD09J3VwbG9hZCcpeyBpZih6MG4oJGQpKXsgJHdkdD0oKCR1c2VfaW1hZ2VzKT8nPGltZyBhbHQ9IisiIGJvcmRlcj0iMCIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHBhZGRpbmctbGVmdDoycHg7IiBzcmM9Ij9hY3Q9aSZhbXA7aW1nPW9rIj4nOno1cCgiKyIpKTsgfWVsc2V7ICR3ZHQ9KCgkdXNlX2ltYWdlcyk/JzxpbWcgYWx0PSJ4IiBib3JkZXI9IjAiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBwYWRkaW5nLWxlZnQ6MnB4OyIgc3JjPSI/YWN0PWkmYW1wO2ltZz1jYW5jZWwiPic6ejhrKCJ4IikpOyB9ICRhX2dldD1hcnJheSgpOyAkbHNfYT1hcnJheSgpOyAkdW1zZz0kbW1zZz0kcm1zZz0nJzsgaWYoIUBpc3NldCgkbXVsdGl1cGxvYWQpKXsgaWYoQGlzc2V0KCR1c3VibWl0KSYmJHVzdWJtaXQpeyBnbG9iYWwgJF9GSUxFUzsgJGRlc3Q9Jyc7IGlmKCFAZW1wdHkoJF9GSUxFU1snZmlsZTEnXVsndG1wX25hbWUnXSkpeyAkZGVzdD0kX0ZJTEVTWydmaWxlMSddWyduYW1lJ107IH0gaWYoQGlzc2V0KCRyZmlsZTEpJiYhQGVtcHR5KCRyZmlsZTEpKXsgJGRlc3Q9JHJmaWxlMTsgfSBpZighQGlzc2V0KCRwYXRoMSl8fEBlbXB0eSgkcGF0aDEpKSAkcGF0aDE9JGQ7ICRwYXRoMT16MWsoJHBhdGgxKTsgaWYoIUBlbXB0eSgkZGVzdCkpeyBpZighQG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWydmaWxlMSddWyd0bXBfbmFtZSddLCRwYXRoMS4kZGVzdCkpeyAkdW1zZyA9IHo5eSgiMTcyIixhcnJheSgkX0ZJTEVTWydmaWxlMSddWyduYW1lJ10sJF9GSUxFU1snZmlsZTEnXVsndG1wX25hbWUnXSwkcGF0aDEuJGRlc3QpKTsgfWVsc2V7ICR1bXNnID0gejl5KCIxNzMiLGFycmF5KCRfRklMRVNbJ2ZpbGUxJ11bJ25hbWUnXSwkcGF0aDEuJGRlc3QpKTsgJGxzX2FbXT0kcGF0aDEuJGRlc3Q7ICRub2xzbWVudT0xOyAkYWN0PSJscyI7ICRkPSRwYXRoMTsgfSAkdW1zZyA9IHoxMHcoejd1KHo5YygkdW1zZykpKTsgfSB9IGVjaG8gejNxKHo5eSgiMTYxIikpLiR1bXNnLiB6MTB3KCB6NWIoKS4gejlkKCB6OWMoIHo1bihhcnJheSgnYWN0Jz0+J3VwbG9hZCcsJ2QnLCd1c3VibWl0Jz0+JzEnKSwgejEwdyggejd1KHo1dCh6OXkoIjE2MiIpKS56OWMoejlnKCdmaWxlMScsJzInKS56OGIoejl5KCIxNzAiKSwnNycpLiR3ZHQpKS4gejd1KHo1dCh6OXkoIjE2MyIpKS56OWMoejZ1KCdyZmlsZTEnLChAaXNzZXQoJHJmaWxlMSk/JHJmaWxlMTonJyksIjkiKSkpLiB6N3UoejV0KHo5eSgiMTY0IikpLno5Yyh6NnUoJ3BhdGgxJywoQGlzc2V0KCRwYXRoMSk/JHBhdGgxOiRkKSwiOSIpKSkgKSApICkuIHo5YyggejV4KGFycmF5KCdhY3QnPT4ndXBsb2FkJywnZCcsJ211bHRpdXBsb2FkJz0+JzEnKSwgejEwdyggejd1KHo5Yyh6N24oejl5KCIxNjYiKSkuejZ1KCdsbm8nLCgoQGlzc2V0KCRsbm8pKT8kbG5vOicxMCcpLCcxJykuejhiKHo5eSgiMTY5IiksJzcnKSkpICkgKSApICkuIHo1YigpICwnMicpOyB9IGVsc2UgeyBpZihAaXNzZXQoJG1zdWJtaXQpJiYkbXN1Ym1pdCl7IGdsb2JhbCAkX0ZJTEVTOyBmb3JlYWNoKCRfRklMRVMgYXMgJGZrPT4kZnYpeyAkZGVzdD0nJzsgaWYoIUBlbXB0eSgkX0ZJTEVTWyRma11bJ3RtcF9uYW1lJ10pKXsgJGRlc3Q9JF9GSUxFU1skZmtdWyduYW1lJ107IH0gaWYoQGlzc2V0KCRyZmlsZVskZmtdKSYmIUBlbXB0eSgkcmZpbGVbJGZrXSkpeyAkZGVzdD0kcmZpbGVbJGZrXTsgfSBpZighQGlzc2V0KCRtcGF0aCl8fEBlbXB0eSgkbXBhdGgpKSAkbXBhdGg9JGQ7ICRtcGF0aD16MWsoJG1wYXRoKTsgaWYoIUBlbXB0eSgkZGVzdCkpeyBpZighQG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyRma11bJ3RtcF9uYW1lJ10sJG1wYXRoLiRkZXN0KSl7ICRtbXNnIC49IHo5eSgiMTcyIixhcnJheSgkX0ZJTEVTWyRma11bJ25hbWUnXSwkX0ZJTEVTWyRma11bJ3RtcF9uYW1lJ10sJG1wYXRoLiRkZXN0KSkuejl6KCk7IH1lbHNleyAkbW1zZyAuPSB6OXkoIjE3MyIsYXJyYXkoJF9GSUxFU1skZmtdWyduYW1lJ10sJG1wYXRoLiRkZXN0KSkuejl6KCk7ICRsc19hW109JG1wYXRoLiRkZXN0OyAkbm9sc21lbnU9MTsgJGFjdD0ibHMiOyAkZnRhcmdldD0nMSc7ICRkPSRtcGF0aDsgfSB9IH0gaWYoJG1tc2chPScnKSAkbW1zZyA9IHoxMHcoejd1KHo5YygkbW1zZykpKTsgfSAkZm9ybT0nJzsgaWYoIUBpc19udW1lcmljKCRsbm8pKSAkbG5vPTEwOyBmb3IoJGk9MDsgJGk8JGxubzsgJGkrKyl7ICRpaT0oJGkrMSk7ICRmb3JtIC49IHo3dSh6NXQoejl5KCIxNjIiKS4iICIuJGlpKS56OWMoejlnKCdmaWxlJy4kaWksJzInKSkuejV0KHo5eSgiMTYzIikpLno5Yyh6NnUoJ3JmaWxlW2ZpbGUnLiRpaS4nXScsJycsIjAiKSkpOyB9IGVjaG8gejNxKHo5eSgiMTY4IikpLiRtbXNnLiB6NW4oYXJyYXkoJ2FjdCc9Pid1cGxvYWQnLCdkJywnbXVsdGl1cGxvYWQnPT4nMScsJ2xubycsJ21zdWJtaXQnPT4nMScpLHoxMHcoejViKCkuJGZvcm0pLnoxMHcoejViKCkuejd1KHo1dCh6OXkoIjE2NCIpKS56OWMoejZ1KCdtcGF0aCcsKEBpc3NldCgkbXBhdGgpPyRtcGF0aDokZCksIjkiKS56OGIoejl5KCIxNzAiKSwnNycpLiR3ZHQpKS56NWIoKSkpOyB9IGlmKCRiY3VybCkgJGFfZ2V0WydwaHBjdXJsJ109InVzZSBwaHAtPmN1cmwiOyBpZigkYmZzb2NrKSAkYV9nZXRbJ2Zzb2NrJ109InVzZSBwaHAtPmZzb2Nrb3BlbiI7IGlmKHo3ZSgnaW5pX2dldCcpICYmIHo4ZCgnYWxsb3dfdXJsX2ZvcGVuJykgJiYgejdlKCdmaWxlX2dldF9jb250ZW50cycpKSAkYV9nZXRbJ2ZpbGVfZ2V0X2NvbnRlbnRzJ109InVzZSBwaHAtPmZpbGVfZ2V0X2NvbnRlbnRzIjsgaWYoJG5peCYmJHNoX2V4ZWMpeyBmb3JlYWNoKCRnZXRhbGlhc2VzIGFzICRrPT4kdil7IGlmKHo4dCgkaykpICRhX2dldFska109InVzZSBjbWQtPiRrIjsgfSB9IGlmKEBjb3VudCgkYV9nZXQpPjApeyBpZihAaXNzZXQoJHJzdWJtaXQpJiYkcnN1Ym1pdCl7ICRmY3Q9Jyc7IGlmKCFAcHJlZ19tYXRjaCgiOl4oaHR0cHxodHRwc3xmdHApXDovLyhbYS16QS1aMC05XC5cLV0rKFw6W2EtekEtWjAtOVwuJiVcJFwtXSspKkApPygoMjVbMC01XXwyWzAtNF1bMC05XXxbMC0xXXsxfVswLTldezJ9fFsxLTldezF9WzAtOV17MX18WzEtOV0pXC4oMjVbMC01XXwyWzAtNF1bMC05XXxbMC0xXXsxfVswLTldezJ9fFsxLTldezF9WzAtOV17MX18WzEtOV18MClcLigyNVswLTVdfDJbMC00XVswLTldfFswLTFdezF9WzAtOV17Mn18WzEtOV17MX1bMC05XXsxfXxbMS05XXwwKVwuKDI1WzAtNV18MlswLTRdWzAtOV18WzAtMV17MX1bMC05XXsyfXxbMS05XXsxfVswLTldezF9fFswLTldKXwoW2EtekEtWjAtOVwtXStcLikqW2EtekEtWjAtOVwtXStcLlthLXpBLVpdezIsNH0pKFw6WzAtOV0rKT8oL1teL11bYS16QS1aMC05XC5cLFw/XCdcXC9cKyYlXCQjXD1+X1wtQF0qKSokOmkiLCR1cGxvYWR1cmwpKXsgJHJtc2c9ejl5KCIxNzEiLCR1cGxvYWR1cmwpOyB9IGVsc2UgeyAkZGVzdD16MmwoJHVwbG9hZHVybCk7IGlmKEBpc3NldCgkbmFtZXVybCkmJiFAZW1wdHkoJG5hbWV1cmwpKSAkZGVzdD0kbmFtZXVybDsgaWYoQGVtcHR5KCRkZXN0KSkgJGRlc3Q9J2luZGV4Lmh0bWwnOyBpZighQGlzc2V0KCRycGF0aCl8fEBlbXB0eSgkcnBhdGgpKSAkcnBhdGg9JGQ7ICRycGF0aD16MWsoJHJwYXRoKTsgaWYoejRyKCRycGF0aC4kZGVzdCkpeyAkaT0xOyB3aGlsZSh6NHIoJHJwYXRoLiRkZXN0KSl7IGlmKCRpPT0xKXsgJGRlc3Q9JGRlc3QuIi4iLiRpOyB9ZWxzZXsgJGRlc3Q9QHN1YnN0cigkZGVzdCwwLEBzdHJsZW4oJGRlc3QpLTIpLiIuIi4kaTsgfSAkaSsrOyB9IH0gaWYoJHVwd2l0aD09J3BocGN1cmwnfHwkdXB3aXRoPT0nZnNvY2snfHwkdXB3aXRoPT0nZmlsZV9nZXRfY29udGVudHMnKXsgaWYoJHVwd2l0aD09J3BocGN1cmwnKSAkZmN0PXozdCgkdXBsb2FkdXJsKTsgaWYoJHVwd2l0aD09J2Zzb2NrJykgJGZjdD16MmgoJHVwbG9hZHVybCk7IGlmKCR1cHdpdGg9PSdmaWxlX2dldF9jb250ZW50cycpICRmY3Q9QGZpbGVfZ2V0X2NvbnRlbnRzKCR1cGxvYWR1cmwpOyBpZighJGZjdHx8QGVtcHR5KCRmY3QpKXsgJHJtc2cgPSB6OXkoIjE3NCIpOyB9IGVsc2UgeyBpZih6OXQoJHJwYXRoLiRkZXN0LCAkZmN0KSl7ICRybXNnPXo5eSgiMTc2IiwkcnBhdGguJGRlc3QpOyAkbHNfYVtdPSRycGF0aC4kZGVzdDsgJG5vbHNtZW51PTE7ICRhY3Q9ImxzIjsgJGQ9JHJwYXRoOyB9IGVsc2UgeyAkcm1zZz16OXkoIjE3NSIsJHJwYXRoLiRkZXN0KTsgfSB9IH0gZWxzZSB7IGlmKCRuaXgmJiRzaF9leGVjJiZAaXNzZXQoJGdldGFsaWFzZXNbJHVwd2l0aF0pKXsgJHVjbWQ9QHN0cl9yZXBsYWNlKCdbJTElXScsICR1cHdpdGgsICRnZXRhbGlhc2VzWyR1cHdpdGhdKTsgJHVjbWQ9QHN0cl9yZXBsYWNlKCdbJTIlXScsICR1cGxvYWR1cmwsICR1Y21kKTsgJHVjbWQ9QHN0cl9yZXBsYWNlKCdbJTMlXScsICRycGF0aC4kZGVzdCwgJHVjbWQpOyB6OWUoJHVjbWQsMSk7IGlmKHo0cigkcnBhdGguJGRlc3QpKXsgJHJtc2c9ejl5KCIxNzYiLCRycGF0aC4kZGVzdCk7ICRsc19hW109JHJwYXRoLiRkZXN0OyAkbm9sc21lbnU9MTsgJGFjdD0ibHMiOyAkZD0kcnBhdGg7IH0gZWxzZSB7ICRybXNnID0gejl5KCIxNzQiKTsgfSB9IH0gfSBpZigkcm1zZyE9JycpICRybXNnID0gejEwdyh6N3UoejljKCRybXNnKSkpOyB9IGVjaG8gejNxKHo5eSgiMTY3IikpLiRybXNnLiB6NXgoYXJyYXkoJ2FjdCc9Pid1cGxvYWQnLCdkJywncnN1Ym1pdCc9PicxJyksIHoxMHcoejViKCkuejd1KHo1dCh6OXkoIjE2NSIpKS56OWMoejZ1KCd1cGxvYWR1cmwnLChAaXNzZXQoJHVwbG9hZHVybCk/JHVwbG9hZHVybDonaHR0cDovLycpLCIwIikuejNtKCd1cHdpdGgnLCRhX2dldCwnNCcsJzEnKS56OGIoejl5KCIxNzAiKSwnNycpLiR3ZHQpKS4gejd1KHo1dCh6OXkoIjE2MyIpKS56OWMoejZ1KCduYW1ldXJsJywoQGlzc2V0KCRuYW1ldXJsKT8kbmFtZXVybDonJyksIjkiKSkpLiB6N3UoejV0KHo5eSgiMTY0IikpLno5Yyh6NnUoJ3JwYXRoJywoQGlzc2V0KCRycGF0aCk/JHJwYXRoOiRkKSwiOSIpKSkuejViKCkgLCcyJykgKTsgfSB9IGlmKEBpc3NldCgkbHNhbGwpJiZAaXNzZXQoJGFjdGlvbikmJiRhY3Rpb24hPScnKXsgJGxzYWxsX2Fycj1hcnJheSgpOyAkdGxzYWxsX2Fycj1AZXhwbG9kZSgiXG4iLCRsc2FsbCk7IGZvcmVhY2goJHRsc2FsbF9hcnIgYXMgJHRscyl7ICR0bHM9QHRyaW0oJHRscyk7IGlmKCFAZW1wdHkoJHRscykmJiFAaW5fYXJyYXkoJHRscywkbHNhbGxfYXJyKSl7ICRsc2FsbF9hcnJbXT0kdGxzOyB9IH0gaWYoQGNvdW50KCRsc2FsbF9hcnIpPjApeyBmb3JlYWNoKCRsc2FsbF9hcnIgYXMgJGRmbHMpeyBpZihAaXNzZXQoJHVzZV9idWZmZXIpJiYkdXNlX2J1ZmZlciYmQGlzc2V0KCRiY29weSkmJkBpc3NldCgkYmN1dCkmJkBpc19hcnJheSgkYmNvcHkpJiZAaXNfYXJyYXkoJGJjdXQpKXsgc3dpdGNoKCRhY3Rpb24peyBjYXNlICdiY29weSc6IGlmKCFAaW5fYXJyYXkoJGRmbHMsJGJjb3B5KSl7IHoxbygkZGZscywnYmNvcHknKTsgfSBicmVhazsgY2FzZSAnYmN1dCc6IGlmKCFAaW5fYXJyYXkoJGRmbHMsJGJjdXQpKXsgejFvKCRkZmxzLCdiY3V0Jyk7IH0gYnJlYWs7IGNhc2UgJ2J1bnNldGNvcHknOiBpZihAaW5fYXJyYXkoJGRmbHMsJGJjb3B5KSl7IHoxbygkZGZscywnYmNvcHknKTsgfSBicmVhazsgY2FzZSAnYnVuc2V0Y3V0JzogaWYoQGluX2FycmF5KCRkZmxzLCRiY3V0KSl7IHoxbygkZGZscywnYmN1dCcpOyB9IGJyZWFrOyBjYXNlICdidW5zZXRhbGwnOiBpZihAaW5fYXJyYXkoJGRmbHMsJGJjb3B5KSl7IHoxbygkZGZscywnYmNvcHknKTsgfSBlbHNlaWYoQGluX2FycmF5KCRkZmxzLCRiY3V0KSl7IHoxbygkZGZscywnYmN1dCcpOyB9IGJyZWFrOyBkZWZhdWx0OiBicmVhazsgfSB9IHN3aXRjaCgkYWN0aW9uKXsgY2FzZSAnZGVsZXRlJzogaWYoejRyKCRkZmxzKSl7IHo4cygkZGZscyk7IH0gYnJlYWs7IGRlZmF1bHQ6IGJyZWFrOyB9IH0gaWYoQGlzc2V0KCR1c2VfYnVmZmVyKSYmJHVzZV9idWZmZXIpIHowaigpOyB9IH0gaWYoJGFjdD09J21haWxlcicpeyAkc21zZz0kY21zZz0nJzsgJHNfb2s9JGNfb2s9MDsgaWYoQGlzc2V0KCRtMV9zdWJtaXQpJiYkbTFfc3VibWl0KXsgaWYoQGVtcHR5KCRtMV9uYW1lKXx8QGVtcHR5KCRtMV9mcm9tKXx8QGVtcHR5KCRtMV9zdWJqKXx8QGVtcHR5KCRtMV9tc2cpfHwkbTFfbXNnPT0ibWVzc2FnZSJ8fEBlbXB0eSgkbTFfZW1haWxzKXx8IUBzdHJzdHIoJG0xX2VtYWlscywiQCIpKXsgJHNtc2c9IiA6ICIuejl5KCIyMzYiKTsgfSBlbHNlIHsgJHNfb2s9MTsgfSB9IGVsc2VpZihAaXNzZXQoJG0yX3N1Ym1pdCkmJiRtMl9zdWJtaXQpeyBpZihAZW1wdHkoJG0yX25hbWUpfHxAZW1wdHkoJG0yX2Zyb20pfHxAZW1wdHkoJG0yX3N1YmopfHxAZW1wdHkoJG0yX21zZyl8fEBlbXB0eSgkbTJfY3N2KXx8IUBwcmVnX21hdGNoKCcvIiguKj8pIlxzKixccyoiKC4qPykiLycsJG0yX2NzdikpeyAkY21zZz0iIDogIi56OXkoIjIzNiIpOyB9IGVsc2UgeyAkY19vaz0xOyB9IH0gaWYoIUBpc3NldCgkbTFfbXNnKXx8QGVtcHR5KCRtMV9tc2cpKSAkbTFfbXNnPSJtZXNzYWdlIjsgaWYoIUBpc3NldCgkbTFfZW1haWxzKXx8QGVtcHR5KCRtMV9lbWFpbHMpKSAkbTFfZW1haWxzPSJlLW1haWxzIjsgaWYoIUBpc3NldCgkbTJfcHJlZml4KXx8QGVtcHR5KCRtMl9wcmVmaXgpKSAkbTJfcHJlZml4PSJjb2x1bW5fcHJlZml4XyI7IGlmKCFAaXNzZXQoJG0yX2Vjb2wpfHwhQGlzX251bWVyaWMoJG0yX2Vjb2wpKSAkbTJfZWNvbD0iMCI7IGlmKCFAaXNzZXQoJG0yX21zZyl8fEBlbXB0eSgkbTJfbXNnKSkgJG0yX21zZz0iSGVsbG8gIi4kbTJfcHJlZml4LiIxLFxyXG5cclxuWW91ciBBZGRyZXNzOiAiLiRtMl9wcmVmaXguIjJcclxuWW91ciBQaG9uZTogIi4kbTJfcHJlZml4LiIzXHJcblxyXG5FLW1haWwgc2VudCB0bzogIi4kbTJfcHJlZml4LiIwIjsgaWYoIUBpc3NldCgkbTJfY3N2KXx8QGVtcHR5KCRtMl9jc3YpKSAkbTJfY3N2PSciam9obkBlbWFpbCIsImpvaG4iLCJqb2huXCdzIGFkZHJlc3MiLCIwMTIzNDU2Nzg5IicuIlxyXG4iLiciamFuZUBlbWFpbCIsImphbmUiLCJqYW5lXCdzIGFkZHJlc3MiLCI5ODc2NTQzMjEwIic7IGVjaG8gejNxKGFycmF5KHo5eSgiMjEyIikuJHNtc2csIHo5eSgiMjEzIikuJGNtc2cpLCc0NicpOyBlY2hvIHo5bSgnMicpLno3bygpLno3aignJywnNCcpOyBlY2hvIHoxMHcoIHo1YigpLno5ZCh6OWMoejEwdyggejV4KGFycmF5KCJhY3QiPT4ibWFpbGVyIiwiZCIsIm0xX3N1Ym1pdCI9PiIxIiksIHo3dSh6OWMoejduKHo5eSgiMjE0IikpKS56NnooejV5KCdtMV9uYW1lJywnJywnNycpKSkuIHo3dSh6OWMoejduKHo5eSgiMjE1IikpKS56NnooejV5KCdtMV9mcm9tJywnJywnNycpKSkuIHo3dSh6OWMoejduKHo5eSgiMjE2IikpKS56NnooejV5KCdtMV9zdWJqJywnJywnNycpKSkuIHo3dSh6NngoejV3KCdtMV9tc2cnLCczJykuJG0xX21zZy56NXEoKSwnMicpKS4gejd1KHo2eCh6NXcoJ20xX2VtYWlscycsJzMnKS4kbTFfZW1haWxzLno1cSgpLCcyJykpLiB6N3UoejZ4KHoxMHcoejd1KHo5Yyh6N24oejl5KCIyMTciKSkuejV5KCdtMV9zdHInLCcnLCc0JykpLno5Yyh6N24oejl5KCIyMTgiKSkuejNtKCdtMV9yZXBsYWNlJywgYXJyYXkoIiI9Pno5eSgiMjIzIiksICJuYW1lIj0+ejl5KCIyMjQiKSwgImVtYWlsMSI9Pno5eSgiMjI1IiksICJlbWFpbDIiPT56OXkoIjIyNiIpLCAiZW1haWxoYXNoIj0+ejl5KCIyMjciKSksJzQnLDEpKS56OWMoejduKHo5eSgiMjE5IikpLnozbSgibTFfd2hlcmUiLGFycmF5KCAic3ViamVjdCI9Pno5eSgiMjI4IiksICJtZXNzYWdlIj0+ejl5KCIyMjkiKSwgIiI9Pno5eSgiMjMwIikpLCc1JywxKSkpLCcyJyksJzInKSkuIHo3dSh6NngoejEwdyh6N3UoejljKHo1dSgibTFfcmFuZDEiLHo5eSgiMjMxIiksIm0xX3JhbmQxIiksJycsJzQnKS56OWMoejV1KCJtMV9yYW5kMiIsejl5KCIyMzIiKSwibTFfcmFuZDIiKSwnJywnNCcpKSwnMicpLCcyJykpLno1YigpLiB6N3UoejZ4KHo4Yih6OXkoIjIzMyIpLCc3JykuejV1KCdtMV9wcmV2aWV3Jyx6OXkoIjIzNCIpLCdtMV9wcmV2aWV3JyksJzInKSkgKSwnMicpLCcyMCcpKS4gejViKCkgLCcyJyk7IGVjaG8gejdmKCkuejdqKCcnLCc0NicpOyBlY2hvIHoxMHcoIHo1YigpLno5ZCh6OWMoejEwdyggejV4KGFycmF5KCdhY3QnPT4nbWFpbGVyJywiZCIsJ20yX3N1Ym1pdCc9PicxJyksIHo3dSh6OWMoejduKHo5eSgiMjE0IikpKS56NnooejV5KCdtMl9uYW1lJywnJywnNycpKSkuIHo3dSh6OWMoejduKHo5eSgiMjE1IikpKS56NnooejV5KCdtMl9mcm9tJywnJywnNycpKSkuIHo3dSh6OWMoejduKHo5eSgiMjE2IikpKS56NnooejV5KCdtMl9zdWJqJywnJywnNycpKSkuIHo3dSh6NngoejV3KCdtMl9tc2cnLCczJykuJG0yX21zZy56NXEoKSwnMicpKS4gejd1KHo2eCh6NXcoJ20yX2NzdicsJzMnKS4kbTJfY3N2Lno1cSgpLCcyJykpLiB6N3UoejZ4KHoxMHcoejd1KHo5Yyh6N24oejl5KCIyMjAiKSkuejZ1KCdtMl9lY29sJywkbTJfZWNvbCwnNicpKS56OWMoejduKHo5eSgiMjIxIikpLno1eSgnbTJfcHJlZml4JywnJywnNCcpKS56OWMoejduKHo5eSgiMjIyIikpLnozbSgnbTJfd2hlcmUnLGFycmF5KCAibWVzc2FnZSI9Pno5eSgiMjI5IiksICIiPT56OXkoIjIzMCIpKSwiNCIsMSkpKSwnMicpLCcyJykpLiB6N3UoejZ4KHoxMHcoejd1KHo5Yyh6NXUoIm0yX3JhbmQxIix6OXkoIjIzMSIpLCJtMl9yYW5kMSIpLCcnLCc0JykuejljKHo1dSgibTJfcmFuZDIiLHo5eSgiMjMyIiksIm0yX3JhbmQyIiksJycsJzQnKSksJzInKSwnMicpKS56NWIoKS4gejd1KHo2eCh6OGIoejl5KCIyMzMiKSwnNycpLno1dSgnbTJfcHJldmlldycsejl5KCIyMzQiKSwibTJfcHJldmlldyIpLicgJy56NXUoJ20yX3ZlcmJvc2UnLHo5eSgiMjM1IiksIm0yX3ZlcmJvc2UiKSwnMicpKSApLCcyJyksJzIwJykpLiB6NWIoKSAsJzInKTsgZWNobyB6N2YoKS56N3koKS56MTBxKCk7IGlmKCRzX29rfHwkY19vayl7ICRob3N0PWFycmF5KCJhb2wuY29tIiwiYXR0Lm5ldCIsImJlbGxzb3V0aC5uZXQiLCJjb21jYXN0Lm5ldCIsImVtYWlsLmNvbSIsImdtYWlsLmNvbSIsImdvb2dsZW1haWwuY29tIiwiaG90bWFpbC5jb20iLCJqdW5vLmNvbSIsImxpdmUuY29tIiwibHljb3MuY29tIiwibWFpbC5jb20iLCJtaW5kc3ByaW5nLmNvbSIsIm1zbi5jb20iLCJwYWNiZWxsLmNvbSIsInBvc3QuY29tIiwicHJvZGlneS5uZXQiLCJyb2NrZXRtYWlsLmNvbSIsInNiY2dsb2JhbC5uZXQiLCJ1c2EuY29tIiwieWFob28uY29tIiwieW1haWwuY29tIik7ICRjaD0oQGNvdW50KCRob3N0KS0xKTsgJGk9MTsgJG1fc3VjY2Vzcz0wOyAkbV9mYWlsZWQ9MDsgJGFsbF9mYWlsZWQ9YXJyYXkoKTsgaWYoJHNfb2speyBlY2hvIHo5bSgnMicpLno3dSggejljKHo5eSgiMjM3IiksJzgnLCcyJykuejljKHo5eSgiMjM4IiksJzgnKS56OWMoejl5KCIyMzkiKSwnOCcpLno5Yyh6OXkoIjI0MCIpLCc4JykuejljKHo5eSgiMjQxIiksJzgnLCczJykgKTsgJG1fYWxsPUBleHBsb2RlKCJcbiIsJG0xX2VtYWlscyk7ICRtX2FsbD1AYXJyYXlfdW5pcXVlKCRtX2FsbCk7ICRtX2NvdW50PUBjb3VudCgkbV9hbGwpOyAkbV9sZW49QHN0cmxlbigkbV9jb3VudCk7IHo1bygpOyBmb3JlYWNoKCRtX2FsbCBhcyAkbV9tYWlsKXsgJGZyb209JG0xX2Zyb207IGlmKEBpc3NldCgkbTFfcmFuZDEpJiYkbTFfcmFuZDEpeyAkZnJvbT1Ac3RyX3JlcGxhY2UoIkAiLEByYW5kKDEwMDAwMCw5OTk5OTkpLiJAIiwkZnJvbSk7IH0gaWYoaXNzZXQoJG0xX3JhbmQyKSYmJG0xX3JhbmQyKXsgJGhyPUByYW5kKDAsJGNoKTsgJG1fbXNnaWQ9QG1kNShAdW5pcWlkKEB0aW1lKCkpKS4iQCIuJGhvc3RbJGhyXTsgfWVsc2V7ICRtX21zZ2lkPUBtZDUoQHVuaXFpZChAdGltZSgpKSkuIkAiLiRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdOyB9ICRoZWFkZXI9IiI7ICRoZWFkZXIuPSJGcm9tOiAkbTFfbmFtZSA8JGZyb20+XG4iOyAkaGVhZGVyLj0iUmVwbHktVG86IDwkZnJvbT5cbiI7ICRoZWFkZXIuPSJNZXNzYWdlLUlEOiA8Ii4kbV9tc2dpZC4iPlxuIjsgJGhlYWRlci49Ik1JTUUtVmVyc2lvbjogMS4wXG4iOyAkZGF0ZT1AZGF0ZSgiWS1tLWQiKTsgJGhlYWRlci49IkRhdGU6ICRkYXRlXG4iOyAkaGVhZGVyLj0iQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcbiI7ICRoZWFkZXIuPSJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG5cbiI7ICRtX21zZz0kbTFfbXNnOyAkbV9zdWJqPSRtMV9zdWJqOyBpZihAaXNzZXQoJG0xX3N0cikmJiFAZW1wdHkoJG0xX3N0cikmJkBpc3NldCgkbTFfcmVwbGFjZSkmJiFAZW1wdHkoJG0xX3JlcGxhY2UpKXsgaWYoJG0xX3JlcGxhY2U9PSJuYW1lIil7IGlmKCFAaXNzZXQoJG0xX3doZXJlKXx8QGVtcHR5KCRtMV93aGVyZSl8fCRtMV93aGVyZT09Im1lc3NhZ2UiKSAkbV9tc2c9QHN0cl9yZXBsYWNlKCRtMV9zdHIsJG0xX25hbWUsJG1fbXNnKTsgaWYoIUBpc3NldCgkbTFfd2hlcmUpfHxAZW1wdHkoJG0xX3doZXJlKXx8JG0xX3doZXJlPT0ic3ViamVjdCIpICRtX3N1Ymo9QHN0cl9yZXBsYWNlKCRtMV9zdHIsJG0xX25hbWUsJG1fc3Viaik7IH1lbHNlaWYoJG0xX3JlcGxhY2U9PSJlbWFpbDEiKXsgaWYoIUBpc3NldCgkbTFfd2hlcmUpfHxAZW1wdHkoJG0xX3doZXJlKXx8JG0xX3doZXJlPT0ibWVzc2FnZSIpICRtX21zZz1Ac3RyX3JlcGxhY2UoJG0xX3N0ciwkbTFfZnJvbSwkbV9tc2cpOyBpZighQGlzc2V0KCRtMV93aGVyZSl8fEBlbXB0eSgkbTFfd2hlcmUpfHwkbTFfd2hlcmU9PSJzdWJqZWN0IikgJG1fc3Viaj1Ac3RyX3JlcGxhY2UoJG0xX3N0ciwkbTFfZnJvbSwkbV9zdWJqKTsgfWVsc2VpZigkbTFfcmVwbGFjZT09ImVtYWlsMiIpeyBpZighQGlzc2V0KCRtMV93aGVyZSl8fEBlbXB0eSgkbTFfd2hlcmUpfHwkbTFfd2hlcmU9PSJtZXNzYWdlIikgJG1fbXNnPUBzdHJfcmVwbGFjZSgkbTFfc3RyLCRtX21haWwsJG1fbXNnKTsgaWYoIUBpc3NldCgkbTFfd2hlcmUpfHxAZW1wdHkoJG0xX3doZXJlKXx8JG0xX3doZXJlPT0ic3ViamVjdCIpICRtX3N1Ymo9QHN0cl9yZXBsYWNlKCRtMV9zdHIsJG1fbWFpbCwkbV9zdWJqKTsgfWVsc2VpZigkbTFfcmVwbGFjZT09ImVtYWlsaGFzaCIpeyBpZighQGlzc2V0KCRtMV93aGVyZSl8fEBlbXB0eSgkbTFfd2hlcmUpfHwkbTFfd2hlcmU9PSJtZXNzYWdlIikgJG1fbXNnPUBzdHJfcmVwbGFjZSgkbTFfc3RyLEBtZDUoJG1fbWFpbCksJG1fbXNnKTsgaWYoIUBpc3NldCgkbTFfd2hlcmUpfHxAZW1wdHkoJG0xX3doZXJlKXx8JG0xX3doZXJlPT0ic3ViamVjdCIpICRtX3N1Ymo9QHN0cl9yZXBsYWNlKCRtMV9zdHIsQG1kNSgkbV9tYWlsKSwkbV9zdWJqKTsgfSB9ICRtX3BhZD0iIjsgaWYoQHN0cmxlbigkaSk8JG1fbGVuKSAkbV9wYWQ9QHN0cl9yZXBlYXQoIjAiLCgkbV9sZW4tQHN0cmxlbigkaSkpKTsgaWYoIUBlbXB0eSgkbV9tYWlsKSl7IGlmKEBpc3NldCgkbTFfcHJldmlldykmJiRtMV9wcmV2aWV3KXsgaWYoJGk+NSkgYnJlYWs7IGVjaG8gejlkKHo5YygkbV9wYWQuJGksJzE0JywnMicpLno5YygkbV9tYWlsLCcxNCcpLno5YygkZnJvbSwnMTQnKS56OWMoJG1fbXNnaWQsJzE0JykuejljKHo1cCh6OXkoIjI0NSIpKSwnMTQnLCczJyksKCRpJTI/JzAnOicxJykpOyB9ZWxzZWlmKEBtYWlsKCRtX21haWwsJG1fc3ViaiwkbV9tc2csJGhlYWRlcikpeyBlY2hvIHo5ZCh6OWMoJG1fcGFkLiRpLCcxNCcsJzInKS56OWMoJG1fbWFpbCwnMTQnKS56OWMoJGZyb20sJzE0JykuejljKCRtX21zZ2lkLCcxNCcpLno5Yyh6NXAoejl5KCIyNDMiKSksJzE0JywnMycpLCgkaSUyPycwJzonMScpKTsgejVvKCk7ICRtX3N1Y2Nlc3MrKzsgfWVsc2V7IGVjaG8gejlkKHo5YygkbV9wYWQuJGksJzE0JywnMicpLno5YygkbV9tYWlsLCcxNCcpLno5YygkZnJvbSwnMTQnKS56OWMoJG1fbXNnaWQsJzE0JykuejljKHo4ayh6OXkoIjI0NCIpKSwnMTQnLCczJyksKCRpJTI/JzAnOicxJykpOyB6NW8oKTsgJGFsbF9mYWlsZWRbXT0kbV9tYWlsOyAkbV9mYWlsZWQrKzsgfSAkaSsrOyB9IH0gfSBlbHNlaWYoJGNfb2speyAkZmNzdj1Ac3RyX3JlcGxhY2UoIlxyIiwiXG4iLCRtMl9jc3YpOyAkZmNzdj16MnYoIlxuXG4iLCJcbiIsJGZjc3YpOyAkY3N2PXo1cygkZmNzdik7IGVjaG8gejltKCcyJykuejd1KCB6OWMoejl5KCIyMzciKSwnOCcsJzInKS56OWMoejl5KCIyMzgiKSwnOCcpLno5Yyh6OXkoIjIzOSIpLCc4JykuKChAaXNzZXQoJG0yX3ZlcmJvc2UpJiYkbTJfdmVyYm9zZSk/ejljKHo5eSgiMjQyIiksJzgnKTonJykuejljKHo5eSgiMjQwIiksJzgnKS56OWMoejl5KCIyNDEiKSwnOCcsJzMnKSApOyAkbV9jb3VudD1AY291bnQoJGNzdik7ICRtX2xlbj1Ac3RybGVuKCRtX2NvdW50KTsgejVvKCk7IGZvcmVhY2goJGNzdiBhcyAkc3RyX2Nzdil7IGlmKEBpc19hcnJheSgkc3RyX2NzdikpeyAkZnJvbT0kbTJfZnJvbTsgJG1fbWFpbD0kc3RyX2NzdlskbTJfZWNvbF07IGlmKEBpc3NldCgkbTJfcmFuZDEpJiYkbTJfcmFuZDEpeyAkZnJvbT1Ac3RyX3JlcGxhY2UoIkAiLEByYW5kKDEwMDAwMCw5OTk5OTkpLiJAIiwkZnJvbSk7IH0gaWYoaXNzZXQoJG0yX3JhbmQyKSYmJG0yX3JhbmQyKXsgJGhyPUByYW5kKDAsJGNoKTsgJG1fbXNnaWQ9QG1kNShAdW5pcWlkKEB0aW1lKCkpKS4iQCIuJGhvc3RbJGhyXTsgfWVsc2V7ICRtX21zZ2lkPUBtZDUoQHVuaXFpZChAdGltZSgpKSkuIkAiLiRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdOyB9ICRoZWFkZXI9IiI7ICRoZWFkZXIuPSJGcm9tOiAkbTJfbmFtZSA8JGZyb20+XG4iOyAkaGVhZGVyLj0iUmVwbHktVG86IDwkZnJvbT5cbiI7ICRoZWFkZXIuPSJNZXNzYWdlLUlEOiA8Ii4kbV9tc2dpZC4iPlxuIjsgJGhlYWRlci49Ik1JTUUtVmVyc2lvbjogMS4wXG4iOyAkZGF0ZT1AZGF0ZSgiWS1tLWQiKTsgJGhlYWRlci49IkRhdGU6ICRkYXRlXG4iOyAkaGVhZGVyLj0iQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcbiI7ICRoZWFkZXIuPSJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG5cbiI7ICRtX21zZz0kbTJfbXNnOyAkbV9zdWJqPSRtMl9zdWJqOyAkcmVwbD1hcnJheSgpOyBmb3IoJHNpPShAY291bnQoJHN0cl9jc3YpLTEpOyRzaT49MDskc2ktLSl7IGlmKEBlbXB0eSgkbTJfd2hlcmUpKXsgJG1fbXNnPUBzdHJfcmVwbGFjZSgkbTJfcHJlZml4LiRzaSwkc3RyX2Nzdlskc2ldLCRtX21zZyk7ICRtX3N1Ymo9QHN0cl9yZXBsYWNlKCRtMl9wcmVmaXguJHNpLCRzdHJfY3N2WyRzaV0sJG1fc3Viaik7ICRyZXBsW109JG0yX3ByZWZpeC4kc2kuIiA9ICIuJHN0cl9jc3ZbJHNpXS56OXooKTsgfWVsc2V7ICRtX21zZz1Ac3RyX3JlcGxhY2UoJG0yX3ByZWZpeC4kc2ksJHN0cl9jc3ZbJHNpXSwkbV9tc2cpOyAkcmVwbFtdPSRtMl9wcmVmaXguJHNpLiIgPSAiLiRzdHJfY3N2WyRzaV0uejl6KCk7IH0gfSAkcmVwbGFjaW5nPShAY291bnQoJHJlcGwpPjA/QGltcGxvZGUoJycsQGFycmF5X3JldmVyc2UoJHJlcGwpKTonJyk7ICRtX3BhZD0iIjsgaWYoQHN0cmxlbigkaSk8JG1fbGVuKSAkbV9wYWQ9QHN0cl9yZXBlYXQoIjAiLCgkbV9sZW4tQHN0cmxlbigkaSkpKTsgaWYoIUBlbXB0eSgkbV9tYWlsKSl7IGlmKEBpc3NldCgkbTJfcHJldmlldykmJiRtMl9wcmV2aWV3KXsgaWYoJGk+NSkgYnJlYWs7IGVjaG8gejlkKHo5YygkbV9wYWQuJGksJzE0JywnMicpLno5YygkbV9tYWlsLCcxNCcpLno5YygkZnJvbSwnMTQnKS4oKEBpc3NldCgkbTJfdmVyYm9zZSkmJiRtMl92ZXJib3NlKT96OWMoJHJlcGxhY2luZywnMTQnKTonJykuejljKCRtX21zZ2lkLCcxNCcpLno5Yyh6NXAoejl5KCIyNDUiKSksJzE0JywnMycpLCgkaSUyPycwJzonMScpKTsgfSBlbHNlaWYoQG1haWwoJG1fbWFpbCwkbV9zdWJqLCRtX21zZywkaGVhZGVyKSl7IGVjaG8gejlkKHo5YygkbV9wYWQuJGksJzE0JywnMicpLno5YygkbV9tYWlsLCcxNCcpLno5YygkZnJvbSwnMTQnKS4oKEBpc3NldCgkbTJfdmVyYm9zZSkmJiRtMl92ZXJib3NlKT96OWMoJHJlcGxhY2luZywnMTQnKTonJykuejljKCRtX21zZ2lkLCcxNCcpLno5Yyh6NXAoejl5KCIyNDMiKSksJzE0JywnMycpLCgkaSUyPycwJzonMScpKTsgejVvKCk7ICRtX3N1Y2Nlc3MrKzsgfWVsc2V7IGVjaG8gejlkKHo5YygkbV9wYWQuJGksJzE0JywnMicpLno5YygkbV9tYWlsLCcxNCcpLno5YygkZnJvbSwnMTQnKS4oKEBpc3NldCgkbTJfdmVyYm9zZSkmJiRtMl92ZXJib3NlKT96OWMoJHJlcGxhY2luZywnMTQnKTonJykuejljKCRtX21zZ2lkLCcxNCcpLno5Yyh6OGsoejl5KCIyNDQiKSksJzE0JywnMycpLCgkaSUyPycwJzonMScpKTsgejVvKCk7ICRhbGxfZmFpbGVkW109JG1fbWFpbDsgJG1fZmFpbGVkKys7IH0gJGkrKzsgfSB9IH0gZWNobyB6MTBxKCk7IH0gaWYoIUBpc3NldCgkbTJfcHJldmlldyl8fCEkbTJfcHJldmlldyl7IGVjaG8gejZzKCkuejEwdyh6N3UoejZsKHo5eSgiNDI2IiwkbV9jb3VudCkuejl4KCkuejl5KCI0MjciLCRtX3N1Y2Nlc3MpLno5eCgpLno5eSgiNDI4IiwkbV9mYWlsZWQpLigkbV9mYWlsZWQ+MD96OXgoKS56OXkoIjQzMSIpOicnKSkpLCcyJyk7IGlmKEBjb3VudCgkYWxsX2ZhaWxlZCk+MCl7IGVjaG8gejEwdyh6OWQoejZsKHo1dygnJywnMScsMSkuQGltcGxvZGUoIlxuIixAYXJyYXlfdW5pcXVlKCRhbGxfZmFpbGVkKSkuejVxKCkpKSwnMicpOyB9IH0gfSB9IGlmKCRhY3Q9PSdlbmNvZGVycycpeyAkaGFzaF9hbGdvcz1hcnJheSgnJz0+ejl5KCIyNjAiKSk7IGlmKCFAaXNzZXQoJGhhc2hfaW5wdXQpKSAkaGFzaF9pbnB1dD0nJzsgaWYoejdlKCJoYXNoX2FsZ29zIikmJkB6N2UoImhhc2giKSl7ICRoZm5jPTE7ICRoYXNoZXM9QGhhc2hfYWxnb3MoKTsgfSBlbHNlIHsgJGhmbmM9MDsgJGhhc2hlcz1hcnJheSgpOyBmb3JlYWNoKGFycmF5KCJtZDUiLCJzaGExIiwiY3JjMzIiKSBhcyAkaGgpeyBpZih6N2UoJGhoKSkgJGhhc2hlc1tdPSRoaDsgfSB9IGZvcmVhY2goJGhhc2hlcyBhcyAkaGEpICRoYXNoX2FsZ29zWyRoYV09JGhhOyAkZW5jb2RlX2Z1bmN0aW9ucz16MWUoKTsgJHN1Ym1pdGVkPTA7IGlmKEBpc3NldCgkc3VibWl0X2VuY29kZSkmJiRzdWJtaXRfZW5jb2RlJiZAaXNzZXQoJGVuY29kZXJfaW5wdXQpJiYhQGVtcHR5KCRlbmNvZGVyX2lucHV0KSkgJHN1Ym1pdGVkPTE7ICRlbmNvZGVyX291dHB1dD0iIjsgaWYoIUBpc3NldCgkaXBfaW5wdXQpfHxAZW1wdHkoJGlwX2lucHV0KSl7ICRpcF9pbnB1dD0kc2FkZHI7IH0gZWNobyB6M3EoYXJyYXkoejl5KCIyNDYiKSx6OXkoIjI1MyIpKSwiNDYiKTsgZWNobyB6OW0oMikuIHo3bygpLiB6N2ooJycsJzQnKS56NnMoKS4gejltKCcyJykuejlrKCcnLCdoYXNoX2Zvcm0nKS56OXYoImFjdCIsImVuY29kZXJzIikuejl2KCJkIikuejl2KCJodHlwZSIsIjEiKS56N3UoejV0KHo5eSgiMjQ3IikpLno5Yyh6NXkoImhhc2hpbnB1dCIsIiIsIjUiKS56OGIoejl5KCIyNDgiKSwnNycpLno4bSh6OXkoIjI1MCIpLCdkb2N1bWVudC5oYXNoX2Zvcm0uaGFzaGlucHV0LnZhbHVlPVwnXCc7JywnNycpKSkuejlsKCkuejEwcSgpOyBpZihAaXNzZXQoJGh0eXBlKSYmJGh0eXBlKXsgZWNobyB6MTB3KHo5ZCh6NXQoejl5KCIyNTEiKSkuejljKHo1dygnJywnNicpLnoyZSgkaGFzaGlucHV0KS56NXEoKSkpLCIyIik7IH0gZWNobyB6N2YoKS56N2ooJycsJzQ2JykuIHo2cygpLiB6OW0oJzInKS56OWsoJycsImlwX2Zvcm0iKS56OXYoImFjdCIsImVuY29kZXJzIikuejl2KCJkIikuejl2KCJzdWJtaXRfaXAiLCIxIikuejd1KHo1dCh6OXkoIjI1NCIpKS56OWMoejZ1KCJpcF9pbnB1dCIsQGh0bWxzcGVjaWFsY2hhcnMoJGlwX2lucHV0KSwnNScpLno4Yih6OXkoIjI0OCIpLCc3JykuejhtKHo5eSgiMjUwIiksJ2RvY3VtZW50LmlwX2Zvcm0uaXBfaW5wdXQudmFsdWU9XCdcJzsnLCc3JykpKS56OWwoKS56MTBxKCk7IGlmKEBpc3NldCgkc3VibWl0X2lwKSYmJHN1Ym1pdF9pcD09IjEiJiZAaXNzZXQoJGlwX2lucHV0KSYmIUBlbXB0eSgkaXBfaW5wdXQpKXsgZWNobyB6OW0oJzInKS56N3UoejV0KHo5eSgiMjU1IikpLno5Yyh6OGcoc3ByaW50ZigiJXUiLEBpcDJsb25nKCRpcF9pbnB1dCkpLCIwIikuejl4KCkuejEwdCgnaHR0cDovLycuQHNwcmludGYoIiV1IixAaXAybG9uZygkaXBfaW5wdXQpKS4nLycsejl5KCIyNTIiKSwiMSIsMSkpKS4gejd1KHo1dCh6OXkoIjI1NiIpKS56OWMoejhnKCh6MnooJGlwX2lucHV0KT09ImZhaWxlZCIpPyJmYWlsZWQiOnoyeigkaXBfaW5wdXQpLCIwIikuKCh6MnooJGlwX2lucHV0KT09ImZhaWxlZCIpPyIiOno5eCgpLnoxMHQoJ2h0dHA6Ly8nLnoyeigkaXBfaW5wdXQpLicvJyx6OXkoIjI1MiIpLCIxIiwxKSkpKS4gejd1KHo1dCh6OXkoIjI1NyIpKS56OWMoejhnKCh6MXUoJGlwX2lucHV0KT09ImZhaWxlZCIpPyJmYWlsZWQiOnoxdSgkaXBfaW5wdXQpLCIwIikuKCh6MXUoJGlwX2lucHV0KT09ImZhaWxlZCIpPyIiOno5eCgpLnoxMHQoJ2h0dHA6Ly8nLnoxdSgkaXBfaW5wdXQpLicvJyx6OXkoIjI1MiIpLCIxIiwxKSkpKS56MTBxKCk7IH0gZWNobyB6NnMoKTsgZWNobyB6N2YoKS4gejd5KCkuIHoxMHEoKTsgZWNobyB6M3EoYXJyYXkoejl5KCI0MzIiKSx6OXkoIjQzMyIpKSwnNDYnKTsgZWNobyB6OW0oMikuIHo3bygpLiB6N2ooJycsJzQnKS56NnMoKS4gejltKCcyJykuejlrKCcnLCJoYXNoaW5nX2Zvcm0iKS56OXYoImFjdCIsImVuY29kZXJzIikuejl2KCJkIikuIHo3dSh6NXQoejl5KCIyNTgiKSkuejljKHozbSgnaGFzaF90eXBlJywkaGFzaF9hbGdvcywnNScsMSkuejhiKHo5eSgiMjQ5IiksJzcnKS56OG0oejl5KCIyNTAiKSwnZG9jdW1lbnQuaGFzaGluZ19mb3JtLmhhc2hfaW5wdXQudmFsdWU9XCdcJzsnLCc3JykpKS4gejlkKHo1dCh6OXkoIjI1OSIpKS56OWMoejV3KCdoYXNoX2lucHV0JywnNicpLihAaXNzZXQoJGhhc2hfaW5wdXQpP0BodG1sc3BlY2lhbGNoYXJzKCRoYXNoX2lucHV0KTonJykuejVxKCkpKS4gejlsKCkuejEwcSgpLiB6NnMoKS4gejdmKCkuejdqKCcnLCc0NicpLiB6NnMoKS4gejltKCcyJykuejlrKCcnLCJlbmNvZGVyX2Zvcm0iKS56OXYoImQiKS56OXYoImFjdCIsImVuY29kZXJzIikuejl2KCJzdWJtaXRfZW5jb2RlIiwiMSIpLiB6N3UoejV0KHo5eSgiOTEiKSkuejljKHozbSgiZW5jb2RlX3NlbGVjdGVkIiwkZW5jb2RlX2Z1bmN0aW9ucywiNSIsMSwnJykuejhiKHo5eSgiMjQ5IiksJzcnKS56OG0oejl5KCIyNTAiKSwnZG9jdW1lbnQuZW5jb2Rlcl9mb3JtLmVuY29kZXJfaW5wdXQudmFsdWU9XCdcJzsnLCc3JykpKS4gejlkKHo1dCh6OXkoIjI1OSIpKS56OWMoejV3KCdlbmNvZGVyX2lucHV0JywnNicpLihAaXNzZXQoJGVuY29kZXJfaW5wdXQpP0BodG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVyX2lucHV0KTonJykuejVxKCkpKS4gKCRzdWJtaXRlZD96N3UoejV0KHo5eCgpKS56OWMoejhtKHo5eSgiMjYzIiksJ2RvY3VtZW50Lm91dHB1dF9mb3JtLmVuY29kZXJfb3V0cHV0LnZhbHVlPVwnXCc7JywnNycpLno4bSh6OXkoIjI2NCIpLCdkb2N1bWVudC5lbmNvZGVyX2Zvcm0uZW5jb2Rlcl9pbnB1dC52YWx1ZT1kb2N1bWVudC5vdXRwdXRfZm9ybS5lbmNvZGVyX291dHB1dC52YWx1ZTsnLCc3JykpKTonJykuIHo5bCgpLnoxMHEoKS4gejZzKCkuIHo3ZigpLiB6N3koKS4gejEwcSgpOyBpZihAaXNzZXQoJGhhc2hfaW5wdXQpJiYhQGVtcHR5KCRoYXNoX2lucHV0KSl7IGVjaG8gejNxKHo5eSgiMjYxIikpLno2cygpOyBlY2hvIHo5bSgnMicpOyBpZihAY291bnQoJGhhc2hlcyk+MCl7IGlmKEBpc3NldCgkaGFzaF90eXBlKSYmQGluX2FycmF5KCRoYXNoX3R5cGUsJGhhc2hlcykpeyBlY2hvIHo3dSh6NXQoJGhhc2hfdHlwZSkuejljKHo4ZygoJGhmbmM/QGhhc2goJGhhc2hfdHlwZSwkaGFzaF9pbnB1dCk6JGhhc2hfdHlwZSgkaGFzaF9pbnB1dCkpLCc3JykpKTsgfSBlbHNlIHsgZm9yZWFjaCgkaGFzaGVzIGFzICRrKXsgZWNobyB6N3UoejV0KCRrKS56OWMoejhnKCgkaGZuYz9AaGFzaCgkaywkaGFzaF9pbnB1dCk6JGsoJGhhc2hfaW5wdXQpKSwnNycpKSk7IH0gfSB9IGVjaG8gejEwcSgpLno2cygpOyB9IGlmKCRzdWJtaXRlZCl7ICRlbmNvZGVyX291dHB1dD0kZW5jb2RlX3NlbGVjdGVkKCRlbmNvZGVyX2lucHV0KTsgZWNobyB6M3Eoejl5KCIyNjIiKSkuejZzKCkuejltKCcyJykuejlrKCcnLCJvdXRwdXRfZm9ybSIpLno5ZCh6NmwoejV3KCdlbmNvZGVyX291dHB1dCcsJzEnKS5AaHRtbHNwZWNpYWxjaGFycygkZW5jb2Rlcl9vdXRwdXQpLno1cSgpKSkuejlsKCkuejEwcSgpLno2cygpOyB9IH0gaWYoJGFjdD09J3Rvb2xzJyl7ICRibmRwcnRfYz0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrQ2lOcGJtTnNkV1JsSUR4MWJtbHpkR1F1YUQ0S0kybHVZMngxWkdVZ1BITjBaR3hwWWk1b1Bnb2phVzVqYkhWa1pTQThjM1J5YVc1bmN5NW9QZ29qYVc1amJIVmtaU0E4Ym1WMGFXNWxkQzlwYmk1b1Bnb2phVzVqYkhWa1pTQThjM2x6TDNOdlkydGxkQzVvUGdvamFXNWpiSFZrWlNBOGMybG5ibUZzTG1nK0Nnb2paR1ZtYVc1bElGQXdVbFFnSlhCdmNuUWxDaU5rWldacGJtVWdVRUZUVXlBaUpYQmhjM01sSWdvS2FXNTBDbTFoYVc0b2FXNTBJR0VzSUdOb1lYSWdLaXBpS1FwN0NtbHVkQ0JqTENCa0xDQmxJRDBnYzJsNlpXOW1LSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaWtzSUdZN0NtTm9ZWElnY0ZzeE1EQXdYVHNLYzNSeWRXTjBJSE52WTJ0aFpHUnlYMmx1SUd3c0lISTdDbk5wWjI1aGJDaFRTVWREU0V4RUxDQlRTVWRmU1VkT0tUc0tjMmxuYm1Gc0tGTkpSMGhWVUN3Z1UwbEhYMGxIVGlrN0NuTnBaMjVoYkNoVFNVZFVSVkpOTENCVFNVZGZTVWRPS1RzS2MybG5ibUZzS0ZOSlIwbE9WQ3dnVTBsSFgwbEhUaWs3Q21sbUlDaG1iM0pyS0NrcENtVjRhWFFvTUNrN0Ntd3VjMmx1WDJaaGJXbHNlU0E5SUVGR1gwbE9SVlE3Q213dWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loUU1GSlVLVHNLYkM1emFXNWZZV1JrY2k1elgyRmtaSElnUFNCSlRrRkVSRkpmUVU1Wk93cGllbVZ5YnlnbUtHd3VjMmx1WDNwbGNtOHBMQ0E0S1RzS1l5QTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnTUNrN0NtSnBibVFvWXl3b2MzUnlkV04wSUhOdlkydGhaR1J5SUNvcElDWnNMQ0J6YVhwbGIyWW9jM1J5ZFdOMElITnZZMnRoWkdSeUtTazdDbXhwYzNSbGJpaGpMQ0F6S1RzS2QyaHBiR1VnS0Noa0lEMGdZV05qWlhCMEtHTXNJQ2h6ZEhKMVkzUWdjMjlqYTJGa1pISWdLaWtnSm5Jc0lDWmxLU2twQ25zS2FXWWdLQ0ZtYjNKcktDa3BDbnNLY21WamRpaGtMQ0J3TENBeE1EQXdMQ0F3S1RzS2FXWWdLR05vY0dGemN5aFFRVk5UTEhBcEtRcDdDbU5zYjNObEtHUXBPd3BsZUdsMEtERXBPd3A5Q21Oc2IzTmxLREFwT3dwamJHOXpaU2d4S1RzS1kyeHZjMlVvTWlrN0NtUjFjRElvWkN3Z01DazdDbVIxY0RJb1pDd2dNU2s3Q21SMWNESW9aQ3dnTWlrN0NuTmxkR1Z1ZGlnaVVFRlVTQ0lzSUNJdmMySnBiam92WW1sdU9pOTFjM0l2YzJKcGJqb3ZkWE55TDJKcGJqb3ZkWE55TDJ4dlkyRnNMMkpwYmk4NkwzVnpjaTlzYjJOaGJDOXpZbWx1T2k0aUxDQXhLVHNLZFc1elpYUmxibllvSWtoSlUxUlRRVlpGSWlrN0NuVnVjMlYwWlc1MktDSklTVk5VUmtsTVJTSXBPd3BsZUdWamJDZ2lMMkpwYmk5emFDSXNJQ0p6YUNJc0lDaGphR0Z5SUNvcElEQXBPd3BqYkc5elpTaGtLVHNLWlhocGRDZ3dLVHNLZlFwOUNuSmxkSFZ5YmlBd093cDlDZ3BwYm5RZ1kyaHdZWE56S0dOb1lYSWdLbUpoYzJVc0lHTm9ZWElnS21WdWRHVnlaV1FwSUhzS2FXNTBJR2s3Q21admNpaHBQVEE3YVR4emRISnNaVzRvWlc1MFpYSmxaQ2s3YVNzcktTQUtld3BwWmlobGJuUmxjbVZrVzJsZElEMDlJQ2RjYmljcENtVnVkR1Z5WldSYmFWMGdQU0FuWERBbk95QUthV1lvWlc1MFpYSmxaRnRwWFNBOVBTQW5YSEluS1FwbGJuUmxjbVZrVzJsZElEMGdKMXd3SnpzS2ZRcHBaaUFvSVhOMGNtTnRjQ2hpWVhObExHVnVkR1Z5WldRcEtRcHlaWFIxY200Z01Ec0tmUW89IjsgJGJuZHBydF9wbD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNDaVJUU0VWTVREMGlMMkpwYmk5emFDSTdDaVJNU1ZOVVJVNWZVRTlTVkQwbGNHOXlkQ1U3Q25WelpTQlRiMk5yWlhRN0NpUndjbTkwYjJOdmJEMW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3Q25OdlkydGxkQ2hUTENaUVJsOUpUa1ZVTENaVFQwTkxYMU5VVWtWQlRTd2tjSEp2ZEc5amIyd3BJSHg4SUdScFpTQWlRMkZ1ZENCamNtVmhkR1VnYzI5amEyVjBYRzRpT3dwelpYUnpiMk5yYjNCMEtGTXNVMDlNWDFOUFEwdEZWQ3hUVDE5U1JWVlRSVUZFUkZJc01TazdDbUpwYm1Rb1V5eHpiMk5yWVdSa2NsOXBiaWdrVEVsVFZFVk9YMUJQVWxRc1NVNUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQWlRMkZ1ZENCdmNHVnVJSEJ2Y25SY2JpSTdDbXhwYzNSbGJpaFRMRE1wSUh4OElHUnBaU0FpUTJGdWRDQnNhWE4wWlc0Z2NHOXlkRnh1SWpzS2QyaHBiR1VvTVNrS2V3cGhZMk5sY0hRb1EwOU9UaXhUS1RzS2FXWW9JU2drY0dsa1BXWnZjbXNwS1FwN0NtUnBaU0FpUTJGdWJtOTBJR1p2Y21zaUlHbG1JQ2doWkdWbWFXNWxaQ0FrY0dsa0tUc0tiM0JsYmlCVFZFUkpUaXdpUENaRFQwNU9JanNLYjNCbGJpQlRWRVJQVlZRc0lqNG1RMDlPVGlJN0NtOXdaVzRnVTFSRVJWSlNMQ0krSmtOUFRrNGlPd3BsZUdWaklDUlRTRVZNVENCOGZDQmthV1VnY0hKcGJuUWdRMDlPVGlBaVEyRnVkQ0JsZUdWamRYUmxJQ1JUU0VWTVRGeHVJanNLWTJ4dmMyVWdRMDlPVGpzS1pYaHBkQ0F3T3dwOUNuMEtDZz09IjsgJGJja2Nvbl9wbD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHTnRaRDBnSW14NWJuZ2lPdzBLSkhONWMzUmxiVDBnSjJWamFHOGdJbUIxYm1GdFpTQXRZV0FpTzJWamFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFpEc05DaVIwWVhKblpYUTlKRUZTUjFaYk1GMDdEUW9rY0c5eWREMGtRVkpIVmxzeFhUc05DaVJwWVdSa2NqMXBibVYwWDJGMGIyNG9KSFJoY21kbGRDa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUndiM0owTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2drYzNsemRHVnRLVHNOQ21Oc2IzTmxLRk5VUkVsT0tUc05DbU5zYjNObEtGTlVSRTlWVkNrN0RRcGpiRzl6WlNoVFZFUkZVbElwT3c9PSI7ICRiY2tjb25fYz0iSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrQ2lOcGJtTnNkV1JsSUR4emVYTXZjMjlqYTJWMExtZytDaU5wYm1Oc2RXUmxJRHh1WlhScGJtVjBMMmx1TG1nK0NtbHVkQ0J0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwQ25zS0lHbHVkQ0JtWkRzS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnphVzQ3Q2lCamFHRnlJSEp0YzFzeU1WMDlJbkp0SUMxbUlDSTdJQW9nWkdGbGJXOXVLREVzTUNrN0NpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0NpQnphVzR1YzJsdVgzQnZjblFnUFNCb2RHOXVjeWhoZEc5cEtHRnlaM1piTWwwcEtUc0tJSE5wYmk1emFXNWZZV1JrY2k1elgyRmtaSElnUFNCcGJtVjBYMkZrWkhJb1lYSm5kbHN4WFNrN0lBb2dZbnBsY204b1lYSm5kbHN4WFN4emRISnNaVzRvWVhKbmRsc3hYU2tyTVN0emRISnNaVzRvWVhKbmRsc3lYU2twT3lBS0lHWmtJRDBnYzI5amEyVjBLRUZHWDBsT1JWUXNJRk5QUTB0ZlUxUlNSVUZOTENCSlVGQlNUMVJQWDFSRFVDa2dPeUFLSUdsbUlDZ29ZMjl1Ym1WamRDaG1aQ3dnS0hOMGNuVmpkQ0J6YjJOcllXUmtjaUFxS1NBbWMybHVMQ0J6YVhwbGIyWW9jM1J5ZFdOMElITnZZMnRoWkdSeUtTa3BQREFwSUhzS0lDQWdjR1Z5Y205eUtDSmJMVjBnWTI5dWJtVmpkQ2dwSWlrN0NpQWdJR1Y0YVhRb01DazdDaUI5Q2lCemRISmpZWFFvY20xekxDQmhjbWQyV3pCZEtUc0tJSE41YzNSbGJTaHliWE1wT3lBZ0NpQmtkWEF5S0daa0xDQXdLVHNLSUdSMWNESW9abVFzSURFcE93b2daSFZ3TWlobVpDd2dNaWs3Q2lCbGVHVmpiQ2dpTDJKcGJpOXphQ0lzSW5Ob0lpd2dUbFZNVENrN0NpQmpiRzl6WlNobVpDazdJQXA5Q2dvPSI7ICRibmRwb3J0c3Jjcz1hcnJheSgiYm5kcHJ0LnBsIj0+YXJyYXkoIlBFUkwiLCAicGVybCAlcGF0aCIpLCAiYm5kcHJ0LmMiPT5hcnJheSgiQyIsIiVwYXRoIikpOyAkYmNzcmNzPWFycmF5KCJiY2tjb24ucGwiPT5hcnJheSgiUEVSTCIsInBlcmwgJXBhdGggJWhvc3QgJXBvcnQiKSwgImJja2Nvbi5jIj0+YXJyYXkoIkMiLCIlcGF0aCAlaG9zdCAlcG9ydCIpKTsgaWYoIUBpc3NldCgkYnJ0ZXN0MSkpICRicnRlc3QxPTA7IGlmKCFAaXNzZXQoJGJydGVzdDIpKSAkYnJ0ZXN0Mj0wOyBpZighQGlzc2V0KCRicnRlc3QzKSkgJGJydGVzdDM9MDsgaWYoIUBpc3NldCgkYnJ0ZXN0NCkpICRicnRlc3Q0PTA7ICR1c2Vycz1hcnJheSgpOyBpZihAZW1wdHkoJGJydXRlX2VtYWlsKSkgJGJydXRlX2VtYWlsPXo3eignMicsImVtYWlsIik7IGlmKEBlbXB0eSgkZHZfZW1haWwpKSAkZHZfZW1haWw9ejd6KCcyJywiZW1haWwiKTsgaWYoQGVtcHR5KCRjcF9lbWFpbCkpICRjcF9lbWFpbD16N3ooJzInLCJlbWFpbCIpOyBpZihAaXNzZXQoJGJybSkmJigkYnJtPT0iMiJ8fCRicm09PSIzIikpeyAkdXNlcnM9ejhsKCk7IH0gJGJydXRlX3R5cGVbIjEiXT16OXkoIjM0MyIpOyBpZigkYnBhc3N3ZCl7ICRicnV0ZV90eXBlWyIyIl09ejl5KCIzNDQiKTsgJGJydXRlX3R5cGVbIjMiXT16OXkoIjM0NSIpOyB9ICRhdmFpbGFibGVfYXJyPWFycmF5KCk7IGlmKCRiZnRwKSAkYXZhaWxhYmxlX2FyclsiRlRQIl09IkZUUCI7IGlmKCRibXlzcWwpICRhdmFpbGFibGVfYXJyWyJNeVNRTCJdPSJNeVNRTCI7IGlmKCRibXNzcWwpICRhdmFpbGFibGVfYXJyWyJNU1NRTCJdPSJNU1NRTCI7IGlmKCRicG9zdGdyZXMpICRhdmFpbGFibGVfYXJyWyJQb3N0Z3JlU1FMIl09IlBvc3RncmVTUUwiOyBpZigkYm9yYWNsZSkgJGF2YWlsYWJsZV9hcnJbIk9yYWNsZSJdPSJPcmFjbGUiOyBpZighQGlzc2V0KCRicmgpKSAkYnJoPSRzYWRkcjsgaWYoIUBpc3NldCgkZHZmaWxlcykpICRkdmZpbGVzPSIqY29uZioucGhwOypkYioucGhwOyI7IGlmKCFAaXNzZXQoJGR2dXNlcikpICRkdnVzZXI9InVzZXIiOyBpZighQGlzc2V0KCRkdnBhc3MpKSAkZHZwYXNzPSJwYXNzIjsgaWYoIUBpc3NldCgkZHZob3N0KSkgJGR2aG9zdD0iaG9zdCI7IGlmKCFAaXNzZXQoJGR2YmFzZSkpICRkdmJhc2U9ImJhc2UiOyAkYXJyX3ZhcnM9YXJyYXkoInZhciI9PiJ2YXJpYWJsZSAoXCR2YXIpIiwiYXJyYXl2YXIxIj0+ImFycmF5dmFyICgndmFyJz0+KSIsImFycmF5dmFyMiI9PiJhcnJheXZhciAoWyd2YXInXT0+KSIsImNvbnN0Ij0+ImNvbnN0YW50IChkZWZpbmUpIik7ICRyZWNfYXJyPWFycmF5KCk7IGZvcigkaT0wOyRpPDEwOyRpKyspICRyZWNfYXJyWygkaSsxKV09KCRpKzEpLiIgRElSUyI7ICRyZWNfYXJyWyJubyJdPSJOTyI7ICRhcnJfZHZmaW5kPWFycmF5KCJkdmRpciI9Pno5eSgiMzAxIikpOyAkYXJyX21ldGhvZD1hcnJheSgiY3BkaXIiPT56OXkoIjMwNCIpKTsgaWYoKCR3d3dkaXI9ejNuKCkpIT09ZmFsc2UpeyAkYXJyX2R2ZmluZFsiZG9jcm9vdCJdPXo5eSgiMzI2Iik7ICRhcnJfbWV0aG9kWyJjcGRvY3Jvb3QiXT16OXkoIjMwNSIpOyB9IGlmKCRicGFzc3dkKXsgJGFycl9kdmZpbmRbInBhc3N3ZCJdPXo5eSgiMzI3Iik7ICRhcnJfbWV0aG9kWyJjcHBhc3N3ZCJdPXo5eSgiMzA2Iik7IH0gJGlual9tZXRob2Q9YXJyYXkoICJ0b3AiPT4iVG9wIG9mIHRoZSBmaWxlIiAsImVuZCI9PiJFbmQgb2YgdGhlIGZpbGUiICwicGhwMSI9PiJCZWZvcmUgZmlyc3QgJmx0Oz8iICwiaHRtbDEiPT4iQmVmb3JlICZsdDtodG1sJmd0OyIgLCJodG1sMiI9PiJCZWZvcmUgJmx0Oy9odG1sJmd0OyIgLCJib2R5MSI9PiJCZWZvcmUgJmx0O2JvZHkuKiZndDsiICwiYm9keTIiPT4iQmVmb3JlICZsdDsvYm9keSZndDsiICwicGhwMiI9PiJBZnRlciBsYXN0ID8mZ3Q7IiAsImJvZHkzIj0+IkFmdGVyICZsdDtib2R5LiomZ3Q7IiAsImJvZHk0Ij0+IkFmdGVyICZsdDsvYm9keSZndDsiICwiaHRtbDMiPT4iQWZ0ZXIgJmx0O2h0bWwmZ3Q7IiAsImh0bWw0Ij0+IkFmdGVyICZsdDsvaHRtbCZndDsiICwib3ZlcndyaXRlIj0+IkRlZmFjZSAoT3ZlcndyaXRlIGZpbGUpIiApOyBpZighQGlzc2V0KCRibmRfcG9ydCl8fCFAaXNfbnVtZXJpYygkYm5kX3BvcnQpKSAkYm5kX3BvcnQ9ejd6KCcyJywnYmluZF9wb3J0Jyk7IGlmKCFAaXNzZXQoJGJuZF9wYXNzKXx8QGVtcHR5KCRibmRfcGFzcykpICRibmRfcGFzcz16N3ooJzInLCdiaW5kX3Bhc3MnKTsgaWYoIUBpc3NldCgkYmNfaG9zdCl8fEBlbXB0eSgkYmNfaG9zdCkpICRiY19ob3N0PSR5YWRkcjsgaWYoIUBpc3NldCgkYmNfcG9ydCl8fCFAaXNfbnVtZXJpYygkYmNfcG9ydCkpICRiY19wb3J0PXo3eignMicsJ2JhY2tjb25fcG9ydCcpOyAkYmluZG1zZz0kYmNtc2c9IiI7IGlmKEBpc3NldCgkYmluZHN1Ym1pdCkmJiRiaW5kc3VibWl0KXsgJHY9JGJuZHBvcnRzcmNzWyRibmRfc3JjXTsgaWYoQGVtcHR5KCR2KSl7ICRiaW5kbXNnPXo5eSgiMjcyIik7IH1lbHNlaWYoQGZzb2Nrb3BlbigibG9jYWxob3N0IiwkYm5kX3BvcnQsJGVycm5vLCRlcnJzdHIsMC4xKSl7ICRiaW5kbXNnPXo5eSgiMjc1IiwkYm5kX3BvcnQpOyB9ZWxzZXsgJHc9QGV4cGxvZGUoIi4iLCRibmRfc3JjKTsgJGV4dD0kd1tAY291bnQoJHcpLTFdOyB1bnNldCgkd1tjb3VudCgkdyktMV0pOyAkc3JjcGF0aD0kdGVtcGRpci5Aam9pbigiLiIsJHcpLiIuIi5AbWQ1KEB0aW1lKCkpLiIuIi4kZXh0OyAkYmlucGF0aD0kdGVtcGRpci5Aam9pbigiLiIsJHcpLkBtZDUoQHRpbWUoKSk7IGlmKCRleHQ9PSJwbCIpeyAkYmlucGF0aD0kc3JjcGF0aDsgfSBAdW5saW5rKCRzcmNwYXRoKTsgJGZwPUBmb3Blbigkc3JjcGF0aCwiYWIrIik7IGlmKCEkZnApeyAkYmluZG1zZz16OXkoIjI3MSIpOyB9ZWxzZXsgJGRhdGE9QGJhc2U2NF9kZWNvZGUoJHtAc3RyX3JlcGxhY2UoJy4nLCdfJywkYm5kX3NyYyl9KTsgJGRhdGE9QHN0cl9yZXBsYWNlKCIlcGFzcyUiLCRibmRfcGFzcywkZGF0YSk7ICRkYXRhPUBzdHJfcmVwbGFjZSgiJXBvcnQlIiwkYm5kX3BvcnQsJGRhdGEpOyBAZndyaXRlKCRmcCwkZGF0YSxAc3RybGVuKCRkYXRhKSk7IEBmY2xvc2UoJGZwKTsgaWYoJGV4dD09ImMiKXsgJHJldGdjYz16OWUoImdjYyAtbyAiLiRiaW5wYXRoLiIgIi4kc3JjcGF0aCk7IEB1bmxpbmsoJHNyY3BhdGgpOyB9ICR2WzFdPUBzdHJfcmVwbGFjZSgiJXBhdGgiLCRiaW5wYXRoLCR2WzFdKTsgJHZbMV09QHN0cl9yZXBsYWNlKCIvLyIsIi8iLCR2WzFdKTsgJHJldGJpbmQ9ejllKCR2WzFdLiIgPiAvZGV2L251bGwgJiIpOyBAc2xlZXAoNSk7ICRzb2NrPUBmc29ja29wZW4oImxvY2FsaG9zdCIsJGJuZF9wb3J0LCRlcnJubywkZXJyc3RyLDUpOyBpZighJHNvY2speyAkYmluZG1zZz16OXkoIjI3MyIsJGJuZF9wb3J0KTsgfWVsc2V7ICRiaW5kbXNnPXo5eSgiMjc0IixhcnJheSgkc2FkZHIsJGJuZF9wb3J0KSk7IH0gfSB9IH0gaWYoQGlzc2V0KCRiY3N1Ym1pdCkmJiRiY3N1Ym1pdCl7ICR2PSRiY3NyY3NbJGJjX3NyY107IGlmKEBlbXB0eSgkdikpeyAkYmNtc2c9ejl5KCIyNzIiKTsgfWVsc2V7ICR3PUBleHBsb2RlKCIuIiwkYmNfc3JjKTsgJGV4dD0kd1tjb3VudCgkdyktMV07IHVuc2V0KCR3W2NvdW50KCR3KS0xXSk7ICRzcmNwYXRoPSR0ZW1wZGlyLmpvaW4oIi4iLCR3KS4iLiIuQG1kNShAdGltZSgpKS4iLiIuJGV4dDsgJGJpbnBhdGg9JHRlbXBkaXIuam9pbigiLiIsJHcpLkBtZDUoQHRpbWUoKSk7IGlmKCRleHQ9PSJwbCIpeyAkYmlucGF0aD0kc3JjcGF0aDsgfSBAdW5saW5rKCRzcmNwYXRoKTsgJGZwPUBmb3Blbigkc3JjcGF0aCwiYWIrIik7IGlmKCEkZnApeyAkYmNtc2c9ejl5KCIyNzEiKTsgfWVsc2V7ICRkYXRhPUBiYXNlNjRfZGVjb2RlKCR7c3RyX3JlcGxhY2UoJy4nLCdfJywkYmNfc3JjKX0pOyBAZndyaXRlKCRmcCwkZGF0YSxzdHJsZW4oJGRhdGEpKTsgZmNsb3NlKCRmcCk7IGlmKCRleHQ9PSJjIil7ICRyZXRnY2M9ejllKCJnY2MgLW8gIi4kYmlucGF0aC4iICIuJHNyY3BhdGgpOyBAdW5saW5rKCRzcmNwYXRoKTsgfSAkdlsxXT1Ac3RyX3JlcGxhY2UoIiVwYXRoIiwkYmlucGF0aCwkdlsxXSk7ICR2WzFdPUBzdHJfcmVwbGFjZSgiJWhvc3QiLCRiY19ob3N0LCR2WzFdKTsgJHZbMV09QHN0cl9yZXBsYWNlKCIlcG9ydCIsJGJjX3BvcnQsJHZbMV0pOyAkdlsxXT1Ac3RyX3JlcGxhY2UoIi8vIiwiLyIsJHZbMV0pOyAkcmV0YmluZD16OWUoJHZbMV0uIiA+IC9kZXYvbnVsbCAmIik7ICRiY21zZz16OXkoIjc2IixhcnJheSgkYmNfaG9zdCwkYmNfcG9ydCkpOyB9IH0gfSAkc2VsZWN0YT0kc2VsZWN0Yj1hcnJheSgpOyBmb3JlYWNoKCRibmRwb3J0c3JjcyBhcyAkaz0+JHYpICRzZWxlY3RhWyRrXT0kdlswXTsgZm9yZWFjaCgkYmNzcmNzIGFzICRrPT4kdikgJHNlbGVjdGJbJGtdPSR2WzBdOyBpZighJHdpbiYmKCRzaF9leGVjfHwkc2FmZV9leGVjKSl7IGVjaG8gejNxKGFycmF5KHo5eSgiMjY1IikuKCFAZW1wdHkoJGJpbmRtc2cpPyIgLSAiLkBzdHJ0b3VwcGVyKCRiaW5kbXNnKToiIiksejl5KCIyNjYiKS4oIUBlbXB0eSgkYmNtc2cpPyIgLSAiLkBzdHJ0b3VwcGVyKCRiY21zZyk6IiIpKSwnNDYnKTsgZWNobyB6OW0oMikuejdvKCkuejdqKCcnLCc0Jyk7IGVjaG8gejV4KGFycmF5KCJhY3QiPT4idG9vbHMiLCJkIiwiYmluZHN1Ym1pdCI9PiIxIiksejEwdyh6NWIoKS56N3UoejV0KHo5eSgiMjY3IikpLno5Yyh6NnUoImJuZF9wYXNzIiwkYm5kX3Bhc3MsJzQnKS4iOiIuejZ1KCJibmRfcG9ydCIsJGJuZF9wb3J0LCcxJykuIjoiLnozbSgiYm5kX3NyYyIsJHNlbGVjdGEsJzEnLDEpLno4Yih6OXkoIjI2OCIpLCc3JykpKS56NWIoKSwnMicpKTsgZWNobyB6N2YoKS56N2ooJycsJzQ2Jyk7IGVjaG8gejV4KGFycmF5KCJhY3QiPT4idG9vbHMiLCJkIiwiYmNzdWJtaXQiPT4iMSIpLHoxMHcoejViKCkuejd1KHo1dCh6OXkoIjQzNCIpKS56OWMoejZ1KCJiY19ob3N0IiwkYmNfaG9zdCwnNCcpLiI6Ii56NnUoImJjX3BvcnQiLCRiY19wb3J0LCcxJykuIjoiLnozbSgiYmNfc3JjIiwkc2VsZWN0YiwnMScsMSkuejhiKHo5eSgiNDM1IiksJzcnKSkpLno1YigpLCIyIikpOyBlY2hvIHo3ZigpLno3eSgpLnoxMHEoKTsgJGlpPTA7IGlmKEBpc19kaXIoJHRlbXBkaXIpKXsgaWYoJGRoPUBvcGVuZGlyKCR0ZW1wZGlyKSl7IHdoaWxlKCgkZmlsZT1AcmVhZGRpcigkZGgpKSE9PWZhbHNlKXsgaWYoQHByZWdfbWF0Y2goJy9eKGJuZHBydHxiY2tjb24pXC4/W2EtekEtWjAtOV17MzJ9LycsJGZpbGUpKXsgaWYoQGlzc2V0KCRjbGVhbikpeyBAdW5saW5rKCR0ZW1wZGlyLiRmaWxlKTsgfWVsc2V7ICRpaSsrOyB9IH0gfSBAY2xvc2VkaXIoJGRoKTsgfSB9IGlmKCRpaSE9MCkgZWNobyB6M3EoQHN0cnRvdXBwZXIoejl5KCIyNjkiLCRpaSkpLno1eChhcnJheSgiYWN0Ij0+InRvb2xzIiwiZCIsImNsZWFuIj0+IjEiKSx6OGIoejl5KCIyNzAiKSwnNycpKSk7IH0gJHBzY21zZz0nJzsgJHN0YXJ0c2Nhbj0wOyBpZihAaXNzZXQoJHBzY2FuKSYmJHBzY2FuJiYhQGVtcHR5KCRwc2NpcCkmJkBpc19udW1lcmljKCRwc2NwcykmJkBpc19udW1lcmljKCRwc2NwZSkpeyBpZigkcHNjcHM8MHx8JHBzY3BzPjY1NTM1fHwkcHNjcGU8MHx8JHBzY3BlPjY1NTM1KXsgJHBzY21zZz16OXkoIjI4MCIpOyB9IGVsc2UgeyAkc3RhcnRzY2FuPTE7IH0gfSBlY2hvIHozcShhcnJheSh6OXkoIjI4MSIpLHo5eSgiMjc3IikuKCRwc2Ntc2chPScnPyIgOiAiLiRwc2Ntc2c6JycpKSwiNDYiKTsgaWYoIUBpc3NldCgkcHNjaXApKSAkcHNjaXA9JHNhZGRyOyBpZighQGlzc2V0KCRwc2NwcykpICRwc2Nwcz0iMCI7IGlmKCFAaXNzZXQoJHBzY3BlKSkgJHBzY3BlPSI2NTUzNSI7IGVjaG8gejltKDIpLiB6N28oKS4gejdqKCcnLCc0JykuejZzKCkuIHo5bSgnMicpLiB6N2woKS56OXYoInNoZWxsaHVudCIsIjEiKS56OXYoImFjdCIsInRvb2xzIikuejl2KCJkIikuIHo3dSh6NXQoejl5KCIyODIiKSkuejljKHozbSgic2hhY3Rpb24iLGFycmF5KCJ2aWV3Ij0+ejl5KCIyODQiKSwidmlld2FsbCI9Pno5eSgiMjg1IiksIm93biI9Pno5eSgiMjg2IiksIm93bmFsbCI9Pno5eSgiMjg3IikpLCI1IiwxKS4iOiIuejNtKCJzaHJlY3Vyc2l2ZSIsJHJlY19hcnIsIjEiLDEpLno4Yih6OXkoIjQzNiIpLCI3IikpKS4gejd1KHo1dCh6OXkoIjI4MyIpKS56OWMoejV5KCJzaHBhdGgiLCRkLCIwIikpKS4gejlsKCkuIHoxMHEoKS4gejZzKCkuIHo3ZigpLno3aignJywnNDYnKS4gejZzKCkuIHo5bSgnMicpLiB6NXgoYXJyYXkoImFjdCI9PiJ0b29scyIsImQiLCJwc2NhbiI9PiIxIiksejd1KHo1dCh6OXkoIjI3OCIpKS56OWMoejZ1KCJwc2NpcCIsJHBzY2lwLCI0IikuIjoiLno2dSgicHNjcHMiLCRwc2NwcywnMScpLiItIi56NnUoInBzY3BlIiwkcHNjcGUsJzEnKS56OGIoejl5KCIyNzkiKSwnNycpKSkpLiB6MTBxKCkuIHo2cygpLiB6N2YoKS4gejd5KCkuIHoxMHEoKTsgaWYoQGlzc2V0KCRzaGVsbGh1bnQpJiYkc2hlbGxodW50KXsgJGZwYXRocz0kdHBhdGhzPSRzcGF0aHM9JGdsb2I9JHNoZWxscz1hcnJheSgpOyAkdHBhdGg9Jyc7ICR0cGF0aHNbXT0nJzsgaWYoQGlzX251bWVyaWMoJHNocmVjdXJzaXZlKSl7IGZvcigkaT0wOyRpPCRzaHJlY3Vyc2l2ZTskaSsrKXsgJHRwYXRoLj0nKi8nOyAkdHBhdGhzW109JHRwYXRoOyB9IH0gZWxzZSB7ICR0cGF0aHNbXT0nKi8nOyB9IGZvcmVhY2goQGFycmF5X3VuaXF1ZSgkdHBhdGhzKSBhcyAkdHBhdGgpeyAkZnBhdGhzW109JHRwYXRoLiIqLnBocCI7IH0gZm9yZWFjaChAYXJyYXlfdW5pcXVlKCRmcGF0aHMpIGFzICRmcGF0aCl7ICRzcGF0aHNbXT16MWsoJHNocGF0aCkuJGZwYXRoOyB9IHVuc2V0KCRmcGF0aHMpOyB1bnNldCgkdHBhdGhzKTsgZm9yZWFjaCgkc3BhdGhzIGFzICRzcGF0aCl7ICR0Z2xvYj1AZ2xvYigkc3BhdGgpOyBpZihAaXNfYXJyYXkoJHRnbG9iKSYmQGNvdW50KCR0Z2xvYik+MCl7IGZvcmVhY2goJHRnbG9iIGFzICR0ZmlsZSl7IGlmKCFAaW5fYXJyYXkoJHRmaWxlLCRnbG9iKSYmKEByZWFscGF0aCgkdGZpbGUpIT1AcmVhbHBhdGgoX19GSUxFX18pKSkgJGdsb2JbXT0kdGZpbGU7IH0gJGdsb2I9QGFycmF5X3VuaXF1ZSgkZ2xvYik7IH0gfSB1bnNldCgkc3BhdGhzKTsgaWYoQGNvdW50KCRnbG9iKT4wKXsgJHZpZXdhbGw9JHJjb3duPTA7IHN3aXRjaCgkc2hhY3Rpb24peyBjYXNlICd2aWV3JzogJHZpZXdhbGw9JHJjb3duPTA7IGJyZWFrOyBjYXNlICd2aWV3YWxsJzogJHZpZXdhbGw9MTsgJHJjb3duPTA7IGJyZWFrOyBjYXNlICdvd24nOiAkdmlld2FsbD0wOyAkcmNvd249MTsgYnJlYWs7IGNhc2UgJ293bmFsbCc6ICR2aWV3YWxsPSRyY293bj0xOyBicmVhazsgZGVmYXVsdDogJHZpZXdhbGw9JHJjb3duPTA7IGJyZWFrOyB9IGZvcmVhY2goJGdsb2IgYXMgJHRtcCl7IGlmKCgkdHR5cGU9ejJyKCR0bXAsJHZpZXdhbGwsJHJjb3duKSkhPT1mYWxzZSl7ICRzaGVsbHNbJHRtcF09JHR0eXBlOyB9IH0gfSBpZihAY291bnQoJHNoZWxscyk+MCl7IGlmKCgkd3d3ZGlyPXozbigpKSE9PWZhbHNlKXsgJHVybD16OHUoKTsgJHVybF9hPUBwYXJzZV91cmwoJHVybCk7IGlmKEBpc3NldCgkdXJsX2FbImhvc3QiXSkpeyAkc2hlbGxob3N0PSR1cmxfYVsiaG9zdCJdOyB9IH0gJGV4dGVybmFsPTE7IGVjaG8gejNxKHo5eSgiMjg4IiksIjEiKS56OW0oIjIiKS56N3UoejljKHo5eSgiMjkyIiksIjEzIiwiMiIpLno5Yyh6OXkoIjI5MyIpLCIxMyIpLno5Yyh6OXkoIjI5NCIpLCIxMyIpLno5Yyh6OXkoIjI5NSIpLCIxMyIsIjMiKSk7ICR0cj0wOyBmb3JlYWNoKCRzaGVsbHMgYXMgJHNoZWxsPT4kc2hlbGx0eXBlKXsgJHd3d2xpbms9Ii0iOyBpZihAaXNzZXQoJHNoZWxsaG9zdCkmJkBzdHJzdHIoJHNoZWxsLCR3d3dkaXIpIT09ZmFsc2UpeyAkd3d3bGluaz16MTB0KCdodHRwOi8vJy4kc2hlbGxob3N0LicvJy5Ac3Vic3RyKCRzaGVsbCwgQHN0cmxlbigkd3d3ZGlyKSkuJyInLHo5eSgiMjk2IiksIjEiLDEpOyB9IGVjaG8gejd1KHo5Yyh6MmwoJHNoZWxsKSwiMTQiLCIyIikuejljKCRzaGVsbHR5cGUsIjE0IikuejljKCR3d3dsaW5rLCIxNCIpLno5Yyh6MG8oJHNoZWxsLCIxIikuejV4KGFycmF5KCJhY3QiPT4iZiIsImZ0Ij0+InJjb3duIiwiZCI9PnozYSgkc2hlbGwpLCJmIj0+ejJsKCRzaGVsbCkpLHo4Yih6OXkoIjI5NyIpLCIxOCIpLCIxIiksIjE0IiwiMyIpLCgkdHIlMj8nMCc6JzEnKSk7ICR0cisrOyB9IGVjaG8gejEwcSgpOyB9IH0gaWYoJHN0YXJ0c2Nhbil7ICRwc2Nhbj16OGooJHBzY2lwLCRwc2NwcywkcHNjcGUpOyBpZihAIWVtcHR5KCRwc2NhbikpeyBlY2hvIHozcSh6OXkoIjI4OSIpKTsgZWNobyB6NnMoKS56MTB3KHo3dSh6NmwoejV3KCcnLCcxJykuJHBzY2FuLno1cSgpKSksJzInKS56NnMoKTsgfSB9IGVjaG8gejNxKGFycmF5KHo5eSgiMjk4Iiksejl5KCIzMDkiKSksIjQ2Iik7IGVjaG8gejltKDIpLiB6N28oKS4gejdqKCcnLCc0JykuejZzKCkuIHo5bSgnMicpLiB6N2woKS56OXYoImNwZmluZCIsIjEiKS56OXYoImFjdCIsInRvb2xzIikuejl2KCJkIikuIHo3dSh6NXQoejl5KCIyOTkiKSkuejljKHo1eSgiY3Bob3N0IiwiMTI3LjAuMC4xIiwiNSIpLiI6Ii56NXkoImNwdXNlciIsInJvb3QiLCI0IikuIjoiLnozbSgiY3BzZXJ2aWNlIiwkYXZhaWxhYmxlX2FyciwiMSIsMSkpKS4gejd1KHo1dCh6OXkoIjMwMCIpKS56OWMoejV5KCJjcGZpbGVzIiwiKmNvbmYqLnBocDsqZGIqLnBocDsiLCI1IikuIjoiLnozbSgiY3BtZXRob2QiLCRhcnJfbWV0aG9kLCI0IiwxKS4iOiIuejNtKCJjcHJlY3Vyc2l2ZSIsJHJlY19hcnIsIjEiLDEpKSkuIHo3dSh6NXQoejl5KCIzMDEiKSkuejljKHo1eSgiY3BkaXIiLCRkLCIwIikpKS4gKCRibWFpbD96N3UoejV0KHo5eSgiMzAyIikpLno5Yyh6NXkoImNwX2VtYWlsIiwiIiwnMicpLno5ZigiY3BfbG9nIikpKTonJykuIHo3dSh6NXQoejl4KCkpLiB6OWMoejhiKHo5eSgiMzA3IiksIjciKS56OXgoKS56NXUoImNwcGFzc2ZpbGUiLHo5eSgiMzAzIiksImNwcGFzc2ZpbGUiKSkpLiB6OWwoKS4gejEwcSgpLiB6NnMoKS4gejdmKCkuejdqKCcnLCc0NicpLiB6NnMoKS4gejltKCcyJykuIHo3bCgpLno5digiaW5qZWN0IiwiMSIpLno5digiYWN0IiwidG9vbHMiKS56OXYoImQiKS4gejd1KHo1dCh6OXkoIjMxMCIpKS56OWMoejV5KCJpbmpmaWxlcyIsIiouaHRtbDtpbmRleC5waHA7IiwiNSIpLiI6Ii56M20oImluam1ldGhvZCIsJGlual9tZXRob2QsIjQiLDEpLiI6Ii56M20oImluanJlY3Vyc2l2ZSIsJHJlY19hcnIsIjEiLDEpKSkuIHo3dSh6NXQoejl5KCIzMTEiKSkuejljKHo1eSgiaW5qZGlyIiwkZCwiMCIpKSkuIHo5ZCh6NXQoejl5KCIzMTIiKSkuejljKHo1dygiaW5qY29kZSIsIjYiKS4oQGlzc2V0KCRpbmpjb2RlKT9AaHRtbHNwZWNpYWxjaGFycygkaW5qY29kZSk6JycpLno1cSgpKSkuIHo3dSh6NXQoejl4KCkpLiB6OWMoejhiKHo5eSgiMzEzIiksIjciKSkpLiB6OWwoKS4gejEwcSgpLiB6NnMoKS4gejdmKCkuIHo3eSgpLiB6MTBxKCk7IGlmKEBpc3NldCgkaW5qZWN0KSYmJGluamVjdCl7ICRmcGF0aHM9JHRwYXRocz0kc3BhdGhzPSRnbG9iPWFycmF5KCk7ICRmYXJyPUBleHBsb2RlKCI7IiwkaW5qZmlsZXMpOyAkdHBhdGg9Jyc7ICR0cGF0aHNbXT0nJzsgaWYoQGlzX251bWVyaWMoJGluanJlY3Vyc2l2ZSkpeyBmb3IoJGk9MDskaTwkaW5qcmVjdXJzaXZlOyRpKyspeyAkdHBhdGguPScqLyc7ICR0cGF0aHNbXT0kdHBhdGg7IH0gfSBlbHNlIHsgJHRwYXRoc1tdPScqLyc7IH0gZm9yZWFjaChAYXJyYXlfdW5pcXVlKCR0cGF0aHMpIGFzICR0cGF0aCl7IGZvcmVhY2goQGFycmF5X3VuaXF1ZSgkZmFycikgYXMgJGZwYXRoKXsgJGZwYXRoPUB0cmltKCRmcGF0aCk7IGlmKCFAZW1wdHkoJGZwYXRoKSl7ICRmcGF0aHNbXT0kdHBhdGguJGZwYXRoOyB9IH0gfSBmb3JlYWNoKEBhcnJheV91bmlxdWUoJGZwYXRocykgYXMgJGZwYXRoKXsgJHNwYXRoc1tdPXoxaygkaW5qZGlyKS4kZnBhdGg7IH0gdW5zZXQoJGZwYXRocyk7IHVuc2V0KCR0cGF0aHMpOyBmb3JlYWNoKCRzcGF0aHMgYXMgJHNwYXRoKXsgJHRnbG9iPUBnbG9iKCRzcGF0aCk7IGlmKEBjb3VudCgkdGdsb2IpPjApeyBmb3JlYWNoKCR0Z2xvYiBhcyAkdGZpbGUpeyBpZighQGluX2FycmF5KCR0ZmlsZSwkZ2xvYikpICRnbG9iW109JHRmaWxlOyB9ICRnbG9iPUBhcnJheV91bmlxdWUoJGdsb2IpOyB9IH0gdW5zZXQoJHNwYXRocyk7IGlmKEBjb3VudCgkZ2xvYik+MCl7ICRpPTA7IGZvcmVhY2goJGdsb2IgYXMgJGZpbGUpeyBpZih6M3YoJGluamNvZGUsJGluam1ldGhvZCwkZmlsZSkpeyBpZigkaT09MCl7IGVjaG8gejNxKHo5eSgiMzE0IikpLno2cygpLno5bSgiMiIpLno2ZigpLno2cSgpLno1dygnJywnMScpOyB6NW8oKTsgfSBlY2hvICRmaWxlLiJcclxuIjsgJGkrKzsgfSB9IGlmKCRpPjApIGVjaG8gejVxKCkuejdmKCkuejd5KCkuejEwcSgpLno2cygpOyB9IH0gaWYoQGlzc2V0KCRjcGZpbmQpJiYkY3BmaW5kJiYoIUBlbXB0eSgkY3B1c2VyKXx8JGNwbWV0aG9kPT0iY3BwYXNzd2QiKSl7IGVjaG8gejNxKHo5eSgiMzA4IikpLno2cygpOyBlY2hvIHo5bSgnMicpLno3bygpLno2cSgpLno1dygiIiwiMSIpOyB6NW8oKTsgJGZwYXRocz0kdHBhdGhzPSRzcGF0aHM9JGdsb2I9YXJyYXkoKTsgJGZhcnI9QGV4cGxvZGUoIjsiLCRjcGZpbGVzKTsgJHRwYXRoPScnOyAkdHBhdGhzW109Jyc7IGlmKEBpc19udW1lcmljKCRjcHJlY3Vyc2l2ZSkpeyBmb3IoJGk9MDskaTwkY3ByZWN1cnNpdmU7JGkrKyl7ICR0cGF0aC49JyovJzsgJHRwYXRoc1tdPSR0cGF0aDsgfSB9IGVsc2UgeyAkdHBhdGhzW109JyovJzsgfSBmb3JlYWNoKEBhcnJheV91bmlxdWUoJHRwYXRocykgYXMgJHRwYXRoKXsgZm9yZWFjaChAYXJyYXlfdW5pcXVlKCRmYXJyKSBhcyAkZnBhdGgpeyAkZnBhdGg9QHRyaW0oJGZwYXRoKTsgaWYoIUBlbXB0eSgkZnBhdGgpKXsgJGZwYXRoc1tdPSR0cGF0aC4kZnBhdGg7IH0gfSB9IHN3aXRjaCgkY3BtZXRob2QpeyBjYXNlICdjcGRpcic6ICRzcGF0aHNbJGNwdXNlcl09YXJyYXkoKTsgZm9yZWFjaChAYXJyYXlfdW5pcXVlKCRmcGF0aHMpIGFzICRmcGF0aCl7ICRzcGF0aHNbJGNwdXNlcl1bXT16MWsoJGNwZGlyKS4kZnBhdGg7IH0gYnJlYWs7IGNhc2UgJ2NwZG9jcm9vdCc6ICRzcGF0aHNbJGNwdXNlcl09YXJyYXkoKTsgZm9yZWFjaChAYXJyYXlfdW5pcXVlKCRmcGF0aHMpIGFzICRmcGF0aCl7ICRzcGF0aHNbJGNwdXNlcl1bXT16MWsoJHd3d2RpcikuJGZwYXRoOyB9IGJyZWFrOyBjYXNlICdjcHBhc3N3ZCc6ICR1YXJyPXo4bCgxKTsgaWYoQGNvdW50KCR1YXJyKT4wKXsgZm9yZWFjaCgkdWFyciBhcyAkdWs9PiRhcnIpeyBpZigkYXJyWzFdIT0nLycmJiFAcHJlZ19tYXRjaCgnI14oL3Zhci9ydW58L3Zhci9sb2d8L3Zhci9jYWNoZXwvdmFyL21haWx8L3Zhci9jYWNoZXwvdmFyL2JhY2t1cHwvdXNyL2dhbWVzfC9saWJ8L3Zhci9saWJ8L3Zhci90bXB8L3RtcHwvZGV2fC9wcm9jfC9zYmlufC91c3Ivc2JpbnwvdXNyL2xvY2FsL3NiaW58L2JpbnwvdXNyL2JpbnwvdXNyL2xvY2FsL2JpbikjJywkYXJyWzFdKSYmejRqKCRhcnJbMV0pKXsgJHNwYXRoc1skYXJyWzBdXT1hcnJheSgpOyBmb3JlYWNoKEBhcnJheV91bmlxdWUoJGZwYXRocykgYXMgJGZwYXRoKXsgJHNwYXRoc1skYXJyWzBdXVtdPXoxaygkYXJyWzFdKS4kZnBhdGg7IH0gfSB9IH0gdW5zZXQoJHVhcnIpOyBicmVhazsgZGVmYXVsdDogYnJlYWs7IH0gdW5zZXQoJGZwYXRocyk7IHVuc2V0KCR0cGF0aHMpOyBmb3JlYWNoKCRzcGF0aHMgYXMgJHVzZXI9PiRzcGF0aF9hcnIpeyBmb3JlYWNoKCRzcGF0aF9hcnIgYXMgJHNwYXRoKXsgJHRnbG9iPUBnbG9iKCRzcGF0aCk7IGlmKEBpc19hcnJheSgkdGdsb2IpJiZAY291bnQoJHRnbG9iKT4wKXsgaWYoIUBpc3NldCgkZ2xvYlskdXNlcl0pKSAkZ2xvYlskdXNlcl09YXJyYXkoKTsgZm9yZWFjaCgkdGdsb2IgYXMgJHRmaWxlKXsgaWYoIUBpbl9hcnJheSgkdGZpbGUsJGdsb2JbJHVzZXJdKSkgJGdsb2JbJHVzZXJdW109JHRmaWxlOyB9ICRnbG9iWyR1c2VyXT1AYXJyYXlfdW5pcXVlKCRnbG9iWyR1c2VyXSk7IH0gfSB9IHVuc2V0KCRzcGF0aHMpOyBpZihAY291bnQoJGdsb2IpPjApeyBmb3JlYWNoKCRnbG9iIGFzICR1c2VyPT4kZmlsZV9hcnIpeyBpZihAY291bnQoJGZpbGVfYXJyKT4wKXsgZm9yZWFjaCgkZmlsZV9hcnIgYXMgJHRmaWxlKXsgejJwKCR0ZmlsZSwkdXNlcik7IH0gfSB9IH0gJGxvZz0nJzsgJGZvdW5kPTA7IGlmKEBpc3NldCgkcGFzc2FycmF5KSYmQGNvdW50KCRwYXNzYXJyYXkpPjApeyBmb3JlYWNoKCRwYXNzYXJyYXkgYXMgJHVzZXI9PiRwYXNzd29yZHMpeyBpZihAY291bnQoJHBhc3N3b3Jkcyk+MCl7IGZvcmVhY2goJHBhc3N3b3JkcyBhcyAkcGFzcyl7IGlmKEBpc3NldCgkY3BwYXNzZmlsZSkmJiRjcHBhc3NmaWxlKXsgZWNobyAiJHVzZXIgJHBhc3NcclxuIjsgfSBlbHNlIHsgaWYoIUBpc3NldCgkc3RvcCkpICRzdG9wPTA7IGlmKCRjcHNlcnZpY2U9PSJGVFAiJiYkYmZ0cCYmISRzdG9wKXsgJHRlc3Q9ejNsKCRjcGhvc3QsJHVzZXIsJHBhc3MsMjEsMyk7IGlmKCR0ZXN0PT0iZmFpbGVkIil7ICRzdG9wPTE7IH0gZWxzZWlmKCR0ZXN0PT0idmFsaWQiKXsgJGZvdW5kKys7ICR0bXAgPSAiaG9zdDogJGNwaG9zdFxyXG4iOyAkdG1wIC49ICJ1c2VyOiAkdXNlclxyXG4iOyAkdG1wIC49ICJwYXNzOiAkcGFzc1xyXG4iOyAkdG1wIC49ICJzZXJ2aWNlOiAkY3BzZXJ2aWNlXHJcblxyXG4iOyBlY2hvICR0bXA7ICRsb2cuPSR0bXA7IH0gfSBlbHNlIHsgaWYoejNoKCRjcGhvc3QsJHVzZXIsJHBhc3MsJycsJGNwc2VydmljZSk9PSJ2YWxpZCIpeyAkZm91bmQrKzsgJHRtcCA9ICJob3N0OiAkY3Bob3N0XHJcbiI7ICR0bXAgLj0gInVzZXI6ICR1c2VyXHJcbiI7ICR0bXAgLj0gInBhc3M6ICRwYXNzXHJcbiI7ICR0bXAgLj0gInNlcnZpY2U6ICRjcHNlcnZpY2VcclxuXHJcbiI7IGVjaG8gJHRtcDsgJGxvZy49JHRtcDsgfSB9IH0gfSB9IH0gfSBpZigkY3BfbG9nPT0iMSImJiRmb3VuZD4wJiYkYm1haWwpeyBAbWFpbCgkY3BfZW1haWwsIiRjcHNlcnZpY2V8JGNwaG9zdCIsJGxvZyk7IH0gZWNobyB6NXEoKS56N3koKS56N2YoKS56MTBxKCkuejZzKCk7IH0gJGFycl9jZmdzPWFycmF5KCcnPT4iU2VsZWN0IFNvZnR3YXJlIiwiam9vbWxhIj0+Ikpvb21sYSIsIm9wZW5jYXJ0Ij0+Ik9wZW5jYXJ0Iiwib3NjIj0+Ik9zY29tbWVyY2UiLCJwaW5uYWNsZWNhcnQiPT4iUGlubmFjbGVjYXJ0Iiwic3F1aXJyZWxjYXJ0Ij0+IlNxdWlycmVsY2FydCIsIndvcmRwcmVzcyI9PiJXb3JkcHJlc3MiLCJ4Y2FydCI9PiJYLWNhcnQiLCJ6ZW5jYXJ0Ij0+Ilplbi1jYXJ0IiwiYWxsIj0+IkFsbCBvZiBhYm92ZSIpOyBpZihAaXNzZXQoJHNxbGZpbmQpJiYkc3FsZmluZCYmQGlzc2V0KCRkdmRlZmluZWQpJiYhQGVtcHR5KCRkdmRlZmluZWQpJiZAaXNzZXQoJGR2cGFzc3dkKSYmIUBlbXB0eSgkZHZwYXNzd2QpKXsgJGR2Y2Zncz0iblZya0EwbUZSRFlDSHVuWjNjTjltTHo1cE5TaHNtMHI4TDRkcm1iMEZUTVNQbmZJcUE0aitVcTZnZkxZdWxkcnRzTU1OVGdLNVVvWjNWaVNaNWpuZTd0ZUZ5bmdNc3RkTnFqUkJyMU5TRFpnT25oa1QwNUhtMjVpa09hb29FdmE5V2M5NjVWZGNiVVlwbnFzOHhxNVZEYUtlQnBSa1MxVkF4YUxUS09yODk5cGZNMXBtL3Y3UmRjdGs0SDBBNGJYU3huNUx1cDVIQWRqamwxRXpvY1FYYXI2V3NZdW16aURZRC9FT0JnbUJpTlZsLytrR3dmUHM2NHZRZnpWdXR0ZmNZN3RpenplblBtTUpnRThCR2oyQVp1WFd0eG5sM1VPNENBUEJPZHR3a3J2K1B3TXNZaGZma0V5aDE3ZUMzQnVmcnFEa1dBUWhFQ1VoczhkbnAxUjBnNS9CeXVKTWViVE9lOXF3cEREaDVnb1hnWWh0alR0aFNFdTRYU2hCZEtOSGcrdmUvNC9RaGlKYjBoU3E4ZXpPWkhDbVcxUFovMGd5cnl3WngyYXVjR0plQ1p4M214bmZqaUtBR0hjbkphaUZEVjA5ZFhaUnV2ZkdlNlNHaVBxODRiRXJaVGhESE9SUnM1Rno4Tml2VXhqOW0rV1c3UVJ0YWs4RU9VaUljVGxiUElQODVYSVdvYjIxVjN2ODNmQUFPQXI5b0pVSko4Z3BkZnFPTEl5SnlmYTVLdmFzMk8xREhudnFvUzZHc0VHR3JmbmxYSG9UZWl3NDduR2VSNFNvQzdCRlB1MGhNM2huQzRRUFI4anJJN0Q1eFlZTzN3eks0dWhKVTRmNU90OEd1cU5Uc2pFMUxUeXVCcUpiZVk0STV0Y21RTHNGWW1xeUdFUVhQNE5ERXhIN09sQk1LU2xwVmtNRWVMdG91V0RNZGVBaGlZaXlXTTIwankyVkppNXhpUWV2bEJmRy9icmlLRnhtQ3dOZG1GMkpleHhMNnFsUkduK1JkeDlWWUdGb3QycnhSN3kySlRlVml0ZW4vUU5jaTFMNHhBV29IYVQxRU1DZDB6eFAvWllSY0Jndnp0NDMyNk5HMVdCc3BOWTZTZVNuYkJRdlBvTWNybk9qWEhyQVJ5MU55ekFVSEdodFdlQm9GQWxTaHVTQTJjNGNxR0VRVHJzMVBQS3hwVGJCYWN1TkxNbW0rd3ZNTnZCaGR0MkhUZlpUamRZeUVuMHFFZk9WUFRXYjhMV1BLV3hBL3pJSjVPWWVWSDY5ZzBiNENQTmtuSGVzNHlOWTZEN1J4SzkwNUVZMERNTUkxaDhIWTFuN3I3WnZXZDg0TzNWQmY5MDR2UVVJTFJBL3ZoeVJiN29LVUh0dHlDcnVab0c0bGdBUUdnNzhQSGFZdWd0YzlTRnU3UHE0MUNuIjsgJGRkY2Zncz16cmM0Ojp6ZGVjKEBtZDUoJGR2cGFzc3dkKSwgQGJhc2U2NF9kZWNvZGUoJGR2Y2ZncykpOyBpZigkZHZkZWZpbmVkPT0iYWxsIil7ICRhcnJfbWFzcz1hcnJheSgpOyAkYXJyX21hc3NfcGF0aHM9YXJyYXkoKTsgZm9yZWFjaCgkYXJyX2NmZ3MgYXMgJHRjZmc9PiR0c29mdCl7IGlmKCR0Y2ZnIT0nJyYmJHRjZmchPSJhbGwiKXsgJHRkZGNmZz1AZXhwbG9kZSgifCIuJHRjZmcuInwiLCRkZGNmZ3MpOyAkdGRkY2ZnPUBzdWJzdHIoJHRkZGNmZ1sxXSwwLEBzdHJwb3MoJHRkZGNmZ1sxXSwifCIpKTsgQGxpc3QoJHRkdnVzZXIsJHRkdHVzZXIsJHRkdnBhc3MsJHRkdHBhc3MsJHRkdmJhc2UsJHRkdGJhc2UsJHRkdmhvc3QsJHRkdGhvc3QsJHRkdmZpbGVzLCk9QGV4cGxvZGUoIiwiLCR0ZGRjZmcpOyAkYXJyX21hc3NbJHRzb2Z0XT1hcnJheSgkdGR2dXNlciwkdGR0dXNlciwkdGR2cGFzcywkdGR0cGFzcywkdGR2YmFzZSwkdGR0YmFzZSwkdGR2aG9zdCwkdGR0aG9zdCk7ICR0ZWZpbGVzPUBleHBsb2RlKCI7IiwkdGR2ZmlsZXMpOyBmb3JlYWNoKCR0ZWZpbGVzIGFzICR0ZWZpbGUpeyAkdGVmaWxlPUB0cmltKCR0ZWZpbGUpOyBpZighQGVtcHR5KCR0ZWZpbGUpJiYhQGluX2FycmF5KCR0ZWZpbGUsJGFycl9tYXNzX3BhdGhzKSkgJGFycl9tYXNzX3BhdGhzW109JHRlZmlsZTsgfSB9IH0gfSBlbHNlIHsgaWYoQHN0cnBvcygkZGRjZmdzLCJ8Ii4kZHZkZWZpbmVkLiJ8IikhPT1mYWxzZSl7ICRkZGNmZz1AZXhwbG9kZSgifCIuJGR2ZGVmaW5lZC4ifCIsJGRkY2Zncyk7ICRkZGNmZz1Ac3Vic3RyKCRkZGNmZ1sxXSwwLEBzdHJwb3MoJGRkY2ZnWzFdLCJ8IikpOyBAbGlzdCgkZHZ1c2VyLCRkdHVzZXIsJGR2cGFzcywkZHRwYXNzLCRkdmJhc2UsJGR0YmFzZSwkZHZob3N0LCRkdGhvc3QsJGR2ZmlsZXMsKT1AZXhwbG9kZSgiLCIsJGRkY2ZnKTsgfSB9IH0gZWNobyB6M3EoYXJyYXkoejl5KCIzMTUiKSx6OXkoIjMzNyIpKSwnNDYnKTsgZWNobyB6OW0oMikuIHo3bygpLiB6N2ooJycsJzQnKS4gejZzKCkuIHo5bSgnMicpLiB6N2woKS56OXYoInNxbGZpbmQiLCIxIikuejl2KCJhY3QiLCJ0b29scyIpLno5digiZCIpLiB6N3UoejV0KHo5eSgiMzE2IikpLno5Yyh6NXkoImR2dXNlciIsIiIsIjUiKS4iOiIuejNtKCJkdHVzZXIiLCRhcnJfdmFycywiNCIsMSkuejl4KCkuejl5KCIzMjgiKSkpLiB6N3UoejV0KHo5eSgiMzE3IikpLno5Yyh6NXkoImR2cGFzcyIsIiIsIjUiKS4iOiIuejNtKCJkdHBhc3MiLCRhcnJfdmFycywiNCIsMSkuejl4KCkuejl5KCIzMjgiKSkpLiB6N3UoejV0KHo5eSgiMzE4IikpLno5Yyh6NXkoImR2YmFzZSIsIiIsIjUiKS4iOiIuejNtKCJkdGJhc2UiLCRhcnJfdmFycywiNCIsMSkuejl4KCkuejl5KCIzMjkiKSkpLiB6N3UoejV0KHo5eSgiMzE5IikpLno5Yyh6NXkoImR2aG9zdCIsIiIsIjUiKS4iOiIuejNtKCJkdGhvc3QiLCRhcnJfdmFycywiNCIsMSkuejl4KCkuejl5KCIzMjkiKSkpLiB6N3UoejV0KHo5eSgiMzIwIikpLno5Yyh6M20oImR2ZGVmaW5lZCIsJGFycl9jZmdzLCI1IiwxKS4iOiIuejV5KCJkdnBhc3N3ZCIsIiIsIjQiKS56OXgoKS4iYW50aS1sYW1lcnogOikiKSkuIHo3dSh6NXQoejl5KCIzMjEiKSkuejljKHo1eSgiZHZmaWxlcyIsIiIsIjUiKS4iOiIuejNtKCJkdmZpbmQiLCRhcnJfZHZmaW5kLCI0IiwxKS4iOiIuejNtKCJkdHJlY3Vyc2l2ZSIsJHJlY19hcnIsIjEiLDEpKSkuIHo3dSh6NXQoejl5KCIzMjIiKSkuejljKHo1eSgiZHZkaXIiLCRkLCIwIikpKS4gKCRibWFpbD96N3UoejV0KHo5eSgiMzAyIikpLno5Yyh6NXkoImR2X2VtYWlsIiwiIiwnMicpLno5ZigiZHZfbG9nIikpKTonJykuIHo3dSh6NXQoejl4KCkpLiB6OWMoejhiKHo5eSgiMzIzIiksIjciKS56OXgoKS56NXUoImR2c3FsdGVzdCIsejl5KCIzMjQiKSwiZHZzcWx0ZXN0IikpKS4gejlsKCkuIHoxMHEoKS4gejZzKCkuIHo3ZigpLno3aignJywnNDYnKS4gejZzKCkuIHo5bSgnMicpLiB6N2woKS56OXYoInN0YXJ0YnJ1dGUiLCIxIikuejl2KCJhY3QiLCJ0b29scyIpLno5digiZCIpLiB6N3UoejV0KHo5eSgiMzM4IikpLno5Yyh6NXkoImJyaCIsIiIsIjQiKS4iOiIuejV5KCJicnAiLCIiLCI2IikuIjoiLnozbSgiYnNlcnZpY2UiLCRhdmFpbGFibGVfYXJyLCI0IiwxKSkpLiB6N3UoejV0KHo5eSgiMzM5IikpLiB6OWMoejV5KCJicnUiLCIiLCc0JykuIjoiLno1eSgiYnJkYiIsIiIsJzUnKSkpLiB6N3UoejV0KHo5eSgiMzQwIikpLiB6OWMoejlnKCJ3b3JkbGlzdCIsJzInKSkpLiB6N3UoejV0KHo5eSgiMzQxIikpLiB6OWMoejNtKCJicm0iLCRicnV0ZV90eXBlLCcyJywxKSkpLiB6N3UoejV0KHo5eSgiMzQyIikpLiB6OWMoejV1KCJicnRlc3QxIiwidXNlcjpyZXN1IiwiYnJ0ZXN0MSIpLno5eCgxKS56NXUoImJydGVzdDIiLCJ1c2VyOnVzZXIxIiwiYnJ0ZXN0MiIpLno5eCgxKS56NXUoImJydGVzdDMiLCJ1c2VyOnVzZXIxMjMiLCJicnRlc3QzIikpKS4gejd1KHo1dCh6OXgoKSkuejljKHo1dSgiYnJ0ZXN0NCIsIlRyYW5zZm9ybSBwYXNzd29yZCB0byBwQDU1dzByZCIsImJydGVzdDQiKSkpLiAoJGJtYWlsP3o3dSh6NXQoejl5KCIzMDIiKSkuejljKHo2dSgiYnJ1dGVfZW1haWwiLCRicnV0ZV9lbWFpbCwnMicpLno5ZigiYnJ1dGVfbG9nIikpKTonJykuIHo3dSh6NXQoejl4KCkpLiB6OWMoejhiKHo5eSgiMzQ2IiksIjciKSkpLiB6OWwoKS4gejEwcSgpLiB6NnMoKS4gejdmKCkuIHo3eSgpLiB6MTBxKCk7IGlmKEBpc3NldCgkc3RhcnRicnV0ZSkmJiRzdGFydGJydXRlKXsgJHN0b3A9MDsgZWNobyB6M3Eoejl5KCIzNDciLCRic2VydmljZSwxKSkuejZzKCk7IGVjaG8gejltKCcyJykuejdvKCkuejZxKCkuejV3KCIiLCIxIik7IHo1bygpOyAkY29uPXRydWU7ICRzaG93PTA7ICRsb2c9IiI7IGlmKCRic2VydmljZT09IkZUUCIpeyAkYnJwPShAcHJlZ19tYXRjaCgiL15bMC05XXsxLDV9JC8iLCRicnApPyRicnA6IjIxIik7IH1lbHNlaWYoJGJzZXJ2aWNlPT0iTXlTUUwiKXsgJGJycD0oQHByZWdfbWF0Y2goIi9eWzAtOV17MSw1fSQvIiwkYnJwKT8kYnJwOiIzMzA2Iik7IH0gaWYoJGJybT09IjEifHwkYnJtPT0iMyIpeyAkZGljdGlvbmFyeT1hcnJheSgpOyAkbGlzdD1AZm9wZW4oJF9GSUxFU1snd29yZGxpc3QnXVsndG1wX25hbWUnXSwncicpOyBpZihAaXNfcmVzb3VyY2UoJGxpc3QpKXsgd2hpbGUoIUBmZW9mKCRsaXN0KSl7ICRkaWN0aW9uYXJ5W109QHRyaW0oQGZnZXRzKCRsaXN0KSk7IH0gQGZjbG9zZSgkbGlzdCk7IH0gJGRpY3Rpb25hcnk9QGFycmF5X3VuaXF1ZSgkZGljdGlvbmFyeSk7IH0gaWYoJGJzZXJ2aWNlPT0iRlRQIiYmJGJmdHApeyAkdGltZT0zOyAkc3VjY2Vzcz0wOyAkY291bnQ9MDsgaWYoIUBlbXB0eSgkYnJ1KSYmISRzdG9wKXsgJHRlc3Q9ejJmKCRicmgsJGJycCwkdGltZSwkYnJ0ZXN0MSwkYnJ0ZXN0MiwkYnJ0ZXN0MywkYnJ0ZXN0NCwkYnJ1KTsgaWYoISR0ZXN0KSAkc3RvcD0xOyB6MmcoJHRlc3RbMF0sJHRlc3RbMV0sJHRlc3RbMl0pOyB9IGlmKCgkYnJtPT0iMiJ8fCRicm09PSIzIikmJiEkc3RvcCl7IGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKXsgJHRlc3Q9ejJmKCRicmgsJGJycCwkdGltZSwkYnJ0ZXN0MSwkYnJ0ZXN0MiwkYnJ0ZXN0MywkYnJ0ZXN0NCwkdXNlcik7IGlmKCEkdGVzdCl7ICRzdG9wPTE7IGJyZWFrOyB9IHoyZygkdGVzdFswXSwkdGVzdFsxXSwkdGVzdFsyXSk7IGlmKCRicm09PSIzIil7IGZvcmVhY2goJGRpY3Rpb25hcnkgYXMgJHBhc3N3ZCl7ICR0ZXN0PXoyZigkYnJoLCRicnAsJHRpbWUsJGJydGVzdDEsJGJydGVzdDIsJGJydGVzdDMsJGJydGVzdDQsJHVzZXIsJHBhc3N3ZCk7IHoyZygkdGVzdFswXSwkdGVzdFsxXSwkdGVzdFsyXSk7IH0gfSB9IH1lbHNlIGlmKCRicm09PSIxIiYmIUBlbXB0eSgkYnJ1KSYmISRzdG9wKXsgZm9yZWFjaCgkZGljdGlvbmFyeSBhcyAkcGFzc3dkKXsgJHRlc3Q9ejJmKCRicmgsJGJycCwkdGltZSwkYnJ0ZXN0MSwkYnJ0ZXN0MiwkYnJ0ZXN0MywkYnJ0ZXN0NCwkYnJ1LCRwYXNzd2QpOyBpZighJHRlc3QpeyAkc3RvcD0xOyBicmVhazsgfSB6MmcoJHRlc3RbMF0sJHRlc3RbMV0sJHRlc3RbMl0pOyB9IH0gZWNobyAiXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiI7IGVjaG8gejl5KCI0MjYiLCRjb3VudCkuIlxyXG4iOyBlY2hvIHo5eSgiNDI3Iiwkc3VjY2VzcykuIlxyXG4iOyB9ZWxzZWlmKCRibXlzcWx8fCRibXNzcWx8fCRib3JhY2xlfHwkYnBvc3RncmVzKXsgJHN1Y2Nlc3M9MDsgJGNvdW50PTA7IGlmKCFAZW1wdHkoJGJydSkpeyAkdGVzdD16MnMoJGJyaCwkYnJwLCRic2VydmljZSwkYnJ0ZXN0MSwkYnJ0ZXN0MiwkYnJ0ZXN0MywkYnJ0ZXN0NCwkYnJ1LE5VTEwsKCFAZW1wdHkoJGJyZGIpPyRicmRiOicnKSk7IHoyZygkdGVzdFswXSwkdGVzdFsxXSwkdGVzdFsyXSk7IH0gaWYoJGJybT09IjIifHwkYnJtPT0iMyIpeyBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcil7ICR0ZXN0PXoycygkYnJoLCRicnAsJGJzZXJ2aWNlLCRicnRlc3QxLCRicnRlc3QyLCRicnRlc3QzLCRicnRlc3Q0LCR1c2VyLE5VTEwsKCFAZW1wdHkoJGJyZGIpPyRicmRiOicnKSk7IHoyZygkdGVzdFswXSwkdGVzdFsxXSwkdGVzdFsyXSk7IGlmKCRicm09PSIzIil7IGZvcmVhY2goJGRpY3Rpb25hcnkgYXMgJHBhc3N3ZCl7ICR0ZXN0PXoycygkYnJoLCRicnAsJGJzZXJ2aWNlLCRicnRlc3QxLCRicnRlc3QyLCRicnRlc3QzLCRicnRlc3Q0LCR1c2VyLCRwYXNzd2QsKCFAZW1wdHkoJGJyZGIpPyRicmRiOicnKSk7IHoyZygkdGVzdFswXSwkdGVzdFsxXSwkdGVzdFsyXSk7IH0gfSB9IH1lbHNlIGlmKCRicm09PSIxIiYmIUBlbXB0eSgkYnJ1KSl7IGZvcmVhY2goJGRpY3Rpb25hcnkgYXMgJHBhc3N3ZCl7ICR0ZXN0PXoycygkYnJoLCRicnAsJGJzZXJ2aWNlLCRicnRlc3QxLCRicnRlc3QyLCRicnRlc3QzLCRicnRlc3Q0LCRicnUsJHBhc3N3ZCwoIUBlbXB0eSgkYnJkYik/JGJyZGI6JycpKTsgejJnKCR0ZXN0WzBdLCR0ZXN0WzFdLCR0ZXN0WzJdKTsgfSB9IGVjaG8gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4iOyBlY2hvIHo5eSgiNDI2IiwkY291bnQpLiJcclxuIjsgZWNobyB6OXkoIjQyNyIsJHN1Y2Nlc3MpLiJcclxuIjsgZWNobyAkbG9nOyB9IGlmKCRicnV0ZV9sb2c9PSIxIiYmJHN1Y2Nlc3M+MCl7IEBtYWlsKCRicnV0ZV9lbWFpbCwiJGJzZXJ2aWNlfCRicmg6JGJycCIsJGxvZyk7IH0gZWNobyB6NXEoKS56N3koKS56N2YoKS56MTBxKCkuejZzKCk7IH0gaWYoQGlzc2V0KCRzcWxmaW5kKSYmJHNxbGZpbmQmJiFAZW1wdHkoJGR2dXNlcikmJiFAZW1wdHkoJGR2cGFzcykpeyBlY2hvIHozcSh6OXkoIjMzMCIpKS56NnMoKTsgZWNobyB6OW0oJzInKS56N28oKS56NnEoKS56NXcoIiIsIjEiKTsgejVvKCk7ICRmcGF0aHM9JHRwYXRocz0kZHBhdGhzPSRzcGF0aHM9JGdsb2I9YXJyYXkoKTsgJGZhcnI9QGV4cGxvZGUoIjsiLCRkdmZpbGVzKTsgJHRwYXRoPScnOyAkdHBhdGhzW109Jyc7IGlmKEBpc19udW1lcmljKCRkdHJlY3Vyc2l2ZSkpeyBmb3IoJGk9MDskaTwkZHRyZWN1cnNpdmU7JGkrKyl7ICR0cGF0aC49JyovJzsgJHRwYXRoc1tdPSR0cGF0aDsgfSB9IGVsc2UgeyAkdHBhdGhzW109JyovJzsgfSBpZigkZHZkZWZpbmVkPT0iYWxsIiYmQGlzc2V0KCRhcnJfbWFzc19wYXRocykmJkBpc19hcnJheSgkYXJyX21hc3NfcGF0aHMpJiZAY291bnQoJGFycl9tYXNzX3BhdGhzKT4wKXsgJGZhcnI9JGFycl9tYXNzX3BhdGhzOyB9IGZvcmVhY2goQGFycmF5X3VuaXF1ZSgkdHBhdGhzKSBhcyAkdHBhdGgpeyBmb3JlYWNoKEBhcnJheV91bmlxdWUoJGZhcnIpIGFzICRmcGF0aCl7ICRmcGF0aD1AdHJpbSgkZnBhdGgpOyBpZighQGVtcHR5KCRmcGF0aCkpeyAkZnBhdGhzW109JHRwYXRoLiRmcGF0aDsgfSB9IH0gc3dpdGNoKCRkdmZpbmQpeyBjYXNlICdkdmRpcic6ICRkcGF0aHNbXT16MWsoJGR2ZGlyKTsgYnJlYWs7IGNhc2UgJ2RvY3Jvb3QnOiAkZHBhdGhzW109ejFrKCR3d3dkaXIpOyBicmVhazsgY2FzZSAncGFzc3dkJzogJHVhcnI9ejhsKDEpOyBpZihAY291bnQoJHVhcnIpPjApeyBmb3JlYWNoKCR1YXJyIGFzICR1az0+JGFycil7IGlmKCFAaW5fYXJyYXkoJGFyclsxXSwkZHBhdGhzKSYmJGFyclsxXSE9Jy8nJiYhQHByZWdfbWF0Y2goJyNeKC92YXIvcnVufC92YXIvbG9nfC92YXIvY2FjaGV8L3Zhci9tYWlsfC92YXIvY2FjaGV8L3Zhci9iYWNrdXB8L3Vzci9nYW1lc3wvbGlifC92YXIvbGlifC92YXIvdG1wfC90bXB8L2RldnwvcHJvY3wvc2JpbnwvdXNyL3NiaW58L3Vzci9sb2NhbC9zYmlufC9iaW58L3Vzci9iaW58L3Vzci9sb2NhbC9iaW4pIycsJGFyclsxXSkmJno0aigkYXJyWzFdKSkgJGRwYXRoc1tdPXoxaygkYXJyWzFdKTsgfSB9IHVuc2V0KCR1YXJyKTsgYnJlYWs7IGRlZmF1bHQ6IGJyZWFrOyB9IGZvcmVhY2goQGFycmF5X3VuaXF1ZSgkZHBhdGhzKSBhcyAkZHBhdGgpeyBmb3JlYWNoKEBhcnJheV91bmlxdWUoJGZwYXRocykgYXMgJGZwYXRoKXsgJHNwYXRoc1tdPSRkcGF0aC4kZnBhdGg7IH0gfSB1bnNldCgkZnBhdGhzKTsgdW5zZXQoJHRwYXRocyk7IHVuc2V0KCRkcGF0aHMpOyBmb3JlYWNoKCRzcGF0aHMgYXMgJHNwYXRoKXsgJHRnbG9iPUBnbG9iKCRzcGF0aCk7IGlmKEBpc19hcnJheSgkdGdsb2IpJiZAY291bnQoJHRnbG9iKT4wKXsgZm9yZWFjaCgkdGdsb2IgYXMgJHRmaWxlKXsgaWYoIUBpbl9hcnJheSgkdGZpbGUsJGdsb2IpKSAkZ2xvYltdPSR0ZmlsZTsgfSB9IH0gJGdsb2I9QGFycmF5X3VuaXF1ZSgkZ2xvYik7IHVuc2V0KCRzcGF0aHMpOyBpZihAY291bnQoJGdsb2IpPjApeyAkbG9nPScnOyAkbGluZT1Ac3RyX3JlcGVhdCgiLSIsMTAwKS4iXHJcbiI7ICRmaW5hbF9hcnI9YXJyYXkoKTsgZm9yZWFjaCgkZ2xvYiBhcyAkZmlsZSl7ICR0Y3Q9ejlvKCRmaWxlKTsgaWYoIUBlbXB0eSgkdGN0KSl7IGlmKCRkdmRlZmluZWQ9PSJhbGwiJiZAaXNzZXQoJGFycl9tYXNzKSYmQGlzX2FycmF5KCRhcnJfbWFzcykmJkBjb3VudCgkYXJyX21hc3MpPjApeyBmb3JlYWNoKCRhcnJfbWFzcyBhcyAkc29mdHdhcmU9PiRkZWZpbmVzKXsgJGJhc2U9IiI7ICR1c2VyPXo0YigkZGVmaW5lc1sxXSwkZGVmaW5lc1swXSwkdGN0KTsgJHBhc3M9ejRiKCRkZWZpbmVzWzNdLCRkZWZpbmVzWzJdLCR0Y3QpOyBpZighQGVtcHR5KCRkZWZpbmVzWzRdKSl7ICRiYXNlPXo0YigkZGVmaW5lc1s1XSwkZGVmaW5lc1s0XSwkdGN0KTsgfSBpZighQGVtcHR5KCRkZWZpbmVzWzZdKSl7ICRob3N0PXo0YigkZGVmaW5lc1s3XSwkZGVmaW5lc1s2XSwkdGN0KTsgfSBpZighQGlzc2V0KCRob3N0KXx8QGVtcHR5KCRob3N0KSkgJGhvc3Q9ImxvY2FsaG9zdCI7IGlmKCFAZW1wdHkoJGhvc3QpJiYhQGVtcHR5KCR1c2VyKSYmIUBlbXB0eSgkcGFzcykpeyAkYWRkPTA7IGlmKEBpc3NldCgkZHZzcWx0ZXN0KSYmJGR2c3FsdGVzdCl7IGlmKHozaCgkaG9zdCwkdXNlciwkcGFzcywiMzMwNiIsIk15U1FMIik9PSJ2YWxpZCIpICRhZGQ9MTsgfSBlbHNlIHsgJGFkZD0xOyB9IGlmKCRhZGQpeyAkdG1wID0gJGxpbmU7ICR0bXAgLj0gIiRmaWxlXHJcbiI7ICR0bXAgLj0gIlNvZnR3YXJlIHRlc3RlZDogJHNvZnR3YXJlXHJcbiI7ICR0bXAgLj0gJGxpbmU7ICR0bXAgLj0gImhvc3Q6ICRob3N0XHJcbiI7ICR0bXAgLj0gInVzZXI6ICR1c2VyXHJcbiI7ICR0bXAgLj0gInBhc3M6ICRwYXNzXHJcbiI7ICR0bXAgLj0gImRhdGFiYXNlOiAkYmFzZVxyXG5cclxuIjsgZWNobyAkdG1wOyAkbG9nLj0kdG1wOyBpZighQGlzc2V0KCRmaW5hbF9hcnJbJGZpbGVdKSkgJGZpbmFsX2FyclskZmlsZV09YXJyYXkoJGhvc3QsJHVzZXIsJHBhc3MsJGJhc2UsJHNvZnR3YXJlKTsgYnJlYWs7IH0gfSB9IH0gZWxzZSB7ICRiYXNlPSIiOyAkdXNlcj16NGIoJGR0dXNlciwkZHZ1c2VyLCR0Y3QpOyAkcGFzcz16NGIoJGR0cGFzcywkZHZwYXNzLCR0Y3QpOyBpZighQGVtcHR5KCRkdmJhc2UpKXsgJGJhc2U9ejRiKCRkdGJhc2UsJGR2YmFzZSwkdGN0KTsgfSBpZighQGVtcHR5KCRkdmhvc3QpKXsgJGhvc3Q9ejRiKCRkdGhvc3QsJGR2aG9zdCwkdGN0KTsgfSBpZighQGlzc2V0KCRob3N0KXx8QGVtcHR5KCRob3N0KSkgJGhvc3Q9ImxvY2FsaG9zdCI7IGlmKCFAZW1wdHkoJGhvc3QpJiYhQGVtcHR5KCR1c2VyKSYmIUBlbXB0eSgkcGFzcykpeyAkYWRkPTA7IGlmKEBpc3NldCgkZHZzcWx0ZXN0KSYmJGR2c3FsdGVzdCl7IGlmKHozaCgkaG9zdCwkdXNlciwkcGFzcywiMzMwNiIsIk15U1FMIik9PSJ2YWxpZCIpICRhZGQ9MTsgfSBlbHNlIHsgJGFkZD0xOyB9IGlmKCRhZGQpeyAkdG1wID0gJGxpbmU7ICR0bXAgLj0gIiRmaWxlXHJcbiI7ICR0bXAgLj0gJGxpbmU7ICR0bXAgLj0gImhvc3Q6ICRob3N0XHJcbiI7ICR0bXAgLj0gInVzZXI6ICR1c2VyXHJcbiI7ICR0bXAgLj0gInBhc3M6ICRwYXNzXHJcbiI7ICR0bXAgLj0gImRhdGFiYXNlOiAkYmFzZVxyXG5cclxuIjsgZWNobyAkdG1wOyAkbG9nLj0kdG1wOyBpZighQGlzc2V0KCRmaW5hbF9hcnJbJGZpbGVdKSkgJGZpbmFsX2FyclskZmlsZV09YXJyYXkoJGhvc3QsJHVzZXIsJHBhc3MsJGJhc2UpOyB9IH0gfSB9IHVuc2V0KCR0Y3QpOyB9IH0gZWNobyB6NXEoKS56N3koKS56N2YoKS56MTBxKCkuejZzKCk7IGlmKCRkdl9sb2c9PSIxIiYmJGxvZyE9JycpeyBAbWFpbCgkZHZfZW1haWwsIkRCU3wkc2FkZHIiLCRsb2cpOyB9IH0gaWYoQGlzc2V0KCRmaW5hbF9hcnIpJiZAY291bnQoJGZpbmFsX2Fycik+MCl7IGVjaG8gejltKCIyIikuejd1KHo5Yyh6OXkoIjMzMSIpLCIxMyIsIjIiKS56OWMoejl5KCIzMzIiKSwiMTMiKS56OWMoejl5KCIzMzMiKSwiMTMiKS56OWMoejl5KCIzMzQiKSwiMTMiKS56OWMoejl5KCIzMzUiKSwiMTMiLCIzIikpOyAkdHI9MDsgZm9yZWFjaCgkZmluYWxfYXJyIGFzICRmaWxlPT4kYXJyYXkpeyBlY2hvIHo2ZigoJHRyJTI/JzAnOicxJykpOyAkdGM9QGNvdW50KCRhcnJheSk7ICRkc29mdD0nJzsgaWYoJHRjPT01KXsgJHRjPTQ7ICRkc29mdD0kYXJyYXlbJHRjXTsgfSBmb3IoJGk9MDskaTwkdGM7JGkrKyl7IGVjaG8gejljKCRhcnJheVskaV0sIjE0IiwoJGk9PTA/IjIiOiIiKSk7IH0gZWNobyB6OWMoejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9yZWZyZXNoIj0+IjEiLCJzcWxfc2VydmVyIj0+JGFycmF5WzBdLCJzcWxfdXNlciI9PiRhcnJheVsxXSwic3FsX3Bhc3MiPT4kYXJyYXlbMl0sInNxbF9kYiI9PiRhcnJheVszXSwic3FsX3BvcnQiPT4iMzMwNiIsInNxbF9lbmdpbmUiPT4iTXlTUUwiKSx6OGIoejl5KCIzMzYiKSwiNyIpLigoJGRzb2Z0IT0nJyk/IiAoIi4kZHNvZnQuIikiOicnKSwxKSwiMTQiLCIzIik7IGVjaG8gejd5KCk7ICR0cisrOyB9IH0gfSBpZigkYWN0PT0nc3FsJyl7ICRoaWRlY29ubmVjdD0wOyAkaG1zZz0nJzsgaWYoQGlzc2V0KCRzcWxfYWN0KSYmJHNxbF9hY3Q9PSJsb2dvZmYiKXsgejBpKCdzcWxfc2VydmVyJyk7IHowaSgnc3FsX3VzZXInKTsgejBpKCdzcWxfcGFzcycpOyB6MGkoJ3NxbF9wb3J0Jyk7IHowaSgnc3FsX2VuZ2luZScpOyB6MGkoJ3NxbF9zZXNzaW9uJyk7IHowaSgnc3FsX3NvcnQnKTsgfSAkc3FsX3Nlc3Npb249MDsgaWYoQGlzc2V0KCRfU0VTU0lPTlsnc3FsX3Nlc3Npb24nXSkpeyBpZighQGlzc2V0KCRzcWxfcmVmcmVzaCl8fCEkc3FsX3JlZnJlc2gpeyAkc3FsX3NlcnZlcj0kX1NFU1NJT05bJ3NxbF9zZXJ2ZXInXTsgJHNxbF91c2VyPSRfU0VTU0lPTlsnc3FsX3VzZXInXTsgJHNxbF9wYXNzPSRfU0VTU0lPTlsnc3FsX3Bhc3MnXTsgJHNxbF9wb3J0PSRfU0VTU0lPTlsnc3FsX3BvcnQnXTsgJHNxbF9lbmdpbmU9JF9TRVNTSU9OWydzcWxfZW5naW5lJ107IGlmKCFAaXNzZXQoJHNxbF9zb3J0KSkgJHNxbF9zb3J0PSRfU0VTU0lPTlsnc3FsX3NvcnQnXTsgJHNxbF9zZXNzaW9uPTE7IH0gZWxzZSB7IHowaSgnc3FsX3NlcnZlcicpOyB6MGkoJ3NxbF91c2VyJyk7IHowaSgnc3FsX3Bhc3MnKTsgejBpKCdzcWxfcG9ydCcpOyB6MGkoJ3NxbF9lbmdpbmUnKTsgejBpKCdzcWxfc2Vzc2lvbicpOyB6MGkoJ3NxbF9zb3J0Jyk7IH0gfSBpZighQGVtcHR5KCRzcWxfc2VydmVyKSYmIUBlbXB0eSgkc3FsX3BvcnQpJiYhQGVtcHR5KCRzcWxfdXNlcikmJkBpc3NldCgkc3FsX3Bhc3MpJiYhQGVtcHR5KCRzcWxfZW5naW5lKSl7IGlmKCFAaXNzZXQoJHNxbF9kYikpICRzcWxfZGI9Jyc7ICRzcWw9bmV3IG15X3NxbCgpOyAkc3FsLT5kYj0kc3FsX2VuZ2luZTsgJHNxbC0+aG9zdD0kc3FsX3NlcnZlcjsgJHNxbC0+cG9ydD0kc3FsX3BvcnQ7ICRzcWwtPnVzZXI9JHNxbF91c2VyOyAkc3FsLT5wYXNzPSRzcWxfcGFzczsgJHNxbC0+YmFzZT0kc3FsX2RiOyBpZigkc3FsLT5jb25uZWN0KCkpeyAkaGlkZWNvbm5lY3Q9MTsgaWYoIUBpc3NldCgkc3FsX3NvcnQpKSAkc3FsX3NvcnQ9IjBhIjsgJF9TRVNTSU9OWydzcWxfc2VydmVyJ109JHNxbF9zZXJ2ZXI7ICRfU0VTU0lPTlsnc3FsX3VzZXInXT0kc3FsX3VzZXI7ICRfU0VTU0lPTlsnc3FsX3Bhc3MnXT0kc3FsX3Bhc3M7ICRfU0VTU0lPTlsnc3FsX3BvcnQnXT0kc3FsX3BvcnQ7ICRfU0VTU0lPTlsnc3FsX2VuZ2luZSddPSRzcWxfZW5naW5lOyAkX1NFU1NJT05bJ3NxbF9zZXNzaW9uJ109MTsgJF9TRVNTSU9OWydzcWxfc29ydCddPSRzcWxfc29ydDsgJGhpZGVjb25uZWN0PTE7ICRkYl9hY3Rpb25zPWFycmF5KCJzZWxlY3QiPT4iU2VsZWN0IiwiZHVtcCI9PiJEdW1wIiwiZHJvcCI9PiJEcm9wIik7ICR0YWJsZV9hY3Rpb25zPWFycmF5KCJicm93c2UiPT4iQnJvd3NlIiwiZHVtcCI9PiJEdW1wIiwiZHJvcCI9PiJEcm9wIiwiZW1wdHkiPT4iRW1wdHkiLCJpbnNlcnQiPT4iSW5zZXJ0Iik7IGVjaG8gejNxKHo5bSgnMicpLno3dSh6NmwoIHo1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIpLHo4Yih6OXkoIjM1MiIpLCghQGlzc2V0KCRzcWxfYWN0KXx8IUBpbl9hcnJheSgkc3FsX2FjdCxhcnJheSgicXVlcnkiLCJlbWFpbHMiLCJzZXJ2ZXJzdGF0dXMiLCJzZXJ2ZXJ2YXJzIiwicHJvY2Vzc2VzIikpPyIxMiI6IjE0IikpKS4gejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX2FjdCI9PiJxdWVyeSIsInNxbF9kYiIpLHo4Yih6OXkoIjM1MyIpLChAaXNzZXQoJHNxbF9hY3QpJiYkc3FsX2FjdD09InF1ZXJ5Ij8iMTIiOiIxNCIpKSkuIHo1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiPT4iZW1haWxzIiwic3FsX2RiIiksejhiKHo5eSgiMzU0IiksKEBpc3NldCgkc3FsX2FjdCkmJiRzcWxfYWN0PT0iZW1haWxzIj8iMTIiOiIxNCIpKSkuIHo1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiPT4ic2VydmVyc3RhdHVzIiksejhiKHo5eSgiMzU1IiksKEBpc3NldCgkc3FsX2FjdCkmJiRzcWxfYWN0PT0ic2VydmVyc3RhdHVzIj8iMTIiOiIxNCIpKSkuIHo1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiPT4ic2VydmVydmFycyIpLHo4Yih6OXkoIjM1NiIpLChAaXNzZXQoJHNxbF9hY3QpJiYkc3FsX2FjdD09InNlcnZlcnZhcnMiPyIxMiI6IjE0IikpKS4gejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX2FjdCI9PiJwcm9jZXNzZXMiKSx6OGIoejl5KCIzNTciKSwoQGlzc2V0KCRzcWxfYWN0KSYmJHNxbF9hY3Q9PSJwcm9jZXNzZXMiPyIxMiI6IjE0IikpKS4gejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9hY3QiPT4ibG9nb2ZmIiksejhiKHo5eSgiMzU4IiksIjE0IikpICwiIikpLnoxMHEoKSk7IGlmKCRzcWxfZW5naW5lPT0iTXlTUUwiKXsgaWYoIUBpc3NldCgkc3FsX2FjdCkpeyBpZihAaXNzZXQoJHNxbF9kYikmJiFAZW1wdHkoJHNxbF9kYikpeyAkc3FsLT5iYXNlPSRzcWxfZGI7IGlmKCRzcWwtPnNlbGVjdF9kYigpKXsgJHNxbF9hY3Q9ImRiX2FjdCI7ICRkYl9hY3Q9InNlbGVjdCI7IH0gZWxzZSB7ICRzcWxfYWN0PSJzaG93ZGIiOyAkc3FsX2RiPSIiOyAkc3FsLT5iYXNlPSIiOyB9IH0gZWxzZSB7ICRzcWxfYWN0PSJzaG93ZGIiOyB9IH0gJGRicz0kc3FsLT5saXN0X2RicygpOyAkZGJfbGlzdD1hcnJheSgnJz0+ejl5KCIzNjciLEBjb3VudCgkZGJzKSkpOyBmb3JlYWNoKCRkYnMgYXMgJGs9PiR2KSAkZGJfbGlzdFska109JHY7IGlmKCRzcWxfYWN0PT0iZGJfYWN0IiYmQGlzc2V0KCRkYl9hY3QpJiYhQGVtcHR5KCRzcWxfZGIpKXsgc3dpdGNoKCRkYl9hY3QpeyBjYXNlICdkdW1wJzogJHNxbF9hY3Q9ImR1bXAiOyBicmVhazsgY2FzZSAnZHJvcCc6IGlmKEBpc3NldCgkZHJvcF9jb25maXJtKSYmJGRyb3BfY29uZmlybSl7ICRzcWwtPnF1ZXJ5KCdEUk9QIERBVEFCQVNFICcuJHNxbF9kYi4nOycpOyAkc3FsX2FjdD0ic2hvd2RiIjsgJHNxbF9kYj0iIjsgfSBlbHNlIHsgJHNxbF9hY3Q9ImRyb3BkYiI7IH0gYnJlYWs7IH0gfSBlbHNlaWYoJHNxbF9hY3Q9PSJ0YWJsZV9hY3QiJiZAaXNzZXQoJHRhYmxlX2FjdCkmJiFAZW1wdHkoJHNlbF90YWJsZSkpeyBzd2l0Y2goJHRhYmxlX2FjdCl7IGNhc2UgJ2R1bXAnOiAkc3FsX2FjdD0iZHVtcCI7IGJyZWFrOyBjYXNlICdkcm9wJzogaWYoQGlzc2V0KCRkcm9wX2NvbmZpcm0pJiYkZHJvcF9jb25maXJtKXsgJHNxbC0+YmFzZT0kc3FsX2RiOyBpZigkc3FsLT5zZWxlY3RfZGIoKSl7ICRzcWwtPnF1ZXJ5KCdEUk9QIFRBQkxFICcuJHNlbF90YWJsZS4nOycpOyB9ICRzZWxfdGFibGU9IiI7ICRzcWxfYWN0PSJkYl9hY3QiOyAkZGJfYWN0PSJzZWxlY3QiOyB9IGVsc2UgeyAkc3FsX2FjdD0iZHJvcHRhYmxlIjsgfSBicmVhazsgY2FzZSAnZW1wdHknOiBpZihAaXNzZXQoJGVtcHR5X2NvbmZpcm0pJiYkZW1wdHlfY29uZmlybSl7ICRzcWwtPmJhc2U9JHNxbF9kYjsgaWYoJHNxbC0+c2VsZWN0X2RiKCkpeyAkc3FsLT5xdWVyeSgnREVMRVRFIEZST00gJy4kc2VsX3RhYmxlLic7Jyk7IH0gJHNxbF9hY3Q9InRhYmxlX2FjdCI7ICR0YWJsZV9hY3Q9ImJyb3dzZSI7IH0gZWxzZSB7ICRzcWxfYWN0PSJlbXB0eSI7IH0gYnJlYWs7IGNhc2UgJ2luc2VydCc6IGJyZWFrOyBjYXNlICdkZWxldGUnOiAkc3FsLT5iYXNlPSRzcWxfZGI7IGlmKCRzcWwtPnNlbGVjdF9kYigpKXsgJHNxbC0+cXVlcnkoJ0RFTEVURSBGUk9NICcuJHNlbF90YWJsZS4nIFdIRVJFICcuJHNxbF90YmxfaW5zZXJ0X3EuJyBMSU1JVCAxOycpOyB9ICR0YWJsZV9hY3Q9ImJyb3dzZSI7IGJyZWFrOyB9IH0gaWYoIUBpbl9hcnJheSgkc3FsX2FjdCxhcnJheSgic2hvd2RiIiwicXVlcnkiLCJzZXJ2ZXJzdGF0dXMiLCJzZXJ2ZXJ2YXJzIiwicHJvY2Vzc2VzIiwiZW1haWxzIikpKXsgJGRiX3N1Ym1pdF9hY3RzPSR0YWJsZV9zdWJtaXRfYWN0cz0nJzsgZm9yZWFjaCgkZGJfYWN0aW9ucyBhcyAkZGs9PiRkdikgJGRiX3N1Ym1pdF9hY3RzIC49IHo2bygkZGssJGR2LCI3Iik7IGZvcmVhY2goJHRhYmxlX2FjdGlvbnMgYXMgJHRrPT4kdHYpICR0YWJsZV9zdWJtaXRfYWN0cyAuPSB6NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0IiwidGFibGVfYWN0Ij0+JHRrLCJzcWxfZGIiLCJzZWxfdGFibGUiKSx6Nm8oJHRrLCR0diwiNyIpKTsgJHRhYmxlX3N1Ym1pdF9hY3RzPXoxMHcoejd1KHo5YygkdGFibGVfc3VibWl0X2FjdHMpKSwiMiIpOyAkZGJfdGFibGU9ejEwdyh6N3UoejZsKHo3bih6OXkoIjM2NCIpKS56NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0Ij0+ImRiX2FjdCIpLHozbSgic3FsX2RiIiwkZGJfbGlzdCwiMCIsMSkuejNtKCJkYl9hY3QiLCRkYl9hY3Rpb25zLCIxIikuejhiKHo5eSgiOTIiKSwiNyIpKSkpLCIyIik7IGlmKEBpc3NldCgkc3FsX2RiKSYmIUBlbXB0eSgkc3FsX2RiKSl7ICRzcWwtPmJhc2U9JHNxbF9kYjsgaWYoJHNxbC0+c2VsZWN0X2RiKCkpeyAkdGFibGVfbGlzdD1hcnJheSgnJz0+Ii0iKTsgJHNxbC0+cXVlcnkoJ1NIT1cgVEFCTEVTIEZST00gJy4kc3FsX2RiLic7Jyk7IGlmKCRzcWwtPmdldF9yZXN1bHQoKSl7IGZvcigkaT0wOyRpPCRzcWwtPm51bV9yb3dzOyRpKyspeyBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRyaz0+JHJ2KXsgJHRhYmxlX2xpc3RbJHJ2XT0kcnYuIiAoIi4kc3FsLT5jb3VudF9yb3dzKCRydikuIikiOyB9IH0gfSAkdGFibGVfdGFibGU9ejEwdyh6N3UoejZsKHo3bih6OXkoIjM2NSIpKS56NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0Ij0+InRhYmxlX2FjdCIsInNxbF9kYiIpLHozbSgic2VsX3RhYmxlIiwkdGFibGVfbGlzdCwiMCIsMSkuejNtKCJ0YWJsZV9hY3QiLCR0YWJsZV9hY3Rpb25zLCIxIikuejhiKHo5eSgiOTIiKSwiNyIpKSkpLCIyIik7IH0gfSBlY2hvIHozcSgoQGlzc2V0KCR0YWJsZV90YWJsZSk/YXJyYXkoJGRiX3RhYmxlLCR0YWJsZV90YWJsZSk6JGRiX3RhYmxlKSk7IGlmKCRzcWxfYWN0PT0iZHJvcGRiIil7IGVjaG8gejZzKCk7IGVjaG8gejEwdyh6N3UoejZsKHo3bih6OXkoIjQzNyIsJHNxbF9kYikpLno1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiPT4iZGJfYWN0IiwiZGJfYWN0Ij0+ImRyb3AiLCJzcWxfZGIiLCJkcm9wX2NvbmZpcm0iPT4iMSIpLHo4Yih6OXkoIjIxIiksIjciKSkuejl4KCkuejV4KCRiYWNrX2Zvcm1fYWN0aW9ucyx6OGIoejl5KCIyMiIpLCc3JykpKSksIjIiKTsgZWNobyB6NnMoKTsgfSBlbHNlaWYoJHNxbF9hY3Q9PSJkcm9wdGFibGUiKXsgZWNobyB6NnMoKTsgZWNobyB6MTB3KHo3dSh6NmwoejduKHo5eSgiNDM4Iiwkc2VsX3RhYmxlKSkuejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX2FjdCI9PiJ0YWJsZV9hY3QiLCJ0YWJsZV9hY3QiPT4iZHJvcCIsInNxbF9kYiIsInNlbF90YWJsZSIsImRyb3BfY29uZmlybSI9PiIxIiksejhiKHo5eSgiMjEiKSwiNyIpKS56OXgoKS56NXgoJGJhY2tfZm9ybV9hY3Rpb25zLHo4Yih6OXkoIjIyIiksJzcnKSkpKSwiMiIpOyBlY2hvIHo2cygpOyB9IGVsc2VpZigkc3FsX2FjdD09ImVtcHR5Iil7IGVjaG8gejZzKCk7IGVjaG8gejEwdyh6N3UoejZsKHo3bih6OXkoIjQzOSIsJHNlbF90YWJsZSkpLno1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiPT4idGFibGVfYWN0IiwidGFibGVfYWN0Ij0+ImVtcHR5Iiwic3FsX2RiIiwic2VsX3RhYmxlIiwiZW1wdHlfY29uZmlybSI9PiIxIiksejhiKHo5eSgiMjEiKSwiNyIpKS56OXgoKS56NXgoJGJhY2tfZm9ybV9hY3Rpb25zLHo4Yih6OXkoIjIyIiksJzcnKSkpKSwiMiIpOyBlY2hvIHo2cygpOyB9IGVsc2VpZigkc3FsX2FjdD09ImR1bXAiKXsgaWYoIUBpc3NldCgkZHVtcF9maWxlbmFtZSkpICRkdW1wX2ZpbGVuYW1lPSR0ZW1wZGlyLiJkdW1wXyIuQGdldGVudigiU0VSVkVSX05BTUUiKS4iX2RiXyIuQGRhdGUoImQtbS1ZX0gtaS1zIikuIi5zcWwiOyBpZihAaXNzZXQoJHNxbF9kYikmJiFAZW1wdHkoJHNxbF9kYikpeyAkc3FsLT5iYXNlPSRzcWxfZGI7IGlmKCRzcWwtPnNlbGVjdF9kYigpKXsgJHRhYmxlX2xpc3Q9YXJyYXkoKTsgJHNxbC0+cXVlcnkoJ1NIT1cgVEFCTEVTIEZST00gJy4kc3FsX2RiLic7Jyk7IGlmKCRzcWwtPmdldF9yZXN1bHQoKSl7IGZvcigkaT0wOyRpPCRzcWwtPm51bV9yb3dzOyRpKyspeyBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRyaz0+JHJ2KXsgJHRhYmxlX2xpc3RbXT0kcnY7IH0gfSB9IH0gfSBpZighQGlzc2V0KCRzcWxfdGFibGVzKXx8QGVtcHR5KCRzcWxfdGFibGVzKSl7IGlmKEBpc3NldCgkc2VsX3RhYmxlKSYmIUBlbXB0eSgkc2VsX3RhYmxlKSl7ICRzcWxfdGFibGVzPSRzZWxfdGFibGU7IH0gZWxzZSB7ICRzcWxfdGFibGVzPShAY291bnQoJHRhYmxlX2xpc3QpPjA/QGltcGxvZGUoIiwiLCR0YWJsZV9saXN0KToiIik7IH0gfSBlbHNlaWYoQGlzc2V0KCR0YWJsZV9saXN0KSYmQGlzX2FycmF5KCR0YWJsZV9saXN0KSkgeyAkdG1wX3RhYmxlcz1AZXhwbG9kZSgiLCIsJHNxbF90YWJsZXMpOyAkc3FsX3RhYmxlcz0iIjsgZm9yZWFjaCgkdG1wX3RhYmxlcyBhcyAkdG1wX3RhYmxlKXsgJHRtcF90YWJsZT1AdHJpbSgkdG1wX3RhYmxlKTsgaWYoQGluX2FycmF5KCR0bXBfdGFibGUsJHRhYmxlX2xpc3QpKXsgJHNxbF90YWJsZXMuPSR0bXBfdGFibGUuIiwiOyB9IGVsc2UgeyBicmVhazsgfSB9IGlmKEBlbXB0eSgkc3FsX3RhYmxlcykpICRzcWxfdGFibGVzPUBpbXBsb2RlKCIsIiwkdGFibGVfbGlzdCk7IH0gZWNobyB6M3Eoejl5KCI0NDAiKSk7IGVjaG8gejltKCIyIikuejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX2FjdCI9PiJkdW1wIiwiZHVtcF9jb25maXJtIj0+IjEiKSwgejViKCkuIHo3dSh6NXQoejl5KCI0NDEiKSkuejljKHozbSgic3FsX2RiIiwkZGJfbGlzdCwiNyIsMSkpKS4gejd1KHo1dCh6OXkoIjQ0MiIpKS56OWMoejV3KCJzcWxfdGFibGVzIiwiNSIpLihAaXNzZXQoJHNxbF90YWJsZXMpP0BodG1sc3BlY2lhbGNoYXJzKCRzcWxfdGFibGVzKToiIikuejVxKCkpKS4gejd1KHo1dCh6OXkoIjQ0MyIpKS56OWMoejV5KCJkdW1wX2ZpbGVuYW1lIiwkZHVtcF9maWxlbmFtZSwiNyIpKSkuIHo3dSh6NXQoejl4KCkpLno5Yyh6NXUoInNxbF9zYXZlMmZpbGUiLHo5eSgiNDQ0IiksInNxbF9zYXZlMmZpbGUiKS56OXgoKS56NXUoInNxbF9kb3dubG9hZCIsejl5KCI0NDUiKSwic3FsX2Rvd25sb2FkIikpKS4gejd1KHo1dCh6OXgoKSkuejljKHo4Yih6OXkoIjQ0NiIpLCI3IikpKS4gejViKCkpLiB6MTBxKCk7IGlmKEBpc3NldCgkZHVtcF9jb25maXJtKSYmJGR1bXBfY29uZmlybSl7ICRmcD0wOyBpZihAaXNzZXQoJHNxbF9zYXZlMmZpbGUpJiYkc3FsX3NhdmUyZmlsZT09IjEiJiZAaXNzZXQoJGR1bXBfZmlsZW5hbWUpJiYhQGVtcHR5KCRkdW1wX2ZpbGVuYW1lKSl7ICRmcD1AZm9wZW4oJGR1bXBfZmlsZW5hbWUsInciKTsgfSAkZHVtcGluZ19hcnI9YXJyYXkoKTsgJHRtcF90YWJsZXM9QGV4cGxvZGUoIiwiLCRzcWxfdGFibGVzKTsgZm9yZWFjaCgkdG1wX3RhYmxlcyBhcyAkdG1wX3RhYmxlKXsgJHRtcF90YWJsZT1AdHJpbSgkdG1wX3RhYmxlKTsgJGR1bXBpbmdfYXJyW109JHRtcF90YWJsZTsgfSAkZHVtcGluZ19hcnI9QGFycmF5X3VuaXF1ZSgkZHVtcGluZ19hcnIpOyAkc3FsLT5iYXNlPSRzcWxfZGI7IGlmKCEkc3FsLT5zZWxlY3RfZGIoKSl7IGVjaG8gejNxKHo5eSgiNDQ3IikpOyB9ZWxzZWlmKEBjb3VudCgkZHVtcGluZ19hcnIpPDEpeyBlY2hvIHozcSh6OXkoIjQ0OCIpKTsgfWVsc2V7ICRzcWxfZHVtcGVkPSIiOyBmb3JlYWNoKCRkdW1waW5nX2FyciBhcyAkZHVtcF90YWJsZSl7IGlmKCRzcWwtPmR1bXAoJGR1bXBfdGFibGUpKXsgZm9yZWFjaCgkc3FsLT5kdW1wIGFzICR2KSAkc3FsX2R1bXBlZC49JHYuIlxyXG4iOyB9IH0gaWYoJHNxbF9kdW1wZWQhPSIiKXsgaWYoQGlzc2V0KCRzcWxfZG93bmxvYWQpJiYkc3FsX2Rvd25sb2FkPT0iMSIpeyBAb2JfY2xlYW4oKTsgQGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsgQGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuQHN0cmxlbigkc3FsX2R1bXBlZCkpOyBAaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuQGJhc2VuYW1lKCRkdW1wX2ZpbGVuYW1lKS4iXCI7Iik7IGVjaG8gJHNxbF9kdW1wZWQ7IGV4aXQoKTsgfSBpZighQGlzc2V0KCRzcWxfc2F2ZTJmaWxlKXx8JHNxbF9zYXZlMmZpbGUhPSIxIil7IGVjaG8gejltKCcyJykuejZmKCkuejZxKCkuejV3KCcnLCcxJykuQGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kdW1wZWQpLno1cSgpLno3ZigpLno3eSgpLnoxMHEoKS56NnMoKTsgfWVsc2VpZigkZnB8fEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJykpeyBpZihAZndyaXRlKCRmcCwkc3FsX2R1bXBlZCkgb3IgQGZwdXRzKCRmcCwkc3FsX2R1bXBlZCkgb3IgQGZpbGVfcHV0X2NvbnRlbnRzKCRkdW1wX2ZpbGVuYW1lLCRzcWxfZHVtcGVkKSl7IGVjaG8gejNxKHo5eSgiNDQ5IiwkZHVtcF9maWxlbmFtZSkpOyB9ZWxzZXsgZWNobyB6M3Eoejl5KCI0NTAiKSk7IH0gfWVsc2V7IGVjaG8gejNxKHo5eSgiNDUwIikpOyB9IH0gfSB9IH0gaWYoJHNxbF9hY3Q9PSJ0YWJsZV9hY3QiJiZAaXNzZXQoJHRhYmxlX2FjdCkmJigkdGFibGVfYWN0PT0iYnJvd3NlInx8JHRhYmxlX2FjdD09Imluc2VydCIpJiZAaXNzZXQoJHNlbF90YWJsZSkmJiFAZW1wdHkoJHNlbF90YWJsZSkpeyAkY3Jvd3M9JHNxbC0+Y291bnRfcm93cygkc2VsX3RhYmxlKTsgJHNxbC0+cGFyc2VfZmllbGRzKCRzZWxfdGFibGUpOyAkY2ZpZWxkcz0kc3FsLT5udW1fZmllbGRzOyAkZmllbGRzPSRzcWwtPmNvbHVtbnM7IGlmKCR0YWJsZV9hY3Q9PSJpbnNlcnQiKXsgaWYoQGlzc2V0KCRzcWxfdGJsX2luc2VydF9yYWRpbykmJiFAZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3JhZGlvKSl7IGlmKCRzcWxfdGJsX2luc2VydF9yYWRpbz09MSl7ICRrZXlzPSIiOyAkYWtleXM9QGFycmF5X2tleXMoJHNxbF90YmxfaW5zZXJ0KTsgZm9yZWFjaCgkYWtleXMgYXMgJHYpeyAka2V5cy49ImAiLkBhZGRzbGFzaGVzKCR2KS4iYCwgIjsgfSBpZighQGVtcHR5KCRrZXlzKSl7ICRrZXlzPUBzdWJzdHIoJGtleXMsMCxAc3RybGVuKCRrZXlzKS0yKTsgfSAkdmFsdWVzPSIiOyAkaT0wOyBmb3JlYWNoKEBhcnJheV92YWx1ZXMoJHNxbF90YmxfaW5zZXJ0KSBhcyAkdil7IGlmKCRmdW5jdD0kc3FsX3RibF9pbnNlcnRfZnVuY3RzWyRha2V5c1skaV1dKXsgJHZhbHVlcy49JGZ1bmN0LiIgKCI7IH0gJHZhbHVlcy49IiciLkBhZGRzbGFzaGVzKCR2KS4iJyI7IGlmKCRmdW5jdCl7ICR2YWx1ZXMuPSIpIjsgfSAkdmFsdWVzLj0iLCAiOyAkaSsrOyB9IGlmKCFAZW1wdHkoJHZhbHVlcykpeyAkdmFsdWVzPUBzdWJzdHIoJHZhbHVlcywwLEBzdHJsZW4oJHZhbHVlcyktMik7IH0gJHNxbC0+cXVlcnkoIklOU0VSVCBJTlRPIGAiLiRzZWxfdGFibGUuImAgKCAiLiRrZXlzLiIgKSBWQUxVRVMgKCAiLiR2YWx1ZXMuIiApOyIpOyB9ZWxzZWlmKCRzcWxfdGJsX2luc2VydF9yYWRpbz09Mil7ICRzZXQ9ejBrKCRzcWxfdGJsX2luc2VydCwiLCAiLCRzcWxfdGJsX2luc2VydF9mdW5jdHMpOyAkc3FsLT5xdWVyeSgiVVBEQVRFIGAiLiRzZWxfdGFibGUuImAgU0VUICIuJHNldC4iIFdIRVJFICIuJHNxbF90YmxfaW5zZXJ0X3EuIiBMSU1JVCAxOyIpOyB9ICR0YWJsZV9hY3Q9ImJyb3dzZSI7IH1lbHNleyBlY2hvIHozcShhcnJheSgiSU5TRVJUIElOVE8gVEFCTEUgIi4kc2VsX3RhYmxlKSwiMSIpOyBpZighQGlzc2V0KCRzcWxfdGJsX2luc2VydCl8fCFAaXNfYXJyYXkoJHNxbF90YmxfaW5zZXJ0KSl7ICRzcWxfdGJsX2luc2VydD1hcnJheSgpOyB9IGlmKCFAZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKXsgJHNxbC0+cXVlcnkoIlNFTEVDVCAqIEZST00gYCIuJHNlbF90YWJsZS4iYCBXSEVSRSAiLiRzcWxfdGJsX2luc2VydF9xLiIgTElNSVQgMTsiKTsgJHZhbHVlcz1AbXlzcWxfZmV0Y2hfYXNzb2MoJHNxbC0+cmVzKTsgQG15c3FsX2ZyZWVfcmVzdWx0KCRzcWwtPnJlcyk7IH1lbHNleyAkdmFsdWVzPWFycmF5KCk7IH0gZWNobyB6OWsoKS56OXYoImFjdCIsInNxbCIpLno5digic3FsX3NlcnZlciIpLno5digic3FsX3VzZXIiKS56OXYoInNxbF9wYXNzIikuejl2KCJzcWxfcG9ydCIpLno5digic3FsX2VuZ2luZSIpLno5digiZCIpLno5digic3FsX2FjdCIsInRhYmxlX2FjdCIpLno5digidGFibGVfYWN0IiwiaW5zZXJ0Iikuejl2KCJzZWxfdGFibGUiKS56OXYoInNxbF9kYiIpLno5digic3FsX3RibF9pbnNlcnRfcSIpLno5bSgiMiIpLno3dSh6OWMoIkZpZWxkIiwiMTMiLCIyIikuejljKCJUeXBlIiwiMTMiKS56OWMoIkZ1bmN0aW9uIiwiMTMiKS56OWMoIlZhbHVlIiwiMTMiLCIzIikpOyAkc3FsLT5xdWVyeSgiU0hPVyBGSUVMRFMgRlJPTSBgIi4kc2VsX3RhYmxlLiJgOyIpOyAkc3FsLT5nZXRfcmVzdWx0KCk7IGZvcigkaT0wOyAkaSA8ICRzcWwtPm51bV9yb3dzOyAkaSsrKXsgJGZpZWxkPSRzcWwtPnJvd3NbJGldOyAkbmFtZT0kZmllbGRbIkZpZWxkIl07IGlmKGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSl7ICR2PSIiOyB9IGVjaG8gejlkKHo5Yyh6N24oQGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpKSwiMTQiLCIyIikuejljKCRmaWVsZFsiVHlwZSJdLCIxNCIpLno5Yyh6M20oInNxbF90YmxfaW5zZXJ0X2Z1bmN0c1siLkBodG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXSIsYXJyYXkoICIiPT4iIiwgIlBBU1NXT1JEIj0+IlBBU1NXT1JEIiwgIk1ENSI9PiJNRDUiLCAiRU5DUllQVCI9PiJFTkNSWVBUIiwgIkFTQ0lJIj0+IkFTQ0lJIiwgIkNIQVIiPT4iQ0hBUiIsICJSQU5EIj0+IlJBTkQiLCAiTEFTVF9JTlNFUlRfSUQiPT4iTEFTVF9JTlNFUlRfSUQiLCAiQ09VTlQiPT4iQ09VTlQiLCAiQVZHIj0+IkFWRyIsICJTVU0iPT4iU1VNIiwgIiAiPT4iLS0tLS0tLS0iLCAiU09VTkRFWCI9PiJTT1VOREVYIiwgIkxDQVNFIj0+IkxDQVNFIiwgIlVDQVNFIj0+IlVDQVNFIiwgIk5PVyI9PiJOT1ciLCAiQ1VSREFURSI9PiJDVVJEQVRFIiwgIkNVUlRJTUUiPT4iQ1VSVElNRSIsICJGUk9NX0RBWVMiPT4iRlJPTV9EQVlTIiwgIkZST01fVU5JWFRJTUUiPT4iRlJPTV9VTklYVElNRSIsICJQRVJJT0RfQUREIj0+IlBFUklPRF9BREQiLCAiUEVSSU9EX0RJRkYiPT4iUEVSSU9EX0RJRkYiLCAiVE9fREFZUyI9PiJUT19EQVlTIiwgIlVOSVhfVElNRVNUQU1QIj0+IlVOSVhfVElNRVNUQU1QIiwgIlVTRVIiPT4iVVNFUiIsICJXRUVLREFZIj0+IldFRUtEQVkiLCAiQ09OQ0FUIj0+IkNPTkNBVCIpLCI1IiksIjE0IikuejljKHo2dSgic3FsX3RibF9pbnNlcnRbIi4oQGlzc2V0KCRuYW1lKT9AaHRtbHNwZWNpYWxjaGFycygkbmFtZSk6IiIpLiJdIiwoQGlzc2V0KCR2YWx1ZXNbIiRuYW1lIl0pP0BodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZXNbIiRuYW1lIl0pOiIiKSwiNyIpLCIxNCIsIjMiKSwoJGklMj8nMCc6JzEnKSk7IH0gZWNobyB6MTBxKCk7ICRpcmFkaW89JzxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9Imluc2VydCIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IiBuYW1lPSJzcWxfdGJsX2luc2VydF9yYWRpbyIgdmFsdWU9IjEiJy4oQGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKT8iIGNoZWNrZWQiOiIiKS4nPjxsYWJlbCBmb3I9Imluc2VydCI+Jy56OXkoIjQwNSIpLic8L2xhYmVsPic7IGlmKCFAZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKXsgJGlyYWRpbyAuPSB6OXgoKS56OXkoIjQwNiIpLno5eCgpLic8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJzYXZlIiBzdHlsZT0idmVydGljYWwtYWxpZ246IG1pZGRsZTsiIG5hbWU9InNxbF90YmxfaW5zZXJ0X3JhZGlvIiB2YWx1ZT0iMiIgY2hlY2tlZD48bGFiZWwgZm9yPSJzYXZlIj4nLno5eSgiNDA3IikuJzwvbGFiZWw+JzsgJGlyYWRpbyAuPSB6OXYoInNxbF90YmxfaW5zZXJ0X3EiLEBodG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKSk7IH0gZWNobyB6M3EoJGlyYWRpby56OXgoIjMiKS56OGIoejl5KCI0MDgiKSwiNyIpKTsgZWNobyB6OWwoKTsgfSB9IGlmKCR0YWJsZV9hY3Q9PSJicm93c2UiKXsgaWYoIUBpc3NldCgkc3FsX2Zyb20pfHwhQGlzX251bWVyaWMoJHNxbF9mcm9tKSkgJHNxbF9mcm9tPTA7IGlmKCFAaXNzZXQoJHNxbF9saW1pdCl8fCFAaXNfbnVtZXJpYygkc3FsX2xpbWl0KSkgJHNxbF9saW1pdD01MDsgaWYoIUBpc3NldCgkc3FsX3BhZ2UpfHwhQGlzX251bWVyaWMoJHNxbF9wYWdlKSkgJHNxbF9wYWdlPTA7ICRwc3FsX3NvcnQ9ejVyKCRzcWxfc29ydCk7IGlmKCRwc3FsX3NvcnRbMV0hPSdhJyl7ICRwc3FsX3NvcnRbMV09J2QnOyB9IGVsc2UgeyAkcHNxbF9zb3J0WzFdPSdhJzsgfSBpZigkcHNxbF9zb3J0WzBdPigkY2ZpZWxkcy0xKSkgJHBzcWxfc29ydFswXT0nMCc7ICR2PSRwc3FsX3NvcnRbMF07IGlmKCRjcm93cz4kc3FsX2xpbWl0KXsgJHBhZ2VzPUBjZWlsKCRjcm93cy8kc3FsX2xpbWl0KTsgJHRtcHNvcnQ9IiI7IGlmKEBpc19hcnJheSgkZmllbGRzKSYmQGlzc2V0KCRmaWVsZHNbJHBzcWxfc29ydFswXV0pKXsgJHRtcHNvcnQ9JyBPUkRFUiBCWSBgJy4kZmllbGRzWyRwc3FsX3NvcnRbMF1dLidgICcuKCRwc3FsX3NvcnRbMV09PSJhIj8nQVNDJzonREVTQycpOyB9ICR0YWJsZV9saW1pdD0kdG1wc29ydC4nIExJTUlUICcuKCRzcWxfbGltaXQqJHNxbF9wYWdlKS4nLCcuJHNxbF9saW1pdDsgfSBlbHNlIHsgJHRhYmxlX2xpbWl0PScnOyAkcGFnZXM9MDsgfSAkYXJfcGFnZXM9YXJyYXkoKTsgZm9yKCRpPTA7ICRpPCRwYWdlczsgJGkrKyl7ICRhcl9wYWdlc1skaV09ejl5KCIzOTciKS4iICIuKCRpKzEpOyB9IGlmKEBjb3VudCgkYXJfcGFnZXMpPDEpICRhcl9wYWdlcz1hcnJheSgiMCI9Pno5eSgiMzk3IikuIiAxIik7IGVjaG8gejNxKGFycmF5KHo5eSgiMzk1IixhcnJheSgkc2VsX3RhYmxlLCRjZmllbGRzLCRjcm93cykpLHoxMHcoejlkKHo2eigoJHNxbF9wYWdlPjAgPyB6NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0IiwidGFibGVfYWN0Iiwic3FsX2RiIiwic2VsX3RhYmxlIiwic3FsX3BhZ2UiPT4oJHNxbF9wYWdlPT0iMSI/Ik5VTEwiOigkc3FsX3BhZ2UtMSkpKSx6OGIoejl5KCIzOTYiKSwiNyIpKSA6IHo4Yih6OXkoIjM5NiIpLCI3IikpLiB6NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0IiwidGFibGVfYWN0Iiwic3FsX2RiIiwic2VsX3RhYmxlIiksejNtKCJzcWxfcGFnZSIsJGFyX3BhZ2VzLCIxIiwxKS56OGIoejl5KCIzOTgiKSwiNyIpKS4gKCRzcWxfcGFnZTwoJHBhZ2VzLTEpID8gejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX2FjdCIsInRhYmxlX2FjdCIsInNxbF9kYiIsInNlbF90YWJsZSIsInNxbF9wYWdlIj0+KCRzcWxfcGFnZSsxKSksejhiKHo5eSgiMzk5IiksIjciKSkgOiB6OGIoejl5KCIzOTkiKSwiNyIpKSkpLCIyIikpLCIxIik7ICRzcWwtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHNlbF90YWJsZS4kdGFibGVfbGltaXQuJzsnKTsgaWYoJHNxbC0+Z2V0X3Jlc3VsdCgpKXsgZWNobyB6OW0oJzInKS56N28oKS56N2ooKS56NXooJycsIjAiKS56OW0oIjIiKS56N28oKS56N2ooKTsgZWNobyB6OW0oJzInKTsgZWNobyB6NmYoKTsgZm9yKCRpPTA7JGk8QGNvdW50KCRzcWwtPmNvbHVtbnMpOyRpKyspeyBlY2hvICgkaT09MD96OWMoejl5KCI2MiIpLCIxMyIsIjIiKToiIikuejljKHo1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiLCJ0YWJsZV9hY3QiLCJzcWxfZGIiLCJzZWxfdGFibGUiLCJzcWxfcGFnZSIsInNxbF9zb3J0Ij0+KCRwc3FsX3NvcnRbMF09PSIkaSI/IiRpIi4oJHBzcWxfc29ydFsxXT09ImEiPyJkIjoiYSIpOiIkaSIuJHBzcWxfc29ydFsxXSkpLHo4Yigkc3FsLT5jb2x1bW5zWyRpXS4oJHBzcWxfc29ydFswXT09IiRpIj8nICcuKCRwc3FsX3NvcnRbMV09PSJhIj8nJnVhcnI7JzonJmRhcnI7Jyk6JycpLCczJykpLCIxMyIsKCRpPT0oQGNvdW50KCRzcWwtPmNvbHVtbnMpLTEpPyczJzonJykpOyB9IGVjaG8gejd5KCk7ICRwcmludF9hcnI9YXJyYXkoKTsgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKyl7IGlmKEBpc19hcnJheSgkc3FsLT5yb3dzWyRpXSkpeyAkdG1wYXJyPWFycmF5KCk7IGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJHJrPT4kcnYpeyAkdG1wYXJyW109JHJ2OyB9ICRwcmludF9hcnJbXT0kdG1wYXJyOyB9IH0gQHVzb3J0KCRwcmludF9hcnIsInoyYiIpOyBpZigkcHNxbF9zb3J0WzFdPT0iZCIpeyAkcHJpbnRfYXJyPUBhcnJheV9yZXZlcnNlKCRwcmludF9hcnIpOyB9IGZvcigkaT0wOyRpPEBjb3VudCgkcHJpbnRfYXJyKTskaSsrKXsgZWNobyB6NmYoKCRpJTI/JzAnOicxJykpOyAkY3I9MDsgZm9yZWFjaCgkcHJpbnRfYXJyWyRpXSBhcyAkcnYpeyAkdz0iIjsgZm9yKCRhPTA7JGE8JHNxbC0+bnVtX2ZpZWxkczskYSsrKXsgJHcuPSIgYCIuJHNxbC0+Y29sdW1uc1skYV0uImAgPSAnIi5AYWRkc2xhc2hlcygkcHJpbnRfYXJyWyRpXVskYV0pLiInIEFORCI7IH0gaWYoJGE+MCkgJHc9QHN1YnN0cigkdywwLEBzdHJsZW4oJHcpLTMpOyBlY2hvICgkY3I9PTA/ejljKCI8bm9icj4iLno1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiPT4idGFibGVfYWN0Iiwic3FsX2RiIiwic2VsX3RhYmxlIiwic3FsX3RibF9pbnNlcnRfcSI9PiR3KSx6M20oInRhYmxlX2FjdCIsYXJyYXkoImluc2VydCI9PiJFZGl0IiwiZGVsZXRlIj0+IkRlbGV0ZSIpLCIzIikuejhiKCImcmFxdW87IiwiNiIpKS4iPC9ub2JyPiIsIjE0IiwiMjgiKToiIikuejljKChAaXNfbnVsbCgkcnYpPydOVUxMJzpAaHRtbHNwZWNpYWxjaGFycygkcnYpKSwiMTQiLCgkY3I9PShAY291bnQoJHByaW50X2FyclskaV0pLTEpPyczJzonJykpOyAkY3IrKzsgfSBlY2hvIHo3eSgpOyB9IGVjaG8gejEwcSgpLno3ZigpLno3eSgpLnoxMHEoKS56NWgoKS56N2YoKS56N3koKS56MTBxKCk7IH0gfSB9IGVsc2VpZigkc3FsX2FjdD09ImRiX2FjdCImJkBpc3NldCgkZGJfYWN0KSYmJGRiX2FjdD09InNlbGVjdCImJkBpc3NldCgkc3FsX2RiKSYmIUBlbXB0eSgkc3FsX2RiKSkgeyBlY2hvIHozcSh6OXkoIjM2NiIsJHNxbF9kYiksIjEiKTsgJHNxbC0+cXVlcnkoJ1NIT1cgVEFCTEUgU1RBVFVTOycpOyBpZigkc3FsLT5nZXRfcmVzdWx0KCkpeyAkcHNxbF9zb3J0PXo1cigkc3FsX3NvcnQpOyBpZigkcHNxbF9zb3J0WzFdIT0nYScpeyAkcHNxbF9zb3J0WzFdPSdkJzsgfSBlbHNlIHsgJHBzcWxfc29ydFsxXT0nYSc7IH0gaWYoJHBzcWxfc29ydFswXT49JHNxbC0+bnVtX2ZpZWxkcykgJHBzcWxfc29ydFswXT0nMCc7ICR2PSRwc3FsX3NvcnRbMF07IGVjaG8gejltKCcyJykuejdvKCkuejdqKCkuejV6KCcnLCIwIikuejltKCIyIikuejdvKCkuejdqKCk7IGVjaG8gejltKCcyJykuejZmKCk7IGZvcigkaT0wOyRpPCRzcWwtPm51bV9maWVsZHM7JGkrKyl7IGVjaG8gejljKHo1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJzcWxfc2VydmVyIiwic3FsX3VzZXIiLCJzcWxfcGFzcyIsInNxbF9wb3J0Iiwic3FsX2VuZ2luZSIsInNxbF9hY3QiLCJkYl9hY3QiLCJzcWxfZGIiLCJzZWxfdGFibGUiLCJzcWxfcGFnZSIsInNxbF9zb3J0Ij0+KCRwc3FsX3NvcnRbMF09PSIkaSI/IiRpIi4oJHBzcWxfc29ydFsxXT09ImEiPyJkIjoiYSIpOiIkaSIuJHBzcWxfc29ydFsxXSkpLHo4YigoJGk9PTA/IlRhYmxlICI6IiIpLiRzcWwtPmNvbHVtbnNbJGldLigkcHNxbF9zb3J0WzBdPT0iJGkiPycgJy4oJHBzcWxfc29ydFsxXT09ImEiPycmdWFycjsnOicmZGFycjsnKTonJyksJzMnKSksIjEzIiwoJGk9PTA/IjIiOigkaT09KCRzcWwtPm51bV9maWVsZHMtMSk/JzMnOicnKSkpLigkaT09MD96OWMoejl5KCIzNjkiKSwiMTMiLCI4Iik6JycpOyB9IGVjaG8gejd5KCk7ICRwcmludF9hcnI9YXJyYXkoKTsgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKyl7IGlmKEBpc19hcnJheSgkc3FsLT5yb3dzWyRpXSkpeyAkdG1wYXJyPWFycmF5KCk7IGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJHJrPT4kcnYpeyAkdG1wYXJyW109JHJ2OyB9ICRwcmludF9hcnJbXT0kdG1wYXJyOyB9IH0gQHVzb3J0KCRwcmludF9hcnIsInoyYiIpOyBpZigkcHNxbF9zb3J0WzFdPT0iZCIpeyAkcHJpbnRfYXJyPUBhcnJheV9yZXZlcnNlKCRwcmludF9hcnIpOyB9IGZvcigkaT0wOyRpPEBjb3VudCgkcHJpbnRfYXJyKTskaSsrKXsgZWNobyB6NmYoKCRpJTI/JzAnOicxJykpOyAkY3I9MDsgZm9yZWFjaCgkcHJpbnRfYXJyWyRpXSBhcyAkcnYpeyBlY2hvIHo5YygoQGlzX251bGwoJHJ2KT8nTlVMTCc6KCRjcj09MD8gIjxub2JyPiIuejV4KGFycmF5KCJhY3QiPT4ic3FsIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJkIiwic3FsX2FjdCI9PiJ0YWJsZV9hY3QiLCJzcWxfZGIiLCJzZWxfdGFibGUiPT4kcnYsInRhYmxlX2FjdCI9PiJicm93c2UiKSx6OGIoJHJ2LCIxMSIpKS4iPC9ub2JyPiIgOkBodG1sc3BlY2lhbGNoYXJzKCRydikpKSwiMTQiLCgkY3I9PTA/JzInOigkY3I9PShAY291bnQoJHByaW50X2FyclskaV0pLTEpPyczJzonJykpKTsgaWYoJGNyPT0wKSBlY2hvIHo5YygiPG5vYnI+Ii56NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0Ij0+InRhYmxlX2FjdCIsInNxbF9kYiIsInNlbF90YWJsZSI9PiRydiksejNtKCJ0YWJsZV9hY3QiLCR0YWJsZV9hY3Rpb25zLCIzIikuejhiKCImcmFxdW87IiwiNiIpKS4iPC9ub2JyPiIsIjE0IiwiOCIpOyAkY3IrKzsgfSBlY2hvIHo3eSgpOyB9IGVjaG8gejEwcSgpLno3ZigpLno3eSgpLnoxMHEoKS56NWgoKS56N2YoKS56N3koKS56MTBxKCk7IH0gfSB9IGlmKCRzcWxfYWN0PT0icXVlcnkiKXsgZWNobyB6M3Eoejl5KCIzNzAiKSk7IGVjaG8gejltKCIyIikuejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX2FjdCI9PiJxdWVyeSIsInF1ZXJ5X2NvbmZpcm0iPT4iMSIpLCB6NWIoKS4gejd1KHo1dCh6OXkoIjM2NCIpKS56OWMoejV5KCJzcWxfZGIiLCIiLCI3IikpKS4gejlkKHo1dCh6OXkoIjM3MCIpKS56OWMoejV3KCJzcWxfcXVlcnkiLCI1IikuKEBpc3NldCgkc3FsX3F1ZXJ5KT9AaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KToiIikuejVxKCkpKS4gejd1KHo1dCh6OXgoKSkuejljKHo4Yih6OXkoIjM3MSIpLCI3IikpKS4gejViKCkpLiB6MTBxKCk7IGlmKEBpc3NldCgkcXVlcnlfY29uZmlybSkmJiRxdWVyeV9jb25maXJtKXsgaWYoQGlzc2V0KCRzcWxfZGIpJiYhQGVtcHR5KCRzcWxfZGIpKXsgJHNxbC0+YmFzZT0kc3FsX2RiOyBpZighJHNxbC0+c2VsZWN0X2RiKCkpeyBlY2hvIHozcSh6OXkoIjQ0NyIpKTsgfSB9ICRxX3NxbF9lcnJvcj0nJzsgJHFfc3FsX3Jlc3VsdD0nJzsgaWYoQHN0cmxlbigkc3FsX3F1ZXJ5KT41KXsgJHFfc3FsX3Jlc3VsdC49ejNxKHo5eSgiMzk0IikpOyBzd2l0Y2goJHNxbC0+cXVlcnkoJHNxbF9xdWVyeSkpeyBjYXNlICcwJzogJHFfc3FsX3Jlc3VsdC49ejNxKCJFUlJPUiA6ICIuJHNxbC0+ZXJyb3IpOyBicmVhazsgY2FzZSAnMSc6IGlmKCRzcWwtPmdldF9yZXN1bHQoKSl7ICRxX3NxbF9yZXN1bHQuPXo5bSgnMicpLno3bygpLno3aigpLno1eignJywiMCIpLno5bSgiMiIpLno3bygpLno3aigpOyBmb3JlYWNoKCRzcWwtPmNvbHVtbnMgYXMgJGs9PiR2KSAkc3FsLT5jb2x1bW5zWyRrXT1AaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsgJGtleXM9IiI7ICRjb3VudF9rZXlzPUBjb3VudCgkc3FsLT5jb2x1bW5zKTsgJGtleV9udW09MDsgZm9yZWFjaCgkc3FsLT5jb2x1bW5zIGFzICRjb2x1bW4peyBpZigka2V5X251bT09MCl7ICRrZXlzLj16OWMoJGNvbHVtbiwiMTMiLCAiMDIiKTsgfSBlbHNlaWYoJGtleV9udW09PSgkY291bnRfa2V5cy0xKSl7ICRrZXlzLj16OWMoJGNvbHVtbiwiMTMiLCAiMDMiKTsgfWVsc2V7ICRrZXlzLj16OWMoJGNvbHVtbiwiMTMiLCIwIik7IH0gJGtleV9udW0rKzsgfSAkcV9zcWxfcmVzdWx0Lj16N3UoJGtleXMpOyBmb3IoJGk9MDskaTwkc3FsLT5udW1fcm93czskaSsrKXsgZm9yZWFjaCgkc3FsLT5yb3dzWyRpXSBhcyAkaz0+JHYpICRzcWwtPnJvd3NbJGldWyRrXT1AaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsgJHZhbHVlcz0iIjsgJGNvdW50X3ZhbHVlcz1AY291bnQoJHNxbC0+cm93c1skaV0pOyAkdmFsdWVfbnVtPTA7IGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJHJvdyl7IGlmKCR2YWx1ZV9udW09PTApeyAkdmFsdWVzLj16OWMoJHJvdywiMTQiLCIyIik7IH1lbHNlaWYoJHZhbHVlX251bT09KCRjb3VudF92YWx1ZXMtMSkpeyAkdmFsdWVzLj16OWMoJHJvdywiMTQiLCIzIik7IH1lbHNleyAkdmFsdWVzLj16OWMoJHJvdywiMTQiKTsgfSAkdmFsdWVfbnVtKys7IH0gJHFfc3FsX3Jlc3VsdC49ejd1KCR2YWx1ZXMsKCRpJTI/JzAnOicxJykpOyB9ICRxX3NxbF9yZXN1bHQuPXo3ZigpLno3eSgpLnoxMHEoKS56NWgoKS56N2YoKS56N3koKS56MTBxKCk7IH0gYnJlYWs7IGNhc2UgJzInOiAkYXI9JHNxbC0+YWZmZWN0ZWRfcm93cygpPygkc3FsLT5hZmZlY3RlZF9yb3dzKCkpOignMCcpOyAkcV9zcWxfcmVzdWx0Lj16M3EoIkFGRkVDVEVEIFJPV1M6ICIuJGFyKTsgYnJlYWs7IH0gfSBpZigkcV9zcWxfcmVzdWx0IT0nJyl7IGVjaG8gJHFfc3FsX3Jlc3VsdDsgJHFfc3FsX3Jlc3VsdD0nJzsgfSB9IH0gaWYoJHNxbF9hY3Q9PSJlbWFpbHMiKXsgJGVtYWlscz1hcnJheSgpOyBpZighQGlzc2V0KCRlbWFpbHNfZmlsZW5hbWUpKSAkZW1haWxzX2ZpbGVuYW1lPSR0ZW1wZGlyLiJlbWFpbHNfIi5AZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfZGJfIi5AZGF0ZSgiZC1tLVlfSC1pLXMiKS4iLnR4dCI7IGlmKEBpc3NldCgkc3FsX2RiKSYmIUBlbXB0eSgkc3FsX2RiKSl7ICRzcWwtPmJhc2U9JHNxbF9kYjsgaWYoJHNxbC0+c2VsZWN0X2RiKCkpeyAkdGFibGVfbGlzdD1hcnJheSgpOyAkc3FsLT5xdWVyeSgnU0hPVyBUQUJMRVMgRlJPTSAnLiRzcWxfZGIuJzsnKTsgaWYoJHNxbC0+Z2V0X3Jlc3VsdCgpKXsgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKyl7IGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJHJrPT4kcnYpeyAkdGFibGVfbGlzdFtdPSRydjsgfSB9IH0gfSB9IGlmKCFAaXNzZXQoJHNxbF90YWJsZXMpfHxAZW1wdHkoJHNxbF90YWJsZXMpKXsgaWYoQGlzc2V0KCRzZWxfdGFibGUpJiYhQGVtcHR5KCRzZWxfdGFibGUpKXsgJHNxbF90YWJsZXM9JHNlbF90YWJsZTsgfSBlbHNlIHsgJHNxbF90YWJsZXM9KEBjb3VudCgkdGFibGVfbGlzdCk+MD9AaW1wbG9kZSgiLCIsJHRhYmxlX2xpc3QpOiIiKTsgfSB9IGVsc2VpZihAaXNzZXQoJHRhYmxlX2xpc3QpJiZAaXNfYXJyYXkoJHRhYmxlX2xpc3QpKSB7ICR0bXBfdGFibGVzPUBleHBsb2RlKCIsIiwkc3FsX3RhYmxlcyk7ICRzcWxfdGFibGVzPSIiOyBmb3JlYWNoKCR0bXBfdGFibGVzIGFzICR0bXBfdGFibGUpeyAkdG1wX3RhYmxlPUB0cmltKCR0bXBfdGFibGUpOyBpZihAaW5fYXJyYXkoJHRtcF90YWJsZSwkdGFibGVfbGlzdCkpeyAkc3FsX3RhYmxlcy49JHRtcF90YWJsZS4iLCI7IH0gZWxzZSB7IGJyZWFrOyB9IH0gaWYoQGVtcHR5KCRzcWxfdGFibGVzKSkgJHNxbF90YWJsZXM9QGltcGxvZGUoIiwiLCR0YWJsZV9saXN0KTsgfSBlY2hvIHozcSh6OXkoIjM3MiIpKTsgZWNobyB6OW0oIjIiKS56NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0Ij0+ImVtYWlscyIsImR1bXBfY29uZmlybSI9PiIxIiksIHo1YigpLiB6N3UoejV0KHo5eSgiMzY0IikpLno5Yyh6M20oInNxbF9kYiIsJGRiX2xpc3QsIjciLDEpKSkuIHo3dSh6NXQoejl5KCIzNzMiKSkuejljKHo1dygic3FsX3RhYmxlcyIsIjUiKS4oQGlzc2V0KCRzcWxfdGFibGVzKT9AaHRtbHNwZWNpYWxjaGFycygkc3FsX3RhYmxlcyk6IiIpLno1cSgpKSkuIHo3dSh6NXQoejl5KCIzNzQiKSkuejljKHo1eSgiZW1haWxzX2ZpbGVuYW1lIiwkZW1haWxzX2ZpbGVuYW1lLCI3IikpKS4gejd1KHo1dCh6OXgoKSkuejljKHo1dSgic3FsX3NhdmUyZmlsZSIsejl5KCIzNzUiKSwic3FsX3NhdmUyZmlsZSIpLno5eCgpLno1dSgic3FsX2Rvd25sb2FkIix6OXkoIjM3NiIpLCJzcWxfZG93bmxvYWQiKSkpLiB6N3UoejV0KHo5eCgpKS56OWMoejhiKHo5eSgiMzc3IiksIjciKSkpLiB6NWIoKSkuIHoxMHEoKTsgaWYoQGlzc2V0KCRkdW1wX2NvbmZpcm0pJiYkZHVtcF9jb25maXJtKXsgJGZwPTA7IGlmKEBpc3NldCgkc3FsX3NhdmUyZmlsZSkmJiRzcWxfc2F2ZTJmaWxlPT0iMSImJkBpc3NldCgkZHVtcF9maWxlbmFtZSkmJiFAZW1wdHkoJGR1bXBfZmlsZW5hbWUpKXsgJGZwPUBmb3BlbigkZW1haWxzX2ZpbGVuYW1lLCJ3Iik7IH0gJGR1bXBpbmdfYXJyPWFycmF5KCk7ICR0bXBfdGFibGVzPUBleHBsb2RlKCIsIiwkc3FsX3RhYmxlcyk7IGZvcmVhY2goJHRtcF90YWJsZXMgYXMgJHRtcF90YWJsZSl7ICR0bXBfdGFibGU9QHRyaW0oJHRtcF90YWJsZSk7ICRkdW1waW5nX2FycltdPSR0bXBfdGFibGU7IH0gJGR1bXBpbmdfYXJyPUBhcnJheV91bmlxdWUoJGR1bXBpbmdfYXJyKTsgJHNxbC0+YmFzZT0kc3FsX2RiOyBpZighJHNxbC0+c2VsZWN0X2RiKCkpeyBlY2hvIHozcSh6OXkoIjQ0NyIpKTsgfWVsc2VpZihAY291bnQoJGR1bXBpbmdfYXJyKTwxKXsgZWNobyB6M3Eoejl5KCI0NDgiKSk7IH1lbHNleyBmb3JlYWNoKCRkdW1waW5nX2FyciBhcyAkZHVtcF90YWJsZSl7IGlmKCRzcWwtPnBhcnNlX2ZpZWxkcygkZHVtcF90YWJsZSkpeyBmb3JlYWNoKCRzcWwtPmNvbHVtbnMgYXMgJGNrPT4kY3YpeyBpZigkc3FsLT5xdWVyeSgiU0VMRUNUICIuJGN2LiIgRlJPTSAiLiRkdW1wX3RhYmxlLiIgV0hFUkUgIi4kY3YuIiBSRUdFWFAgJ15bXkBdK0BbXkBdK1wuW15AXXsyLH0kJzsiKSl7IGlmKCRzcWwtPmdldF9yZXN1bHQoKSl7IGZvcigkaT0wOyAkaTwgJHNxbC0+bnVtX3Jvd3M7ICRpKyspeyAkdG1wbWFpbHM9ejNrKCRzcWwtPnJvd3NbJGldWyRjdl0pOyBpZihAY291bnQoJHRtcG1haWxzKT4wKXsgZm9yZWFjaCgkdG1wbWFpbHMgYXMgJG10bXApICRlbWFpbHNbXT0kbXRtcDsgfSB9IH0gfSB9IH0gfSAkZW1haWxzPUBhcnJheV91bmlxdWUoJGVtYWlscyk7IGlmKEBjb3VudCgkZW1haWxzKT4wKXsgJG1haWxkdW1wPUBpbXBsb2RlKCJcclxuIiwkZW1haWxzKTsgaWYoQGlzc2V0KCRzcWxfZG93bmxvYWQpJiYkc3FsX2Rvd25sb2FkPT0iMSIpeyBAb2JfY2xlYW4oKTsgQGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsgQGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuQHN0cmxlbigkbWFpbGR1bXApKTsgQGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLkBiYXNlbmFtZSgkZW1haWxzX2ZpbGVuYW1lKS4iXCI7Iik7IGVjaG8gJG1haWxkdW1wOyBleGl0KCk7IH0gaWYoIUBpc3NldCgkc3FsX3NhdmUyZmlsZSl8fCRzcWxfc2F2ZTJmaWxlIT0iMSIpeyBlY2hvIHo5bSgnMicpLno2ZigpLno2cSgpLno1dygnJywnMScpLkBodG1sc3BlY2lhbGNoYXJzKCRtYWlsZHVtcCkuejVxKCkuejdmKCkuejd5KCkuejEwcSgpLno2cygpOyB9ZWxzZWlmKCRmcHx8QGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9wdXRfY29udGVudHMnKSl7IGlmKEBmd3JpdGUoJGZwLCRtYWlsZHVtcCkgb3IgQGZwdXRzKCRmcCwkbWFpbGR1bXApIG9yIEBmaWxlX3B1dF9jb250ZW50cygkZW1haWxzX2ZpbGVuYW1lLCRtYWlsZHVtcCkpeyBlY2hvIHozcSh6OXkoIjQ0OSIsJGVtYWlsc19maWxlbmFtZSkpOyB9ZWxzZXsgZWNobyB6M3Eoejl5KCI0NTAiKSk7IH0gfWVsc2V7IGVjaG8gejNxKHo5eSgiNDUwIikpOyB9IH0gfSB9IH0gaWYoJHNxbF9hY3Q9PSJzZXJ2ZXJzdGF0dXMiKXsgZWNobyB6M3Eoejl5KCIzNzgiKSwiMSIpOyAkc3FsLT5xdWVyeSgiU0hPVyBTVEFUVVMiKTsgaWYoJHNxbC0+Z2V0X3Jlc3VsdCgpKXsgZWNobyB6OW0oJzInKS56N3UoejljKHo5eSgiMzgwIiksIjEzIiwiMiIpLno5Yyh6OXkoIjM4MSIpLCIxMyIsIjMiKSk7IGZvcigkaT0wOyRpPCRzcWwtPm51bV9yb3dzOyRpKyspeyBlY2hvIHo2ZigoJGklMj8nMCc6JzEnKSk7ICRjcj0wOyBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRyaz0+JHJ2KXsgZWNobyB6OWMoJHJ2LCIxNCIsKCRjcj09MD8nMjUnOigkY3I9PShAY291bnQoJHNxbC0+cm93c1skaV0pLTEpPyczJzonJykpKTsgJGNyKys7IH0gZWNobyB6N3koKTsgfSBlY2hvIHoxMHEoKTsgfSB9IGlmKCRzcWxfYWN0PT0ic2VydmVydmFycyIpeyBlY2hvIHozcSh6OXkoIjM3OSIpLCIxIik7ICRzcWwtPnF1ZXJ5KCJTSE9XIFZBUklBQkxFUyIpOyBpZigkc3FsLT5nZXRfcmVzdWx0KCkpeyBlY2hvIHo5bSgnMicpLno3dSh6OWMoejl5KCIzODAiKSwiMTMiLCIyIikuejljKHo5eSgiMzgxIiksIjEzIiwiMyIpKTsgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKyl7IGVjaG8gejZmKCgkaSUyPycwJzonMScpKTsgJGNyPTA7IGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJHJrPT4kcnYpeyBlY2hvIHo5YygkcnYsIjE0IiwoJGNyPT0wPycyNSc6KCRjcj09KEBjb3VudCgkc3FsLT5yb3dzWyRpXSktMSk/JzMnOicnKSkpOyAkY3IrKzsgfSBlY2hvIHo3eSgpOyB9IGVjaG8gejEwcSgpOyB9IH0gaWYoJHNxbF9hY3Q9PSJwcm9jZXNzZXMiKXsgaWYoQGlzc2V0KCRraWxsKSYmIUBlbXB0eSgka2lsbCkpeyAkcXVlcnk9IktJTEwgIi4ka2lsbC4iOyI7ICRzcWwtPnF1ZXJ5KCRxdWVyeSk7IGVjaG8gejNxKHo5eSgiMzkzIiwka2lsbCksIjEiKTsgfSBlbHNlIHsgZWNobyB6M3Eoejl5KCIzODIiKSwiMSIpOyB9ICRzcWwtPnF1ZXJ5KCJTSE9XIFBST0NFU1NMSVNUOyIpOyBpZigkc3FsLT5nZXRfcmVzdWx0KCkpeyBlY2hvIHo5bSgnMicpLno3dSh6OWMoejl5KCIzODMiKSwiMTMiLCIyIikuejljKHo5eSgiMzg0IiksIjEzIikuejljKHo5eSgiMzg1IiksIjEzIikuejljKHo5eSgiMzg2IiksIjEzIikuejljKHo5eSgiMzg3IiksIjEzIikuejljKHo5eSgiMzg4IiksIjEzIikuejljKHo5eSgiMzg5IiksIjEzIikuejljKHo5eSgiMzkwIiksIjEzIikuejljKHo5eSgiMzkxIiksIjEzIiwiMyIpKTsgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKyl7IGVjaG8gejZmKCgkaSUyPycwJzonMScpKTsgJGNyPTA7ICRwaWQ9Jyc7IGZvcmVhY2goJHNxbC0+cm93c1skaV0gYXMgJHJrPT4kcnYpeyBlY2hvIHo5YygkcnYsIjE0IiwoJGNyPT0wPyc1JzonJykpOyBpZigkY3I9PTApICRwaWQ9JHJ2OyAkY3IrKzsgfSBlY2hvIHo5Yyh6NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0Ij0+InByb2Nlc3NlcyIsImtpbGwiPT4kcGlkKSx6OGIoejl5KCIzOTIiKSwiNyIpKSwiMTQiKTsgZWNobyB6N3koKTsgfSBlY2hvIHoxMHEoKTsgfSB9IGlmKCRzcWxfYWN0PT0ic2hvd2RiIil7ICRwc3FsX3NvcnQ9ejVyKCRzcWxfc29ydCk7IGlmKCRwc3FsX3NvcnRbMV0hPSdhJykgJHBzcWxfc29ydFsxXT0nZCc7IGlmKCRwc3FsX3NvcnRbMF0+MikgJHBzcWxfc29ydFswXT0nMCc7ICR2PSRwc3FsX3NvcnRbMF07IGVjaG8gejNxKHo5eSgiMzU5IiksIjEiKTsgZWNobyB6OW0oJzInKTsgZWNobyB6N3UoIHo5Yyh6NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfc29ydCI9PigkcHNxbF9zb3J0WzBdPT0nMCc/JzAnLigkcHNxbF9zb3J0WzFdPT0iYSI/ImQiOiJhIik6JzAnLiRwc3FsX3NvcnRbMV0pKSx6OGIoejl5KCIzNjAiKS4oJHBzcWxfc29ydFswXT09JzAnPycgJy4oJHBzcWxfc29ydFsxXT09ImEiPycmdWFycjsnOicmZGFycjsnKTonJyksJzMnKSksIjEzIiwiMiIpLiB6OWMoejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX3NvcnQiPT4oJHBzcWxfc29ydFswXT09JzEnPycxJy4oJHBzcWxfc29ydFsxXT09ImEiPyJkIjoiYSIpOicxJy4kcHNxbF9zb3J0WzFdKSksejhiKHo5eSgiMzYxIikuKCRwc3FsX3NvcnRbMF09PScxJz8nICcuKCRwc3FsX3NvcnRbMV09PSJhIj8nJnVhcnI7JzonJmRhcnI7Jyk6JycpLCczJykpLCIxMyIpLiB6OWMoejV4KGFycmF5KCJhY3QiPT4ic3FsIiwiZCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX3NvcnQiPT4oJHBzcWxfc29ydFswXT09JzInPycyJy4oJHBzcWxfc29ydFsxXT09ImEiPyJkIjoiYSIpOicyJy4kcHNxbF9zb3J0WzFdKSksejhiKHo5eSgiMzYyIikuKCRwc3FsX3NvcnRbMF09PScyJz8nICcuKCRwc3FsX3NvcnRbMV09PSJhIj8nJnVhcnI7JzonJmRhcnI7Jyk6JycpLCczJykpLCIxMyIpLiB6OWMoejl5KCIzNjMiKSwiMTMiLCIzIikgKTsgaWYoQGNvdW50KCRkYl9saXN0KT4xKXsgJGRlZl9kYj0kc3FsLT5iYXNlOyAkdG90YWxfdGFibGVzPTA7ICR0b3RhbF9zaXplPTA7ICRwcmludF9hcnI9YXJyYXkoKTsgZm9yZWFjaCgkc3FsLT5saXN0X2RicygpIGFzICRrPT4ka3YpeyAkc3FsLT5iYXNlPSRrOyAkdGFibGVzPSIwIjsgJHNpemU9IjAiOyBpZigkc3FsLT5zZWxlY3RfZGIoKSl7ICRzcWwtPnF1ZXJ5KCJTSE9XIFRBQkxFUzsiKTsgaWYoJHNxbC0+Z2V0X3Jlc3VsdCgpKSAkdGFibGVzPSRzcWwtPm51bV9yb3dzOyAkc3FsLT5xdWVyeSgiU0VMRUNUIHJvdW5kKGRhdGFfbGVuZ3RoICsgaW5kZXhfbGVuZ3RoKSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5UQUJMRVMgV0hFUkUgdGFibGVfc2NoZW1hID0gXCIiLiRrLiJcIjsiKTsgaWYoJHNxbC0+Z2V0X3Jlc3VsdCgpKSAkc2l6ZT1AaW1wbG9kZSgnJywkc3FsLT5yb3dzWzBdKTsgfSAkcHJpbnRfYXJyW109YXJyYXkoJGssJHNpemUsJHRhYmxlcyk7ICR0b3RhbF90YWJsZXMrPSR0YWJsZXM7ICR0b3RhbF9zaXplKz0kc2l6ZTsgfSAkc3FsLT5iYXNlPSRkZWZfZGI7ICRzcWwtPnNlbGVjdF9kYigpOyB9IGlmKEBjb3VudCgkcHJpbnRfYXJyKT4wKXsgJGNvdW50PTA7IEB1c29ydCgkcHJpbnRfYXJyLCJ6MmIiKTsgaWYoJHBzcWxfc29ydFsxXT09ImQiKXsgJHByaW50X2Fycj1AYXJyYXlfcmV2ZXJzZSgkcHJpbnRfYXJyKTsgfSBmb3JlYWNoKCRwcmludF9hcnIgYXMgJGFyKXsgZWNobyB6N3UoejljKHo1eChhcnJheSgiYWN0Ij0+InNxbCIsInNxbF9zZXJ2ZXIiLCJzcWxfdXNlciIsInNxbF9wYXNzIiwic3FsX3BvcnQiLCJzcWxfZW5naW5lIiwic3FsX2FjdCI9PiJkYl9hY3QiLCJkYl9hY3QiPT4ic2VsZWN0IiwiZCIsInNxbF9kYiI9PiRhclswXSksejhiKCRhclswXSwiMTEiKSksIjE0IiwiMiIpLno5Yyh6N3goJGFyWzFdKSwiMTQiKS56OWMoJGFyWzJdLCIxNCIpLno5YygiPG5vYnI+Ii56NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwic3FsX3NlcnZlciIsInNxbF91c2VyIiwic3FsX3Bhc3MiLCJzcWxfcG9ydCIsInNxbF9lbmdpbmUiLCJzcWxfYWN0Ij0+ImRiX2FjdCIsInNxbF9kYiI9PiRhclswXSksejNtKCJkYl9hY3QiLCRkYl9hY3Rpb25zLCIzIikuejhiKCImcmFxdW87IiwiNiIpKS4iPC9ub2JyPiIsIjE0IiwiMzgiKSwoJGNvdW50JTI/JzAnOicxJykpOyAkY291bnQrKzsgfSBlY2hvIHo3dSh6OWMoejduKHo5eSgiNDA5IiwkY291bnQpKSwiMTMiLCIyIikuejljKHo3eCgkdG90YWxfc2l6ZSksIjEzIikuejljKCR0b3RhbF90YWJsZXMsIjEzIikuejljKHo5eCgpLCIxMyIsIjMiKSk7IH0gZWNobyB6MTBxKCk7IH0gfSB9IGVsc2UgeyAkaG1zZz16OXkoIjE5MSIpOyB9IH0gaWYoISRoaWRlY29ubmVjdCl7IGlmKCFAaXNzZXQoJHFfc3FsX3F1ZXJ5KSkgJHFfc3FsX3F1ZXJ5PSJTSE9XIERBVEFCQVNFUztcblNFTEVDVCAqIEZST00gdXNlcjsiOyBpZighQGlzc2V0KCRxX3NxbF9maWxlbmFtZSkpICRxX3NxbF9maWxlbmFtZT0kdGVtcGRpci4iZHVtcF8iLkBnZXRlbnYoIlNFUlZFUl9OQU1FIikuIl9kYl8iLkBkYXRlKCJkLW0tWV9ILWktcyIpLiIuc3FsIjsgJGF2YWlsYWJsZV9hcnI9YXJyYXkoKTsgaWYoJGJteXNxbCkgJGF2YWlsYWJsZV9hcnJbIk15U1FMIl09Ik15U1FMIjsgaWYoJGJtc3NxbCkgJGF2YWlsYWJsZV9hcnJbIk1TU1FMIl09Ik1TU1FMIjsgaWYoJGJwb3N0Z3JlcykgJGF2YWlsYWJsZV9hcnJbIlBvc3RncmVTUUwiXT0iUG9zdGdyZVNRTCI7IGlmKCRib3JhY2xlKSAkYXZhaWxhYmxlX2FyclsiT3JhY2xlIl09Ik9yYWNsZSI7IGVjaG8gejNxKHo5eSgiNDUxIikuKCRobXNnIT0nJz8nIDogJy4kaG1zZzonJykpOyBlY2hvIHo5bSgnMicpLiB6NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiksIHo1YigpLiB6N3UoejZ6KHo3bih6OXkoIjQ1MiIpKSkuejdrKHo1eSgic3FsX3NlcnZlciIsIjEyNy4wLjAuMSIsIjQiKS4iOiIuejV5KCJzcWxfcG9ydCIsIjMzMDYiLCIxIikpLno2eih6N24oejl5KCI0NTMiKSkpLno3ayh6NXkoInNxbF91c2VyIiwicm9vdCIsIjQiKSkuejZ6KHo3bih6OXkoIjQ1NCIpKSkuejdrKHo1eSgic3FsX3Bhc3MiLCIiLCI0IikpLno2eih6N24oejl5KCI0NTUiKSkpLno3ayh6NXkoInNxbF9kYiIsIiIsIjQiKSkuejZ6KHo3bih6OXkoIjQ1NiIpKSkuejdrKHozbSgic3FsX2VuZ2luZSIsYXJyYXkoIk15U1FMIj0+Ik15U1FMIiksIjQiLDEpLno4Yih6OXkoIjQ1NyIpLCI3IikpKSApLiB6MTBxKCk7IGVjaG8gejZzKCk7IGVjaG8gejNxKGFycmF5KHo5eSgiNDEwIiksejl5KCI0MjAiKSksJzQ2Jyk7IGVjaG8gejltKCcyJykuIHo5ZCggejljKCB6NXgoYXJyYXkoImFjdCI9PiJzcWwiLCJkIiwicV9zcWxfYWN0aW9uIj0+ImR1bXAiKSwgejltKCkuIHo1YigpLiB6N3UoejV0KHo5eSgiNDExIikpLno5Yyh6M20oInFfc3FsX2VuZ2luZSIsJGF2YWlsYWJsZV9hcnIsIjQiLDEpKSkuIHo3dSh6NXQoejl5KCI0MTIiKSkuejljKHo1eSgicV9zcWxfc2VydmVyIiwiMTI3LjAuMC4xIiwnNCcpLiI6Ii56NXkoInFfc3FsX3BvcnQiLCIzMzA2IiwiMSIpKSkuIHo3dSh6NXQoejl5KCI0MTMiKSkuejljKHo1eSgicV9zcWxfdXNlciIsInJvb3QiLCI0IikuIjoiLno1eSgicV9zcWxfcGFzcyIsIiIsIjQiKSkpLiB6N3UoejV0KHo5eSgiNDE0IikpLno5Yyh6NXkoInFfc3FsX2RiIiwibXlzcWwiLCI0IikuIi4iLno1eSgicV9zcWxfdGFibGUiLCJ1c2VyIiwiNCIpKSkuIHo3dSh6NXQoejl5KCI0MTUiKSkuejljKHo1eSgicV9zcWxfZmlsZW5hbWUiLCRxX3NxbF9maWxlbmFtZSwiOCIpKSkuIHo3dSh6NXQoejl4KCkpLno5Yyh6NXUoInFfc3FsX2Rvd25sb2FkIix6OXkoIjQxNiIpLCJxX3NxbF9kb3dubG9hZCIpKSkuIHo3dSh6NXQoejl4KCkpLno5Yyh6NXUoInFfc3FsX3NhdmUyZmlsZSIsejl5KCI0MTciKSwicV9zcWxfc2F2ZTJmaWxlIikpKS4gejd1KHo1dCh6OXgoKSkuejljKHo4Yih6OXkoIjQxOCIpLCI3IikpKS4gejViKCkuIHoxMHEoKSApICwnJywnNCcpLiB6OWMoIHo1eChhcnJheSgiYWN0Ij0+InNxbCIsImQiLCJxX3NxbF9hY3Rpb24iPT4icXVlcnkiKSwgejltKCkuIHo1YigpLiB6N3UoejV0KHo5eSgiNDExIikpLno5Yyh6M20oInFfc3FsX2VuZ2luZSIsJGF2YWlsYWJsZV9hcnIsIjQiLDEpKSkuIHo3dSh6NXQoejl5KCI0MTIiKSkuejljKHo1eSgicV9zcWxfc2VydmVyIiwiMTI3LjAuMC4xIiwiNCIpLiI6Ii56NXkoInFfc3FsX3BvcnQiLCIzMzA2IiwiMSIpKSkuIHo3dSh6NXQoejl5KCI0MTMiKSkuejljKHo1eSgicV9zcWxfdXNlciIsInJvb3QiLCI0IikuIjoiLno1eSgicV9zcWxfcGFzcyIsIiIsIjQiKSkpLiB6N3UoejV0KHo5eSgiNDIxIikpLno5Yyh6NXkoInFfc3FsX2RiIiwibXlzcWwiLCI0IikpKS4gejlkKHo1dCh6OXkoIjM3MCIpKS56OWMoejV3KCJxX3NxbF9xdWVyeSIsIjQiKS5AaHRtbHNwZWNpYWxjaGFycygkcV9zcWxfcXVlcnkpLno1cSgpKSkuIHo3dSh6NXQoejl4KCkpLno5Yyh6OGIoejl5KCI0MjIiKSwiNyIpKSkuIHo1YigpLiB6MTBxKCkgKSAsJycsIjQ2IikgKS4gejEwcSgpOyBpZihAaXNzZXQoJHFfc3FsX2FjdGlvbikmJiRxX3NxbF9hY3Rpb249PSJxdWVyeSIpeyAkc3FsPW5ldyBteV9zcWwoKTsgJHNxbC0+ZGI9JHFfc3FsX2VuZ2luZTsgJHNxbC0+aG9zdD0kcV9zcWxfc2VydmVyOyAkc3FsLT5wb3J0PSRxX3NxbF9wb3J0OyAkc3FsLT51c2VyPSRxX3NxbF91c2VyOyAkc3FsLT5wYXNzPSRxX3NxbF9wYXNzOyAkc3FsLT5iYXNlPSRxX3NxbF9kYjsgJHF1ZXJ5cz1AZXhwbG9kZSgnOycsJHFfc3FsX3F1ZXJ5KTsgJHFfc3FsX2Nvbm5lY3RfZXJyb3I9IiI7ICRxX3NxbF9lcnJvcj0nJzsgJHFfc3FsX3Jlc3VsdD0nJzsgaWYoISRzcWwtPmNvbm5lY3QoKSkgJHFfc3FsX2Nvbm5lY3RfZXJyb3I9ejNxKHo5eSgiNDE5IikpOyBlbHNleyBpZighZW1wdHkoJHNxbC0+YmFzZSkmJiEkc3FsLT5zZWxlY3RfZGIoKSkgJHFfc3FsX2Nvbm5lY3RfZXJyb3I9ejNxKHo5eSgiNDQ3IikpOyBlbHNleyBmb3JlYWNoKCRxdWVyeXMgYXMgJG51bT0+JHF1ZXJ5KXsgaWYoQHN0cmxlbigkcXVlcnkpPjUpeyAkcV9zcWxfcmVzdWx0Lj16M3Eoejl5KCI0MjMiLCBhcnJheSgkbnVtLEBodG1sc3BlY2lhbGNoYXJzKCRxdWVyeSxFTlRfUVVPVEVTKSkpKTsgc3dpdGNoKCRzcWwtPnF1ZXJ5KCRxdWVyeSkpeyBjYXNlICcwJzogJHFfc3FsX3Jlc3VsdC49ejNxKCJFUlJPUiA6ICIuJHNxbC0+ZXJyb3IpOyBicmVhazsgY2FzZSAnMSc6IGlmKCRzcWwtPmdldF9yZXN1bHQoKSl7ICRxX3NxbF9yZXN1bHQuPXo5bSgnMicpLno3bygpLno3aigpLno1eignJywiMCIpLno5bSgiMiIpLno3bygpLno3aigpOyBmb3JlYWNoKCRzcWwtPmNvbHVtbnMgYXMgJGs9PiR2KSAkc3FsLT5jb2x1bW5zWyRrXT1AaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsgJGtleXM9IiI7ICRjb3VudF9rZXlzPUBjb3VudCgkc3FsLT5jb2x1bW5zKTsgJGtleV9udW09MDsgZm9yZWFjaCgkc3FsLT5jb2x1bW5zIGFzICRjb2x1bW4peyBpZigka2V5X251bT09MCl7ICRrZXlzLj16OWMoJGNvbHVtbiwiMTMiLCAiMDIiKTsgfWVsc2VpZigka2V5X251bT09KCRjb3VudF9rZXlzLTEpKXsgJGtleXMuPXo5YygkY29sdW1uLCIxMyIsICIwMyIpOyB9ZWxzZXsgJGtleXMuPXo5YygkY29sdW1uLCIxMyIsIjAiKTsgfSAka2V5X251bSsrOyB9ICRxX3NxbF9yZXN1bHQuPXo3dSgka2V5cyk7IGZvcigkaT0wOyRpPCRzcWwtPm51bV9yb3dzOyRpKyspeyBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRrPT4kdikgJHNxbC0+cm93c1skaV1bJGtdPUBodG1sc3BlY2lhbGNoYXJzKCR2LEVOVF9RVU9URVMpOyAkdmFsdWVzPSIiOyAkY291bnRfdmFsdWVzPUBjb3VudCgkc3FsLT5yb3dzWyRpXSk7ICR2YWx1ZV9udW09MDsgZm9yZWFjaCgkc3FsLT5yb3dzWyRpXSBhcyAkcm93KXsgaWYoJHZhbHVlX251bT09MCl7ICR2YWx1ZXMuPXo5Yygkcm93LCIxNCIsIjIiKTsgfWVsc2VpZigkdmFsdWVfbnVtPT0oJGNvdW50X3ZhbHVlcy0xKSl7ICR2YWx1ZXMuPXo5Yygkcm93LCIxNCIsIjMiKTsgfWVsc2V7ICR2YWx1ZXMuPXo5Yygkcm93LCIxNCIpOyB9ICR2YWx1ZV9udW0rKzsgfSAkcV9zcWxfcmVzdWx0Lj16N3UoJHZhbHVlcywoJGklMj8nMCc6JzEnKSk7IH0gJHFfc3FsX3Jlc3VsdC49ejdmKCkuejd5KCkuejEwcSgpLno1aCgpLno3ZigpLno3eSgpLnoxMHEoKTsgfSBicmVhazsgY2FzZSAnMic6ICRhcj0kc3FsLT5hZmZlY3RlZF9yb3dzKCk/KCRzcWwtPmFmZmVjdGVkX3Jvd3MoKSk6KCcwJyk7ICRxX3NxbF9yZXN1bHQuPXozcSgiQUZGRUNURUQgUk9XUzogIi4kYXIpOyBicmVhazsgfSB9IGlmKCRxX3NxbF9yZXN1bHQhPScnKXsgZWNobyAkcV9zcWxfcmVzdWx0OyAkcV9zcWxfcmVzdWx0PScnOyB9IH0gfSB9IGlmKCRxX3NxbF9jb25uZWN0X2Vycm9yIT0iIil7IGVjaG8gJHFfc3FsX2Nvbm5lY3RfZXJyb3I7IH0gfSBpZihAaXNzZXQoJHFfc3FsX2FjdGlvbikmJiRxX3NxbF9hY3Rpb249PSJkdW1wIil7ICRmcD0wOyBpZihAaXNzZXQoJHFfc3FsX3NhdmUyZmlsZSkmJiRxX3NxbF9zYXZlMmZpbGU9PSIxIiYmQGlzc2V0KCRxX3NxbF9maWxlbmFtZSkmJiFAZW1wdHkoJHFfc3FsX2ZpbGVuYW1lKSl7ICRmcD1AZm9wZW4oJHFfc3FsX2ZpbGVuYW1lLCJ3Iik7IH0gJHFfc3FsX2ZpbGVuYW1lPUBzdHJfcmVwbGFjZSgiX2RiXyIsIl8iLiRxX3NxbF9kYi4iXyIsJHFfc3FsX2ZpbGVuYW1lKTsgJHNxbD1uZXcgbXlfc3FsKCk7ICRzcWwtPmRiPSRxX3NxbF9lbmdpbmU7ICRzcWwtPmhvc3Q9JHFfc3FsX3NlcnZlcjsgJHNxbC0+cG9ydD0kcV9zcWxfcG9ydDsgJHNxbC0+dXNlcj0kcV9zcWxfdXNlcjsgJHNxbC0+cGFzcz0kcV9zcWxfcGFzczsgJHNxbC0+YmFzZT0kcV9zcWxfZGI7ICRxX3NxbF9kdW1wZWQ9IiI7IGlmKCEkc3FsLT5jb25uZWN0KCkpeyBlY2hvIHozcSh6OXkoIjQxOSIpKTsgfWVsc2VpZighJHNxbC0+c2VsZWN0X2RiKCkpeyBlY2hvIHozcSh6OXkoIjQ0NyIpKTsgfWVsc2VpZighJHNxbC0+ZHVtcCgkcV9zcWxfdGFibGUpKXsgZWNobyB6M3Eoejl5KCI0NTgiKSk7IH1lbHNleyBmb3JlYWNoKCRzcWwtPmR1bXAgYXMgJHYpICRxX3NxbF9kdW1wZWQuPSR2LiJcclxuIjsgaWYoQGlzc2V0KCRxX3NxbF9kb3dubG9hZCkmJiRxX3NxbF9kb3dubG9hZD09IjEiKXsgQG9iX2NsZWFuKCk7IEBoZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7IEBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLkBzdHJsZW4oJHFfc3FsX2R1bXBlZCkpOyBAaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuQGJhc2VuYW1lKCRxX3NxbF9maWxlbmFtZSkuIlwiOyIpOyBlY2hvICRxX3NxbF9kdW1wZWQ7IGV4aXQoKTsgfSBpZighQGlzc2V0KCRxX3NxbF9zYXZlMmZpbGUpfHwkcV9zcWxfc2F2ZTJmaWxlIT0iMSIpeyBlY2hvIHo5bSgnMicpLno2ZigpLno2cSgpLno1dygnJywnMScpLkBodG1sc3BlY2lhbGNoYXJzKCRxX3NxbF9kdW1wZWQpLno1cSgpLno3ZigpLno3eSgpLnoxMHEoKS56NnMoKTsgfWVsc2UgaWYoJGZwfHxAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpKXsgaWYoQGZ3cml0ZSgkZnAsJHFfc3FsX2R1bXBlZCkgb3IgQGZwdXRzKCRmcCwkcV9zcWxfZHVtcGVkKSBvciBAZmlsZV9wdXRfY29udGVudHMoJHFfc3FsX2ZpbGVuYW1lLCRxX3NxbF9kdW1wZWQpKXsgejNxKHo5eSgiNDU5IikpOyB9ZWxzZXsgZWNobyB6M3Eoejl5KCI0NTAiKSk7IH0gfWVsc2V7IGVjaG8gejNxKHo5eSgiNDUwIikpOyB9IH0gfSB9IH0gaWYoJGFjdD09InNlbGZyZW1vdmUiKXsgaWYoQGlzc2V0KCRkY29uZmlybSkmJiRkY29uZmlybSl7IGlmKCRzYWRkciE9IjEyNy4wLjAuMSIpIGVjaG8gejNxKChAdW5saW5rKF9fRklMRV9fKT96OXkoIjQ2MiIpOno5eSgiNDYzIixfX0ZJTEVfXykpKTsgfSBlbHNlIHsgZWNobyB6M3Eoejl5KCI0NjAiKSk7IGVjaG8gejZzKCkuejEwdyh6N3UoejZsKHo3bih6OXkoIjQ2MSIpKS56NXgoYXJyYXkoImFjdCI9PiJzZWxmcmVtb3ZlIiwiZCIsImRjb25maXJtIj0+IjEiKSx6OGIoejl5KCIyMSIpLCI3IikpLno5eCgpLno1eCgkYmFja19mb3JtX2FjdGlvbnMsejhiKHo5eSgiMjIiKSwnNycpKSkpLCIyIikuejZzKCk7IH0gfSBpZigkYWN0PT0nZnRwJyl7ICRhX3RyYW5zZmVyPWFycmF5KCJGVFBfQklOQVJZIj0+IkZUUF9CSU5BUlkiLCAiRlRQX0FTQ0lJIj0+IkZUUF9BU0NJSSIpOyAkaG1zZz0nJzsgJGhpZGVjb25uZWN0PTA7ICRqc2lkPTA7IGlmKEBpc3NldCgkZnRwX3NlcnZlcikmJiFAaXNzZXQoJGZ0cF9wYXNzaXZlKSkgJGZ0cF9wYXNzaXZlPTA7IGlmKCFAaXNzZXQoJGZ0cF9zZXJ2ZXIpJiYhQGlzc2V0KCRmdHBfcGFzc2l2ZSkpICRmdHBfcGFzc2l2ZT0iMSI7IGlmKEBpc3NldCgkZnQpJiYkZnQ9PSJsb2dvZmYiKXsgaWYoQGlzc2V0KCRfU0VTU0lPTlsnZnRwX3NlcnZlciddKSl7IHowaSgnZnRwX2N1cnJlbnRfZGlyJy4kX1NFU1NJT05bJ2Z0cF9zZXJ2ZXInXSk7IH0gejBpKCdmdHBfc2VydmVyJyk7IHowaSgnZnRwX3VzZXJuYW1lJyk7IHowaSgnZnRwX3Bhc3N3b3JkJyk7IHowaSgnZnRwX3BvcnQnKTsgejBpKCdmdHBfcGFzc2l2ZScpOyB6MGkoJ2Z0cF9zZXNzaW9uJyk7IH0gJGZ0cF9zZXNzaW9uPTA7IGlmKEBpc3NldCgkX1NFU1NJT05bJ2Z0cF9zZXNzaW9uJ10pKXsgJGZ0cF9zZXJ2ZXI9JF9TRVNTSU9OWydmdHBfc2VydmVyJ107ICRmdHBfdXNlcm5hbWU9JF9TRVNTSU9OWydmdHBfdXNlcm5hbWUnXTsgJGZ0cF9wYXNzd29yZD0kX1NFU1NJT05bJ2Z0cF9wYXNzd29yZCddOyAkZnRwX3BvcnQ9JF9TRVNTSU9OWydmdHBfcG9ydCddOyAkZnRwX3Bhc3NpdmU9JF9TRVNTSU9OWydmdHBfcGFzc2l2ZSddOyAkZnRwX3Nlc3Npb249MTsgfSBpZighQGVtcHR5KCRmdHBfc2VydmVyKSYmIUBlbXB0eSgkZnRwX3BvcnQpJiYhQGVtcHR5KCRmdHBfdXNlcm5hbWUpJiYhQGVtcHR5KCRmdHBfcGFzc3dvcmQpJiYhQGlzc2V0KCRmdHBfcXVpY2thY3Rpb24pKXsgJGZ0cD1uZXcgZnRwKCRmdHBfc2VydmVyLCRmdHBfcG9ydCwkZnRwX3VzZXJuYW1lLCRmdHBfcGFzc3dvcmQsJGZ0cF9wYXNzaXZlKTsgaWYoJGZ0cC0+bG9nZ2VkT24peyBpZighQGlzc2V0KCRmdHBfY3VycmVudF9kaXIpfHxAZW1wdHkoJGZ0cF9jdXJyZW50X2RpcikpeyAkZnRwX2N1cnJlbnRfZGlyPXoxaygoQGlzc2V0KCRfU0VTU0lPTlsnZnRwX2N1cnJlbnRfZGlyJy4kZnRwX3NlcnZlcl0pPyRfU0VTU0lPTlsnZnRwX2N1cnJlbnRfZGlyJy4kZnRwX3NlcnZlcl06Jy8nKSk7IH0gaWYoQGlzc2V0KCRyZCkpICRmdHBfY3VycmVudF9kaXIgPSB6MWsoJGZ0cF9jdXJyZW50X2Rpci4kcmQpOyAkZnRwLT5zZXRDdXJyZW50RGlyKCRmdHBfY3VycmVudF9kaXIpOyAkZnRwX2N1cnJlbnRfZGlyPSRmdHAtPmN1cnJlbnREaXI7ICRfU0VTU0lPTlsnZnRwX2N1cnJlbnRfZGlyJy4kZnRwX3NlcnZlcl09JGZ0cF9jdXJyZW50X2RpcjsgJF9TRVNTSU9OWydmdHBfc2VydmVyJ109JGZ0cF9zZXJ2ZXI7ICRfU0VTU0lPTlsnZnRwX3VzZXJuYW1lJ109JGZ0cF91c2VybmFtZTsgJF9TRVNTSU9OWydmdHBfcGFzc3dvcmQnXT0kZnRwX3Bhc3N3b3JkOyAkX1NFU1NJT05bJ2Z0cF9wb3J0J109JGZ0cF9wb3J0OyAkX1NFU1NJT05bJ2Z0cF9wYXNzaXZlJ109JGZ0cF9wYXNzaXZlOyAkX1NFU1NJT05bJ2Z0cF9zZXNzaW9uJ109MTsgJGhpZGVjb25uZWN0PTE7ICRobXNnPXo1eChhcnJheSgiYWN0Ij0+ImZ0cCIsImQiLCJmdCI9PiJsb2dvZmYiKSx6OGIoejl5KCIxOTYiKSwgIjEiKSk7IH0gZWxzZSB7ICRobXNnPXo5eSgiMTkxIik7IH0gfSBpZighQGlzc2V0KCRmdHBfc2VydmVyKXx8QGVtcHR5KCRmdHBfc2VydmVyKSkgJGZ0cF9zZXJ2ZXI9IjEyNy4wLjAuMSI7IGlmKCFAaXNzZXQoJGZ0cF9wb3J0KXx8QGVtcHR5KCRmdHBfcG9ydCkpICRmdHBfcG9ydD0iMjEiOyBpZighQGlzc2V0KCRmdHBfdXNlcm5hbWUpfHxAZW1wdHkoJGZ0cF91c2VybmFtZSkpICRmdHBfdXNlcm5hbWU9ImFub255bW91cyI7IGlmKCFAaXNzZXQoJGZ0cF9wYXNzd29yZCl8fEBlbXB0eSgkZnRwX3Bhc3N3b3JkKSkgJGZ0cF9wYXNzd29yZD0iYW5vbnltb3VzQGZ0cC5jb20iOyBpZighQGlzc2V0KCRmdHBfbG9jYWxmaWxlKXx8QGVtcHR5KCRmdHBfbG9jYWxmaWxlKSkgJGZ0cF9sb2NhbGZpbGU9JGQ7IGlmKCFAaXNzZXQoJGZ0cF9yZW1vdGVmaWxlKXx8QGVtcHR5KCRmdHBfcmVtb3RlZmlsZSkpICRmdHBfcmVtb3RlZmlsZT0iL2Z0cC1kaXIvc29tZWZpbGUudHh0IjsgaWYoJGhpZGVjb25uZWN0KXsgaWYoQGlzc2V0KCRsbWtkaXIpJiYkbG1rZGlyJiZAaXNzZXQoJGxkaXIpJiYhQGVtcHR5KCRsZGlyKSl7IEBta2RpcigkZC4kbGRpcik7IH0gaWYoQGlzc2V0KCRmbWtkaXIpJiYkZm1rZGlyJiZAaXNzZXQoJGZkaXIpJiYhQGVtcHR5KCRmZGlyKSl7ICRmdHAtPm1ha2VEaXIoejFrKCRmdHBfY3VycmVudF9kaXIpLiRmZGlyKTsgfSAkbHRhcnI9YXJyYXkoKTsgJHJ0YXJyPWFycmF5KCk7IGlmKEBpc3NldCgkYWN0aW9uKSYmIUBlbXB0eSgkYWN0aW9uKSYmKEBpc3NldCgkbHRhbGwpfHxAaXNzZXQoJHJ0YWxsKSkpeyAkZnQ9JGFjdGlvbjsgaWYoQGlzc2V0KCRydGFsbCl8fEBzdHJzdHIoJHJ0YWxsLCJcbiIpKXsgJHJ0YXJyPUBleHBsb2RlKCJcbiIsICRydGFsbCk7IH0gZWxzZWlmKEBpc3NldCgkbHRhbGwpfHxAc3Ryc3RyKCRsdGFsbCwiXG4iKSl7ICRsdGFycj1AZXhwbG9kZSgiXG4iLCAkbHRhbGwpOyB9IH0gaWYoQGlzc2V0KCRmdCkpeyBzd2l0Y2goJGZ0KXsgY2FzZSAiZGVsZXRlIjogaWYoQGlzc2V0KCRsdCkmJiFAZW1wdHkoJGx0KSYmejRyKCRsdCkpeyB6OHMoJGx0KTsgfSBlbHNlaWYoQGlzc2V0KCRydCkmJiFAZW1wdHkoJHJ0KSkgeyAkZnRwLT5kZWxldGVPYmplY3QoejFrKCRmdHBfY3VycmVudF9kaXIpLiRydCk7IH0gZWxzZWlmKEBjb3VudCgkbHRhcnIpPjApeyBmb3JlYWNoKCRsdGFyciBhcyAkbHRvKXsgJGx0bz1AdHJpbSgkbHRvKTsgaWYoIUBlbXB0eSgkbHRvKSYmejRyKCRsdG8pKXsgejhzKCRsdG8pOyB9IH0gfSBlbHNlaWYoQGNvdW50KCRydGFycik+MCl7IGZvcmVhY2goJHJ0YXJyIGFzICRydG8peyAkcnRvPUB0cmltKCRydG8pOyBpZighQGVtcHR5KCRydG8pKXsgJGZ0cC0+ZGVsZXRlT2JqZWN0KHoxaygkZnRwX2N1cnJlbnRfZGlyKS4kcnRvKTsgfSB9IH0gYnJlYWs7IGNhc2UgInVwbG9hZCI6IGlmKEBpc3NldCgkbHQpJiYhQGVtcHR5KCRsdCkmJno0cigkbHQpKXsgJGZ0cC0+cHV0T2JqZWN0KCRsdCwgejFrKCRmdHBfY3VycmVudF9kaXIpKTsgfSBlbHNlaWYoQGNvdW50KCRsdGFycik+MCl7IGZvcmVhY2goJGx0YXJyIGFzICRsdG8peyAkbHRvPUB0cmltKCRsdG8pOyBpZighQGVtcHR5KCRsdG8pJiZ6NHIoJGx0bykpeyAkZnRwLT5wdXRPYmplY3QoJGx0bywgejFrKCRmdHBfY3VycmVudF9kaXIpKTsgfSB9IH0gYnJlYWs7IGNhc2UgImRvd25sb2FkIjogaWYoQGlzc2V0KCRydCkmJiFAZW1wdHkoJHJ0KSkgeyAkZnRwLT5nZXRPYmplY3QoejFrKCRmdHBfY3VycmVudF9kaXIpLiRydCwgJGQpOyB9IGVsc2VpZihAY291bnQoJHJ0YXJyKT4wKXsgZm9yZWFjaCgkcnRhcnIgYXMgJHJ0byl7ICRydG89QHRyaW0oJHJ0byk7IGlmKCFAZW1wdHkoJHJ0bykpeyAkZnRwLT5nZXRPYmplY3QoejFrKCRmdHBfY3VycmVudF9kaXIpLiRydG8sICRkKTsgfSB9IH0gYnJlYWs7IGRlZmF1bHQ6IGJyZWFrOyB9IH0gJGZybWw9ejl5KCIxOTQiKS56OXgoKS56NXgoYXJyYXkoJ2FjdCc9PidmdHAnLCdkJywnbG1rZGlyJz0+JzEnKSx6NnUoJ2xkaXInLCcnLCcyJykuejhiKHo5eSgiMTk1IiksJzcnKSk7ICRmcm1mPXo5eSgiMTk0Iikuejl4KCkuejV4KGFycmF5KCdhY3QnPT4nZnRwJywnZCcsJ2Zta2Rpcic9PicxJyksejZ1KCdmZGlyJywnJywnMicpLno4Yih6OXkoIjE5NSIpLCc3JykpOyBlY2hvIHozcShhcnJheSh6MTB3KHo3dSh6N2soejl5KCIxOTIiKSkuejZ6KCRmcm1sKSksJzInKSx6MTB3KHo3dSh6N2soejl5KCIxOTMiKS56OXgoKS4kaG1zZykuejZ6KCRmcm1mKSksJzInKSksJzQnKTsgJGxpc3RmPSRmdHAtPmZ0cFJhd0xpc3QoKTsgJGxpc3RsPXo4eCgkZCk7ICRsc2w9YXJyYXkoKTsgJGxzbFsiZCJdPWFycmF5KCk7ICRsc2xbImwiXT1hcnJheSgpOyAkbHNsWyJmIl09YXJyYXkoKTsgJGxzZj1hcnJheSgpOyAkbHNmWyJkIl09YXJyYXkoKTsgJGxzZlsibCJdPWFycmF5KCk7ICRsc2ZbImYiXT1hcnJheSgpOyBpZihAaXNfYXJyYXkoJGxpc3RsKSYmQGNvdW50KCRsaXN0bCk+MCl7IGZvcmVhY2goJGxpc3RsIGFzICRsZil7ICRmbj16MmwoJGxmKTsgaWYoJGZuIT0nLicmJiRmbiE9Jy4uJyl7IGlmKHo0aigkbGYpKXsgJGxzbFsiZCJdW109YXJyYXkoJGxmLCAnRElSJyk7IH1lbHNlaWYoejRxKCRsZikpeyAkbHNsWyJsIl1bXT1hcnJheSgkbGYsICdMSU5LJyk7IH0gZWxzZSB7ICRsc2xbImYiXVtdPWFycmF5KCRsZiwgKEBmaWxlc2l6ZSgkbGYpIT09ZmFsc2U/QGZpbGVzaXplKCRsZik6J0ZJTEUnKSk7IH0gfSB9IH0gaWYoQGlzX2FycmF5KCRsaXN0ZikmJkBjb3VudCgkbGlzdGYpPjApeyBmb3JlYWNoKCRsaXN0ZiBhcyAkcmYpeyBpZigkcmZbMV0hPScuJyYmJHJmWzFdIT0nLi4nKXsgaWYoJHJmWzBdPT0nZCcpeyAkbHNmWyJkIl1bXT1hcnJheSgkcmZbMV0sICdESVInKTsgfSBlbHNlaWYoJHJmWzBdPT0nbCcpeyAkcmZkPShAc3Ryc3RyKCRyZlsxXSwnIC0+ICcpP0BzdWJzdHIoJHJmWzFdLDAsQHN0cnBvcygkcmZbMV0sJyAtPiAnKSk6JHJmWzFdKTsgJGxzZlsnbCddW109YXJyYXkoJHJmZCwgJ0xJTksnKTsgfSBlbHNlIHsgJGxzZlsnZiddW109YXJyYXkoJHJmWzFdLCRyZlsyXSk7IH0gfSB9IH0gaWYoIUBpc3NldCgkZmxzb3J0KSl7IGlmKEBpc3NldCgkX1NFU1NJT05bJ2Zsc29ydCddKSl7ICRmbHNvcnQ9JF9TRVNTSU9OWydmbHNvcnQnXTsgfSBlbHNlIHsgJGZsc29ydD0nMGEnOyB9IH0gJF9TRVNTSU9OWydmbHNvcnQnXSA9ICRmbHNvcnQ7ICRwZmxzb3J0PXo1cigkZmxzb3J0KTsgaWYoJHBmbHNvcnRbMV0hPSdhJykgJHBmbHNvcnRbMV09J2QnOyAkdj0kcGZsc29ydFswXTsgQHVzb3J0KCRsc2xbImQiXSwiejJiIik7IEB1c29ydCgkbHNsWyJsIl0sInoyYiIpOyBAdXNvcnQoJGxzbFsiZiJdLCJ6MmIiKTsgaWYoJHBmbHNvcnRbMV09PSJkIil7ICRsc2xbImQiXT1AYXJyYXlfcmV2ZXJzZSgkbHNsWyJkIl0pOyAkbHNsWyJsIl09QGFycmF5X3JldmVyc2UoJGxzbFsibCJdKTsgJGxzbFsiZiJdPUBhcnJheV9yZXZlcnNlKCRsc2xbImYiXSk7IH0gaWYoIUBpc3NldCgkZmZzb3J0KSl7IGlmKEBpc3NldCgkX1NFU1NJT05bJ2Zmc29ydCddKSl7ICRmZnNvcnQ9JF9TRVNTSU9OWydmZnNvcnQnXTsgfSBlbHNlIHsgJGZmc29ydD0nMGEnOyB9IH0gJF9TRVNTSU9OWydmZnNvcnQnXSA9ICRmZnNvcnQ7ICRwZmZzb3J0PXo1cigkZmZzb3J0KTsgJGZmc29ydD0kcGZmc29ydFswXS4kcGZmc29ydFsxXTsgaWYoJHBmZnNvcnRbMV0hPSdhJykgJHBmZnNvcnRbMV09J2QnOyAkdj0kcGZmc29ydFswXTsgQHVzb3J0KCRsc2ZbImQiXSwiejJiIik7IEB1c29ydCgkbHNmWyJsIl0sInoyYiIpOyBAdXNvcnQoJGxzZlsiZiJdLCJ6MmIiKTsgaWYoJHBmZnNvcnRbMV09PSJkIil7ICRsc2ZbImQiXT1AYXJyYXlfcmV2ZXJzZSgkbHNmWyJkIl0pOyAkbHNmWyJsIl09QGFycmF5X3JldmVyc2UoJGxzZlsibCJdKTsgJGxzZlsiZiJdPUBhcnJheV9yZXZlcnNlKCRsc2ZbImYiXSk7IH0gJGxpc3RfbD1hcnJheSgpOyAkbGlzdF9mPWFycmF5KCk7ICRsaXN0X2xbXT1hcnJheSgkZC4nLi4nLCAnTElOSycpOyAkbGlzdF9mW109YXJyYXkoJy4uJywgJ0xJTksnKTsgZm9yZWFjaCgkbHNsWyJkIl0gYXMgJGxmKSAkbGlzdF9sW109JGxmOyBmb3JlYWNoKCRsc2xbImwiXSBhcyAkbGYpICRsaXN0X2xbXT0kbGY7IGZvcmVhY2goJGxzbFsiZiJdIGFzICRsZikgJGxpc3RfbFtdPSRsZjsgZm9yZWFjaCgkbHNmWyJkIl0gYXMgJHJmKSAkbGlzdF9mW109JHJmOyBmb3JlYWNoKCRsc2ZbImwiXSBhcyAkcmYpICRsaXN0X2ZbXT0kcmY7IGZvcmVhY2goJGxzZlsiZiJdIGFzICRyZikgJGxpc3RfZltdPSRyZjsgJGNsPUBjb3VudCgkbGlzdF9sKTsgJGNmPUBjb3VudCgkbGlzdF9mKTsgZWNobyB6OW0oJzInKS56NmYoKS56N2ooJycsJzQnKTsgejhuKCdsJyk7IGVjaG8gejdmKCkuejdqKCcnLCc0NicpOyB6OG4oJ2YnKTsgZWNobyB6N2YoKS56N3koKS56MTBxKCk7IGVjaG8gejltKCcyJykuejdvKCkuejdqKCcnLCc0JykuejV6KCcnLCIxIikuejltKCcyJyk7IGVjaG8gejd1KCB6N2soejV4KGFycmF5KCdhY3QnLCdkJywnZmZzb3J0JywnZmxzb3J0Jz0+KCRwZmxzb3J0WzBdPT0nMCc/JzAnLigkcGZsc29ydFsxXT09ImEiPyJkIjoiYSIpOicwJy4kcGZsc29ydFsxXSkpLHo4Yih6OXkoIjU3IikuKCRwZmxzb3J0WzBdPT0nMCc/JyAnLigkcGZsc29ydFsxXT09ImEiPycmdWFycjsnOicmZGFycjsnKTonJyksJzMnKSksJzgnLCcyJykuIHo2eih6NXgoYXJyYXkoJ2FjdCcsJ2QnLCdmZnNvcnQnLCdmbHNvcnQnPT4oJHBmbHNvcnRbMF09PScxJz8nMScuKCRwZmxzb3J0WzFdPT0iYSI/ImQiOiJhIik6JzEnLiRwZmxzb3J0WzFdKSksejhiKHo5eSgiNTgiKS4oJHBmbHNvcnRbMF09PScxJz8nICcuKCRwZmxzb3J0WzFdPT0iYSI/JyZ1YXJyOyc6JyZkYXJyOycpOicnKSwnMycpKSwnOCcsJycpLiB6N2soejl5KCI2MiIpLCc4JywnMycpKTsgZm9yKCRpPTA7JGk8JGNsOyRpKyspeyAkZGlzcD16MmwoJGxpc3RfbFskaV1bMF0pOyBpZigoIUBpc19udW1lcmljKCRsaXN0X2xbJGldWzFdKSAmJiAkbGlzdF9sWyRpXVsxXT09J0RJUicpfHwkZGlzcD09Jy4uJyl7ICRvPXo1eChhcnJheSgnYWN0Jz0+J2Z0cCcsJ2Zsc29ydCcsJ2Zmc29ydCcsJ2QnPT4kbGlzdF9sWyRpXVswXSksejhoKCdzbWFsbF9kaXInLCcnLCc5JykuejhiKHo4bygkZGlzcCw0MCksJzEwJyx6M2coJGRpc3AsJ2QnKSkpOyB9IGVsc2UgeyAkZXh0PXoybCgkbGlzdF9sWyRpXVswXSwnLicpOyAkbz16NXgoYXJyYXkoJ2FjdCc9PidmdHAnLCdmbHNvcnQnLCdmZnNvcnQnLCdkJywnZnQnPT4ndXBsb2FkJywnbHQnPT4kbGlzdF9sWyRpXVswXSksejhoKCRleHQsJycsJzknKS56OGIoejhvKCRkaXNwLDQwKSwnMTEnLHozZygkZGlzcCwnZicpKSk7IH0gZWNobyB6N3UoejdrKCRvLCcxOScsJzInKS56NnooKEBpc19udW1lcmljKCRsaXN0X2xbJGldWzFdKT96N3goJGxpc3RfbFskaV1bMV0pOiRsaXN0X2xbJGldWzFdKSwnMTAnKS56N2soKCRkaXNwPT0nLi4nP3owdygkbGlzdF9sWyRpXVswXSk6ejB0KCRsaXN0X2xbJGldWzBdKS56NG4oJGxpc3RfbFskaV1bMF0sJ2lkbG9jJywoJGklMj8ndHJhJzondHJiJykuJGpzaWQpKSwnMTAnKSwoJGklMj8gJzAnOiAnMScpLCgkaSUyPyd0cmEnOid0cmInKS4kanNpZCk7ICRqc2lkKys7IH0gZWNobyB6MTBxKCkuejVoKCkuejdmKCkuejdqKCcnLCc0NicpLno1eignJywiMSIpLno5bSgnMicpOyBlY2hvIHo3dSggejdrKHo1eChhcnJheSgnYWN0JywnZCcsJ2Zsc29ydCcsJ2Zmc29ydCc9PigkcGZmc29ydFswXT09JzAnPycwJy4oJHBmZnNvcnRbMV09PSJhIj8iZCI6ImEiKTonMCcuJHBmZnNvcnRbMV0pKSx6OGIoejl5KCI1NyIpLigkcGZmc29ydFswXT09JzAnPycgJy4oJHBmZnNvcnRbMV09PSJhIj8nJnVhcnI7JzonJmRhcnI7Jyk6JycpLCczJykpLCc4JywnMicpLiB6NnooejV4KGFycmF5KCdhY3QnLCdkJywnZmxzb3J0JywnZmZzb3J0Jz0+KCRwZmZzb3J0WzBdPT0nMSc/JzEnLigkcGZmc29ydFsxXT09ImEiPyJkIjoiYSIpOicxJy4kcGZmc29ydFsxXSkpLHo4Yih6OXkoIjU4IikuKCRwZmZzb3J0WzBdPT0nMSc/JyAnLigkcGZmc29ydFsxXT09ImEiPycmdWFycjsnOicmZGFycjsnKTonJyksJzMnKSksJzgnLCcnKS4gejdrKHo5eSgiNjIiKSwnOCcsJzMnKSk7IGZvcigkaT0wOyRpPCRjZjskaSsrKXsgJGRpc3A9ejJsKCRsaXN0X2ZbJGldWzBdKTsgaWYoKCFAaXNfbnVtZXJpYygkbGlzdF9mWyRpXVsxXSkmJiRsaXN0X2ZbJGldWzFdPT0iRElSIil8fCRkaXNwPT0nLi4nKXsgJG89ejV4KGFycmF5KCdhY3QnPT4nZnRwJywnZmxzb3J0JywnZmZzb3J0JywnZCcsJ3JkJz0+JGxpc3RfZlskaV1bMF0pLHo4aCgnc21hbGxfZGlyJywnJywnOScpLno4Yih6OG8oJGRpc3AsNDApLCcxMCcsejNnKCRkaXNwLCdkJykpKTsgfSBlbHNlIHsgJGV4dD16MmwoJGxpc3RfZlskaV1bMF0sJy4nKTsgJG89ejV4KGFycmF5KCdhY3QnPT4nZnRwJywnZmxzb3J0JywnZmZzb3J0JywnZCcsJ2Z0Jz0+J2Rvd25sb2FkJywncnQnPT4kbGlzdF9mWyRpXVswXSksejhoKCRleHQsJycsJzknKS56OGIoejhvKCRkaXNwLDQwKSwnMTEnLHozZygkZGlzcCwnZicpKSk7IH0gZWNobyB6N3UoejdrKCRvLCcxOScsJzInKS56NnooKEBpc19udW1lcmljKCRsaXN0X2ZbJGldWzFdKT96N3goJGxpc3RfZlskaV1bMV0pOiRsaXN0X2ZbJGldWzFdKSwnMTAnKS56N2soKCRkaXNwPT0nLi4nP3owcSgkbGlzdF9mWyRpXVswXSk6ejByKCRsaXN0X2ZbJGldWzBdKS56NG4oJGxpc3RfZlskaV1bMF0sJ2lkZnRwJywoJGklMj8ndHJhJzondHJiJykuJGpzaWQpKSwnMTAnKSwoJGklMj8gJzAnOiAnMScpLCgkaSUyPyd0cmEnOid0cmInKS4kanNpZCk7ICRqc2lkKys7IH0gZWNobyB6MTBxKCkuejVoKCkuIHo3ZigpLno3eSgpLnoxMHEoKTsgZWNobyB6OW0oJzInKS56N28oKS56N2ooJycsJzQnKS4gejBzKCdpZGxvYycsJ2x0YWxsJyx6OXYoJ2FjdCcpLno5dignZmxzb3J0Jykuejl2KCdmZnNvcnQnKS56OXYoJ2QnKS56OXYoJ2Z0cG1sb2MnLCcxJyksYXJyYXkoJyc9Pno5eSgiNjYiKSwndXBsb2FkJz0+ejl5KCIxOTciKSwnZGVsZXRlJz0+ejl5KCIxOTkiKSkpLiB6N2YoKS56N2ooJycsJzQnKS4gejBzKCdpZGZ0cCcsJ3J0YWxsJyx6OXYoJ2FjdCcpLno5dignZmxzb3J0Jykuejl2KCdmZnNvcnQnKS56OXYoJ2QnKS56OXYoJ2Z0cG1yZW0nLCcxJyksYXJyYXkoJyc9Pno5eSgiNjYiKSwnZG93bmxvYWQnPT56OXkoIjE5OCIpLCdkZWxldGUnPT56OXkoIjE5OSIpKSkuIHo3ZigpLno3eSgpLnoxMHEoKTsgfSBlbHNlIHsgZWNobyB6M3Eoejl5KCIxODUiKS56OXgoKS4oJGhtc2chPScnPycgOiAnLiRobXNnOicnKSk7IGVjaG8gejZzKCkuejEwdyh6N3UoejV4KGFycmF5KCJhY3QiPT4iZnRwIiwiZCIpLCB6NmwoejduKHo5eSgiMTg2IikpLno2dSgiZnRwX3NlcnZlciIsJGZ0cF9zZXJ2ZXIsJzUnKS56NnUoImZ0cF9wb3J0IiwkZnRwX3BvcnQsJzYnKSkuejZsKHo3bih6OXkoIjE4NyIpKS56NnUoImZ0cF91c2VybmFtZSIsJGZ0cF91c2VybmFtZSwnNScpKS56NmwoejduKHo5eSgiMTg4IikpLno2dSgiZnRwX3Bhc3N3b3JkIiwkZnRwX3Bhc3N3b3JkLCc1JykuejhiKHo5eSgiMTg5IiksJzcnKS4nICcuejV1KCJmdHBfcGFzc2l2ZTEiLHo5eSgiMTkwIiksICJmdHBfcGFzc2l2ZSIpKSkpLCcyJykuejZzKCk7ICRkbXNnPSR1bXNnPScnOyBpZighQGVtcHR5KCRmdHBfc2VydmVyKSYmIUBlbXB0eSgkZnRwX3BvcnQpJiYhQGVtcHR5KCRmdHBfdXNlcm5hbWUpJiYhQGVtcHR5KCRmdHBfcGFzc3dvcmQpJiZAaXNzZXQoJGZ0cF9xdWlja2FjdGlvbikpeyAkZnRwPW5ldyBmdHAoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0LCRmdHBfdXNlcm5hbWUsJGZ0cF9wYXNzd29yZCwkZnRwX3Bhc3NpdmUpOyBpZigkZnRwLT5sb2dnZWRPbil7IGlmKCRmdHBfcXVpY2thY3Rpb249PSJ1cGxvYWQiKXsgJHVtc2c9KCRmdHAtPnB1dCgkZnRwX3JlbW90ZWZpbGUsICRmdHBfbG9jYWxmaWxlKSA/IHo5eSgiMjA4IikgOiB6OXkoIjIwOSIpKTsgfSBlbHNlaWYoJGZ0cF9xdWlja2FjdGlvbj09ImRvd25sb2FkIil7ICRkbXNnPSgkZnRwLT5nZXQoJGZ0cF9yZW1vdGVmaWxlLCRmdHBfbG9jYWxmaWxlLDEpID8gejl5KCIyMTAiKSA6IHo5eSgiMjExIikpOyB9IH0gZWxzZSB7IGlmKCRmdHBfcXVpY2thY3Rpb249PSJ1cGxvYWQiKXsgJHVtc2c9ejl5KCIxOTEiKTsgfSBlbHNlIHsgJGRtc2c9ejl5KCIxOTEiKTsgfSB9IH0gZWNobyB6M3EoYXJyYXkoejl5KCIyMDAiKS56OXgoKS4oJGRtc2chPScnPyIgOiAiLiRkbXNnOicnKSx6OXkoIjIwMSIpLno5eCgpLigkdW1zZyE9Jyc/IiA6ICIuJHVtc2c6JycpKSwnNDYnKTsgZWNobyB6MTB3KHo5ZCh6OWMoIHo1eChhcnJheSgnYWN0Jz0+J2Z0cCcsJ2Z0cF9xdWlja2FjdGlvbic9Pidkb3dubG9hZCcsJ2QnKSwgejEwdyh6NWIoKS4gejd1KHo1dCh6OXkoIjIwMiIpKS56OWMoejZ1KCdmdHBfc2VydmVyJywkZnRwX3NlcnZlciwnMicpLno2dSgnZnRwX3BvcnQnLCRmdHBfcG9ydCwnNicpKSkuIHo3dSh6NXQoejl5KCIyMDMiKSkuejljKHo2dSgnZnRwX3VzZXJuYW1lJywkZnRwX3VzZXJuYW1lLCc0JykuejZ1KCdmdHBfcGFzc3dvcmQnLCRmdHBfcGFzc3dvcmQsJzUnKSkpLiB6N3UoejV0KHo5eSgiMjA0IikpLno5Yyh6NnUoJ2Z0cF9yZW1vdGVmaWxlJywkZnRwX3JlbW90ZWZpbGUsJzAnKSkpLiB6N3UoejV0KHo5eSgiMjA1IikpLno5Yyh6NnUoJ2Z0cF9sb2NhbGZpbGUnLCRmdHBfbG9jYWxmaWxlLCcwJykpKS4gejd1KHo1dCgnJykuejljKHo4Yih6OXkoIjIwNyIpLCc3JykuejV1KCJmdHBfcGFzc2l2ZTIiLHo5eSgiMTkwIiksICJmdHBfcGFzc2l2ZSIpKSkuejViKCkgKSApLCcnLCc0JykuIHo5Yyh6NXgoYXJyYXkoJ2FjdCc9PidmdHAnLCdmdHBfcXVpY2thY3Rpb24nPT4ndXBsb2FkJywnZCcpLCB6MTB3KHo1YigpLiB6N3UoejV0KHo5eSgiMjAyIikpLno5Yyh6NnUoJ2Z0cF9zZXJ2ZXInLCRmdHBfc2VydmVyLCcyJykuejZ1KCdmdHBfcG9ydCcsJGZ0cF9wb3J0LCc2JykpKS4gejd1KHo1dCh6OXkoIjIwMyIpKS56OWMoejZ1KCdmdHBfdXNlcm5hbWUnLCRmdHBfdXNlcm5hbWUsJzQnKS56NnUoJ2Z0cF9wYXNzd29yZCcsJGZ0cF9wYXNzd29yZCwnNScpKSkuIHo3dSh6NXQoejl5KCIyMDUiKSkuejljKHo2dSgnZnRwX2xvY2FsZmlsZScsJGZ0cF9sb2NhbGZpbGUsJzAnKSkpLiB6N3UoejV0KHo5eSgiMjA0IikpLno5Yyh6NnUoJ2Z0cF9yZW1vdGVmaWxlJywkZnRwX3JlbW90ZWZpbGUsJzAnKSkpLiB6N3UoejV0KCcnKS56OWMoejhiKHo5eSgiMjA2IiksJzcnKS56NXUoImZ0cF9wYXNzaXZlMyIsejl5KCIxOTAiKSwgImZ0cF9wYXNzaXZlIikpKS56NWIoKSApICksJycsJzQ2JykpLCcyJyk7IH0gfSBpZigkYWN0PT0nbHMnKXsgaWYoIUBpc3NldCgkc29ydCkpeyBpZihAaXNzZXQoJF9TRVNTSU9OWydzb3J0J10pKXsgJHNvcnQ9JF9TRVNTSU9OWydzb3J0J107IH0gZWxzZSB7ICRzb3J0PXo3eignMycsJ2RlZmF1bHRfc29ydCcpOyB9IH0gJF9TRVNTSU9OWydzb3J0J10gPSAkc29ydDsgaWYoIUBpc3NldCgkZnRhcmdldCkpICRmdGFyZ2V0PScnOyBpZighQGlzc2V0KCRmdWxscGF0aCkpICRmdWxscGF0aD0wOyBpZighQGlzc2V0KCR3aXRoX2xzKSkgJHdpdGhfbHM9MDsgaWYoQGlzc2V0KCRsc19hKSAmJiBAY291bnQoJGxzX2EpPjApeyAkbGlzdD0kbHNfYTsgfSBlbHNlIHsgJGxpc3Q9ejh4KCRkKTsgJHNob3didWY9MDsgfSAkdWdzdGF0PTA7ICRqc2lkPTA7IGlmKHo3ZSgncG9zaXhfZ2V0cHd1aWQnKSYmejdlKCdwb3NpeF9nZXRncmdpZCcpJiZ6N2UoJ2ZpbGVvd25lcicpJiZ6N2UoJ2ZpbGVncm91cCcpKSAkdWdzdGF0PTE7IGlmKCFAaXNzZXQoJG5vbHNtZW51KXx8ISRub2xzbWVudSl7IHoybigpOyBpZih6MXkoJGQpKSB6NGkoKTsgfSB6NW8oKTsgaWYoQGNvdW50KCRsaXN0KT4wKXsgJG9iaj1hcnJheSgpOyAkaW5mPWFycmF5KCk7ICRvYmpbImgiXT1hcnJheSgpOyAkb2JqWyJkIl09YXJyYXkoKTsgJG9ialsibCJdPWFycmF5KCk7ICRvYmpbImYiXT1hcnJheSgpOyBmb3JlYWNoKCRsaXN0IGFzICR2KXsgJG89ejJsKCR2KTsgJHQ9J2YnOyAkdDI9J2QnOyBpZigoJG89PSIuIikgfHwgKCRvPT0iLi4iKSl7ICR0PSdkJzsgfSBlbHNlaWYoQHo0aigkdikpeyAkdD0nZCc7IGlmKHo0cSgkdikpeyAkdDI9J2wnOyB9IH0gZWxzZWlmKEB6NHEoJHYpKXsgJHQ9J2wnOyB9IGlmKCR0PT0nZicpIHsgaWYoejVpKCR2KSkgJHQ9J2UnOyB9IGVsc2VpZigkdD09J2wnKXsgaWYoejVpKCR2KSkgJHQyPSdlJzsgfSBpZihAaXNzZXQoJGZpbHRlcikgJiYgIXoxcSgkdiwgJGZpbHRlciwkdCkpIGNvbnRpbnVlOyBpZigkd2l0aF9scyl7ICRpbmZbJHZdPXo0cygkdiwkdCk7IH0gZWxzZSB7ICRmaWxlcGVybXM9QGZpbGVwZXJtcygkdik7IGlmKCEkZmlsZXBlcm1zJiYkbml4JiYkc2hfZXhlYyl7ICRpbmZbJHZdPXo0cygkdiwkdCk7IH0gfSAkcm93PWFycmF5KCk7IGlmKCRvPT0iLiIpeyAkcm93W109JGQuJG87ICRyb3dbXT0iTElOSyI7IH1lbHNlaWYoJG89PSIuLiIpeyAkcm93W109JGQuJG87ICRyb3dbXT0iTElOSyI7IH1lbHNlaWYoJHQ9PSdkJyl7ICRyb3dbXT0kdjsgJHJvd1tdPSgoJHQyPT0nbCcpPyAiTElOSyI6IkRJUiIpOyB9ZWxzZWlmKCR0PT0nZid8fCR0PT0nZSd8fCR0PT0nbCcpeyAkcm93W109JHY7ICRyb3dbXT0oQGlzc2V0KCRpbmZbJHZdKT8kaW5mWyR2XVsxXSA6IEBmaWxlc2l6ZSgkdikpOyB9ICRyb3dbXT0oQGlzc2V0KCRpbmZbJHZdKT8kaW5mWyR2XVsyXSA6QGZpbGVtdGltZSgkdikpOyBpZigkbml4KXsgaWYoQGlzc2V0KCRpbmZbJHZdKSl7ICRyb3dbXT0kaW5mWyR2XVszXTsgfSBlbHNlIHsgaWYoJHVnc3RhdCl7ICRvdz1AcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkdikpOyAkZ3I9QHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJHYpKTsgJHJvd1tdPWFycmF5KCgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpAZmlsZW93bmVyKCR2KSksKCRnclsibmFtZSJdPyRnclsibmFtZSJdOkBmaWxlZ3JvdXAoJHYpKSk7IH1lbHNleyAkcm93W109YXJyYXkoJ3VuaycsJ3VuaycpOyB9IH0gfSAkcm93W109KEBpc3NldCgkaW5mWyR2XSk/JGluZlskdl1bNF06JGZpbGVwZXJtcyk7ICRyb3dbXT0kdDsgJHJvd1tdPSR0MjsgaWYoKCRvPT0iLiIpIHx8ICgkbz09Ii4uIikpeyBpZigkbz09Jy4uJykgJG9ialsiaCJdW109JHJvdzsgfWVsc2VpZigkdD09J2wnKXsgJG9ialsibCJdW109JHJvdzsgfWVsc2VpZigkdD09J2QnKXsgJG9ialsiZCJdW109JHJvdzsgfWVsc2VpZigkdD09J2YnfHwkdD09J2UnKXsgJG9ialsiZiJdW109JHJvdzsgfSB9ICRyb3c9YXJyYXkoKTsgJHJvd1tdPXo5eSgiNTciKTsgJHJvd1tdPXo5eSgiNTgiKTsgJHJvd1tdPXo5eSgiNTkiKTsgaWYoISR3aW4peyAkcm93W109ejl5KCI2MCIpOyB9ICRyb3dbXT16OXkoIjYxIik7ICRyb3dbXT16OXkoIjYyIik7ICRwc29ydD16NXIoJHNvcnQpOyBpZigkcHNvcnRbMV0hPSdhJyl7ICRwc29ydFsxXT0nZCc7IH0gZWxzZSB7ICRwc29ydFsxXT0nYSc7IH0gaWYoIUBpc3NldCgkbm9oZWFkKXx8ISRub2hlYWQpeyBmb3IoJGk9MDskaTxAY291bnQoJHJvdyktMTskaSsrKXsgJHJvd1skaV09ejV4KGFycmF5KCdhY3QnLCdkJywnZmlsdGVyJywnc29ydCc9PigkaT09JHBzb3J0WzBdPyRpLigkcHNvcnRbMV09PSJhIj8iZCI6ImEiKTokaS4kcHNvcnRbMV0pKSx6OGIoJHJvd1skaV0uKCRpPT0kcHNvcnRbMF0/JyAnLigkcHNvcnRbMV09PSJhIj8nJnVhcnI7JzonJmRhcnI7Jyk6JycpLCczJywoJGk9PSIxIj8nIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiJzonJykpKTsgfSB9ICR2PSRwc29ydFswXTsgQHVzb3J0KCRvYmpbImQiXSwiejJiIik7IEB1c29ydCgkb2JqWyJsIl0sInoyYiIpOyBAdXNvcnQoJG9ialsiZiJdLCJ6MmIiKTsgaWYoJHBzb3J0WzFdPT0iZCIpeyAkb2JqWyJkIl09QGFycmF5X3JldmVyc2UoJG9ialsiZCJdKTsgJG9ialsibCJdPUBhcnJheV9yZXZlcnNlKCRvYmpbImwiXSk7ICRvYmpbImYiXT1AYXJyYXlfcmV2ZXJzZSgkb2JqWyJmIl0pOyB9ICRvYmo9QGFycmF5X21lcmdlKCRvYmpbImgiXSwkb2JqWyJkIl0sJG9ialsibCJdLCRvYmpbImYiXSk7ICR0YWI9YXJyYXkoKTsgJHRhYlsiYyJdPWFycmF5KCRyb3cpOyAkdGFiWyJoIl09YXJyYXkoKTsgJHRhYlsiZCJdPWFycmF5KCk7ICR0YWJbImwiXT1hcnJheSgpOyAkdGFiWyJmIl09YXJyYXkoKTsgJGk9MDsgZm9yZWFjaCgkb2JqIGFzICRhKXsgaWYoQGlzX2FycmF5KCRhKSYmQGNvdW50KCRhKT49Nil7ICR2PSRhWzBdOyAkdD0kYVsoQGNvdW50KCRhKS0yKV07ICR0Mj0kYVsoQGNvdW50KCRhKS0xKV07ICRvPXoybCgkdik7ICRkaXI9ejNhKCR2KTsgaWYoJGZ1bGxwYXRoKXsgaWYoQHN1YnN0cigkdiwgMCwgQHN0cmxlbigkZCkpID09ICRkKXsgJGRpc3A9QHN1YnN0cigkdixAc3RybGVuKCRkKSk7IH0gZWxzZSB7ICRkaXNwPSR2OyB9IH1lbHNleyAkZGlzcD0kbzsgfSAkZGlzcD16OG8oJGRpc3AsNjApOyAkcm93PWFycmF5KCk7IGlmKCRvPT0iLiIpeyAkcm93W109ejV4KGFycmF5KCdhY3QnPT4nbHMnLCdkJz0+JHYpLHo4aCgnc21hbGxfZGlyJywnJywnOScpLno4YigkZGlzcCwnMTAnKSwkZnRhcmdldCk7ICRyb3dbXT0iTElOSyI7IH1lbHNlaWYoJG89PSIuLiIpeyAkcm93W109ejV4KGFycmF5KCdhY3QnPT4nbHMnLCdkJz0+JHYpLHo4aCgnc21hbGxfZGlyJywnJywnOScpLno4YigkZGlzcCwnMTAnKSwkZnRhcmdldCk7ICRyb3dbXT0iTElOSyI7IH1lbHNlaWYoJHQ9PSdkJyl7IGlmKCR0Mj09J2wnKXsgaWYoQHJlYWRsaW5rKCR2KSkgJGRpc3AuPSIgPT4gIi5AcmVhZGxpbmsoJHYpOyAkdHlwZT0iTElOSyI7ICRyb3dbXT16NXgoYXJyYXkoJ2FjdCc9PidscycsJ2QnPT4kdiksejhoKCdzbWFsbF9kaXInLCcnLCc5JykuejhiKCRkaXNwLCcxMCcsejNnKCRvLCdkJykpLCRmdGFyZ2V0KTsgfWVsc2V7ICR0eXBlPSJESVIiOyAkcm93W109ejV4KGFycmF5KCdhY3QnPT4nbHMnLCdkJz0+JHYpLHo4aCgnc21hbGxfZGlyJywnJywnOScpLno4YigkZGlzcCwnMTAnLHozZygkbywnZCcpKSwkZnRhcmdldCk7IH0gJHJvd1tdPSR0eXBlOyB9ZWxzZWlmKCR0PT0nZid8fCR0PT0nZSd8fCR0PT0nbCcpeyAkZXh0PUBzdHJ0b2xvd2VyKHoybCgkdiwnLicpKTsgJHJvd1tdPXo1eChhcnJheSgnYWN0Jz0+J2YnLCdkJz0+JGRpciwnZic9PiRvKSx6OGgoJGV4dCwnJywnOScsKCgkdD09J2UnfHwkdDI9PSdlJyk/JzEnOicnKSkuejhiKCRkaXNwLCcxMScsejNnKCRvLCdmJykpLCRmdGFyZ2V0KTsgJHJvd1tdPShAaXNzZXQoJGluZlskdl0pPyRhWzFdOno3eCgkYVsxXSkpOyB9ICRyb3dbXT0oQGlzc2V0KCRpbmZbJHZdKT8gJGFbMl0gOiBAZGF0ZSgiWS5tLmQgSDppIiwkYVsyXSkpOyBpZigkbml4KXsgJHJvd1tdPSRhWzNdWzBdLiIvIi4kYVszXVsxXTsgfSAkcm93W109ejZ0KChAaXNzZXQoJGluZlskdl0pPyRhWzRdOiB6OXcoQGZpbGVwZXJtcygkdikpKSx6NmcoJHYpKTsgaWYoJHQ9PSdkJyYmJG8hPScuLicpeyAkcm93W109ejFyKCR2LCgkZnRhcmdldD8nMSc6JycpKS56NG4oJHYsJ2xzJywncmVwbGFjZWpzaWQnLiRqc2lkKTsgJGpzaWQrKzsgfWVsc2V7IGlmKCRvIT0nLicmJiRvIT0nLi4nKXsgJHJvd1tdPXowbygkdiwkZnRhcmdldCkuejRuKCR2LCdscycsJ3JlcGxhY2Vqc2lkJy4kanNpZCk7ICRqc2lkKys7IH1lbHNleyAkcm93W109ejB6KCR2LCRmdGFyZ2V0KTsgfSB9IGlmKCgkbz09Jy4nKSB8fCAoJG89PScuLicpKXsgaWYoJG89PScuLicpICR0YWJbImgiXVtdPSRyb3c7IH1lbHNlaWYoJHQ9PSdsJyl7ICR0YWJbImwiXVtdPSRyb3c7IH1lbHNlaWYoJHQ9PSdkJyl7ICR0YWJbImQiXVtdPSRyb3c7IH1lbHNlaWYoJHQ9PSdmJ3x8JHQ9PSdlJyl7ICR0YWJbImYiXVtdPSRyb3c7IH0gJGkrKzsgfSB9ICR0YWJsZT1AYXJyYXlfbWVyZ2UoJHRhYlsiYyJdLCR0YWJbImgiXSwkdGFiWyJkIl0sJHRhYlsibCJdLCR0YWJbImYiXSk7ICR0cmlkPTA7IGlmKEBjb3VudCgkdGFibGUpPjApeyBlY2hvIHo5bSgnMicpLno3bygpLno3aignJywnNCcpLno1eignJywiMiIpOyBlY2hvIHo5bSgnMicpOyAkY250PTA7IGZvcmVhY2goJHRhYmxlIGFzICRyb3cpeyAkcj0gJyc7ICRjbnQyPTA7IGZvcmVhY2goJHJvdyBhcyAkdil7IGlmKCRjbnQ9PTApeyAkci49ICgoJGNudDI9PTApID8gejljKCR2LCc3JywiMiIpIDogKCgkY250Mj09MSkgPyB6NnooJHYsJzgnKTooJGNudDI9PShAY291bnQoJHJvdyktMSk/ejljKCR2LCc4JywnMycpOno5YygkdiwnOCcpKSkpOyB9IGVsc2UgeyAkci49KCgkY250Mj09MCkgPyB6OWMoJHYsJzknKSA6ICgoJGNudDI9PTEpID8gejZ6KCR2LCcxMCcpOno5YygkdiwnMTAnKSkpOyB9ICRjbnQyKys7IH0gJHRyaWRzPScnOyBpZihAc3RycG9zKCRyLCdpZD0icmVwbGFjZWpzaWQnKSE9PWZhbHNlKXsgJHRyaWRzPSJ0ciIuKCRjbnQlMj8nYSc6J2InKTsgJHI9QHN0cl9yZXBsYWNlKCdpZD0icmVwbGFjZWpzaWQnLCdpZD0iJy4kdHJpZHMsICRyKTsgJHRyaWRzLj0kdHJpZDsgJHRyaWQrKzsgfSBlY2hvIHo3dSgkciwoJGNudCUyPyAnMCc6ICcxJyksICR0cmlkcyk7ICRjbnQrKzsgfSBlY2hvIHoxMHEoKTsgZWNobyB6NWgoKS56N2YoKS56N3koKS56MTBxKCk7ICRhcnJfc2VsZWN0PWFycmF5KCcnPT56OXkoIjY2IikpOyBpZihAaXNzZXQoJHVzZV9idWZmZXIpJiYkdXNlX2J1ZmZlciYmKCFAaXNzZXQoJG5vbHNtZW51KXx8ISRub2xzbWVudSkpeyAkYXJyX3NlbGVjdFsiYmNvcHkiXT16OXkoIjY3Iik7ICRhcnJfc2VsZWN0WyJiY3V0Il09ejl5KCI2OCIpOyAkdWNvcHk9JHVjdXQ9MDsgaWYoQGlzc2V0KCRiY29weSkmJkBpc19hcnJheSgkYmNvcHkpJiZAY291bnQoJGJjb3B5KT4wKXsgJGFycl9zZWxlY3RbImJ1bnNldGNvcHkiXT16OXkoIjY5Iik7ICR1Y29weT0xOyB9IGlmKEBpc3NldCgkYmN1dCkmJkBpc19hcnJheSgkYmN1dCkmJkBjb3VudCgkYmN1dCk+MCl7ICRhcnJfc2VsZWN0WyJidW5zZXRjdXQiXT16OXkoIjcwIik7ICR1Y3V0PTE7IH0gaWYoJHVjb3B5JiYkdWN1dCkgJGFycl9zZWxlY3RbImJ1bnNldGFsbCJdPXo5eSgiNzEiKTsgfSAkYXJyX3NlbGVjdFsiZGVsZXRlIl09ejl5KCI3MiIpOyBlY2hvIHowcygnbHMnLCdsc2FsbCcsejl2KCdhY3QnKS56OXYoJ2QnKSwkYXJyX3NlbGVjdCk7IH0gfSBlbHNlIHsgaWYoejdlKCdpbWFwX29wZW4nKSYmejdlKCdpbWFwX2xpc3QnKSYmQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMCIpPD0wKSAkc2xzX2FyclsiaW1hcCJdPSJpbWFwX2xpc3QgKHNhZmVfbW9kZSAvIFBIUCA8PSA1LjEuMikiOyBpZih6N2UoJ2dsb2InKSkgJHNsc19hcnJbImdsb2IiXT0iZ2xvYiAoUEhQIDw9IDUuMi54ICsgc29tZSBvdGhlcnMpIjsgaWYoejdlKCdyZWFscGF0aCcpKSAkc2xzX2FyclsicmVhbHBhdGgiXT0icmVhbHBhdGggKFBIUCA8PSA1LjIuNCArIHNvbWUgb3RoZXJzKSI7IGlmKEBpc3NldCgkc2xzX2FyclsiZ2xvYiJdKSYmIUBpc3NldCgkc3VibWl0MSkmJiFAaXNzZXQoJGxpc3RkaXJfZnVuYykpeyAkc3VibWl0MT0xOyAkbGlzdGRpcl9mdW5jPSJnbG9iIjsgfSBlbHNlaWYoQGlzc2V0KCRzbHNfYXJyWyJyZWFscGF0aCJdKSYmIUBpc3NldCgkc3VibWl0MSkmJiFAaXNzZXQoJGxpc3RkaXJfZnVuYykpeyAkc3VibWl0MT0xOyAkbGlzdGRpcl9mdW5jPSJyZWFscGF0aCI7IH0gaWYoQGNvdW50KCRzbHNfYXJyKT4wKXsgZWNobyB6M3Eoejl5KCIxMjUiKSk7IGVjaG8gejZzKCk7IGVjaG8gejltKCIyIikuejZmKCkuejZxKCk7IGVjaG8gejV3KCcnLCIxIik7IGlmKEBpc3NldCgkc3VibWl0MSkmJiRzdWJtaXQxKXsgc3dpdGNoKCRsaXN0ZGlyX2Z1bmMpeyBjYXNlICdpbWFwJzogJHN0cmVhbT1AaW1hcF9vcGVuKCcvZXRjL3Bhc3N3ZCcsIiIsIiIpOyAkZGlyX2xpc3Q9QGltYXBfbGlzdCgkc3RyZWFtLEB0cmltKCRkKSwiKiIpOyBmb3IoJGk9MDskaTxAY291bnQoJGRpcl9saXN0KTskaSsrKSBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRkaXJfbGlzdFskaV0pLiJcclxuIjsgQGltYXBfY2xvc2UoJHN0cmVhbSk7IGJyZWFrOyBjYXNlICdnbG9iJzogejN3KCRkKTsgYnJlYWs7IGNhc2UgJ3JlYWxwYXRoJzogejN5KCRkKTsgYnJlYWs7IH0gfSBlY2hvIHo1cSgpOyBlY2hvIHo3ZigpLno3eSgpLnoxMHEoKTsgZWNobyB6MTB3KHo3dSh6NmwoejV6KCJsZWZ0IiwiMyIpLno1eChhcnJheSgiYWN0Iiwic3VibWl0MSI9PiIxIiksIHoxMHcoejd1KHo5Yyh6N24oejl5KCIxMjYiKSkuejV5KCJkIiwkZCwiMCIsIiIsIjkiKS56M20oImxpc3RkaXJfZnVuYyIsJHNsc19hcnIsIjUiLDEpLno4Yih6OXkoIjEyNyIpLCI3IikpKSwiMiIpKS56NWgoKSkpLCIyIik7IGVjaG8gejZzKCk7IH0gZWxzZSB7IGVjaG8gejNxKHo5eSgiNDY0IiwkZCkpOyB9IH0gfSBpZigkYWN0PT0ncHJvY2Vzc2VzJyl7IGlmKCFAaXNzZXQoJHNvcnRwKSkgJHNvcnRwPSgkbml4PycxYSc6JzBhJyk7ICRoZWFkZXI9Jyc7IGlmKCRuaXgpeyAkaD0ncHMgLWF1eCcuKChAaXNzZXQoJGdyZXApJiYkZ3JlcCk/J3xncmVwICInLiRncmVwLicifGdyZXAgLXYgZ3JlcCc6JycpOyBpZihAaXNzZXQoJHBpZCkmJiRwaWQpeyBpZighQGlzc2V0KCRzaWcpfHxAaXNfbnVsbCgkc2lnKSl7ICRzaWc9OTsgfSAkaGVhZGVyPSIgOiAiLno5eSgiMzQ5IixhcnJheSgkc2lnLCRwaWQpKS4oQHBvc2l4X2tpbGwoJHBpZCwkc2lnKT96OXkoIjM1MCIpOno5eSgiMzUxIikpOyB9IH1lbHNleyAkaD0ndGFza2xpc3QnOyB9ICRyPXo5ZSgkaCk7IGVjaG8gejNxKHo5eSgiMzQ4IikuJGhlYWRlciwnMScpOyBpZigkcil7ICRyPXoydignICAnLCcgJywkcik7ICRwcHNvcnQ9ejVyKCRzb3J0cCk7IGlmKCRwcHNvcnRbMV0hPSdhJyl7ICRwcHNvcnRbMV09J2QnOyB9IGVsc2UgeyAkcHBzb3J0WzFdPSdhJzsgfSBpZigkbml4KXsgJHN0YWNrPUBleHBsb2RlKCJcbiIsJHIpOyAkaGVhZD1AZXhwbG9kZSgnICcsJHN0YWNrWzBdKTsgaWYoIUBpc3NldCgkZ3JlcCl8fCEkZ3JlcCl7IHVuc2V0KCRzdGFja1swXSk7IH0gZm9yKCRpPTA7JGk8QGNvdW50KCRoZWFkKTskaSsrKXsgaWYoJGkhPSRwcHNvcnRbMF0peyAkaGVhZFskaV09ejV4KGFycmF5KCdhY3QnLCdkJywncGZpbHRlcicsJ3NvcnRwJz0+JGkuJHBwc29ydFsxXSksejhiKCRoZWFkWyRpXSwnMycpKTsgfSBlbHNlIHsgJGhlYWRbJGldPXo1eChhcnJheSgnYWN0JywnZCcsJ3BmaWx0ZXInLCdzb3J0cCc9PiRwcHNvcnRbMF0uKCRwcHNvcnRbMV09PSdhJz8nZCc6J2EnKSksejhiKCRoZWFkWyRwcHNvcnRbMF1dLicgJy4oJHBwc29ydFsxXT09J2EnPycmdWFycjsnOicmZGFycjsnKSwnMycpKTsgfSB9ICRoZWFkW109ejl5KCI2MiIpOyAkcHJjcz1hcnJheSgpOyBpZighQGlzc2V0KCRwZmlsdGVyKXx8QGVtcHR5KCRwZmlsdGVyKXx8JHBmaWx0ZXI9PSctLS0nKXsgJGJvb2w9MDsgJHBmaWx0ZXI9Jyc7IH0gZWxzZSB7ICRib29sPTE7IH0gZm9yZWFjaCgkc3RhY2sgYXMgJGxpbmUpeyBpZighQGVtcHR5KCRsaW5lKSl7ICRsaW5lPUBleHBsb2RlKCIgIiwkbGluZSk7IGlmKCgkYm9vbCYmJHBmaWx0ZXI9PSRsaW5lWzBdKXx8ISRib29sKXsgJGxpbmVbMF09ejV4KGFycmF5KCdhY3QnPT4ncHJvY2Vzc2VzJywnZCcsJ3NvcnRwJywncGZpbHRlcic9PigoJGJvb2wmJiRwZmlsdGVyPT0kbGluZVswXSk/Jy0tLSc6JGxpbmVbMF0pKSx6OGIoJGxpbmVbMF0sJzEnLCgoJGxpbmVbMF09PSRjdXNlcik/JyBzdHlsZT0iY29sb3I6Jy56OXEoIm9rY29sb3IiKS4nOyInOicnKSkpOyAkbGluZVsxMF09QGpvaW4oIiAiLEBhcnJheV9zbGljZSgkbGluZSwxMCkpOyAkbGluZT1AYXJyYXlfc2xpY2UoJGxpbmUsMCwxMSk7ICRsaW5lW109ejV4KGFycmF5KCdhY3QnPT4ncHJvY2Vzc2VzJywnZCcsJ3NvcnRwJywncGZpbHRlcicsJ3BpZCc9PiRsaW5lWzFdLCdzaWcnPT4nOScpLHo4Yih6OXkoIjM5MiIpLCI3IikpOyAkcHJjc1tdPSRsaW5lOyB9IH0gfSB9ZWxzZXsgJHI9QGNvbnZlcnRfY3lyX3N0cmluZygkciwiZCIsInciKTsgJHN0YWNrPUBleHBsb2RlKCJcbiIsJHIpOyB1bnNldCgkc3RhY2tbMF0sJHN0YWNrWzJdKTsgJHN0YWNrPUBhcnJheV92YWx1ZXMoJHN0YWNrKTsgJHN0YWNrPUBhcnJheV9zbGljZSgkc3RhY2ssMSk7ICRoZWFkWzBdPSJQUk9HUkFNIjsgJGhlYWRbMV09IlBJRCI7IGlmKCRwcHNvcnRbMF0+PUBjb3VudCgkaGVhZCkpeyAkcHBzb3J0WzBdPUBjb3VudCgkaGVhZCktMTsgfSBmb3IoJGk9MDskaTxAY291bnQoJGhlYWQpOyRpKyspeyBpZigkaSE9JHBwc29ydFswXSl7ICRoZWFkWyRpXT16NXgoYXJyYXkoJ2FjdCcsJ2QnLCdzb3J0cCc9PiRpLiRwcHNvcnRbMV0pLHo4YigkaGVhZFskaV0sJzMnKSk7IH0gZWxzZSB7ICRoZWFkWyRpXT16NXgoYXJyYXkoJ2FjdCcsJ2QnLCdzb3J0cCc9PiRwcHNvcnRbMF0uKCRwcHNvcnRbMV09PSdhJz8nZCc6J2EnKSksejhiKCRoZWFkWyRwcHNvcnRbMF1dLicgJy4oJHBwc29ydFsxXT09J2EnPycmdWFycjsnOicmZGFycjsnKSwnMycpKTsgfSB9ICRwcmNzPWFycmF5KCk7IGZvcmVhY2goJHN0YWNrIGFzICRsaW5lKXsgaWYoIUBlbXB0eSgkbGluZSkpeyAkbG49QGV4cGxvZGUoIiAiLCRsaW5lKTsgaWYoQGNvdW50KCRsbik+PTIpICRwcmNzW109YXJyYXkoJGxuWzBdLCRsblsxXSk7IH0gfSB9ICR2PSRwcHNvcnRbMF07IEB1c29ydCgkcHJjcywiejJiIik7IGlmKCRwcHNvcnRbMV09PSJkIil7ICRwcmNzPUBhcnJheV9yZXZlcnNlKCRwcmNzKTsgfSAkdGFiPWFycmF5KCk7IGlmKCFAaXNzZXQoJGdyZXApfHwhJGdyZXApeyAkdGFiW109JGhlYWQ7IH0gJHRhYj1AYXJyYXlfbWVyZ2UoJHRhYiwkcHJjcyk7IGVjaG8gejltKCcyJyk7ICRjbnQ9MDsgZm9yZWFjaCgkdGFiIGFzICRpPT4kayl7ICRyPScnOyAkY250Mj0wOyBmb3JlYWNoKCRrIGFzICRqPT4kdil7IGlmKCR3aW4gYW5kICRpPjAgYW5kICRqPT0yKXsgJHY9ejd4KCR2KTsgfSBpZigkY250PT0wKXsgJHIuPSgoJGNudDI9PTApID8gejdrKCR2LCcxMycsJzInKTooJGNudDI9PShAY291bnQoJGspLTEpP3o3aygkdiwnMTMnLCczJyk6ejdrKCR2LCcxMycpKSk7IH0gZWxzZSB7ICRyLj0oKCRjbnQyPT0wKSA/IHo3aygkdiwnMTQnLCcyJyk6KCRjbnQyPT0oQGNvdW50KCRrKS0xKT96N2soJHYsJzE0JywnMycpOno3aygkdiwnMTQnKSkpOyB9ICRjbnQyKys7IH0gZWNobyB6N3UoJHIsKCRjbnQlMj8gJzAnOiAnMScpKTsgJGNudCsrOyB9IGVjaG8gejEwcSgpOyB9IH0gejNqKCk7ID8+DQo=")); ?>