# Name: smd_calendar v0.33 # Type: Client side plugin # Calendar / event / schedule system with events as TXP articles # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjEyOiJzbWRfY2FsZW5kYXIiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMzMiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjYyOiJDYWxlbmRhciAvIGV2ZW50IC8gc2NoZWR1bGUgc3lzdGVtIHdpdGggZXZlbnRzIGFz IFRYUCBhcnRpY2xlcyI7czo0OiJjb2RlIjtzOjU0NzQzOiIvLyBCYXNlZCBoZWF2aWx5IG9u IG1kcF9jYWxlbmRhciAtIHRoYW5rcyENCi8vVE9ETzogSW52ZXN0aWdhdGUNCi8qDQokZCA9 IG5ldyBEYXRlVGltZSgnMjAwOC0xMi0yMiAxMjo1MicpOw0KZWNobyAkZC0+Z2V0VGltZXpv bmUoKS0+Z2V0TmFtZSgpOw0KKi8NCg0KaWYoICRkYXRlID0gZ3BzKCdkYXRlJykgKSB7DQoJ JF9HRVRbJ21vbnRoJ10gPSAkZGF0ZTsNCn0NCg0KZnVuY3Rpb24gc21kX2NhbGVuZGFyKCRh dHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR2YXJpYWJsZSwgJHByZWZz LCAkc21kX2NhbF9mbGFnLCAkc21kX2NhbF91Y2xzLCAkc21kX2NhbF9pZCwgJHNtZF95ZWFy LCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0KDQoJZXh0cmFjdChsQXR0cyhh cnJheSgNCgkJJ3RpbWUnID0+ICdhbnknLCAvLyBwYXN0LCBmdXR1cmUsIGFueQ0KCQknc2l6 ZScgPT4gJ2xhcmdlJywgLy8gc21hbGwgb3IgbGFyZ2UgKGNhbGVuZGFyKQ0KCQknZXhwaXJl ZCcgPT4gJycsIC8vIDA9bm8sIDE9eWVzIHB1Ymxpc2ggZXhwaXJlZCBldmVudHMsIGVtcHR5 PXVzZSBwcmVmcw0KCQknY2F0ZWdvcnknID0+ICcnLA0KCQknc2VjdGlvbicgPT4gJycsDQoJ CSdhdXRob3InID0+ICcnLA0KCQknc3RhdHVzJyA9PiAnbGl2ZScsDQoJCSdzdGF0aWMnID0+ ICcnLA0KCQknZm9ybScgPT4gJycsDQoJCSdzcGFuZm9ybScgPT4gJ1NNRF9TQU1FJywNCgkJ J3JlY3VyZm9ybScgPT4gJ1NNRF9TQU1FJywNCgkJJ2NlbGxmb3JtJyA9PiAnJywNCgkJJ3N0 ZXBmaWVsZCcgPT4gJycsDQoJCSdza2lwZmllbGQnID0+ICcnLA0KCQknb21pdGZpZWxkJyA9 PiAnJywNCgkJJ3Nob3dza2lwcGVkJyA9PiAnMCcsDQoJCSdzaG93c3Bhbm5lZCcgPT4gJzEn LA0KCQknaG9saWRheXMnID0+ICcnLA0KCQknaG9saWRheWZsYWdzJyA9PiAnc3RhbmRhcmQn LCAvLyBwZXJtaXQgdGhlc2UgZXZlbnRzIHRvICJsYW5kIiBvbiBhIGhvbGlkYXkgKHN0YW5k YXJkLCByZWN1ciwgbXVsdGkpDQoJCSdjbGFzc2xldmVscycgPT4gJ2NlbGwsIGV2ZW50Jywg Ly8gY2VsbCwgZXZlbnQsIGNlbGxwbHVzIChjb21iaW5lcyBldmVudCBhbmQgY2VsbCBpbnRv IGNlbGwgbGV2ZWwgY2xhc3NlcykNCgkJJ2xpbmtwb3N0ZWQnID0+ICdyZWN1ciwgbXVsdGks IG11bHRpcHJldiwgbXVsdGlsYXN0JywgLy8gd2hpY2ggZXZlbnRzIGNhdXNlIHRoZSBtaW5p Y2FsIHRvIGxpbmsgdG8gcG9zdGVkIGRhdGUNCgkJJ2NsYXNzcHJlZml4ZXMnID0+ICdzbWRf Y2FsXywgc21kX2NhbF9ldl8nLCAvLyAxc3Q9Y2VsbC1sZXZlbCBwZngsIDJuZD1ldmVudC1s ZXZlbCBwZnggKG9wdGlvbmFsKQ0KCQknY2xhc3MnID0+ICcnLCAvLyBUYWJsZSBjbGFzcw0K CQkncm93Y2xhc3MnID0+ICcnLA0KCQknY2VsbGNsYXNzJyA9PiAnJywNCgkJJ2VtcHR5Y2xh c3MnID0+ICdlbXB0eScsDQoJCSdpc293ZWVrY2xhc3MnID0+ICd3ZWVrJywNCgkJJ25hdmNs YXNzJyA9PiAnbmF2cHJldiwgbmF2bmV4dCcsDQoJCSduYXZhcnJvdycgPT4gJyYjNjA7LCAm IzYyOycsDQoJCSduYXZpZCcgPT4gJycsDQoJCSdldmVudGNsYXNzZXMnID0+ICdjYXRlZ29y eScsDQoJCSdldmVudHdyYXB0YWcnID0+ICdzcGFuJywNCgkJJ3NlbGVjdCcgPT4gJycsIC8v IHdlZWssIG1vbnRoIGFuZC9vciB5ZWFyICh0byBkaXNwbGF5IGRyb3Bkb3ducykNCgkJJ3Nl bGVjdGJ0bicgPT4gJycsIC8vIGVtcHR5ID0gYXV0b3NlbGVjdCAob25jaGFuZ2UpLCBvciB0 ZXh0IHRvIGdvIG9uIHRoZSBzdWJtaXQgYnV0dG9uDQoJCSdteWNsYXNzJyA9PiAnJywgLy8g bW9udGgteWVhciBoZWFkZXIgY2xhc3MNCgkJJ215d3JhcHRhZycgPT4gJycsIC8vIG1vbnRo LXllYXIgaGVhZGVyIHdyYXB0YWcNCgkJJ2lkJyA9PiAnJywgLy8gVGFibGUgSUQgKD1jYWxp ZCkNCgkJJ3dlZWsnID0+ICcnLA0KCQknbW9udGgnID0+ICcnLA0KCQkneWVhcicgPT4gJycs DQoJCSd5ZWFyd2lkdGgnID0+ICcwJywgLy8gbnVtYmVyIG9mIHllYXJzIGVpdGhlciBzaWRl IG9mIHRoZSBmaXJzdC9sYXN0IGFydGljbGUgdG8gcGVybWl0DQoJCSdpc293ZWVrcycgPT4g JycsIC8vIGVtcHR5ID0gZG9uJ3Qgc2hvdyBJU08gd2Vla3M7IG9yIHRleHQgb2YgY29sdW1u IGhlYWRpbmcsIHRleHQgb2YgY2VsbCBwcmVmaXgNCgkJJ2RheWZvcm1hdCcgPT4gJ0FCQlIn LCAvLyBBQkJSID0gJWEsIEZVTEwgPSAlQSwgb3IgY3VzdG9tIHN0cmZ0aW1lIHN0cmluZw0K CQknbW9udGhmb3JtYXQnID0+ICdGVUxMJywgLy8gQUJCUiA9ICViLCBGVUxMID0gJUIsIG9y IGN1c3RvbSBzdHJmdGltZSBzdHJpbmcNCgkJJ2ZpcnN0ZGF5JyA9PiAwLCAvLyAxc3QgZGF5 IG9mIHdlZWsgMD1TdW5kYXksIDY9U2F0dXJkYXkgKGZvcmNlZCB0byBNb25kYXkgaWYgaXNv d2Vla3M9MSkNCgkJJ21haW50YWluJyA9PiAnY2FsaWQnLCAvLyB3aGVuIG5hdmlnYXRpbmcs IGtlZXAgdGhlc2UgaXRlbXMgaW4gdGhlIFVSTA0KCQknZ210JyA9PiAwLA0KCQknbGFuZycg PT4gJycsDQoJCSdkZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykpOw0KDQoJJGZ1dHVyZSA9ICgg JHRpbWUgIT0gJ3Bhc3QnICkgPyB0cnVlIDogZmFsc2U7IC8vIERldGVybWluZSBoZWFkaW5n IHN0eWxlDQoJJHN0YXR1cyA9ICgkc3RhdHVzKSA/ICRzdGF0dXMgOiAnbGl2ZSc7IC8vIGlu IGNhc2Ugc3RhdHVzIGhhcyBiZWVuIGVtcHRpZWQNCgkkZmlyc3RkYXkgPSAoJGlzb3dlZWtz ID09ICcnKSA/ICRmaXJzdGRheSA6IDE7DQoJJHNwYW5mb3JtID0gKCRzcGFuZm9ybSA9PSAn U01EX1NBTUUnKSA/ICRmb3JtIDogJHNwYW5mb3JtOw0KCSRyZWN1cmZvcm0gPSAoJHJlY3Vy Zm9ybSA9PSAnU01EX1NBTUUnKSA/ICRmb3JtIDogJHJlY3VyZm9ybTsNCgkkY2VsbGZvcm0g PSAoZW1wdHkoJGNlbGxmb3JtKSkgPyAnJyA6IGZldGNoX2Zvcm0oJGNlbGxmb3JtKTsNCg0K CS8vIFNldCB1cCB0aGUgY2xhc3MgcHJlZml4ZXMNCgkkY2xldnMgPSBkb19saXN0KCRjbGFz c2xldmVscyk7DQoJJGNscyA9IGRvX2xpc3QoJGNsYXNzcHJlZml4ZXMpOw0KCSRjbGFzc3By ZWZpeCA9ICRldmNsYXNzcHJlZml4ID0gJGNsc1swXTsNCglpZiAoY291bnQoJGNscykgPiAx KXsNCgkJJGV2Y2xhc3NwcmVmaXggPSAkY2xzWzFdOw0KCX0NCg0KCS8vIFNldCB1cCB0aGUg bmF2IGNsYXNzKGVzKQ0KCSRtYWludGFpbiA9IGRvX2xpc3QoJG1haW50YWluKTsNCgkkbmF2 YXJyb3cgPSBkb19saXN0KCRuYXZhcnJvdyk7DQoJJG5hdnBhcnIgPSAkbmF2YXJyb3dbMF07 DQoJJG5hdm5hcnIgPSAoY291bnQoJG5hdmFycm93KSA+IDEpID8gJG5hdmFycm93WzFdIDog JG5hdmFycm93WzBdOw0KCSRuYXZjbGFzcyA9IGRvX2xpc3QoJG5hdmNsYXNzKTsNCgkkbmF2 cGNsYXNzID0gJG5hdmNsYXNzWzBdOw0KCSRuYXZuY2xhc3MgPSAoY291bnQoJG5hdmNsYXNz KSA+IDEpID8gJG5hdmNsYXNzWzFdIDogJG5hdmNsYXNzWzBdOw0KDQoJLy8gRmlsdGVycw0K CSRmb3B0cyA9IGFycmF5KCk7DQoJJGNhdFNRTCA9ICRzZWNTUUwgPSAkYXV0aFNRTCA9ICcn Ow0KCWlmKCRjYXRlZ29yeSkgew0KCQkkZm9wdHNbJ2MnXSA9ICRjYXRlZ29yeTsNCgkJJGNh dFNRTCA9IGRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRjYXRlZ29yeSkp KSk7DQoJCSRjYXRTUUwgPSAiIEFORCAoIENhdGVnb3J5MSBJTiAoIi4kY2F0U1FMLiIpIE9S IENhdGVnb3J5MiBJTiAoIi4kY2F0U1FMLiIpICkgIjsNCgl9DQoJaWYoJHNlY3Rpb24pIHsN CgkJJGZvcHRzWydzJ10gPSAkc2VjdGlvbjsNCgkJJHNlY1NRTCA9IGRvUXVvdGUoam9pbigi JywnIiwgZG9TbGFzaChkb19saXN0KCRzZWN0aW9uKSkpKTsNCgkJJHNlY1NRTCA9ICIgQU5E IFNlY3Rpb24gSU4gKCIuJHNlY1NRTC4iKSAiOw0KCX0NCglpZigkYXV0aG9yKSB7DQoJCSRm b3B0c1snYXV0aG9yJ10gPSBodG1sZW50aXRpZXMoZ3BzKCdhdXRob3InKSk7DQoJCSRhdXRo U1FMID0gZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGF1dGhvcikpKSk7 DQoJCSRhdXRoU1FMID0gIiBBTkQgQXV0aG9ySUQgSU4gKCIuJGF1dGhTUUwuIikgIjsNCgl9 DQoJJHN0YXR1cyA9IGRvX2xpc3QoJHN0YXR1cyk7DQoJJHN0YXRpID0gYXJyYXkoKTsNCglm b3JlYWNoICgkc3RhdHVzIGFzICRzdGF0KSB7DQoJCWlmIChlbXB0eSgkc3RhdCkpIHsNCgkJ CWNvbnRpbnVlOw0KCQl9IGVsc2UgaWYgKGlzX251bWVyaWMoJHN0YXQpKSB7DQoJCQkkc3Rh dGlbXSA9ICRzdGF0Ow0KCQl9IGVsc2Ugew0KCQkJJHN0YXRpW10gPSBnZXRTdGF0dXNOdW0o JHN0YXQpOw0KCQl9DQoJfQ0KCSRzdGF0aSA9ICIgU3RhdHVzIElOICgiLmpvaW4oJywnLCAk c3RhdGkpLiIpIjsNCg0KCSRleHBpcmVkID0gKCRleHBpcmVkKSA/ICRleHBpcmVkIDogJHBy ZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0aWNsZXMnXTsNCgkkZXhwaXJlZCA9ICgoJGV4cGly ZWQpID8gJycgOiAnIEFORCAobm93KCkgPD0gRXhwaXJlcyBPUiBFeHBpcmVzID0gJy5OVUxM REFURVRJTUUuJyknKTsNCgkkZXZlbnRjbGFzc2VzID0gZG9fbGlzdCgkZXZlbnRjbGFzc2Vz KTsNCgkkaG9saWRheWZsYWdzID0gZG9fbGlzdCgkaG9saWRheWZsYWdzKTsNCgkkbGlua3Bv c3RlZCA9IGRvX2xpc3QoJGxpbmtwb3N0ZWQpOw0KDQoJLy8gV29yayBvdXQgdGhlIGZpcnN0 IGFuZCBsYXN0IHBvc3RzIHRvIGRldGVybWluZSB0aGUgeWVhciByYW5nZSAtIHByb2JhYmx5 IGEgYmV0dGVyIHdheSBvZiBkb2luZyB0aGlzIHRoYW4gMyBxdWVyaWVzDQoJJGVhcmxpZXN0 ID0gc2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAoUG9zdGVkKSBBUyB1UG9zdGVkJywgJ3Rl eHRwYXR0ZXJuJywgJHN0YXRpLigoJGNhdGVnb3J5KSA/ICRjYXRTUUwgOiAnJykuKCgkc2Vj dGlvbikgPyAkc2VjU1FMIDogJycpLigoJGF1dGhvcikgPyAkYXV0aFNRTCA6ICcnKS4nIE9S REVSIEJZIFBvc3RlZCBBU0MgTElNSVQgMCwgMScsICRkZWJ1Zyk7DQoJJGxwID0gc2FmZV9m aWVsZCgndW5peF90aW1lc3RhbXAoUG9zdGVkKSBBUyB1UG9zdGVkJywgJ3RleHRwYXR0ZXJu JywgJHN0YXRpLigoJGNhdGVnb3J5KSA/ICRjYXRTUUwgOiAnJykuKCgkc2VjdGlvbikgPyAk c2VjU1FMIDogJycpLigoJGF1dGhvcikgPyAkYXV0aFNRTCA6ICcnKS4nIE9SREVSIEJZIFBv c3RlZCBERVNDIExJTUlUIDAsIDEnLCAkZGVidWcpOw0KCSRsbSA9IHNhZmVfZmllbGQoJ3Vu aXhfdGltZXN0YW1wKExhc3RNb2QpIEFTIHVMYXN0TW9kJywgJ3RleHRwYXR0ZXJuJywgJHN0 YXRpLigoJGNhdGVnb3J5KSA/ICRjYXRTUUwgOiAnJykuKCgkc2VjdGlvbikgPyAkc2VjU1FM IDogJycpLigoJGF1dGhvcikgPyAkYXV0aFNRTCA6ICcnKS4nIE9SREVSIEJZIExhc3RNb2Qg REVTQyBMSU1JVCAwLCAxJywgJGRlYnVnKTsNCgkkbGF0ZXN0ID0gKCR0aW1lPT0icGFzdCIp ID8gdGltZSgpIDogKCgkbHAgPiAkbG0pID8gJGxwIDogJGxtKTsNCg0KCSR5ZWFyd2lkdGgg PSBkb19saXN0KCR5ZWFyd2lkdGgpOw0KCSR5ZWFyd2lkdGhbMF0gPSAoZW1wdHkoJHllYXJ3 aWR0aFswXSkpID8gMCA6ICR5ZWFyd2lkdGhbMF07DQoJaWYgKGNvdW50KCR5ZWFyd2lkdGgp ID09IDEpIHsNCgkJJHllYXJ3aWR0aFsxXSA9ICR5ZWFyd2lkdGhbMF07DQoJfQ0KCSR1c2Vu b3cgPSBhcnJheShmYWxzZSxmYWxzZSk7DQoJZm9yZWFjaCAoJHllYXJ3aWR0aCBhcyAkeXJp ZHggPT4gJHlyaXRlbSkgew0KCQlpZiAoc3RycG9zKCR5cml0ZW0sImMiKSAhPT0gZmFsc2Up IHsNCgkJCSR5ZWFyd2lkdGhbJHlyaWR4XSA9IGludHZhbCgkeXJpdGVtKTsNCgkJCSR1c2Vu b3dbJHlyaWR4XSA9IHRydWU7DQoJCX0NCgl9DQoNCgkkZWFybGllc3QgPSBkYXRlKCJZIiwg c3RydG90aW1lKCItIi4keWVhcndpZHRoWzBdLiIgeWVhciIsICggKGVtcHR5KCRlYXJsaWVz dCkgfHwgJHVzZW5vd1swXT09dHJ1ZSkgPyB0aW1lKCkgOiAkZWFybGllc3QpICkgKTsNCgkk bGF0ZXN0ID0gZGF0ZSgiWSIsIHN0cnRvdGltZSgiKyIuJHllYXJ3aWR0aFsxXS4iIHllYXIi LCAoIChlbXB0eSgkbGF0ZXN0KSB8fCAkdXNlbm93WzFdPT10cnVlKSA/IHRpbWUoKSA6ICRs YXRlc3QpICkgKTsNCg0KCS8vIENoZWNrIHRoZSBVUkwgZm9yIGN1cnJlbnQgZGF0ZSBhbmQg Y2FsZW5kYXIgdGFyZ2V0IGluZm8NCgkkaW5jb21pbmdfY2FsaWQgPSBncHMoJ2NhbGlkJyk7 DQoJJGluY29taW5nX3llYXIgPSAoZ3BzKCd5JykgYW5kIGlzX251bWVyaWMoZ3BzKCd5Jykp KSA/IChpbnQpZ3BzKCd5JykgOiAnJzsNCgkkaW5jb21pbmdfbW9udGggPSAoZ3BzKCdtJykg YW5kIGlzX251bWVyaWMoZ3BzKCdtJykpKSA/IChpbnQpZ3BzKCdtJykgOiAnJzsNCgkkaW5j b21pbmdfd2VlayA9IChncHMoJ3cnKSBhbmQgaXNfbnVtZXJpYyhncHMoJ3cnKSkpID8gKGlu dClncHMoJ3cnKSA6ICcnOw0KDQoJaWYoJHN0YXRpYykgeyAvLyBpZiB3ZSdyZSBzdGF0aWMg dy9vIGFueSBzdXBwbGllZCB2YXJzLCB1c2UgdGhlIGN1cnJlbnQgZGF0ZQ0KCQlpZighJHll YXIpIHsgJHllYXIgPSBzYWZlX3N0cmZ0aW1lKCclWScpOyB9DQoJCWlmKCEkbW9udGgpIHsg JG1vbnRoID0gc2FmZV9zdHJmdGltZSgnJW0nKTsgfQ0KCX0gZWxzZSB7IC8vIG90aGVyd2lz ZSB1c2UgY3VycmVudCBkYXRlIG9ubHkgaWYgdGhlcmUncyBub3RoaW5nIGVsc2UNCgkJaWYo ICRpZCA9PSAkaW5jb21pbmdfY2FsaWQgKSB7IC8vIHVzZSBpbmNvbWluZw0KCQkJJHllYXIg PSAoJGluY29taW5nX3llYXIpID8gJGluY29taW5nX3llYXIgOiAoKCR5ZWFyKSA/ICR5ZWFy IDogc2FmZV9zdHJmdGltZSgnJVknKSk7DQoJCQkkbW9udGggPSAoJGluY29taW5nX21vbnRo KSA/ICRpbmNvbWluZ19tb250aCA6ICgoJG1vbnRoKSA/ICRtb250aCA6IHNhZmVfc3RyZnRp bWUoJyVtJykpOw0KCQkJLy8gSWYgd2VlayBpcyB1c2VkLCBhZGp1c3QgbW9udGggc28gaXQg ZW5jb21wYXNzZXMgdGhlIGdpdmVuIHdlZWsNCgkJCSR3ZWVrID0gJGluY29taW5nX3dlZWs7 DQoJCQlpZiAoJHdlZWspIHsNCgkJCQkkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCIlbSIsIGdt bWt0aW1lICgxLDEsMSwxLDcqJHdlZWssJHllYXIpKTsgLy8gR3Vlc3MgdGhlIG1vbnRoIGZy b20gdGhlIHdlZWsNCgkJCX0NCgkJfSBlbHNlIHsgLy8gdXNlIGN1cnJlbnQNCgkJCWlmKCEk eWVhcikgeyAkeWVhciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJCWlmKCEkbW9udGgp IHsgJG1vbnRoID0gc2FmZV9zdHJmdGltZSgnJW0nKTsgfQ0KCQkJaWYoJHdlZWspIHsgJG1v bnRoID0gc2FmZV9zdHJmdGltZSgiJW0iLCBnbW1rdGltZSAoMSwxLDEsMSw3KiR3ZWVrLCR5 ZWFyKSk7IH0NCgkJfQ0KCX0NCgkkc21kX2NhbF9pZCA9ICgkaW5jb21pbmdfY2FsaWQpID8g JGluY29taW5nX2NhbGlkIDogJGlkOw0KCSRzbWRfeWVhciA9ICR5ZWFyOyAkc21kX21vbnRo ID0gJG1vbnRoOyAvLyAkc21kX3dlZWsgYW5kIHNtZF9kYXkgYXJlIHNldCBwZXIgZXZlbnQg bGF0ZXINCg0KCS8vIFRoZSB0aW1lcyBpbiB0aGUgREIgYXJlIHN0b3JlZCB1c2luZyB0aGUg c2VydmVyJ3MgbG9jYWwgdGltZSwgc28gd2UgZG9uJ3QNCgkvLyB3YW50IHRvIGFkanVzdCBh bnl0aGluZyAoc2luY2UgbWt0aW1lIHVzZXMgdGhlIHNlcnZlcidzIGxvY2FsIHRpbWUpLg0K CS8vVE9ETzogV29ycnkgYWJvdXQgZ210IC8gZHN0DQoJJHRzX2ZpcnN0ID0gbWt0aW1lKDAs IDAsIDAsICRtb250aCwgMSwgJHllYXIpOw0KCSR0c19sYXN0ID0gbWt0aW1lKDIzLCA1OSwg NTksICRtb250aCwgZGF0ZSgndCcsJHRzX2ZpcnN0KSwgJHllYXIpOw0KDQoJJGV4dHJhc3Fs ID0gJGNhdFNRTCAuICRzZWNTUUwgLiAkYXV0aFNRTDsNCglzd2l0Y2goJHRpbWUpIHsNCgkJ Y2FzZSAiYW55IiA6IGJyZWFrOw0KCQljYXNlICJmdXR1cmUiIDogJGV4dHJhc3FsIC49ICIg QU5EIFBvc3RlZCA+IENVUkRBVEUoKSI7IGJyZWFrOw0KCQlkZWZhdWx0IDogJGV4dHJhc3Fs IC49ICIgQU5EIFBvc3RlZCA8IENVUkRBVEUoKSI7IGJyZWFrOyAvLyBUaGUgcGFzdA0KCX0N Cg0KCS8vIEhvbGlkYXlzIGFyZSBnbG9iYWwgJ2V4Y2x1c2lvbnMnLCBlaXRoZXIgZGVmaW5l ZCBkaXJlY3RseSBvciBpbiBhIDx0eHA6dmFyaWFibGUgLz4NCgkkaG9saWRheXMgPSBkb19s aXN0KCRob2xpZGF5cyk7DQoJJHR4cGhvbHMgPSBkb19saXN0KCRob2xpZGF5c1swXSwgIjoi KTsNCglpZiAoJHR4cGhvbHNbMF0gPT0gInR4cHZhciIpIHsNCgkJJGhvbGlkYXlzID0gZG9f bGlzdCgkdmFyaWFibGVbJHR4cGhvbHNbMV1dKTsNCgl9DQoJLy8gRm9yY2UgZWFjaCBob2xp ZGF5IHRvIGEga25vd24gZm9ybWF0LiBIb2xpZGF5cyB3aXRob3V0IHllYXJzIHVzZSBjdXJy ZW50IHllYXINCglmb3JlYWNoICgkaG9saWRheXMgYXMgJGtleSA9PiAkdmFsKSB7DQoJCWlm IChlbXB0eSgkdmFsKSkgY29udGludWU7DQoJCSRudW1wYXJ0cyA9IHByZWdfbWF0Y2goJy9e KFtcZFx3XSspLj8oW1xkXHddKykuPyhbXGRcd10rKT8kLycsICR2YWwsICRwYXJ0cyk7DQoN CgkJaWYgKCRudW1wYXJ0cykgew0KCQkJaWYgKGNvdW50KCRwYXJ0cykgPT0gMykgew0KCQkJ CSRwYXJ0c1szXSA9ICR5ZWFyOw0KICAgICAgICAgfQ0KCQkJJHZhbCA9IHN0cl9wYWQoJHBh cnRzWzFdLCAyLCAnMCcsIFNUUl9QQURfTEVGVCkuJy0nLnN0cl9wYWQoJHBhcnRzWzJdLCAy LCAnMCcsIFNUUl9QQURfTEVGVCkuJy0nLiRwYXJ0c1szXTsNCgkJfQ0KCQkkaG9saWRheXNb JGtleV0gPSBkYXRlKCJkLU0tWSIsIHN0cnRvdGltZSgkdmFsKSk7DQoJfQ0KDQoJaWYgKCRk ZWJ1ZyA+IDAgJiYgIWVtcHR5KCRob2xpZGF5cykgJiYgJGhvbGlkYXlzWzBdICE9ICcnKSB7 DQoJCWVjaG8gIisrIEhPTElEQVlTICsrICI7DQoJCWRtcCgkaG9saWRheXMpOw0KCX0NCg0K CS8vIEdldCBhbGwgbWF0Y2hpbmcgYXJ0aWNsZXMgaW4gKGFuZCBiZWZvcmUpIHRoaXMgbW9u dGgNCgkkZXZlbnRzID0gYXJyYXkoKTsNCgkkc3FsMiA9ICRzdGF0aSAuICIgSEFWSU5HIHVQ b3N0ZWQgPD0gIi4kdHNfbGFzdCAuICRleHBpcmVkIC4gJGV4dHJhc3FsIC4iIE9SREVSIEJZ IFBvc3RlZCBBU0MiOw0KCSRncmFiQ29scyA9ICcqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQp IGFzIHVQb3N0ZWQsIHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLCB1bml4 X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcyc7DQoJJGV2bGlzdCA9IHNhZmVfcm93 cygkZ3JhYkNvbHMsICd0ZXh0cGF0dGVybicsICRzcWwyLCAkZGVidWcpOw0KCWFydGljbGVf cHVzaCgpOw0KDQoJLy8gSWYgYW55IGV2ZW50cyByZWN1ciBhbmQgZmFsbCB3aXRoaW4gdGhl IGN1cnJlbnQgbW9udGgsIGFkZCB0aG9zZSBhcyB3ZWxsDQoJLy8gSWYgYW55IGRhdGVzIGFy ZSB0byBiZSBleGNsdWRlZCwgdGhlIGVudHJ5IGlzIHNraXBwZWQgVU5MRVNTIHNob3dza2lw cGVkIGluZGljYXRlcyBvdGhlcndpc2UNCglmb3JlYWNoICgkZXZsaXN0IGFzICRyb3cpIHsN CgkJJGlkeCA9IDA7IC8vIEluIGNhc2UgdGhlIDFzdCBkYXkgb2YgdGhlIG1vbnRoIGlzIGEg Y29udGludWF0aW9uIG9mIGFuIGV2ZW50IGZyb20gdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMg bW9udGgNCgkJJHN0YXJ0ID0gJHJvd1sndVBvc3RlZCddOw0KCQkkc3RhcnRfZGF0ZSA9IGRh dGUoIlktbS1kIiwgJHN0YXJ0KTsgLy8gRm9yIHJlY3VycmluZy9zcGFubmVkIGV2ZW50cyBv biBhIG1pbmljYWwsIHRoaXMgaXMgdGhlIGV2ZW50IHRoZSBjZWxsIGxpbmtzIHRvDQoJCSRy ZWFsX2VuZCA9ICRyb3dbJ3VFeHBpcmVzJ107DQoJCSRlbmQgPSAoJHJlYWxfZW5kICE9IDAg JiYgJHJlYWxfZW5kIDwgJHRzX2xhc3QpID8gJHJlYWxfZW5kIDogJHRzX2xhc3Q7DQoJCSRz bWRfY2FsX2ZsYWcgPSAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCg0KCQlpZiAoJGRlYnVn ID4gMSkgew0KCQkJZWNobyAnKysgRVZFTlQgU1RBUlQgLy8gRU5EIC8vIFJFQUwgRU5EICsr JzsNCgkJCWRtcCgkcm93WydUaXRsZSddKTsNCgkJCWRtcChkYXRlKCdkLU0tWSBIOmk6cycs ICRzdGFydCkgLicgLy8gJy4gZGF0ZSgnZC1NLVkgSDppOnMnLCAkZW5kKSAuJyAvLyAnLiBk YXRlKCdkLU0tWSBIOmk6cycsICRyZWFsX2VuZCkpOw0KCQkJaWYgKCRkZWJ1ZyA+IDIpIHsN CgkJCQlkbXAoJHJvdyk7DQoJCQl9DQoJCX0NCg0KCQkkbXVsdGkgPSAoJHJvd1sndUV4cGly ZXMnXSA+ICRyb3dbJ3VQb3N0ZWQnXSAmJiAkcm93Wyd1RXhwaXJlcyddID4gJHRzX2ZpcnN0 ICYmIChkYXRlKCJkLW0tWSIsICRyb3dbJ3VFeHBpcmVzJ10pICE9IGRhdGUoImQtbS1ZIiwg JHJvd1sndVBvc3RlZCddKSkpID8gdHJ1ZSA6IGZhbHNlOw0KCQkkcmVjdXIgPSAoZW1wdHko JHJvd1skc3RlcGZpZWxkXSkpID8gZmFsc2UgOiB0cnVlOw0KCQkkaG9sX2hpdCA9IGluX2Fy cmF5KGRhdGUoImQtTS1ZIiwgJHN0YXJ0KSwgJGhvbGlkYXlzKTsNCgkJJGV2Y2xhc3NlcyA9 IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRldmVudGNsYXNzZXMgYXMgJGV2Y2xzKSB7DQoJCQlz d2l0Y2ggKCRldmNscykgew0KCQkJCWNhc2UgIiI6DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2Ug ImdjYXQiOg0KCQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ2MnXSkgJiYgIWVtcHR5KCRwcmV0 ZXh0WydjJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcHJl dGV4dFsnYyddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhdGVnb3J5IjoN CgkJCQkJaWYgKGlzc2V0KCRyb3dbJ0NhdGVnb3J5MSddKSAmJiAhZW1wdHkoJHJvd1snQ2F0 ZWdvcnkxJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcm93 WydDYXRlZ29yeTEnXTsNCgkJCQkJfQ0KCQkJCQlpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnky J10pICYmICFlbXB0eSgkcm93WydDYXRlZ29yeTInXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNb XSA9ICRldmNsYXNzcHJlZml4LiRyb3dbJ0NhdGVnb3J5MiddOw0KCQkJCQl9DQoJCQkJCWJy ZWFrOw0KCQkJCWNhc2UgInNlY3Rpb24iOg0KCQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ3Mn XSkgJiYgIWVtcHR5KCRwcmV0ZXh0WydzJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAk ZXZjbGFzc3ByZWZpeC4kcHJldGV4dFsncyddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJ CWNhc2UgImF1dGhvciI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsnYXV0aG9yJ10pICYm ICFlbXB0eSgkcHJldGV4dFsnYXV0aG9yJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAk ZXZjbGFzc3ByZWZpeC4kcHJldGV4dFsnYXV0aG9yJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7 DQoJCQkJZGVmYXVsdDoNCgkJCQkJaWYgKGlzc2V0KCRyb3dbJGV2Y2xzXSkgJiYgIWVtcHR5 KCRyb3dbJGV2Y2xzXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNsYXNzcHJlZml4 LiRyb3dbJGV2Y2xzXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQkkZXZj bGFzc2VzID0gKCRldmNsYXNzZXMpID8gJyAnLiBqb2luKCcgJywgJGV2Y2xhc3NlcykgOiAn JzsNCgkJJGlnbm9yZSA9ICRvbWl0ID0gJGNmbGFnID0gYXJyYXkoKTsNCg0KCQlpZiAoJGRl YnVnID4gMSAmJiAkZXZjbGFzc2VzKSB7DQoJCQllY2hvICcrKyBFVkVOVCBDTEFTU0VTICsr JzsNCgkJCWRtcCgkZXZjbGFzc2VzKTsNCgkJfQ0KDQoJCS8vIEV2ZW50cyB0aGF0IHN0YXJ0 IHRoaXMgbW9udGgNCgkJaWYgKCRzdGFydCA8ICRlbmQgJiYgJHN0YXJ0ID4gJHRzX2ZpcnN0 KSB7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJLy8gYSBzdGFuZGFyZCBl dmVudCBvciBzdGFydCBvZiBhIG11bHRpDQoJCQlpZiAoJHNob3dzcGFubmVkICYmICRtdWx0 aSAmJiAhJHJlY3VyKSB7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ211bHRpZmlyc3QnOw0K CQkJfQ0KCQkJaWYgKCRyZWN1cikgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cmZp cnN0JzsNCgkJCX0NCgkJCWlmICghJHNtZF9jYWxfZmxhZykgew0KCQkJCSRzbWRfY2FsX2Zs YWdbXSA9ICdzdGFuZGFyZCc7DQoJCQl9DQoJCQlpZiAoICggJGhvbF9oaXQgJiYgIWluX2Fy cmF5KCdtdWx0aScsJGhvbGlkYXlmbGFncykgJiYgaW5fYXJyYXkoJ211bHRpZmlyc3QnLCRz bWRfY2FsX2ZsYWcpICkgfHwgKCAkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3N0YW5kYXJkJywk aG9saWRheWZsYWdzKSAmJiBpbl9hcnJheSgnc3RhbmRhcmQnLCRzbWRfY2FsX2ZsYWcpICkg KSB7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQl9DQoJCQlmb3JlYWNo ICgkc21kX2NhbF9mbGFnIGFzICRpdGVtKSB7DQoJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVm aXguJGl0ZW07DQoJCQl9DQoNCgkJCSRpZHggPSAoaW50KXN0cmZ0aW1lKCclZCcsICRzdGFy dCk7DQoJCQkkc21kX2RheSA9ICRpZHg7DQoJCQkkc21kX3dlZWsgPSBzdHJmdGltZSgnJVYn LCAkc3RhcnQpOw0KCQkJJG9wID0gKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkZm9y bSkgPyBwYXJzZV9mb3JtKCRmb3JtKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVm KCRyb3dbJ1RpdGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1Rp dGxlJ10uJyInKSkgKTsNCgkJCSRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9w LCAnZmxhZycgPT4gJHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpv aW4oJyAnLGFycmF5X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNs YXNzZXMsICdwb3N0ZWQnID0+ICRzdGFydF9kYXRlKTsNCgkJCSRzbWRfY2FsX2ZsYWcgPSAk Y2ZsYWcgPSAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCgkJfQ0KDQoJCS8vIEdlbmVyYXRl IGEgc2tpcCBhcnJheSBmb3IgdGhpcyBldmVudA0KCQlpZiAoJHNraXBmaWVsZCAmJiAkcm93 WyRza2lwZmllbGRdICE9ICcnKSB7DQoJCQkkaWdub3JlID0gZG9fbGlzdCgkcm93WyRza2lw ZmllbGRdKTsNCgkJCWZvcmVhY2ggKCRpZ25vcmUgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJ JGlnbm9yZVska2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsgLy8gRm9y Y2UgZWFjaCBkYXRlIHRvIGEga25vd24gZm9ybWF0DQoJCQl9DQoJCX0NCgkJLy8gR2VuZXJh dGUgYW4gb21pdCBhcnJheSBmb3IgdGhpcyBldmVudA0KCQlpZiAoJG9taXRmaWVsZCAmJiAk cm93WyRvbWl0ZmllbGRdICE9ICcnKSB7DQoJCQkkb21pdCA9IGRvX2xpc3QoJHJvd1skb21p dGZpZWxkXSk7DQoJCQlmb3JlYWNoICgkb21pdCBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkk b21pdFska2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgkJCX0NCgkJ fQ0KCQlpZiAoJGRlYnVnID4gMSAmJiAoJGlnbm9yZSB8fCAkb21pdCkpIHsNCgkJCWVjaG8g JysrIE9NSVRURUQgREFURVMgKysnOw0KCQkJZG1wKCRvbWl0KTsNCgkJCWVjaG8gJysrIENB TkNFTExFRCBEQVRFUyArKyc7DQoJCQlkbXAoJGlnbm9yZSk7DQoJCX0NCgkJLy8gQ2FsY3Vs YXRlIHRoZSBkYXRlIG9mZnNldHMgYW5kIGNoZWNrIHJlY3VycmluZyBldmVudHMgdGhhdCBm YWxsIHdpdGhpbiB0aGUgbW9udGggb2YgaW50ZXJlc3QNCgkJaWYgKCRzdGVwZmllbGQgJiYg JHJvd1skc3RlcGZpZWxkXSAhPSAnJykgew0KCQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0 ZXBmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJGZyZXEgYXMgJGludGVydmFsKSB7DQoJCQkJJG1h eF9sb29wID0gOTk5OTk7IC8vIFl1aywgYnV0IHByYWN0aWNhbGx5IGxpbWl0bGVzcw0KCQkJ CSRpbnRlcnZhbCA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUo MCwwLDAsJG1vbnRoLDEpKSwgJGludGVydmFsKTsNCgkJCQkkaW50ZXJ2YWwgPSBzdHJfcmVw bGFjZSgiP3llYXIiLCAkeWVhciwgJGludGVydmFsKTsNCgkJCQlpZiAoc3RycG9zKCRpbnRl cnZhbCwgImxhc3QiKSA9PT0gMCkgew0KCQkJCQkkaW50ZXJ2YWwgPSBkYXRlKCJsLCBGIGpT IFkiLCBzdHJ0b3RpbWUoJGludGVydmFsLCBta3RpbWUoMTIsIDAsIDAsIGRhdGUoIm4iLG1r dGltZSgwLDAsMCwkbW9udGgsMSwkeWVhcikpKzEsIDEsICR5ZWFyKSkpOw0KCQkJCQkkbWF4 X2xvb3AgPSAxOw0KCQkJCX0gZWxzZSBpZiAoc3RycG9zKCRpbnRlcnZhbCwgImZpcnN0Iikg PT09IDApIHsNCgkJCQkJJGludGVydmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1l KCRpbnRlcnZhbCwgbWt0aW1lKDEyLCAwLCAwLCAoKCRtb250aD4xKSA/ICRtb250aC0xIDog MTIpLCBkYXRlKCJ0Iixta3RpbWUoMCwwLDAsJG1vbnRoLTEsMSwoKCRtb250aD09MSkgPyAk eWVhci0xOiAkeWVhcikpKSwgKCgkbW9udGg9PTEpID8gJHllYXItMTogJHllYXIpKSkpOw0K CQkJCQkkbWF4X2xvb3AgPSAxOw0KCQkJCX0NCgkJCQkkdHNfbG9vcCA9IDA7DQoJCQkJJHRz X2N1cnIgPSAkc3RhcnQ7DQoJCQkJd2hpbGUgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfbG9v cCA8ICRtYXhfbG9vcCkgew0KCQkJCQlpZiAoJG1heF9sb29wID09IDEpIHsNCgkJCQkJCSR0 c19jdXJyID0gc3RydG90aW1lKCRpbnRlcnZhbCk7DQoJCQkJCQkkdHNfY3VyciA9ICgkdHNf Y3VyciA8ICRzdGFydCB8fCAkdHNfY3VyciA+ICRlbmQpID8gJHN0YXJ0IDogJHRzX2N1cnI7 DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkdHNfY3VyciA9IHN0cnRvdGltZSgkaW50ZXJ2YWws ICR0c19jdXJyKTsNCgkJCQkJfQ0KCQkJCQlpZiAoJHRzX2N1cnIgPT09IGZhbHNlKSB7DQoJ CQkJCQkkdHNfbG9vcCsrOw0KCQkJCQkJYnJlYWs7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQlp ZiAoJGRlYnVnID4gMSkgew0KCQkJCQkJCWRtcCgiSU5URVJWQUw6ICIuIGRhdGUoJ2QtTS1Z IEg6aTpzJywgJHRzX2N1cnIpKTsNCgkJCQkJCX0NCgkJCQkJCWlmICgkdHNfY3VyciA8ICRl bmQgJiYgJHRzX2N1cnIgPj0gJHRzX2ZpcnN0ICYmICR0c19jdXJyICE9ICRzdGFydCkgew0K CQkJCQkJCS8vIEEgcmVjdXJyaW5nIGV2ZW50LiBDaGVjayBpdCBpc24ndCBhIGhvbGlkYXkg b3IgdG8gYmUgaWdub3JlZA0KCQkJCQkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJ CQkJCQkJJG9wID0gJyc7DQoJCQkJCQkJJGlkeCA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHRz X2N1cnIpOw0KCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cic7DQoJCQkJCQkJJHRo aXNkYXRlID0gZGF0ZSgiZC1NLVkiLCAkdHNfY3Vycik7DQoJCQkJCQkJJG9taXRfbWUgPSBp bl9hcnJheSgkdGhpc2RhdGUsICRvbWl0KTsNCgkJCQkJCQkkc2hvd19tZSA9ICFpbl9hcnJh eSgkdGhpc2RhdGUsICRpZ25vcmUpOw0KCQkJCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRo aXNkYXRlLCAkaG9saWRheXMpOw0KCQkJCQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAh aW5fYXJyYXkoJ3JlY3VyJywkaG9saWRheWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJ CQkJCWlmICggJG9taXRfbWUgKSB7DQoJCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0 JzsNCgkJCQkJCQl9DQoJCQkJCQkJaWYgKCAoISRzaG93X21lIHx8ICEkc2hvd19ob2wpICYm ICEkb21pdF9tZSApIHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJ CQkJCQkJfQ0KCQkJCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJ CQkJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQkJCQkJfQ0KDQoJCQkJ CQkJLy8gQ3JlYXRlIHRoZSBldmVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIGNlbGwgYnV0IG9u bHkgaWYgdGhleSd2ZSBub3QgYXBwZWFyZWQgYmVmb3JlLCBvciBhcmUgdG8gYmUgaWdub3Jl ZC9vbWl0dGVkDQoJCQkJCQkJaWYgKCEkb21pdF9tZSkgew0KCQkJCQkJCQlpZiAoKCRzaG93 X21lICYmICRzaG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkJCQkkc21kX2Rh eSA9ICRpZHg7DQoJCQkJCQkJCQkkc21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkdHNfY3Vy cik7DQoJCQkJCQkJCQkkb3AgPSAoJHJlY3VyZm9ybSkgPyBwYXJzZV9mb3JtKCRyZWN1cmZv cm0pIDogKCgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJHNpemU9PSJzbWFsbCIpID8g JycgOiBocmVmKCRyb3dbJ1RpdGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSIn LiRyb3dbJ1RpdGxlJ10uJyInKSkgKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQkk dXNlZCA9IGFycmF5KCk7DQoJCQkJCQkJaWYgKGlzc2V0KCRldmVudHNbJGlkeF0pICYmICRl dmVudHNbJGlkeF0gIT0gTlVMTCkgew0KCQkJCQkJCQlmb3JlYWNoICgkZXZlbnRzWyRpZHhd IGFzICRldikgew0KCQkJCQkJCQkJJHVzZWRbXSA9ICRldlsnZXYnXTsNCgkJCQkJCQkJfQ0K CQkJCQkJCX0NCgkJCQkJCQlpZiAoaXNzZXQoJGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1sk aWR4XSA9PSBOVUxMIHx8ICFpbl9hcnJheSgkb3AsICR1c2VkKSkgew0KCQkJCQkJCQkkZXZl bnRzWyRpZHhdW10gPSBhcnJheSgnZXYnID0+ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2Zs YWcsICdjbGFzc2VzJyA9PiAoKCRjZmxhZykgPyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2Zs YWcsICRzbWRfY2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkc3Rh cnRfZGF0ZSk7DQoJCQkJCQkJfQ0KCQkJCQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAk c21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCgkJCQkJCX0NCgkJCQkJCSR0c19sb29wKys7DQoJ CQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0gZWxzZSBpZiAoJHNob3dzcGFubmVkICYmICRtdWx0 aSkgew0KCQkJLy8gTm9uLXJlY3VycmluZyBldmVudHMgbWF5IHNwYW4gbW9yZSB0aGFuIG9u ZSBkYXRlIGJ1dCB0aGV5IG11c3Qgc3RpbGwgcmVzcGVjdCBpZ25vcmVkIGRhdGVzIGFuZCBo b2xpZGF5cw0KCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsNCgkJCSRsYXN0ZGF5ID0g KGludClzdHJmdGltZSgnJWQnLCAkZW5kKTsNCgkJCSRyZWFsX2xhc3RkYXkgPSAoaW50KXN0 cmZ0aW1lKCclZCcsICRyZWFsX2VuZCk7DQoJCQl3aGlsZSAoKyskaWR4IDw9ICRsYXN0ZGF5 KSB7DQoJCQkJJG9wID0gJyc7DQoJCQkJJG11bHRpZmxhZyA9ICgkaWR4PT0kcmVhbF9sYXN0 ZGF5KSA/ICdtdWx0aWxhc3QnIDogKCgkaWR4PT0xKSA/ICdtdWx0aXByZXYnIDogJ211bHRp Jyk7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJG11bHRpZmxhZzsNCgkJCQkkdGhpc3RpbWUg PSBnbW1rdGltZSgwLCAwLCAwLCAkbW9udGgsICRpZHgsICR5ZWFyKTsNCgkJCQkkdGhpc2Rh dGUgPSBkYXRlKCJkLU0tWSIsICR0aGlzdGltZSk7DQoJCQkJJG9taXRfbWUgPSBpbl9hcnJh eSgkdGhpc2RhdGUsICRvbWl0KTsNCgkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2Rh dGUsICRpZ25vcmUpOw0KCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkaG9s aWRheXMpOw0KCQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ211bHRp JywkaG9saWRheWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCWlmICggJG9taXRfbWUg KSB7DQoJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQl9DQoJCQkJaWYgKCAo ISRzaG93X21lIHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9j YWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQkJfQ0KCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2Zs YWcgYXMgJGl0ZW0pIHsNCgkJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJ CQkJfQ0KCQkJCS8vIENyZWF0ZSB0aGUgc3Bhbm5lZCBldmVudCB0aGF0IGFwcGVhcnMgaW4g dGhlIGNlbGwNCgkJCQlpZiAoISRvbWl0X21lKSB7DQoJCQkJCWlmICggKCRzaG93X21lICYm ICRzaG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkkc21kX2RheSA9ICRpZHg7 DQoJCQkJCQkkc21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkdGhpc3RpbWUpOw0KCQkJCQkJ JG9wID0gKCRzcGFuZm9ybSkgPyBwYXJzZV9mb3JtKCRzcGFuZm9ybSkgOiAoKCR0aGluZykg PyBwYXJzZSgkdGhpbmcpIDogKCgkc2l6ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoJyZyYXJy OycsIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyInKSkg KTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkZXZlbnRzWyRpZHhdW10gPSBhcnJheSgnZXYnID0+ ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9PiAoKCRjZmxhZykg PyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3VjbHMpKSA6ICcnKS4k ZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7DQoJCQkJJHNtZF9jYWxfZmxh ZyA9ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJfQ0KCQl9DQoJfQ0K CWFydGljbGVfcG9wKCk7DQoNCgkvLyBHZW5lcmF0ZSB0aGUgY2FsZW5kYXINCglpZiggJHNp emUgPT0gInNtYWxsIiApIHsNCgkJJGNhbGVuZGFyID0gbmV3IFNNRF9TbWFsbF9DYWxlbmRh cigkeWVhciwgJG1vbnRoLCAkZXZlbnRzLCAkc2VjdGlvbiwgJGNhdGVnb3J5KTsNCgl9IGVs c2Ugew0KCQkkY2FsZW5kYXIgPSBuZXcgU01EX0NhbGVuZGFyKCR5ZWFyLCAkbW9udGgsICRl dmVudHMpOw0KCX0NCgkkY2FsZW5kYXItPnNldFdlZWsoJHdlZWspOw0KCSRjYWxlbmRhci0+ c2V0R01UKCRnbXQpOw0KCSRjYWxlbmRhci0+c2V0TGFuZygkbGFuZyk7DQoJJGNhbGVuZGFy LT5zZXRDbGFzc0xldmVscygkY2xldnMpOw0KCSRjYWxlbmRhci0+c2V0Q2xhc3NQcmVmaXgo JGNsYXNzcHJlZml4KTsNCgkkY2FsZW5kYXItPnNldEV2ZW50UHJlZml4KCRldmNsYXNzcHJl Zml4KTsNCgkkY2FsZW5kYXItPnNldEV2ZW50V3JhcHRhZygkZXZlbnR3cmFwdGFnKTsNCgkk Y2FsZW5kYXItPnNldENlbGxGb3JtKCRjZWxsZm9ybSk7DQoJJGNhbGVuZGFyLT5zZXRNWVdy YXB0YWcoJG15d3JhcHRhZyk7DQoJJGNhbGVuZGFyLT5zZXRUYWJsZUlEKCRpZCk7DQoJJGNh bGVuZGFyLT5zZXRUYWJsZUNsYXNzKCRjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRSb3dDbGFz cygkcm93Y2xhc3MpOw0KCSRjYWxlbmRhci0+c2V0Q2VsbENsYXNzKCRjZWxsY2xhc3MpOw0K CSRjYWxlbmRhci0+c2V0RW1wdHlDbGFzcygkZW1wdHljbGFzcyk7DQoJJGNhbGVuZGFyLT5z ZXRJU09XZWVrQ2xhc3MoJGlzb3dlZWtjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXROYXZJbmZv KCRuYXZwY2xhc3MsJG5hdm5jbGFzcywkbmF2cGFyciwkbmF2bmFyciwkbmF2aWQpOw0KCSRj YWxlbmRhci0+c2V0TmF2S2VlcCgkbWFpbnRhaW4pOw0KCSRjYWxlbmRhci0+c2V0TVlDbGFz cygkbXljbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXROYW1lRm9ybWF0KCRkYXlmb3JtYXQsICJk Iik7DQoJJGNhbGVuZGFyLT5zZXROYW1lRm9ybWF0KCRtb250aGZvcm1hdCwgIm0iKTsNCgkk Y2FsZW5kYXItPnNldFNob3dJU09XZWVrKCRpc293ZWVrcyk7DQoJJGNhbGVuZGFyLT5zZXRF WWVhcigkZWFybGllc3QpOw0KCSRjYWxlbmRhci0+c2V0TFllYXIoJGxhdGVzdCk7DQoJJGNh bGVuZGFyLT5zZXRGaWx0ZXJPcHRzKCRmb3B0cyk7DQoJJGNhbGVuZGFyLT5zZXRIb2xpZGF5 cygkaG9saWRheXMpOw0KCSRjYWxlbmRhci0+c2V0U2VsZWN0b3JzKGRvX2xpc3QoJHNlbGVj dCksICRzZWxlY3RidG4pOw0KCSRjYWxlbmRhci0+c2V0Rmlyc3REYXlPZldlZWsoJGZpcnN0 ZGF5KTsNCgkkY2FsZW5kYXItPnNldExpbmtQb3N0ZWQoJGxpbmtwb3N0ZWQpOw0KDQoJcmV0 dXJuICRjYWxlbmRhci0+ZGlzcGxheSgkc3RhdGljLCAkZnV0dXJlKTsNCn0NCg0KY2xhc3Mg U01EX0NhbGVuZGFyIGV4dGVuZHMgU01EX1Jhd19DYWxlbmRhciB7DQoJLy8gT3ZlcnJpZGUg Q29uc3RydWN0b3INCgkvLyBQZXJtaXRzIG11bHRpcGxlIGV2ZW50cyB0byBzaG93IHBlciBk YXkNCglmdW5jdGlvbiBTTURfQ2FsZW5kYXIoJHllYXIsJG1vbnRoLCRldmVudHMpIHsNCgkJ JHRoaXMtPmV2ZW50cyA9ICRldmVudHM7DQoJCSR0aGlzLT5TTURfUmF3X0NhbGVuZGFyKCR5 ZWFyLCRtb250aCk7DQoJfQ0KDQoJLy8gT3ZlcnJpZGUgZHNwRGF5Q2VsbCB0byBkaXNwbGF5 IHN0dWZmIHJpZ2h0DQoJZnVuY3Rpb24gZHNwRGF5Q2VsbCgkdGhlZGF5KSB7DQoJCWdsb2Jh bCAkc21kX2NhbF9mbGFnLCAkc21kX2NhbF9pZCwgJHNtZF9jYWxfdWNscywgJHNtZF95ZWFy LCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0KDQoJCSRzbWRfY2FsX2ZsYWcg PSAkc21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhp cy0+ZXZlbnRzWyR0aGVkYXldKTsNCgkJJHRoZWRhdGUgPSBnbW1rdGltZSgwLCAwLCAwLCAk dGhpcy0+bW9udGgsICR0aGVkYXksICR0aGlzLT55ZWFyKTsNCgkJJGhvbF9oaXQgPSBpbl9h cnJheShkYXRlKCJkLU0tWSIsICR0aGVkYXRlKSwgJHRoaXMtPmhvbGlkYXlzKTsNCgkJaWYg KCRoYXNhcnRpY2xlKSB7DQoJCQkkc21kX2NhbF9mbGFnW10gPSAnZXZlbnQnOw0KCQl9DQoJ CWlmICgkaG9sX2hpdCkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2hvbHMnOw0KCQl9DQoJ CSRjZmxhZyA9IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0p IHsNCgkJCSRjZmxhZ1tdID0gJHRoaXMtPmNsYXNzcHJlZml4LiRpdGVtOw0KCQl9DQoJCSR0 ZGNsYXNzID0gJHRoaXMtPmNlbGxjbGFzcyAuICgoJGNmbGFnKSA/ICcgJy5qb2luKCcgJywg JGNmbGFnKSA6ICcnKTsNCgkJJHJ1bm5pbmdjbGFzcyA9IChpbl9hcnJheSgiY2VsbCIsICR0 aGlzLT5jbGFzc2xldmVscykgfHwgaW5fYXJyYXkoImNlbGxwbHVzIiwgJHRoaXMtPmNsYXNz bGV2ZWxzKSkgPyBleHBsb2RlKCcgJywgJHRkY2xhc3MpIDogYXJyYXkoKTsNCgkJaWYoJHRo aXMtPnllYXIgPT0gZGF0ZSgnWScsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGlzLT5t b250aCA9PSBkYXRlKCduJyx0aW1lKCkrdHpfb2Zmc2V0KCkgKSBhbmQgJHRoZWRheSA9PSBk YXRlKCdqJyx0aW1lKCkrdHpfb2Zmc2V0KCkpICkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0g J3RvZGF5JzsNCgkJCSRydW5uaW5nY2xhc3NbXSA9ICR0aGlzLT5jbGFzc3ByZWZpeC4ndG9k YXknOw0KCQl9DQoNCgkJJG91dCA9ICRmbGFncyA9IGFycmF5KCk7DQoJCWlmIChlbXB0eSgk dGhpcy0+Y2VsbGZvcm0pKSB7DQoJCQkkb3V0W10gPSBoZWQoJHRoZWRheSw0KTsNCgkJfQ0K CQlpZiggaXNzZXQoJHRoaXMtPmV2ZW50c1skdGhlZGF5XSkgKSB7DQoJCQkkZGF5c19ldmVu dHMgPSAkdGhpcy0+ZXZlbnRzWyR0aGVkYXldOw0KCQkJZm9yZWFjaCgkZGF5c19ldmVudHMg YXMgJGV2KSB7DQoJCQkJJGV2Y2xhc3MgPSB0cmltKCRldlsnY2xhc3NlcyddKTsNCgkJCQkk ZmxhZ3MgPSBhcnJheV9tZXJnZSgkZmxhZ3MsICRldlsnZmxhZyddKTsNCgkJCQlpZiAoaW5f YXJyYXkoImNlbGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkgew0KCQkJCQlmb3JlYWNo IChleHBsb2RlKCcgJywgJGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJCSRydW5uaW5nY2xh c3NbXT0gJGV2YzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkb3V0W10gPSAoJHRoaXMtPmV2d3Jh cHRhZykgPyB0YWcoJGV2WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAoKCRldmNsYXNzICYm IGluX2FycmF5KCJldmVudCIsICR0aGlzLT5jbGFzc2xldmVscykpID8gJyBjbGFzcz0iJy4k ZXZjbGFzcy4nIicgOiAnJykpIDogJGV2WydldiddOw0KCQkJfQ0KCQl9DQoJCSRydW5uaW5n Y2xhc3MgPSBhcnJheV91bmlxdWUoJHJ1bm5pbmdjbGFzcyk7DQoJCWlmIChpbl9hcnJheSgi Y2VsbHBsdXMiLCAkdGhpcy0+Y2xhc3NsZXZlbHMpKSB7DQoJCQkkc21kX2NhbF9mbGFnID0g YXJyYXlfbWVyZ2UoJHNtZF9jYWxfZmxhZywgJGZsYWdzKTsNCgkJfQ0KDQoJCWlmICgkdGhp cy0+Y2VsbGZvcm0pIHsNCgkJCSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAsIDAsICR0aGlz LT5tb250aCwgJHRoZWRheSwgJHRoaXMtPnllYXIpOw0KCQkJJHNtZF9jYWxfaWQgPSAkdGhp cy0+dGFibGVJRDsNCgkJCSRzbWRfeWVhciA9ICR0aGlzLT55ZWFyOw0KCQkJJHNtZF9tb250 aCA9ICR0aGlzLT5tb250aDsNCgkJCSRzbWRfd2VlayA9IHN0cmZ0aW1lKCIlViIsICR0aGlz dGltZSk7DQoJCQkkc21kX2RheSA9ICR0aGVkYXk7DQoJCQkkcmVwcyA9IGFycmF5KA0KCQkJ CSd7ZXZlbnRzfScgPT4gam9pbignJywkb3V0KSwNCgkJCQkne2RheX0nID0+ICR0aGVkYXks DQoJCQkJJ3t3ZWVrZGF5fScgPT4gKChpc19hcnJheSgkdGhpcy0+ZGF5TmFtZUZtdCkpID8g JHRoaXMtPmRheU5hbWVzW2RhdGUoJ3cnLCR0aGlzdGltZSldIDogc3RyZnRpbWUoJHRoaXMt PmRheU5hbWVGbXQsICR0aGlzdGltZSkpLA0KCQkJCSd7d2Vla30nID0+ICRzbWRfd2VlaywN CgkJCQkne21vbnRofScgPT4gJHRoaXMtPm1vbnRoLA0KCQkJCSd7bW9udGhuYW1lfScgPT4g c3RyZnRpbWUoJHRoaXMtPm10aE5hbWVGbXQsICR0aGlzdGltZSksDQoJCQkJJ3t5ZWFyfScg PT4gJHRoaXMtPnllYXIsDQoJCQkJJ3tzaG9ydHllYXJ9JyA9PiBzdHJmdGltZSgiJWciLCAk dGhpc3RpbWUpLA0KCQkJKTsNCgkJCSRjZWxsb3V0ID0gcGFyc2Uoc3RydHIoJHRoaXMtPmNl bGxmb3JtLCAkcmVwcykpOw0KCQkJJGNhcnJheSA9IGFycmF5X21lcmdlKCRydW5uaW5nY2xh c3MsICRzbWRfY2FsX3VjbHMpOw0KCQkJJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoNCgkJ CXJldHVybiBkb1RhZygkY2VsbG91dCwndGQnLGpvaW4oJyAnLCRjYXJyYXkpKTsNCgkJfSBl bHNlIHsNCgkJCS8vIEFtYWxnYW1hdGUgdGhlIGV2ZW50LWxldmVsIGNsYXNzZXMgYW5kIGNl bGwtbGV2ZWwgY2xhc3NlcywgaWYgcmVxdWlyZWQNCgkJCXJldHVybiBkb1RhZyhqb2luKCcn LCRvdXQpLCd0ZCcsam9pbignICcsJHJ1bm5pbmdjbGFzcykpOw0KCQl9DQoJfQ0KDQoJZnVu Y3Rpb24gZGlzcGxheSgkc3RhdGljPWZhbHNlLCAkZnV0dXJlPWZhbHNlKSB7DQoJCSRpZCA9 ICgkdGhpcy0+dGFibGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELiciJyA6ICcnOw0K CQkkY1tdID0gJHRoaXMtPmRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKTsNCgkJJGNbXSA9 ICR0aGlzLT5kc3BEYXlOYW1lcygpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheUNlbGxzKCk7 DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0YWJsZScsJHRoaXMtPnRhYmxlY2xh c3MsJGlkKTsNCgl9DQoNCglmdW5jdGlvbiBkc3BIZWFkZXIoJHN0YXRpYywgJGZ1dHVyZSkg ew0KCQlnbG9iYWwgJHByZXRleHQ7DQoNCgkJJGN1cnJtbyA9ICR0aGlzLT5tb250aDsNCgkJ JGN1cnJ5ciA9ICR0aGlzLT55ZWFyOw0KCQkkbmF2cGNsYXNzID0gJHRoaXMtPmdldE5hdklu Zm8oInBjIik7DQoJCSRuYXZuY2xhc3MgPSAkdGhpcy0+Z2V0TmF2SW5mbygibmMiKTsNCgkJ JG5hdnBhcnJvdyA9ICR0aGlzLT5nZXROYXZJbmZvKCJwYSIpOw0KCQkkbmF2bmFycm93ID0g JHRoaXMtPmdldE5hdkluZm8oIm5hIik7DQoJCSRuYXZpZCA9ICR0aGlzLT5nZXROYXZJbmZv KCJpZCIpOw0KCQkkbmF2cGNsYXNzID0gKCRuYXZwY2xhc3MpID8gJyBjbGFzcz0iJy4kbmF2 cGNsYXNzLiciJyA6ICcnOw0KCQkkbmF2bmNsYXNzID0gKCRuYXZuY2xhc3MpID8gJyBjbGFz cz0iJy4kbmF2bmNsYXNzLiciJyA6ICcnOw0KCQkkZm9wdHMgPSAkdGhpcy0+Zm9wdHM7DQoJ CWZvcmVhY2ggKCR0aGlzLT5tYWludGFpbiBhcyAkY29sKSB7DQoJCQlzd2l0Y2ggKCRjb2wp IHsNCgkJCQljYXNlICJzZWN0aW9uIjoNCgkJCQkJaWYgKCRwcmV0ZXh0WydzJ10pIHsNCgkJ CQkJCSRmb3B0cyA9IGFycmF5KCdzJyA9PiAkcHJldGV4dFsncyddKSArICRmb3B0czsNCgkJ CQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJhcnRpY2xlIjoNCgkJCQkJaWYgKCRwcmV0 ZXh0WydpZCddKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnaWQnID0+ICRwcmV0ZXh0Wydp ZCddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJjYXRlZ29y eSI6DQoJCQkJCWlmICgkcHJldGV4dFsnYyddKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgn YycgPT4gJHByZXRleHRbJ2MnXSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJ CQkJY2FzZSAiYXV0aG9yIjoNCgkJCQkJaWYgKGdwcygnYXV0aG9yJykpIHsNCgkJCQkJCSRm b3B0cyA9IGFycmF5KCdhdXRob3InID0+IGdwcygnYXV0aG9yJykpICsgJGZvcHRzOw0KCQkJ CQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgInBnIjoNCgkJCQkJaWYgKCRwcmV0ZXh0Wydw ZyddKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgncGcnID0+ICRwcmV0ZXh0WydwZyddKSAr ICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJjYWxpZCI6DQoJCQkJ CWlmICgkdGhpcy0+dGFibGVJRCkgew0KCQkJCQkJJGZvcHRzID0gYXJyYXkoJ2NhbGlkJyA9 PiAkdGhpcy0+dGFibGVJRCkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJ ZGVmYXVsdDoNCgkJCQkJaWYgKGdwcygkY29sKSkgew0KCQkJCQkJJGZvcHRzID0gYXJyYXko JGNvbCA9PiBncHMoJGNvbCkpICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJ fQ0KCQl9DQoJCSRmb3B0cyA9IGFycmF5X3VuaXF1ZSgkZm9wdHMpOw0KCQkkZmlsdGVycyA9 IGFycmF5KCk7DQoJCSRmaWx0ZXJIaWQgPSBhcnJheSgpOw0KCQlpZiAoISRzdGF0aWMpIHsN CgkJCWZvcmVhY2goJGZvcHRzIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRmaWx0ZXJzW10g PSAka2V5Lic9Jy4kdmFsOw0KCQkJCSRmaWx0ZXJIaWRbXSA9IGhJbnB1dCgka2V5LCAkdmFs KTsNCgkJCX0NCgkJfQ0KCQkkZmlsdGVyVVJMID0gam9pbihhLCAkZmlsdGVycyk7DQoNCgkJ Ly8gV2VlayBzZWxlY3QgbGlzdA0KCQlpZiAoJHRoaXMtPnVzZVNlbGVjdG9yKCd3ZWVrJykg JiYgISRzdGF0aWMpIHsNCgkJCSRjdXJyd2sgPSAoJHRoaXMtPndlZWspID8gJHRoaXMtPndl ZWsgOiBkYXRlKCdXJywgc3RydG90aW1lKCAkY3VycnlyLiItIi4kY3Vycm1vLiItMSAxMjow MCIgKSk7DQoJCQlmb3IgKCAkaWR4ID0gMTsgJGlkeCA8PSA1MjsgJGlkeCsrICkgew0KCQkJ CSR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQlpZiAoICRpZHggPT0gJGN1 cnJ3ayApICR0YWdhdHRzIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7DQoJCQkJJG9wdGlv bnRhZ3NbXSA9IGRvVGFnKHN0cl9wYWQoJGlkeCwgMiwgJzAnLCBTVFJfUEFEX0xFRlQpLCAn b3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3RvcltdID0gZG9UYWco am9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5teXdyYXB0YWcpID8g JycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0idyInLigoJHRoaXMtPnNlbGJ0bikgPyAn JyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCiAgIAkJCQkuICgoJHRoaXMtPnVz ZVNlbGVjdG9yKCd5ZWFyJykpID8gJycgOiBoSW5wdXQoJ3knLCAkY3VycnlyKSk7DQoJCQkk b3B0aW9udGFncyA9IGFycmF5KCk7IC8vIEJsYW5rIG91dA0KCQl9DQoNCgkJLy8gTW9udGgg c2VsZWN0IGxpc3QgLSBub3RlIG1rdGltZSBoYXMgdGhlIGRheSBmb3JjZWQgdG8gMS4gSWYg bm90IHlvdSBnZXQNCgkJLy8gYml6YXJyZSByZXBlYXRlZCBtb250aCBuYW1lcyBvbiB0aGUg MzFzdCBvZiBzb21lIG1vbnRocyA6LVwNCgkJaWYgKCEkdGhpcy0+dXNlU2VsZWN0b3IoJ3dl ZWsnKSkgew0KCQkJaWYgKCR0aGlzLT51c2VTZWxlY3RvcignbW9udGgnKSAmJiAhJHN0YXRp Yykgew0KCQkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDEyOyAkaWR4KysgKSB7DQoJCQkJ CSR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQkJaWYgKCAkaWR4ID09ICRj dXJybW8gKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0KCQkJCQkkb3B0 aW9udGFnc1tdID0gZG9UYWcoc3RyZnRpbWUoJHRoaXMtPm10aE5hbWVGbXQsIGdtbWt0aW1l KDEyLDAsMCwkaWR4LDEpKSwgJ29wdGlvbicsICcnLCAkdGFnYXR0cyk7DQoJCQkJfQ0KCQkJ CSRzZWxlY3RvcltdID0gZG9UYWcoam9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAo KCR0aGlzLT5teXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0ibSIn LigoJHRoaXMtPnNlbGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykN CgkgICAJCQkJLiAoKCR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpKSA/ICcnIDogaElucHV0 KCd5JywgJGN1cnJ5cikpOw0KCQkJCSRvcHRpb250YWdzID0gYXJyYXkoKTsgLy8gQmxhbmsg b3V0DQoJCQl9IGVsc2Ugew0KCQkJCSRzZWxlY3RvcltdID0gZG9UYWcoJHRoaXMtPmdldE1v bnRoTmFtZSgpLCAnc3BhbicsICgoJHRoaXMtPm15d3JhcHRhZykgPyAnJyA6ICR0aGlzLT5t eWNsYXNzKSk7DQoJCQl9DQoJCX0NCg0KCQkvLyBZZWFyIHNlbGVjdCBsaXN0DQoJCSR5MCA9 ICR0aGlzLT5leXI7DQoJCSR5MSA9ICR0aGlzLT5seXI7DQoJCWlmICgkdGhpcy0+dXNlU2Vs ZWN0b3IoJ3llYXInKSAmJiAoJHkwICE9ICR5MSkgJiYgISRzdGF0aWMpIHsNCgkJCWZvciAo ICRpZHggPSAkeTA7ICRpZHggPD0gJHkxOyAkaWR4KysgKSB7DQoJCQkJJHRhZ2F0dHMgPSAn IHZhbHVlPSInLiRpZHguJyInOw0KCQkJCWlmICggJGlkeCA9PSAkY3VycnlyICkgJHRhZ2F0 dHMgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsNCgkJCQkkb3B0aW9udGFnc1tdID0gZG9U YWcoJGlkeCwgJ29wdGlvbicsICcnLCAkdGFnYXR0cyk7DQoJCQl9DQoJCQkkc2VsZWN0b3Jb XSA9IGRvVGFnKGpvaW4obiwgJG9wdGlvbnRhZ3MpLCAnc2VsZWN0JywgKCgkdGhpcy0+bXl3 cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpLCAnIG5hbWU9InkiJy4oKCR0aGlzLT5z ZWxidG4pID8gJycgOiAnIG9uY2hhbmdlPSJzdWJtaXQoKSInKSwgJycpDQoJCQkJCS4gKCgk dGhpcy0+dXNlU2VsZWN0b3IoJ21vbnRoJykpID8gJycgOiBoSW5wdXQoJ20nLCAkY3Vycm1v KSk7DQoJCX0gZWxzZSB7DQoJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKCRjdXJyeXIsICdzcGFu JywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpKTsNCgkJfQ0K DQoJCSRleHRyYXMgPSAnJzsNCgkJaWYgKCEkc3RhdGljICYmICggJHRoaXMtPnVzZVNlbGVj dG9yKCdtb250aCcpIHx8ICR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpICkpIHsNCgkJCWlm ICgkdGhpcy0+c2VsYnRuKSB7DQoJCQkJJGV4dHJhcyAuPSBkb1RhZygnJywgJ2lucHV0Jywg J3NtZF9jYWxfaW5wdXQnLCAnIHR5cGU9InN1Ym1pdCIgdmFsdWU9IicuJHRoaXMtPnNlbGJ0 bi4nIicpOw0KCQkJfQ0KCQkJJGV4dHJhcyAuPSBqb2luKCcnLCAkZmlsdGVySGlkKTsNCgkJ fQ0KDQoJCSR1cmxwID0gcGFyc2VfdXJsKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddKTsNCgkJ JHNlbGVjdG9yID0gJzxmb3JtIGFjdGlvbj0iJy4kdXJscFsncGF0aCddLiciIG1ldGhvZD0i Z2V0IicuKCgkbmF2aWQpID8gJyBpZD0iJy4kbmF2aWQuJyInIDogJycpLic+Jy5kb1RhZyhq b2luKHNwLCAkc2VsZWN0b3IpLiRleHRyYXMsICR0aGlzLT5teXdyYXB0YWcsICR0aGlzLT5t eWNsYXNzKS4nPC9mb3JtPic7DQoNCgkJJG5hdl9iYWNrX2xpbmsgPSAkdGhpcy0+bmF2aWdh dGlvbigkY3VycnlyLCAkY3Vycm1vLCAnLScsICRmaWx0ZXJVUkwpOw0KCQkkbmF2X2Z3ZF9s aW5rICA9ICR0aGlzLT5uYXZpZ2F0aW9uKCRjdXJyeXIsICRjdXJybW8sICcrJywgJGZpbHRl clVSTCk7DQoNCgkJJG5hdl9iYWNrID0gKCEkc3RhdGljICYmICRuYXZfYmFja19saW5rKSA/ ICc8YSBocmVmPSInLiRuYXZfYmFja19saW5rLiciJy4kbmF2cGNsYXNzLic+Jy4kbmF2cGFy cm93Lic8L2E+JyA6ICcmbmJzcDsnOw0KCQkkbmF2X2Z3ZCAgPSAoISRzdGF0aWMgJiYgJGZ1 dHVyZSAmJiAkbmF2X2Z3ZF9saW5rKSA/ICc8YSBocmVmPSInLiRuYXZfZndkX2xpbmsuJyIn LiRuYXZuY2xhc3MuJz4nLiRuYXZuYXJyb3cuJzwvYT4nIDogJyZuYnNwOyc7DQoNCgkJJGNb XSA9IGRvVGFnKCRuYXZfYmFjaywndGgnKTsNCgkJJGNbXSA9ICc8dGggY29sc3Bhbj0iJy4o KCR0aGlzLT5zaG93SVNPV2VlaykgPyA2IDogNSkuJyI+Jy4kc2VsZWN0b3IuJzwvdGg+JzsN CgkJJGNbXSA9IGRvVGFnKCRuYXZfZndkLCd0aCcpOw0KDQoJCXJldHVybiBkb1RhZyhqb2lu KCcnLCRjKSwndHInLCAnc21kX2NhbF9uYXZyb3cnKTsNCgl9DQoNCglmdW5jdGlvbiBuYXZp Z2F0aW9uKCR5ZWFyLCRtb250aCwkZGlyZWN0aW9uLCRmbHQpIHsNCgkJZ2xvYmFsICRwZXJt bGlua19tb2RlOw0KDQoJCWlmKCRkaXJlY3Rpb24gPT0gJy0nKSB7DQoJCQlpZigkbW9udGgg LSAxIDwgMSkgew0KCQkJCSRtb250aCA9IDEyOw0KCQkJCSR5ZWFyIC09IDE7DQoJCQl9IGVs c2Ugew0KCQkJCSRtb250aCAtPSAxOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYoJG1vbnRo ICsgMSA+IDEyKSB7DQoJCQkJJG1vbnRoID0gMTsNCgkJCQkkeWVhciArPSAxOw0KCQkJfSBl bHNlIHsNCgkJCQkkbW9udGggKz0gMTsNCgkJCX0NCgkJfQ0KDQoJCS8vIEFib3J0IGlmIHdl J3JlIGFib3V0IHRvIGdvIG91dCBvZiByYW5nZQ0KCQlpZiAoJHllYXIgPCAkdGhpcy0+ZXly IHx8ICR5ZWFyID4gJHRoaXMtPmx5cikgew0KCQkJcmV0dXJuICcnOw0KCQl9DQoNCgkJaWYo JHBlcm1saW5rX21vZGUgIT0gJ21lc3N5Jykgew0KCQkJcmV0dXJuICI/bT0kbW9udGgiLmEu Ink9JHllYXIiLmEuJGZsdDsNCgkJfSBlbHNlIHsgLy8gZm9yIG1lc3N5IFVSTCdzIHdlIG5l ZWQgdG8gYnVpbGQgdGhlIGVudGlyZSByZXF1ZXN0IHN0cmluZyBmaXJzdCwgdGhlbiB0YWNr IG9uIHRoZSByZXN0DQoJCQkkb3V0ID0gbWFrZU91dCgnaWQnLCdzJywnYycsJ3EnLCdwZycs J3AnLCdtb250aCcpOw0KCQkJJHIgPSAnPyc7DQoJCQlmb3JlYWNoKCRvdXQgYXMgJGtleSA9 PiAkdmFsICkgew0KCQkJCSRyIC49ICgkdmFsKSA/ICIka2V5PSR2YWwiLmEgOiAnJzsNCgkJ CX0NCgkJCXJldHVybiAkci4ibT0kbW9udGgiLmEuInk9JHllYXIiLmEuJGZsdDsNCgkJfQ0K CX0NCn0NCg0KY2xhc3MgU01EX1NtYWxsX0NhbGVuZGFyIGV4dGVuZHMgU01EX0NhbGVuZGFy IHsNCgl2YXIgJHNlY3Rpb24gPSAnJzsNCgl2YXIgJGNhdGVnb3J5ID0gJyc7DQoJZnVuY3Rp b24gU01EX1NtYWxsX0NhbGVuZGFyKCR5ZWFyLCRtb250aCwkZXZlbnRzLCRzZWN0aW9uLCRj YXRlZ29yeSkgew0KCQkkdGhpcy0+c2VjdGlvbiA9ICRzZWN0aW9uOw0KCQkkdGhpcy0+Y2F0 ZWdvcnkgPSAkY2F0ZWdvcnk7DQoJCSR0aGlzLT5TTURfQ2FsZW5kYXIoJHllYXIsJG1vbnRo LCRldmVudHMpOw0KCX0NCg0KCWZ1bmN0aW9uIGRzcERheUNlbGwoJHRoZWRheSkgew0KCQln bG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhpcy0+ ZXZlbnRzWyR0aGVkYXldKTsNCgkJJGNsYXNzW10gPSAkdGhpcy0+Y2VsbGNsYXNzLicgJyAu ICgoJGhhc2FydGljbGUpID8gJHRoaXMtPmNsYXNzcHJlZml4LidldmVudCcgOiAnJyk7DQoJ CWlmICgoaW5fYXJyYXkoIGRhdGUoJ2QtTS1ZJywgZ21ta3RpbWUoIDAsIDAsIDAsICR0aGlz LT5tb250aCwgJHRoZWRheSwgJHRoaXMtPnllYXIpICksICR0aGlzLT5ob2xpZGF5cykpICkg ew0KCQkJJGNsYXNzW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXguJ2hvbHMnOw0KCQl9DQoJCWlm KCR0aGlzLT55ZWFyID09IGRhdGUoJ1knLHRpbWUoKSt0el9vZmZzZXQoKSApIGFuZCAkdGhp cy0+bW9udGggPT0gZGF0ZSgnbicsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGVkYXkg PT0gZGF0ZSgnaicsdGltZSgpK3R6X29mZnNldCgpKSApIHsNCgkJCSRjbGFzc1tdID0gJHRo aXMtPmNsYXNzcHJlZml4Lid0b2RheSc7DQoJCX0NCg0KCQlpZiggaXNzZXQoJHRoaXMtPmV2 ZW50c1skdGhlZGF5XSkgKSB7DQoJCQkkZGF5c19ldmVudHMgPSAkdGhpcy0+ZXZlbnRzWyR0 aGVkYXldOw0KCQkJZm9yZWFjaCgkZGF5c19ldmVudHMgYXMgJGV2KSB7DQoJCQkJJGV2Y2xh c3MgPSB0cmltKCRldlsnY2xhc3NlcyddKTsNCgkJCQlmb3JlYWNoIChleHBsb2RlKCcgJywg JGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJJGNsYXNzW109ICRldmM7DQoJCQkJfQ0KDQoJ CQkJJG91dFtdID0gKCR0aGlzLT5ldndyYXB0YWcpID8gdGFnKCRldlsnZXYnXSwgJHRoaXMt PmV2d3JhcHRhZywgKCgkZXZjbGFzcykgPyAnIGNsYXNzPSInLiRldmNsYXNzLiciJyA6ICcn KSkgOiAkZXZbJ2V2J107DQoJCQl9DQoJCQkkdXNlX3Bvc3RlZCA9IGZhbHNlOw0KCQkJZm9y ZWFjaCAoJHRoaXMtPmxpbmtwb3N0ZWQgYXMgJGRsaW5rcykgew0KCQkJCWlmIChpbl9hcnJh eSgkZGxpbmtzLCAkY2xhc3MpKSB7DQoJCQkJCSR1c2VfcG9zdGVkID0gdHJ1ZTsNCgkJCQkJ YnJlYWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoICRwZXJtbGlua19tb2RlICE9ICd5ZWFyX21v bnRoX2RheV90aXRsZScgKSB7DQoJCQkJJGxpbmtkYXRlID0gKCR1c2VfcG9zdGVkKSA/ICRl dlsncG9zdGVkJ10gOiAkdGhpcy0+eWVhci4nLScuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0aGlz LT5tb250aCkuJy0nLiR0aGlzLT5kb3VibGVkaWdpdCgkdGhlZGF5KTsNCgkJCQkkaHJlZiA9 ICcgaHJlZj0iJy5odS4nP2RhdGU9Jy4kbGlua2RhdGU7DQoJCQkJaWYoJHRoaXMtPnNlY3Rp b24pIHsgJGhyZWYgPSAkaHJlZi5hLidzPScuJHRoaXMtPnNlY3Rpb247IH0NCgkJCQlpZigk dGhpcy0+Y2F0ZWdvcnkpIHsgJGhyZWYgPSAkaHJlZi5hLidjPScuJHRoaXMtPmNhdGVnb3J5 OyB9DQoJCQkJJGhyZWYgLj0gJyInOw0KCQkJfSBlbHNlIHsNCgkJCQkkc2VjdGlvbiA9ICgk dGhpcy0+c2VjdGlvbikgPyAkdGhpcy0+c2VjdGlvbi4nLycgOiAnJzsNCgkJCQkkbGlua2Rh dGUgPSAoJHVzZV9wb3N0ZWQpID8gcHJlZ19yZXBsYWNlKCItIiwgIi8iLCAkZXZbJ3Bvc3Rl ZCddKSA6ICR0aGlzLT55ZWFyLicvJy4kdGhpcy0+ZG91YmxlZGlnaXQoJHRoaXMtPm1vbnRo KS4nLycuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0aGVkYXkpOw0KCQkJCSRocmVmID0gJyBocmVm PSInLmh1LiRzZWN0aW9uLiRsaW5rZGF0ZS4nIic7DQoJCQl9DQoNCgkJCSRjW10gPSBkb1Rh ZygkdGhlZGF5LmpvaW4oJycsJG91dCksJ2EnLCcnLCRocmVmKTsNCgkJfSBlbHNlIHsNCgkJ CSRjW10gPSAkdGhlZGF5Ow0KCQl9DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0 ZCcsam9pbignICcsJGNsYXNzKSk7DQoJfQ0KDQoJZnVuY3Rpb24gZG91YmxlZGlnaXQoJG4p IHsNCgkJaWYoJG4gPCAxMCkgeyAkbiA9ICcwJy4oaW50KSRuOyB9DQoJCXJldHVybiAkbjsN Cgl9DQoNCn0NCg0KLyoqDQoqIEJhc2ljIENhbGVuZGFyIGRhdGEgYW5kIGRpc3BsYXkNCiog aHR0cDovL3d3dy5vc2Nhcm0ub3JnL3N0YXRpYy9wZy9jYWxlbmRhckNsYXNzLw0KKiBAYXV0 aG9yIE9zY2FyIE1lcmlkYQ0KKiBAY3JlYXRlZCBKYW4gMTggMjAwNA0KKiBAcGFja2FnZSAg Z29Db3JlTGliDQoqLw0KY2xhc3MgU01EX1Jhd19DYWxlbmRhciB7DQp2YXIgJGdtdCA9IDE7 DQp2YXIgJGxhbmc7DQp2YXIgJHllYXI7DQp2YXIgJGV5cjsNCnZhciAkbHlyOw0KdmFyICRt b250aDsNCnZhciAkd2VlazsNCnZhciAkZGF5TmFtZUZtdDsNCnZhciAkbXRoTmFtZUZtdDsN CnZhciAkZGF5TmFtZXM7DQp2YXIgJHN0YXJ0RGF5Ow0KdmFyICRzZWxlY3RvcnM7DQp2YXIg JHNlbGJ0bjsNCnZhciAkc2hvd0lTT1dlZWs7DQp2YXIgJElTT1dlZWtIZWFkOw0KdmFyICRJ U09XZWVrQ2VsbDsNCnZhciAkZW5kRGF5Ow0KdmFyICRmaXJzdERheU9mV2VlayA9IDA7DQp2 YXIgJHN0YXJ0T2Zmc2V0ID0gMDsNCnZhciAkY2xhc3NsZXZlbHM7DQp2YXIgJGNsYXNzcHJl Zml4Ow0KdmFyICRldmNsYXNzcHJlZml4Ow0KdmFyICRldndyYXB0YWc7DQp2YXIgJG15d3Jh cHRhZzsNCnZhciAkcm93Y2xhc3M7DQp2YXIgJGNlbGxjbGFzczsNCnZhciAkZW1wdHljbGFz czsNCnZhciAkaXNvY2xhc3M7DQp2YXIgJG5hdnBjbGFzczsNCnZhciAkbmF2bmNsYXNzOw0K dmFyICRuYXZwYXJyb3c7DQp2YXIgJG5hdm5hcnJvdzsNCnZhciAkbmF2aWQ7DQp2YXIgJG15 Y2xhc3M7DQp2YXIgJGZvcHRzOw0KdmFyICRob2xpZGF5czsNCnZhciAkbGlua3Bvc3RlZDsN CnZhciAkY2VsbGZvcm07DQp2YXIgJHRhYmxlSUQ7DQp2YXIgJG1haW50YWluOw0KLyoqDQoq IENvbnN0cnVjdG9yDQoqDQoqIEBwYXJhbSBpbnRlZ2VyLCB5ZWFyDQoqIEBwYXJhbSBpbnRl Z2VyLCBtb250aA0KKiBAcmV0dXJuIG9iamVjdA0KKiBAcHVibGljDQoqLw0KZnVuY3Rpb24g U01EX1Jhd19DYWxlbmRhciAoICR5ciwgJG1vICkgew0KCSR0aGlzLT5zZXRZZWFyKCR5cik7 DQoJJHRoaXMtPnNldE1vbnRoKCRtbyk7DQoJJHRoaXMtPnNldENsYXNzUHJlZml4KCdzbWRf Y2FsXycpOw0KDQoJJHRoaXMtPnN0YXJ0VGltZSA9IHN0cnRvdGltZSggIiR5ci0kbW8tMDEg MDA6MDAiICk7DQoJJHRoaXMtPnN0YXJ0RGF5CT0gZGF0ZSggJ0QnLCAkdGhpcy0+c3RhcnRU aW1lICk7DQoJJHRoaXMtPmVuZERheSA9IGRhdGUoICd0JywgJHRoaXMtPnN0YXJ0VGltZSAp Ow0KCSR0aGlzLT5lbmRUaW1lICAgPSBzdHJ0b3RpbWUoICIkeXItJG1vLSIuJHRoaXMtPmVu ZERheS4iIDIzOjU5IiApOw0KDQoJJHRoaXMtPnNldE5hbWVGb3JtYXQoJyVhJywgJ2QnKTsN CgkkdGhpcy0+c2V0TmFtZUZvcm1hdCgnJUInLCAnbScpOw0KCSR0aGlzLT5zZXRGaXJzdERh eU9mV2VlaygwKTsNCgkkdGhpcy0+c2V0U2hvd0lTT1dlZWsoJycpOw0KCSR0aGlzLT5zZXRU YWJsZUlEKCcnKTsNCgkkdGhpcy0+c2V0VGFibGVDbGFzcygnJyk7DQp9DQovLyA9PT09IGVu ZCBDYWxlbmRhciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCi8vIEdldHRlcnMNCmZ1bmN0aW9uIHVzZVNlbGVjdG9yKCR2YWwpIHsgcmV0dXJu IGluX2FycmF5KCR2YWwsICR0aGlzLT5zZWxlY3RvcnMpOyB9DQpmdW5jdGlvbiBnZXREYXlO YW1lKCRkYXkpIHsgcmV0dXJuICgkdGhpcy0+ZGF5TmFtZXNbJGRheSU3XSk7IH0NCmZ1bmN0 aW9uIGdldE1vbnRoTmFtZSgpIHsgcmV0dXJuIHN0cmZ0aW1lKCAkdGhpcy0+bXRoTmFtZUZt dCwgJHRoaXMtPnN0YXJ0VGltZSApOyB9DQpmdW5jdGlvbiBnZXROYXZJbmZvKCR0eXBlKSB7 DQoJJHIgPSAnJzsNCglzd2l0Y2ggKCR0eXBlKSB7DQoJCWNhc2UgImlkIjogJHIgPSAkdGhp cy0+bmF2aWQ7IGJyZWFrOw0KCQljYXNlICJwYyI6ICRyID0gJHRoaXMtPm5hdnBjbGFzczsg YnJlYWs7DQoJCWNhc2UgIm5jIjogJHIgPSAkdGhpcy0+bmF2bmNsYXNzOyBicmVhazsNCgkJ Y2FzZSAicGEiOiAkciA9ICR0aGlzLT5uYXZwYXJyb3c7IGJyZWFrOw0KCQljYXNlICJuYSI6 ICRyID0gJHRoaXMtPm5hdm5hcnJvdzsgYnJlYWs7DQoJfQ0KCXJldHVybiAkcjsNCn0NCi8v IFNldHRlcnMNCmZ1bmN0aW9uIHNldEdNVCgkYil7ICR0aGlzLT5nbXQgPSAkYjsgfQ0KZnVu Y3Rpb24gc2V0TGFuZygkY29kZSl7ICR0aGlzLT5sYW5nID0gJGNvZGU7IH0NCmZ1bmN0aW9u IHNldENlbGxGb3JtKCRmcm0peyAkdGhpcy0+Y2VsbGZvcm0gPSAkZnJtOyB9DQpmdW5jdGlv biBzZXRUYWJsZUlEKCRpZCl7ICR0aGlzLT50YWJsZUlEID0gJGlkOyB9DQpmdW5jdGlvbiBz ZXRZZWFyKCR5cil7ICR0aGlzLT55ZWFyID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRFWWVhcigk eXIpeyAkdGhpcy0+ZXlyID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRMWWVhcigkeXIpeyAkdGhp cy0+bHlyID0gJHlyOyB9DQpmdW5jdGlvbiBzZXRNb250aCgkbXRoKXsgJHRoaXMtPm1vbnRo ID0gKGludCkkbXRoOyB9DQpmdW5jdGlvbiBzZXRXZWVrKCR3ayl7DQoJaWYgKCR3aykgew0K CQkkdGhpcy0+d2VlayA9IChpbnQpJHdrOw0KCQkkdGhpcy0+bW9udGggPSBzYWZlX3N0cmZ0 aW1lKCIlbSIsIGdtbWt0aW1lICgxLDEsMSwxLDcqJHdrLCR0aGlzLT55ZWFyKSk7DQoJfQ0K fQ0KZnVuY3Rpb24gc2V0TmF2S2VlcCgkYXIpeyAkdGhpcy0+bWFpbnRhaW4gPSAkYXI7IH0N CmZ1bmN0aW9uIHNldFNob3dJU09XZWVrKCR2YWwpIHsNCgkkdGhpcy0+c2hvd0lTT1dlZWsg PSAoJHZhbCkgPyB0cnVlIDogZmFsc2U7DQoJaWYgKCR2YWwpIHsNCgkJJHZhbCA9IGRvX2xp c3QoJHZhbCk7DQoJCSR0aGlzLT5JU09XZWVrSGVhZCA9ICR2YWxbMF07DQoJCSR0aGlzLT5J U09XZWVrQ2VsbCA9IChpc3NldCgkdmFsWzFdKSkgPyAkdmFsWzFdIDogJ3t3ZWVrfSc7DQoJ fQ0KfQ0KZnVuY3Rpb24gc2V0Q2xhc3NMZXZlbHMoJGNscyl7ICR0aGlzLT5jbGFzc2xldmVs cyA9ICRjbHM7IH0NCmZ1bmN0aW9uIHNldENsYXNzUHJlZml4KCRjbHMpeyAkdGhpcy0+Y2xh c3NwcmVmaXggPSAkY2xzOyB9DQpmdW5jdGlvbiBzZXRFdmVudFByZWZpeCgkY2xzKXsgJHRo aXMtPmV2Y2xhc3NwcmVmaXggPSAkY2xzOyB9DQpmdW5jdGlvbiBzZXRFdmVudFdyYXB0YWco JHdyYXApeyAkdGhpcy0+ZXZ3cmFwdGFnID0gJHdyYXA7IH0NCmZ1bmN0aW9uIHNldE1ZV3Jh cHRhZygkd3JhcCl7ICR0aGlzLT5teXdyYXB0YWcgPSAkd3JhcDsgfQ0KZnVuY3Rpb24gc2V0 VGFibGVDbGFzcygkY2xzKSB7ICR0aGlzLT50YWJsZWNsYXNzID0gKCRjbHMpID8gJHRoaXMt PmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0Um93Q2xhc3MoJGNscyl7 ICR0aGlzLT5yb3djbGFzcyA9ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDog Jyc7IH0NCmZ1bmN0aW9uIHNldENlbGxDbGFzcygkY2xzKXsgJHRoaXMtPmNlbGxjbGFzcyA9 ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNl dEVtcHR5Q2xhc3MoJGNscyl7ICR0aGlzLT5lbXB0eWNsYXNzID0gKCRjbHMpID8gJHRoaXMt PmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0SVNPV2Vla0NsYXNzKCRj bHMpeyAkdGhpcy0+aXNvY2xhc3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNs cyA6ICcnOyB9DQpmdW5jdGlvbiBzZXROYXZJbmZvKCRjbHNwLCAkY2xzbiwgJGFycnAsICRh cnJuLCAkbmlkKXsNCgkkdGhpcy0+bmF2cGNsYXNzID0gKCRjbHNwKSA/ICR0aGlzLT5jbGFz c3ByZWZpeC4kY2xzcCA6ICcnOw0KCSR0aGlzLT5uYXZuY2xhc3MgPSAoJGNsc24pID8gJHRo aXMtPmNsYXNzcHJlZml4LiRjbHNuIDogJyc7DQoJJHRoaXMtPm5hdnBhcnJvdyA9ICgkYXJy cCkgPyAkYXJycCA6ICcnOw0KCSR0aGlzLT5uYXZuYXJyb3cgPSAoJGFycm4pID8gJGFycm4g OiAnJzsNCgkkdGhpcy0+bmF2aWQgPSAoJG5pZCkgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJG5p ZCA6ICcnOw0KfQ0KZnVuY3Rpb24gc2V0TVlDbGFzcygkY2xzKXsgJHRoaXMtPm15Y2xhc3Mg PSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpmdW5jdGlvbiBz ZXRGaWx0ZXJPcHRzKCRmKSB7ICR0aGlzLT5mb3B0cyA9ICRmOyB9DQpmdW5jdGlvbiBzZXRM aW5rUG9zdGVkKCRkbCkgew0KCWZvcmVhY2ggKCRkbCBhcyAkZHZhbCkgew0KCQkkdGhpcy0+ bGlua3Bvc3RlZFtdID0gJHRoaXMtPmNsYXNzcHJlZml4LiRkdmFsOw0KCX0NCn0NCmZ1bmN0 aW9uIHNldEhvbGlkYXlzKCRob2xzKSB7ICR0aGlzLT5ob2xpZGF5cyA9ICRob2xzOyB9DQpm dW5jdGlvbiBzZXRTZWxlY3RvcnMoJHNlbCwgJGJ0bikgeyAkdGhpcy0+c2VsZWN0b3JzID0g JHNlbDsgJHRoaXMtPnNlbGJ0biA9ICRidG47IH0NCmZ1bmN0aW9uIHNldEZpcnN0RGF5T2ZX ZWVrKCRkKSB7DQoJJHRoaXMtPmZpcnN0RGF5T2ZXZWVrID0gKChpbnQpJGQgPD0gNiBhbmQg KGludCkkZCA+PSAwKSA/IChpbnQpJGQgOiAwOw0KDQoJJHRoaXMtPnN0YXJ0T2Zmc2V0ID0g ZGF0ZSggJ3cnLCAkdGhpcy0+c3RhcnRUaW1lICktJHRoaXMtPmZpcnN0RGF5T2ZXZWVrOw0K CWlmICggJHRoaXMtPnN0YXJ0T2Zmc2V0IDwgMCApIHsNCgkJJHRoaXMtPnN0YXJ0T2Zmc2V0 ID0gNyAtIGFicygkdGhpcy0+c3RhcnRPZmZzZXQpOw0KCX0NCn0NCi8qKg0KKiBmcm06IGFu eSB2YWxpZCBQSFAgc3RyZnRpbWUoKSBzdHJpbmcgb3IgQUJCUi9GVUxMDQoqIHR5cDogZCB0 byBzZXQgZGF5LCBtIHRvIHNldCBtb250aCBmb3JtYXQNCiovDQpmdW5jdGlvbiBzZXROYW1l Rm9ybWF0KCRmcm0sICR0eXA9ImQiKSB7DQoJc3dpdGNoICgkZnJtKSB7DQoJCWNhc2UgIkZV TEwiOg0KCQkJJGZtdCA9ICgkdHlwID09ICdkJykgPyAiJUEiIDogIiVCIjsNCgkJCWJyZWFr Ow0KCQljYXNlICJBQkJSIjoNCgkJCSRmbXQgPSAoJHR5cCA9PSAnZCcpID8gIiVhIiA6ICIl YiI7DQoJCQlicmVhazsNCgkJZGVmYXVsdDoNCgkJCWlmICgkdHlwID09ICdkJykgew0KCQkJ CWlmIChzdHJwb3MoJGZybSwgJyUnKSA9PT0gMCkgew0KCQkJCQkkZm10ID0gJGZybTsNCgkJ CQl9IGVsc2Ugew0KCQkJCQkkZnJtID0gdHJpbSgkZnJtLCAne30nKTsNCgkJCQkJJGZybSA9 IGRvX2xpc3QoJGZybSk7DQoJCQkJCSRmbXQgPSAkZnJtOw0KCQkJCX0NCgkJCX0gZWxzZSB7 DQoJCQkJJGZtdCA9ICRmcm07DQoJCQl9DQoJCQlicmVhazsNCgl9DQoNCglpZiAoJHR5cCA9 PSAiZCIpIHsNCgkJJHRoaXMtPmRheU5hbWVGbXQgPSAkZm10Ow0KCQkkdGhpcy0+ZGF5TmFt ZXMgPSBhcnJheSgpOw0KDQoJCS8vIFRoaXMgaXMgZG9uZSB0byBtYWtlIHN1cmUgU3VuZGF5 IGlzIGFsd2F5cyB0aGUgZmlyc3QgZGF5IG9mIG91ciBhcnJheQ0KCQkvLyBVbml4IHRpbWUg Z2V0cyBhIGxpdHRsZSBmdW5reSBhdCB0aGUgYmVnaW5uaW5nIGRlcGVuZGluZyB1cG9uIHlv dXIgdGltZXpvbmUuDQoJCSRzZXJ2ZXJvZmZzZXQgPSBnbW1rdGltZSgwLDAsMCkgLSBta3Rp bWUoMCwwLDApOw0KCQkkc3RhcnQgPSAoJHNlcnZlcm9mZnNldCA8IDApID8gNCA6IDM7DQoJ CSRlbmQgPSAkc3RhcnQgKyA3Ow0KCQlmb3IoJGk9JHN0YXJ0OyAkaTwkZW5kOyAkaSsrKSB7 DQoJCQlpZiAoaXNfYXJyYXkoJGZtdCkpIHsNCgkJCQkkdGhpcy0+ZGF5TmFtZXNbXSA9ICRm bXRbJGktJHN0YXJ0XTsNCgkJCX0gZWxzZSB7DQoJCQkJJHRoaXMtPmRheU5hbWVzW10gPSB1 Y2ZpcnN0KHNhZmVfc3RyZnRpbWUoJGZtdCwgODY0MDAqJGkgLSB0el9vZmZzZXQoKSwgJHRo aXMtPmdtdCwgJHRoaXMtPmxhbmcgKSk7DQoJCQl9DQoJCX0NCgl9IGVsc2Ugew0KCQkkdGhp cy0+bXRoTmFtZUZtdCA9ICRmbXQ7DQoJfQ0KfQ0KLyoqDQoqIFJldHVybnMgbWFya3VwIGZv ciBkaXNwbGF5aW5nIHRoZSBjYWxlbmRhci4NCiogQHJldHVybg0KKiBAcHVibGljDQoqLw0K ZnVuY3Rpb24gZGlzcGxheSAoICkgew0KCSRpZCA9ICgkdGhpcy0+dGFibGVJRCkgPyAnIGlk PSInLiR0aGlzLT50YWJsZUlELiciJyA6ICcnOw0KCSRjW10gPSAnPHRhYmxlJy4kaWQuJz4n Ow0KCSRjW10gPSAkdGhpcy0+ZHNwRGF5TmFtZXMoKTsNCgkkY1tdID0gJHRoaXMtPmRzcERh eUNlbGxzKCk7DQoJJGNbXSA9ICc8L3RhYmxlPic7DQoNCglyZXR1cm4gam9pbignJywkYyk7 DQp9DQovLyA9PT09IGVuZCBkaXNwbGF5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KLyoqDQoqIERpc3BsYXlzIHRoZSByb3cgb2YgZGF5IG5h bWVzLg0KKiBAcmV0dXJuIHN0cmluZw0KKiBAcHJpdmF0ZQ0KKi8NCmZ1bmN0aW9uIGRzcERh eU5hbWVzICggKSB7DQoJJGNbXSA9ICc8dHIgY2xhc3M9InNtZF9jYWxfZGF5bmFtZXMiPic7 DQoNCgkkaSA9ICR0aGlzLT5maXJzdERheU9mV2VlazsNCgkkaiA9IDA7IC8vIGNvdW50IG51 bWJlciBvZiBkYXlzIGRpc3BsYXllZA0KCSRlbmQgPSBmYWxzZTsNCg0KCWlmICgkdGhpcy0+ c2hvd0lTT1dlZWspIHsNCgkJJGNbXSA9ICI8dGg+Ii4kdGhpcy0+SVNPV2Vla0hlYWQuIjwv dGg+IjsNCgl9DQoJZm9yKCRqID0gMDsgJGo8PTY7ICRqKyssICRpKyspIHsNCgkJaWYoJGkg PT0gNykgeyAkaSA9IDA7IH0NCgkJJGNbXSA9ICc8dGg+Jy4kdGhpcy0+Z2V0RGF5TmFtZSgk aSkuIjwvdGg+IjsNCgl9DQoNCgkkY1tdID0gJzwvdHI+JzsNCglyZXR1cm4gam9pbignJywk Yyk7DQp9DQovLyA9PT09IGVuZCBkc3BEYXlOYW1lcyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8qKg0KKiBEaXNwbGF5cyBhbGwgZGF5IGNl bGxzIGZvciB0aGUgbW9udGgNCioNCiogQHJldHVybiBzdHJpbmcNCiogQHByaXZhdGUNCiov DQpmdW5jdGlvbiBkc3BEYXlDZWxscyAoICkgew0KCSRpID0gMDsgLy8gY2VsbCBjb3VudGVy DQoJJGVtcHR5Q2xhc3MgPSAkdGhpcy0+ZW1wdHljbGFzczsNCgkkaXNvQ2xhc3MgPSAkdGhp cy0+aXNvY2xhc3M7DQoJJHJvd0NsYXNzID0gJHRoaXMtPnJvd2NsYXNzOw0KCSRyb3dDbGFz cyA9ICgkcm93Q2xhc3MpID8gJyBjbGFzcz0iJy4kcm93Q2xhc3MuJyInIDogJyc7DQoNCgkk Y1tdID0gJzx0cicuJHJvd0NsYXNzLic+JzsNCg0KCWlmICgkdGhpcy0+c2hvd0lTT1dlZWsp IHsNCgkJJHdrY2VsbCA9IHN0cnRyKCR0aGlzLT5JU09XZWVrQ2VsbCwgYXJyYXkoJ3t3ZWVr fScgPT4gZGF0ZSggJ1cnLCAkdGhpcy0+c3RhcnRUaW1lICkgKSk7DQoJCSRjW10gPSAnPHRk IGNsYXNzPSInLiRpc29DbGFzcy4nIj4nLiR3a2NlbGwuJzwvdGQ+JzsNCgl9DQoJLy8gZmly c3QgZGlzcGxheSBlbXB0eSBjZWxscyBiYXNlZCBvbiB3aGF0IHdlZWtkYXkgdGhlIG1vbnRo IHN0YXJ0cyBpbg0KCWZvciggJGo9MDsgJGo8JHRoaXMtPnN0YXJ0T2Zmc2V0OyAkaisrICkJ ew0KCQkkaSsrOw0KCQkkY1tdID0gJzx0ZCBjbGFzcz0iJy4kZW1wdHlDbGFzcy4nIj4mbmJz cDs8L3RkPic7DQoJfSAvLyBlbmQgb2Zmc2V0IGNlbGxzDQoNCgkvLyB3cml0ZSBvdXQgdGhl IHJlc3Qgb2YgdGhlIGRheXMsIGF0IGVhY2ggc3VuZGF5LCBzdGFydCBhIG5ldyByb3cuDQoJ Zm9yKCAkZD0xOyAkZDw9JHRoaXMtPmVuZERheTsgJGQrKyApIHsNCgkJJGkrKzsNCgkJJGNb XSA9ICR0aGlzLT5kc3BEYXlDZWxsKCAkZCApOw0KCQlpZiAoICRpJTcgPT0gMCApIHsgJGNb XSA9ICc8L3RyPic7IH0NCgkJaWYgKCAkZDwkdGhpcy0+ZW5kRGF5ICYmICRpJTcgPT0gMCAp IHsNCgkJCSRjW10gPSAnPHRyJy4kcm93Q2xhc3MuJz4nOw0KCQkJaWYgKCR0aGlzLT5zaG93 SVNPV2Vlaykgew0KCQkJCSR3a2NlbGwgPSBzdHJ0cigkdGhpcy0+SVNPV2Vla0NlbGwsIGFy cmF5KCd7d2Vla30nID0+IGRhdGUoICdXJywgc3RydG90aW1lKCAkdGhpcy0+eWVhci4iLSIu JHRoaXMtPm1vbnRoLiItIi4oaW50KSgkZCArIDEpIC4iIDAwOjAwIiApKSApKTsNCgkJCQkk Y1tdID0gJzx0ZCBjbGFzcz0iJy4kaXNvQ2xhc3MuJyI+Jy4kd2tjZWxsLic8L3RkPic7DQoJ CQl9DQoJCX0NCgl9DQoJLy8gZmlsbCBpbiB0aGUgZmluYWwgcm93DQoJJGxlZnQgPSA3IC0g KCAkaSU3ICk7DQoJaWYgKCAkbGVmdCA8IDcpCXsNCgkJZm9yICggJGo9MDsgJGo8JGxlZnQ7 ICRqKysgKQl7DQoJCSAgJGNbXSA9ICc8dGQgY2xhc3M9IicuJGVtcHR5Q2xhc3MuJyI+Jm5i c3A7PC90ZD4nOw0KCQl9DQoJCSRjW10gPSAiXG5cdDwvdHI+IjsNCgl9DQoJcmV0dXJuIGpv aW4oJycsJGMpOw0KfQ0KLy8gPT09PSBlbmQgZHNwRGF5Q2VsbHMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovKioNCiogb3V0cHV0cyB0aGUg Y29udGVudHMgZm9yIGEgZ2l2ZW4gZGF5DQoqDQoqIEBwYXJhbSBpbnRlZ2VyLCBkYXkNCiog QGFic3RyYWN0DQoqLw0KZnVuY3Rpb24gZHNwRGF5Q2VsbCAoICRkYXkgKSB7DQoJcmV0dXJu ICc8dGQ+Jy4kZGF5Lic8L3RkPic7DQp9DQovLyA9PT09IGVuZCBkYXlDZWxsID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KfSAvLyBlbmQgY2xh c3MNCg0KLy8gUGVyZm9ybSBvbmUgb2YgMiB0eXBlcyBvZiB0ZXN0OiBhIGZsYWctYmFzZWQg dGVzdCwgb3IgYW4gaW5mby1iYXNlZCB0ZXN0DQpmdW5jdGlvbiBzbWRfaWZfY2FsKCRhdHRz LCAkdGhpbmcpIHsNCglnbG9iYWwgJHNtZF9jYWxfZmxhZywgJHNtZF9jYWxfaWQsICRzbWRf eWVhciwgJHNtZF9tb250aCwgJHNtZF93ZWVrLCAkc21kX2RheTsNCglleHRyYWN0KGxBdHRz KGFycmF5KA0KCQknZmxhZycgPT4gJycsIC8vIGV2ZW50LCBzdGFuZGFyZCwgcmVjdXIoZmly c3QpLCBtdWx0aShmaXJzdCxsYXN0LHByZXYpLCBjYW5jZWwsIG9taXQsIGhvbHMsIHRvZGF5 LCBTTURfQU5ZDQoJCSdjYWxpZCcgPT4gJycsDQoJCSd5ZWFyJyA9PiAnJywNCgkJJ21vbnRo JyA9PiAnJywNCgkJJ3dlZWsnID0+ICcnLA0KCQknZGF5JyA9PiAnJywNCgkJJ2xvZ2ljJyA9 PiAnb3InLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJJGZsYWcgPSBk b19saXN0KCRmbGFnKTsNCgkkY3RyID0gJG51bSA9IDA7DQoNCglpZiAoJGRlYnVnKSB7DQoJ CWRtcCgkYXR0cyk7DQoJfQ0KDQoJaWYgKCRmbGFnICYmICRmbGFnWzBdICE9ICcnKSB7DQoJ CSRudW0gKz0gY291bnQoJGZsYWcpOw0KCQlmb3JlYWNoICgkZmxhZyBhcyAkd2hhdG5vdCkg ew0KCQkJaWYgKGVtcHR5KCR3aGF0bm90KSkgY29udGludWU7DQoJCQkkY3RyICs9IChpbl9h cnJheSgkd2hhdG5vdCwgJHNtZF9jYWxfZmxhZykgfHwgKCR3aGF0bm90ID09ICdTTURfQU5Z JyAmJiAhZW1wdHkoJHNtZF9jYWxfZmxhZykpKSA/IDEgOiAwOw0KCQl9DQoJfQ0KCWlmICgk Y2FsaWQpIHsNCgkJJG51bSsrOw0KCQkkY3RyICs9ICgkc21kX2NhbF9pZCA9PT0gJGNhbGlk KSA/IDEgOiAwOw0KCX0NCglmb3JlYWNoIChhcnJheSgieWVhciIsICJtb250aCIsICJ3ZWVr IiwgImRheSIpIGFzICR0ZXN0KSB7DQoJCSR0ZXN0ZXIgPSAkJHRlc3Q7DQoJCSRnYmwgPSAn c21kXycuJHRlc3Q7DQoJCSRjb21wYXJlID0gJCRnYmw7DQoNCgkJaWYgKCR0ZXN0ZXIpIHsN CgkJCSRudW0rKzsNCgkJCXByZWdfbWF0Y2goJy8oWyE9PD5dKyk/KFtcZF0rKS8nLCAkdGVz dGVyLCAkbWF0Y2hlcyk7DQoJCQlpZiAoJGRlYnVnKSB7DQoJCQkJZG1wKCJURVNUIElGOiAi LiAkY29tcGFyZS4gKCgkbWF0Y2hlc1sxXSkgPyAkbWF0Y2hlc1sxXSA6ICc9JykgLiAkbWF0 Y2hlc1syXSApOw0KCQkJfQ0KCQkJc3dpdGNoICgkbWF0Y2hlc1sxXSkgew0KCQkJCWNhc2Ug IiEiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZSE9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJ CQkJCWJyZWFrOw0KCQkJCWNhc2UgIj4iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT4kbWF0 Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPj0iOg0KCQkJCQkk Y3RyICs9ICgkY29tcGFyZT49JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0K CQkJCWNhc2UgIjwiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTwkbWF0Y2hlc1syXSkgPyAx IDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPD0iOg0KCQkJCQkkY3RyICs9ICgkY29t cGFyZTw9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6 DQoJCQkJCSRjdHIgKz0gKCRjb21wYXJlPT0kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJ YnJlYWs7DQoJCQl9DQoJCX0NCgl9DQoJJHJlc3VsdCA9ICgoJGN0ciA9PT0gJG51bSAmJiAk bG9naWMgPT0gImFuZCIpIHx8ICRjdHIgPiAwICYmICRsb2dpYyA9PSAib3IiKSA/IHRydWUg OiBmYWxzZTsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcmVzdWx0KSk7DQp9 DQoNCmZ1bmN0aW9uIHNtZF9jYWxfaW5mbygkYXR0cykgew0KCWdsb2JhbCAkcHJldGV4dCwg JHRoaXNhcnRpY2xlLCAkc21kX2NhbF9mbGFnLCAkc21kX2NhbF9pZCwgJHNtZF95ZWFyLCAk c21kX21vbnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJh eSgNCgkJJ3R5cGUnID0+ICdmbGFnJywgLy8gZmxhZywgeWVhciwgbW9udGgsIHdlZWssIGRh eSwgY2FsaWQsIHNlY3Rpb24sIGNhdGVnb3J5LCBhdXRob3INCgkJJ2pvaW4nID0+ICcgJywN CgkJJ2pvaW5fcHJlZml4JyA9PiAnU01EX0FVVE8nLA0KCQknaHRtbCcgPT4gMCwNCgkJJ2Vz Y2FwZScgPT4gJ2h0bWwnLA0KCSksICRhdHRzKSk7DQoNCgkkam9pbiA9ICgkaHRtbCkgPyBh IDogJGpvaW47IC8vIGh0bWwgbW9kZSBmb3JjZXMgYW1wZXJzYW5kIGpvaW4NCgkkdHlwZSA9 IGRvX2xpc3QoJHR5cGUpOw0KCSRyZXQgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCR0eXBlIGFz ICRpdGVtKSB7DQoJCXN3aXRjaCAoJGl0ZW0pIHsNCgkJCWNhc2UgImZsYWciOg0KCQkJCSRy ZXRbXSA9ICgoJGpvaW5fcHJlZml4PT0iU01EX0FVVE8iKSA/ICRqb2luIDogJycpLmpvaW4o JGpvaW4sICRzbWRfY2FsX2ZsYWcpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAieWVhciI6DQoJ CQkJaWYgKCRzbWRfeWVhcikgew0KCQkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICd5PScgOiAn JykgLiAkc21kX3llYXI7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAibW9udGgiOg0K CQkJCWlmICgkc21kX21vbnRoKSB7DQoJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJ209JyA6 ICcnKSAuICRzbWRfbW9udGg7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAid2VlayI6 DQoJCQkJaWYgKCRzbWRfd2Vlaykgew0KCQkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICd3PScg OiAnJykgLiAkc21kX3dlZWs7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiZGF5IjoN CgkJCQlpZiAoJHNtZF9kYXkpIHsNCgkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAnZD0nIDog JycpIC4gJHNtZF9kYXk7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJY2FzZSAic2VjdGlvbiI6 DQoJCQkJaWYgKCRwcmV0ZXh0WydzJ10pIHsNCgkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAn cz0nIDogJycpIC4gJHByZXRleHRbJ3MnXTsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNl ICJjYXRlZ29yeSI6DQoJCQkJaWYgKCRwcmV0ZXh0WydjJ10pIHsNCgkJCQkJJHJldFtdID0g KCgkaHRtbCkgPyAnYz0nIDogJycpIC4gJHByZXRleHRbJ2MnXTsNCgkJCQl9DQoJCQkJYnJl YWs7DQoJCQljYXNlICJhdXRob3IiOg0KCQkJCWlmICgkdGhpc2FydGljbGUgPT0gTlVMTCkg ew0KCQkJCQkkY3VycmF1dGhvciA9ICcnOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRjdXJyYXV0 aG9yID0gYXV0aG9yKGFycmF5KCkpOw0KCQkJCX0NCgkJCQlpZiAoJGN1cnJhdXRob3IpIHsN CgkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAnYXV0aG9yPScgOiAnJykgLiAkY3VycmF1dGhv cjsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjYWxpZCI6DQoJCQkJaWYgKCRzbWRf Y2FsX2lkKSB7DQoJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJ2NhbGlkPScgOiAnJykgLiAk c21kX2NhbF9pZDsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCX0NCgl9DQoJJG91dCA9ICgoJGpv aW5fcHJlZml4PT0iU01EX0FVVE8iKSA/ICgoJGh0bWwpID8gJz8nIDogJycpIDogJGpvaW5f cHJlZml4KS5qb2luKCRqb2luLCAkcmV0KTsNCglyZXR1cm4gKCRlc2NhcGU9PSdodG1sJykg PyBodG1sc3BlY2lhbGNoYXJzKCRvdXQpIDogJG91dDsNCn0NCg0KZnVuY3Rpb24gc21kX2Nh bF9ub3coJGF0dHMpIHsNCglnbG9iYWwgJGRhdGVmb3JtYXQ7DQoNCglleHRyYWN0KGxBdHRz KGFycmF5KA0KCQknZm9ybWF0JyA9PiAkZGF0ZWZvcm1hdCwNCgkJJ25vdycgPT4gJycsDQoJ CSdvZmZzZXQnID0+ICcnLA0KCQknZ210JyA9PiAnJywNCgkJJ2xhbmcnID0+ICcnLA0KCSks ICRhdHRzKSk7DQoNCgkkdGhlRGF5ID0gKGdwcygnZCcpICYmIGlzX251bWVyaWMoZ3BzKCdk JykpKSA/IChpbnQpZ3BzKCdkJykgOiBzYWZlX3N0cmZ0aW1lKCclZCcpOw0KCSR0aGVNb250 aCA9IChncHMoJ20nKSAmJiBpc19udW1lcmljKGdwcygnbScpKSkgPyAoaW50KWdwcygnbScp IDogc2FmZV9zdHJmdGltZSgnJW0nKTsNCgkkdGhlWWVhciA9IChncHMoJ3knKSAmJiBpc19u dW1lcmljKGdwcygneScpKSkgPyAoaW50KWdwcygneScpIDogc2FmZV9zdHJmdGltZSgnJVkn KTsNCglpZiAoJG5vdykgew0KCQkkbm93ID0gc3RyX3JlcGxhY2UoIj9tb250aCIsIGRhdGUo J0YnLCBnbW1rdGltZSgxMiwwLDAsJHRoZU1vbnRoLCR0aGVEYXksJHRoZVllYXIpKSwgJG5v dyk7DQoJCSRub3cgPSBzdHJfcmVwbGFjZSgiP3llYXIiLCAkdGhlWWVhciwgJG5vdyk7DQoJ CSRub3cgPSBzdHJfcmVwbGFjZSgiP2RheSIsICR0aGVEYXksICRub3cpOw0KCQkkbm93ID0g c3RydG90aW1lKCRub3cpOw0KCX0gZWxzZSB7DQoJCSRub3cgPSB0aW1lKCk7DQoJfQ0KDQoJ aWYgKCRvZmZzZXQpIHsNCgkJJG5vdyA9IHN0cnRvdGltZSgkb2Zmc2V0LCAkbm93KTsNCgl9 DQoNCglyZXR1cm4gc2FmZV9zdHJmdGltZSgkZm9ybWF0LCAkbm93LCAkZ210LCAkbGFuZyk7 DQp9DQoNCi8vIFNldCB1c2VyLWRlZmluZWQgY2xhc3NlcyBmb3IgYSBjZWxsDQpmdW5jdGlv biBzbWRfY2FsX2NsYXNzKCRhdHRzKSB7DQoJZ2xvYmFsICRzbWRfY2FsX3VjbHM7DQoNCgll eHRyYWN0KGxBdHRzKGFycmF5KA0KCQknbmFtZScgPT4gJycsDQoJKSwgJGF0dHMpKTsNCg0K CSRuYW1lID0gZG9fbGlzdCgkbmFtZSk7DQoJJHNtZF9jYWxfdWNscyA9IGFycmF5X21lcmdl KCRzbWRfY2FsX3VjbHMsICRuYW1lKTsNCn0NCg0KLy8gPHR4cDphcnRpY2xlX2N1c3RvbSAv PiByZXBsYWNlbWVudChpc2gpIHRhZyB0aGF0IHVuZGVyc3RhbmRzIGhvdyB0byBoYW5kbGUg cmVjdXJyaW5nIGV2ZW50cw0KZnVuY3Rpb24gc21kX2FydGljbGVfZXZlbnQoJGF0dHMsICR0 aGluZz0nJykgew0KCWdsb2JhbCAkcHJlZnMsICRwcmV0ZXh0LCAkdGhpc3BhZ2U7DQoNCgll eHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndGltZScgPT4gJ2FueScsDQoJCSd0eXBlJyA9PiAn c3RhbmRhcmQscmVjdXIsbXVsdGknLCAvLyB0eXBlIG9mIGV2ZW50IHRvIHNob3cNCgkJJ2V4 cGlyZWQnID0+ICcnLCAvLyAwPW5vLCAxPXllcyBwdWJsaXNoIGV4cGlyZWQgZXZlbnRzLCBl bXB0eT11c2UgcHJlZnMNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJ J3NlY3Rpb24nID0+ICcnLA0KCQknYXV0aG9yJyA9PiAnJywNCgkJJ3N0YXR1cycgPT4gJ2xp dmUnLA0KCQknc29ydCcgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ3N0ZXBmaWVsZCcg PT4gJycsDQoJCSdza2lwZmllbGQnID0+ICcnLA0KCQknb21pdGZpZWxkJyA9PiAnJywNCgkJ J21vbnRoJyA9PiAnJywNCgkJJ2Zyb20nID0+ICcnLCAvLyBzdGFydCBkYXRlDQoJCSd0bycg PT4gJycsIC8vIGVuZCBkYXRlDQoJCSdvZmZzZXQnID0+IDAsDQoJCSdsaW1pdCcgPT4gJzEw JywNCgkJJ2V2ZW50bGltaXQnID0+ICcxMCcsIC8vIG1heCBudW1iZXIgb2YgcmVjdXJyaW5n IGV2ZW50cyB0byBjcmVhdGUgcGVyIHJlYWwgZXZlbnQNCgkJJ3BhZ2VieScgPT4gJycsDQoJ CSdwZ29ubHknID0+ICcnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycgPT4gJycs DQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykpOw0KDQoJ Ly8gUGhhc2UgMSBmaWx0ZXJzDQoJJGZpbHRTUUwgPSAkc3ViU1FMID0gYXJyYXkoKTsNCglp ZigkY2F0ZWdvcnkpIHsNCgkJJHRtcCA9IGRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChk b19saXN0KCRjYXRlZ29yeSkpKSk7DQoJCSRmaWx0U1FMW10gPSAnKCBDYXRlZ29yeTEgSU4g KCcuJHRtcC4nKSBPUiBDYXRlZ29yeTIgSU4gKCcuJHRtcC4nKSApJzsNCgl9DQoJaWYoJHNl Y3Rpb24pIHsNCgkJJGZpbHRTUUxbXSA9ICdTZWN0aW9uIElOICgnLmRvUXVvdGUoam9pbigi JywnIiwgZG9TbGFzaChkb19saXN0KCRzZWN0aW9uKSkpKS4nKSc7DQoJfQ0KCWlmKCRhdXRo b3IpIHsNCgkJJGZpbHRTUUxbXSA9ICdBdXRob3JJRCBJTiAoJy5kb1F1b3RlKGpvaW4oIics JyIsIGRvU2xhc2goZG9fbGlzdCgkYXV0aG9yKSkpKS4nKSc7DQoJfQ0KCWlmKCRpZCkgew0K CQkkZmlsdFNRTFtdID0gJ0lEIElOICgnLmpvaW4oJywnLCBhcnJheV9tYXAoJ2ludHZhbCcs IGRvX2xpc3QoJGlkKSkpLicpJzsNCgl9DQoJJHR5cGUgPSBkb19saXN0KCR0eXBlKTsNCgkk cGFnZWJ5ID0gKGVtcHR5KCRwYWdlYnkpID8gJGxpbWl0IDogJHBhZ2VieSk7DQoNCglmb3Jl YWNoICgkdHlwZSBhcyAkZXZ0eXApIHsNCgkJc3dpdGNoKCRldnR5cCkgew0KCQkJY2FzZSAn c3RhbmRhcmQnOg0KCQkJCWlmICgkc3RlcGZpZWxkKSB7DQoJCQkJCSRzdWJTUUxbXSA9ICIo Ii4kc3RlcGZpZWxkLiIgPSAnJyBBTkQgRXhwaXJlcyA9ICIuTlVMTERBVEVUSU1FLiIpIjsN CgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICdyZWN1cic6DQoJCQkJaWYgKCRzdGVwZmll bGQpIHsNCgkJCQkJJHN1YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiAhPSAnJykiOw0KDQoN Cg0KCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgJ211bHRpJzoNCgkJCQlpZiAoJHN0ZXBm aWVsZCkgew0KCQkJCQkkc3ViU1FMW10gPSAiKCIuJHN0ZXBmaWVsZC4iID0gJycgQU5EIEV4 cGlyZXMgIT0gIi5OVUxMREFURVRJTUUuIikiOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJfQ0K CX0NCglpZiAoJHN1YlNRTCkgew0KCQkkZmlsdFNRTFtdID0gJygnLmpvaW4oJyBPUiAnLCAk c3ViU1FMKS4nKSc7DQoJfQ0KDQoJJHN0YXR1cyA9ICgkc3RhdHVzKSA/ICRzdGF0dXMgOiAn bGl2ZSc7IC8vIGluIGNhc2Ugc3RhdHVzIGhhcyBiZWVuIGVtcHRpZWQNCgkkc3RhdHVzID0g ZG9fbGlzdCgkc3RhdHVzKTsNCgkkc3RhdGkgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRzdGF0 dXMgYXMgJHN0YXQpIHsNCgkJaWYgKGVtcHR5KCRzdGF0KSkgew0KCQkJY29udGludWU7DQoJ CX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkpIHsNCgkJCSRzdGF0aVtdID0gJHN0YXQ7 DQoJCX0gZWxzZSB7DQoJCQkkc3RhdGlbXSA9IGdldFN0YXR1c051bSgkc3RhdCk7DQoJCX0N Cgl9DQoJJGZpbHRTUUxbXSA9ICdTdGF0dXMgSU4gKCcuZG9RdW90ZShqb2luKCInLCciLCAk c3RhdGkpKS4nKSc7DQoNCgkkZXhwaXJlZCA9ICgkZXhwaXJlZCkgPyAkZXhwaXJlZCA6ICRw cmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ107DQoJaWYgKCEkZXhwaXJlZCkgew0K CQkkZmlsdFNRTFtdID0gJyhub3coKSA8PSBFeHBpcmVzIE9SIEV4cGlyZXMgPSAnLk5VTExE QVRFVElNRS4nKSc7DQoJfQ0KDQoJLy8gU29ydGluZyBydWxlczogZGF0YSBpcyBzb3J0ZWQg b25jZSBhcyBpdCBpcyBleHRyYWN0ZWQgdmlhIFNRTCBhbmQgdGhlbiBhZ2FpbiBhZnRlciB0 aGUgZmFrZSBkYXRlcyBoYXZlIGJlZW4gaW5zZXJ0ZWQNCgkkc29ydCA9IChlbXB0eSgkc29y dCkpID8gJ1Bvc3RlZCBhc2MnIDogJHNvcnQ7DQoJJHNvcnQgPSBkb19saXN0KCRzb3J0KTsN Cgkkc29ydFByZWZpeCA9ICJTT1JUXyI7DQoJJHNvcnRPcmRlciA9IGFycmF5KCk7DQoJZm9y ICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0KTsgJGlkeCsrKSB7DQoJCSRzb3J0aWVz ID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhdKTsNCgkJaWYgKGNvdW50KCRzb3J0aWVzKSA8 PSAxKSB7DQoJCQkkc29ydGllc1sxXSA9ICJhc2MiOw0KCQl9DQoJCSRzb3J0aWVzWzFdID0g JHNvcnRQcmVmaXguKCgkc29ydGllc1sxXSA9PSAiZGVzYyIpID8gJ0RFU0MnIDogJ0FTQycp Ow0KCQkkc29ydE9yZGVyW10gPSBhcnJheSgiYnkiID0+ICRzb3J0aWVzWzBdLCAiZGlyIiA9 PiAkc29ydGllc1sxXSk7DQoJfQ0KDQoJJGZpbHRTUUwgPSBqb2luKCcgQU5EICcsICRmaWx0 U1FMKTsNCgkkZmlsdFNRTCAuPSAnIE9SREVSIEJZICcuam9pbignLCcsZG9TbGFzaCgkc29y dCkpOw0KDQoJJGdyYWJDb2xzID0gJyosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBv c3RlZCwgdW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RNb2QsIHVuaXhfdGltZXN0 YW1wKEV4cGlyZXMpIGFzIHVFeHBpcmVzJzsNCgkkZXZsaXN0ID0gc2FmZV9yb3dzKCRncmFi Q29scywgJ3RleHRwYXR0ZXJuJywgJGZpbHRTUUwsICRkZWJ1Zyk7DQoNCglpZiAoJGRlYnVn PjIpIHsNCgkJZWNobyAiKysgUkVDT1JEIFNFVCArKyI7DQoJCWRtcCgkZXZsaXN0KTsNCgl9 DQoJJGFsbF9ldnMgPSAkZXZfdGFsbHkgPSBhcnJheSgpOw0KCSRub3cgPSB0aW1lKCk7DQoN CgkvLyBQaGFzZSAyOiBleHBhbmQgYW55IHJlY3VycmluZyBkYXRlcyBhbmQgY29sbGF0ZSBh bGwgZXZlbnRzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIGFsbG90ZWQgcmFuZ2VzDQoJZm9yZWFj aCAoJGV2bGlzdCBhcyAkcm93KSB7DQoJCSRldl9wb3N0ZWQgPSAkcm93Wyd1UG9zdGVkJ107 DQoJCSRldl9leHBpcmVzID0gJHJvd1sndUV4cGlyZXMnXTsNCgkJJGV2X2RheSA9IGRhdGUo J2onLCAkZXZfcG9zdGVkKTsNCgkJJGV2X21vbnRoID0gZGF0ZSgnbScsICRldl9wb3N0ZWQp Ow0KCQkkZXZfeWVhciA9IGRhdGUoJ1knLCAkZXZfcG9zdGVkKTsNCgkJJGV2X2hyID0gZGF0 ZSgnSCcsICRldl9wb3N0ZWQpOw0KCQkkZXZfbWluID0gZGF0ZSgnaScsICRldl9wb3N0ZWQp Ow0KCQkkZXZfc2VjID0gZGF0ZSgncycsICRldl9wb3N0ZWQpOw0KCQkkaWdub3JlID0gYXJy YXkoKTsNCg0KCQkvLyBHZW5lcmF0ZSBhIHNraXAgYXJyYXkgZm9yIHRoaXMgZXZlbnQNCgkJ aWYgKCRza2lwZmllbGQgJiYgJHJvd1skc2tpcGZpZWxkXSAhPSAnJykgew0KCQkJJGlnbm9y ZSA9IGRvX2xpc3QoJHJvd1skc2tpcGZpZWxkXSk7DQoJCQlmb3JlYWNoICgkaWdub3JlIGFz ICRrZXkgPT4gJHZhbCkgew0KCQkJCSRpZ25vcmVbJGtleV0gPSBkYXRlKCJkLU0tWSIsIHN0 cnRvdGltZSgkdmFsKSk7IC8vIEZvcmNlIGVhY2ggZGF0ZSB0byBhIGtub3duIGZvcm1hdA0K CQkJfQ0KCQl9DQoJCS8vIEFwcGVuZCBhbnkgb21pdHRlZCBldmVudHMNCgkJaWYgKCRvbWl0 ZmllbGQgJiYgJHJvd1skb21pdGZpZWxkXSAhPSAnJykgew0KCQkJJG9taXQgPSBkb19saXN0 KCRyb3dbJG9taXRmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJG9taXQgYXMgJGtleSA9PiAkdmFs KSB7DQoJCQkJJGlnbm9yZVska2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwp KTsNCgkJCX0NCgkJfQ0KCQlpZiAoJGRlYnVnID4gMSAmJiAkaWdub3JlKSB7DQoJCQllY2hv ICcrKyBJR05PUkVEIERBVEVTICsrJzsNCgkJCWRtcCgkaWdub3JlKTsNCgkJfQ0KDQoJCS8v IERvZXMgdGhlIGV2ZW50IGRlc2VydmUgdG8gYmUgaW4gdGhlIHJlc3VsdHM/DQoJCWlmIChz bWRfaW5jbHVkZV9ldmVudCgkZXZfcG9zdGVkLCAkbm93LCAkaWdub3JlLCAkdGltZSwgJGZy b20sICR0bywgJG1vbnRoKSkgew0KCQkJJGFsbF9ldnNbXSA9ICRyb3c7DQoJCQkkZXZfdGFs bHlbJHJvd1snUG9zdGVkJ11dID0gKGlzc2V0KCRldl90YWxseVskcm93WydQb3N0ZWQnXV0p KSA/ICRldl90YWxseVskcm93WydQb3N0ZWQnXV0rMSA6IDE7DQoJCX0NCg0KCQlpZiAoJHN0 ZXBmaWVsZCAmJiAkcm93WyRzdGVwZmllbGRdICE9ICcnKSB7DQoJCQkkZnJlcSA9IGRvX2xp c3QoJHJvd1skc3RlcGZpZWxkXSk7DQoJCQkkbW9udGhseSA9IGZhbHNlOw0KCQkJJGN1cnJz dGFtcCA9ICRldl9wb3N0ZWQ7DQoJCQkkY3Vycm1vbnRoID0gJGV2X21vbnRoOw0KCQkJJGN1 cnJ5ZWFyID0gJGV2X3llYXI7DQoJCQlmb3JlYWNoICgkZnJlcSBhcyAkaW50ZXJ2YWwpIHsN CgkJCQkkZmFrZXJvdyA9ICRyb3c7DQoJCQkJJHN0YW1wb2ZmID0gMDsNCgkJCQlmb3IoJGlk eCA9IDA7ICRpZHggPCA5OTk5OTsgJGlkeCsrKSB7DQoJCQkJCSRsYXN0YW1wID0gJGN1cnJz dGFtcDsNCgkJCQkJaWYgKChpc3NldCgkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKSAmJiAo JGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSA+PSAkZXZlbnRsaW1pdCkpIHx8ICgkdG8gJiYg JGN1cnJzdGFtcCA+IHN0cnRvdGltZSgkdG8pKSkgew0KCQkJCQkJYnJlYWs7DQoJCQkJCX0N CgkJCQkJJGl2YWwgPSBzdHJfcmVwbGFjZSgiP21vbnRoIiwgZGF0ZSgnRicsIGdtbWt0aW1l KDAsMCwwLCRjdXJybW9udGgsMSkpLCAkaW50ZXJ2YWwpOw0KCQkJCQkkaXZhbCA9IHN0cl9y ZXBsYWNlKCI/eWVhciIsICRjdXJyeWVhciwgJGludGVydmFsKTsNCg0KCQkJCQlpZiAoc3Ry cG9zKCRpdmFsLCAibGFzdCIpID09PSAwKSB7DQoJCQkJCQkkaXZhbCA9IGRhdGUoImwsIEYg alMgWSIsIHN0cnRvdGltZSgkaXZhbCwgbWt0aW1lKDEyLCAwLCAwLCBkYXRlKCJuIixta3Rp bWUoMCwwLDAsJGN1cnJtb250aCwxLCRjdXJyeWVhcikpKzEsIDEsICRjdXJyeWVhcikpKTsN CgkJCQkJCSRtb250aGx5ID0gdHJ1ZTsNCgkJCQkJfSBlbHNlIGlmIChzdHJwb3MoJGl2YWws ICJmaXJzdCIpID09PSAwKSB7DQoJCQkJCQkkaXZhbCA9IGRhdGUoImwsIEYgalMgWSIsIHN0 cnRvdGltZSgkaXZhbCwgbWt0aW1lKDEyLCAwLCAwLCAoKCRjdXJybW9udGg+MSkgPyAkY3Vy cm1vbnRoLTEgOiAxMiksIGRhdGUoInQiLG1rdGltZSgwLDAsMCwkY3Vycm1vbnRoLTEsMSwo KCRjdXJybW9udGg9PTEpID8gJGN1cnJ5ZWFyLTE6ICRjdXJyeWVhcikpKSwgKCgkY3Vycm1v bnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3VycnllYXIpKSkpOw0KCQkJCQkJJG1vbnRobHkg PSB0cnVlOw0KCQkJCQl9DQoJCQkJCWlmICgkbW9udGhseSkgew0KCQkJCQkJJGN1cnJzdGFt cCA9IHN0cnRvdGltZSgkaXZhbCk7DQoJCQkJCQkkc3RhbXBvZmYgPSAoJHN0YW1wb2ZmPT0w KSA/IChpbnQpKDM2MDAqJGV2X2hyKSArIChpbnQpKDYwKiRldl9taW4pICsgKGludCkkZXZf c2VjIDogJHN0YW1wb2ZmOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGN1cnJzdGFtcCA9IHN0 cnRvdGltZSgkaXZhbCwgJGN1cnJzdGFtcCk7DQoJCQkJCX0NCgkJCQkJLy8gVGhpcyBrbHVk Z2UgaXMgdG8gdGFrZSBhY2NvdW50IG9mIHRpbWVzdGFtcHMgbGlrZSAibGFzdCBUaHVyc2Rh eSIgKG9mIHRoZSBtb250aCkuIFRoZSBsYXN0ICd3aGF0ZXZlciBkYXknIG9mDQoJCQkJCS8v IGEgbW9udGggY2FuIG9ubHkgYmUgYSBtYXhpbXVtIG9mIDMxIGRheXMgYmVmb3JlIHRoZSBs YXN0IHRpbWVzdGFtcCB3ZSBzYXcsIHNvIGNoZWNrIGZvciB0aGF0IChnaXZlIG9yIHRha2Ug MTAgbWlucykNCgkJCQkJJGRpZmZzdGFtcCA9ICRjdXJyc3RhbXAgLSAkbGFzdGFtcDsNCgkJ CQkJaWYgKCRkaWZmc3RhbXAgPCAwKSB7DQoJCQkJCQlpZiAoJGRpZmZzdGFtcCA+IC0oNjAq NjAqMjQqMzEpKzYwMCkgew0KCQkJCQkJCSRjdXJyc3RhbXAgPSBmYWxzZTsgLy8gSnVzdCBz b21lICdsYXN0IHdlZWtkYXknIG9mIHRoZSBwcmV2aW91cyBtb250aA0KCQkJCQkJfSBlbHNl IHsNCgkJCQkJCQlicmVhazsgLy8gUEhQX0lOVF9NQVggZXhjZWVkZWQNCgkJCQkJCX0NCgkJ CQkJfQ0KCQkJCQlpZiAoJGN1cnJzdGFtcCAhPT0gZmFsc2UpIHsNCgkJCQkJCWlmICgkZGVi dWcgPiAxKSB7DQoJCQkJCQkJZG1wKCJJTlRFUlZBTDogIi4gJGN1cnJzdGFtcCAuICcgLy8g JyAuZGF0ZSgnZC1NLVkgSDppOnMnLCAkY3VycnN0YW1wKSk7DQoJCQkJCQl9DQoNCgkJCQkJ CWlmICgoJGN1cnJzdGFtcCA8ICRldl9leHBpcmVzIHx8ICRldl9leHBpcmVzID09ICcwJykg JiYgKCRjdXJyc3RhbXAgIT0gJGV2X3Bvc3RlZCkpIHsNCgkJCQkJCQkkc2hvd19tZSA9IHNt ZF9pbmNsdWRlX2V2ZW50KCRjdXJyc3RhbXAsICRub3csICRpZ25vcmUsICR0aW1lLCAkZnJv bSwgJHRvLCAkbW9udGgpOw0KCQkJCQkJCWlmICgkc2hvd19tZSkgew0KCQkJCQkJCQkkZmFr ZXJvd1snUG9zdGVkJ10gPSBkYXRlKCJZLW0tZCBIOmk6cyIsICRjdXJyc3RhbXArJHN0YW1w b2ZmKTsNCgkJCQkJCQkJJGZha2Vyb3dbJ3VQb3N0ZWQnXSA9ICRjdXJyc3RhbXArJHN0YW1w b2ZmOw0KCQkJCQkJCQkkYWxsX2V2c1tdID0gJGZha2Vyb3c7DQoJCQkJCQkJCSRldl90YWxs eVskcm93WydQb3N0ZWQnXV0gPSAoaXNzZXQoJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSkp ID8gJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSsxIDogMTsNCgkJCQkJCQl9DQoJCQkJCQl9 IGVsc2Ugew0KCQkJCQkJCWJyZWFrOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCS8vIEluY3Jl bWVudCB0aGUgbW9udGgveWVhciByZWFkeSBmb3IgdGhlIG5leHQgaW50ZXJ2YWwNCgkJCQkJ aWYgKCRtb250aGx5KSB7DQoJCQkJCQkkY3VycnllYXIgPSAoJGN1cnJtb250aD09MTIpID8g JGN1cnJ5ZWFyKzEgOiAkY3VycnllYXI7DQoJCQkJCQkkY3Vycm1vbnRoID0gKCRjdXJybW9u dGg9PTEyKSA/IDEgOiAkY3Vycm1vbnRoKzE7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKCRk ZWJ1Zz4xKSB7DQoJCQkJCWlmIChpc3NldCgkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKSkg ew0KCQkJCQkJZG1wKCJUQUxMWTogIi4gJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSk7DQoJ CQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCglpZiAoJGRlYnVnPjIpIHsNCgkJZWNo byAiKysgUFJFLVNPUlRFRCArKyI7DQoJCWRtcCgkYWxsX2V2cyk7DQoJfQ0KDQoJLy8gTWFr ZSB1cCBhbiBhcnJheV9tdWx0aXNvcnQgYXJnIGxpc3QgYW5kIGV4ZWN1dGUgaXQNCglmb3Jl YWNoKCRhbGxfZXZzIGFzICRrZXkgPT4gJHJvdykgew0KCQlmb3JlYWNoICgkcm93IGFzICRp ZGVudGlmaWVyID0+ICRpdGVtKSB7DQoJCQkkdmFybmFtZSA9ICJjb2xfIi4kaWRlbnRpZmll cjsNCgkJCSR7JHZhcm5hbWV9WyRrZXldID0gJGl0ZW07DQoJCX0NCgl9DQoJaWYoY291bnQo JGFsbF9ldnMpID4gMCkgew0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHNvcnRP cmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8nLiRzb3J0T3JkZXJb JGlkeF1bJ2J5J107DQoJCQkkc29ydGFyZ3NbXSA9ICRzb3J0T3JkZXJbJGlkeF1bJ2Rpcidd Ow0KCQl9DQoJCSRzb3J0aXQgPSAnYXJyYXlfbXVsdGlzb3J0KCcuaW1wbG9kZSgiLCAiLCRz b3J0YXJncykuJywgJGFsbF9ldnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJfQ0KDQoJaWYg KCRkZWJ1Zz4yKSB7DQoJCWVjaG8gIisrIFBPU1QtU09SVEVEICsrIjsNCgkJZG1wKCRhbGxf ZXZzKTsNCgl9DQoNCgkvLyBIYW5kbGUgcGFnaW5nDQoJJGdyYW5kX3RvdGFsID0gY291bnQo JGFsbF9ldnMpOw0KCSR0b3RhbCA9ICRncmFuZF90b3RhbCAtICRvZmZzZXQ7DQoJJG51bVBh Z2VzID0gY2VpbCgkdG90YWwvJHBhZ2VieSk7DQoJJHBnID0gKCEkcHJldGV4dFsncGcnXSkg PyAxIDogJHByZXRleHRbJ3BnJ107DQoJJHBnb2Zmc2V0ID0gJG9mZnNldCArICgoJHBnIC0g MSkgKiAkcGFnZWJ5KTsNCgkvLyBzZW5kIHBhZ2luZyBpbmZvIHRvIHR4cDpuZXdlciBhbmQg dHhwOm9sZGVyDQoJJHBhZ2VvdXRbJ3BnJ10gPSAkcGc7DQoJJHBhZ2VvdXRbJ251bVBhZ2Vz J10gPSAkbnVtUGFnZXM7DQoJJHBhZ2VvdXRbJ3MnXSA9ICRwcmV0ZXh0WydzJ107DQoJJHBh Z2VvdXRbJ2MnXSA9ICRwcmV0ZXh0WydjJ107DQoJJHBhZ2VvdXRbJ2dyYW5kX3RvdGFsJ10g PSAkZ3JhbmRfdG90YWw7DQoJJHBhZ2VvdXRbJ3RvdGFsJ10gPSAkdG90YWw7DQoNCglpZiAo ZW1wdHkoJHRoaXNwYWdlKSkNCgkJJHRoaXNwYWdlID0gJHBhZ2VvdXQ7DQoJaWYgKCRwZ29u bHkpDQoJCXJldHVybjsNCg0KCS8vIFBoYXNlIDM6IGl0ZXJhdGUgb3ZlciB0aGUgbmV3IGFy cmF5IG9iZXlpbmcgYW55IG9mZnNldC9saW1pdC4gQW55dGhpbmcgaW4gdGhlIHJhbmdlIGdl dHMgcG9wdWxhdGVkIGFuZCBwYXJzZWQNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY3RyID0gMDsN CglhcnRpY2xlX3B1c2goKTsNCglmb3JlYWNoICgkYWxsX2V2cyBhcyAkaWR4ID0+ICRyb3cp IHsNCgkJaWYgKCRpZHggPj0gJHBnb2Zmc2V0ICYmICRjdHIgPCAkbGltaXQpIHsNCgkJCXBv cHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkkb3V0W10gPSAoJHRoaW5nKSA/IHBhcnNl KCR0aGluZykgOiAoKCRmb3JtKSA/IHBhcnNlX2Zvcm0oJGZvcm0pIDogaHJlZigkcm93WydQ b3N0ZWQnXSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUnXS4n IicpICk7DQoJCQkkY3RyKys7DQoJCX0NCgl9DQoJYXJ0aWNsZV9wb3AoKTsNCglyZXR1cm4g ZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7DQp9DQoNCi8vIENoZWNr IHRoZSBwYXNzZWQgdGltZXN0YW1wIGFnYWluc3QgZXZlcnkgdGltZSByZXN0cmljdGlvbiBh bmQgcmV0dXJuIHRydWUgaWYgaXQgcGFzc2VzIHRoZW0gYWxsDQpmdW5jdGlvbiBzbWRfaW5j bHVkZV9ldmVudCgkdHMsICRub3csICRpZ24sICR0aW1lLCAkZnJvbSwgJHRvLCAkbW9udGgp IHsNCgkkc2hvdyA9IGFycmF5KCk7DQoJJHNob3dbXSA9ICFpbl9hcnJheShkYXRlKCJkLU0t WSIsICR0cyksICRpZ24pOw0KCXN3aXRjaCgkdGltZSkgew0KCQljYXNlICJhbnkiOiBicmVh azsNCgkJY2FzZSAiZnV0dXJlIjogJHNob3dbXSA9ICgkdHMgPiAkbm93KSA/IHRydWUgOiBm YWxzZTsgYnJlYWs7DQoJCWRlZmF1bHQgOiAkc2hvd1tdID0gKCR0cyA8ICRub3cpID8gdHJ1 ZSA6IGZhbHNlOyBicmVhazsgLy8gVGhlIHBhc3QNCgl9DQoJaWYgKCRmcm9tKSB7ICRzaG93 W10gPSAoJHRzID49IHN0cnRvdGltZSgkZnJvbSkpID8gdHJ1ZSA6IGZhbHNlOyB9DQoJaWYg KCR0bykgeyAkc2hvd1tdID0gKCR0cyA8PSBzdHJ0b3RpbWUoJHRvKSkgPyB0cnVlIDogZmFs c2U7IH0NCglpZiAoJG1vbnRoKSB7ICRzaG93W10gPSAoZGF0ZSgiWS1tIiwgJHRzKSA9PSAk bW9udGgpID8gdHJ1ZSA6IGZhbHNlOyB9DQoNCglyZXR1cm4gKCFpbl9hcnJheSgwLCAkc2hv dykpID8gdHJ1ZSA6IGZhbHNlOw0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIi O3M6MToiNSI7czo0OiJoZWxwIjtzOjY0ODQ2OiIJPHA+PGRpdiBpZD0ic21kX2hlbHAiPjwv cD4KCgk8aDEgaWQ9InRvcCI+c21kX2NhbGVuZGFyPC9oMT4KCgk8cD5SZW5kZXIgYSBjYWxl bmRhciB3aXRoIG9uZSBvciBtb3JlIGFydGljbGVzIGFzIGV2ZW50cyBvbiBlYWNoIGRheS4g VXNlZnVsIGZvciBnaWcgZ3VpZGVzLCAmIzgyMjA7d2hhdCYjODIxNztzIG9uJiM4MjIxOyBv ciBzY2hlZHVsaW5nLjwvcD4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJ PHVsPgoJCTxsaT5GdWxsLXNpemUgb3IgbWluaSA8YSBocmVmPSIjc21kY2FsIj5jYWxlbmRh cjwvYT4gYnkgbW9udGgsIHdpdGggb3B0aW9uYWwgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwv c3Bhbj4gd2VlayBkaXNwbGF5PC9saT4KCQk8bGk+TmF2aWdhdGlvbjogbmV4dC9wcmV2IG1v bnRoIG9yIG9wdGlvbmFsIGRyb3Bkb3duIG9mIG1vbnRoIC8geWVhci4gUGVybWl0dGVkIHll YXIgcmFuZ2UgY2FuIGJlIGRldGVybWluZWQgYnkgZmlyc3QvbGFzdCBhcnRpY2xlIG9yIGV4 dGVuZGVkIGJ5ICsvLSBOIHllYXJzIGluIGVpdGhlciBkaXJlY3Rpb248L2xpPgoJCTxsaT5P bmUgYXJ0aWNsZSA9IG9uZSBldmVudCwgbmF0aXZlIHRvIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IHdpdGggdGhlIFBvc3RlZCBkYXRlIGJlaW5nIHRoZSBkYXRlIGl0IGFwcGVh cnMgaW4gdGhlIGNhbGVuZGFyPC9saT4KCQk8bGk+RmlsdGVyIGV2ZW50cyBieSBjYXRlZ29y eSAvIHNlY3Rpb24gLyBhdXRob3IgLyBzdGF0dXMgLyB0aW1lIG9yIGV4cGlyeTwvbGk+CgkJ PGxpPk5vbWluYXRlIGEgY3VzdG9tIGZpZWxkIHRvIHNwZWNpZnkgZXZlbnQgZnJlcXVlbmN5 ICgxIHdlZWsgb3IgMTAgZGF5cyBvciAzIG1vbnRocywgZXRjKS4gTXVsdGlwbGUgZnJlcXVl bmNpZXMgY2FuIGJlIGdpdmVuPC9saT4KCQk8bGk+Tm9taW5hdGUgY3VzdG9tIGZpZWxkcyBm b3IgZXhjbHVzaW9ucyAoYSBsaXN0IG9mIGRhdGVzIG9uIHdoaWNoIHRoYXQgZXZlbnQgaXMg Y2FuY2VsbGVkL29taXR0ZWQpLiBPcHRpb24gdG8gZWl0aGVyIHNob3cgY2FuY2VsbGVkIGV2 ZW50cyBvbiB0aGF0IGRheSBzbyB5b3UgY2FuIHN0eWxlIHRoZW0gZGlmZmVyZW50bHksIG9y IHJlbW92ZSB0aGVtIGNvbXBsZXRlbHk8L2xpPgoJCTxsaT5TaG93IHNwYW5uZWQgZXZlbnRz IChvbmVzIHRoYXQgbGFzdCBtb3JlIHRoYW4gYSBkYXkpIGJhc2VkIG9uIHRoZSBhcnRpY2xl 4oCZcyBleHBpcnkuIEFueSBldmVudCB0aGF0IGRvZXMgPHNwYW4gY2xhc3M9ImNhcHMiPk5P VDwvc3Bhbj4gcmVjdXIgYW5kIGhhcyBhIGZ1dHVyZSBleHBpcnkgY2FuIGJlIHRyZWF0ZWQg dGhpcyB3YXk8L2xpPgoJCTxsaT5GdXR1cmUsIGV4cGlyZWQgb3Igc3RpY2t5IGV2ZW50cyBt YXkgYmUgZGlzcGxheWVkIGlmIHlvdSB3aXNoPC9saT4KCQk8bGk+U3BlY2lmeSBob2xpZGF5 cyBvbiBhIHBlciBjYWxlbmRhciBiYXNpcyAoZWl0aGVyIHJlY3VycmluZyBldmVudHMgJiM4 MjEyOyB3aXRob3V0IHllYXIgJiM4MjEyOyBvciBzcGVjaWZpYyBob2xpZGF5cykuIERlZmlu ZSB0aGUgbGlzdCBlaXRoZXIgZGlyZWN0bHkgaW4gdGhlIHBsdWdpbiBhdHRyaWJ1dGUgb3Ig aW4gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBvZiB5b3VyIGNob2lj ZSBhbmQgZGVjaWRlIHdoaWNoIHR5cGVzIG9mIGV2ZW50IGFyZSB0byBiZSBjYW5jZWxsZWQg ZHVlIHRvIGhvbGlkYXlzPC9saT4KCQk8bGk+RWFjaCBldmVudCBjYW4gYmUgcGFzc2VkIHRv IGEgZm9ybS9jb250YWluZXIgc28geW91IGNhbiBidWlsZCBpdCB5b3VyIHdheSwgb3IgdXNl IHRoZSBidWlsdC1pbiBoeXBlcmxpbmtlZCB0aXRsZS4gU3Bhbm5lZCBhbmQvb3IgcmVjdXJy aW5nIGV2ZW50cyBjYW4gYmUgc2VudCB0byBhIHNlcGFyYXRlIGZvcm0gaWYgeW91IHdpc2gu IEFsdGVybmF0aXZlbHksIHNlbmQgdGhlIGVudGlyZSBjZWxsIHRvIGEgZm9ybSBhbmQgc3R5 bGUgaXQgeW91ciB3YXk8L2xpPgoJCTxsaT48YSBocmVmPSIjaWZjYWwiPkNvbmRpdGlvbmFs PC9hPiB0ZXN0cyBmb3IgZmxhZ3MgKHN0YW5kYXJkLCByZWN1cnJpbmcsIHNwYW5uZWQsIGNh bmNlbGxlZCwgaG9saWRheXMpIGFuZCBkYXRlcyBzbyB5b3UgY2FuIGJ1aWxkIHlvdXIgb3du IGxvZ2ljIGluIHlvdXIgZm9ybXMvY29udGFpbmVyPC9saT4KCQk8bGk+Q2xhc3Mgc291cDog dGFibGUtLCByb3ctLCBjZWxsLSwgYW5kIGV2ZW50LWxldmVsIGNsYXNzZXMgZm9yIGluZGlj YXRpbmcgZGlmZmVyZW50IHNjZW5hcmlvcyAoc3Bhbm5lZCBldmVudCwgcmVjdXJyaW5nIGV2 ZW50LCBjYW5jZWxsZWQgZXZlbnQsIGV0Yyk7IGN1c3RvbSBjbGFzc2VzIGNhbiBiZSBzcGVj aWZpZWQgYmFzZWQgb24gYW4gZXZlbnQ8L2xpPgoJCTxsaT5UYWcgdG8gPGEgaHJlZj0iI2Fy dGV2Ij5kaXNwbGF5IHJlY3VycmluZyBldmVudHM8L2E+PC9saT4KCQk8bGk+VGFnIHRvIG91 dHB1dCB2YXJpb3VzIGV2ZW50IG9yIGNhbGVuZGFyIDxhIGhyZWY9IiNjYWxpbmZvIj5jaGFy YWN0ZXJpc3RpY3M8L2E+IChlLmcuIHRoZSBtb250aCwgeWVhciwgY2FsZW5kYXIgaWQsIHNl Y3Rpb24gYW5kIHNvIG9uKTwvbGk+CgkJPGxpPlRhZyB0byBvdXRwdXQgdGhlIDxhIGhyZWY9 IiNjYWxub3ciPmN1cnJlbnQgZGF0ZS90aW1lPC9hPiAoZm9ybWF0dGVkIGhvdyB5b3UgbGlr ZSk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+QXV0aG9yIC8gY3JlZGl0czwvaDI+ CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVm IERhd3NvbjwvYT4uIEpvaW50bHkgZnVuZGVkIGJ5IGdlbmVyb3VzIGRvbmF0b3JzOiBtcmRh bGUsIHdvb2YsIGpha29iLCByZW5vYmlyZCBhbmQgam9lYmFpY2guIEJhc2VkIGhlYXZpbHkg b24gbWRwX2NhbGVuZGFyLiBBbGwgcHJvcHMgdG8gdGhlIG9yaWdpbmFsIGF1dGhvciBvZiB0 aGUgcGx1Z2luLCBhbmQgb2YgY291cnNlIHRoZSBjbGFzcyB1cG9uIHdoaWNoIHRoZSBjYWxl bmRhciBpcyBiYXNlZC4gQW5kIG5vdCBmb3JnZXR0aW5nIG91ciBhd2Vzb21lIFRleHRwYXR0 ZXJuIGRldnMgd2hvIGNvbnRpbnVlIHRvIHB1c2ggdGhpcyBsaXR0bGUgPHNwYW4gY2xhc3M9 ImNhcHMiPkNNUzwvc3Bhbj4gdG8gdGhlIHN0YXJzLjwvcD4KCgk8aDIgaWQ9Imluc3RhbGwi Pkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0icmVxdWly ZWQiPlJlcXVpcmVzIFRleHRwYXR0ZXJuIDQuMC43KzwvcD4KCgk8cD5Eb3dubG9hZCB0aGUg cGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1 Z2lucy8xMDUyL3NtZF9jYWxlbmRhciI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxh IGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBh c3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFk bWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4u IFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0 b3BpYy5waHA/aWQ9MjkyMDAiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0 byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9w PgoKCTxwPlRvIHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0 OyBQbHVnaW5zIHBhZ2UuPC9wPgoKCTxoMiBpZD0ibmFtaW5nIj5OYW1pbmcgY29udmVudGlv bjwvaDI+CgoJPHA+VGhlIGNvcmUgb2YgdGhlIHBsdWdpbiBpcyB0aGUgPGEgaHJlZj0iI3Nt ZGNhbCI+c21kX2NhbGVuZGFyPC9hPiB0YWcsIHdoaWNoIHJlbmRlcnMgYSBzdGFuZGFyZCBj YWxlbmRhciB3aXRoIGVhY2ggY2VsbCBjb250YWluaW5nIG9uZSBvciBtb3JlIGV2ZW50cy4g QmVmb3JlIGRpdmluZyBpbnRvIHRoZSB0YWdzIHRoZXJlJiM4MjE3O3MgYSBsaXR0bGUgYml0 IG9mIG5vbWVuY2xhdHVyZSB0byBnZXQgb3V0IG9mIHRoZSB3YXk6PC9wPgoKCTx1bD4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhbGlkPC9zcGFuPiA6IHlvdSBtYXkgcHV0IG1vcmUg dGhhbiBvbmUgY2FsZW5kYXIgb24gYSBwYWdlLiBJZiBzbywgZWFjaCBvbmUgbXVzdCBiZSB1 bmlxdWVseSByZWZlcmVuY2VkIHdpdGggYSBjYWxlbmRhciBJRDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5jZWxsPC9zcGFuPiA6IGEgc3BlY2lmaWMgZGF5IG9uIHRoZSBjYWxl bmRhciBpbiBhIHBhcnRpY3VsYXIgbW9udGgveWVhcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5ldmVudDwvc3Bhbj4gOiBhbiBhcnRpY2xlLiBJdCYjODIxNztzIGJlc3QgdG8g dXNlIGEgZGVkaWNhdGVkIHNlY3Rpb24gZm9yIGV2ZW50cyBzbyBpdCBrZWVwcyB0aGluZ3Mg bmVhdGVyIG9uIHlvdXIgY2FsZW5kYXIsIGJ1dCB5b3UgY2FuIGRpc3BsYXkgZXZlbnRzIGZy b20gbW9yZSB0aGFuIG9uZSBzZWN0aW9uIGlmIHlvdSB3aXNoLiBBbnkgYXJ0aWNsZSB3cml0 dGVuIGluIHRoZSBnaXZlbiBzZWN0aW9uKHMpIHdpbGwgYXBwZWFyIG9uIHRoZSBjYWxlbmRh ciBhcyBsb25nIGFzIGl0cyBleHBpcnkgaGFzbiYjODIxNzt0IGJlZW4gbWV0LiBNb3JlIHRo YW4gb25lIGV2ZW50IG1heSBhcHBlYXIgaW4gZWFjaCBjZWxsPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmNlbGwgZmxhZzwvc3Bhbj4gOiBhIHNlcmllcyBvZiBmbGFncyBhcmUg dXNlZCB0byBsYWJlbCBlYWNoIGNlbGwgYWNjb3JkaW5nIHRvIHdoYXQgaXQgY29udGFpbnMu IENlbGxzIGNhbiBlaXRoZXIgYmUgPGNvZGU+ZW1wdHk8L2NvZGU+IChpLmUuIG5vIGRhdGU6 IHRoZSBmaWxsZXIgY2VsbHMgYXQgdGhlIHN0YXJ0L2VuZCBvZiB0aGUgbW9udGgpLCB0aGV5 IGNhbiBiZSBhIHJlZ3VsYXIgZGF5IChubyBmbGFnKSwgdGhleSBjYW4gY29udGFpbiBhbiA8 Y29kZT5ldmVudDwvY29kZT4sIG9yIG1heSBiZSBhIGhvbGlkYXkgKDxhIGhyZWY9IiNob2xp ZGF5cyI+aG9sczwvYT4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50IGZs YWc8L3NwYW4+IDogZWFjaCBjZWxsIGNhbiBjb250YWluIG9uZSBvciBtb3JlIGV2ZW50cy4g RXZlbnRzIGNhbiBlaXRoZXIgYmUgPGEgaHJlZj0iI2V2ZW50cyI+c3RhbmRhcmQ8L2E+LCB0 aGV5IGNhbiA8YSBocmVmPSIjcmVjdXIiPnJlY3VyPC9hPiwgdGhleSBjYW4gc3BhbiBtb3Jl IHRoYW4gb25lIGRheSAoPGEgaHJlZj0iI211bHRpIj5tdWx0aTwvYT4pLCBvciBkYXRlcyBj YW4gYmUgdW5zY2hlZHVsZWQgb3Igb21pdHRlZCAoPGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2Vs IC8gb21pdDwvYT4pIGZyb20gdGhlIGNhbGVuZGFyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmNsYXNzIGxldmVsPC9zcGFuPiA6IChleHBsb3JlZCBpbiB0aGUgPGEgaHJlZj0i I2F0dHN0eWxlcyI+Y2xhc3NsZXZlbHM8L2E+IGF0dHJpYnV0ZSkuIEVhY2ggZmxhZ2dlZCBj ZWxsIGNhbiBiZSBnaXZlbiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNz IGJhc2VkIG9uIGl0cyBmbGFnIG5hbWUocykuIFRoZSBjbGFzcyBuYW1lcyBhcmUgc2ltcGx5 IGVhY2ggZmxhZyBuYW1lIHByZWZpeGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuIGluIHRoZSA8 Y29kZT5jbGFzc3ByZWZpeGVzPC9jb2RlPiBhdHRyaWJ1dGUuIFN1Y2ggY2xhc3NlczoKCTx1 bD4KCQk8bGk+YXBwZWFyIGluIGEgY2VsbCwgc28geW91IGNhbiBzdHlsZSB0aGUgd2hvbGUg Y2VsbDwvbGk+CgkJPGxpPmFwcGVhciBvbiBlYWNoIGV2ZW50LCBzbyB5b3UgY2FuIHN0eWxl IHBhcnRpY3VsYXIgdHlwZXMgb2YgZXZlbnQ8L2xpPgoJCTxsaT5tYXkgYmUgJiM4MjE2O2Nv cGllZCYjODIxNzsgZnJvbSBldmVyeSBldmVudCB0byB0aGUgY2VsbCBpdHNlbGYsIHNvIHlv dSBjYW4gc3R5bGUgdGhlIHdob2xlIGNlbGwgYmFzZWQgb24gdGhlIGV2ZW50cyBpdCBjb250 YWluczwvbGk+Cgk8L3VsPjwvbGk+Cgk8L3VsPgoKCTxwPkNydWNpYWxseSwgZmxhZ3MgcHJv dmlkZSBpbmZvcm1hdGlvbiA8ZW0+YWJvdXQ8L2VtPiB0aGUgY2VsbCAvIGV2ZW50ICAmIzgy MTI7IGFuZCBjYW4gYmUgdGVzdGVkIHdpdGggdGhlIDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0 aW9uYWwgdGFnPC9hPiAmIzgyMTI7IHdoaWxlIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzIG5h bWVzIGFyZSBqdXN0IHRoZXJlIGZvciB5b3VyIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3Nw YW4+IHVzZS48L3A+CgoJPHA+V2hlbiBhc3NpZ25lZCBhcyBjbGFzc2VzLCBmbGFncyA8c3Ry b25nPmFsd2F5czwvc3Ryb25nPiB0YWtlIHRoZSAmIzgyMTY7Y2xhc3MmIzgyMTc7IHByZWZp eCAoaS5lLiB0aGUgMXN0IGl0ZW0gZ2l2ZW4gaW4gc21kX2NhbGVuZGFyJiM4MjE3O3MgPGNv ZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gYXR0cmlidXRlKSAmIzgyMTI7IHdoZXRoZXIgdGhl eSBhcHBlYXIgYXQgdGhlIDxlbT5ldmVudDwvZW0+IG9yIDxlbT5jZWxsPC9lbT4gbGV2ZWxz LiBUaGUgb25seSBjbGFzc2VzIHRoYXQgdGFrZSB0aGUgb3B0aW9uYWwgMm5kICYjODIxNjtl dmVudCYjODIxNzsgcHJlZml4IGFyZSB0aGUgZmllbGRzIHlvdSBzcGVjaWZ5IGluIHRoZSA8 Y29kZT5ldmVudGNsYXNzZXM8L2NvZGU+IGF0dHJpYnV0ZS48L3A+CgoJPHA+SXQmIzgyMTc7 cyBhbHNvIHdvcnRoIGJlYXJpbmcgaW4gbWluZCB0aGUgPGEgaHJlZj0iI2RhdGVzIj5kYXRl IGNhdmVhdHM8L2E+IHRoYXQgbWF5IHdlbGwgYml0ZSB5b3UuPC9wPgoKCTxoMiBpZD0iZXZl bnRzIj5TdGFuZGFyZCBjZWxscyBhbmQgZXZlbnRzPC9oMj4KCgk8cD5UaGVzZSBhcmUgdGhl IHN0YW5kYXJkIGNsYXNzIC8gZmxhZyBuYW1pbmcgcnVsZXMsIGFuZCB0aGV5IGFyZSBjdW11 bGF0aXZlOjwvcD4KCgk8dWw+CgkJPGxpPk5vcm1hbCAoZGF5KSBjZWxscyBkb24mIzgyMTc7 dCBoYXZlIGEgY2xhc3MgYXNzaWduZWQgdG8gdGhlbSB1bmxlc3MgeW91IHNwZWNpZnkgb25l IHdpdGggPGNvZGU+Y2VsbGNsYXNzPC9jb2RlPjwvbGk+CgkJPGxpPkFueSBjZWxsIHRoYXQg Y29udGFpbnMgYW4gZXZlbnQgKG9mIGFueSB0eXBlKSBpcyBmbGFnZ2VkIGFzIGFuIDxjb2Rl PmV2ZW50PC9jb2RlPjwvbGk+CgkJPGxpPkFueSBjZWxsIHRoYXQgZmFsbHMgb24gYSBob2xp ZGF5IGlzIGdpdmVuIHRoZSBmbGFnIDxjb2RlPmhvbHM8L2NvZGU+PC9saT4KCQk8bGk+VGhl IGN1cnJlbnQgZGF5IGlzIGdpdmVuIHRoZSBmbGFnIDxjb2RlPnRvZGF5PC9jb2RlPjwvbGk+ CgkJPGxpPklmIHRoZSBjZWxsIGNvbnRhaW5zIGEgc3RhbmRhcmQgKG9uZS1vZmYsIG5vbi1y ZWN1cnJpbmcsIG5vbi1zcGFubmluZykgZXZlbnQsIHRoZSA8ZW0+ZXZlbnQ8L2VtPiB3aWxs IGJlIGZsYWdnZWQgPGNvZGU+c3RhbmRhcmQ8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGgyIGlk PSJyZWN1ciI+UmVjdXJyaW5nIGV2ZW50czwvaDI+CgoJPHA+SWYgeW91IGhhdmUgbm9taW5h dGVkIGFuIGFydGljbGUgZmllbGQgYXMgeW91ciA8Y29kZT5zdGVwZmllbGQ8L2NvZGU+IHlv dSBtYXkgZW50ZXIgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmcmVxdWVuY2llcyBhdCB3 aGljaCB0aGlzIGV2ZW50IGlzIHRvIGJlIHJlcGVhdGVkLiBUaGUgZm9ybWF0IG9mIHRoZSBy ZXBldGl0aW9uIGlzICYjODIyMDtudW1iZXIgaW50ZXJ2YWwmIzgyMjE7LCBlLmcuIDxjb2Rl PjQgd2Vla3M8L2NvZGU+IG9yIDxjb2RlPjEwIGRheXM8L2NvZGU+IG9yIDxjb2RlPjYgbW9u dGhzPC9jb2RlPi4gVGhlIHBsdWdpbiB3aWxsIGRvIGl0cyBiZXN0IHRvIGZpZ3VyZSBvdXQg d2hhdCB5b3UgbWVhbi4gQ29uc3VsdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvc29m dHdhcmUvdGFyL21hbnVhbC9odG1sX25vZGUvRGF0ZS1pbnB1dC1mb3JtYXRzLmh0bWwiPmRh dGUgaW5wdXQgZm9ybWF0czwvYT4gZm9yIHNvbWUgbW9yZSBleGFtcGxlcyAobGlrZSA8Y29k ZT50aGlyZCBtb25kYXk8L2NvZGU+IGFuZCBzbyBvbikuIFRoaW5ncyBsaWtlIDxjb2RlPmZp cnN0IHRodXJzZGF5PC9jb2RlPiBvciA8Y29kZT5sYXN0IGZyaWRheTwvY29kZT4gd2lsbCBv bmx5IHNob3cgdGhlIGV2ZW50IG9uIHRoZSBnaXZlbiBmaXJzdC9sYXN0IGRheSBvZiB0aGUg bW9udGguIE5vdGUgdGhhdCA8Y29kZT5maXJzdDwvY29kZT4gYW5kIDxjb2RlPmxhc3Q8L2Nv ZGU+IGNhbiA8ZW0+b25seTwvZW0+IGJlIHVzZWQgd2l0aCB3ZWVrZGF5IG5hbWVzLjwvcD4K Cgk8cD5JZiB5b3UgY2FuIGZpbmQgYSB1c2UgZm9yIGl0LCB5b3UgbWF5IHNwZWNpZnkgbXVs dGlwbGUgZnJlcXVlbmNpZXMsIGZvciBleGFtcGxlIDxjb2RlPjMgZGF5cywgMSB3ZWVrPC9j b2RlPi4gVGhhdCBtZWFucyB5b3Ugd291bGQgc2VlIHRoYXQgZXZlbnQgb24gdGhlIGZpcnN0 IGRheSwgdGhlbiB0aGUgM3JkLCA2dGgsIDd0aCwgOXRoLCAxMnRoLCAxNHRoLCAxNXRoLCAx OHRoLCAyMXN0LCAyNHRoJiM4MjMwOyBkYXlzIHRoZXJlYWZ0ZXIuIE5vdGUgdGhhdCB0aGUg ZXZlbnQgb25seSBvY2N1cnMgb25jZSBvbiB0aGUgMjFzdCBkYXkgZXZlbiB0aG91Z2ggdGhl IHR3byBmcmVxdWVuY2llcyBjbGFzaC48L3A+CgoJPHA+UmVjdXIgcnVsZXM6PC9wPgoKCTx1 bD4KCQk8bGk+VGhlIHJlcGV0aXRpb24gd2lsbCBjb250aW51ZSBmb3JldmVyPHN1cCBjbGFz cz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjE5Mzc0MjQxNzQ5NjM1MjRmYmJmZTUiPjE8L2E+ PC9zdXA+IHVubGVzcyB5b3Ugc3BlY2lmeSB0aGF0IHRoZSBldmVudCBleHBpcmVzIGJ5IHNl dHRpbmcgYW4gZXhwaXJ5IHRpbWUgdW5kZXIgdGhlIGFydGljbGUmIzgyMTc7cyA8ZW0+TW9y ZTwvZW0+IGFyZWE8L2xpPgoJCTxsaT5UaGUgdmVyeSBmaXJzdCBldmVudCBvZiBhIHJlY3Vy cmluZyBzZXQgd2lsbCBiZSBmbGFnZ2VkIHdpdGggPGNvZGU+cmVjdXJmaXJzdDwvY29kZT48 L2xpPgoJCTxsaT5FYWNoIGZvbGxvd2luZyBjZWxsIHRoYXQgY29udGFpbnMgYSByZWN1cnJp bmcgZXZlbnQgd2lsbCBiZSBmbGFnZ2VkIHdpdGggPGNvZGU+cmVjdXI8L2NvZGU+PC9saT4K CQk8bGk+Qm90aCBmbGFncyBhcmUgYXBwbGllZCB0byB0aGUgZXZlbnQgYXMgY2xhc3NlcyB1 c2luZyB0aGUgY2xhc3MgcHJlZml4PC9saT4KCQk8bGk+UmVwZWF0ZWQgZXZlbnRzIG1heSBi ZSA8YSBocmVmPSIjY2FuY2VsIj5jYW5jZWxsZWQgb3Igb21pdHRlZDwvYT4gb24gYSBwZXIt ZGF0ZSBiYXNpczwvbGk+Cgk8L3VsPgoKCTxwIGNsYXNzPSJzbWFsbCIgaWQ9ImZuMTkzNzQy NDE3NDk2MzUyNGZiYmZlNSI+PHN1cD4xPC9zdXA+ICYjODIxNjtmb3JldmVyJiM4MjE3OyBp cyBsaW1pdGVkIHRvIDk5OTk5IHJlY3VycmVuY2VzIHBlciBldmVudCwgb3IgMjc0IHllYXJz JiM4MjE3OyB3b3J0aCBvZiBkYWlseSBldmVudHMuIEVpdGhlciA8c3BhbiBjbGFzcz0iY2Fw cyI+VU5JWDwvc3Bhbj4gd2lsbCBydW4gb3V0IG9mIGRhdGVzIG9yIDxzcGFuIGNsYXNzPSJj YXBzIj5QSFA8L3NwYW4+IHdpbGwgcnVuIG91dCBvZiBtZW1vcnkgbG9uZyBiZWZvcmUgeW91 IHJlYWNoIHRoaXMgbGltaXQgOi0pPC9wPgoKCTxoMiBpZD0ibXVsdGkiPk11bHRpcGxlIChz cGFubmVkKSBldmVudHM8L2gyPgoKCTxwPkFueSBldmVudCB0aGF0IGhhczo8L3A+CgoJPHVs PgoJCTxsaT5hIHN0YXJ0IGRhdGU8L2xpPgoJCTxsaT5hbiBleHBpcnkgZGF0ZSB0aGF0IGlz IGEgZGF5IG9yIG1vcmUgbGF0ZXIgdGhhbiB0aGUgc3RhcnQgZGF0ZSwgYW5kPC9saT4KCQk8 bGk+PGVtPmRvZXMgbm90PC9lbT4gaGF2ZSBhbnkgcmVwZXRpdGlvbiBpbiBpdHMgPGNvZGU+ c3RlcGZpZWxkPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPmlzIGZsYWdnZWQgYXMgYSA8Y29k ZT5tdWx0aTwvY29kZT4uIEJ5IGRlZmF1bHQgdGhlIGZpcnN0IGV2ZW50IGlzIGRpc3BsYXll ZCBpbiBmdWxsIGFuZCBlYWNoICYjODIxNjtjb250aW51YXRpb24mIzgyMTc7IGV2ZW50IGlz IHNob3duIG9ubHkgYXMgYSByaWdodCBhcnJvdyBpbiBzdWJzZXF1ZW50IGNlbGxzICh0aGUg ZXZlbnQgdGl0bGUgaXMgZGlzcGxheWVkIG9uIG1vdXNlIGhvdmVyKS4gRXZlbnRzIG1heSBz cGFuIG1vbnRocyBvciB5ZWFycyBhbmQgdGhlIHBsdWdpbiBmaWd1cmVzIGV2ZXJ5dGhpbmcg b3V0IHVzaW5nIHRoZSBmbGFnIHJ1bGVzOjwvcD4KCgk8dWw+CgkJPGxpPlRoZSBmaXJzdCBj ZWxsIG9mIGEgc3Bhbm5lZCBzZXQgaXMgYSA8Y29kZT5tdWx0aWZpcnN0PC9jb2RlPjwvbGk+ CgkJPGxpPlRoZSBsYXN0IGNlbGwgaXMgYSA8Y29kZT5tdWx0aWxhc3Q8L2NvZGU+PC9saT4K CQk8bGk+RXZlcnkgb3RoZXIgY2VsbCBpcyBhIDxjb2RlPm11bHRpPC9jb2RlPiA8ZW0+ZXhj ZXB0PC9lbT4gaWYgdGhlIGV2ZW50IHJvbGxzIG92ZXIgaW50byB0aGUgbmV4dCBtb250aC4g SW4gdGhhdCBjYXNlLCB0aGUgZW50cnkgb24gdGhlIDFzdCBvZiB0aGUgbW9udGggaXMgYSA8 Y29kZT5tdWx0aXByZXY8L2NvZGU+IHRvIGluZGljYXRlIGl0IGJlbG9uZ3MgdG8gYSBwcmV2 aW91cyBldmVudDwvbGk+CgkJPGxpPklmIHRoZSAxc3QgZGF5IG9mIHRoZSBtb250aCBpcyB0 aGUgbGFzdCBkYXkgb2YgdGhlIGV2ZW50LCB0aGUgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiBp cyBkcm9wcGVkIGluIGZhdm91ciBvZiA8Y29kZT5tdWx0aWxhc3Q8L2NvZGU+PC9saT4KCTwv dWw+CgoJPHA+U3dpdGNoIG9mZiBzcGFubmluZyBjb21wbGV0ZWx5IHdpdGggdGhlIDxjb2Rl PnNob3dzcGFubmVkPSZxdW90OzAmcXVvdDs8L2NvZGU+IGF0dHJpYnV0ZS4gRXZlbnRzIHRo YXQgaGF2ZSBhbiBleHBpcnkgYXJlIHRoZW4ganVzdCBzdGFuZGFyZCBldmVudHMuPC9wPgoK CTxwPiYjODIxNjtDb250aW51YXRpb24mIzgyMTc7IGNlbGxzIG1heSBiZSBwcm9jZXNzZWQg d2l0aCBhIHNlcGFyYXRlIGZvcm0gKGNhbGxlZCBhIDxjb2RlPnNwYW5mb3JtPC9jb2RlPiBi ZWNhdXNlICYjODIxNjtjb250Zm9ybSYjODIxNzsgZGlkbiYjODIxNzt0IHNvdW5kIHZlcnkg bmljZSEpLiBJZiB5b3UgY2hvb3NlIG5vdCB0byB1c2UgYSA8Y29kZT5zcGFuZm9ybTwvY29k ZT4sIHRoZSBzdGFuZGFyZCA8Y29kZT5mb3JtPC9jb2RlPiBvciBjb250YWluZXIgd2lsbCBi ZSB1c2VkIGFuZCB5b3Ugd2lsbCBoYXZlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGRp ZmZlcmVudCBtdWx0aSBmbGFncyB5b3Vyc2VsZiB1c2luZyB0aGUgPGEgaHJlZj0iI2lmY2Fs Ij5jb25kaXRpb25hbCB0YWc8L2E+LjwvcD4KCgk8cD5Zb3UgY2FuIGFsc28gPGEgaHJlZj0i I2NhbmNlbCI+Y2FuY2VsIG9yIG9taXQ8L2E+IGRheXMgb2YgYSBzcGFubmVkIGV2ZW50IGlu IHRoZSBzYW1lIG1hbm5lciBhcyB5b3UgZG8gd2l0aCA8YSBocmVmPSIjcmVjdXIiPnJlY3Vy cmluZyBldmVudHM8L2E+LCBleGNlcHQgeW91IGNhbm5vdCBjYW5jZWwgdGhlIGZpcnN0IGRh eTsgeW91IHNob3VsZCBtb3ZlIHRoZSBldmVudCBzdGFydCBkYXRlIGFuZCBhcG9sb2dpc2Uh PC9wPgoKCTxoMiBpZD0iY2FuY2VsIj5DYW5jZWxsaW5nIGFuZCBvbWl0dGluZyBldmVudHM8 L2gyPgoKCTxwPlBsYW5zIGNoYW5nZSBhbmQgeW91IG1heSBmaW5kIHRoYXQgYSBnaWcgaGFz IHRvIGJlIGNhbmNlbGxlZCBmb3Igd2hhdGV2ZXIgcmVhc29uLiBQZXJoYXBzIHlvdSBhZHZl cnRpc2UgYSB3ZWVrbHkgYm9vdCBmYWlyIGJ1dCB0aGUgZmllbGQgaXMgd2F0ZXJsb2dnZWQg b25lIHdlZWsuIE5vIHByb2JsZW0uIE5vbWluYXRlIGEgPGNvZGU+c2tpcGZpZWxkPC9jb2Rl PiBpbiB5b3VyIDxjb2RlPiZsdDt0eHA6c21kX2NhbGVuZGFyIC8mZ3Q7PC9jb2RlPiB0YWcg YW5kIGVudGVyIHRoZSBkYXRlIG9mIHRoZSBjYW5jZWxsZWQgZXZlbnQuPC9wPgoKCTxwPlNp bWlsYXJseSB5b3UgbWlnaHQgcnVuIGEgdGhlYXRyZSB3ZWIgc2l0ZSB0aGF0IGhhcyBhIHRo cmVlLXdlZWsgcHJvZHVjdGlvbiBwZXJmb3JtYW5jZSBvbiB3ZWVrbmlnaHRzIG9ubHkuIElu c3RlYWQgb2Ygc2V0dGluZyB1cCB0aHJlZSBzZXBhcmF0ZSBldmVudHMgJiM4MjEyOyBvbmUg Zm9yIGVhY2ggd2VlayAmIzgyMTI7IG5vbWluYXRlIGFuIDxjb2RlPm9taXRmaWVsZDwvY29k ZT4gYW5kIGxpc3QgdGhlIGRhdGVzIG9uIHdoaWNoIHRoZSBwZXJmb3JtYW5jZSBkb2VzIG5v dCBhaXIuIE9taXR0ZWQgZGF0ZXMgd2lsbCBub3QsIHVuZGVyIGFueSBjaXJjdW1zdGFuY2Vz LCBhcHBlYXIgb24gdGhlIGNhbGVuZGFyIGFuZCB0aGV5IG92ZXJyaWRlIGNhbmNlbGxlZCBk YXRlcy9ob2xpZGF5cy4gSWYgPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IG1vZGUgaXMgdXNlZCwg eW91IHdpbGwgaG93ZXZlciBzZWUgYSBjZWxsIGZsYWcgbGFiZWxsZWQgPGNvZGU+b21pdDwv Y29kZT4gKHBsdXMgY2xhc3MgcHJlZml4KSBpbiBjYXNlIHlvdSBkbyB3aXNoIHRvIHN0eWxl IHN1Y2ggY2VsbHMuPC9wPgoKCTxwPlRvIHNwZWNpZnkgdGhlIGRhdGVzIGluIGVpdGhlciBm aWVsZCwgdXNlIGFueSBhY2NlcHRhYmxlIGRhdGUgZm9ybWF0LCBidXQgZGVyaXZhdGl2ZXMg b2YgZGQtbW9udGhuYW1lLXl5eXkgb3IgbW9udGhuYW1lLWRkLXl5eXkgYXJlIHRoZSBtb3N0 IHVuYW1iaWd1b3VzIHRvIGF2b2lkIHByb2JsZW1zIG9mIGhvdyB0aGUgcGx1Z2luIG1pZ2h0 IGludGVycHJldCA8Y29kZT4xLzU8L2NvZGU+IGFzIEphbiA1dGggb3IgTWF5IDFzdC4gWW91 IGNhbiBzcGVjaWZ5IGFzIG1hbnkgY2FuY2VsbGF0aW9ucyBvciBvbWlzc2lvbnMgYXMgeW91 IGxpa2U7IGNvbW1hLXNlcGFyYXRlIGVhY2ggb25lLjwvcD4KCgk8cD5CeSBkZWZhdWx0LCBj YW5jZWxsZWQgZXZlbnRzIHdpbGwgbm90IGFwcGVhciBvbiB0aGUgY2FsZW5kYXIgYW5kIHRo ZXJlIHdpbGwgYmUgYSBjb25zcGljdW91cyBob2xlIGluIHRoZSByZXBldGl0aW9uLiBJZiB5 b3Ugc3dpdGNoIDxjb2RlPnNob3dza2lwcGVkPSZxdW90OzEmcXVvdDs8L2NvZGU+IHRoZSBl dmVudCB3aWxsIGFwcGVhciBpbiB0aGUgY2VsbCBhcyBub3JtYWwgYW5kIHRoZSA8Y29kZT5j YW5jZWw8L2NvZGU+IGZsYWcgd2lsbCBhcHBseSB0byB0aGUgZXZlbnQgKGFuZCBjZWxsIGlm IHlvdSBjaG9vc2UpIHNvIHlvdSBtYXkgZGV0ZWN0L3N0eWxlIGl0LjwvcD4KCgk8aDIgaWQ9 ImhvbGlkYXlzIj5Ib2xpZGF5czwvaDI+CgoJPHA+UHVibGljIGhvbGlkYXlzIG5lZWQgbm90 IGJlIGEgbnVpc2FuY2UgdG8geW91ciBldmVudHMuIEdpdmUgdGhlIHBsdWdpbiBhIGhvbGlk YXkgbGlzdCBhbmQgaXQmIzgyMTc7bGwgbWFrZSBzdXJlIHRoYXQgYW55IHJlY3VycmluZyBv ciBtdWx0aSBldmVudHMgYXJlIG5vdCBzY2hlZHVsZWQgb24gdGhvc2UgZGF5cy4gPGEgaHJl Zj0iI2V2ZW50cyI+U3RhbmRhcmQ8L2E+IG9uZS1vZmYgZXZlbnRzIGFyZSBwZXJtaXR0ZWQg YnkgZGVmYXVsdCBiZWNhdXNlIHlvdSBtaWdodCB3YW50IHRvIG9yZ2FuaXNlIGEgc3BlY2lh bCBldmVudCBvbiB0aGF0IGRheSwgdGhvdWdoIHlvdSBjYW4gZm9yYmlkIHRob3NlIHRvbyBp ZiB5b3Ugd2lzaC48L3A+CgoJPHA+VGhlIGxpc3Qgb2YgZGF0ZXMgeW91IHNwZWNpZnkgY2Fu IGJlIGVudGVyZWQgZGlyZWN0bHkgaW4gYSBzdHJpbmcgaW4gdGhlIDxjb2RlPmhvbGlkYXlz PC9jb2RlPiBhdHRyaWJ1dGUgb3IgaW4gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7 PC9jb2RlPi4gVGhlIGxhdHRlciBpcyBtb3JlIGZ1biBzbyBsZXQmIzgyMTc7cyB0cnkgdGhh dDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnZhcmlhYmxlIG5hbWU9JnF1b3Q7bmF0X2hvbHMmcXVvdDsKICAgICB2YWx1ZT0mcXVvdDtE ZWMgMjUsIDI2IERlYywgMzEvRGVjLCBKYW4tMSwKICAgICAgICBNYXkgNCAyMDA5LCAyMDA5 LTA4LTMxJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6c21kX2NhbGVuZGFyIGhvbGlkYXlzPSZxdW90 O3R4cHZhcjpuYXRfaG9scyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlcmUg eW91IGdvLCBhbGwgZG9uZS4gVGhlIGxpc3QgdGhlcmUgc2hvd3Mgc29tZSBvZiB0aGUgdmFy aWV0eSBhbmQgYnJlYWR0aCBvZiBmb3JtYXRzIHRoYXQgdGhlIHBsdWdpbiBhbGxvd3MuIFRo ZXJlIGFyZSBtb3JlLiBOb3RlIHRoYXQgc29tZSBldmVudHMgaGF2ZSBhIHllYXIgYW5kIG90 aGVycyBkb24mIzgyMTc7dC4gVGhlIG9uZXMgd2l0aG91dCBhIHllYXIgb2NjdXIgb24gdGhl IHNhbWUgZGF0ZSBldmVyeSB5ZWFyIHdoZXJlYXMgdGhlIG9uZXMgd2l0aCBhIHllYXIgd2ls bCBvbmx5IG9jY3VyIG9uIHRoYXQgc3BlY2lmaWMgZGF0ZS48L3A+CgoJPHA+T25jZSB5b3Vy IGRhdGVzIGFyZSBkZWZpbmVkIHlvdSBjYW4gY29udHJvbCB3aGljaCBldmVudHMgYXJlIGFs bG93ZWQgdG8gZmFsbCBvbiB0aG9zZSBkYXRlcyB2aWEgPGNvZGU+aG9saWRheWZsYWdzPC9j b2RlPi4gSnVkaWNpYWwgdXNlIG9mIHRoYXQgYXR0cmlidXRlLCA8Y29kZT5zaG93c3Bhbm5l ZDwvY29kZT4sIDxjb2RlPnNob3dza2lwcGVkPC9jb2RlPiBhbmQgdGhlIHZhcmlvdXMgZm9y bXMgJiM4MjEyOyBhbG9uZyB3aXRoIHRoZSA8YSBocmVmPSIjaWZjYWwiPmNvbmRpdGlvbmFs IHRhZzwvYT4gJiM4MjEyOyBjYW4gZ2l2ZSB5b3UgYSB3aWRlIHZhcmlldHkgb2Ygd2F5cyB0 byBkaXNwbGF5IGV2ZW50cyBhbmQgY2VsbHMuPC9wPgoKCTxwPkhvbGlkYXkgY2VsbHMgYXJl IGdpdmVuIHRoZSBmbGFnIDxjb2RlPmhvbHM8L2NvZGU+LCBhbmQgYW55IGV2ZW50IHRoYXQg aXMgbm90IHNwZWNpZmljYWxseSBwZXJtaXR0ZWQgYnkgdGhlIDxjb2RlPmhvbGlkYXlmbGFn czwvY29kZT4gaXMgYXV0b21hdGljYWxseSBhc3NpZ25lZCBhIDxjb2RlPmNhbmNlbDwvY29k ZT4gZmxhZyBpZiBpdCBmYWxscyBvbiBvbmUgb2YgdGhlIGRheXMuIE9taXR0ZWQgZGF0ZXMg d2lsbCwgaG93ZXZlciwgY2F1c2UgdGhlIDxjb2RlPmNhbmNlbDwvY29kZT4gZmxhZyB0byBi ZSByZW1vdmVkLjwvcD4KCgk8aDIgaWQ9InNtZGNhbCI+PGNvZGU+Jmx0O3R4cDpzbWRfY2Fs ZW5kYXIgLyZndDs8L2NvZGU+PC9oMj4KCgk8cD5QdXQgdGhlIDxjb2RlPiZsdDt0eHA6c21k X2NhbGVuZGFyIC8mZ3Q7PC9jb2RlPiB0YWcgd2hlcmV2ZXIgeW91IHdhbnQgeW91ciBjYWxl bmRhciB0byBhcHBlYXIuIFVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIHRv IGNvbnRyb2wgaXRzIG91dHB1dCBkaXNwbGF5IGFuZCB1c2UgdGhlIDxhIGhyZWY9IiNhdHRz dHlsZXMiPnN0eWxlIGF0dHJpYnV0ZXM8L2E+IHRvIGRldGVybWluZSBob3cgdG8gYXBwbHkg c3R5bGVzIHRvIHRoZSB2YXJpb3VzIGV2ZW50cyBhbmQgY2VsbHMuPC9wPgoKCTxoMyBjbGFz cz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5NYWluIGF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNpemU8L3NwYW4+IDogY2FsZW5kYXIgc2l6ZSwg PGNvZGU+bGFyZ2U8L2NvZGU+IG9yIDxjb2RlPnNtYWxsPC9jb2RlPi4gVGhlIHNtYWxsIGlz IG1vcmUgZ2VhcmVkIHRvd2FyZHMgYSBtaW5pY2FsLCBhbHRob3VnaCBmdW5jdGlvbmFsbHkg dGhlcmUgPGEgaHJlZj0iI3NpemVkaWZmIj5pc24mIzgyMTc7dCBtdWNoIGJldHdlZW4gdGhl bTwvYT4uIERlZmF1bHQ6IDxjb2RlPmxhcmdlPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IHNob3cgPGNvZGU+cGFzdDwvY29kZT4sIDxjb2Rl PmZ1dHVyZTwvY29kZT4sIG9yIDxjb2RlPmFueTwvY29kZT4gZXZlbnQuIERlZmF1bHQ6IDxj b2RlPmFueTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXhwaXJlZDwv c3Bhbj4gOiBkZWZpbml0aXZlbHkgaGlkZSAoPGNvZGU+MDwvY29kZT4pIG9yIHNob3cgKDxj b2RlPjE8L2NvZGU+KSBleHBpcmVkIGV2ZW50cy4gTGVhdmUgYmxhbmsgdG8gdXNlIHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZHZhbmNlZCBQcmVmZXJlbmNlIDxjb2Rl PlB1Ymxpc2ggZXhwaXJlZCBhcnRpY2xlczwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Zmlyc3RkYXk8L3NwYW4+IDogdGhlIDFzdCBkYXkgb2YgdGhlIHdlZWsgdG8g c2hvdyBpbiB0aGUgY2FsZW5kYXIuIDA9U3VuZGF5LCAxPU1vbmRheSBhbmQgc28gb24gZG93 biB0byA2PVNhdHVyZGF5LiBEZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5kYXlmb3JtYXQ8L3NwYW4+IDogdGhlIHdheSBpbiB3aGljaCB0 aGUgZGF5IG5hbWVzIGFyZSByZW5kZXJlZC4gQ2hvb3NlIGZyb20gZWl0aGVyIDxjb2RlPkFC QlI8L2NvZGU+ICh0aGUgZGVmYXVsdCkgdG8gc2hvdyB0aGUgZGF5cyBhcyBNb24sIFR1ZSwg V2VkLCBldGMgb3IgPGNvZGU+RlVMTDwvY29kZT4gdG8gcmVuZGVyIHRoZWlyIGZ1bGwgbmFt ZXMuIEFsdGVybmF0aXZlbHksIHN1cHBseSBhbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3Vr Mi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBjb2RlcyB0byB1c2UgdGhhdCBp bnN0ZWFkLiBMb2NhbGUtc3BlY2lmaWMgbmFtZXMgYXJlIHJldHVybmVkLjxkaXYgY2xhc3M9 ImJyZWFrIj5GaW5hbGx5LCBpZiB5b3UgcmVhbGx5IGRvbiYjODIxNzt0IGxpa2UgYW55IG9m IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiBkaXNwbGF5IG1ldGhvZHMgeW91 IGNhbiBoYXJkLWNvZGUgeW91ciBvd24uIFdyaXRlIGVhY2ggZW50cnkgYXMgYSBjb21tYSBz ZXBhcmF0ZWQgbGlzdCBzdXJyb3VuZGVkIGJ5IDxjb2RlPnt9PC9jb2RlPiBicmFja2V0cy4g U28sIGlmIHlvdSB3YW50ZWQgdHdvLWxldHRlciBHZXJtYW4gd2VlayBkYXlzIHlvdSBjb3Vs ZCB1c2U6IDxjb2RlPmRheWZvcm1hdD0mcXVvdDt7U28sTW8sRGksTWksRG8sRnIsU2F9JnF1 b3Q7PC9jb2RlPi4gVGhlIGZpcnN0IGRheSBpbiB0aGUgbGlzdCA8c3Ryb25nPm11c3Q8L3N0 cm9uZz4gYmUgYSBTdW5kYXkgb3IgdGhpbmdzIHdpbGwgZ2V0IG1pZ2h0eSBiaXphcnJlPC9k aXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1vbnRoZm9ybWF0PC9zcGFuPiA6 IHRoZSB3YXkgaW4gd2hpY2ggdGhlIG1vbnRoIG5hbWVzIGFyZSByZW5kZXJlZC4gQ2hvb3Nl IGZyb20gZWl0aGVyIDxjb2RlPkZVTEw8L2NvZGU+ICh0aGUgZGVmYXVsdCkgdG8gc2hvdyB0 aGUgZnVsbCBtb250aCBuYW1lcyBvciA8Y29kZT5BQkJSPC9jb2RlPiB0byByZW5kZXIgdGhl aXIgYWJicmV2aWF0ZWQgbmFtZXMuIEFsdGVybmF0aXZlbHksIHN1cHBseSBhbnkgdmFsaWQg PGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBj b2RlcyB0byB1c2UgdGhhdCBpbnN0ZWFkLiBMb2NhbGUtc3BlY2lmaWMgbmFtZXMgYXJlIHJl dHVybmVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlbGVjdDwvc3Bhbj4gOiB1 c2UgYSBzZWxlY3QgZHJvcGRvd24gZm9yIHJhcGlkIGFjY2VzcyB0byB3ZWVrcywgbW9udGhz IG9yIHllYXJzIGluc3RlYWQgb2YgcmVuZGVyaW5nIGp1c3QgdGhlIG5hbWVzLiBEZWZhdWx0 OiB1bnNldCwgYnV0IHlvdSBtYXkgbWFrZSBhIChjb21tYS1zZXBhcmF0ZWQpIGxpc3QgZnJv bSBlaXRoZXIgPGNvZGU+d2VlazwvY29kZT4gLyA8Y29kZT5tb250aDwvY29kZT4gb3IgPGNv ZGU+eWVhcjwvY29kZT4uICh3ZWVrIGFuZCBtb250aCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZl KS4gTm90ZSB0aGF0IHdoZW4gdXNpbmcgPGNvZGU+d2VlazwvY29kZT4sIHRoZSBwbHVnaW4g bWFrZXMgYW4gZWR1Y2F0ZWQgZ3Vlc3MgYXQgdGhlIG1vbnRoIGFuZCBtYXkgbm90IGdldCBp dCByaWdodDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zZWxlY3RidG48L3NwYW4+ IDogYnkgZGVmYXVsdCwgdGhlIHNlbGVjdCBkcm9wZG93bnMgd2lsbCBhdXRvLXN1Ym1pdCB3 aGVuIHRoZXkgYXJlIGNoYW5nZWQuIElmIHlvdSBwcmVmZXIgYSBkZWRpY2F0ZWQgc3VibWl0 IGJ1dHRvbiwgZ2l2ZSB0aGUgdGV4dCB5b3Ugd2lzaCB0byBhcHBlYXIgb24gdGhlIGJ1dHRv biBoZXJlLiBUaGUgYnV0dG9uIGhhcyBhIGZpeGVkIGNsYXNzIG9mIDxjb2RlPnNtZF9jYWxf aW5wdXQ8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlzb3dlZWtzPC9z cGFuPiA6IHNob3cgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgbnVt YmVycyBhcyBhIGNvbHVtbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGNhbGVuZGFyLiBBbnkgdGV4 dCBpbiB0aGlzIGF0dHJpYnV0ZSBlbmFibGVzIHRoZSBmZWF0dXJlLCBhbmQgeW91ciB0ZXh0 IGJlY29tZXMgdGhlIGhlYWRpbmcgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3Nw YW4+IHdlZWsgY29sdW1uLiBZb3UgbWF5IG9wdGlvbmFsbHkgb3ZlcnJpZGUgdGhlIGRlZmF1 bHQgd2VlayBudW1iZXIgZGlzcGxheWVkIGluIGVhY2ggY2VsbCBieSBhZGRpbmcgYSBjb21t YSBhbmQgc29tZSB0ZXh0OyB3aGF0ZXZlciB5b3UgZW50ZXIgd2lsbCBiZSBwdXQgaW4gZWFj aCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIGNlbGwuIFVzZSB0aGUgcmVw bGFjZW1lbnQgY29kZSA8Y29kZT57d2Vla308L2NvZGU+IGluIHlvdXIgbWFya3VwIHRvIGlu c2VydCB0aGUgY3VycmVudCB3ZWVrIG51bWJlci4gPGRpdiBjbGFzcz0iYnJlYWsiPkV4YW1w bGU6IDxjb2RlPmlzb3dlZWtzPSZxdW90O3drLCAje3dlZWt9JnF1b3Q7PC9jb2RlPiB3aWxs IHJlbmRlciAmIzgyMTY7d2smIzgyMTc7IGF0IHRoZSB0b3Agb2YgdGhlIGNvbHVtbiBhbmQg c29tZXRoaW5nIGxpa2UgPGNvZGU+IzI0PC9jb2RlPiwgPGNvZGU+IzI1PC9jb2RlPiwgPGNv ZGU+IzI2PC9jb2RlPiYjODIzMDsgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggd2VlayByb3cuIElm IHRoZSBhdHRyaWJ1dGUgYmVnaW5zIHdpdGggYSBjb21tYSAoaS5lIHRoZSBmaXJzdCBpdGVt IGlzIG9taXR0ZWQpLCB0aGVyZSB3aWxsIGJlIG5vIGNvbHVtbiBoZWFkaW5nLjwvZGl2Pjxk aXYgY2xhc3M9ImJyZWFrIj5Ob3RlIHRoYXQgaWYgdGhlIGlzb3dlZWtzIGZlYXR1cmUgaXMg ZW5hYmxlZCwgPGNvZGU+Zmlyc3RkYXk8L2NvZGU+IHdpbGwgYmUgZm9yY2VkIHRvIHN0YXJ0 IG9uIGEgTW9uZGF5IGFzIGdvdmVybmVkIGJ5IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SVNP PC9zcGFuPiBzcGVjaWZpY2F0aW9uLiBEZWZhdWx0OiB1bnNldDwvZGl2PjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3NwYW4+IDogZXZlbnRzIGluIHRoaXMgbGlz dCBvZiBzdGF0dXMgYXJlIHB1Ymxpc2hlZC4gRGVmYXVsdDogPGNvZGU+bGl2ZTwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogZmlsdGVy IGV2ZW50cyBieSB0aGlzIGxpc3Qgb2YgY2F0ZWdvcmllcy4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiBmaWx0ZXIgZXZl bnRzIGJ5IHRoaXMgbGlzdCBvZiBzZWN0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IGZpbHRlciBldmVudHMgYnkg dGhpcyBhdXRob3IgUmVhbCBOYW1lLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IElEIHRvIGFwcGx5IHRvIHRoZSB0YWJsZSB0aGF0IGhvbGRzIHRoZSBjYWxlbmRh ci4gVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHZhcmlhYmxlIDxjb2RlPmNhbGlkPC9jb2RlPiBhbmQgaXRzIGRlZmF1bHQgaXMgdW5z ZXQuIEVhY2ggY2FsZW5kYXIgb24gYSBwYWdlIDxhIGhyZWY9IiNuYW1pbmciPm11c3QgYmUg dW5pcXVlPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZpZDwvc3Bhbj4g OiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IElEIHRvIGFwcGx5IHRvIHRo ZSBwcmV2L25leHQvbW9udGgveWVhciBuYXZpZ2F0aW9uIGZvcm0uIElmIHVzZWQsIGVhY2gg Y2FsZW5kYXIgb24gYSBwYWdlIG11c3QgaGF2ZSBhIHVuaXF1ZSBuYXZpZC4gRGVmYXVsdDog dW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2YXJyb3c8L3NwYW4+IDog Y29tbWEtc2VwYXJhdGVkIHBhaXIgb2YgaXRlbXMgeW91IHdhbnQgdG8gYXBwZWFyIGFzIHBy ZXYvbmV4dCBhcnJvd3MgaW4gdGhlIGNhbGVuZGFyLiBEZWZhdWx0OiA8Y29kZT4mYW1wOyM2 MDssICZhbXA7IzYyOzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bW9u dGg8L3NwYW4+IDogc3RhcnQgdGhlIGNhbGVuZGFyIG9uIHRoaXMgbW9udGggZnJvbSAxIChK YW51YXJ5KSB0byAxMiAoRGVjZW1iZXIpLiBOb3JtYWwgY2FsZW5kYXIgbmF2aWdhdGlvbiBv dmVycmlkZXMgdGhpcyB2YWx1ZS4gSWYgPGNvZGU+c3RhdGljPC9jb2RlPiBpcyB1c2VkLCB0 aGlzIG1vbnRoIGJlY29tZXMgdGhlIG9ubHkgb25lIHlvdSBtYXkgdmlldy4gSWYgdW5zZXQs IGFuZCBubyA8Y29kZT5tPTwvY29kZT4gdmFsdWUgYXBwZWFycyBvbiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZSwgdGhlIGN1cnJlbnQgbW9udGggaXMgdXNlZDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53ZWVrPC9zcGFuPiA6IHN0YXJ0IHRoZSBj YWxlbmRhciBkdXJpbmcgdGhlIG1vbnRoIGNvbnRhaW5pbmcgdGhpcyA8c3BhbiBjbGFzcz0i Y2FwcyI+SVNPPC9zcGFuPiB3ZWVrIChmcm9tIDEgdG8gNTMpLiBJZ25vcmVkIGlmIDxjb2Rl PnN0YXRpYzwvY29kZT4gb3Igb25lIG9mIHRoZSBjYWxlbmRhciBuYXZpZ2F0aW9uIGNvbnRy b2xzIGlzIHVzZWQuIElmIGEgPGNvZGU+dz08L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBnaXZlbiB3ZWVrIG92 ZXJyaWRlcyBhbnkgbW9udGggdmFsdWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ eWVhcjwvc3Bhbj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgYXQgdGhpcyA0LWRpZ2l0IHllYXIu IE5vcm1hbCBjYWxlbmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRlcyB0aGlzIHZhbHVlLiBJZiA8 Y29kZT5zdGF0aWM8L2NvZGU+IGlzIHVzZWQsIHRoaXMgeWVhciBiZWNvbWVzIHRoZSBvbmx5 IG9uZSB5b3UgbWF5IHZpZXcuIElmIHVuc2V0LCBhbmQgbm8gPGNvZGU+eT08L2NvZGU+IHZh bHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUs IHRoZSBjdXJyZW50IHllYXIgaXMgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij55ZWFyd2lkdGg8L3NwYW4+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB0aGF0IHNwZWNp ZmllcyBob3cgbWFueSB5ZWFycyB5b3VyIGNhbGVuZGFyIHNwYW5zLiBCeSBkZWZhdWx0IGl0 IGlzIDxjb2RlPjA8L2NvZGU+IHdoaWNoIHVzZXMgdGhlIGVhcmxpZXN0IChwb3N0ZWQpIGV2 ZW50IGluIHRoZSBzZWN0aW9uIGFzIHRoZSBsb3dlc3QgeWVhciBhbmQgdGhlIGxhdGVzdCAo bW9kaWZpZWQgb3IgcG9zdGVkLCB3aGljaGV2ZXIgaXMgZ3JlYXRlcikgZXZlbnQgaW4gdGhl IHNlY3Rpb24gYXMgdGhlIGxhdGVzdCB5ZWFyLiBZb3Ugd2lsbCBub3QgYmUgcGVybWl0dGVk IHRvIG5hdmlnYXRlIHRoZSBjYWxlbmRhciBvdXRzaWRlIHRoaXMgcmFuZ2UuPGRpdiBjbGFz cz0iYnJlYWsiPlRvIHdpZGVuIHRoZSByYW5nZSwgc3BlY2lmeSBzb21lIHZhbHVlcywgZm9y IGV4YW1wbGUgPGNvZGU+eWVhcndpZHRoPSZxdW90OzIsNCZxdW90OzwvY29kZT4gd2lsbCBz dWJ0cmFjdCAyIHdob2xlIHllYXJzIGZyb20gdGhlIGVhcmxpZXN0IGV2ZW50IGFuZCBhZGQg NCB3aG9sZSB5ZWFycyB0byB0aGUgbGF0ZXN0IChwb3N0ZWQgb3IgbW9kaWZpZWQpIGV2ZW50 LiBJZiB5b3Ugc3BlY2lmeSBhIHNpbmdsZSBudW1iZXIsIHRoYXQgdmFsdWUgd2lsbCBiZSB1 c2VkIHRvIGV4cGFuZCB0aGUgcmFuZ2UgZXF1YWxseSBpbiBib3RoIGRpcmVjdGlvbnMuPC9k aXY+PGRpdiBjbGFzcz0iYnJlYWsiPiBJZiB5b3UgYWRkICYjODIxNjtAY0AmIzgyMTc7IHRv IGVpdGhlciB2YWx1ZSB0aGUgY3VycmVudCB5ZWFyIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUg ZWFybGllc3Qgb3IgbGF0ZXN0IGV2ZW50LCBlLmcuIDxjb2RlPnllYXJ3aWR0aD0mcXVvdDsy LDRjJnF1b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgeWVhcnMgZnJvbSB0aGUgZWFybGll c3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRvIHRvZGF5JiM4MjE3O3MgZGF0ZTwv ZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHVzZSB0 aGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdG8gcHJvY2VzcyBlYWNo IGV2ZW50LiBJZiB0aGUgY2FsZW5kYXIgdGFnIGlzIHVzZWQgYXMgYSBjb250YWluZXIgaXQg d2lsbCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIGZvcm0uIElmIG5laXRoZXIgYXJl IHVzZWQsIHRoZSBkZWZhdWx0IGZvciBhIGxhcmdlIGNhbGVuZGFyIGlzIGEgaHlwZXJsaW5r ZWQgYXJ0aWNsZSB0aXRsZS4gVGhlIHNtYWxsIGNhbGVuZGFyIHJlbmRlcnMgYW4gZW1wdHkg ZXZlbnQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3BhbmZvcm08L3NwYW4+IDog eW91IG1heSBlbGVjdCB0byByZW5kZXIgc3Bhbm5lZCBldmVudHMgZGlmZmVyZW50bHkgdG8g c3RhbmRhcmQgZXZlbnRzLiBCeSBkZWZhdWx0IHRoZXkgdXNlIHRoZSBzYW1lIDxjb2RlPmZv cm08L2NvZGU+IGJ1dCAmIzgyMTI7IGlmIG5laXRoZXIgdGhhdCBub3IgdGhlIGNvbnRhaW5l ciBhcmUgc3BlY2lmaWVkICYjODIxMjsgd2lsbCBiZSByZW5kZXJlZCBhcyBhIGh5cGVybGlu a2VkIHJpZ2h0LWFycm93IHRvIGluZGljYXRlIGNvbnRpbnVhdGlvbiBvZiB0aGUgcHJldmlv dXMgZGF5JiM4MjE3O3MgZXZlbnQuIE5vdGUgdGhlIGZpcnN0IGRheSBvZiBhIHNwYW5uZWQg c2V0IGlzIDxlbT5ub3Q8L2VtPiBwYXNzZWQgdG8gdGhlIDxjb2RlPnNwYW5mb3JtPC9jb2Rl Pjsgb25seSBjb250aW51YXRpb24gY2VsbHMgYXJlIHBhc3NlZCB0byBpdDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5yZWN1cmZvcm08L3NwYW4+IDogc2ltaWxhcmx5IHRvIDxj b2RlPnNwYW5mb3JtPC9jb2RlPiB5b3UgbWF5IGVsZWN0IHRvIHJlbmRlciByZWN1cnJpbmcg ZXZlbnRzIGRpZmZlcmVudGx5IHRvIHN0YW5kYXJkIGV2ZW50cy4gQnkgZGVmYXVsdCB0aGV5 IHVzZSB0aGUgc2FtZSA8Y29kZT5mb3JtPC9jb2RlPiAob3IgY29udGFpbmVyKSBhcyBzdGFu ZGFyZCBldmVudHMgYW5kIHRoZSBmaXJzdCBldmVudCBvZiBhIHJlY3VycmluZyBzZXQgaXMg bm90IHBhc3NlZCB0byA8Y29kZT5yZWN1cmZvcm08L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmNlbGxmb3JtPC9zcGFuPiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5v bmx5IG9uIGxhcmdlIGNhbGVuZGFyczwvc3Bhbj4pIDogdXNlIHRoaXMgaWYgeW91IHdpc2gg dG8gYnVpbGQgZWFjaCBjZWxsIGVudGlyZWx5IGZyb20gc2NyYXRjaC4gSXQgd29ya3MgZGlm ZmVyZW50bHkgdG8gdGhlIG90aGVyIGZvcm0gYXR0cmlidXRlcyBpbiB0aGF0IGl0IDxlbT5t dXN0PC9lbT4gYmUgYSBmb3JtIGFuZCBjYW5ub3QgdXNlIHRoZSBjb250YWluZXIuIFRoZXJl IGFyZSBhbHNvIHNvbWUgPGEgaHJlZj0iI2NlbGxmb3JtIj5yZXBsYWNlbWVudCB2YXJpYWJs ZXM8L2E+IHlvdSBjYW4gdXNlIHRvIGluc2VydCBkeW5hbWljIHBpZWNlcyBvZiBpbmZvcm1h dGlvbiBpbiB5b3VyIGNlbGxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0ZXBm aWVsZDwvc3Bhbj4gOiB0aGUgSUQgb2YgYSBmaWVsZCB3aXRoaW4gd2hpY2ggYW4gZXZlbnQg bWF5IGJlIHRvbGQgdG8gcmVwZWF0LiBOb3RlIGl0IGlzIHRoZSBmaWVsZCYjODIxNztzIElE IG5vdCBpdHMgbmFtZSwgc28gZm9yIGN1c3RvbSBmaWVsZHMgeW91IG11c3QgdXNlIDxjb2Rl PmN1c3RvbV8xPC9jb2RlPiBvciA8Y29kZT5jdXN0b21fMjwvY29kZT4gZXRjLiBXaXRob3V0 IHRoaXMgYXR0cmlidXRlIChpdHMgZGVmYXVsdCksIG5vIHJlY3VycmluZyBldmVudHMgbWF5 IGJlIGRlZmluZWQuIFNlZSA8YSBocmVmPSIjcmVjdXIiPnJlY3VycmluZyBldmVudHM8L2E+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9taXRmaWVsZDwvc3Bhbj4gOiB0aGUg SUQgb2YgYSBmaWVsZCBmcm9tIHdoaWNoIGV2ZW50IGRhdGVzIG1heSBiZSBvbWl0dGVkIGlm IHJlcXVpcmVkLiBBcyBhYm92ZSwgdGhpcyBpcyB0aGUgSUQgKG5vdCBuYW1lKSBvZiB0aGUg ZmllbGQuIFNwZWNpZnkgYSBsaXN0IG9mIGRhdGVzIG9uIHdoaWNoIHRoaXMgZXZlbnQgaXMg bm90IHJ1bm5pbmcuIFNlZSA8YSBocmVmPSIjY2FuY2VsIj5jYW5jZWxsaW5nIGFuZCBvbWl0 dGluZyBldmVudHM8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNraXBmaWVs ZDwvc3Bhbj4gOiB0aGUgSUQgb2YgYSBmaWVsZCBmcm9tIHdoaWNoIGV2ZW50IGRhdGVzIG1h eSBiZSBjYW5jZWxsZWQgaWYgcmVxdWlyZWQuIEFnYWluLCB0aGlzIGlzIHRoZSBJRCAobm90 IG5hbWUpIG9mIHRoZSBmaWVsZC4gU3BlY2lmeSBhIGxpc3Qgb2YgZGF0ZXMgb24gd2hpY2gg dGhpcyBldmVudCB3aWxsIGJlIGNhbmNlbGxlZC4gU2VlIDxhIGhyZWY9IiNjYW5jZWwiPmNh bmNlbGxpbmcgYW5kIG9taXR0aW5nIGV2ZW50czwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+c2hvd3NraXBwZWQ8L3NwYW4+IDogd2hlbiBhbiBldmVudCBpcyBjYW5jZWxs ZWQgeW91IGNhbiByZW1vdmUgaXQgZnJvbSB0aGUgY2FsZW5kYXIgKDxjb2RlPjA8L2NvZGU+ KSBvciBzaG93IGl0ICg8Y29kZT4xPC9jb2RlPikuIERlZmF1bHQ6IDxjb2RlPjA8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNob3dzcGFubmVkPC9zcGFuPiA6IGV2 ZW50cyB3aXRoIGV4cGlyeSB0aW1lcyBsYXRlciB0aGFuIHRoZWlyIHBvc3RlZCBkYXRlIG1h eSBiZSByZW5kZXJlZCBhY3Jvc3MgbXVsdGlwbGUgY2VsbHMuIElmIHlvdSBkbyBub3Qgd2Fu dCB0aGlzIGZlYXR1cmUgeW91IGNhbiB0dXJuIGl0IG9mZiAoPGNvZGU+MDwvY29kZT4pLiBE ZWZhdWx0OiA8Y29kZT4xPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5o b2xpZGF5czwvc3Bhbj4gOiBsaXN0IG9mIGRhdGVzIHRoYXQgYXJlIGRlY3JlZWQgYXMgPGEg aHJlZj0iI2hvbGlkYXlzIj5ob2xpZGF5czwvYT4uIEV2ZW50cyBjYW4gYmUgc2NoZWR1bGVk IG9uIGhvbGlkYXlzIGJ1dCBtYXkgbm90IHJlY3VyIG9yIHNwYW4gYSBob2xpZGF5IHVubGVz cyB5b3UgZXhwbGljaXRseSBzYXkgc28gdmlhIHRoZSA8Y29kZT5ob2xpZGF5ZmxhZ3M8L2Nv ZGU+IGF0dHJpYnV0ZS4gWW91ciBsaXN0IG9mIGRhdGVzIG1heSBiZSBkZWZlcnJlZCB0byBh IDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+LCBpbiB3aGljaCBjYXNlIGRl ZmluZSB5b3VyIGxpc3QgaW4gYSBuYW1lZCB2YXJpYWJsZSBhbmQgdXNlIDxjb2RlPmhvbGlk YXlzPSZxdW90O3R4cHZhcjpteV92YXJfbmFtZSZxdW90OzwvY29kZT4gdG8gcmVhZCB0aGVt IGludG8gdGhlIHBsdWdpbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ob2xpZGF5 ZmxhZ3M8L3NwYW4+IDogcGVybWl0IGNlcnRhaW4gPGEgaHJlZj0iI25hbWluZyI+ZXZlbnQg ZmxhZ3M8L2E+IHRvIGJlIHNjaGVkdWxlZCBvbiBob2xpZGF5cy4gRGVmYXVsdDogPGNvZGU+ c3RhbmRhcmQ8L2NvZGU+IChpLmUuIHN0YW5kYXJkIG9uZS1vZmYgZXZlbnRzKSBidXQgb3Ro ZXJzIG1heSBiZSBsaXN0ZWQgYXMgd2VsbC4gQ2hvb3NlIGZyb20gPGNvZGU+c3RhbmRhcmQ8 L2NvZGU+LCA8Y29kZT5yZWN1cjwvY29kZT4gb3IgPGNvZGU+bXVsdGk8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbmtwb3N0ZWQ8L3NwYW4+ICg8c3BhbiBjbGFz cz0icmVxdWlyZWQiPm9ubHkgb24gc21hbGwgY2FsZW5kYXJzPC9zcGFuPikgOiBlYWNoIGNl bGwgdGhhdCBjb250YWlucyBhbiA8YSBocmVmPSIjbmFtaW5nIj5ldmVudCBmbGFnPC9hPiBv ZiB0aGUgZ2l2ZW4gdHlwZShzKSB3aWxsIGhhdmUgaXRzIGRheSBudW1iZXIgbGlua2VkIHRv IHRoZSBldmVudCYjODIxNztzIHRydWUgc3RhcnQgZGF0ZSBpbnN0ZWFkIG9mIHRoZSBjZWxs JiM4MjE3O3MgZGF0ZS4gVGh1cywgaWYgeW91IGhhdmUgYSB3ZWVrbHkgZXZlbnQgdGhhdCBz dGFydHMgb24gdGhlIDIwdGggRGVjZW1iZXIgMjAwOCwgc2V0dGluZyA8Y29kZT5saW5rcG9z dGVkPSZxdW90O3JlY3VyJnF1b3Q7PC9jb2RlPiB3aWxsIGNhdXNlIHRoZSBsaW5rIHRvIHNo b3cgPGNvZGU+ZGF0ZT0yMDA4LTEyLTIwPC9jb2RlPiBlYWNoIHdlZWsuIFRoaXMgYWxsb3dz IHlvdSB0byBhbHdheXMgbGluayB0byBhIHZhbGlkIGFydGljbGUvZXZlbnQuIFdpdGhvdXQg bGlua3Bvc3RlZCwgdGhlIGRhdGVzIHdvdWxkIGJlIDIwMDgtMTItMjAsIDIwMDgtMTItMjcs IDIwMDktMDEtMDMsIGFuZCBzbyBvbi4gRGVmYXVsdDogPGNvZGU+cmVjdXIsIG11bHRpLCBt dWx0aXByZXYsIG11bHRpbGFzdDwvY29kZT4gKGkuZS4gYW55IHJlY3VycmluZyBvciBzcGFu bmVkIGV2ZW50KS4gTm90ZSB0aGF0IGlmIG1vcmUgdGhhbiBvbmUgZXZlbnQgb2NjdXJzIGlu IHRoZSBjZWxsLCB0aGUgbGluayB3aWxsIG9ubHkgYmUgdG8gdGhlIGZpcnN0IGV2ZW50IHRo ZSBwbHVnaW4gZmluZHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bWFpbnRhaW48 L3NwYW4+IDoga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gd2hlbiBuYXZpZ2F0aW5nIHRoZSBjYWxlbmRhciB1 c2luZyB0aGUgbmV4dC9wcmV2IG9yIG1vbnRoL3llYXIgc2VsZWN0IGxpc3RzLiBJdGVtcyB0 aGF0IHlvdSB3YW50IHRvIHByZXNlcnZlIHNob3VsZCBiZSBjb21tYS1zZXBhcmF0ZWQgaGVy ZS4gQ2hvb3NlIGZyb20gPGNvZGU+Y2FsaWQ8L2NvZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2Rl PiwgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5h cnRpY2xlPC9jb2RlPiwgPGNvZGU+cGc8L2NvZGU+IG9yIHlvdXIgb3duIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlLiBEZWZhdWx0OiA8Y29kZT5jYWxpZDwvY29k ZT4uPGRpdiBjbGFzcz0iYnJlYWsiPlVzZSA8Y29kZT5tYWludGFpbj0mcXVvdDtzZWN0aW9u LCBhcnRpY2xlLCBjYWxpZCZxdW90OzwvY29kZT4gaWYgeW91IGhhdmUgYW4gaW5kaXZpZHVh bCBhcnRpY2xlIHBhZ2Ugd2l0aCBhIGNhbGVuZGFyIGluIGEgc2lkZWJhciwgc28gdGhlIGN1 cnJlbnRseSB2aWV3ZWQgYXJ0aWNsZSB3aWxsIHJlbWFpbiBpbiB2aWV3IHdoZW4gY2hhbmdp bmcgZGF0ZS4gSWYgeW91IHdpc2ggdG8gbWFpbnRhaW4gc3RhdGUgeW91cnNlbGYgb3IgZG8g c29tZXRoaW5nIGV4b3RpYywgZW1wdHkgdGhpcyBhdHRyaWJ1dGUgZmlyc3QgdG8gYXZvaWQg d2VpcmRuZXNzPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN0YXRpYzwv c3Bhbj4gOiBmb3JjZSB0aGUgY2FsZW5kYXIgdG8gYmUgZml4ZWQgdG8gb25lIG1vbnRoL3ll YXIgKGkuZS4gbm8gbmF2aWdhdGlvbikuIE1vbnRoIGFuZCB5ZWFyIGRlY2lkZWQgYnkgYXR0 cmlidXRlcyA8Y29kZT5tb250aDwvY29kZT4gYW5kIDxjb2RlPnllYXI8L2NvZGU+IG9yICYj ODIxMjsgaWYgb21pdHRlZCAmIzgyMTI7IHRoZSBjdXJyZW50IGRhdGUgd2lsbCBiZSB1c2Vk PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdtdDwvc3Bhbj4gOiByZXR1cm4gZWl0 aGVyIGxvY2FsIHRpbWUgKDxjb2RlPjA8L2NvZGU+KSBhY2NvcmRpbmcgdG8gdGhlIHRpbWUg em9uZSBzZXQgaW4gQmFzaWMgUHJlZnMsIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3Nw YW4+IHRpbWUgKDxjb2RlPjE8L2NvZGU+KS4gRGVmYXVsdDogPGNvZGU+MDwvY29kZT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFuZzwvc3Bhbj4gOiBhbiA8c3BhbiBjbGFz cz0iY2FwcyI+SVNPPC9zcGFuPiBsYW5ndWFnZSBjb2RlIHRoYXQgZm9ybWF0cyB0aW1lIHN0 cmluZ3Mgc3VpdGFibGUgZm9yIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgKG9yIGxvY2FsZSkg YXMgZGVmaW5lZCBieSA8YSBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lT T182MzkiPjxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IDYzOTwvYT4uIERlZmF1bHQ6 IHVuc2V0IChpLmUuIHVzZSB0aGUgdmFsdWUgYXMgc3RhdGVkIGluIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IHByZWZzKTwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0iYXR0cyAi IGlkPSJhdHRzdHlsZXMiPlN0eWxlIGF0dHJpYnV0ZXM8L2gzPgoKCTxwPk9uY2UgeW91IGhh dmUgdHdlYWtlZCB5b3VyIGJhc2ljIGNhbGVuZGFyIGFzIGRlc2NyaWJlZCBhYm92ZSB5b3Ug Y2FuIG1vdmUgb250byB0aGUgc3R5bGUgYXR0cmlidXRlcyBzbyB5b3UgbWF5IGdldCBhdCBl YWNoIGZhY2V0IG9mIHRoZSBjYWxlbmRhciBhbmQgdmlzdWFsbHkgYWx0ZXIgaXQ6PC9wPgoK CTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzbGV2ZWxzPC9zcGFuPiA6IGNs YXNzZXMgY2FuIGJlIGFwcGxpZWQgYXQgdGhlIGV2ZW50IGxldmVsIChzbyB5b3UgY2FuIGNv bG91ciBlYWNoIGV2ZW50IGluIGEgY2VsbCksIG9yIHRoZSBjZWxsIGxldmVsIChzbyB5b3Ug Y2FuIGNvbG91ciB0aGUgd2hvbGUgZGF5KSwgb3IgYm90aC4gWW91IG1heSBhbHNvIHByb21v dGUgKGkuZS4gY29weSkgYWxsIGV2ZW50LWxldmVsIGNsYXNzZXMgdGhhdCBvY2N1ciBpbiBh IGRheSB0byB0aGUgY2VsbCBsZXZlbCBzbyB5b3UgY2FuIGNvbG91ciB0aGUgY2VsbCBiYXNl ZCBvbiB0aGUgZXZlbnRzIHRoYXQgaXQgY29udGFpbnMuIENvbW1hLXNlcGFyYXRlIGFueSBv ZiA8Y29kZT5ldmVudDwvY29kZT4gKGZvciByZW5kZXJpbmcgZXZlbnQtbGV2ZWwgc3R5bGVz KSwgPGNvZGU+Y2VsbDwvY29kZT4gKGZvciByZW5kZXJpbmcgc3R5bGVzIGF0IHRoZSBjZWxs IGxldmVsKSwgb3IgPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IChmb3IgY29weWluZyB1bmlxdWUg ZXZlbnQgY2xhc3NlcyB0byB0aGUgY2VsbCkuIE5vdGUgeW91IHdpbGwgbm90IG5lZWQgdG8g dXNlIDxjb2RlPmNlbGw8L2NvZGU+IGFuZCA8Y29kZT5jZWxscGx1czwvY29kZT4gdG9nZXRo ZXIgYmVjYXVzZSB0aGUgbGF0dGVyIG92ZXJyaWRlcyB0aGUgZm9ybWVyLCBidXQgdGhlcmUm IzgyMTc7cyBubyBoYXJtIGlmIHlvdSBkby4gRGVmYXVsdDogPGNvZGU+Y2VsbCwgZXZlbnQ8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzcHJlZml4ZXM8L3Nw YW4+IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB1cCB0byB0d28gcHJlZml4ZXMgdG8g YXBwbHkgdG8geW91ciBjbGFzcyBuYW1lcy4gVGhlIGZpcnN0IHByZWZpeCBpcyBhcHBsaWVk IHRvIGNlbGwtbGV2ZWwgY2xhc3NlcyAoYW5kIGZsYWdzKSBhbmQgdGhlIHNlY29uZCBwcmVm aXggaXMgYXBwbGllZCB0byBldmVudCBjbGFzc2VzIChzZWUgPGNvZGU+ZXZlbnRjbGFzc2Vz PC9jb2RlPikgc28geW91IG1heSBkaXN0aW5ndWlzaCB0aGVtIGlmIHlvdSB3aXNoLiBJZiB5 b3Ugb25seSBzcGVjaWZ5IG9uZSBwcmVmaXggaXQgd2lsbCBiZSB1c2VkIGZvciBib3RoIHR5 cGVzIG9mIGNsYXNzLiBJZiB5b3UgdXNlIDxjb2RlPmNsYXNzcHJlZml4ZXM9JnF1b3Q7JnF1 b3Q7PC9jb2RlPiB0aGVuIG5vIHByZWZpeGVzIHdpbGwgYmUgdXNlZCBhdCBhbGwuIERlZmF1 bHQ6IDxjb2RlPnNtZF9jYWxfLCBzbWRfY2FsX2V2XzwvY29kZT48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xh c3MgcHJlZml4KSB0byBhcHBseSB0byB0aGUgY2FsZW5kYXIgdGFibGUgaXRzZWxmLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5yb3djbGFzczwvc3Bh bj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVmaXgpIHRvIGFwcGx5IHRvIGVh Y2ggdGFibGUgcm93LiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5jZWxsY2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJl Zml4KSB0byBhcHBseSB0byBlYWNoIHRhYmxlIGNlbGwuIERlZmF1bHQ6IHVuc2V0PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVtcHR5Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNz IG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4KSB0byBhcHBseSB0byBhbnkgY2VsbHMgdGhhdCBk b24mIzgyMTc7dCBjb250YWluIGEgZGF5IG51bWJlciAoaS5lLiB0aGUgYmxhbmsgY2VsbHMg YXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgYSBtb250aCkuIERlZmF1bHQ6IDxjb2RlPmVtcHR5 PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pc293ZWVrY2xhc3M8L3Nw YW4+IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4KSB0byBhcHBseSB0byBl YWNoIGNlbGwgY29udGFpbmluZyBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3 ZWVrIChpZiA8Y29kZT5pc293ZWVrczwvY29kZT4gaXMgdXNlZCkuIERlZmF1bHQ6IDxjb2Rl PndlZWs8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmNsYXNzPC9z cGFuPiA6IHRoZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8g dGhlIHByZXYvbmV4dCBtb250aCBuYXZpZ2F0aW9uIGFycm93cy4gSWYgYSBjb21tYS1zZXBh cmF0ZWQgbGlzdCBpcyB1c2VkLCB0aGUgZmlyc3QgaXRlbSB3aWxsIGJlIHRoZSBuYW1lIG9m IHRoZSBjbGFzcyBvbiB0aGUgbGluayB0byB0aGUgcHJldmlvdXMgbW9udGgsIHRoZSAybmQg aXRlbSB0byB0aGUgbmV4dCBtb250aC4gSWYgYSBzaW5nbGUgdmFsdWUgaXMgdXNlZCwgYm90 aCBjbGFzcyBuYW1lcyB3aWxsIGJlIHRoZSBzYW1lLiBEZWZhdWx0OiA8Y29kZT5uYXZwcmV2 LCBuYXZuZXh0PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5teWNsYXNz PC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkg dG8gYm90aCB0aGUgbW9udGggYW5kIHllYXIgaW4gdGhlIGNhbGVuZGFyIGhlYWRlciAoZWl0 aGVyIHRoZSA8Y29kZT4mbHQ7c3BhbiZndDs8L2NvZGU+IG9yIDxjb2RlPiZsdDtzZWxlY3Qm Z3Q7PC9jb2RlPiB0YWdzKS4gSWYgPGNvZGU+bXl3cmFwdGFnPC9jb2RlPiBpcyB1c2VkLCB0 aGUgY2xhc3MgaXMgYXBwbGllZCB0byB0aGUgd3JhcHRhZyBpbnN0ZWFkLiBEZWZhdWx0OiB1 bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ldmVudGNsYXNzZXM8L3NwYW4+ IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpdGVtcyB0byBhZGQgYXMgY2xhc3NlcyB0 byBlYWNoIGV2ZW50IChlYWNoIHByZWZpeGVkIHdpdGggdGhlIGV2ZW50IHByZWZpeCkuIEl0 IGRlZmF1bHRzIHRvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiBzbyBpdCBhZGRzIHRoZSBDYXRl Z29yeTEgYW5kIDIgbmFtZXMgYXMgY2xhc3MgaWRlbnRpZmllcnMgdG8gZWFjaCBldmVudC4g VGh1cywgb3V0IG9mIHRoZSBib3gsIHlvdSBjYW4gc3R5bGUgZXZlbnRzIGJ5IGNhdGVnb3J5 LiA8ZGl2IGNsYXNzPSJicmVhayI+SWYgeW91IHdpc2ggdG8gZXh0ZW5kIG9yIGFsdGVyIHRo aXMsIGp1c3QgZ2l2ZSBhIGxpc3Qgb2YgZmllbGRzIHRoYXQgeW91IHdhbnQgdG8gYXBwbHkg dG8gdGhlIGV2ZW50IChlLmcuIDxjb2RlPmV2ZW50Y2xhc3Nlcz0mcXVvdDtJRCwgQXV0aG9y SUQsIGN1c3RvbV81JnF1b3Q7PC9jb2RlPiB3b3VsZCBhZGQgdGhyZWUgY2xhc3NlcyB0byBl YWNoIGV2ZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGV2ZW50JiM4MjE3O3MgSUQsIGl0cyBh dXRob3IgKGxvZ2luKSBuYW1lIGFuZCB0aGUgY29udGVudHMgb2YgY3VzdG9tXzUpLiBPZiBj b3Vyc2UsIGlmIHlvdSB1c2UgPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IG1vZGUgdGhlc2UgY2xh c3NlcyB3aWxsIGJlIGNvcGllZCB0byB0aGUgY2VsbCBsZXZlbC4gPC9kaXY+PGRpdiBjbGFz cz0iYnJlYWsiPlNvbWUgc3BlY2lhbCBuYW1lcyBleGlzdDogPGNvZGU+Y2F0ZWdvcnk8L2Nv ZGU+IHJldHVybnMgYm90aCBDYXRlZ29yeTEgYW5kIENhdGVnb3J5MiAoaWYgc2V0KTsgPGNv ZGU+Z2NhdDwvY29kZT4gd2lsbCByZXR1cm4gdGhlIGN1cnJlbnQgJiM4MjE2O2dsb2JhbCYj ODIxNzsgY2F0ZWdvcnkgKGlmIGN1cnJlbnRseSBmaWx0ZXJpbmcgYnkgY2F0ZWdvcnkpOyA8 Y29kZT5hdXRob3I8L2NvZGU+IHJldHVybnMgdGhlIGF1dGhvciBJRCAoaWYgY3VycmVudGx5 IGZpbHRlcmluZyBieSBhdXRob3IpOyA8Y29kZT5zZWN0aW9uPC9jb2RlPiBnaXZlcyB0aGUg Y3VycmVudCBzZWN0aW9uPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2 ZW50d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcsIHdpdGhvdXQgaXRzIGJyYWNr ZXRzLCB0byB3cmFwIGVhY2ggZXZlbnQgd2l0aC4gRGVmYXVsdDogPGNvZGU+c3BhbjwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bXl3cmFwdGFnPC9zcGFuPiA6IHRo ZSAoWClIVE1MIHRhZywgd2l0aG91dCBpdHMgYnJhY2tldHMsIHRvIHdyYXAgYXJvdW5kIDxl bT5ib3RoPC9lbT4gbW9udGggKyB5ZWFyIGRyb3Bkb3duIHNlbGVjdCBsaXN0cyBhbmQgb3B0 aW9uYWwgc3VibWl0IGJ1dHRvbiAoaXQgd3JhcHMgdGhlIGxvdCwgY29tYmluZWQpLiBEZWZh dWx0OiB1bnNldDwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iY2VsbGZvcm0iPlVzaW5nIGEgPGNv ZGU+Y2VsbGZvcm08L2NvZGU+IHdpdGggcmVwbGFjZW1lbnQgdmFyaWFibGVzPC9oMj4KCgk8 cD5JZiB5b3UgZG9uJiM4MjE3O3QgbGlrZSB0aGUgbGF5b3V0IG9mIHRoZSBkZWZhdWx0IGNl bGwsIHlvdSBjYW4gZG8gaXQgeW91cnNlbGYgd2l0aCB0aGUgPGNvZGU+Y2VsbGZvcm08L2Nv ZGU+IGF0dHJpYnV0ZS48L3A+CgoJPHA+VG8gYnVpbGQgeW91ciBvd24gY2VsbHMgeW91IG9m dGVuIG5lZWQgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgKHByZS1wcm9jZXNzZWQpIGV2ZW50 cywgdGhlIGRheSwgb3IgbW9udGggZXRjLiBTbyAmIzgyMTI7IGluIGFkZGl0aW9uIHRvIHlv dXIgdXN1YWwgbWFya3VwIGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdz ICYjODIxMjsgeW91IG1heSBhbHNvIGluc2VydCBhbnkgb2YgdGhlIGZvbGxvd2luZyAmIzgy MTY7cmVwbGFjZW1lbnRzJiM4MjE3OyB0byBoYXZlIHRoZSByZWxldmFudCB2YWx1ZSBpbnNl cnRlZCBhdCB0aGF0IHBsYWNlIGluIHRoZSBjZWxsOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2Rl PntkYXl9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgZGF5IChhcyBhIG51bWJlciBm cm9tIDEgdG8gMzEpPC9saT4KCQk8bGk+PGNvZGU+e3dlZWtkYXl9PC9jb2RlPiA6IGluc2Vy dHMgdGhlIGN1cnJlbnQgd2Vla2RheSAoYXMgYSB3b3JkIGluIHRoZSBsb2NhbCBsYW5ndWFn ZSwgb3IgZnJvbSB5b3VyIDxjb2RlPmRheWZvcm1hdDwvY29kZT4gbGlzdCk8L2xpPgoJCTxs aT48Y29kZT57d2Vla308L2NvZGU+IDogaW5zZXJ0cyB0aGUgY3VycmVudCA8c3BhbiBjbGFz cz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIG51bWJlcjwvbGk+CgkJPGxpPjxjb2RlPnttb250 aH08L2NvZGU+IDogaW5zZXJ0cyB0aGUgY3VycmVudCBtb250aCAoYXMgYSBudW1iZXIgZnJv bSAxIHRvIDEyKTwvbGk+CgkJPGxpPjxjb2RlPnttb250aG5hbWV9PC9jb2RlPiA6IGluc2Vy dHMgdGhlIG1vbnRoIG5hbWUgaW4gdGhlIGxvY2FsIGxhbmd1YWdlPC9saT4KCQk8bGk+PGNv ZGU+e3llYXJ9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgeWVhciAoNCBkaWdpdHMp PC9saT4KCQk8bGk+PGNvZGU+e3Nob3J0eWVhcn08L2NvZGU+IDogaW5zZXJ0cyB0aGUgY3Vy cmVudCB5ZWFyICgyIGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57ZXZlbnRzfTwvY29kZT4g OiBpbnNlcnRzIGFsbCBldmVudHMgKGluY2x1ZGluZyB0aGVpciBwcm9jZXNzZWQgZm9ybS9j b250YWluZXIgaW5mbyk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9InNpemVkaWZmIj5EaWZmZXJl bmNlcyBiZXR3ZWVuIGxhcmdlIGFuZCBzbWFsbCBjYWxlbmRhcnM8L2gyPgoKCTxwPk5vdCBh IGxvdCEgQnV0IHRoZXJlIGFyZSBzb21lIHN1YnRsZXRpZXM6PC9wPgoKCTx1bD4KCQk8bGk+ PGNvZGU+Y2VsbGZvcm08L2NvZGU+IGNhbm5vdCBiZSB1c2VkIG9uIGEgc21hbGwgY2FsZW5k YXI8L2xpPgoJCTxsaT5CeSBkZWZhdWx0LCBubyBldmVudHMgYXJlIHBsYWNlZCBpbiB0aGUg c21hbGwgY2FsZW5kYXIuIFlvdSBjYW4gYWRkIHRoZW0geW91cnNlbGYgaWYgeW91IHdpc2gg YmVjYXVzZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmb3JtL2NvbnRhaW5lciBtZWNoYW5pc20g YXMgdGhlIGxhcmdlIGNhbGVuZGFyPC9saT4KCQk8bGk+VGhlIG9ubHkgdGhpbmcgcmVuZGVy ZWQgaW4gYSBzbWFsbCBjYWxlbmRhciBjZWxsIGlzIHRoZSBoeXBlcmxpbmtlZCBkYXRlIGFu ZCBhbnkgPGEgaHJlZj0iI25hbWluZyI+ZmxhZ3M8L2E+IHNvIHlvdSBjYW4gc3R5bGUgdGhl IGJveGVzPC9saT4KCQk8bGk+PGNvZGU+Y2xhc3NsZXZlbHM8L2NvZGU+IGFyZSBpZ25vcmVk OiBldmVyeXRoaW5nIGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYXQgdGhlIGNlbGwgbGV2 ZWwgKGkuZS4gPGNvZGU+Y2VsbHBsdXM8L2NvZGU+IGlzIHNldCk8L2xpPgoJCTxsaT48Y29k ZT5ldmVudGNsYXNzZXM8L2NvZGU+IGFyZSBzdGlsbCBob25vdXJlZCBpZiB5b3Ugd2lzaCB0 byB1c2UgYSA8Y29kZT5mb3JtPC9jb2RlPiB0byBwcm9jZXNzIHRoZW0geW91cnNlbGY8L2xp PgoJCTxsaT5UaGUgc21hbGwgY2FsZW5kYXIgb3V0cHV0cyB5ZWFyLW1vbnRoLWRheS10aXRs ZSBvciBtZXNzeSBwZXJtbGlua3Mgb25seTwvbGk+Cgk8L3VsPgoKCTxwPkFzaWRlIGZyb20g dGhhdCB0aGV5JiM4MjE3O3JlIHByZXR0eSBtdWNoIGlkZW50aWNhbC48L3A+CgoJPGgyIGlk PSJpZmNhbCI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9pZl9jYWwmZ3Q7PC9jb2RlPjwvaDI+ CgoJPHA+VGhpcyBjb25kaXRpb25hbCB0YWcgYWxsb3dzIHlvdSAmIzgyMTI7IGluc2lkZSB5 b3VyIGNvbnRhaW5lci9mb3JtcyAgJiM4MjEyOyB0byB0ZXN0IGNlcnRhaW4gY29uZGl0aW9u cyBvZiB0aGUgY3VycmVudCBldmVudC9jZWxsLiBGb3IgZW5oYW5jZWQgY29uZGl0aW9uYWwg Y2hlY2tpbmcgKHBlcmhhcHMgaW4gY29uanVuY3Rpb24gd2l0aCA8YSBocmVmPSIjY2Fsbm93 Ij5zbWRfY2FsX25vdzwvYT4pLCBjb25zaWRlciB0aGUgc21kX2lmIHBsdWdpbi48L3A+CgoJ PGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNpZmNhbCI+QXR0cmlidXRlczwvaDM+CgoJPHVs PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZmxhZzwvc3Bhbj4gOiB0aGUgY2VsbCBvciBl dmVudCBmbGFnKHMpIHlvdSB3YW50IHRvIHRlc3QsIGVhY2ggc2VwYXJhdGVkIGJ5IGEgY29t bWEuIENob29zZSBmcm9tOiA8Y29kZT5ldmVudDwvY29kZT4sIDxjb2RlPnN0YW5kYXJkPC9j b2RlPiwgPGNvZGU+cmVjdXJmaXJzdDwvY29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiwgPGNv ZGU+bXVsdGlmaXJzdDwvY29kZT4sIDxjb2RlPm11bHRpbGFzdDwvY29kZT4sIDxjb2RlPm11 bHRpPC9jb2RlPiwgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiwgPGNvZGU+Y2FuY2VsPC9jb2Rl PiwgPGNvZGU+b21pdDwvY29kZT4sIDxjb2RlPmhvbHM8L2NvZGU+LCA8Y29kZT50b2RheTwv Y29kZT4gb3IgdGhlIHNwZWNpYWwgZmxhZyA8Y29kZT5TTURfQU5ZPC9jb2RlPiB3aGljaCB3 aWxsIHRyaWdnZXIgaWYgdGhlIGNlbGwgb3IgZXZlbnQgY29udGFpbnMgYW55IG9mIHRoZSBh Ym92ZS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2Fs aWQ8L3NwYW4+IDogdGhlIGNhbGVuZGFyIElEIHlvdSB3aXNoIHRvIGNoZWNrIGZvciBhIG1h dGNoLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj55ZWFy PC9zcGFuPiA6IHRoZSB5ZWFyIHRoZSBjdXJyZW50IGNlbGwgZmFsbHMgaW4uIERlZmF1bHQ6 IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1vbnRoPC9zcGFuPiA6IHRo ZSBtb250aCBudW1iZXIgKDEtMTIpIHRoYXQgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4g RGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d2Vlazwvc3Bh bj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBudW1iZXIgdGhh dCB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5kYXk8L3NwYW4+IDogdGhlIGRheSBudW1iZXIgdGhlIGN1 cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+bG9naWM8L3NwYW4+IDogd2hldGhlciB5b3Ugd2FudCB0byBjaGVjayBp ZiA8ZW0+YWxsPC9lbT4gdGVzdHMgeW91IG5vbWluYXRlZCBhcmUgdHJ1ZSBpbiB0aGUgY3Vy cmVudCBjZWxsICg8Y29kZT5sb2dpYz0mcXVvdDthbmQmcXVvdDs8L2NvZGU+KSBvciA8ZW0+ YXQgbGVhc3Qgb25lPC9lbT4gb2YgdGhlIHRlc3RzIGlzIHRydWUgKDxjb2RlPmxvZ2ljPSZx dW90O29yJnF1b3Q7PC9jb2RlPikuIERlZmF1bHQ6IDxjb2RlPm9yPC9jb2RlPjwvbGk+Cgk8 L3VsPgoKCTxwPllvdSBtYXkgY29tYmluZSB0aGUgdGVzdHMgc28sIGZvciBleGFtcGxlLCB5 b3UgY2FuIGNoZWNrIGlmIHRoZSBjZWxsIGlzIG9mIGEgY2VydGFpbiB0eXBlIDxzcGFuIGNs YXNzPSJjYXBzIj5BTkQ8L3NwYW4+IGlzIGxhdGVyIHRoYW4gdGhlIDE1dGggb2YgdGhlIG1v bnRoLjwvcD4KCgk8cD5SdWRpbWVudGFyeSBjb21wYXJhdG9ycyBjYW4gYmUgYXBwbGllZCB0 byB0aGUgPGNvZGU+eWVhcjwvY29kZT4sIDxjb2RlPm1vbnRoPC9jb2RlPiBhbmQgPGNvZGU+ ZGF5PC9jb2RlPiBhdHRyaWJ1dGVzLiBOb3JtYWxseSB0aGUgdmFsdWUgeW91IHN1cHBseSB3 aWxsIGJlIHRlc3RlZCBmb3IgYW4gZXhhY3QgbWF0Y2ggYnV0IGlmIHlvdSBwcmVmaXggaXQg d2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIgc2VxdWVuY2VzIHRoZW4gdGhl IGJlaGF2aW91ciBjaGFuZ2VzOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPiZndDs8L2NvZGU+ IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+Z3JlYXRlciB0aGFuPC9lbT4gdGhlIGdpdmVu IHZhbHVlIChlLmcuIDxjb2RlPnllYXI9JnF1b3Q7Jmd0OzIwMDgmcXVvdDs8L2NvZGU+KTwv bGk+CgkJPGxpPjxjb2RlPiZndDs9PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVt PmdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bzwvZW0+IHRoZSBnaXZlbiB2YWx1ZSAoZS5nLiA8 Y29kZT5tb250aD0mcXVvdDsmZ3Q7PTcmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxjb2Rl PiZsdDs8L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bGVzcyB0aGFuPC9lbT4g dGhlIGdpdmVuIHZhbHVlIChlLmcuIDxjb2RlPmRheT0mcXVvdDsmbHQ7MTUmcXVvdDs8L2Nv ZGU+KTwvbGk+CgkJPGxpPjxjb2RlPiZsdDs9PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUg aXMgPGVtPmxlc3MgdGhhbiBvciBlcXVhbCB0bzwvZW0+IHRoZSBnaXZlbiB2YWx1ZSAoZS5n LiA8Y29kZT5tb250aD0mcXVvdDsmbHQ7PTUmcXVvdDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxj b2RlPiE8L2NvZGU+IHRlc3RzIGlmIGF0dHJpYnV0ZSBpcyA8ZW0+bm90PC9lbT4gdGhlIGdp dmVuIHZhbHVlIChlLmcuIDxjb2RlPmRheT0mcXVvdDshMTUmcXVvdDs8L2NvZGU+KTwvbGk+ Cgk8L3VsPgoKCTxoMiBpZD0iY2FsaW5mbyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxf aW5mbyAvJmd0OzwvY29kZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3Jt cywgdXNlIHRoaXMgdGFnIHRvIG91dHB1dCBjZXJ0YWluIGluZm9ybWF0aW9uIGFib3V0IHRo ZSBjdXJyZW50IGV2ZW50LjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c2NhbGlu Zm8iPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnR5 cGU8L3NwYW4+IDogdGhlIHR5cGUocykgb2YgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gcmV0 dXJuLCBlYWNoIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBDaG9vc2UgZnJvbTogPGNvZGU+Zmxh ZzwvY29kZT4sIDxjb2RlPnllYXI8L2NvZGU+LCA8Y29kZT5tb250aDwvY29kZT4sIDxjb2Rl PndlZWs8L2NvZGU+LCA8Y29kZT5kYXk8L2NvZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwg PGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5jYWxp ZDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+am9pbjwvc3Bhbj4gOiB0 aGUgY2hhcmFjdGVycyB5b3Ugd2FudCB0byB1c2UgdG8gc2VwYXJhdGUgZWFjaCBpdGVtIHlv dSBhc2tlZCBmb3IuIE5vdGUgaXQgaXMgdGhlIGNoYXJhY3RlcnMgPGVtPmJldHdlZW48L2Vt PiBlYWNoIGl0ZW0gc28gdGhlIHZlcnkgZmlyc3QgZW50cnkgd2lsbCA8c3Ryb25nPm5vdDwv c3Ryb25nPiBoYXZlIHRoZSA8Y29kZT5qb2luPC9jb2RlPiBpbiBmcm9udCBvZiBpdCAoc2Vl IDxjb2RlPmpvaW5fcHJlZml4PC9jb2RlPikuIERlZmF1bHQ6IGEgc3BhY2U8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+am9pbl9wcmVmaXg8L3NwYW4+IDogdGhlIHN0cmluZyB5 b3Ugd2FudCB0byBwdXQgaW4gZnJvbnQgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHJldHVy bmVkIGxpc3QuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIGF0dHJpYnV0ZSBpdCBkZWZh dWx0cyB0byA8Y29kZT5TTURfQVVUTzwvY29kZT4gd2hpY2ggdHJpZXMgdG8gYmUgY2xldmVy OgoJPHVsPgoJCTxsaT5pZiB1c2luZyA8Y29kZT50eXBlPSZxdW90O2ZsYWcmcXVvdDs8L2Nv ZGU+IHRoZSBqb2luX3ByZWZpeCBpcyBzZXQgdG8gdGhlIHNhbWUgYXMgPGNvZGU+am9pbjwv Y29kZT4uIFRodXMgd2l0aCA8Y29kZT5qb2luPSZxdW90OyBjYWxfJnF1b3Q7PC9jb2RlPiB5 b3UgbWlnaHQgZ2V0IDxjb2RlPiBjYWxfbXVsdGkgY2FsX3RvZGF5IGNhbF9ob2xzPC9jb2Rl PjwvbGk+CgkJPGxpPmlmIHVzaW5nIDxjb2RlPmh0bWw9JnF1b3Q7MSZxdW90OzwvY29kZT4g dGhlIGpvaW5fcHJlZml4IGlzIHNldCB0byBhIHF1ZXN0aW9uIG1hcmssIHRodXM6IDxjb2Rl PnR5cGU9JnF1b3Q7bW9udGgseWVhcixjYXRlZ29yeSZxdW90OyBodG1sPSZxdW90OzEmcXVv dDs8L2NvZGU+IG1pZ2h0IHJlbmRlciA8Y29kZT4/bT0xMiZhbXA7eT0yMDA4JmFtcDtjPWdp Z3M8L2NvZGU+LCB3aGljaCBjYW4gYmUgcHV0IHN0cmFpZ2h0IG9uIHRoZSBlbmQgb2YgYW4g YW5jaG9yPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmh0bWw8 L3NwYW4+IDogSWYgc2V0IHRvIDxjb2RlPjE8L2NvZGU+LCByZXR1cm5zIG5vdCBvbmx5IHRo ZSB2YWx1ZXMgeW91IHNwZWNpZmllZCBidXQgdGhlaXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gdmFyaWFibGUgbmFtZXMgYXMgd2VsbCwgZ2l2aW5nIHlvdSB0aGUgZW50aXJl IHN0cmluZyBhcyBhIHZhbGlkIHNldCBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSBhZGRlZCB0byBhbiBhbmNob3IuIEl0IG92ZXJy aWRlcyB0aGUgPGNvZGU+am9pbjwvY29kZT4gYXR0cmlidXRlIGFuZCBzZXRzIGl0IHRvIGFu IGFtcGVyc2FuZC4gRGVmYXVsdDogPGNvZGU+MDwvY29kZT4uPGRpdiBjbGFzcz0iYnJlYWsi PlRoaXMgYXR0cmlidXRlIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIGJ1aWxkaW5nIHlvdXIgb3du IGNvbnRlbnQgaW5zaWRlIGVhY2ggY2VsbCB2aWEgYSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQg d2lzaCB0byBtYWludGFpbiB0aGUgY3VycmVudCBzZWFyY2ggZW52aXJvbm1lbnQuIElmIHlv dSBhbGxvdyBwZW9wbGUgdG8gZmlsdGVyIGV2ZW50cyBieSBjYXRlZ29yeSBvciBhdXRob3Ig eW91IGNhbiB1c2UgdGhpcyB0byByZXR1cm4gdGhlICYjODIxNjtjdXJyZW50JiM4MjE3OyBz dGF0ZSBvZiBjZXJ0YWluIHZhcmlhYmxlcyBzbyB5b3UgY2FuIHBhc3MgdGhlbSB0byB0aGUg bmV4dCBwYWdlIGFuZCBtYWludGFpbiBzdGF0ZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5lc2NhcGU8L3NwYW4+IDogZXNjYXBlIDxzcGFuIGNsYXNzPSJjYXBzIj5I VE1MPC9zcGFuPiBlbnRpdGllcyBzdWNoIGFzIDxjb2RlPiZsdDs8L2NvZGU+LCA8Y29kZT4m Z3Q7PC9jb2RlPiBhbmQgPGNvZGU+JmFtcDs8L2NvZGU+IGZvciBwYWdlIHZhbGlkYXRpb24g cHVycG9zZXMuIFNldCB0byA8Y29kZT5lc2NhcGU9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0 dXJuIGl0IG9mZi4gRGVmYXVsdDogPGNvZGU+aHRtbDwvY29kZT48L2xpPgoJPC91bD4KCgk8 aDIgaWQ9ImNhbGNsYXNzIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9jbGFzcyAvJmd0 OzwvY29kZT48L2gyPgoKCTxwPkluc2lkZSB5b3VyIGNvbnRhaW5lci9mb3JtcywgdXNlIHRo aXMgdGFnIHRvIGFkZCBhIGxpc3Qgb2YgY2xhc3NlcyB0byB0aGUgY3VycmVudCBjZWxsL2V2 ZW50LiBWZXJ5IHVzZWZ1bCBpZiBidWlsZGluZyBjZWxscyB5b3Vyc2VsZiBiZWNhdXNlIGlu c2lkZSBhIDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWw8L2E+IHRhZyB5b3UgY291bGQg YWRkIHBhcnRpY3VsYXIgY2xhc3MgbmFtZXMgYmFzZWQgb24gc29tZSB2YWx1ZSBpbiBhIGNl bGwuPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRzY2FsY2xhc3MiPkF0dHJpYnV0 ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hbWU8L3NwYW4+IDog YSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjbGFzc25hbWVzIHRvIGFkZCB0byB0aGUgY3Vy cmVudCBjZWxsL2V2ZW50LiBUaGVzZSBhcmUgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gc3ViamVj dCB0byBhbnkgPGNvZGU+Y2xhc3NwcmVmaXhlczwvY29kZT4gc28gd2lsbCBhbHdheXMgYXBw ZWFyIGV4YWN0bHkgYXMgeW91IHdyaXRlIHRoZW08L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNh bG5vdyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPjwvaDI+ CgoJPHA+UmV0dXJuIHRoZSBjdXJyZW50IGRhdGUvdGltZSwgZm9ybWF0dGVkIGhvd2V2ZXIg eW91IHBsZWFzZS4gVXNlZnVsIGZvciBleHRyYWN0aW5nIHBhcnRzIG9mIHRoZSBjdXJyZW50 IHN5c3RlbSB0aW1lc3RhbXAgdG8gY29tcGFyZSB0aGluZ3MgdmlhIG90aGVyIGNvbmRpdGlv bmFsIHBsdWdpbnMgb3IgdGhlIDxjb2RlPiZsdDt0eHA6c21kX2lmX2NhbCZndDs8L2NvZGU+ IHRhZy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxub3ciPkF0dHJpYnV0 ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm1hdDwvc3Bhbj4g OiB0aGUgd2F5IHlvdSB3YW50IHRoZSBkYXRlL3RpbWUgcmVwcmVzZW50ZWQuIFVzZSBhbnkg dmFsaWQgPGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgp PC9hPiBzdHJpbmcuIERlZmF1bHRzIHRvIHRoZSBkYXRlIGZvcm1hdCB5b3Ugc2V0IGluIEJh c2ljIFByZWZzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5vdzwvc3Bhbj4gOiBp ZiB5b3UgZG9uJiM4MjE3O3Qgd2FudCB0aGUgdGltZSB0byBiZSwgdW1tLCAmIzgyMTY7bm93 JiM4MjE3OyB5b3UgY2FuIHN0YXRlIHdoYXQgdGltZSAmIzgyMTY7bm93JiM4MjE3OyBpcyEg VXNlIGFueSBzdGFuZGFyZCBkYXRlL3RpbWUgZm9ybWF0LiAgRGVmYXVsdDogdGhlIHRpbWUg YXQgd2hpY2ggeW91IGNhbGwgdGhlIHRhZy48ZGl2IGNsYXNzPSJicmVhayI+WW91IG1heSBh bHNvIHVzZSB0aGUgY29kZXMgPGNvZGU+P2RheTwvY29kZT4sIDxjb2RlPj9tb250aDwvY29k ZT4gb3IgPGNvZGU+P3llYXI8L2NvZGU+IGluIHlvdXIgdGltZSBzdHJpbmcgd2hpY2ggd2ls bCBkbyBvbmUgb2YgdHdvIHRoaW5nczoKCTx1bD4KCQk8bGk+cmVwbGFjZSB0aGUgY29kZXMg d2l0aCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gcGFyYW1ldGVycyA8Y29k ZT5kPTwvY29kZT4sIDxjb2RlPm09PC9jb2RlPiBvciA8Y29kZT55PTwvY29kZT4sIGlmIHRo ZXkgYXJlIGJlaW5nIHVzZWQ8L2xpPgoJCTxsaT51c2UgdGhlIGN1cnJlbnQgZGF5LCBtb250 aCBvciB5ZWFyIChpLmUuIHRoZSBwYXJ0cyBvZiB0b2RheSYjODIxNztzIGRhdGUpPGJyIC8+ CjwvZGl2PjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vZmZz ZXQ8L3NwYW4+IDogYW4gb2Zmc2V0IGludG8gdGhlIGZ1dHVyZSB0aGF0IHlvdSB3aXNoIHRv IGFwcGx5IHRvIDxjb2RlPm5vdzwvY29kZT4uIGUuZy4gPGNvZGU+MiBtb250aHM8L2NvZGU+ LiBTZWUgPGEgaHJlZj0iI2VnNiI+RXhhbXBsZSA2PC9hPiBmb3IgYSBwcmFjdGljYWwgYXBw bGljYXRpb24gb2YgdGhpcyBhdHRyaWJ1dGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+Z210PC9zcGFuPiA6IHJldHVybiBlaXRoZXIgbG9jYWwgdGltZSAoPGNvZGU+MDwvY29k ZT4pIGFjY29yZGluZyB0byB0aGUgdGltZSB6b25lIHNldCBpbiBCYXNpYyBQcmVmcywgb3Ig PHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gdGltZSAoPGNvZGU+MTwvY29kZT4pLiBE ZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5s YW5nPC9zcGFuPiA6IGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IGxhbmd1YWdl IGNvZGUgdGhhdCBmb3JtYXRzIHRpbWUgc3RyaW5ncyBzdWl0YWJsZSBmb3IgdGhlIHNwZWNp ZmllZCBsYW5ndWFnZSAob3IgbG9jYWxlKSBhcyBkZWZpbmVkIGJ5IDxhIGhyZWY9Imh0dHA6 Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzYzOSI+PHNwYW4gY2xhc3M9ImNhcHMiPklT Tzwvc3Bhbj4gNjM5PC9hPi4gRGVmYXVsdDogdW5zZXQgKGkuZS4gdXNlIHRoZSB2YWx1ZSBh cyBzdGF0ZWQgaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gcHJlZnMpPC9saT4K CTwvdWw+CgoJPGgyIGlkPSJhcnRldiI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9hcnRpY2xl X2V2ZW50IC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+V2hlbiB5b3UgY3JlYXRlIGV2ZW50cywg dGhleSByZWFsbHkgb25seSBleGlzdCBvbmNlIGFzIGEgc2luZ2xlIGFydGljbGU7IHRoZSBy ZXBldGl0aW9uIGlzIGEgdHJpY2suIFRodXMgdGhlIGJ1aWx0LWluIGFydGljbGUgdGFncyBv bmx5IHNob3cgdGhlIHNpbmdsZSwgcmVhbCBhcnRpY2xlcy48L3A+CgoJPHA+VGhpcyB0YWcg JiM4MjEyOyBzaW1pbGFyIGluIGZ1bmN0aW9uIHRvIDxjb2RlPiZsdDt0eHA6YXJ0aWNsZV9j dXN0b20gLyZndDs8L2NvZGU+ICYjODIxMjsgYWxsb3dzIHlvdSB0byBzZWUgcmVjdXJyaW5n IGFydGljbGVzIGFzIGlmIHRoZXkgd2VyZSAmIzgyMTY7cmVhbCYjODIxNzsgYXJ0aWNsZXMg aW4gdGhlIGRhdGFiYXNlLiBJbnNpZGUgdGhlIHRhZyYjODIxNztzIDxjb2RlPmZvcm08L2Nv ZGU+IG9yIGNvbnRhaW5lciB5b3UgY2FuIHVzZSBhbGwgZXhpc3RpbmcgYXJ0aWNsZSB0YWdz IHRvIGRpc3BsYXkgYW55IGluZm9ybWF0aW9uIHlvdSBsaWtlIGFib3V0IGVhY2ggJiM4MjE2 O3ZpcnR1YWwmIzgyMTc7IGFydGljbGUuPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJh dHRzYXJ0ZXYiPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnN0ZXBmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIGluIDxhIGhyZWY9IiNzbWRjYWwiPnNt ZF9jYWxlbmRhcjwvYT4sIHRoZSBJRCBvZiB0aGUgZmllbGQgdGhhdCBjb250YWlucyBldmVu dCByZXBldGl0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+c2tpcGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgaW4gPGEgaHJlZj0iI3NtZGNhbCI+ c21kX2NhbGVuZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBmaWVsZCB0aGF0IGNvbnRhaW5zIHRo ZSBsaXN0IG9mIGV2ZW50IGNhbmNlbGxhdGlvbiBkYXRlcy4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b21pdGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMg aW4gPGEgaHJlZj0iI3NtZGNhbCI+c21kX2NhbGVuZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBm aWVsZCB0aGF0IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGV2ZW50IG9taXNzaW9uIGRhdGVzLiBE ZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50eXBlPC9zcGFu PiA6IHRoZSB0eXBlcyBvZiBldmVudCB0byBkaXNwbGF5LiBDaG9vc2UgZnJvbSA8Y29kZT5z dGFuZGFyZDwvY29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiBvciA8Y29kZT5tdWx0aTwvY29k ZT4uIERlZmF1bHQ6IDxjb2RlPnN0YW5kYXJkLCByZWN1ciwgbXVsdGk8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNlY3Rpb248L3NwYW4+IDogcmVzdHJpY3QgdGhl IGV2ZW50cyB0byBhIGxpc3Qgb2Ygc2VjdGlvbnMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBl dmVudHMgdG8gYSBsaXN0IG9mIGNhdGVnb3JpZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZl bnRzIHRvIGEgbGlzdCBvZiBhdXRob3JzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEg bGlzdCBvZiBhcnRpY2xlIElEcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c3RhdHVzPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8gdGhp cyBsaXN0IG9mIGFydGljbGUgc3RhdHVzLiBEZWZhdWx0OiA8Y29kZT5saXZlPC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5leHBpcmVkPC9zcGFuPiA6IGRlZmluaXRp dmVseSBoaWRlICg8Y29kZT4wPC9jb2RlPikgb3Igc2hvdyAoPGNvZGU+MTwvY29kZT4pIGV4 cGlyZWQgZXZlbnRzLiBMZWF2ZSBibGFuayB0byB1c2UgdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IEFkdmFuY2VkIFByZWZlcmVuY2UgPGNvZGU+UHVibGlzaCBleHBpcmVk IGFydGljbGVzPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9z cGFuPiA6IG9ubHkgc2hvdyBldmVudHMgaW4gdGhpcyB0aW1lIGZyYW1lLiBDaG9vc2UgZnJv bSA8Y29kZT5hbnk8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxjb2RlPnBhc3Q8 L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPm1vbnRoPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgdGhhdCBvY2N1ciBp biB0aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPllZWVk8L3NwYW4+LW1tLiBEZWZhdWx0 OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mcm9tPC9zcGFuPiA6IG9u bHkgc2hvdyBldmVudHMgZnJvbSB0aGlzIHN0YXJ0IGRhdGUuIENhbiBiZSBhbnkgdmFsaWQg ZGF0ZSBmb3JtYXQuIERlZmF1bHQ6IHVuc2V0IChpLmUuIGFsbCBkYXRlcyk8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+dG88L3NwYW4+IDogb25seSBzaG93IGV2ZW50cyB1cCB0 byB0aGlzIGVuZCBkYXRlLiBDYW4gYmUgYW55IHZhbGlkIGRhdGUgZm9ybWF0LiBEZWZhdWx0 OiB1bnNldCAoaS5lLiBhbGwgZGF0ZXMpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnNvcnQ8L3NwYW4+IDogb3JkZXIgdGhlIGV2ZW50cyBieSB0aGlzIGNvbHVtbi4gVGhlIG1v c3QgdXNlZnVsIHZhbHVlIGlzIHRoZSBkZWZhdWx0OiA8Y29kZT5Qb3N0ZWQgYXNjPC9jb2Rl PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHBhc3MgZWFj aCBtYXRjaGluZyBldmVudCB0byB0aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gZm9ybS4gRGVmYXVsdDogdW5zZXQuIE5vdGUgdGhhdCB1c2luZyB0aGUgY29udGFp bmVyIG92ZXJyaWRlcyB0aGlzIGF0dHJpYnV0ZSwgYW5kIGlmIHlvdSBzcGVjaWZ5IG5laXRo ZXIgYSBmb3JtIG5vciBjb250YWluZXIsIHlvdSB3aWxsIHNlZSBhIGxpc3Qgb2YgYXJ0aWNs ZSBwb3N0ZWQgZGF0ZXM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9z cGFuPiA6IHVubGlrZSBhcnRpY2xlX2N1c3RvbSwgZXZlbnRzIGZyb20gdGhlIHNtZF9hcnRp Y2xlX2V2ZW50IHRhZyBtYXkgYmUgcGFnZWQgdXNpbmcgPGNvZGU+Jmx0O3R4cDpvbGRlciAv Jmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6bmV3ZXIgLyZndDs8L2NvZGU+LiBZb3Ug bWF5IHNwZWNpZnkgYSBmaXhlZCBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpc3Qg b2YgZXZlbnRzIGlmIHlvdSB3aXNoLiBEZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiBvbmx5IHNob3cgdGhpcyBt YW55IGV2ZW50cyBtYXhpbXVtIDxzdHJvbmc+cGVyIHBhZ2U8L3N0cm9uZz4sIGkuZS4gdGhl IG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheSwgd2hldGhlciB0aGV5IGNvbWUgZnJvbSBv bmUgJiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGUgb3IgbWFueS4gRGVmYXVsdDogPGNvZGU+ MTA8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50bGltaXQ8L3Nw YW4+IDogb25seSBzaG93IHRoaXMgbWFueSBldmVudHMgbWF4aW11bSwgPHN0cm9uZz5wZXIg ZXZlbnQ8L3N0cm9uZz4uIFNvIGlmIHlvdSBoYXZlIGEgd2Vla2x5IHJlcGVhdGVkIGV2ZW50 IHRoYXQgbGFzdHMgZm9yIGZvdXIgbW9udGhzIGFuZCB5b3Ugc2V0IDxjb2RlPmV2ZW50bGlt aXQ9JnF1b3Q7NiZxdW90OzwvY29kZT4geW91IHdpbGwgb25seSBzZWUgYSBtYXhpbXVtIG9m IDYgZXZlbnRzIGZyb20gZXZlcnkgYXJ0aWNsZSBjb250YWluaW5nIHJlcGV0aXRpb24uIFRo ZSByYW5nZSAoc3RhcnQgYW5kIGVuZCBkYXRlKSBpcyBkZXRlcm1pbmVkIGJ5IG90aGVyIHBs dWdpbiBhdHRyaWJ1dGVzLiBEZWZhdWx0OiA8Y29kZT4xMDwvY29kZT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+cGFnZWJ5PC9zcGFuPiA6IGVzb3RlcmljIHBhZ2luZyBmZWF0 dXJlLCBpZGVudGljYWwgdG8gPGNvZGU+Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7PC9jb2RlPi4g RGVmYXVsdDogc2FtZSBhcyA8Y29kZT5saW1pdDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+cGdvbmx5PC9zcGFuPiA6IHNldCB0byA8Y29kZT4xPC9jb2RlPiB0byBw ZXJmb3JtIHRoZSBwYWdpbmcgYWN0aW9uIHdpdGhvdXQgZGlzcGxheWluZyBhbnl0aGluZy4g UHJvYmFibHkgdXNlbGVzcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgKHdpdGhvdXQgYnJh Y2tldHMpIHRvIHdyYXAgdGhlIGxpc3QgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBz ZXBhcmF0ZSBlYWNoIGl0ZW0gd2l0aC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5D U1M8L3NwYW4+IGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLiBEZWZhdWx0OiB1bnNl dDwvbGk+Cgk8L3VsPgoKCTxwPkl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHRoaXMgdGFnIGV4 ZWN1dGVzIGluIDMtcGhhc2VzOjwvcD4KCgk8b2w+CgkJPGxpPlByZS1maWx0ZXI6IGFsbCBl dmVudHMgdGhhdCBtYXRjaCA8Y29kZT50eXBlPC9jb2RlPiwgPGNvZGU+Y2F0ZWdvcnk8L2Nv ZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+ c3RhdHVzPC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+LCBhbmQgPGNvZGU+ZXhwaXJlZDwvY29k ZT4gYXJlIGV4dHJhY3RlZDwvbGk+CgkJPGxpPlRpbWUtZmlsdGVyOiBhbnkgJiM4MjIwO3Rp bWUtYmFzZWQmIzgyMjE7IGF0dHJpYnV0ZXMgYXJlIHRoZW4gYXBwbGllZCB0byB0aGUgYWJv dmUgbGlzdC4gQXQgdGhpcyBwb2ludCwgYW55IDxjb2RlPnN0ZXBmaWVsZDwvY29kZT4sIDxj b2RlPm9taXRmaWVsZDwvY29kZT4sIG9yIDxjb2RlPnNraXBmaWVsZDwvY29kZT4gYXJlIGNh bGN1bGF0ZWQgdG8gZmluZCByZXBlYXRlZCBkYXRlcyAodXAgdG8gYXMgbWFueSBhcyA8Y29k ZT5ldmVudGxpbWl0PC9jb2RlPiBhbGxvd3Mgb3IgdGhlIGNhbGN1bGF0aW9uIGV4Y2VlZHMg dGhlIGV2ZW50JiM4MjE3O3MgZXhwaXJ5IHRpbWUpLiBTbyB0aGUgYXR0cmlidXRlcyA8Y29k ZT50aW1lPC9jb2RlPiwgPGNvZGU+bW9udGg8L2NvZGU+LCA8Y29kZT5mcm9tPC9jb2RlPiwg YW5kIDxjb2RlPnRvPC9jb2RlPiBhcmUgdXNlZCB0byByZWZpbmUgdGhlIGZpbHRyYXRpb248 L2xpPgoJCTxsaT5PdXRwdXQ6IHdoYXRldmVyIHRoZSBwcmV2aW91cyBwaGFzZXMgaGF2ZSBs ZWZ0IGJlaGluZCBpcyBzdWJqZWN0IHRvIGFueSBwYWdpbmcsIDxjb2RlPm9mZnNldDwvY29k ZT4gYW5kIDxjb2RlPmxpbWl0PC9jb2RlPiB5b3UgbWF5IGhhdmUgc3BlY2lmaWVkLCB0aGVu IHdyYXBwZWQgYW5kIGRpc3BsYXllZDwvbGk+Cgk8L29sPgoKCTxoMiBpZD0iZGF0ZXMiPkRh dGVzLCBnb3RjaGFzIGFuZCBpZGlvc3luY3JhY2llczwvaDI+CgoJPHA+SWYgdGhlcmUgd2Fz IG9uZSBnbG9iYWwgdGltZSB6b25lIHRoZSB3b3JsZCB3b3VsZCBiZSBzaW1wbGVyLiBTYWRs eSwgd2UgYWxsIGxpdmUgaW4gZGlmZmVyZW50IHBsYWNlcyBhbmQgdGhlIEludGVybmV0IEJl YXQgaGFzbiYjODIxNzt0IHJlYWxseSB0YWtlbiBvZmYuIEV2ZW4gbW9yZSBzYWRseSwgY2Vy dGFpbiB1cHBlciBlY2hlbG9ucyBvZiBwb3dlciBkZWNyZWUgdGhhdCB0d2ljZSBhIHllYXIg c29tZSBjb3VudHJpZXMgbXVzdCBhbHRlciB0aGVpciBjbG9ja3MgdG8gU2F2ZSBEYXlsaWdo dCAod2hhdGV2ZXIgdGhhdCBtZWFucykuPC9wPgoKCTxwPjxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IGRvZXMgaXRzIGJlc3QgdG8gc2hpZWxkIHlvdSBmcm9tIHRoaXMgbWF5aGVt IGJ5IGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5IHlvdXIgbG9jYWxlLCB0aW1lIG9mZnNldCBm cm9tIDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3NwYW4+LCBhbmQgd2hlbiA8c3BhbiBjbGFz cz0iY2FwcyI+RFNUPC9zcGFuPiBhcHBsaWVzIGluIHlvdXIgdGltZSB6b25lIChub3QgZm9y Z2V0dGluZyB0aGUgdGltZSB6b25lIG9mIHlvdXIgc2VydmVyIGlmIGl0IGhhcHBlbnMgdG8g YmUgbm93aGVyZSBuZWFyIHlvdSkuPC9wPgoKCTxwPkFuZCB0aGVyZWluIGxpZXMgdGhlIHJ1 Yi48L3A+CgoJPHA+Rm9yIGEgY2FsZW5kYXIgc3lzdGVtLCB0aGlzIGlzIHN1Yi1vcHRpbWFs LiBJbiBmYWN0IGl0JiM4MjE3O3MgZG93bnJpZ2h0IGFubm95aW5nIGJlY2F1c2Ugd2hlbiB5 b3Ugc2F5IHRoYXQgYW4gZXZlbnQgaXMgZ29pbmcgdG8gb2NjdXIgYXQgOHBtIGluIHNpeCBt b250aHMmIzgyMTc7IHRpbWUsIHBlc2t5IERheWxpZ2h0IFNhdmluZ3MgbWF5IHRoZW4gYmUg aW4gZWZmZWN0IGFuZCB5b3VyIGV2ZW50IHdpbGwgYXBwZWFyIGFuIGhvdXIgJiM4MjE2O29m ZiYjODIxNzsgKGl0IG1heSBsb29rIHdyb25nIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UgYXMg d2VsbCBhcyBpbiB5b3VyIGNhbGVuZGFyLCBkZXBlbmRpbmcgb24gdGhlIHNldHRpbmdzKS48 L3A+CgoJPHA+QWxzbywgaWYgeW91ciBzZXJ2ZXIgb3IgeW91ciBvZmZpY2UgaXMgcmVsb2Nh dGVkIGFuZCB5b3UgaGF2ZSB0byBhZGp1c3QgdGltZSB6b25lLCBhbGwgeW91ciBiZWF1dGlm dWxseSBjcmFmdGVkIGRhdGVzIHdpbGwgYmUgc2hpZnRlZC4gV2VsbCwgdGhleSYjODIxNzty ZSBub3QgYWN0dWFsbHkgY2hhbmdlZCBpbiB0aGUgZGF0YWJhc2UgdW5sZXNzIHlvdSBlZGl0 IGFuIGFydGljbGUgYW5kIHJlLXNhdmUgaXQsIGJ1dCB0aGV5IDxlbT5hcHBlYXI8L2VtPiB0 byBoYXZlIHNoaWZ0ZWQgYmVjYXVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBp cyB0cnlpbmcgdG8gc2hpZWxkIHlvdSBmcm9tIHRpbWUgYnVyZWF1Y3JhY3kgaW4gYSB3b3Js ZCBnb25lIG1hZC48L3A+CgoJPHA+VW5mb3J0dW5hdGVseSB0aGVyZSBpcyBsaXR0bGUgd2Ug Y2FuIGRvIGFib3V0IHRoaXMgYXQgdGhlIG1vbWVudCB1bnRpbCB0aGUgd2F5IGRhdGVzIGFy ZSBoYW5kbGVkIGluIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGlzIGNoYW5nZWQu IEJ1dCB0aGVyZSBhcmUgc29tZSBzZXR0aW5ncyB0aGF0IHlvdSBjYW4gcGxheSB3aXRoIHRv IHRyeSBhbmQgbWFrZSBzZW5zZSBvZiBpdCBhbGwuIE5hbWVseSB0aGUgPGNvZGU+Z210PC9j b2RlPiBhdHRyaWJ1dGUgdG8gdGhlIGNhbGVuZGFyIHBsdWdpbiBhbmQgYW55IG9mIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+JiM4MjE3O3MgZGF0ZS1iYXNlZCB0YWdzIHN1Y2gg YXMgPGNvZGU+Jmx0O3R4cDpwb3N0ZWQgLyZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7dHhw OmV4cGlyZXMgLyZndDs8L2NvZGU+LiBTb21ldGltZXMgZmlkZGxpbmcgd2l0aCB0aGF0IGFu ZCB0aGUgdGltZSB6b25lL0RTVCBmbGFncyB3aWxsIGhlbHAuIE90aGVyIHRpbWVzIHlvdSYj ODIxNztsbCBnZXQgaW4gYSByaWdodCBvbGQgbWVzcy48L3A+CgoJPHA+SWYgYWxsIHRoYXQg ZmFpbHMsIHRoZSBjb25kaXRpb25hbCB0YWcgbWF5IGJlIGFibGUgdG8gaGVscCB5b3UgY29t cGFyZSBjZXJ0YWluIGRhdGVzIGFuZCBhcHBseSBkaWZmZXJlbnQgYXR0cmlidXRlcyBkZXBl bmRpbmcgb24gdGhlIGRheSBvZiB0aGUgeWVhci4gRmFpbGluZyB0aGF0LCBqdXN0IHVzZSA8 c3BhbiBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiBhbmQgcmVmdXNlIHRvIG9ic2VydmUgPHNw YW4gY2xhc3M9ImNhcHMiPkRTVDwvc3Bhbj4gOi0pPC9wPgoKCTxoMiBjbGFzcz0iZXhhbXBs ZXMiPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCgk8cD5U aGUgYmVhdXR5IG9mIHRoZSBwbHVnaW4gaXMgdGhhdCB5b3UgaGF2ZSB0aGUgZW50aXJlIGFy c2VuYWwgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyBhdmFpbGFibGUg dG8geW91IGlmIHlvdSBjaG9vc2UgdG8gdXNlIGEgPGNvZGU+Zm9ybTwvY29kZT4uIFRodXMg eW91IGNhbiBzZXQgdGhlIGFydGljbGUmIzgyMTc7cyBzdGFydCBhbmQgZW5kIGRhdGVzIHRv IHRoZSBzYW1lIGRheSBhbmQgc2V0IHRoZSBzdGFydCBhbmQgZW5kIHRpbWVzIHRvIGluZGlj YXRlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBldmVudC4gWW91IGNhbiB0aGVuIHVzZSBz dGFuZGFyZCA8Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0OzwvY29kZT4gb3IgPGNvZGU+Jmx0 O3R4cDpleHBpcmVzIC8mZ3Q7PC9jb2RlPiB0YWdzIHdpdGggdmFyaW91cyA8Y29kZT5mb3Jt YXQ8L2NvZGU+IHN0cmluZ3MgdG8gcmVuZGVyIHRoZSBldmVudCYjODIxNztzIGNyaXRlcmlh LjwvcD4KCgk8cD5TaW1pbGFybHkgeW91IGNhbiB1c2UgPGNvZGU+Jmx0O3R4cDpleGNlcnB0 IC8mZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDp0aXRsZSAvJmd0OzwvY29kZT4gb3Ig b2YgY291cnNlIGFueSBjdXN0b20gZmllbGRzIHRvIHNob3cgYXMgbXVjaCBvciBhcyBsaXR0 bGUgZGV0YWlsIGFzIHlvdSBsaWtlIGluIHRoZSBjYWxlbmRhciBjZWxsLjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2NhbGVuZGFy IHNlY3Rpb249JnF1b3Q7ZXZlbnRzJnF1b3Q7Jmd0OwombHQ7ZGl2Jmd0OwogICBFdmVudDog Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxp bmsmZ3Q7CiAgICZsdDticiAvJmd0OyZsdDt0eHA6ZXhjZXJwdCAvJmd0OwombHQ7L2RpdiZn dDsKJmx0O2RpdiBjbGFzcz0mcXVvdDtldnRpbWUmcXVvdDsmZ3Q7CiAgIFN0YXJ0OiAmbHQ7 dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JUg6JU0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7 CiZsdDtkaXYgY2xhc3M9JnF1b3Q7ZXZ0aW1lJnF1b3Q7Jmd0OwogICBFbmQ6ICZsdDt0eHA6 ZXhwaXJlcyBmb3JtYXQ9JnF1b3Q7JUg6JU0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZs dDsvdHhwOnNtZF9jYWxlbmRhciZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0iZWcyIj5F eGFtcGxlIDI8L2gzPgoKCTxwPlVzaW5nIHRoZSBjb25kaXRpb25hbCB0YWcgeW91IGNhbiB0 YWtlIGFjdGlvbiBpZiBjZXJ0YWluIGV2ZW50cyBjb250YWluIHBhcnRpY3VsYXIgZmxhZ3Mu IFRoaXMgZXhhbXBsZSBhbHNvIHNob3cgYSBjb21wbGV0ZWx5IHVzZWxlc3MgbWFubmVyIG9m IGVtcGxveWluZyA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfbm93IC8mZ3Q7PC9jb2RlPi48L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaW1lIGlzOiAmbHQ7 dHhwOnNtZF9jYWxfbm93IGZvcm1hdD0mcXVvdDslVCZxdW90OyAvJmd0OwombHQ7dHhwOnNt ZF9jYWxlbmRhciBmb3JtPSZxdW90O2V2Zm9ybSZxdW90OwogICAgIHN0ZXBmaWVsZD0mcXVv dDtjdXN0b21fMyZxdW90OyBza2lwZmllbGQ9JnF1b3Q7Y3VzdG9tXzYmcXVvdDsKICAgICBz cGFuZm9ybT0mcXVvdDttdWx0aXMmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPklu IGZvcm0gPGNvZGU+ZXZmb3JtPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVvdDtyZWN1ciZx dW90OyZndDsKICAmbHQ7dHhwOnBlcm1saW5rJmd0OyhSRUNVUikmbHQ7L3R4cDpwZXJtbGlu ayZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4 cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9j YWwgZmxhZz0mcXVvdDttdWx0aWZpcnN0JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiBjbGFz cz0mcXVvdDtyaWdodCZxdW90OyZndDsmYW1wO2xhcXVvOy0tJmx0Oy9zcGFuJmd0OwogICAm bHQ7L3R4cDpzbWRfaWZfY2FsJmd0OwogICAmbHQ7dHhwOnNtZF9pZl9jYWwgZmxhZz0mcXVv dDtyZWN1cmZpcnN0JnF1b3Q7Jmd0OwogICAgICAmbHQ7c3BhbiZndDtPbmUgb2YgbWFueS4u LiZsdDsvc3BhbiZndDsKICAgJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKJmx0Oy90eHA6c21k X2lmX2NhbCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkFuZCBpbiBmb3JtIDxjb2RlPm11bHRp czwvY29kZT46PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7bXVsdGksIG11bHRpcHJldiZxdW90OyZn dDsKICAgJmx0O3R4cDpwZXJtbGluayZndDstLSZhbXA7cmFxdW87LS0mbHQ7L3R4cDpwZXJt bGluayZndDsKJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKJmx0O3R4cDpzbWRfaWZfY2FsIGZs YWc9JnF1b3Q7bXVsdGlsYXN0JnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0Owog ICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtsZWZ0JnF1b3Q7Jmd0Oy0tJmFtcDtyYXF1bzsm bHQ7L3NwYW4mZ3Q7IEVORCAmbHQ7dHhwOnRpdGxlIC8mZ3Q7CiAgICZsdDsvdHhwOnBlcm1s aW5rJmd0OwombHQ7L3R4cDpzbWRfaWZfY2FsJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90 aWNlIHRoYXQgPGNvZGU+bXVsdGlmaXJzdDwvY29kZT4gaXMgdGVzdGVkIGluc2lkZSB0aGUg c2FtZSBmb3JtIGFzIHN0YW5kYXJkIGV2ZW50cy4gVGhpcyBpcyBiZWNhdXNlIG9ubHkgPGVt PmNvbnRpbnVhdGlvbiBzcGFubmVkIGNlbGxzPC9lbT4gYXJlIHBhc3NlZCB0byB0aGUgPGNv ZGU+c3BhbmZvcm08L2NvZGU+OyB0aGUgZmlyc3QgZXZlbnQgb2YgYSBzcGFubmVkIGdyb3Vw IGlzIGp1c3QgbGlrZSBhbnkgc3RhbmRhcmQgZXZlbnQuIFNpbWlsYXJseSwgaWYgeW91IGhh ZCBiZWVuIHVzaW5nIDxjb2RlPnJlY3VyZm9ybTwvY29kZT4gdGhlIGZpcnN0IGV2ZW50IG9m IHRoZSByZWN1cnJpbmcgc2V0IHdvdWxkIGJlIHByb2Nlc3NlZCBpbiB0aGUgdXN1YWwgZm9y bS9jb250YWluZXIgYW5kIGV2ZXJ5IHN1YnNlcXVlbnQgZXZlbnQgd291bGQgYmUgcGFzc2Vk IHRvIHRoZSBkZWRpY2F0ZWQgZm9ybS48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzwv aDM+CgoJPHA+WW91IGNvdWxkIHVzZSB0aGUgY2FsZW5kYXIgdGFncyB0byBvdXRwdXQgdmFy aW91cyBwaWVjZXMgb2YgZmxhZyBpbmZvcm1hdGlvbiB0byBidWlsZCB5b3VyIG93biBjbGFz cyBuYW1lcy4gVGhpcyBleGFtcGxlIGFsc28gZGVtb25zdHJhdGVzIHRoZSA8Y29kZT5odG1s PC9jb2RlPiBhdHRyaWJ1dGUgb2YgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8gLyZndDs8 L2NvZGU+IHRvIGJ1aWxkIHVwIGEgcXVlcnkgc3RyaW5nIHRoYXQgaXMgcGFzc2VkIGFsb25n IHdpdGggYW4gZXZlbnQmIzgyMTc7cyA8Y29kZT5jYXRlZ29yeTE8L2NvZGU+IHdoZW4gYSB2 aXNpdG9yIGNsaWNrcyB0aGUgYW5jaG9yLjwvcD4KCgk8cD5UaGlzIGFsbG93cyB5b3VyIHNp dGUgdmlzaXRvcnMgdG8gZmlsdGVyIGV2ZW50cyBieSBjYXRlZ29yeSB3aGlsZSByZXRhaW5p bmcgdGhlIGFiaWxpdHkgdG8gc2hvdyB0aGUgY2FsZW5kYXIgZm9yIHRoZSBjdXJyZW50IG1v bnRoL3llYXIgYW5kIHNlY3Rpb24gdGhleSBhcmUgdmlld2luZyBpbnN0ZWFkIG9mIGRyb3Bw aW5nIGJhY2sgdG8gdGhlIGN1cnJlbnQgbW9udGgveWVhciBsaWtlIG90aGVyIGNhbGVuZGFy IHN5c3RlbXMgb2Z0ZW4gZG8uPC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgaXNvd2Vla3M9JnF1b3Q7V0VFSyMmcXVv dDsKICAgICB5ZWFyd2lkdGg9JnF1b3Q7MCwyJnF1b3Q7IHNlbGVjdD0mcXVvdDt5ZWFyLCBt b250aCZxdW90OwogICAgIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OyBza2lwZmll bGQ9JnF1b3Q7Y3VzdG9tXzImcXVvdDsKICAgICBzaG93c2tpcHBlZD0mcXVvdDsxJnF1b3Q7 IGV4cGlyZWQ9JnF1b3Q7MSZxdW90OyZndDsKICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Jmx0 O3R4cDpzbWRfY2FsX2luZm8gam9pbj0mcXVvdDsgY2FsXyZxdW90OyAvJmd0OyZxdW90OyZn dDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90 eHA6cGVybWxpbmsmZ3Q7CiAgICAgICZsdDthIGhyZWY9JnF1b3Q7P2M9Jmx0O3R4cDpjYXRl Z29yeTEKICAgICAgICAgLyZndDsmYW1wOyZsdDt0eHA6c21kX2NhbF9pbmZvIHR5cGU9JnF1 b3Q7c2VjdGlvbiwgeWVhciwKICAgICAgICAgbW9udGgsIGNhbGlkJnF1b3Q7IGh0bWw9JnF1 b3Q7MSZxdW90OyBqb2luX3ByZWZpeD0mcXVvdDsmcXVvdDsKICAgICAgICAgLyZndDsmcXVv dDsmZ3Q7Jmx0O3R4cDpjYXRlZ29yeTEgdGl0bGU9JnF1b3Q7MSZxdW90OyAvJmd0OyZsdDsv YSZndDsKICAgJmx0Oy9zcGFuJmd0OwombHQ7L3R4cDpzbWRfY2FsZW5kYXImZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5XaGF0IGlzIGFsc28gdXNlZnVsIGFib3V0IHRoZSA8Y29kZT4mbHQ7 dHhwOnNtZF9jYWxfaW5mbyAvJmd0OzwvY29kZT4gdGFnIGlzIHRoYXQgaWYgYSBwYXJ0aWN1 bGFyIHZhbHVlIGlzIG5vdCBzZXQgaXQgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIG91 dHB1dC48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDwvaDM+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aDImZ3Q7VXBjb21pbmcgRXZlbnRzJmx0 Oy9oMiZndDsKJmx0O3R4cDpzbWRfYXJ0aWNsZV9ldmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3Vz dG9tXzEmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O2RsJnF1b3Q7IHRpbWU9JnF1b3Q7ZnV0 dXJlJnF1b3Q7IGV2ZW50bGltaXQ9JnF1b3Q7NSZxdW90OyZndDsKICAgJmx0O3R4cDppZl9k aWZmZXJlbnQmZ3Q7CiAgICAgJmx0O2R0Jmd0OyZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVv dDslQiAlWSZxdW90OyAvJmd0OyZsdDsvZHQmZ3Q7CiAgICZsdDsvdHhwOmlmX2RpZmZlcmVu dCZndDsKICAgJmx0O2RkJmd0OwogICAgICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6 dGl0bGUvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAgICAmbHQ7dHhwOnBvc3RlZCAv Jmd0OwogICAmbHQ7L2RkJmd0OwombHQ7L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPlRoYXQgbGlzdHMgdGhlIG5leHQgNSB1cGNvbWluZyAmIzgyMTI7 IHJlY3VycmluZyAmIzgyMTI7IGV2ZW50cywgcGx1cyBhbnkgc3RhbmRhcmQgYW5kIHNwYW5u ZWQgZXZlbnRzLCBmb3JtYXR0aW5nIHRoZW0gYXMgYSBkZWZpbml0aW9uIGxpc3QuIElmIHlv dSBhZGQgcGFnaW5hdGlvbiB0YWdzIHlvdSBjYW4gZmxpcCB0aHJvdWdoIGFsbCB0aGUgZXZl bnRzOyB0aGV5IHdpbGwgYmUgZGlzcGxheWVkIDEwIGF0IGEgdGltZSBvbiBlYWNoIHBhZ2Ug KGlmIHlvdSB3YW50IHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggcGFnZSB5b3UgYXJlIG9uIGFz IHlvdSBmbGlwIHRocm91Z2ggYSBjYWxlbmRhciB0aGF0IGlzIGluIGEgc2lkZWJhciwgYWRk IDxjb2RlPnBnPC9jb2RlPiB0byB0aGUgPGNvZGU+bWFpbnRhaW48L2NvZGU+IGF0dHJpYnV0 ZSBpbiB5b3VyIGNhbGVuZGFyKS48L3A+CgoJPHA+Tm90ZSB0aGUgaHlwZXJsaW5rZWQgdGl0 bGUgc2hvd24gaGVyZSB3aWxsIHJldHVybiB0byB0aGUgJiM4MjE2O3JlYWwmIzgyMTc7IGFy dGljbGUgd2hlbiBjbGlja2VkLiBJZiB5b3Ugd2FudGVkIHRvIGFsbG93IHBlb3BsZSB0byBi b29rIGFuIGV2ZW50IG9uIHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xlLCB0cnkgdGhpczo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOmlmX2lu ZGl2aWR1YWxfYXJ0aWNsZSZndDsKICZsdDt0eHA6YXJ0aWNsZSBsaW1pdD0mcXVvdDsxJnF1 b3Q7Jmd0OwogICZsdDtoMyZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy9oMyZndDsKICAm bHQ7dHhwOmJvZHkgLyZndDsKICAmbHQ7cCZndDtQbGVhc2UgY2hvb3NlIGEgZGF0ZSB0byBi b29rOiZsdDsvcCZndDsKICAmbHQ7c2VsZWN0Jmd0OwogICZsdDt0eHA6c21kX2FydGljbGVf ZXZlbnQgc3RlcGZpZWxkPSZxdW90O2N1c3RvbV8xJnF1b3Q7CiAgICB0eXBlPSZxdW90O3Jl Y3VyJnF1b3Q7IGlkPSYjMzk7Jmx0O3R4cDphcnRpY2xlX2lkIC8mZ3Q7JiMzOTsmZ3Q7CiAg ICAmbHQ7b3B0aW9uCiAgICAgdmFsdWU9JiMzOTsmbHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1 b3Q7JUctJW0tJWQmcXVvdDsvJmd0OyYjMzk7Jmd0OwogICAgICAmbHQ7dHhwOnBvc3RlZCBm b3JtYXQ9JnF1b3Q7JW0gJWQsICRHJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7L29wdGlvbiZndDsK ICAmbHQ7L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKICAmbHQ7L3NlbGVjdCZndDsKICZs dDsvdHhwOmFydGljbGUmZ3Q7CiZsdDsvdHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPldpdGggc29tZSBjdW5uaW5nIHlvdSBjb3VsZCBldmVuIGFk ZCB0aGUgJiM4MjE2O3ZpcnR1YWwmIzgyMTc7IGRhdGUgdGhhdCB0aGV5IGNob3NlIGluIHlv dXIgb3JpZ2luYWwgYXJ0aWNsZV9ldmVudCBsaXN0IGFuZCBwYXNzIGl0IGFzIGEgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgdG8geW91ciBpbmRpdmlkdWFsIGFy dGljbGUgd2hlcmUgeW91IGNvdWxkIHJlYWQgdGhlIHZhbHVlIGFuZCBwcmUtc2VsZWN0IHRo ZSBkYXRlIGZvciB0aGUgdmlzdG9yLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1PC9o Mz4KCgk8cD5Ib3cgYWJvdXQgYmVpbmcgYWJsZSB0byBvdXRwdXQgeW91ciBldmVudHMgaW4g aUNhbCBmb3JtYXQgc28gb3RoZXIgcGVvcGxlIGNhbiBzeW5jIHRoZWlyIGNhbGVuZGFycyB0 byB5b3Vycz8gUHV0IHRoaXMgaW4gYSBuZXcgUGFnZSB0ZW1wbGF0ZSBpbiBpdHMgb3duIFNl Y3Rpb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+QkVH SU46VkNBTEVOREFSClZFUlNJT046Mi4wClgtV1ItQ0FMTkFNRTpHaWdzIENhbGVuZGFyClBS T0RJRDotLy9BcHBsZSBDb21wdXRlciwgSW5jLy9pQ2FsIDEuNS8vRU4KWC1XUi1USU1FWk9O RTpFdXJvcGUvTG9uZG9uCiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgZm9ybT0mcXVvdDtp Y3NpdGVtJnF1b3Q7IHRpbWU9JnF1b3Q7YW55JnF1b3Q7CnNlY3Rpb249JnF1b3Q7Z2lncyZx dW90OyBsaW1pdD0mcXVvdDsxMDAwJnF1b3Q7Jmd0OwogQkVHSU46VkVWRU5UCiBEVFNUQVJU OiZsdDt0eHA6cG9zdGVkIGZvcm1hdD0mcXVvdDslWSVtJWRUJUglaSVzJnF1b3Q7IC8mZ3Q7 CiBEVEVORDombHQ7dHhwOmV4cGlyZXMgZm9ybWF0PSZxdW90OyVZJW0lZFQlSCVpJXMmcXVv dDsgLyZndDsKIFNVTU1BUlk6Jmx0O3R4cDp0aXRsZSAvJmd0OwogRU5EOlZFVkVOVAombHQ7 L3R4cDpzbWRfYXJ0aWNsZV9ldmVudCZndDsKRU5EOlZDQUxFTkRBUgo8L2NvZGU+PC9wcmU+ CgoJPHA+VGhhdCB3aWxsIG91dHB1dCBhbiBpQ2FsLWZvcm1hdHRlZCBnaWcgbGlzdCAocmVw ZWF0ZWQgb3Igb3RoZXJ3aXNlKS4gSWYgeW91IGdvdCBmcmVha3kgd2l0aCBpdCBhbmQgYWRk ZWQgc29tZSBjb25kaXRpb25hbCBsb2dpYyBpbnNpZGUgdGhlIHRlbXBsYXRlIHlvdSBjb3Vs ZCBldmVuIHJlYWQgaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGVz IGFuZCBwbHVnIHRoZW0gaW4uIFRodXMgeW91IGNvdWxkIGxpbmsgdG8gaXQgZGlyZWN0bHkg b2ZmIHRoZSBjYWxlbmRhciBpdHNlbGYsIHBhc3MgaW4gdGhlIHNlY3Rpb24sIGNhdGVnb3J5 IG9yIGV2ZW50IGluZm8gYW5kIGhhdmUgYSBjdXN0b21pc2VkIGlDYWwgc3RyZWFtIHB1bXBl ZCBvdXQgb2YgVGV4dHBhdHRlcm4uPC9wPgoKCTxwPlRoYW5rcyB0byB3b29mIGZvciBicmlu Z2luZyB0aGUgb3JpZ2luYWwgPGEgaHJlZj0iaHR0cDovL2RlLW9ubGluZS5jby51ay8yMDA2 LzA1LzA1L3RleHRwYXR0ZXJuLWFuZC1pY2FsIj5EYXZpZCBFbWVyeTwvYT4gYXJ0aWNsZSB0 byBteSBhdHRlbnRpb24uPC9wPgoKCTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY8L2gzPgoKCTxw PlVzaW5nIHRoZSA8Y29kZT5ub3c8L2NvZGU+IGFuZCA8Y29kZT5vZmZzZXQ8L2NvZGU+IGF0 dHJpYnV0ZXMgb2YgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX25vdyAvJmd0OzwvY29kZT4geW91 IGNhbiBlZmZlY3RpdmVseSBzZXQgJiM4MjE2O25vdyYjODIxNzsgdG8gYmUgYW55IHRpbWUg eW91IGxpa2UgYW5kIG1ha2UgY2FsY3VsYXRpb25zIGJhc2VkIG9uIGEgcGFydGljdWxhciBk YXRlLjwvcD4KCgk8cD5QbHVnZ2luZyB0aGUgPGNvZGU+P21vbnRoPC9jb2RlPiBhbmQgPGNv ZGU+P3llYXI8L2NvZGU+IGNvZGVzIGluIGFsbG93cyB5b3UgdG8gbWFrZSA8Y29kZT4mbHQ7 dHhwOnNtZF9hcnRpY2xlX2V2ZW50IC8mZ3Q7PC9jb2RlPiB0cmFjayB0aGUgY2FsZW5kYXIu IFNvIHlvdSBjYW4gYXV0b21hdGljYWxseSBzaG93IG9ubHkgdGhlIGV2ZW50cyB0aGF0IG9j Y3VyIGluIHRoZSBtb250aCB0aGUgdmlzaXRvciBpcyBicm93c2luZyB2aWEgdGhlIGNhbGVu ZGFyOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0 eHA6c21kX2NhbGVuZGFyIHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OyAvJmd0Owom bHQ7aDImZ3Q7RXZlbnRzIHRoaXMgbW9udGgmbHQ7L2gyJmd0OwombHQ7dHhwOnNtZF9hcnRp Y2xlX2V2ZW50IHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OwogICAgIGZyb209JiMz OTsmbHQ7dHhwOnNtZF9jYWxfbm93IG5vdz0mcXVvdDswMS0/bW9udGgtP3llYXImcXVvdDsg LyZndDsmIzM5OwogICAgIHRvPSYjMzk7Jmx0O3R4cDpzbWRfY2FsX25vdyBub3c9JnF1b3Q7 P21vbnRoLT95ZWFyJnF1b3Q7CiAgICAgICAgb2Zmc2V0PSZxdW90OzEgbW9udGgmcXVvdDsg LyZndDsmIzM5OyB0aW1lPSZxdW90O2FueSZxdW90OyB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7 Jmd0OwombHQ7bGkmZ3Q7Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7YiZndDsmbHQ7dHhwOnRp dGxlLyZndDsmbHQ7L2ImZ3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDtici8mZ3Q7Jmx0 O3R4cDpwb3N0ZWQgLyZndDsmbHQ7L2xpJmd0OwombHQ7L3R4cDpzbWRfYXJ0aWNsZV9ldmVu dCZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMiBjbGFzcz0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8 L2gyPgoKCTx1bD4KCQk8bGk+MjEgRGVjIDA4IHwgMC4xIHwgSW5pdGlhbCByZWxlYXNlIChz cG9uc29ycyBvbmx5KTwvbGk+CgkJPGxpPjIyIERlYyAwOCB8IDAuMiB8IEZpeGVkIGEgZmV3 IFczQyB2YWxpZGF0aW9uIGlzc3VlcyBhbmQgYWRkZWQgbW9yZSBkYXRhIHZhbGlkaXR5IGNo ZWNrcyA7IGF0dGVtcHRlZCB0byBhZGRyZXNzIGRhdGUvdGltZXpvbmUgcHJvYmxlbXMgKGFu ZCBtb3N0bHkgZmFpbGVkLCBzbyB3cm90ZSBhYm91dCBpdCBpbnN0ZWFkKSA7IGVuaGFuY2Vk IDxjb2RlPnNtZF9pZl9jYWw8L2NvZGU+IHRhZyB0byBjaGVjayBmb3IgZGF0ZXMgYW5kIDxj b2RlPmNhbGlkPC9jb2RlPiA7IGFkZGVkIDxjb2RlPmVzY2FwZTwvY29kZT4gYXR0cmlidXRl IHRvIHNtZF9jYWxfaW5mbyB0YWc8L2xpPgoJCTxsaT4yMyBEZWMgMDggfCAwLjIxIHwgQ2hh bmdlZCA8Y29kZT5pc293ZWVrczwvY29kZT4gc28gYW55IGdpdmVuIHRleHQgYmVjb21lcyB0 aGUgY29sdW1uIGhlYWRpbmcgOyBhZGRlZCA8Y29kZT53ZWVrPC9jb2RlPiBhdHRyaWJ1dGUg dG8gYWxsIHJlbGV2YW50IHRhZ3MgOyBhZGRlZCA8Y29kZT5kYXk8L2NvZGU+IGF0dHJpYnV0 ZSB0byA8Y29kZT5zbWRfY2FsX2luZm88L2NvZGU+IDsgZml4ZWQgPGNvZGU+bW9udGg8L2Nv ZGU+IGFuZCA8Y29kZT55ZWFyPC9jb2RlPiBhdHRyaWJ1dGVzIHNvIGNhbGVuZGFyIG5hdmln YXRpb24gb3ZlcnJpZGVzIHRoZW08L2xpPgoJCTxsaT4yNiBEZWMgMDggfCAwLjIyIHwgRW5o YW5jZWQgPGNvZGU+bmF2Y2xhc3M8L2NvZGU+IDsgYWRkZWQgPGNvZGU+bGlua3Bvc3RlZDwv Y29kZT4gKGJvdGggdGhhbmtzIG1yZGFsZSk8L2xpPgoJCTxsaT4yOCBEZWMgMDggfCAwLjIz IHwgQ29ycmVjdGVkIHRpbWV6b25lIG9mZnNldCBmYXV4IHBhcyA7IGFkZGVkIGZpcnN0L2xh c3Qgd2Vla2RheSByZWN1cnJlbmNlIGFuZCA8Y29kZT5yZWN1cmZvcm08L2NvZGU+IChhbGwg dGhhbmtzIG1yZGFsZSkgOyBmaXhlZCBtaW5pY2FsICYjODIxNjt0b2RheSYjODIxNzsgYmVp bmcgd3JvbmdseSBzZXQ8L2xpPgoJCTxsaT4wMSBKYW4gMDkgfCAwLjMgfCBBZGRlZCA8Y29k ZT5jZWxsZm9ybTwvY29kZT4sIDxjb2RlPm5hdmlkPC9jb2RlPiwgPGNvZGU+bmF2YXJyb3c8 L2NvZGU+LCBhbmQgPGNvZGU+bWFpbnRhaW48L2NvZGU+IDsgYWRkZWQgPGNvZGU+Jmx0O3R4 cDpzbWRfYXJ0aWNsZV9ldmVudCAvJmd0OzwvY29kZT4gKHRoYW5rcyBtcmRhbGUpIGFuZCA8 Y29kZT4mbHQ7dHhwOnNtZF9jYWxfY2xhc3MgLyZndDs8L2NvZGU+IDsgYWRkZWQgdGhlIDxj b2RlPnN0YW5kYXJkPC9jb2RlPiBhbmQgPGNvZGU+cmVjdXJmaXJzdDwvY29kZT4gZXZlbnQg ZmxhZ3MgOyBtYWRlIGNlbGwvZXZlbnQgZmxhZyBkaXN0aW5jdGlvbiBiZXR0ZXIgKGUuZy4g PGNvZGU+ZXZlbnQ8L2NvZGU+IGFuZCA8Y29kZT5ob2xzPC9jb2RlPiBmbGFncyBub3cgb2Nj dXIgPGVtPm9ubHk8L2VtPiBhdCB0aGUgY2VsbCBsZXZlbCkgOyBhZGRlZCBhYmlsaXR5IHRv IHNwZWNpZnkgYSA8Y29kZT5kYXlmb3JtYXQ8L2NvZGU+IGFycmF5LCBhZGRlZCBhIHdlZWsg c2VsZWN0IGxpc3QgYW5kIGVuaGFuY2VkIHRoZSA8Y29kZT5pc293ZWVrczwvY29kZT4gYXR0 cmlidXRlICh0aGFua3MgdWxpKSA7IGZpeGVkIHNtZF9pZl9jYWwmIzgyMTc7cyA8Y29kZT5m bGFnPC9jb2RlPiBidW1ibGluZywgYW5kIGFkZGVkIDxjb2RlPlNNRF9BTlk8L2NvZGU+IHRl c3QgOyBmaXhlZCBzbWRfY2FsX2luZm8gPGNvZGU+YXV0aG9yPC9jb2RlPiB3YXJuaW5nIGFu ZCBhZGRlZCA8Y29kZT5qb2luX3ByZWZpeDwvY29kZT4gOyBmaXhlZCBkYW5nbGluZyBhcnRp Y2xlIGFmdGVyIHBsdWdpbiB0ZXJtaW5hdGVzPC9saT4KCQk8bGk+MDIgSmFuIDA5IHwgMC4z MSB8IEFkZGVkIDxjb2RlPm9taXRmaWVsZDwvY29kZT4gYW5kIHRoZSA8Y29kZT5vbWl0PC9j b2RlPiBjZWxsIGZsYWcgKHRoYW5rcyB3b29mKTwvbGk+CgkJPGxpPjA0IEphbiAwOSB8IDAu MzIgfCBBZGRlZCA8Y29kZT5ub3c8L2NvZGU+IGFuZCA8Y29kZT5vZmZzZXQ8L2NvZGU+IHRv IDxjb2RlPnNtZF9jYWxfbm93PC9jb2RlPiA7IGZpeGVkIHdhcm5pbmcgaWYgbm8gZXZlbnRz IG1hdGNoIGluIHNtZF9hcnRpY2xlX2V2ZW50IDsgZml4ZWQgZmlyc3QvbGFzdCB0aW1lc3Rh bXBzICh0aGFua3MgbXJkYWxlKTwvbGk+CgkJPGxpPjA2IEphbiAwOSB8IDAuMzMgfCBGaXhl ZCA8Y29kZT5zbWRfY2FsX2NsYXNzPC9jb2RlPiB0eXBvIDsgY2hhbmdlZCA8Y29kZT5zbWRf aWZfY2FsPC9jb2RlPiBsb2dpYyB0byA8Y29kZT5vcjwvY29kZT4gYnkgZGVmYXVsdCAoYm90 aCB0aGFua3MgRWxzKSA7IGZpeGVkIG11bHRpIGRldGVjdGlvbiA7IG1hZGUgPGNvZGU+eWVh cndpZHRoPC9jb2RlPiBtb3JlIGludGVsbGlnZW50PC9saT4KCTwvdWw+CgoJPHA+PC9kaXY+ PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRl eHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBjb2Rl IHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNv dXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVs cCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAj OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46 MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21k X2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNz bWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFk ZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIw cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7 IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEycHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9 CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0 dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVw cGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xvcjoj MzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBk b3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpj ZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRo IHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVs IHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJlcXVpcmVkIHtjb2xv cjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7IH0KI3Nt ZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0gLS0tIEVO RCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiMzAyYWYwYjcyOTViMTYx ZTFjODJmNzRkNGNkY2FlYzQiO30=