# Name: smd_calendar v0.31 # 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 b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuMzEiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjYyOiJDYWxlbmRhciAvIGV2ZW50IC8gc2NoZWR1bGUgc3lzdGVtIHdpdGggZXZlbnRzIGFz IFRYUCBhcnRpY2xlcyI7czo0OiJjb2RlIjtzOjUyNzY4OiIvLyBCYXNlZCBoZWF2aWx5IG9u IG1kcF9jYWxlbmRhciAtIHRoYW5rcyENCi8vVE9ETzogSW52ZXN0aWdhdGUNCi8qDQokZCA9 IG5ldyBEYXRlVGltZSgnMjAwOC0xMi0yMiAxMjo1MicpOw0KZWNobyAkZC0+Z2V0VGltZXpv bmUoKS0+Z2V0TmFtZSgpOw0KKi8NCg0KaWYoICRkYXRlID0gZ3BzKCdkYXRlJykgKSB7DQoJ JF9HRVRbJ21vbnRoJ10gPSAkZGF0ZTsNCn0NCg0KZnVuY3Rpb24gc21kX2NhbGVuZGFyKCRh dHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR2YXJpYWJsZSwgJHByZWZz LCAkc21kX2NhbF9mbGFnLCAkc2RtX2NhbF91Y2xzLCAkc21kX2NhbF9pZCwgJHNtZF95ZWFy 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+ICcwLDAnLCAvLyBudW1iZXIgb2YgeWVhcnMgZWl0aGVyIHNp ZGUgb2YgdGhlIGZpcnN0L2xhc3QgYXJ0aWNsZSB0byBwZXJtaXQNCgkJJ2lzb3dlZWtzJyA9 PiAnJywgLy8gZW1wdHkgPSBkb24ndCBzaG93IElTTyB3ZWVrczsgb3IgdGV4dCBvZiBjb2x1 bW4gaGVhZGluZywgdGV4dCBvZiBjZWxsIHByZWZpeA0KCQknZGF5Zm9ybWF0JyA9PiAnQUJC UicsIC8vIEFCQlIgPSAlYSwgRlVMTCA9ICVBLCBvciBjdXN0b20gc3RyZnRpbWUgc3RyaW5n DQoJCSdtb250aGZvcm1hdCcgPT4gJ0ZVTEwnLCAvLyBBQkJSID0gJWIsIEZVTEwgPSAlQiwg b3IgY3VzdG9tIHN0cmZ0aW1lIHN0cmluZw0KCQknZmlyc3RkYXknID0+IDAsIC8vIDFzdCBk YXkgb2Ygd2VlayAwPVN1bmRheSwgNj1TYXR1cmRheSAoZm9yY2VkIHRvIE1vbmRheSBpZiBp c293ZWVrcz0xKQ0KCQknbWFpbnRhaW4nID0+ICdjYWxpZCcsIC8vIHdoZW4gbmF2aWdhdGlu Zywga2VlcCB0aGVzZSBpdGVtcyBpbiB0aGUgVVJMDQoJCSdnbXQnID0+IDAsDQoJCSdsYW5n JyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAwLA0KCSksICRhdHRzKSk7DQoNCgkkZnV0dXJlID0g KCAkdGltZSAhPSAncGFzdCcgKSA/IHRydWUgOiBmYWxzZTsgLy8gRGV0ZXJtaW5lIGhlYWRp bmcgc3R5bGUNCgkkc3RhdHVzID0gKCRzdGF0dXMpID8gJHN0YXR1cyA6ICdsaXZlJzsgLy8g aW4gY2FzZSBzdGF0dXMgaGFzIGJlZW4gZW1wdGllZA0KCSRmaXJzdGRheSA9ICgkaXNvd2Vl a3MgPT0gJycpID8gJGZpcnN0ZGF5IDogMTsNCgkkc3BhbmZvcm0gPSAoJHNwYW5mb3JtID09 ICdTTURfU0FNRScpID8gJGZvcm0gOiAkc3BhbmZvcm07DQoJJHJlY3VyZm9ybSA9ICgkcmVj dXJmb3JtID09ICdTTURfU0FNRScpID8gJGZvcm0gOiAkcmVjdXJmb3JtOw0KCSRjZWxsZm9y bSA9IChlbXB0eSgkY2VsbGZvcm0pKSA/ICcnIDogZmV0Y2hfZm9ybSgkY2VsbGZvcm0pOw0K DQoJLy8gU2V0IHVwIHRoZSBjbGFzcyBwcmVmaXhlcw0KCSRjbGV2cyA9IGRvX2xpc3QoJGNs YXNzbGV2ZWxzKTsNCgkkY2xzID0gZG9fbGlzdCgkY2xhc3NwcmVmaXhlcyk7DQoJJGNsYXNz cHJlZml4ID0gJGV2Y2xhc3NwcmVmaXggPSAkY2xzWzBdOw0KCWlmIChjb3VudCgkY2xzKSA+ IDEpew0KCQkkZXZjbGFzc3ByZWZpeCA9ICRjbHNbMV07DQoJfQ0KDQoJLy8gU2V0IHVwIHRo ZSBuYXYgY2xhc3MoZXMpDQoJJG1haW50YWluID0gZG9fbGlzdCgkbWFpbnRhaW4pOw0KCSRu YXZhcnJvdyA9IGRvX2xpc3QoJG5hdmFycm93KTsNCgkkbmF2cGFyciA9ICRuYXZhcnJvd1sw XTsNCgkkbmF2bmFyciA9IChjb3VudCgkbmF2YXJyb3cpID4gMSkgPyAkbmF2YXJyb3dbMV0g OiAkbmF2YXJyb3dbMF07DQoJJG5hdmNsYXNzID0gZG9fbGlzdCgkbmF2Y2xhc3MpOw0KCSRu YXZwY2xhc3MgPSAkbmF2Y2xhc3NbMF07DQoJJG5hdm5jbGFzcyA9IChjb3VudCgkbmF2Y2xh c3MpID4gMSkgPyAkbmF2Y2xhc3NbMV0gOiAkbmF2Y2xhc3NbMF07DQoNCgkvLyBGaWx0ZXJz DQoJJGZvcHRzID0gYXJyYXkoKTsNCgkkY2F0U1FMID0gJHNlY1NRTCA9ICRhdXRoU1FMID0g Jyc7DQoJaWYoJGNhdGVnb3J5KSB7DQoJCSRmb3B0c1snYyddID0gJGNhdGVnb3J5Ow0KCQkk Y2F0U1FMID0gZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGNhdGVnb3J5 KSkpKTsNCgkJJGNhdFNRTCA9ICIgQU5EICggQ2F0ZWdvcnkxIElOICgiLiRjYXRTUUwuIikg T1IgQ2F0ZWdvcnkyIElOICgiLiRjYXRTUUwuIikgKSAiOw0KCX0NCglpZigkc2VjdGlvbikg ew0KCQkkZm9wdHNbJ3MnXSA9ICRzZWN0aW9uOw0KCQkkc2VjU1FMID0gZG9RdW90ZShqb2lu KCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJHNlY3Rpb24pKSkpOw0KCQkkc2VjU1FMID0gIiBB TkQgU2VjdGlvbiBJTiAoIi4kc2VjU1FMLiIpICI7DQoJfQ0KCWlmKCRhdXRob3IpIHsNCgkJ JGZvcHRzWydhdXRob3InXSA9IGh0bWxlbnRpdGllcyhncHMoJ2F1dGhvcicpKTsNCgkJJGF1 dGhTUUwgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkYXV0aG9yKSkp KTsNCgkJJGF1dGhTUUwgPSAiIEFORCBBdXRob3JJRCBJTiAoIi4kYXV0aFNRTC4iKSAiOw0K CX0NCgkkc3RhdHVzID0gZG9fbGlzdCgkc3RhdHVzKTsNCgkkc3RhdGkgPSBhcnJheSgpOw0K CWZvcmVhY2ggKCRzdGF0dXMgYXMgJHN0YXQpIHsNCgkJaWYgKGVtcHR5KCRzdGF0KSkgew0K CQkJY29udGludWU7DQoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkpIHsNCgkJCSRz dGF0aVtdID0gJHN0YXQ7DQoJCX0gZWxzZSB7DQoJCQkkc3RhdGlbXSA9IGdldFN0YXR1c051 bSgkc3RhdCk7DQoJCX0NCgl9DQoJJHN0YXRpID0gIiBTdGF0dXMgSU4gKCIuZG9RdW90ZShq b2luKCcsJywgJHN0YXRpKSkuIikiOw0KDQoJJGV4cGlyZWQgPSAoJGV4cGlyZWQpID8gJGV4 cGlyZWQgOiAkcHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddOw0KCSRleHBpcmVk ID0gKCgkZXhwaXJlZCkgPyAnJyA6ICcgQU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4cGly ZXMgPSAnLk5VTExEQVRFVElNRS4nKScpOw0KCSRldmVudGNsYXNzZXMgPSBkb19saXN0KCRl dmVudGNsYXNzZXMpOw0KCSRob2xpZGF5ZmxhZ3MgPSBkb19saXN0KCRob2xpZGF5ZmxhZ3Mp Ow0KCSRsaW5rcG9zdGVkID0gZG9fbGlzdCgkbGlua3Bvc3RlZCk7DQoNCgkvLyBXb3JrIG91 dCB0aGUgZmlyc3QgYW5kIGxhc3QgcG9zdHMgdG8gZGV0ZXJtaW5lIHRoZSB5ZWFyIHJhbmdl DQoJJGVhcmxpZXN0ID0gc2FmZV9yb3coJ3VuaXhfdGltZXN0YW1wKFBvc3RlZCkgQVMgdVBv c3RlZCcsICd0ZXh0cGF0dGVybicsICRzdGF0aS4oKCRjYXRlZ29yeSkgPyAkY2F0U1FMIDog JycpLigoJHNlY3Rpb24pID8gJHNlY1NRTCA6ICcnKS4oKCRhdXRob3IpID8gJGF1dGhTUUwg OiAnJykuJyBPUkRFUiBCWSBQb3N0ZWQgQVNDIExJTUlUIDAsIDEnLCAkZGVidWcpOw0KCSRs YXRlc3QgPSBzYWZlX3JvdygndW5peF90aW1lc3RhbXAoTGFzdE1vZCkgQVMgdUxhc3RNb2Qn LCAndGV4dHBhdHRlcm4nLCAkc3RhdGkuKCgkY2F0ZWdvcnkpID8gJGNhdFNRTCA6ICcnKS4o KCRzZWN0aW9uKSA/ICRzZWNTUUwgOiAnJykuKCgkYXV0aG9yKSA/ICRhdXRoU1FMIDogJycp LicgQU5EIFBvc3RlZCA8IG5vdygpIE9SREVSIEJZIExhc3RNb2QgREVTQyBMSU1JVCAwLCAx JywgJGRlYnVnKTsNCgkkeWVhcndpZHRoID0gZG9fbGlzdCgkeWVhcndpZHRoKTsNCglpZiAo Y291bnQoJHllYXJ3aWR0aCkgPT0gMSkgJHllYXJ3aWR0aFsxXSA9ICR5ZWFyd2lkdGhbMF07 DQoJJGVhcmxpZXN0ID0gZGF0ZSgiWSIsIHN0cnRvdGltZSgiLSIuJHllYXJ3aWR0aFswXS4i IHllYXIiLCAoIChlbXB0eSgkZWFybGllc3QpKSA/IHRpbWUoKSA6ICRlYXJsaWVzdFsndVBv c3RlZCddKSApICk7DQoJJGxhdGVzdCA9IGRhdGUoIlkiLCBzdHJ0b3RpbWUoIisiLiR5ZWFy d2lkdGhbMV0uIiB5ZWFyIiwgKCAoZW1wdHkoJGxhdGVzdCkpID8gdGltZSgpIDogJGxhdGVz dFsndUxhc3RNb2QnXSkgKSApOw0KDQoJLy8gQ2hlY2sgdGhlIFVSTCBmb3IgY3VycmVudCBk YXRlIGFuZCBjYWxlbmRhciB0YXJnZXQgaW5mbw0KCSRpbmNvbWluZ19jYWxpZCA9IGdwcygn Y2FsaWQnKTsNCgkkaW5jb21pbmdfeWVhciA9IChncHMoJ3knKSBhbmQgaXNfbnVtZXJpYyhn cHMoJ3knKSkpID8gKGludClncHMoJ3knKSA6ICcnOw0KCSRpbmNvbWluZ19tb250aCA9IChn cHMoJ20nKSBhbmQgaXNfbnVtZXJpYyhncHMoJ20nKSkpID8gKGludClncHMoJ20nKSA6ICcn Ow0KCSRpbmNvbWluZ193ZWVrID0gKGdwcygndycpIGFuZCBpc19udW1lcmljKGdwcygndycp KSkgPyAoaW50KWdwcygndycpIDogJyc7DQoNCglpZigkc3RhdGljKSB7IC8vIGlmIHdlJ3Jl IHN0YXRpYyB3L28gYW55IHN1cHBsaWVkIHZhcnMsIHVzZSB0aGUgY3VycmVudCBkYXRlDQoJ CWlmKCEkeWVhcikgeyAkeWVhciA9IHNhZmVfc3RyZnRpbWUoJyVZJyk7IH0NCgkJaWYoISRt b250aCkgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCclbScpOyB9DQoJfSBlbHNlIHsgLy8g b3RoZXJ3aXNlIHVzZSBjdXJyZW50IGRhdGUgb25seSBpZiB0aGVyZSdzIG5vdGhpbmcgZWxz ZQ0KCQlpZiggJGlkID09ICRpbmNvbWluZ19jYWxpZCApIHsgLy8gdXNlIGluY29taW5nDQoJ CQkkeWVhciA9ICgkaW5jb21pbmdfeWVhcikgPyAkaW5jb21pbmdfeWVhciA6ICgoJHllYXIp ID8gJHllYXIgOiBzYWZlX3N0cmZ0aW1lKCclWScpKTsNCgkJCSRtb250aCA9ICgkaW5jb21p bmdfbW9udGgpID8gJGluY29taW5nX21vbnRoIDogKCgkbW9udGgpID8gJG1vbnRoIDogc2Fm ZV9zdHJmdGltZSgnJW0nKSk7DQoJCQkvLyBJZiB3ZWVrIGlzIHVzZWQsIGFkanVzdCBtb250 aCBzbyBpdCBlbmNvbXBhc3NlcyB0aGUgZ2l2ZW4gd2Vlaw0KCQkJJHdlZWsgPSAkaW5jb21p bmdfd2VlazsNCgkJCWlmICgkd2Vlaykgew0KCQkJCSRtb250aCA9IHNhZmVfc3RyZnRpbWUo IiVtIiwgZ21ta3RpbWUgKDEsMSwxLDEsNyokd2VlaywkeWVhcikpOyAvLyBHdWVzcyB0aGUg bW9udGggZnJvbSB0aGUgd2Vlaw0KCQkJfQ0KCQl9IGVsc2UgeyAvLyB1c2UgY3VycmVudA0K CQkJaWYoISR5ZWFyKSB7ICR5ZWFyID0gc2FmZV9zdHJmdGltZSgnJVknKTsgfQ0KCQkJaWYo ISRtb250aCkgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCclbScpOyB9DQoJCQlpZigkd2Vl aykgeyAkbW9udGggPSBzYWZlX3N0cmZ0aW1lKCIlbSIsIGdtbWt0aW1lICgxLDEsMSwxLDcq JHdlZWssJHllYXIpKTsgfQ0KCQl9DQoJfQ0KCSRzbWRfY2FsX2lkID0gKCRpbmNvbWluZ19j YWxpZCkgPyAkaW5jb21pbmdfY2FsaWQgOiAkaWQ7DQoJJHNtZF95ZWFyID0gJHllYXI7ICRz bWRfbW9udGggPSAkbW9udGg7IC8vICRzbWRfd2VlayBhbmQgc21kX2RheSBhcmUgc2V0IHBl ciBldmVudCBsYXRlcg0KDQoJLy8gVGhlIHRpbWVzIGluIHRoZSBEQiBhcmUgc3RvcmVkIHVz aW5nIHRoZSBzZXJ2ZXIncyBsb2NhbCB0aW1lLCBzbyB3ZSBkb24ndA0KCS8vIHdhbnQgdG8g YWRqdXN0IGFueXRoaW5nIChzaW5jZSBta3RpbWUgdXNlcyB0aGUgc2VydmVyJ3MgbG9jYWwg dGltZSkuDQoJLy9UT0RPOiBXb3JyeSBhYm91dCBnbXQgLyBkc3QNCgkkdHNfZmlyc3QgPSBt a3RpbWUoMCwgMCwgMCwgJG1vbnRoLCAxLCAkeWVhcik7DQoJJHRzX2xhc3QgPSBta3RpbWUo MjMsIDU5LCA1OSwgJG1vbnRoLCBkYXRlKCd0JywkdHNfZmlyc3QpLCAkeWVhcik7DQoNCgkk ZXh0cmFzcWwgPSAkY2F0U1FMIC4gJHNlY1NRTCAuICRhdXRoU1FMOw0KCXN3aXRjaCgkdGlt ZSkgew0KCQljYXNlICJhbnkiIDogYnJlYWs7DQoJCWNhc2UgImZ1dHVyZSIgOiAkZXh0cmFz cWwgLj0gIiBBTkQgUG9zdGVkID4gQ1VSREFURSgpIjsgYnJlYWs7DQoJCWRlZmF1bHQgOiAk ZXh0cmFzcWwgLj0gIiBBTkQgUG9zdGVkIDwgQ1VSREFURSgpIjsgYnJlYWs7IC8vIFRoZSBw YXN0DQoJfQ0KDQoJLy8gSG9saWRheXMgYXJlIGdsb2JhbCAnZXhjbHVzaW9ucycsIGVpdGhl ciBkZWZpbmVkIGRpcmVjdGx5IG9yIGluIGEgPHR4cDp2YXJpYWJsZSAvPg0KCSRob2xpZGF5 cyA9IGRvX2xpc3QoJGhvbGlkYXlzKTsNCgkkdHhwaG9scyA9IGRvX2xpc3QoJGhvbGlkYXlz WzBdLCAiOiIpOw0KCWlmICgkdHhwaG9sc1swXSA9PSAidHhwdmFyIikgew0KCQkkaG9saWRh eXMgPSBkb19saXN0KCR2YXJpYWJsZVskdHhwaG9sc1sxXV0pOw0KCX0NCgkvLyBGb3JjZSBl YWNoIGhvbGlkYXkgdG8gYSBrbm93biBmb3JtYXQuIEhvbGlkYXlzIHdpdGhvdXQgeWVhcnMg dXNlIGN1cnJlbnQgeWVhcg0KCWZvcmVhY2ggKCRob2xpZGF5cyBhcyAka2V5ID0+ICR2YWwp IHsNCgkJaWYgKGVtcHR5KCR2YWwpKSBjb250aW51ZTsNCgkJJG51bXBhcnRzID0gcHJlZ19t YXRjaCgnL14oW1xkXHddKykuPyhbXGRcd10rKS4/KFtcZFx3XSspPyQvJywgJHZhbCwgJHBh cnRzKTsNCg0KCQlpZiAoJG51bXBhcnRzKSB7DQoJCQlpZiAoY291bnQoJHBhcnRzKSA9PSAz KSB7DQoJCQkJJHBhcnRzWzNdID0gJHllYXI7DQogICAgICAgICB9DQoJCQkkdmFsID0gc3Ry X3BhZCgkcGFydHNbMV0sIDIsICcwJywgU1RSX1BBRF9MRUZUKS4nLScuc3RyX3BhZCgkcGFy dHNbMl0sIDIsICcwJywgU1RSX1BBRF9MRUZUKS4nLScuJHBhcnRzWzNdOw0KCQl9DQoJCSRo b2xpZGF5c1ska2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgl9DQoN CglpZiAoJGRlYnVnID4gMCAmJiAhZW1wdHkoJGhvbGlkYXlzKSAmJiAkaG9saWRheXNbMF0g IT0gJycpIHsNCgkJZWNobyAiKysgSE9MSURBWVMgKysgIjsNCgkJZG1wKCRob2xpZGF5cyk7 DQoJfQ0KDQoJLy8gR2V0IGFsbCBtYXRjaGluZyBhcnRpY2xlcyBpbiAoYW5kIGJlZm9yZSkg dGhpcyBtb250aA0KCSRldmVudHMgPSBhcnJheSgpOw0KCSRzcWwyID0gJHN0YXRpIC4gIiBI QVZJTkcgdVBvc3RlZCA8PSAiLiR0c19sYXN0IC4gJGV4cGlyZWQgLiAkZXh0cmFzcWwgLiIg T1JERVIgQlkgUG9zdGVkIEFTQyI7DQoJJGdyYWJDb2xzID0gJyosIHVuaXhfdGltZXN0YW1w KFBvc3RlZCkgYXMgdVBvc3RlZCwgdW5peF90aW1lc3RhbXAoTGFzdE1vZCkgYXMgdUxhc3RN b2QsIHVuaXhfdGltZXN0YW1wKEV4cGlyZXMpIGFzIHVFeHBpcmVzJzsNCgkkZXZsaXN0ID0g c2FmZV9yb3dzKCRncmFiQ29scywgJ3RleHRwYXR0ZXJuJywgJHNxbDIsICRkZWJ1Zyk7DQoJ YXJ0aWNsZV9wdXNoKCk7DQoNCgkvLyBJZiBhbnkgZXZlbnRzIHJlY3VyIGFuZCBmYWxsIHdp dGhpbiB0aGUgY3VycmVudCBtb250aCwgYWRkIHRob3NlIGFzIHdlbGwNCgkvLyBJZiBhbnkg ZGF0ZXMgYXJlIHRvIGJlIGV4Y2x1ZGVkLCB0aGUgZW50cnkgaXMgc2tpcHBlZCBVTkxFU1Mg c2hvd3NraXBwZWQgaW5kaWNhdGVzIG90aGVyd2lzZQ0KCWZvcmVhY2ggKCRldmxpc3QgYXMg JHJvdykgew0KCQkkaWR4ID0gMDsgLy8gSW4gY2FzZSB0aGUgMXN0IGRheSBvZiB0aGUgbW9u dGggaXMgYSBjb250aW51YXRpb24gb2YgYW4gZXZlbnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBw cmV2aW91cyBtb250aA0KCQkkc3RhcnQgPSAkcm93Wyd1UG9zdGVkJ107DQoJCSRzdGFydF9k YXRlID0gZGF0ZSgiWS1tLWQiLCAkc3RhcnQpOyAvLyBGb3IgcmVjdXJyaW5nL3NwYW5uZWQg ZXZlbnRzIG9uIGEgbWluaWNhbCwgdGhpcyBpcyB0aGUgZXZlbnQgdGhlIGNlbGwgbGlua3Mg dG8NCgkJJHJlYWxfZW5kID0gJHJvd1sndUV4cGlyZXMnXTsNCgkJJGVuZCA9ICgkcmVhbF9l bmQgIT0gMCAmJiAkcmVhbF9lbmQgPCAkdHNfbGFzdCkgPyAkcmVhbF9lbmQgOiAkdHNfbGFz dDsNCgkJJHNtZF9jYWxfZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KDQoJCWlm ICgkZGVidWcgPiAxKSB7DQoJCQllY2hvICcrKyBFVkVOVCBTVEFSVCAvLyBFTkQgLy8gUkVB TCBFTkQgKysnOw0KCQkJZG1wKCRyb3dbJ1RpdGxlJ10pOw0KCQkJZG1wKGRhdGUoJ2QtTS1Z IEg6aTpzJywgJHN0YXJ0KSAuJyAvLyAnLiBkYXRlKCdkLU0tWSBIOmk6cycsICRlbmQpIC4n IC8vICcuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHJlYWxfZW5kKSk7DQoJCQlpZiAoJGRlYnVn ID4gMikgew0KCQkJCWRtcCgkcm93KTsNCgkJCX0NCgkJfQ0KDQoJCSRtdWx0aSA9ICgkcm93 Wyd1RXhwaXJlcyddID4gJHJvd1sndVBvc3RlZCddICYmICRyb3dbJ3VFeHBpcmVzJ10gPiAk dHNfZmlyc3QpID8gdHJ1ZSA6IGZhbHNlOw0KCQkkcmVjdXIgPSAoZW1wdHkoJHJvd1skc3Rl cGZpZWxkXSkpID8gZmFsc2UgOiB0cnVlOw0KCQkkaG9sX2hpdCA9IGluX2FycmF5KGRhdGUo ImQtTS1ZIiwgJHN0YXJ0KSwgJGhvbGlkYXlzKTsNCgkJJGV2Y2xhc3NlcyA9IGFycmF5KCk7 DQoJCWZvcmVhY2ggKCRldmVudGNsYXNzZXMgYXMgJGV2Y2xzKSB7DQoJCQlzd2l0Y2ggKCRl dmNscykgew0KCQkJCWNhc2UgIiI6DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImdjYXQiOg0K CQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ2MnXSkgJiYgIWVtcHR5KCRwcmV0ZXh0WydjJ10p KSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcHJldGV4dFsnYydd Ow0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhdGVnb3J5IjoNCgkJCQkJaWYg KGlzc2V0KCRyb3dbJ0NhdGVnb3J5MSddKSAmJiAhZW1wdHkoJHJvd1snQ2F0ZWdvcnkxJ10p KSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcm93WydDYXRlZ29y eTEnXTsNCgkJCQkJfQ0KCQkJCQlpZiAoaXNzZXQoJHJvd1snQ2F0ZWdvcnkyJ10pICYmICFl bXB0eSgkcm93WydDYXRlZ29yeTInXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNs YXNzcHJlZml4LiRyb3dbJ0NhdGVnb3J5MiddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJ CWNhc2UgInNlY3Rpb24iOg0KCQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ3MnXSkgJiYgIWVt cHR5KCRwcmV0ZXh0WydzJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3By ZWZpeC4kcHJldGV4dFsncyddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImF1 dGhvciI6DQoJCQkJCWlmIChpc3NldCgkcHJldGV4dFsnYXV0aG9yJ10pICYmICFlbXB0eSgk cHJldGV4dFsnYXV0aG9yJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3By ZWZpeC4kcHJldGV4dFsnYXV0aG9yJ107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJZGVm YXVsdDoNCgkJCQkJaWYgKGlzc2V0KCRyb3dbJGV2Y2xzXSkgJiYgIWVtcHR5KCRyb3dbJGV2 Y2xzXSkpIHsNCgkJCQkJCSRldmNsYXNzZXNbXSA9ICRldmNsYXNzcHJlZml4LiRyb3dbJGV2 Y2xzXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQkkZXZjbGFzc2VzID0g KCRldmNsYXNzZXMpID8gJyAnLiBqb2luKCcgJywgJGV2Y2xhc3NlcykgOiAnJzsNCgkJJGln bm9yZSA9ICRvbWl0ID0gJGNmbGFnID0gYXJyYXkoKTsNCg0KCQlpZiAoJGRlYnVnID4gMSAm JiAkZXZjbGFzc2VzKSB7DQoJCQllY2hvICcrKyBFVkVOVCBDTEFTU0VTICsrJzsNCgkJCWRt cCgkZXZjbGFzc2VzKTsNCgkJfQ0KDQoJCS8vIEV2ZW50cyB0aGF0IHN0YXJ0IHRoaXMgbW9u dGgNCgkJaWYgKCRzdGFydCA8ICRlbmQgJiYgJHN0YXJ0ID4gJHRzX2ZpcnN0KSB7DQoJCQlw b3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJLy8gYSBzdGFuZGFyZCBldmVudCBvciBz dGFydCBvZiBhIG11bHRpDQoJCQlpZiAoJHNob3dzcGFubmVkICYmICRtdWx0aSAmJiAhJHJl Y3VyKSB7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ211bHRpZmlyc3QnOw0KCQkJfQ0KCQkJ aWYgKCRyZWN1cikgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cmZpcnN0JzsNCgkJ CX0NCgkJCWlmICghJHNtZF9jYWxfZmxhZykgew0KCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdz dGFuZGFyZCc7DQoJCQl9DQoJCQlpZiAoICggJGhvbF9oaXQgJiYgIWluX2FycmF5KCdtdWx0 aScsJGhvbGlkYXlmbGFncykgJiYgaW5fYXJyYXkoJ211bHRpZmlyc3QnLCRzbWRfY2FsX2Zs YWcpICkgfHwgKCAkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3N0YW5kYXJkJywkaG9saWRheWZs YWdzKSAmJiBpbl9hcnJheSgnc3RhbmRhcmQnLCRzbWRfY2FsX2ZsYWcpICkgKSB7DQoJCQkJ JHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQl9DQoJCQlmb3JlYWNoICgkc21kX2Nh bF9mbGFnIGFzICRpdGVtKSB7DQoJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07 DQoJCQl9DQoNCgkJCSRpZHggPSAoaW50KXN0cmZ0aW1lKCclZCcsICRzdGFydCk7DQoJCQkk c21kX2RheSA9ICRpZHg7DQoJCQkkc21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkc3RhcnQp Ow0KCQkJJG9wID0gKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkZm9ybSkgPyBwYXJz ZV9mb3JtKCRmb3JtKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVmKCRyb3dbJ1Rp dGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyIn KSkgKTsNCgkJCSRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAnZmxhZycg PT4gJHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFy cmF5X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNzZXMsICdw b3N0ZWQnID0+ICRzdGFydF9kYXRlKTsNCgkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAk c21kX2NhbF91Y2xzID0gYXJyYXkoKTsNCgkJfQ0KDQoJCS8vIEdlbmVyYXRlIGEgc2tpcCBh cnJheSBmb3IgdGhpcyBldmVudA0KCQlpZiAoJHNraXBmaWVsZCAmJiAkcm93WyRza2lwZmll bGRdICE9ICcnKSB7DQoJCQkkaWdub3JlID0gZG9fbGlzdCgkcm93WyRza2lwZmllbGRdKTsN CgkJCWZvcmVhY2ggKCRpZ25vcmUgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGlnbm9yZVsk a2V5XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsgLy8gRm9yY2UgZWFjaCBk YXRlIHRvIGEga25vd24gZm9ybWF0DQoJCQl9DQoJCX0NCgkJLy8gR2VuZXJhdGUgYW4gb21p dCBhcnJheSBmb3IgdGhpcyBldmVudA0KCQlpZiAoJG9taXRmaWVsZCAmJiAkcm93WyRvbWl0 ZmllbGRdICE9ICcnKSB7DQoJCQkkb21pdCA9IGRvX2xpc3QoJHJvd1skb21pdGZpZWxkXSk7 DQoJCQlmb3JlYWNoICgkb21pdCBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCQkkb21pdFska2V5 XSA9IGRhdGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgkJCX0NCgkJfQ0KCQlpZiAo JGRlYnVnID4gMSAmJiAoJGlnbm9yZSB8fCAkb21pdCkpIHsNCgkJCWVjaG8gJysrIE9NSVRU RUQgREFURVMgKysnOw0KCQkJZG1wKCRvbWl0KTsNCgkJCWVjaG8gJysrIENBTkNFTExFRCBE QVRFUyArKyc7DQoJCQlkbXAoJGlnbm9yZSk7DQoJCX0NCgkJLy8gQ2FsY3VsYXRlIHRoZSBk YXRlIG9mZnNldHMgYW5kIGNoZWNrIHJlY3VycmluZyBldmVudHMgdGhhdCBmYWxsIHdpdGhp biB0aGUgbW9udGggb2YgaW50ZXJlc3QNCgkJaWYgKCRzdGVwZmllbGQgJiYgJHJvd1skc3Rl cGZpZWxkXSAhPSAnJykgew0KCQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0ZXBmaWVsZF0p Ow0KCQkJZm9yZWFjaCAoJGZyZXEgYXMgJGludGVydmFsKSB7DQoJCQkJJG1heF9sb29wID0g OTk5OTk7IC8vIFl1aywgYnV0IHByYWN0aWNhbGx5IGxpbWl0bGVzcw0KCQkJCSRpbnRlcnZh bCA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMCwwLDAsJG1v bnRoLDEpKSwgJGludGVydmFsKTsNCgkJCQkkaW50ZXJ2YWwgPSBzdHJfcmVwbGFjZSgiP3ll YXIiLCAkeWVhciwgJGludGVydmFsKTsNCgkJCQlpZiAoc3RycG9zKCRpbnRlcnZhbCwgImxh c3QiKSA9PT0gMCkgew0KCQkJCQkkaW50ZXJ2YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0 b3RpbWUoJGludGVydmFsLCBta3RpbWUoMTIsIDAsIDAsIGRhdGUoIm4iLG1rdGltZSgwLDAs MCwkbW9udGgsMSwkeWVhcikpKzEsIDEsICR5ZWFyKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAx Ow0KCQkJCX0gZWxzZSBpZiAoc3RycG9zKCRpbnRlcnZhbCwgImZpcnN0IikgPT09IDApIHsN CgkJCQkJJGludGVydmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1lKCRpbnRlcnZh bCwgbWt0aW1lKDEyLCAwLCAwLCAoKCRtb250aD4xKSA/ICRtb250aC0xIDogMTIpLCBkYXRl KCJ0Iixta3RpbWUoMCwwLDAsJG1vbnRoLTEsMSwoKCRtb250aD09MSkgPyAkeWVhci0xOiAk eWVhcikpKSwgKCgkbW9udGg9PTEpID8gJHllYXItMTogJHllYXIpKSkpOw0KCQkJCQkkbWF4 X2xvb3AgPSAxOw0KCQkJCX0NCgkJCQkkdHNfbG9vcCA9IDA7DQoJCQkJJHRzX2N1cnIgPSAk c3RhcnQ7DQoJCQkJd2hpbGUgKCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfbG9vcCA8ICRtYXhf bG9vcCkgew0KCQkJCQlpZiAoJG1heF9sb29wID09IDEpIHsNCgkJCQkJCSR0c19jdXJyID0g c3RydG90aW1lKCRpbnRlcnZhbCk7DQoJCQkJCQkkdHNfY3VyciA9ICgkdHNfY3VyciA8ICRz dGFydCB8fCAkdHNfY3VyciA+ICRlbmQpID8gJHN0YXJ0IDogJHRzX2N1cnI7DQoJCQkJCX0g ZWxzZSB7DQoJCQkJCQkkdHNfY3VyciA9IHN0cnRvdGltZSgkaW50ZXJ2YWwsICR0c19jdXJy KTsNCgkJCQkJfQ0KCQkJCQlpZiAoJHRzX2N1cnIgPT09IGZhbHNlKSB7DQoJCQkJCQkkdHNf bG9vcCsrOw0KCQkJCQkJYnJlYWs7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQlpZiAoJGRlYnVn ID4gMSkgew0KCQkJCQkJCWRtcCgiSU5URVJWQUw6ICIuIGRhdGUoJ2QtTS1ZIEg6aTpzJywg JHRzX2N1cnIpKTsNCgkJCQkJCX0NCgkJCQkJCWlmICgkdHNfY3VyciA8ICRlbmQgJiYgJHRz X2N1cnIgPj0gJHRzX2ZpcnN0ICYmICR0c19jdXJyICE9ICRzdGFydCkgew0KCQkJCQkJCS8v IEEgcmVjdXJyaW5nIGV2ZW50LiBDaGVjayBpdCBpc24ndCBhIGhvbGlkYXkgb3IgdG8gYmUg aWdub3JlZA0KCQkJCQkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkJCQkJJG9w ID0gJyc7DQoJCQkJCQkJJGlkeCA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHRzX2N1cnIpOw0K CQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdyZWN1cic7DQoJCQkJCQkJJHRoaXNkYXRlID0g ZGF0ZSgiZC1NLVkiLCAkdHNfY3Vycik7DQoJCQkJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgk dGhpc2RhdGUsICRvbWl0KTsNCgkJCQkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2Rh dGUsICRpZ25vcmUpOw0KCQkJCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAk aG9saWRheXMpOw0KCQkJCQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXko J3JlY3VyJywkaG9saWRheWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCQkJCWlmICgg JG9taXRfbWUgKSB7DQoJCQkJCQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQkJ CQl9DQoJCQkJCQkJaWYgKCAoISRzaG93X21lIHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9t ZSApIHsNCgkJCQkJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQkJCQkJfQ0K CQkJCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCQkJCQkJJGNm bGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQkJCQkJfQ0KDQoJCQkJCQkJLy8gQ3Jl YXRlIHRoZSBldmVudHMgdGhhdCBhcHBlYXIgaW4gdGhlIGNlbGwgYnV0IG9ubHkgaWYgdGhl eSd2ZSBub3QgYXBwZWFyZWQgYmVmb3JlLCBvciBhcmUgdG8gYmUgaWdub3JlZC9vbWl0dGVk DQoJCQkJCQkJaWYgKCEkb21pdF9tZSkgew0KCQkJCQkJCQlpZiAoKCRzaG93X21lICYmICRz aG93X2hvbCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkJCQkkc21kX2RheSA9ICRpZHg7 DQoJCQkJCQkJCQkkc21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkdHNfY3Vycik7DQoJCQkJ CQkJCQkkb3AgPSAoJHJlY3VyZm9ybSkgPyBwYXJzZV9mb3JtKCRyZWN1cmZvcm0pIDogKCgk dGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVm KCRyb3dbJ1RpdGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1Rp dGxlJ10uJyInKSkgKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQkkdXNlZCA9IGFy cmF5KCk7DQoJCQkJCQkJaWYgKGlzc2V0KCRldmVudHNbJGlkeF0pICYmICRldmVudHNbJGlk eF0gIT0gTlVMTCkgew0KCQkJCQkJCQlmb3JlYWNoICgkZXZlbnRzWyRpZHhdIGFzICRldikg ew0KCQkJCQkJCQkJJHVzZWRbXSA9ICRldlsnZXYnXTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0N CgkJCQkJCQlpZiAoaXNzZXQoJGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSA9PSBO VUxMIHx8ICFpbl9hcnJheSgkb3AsICR1c2VkKSkgew0KCQkJCQkJCQkkZXZlbnRzWyRpZHhd W10gPSBhcnJheSgnZXYnID0+ICRvcCwgJ2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFz c2VzJyA9PiAoKCRjZmxhZykgPyBqb2luKCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRf Y2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFzc2VzLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7 DQoJCQkJCQkJfQ0KCQkJCQkJCSRzbWRfY2FsX2ZsYWcgPSAkY2ZsYWcgPSAkc21kX2NhbF91 Y2xzID0gYXJyYXkoKTsNCgkJCQkJCX0NCgkJCQkJCSR0c19sb29wKys7DQoJCQkJCX0NCgkJ CQl9DQoJCQl9DQoJCX0gZWxzZSBpZiAoJHNob3dzcGFubmVkICYmICRtdWx0aSkgew0KCQkJ Ly8gTm9uLXJlY3VycmluZyBldmVudHMgbWF5IHNwYW4gbW9yZSB0aGFuIG9uZSBkYXRlIGJ1 dCB0aGV5IG11c3Qgc3RpbGwgcmVzcGVjdCBpZ25vcmVkIGRhdGVzIGFuZCBob2xpZGF5cw0K CQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsNCgkJCSRsYXN0ZGF5ID0gKGludClzdHJm dGltZSgnJWQnLCAkZW5kKTsNCgkJCSRyZWFsX2xhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCcl ZCcsICRyZWFsX2VuZCk7DQoJCQl3aGlsZSAoKyskaWR4IDw9ICRsYXN0ZGF5KSB7DQoJCQkJ JG9wID0gJyc7DQoJCQkJJG11bHRpZmxhZyA9ICgkaWR4PT0kcmVhbF9sYXN0ZGF5KSA/ICdt dWx0aWxhc3QnIDogKCgkaWR4PT0xKSA/ICdtdWx0aXByZXYnIDogJ211bHRpJyk7DQoJCQkJ JHNtZF9jYWxfZmxhZ1tdID0gJG11bHRpZmxhZzsNCgkJCQkkdGhpc3RpbWUgPSBnbW1rdGlt ZSgwLCAwLCAwLCAkbW9udGgsICRpZHgsICR5ZWFyKTsNCgkJCQkkdGhpc2RhdGUgPSBkYXRl KCJkLU0tWSIsICR0aGlzdGltZSk7DQoJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgkdGhpc2Rh dGUsICRvbWl0KTsNCgkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25v cmUpOw0KCQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkaG9saWRheXMpOw0K CQkJCSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ211bHRpJywkaG9saWRh eWZsYWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCWlmICggJG9taXRfbWUgKSB7DQoJCQkJ CSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQl9DQoJCQkJaWYgKCAoISRzaG93X21l IHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9jYWxfZmxhZ1td ID0gJ2NhbmNlbCc7DQoJCQkJfQ0KCQkJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0 ZW0pIHsNCgkJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVmaXguJGl0ZW07DQoJCQkJfQ0KCQkJ CS8vIENyZWF0ZSB0aGUgc3Bhbm5lZCBldmVudCB0aGF0IGFwcGVhcnMgaW4gdGhlIGNlbGwN CgkJCQlpZiAoISRvbWl0X21lKSB7DQoJCQkJCWlmICggKCRzaG93X21lICYmICRzaG93X2hv bCkgfHwgJHNob3dza2lwcGVkKSB7DQoJCQkJCQkkc21kX2RheSA9ICRpZHg7DQoJCQkJCQkk c21kX3dlZWsgPSBzdHJmdGltZSgnJVYnLCAkdGhpc3RpbWUpOw0KCQkJCQkJJG9wID0gKCRz cGFuZm9ybSkgPyBwYXJzZV9mb3JtKCRzcGFuZm9ybSkgOiAoKCR0aGluZykgPyBwYXJzZSgk dGhpbmcpIDogKCgkc2l6ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoJyZyYXJyOycsIHBlcm1s aW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyInKSkgKTsNCgkJCQkJ fQ0KCQkJCX0NCgkJCQkkZXZlbnRzWyRpZHhdW10gPSBhcnJheSgnZXYnID0+ICRvcCwgJ2Zs YWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9PiAoKCRjZmxhZykgPyBqb2luKCcg JyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFzc2Vz LCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7DQoJCQkJJHNtZF9jYWxfZmxhZyA9ICRjZmxh ZyA9ICRzbWRfY2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJfQ0KCQl9DQoJfQ0KCWFydGljbGVf cG9wKCk7DQoNCgkvLyBHZW5lcmF0ZSB0aGUgY2FsZW5kYXINCglpZiggJHNpemUgPT0gInNt YWxsIiApIHsNCgkJJGNhbGVuZGFyID0gbmV3IFNNRF9TbWFsbF9DYWxlbmRhcigkeWVhciwg JG1vbnRoLCAkZXZlbnRzLCAkc2VjdGlvbiwgJGNhdGVnb3J5KTsNCgl9IGVsc2Ugew0KCQkk Y2FsZW5kYXIgPSBuZXcgU01EX0NhbGVuZGFyKCR5ZWFyLCAkbW9udGgsICRldmVudHMpOw0K CX0NCgkkY2FsZW5kYXItPnNldFdlZWsoJHdlZWspOw0KCSRjYWxlbmRhci0+c2V0R01UKCRn bXQpOw0KCSRjYWxlbmRhci0+c2V0TGFuZygkbGFuZyk7DQoJJGNhbGVuZGFyLT5zZXRDbGFz c0xldmVscygkY2xldnMpOw0KCSRjYWxlbmRhci0+c2V0Q2xhc3NQcmVmaXgoJGNsYXNzcHJl Zml4KTsNCgkkY2FsZW5kYXItPnNldEV2ZW50UHJlZml4KCRldmNsYXNzcHJlZml4KTsNCgkk Y2FsZW5kYXItPnNldEV2ZW50V3JhcHRhZygkZXZlbnR3cmFwdGFnKTsNCgkkY2FsZW5kYXIt PnNldENlbGxGb3JtKCRjZWxsZm9ybSk7DQoJJGNhbGVuZGFyLT5zZXRNWVdyYXB0YWcoJG15 d3JhcHRhZyk7DQoJJGNhbGVuZGFyLT5zZXRUYWJsZUlEKCRpZCk7DQoJJGNhbGVuZGFyLT5z ZXRUYWJsZUNsYXNzKCRjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRSb3dDbGFzcygkcm93Y2xh c3MpOw0KCSRjYWxlbmRhci0+c2V0Q2VsbENsYXNzKCRjZWxsY2xhc3MpOw0KCSRjYWxlbmRh ci0+c2V0RW1wdHlDbGFzcygkZW1wdHljbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRJU09XZWVr Q2xhc3MoJGlzb3dlZWtjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXROYXZJbmZvKCRuYXZwY2xh c3MsJG5hdm5jbGFzcywkbmF2cGFyciwkbmF2bmFyciwkbmF2aWQpOw0KCSRjYWxlbmRhci0+ c2V0TmF2S2VlcCgkbWFpbnRhaW4pOw0KCSRjYWxlbmRhci0+c2V0TVlDbGFzcygkbXljbGFz cyk7DQoJJGNhbGVuZGFyLT5zZXROYW1lRm9ybWF0KCRkYXlmb3JtYXQsICJkIik7DQoJJGNh bGVuZGFyLT5zZXROYW1lRm9ybWF0KCRtb250aGZvcm1hdCwgIm0iKTsNCgkkY2FsZW5kYXIt PnNldFNob3dJU09XZWVrKCRpc293ZWVrcyk7DQoJJGNhbGVuZGFyLT5zZXRFWWVhcigkZWFy bGllc3QpOw0KCSRjYWxlbmRhci0+c2V0TFllYXIoJGxhdGVzdCk7DQoJJGNhbGVuZGFyLT5z ZXRGaWx0ZXJPcHRzKCRmb3B0cyk7DQoJJGNhbGVuZGFyLT5zZXRIb2xpZGF5cygkaG9saWRh eXMpOw0KCSRjYWxlbmRhci0+c2V0U2VsZWN0b3JzKGRvX2xpc3QoJHNlbGVjdCksICRzZWxl Y3RidG4pOw0KCSRjYWxlbmRhci0+c2V0Rmlyc3REYXlPZldlZWsoJGZpcnN0ZGF5KTsNCgkk Y2FsZW5kYXItPnNldExpbmtQb3N0ZWQoJGxpbmtwb3N0ZWQpOw0KDQoJcmV0dXJuICRjYWxl bmRhci0+ZGlzcGxheSgkc3RhdGljLCAkZnV0dXJlKTsNCn0NCg0KY2xhc3MgU01EX0NhbGVu ZGFyIGV4dGVuZHMgU01EX1Jhd19DYWxlbmRhciB7DQoJLy8gT3ZlcnJpZGUgQ29uc3RydWN0 b3INCgkvLyBQZXJtaXRzIG11bHRpcGxlIGV2ZW50cyB0byBzaG93IHBlciBkYXkNCglmdW5j dGlvbiBTTURfQ2FsZW5kYXIoJHllYXIsJG1vbnRoLCRldmVudHMpIHsNCgkJJHRoaXMtPmV2 ZW50cyA9ICRldmVudHM7DQoJCSR0aGlzLT5TTURfUmF3X0NhbGVuZGFyKCR5ZWFyLCRtb250 aCk7DQoJfQ0KDQoJLy8gT3ZlcnJpZGUgZHNwRGF5Q2VsbCB0byBkaXNwbGF5IHN0dWZmIHJp Z2h0DQoJZnVuY3Rpb24gZHNwRGF5Q2VsbCgkdGhlZGF5KSB7DQoJCWdsb2JhbCAkc21kX2Nh bF9mbGFnLCAkc21kX2NhbF9pZCwgJHNtZF9jYWxfdWNscywgJHNtZF95ZWFyLCAkc21kX21v bnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0KDQoJCSRzbWRfY2FsX2ZsYWcgPSAkc21kX2Nh bF91Y2xzID0gYXJyYXkoKTsNCgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhpcy0+ZXZlbnRz WyR0aGVkYXldKTsNCgkJJHRoZWRhdGUgPSBnbW1rdGltZSgwLCAwLCAwLCAkdGhpcy0+bW9u dGgsICR0aGVkYXksICR0aGlzLT55ZWFyKTsNCgkJJGhvbF9oaXQgPSBpbl9hcnJheShkYXRl KCJkLU0tWSIsICR0aGVkYXRlKSwgJHRoaXMtPmhvbGlkYXlzKTsNCgkJaWYgKCRoYXNhcnRp Y2xlKSB7DQoJCQkkc21kX2NhbF9mbGFnW10gPSAnZXZlbnQnOw0KCQl9DQoJCWlmICgkaG9s X2hpdCkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2hvbHMnOw0KCQl9DQoJCSRjZmxhZyA9 IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCSRj ZmxhZ1tdID0gJHRoaXMtPmNsYXNzcHJlZml4LiRpdGVtOw0KCQl9DQoJCSR0ZGNsYXNzID0g JHRoaXMtPmNlbGxjbGFzcyAuICgoJGNmbGFnKSA/ICcgJy5qb2luKCcgJywgJGNmbGFnKSA6 ICcnKTsNCgkJJHJ1bm5pbmdjbGFzcyA9IChpbl9hcnJheSgiY2VsbCIsICR0aGlzLT5jbGFz c2xldmVscykgfHwgaW5fYXJyYXkoImNlbGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkg PyBleHBsb2RlKCcgJywgJHRkY2xhc3MpIDogYXJyYXkoKTsNCgkJaWYoJHRoaXMtPnllYXIg PT0gZGF0ZSgnWScsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGlzLT5tb250aCA9PSBk YXRlKCduJyx0aW1lKCkrdHpfb2Zmc2V0KCkgKSBhbmQgJHRoZWRheSA9PSBkYXRlKCdqJyx0 aW1lKCkrdHpfb2Zmc2V0KCkpICkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ3RvZGF5JzsN CgkJCSRydW5uaW5nY2xhc3NbXSA9ICR0aGlzLT5jbGFzc3ByZWZpeC4ndG9kYXknOw0KCQl9 DQoNCgkJJG91dCA9ICRmbGFncyA9IGFycmF5KCk7DQoJCWlmIChlbXB0eSgkdGhpcy0+Y2Vs bGZvcm0pKSB7DQoJCQkkb3V0W10gPSBoZWQoJHRoZWRheSw0KTsNCgkJfQ0KCQlpZiggaXNz ZXQoJHRoaXMtPmV2ZW50c1skdGhlZGF5XSkgKSB7DQoJCQkkZGF5c19ldmVudHMgPSAkdGhp cy0+ZXZlbnRzWyR0aGVkYXldOw0KCQkJZm9yZWFjaCgkZGF5c19ldmVudHMgYXMgJGV2KSB7 DQoJCQkJJGV2Y2xhc3MgPSB0cmltKCRldlsnY2xhc3NlcyddKTsNCgkJCQkkZmxhZ3MgPSBh cnJheV9tZXJnZSgkZmxhZ3MsICRldlsnZmxhZyddKTsNCgkJCQlpZiAoaW5fYXJyYXkoImNl bGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkgew0KCQkJCQlmb3JlYWNoIChleHBsb2Rl KCcgJywgJGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJCSRydW5uaW5nY2xhc3NbXT0gJGV2 YzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkb3V0W10gPSAoJHRoaXMtPmV2d3JhcHRhZykgPyB0 YWcoJGV2WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAoKCRldmNsYXNzICYmIGluX2FycmF5 KCJldmVudCIsICR0aGlzLT5jbGFzc2xldmVscykpID8gJyBjbGFzcz0iJy4kZXZjbGFzcy4n IicgOiAnJykpIDogJGV2WydldiddOw0KCQkJfQ0KCQl9DQoJCSRydW5uaW5nY2xhc3MgPSBh cnJheV91bmlxdWUoJHJ1bm5pbmdjbGFzcyk7DQoJCWlmIChpbl9hcnJheSgiY2VsbHBsdXMi LCAkdGhpcy0+Y2xhc3NsZXZlbHMpKSB7DQoJCQkkc21kX2NhbF9mbGFnID0gYXJyYXlfbWVy Z2UoJHNtZF9jYWxfZmxhZywgJGZsYWdzKTsNCgkJfQ0KDQoJCWlmICgkdGhpcy0+Y2VsbGZv cm0pIHsNCgkJCSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAsIDAsICR0aGlzLT5tb250aCwg JHRoZWRheSwgJHRoaXMtPnllYXIpOw0KCQkJJHNtZF9jYWxfaWQgPSAkdGhpcy0+dGFibGVJ RDsNCgkJCSRzbWRfeWVhciA9ICR0aGlzLT55ZWFyOw0KCQkJJHNtZF9tb250aCA9ICR0aGlz LT5tb250aDsNCgkJCSRzbWRfd2VlayA9IHN0cmZ0aW1lKCIlViIsICR0aGlzdGltZSk7DQoJ CQkkc21kX2RheSA9ICR0aGVkYXk7DQoJCQkkcmVwcyA9IGFycmF5KA0KCQkJCSd7ZXZlbnRz fScgPT4gam9pbignJywkb3V0KSwNCgkJCQkne2RheX0nID0+ICR0aGVkYXksDQoJCQkJJ3t3 ZWVrZGF5fScgPT4gKChpc19hcnJheSgkdGhpcy0+ZGF5TmFtZUZtdCkpID8gJHRoaXMtPmRh eU5hbWVzW2RhdGUoJ3cnLCR0aGlzdGltZSldIDogc3RyZnRpbWUoJHRoaXMtPmRheU5hbWVG bXQsICR0aGlzdGltZSkpLA0KCQkJCSd7d2Vla30nID0+ICRzbWRfd2VlaywNCgkJCQkne21v bnRofScgPT4gJHRoaXMtPm1vbnRoLA0KCQkJCSd7bW9udGhuYW1lfScgPT4gc3RyZnRpbWUo JHRoaXMtPm10aE5hbWVGbXQsICR0aGlzdGltZSksDQoJCQkJJ3t5ZWFyfScgPT4gJHRoaXMt PnllYXIsDQoJCQkJJ3tzaG9ydHllYXJ9JyA9PiBzdHJmdGltZSgiJWciLCAkdGhpc3RpbWUp LA0KCQkJKTsNCgkJCSRjZWxsb3V0ID0gcGFyc2Uoc3RydHIoJHRoaXMtPmNlbGxmb3JtLCAk cmVwcykpOw0KCQkJJGNhcnJheSA9IGFycmF5X21lcmdlKCRydW5uaW5nY2xhc3MsICRzbWRf Y2FsX3VjbHMpOw0KCQkJJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoNCgkJCXJldHVybiBk b1RhZygkY2VsbG91dCwndGQnLGpvaW4oJyAnLCRjYXJyYXkpKTsNCgkJfSBlbHNlIHsNCgkJ CS8vIEFtYWxnYW1hdGUgdGhlIGV2ZW50LWxldmVsIGNsYXNzZXMgYW5kIGNlbGwtbGV2ZWwg Y2xhc3NlcywgaWYgcmVxdWlyZWQNCgkJCXJldHVybiBkb1RhZyhqb2luKCcnLCRvdXQpLCd0 ZCcsam9pbignICcsJHJ1bm5pbmdjbGFzcykpOw0KCQl9DQoJfQ0KDQoJZnVuY3Rpb24gZGlz cGxheSgkc3RhdGljPWZhbHNlLCAkZnV0dXJlPWZhbHNlKSB7DQoJCSRpZCA9ICgkdGhpcy0+ dGFibGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELiciJyA6ICcnOw0KCQkkY1tdID0g JHRoaXMtPmRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKTsNCgkJJGNbXSA9ICR0aGlzLT5k c3BEYXlOYW1lcygpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheUNlbGxzKCk7DQoNCgkJcmV0 dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0YWJsZScsJHRoaXMtPnRhYmxlY2xhc3MsJGlkKTsN Cgl9DQoNCglmdW5jdGlvbiBkc3BIZWFkZXIoJHN0YXRpYywgJGZ1dHVyZSkgew0KCQlnbG9i YWwgJHByZXRleHQsICRzbWRfd2VlazsNCg0KCQkkY3Vycm1vID0gJHRoaXMtPm1vbnRoOw0K CQkkY3VycnlyID0gJHRoaXMtPnllYXI7DQoJCSRuYXZwY2xhc3MgPSAkdGhpcy0+Z2V0TmF2 SW5mbygicGMiKTsNCgkJJG5hdm5jbGFzcyA9ICR0aGlzLT5nZXROYXZJbmZvKCJuYyIpOw0K CQkkbmF2cGFycm93ID0gJHRoaXMtPmdldE5hdkluZm8oInBhIik7DQoJCSRuYXZuYXJyb3cg PSAkdGhpcy0+Z2V0TmF2SW5mbygibmEiKTsNCgkJJG5hdmlkID0gJHRoaXMtPmdldE5hdklu Zm8oImlkIik7DQoJCSRuYXZwY2xhc3MgPSAoJG5hdnBjbGFzcykgPyAnIGNsYXNzPSInLiRu YXZwY2xhc3MuJyInIDogJyc7DQoJCSRuYXZuY2xhc3MgPSAoJG5hdm5jbGFzcykgPyAnIGNs YXNzPSInLiRuYXZuY2xhc3MuJyInIDogJyc7DQoJCSRmb3B0cyA9ICR0aGlzLT5mb3B0czsN CgkJZm9yZWFjaCAoJHRoaXMtPm1haW50YWluIGFzICRjb2wpIHsNCgkJCXN3aXRjaCAoJGNv bCkgew0KCQkJCWNhc2UgInNlY3Rpb24iOg0KCQkJCQlpZiAoJHByZXRleHRbJ3MnXSkgew0K CQkJCQkJJGZvcHRzID0gYXJyYXkoJ3MnID0+ICRwcmV0ZXh0WydzJ10pICsgJGZvcHRzOw0K CQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImFydGljbGUiOg0KCQkJCQlpZiAoJHBy ZXRleHRbJ2lkJ10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdpZCcgPT4gJHByZXRleHRb J2lkJ10pICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhdGVn b3J5IjoNCgkJCQkJaWYgKCRwcmV0ZXh0WydjJ10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5 KCdjJyA9PiAkcHJldGV4dFsnYyddKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsN CgkJCQljYXNlICJhdXRob3IiOg0KCQkJCQlpZiAoZ3BzKCdhdXRob3InKSkgew0KCQkJCQkJ JGZvcHRzID0gYXJyYXkoJ2F1dGhvcicgPT4gZ3BzKCdhdXRob3InKSkgKyAkZm9wdHM7DQoJ CQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAicGciOg0KCQkJCQlpZiAoJHByZXRleHRb J3BnJ10pIHsNCgkJCQkJCSRmb3B0cyA9IGFycmF5KCdwZycgPT4gJHByZXRleHRbJ3BnJ10p ICsgJGZvcHRzOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImNhbGlkIjoNCgkJ CQkJaWYgKCR0aGlzLT50YWJsZUlEKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnY2FsaWQn ID0+ICR0aGlzLT50YWJsZUlEKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJ CQlkZWZhdWx0Og0KCQkJCQlpZiAoZ3BzKCRjb2wpKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJh eSgkY29sID0+IGdwcygkY29sKSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJ CQl9DQoJCX0NCgkJJGZvcHRzID0gYXJyYXlfdW5pcXVlKCRmb3B0cyk7DQoJCSRmaWx0ZXJz ID0gYXJyYXkoKTsNCgkJJGZpbHRlckhpZCA9IGFycmF5KCk7DQoJCWlmICghJHN0YXRpYykg ew0KCQkJZm9yZWFjaCgkZm9wdHMgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGZpbHRlcnNb XSA9ICRrZXkuJz0nLiR2YWw7DQoJCQkJJGZpbHRlckhpZFtdID0gaElucHV0KCRrZXksICR2 YWwpOw0KCQkJfQ0KCQl9DQoJCSRmaWx0ZXJVUkwgPSBqb2luKGEsICRmaWx0ZXJzKTsNCg0K CQkvLyBXZWVrIHNlbGVjdCBsaXN0DQoJCWlmICgkdGhpcy0+dXNlU2VsZWN0b3IoJ3dlZWsn KSAmJiAhJHN0YXRpYykgew0KCQkJJGN1cnJ3ayA9ICgkdGhpcy0+d2VlaykgPyAkdGhpcy0+ d2VlayA6IGRhdGUoJ1cnLCBzdHJ0b3RpbWUoICRjdXJyeXIuIi0iLiRjdXJybW8uIi0xIDEy OjAwIiApKTsNCgkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDUyOyAkaWR4KysgKSB7DQoJ CQkJJHRhZ2F0dHMgPSAnIHZhbHVlPSInLiRpZHguJyInOw0KCQkJCWlmICggJGlkeCA9PSAk Y3VycndrICkgJHRhZ2F0dHMgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsNCgkJCQkkb3B0 aW9udGFnc1tdID0gZG9UYWcoc3RyX3BhZCgkaWR4LCAyLCAnMCcsIFNUUl9QQURfTEVGVCks ICdvcHRpb24nLCAnJywgJHRhZ2F0dHMpOw0KCQkJfQ0KCQkJJHNlbGVjdG9yW10gPSBkb1Rh Zyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcsICgoJHRoaXMtPm15d3JhcHRhZykg PyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSJ3IicuKCgkdGhpcy0+c2VsYnRuKSA/ ICcnIDogJyBvbmNoYW5nZT0ic3VibWl0KCkiJyksICcnKQ0KICAgCQkJCS4gKCgkdGhpcy0+ dXNlU2VsZWN0b3IoJ3llYXInKSkgPyAnJyA6IGhJbnB1dCgneScsICRjdXJyeXIpKTsNCgkJ CSRvcHRpb250YWdzID0gYXJyYXkoKTsgLy8gQmxhbmsgb3V0DQoJCX0NCg0KCQkvLyBNb250 aCBzZWxlY3QgbGlzdCAtIG5vdGUgbWt0aW1lIGhhcyB0aGUgZGF5IGZvcmNlZCB0byAxLiBJ ZiBub3QgeW91IGdldA0KCQkvLyBiaXphcnJlIHJlcGVhdGVkIG1vbnRoIG5hbWVzIG9uIHRo ZSAzMXN0IG9mIHNvbWUgbW9udGhzIDotXA0KCQlpZiAoISR0aGlzLT51c2VTZWxlY3Rvcign d2VlaycpKSB7DQoJCQlpZiAoJHRoaXMtPnVzZVNlbGVjdG9yKCdtb250aCcpICYmICEkc3Rh dGljKSB7DQoJCQkJZm9yICggJGlkeCA9IDE7ICRpZHggPD0gMTI7ICRpZHgrKyApIHsNCgkJ CQkJJHRhZ2F0dHMgPSAnIHZhbHVlPSInLiRpZHguJyInOw0KCQkJCQlpZiAoICRpZHggPT0g JGN1cnJtbyApICR0YWdhdHRzIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7DQoJCQkJCSRv cHRpb250YWdzW10gPSBkb1RhZyhzdHJmdGltZSgkdGhpcy0+bXRoTmFtZUZtdCwgZ21ta3Rp bWUoMTIsMCwwLCRpZHgsMSkpLCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCQl9DQoJ CQkJJHNlbGVjdG9yW10gPSBkb1RhZyhqb2luKG4sICRvcHRpb250YWdzKSwgJ3NlbGVjdCcs ICgoJHRoaXMtPm15d3JhcHRhZykgPyAnJyA6ICR0aGlzLT5teWNsYXNzKSwgJyBuYW1lPSJt IicuKCgkdGhpcy0+c2VsYnRuKSA/ICcnIDogJyBvbmNoYW5nZT0ic3VibWl0KCkiJyksICcn KQ0KCSAgIAkJCQkuICgoJHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykpID8gJycgOiBoSW5w dXQoJ3knLCAkY3VycnlyKSk7DQoJCQkJJG9wdGlvbnRhZ3MgPSBhcnJheSgpOyAvLyBCbGFu ayBvdXQNCgkJCX0gZWxzZSB7DQoJCQkJJHNlbGVjdG9yW10gPSBkb1RhZygkdGhpcy0+Z2V0 TW9udGhOYW1lKCksICdzcGFuJywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMt Pm15Y2xhc3MpKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIFllYXIgc2VsZWN0IGxpc3QNCgkJJHkw ID0gJHRoaXMtPmV5cjsNCgkJJHkxID0gJHRoaXMtPmx5cjsNCgkJaWYgKCR0aGlzLT51c2VT ZWxlY3RvcigneWVhcicpICYmICgkeTAgIT0gJHkxKSAmJiAhJHN0YXRpYykgew0KCQkJZm9y ICggJGlkeCA9ICR5MDsgJGlkeCA8PSAkeTE7ICRpZHgrKyApIHsNCgkJCQkkdGFnYXR0cyA9 ICcgdmFsdWU9IicuJGlkeC4nIic7DQoJCQkJaWYgKCAkaWR4ID09ICRjdXJyeXIgKSAkdGFn YXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOw0KCQkJCSRvcHRpb250YWdzW10gPSBk b1RhZygkaWR4LCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3Rv cltdID0gZG9UYWcoam9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5t eXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0ieSInLigoJHRoaXMt PnNlbGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCgkJCQkJLiAo KCR0aGlzLT51c2VTZWxlY3RvcignbW9udGgnKSkgPyAnJyA6IGhJbnB1dCgnbScsICRjdXJy bW8pKTsNCgkJfSBlbHNlIHsNCgkJCSRzZWxlY3RvcltdID0gZG9UYWcoJGN1cnJ5ciwgJ3Nw YW4nLCAoKCR0aGlzLT5teXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcykpOw0KCQl9 DQoNCgkJJGV4dHJhcyA9ICcnOw0KCQlpZiAoISRzdGF0aWMgJiYgKCAkdGhpcy0+dXNlU2Vs ZWN0b3IoJ21vbnRoJykgfHwgJHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykgKSkgew0KCQkJ aWYgKCR0aGlzLT5zZWxidG4pIHsNCgkJCQkkZXh0cmFzIC49IGRvVGFnKCcnLCAnaW5wdXQn LCAnc21kX2NhbF9pbnB1dCcsICcgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJy4kdGhpcy0+c2Vs YnRuLiciJyk7DQoJCQl9DQoJCQkkZXh0cmFzIC49IGpvaW4oJycsICRmaWx0ZXJIaWQpOw0K CQl9DQoNCgkJJHVybHAgPSBwYXJzZV91cmwoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10pOw0K CQkkc2VsZWN0b3IgPSAnPGZvcm0gYWN0aW9uPSInLiR1cmxwWydwYXRoJ10uJyIgbWV0aG9k PSJnZXQiJy4oKCRuYXZpZCkgPyAnIGlkPSInLiRuYXZpZC4nIicgOiAnJykuJz4nLmRvVGFn KGpvaW4oc3AsICRzZWxlY3RvcikuJGV4dHJhcywgJHRoaXMtPm15d3JhcHRhZywgJHRoaXMt Pm15Y2xhc3MpLic8L2Zvcm0+JzsNCg0KCQkkbmF2X2JhY2tfbGluayA9ICR0aGlzLT5uYXZp Z2F0aW9uKCR0aGlzLT55ZWFyLCAkdGhpcy0+bW9udGgsICctJywgJGZpbHRlclVSTCk7DQoJ CSRuYXZfZndkX2xpbmsgID0gJHRoaXMtPm5hdmlnYXRpb24oJHRoaXMtPnllYXIsICR0aGlz LT5tb250aCwgJysnLCAkZmlsdGVyVVJMKTsNCg0KCQkkbmF2X2JhY2sgPSAoISRzdGF0aWMg JiYgJG5hdl9iYWNrX2xpbmspID8gJzxhIGhyZWY9IicuJG5hdl9iYWNrX2xpbmsuJyInLiRu YXZwY2xhc3MuJz4nLiRuYXZwYXJyb3cuJzwvYT4nIDogJyZuYnNwOyc7DQoJCSRuYXZfZndk ICA9ICghJHN0YXRpYyAmJiAkZnV0dXJlICYmICRuYXZfZndkX2xpbmspID8gJzxhIGhyZWY9 IicuJG5hdl9md2RfbGluay4nIicuJG5hdm5jbGFzcy4nPicuJG5hdm5hcnJvdy4nPC9hPicg OiAnJm5ic3A7JzsNCg0KCQkkY1tdID0gZG9UYWcoJG5hdl9iYWNrLCd0aCcpOw0KCQkkY1td ID0gJzx0aCBjb2xzcGFuPSInLigoJHRoaXMtPnNob3dJU09XZWVrKSA/IDYgOiA1KS4nIj4n LiRzZWxlY3Rvci4nPC90aD4nOw0KCQkkY1tdID0gZG9UYWcoJG5hdl9md2QsJ3RoJyk7DQoN CgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0cicsICdzbWRfY2FsX25hdnJvdycpOw0K CX0NCg0KCWZ1bmN0aW9uIG5hdmlnYXRpb24oJHllYXIsJG1vbnRoLCRkaXJlY3Rpb24sJGZs dCkgew0KCQlnbG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJaWYoJGRpcmVjdGlvbiA9PSAn LScpIHsNCgkJCWlmKCRtb250aCAtIDEgPCAxKSB7DQoJCQkJJG1vbnRoID0gMTI7DQoJCQkJ JHllYXIgLT0gMTsNCgkJCX0gZWxzZSB7DQoJCQkJJG1vbnRoIC09IDE7DQoJCQl9DQoJCX0g ZWxzZSB7DQoJCQlpZigkbW9udGggKyAxID4gMTIpIHsNCgkJCQkkbW9udGggPSAxOw0KCQkJ CSR5ZWFyICs9IDE7DQoJCQl9IGVsc2Ugew0KCQkJCSRtb250aCArPSAxOw0KCQkJfQ0KCQl9 DQoNCgkJLy8gQWJvcnQgaWYgd2UncmUgYWJvdXQgdG8gZ28gb3V0IG9mIHJhbmdlDQoJCWlm ICgkeWVhciA8ICR0aGlzLT5leXIgfHwgJHllYXIgPiAkdGhpcy0+bHlyKSB7DQoJCQlyZXR1 cm4gJyc7DQoJCX0NCg0KCQlpZigkcGVybWxpbmtfbW9kZSAhPSAnbWVzc3knKSB7DQoJCQly ZXR1cm4gIj9tPSRtb250aCIuYS4ieT0keWVhciIuYS4kZmx0Ow0KCQl9IGVsc2UgeyAvLyBm b3IgbWVzc3kgVVJMJ3Mgd2UgbmVlZCB0byBidWlsZCB0aGUgZW50aXJlIHJlcXVlc3Qgc3Ry aW5nIGZpcnN0LCB0aGVuIHRhY2sgb24gdGhlIHJlc3QNCgkJCSRvdXQgPSBtYWtlT3V0KCdp ZCcsJ3MnLCdjJywncScsJ3BnJywncCcsJ21vbnRoJyk7DQoJCQkkciA9ICc/JzsNCgkJCWZv cmVhY2goJG91dCBhcyAka2V5ID0+ICR2YWwgKSB7DQoJCQkJJHIgLj0gKCR2YWwpID8gIiRr ZXk9JHZhbCIuYSA6ICcnOw0KCQkJfQ0KCQkJcmV0dXJuICRyLiJtPSRtb250aCIuYS4ieT0k eWVhciIuYS4kZmx0Ow0KCQl9DQoJfQ0KfQ0KDQpjbGFzcyBTTURfU21hbGxfQ2FsZW5kYXIg ZXh0ZW5kcyBTTURfQ2FsZW5kYXIgew0KCXZhciAkc2VjdGlvbiA9ICcnOw0KCXZhciAkY2F0 ZWdvcnkgPSAnJzsNCglmdW5jdGlvbiBTTURfU21hbGxfQ2FsZW5kYXIoJHllYXIsJG1vbnRo LCRldmVudHMsJHNlY3Rpb24sJGNhdGVnb3J5KSB7DQoJCSR0aGlzLT5zZWN0aW9uID0gJHNl Y3Rpb247DQoJCSR0aGlzLT5jYXRlZ29yeSA9ICRjYXRlZ29yeTsNCgkJJHRoaXMtPlNNRF9D YWxlbmRhcigkeWVhciwkbW9udGgsJGV2ZW50cyk7DQoJfQ0KDQoJZnVuY3Rpb24gZHNwRGF5 Q2VsbCgkdGhlZGF5KSB7DQoJCWdsb2JhbCAkcGVybWxpbmtfbW9kZTsNCg0KCQkkaGFzYXJ0 aWNsZSA9IGlzc2V0KCR0aGlzLT5ldmVudHNbJHRoZWRheV0pOw0KCQkkY2xhc3NbXSA9ICR0 aGlzLT5jZWxsY2xhc3MuJyAnIC4gKCgkaGFzYXJ0aWNsZSkgPyAkdGhpcy0+Y2xhc3NwcmVm aXguJ2V2ZW50JyA6ICcnKTsNCgkJaWYgKChpbl9hcnJheSggZGF0ZSgnZC1NLVknLCBnbW1r dGltZSggMCwgMCwgMCwgJHRoaXMtPm1vbnRoLCAkdGhlZGF5LCAkdGhpcy0+eWVhcikgKSwg JHRoaXMtPmhvbGlkYXlzKSkgKSB7DQoJCQkkY2xhc3NbXSA9ICR0aGlzLT5jbGFzc3ByZWZp eC4naG9scyc7DQoJCX0NCgkJaWYoJHRoaXMtPnllYXIgPT0gZGF0ZSgnWScsdGltZSgpK3R6 X29mZnNldCgpICkgYW5kICR0aGlzLT5tb250aCA9PSBkYXRlKCduJyx0aW1lKCkrdHpfb2Zm c2V0KCkgKSBhbmQgJHRoZWRheSA9PSBkYXRlKCdqJyx0aW1lKCkrdHpfb2Zmc2V0KCkpICkg ew0KCQkJJGNsYXNzW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXguJ3RvZGF5JzsNCgkJfQ0KDQoJ CWlmKCBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXldKSApIHsNCgkJCSRkYXlzX2V2ZW50 cyA9ICR0aGlzLT5ldmVudHNbJHRoZWRheV07DQoJCQlmb3JlYWNoKCRkYXlzX2V2ZW50cyBh cyAkZXYpIHsNCgkJCQkkZXZjbGFzcyA9IHRyaW0oJGV2WydjbGFzc2VzJ10pOw0KCQkJCWZv cmVhY2ggKGV4cGxvZGUoJyAnLCAkZXZjbGFzcykgYXMgJGV2Yykgew0KCQkJCQkkY2xhc3Nb XT0gJGV2YzsNCgkJCQl9DQoNCgkJCQkkb3V0W10gPSAoJHRoaXMtPmV2d3JhcHRhZykgPyB0 YWcoJGV2WydldiddLCAkdGhpcy0+ZXZ3cmFwdGFnLCAoKCRldmNsYXNzKSA/ICcgY2xhc3M9 IicuJGV2Y2xhc3MuJyInIDogJycpKSA6ICRldlsnZXYnXTsNCgkJCX0NCgkJCSR1c2VfcG9z dGVkID0gZmFsc2U7DQoJCQlmb3JlYWNoICgkdGhpcy0+bGlua3Bvc3RlZCBhcyAkZGxpbmtz KSB7DQoJCQkJaWYgKGluX2FycmF5KCRkbGlua3MsICRjbGFzcykpIHsNCgkJCQkJJHVzZV9w b3N0ZWQgPSB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCQlpZiggJHBlcm1s aW5rX21vZGUgIT0gJ3llYXJfbW9udGhfZGF5X3RpdGxlJyApIHsNCgkJCQkkbGlua2RhdGUg PSAoJHVzZV9wb3N0ZWQpID8gJGV2Wydwb3N0ZWQnXSA6ICR0aGlzLT55ZWFyLictJy4kdGhp cy0+ZG91YmxlZGlnaXQoJHRoaXMtPm1vbnRoKS4nLScuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0 aGVkYXkpOw0KCQkJCSRocmVmID0gJyBocmVmPSInLmh1Lic/ZGF0ZT0nLiRsaW5rZGF0ZTsN CgkJCQlpZigkdGhpcy0+c2VjdGlvbikgeyAkaHJlZiA9ICRocmVmLmEuJ3M9Jy4kdGhpcy0+ c2VjdGlvbjsgfQ0KCQkJCWlmKCR0aGlzLT5jYXRlZ29yeSkgeyAkaHJlZiA9ICRocmVmLmEu J2M9Jy4kdGhpcy0+Y2F0ZWdvcnk7IH0NCgkJCQkkaHJlZiAuPSAnIic7DQoJCQl9IGVsc2Ug ew0KCQkJCSRzZWN0aW9uID0gKCR0aGlzLT5zZWN0aW9uKSA/ICR0aGlzLT5zZWN0aW9uLicv JyA6ICcnOw0KCQkJCSRsaW5rZGF0ZSA9ICgkdXNlX3Bvc3RlZCkgPyBwcmVnX3JlcGxhY2Uo Ii0iLCAiLyIsICRldlsncG9zdGVkJ10pIDogJHRoaXMtPnllYXIuJy8nLiR0aGlzLT5kb3Vi bGVkaWdpdCgkdGhpcy0+bW9udGgpLicvJy4kdGhpcy0+ZG91YmxlZGlnaXQoJHRoZWRheSk7 DQoJCQkJJGhyZWYgPSAnIGhyZWY9IicuaHUuJHNlY3Rpb24uJGxpbmtkYXRlLiciJzsNCgkJ CX0NCg0KCQkJJGNbXSA9IGRvVGFnKCR0aGVkYXkuam9pbignJywkb3V0KSwnYScsJycsJGhy ZWYpOw0KCQl9IGVsc2Ugew0KCQkJJGNbXSA9ICR0aGVkYXk7DQoJCX0NCg0KCQlyZXR1cm4g ZG9UYWcoam9pbignJywkYyksJ3RkJyxqb2luKCcgJywkY2xhc3MpKTsNCgl9DQoNCglmdW5j dGlvbiBkb3VibGVkaWdpdCgkbikgew0KCQlpZigkbiA8IDEwKSB7ICRuID0gJzAnLihpbnQp JG47IH0NCgkJcmV0dXJuICRuOw0KCX0NCg0KfQ0KDQovKioNCiogQmFzaWMgQ2FsZW5kYXIg ZGF0YSBhbmQgZGlzcGxheQ0KKiBodHRwOi8vd3d3Lm9zY2FybS5vcmcvc3RhdGljL3BnL2Nh bGVuZGFyQ2xhc3MvDQoqIEBhdXRob3IgT3NjYXIgTWVyaWRhDQoqIEBjcmVhdGVkIEphbiAx OCAyMDA0DQoqIEBwYWNrYWdlICBnb0NvcmVMaWINCiovDQpjbGFzcyBTTURfUmF3X0NhbGVu ZGFyIHsNCnZhciAkZ210ID0gMTsNCnZhciAkbGFuZzsNCnZhciAkeWVhcjsNCnZhciAkZXly Ow0KdmFyICRseXI7DQp2YXIgJG1vbnRoOw0KdmFyICR3ZWVrOw0KdmFyICRkYXlOYW1lRm10 Ow0KdmFyICRtdGhOYW1lRm10Ow0KdmFyICRkYXlOYW1lczsNCnZhciAkc3RhcnREYXk7DQp2 YXIgJHNlbGVjdG9yczsNCnZhciAkc2VsYnRuOw0KdmFyICRzaG93SVNPV2VlazsNCnZhciAk SVNPV2Vla0hlYWQ7DQp2YXIgJElTT1dlZWtDZWxsOw0KdmFyICRlbmREYXk7DQp2YXIgJGZp cnN0RGF5T2ZXZWVrID0gMDsNCnZhciAkc3RhcnRPZmZzZXQgPSAwOw0KdmFyICRjbGFzc2xl dmVsczsNCnZhciAkY2xhc3NwcmVmaXg7DQp2YXIgJGV2Y2xhc3NwcmVmaXg7DQp2YXIgJGV2 d3JhcHRhZzsNCnZhciAkbXl3cmFwdGFnOw0KdmFyICRyb3djbGFzczsNCnZhciAkY2VsbGNs YXNzOw0KdmFyICRlbXB0eWNsYXNzOw0KdmFyICRpc29jbGFzczsNCnZhciAkbmF2cGNsYXNz Ow0KdmFyICRuYXZuY2xhc3M7DQp2YXIgJG5hdnBhcnJvdzsNCnZhciAkbmF2bmFycm93Ow0K dmFyICRuYXZpZDsNCnZhciAkbXljbGFzczsNCnZhciAkZm9wdHM7DQp2YXIgJGhvbGlkYXlz Ow0KdmFyICRsaW5rcG9zdGVkOw0KdmFyICRjZWxsZm9ybTsNCnZhciAkdGFibGVJRDsNCnZh ciAkbWFpbnRhaW47DQovKioNCiogQ29uc3RydWN0b3INCioNCiogQHBhcmFtIGludGVnZXIs IHllYXINCiogQHBhcmFtIGludGVnZXIsIG1vbnRoDQoqIEByZXR1cm4gb2JqZWN0DQoqIEBw dWJsaWMNCiovDQpmdW5jdGlvbiBTTURfUmF3X0NhbGVuZGFyICggJHlyLCAkbW8gKSB7DQoJ JHRoaXMtPnNldFllYXIoJHlyKTsNCgkkdGhpcy0+c2V0TW9udGgoJG1vKTsNCgkkdGhpcy0+ c2V0Q2xhc3NQcmVmaXgoJ3NtZF9jYWxfJyk7DQoNCgkkdGhpcy0+c3RhcnRUaW1lID0gc3Ry dG90aW1lKCAiJHlyLSRtby0wMSAwMDowMCIgKTsNCgkkdGhpcy0+c3RhcnREYXkJPSBkYXRl KCAnRCcsICR0aGlzLT5zdGFydFRpbWUgKTsNCgkkdGhpcy0+ZW5kRGF5ID0gZGF0ZSggJ3Qn LCAkdGhpcy0+c3RhcnRUaW1lICk7DQoJJHRoaXMtPmVuZFRpbWUgICA9IHN0cnRvdGltZSgg IiR5ci0kbW8tIi4kdGhpcy0+ZW5kRGF5LiIgMjM6NTkiICk7DQoNCgkkdGhpcy0+c2V0TmFt ZUZvcm1hdCgnJWEnLCAnZCcpOw0KCSR0aGlzLT5zZXROYW1lRm9ybWF0KCclQicsICdtJyk7 DQoJJHRoaXMtPnNldEZpcnN0RGF5T2ZXZWVrKDApOw0KCSR0aGlzLT5zZXRTaG93SVNPV2Vl aygnJyk7DQoJJHRoaXMtPnNldFRhYmxlSUQoJycpOw0KCSR0aGlzLT5zZXRUYWJsZUNsYXNz KCcnKTsNCn0NCi8vID09PT0gZW5kIENhbGVuZGFyID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLy8gR2V0dGVycw0KZnVuY3Rpb24gdXNlU2Vs ZWN0b3IoJHZhbCkgeyByZXR1cm4gaW5fYXJyYXkoJHZhbCwgJHRoaXMtPnNlbGVjdG9ycyk7 IH0NCmZ1bmN0aW9uIGdldERheU5hbWUoJGRheSkgeyByZXR1cm4gKCR0aGlzLT5kYXlOYW1l c1skZGF5JTddKTsgfQ0KZnVuY3Rpb24gZ2V0TW9udGhOYW1lKCkgeyByZXR1cm4gc3RyZnRp bWUoICR0aGlzLT5tdGhOYW1lRm10LCAkdGhpcy0+c3RhcnRUaW1lICk7IH0NCmZ1bmN0aW9u IGdldE5hdkluZm8oJHR5cGUpIHsNCgkkciA9ICcnOw0KCXN3aXRjaCAoJHR5cGUpIHsNCgkJ Y2FzZSAiaWQiOiAkciA9ICR0aGlzLT5uYXZpZDsgYnJlYWs7DQoJCWNhc2UgInBjIjogJHIg PSAkdGhpcy0+bmF2cGNsYXNzOyBicmVhazsNCgkJY2FzZSAibmMiOiAkciA9ICR0aGlzLT5u YXZuY2xhc3M7IGJyZWFrOw0KCQljYXNlICJwYSI6ICRyID0gJHRoaXMtPm5hdnBhcnJvdzsg YnJlYWs7DQoJCWNhc2UgIm5hIjogJHIgPSAkdGhpcy0+bmF2bmFycm93OyBicmVhazsNCgl9 DQoJcmV0dXJuICRyOw0KfQ0KLy8gU2V0dGVycw0KZnVuY3Rpb24gc2V0R01UKCRiKXsgJHRo aXMtPmdtdCA9ICRiOyB9DQpmdW5jdGlvbiBzZXRMYW5nKCRjb2RlKXsgJHRoaXMtPmxhbmcg PSAkY29kZTsgfQ0KZnVuY3Rpb24gc2V0Q2VsbEZvcm0oJGZybSl7ICR0aGlzLT5jZWxsZm9y bSA9ICRmcm07IH0NCmZ1bmN0aW9uIHNldFRhYmxlSUQoJGlkKXsgJHRoaXMtPnRhYmxlSUQg PSAkaWQ7IH0NCmZ1bmN0aW9uIHNldFllYXIoJHlyKXsgJHRoaXMtPnllYXIgPSAkeXI7IH0N CmZ1bmN0aW9uIHNldEVZZWFyKCR5cil7ICR0aGlzLT5leXIgPSAkeXI7IH0NCmZ1bmN0aW9u IHNldExZZWFyKCR5cil7ICR0aGlzLT5seXIgPSAkeXI7IH0NCmZ1bmN0aW9uIHNldE1vbnRo KCRtdGgpeyAkdGhpcy0+bW9udGggPSAoaW50KSRtdGg7IH0NCmZ1bmN0aW9uIHNldFdlZWso JHdrKXsNCglpZiAoJHdrKSB7DQoJCSR0aGlzLT53ZWVrID0gKGludCkkd2s7DQoJCSR0aGlz LT5tb250aCA9IHNhZmVfc3RyZnRpbWUoIiVtIiwgZ21ta3RpbWUgKDEsMSwxLDEsNyokd2ss JHRoaXMtPnllYXIpKTsNCgl9DQp9DQpmdW5jdGlvbiBzZXROYXZLZWVwKCRhcil7ICR0aGlz LT5tYWludGFpbiA9ICRhcjsgfQ0KZnVuY3Rpb24gc2V0U2hvd0lTT1dlZWsoJHZhbCkgew0K CSR0aGlzLT5zaG93SVNPV2VlayA9ICgkdmFsKSA/IHRydWUgOiBmYWxzZTsNCglpZiAoJHZh bCkgew0KCQkkdmFsID0gZG9fbGlzdCgkdmFsKTsNCgkJJHRoaXMtPklTT1dlZWtIZWFkID0g JHZhbFswXTsNCgkJJHRoaXMtPklTT1dlZWtDZWxsID0gKGlzc2V0KCR2YWxbMV0pKSA/ICR2 YWxbMV0gOiAne3dlZWt9JzsNCgl9DQp9DQpmdW5jdGlvbiBzZXRDbGFzc0xldmVscygkY2xz KXsgJHRoaXMtPmNsYXNzbGV2ZWxzID0gJGNsczsgfQ0KZnVuY3Rpb24gc2V0Q2xhc3NQcmVm aXgoJGNscyl7ICR0aGlzLT5jbGFzc3ByZWZpeCA9ICRjbHM7IH0NCmZ1bmN0aW9uIHNldEV2 ZW50UHJlZml4KCRjbHMpeyAkdGhpcy0+ZXZjbGFzc3ByZWZpeCA9ICRjbHM7IH0NCmZ1bmN0 aW9uIHNldEV2ZW50V3JhcHRhZygkd3JhcCl7ICR0aGlzLT5ldndyYXB0YWcgPSAkd3JhcDsg fQ0KZnVuY3Rpb24gc2V0TVlXcmFwdGFnKCR3cmFwKXsgJHRoaXMtPm15d3JhcHRhZyA9ICR3 cmFwOyB9DQpmdW5jdGlvbiBzZXRUYWJsZUNsYXNzKCRjbHMpIHsgJHRoaXMtPnRhYmxlY2xh c3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpmdW5jdGlv biBzZXRSb3dDbGFzcygkY2xzKXsgJHRoaXMtPnJvd2NsYXNzID0gKCRjbHMpID8gJHRoaXMt PmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0Q2VsbENsYXNzKCRjbHMp eyAkdGhpcy0+Y2VsbGNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsYXNzcHJlZml4LiRjbHMg OiAnJzsgfQ0KZnVuY3Rpb24gc2V0RW1wdHlDbGFzcygkY2xzKXsgJHRoaXMtPmVtcHR5Y2xh c3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpmdW5jdGlv biBzZXRJU09XZWVrQ2xhc3MoJGNscyl7ICR0aGlzLT5pc29jbGFzcyA9ICgkY2xzKSA/ICR0 aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNldE5hdkluZm8oJGNs c3AsICRjbHNuLCAkYXJycCwgJGFycm4sICRuaWQpew0KCSR0aGlzLT5uYXZwY2xhc3MgPSAo JGNsc3ApID8gJHRoaXMtPmNsYXNzcHJlZml4LiRjbHNwIDogJyc7DQoJJHRoaXMtPm5hdm5j bGFzcyA9ICgkY2xzbikgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNsc24gOiAnJzsNCgkkdGhp cy0+bmF2cGFycm93ID0gKCRhcnJwKSA/ICRhcnJwIDogJyc7DQoJJHRoaXMtPm5hdm5hcnJv dyA9ICgkYXJybikgPyAkYXJybiA6ICcnOw0KCSR0aGlzLT5uYXZpZCA9ICgkbmlkKSA/ICR0 aGlzLT5jbGFzc3ByZWZpeC4kbmlkIDogJyc7DQp9DQpmdW5jdGlvbiBzZXRNWUNsYXNzKCRj bHMpeyAkdGhpcy0+bXljbGFzcyA9ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xz IDogJyc7IH0NCmZ1bmN0aW9uIHNldEZpbHRlck9wdHMoJGYpIHsgJHRoaXMtPmZvcHRzID0g JGY7IH0NCmZ1bmN0aW9uIHNldExpbmtQb3N0ZWQoJGRsKSB7DQoJZm9yZWFjaCAoJGRsIGFz ICRkdmFsKSB7DQoJCSR0aGlzLT5saW5rcG9zdGVkW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXgu JGR2YWw7DQoJfQ0KfQ0KZnVuY3Rpb24gc2V0SG9saWRheXMoJGhvbHMpIHsgJHRoaXMtPmhv bGlkYXlzID0gJGhvbHM7IH0NCmZ1bmN0aW9uIHNldFNlbGVjdG9ycygkc2VsLCAkYnRuKSB7 ICR0aGlzLT5zZWxlY3RvcnMgPSAkc2VsOyAkdGhpcy0+c2VsYnRuID0gJGJ0bjsgfQ0KZnVu Y3Rpb24gc2V0Rmlyc3REYXlPZldlZWsoJGQpIHsNCgkkdGhpcy0+Zmlyc3REYXlPZldlZWsg PSAoKGludCkkZCA8PSA2IGFuZCAoaW50KSRkID49IDApID8gKGludCkkZCA6IDA7DQoNCgkk dGhpcy0+c3RhcnRPZmZzZXQgPSBkYXRlKCAndycsICR0aGlzLT5zdGFydFRpbWUgKS0kdGhp cy0+Zmlyc3REYXlPZldlZWs7DQoJaWYgKCAkdGhpcy0+c3RhcnRPZmZzZXQgPCAwICkgew0K CQkkdGhpcy0+c3RhcnRPZmZzZXQgPSA3IC0gYWJzKCR0aGlzLT5zdGFydE9mZnNldCk7DQoJ fQ0KfQ0KLyoqDQoqIGZybTogYW55IHZhbGlkIFBIUCBzdHJmdGltZSgpIHN0cmluZyBvciBB QkJSL0ZVTEwNCiogdHlwOiBkIHRvIHNldCBkYXksIG0gdG8gc2V0IG1vbnRoIGZvcm1hdA0K Ki8NCmZ1bmN0aW9uIHNldE5hbWVGb3JtYXQoJGZybSwgJHR5cD0iZCIpIHsNCglzd2l0Y2gg KCRmcm0pIHsNCgkJY2FzZSAiRlVMTCI6DQoJCQkkZm10ID0gKCR0eXAgPT0gJ2QnKSA/ICIl QSIgOiAiJUIiOw0KCQkJYnJlYWs7DQoJCWNhc2UgIkFCQlIiOg0KCQkJJGZtdCA9ICgkdHlw ID09ICdkJykgPyAiJWEiIDogIiViIjsNCgkJCWJyZWFrOw0KCQlkZWZhdWx0Og0KCQkJaWYg KCR0eXAgPT0gJ2QnKSB7DQoJCQkJaWYgKHN0cnBvcygkZnJtLCAnJScpID09PSAwKSB7DQoJ CQkJCSRmbXQgPSAkZnJtOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRmcm0gPSB0cmltKCRmcm0s ICd7fScpOw0KCQkJCQkkZnJtID0gZG9fbGlzdCgkZnJtKTsNCgkJCQkJJGZtdCA9ICRmcm07 DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkZm10ID0gJGZybTsNCgkJCX0NCgkJCWJyZWFr Ow0KCX0NCg0KCWlmICgkdHlwID09ICJkIikgew0KCQkkdGhpcy0+ZGF5TmFtZUZtdCA9ICRm bXQ7DQoJCSR0aGlzLT5kYXlOYW1lcyA9IGFycmF5KCk7DQoNCgkJLy8gVGhpcyBpcyBkb25l IHRvIG1ha2Ugc3VyZSBTdW5kYXkgaXMgYWx3YXlzIHRoZSBmaXJzdCBkYXkgb2Ygb3VyIGFy cmF5DQoJCS8vIFVuaXggdGltZSBnZXRzIGEgbGl0dGxlIGZ1bmt5IGF0IHRoZSBiZWdpbm5p bmcgZGVwZW5kaW5nIHVwb24geW91ciB0aW1lem9uZS4NCgkJJHNlcnZlcm9mZnNldCA9IGdt bWt0aW1lKDAsMCwwKSAtIG1rdGltZSgwLDAsMCk7DQoJCSRzdGFydCA9ICgkc2VydmVyb2Zm c2V0IDwgMCkgPyA0IDogMzsNCgkJJGVuZCA9ICRzdGFydCArIDc7DQoJCWZvcigkaT0kc3Rh cnQ7ICRpPCRlbmQ7ICRpKyspIHsNCgkJCWlmIChpc19hcnJheSgkZm10KSkgew0KCQkJCSR0 aGlzLT5kYXlOYW1lc1tdID0gJGZtdFskaS0kc3RhcnRdOw0KCQkJfSBlbHNlIHsNCgkJCQkk dGhpcy0+ZGF5TmFtZXNbXSA9IHVjZmlyc3Qoc2FmZV9zdHJmdGltZSgkZm10LCA4NjQwMCok aSAtIHR6X29mZnNldCgpLCAkdGhpcy0+Z210LCAkdGhpcy0+bGFuZyApKTsNCgkJCX0NCgkJ fQ0KCX0gZWxzZSB7DQoJCSR0aGlzLT5tdGhOYW1lRm10ID0gJGZtdDsNCgl9DQp9DQovKioN CiogUmV0dXJucyBtYXJrdXAgZm9yIGRpc3BsYXlpbmcgdGhlIGNhbGVuZGFyLg0KKiBAcmV0 dXJuDQoqIEBwdWJsaWMNCiovDQpmdW5jdGlvbiBkaXNwbGF5ICggKSB7DQoJJGlkID0gKCR0 aGlzLT50YWJsZUlEKSA/ICcgaWQ9IicuJHRoaXMtPnRhYmxlSUQuJyInIDogJyc7DQoJJGNb XSA9ICc8dGFibGUnLiRpZC4nPic7DQoJJGNbXSA9ICR0aGlzLT5kc3BEYXlOYW1lcygpOw0K CSRjW10gPSAkdGhpcy0+ZHNwRGF5Q2VsbHMoKTsNCgkkY1tdID0gJzwvdGFibGU+JzsNCg0K CXJldHVybiBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0gZW5kIGRpc3BsYXkgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovKioNCiogRGlzcGxh eXMgdGhlIHJvdyBvZiBkYXkgbmFtZXMuDQoqIEByZXR1cm4gc3RyaW5nDQoqIEBwcml2YXRl DQoqLw0KZnVuY3Rpb24gZHNwRGF5TmFtZXMgKCApIHsNCgkkY1tdID0gJzx0ciBjbGFzcz0i c21kX2NhbF9kYXluYW1lcyI+JzsNCg0KCSRpID0gJHRoaXMtPmZpcnN0RGF5T2ZXZWVrOw0K CSRqID0gMDsgLy8gY291bnQgbnVtYmVyIG9mIGRheXMgZGlzcGxheWVkDQoJJGVuZCA9IGZh bHNlOw0KDQoJaWYgKCR0aGlzLT5zaG93SVNPV2Vlaykgew0KCQkkY1tdID0gIjx0aD4iLiR0 aGlzLT5JU09XZWVrSGVhZC4iPC90aD4iOw0KCX0NCglmb3IoJGogPSAwOyAkajw9NjsgJGor KywgJGkrKykgew0KCQlpZigkaSA9PSA3KSB7ICRpID0gMDsgfQ0KCQkkY1tdID0gJzx0aD4n LiR0aGlzLT5nZXREYXlOYW1lKCRpKS4iPC90aD4iOw0KCX0NCg0KCSRjW10gPSAnPC90cj4n Ow0KCXJldHVybiBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0gZW5kIGRzcERheU5hbWVzID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLyoqDQoq IERpc3BsYXlzIGFsbCBkYXkgY2VsbHMgZm9yIHRoZSBtb250aA0KKg0KKiBAcmV0dXJuIHN0 cmluZw0KKiBAcHJpdmF0ZQ0KKi8NCmZ1bmN0aW9uIGRzcERheUNlbGxzICggKSB7DQoJJGkg PSAwOyAvLyBjZWxsIGNvdW50ZXINCgkkZW1wdHlDbGFzcyA9ICR0aGlzLT5lbXB0eWNsYXNz Ow0KCSRpc29DbGFzcyA9ICR0aGlzLT5pc29jbGFzczsNCgkkcm93Q2xhc3MgPSAkdGhpcy0+ cm93Y2xhc3M7DQoJJHJvd0NsYXNzID0gKCRyb3dDbGFzcykgPyAnIGNsYXNzPSInLiRyb3dD bGFzcy4nIicgOiAnJzsNCg0KCSRjW10gPSAnPHRyJy4kcm93Q2xhc3MuJz4nOw0KDQoJaWYg KCR0aGlzLT5zaG93SVNPV2Vlaykgew0KCQkkd2tjZWxsID0gc3RydHIoJHRoaXMtPklTT1dl ZWtDZWxsLCBhcnJheSgne3dlZWt9JyA9PiBkYXRlKCAnVycsICR0aGlzLT5zdGFydFRpbWUg KSApKTsNCgkJJGNbXSA9ICc8dGQgY2xhc3M9IicuJGlzb0NsYXNzLiciPicuJHdrY2VsbC4n PC90ZD4nOw0KCX0NCgkvLyBmaXJzdCBkaXNwbGF5IGVtcHR5IGNlbGxzIGJhc2VkIG9uIHdo YXQgd2Vla2RheSB0aGUgbW9udGggc3RhcnRzIGluDQoJZm9yKCAkaj0wOyAkajwkdGhpcy0+ c3RhcnRPZmZzZXQ7ICRqKysgKQl7DQoJCSRpKys7DQoJCSRjW10gPSAnPHRkIGNsYXNzPSIn LiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsNCgl9IC8vIGVuZCBvZmZzZXQgY2VsbHMN Cg0KCS8vIHdyaXRlIG91dCB0aGUgcmVzdCBvZiB0aGUgZGF5cywgYXQgZWFjaCBzdW5kYXks IHN0YXJ0IGEgbmV3IHJvdy4NCglmb3IoICRkPTE7ICRkPD0kdGhpcy0+ZW5kRGF5OyAkZCsr ICkgew0KCQkkaSsrOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheUNlbGwoICRkICk7DQoJCWlm ICggJGklNyA9PSAwICkgeyAkY1tdID0gJzwvdHI+JzsgfQ0KCQlpZiAoICRkPCR0aGlzLT5l bmREYXkgJiYgJGklNyA9PSAwICkgew0KCQkJJGNbXSA9ICc8dHInLiRyb3dDbGFzcy4nPic7 DQoJCQlpZiAoJHRoaXMtPnNob3dJU09XZWVrKSB7DQoJCQkJJHdrY2VsbCA9IHN0cnRyKCR0 aGlzLT5JU09XZWVrQ2VsbCwgYXJyYXkoJ3t3ZWVrfScgPT4gZGF0ZSggJ1cnLCBzdHJ0b3Rp bWUoICR0aGlzLT55ZWFyLiItIi4kdGhpcy0+bW9udGguIi0iLihpbnQpKCRkICsgMSkgLiIg MDA6MDAiICkpICkpOw0KCQkJCSRjW10gPSAnPHRkIGNsYXNzPSInLiRpc29DbGFzcy4nIj4n LiR3a2NlbGwuJzwvdGQ+JzsNCgkJCX0NCgkJfQ0KCX0NCgkvLyBmaWxsIGluIHRoZSBmaW5h bCByb3cNCgkkbGVmdCA9IDcgLSAoICRpJTcgKTsNCglpZiAoICRsZWZ0IDwgNykJew0KCQlm b3IgKCAkaj0wOyAkajwkbGVmdDsgJGorKyApCXsNCgkJICAkY1tdID0gJzx0ZCBjbGFzcz0i Jy4kZW1wdHlDbGFzcy4nIj4mbmJzcDs8L3RkPic7DQoJCX0NCgkJJGNbXSA9ICJcblx0PC90 cj4iOw0KCX0NCglyZXR1cm4gam9pbignJywkYyk7DQp9DQovLyA9PT09IGVuZCBkc3BEYXlD ZWxscyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci8qKg0KKiBvdXRwdXRzIHRoZSBjb250ZW50cyBmb3IgYSBnaXZlbiBkYXkNCioNCiogQHBh cmFtIGludGVnZXIsIGRheQ0KKiBAYWJzdHJhY3QNCiovDQpmdW5jdGlvbiBkc3BEYXlDZWxs ICggJGRheSApIHsNCglyZXR1cm4gJzx0ZD4nLiRkYXkuJzwvdGQ+JzsNCn0NCi8vID09PT0g ZW5kIGRheUNlbGwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQp9IC8vIGVuZCBjbGFzcw0KDQovLyBQZXJmb3JtIG9uZSBvZiAyIHR5cGVzIG9m IHRlc3Q6IGEgZmxhZy1iYXNlZCB0ZXN0LCBvciBhbiBpbmZvLWJhc2VkIHRlc3QNCmZ1bmN0 aW9uIHNtZF9pZl9jYWwoJGF0dHMsICR0aGluZykgew0KCWdsb2JhbCAkc21kX2NhbF9mbGFn LCAkc21kX2NhbF9pZCwgJHNtZF95ZWFyLCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRf ZGF5Ow0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdmbGFnJyA9PiAnJywgLy8gZXZlbnQs IHN0YW5kYXJkLCByZWN1cihmaXJzdCksIG11bHRpKGZpcnN0LGxhc3QscHJldiksIGNhbmNl bCwgb21pdCwgaG9scywgdG9kYXksIFNNRF9BTlkNCgkJJ2NhbGlkJyA9PiAnJywNCgkJJ3ll YXInID0+ICcnLA0KCQknbW9udGgnID0+ICcnLA0KCQknd2VlaycgPT4gJycsDQoJCSdkYXkn ID0+ICcnLA0KCQknbG9naWMnID0+ICdhbmQnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAk YXR0cykpOw0KDQoJJGZsYWcgPSBkb19saXN0KCRmbGFnKTsNCgkkY3RyID0gJG51bSA9IDA7 DQoNCglpZiAoJGRlYnVnKSB7DQoJCWRtcCgkYXR0cyk7DQoJfQ0KDQoJaWYgKCRmbGFnICYm ICRmbGFnWzBdICE9ICcnKSB7DQoJCSRudW0gKz0gY291bnQoJGZsYWcpOw0KCQlmb3JlYWNo ICgkZmxhZyBhcyAkd2hhdG5vdCkgew0KCQkJaWYgKGVtcHR5KCR3aGF0bm90KSkgY29udGlu dWU7DQoJCQkkY3RyICs9IChpbl9hcnJheSgkd2hhdG5vdCwgJHNtZF9jYWxfZmxhZykgfHwg KCR3aGF0bm90ID09ICdTTURfQU5ZJyAmJiAhZW1wdHkoJHNtZF9jYWxfZmxhZykpKSA/IDEg OiAwOw0KCQl9DQoJfQ0KCWlmICgkY2FsaWQpIHsNCgkJJG51bSsrOw0KCQkkY3RyICs9ICgk c21kX2NhbF9pZCA9PT0gJGNhbGlkKSA/IDEgOiAwOw0KCX0NCglmb3JlYWNoIChhcnJheSgi eWVhciIsICJtb250aCIsICJ3ZWVrIiwgImRheSIpIGFzICR0ZXN0KSB7DQoJCSR0ZXN0ZXIg PSAkJHRlc3Q7DQoJCSRnYmwgPSAnc21kXycuJHRlc3Q7DQoJCSRjb21wYXJlID0gJCRnYmw7 DQoNCgkJaWYgKCR0ZXN0ZXIpIHsNCgkJCSRudW0rKzsNCgkJCXByZWdfbWF0Y2goJy8oWyE9 PD5dKyk/KFtcZF0rKS8nLCAkdGVzdGVyLCAkbWF0Y2hlcyk7DQoJCQlpZiAoJGRlYnVnKSB7 DQoJCQkJZG1wKCJURVNUIElGOiAiLiAkY29tcGFyZS4gKCgkbWF0Y2hlc1sxXSkgPyAkbWF0 Y2hlc1sxXSA6ICc9JykgLiAkbWF0Y2hlc1syXSApOw0KCQkJfQ0KCQkJc3dpdGNoICgkbWF0 Y2hlc1sxXSkgew0KCQkJCWNhc2UgIiEiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZSE9JG1h dGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIj4iOg0KCQkJCQkk Y3RyICs9ICgkY29tcGFyZT4kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJ CQkJY2FzZSAiPj0iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT49JG1hdGNoZXNbMl0pID8g MSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIjwiOg0KCQkJCQkkY3RyICs9ICgkY29t cGFyZTwkbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPD0i Og0KCQkJCQkkY3RyICs9ICgkY29tcGFyZTw9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJ CWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjdHIgKz0gKCRjb21wYXJlPT0kbWF0Y2hl c1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgl9DQoJJHJlc3VsdCA9 ICgoJGN0ciA9PT0gJG51bSAmJiAkbG9naWMgPT0gImFuZCIpIHx8ICRjdHIgPiAwICYmICRs b2dpYyA9PSAib3IiKSA/IHRydWUgOiBmYWxzZTsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2Uo JHRoaW5nLCAkcmVzdWx0KSk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9jYWxfaW5mbygkYXR0cykg ew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkc21kX2NhbF9mbGFnLCAkc21k X2NhbF9pZCwgJHNtZF95ZWFyLCAkc21kX21vbnRoLCAkc21kX3dlZWssICRzbWRfZGF5Ow0K DQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3R5cGUnID0+ICdmbGFnJywgLy8gZmxhZywg eWVhciwgbW9udGgsIHdlZWssIGRheSwgY2FsaWQsIHNlY3Rpb24sIGNhdGVnb3J5LCBhdXRo b3INCgkJJ2pvaW4nID0+ICcgJywNCgkJJ2pvaW5fcHJlZml4JyA9PiAnU01EX0FVVE8nLA0K CQknaHRtbCcgPT4gMCwNCgkJJ2VzY2FwZScgPT4gJ2h0bWwnLA0KCSksICRhdHRzKSk7DQoN Cgkkam9pbiA9ICgkaHRtbCkgPyBhIDogJGpvaW47IC8vIGh0bWwgbW9kZSBmb3JjZXMgYW1w ZXJzYW5kIGpvaW4NCgkkdHlwZSA9IGRvX2xpc3QoJHR5cGUpOw0KCSRyZXQgPSBhcnJheSgp Ow0KCWZvcmVhY2ggKCR0eXBlIGFzICRpdGVtKSB7DQoJCXN3aXRjaCAoJGl0ZW0pIHsNCgkJ CWNhc2UgImZsYWciOg0KCQkJCSRyZXRbXSA9ICgoJGpvaW5fcHJlZml4PT0iU01EX0FVVE8i KSA/ICRqb2luIDogJycpLmpvaW4oJGpvaW4sICRzbWRfY2FsX2ZsYWcpOw0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAieWVhciI6DQoJCQkJaWYgKCRzbWRfeWVhcikgew0KCQkJCQkkcmV0W10g PSAoKCRodG1sKSA/ICd5PScgOiAnJykgLiAkc21kX3llYXI7DQoJCQkJfQ0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAibW9udGgiOg0KCQkJCWlmICgkc21kX21vbnRoKSB7DQoJCQkJCSRyZXRb XSA9ICgoJGh0bWwpID8gJ209JyA6ICcnKSAuICRzbWRfbW9udGg7DQoJCQkJfQ0KCQkJCWJy ZWFrOw0KCQkJY2FzZSAid2VlayI6DQoJCQkJaWYgKCRzbWRfd2Vlaykgew0KCQkJCQkkcmV0 W10gPSAoKCRodG1sKSA/ICd3PScgOiAnJykgLiAkc21kX3dlZWs7DQoJCQkJfQ0KCQkJCWJy ZWFrOw0KCQkJY2FzZSAiZGF5IjoNCgkJCQlpZiAoJHNtZF9kYXkpIHsNCgkJCQkJJHJldFtd ID0gKCgkaHRtbCkgPyAnZD0nIDogJycpIC4gJHNtZF9kYXk7DQoJCQkJfQ0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAic2VjdGlvbiI6DQoJCQkJaWYgKCRwcmV0ZXh0WydzJ10pIHsNCgkJCQkJ JHJldFtdID0gKCgkaHRtbCkgPyAncz0nIDogJycpIC4gJHByZXRleHRbJ3MnXTsNCgkJCQl9 DQoJCQkJYnJlYWs7DQoJCQljYXNlICJjYXRlZ29yeSI6DQoJCQkJaWYgKCRwcmV0ZXh0Wydj J10pIHsNCgkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAnYz0nIDogJycpIC4gJHByZXRleHRb J2MnXTsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJhdXRob3IiOg0KCQkJCWlmICgk dGhpc2FydGljbGUgPT0gTlVMTCkgew0KCQkJCQkkY3VycmF1dGhvciA9ICcnOw0KCQkJCX0g ZWxzZSB7DQoJCQkJCSRjdXJyYXV0aG9yID0gYXV0aG9yKGFycmF5KCkpOw0KCQkJCX0NCgkJ CQlpZiAoJGN1cnJhdXRob3IpIHsNCgkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAnYXV0aG9y PScgOiAnJykgLiAkY3VycmF1dGhvcjsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICJj YWxpZCI6DQoJCQkJaWYgKCRzbWRfY2FsX2lkKSB7DQoJCQkJCSRyZXRbXSA9ICgoJGh0bWwp ID8gJ2NhbGlkPScgOiAnJykgLiAkc21kX2NhbF9pZDsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJ CX0NCgl9DQoJJG91dCA9ICgoJGpvaW5fcHJlZml4PT0iU01EX0FVVE8iKSA/ICgoJGh0bWwp ID8gJz8nIDogJycpIDogJGpvaW5fcHJlZml4KS5qb2luKCRqb2luLCAkcmV0KTsNCglyZXR1 cm4gKCRlc2NhcGU9PSdodG1sJykgPyBodG1sc3BlY2lhbGNoYXJzKCRvdXQpIDogJG91dDsN Cn0NCg0KZnVuY3Rpb24gc21kX2NhbF9ub3coJGF0dHMpIHsNCglnbG9iYWwgJGRhdGVmb3Jt YXQ7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknZm9ybWF0JyA9PiAkZGF0ZWZvcm1h dCwNCgkJJ2dtdCcgPT4gJycsDQoJCSdsYW5nJyA9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJ cmV0dXJuIHNhZmVfc3RyZnRpbWUoJGZvcm1hdCwgdGltZSgpLCAkZ210LCAkbGFuZyk7DQp9 DQoNCi8vIFNldCB1c2VyLWRlZmluZWQgY2xhc3NlcyBmb3IgYSBjZWxsDQpmdW5jdGlvbiBz bWRfY2FsX2NsYXNzKCRhdHRzKSB7DQoJZ2xvYmFsICRzbWRfY2FsX3VjbHM7DQoNCglleHRy YWN0KGxBdHRzKGFycmF5KA0KCQknbmFtZScgPT4gJycsDQoJKSwgJGF0dHMpKTsNCg0KCSRu YW1lID0gZG9fbGlzdCgkbmFtZSk7DQoJJHNtZF9jYWxfdWNscyA9IGFycmF5X21lcmdlKCRz bWRfY2FsX3VjbHMsICRuYW1lKTsNCn0NCg0KLy8gPHR4cDphcnRpY2xlX2N1c3RvbSAvPiBy ZXBsYWNlbWVudChpc2gpIHRhZyB0aGF0IHVuZGVyc3RhbmRzIGhvdyB0byBoYW5kbGUgcmVj dXJyaW5nIGV2ZW50cw0KZnVuY3Rpb24gc21kX2FydGljbGVfZXZlbnQoJGF0dHMsICR0aGlu Zz0nJykgew0KCWdsb2JhbCAkcHJlZnMsICRwcmV0ZXh0LCAkdGhpc3BhZ2U7DQoNCglleHRy YWN0KGxBdHRzKGFycmF5KA0KCQkndGltZScgPT4gJ2FueScsDQoJCSd0eXBlJyA9PiAnc3Rh bmRhcmQscmVjdXIsbXVsdGknLCAvLyB0eXBlIG9mIGV2ZW50IHRvIHNob3cNCgkJJ2V4cGly ZWQnID0+ICcnLCAvLyAwPW5vLCAxPXllcyBwdWJsaXNoIGV4cGlyZWQgZXZlbnRzLCBlbXB0 eT11c2UgcHJlZnMNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJJ3Nl Y3Rpb24nID0+ICcnLA0KCQknYXV0aG9yJyA9PiAnJywNCgkJJ3N0YXR1cycgPT4gJ2xpdmUn LA0KCQknc29ydCcgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ3N0ZXBmaWVsZCcgPT4g JycsDQoJCSdza2lwZmllbGQnID0+ICcnLA0KCQknb21pdGZpZWxkJyA9PiAnJywNCgkJJ21v bnRoJyA9PiAnJywNCgkJJ2Zyb20nID0+ICcnLCAvLyBzdGFydCBkYXRlDQoJCSd0bycgPT4g JycsIC8vIGVuZCBkYXRlDQoJCSdvZmZzZXQnID0+IDAsDQoJCSdsaW1pdCcgPT4gJzEwJywN CgkJJ2V2ZW50bGltaXQnID0+ICcxMCcsIC8vIG1heCBudW1iZXIgb2YgcmVjdXJyaW5nIGV2 ZW50cyB0byBjcmVhdGUgcGVyIHJlYWwgZXZlbnQNCgkJJ3BhZ2VieScgPT4gJycsDQoJCSdw Z29ubHknID0+ICcnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycgPT4gJycsDQoJ CSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykpOw0KDQoJLy8g RmlsdGVycw0KCSRmaWx0U1FMID0gJHN1YlNRTCA9IGFycmF5KCk7DQoJaWYoJGNhdGVnb3J5 KSB7DQoJCSR0bXAgPSBkb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlzdCgkY2F0 ZWdvcnkpKSkpOw0KCQkkZmlsdFNRTFtdID0gJyggQ2F0ZWdvcnkxIElOICgnLiR0bXAuJykg T1IgQ2F0ZWdvcnkyIElOICgnLiR0bXAuJykgKSc7DQoJfQ0KCWlmKCRzZWN0aW9uKSB7DQoJ CSRmaWx0U1FMW10gPSAnU2VjdGlvbiBJTiAoJy5kb1F1b3RlKGpvaW4oIicsJyIsIGRvU2xh c2goZG9fbGlzdCgkc2VjdGlvbikpKSkuJyknOw0KCX0NCglpZigkYXV0aG9yKSB7DQoJCSRm aWx0U1FMW10gPSAnQXV0aG9ySUQgSU4gKCcuZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNo KGRvX2xpc3QoJGF1dGhvcikpKSkuJyknOw0KCX0NCglpZigkaWQpIHsNCgkJJGZpbHRTUUxb XSA9ICdJRCBJTiAoJy5qb2luKCcsJywgYXJyYXlfbWFwKCdpbnR2YWwnLCBkb19saXN0KCRp ZCkpKS4nKSc7DQoJfQ0KCSR0eXBlID0gZG9fbGlzdCgkdHlwZSk7DQoJJHBhZ2VieSA9IChl bXB0eSgkcGFnZWJ5KSA/ICRsaW1pdCA6ICRwYWdlYnkpOw0KDQoJZm9yZWFjaCAoJHR5cGUg YXMgJGV2dHlwKSB7DQoJCXN3aXRjaCgkZXZ0eXApIHsNCgkJCWNhc2UgJ3N0YW5kYXJkJzoN CgkJCQlpZiAoJHN0ZXBmaWVsZCkgew0KCQkJCQkkc3ViU1FMW10gPSAiKCIuJHN0ZXBmaWVs ZC4iID0gJycgQU5EIEV4cGlyZXMgPSAiLk5VTExEQVRFVElNRS4iKSI7DQoJCQkJfQ0KCQkJ CWJyZWFrOw0KCQkJY2FzZSAncmVjdXInOg0KCQkJCWlmICgkc3RlcGZpZWxkKSB7DQoJCQkJ CSRzdWJTUUxbXSA9ICIoIi4kc3RlcGZpZWxkLiIgIT0gJycpIjsNCgkJCQl9DQoJCQkJYnJl YWs7DQoJCQljYXNlICdtdWx0aSc6DQoJCQkJaWYgKCRzdGVwZmllbGQpIHsNCgkJCQkJJHN1 YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiA9ICcnIEFORCBFeHBpcmVzICE9ICIuTlVMTERB VEVUSU1FLiIpIjsNCgkJCQl9DQoJCQkJYnJlYWs7DQoJCX0NCgl9DQoJaWYgKCRzdWJTUUwp IHsNCgkJJGZpbHRTUUxbXSA9ICcoJy5qb2luKCcgT1IgJywgJHN1YlNRTCkuJyknOw0KCX0N Cg0KCSRzdGF0dXMgPSAoJHN0YXR1cykgPyAkc3RhdHVzIDogJ2xpdmUnOyAvLyBpbiBjYXNl IHN0YXR1cyBoYXMgYmVlbiBlbXB0aWVkDQoJJHN0YXR1cyA9IGRvX2xpc3QoJHN0YXR1cyk7 DQoJJHN0YXRpID0gYXJyYXkoKTsNCglmb3JlYWNoICgkc3RhdHVzIGFzICRzdGF0KSB7DQoJ CWlmIChlbXB0eSgkc3RhdCkpIHsNCgkJCWNvbnRpbnVlOw0KCQl9IGVsc2UgaWYgKGlzX251 bWVyaWMoJHN0YXQpKSB7DQoJCQkkc3RhdGlbXSA9ICRzdGF0Ow0KCQl9IGVsc2Ugew0KCQkJ JHN0YXRpW10gPSBnZXRTdGF0dXNOdW0oJHN0YXQpOw0KCQl9DQoJfQ0KCSRmaWx0U1FMW10g PSAnU3RhdHVzIElOICgnLmRvUXVvdGUoam9pbigiJywnIiwgJHN0YXRpKSkuJyknOw0KDQoJ JGV4cGlyZWQgPSAoJGV4cGlyZWQpID8gJGV4cGlyZWQgOiAkcHJlZnNbJ3B1Ymxpc2hfZXhw aXJlZF9hcnRpY2xlcyddOw0KCWlmICghJGV4cGlyZWQpIHsNCgkJJGZpbHRTUUxbXSA9ICco bm93KCkgPD0gRXhwaXJlcyBPUiBFeHBpcmVzID0gJy5OVUxMREFURVRJTUUuJyknOw0KCX0N Cg0KCS8vIFNvcnRpbmcgcnVsZXM6IGRhdGEgaXMgc29ydGVkIG9uY2UgYXMgaXQgaXMgZXh0 cmFjdGVkIHZpYSBTUUwgYW5kIHRoZW4gYWdhaW4gYWZ0ZXIgdGhlIGZha2UgZGF0ZXMgaGF2 ZSBiZWVuIGluc2VydGVkDQoJJHNvcnQgPSAoZW1wdHkoJHNvcnQpKSA/ICdQb3N0ZWQgYXNj JyA6ICRzb3J0Ow0KCSRzb3J0ID0gZG9fbGlzdCgkc29ydCk7DQoJJHNvcnRQcmVmaXggPSAi U09SVF8iOw0KCSRzb3J0T3JkZXIgPSBhcnJheSgpOw0KCWZvciAoJGlkeCA9IDA7ICRpZHgg PCBjb3VudCgkc29ydCk7ICRpZHgrKykgew0KCQkkc29ydGllcyA9IGV4cGxvZGUoJyAnLCAk c29ydFskaWR4XSk7DQoJCWlmIChjb3VudCgkc29ydGllcykgPD0gMSkgew0KCQkJJHNvcnRp ZXNbMV0gPSAiYXNjIjsNCgkJfQ0KCQkkc29ydGllc1sxXSA9ICRzb3J0UHJlZml4LigoJHNv cnRpZXNbMV0gPT0gImRlc2MiKSA/ICdERVNDJyA6ICdBU0MnKTsNCgkJJHNvcnRPcmRlcltd ID0gYXJyYXkoImJ5IiA9PiAkc29ydGllc1swXSwgImRpciIgPT4gJHNvcnRpZXNbMV0pOw0K CX0NCg0KCSRmaWx0U1FMID0gam9pbignIEFORCAnLCAkZmlsdFNRTCk7DQoJJGZpbHRTUUwg Lj0gJyBPUkRFUiBCWSAnLmpvaW4oJywnLGRvU2xhc2goJHNvcnQpKTsNCg0KCSRncmFiQ29s cyA9ICcqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHVQb3N0ZWQsIHVuaXhfdGltZXN0 YW1wKExhc3RNb2QpIGFzIHVMYXN0TW9kLCB1bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1 RXhwaXJlcyc7DQoJJGV2bGlzdCA9IHNhZmVfcm93cygkZ3JhYkNvbHMsICd0ZXh0cGF0dGVy bicsICRmaWx0U1FMLCAkZGVidWcpOw0KDQoJaWYgKCRkZWJ1Zz4yKSB7DQoJCWVjaG8gIisr IFJFQ09SRCBTRVQgKysiOw0KCQlkbXAoJGV2bGlzdCk7DQoJfQ0KCSRhbGxfZXZzID0gJGV2 X3RhbGx5ID0gYXJyYXkoKTsNCgkkbm93ID0gdGltZSgpOw0KDQoJLy8gUGFzcyAxOiBleHBh bmQgYW55IHJlY3VycmluZyBkYXRlcyBhbmQgY29sbGF0ZSBhbGwgZXZlbnRzIHRoYXQgZmFs bCB3aXRoaW4gdGhlIGFsbG90ZWQgcmFuZ2VzDQoJZm9yZWFjaCAoJGV2bGlzdCBhcyAkcm93 KSB7DQoJCSRldl9wb3N0ZWQgPSAkcm93Wyd1UG9zdGVkJ107DQoJCSRldl9leHBpcmVzID0g JHJvd1sndUV4cGlyZXMnXTsNCgkJJGV2X2RheSA9IGRhdGUoJ2onLCAkZXZfcG9zdGVkKTsN CgkJJGV2X21vbnRoID0gZGF0ZSgnbScsICRldl9wb3N0ZWQpOw0KCQkkZXZfeWVhciA9IGRh dGUoJ1knLCAkZXZfcG9zdGVkKTsNCgkJJGlnbm9yZSA9IGFycmF5KCk7DQoNCgkJLy8gR2Vu ZXJhdGUgYSBza2lwIGFycmF5IGZvciB0aGlzIGV2ZW50DQoJCWlmICgkc2tpcGZpZWxkICYm ICRyb3dbJHNraXBmaWVsZF0gIT0gJycpIHsNCgkJCSRpZ25vcmUgPSBkb19saXN0KCRyb3db JHNraXBmaWVsZF0pOw0KCQkJZm9yZWFjaCAoJGlnbm9yZSBhcyAka2V5ID0+ICR2YWwpIHsN CgkJCQkkaWdub3JlWyRrZXldID0gZGF0ZSgiZC1NLVkiLCBzdHJ0b3RpbWUoJHZhbCkpOyAv LyBGb3JjZSBlYWNoIGRhdGUgdG8gYSBrbm93biBmb3JtYXQNCgkJCX0NCgkJfQ0KCQkvLyBB cHBlbmQgYW55IG9taXR0ZWQgZXZlbnRzDQoJCWlmICgkb21pdGZpZWxkICYmICRyb3dbJG9t aXRmaWVsZF0gIT0gJycpIHsNCgkJCSRvbWl0ID0gZG9fbGlzdCgkcm93WyRvbWl0ZmllbGRd KTsNCgkJCWZvcmVhY2ggKCRvbWl0IGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRpZ25vcmVb JGtleV0gPSBkYXRlKCJkLU0tWSIsIHN0cnRvdGltZSgkdmFsKSk7DQoJCQl9DQoJCX0NCgkJ aWYgKCRkZWJ1ZyA+IDEgJiYgJGlnbm9yZSkgew0KCQkJZWNobyAnKysgSUdOT1JFRCBEQVRF UyArKyc7DQoJCQlkbXAoJGlnbm9yZSk7DQoJCX0NCg0KCQkvLyBEb2VzIHRoZSBldmVudCBk ZXNlcnZlIHRvIGJlIGluIHRoZSByZXN1bHRzPw0KCQlpZiAoc21kX2luY2x1ZGVfZXZlbnQo JGV2X3Bvc3RlZCwgJG5vdywgJGlnbm9yZSwgJHRpbWUsICRmcm9tLCAkdG8sICRtb250aCkp IHsNCgkJCSRhbGxfZXZzW10gPSAkcm93Ow0KCQkJJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCdd XSA9IChpc3NldCgkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKSkgPyAkZXZfdGFsbHlbJHJv d1snUG9zdGVkJ11dKzEgOiAxOw0KCQl9DQoNCgkJaWYgKCRzdGVwZmllbGQgJiYgJHJvd1sk c3RlcGZpZWxkXSAhPSAnJykgew0KCQkJJGZyZXEgPSBkb19saXN0KCRyb3dbJHN0ZXBmaWVs ZF0pOw0KCQkJJG1vbnRobHkgPSBmYWxzZTsNCgkJCSRjdXJyc3RhbXAgPSAkZXZfcG9zdGVk Ow0KCQkJJGN1cnJtb250aCA9ICRldl9tb250aDsNCgkJCSRjdXJyeWVhciA9ICRldl95ZWFy Ow0KCQkJZm9yZWFjaCAoJGZyZXEgYXMgJGludGVydmFsKSB7DQoJCQkJJGZha2Vyb3cgPSAk cm93Ow0KCQkJCWZvcigkaWR4ID0gMDsgJGlkeCA8IDk5OTk5OyAkaWR4KyspIHsNCgkJCQkJ JGxhc3RhbXAgPSAkY3VycnN0YW1wOw0KCQkJCQlpZiAoKGlzc2V0KCRldl90YWxseVskcm93 WydQb3N0ZWQnXV0pICYmICgkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dID49ICRldmVudGxp bWl0KSkgfHwgKCR0byAmJiAkY3VycnN0YW1wID4gc3RydG90aW1lKCR0bykpKSB7DQoJCQkJ CQlicmVhazsNCgkJCQkJfQ0KCQkJCQkkaXZhbCA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCBk YXRlKCdGJywgZ21ta3RpbWUoMCwwLDAsJGN1cnJtb250aCwxKSksICRpbnRlcnZhbCk7DQoJ CQkJCSRpdmFsID0gc3RyX3JlcGxhY2UoIj95ZWFyIiwgJGN1cnJ5ZWFyLCAkaW50ZXJ2YWwp Ow0KCQkJCQlpZiAoc3RycG9zKCRpdmFsLCAibGFzdCIpID09PSAwKSB7DQoJCQkJCQkkaXZh bCA9IGRhdGUoImwsIEYgalMgWSIsIHN0cnRvdGltZSgkaXZhbCwgbWt0aW1lKDEyLCAwLCAw LCBkYXRlKCJuIixta3RpbWUoMCwwLDAsJGN1cnJtb250aCwxLCRjdXJyeWVhcikpKzEsIDEs ICRjdXJyeWVhcikpKTsNCgkJCQkJCSRtb250aGx5ID0gdHJ1ZTsNCgkJCQkJfSBlbHNlIGlm IChzdHJwb3MoJGl2YWwsICJmaXJzdCIpID09PSAwKSB7DQoJCQkJCQkkaXZhbCA9IGRhdGUo ImwsIEYgalMgWSIsIHN0cnRvdGltZSgkaXZhbCwgbWt0aW1lKDEyLCAwLCAwLCAoKCRjdXJy bW9udGg+MSkgPyAkY3Vycm1vbnRoLTEgOiAxMiksIGRhdGUoInQiLG1rdGltZSgwLDAsMCwk Y3Vycm1vbnRoLTEsMSwoKCRjdXJybW9udGg9PTEpID8gJGN1cnJ5ZWFyLTE6ICRjdXJyeWVh cikpKSwgKCgkY3Vycm1vbnRoPT0xKSA/ICRjdXJyeWVhci0xOiAkY3VycnllYXIpKSkpOw0K CQkJCQkJJG1vbnRobHkgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWlmICgkbW9udGhseSkgew0K CQkJCQkJJGN1cnJzdGFtcCA9IHN0cnRvdGltZSgkaXZhbCk7DQoJCQkJCX0gZWxzZSB7DQoJ CQkJCQkkY3VycnN0YW1wID0gc3RydG90aW1lKCRpdmFsLCAkY3VycnN0YW1wKTsNCgkJCQkJ fQ0KCQkJCQlpZiAoJGN1cnJzdGFtcCAtICRsYXN0YW1wIDwgMCkgew0KCQkJCQkJYnJlYWs7 IC8vIFBIUF9JTlRfTUFYIGV4Y2VlZGVkDQoJCQkJCX0NCgkJCQkJaWYgKCRjdXJyc3RhbXAg IT09IGZhbHNlKSB7DQoJCQkJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCQkJCWRtcCgiSU5U RVJWQUw6ICIuICRjdXJyc3RhbXAgLiAnIC8vICcgLmRhdGUoJ2QtTS1ZIEg6aTpzJywgJGN1 cnJzdGFtcCkpOw0KCQkJCQkJfQ0KDQoJCQkJCQlpZiAoKCRjdXJyc3RhbXAgPCAkZXZfZXhw aXJlcyB8fCAkZXZfZXhwaXJlcyA9PSAnMCcpICYmICgkY3VycnN0YW1wICE9ICRldl9wb3N0 ZWQpKSB7DQoJCQkJCQkJJHNob3dfbWUgPSBzbWRfaW5jbHVkZV9ldmVudCgkY3VycnN0YW1w LCAkbm93LCAkaWdub3JlLCAkdGltZSwgJGZyb20sICR0bywgJG1vbnRoKTsNCgkJCQkJCQlp ZiAoJHNob3dfbWUpIHsNCgkJCQkJCQkJJGZha2Vyb3dbJ1Bvc3RlZCddID0gZGF0ZSgiWS1t LWQgSDppOnMiLCAkY3VycnN0YW1wKTsNCgkJCQkJCQkJJGZha2Vyb3dbJ3VQb3N0ZWQnXSA9 ICRjdXJyc3RhbXA7DQoJCQkJCQkJCSRhbGxfZXZzW10gPSAkZmFrZXJvdzsNCgkJCQkJCQkJ JGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCddXSA9IChpc3NldCgkZXZfdGFsbHlbJHJvd1snUG9z dGVkJ11dKSkgPyAkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKzEgOiAxOw0KCQkJCQkJCX0N CgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJ Ly8gSW5jcmVtZW50IHRoZSBtb250aC95ZWFyIHJlYWR5IGZvciB0aGUgbmV4dCBpbnRlcnZh bA0KCQkJCQlpZiAoJG1vbnRobHkpIHsNCgkJCQkJCSRjdXJyeWVhciA9ICgkY3Vycm1vbnRo PT0xMikgPyAkY3VycnllYXIrMSA6ICRjdXJyeWVhcjsNCgkJCQkJCSRjdXJybW9udGggPSAo JGN1cnJtb250aD09MTIpID8gMSA6ICRjdXJybW9udGgrMTsNCgkJCQkJfQ0KCQkJCX0NCgkJ CQlpZiAoJGRlYnVnPjEpIHsNCgkJCQkJaWYgKGlzc2V0KCRldl90YWxseVskcm93WydQb3N0 ZWQnXV0pKSB7DQoJCQkJCQlkbXAoIlRBTExZOiAiLiAkZXZfdGFsbHlbJHJvd1snUG9zdGVk J11dKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCWlmICgkZGVidWc+Mikg ew0KCQllY2hvICIrKyBQUkUtU09SVEVEICsrIjsNCgkJZG1wKCRhbGxfZXZzKTsNCgl9DQoN CgkvLyBNYWtlIHVwIGFuIGFycmF5X211bHRpc29ydCBhcmcgbGlzdCBhbmQgZXhlY3V0ZSBp dA0KCWZvcmVhY2goJGFsbF9ldnMgYXMgJGtleSA9PiAkcm93KSB7DQoJCWZvcmVhY2ggKCRy b3cgYXMgJGlkZW50aWZpZXIgPT4gJGl0ZW0pIHsNCgkJCSR2YXJuYW1lID0gImNvbF8iLiRp ZGVudGlmaWVyOw0KCQkJJHskdmFybmFtZX1bJGtleV0gPSAkaXRlbTsNCgkJfQ0KCX0NCglm b3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHNvcnRPcmRlcik7ICRpZHgrKykgew0KCQkk c29ydGFyZ3NbXSA9ICckY29sXycuJHNvcnRPcmRlclskaWR4XVsnYnknXTsNCgkJJHNvcnRh cmdzW10gPSAkc29ydE9yZGVyWyRpZHhdWydkaXInXTsNCgl9DQoJJHNvcnRpdCA9ICdhcnJh eV9tdWx0aXNvcnQoJy5pbXBsb2RlKCIsICIsJHNvcnRhcmdzKS4nLCAkYWxsX2V2cyk7JzsN CglldmFsKCRzb3J0aXQpOw0KDQoJaWYgKCRkZWJ1Zz4yKSB7DQoJCWVjaG8gIisrIFBPU1Qt U09SVEVEICsrIjsNCgkJZG1wKCRhbGxfZXZzKTsNCgl9DQoNCgkvLyBIYW5kbGUgcGFnaW5n DQoJJGdyYW5kX3RvdGFsID0gY291bnQoJGFsbF9ldnMpOw0KCSR0b3RhbCA9ICRncmFuZF90 b3RhbCAtICRvZmZzZXQ7DQoJJG51bVBhZ2VzID0gY2VpbCgkdG90YWwvJHBhZ2VieSk7DQoJ JHBnID0gKCEkcHJldGV4dFsncGcnXSkgPyAxIDogJHByZXRleHRbJ3BnJ107DQoJJHBnb2Zm c2V0ID0gJG9mZnNldCArICgoJHBnIC0gMSkgKiAkcGFnZWJ5KTsNCgkvLyBzZW5kIHBhZ2lu ZyBpbmZvIHRvIHR4cDpuZXdlciBhbmQgdHhwOm9sZGVyDQoJJHBhZ2VvdXRbJ3BnJ10gPSAk cGc7DQoJJHBhZ2VvdXRbJ251bVBhZ2VzJ10gPSAkbnVtUGFnZXM7DQoJJHBhZ2VvdXRbJ3Mn XSA9ICRwcmV0ZXh0WydzJ107DQoJJHBhZ2VvdXRbJ2MnXSA9ICRwcmV0ZXh0WydjJ107DQoJ JHBhZ2VvdXRbJ2dyYW5kX3RvdGFsJ10gPSAkZ3JhbmRfdG90YWw7DQoJJHBhZ2VvdXRbJ3Rv dGFsJ10gPSAkdG90YWw7DQoNCglpZiAoZW1wdHkoJHRoaXNwYWdlKSkNCgkJJHRoaXNwYWdl ID0gJHBhZ2VvdXQ7DQoJaWYgKCRwZ29ubHkpDQoJCXJldHVybjsNCg0KCS8vIFBhc3MgMjog aXRlcmF0ZSBvdmVyIHRoZSBuZXcgYXJyYXkgb2JleWluZyBhbnkgb2Zmc2V0L2xpbWl0LiBB bnl0aGluZyBpbiB0aGUgcmFuZ2UgZ2V0cyBwb3B1bGF0ZWQgYW5kIHBhcnNlZA0KCSRvdXQg PSBhcnJheSgpOw0KCSRjdHIgPSAwOw0KCWFydGljbGVfcHVzaCgpOw0KCWZvcmVhY2ggKCRh bGxfZXZzIGFzICRpZHggPT4gJHJvdykgew0KCQlpZiAoJGlkeCA+PSAkcGdvZmZzZXQgJiYg JGN0ciA8ICRsaW1pdCkgew0KCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkcm93KTsNCgkJCSRv dXRbXSA9ICgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJGZvcm0pID8gcGFyc2VfZm9y bSgkZm9ybSkgOiBocmVmKCRyb3dbJ1Bvc3RlZCddLCBwZXJtbGlua3VybCgkcm93KSwgJyB0 aXRsZT0iJy4kcm93WydUaXRsZSddLiciJykgKTsNCgkJCSRjdHIrKzsNCgkJfQ0KCX0NCglh cnRpY2xlX3BvcCgpOw0KCXJldHVybiBkb1dyYXAoJG91dCwgJHdyYXB0YWcsICRicmVhaywg JGNsYXNzKTsNCn0NCg0KLy8gQ2hlY2sgdGhlIHBhc3NlZCB0aW1lc3RhbXAgYWdhaW5zdCBl dmVyeSB0aW1lIHJlc3RyaWN0aW9uIGFuZCByZXR1cm4gdHJ1ZSBpZiBpdCBwYXNzZXMgdGhl bSBhbGwNCmZ1bmN0aW9uIHNtZF9pbmNsdWRlX2V2ZW50KCR0cywgJG5vdywgJGlnbiwgJHRp bWUsICRmcm9tLCAkdG8sICRtb250aCkgew0KCSRzaG93ID0gYXJyYXkoKTsNCgkkc2hvd1td ID0gIWluX2FycmF5KGRhdGUoImQtTS1ZIiwgJHRzKSwgJGlnbik7DQoJc3dpdGNoKCR0aW1l KSB7DQoJCWNhc2UgImFueSI6IGJyZWFrOw0KCQljYXNlICJmdXR1cmUiOiAkc2hvd1tdID0g KCR0cyA+ICRub3cpID8gdHJ1ZSA6IGZhbHNlOyBicmVhazsNCgkJZGVmYXVsdCA6ICRzaG93 W10gPSAoJHRzIDwgJG5vdykgPyB0cnVlIDogZmFsc2U7IGJyZWFrOyAvLyBUaGUgcGFzdA0K CX0NCglpZiAoJGZyb20pIHsgJHNob3dbXSA9ICgkdHMgPj0gc3RydG90aW1lKCRmcm9tKSkg PyB0cnVlIDogZmFsc2U7IH0NCglpZiAoJHRvKSB7ICRzaG93W10gPSAoJHRzIDw9IHN0cnRv dGltZSgkdG8pKSA/IHRydWUgOiBmYWxzZTsgfQ0KCWlmICgkbW9udGgpIHsgJHNob3dbXSA9 IChkYXRlKCJZLW0iLCAkdHMpID09ICRtb250aCkgPyB0cnVlIDogZmFsc2U7IH0NCg0KCXJl dHVybiAoIWluX2FycmF5KDAsICRzaG93KSkgPyB0cnVlIDogZmFsc2U7DQp9IjtzOjQ6InR5 cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjQ6ImhlbHAiO3M6NTk4MTU6Igk8 cD48ZGl2IGlkPSJzbWRfaGVscCI+PC9wPgoKCTxoMSBpZD0idG9wIj5zbWRfY2FsZW5kYXI8 L2gxPgoKCTxwPlJlbmRlciBhIGNhbGVuZGFyIHdpdGggb25lIG9yIG1vcmUgYXJ0aWNsZXMg YXMgZXZlbnRzIG9uIGVhY2ggZGF5LiBVc2VmdWwgZm9yIGdpZyBndWlkZXMsICYjODIyMDt3 aGF0JiM4MjE3O3Mgb24mIzgyMjE7IG9yIHNjaGVkdWxpbmcuPC9wPgoKCTxoMiBpZD0iZmVh dHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPkZ1bGwtc2l6ZSBvciBtaW5pIGNh bGVuZGFyIGJ5IG1vbnRoIHdpdGggb3B0aW9uYWwgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwv 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 bGUgaXQgeW91ciB3YXk8L2xpPgoJCTxsaT5Db25kaXRpb25hbCB0ZXN0cyBmb3IgZmxhZ3Mg KHN0YW5kYXJkLCByZWN1cnJpbmcsIHNwYW5uZWQsIGNhbmNlbGxlZCwgaG9saWRheXMpIGFu ZCBkYXRlcyBzbyB5b3UgY2FuIGJ1aWxkIHlvdXIgb3duIGxvZ2ljIGluIHlvdXIgZm9ybXMv Y29udGFpbmVyPC9saT4KCQk8bGk+Q2xhc3Mgc291cDogdGFibGUtLCByb3ctLCBjZWxsLSwg YW5kIGV2ZW50LWxldmVsIGNsYXNzZXMgZm9yIGluZGljYXRpbmcgZGlmZmVyZW50IHNjZW5h cmlvcyAoc3Bhbm5lZCBldmVudCwgcmVjdXJyaW5nIGV2ZW50LCBjYW5jZWxsZWQgZXZlbnQs IGV0Yyk7IGN1c3RvbSBjbGFzc2VzIGNhbiBiZSBzcGVjaWZpZWQgYmFzZWQgb24gYW4gZXZl bnQ8L2xpPgoJCTxsaT5UYWcgdG8gZGlzcGxheSByZWN1cnJpbmcgZXZlbnRzPC9saT4KCQk8 bGk+VGFnIHRvIG91dHB1dCB2YXJpb3VzIGV2ZW50IG9yIGNhbGVuZGFyIGNoYXJhY3Rlcmlz dGljcyAoZS5nLiB0aGUgbW9udGgsIHllYXIsIGNhbGVuZGFyIGlkLCBzZWN0aW9uIGFuZCBz byBvbik8L2xpPgoJCTxsaT5UYWcgdG8gb3V0cHV0IHRoZSBjdXJyZW50IGRhdGUvdGltZSAo Zm9ybWF0dGVkIGhvdyB5b3UgbGlrZSk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+ QXV0aG9yIC8gY3JlZGl0czwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24u Y29tL2NvbW1lbnRGb3JtIj5TdGVmIERhd3NvbjwvYT4uIEpvaW50bHkgZnVuZGVkIGJ5IGdl bmVyb3VzIGRvbmF0b3JzOiBtcmRhbGUsIHdvb2YsIGpha29iLCByZW5vYmlyZCBhbmQgam9l YmFpY2guIEJhc2VkIGhlYXZpbHkgb24gbWRwX2NhbGVuZGFyLiBBbGwgcHJvcHMgdG8gdGhl IG9yaWdpbmFsIGF1dGhvciBvZiB0aGUgcGx1Z2luLCBhbmQgb2YgY291cnNlIHRoZSBjbGFz cyB1cG9uIHdoaWNoIHRoZSBjYWxlbmRhciBpcyBiYXNlZC4gQW5kIG5vdCBmb3JnZXR0aW5n IG91ciBhd2Vzb21lIFRleHRwYXR0ZXJuIGRldnMgd2hvIGNvbnRpbnVlIHRvIHB1c2ggdGhp cyBsaXR0bGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNNUzwvc3Bhbj4gdG8gdGhlIHN0YXJzLjwv cD4KCgk8aDIgaWQ9Imluc3RhbGwiPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9o Mj4KCgk8cCBjbGFzcz0icmVxdWlyZWQiPlJlcXVpcmVzIFRleHRwYXR0ZXJuIDQuMC43Kzwv cD4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6 Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMDUyL3NtZF9jYWxlbmRhciI+dGV4dHBhdHRl cm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+ c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBh bmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0u dGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjkyMDAiPmZvcnVtIHRocmVhZDwv YT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3 aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0 ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPgoKCTxoMiBpZD0ibmFt aW5nIj5OYW1pbmcgY29udmVudGlvbjwvaDI+CgoJPHA+QmVmb3JlIGJlZ2lubmluZyB0aGVy ZSYjODIxNztzIGEgbGl0dGxlIGJpdCBvZiBub21lbmNsYXR1cmUgdG8gZ2V0IG91dCBvZiB0 aGUgd2F5OjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jZWxsPC9zcGFu PiA6IGEgc3BlY2lmaWMgZGF5IG9uIHRoZSBjYWxlbmRhciBpbiBhIHBhcnRpY3VsYXIgbW9u dGgveWVhcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ldmVudDwvc3Bhbj4gOiBh biBhcnRpY2xlLiBJdCYjODIxNztzIGJlc3QgdG8gbm9taW5hdGUgYSBkZWRpY2F0ZWQgc2Vj dGlvbiBmb3IgZXZlbnRzIHNvIGl0IGtlZXBzIHRoaW5ncyBuZWF0ZXIgb24geW91ciBjYWxl bmRhciBidXQgeW91IGNhbiB1c2UgZXZlbnRzIGZyb20gbW9yZSB0aGFuIG9uZSBzZWN0aW9u IGlmIHlvdSB3aXNoLiBBbnkgYXJ0aWNsZSB3cml0dGVuIGluIHRoZSBnaXZlbiBzZWN0aW9u KHMpIHdpbGwgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciBhcyBsb25nIGFzIGl0cyBleHBpcnkg aGFzbiYjODIxNzt0IGJlZW4gbWV0LiBNb3JlIHRoYW4gb25lIGV2ZW50IG1heSBhcHBlYXIg aW4gZWFjaCBjZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNlbGwgZmxhZzwv c3Bhbj4gOiBlYWNoIGNlbGwgY2FuIGVpdGhlciBiZSA8Y29kZT5lbXB0eTwvY29kZT4gKGku ZS4gbm8gZGF0ZTogYSBmaWxsZXIgYXQgdGhlIHN0YXJ0L2VuZCBvZiB0aGUgbW9udGgpLCBp dCBjYW4gYmUgYSByZWd1bGFyIGRheSAobm8gZmxhZyksIGl0IGNhbiBjb250YWluIGFuIDxj b2RlPmV2ZW50PC9jb2RlPiwgb3IgaXQgbWF5IGJlIGEgaG9saWRheSAoPGEgaHJlZj0iI2hv bGlkYXlzIj5ob2xzPC9hPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnQg ZmxhZzwvc3Bhbj4gOiBlYWNoIGV2ZW50IGNhbiBlaXRoZXIgYmUgYSA8YSBocmVmPSIjZXZl bnRzIj5zdGFuZGFyZDwvYT4gZXZlbnQsIGl0IGNhbiA8YSBocmVmPSIjcmVjdXIiPnJlY3Vy PC9hPiwgaXQgY2FuIHNwYW4gbW9yZSB0aGFuIG9uZSBkYXkgKDxhIGhyZWY9IiNtdWx0aSI+ bXVsdGk8L2E+KSwgZGF0ZXMgY2FuIGJlIHVuc2NoZWR1bGVkIG9yIG9taXR0ZWQgKDxhIGhy ZWY9IiNjYW5jZWwiPmNhbmNlbCAvIG9taXQ8L2E+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5jYWxpZDwvc3Bhbj4gOiB5b3UgbWF5IHB1dCBtb3JlIHRoYW4gb25lIGNhbGVu ZGFyIG9uIGEgcGFnZS4gSWYgc28sIGVhY2ggb25lIG11c3QgYmUgdW5pcXVlbHkgcmVmZXJl bmNlZCB3aXRoIHRoaXMgY2FsZW5kYXIgSUQ8L2xpPgoJPC91bD4KCgk8cD5JdCYjODIxNztz IGFsc28gd29ydGggYmVhcmluZyBpbiBtaW5kIHRoZSA8YSBocmVmPSIjZGF0ZXMiPmRhdGUg Y2F2ZWF0czwvYT4gdGhhdCBtYXkgd2VsbCBiaXRlIHlvdSBoYXJkLjwvcD4KCgk8aDIgaWQ9 InVzYWdlIj5Vc2FnZTogPGNvZGU+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgLyZndDs8L2NvZGU+ PC9oMj4KCgk8cD5QdXQgdGhlIDxjb2RlPiZsdDt0eHA6c21kX2NhbGVuZGFyIC8mZ3Q7PC9j b2RlPiB0YWcgd2hlcmV2ZXIgeW91IHdhbnQgeW91ciBjYWxlbmRhciB0byBhcHBlYXIuIFVz ZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIHRvIGNvbnRyb2wgaXRzIG91dHB1 dCBkaXNwbGF5IGFuZCB1c2UgdGhlIDxhIGhyZWY9IiNhdHRzdHlsZXMiPnN0eWxlIGF0dHJp YnV0ZXM8L2E+IHRvIGRldGVybWluZSBob3cgdG8gYXBwbHkgc3R5bGVzIHRvIHRoZSB2YXJp b3VzIGV2ZW50cyBhbmQgY2VsbHMuPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAiIGlkPSJhdHRy aWJ1dGVzIj5NYWluIGF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnNpemU8L3NwYW4+IDogY2FsZW5kYXIgc2l6ZSwgPGNvZGU+bGFyZ2U8L2NvZGU+ IG9yIDxjb2RlPnNtYWxsPC9jb2RlPi4gVGhlIHNtYWxsIGlzIG1vcmUgZ2VhcmVkIHRvd2Fy ZHMgYSBtaW5pY2FsLCBhbHRob3VnaCBmdW5jdGlvbmFsbHkgdGhlcmUgPGEgaHJlZj0iI3Np emVkaWZmIj5pc24mIzgyMTc7dCBtdWNoIGJldHdlZW4gdGhlbTwvYT4uIERlZmF1bHQ6IDxj b2RlPmxhcmdlPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aW1lPC9z cGFuPiA6IHNob3cgPGNvZGU+cGFzdDwvY29kZT4sIDxjb2RlPmZ1dHVyZTwvY29kZT4sIG9y IDxjb2RlPmFueTwvY29kZT4gZXZlbnQuIERlZmF1bHQ6IDxjb2RlPmFueTwvY29kZT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXhwaXJlZDwvc3Bhbj4gOiBkZWZpbml0aXZl bHkgaGlkZSAoPGNvZGU+MDwvY29kZT4pIG9yIHNob3cgKDxjb2RlPjE8L2NvZGU+KSBleHBp cmVkIGV2ZW50cy4gTGVhdmUgYmxhbmsgdG8gdXNlIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBBZHZhbmNlZCBQcmVmZXJlbmNlIDxjb2RlPlB1Ymxpc2ggZXhwaXJlZCBh cnRpY2xlczwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zmlyc3RkYXk8 L3NwYW4+IDogdGhlIDFzdCBkYXkgb2YgdGhlIHdlZWsgdG8gc2hvdyBpbiB0aGUgY2FsZW5k YXIuIDA9U3VuZGF5LCAxPU1vbmRheSBhbmQgc28gb24gZG93biB0byA2PVNhdHVyZGF5LiBE ZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5k YXlmb3JtYXQ8L3NwYW4+IDogdGhlIHdheSBpbiB3aGljaCB0aGUgZGF5IG5hbWVzIGFyZSBy ZW5kZXJlZC4gQ2hvb3NlIGZyb20gZWl0aGVyIDxjb2RlPkFCQlI8L2NvZGU+ICh0aGUgZGVm YXVsdCkgdG8gc2hvdyB0aGUgZGF5cyBhcyBNb24sIFR1ZSwgV2VkLCBldGMgb3IgPGNvZGU+ RlVMTDwvY29kZT4gdG8gcmVuZGVyIHRoZWlyIGZ1bGwgbmFtZXMuIEFsdGVybmF0aXZlbHks IHN1cHBseSBhbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3VrMi5waHAubmV0L3N0cmZ0aW1l Ij5zdHJmdGltZSgpPC9hPiBjb2RlcyB0byB1c2UgdGhhdCBpbnN0ZWFkLiBMb2NhbGUtc3Bl Y2lmaWMgbmFtZXMgYXJlIHJldHVybmVkLjxkaXYgY2xhc3M9ImJyZWFrIj5GaW5hbGx5LCBp ZiB5b3UgcmVhbGx5IGRvbiYjODIxNzt0IGxpa2UgYW55IG9mIHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+UEhQPC9zcGFuPiBkaXNwbGF5IG1ldGhvZHMgeW91IGNhbiBoYXJkLWNvZGUgeW91 ciBvd24uIFdyaXRlIGVhY2ggZW50cnkgYXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBzdXJy b3VuZGVkIGJ5IDxjb2RlPnt9PC9jb2RlPiBicmFja2V0cy4gU28sIGlmIHlvdSB3YW50ZWQg dHdvLWxldHRlciBHZXJtYW4gd2VlayBkYXlzIHlvdSBjb3VsZCB1c2U6IDxjb2RlPmRheWZv cm1hdD0mcXVvdDt7U28sTW8sRGksTWksRG8sRnIsU2F9JnF1b3Q7PC9jb2RlPi4gVGhlIGZp cnN0IGRheSBpbiB0aGUgbGlzdCA8c3Ryb25nPm11c3Q8L3N0cm9uZz4gYmUgYSBTdW5kYXkg b3IgdGhpbmdzIHdpbGwgZ2V0IG1pZ2h0eSBiaXphcnJlPC9kaXY+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPm1vbnRoZm9ybWF0PC9zcGFuPiA6IHRoZSB3YXkgaW4gd2hpY2gg dGhlIG1vbnRoIG5hbWVzIGFyZSByZW5kZXJlZC4gQ2hvb3NlIGZyb20gZWl0aGVyIDxjb2Rl PkZVTEw8L2NvZGU+ICh0aGUgZGVmYXVsdCkgdG8gc2hvdyB0aGUgZnVsbCBtb250aCBuYW1l cyBvciA8Y29kZT5BQkJSPC9jb2RlPiB0byByZW5kZXIgdGhlaXIgYWJicmV2aWF0ZWQgbmFt ZXMuIEFsdGVybmF0aXZlbHksIHN1cHBseSBhbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3Vr Mi5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiBjb2RlcyB0byB1c2UgdGhhdCBp bnN0ZWFkLiBMb2NhbGUtc3BlY2lmaWMgbmFtZXMgYXJlIHJldHVybmVkPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnNlbGVjdDwvc3Bhbj4gOiB1c2UgYSBzZWxlY3QgZHJvcGRv d24gZm9yIHJhcGlkIGFjY2VzcyB0byB3ZWVrcywgbW9udGhzIG9yIHllYXJzIGluc3RlYWQg b2YgcmVuZGVyaW5nIGp1c3QgdGhlIG5hbWVzLiBEZWZhdWx0OiB1bnNldCwgYnV0IHlvdSBt YXkgbWFrZSBhIChjb21tYS1zZXBhcmF0ZWQpIGxpc3QgZnJvbSBlaXRoZXIgPGNvZGU+d2Vl azwvY29kZT4gLyA8Y29kZT5tb250aDwvY29kZT4gb3IgPGNvZGU+eWVhcjwvY29kZT4uICh3 ZWVrIGFuZCBtb250aCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlKS4gTm90ZSB0aGF0IHdoZW4g dXNpbmcgPGNvZGU+d2VlazwvY29kZT4sIHRoZSBwbHVnaW4gbWFrZXMgYW4gZWR1Y2F0ZWQg Z3Vlc3MgYXQgdGhlIG1vbnRoIGFuZCBtYXkgbm90IGdldCBpdCByaWdodDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5zZWxlY3RidG48L3NwYW4+IDogYnkgZGVmYXVsdCwgdGhl IHNlbGVjdCBkcm9wZG93bnMgd2lsbCBhdXRvLXN1Ym1pdCB3aGVuIHRoZXkgYXJlIGNoYW5n ZWQuIElmIHlvdSBwcmVmZXIgYSBkZWRpY2F0ZWQgc3VibWl0IGJ1dHRvbiwgZ2l2ZSB0aGUg dGV4dCB5b3Ugd2lzaCB0byBhcHBlYXIgb24gdGhlIGJ1dHRvbiBoZXJlLiBUaGUgYnV0dG9u IGhhcyBhIGZpeGVkIGNsYXNzIG9mIDxjb2RlPnNtZF9jYWxfaW5wdXQ8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlzb3dlZWtzPC9zcGFuPiA6IHNob3cgdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgbnVtYmVycyBhcyBhIGNvbHVtbiBh dCB0aGUgc3RhcnQgb2YgdGhlIGNhbGVuZGFyLiBBbnkgdGV4dCBpbiB0aGlzIGF0dHJpYnV0 ZSBlbmFibGVzIHRoZSBmZWF0dXJlLCBhbmQgeW91ciB0ZXh0IGJlY29tZXMgdGhlIGhlYWRp bmcgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgY29sdW1uLiBZ b3UgbWF5IG9wdGlvbmFsbHkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgd2VlayBudW1iZXIgZGlz cGxheWVkIGluIGVhY2ggY2VsbCBieSBhZGRpbmcgYSBjb21tYSBhbmQgc29tZSB0ZXh0OyB3 aGF0ZXZlciB5b3UgZW50ZXIgd2lsbCBiZSBwdXQgaW4gZWFjaCA8c3BhbiBjbGFzcz0iY2Fw cyI+SVNPPC9zcGFuPiB3ZWVrIGNlbGwuIFVzZSB0aGUgcmVwbGFjZW1lbnQgY29kZSA8Y29k ZT57d2Vla308L2NvZGU+IGluIHlvdXIgbWFya3VwIHRvIGluc2VydCB0aGUgY3VycmVudCB3 ZWVrIG51bWJlci4gPGRpdiBjbGFzcz0iYnJlYWsiPkV4YW1wbGU6IDxjb2RlPmlzb3dlZWtz PSZxdW90O3drLCAje3dlZWt9JnF1b3Q7PC9jb2RlPiB3aWxsIHJlbmRlciAmIzgyMTY7d2sm IzgyMTc7IGF0IHRoZSB0b3Agb2YgdGhlIGNvbHVtbiBhbmQgc29tZXRoaW5nIGxpa2UgPGNv ZGU+IzI0PC9jb2RlPiwgPGNvZGU+IzI1PC9jb2RlPiwgPGNvZGU+IzI2PC9jb2RlPiYjODIz MDsgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggd2VlayByb3cuIElmIHRoZSBhdHRyaWJ1dGUgYmVn aW5zIHdpdGggYSBjb21tYSAoaS5lIHRoZSBmaXJzdCBpdGVtIGlzIG9taXR0ZWQpLCB0aGVy ZSB3aWxsIGJlIG5vIGNvbHVtbiBoZWFkaW5nLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5O b3RlIHRoYXQgaWYgdGhlIGlzb3dlZWtzIGZlYXR1cmUgaXMgZW5hYmxlZCwgPGNvZGU+Zmly c3RkYXk8L2NvZGU+IHdpbGwgYmUgZm9yY2VkIHRvIHN0YXJ0IG9uIGEgTW9uZGF5IGFzIGdv dmVybmVkIGJ5IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiBzcGVjaWZpY2F0 aW9uLiBEZWZhdWx0OiB1bnNldDwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5zdGF0dXM8L3NwYW4+IDogZXZlbnRzIGluIHRoaXMgbGlzdCBvZiBzdGF0dXMgYXJlIHB1 Ymxpc2hlZC4gRGVmYXVsdDogPGNvZGU+bGl2ZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogZmlsdGVyIGV2ZW50cyBieSB0aGlzIGxp c3Qgb2YgY2F0ZWdvcmllcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiBmaWx0ZXIgZXZlbnRzIGJ5IHRoaXMgbGlzdCBv ZiBzZWN0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+YXV0aG9yPC9zcGFuPiA6IGZpbHRlciBldmVudHMgYnkgdGhpcyBhdXRob3IgUmVhbCBO YW1lLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pZDwv c3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IElEIHRvIGFwcGx5 IHRvIHRoZSB0YWJsZSB0aGF0IGhvbGRzIHRoZSBjYWxlbmRhci4gVGhpcyBpcyB0aGUgdmFs dWUgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIDxjb2Rl PmNhbGlkPC9jb2RlPiBhbmQgaXRzIGRlZmF1bHQgaXMgdW5zZXQuIEVhY2ggY2FsZW5kYXIg b24gYSBwYWdlIDxhIGhyZWY9IiNuYW1pbmciPm11c3QgYmUgdW5pcXVlPC9hPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZpZDwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPkhUTUw8L3NwYW4+IElEIHRvIGFwcGx5IHRvIHRoZSBwcmV2L25leHQvbW9udGgv eWVhciBuYXZpZ2F0aW9uIGZvcm0uIElmIHVzZWQsIGVhY2ggY2FsZW5kYXIgb24gYSBwYWdl IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYXZpZC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+bmF2YXJyb3c8L3NwYW4+IDogY29tbWEtc2VwYXJhdGVkIHBh aXIgb2YgaXRlbXMgeW91IHdhbnQgdG8gYXBwZWFyIGFzIHByZXYvbmV4dCBhcnJvd3MgaW4g dGhlIGNhbGVuZGFyLiBEZWZhdWx0OiA8Y29kZT4mYW1wOyM2MDssICZhbXA7IzYyOzwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bW9udGg8L3NwYW4+IDogc3RhcnQg dGhlIGNhbGVuZGFyIG9uIHRoaXMgbW9udGggZnJvbSAxIChKYW51YXJ5KSB0byAxMiAoRGVj ZW1iZXIpLiBOb3JtYWwgY2FsZW5kYXIgbmF2aWdhdGlvbiBvdmVycmlkZXMgdGhpcyB2YWx1 ZS4gSWYgPGNvZGU+c3RhdGljPC9jb2RlPiBpcyB1c2VkLCB0aGlzIG1vbnRoIGJlY29tZXMg dGhlIG9ubHkgb25lIHlvdSBtYXkgdmlldy4gSWYgdW5zZXQsIGFuZCBubyA8Y29kZT5tPTwv Y29kZT4gdmFsdWUgYXBwZWFycyBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gbGluZSwgdGhlIGN1cnJlbnQgbW9udGggaXMgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj53ZWVrPC9zcGFuPiA6IHN0YXJ0IHRoZSBjYWxlbmRhciBkdXJpbmcgdGhl IG1vbnRoIGNvbnRhaW5pbmcgdGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3 ZWVrIChmcm9tIDEgdG8gNTMpLiBJZ25vcmVkIGlmIDxjb2RlPnN0YXRpYzwvY29kZT4gb3Ig b25lIG9mIHRoZSBjYWxlbmRhciBuYXZpZ2F0aW9uIGNvbnRyb2xzIGlzIHVzZWQuIElmIGEg PGNvZGU+dz08L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IGxpbmUsIHRoZSBnaXZlbiB3ZWVrIG92ZXJyaWRlcyBhbnkgbW9udGgg dmFsdWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+eWVhcjwvc3Bhbj4gOiBzdGFy dCB0aGUgY2FsZW5kYXIgYXQgdGhpcyA0LWRpZ2l0IHllYXIuIE5vcm1hbCBjYWxlbmRhciBu YXZpZ2F0aW9uIG92ZXJyaWRlcyB0aGlzIHZhbHVlLiBJZiA8Y29kZT5zdGF0aWM8L2NvZGU+ IGlzIHVzZWQsIHRoaXMgeWVhciBiZWNvbWVzIHRoZSBvbmx5IG9uZSB5b3UgbWF5IHZpZXcu IElmIHVuc2V0LCBhbmQgbm8gPGNvZGU+eT08L2NvZGU+IHZhbHVlIGFwcGVhcnMgb24gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmUsIHRoZSBjdXJyZW50IHllYXIg aXMgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj55ZWFyd2lkdGg8L3NwYW4+ IDogYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB0aGF0IHNwZWNpZmllcyBob3cgbWFueSB5ZWFy cyB5b3VyIGNhbGVuZGFyIHNwYW5zLiBCeSBkZWZhdWx0IGl0IGlzIDxjb2RlPjAsMDwvY29k ZT4gd2hpY2ggdXNlcyB0aGUgZWFybGllc3QgKHBvc3RlZCkgZXZlbnQgaW4gdGhlIHNlY3Rp b24gYXMgdGhlIGxvd2VzdCB5ZWFyIGFuZCB0aGUgbGF0ZXN0IChtb2RpZmllZCkgZXZlbnQg aW4gdGhlIHNlY3Rpb24gYXMgdGhlIGxhdGVzdCB5ZWFyLiBZb3Ugd2lsbCBub3QgYmUgcGVy bWl0dGVkIHRvIG5hdmlnYXRlIHRoZSBjYWxlbmRhciBvdXRzaWRlIHRoaXMgcmFuZ2UuIFRv IHdpZGVuIHRoZSByYW5nZSwgc3BlY2lmeSBzb21lIHZhbHVlcywgZm9yIGV4YW1wbGUgPGNv ZGU+eWVhcndpZHRoPSZxdW90OzIsNCZxdW90OzwvY29kZT4gd2lsbCBzdWJ0cmFjdCAyIHdo b2xlIHllYXJzIGZyb20gdGhlIGVhcmxpZXN0IGV2ZW50IGFuZCBhZGQgNCB3aG9sZSB5ZWFy cyB0byB0aGUgbGF0ZXN0IGV2ZW50LiBJZiB5b3Ugc3BlY2lmeSBhIHNpbmdsZSBudW1iZXIs IHRoYXQgdmFsdWUgd2lsbCBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgcmFuZ2UgZXF1YWxseSBp biBib3RoIGRpcmVjdGlvbnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwv c3Bhbj4gOiB1c2UgdGhpcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHRv IHByb2Nlc3MgZWFjaCBldmVudC4gSWYgdGhlIGNhbGVuZGFyIHRhZyBpcyB1c2VkIGFzIGEg Y29udGFpbmVyIGl0IHdpbGwgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBmb3JtLiBJ ZiBuZWl0aGVyIGFyZSB1c2VkLCB0aGUgZGVmYXVsdCBmb3IgYSBsYXJnZSBjYWxlbmRhciBp cyBhIGh5cGVybGlua2VkIGFydGljbGUgdGl0bGUuIFRoZSBzbWFsbCBjYWxlbmRhciByZW5k ZXJzIGFuIGVtcHR5IGV2ZW50PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNwYW5m b3JtPC9zcGFuPiA6IHlvdSBtYXkgZWxlY3QgdG8gcmVuZGVyIHNwYW5uZWQgZXZlbnRzIGRp ZmZlcmVudGx5IHRvIHN0YW5kYXJkIGV2ZW50cy4gQnkgZGVmYXVsdCB0aGV5IHVzZSB0aGUg c2FtZSA8Y29kZT5mb3JtPC9jb2RlPiBidXQgJiM4MjEyOyBpZiBuZWl0aGVyIHRoYXQgbm9y IHRoZSBjb250YWluZXIgYXJlIHNwZWNpZmllZCAmIzgyMTI7IHdpbGwgYmUgcmVuZGVyZWQg YXMgYSBoeXBlcmxpbmtlZCByaWdodC1hcnJvdyB0byBpbmRpY2F0ZSBjb250aW51YXRpb24g b2YgdGhlIHByZXZpb3VzIGRheSYjODIxNztzIGV2ZW50LiBOb3RlIHRoZSBmaXJzdCBkYXkg b2YgYSBzcGFubmVkIHNldCBpcyA8ZW0+bm90PC9lbT4gcGFzc2VkIHRvIHRoZSA8Y29kZT5z cGFuZm9ybTwvY29kZT47IG9ubHkgY29udGludWF0aW9uIGNlbGxzIGFyZSBwYXNzZWQgdG8g aXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cmVjdXJmb3JtPC9zcGFuPiA6IHNp bWlsYXJseSB0byA8Y29kZT5zcGFuZm9ybTwvY29kZT4geW91IG1heSBlbGVjdCB0byByZW5k ZXIgcmVjdXJyaW5nIGV2ZW50cyBkaWZmZXJlbnRseSB0byBzdGFuZGFyZCBldmVudHMuIEJ5 IGRlZmF1bHQgdGhleSB1c2UgdGhlIHNhbWUgPGNvZGU+Zm9ybTwvY29kZT4gKG9yIGNvbnRh aW5lcikgYXMgc3RhbmRhcmQgZXZlbnRzIGFuZCB0aGUgZmlyc3QgZXZlbnQgb2YgYSByZWN1 cnJpbmcgc2V0IGlzIG5vdCBwYXNzZWQgdG8gPGNvZGU+cmVjdXJmb3JtPC9jb2RlPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jZWxsZm9ybTwvc3Bhbj4gKDxzcGFuIGNsYXNz PSJyZXF1aXJlZCI+b25seSBvbiBsYXJnZSBjYWxlbmRhcnM8L3NwYW4+KSA6IHVzZSB0aGlz IGlmIHlvdSB3aXNoIHRvIGJ1aWxkIGVhY2ggY2VsbCBlbnRpcmVseSBmcm9tIHNjcmF0Y2gu IEl0IHdvcmtzIGRpZmZlcmVudGx5IHRvIHRoZSBvdGhlciBmb3JtIGF0dHJpYnV0ZXMgaW4g dGhhdCBpdCA8ZW0+bXVzdDwvZW0+IGJlIGEgZm9ybSBhbmQgY2Fubm90IHVzZSB0aGUgY29u dGFpbmVyLiBUaGVyZSBhcmUgYWxzbyBzb21lIDxhIGhyZWY9IiNjZWxsZm9ybSI+cmVwbGFj ZW1lbnQgdmFyaWFibGVzPC9hPiB5b3UgY2FuIHVzZSB0byBpbnNlcnQgZHluYW1pYyBwaWVj ZXMgb2YgaW5mb3JtYXRpb24gaW4geW91ciBjZWxsczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5zdGVwZmllbGQ8L3NwYW4+IDogdGhlIElEIG9mIGEgZmllbGQgd2l0aGluIHdo aWNoIGFuIGV2ZW50IG1heSBiZSB0b2xkIHRvIHJlcGVhdC4gTm90ZSBpdCBpcyB0aGUgZmll bGQmIzgyMTc7cyBJRCBub3QgaXRzIG5hbWUsIHNvIGZvciBjdXN0b20gZmllbGRzIHlvdSBt dXN0IHVzZSA8Y29kZT5jdXN0b21fMTwvY29kZT4gb3IgPGNvZGU+Y3VzdG9tXzI8L2NvZGU+ IGV0Yy4gV2l0aG91dCB0aGlzIGF0dHJpYnV0ZSAoaXRzIGRlZmF1bHQpLCBubyByZWN1cnJp bmcgZXZlbnRzIG1heSBiZSBkZWZpbmVkLiBTZWUgPGEgaHJlZj0iI3JlY3VyIj5yZWN1cnJp bmcgZXZlbnRzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbWl0ZmllbGQ8 L3NwYW4+IDogdGhlIElEIG9mIGEgZmllbGQgZnJvbSB3aGljaCBldmVudCBkYXRlcyBtYXkg YmUgb21pdHRlZCBpZiByZXF1aXJlZC4gQXMgYWJvdmUsIHRoaXMgaXMgdGhlIElEIChub3Qg bmFtZSkgb2YgdGhlIGZpZWxkLiBTcGVjaWZ5IGEgbGlzdCBvZiBkYXRlcyBvbiB3aGljaCB0 aGlzIGV2ZW50IGlzIG5vdCBydW5uaW5nLiBTZWUgPGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2Vs bGluZyBhbmQgb21pdHRpbmcgZXZlbnRzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5za2lwZmllbGQ8L3NwYW4+IDogdGhlIElEIG9mIGEgZmllbGQgZnJvbSB3aGljaCBl dmVudCBkYXRlcyBtYXkgYmUgY2FuY2VsbGVkIGlmIHJlcXVpcmVkLiBBZ2FpbiwgdGhpcyBp cyB0aGUgSUQgKG5vdCBuYW1lKSBvZiB0aGUgZmllbGQuIFNwZWNpZnkgYSBsaXN0IG9mIGRh dGVzIG9uIHdoaWNoIHRoaXMgZXZlbnQgd2lsbCBiZSBjYW5jZWxsZWQuIFNlZSA8YSBocmVm PSIjY2FuY2VsIj5jYW5jZWxsaW5nIGFuZCBvbWl0dGluZyBldmVudHM8L2E+PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNob3dza2lwcGVkPC9zcGFuPiA6IHdoZW4gYW4gZXZl bnQgaXMgY2FuY2VsbGVkIHlvdSBjYW4gcmVtb3ZlIGl0IGZyb20gdGhlIGNhbGVuZGFyICg8 Y29kZT4wPC9jb2RlPikgb3Igc2hvdyBpdCAoPGNvZGU+MTwvY29kZT4pLiBEZWZhdWx0OiA8 Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaG93c3Bhbm5l ZDwvc3Bhbj4gOiBldmVudHMgd2l0aCBleHBpcnkgdGltZXMgbGF0ZXIgdGhhbiB0aGVpciBw b3N0ZWQgZGF0ZSBtYXkgYmUgcmVuZGVyZWQgYWNyb3NzIG11bHRpcGxlIGNlbGxzLiBJZiB5 b3UgZG8gbm90IHdhbnQgdGhpcyBmZWF0dXJlIHlvdSBjYW4gdHVybiBpdCBvZmYgKDxjb2Rl PjA8L2NvZGU+KS4gRGVmYXVsdDogPGNvZGU+MTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+aG9saWRheXM8L3NwYW4+IDogbGlzdCBvZiBkYXRlcyB0aGF0IGFyZSBk ZWNyZWVkIGFzIDxhIGhyZWY9IiNob2xpZGF5cyI+aG9saWRheXM8L2E+LiBFdmVudHMgY2Fu IGJlIHNjaGVkdWxlZCBvbiBob2xpZGF5cyBidXQgbWF5IG5vdCByZWN1ciBvciBzcGFuIGEg aG9saWRheSB1bmxlc3MgeW91IGV4cGxpY2l0bHkgc2F5IHNvIHZpYSB0aGUgPGNvZGU+aG9s aWRheWZsYWdzPC9jb2RlPiBhdHRyaWJ1dGUuIFlvdXIgbGlzdCBvZiBkYXRlcyBtYXkgYmUg ZGVmZXJyZWQgdG8gYSA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiwgaW4g d2hpY2ggY2FzZSBkZWZpbmUgeW91ciBsaXN0IGluIGEgbmFtZWQgdmFyaWFibGUgYW5kIHVz ZSA8Y29kZT5ob2xpZGF5cz0mcXVvdDt0eHB2YXI6bXlfdmFyX25hbWUmcXVvdDs8L2NvZGU+ IHRvIHJlYWQgdGhlbSBpbnRvIHRoZSBwbHVnaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+aG9saWRheWZsYWdzPC9zcGFuPiA6IHBlcm1pdCBjZXJ0YWluIDxhIGhyZWY9IiNu YW1pbmciPmV2ZW50IGZsYWdzPC9hPiB0byBiZSBzY2hlZHVsZWQgb24gaG9saWRheXMuIERl ZmF1bHQ6IDxjb2RlPnN0YW5kYXJkPC9jb2RlPiAoaS5lLiBzdGFuZGFyZCBvbmUtb2ZmIGV2 ZW50cykgYnV0IG90aGVycyBtYXkgYmUgbGlzdGVkIGFzIHdlbGwuIENob29zZSBmcm9tIDxj b2RlPnN0YW5kYXJkPC9jb2RlPiwgPGNvZGU+cmVjdXI8L2NvZGU+IG9yIDxjb2RlPm11bHRp PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW5rcG9zdGVkPC9zcGFu PiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5vbmx5IG9uIHNtYWxsIGNhbGVuZGFyczwvc3Bh bj4pIDogZWFjaCBjZWxsIHRoYXQgY29udGFpbnMgYW4gPGEgaHJlZj0iI25hbWluZyI+ZXZl bnQgZmxhZzwvYT4gb2YgdGhlIGdpdmVuIHR5cGUocykgd2lsbCBoYXZlIGl0cyBkYXkgbnVt YmVyIGxpbmtlZCB0byB0aGUgZXZlbnQmIzgyMTc7cyB0cnVlIHN0YXJ0IGRhdGUgaW5zdGVh ZCBvZiB0aGUgY2VsbCYjODIxNztzIGRhdGUuIFRodXMsIGlmIHlvdSBoYXZlIGEgd2Vla2x5 IGV2ZW50IHRoYXQgc3RhcnRzIG9uIHRoZSAyMHRoIERlY2VtYmVyIDIwMDgsIHNldHRpbmcg PGNvZGU+bGlua3Bvc3RlZD0mcXVvdDtyZWN1ciZxdW90OzwvY29kZT4gd2lsbCBjYXVzZSB0 aGUgbGluayB0byBzaG93IDxjb2RlPmRhdGU9MjAwOC0xMi0yMDwvY29kZT4gZWFjaCB3ZWVr LiBUaGlzIGFsbG93cyB5b3UgdG8gYWx3YXlzIGxpbmsgdG8gYSB2YWxpZCBhcnRpY2xlL2V2 ZW50LiBXaXRob3V0IGxpbmtwb3N0ZWQsIHRoZSBkYXRlcyB3b3VsZCBiZSAyMDA4LTEyLTIw LCAyMDA4LTEyLTI3LCAyMDA5LTAxLTAzLCBhbmQgc28gb24uIERlZmF1bHQ6IDxjb2RlPnJl Y3VyLCBtdWx0aSwgbXVsdGlwcmV2LCBtdWx0aWxhc3Q8L2NvZGU+IChpLmUuIGFueSByZWN1 cnJpbmcgb3Igc3Bhbm5lZCBldmVudCkuIE5vdGUgdGhhdCBpZiBtb3JlIHRoYW4gb25lIGV2 ZW50IG9jY3VycyBpbiB0aGUgY2VsbCwgdGhlIGxpbmsgd2lsbCBvbmx5IGJlIHRvIHRoZSBm aXJzdCBldmVudCB0aGUgcGx1Z2luIGZpbmRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPm1haW50YWluPC9zcGFuPiA6IGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgc3RhdGUg b2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHdoZW4gbmF2aWdhdGluZyB0 aGUgY2FsZW5kYXIgdXNpbmcgdGhlIG5leHQvcHJldiBvciBtb250aC95ZWFyIHNlbGVjdCBs aXN0cy4gSXRlbXMgdGhhdCB5b3Ugd2FudCB0byBwcmVzZXJ2ZSBzaG91bGQgYmUgY29tbWEt c2VwYXJhdGVkIGhlcmUuIENob29zZSBmcm9tIDxjb2RlPmNhbGlkPC9jb2RlPiwgPGNvZGU+ c2VjdGlvbjwvY29kZT4sIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9j b2RlPiwgPGNvZGU+YXJ0aWNsZTwvY29kZT4sIDxjb2RlPnBnPC9jb2RlPiBvciB5b3VyIG93 biA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZS4gRGVmYXVsdDogPGNv ZGU+Y2FsaWQ8L2NvZGU+LjxkaXYgY2xhc3M9ImJyZWFrIj5Vc2UgPGNvZGU+bWFpbnRhaW49 JnF1b3Q7c2VjdGlvbiwgYXJ0aWNsZSwgY2FsaWQmcXVvdDs8L2NvZGU+IGlmIHlvdSBoYXZl IGFuIGluZGl2aWR1YWwgYXJ0aWNsZSBwYWdlIHdpdGggYSBjYWxlbmRhciBpbiBhIHNpZGVi YXIsIHNvIHRoZSBjdXJyZW50bHkgdmlld2VkIGFydGljbGUgd2lsbCByZW1haW4gaW4gdmll dyB3aGVuIGNoYW5naW5nIGRhdGUuIElmIHlvdSB3aXNoIHRvIG1haW50YWluIHN0YXRlIHlv dXJzZWxmIG9yIGRvIHNvbWV0aGluZyBleG90aWMsIGVtcHR5IHRoaXMgYXR0cmlidXRlIGZp cnN0IHRvIGF2b2lkIHdlaXJkbmVzczwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5zdGF0aWM8L3NwYW4+IDogZm9yY2UgdGhlIGNhbGVuZGFyIHRvIGJlIGZpeGVkIHRv IG9uZSBtb250aC95ZWFyIChpLmUuIG5vIG5hdmlnYXRpb24pLiBNb250aCBhbmQgeWVhciBk ZWNpZGVkIGJ5IGF0dHJpYnV0ZXMgPGNvZGU+bW9udGg8L2NvZGU+IGFuZCA8Y29kZT55ZWFy PC9jb2RlPiBvciAmIzgyMTI7IGlmIG9taXR0ZWQgJiM4MjEyOyB0aGUgY3VycmVudCBkYXRl IHdpbGwgYmUgdXNlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3NwYW4+ IDogcmV0dXJuIGVpdGhlciBsb2NhbCB0aW1lICg8Y29kZT4wPC9jb2RlPikgYWNjb3JkaW5n IHRvIHRoZSB0aW1lIHpvbmUgc2V0IGluIEJhc2ljIFByZWZzLCBvciA8c3BhbiBjbGFzcz0i Y2FwcyI+R01UPC9zcGFuPiB0aW1lICg8Y29kZT4xPC9jb2RlPikuIERlZmF1bHQ6IDxjb2Rl PjA8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxhbmc8L3NwYW4+IDog YW4gPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gbGFuZ3VhZ2UgY29kZSB0aGF0IGZv cm1hdHMgdGltZSBzdHJpbmdzIHN1aXRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGxhbmd1YWdl IChvciBsb2NhbGUpIGFzIGRlZmluZWQgYnkgPGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRp YS5vcmcvd2lraS9JU09fNjM5Ij48c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiA2Mzk8 L2E+LiBEZWZhdWx0OiB1bnNldCAoaS5lLiB1c2UgdGhlIHZhbHVlIGFzIHN0YXRlZCBpbiA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwcmVmcyk8L2xpPgoJPC91bD4KCgk8aDMg Y2xhc3M9ImF0dHMgIiBpZD0iYXR0c3R5bGVzIj5TdHlsZSBhdHRyaWJ1dGVzPC9oMz4KCgk8 cD5PbmNlIHlvdSBoYXZlIHR3ZWFrZWQgeW91ciBiYXNpYyBjYWxlbmRhciBhcyBkZXNjcmli ZWQgYWJvdmUgeW91IGNhbiBtb3ZlIG9udG8gdGhlIHN0eWxlIGF0dHJpYnV0ZXMgc28geW91 IG1heSBnZXQgYXQgZWFjaCBmYWNldCBvZiB0aGUgY2FsZW5kYXIgYW5kIHZpc3VhbGx5IGFs dGVyIGl0OjwvcD4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzc2xldmVs czwvc3Bhbj4gOiBjbGFzc2VzIGNhbiBiZSBhcHBsaWVkIGF0IHRoZSBldmVudCBsZXZlbCAo c28geW91IGNhbiBjb2xvdXIgZWFjaCBldmVudCBpbiBhIGNlbGwpLCBvciB0aGUgY2VsbCBs ZXZlbCAoc28geW91IGNhbiBjb2xvdXIgdGhlIHdob2xlIGRheSksIG9yIGJvdGguIFlvdSBt YXkgYWxzbyBwcm9tb3RlIChpLmUuIGNvcHkpIGFsbCBldmVudC1sZXZlbCBjbGFzc2VzIHRo YXQgb2NjdXIgaW4gYSBkYXkgdG8gdGhlIGNlbGwgbGV2ZWwgc28geW91IGNhbiBjb2xvdXIg dGhlIGNlbGwgYmFzZWQgb24gdGhlIGV2ZW50cyB0aGF0IGl0IGNvbnRhaW5zLiBDb21tYS1z ZXBhcmF0ZSBhbnkgb2YgPGNvZGU+ZXZlbnQ8L2NvZGU+IChmb3IgcmVuZGVyaW5nIGV2ZW50 LWxldmVsIHN0eWxlcyksIDxjb2RlPmNlbGw8L2NvZGU+IChmb3IgcmVuZGVyaW5nIHN0eWxl cyBhdCB0aGUgY2VsbCBsZXZlbCksIG9yIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiAoZm9yIGNv cHlpbmcgdW5pcXVlIGV2ZW50IGNsYXNzZXMgdG8gdGhlIGNlbGwpLiBOb3RlIHlvdSB3aWxs IG5vdCBuZWVkIHRvIHVzZSA8Y29kZT5jZWxsPC9jb2RlPiBhbmQgPGNvZGU+Y2VsbHBsdXM8 L2NvZGU+IHRvZ2V0aGVyIGJlY2F1c2UgdGhlIGxhdHRlciBvdmVycmlkZXMgdGhlIGZvcm1l ciwgYnV0IHRoZXJlJiM4MjE3O3Mgbm8gaGFybSBpZiB5b3UgZG8uIERlZmF1bHQ6IDxjb2Rl PmNlbGwsIGV2ZW50PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFz c3ByZWZpeGVzPC9zcGFuPiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdXAgdG8gdHdv IHByZWZpeGVzIHRvIGFwcGx5IHRvIHlvdXIgY2xhc3MgbmFtZXMuIFRoZSBmaXJzdCBwcmVm aXggaXMgYXBwbGllZCB0byBjZWxsLWxldmVsIGNsYXNzZXMgKGFuZCBmbGFncykgYW5kIHRo ZSBzZWNvbmQgcHJlZml4IGlzIGFwcGxpZWQgdG8gZXZlbnQgY2xhc3NlcyAoc2VlIDxjb2Rl PmV2ZW50Y2xhc3NlczwvY29kZT4pIHNvIHlvdSBtYXkgZGlzdGluZ3Vpc2ggdGhlbSBpZiB5 b3Ugd2lzaC4gSWYgeW91IG9ubHkgc3BlY2lmeSBvbmUgcHJlZml4IGl0IHdpbGwgYmUgdXNl ZCBmb3IgYm90aCB0eXBlcyBvZiBjbGFzcy4gSWYgeW91IHVzZSA8Y29kZT5jbGFzc3ByZWZp eGVzPSZxdW90OyZxdW90OzwvY29kZT4gdGhlbiBubyBwcmVmaXhlcyB3aWxsIGJlIHVzZWQg YXQgYWxsLiBEZWZhdWx0OiA8Y29kZT5zbWRfY2FsXywgc21kX2NhbF9ldl88L2NvZGU+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBu YW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8gdGhlIGNhbGVuZGFyIHRhYmxl IGl0c2VsZi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ cm93Y2xhc3M8L3NwYW4+IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4KSB0 byBhcHBseSB0byBlYWNoIHRhYmxlIHJvdy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2VsbGNsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIChw bHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8gZWFjaCB0YWJsZSBjZWxsLiBEZWZhdWx0 OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lbXB0eWNsYXNzPC9zcGFu PiA6IHRoZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8gYW55 IGNlbGxzIHRoYXQgZG9uJiM4MjE3O3QgY29udGFpbiBhIGRheSBudW1iZXIgKGkuZS4gdGhl IGJsYW5rIGNlbGxzIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGEgbW9udGgpLiBEZWZhdWx0 OiA8Y29kZT5lbXB0eTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aXNv d2Vla2NsYXNzPC9zcGFuPiA6IHRoZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkg dG8gYXBwbHkgdG8gZWFjaCBjZWxsIGNvbnRhaW5pbmcgYW4gPHNwYW4gY2xhc3M9ImNhcHMi PklTTzwvc3Bhbj4gd2VlayAoaWYgPGNvZGU+aXNvd2Vla3M8L2NvZGU+IGlzIHVzZWQpLiBE ZWZhdWx0OiA8Y29kZT53ZWVrPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5uYXZjbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVmaXgp IHRvIGFwcGx5IHRvIHRoZSBwcmV2L25leHQgbW9udGggbmF2aWdhdGlvbiBhcnJvd3MuIElm IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgaXMgdXNlZCwgdGhlIGZpcnN0IGl0ZW0gd2lsbCBi ZSB0aGUgbmFtZSBvZiB0aGUgY2xhc3Mgb24gdGhlIGxpbmsgdG8gdGhlIHByZXZpb3VzIG1v bnRoLCB0aGUgMm5kIGl0ZW0gdG8gdGhlIG5leHQgbW9udGguIElmIGEgc2luZ2xlIHZhbHVl IGlzIHVzZWQsIGJvdGggY2xhc3MgbmFtZXMgd2lsbCBiZSB0aGUgc2FtZS4gRGVmYXVsdDog PGNvZGU+bmF2cHJldiwgbmF2bmV4dDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bXljbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVm aXgpIHRvIGFwcGx5IHRvIGJvdGggdGhlIG1vbnRoIGFuZCB5ZWFyIGluIHRoZSBjYWxlbmRh ciBoZWFkZXIgKGVpdGhlciB0aGUgPGNvZGU+Jmx0O3NwYW4mZ3Q7PC9jb2RlPiBvciA8Y29k ZT4mbHQ7c2VsZWN0Jmd0OzwvY29kZT4gdGFncykuIElmIDxjb2RlPm15d3JhcHRhZzwvY29k ZT4gaXMgdXNlZCwgdGhlIGNsYXNzIGlzIGFwcGxpZWQgdG8gdGhlIHdyYXB0YWcgaW5zdGVh ZC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnRj bGFzc2VzPC9zcGFuPiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaXRlbXMgdG8gYWRk IGFzIGNsYXNzZXMgdG8gZWFjaCBldmVudCAoZWFjaCBwcmVmaXhlZCB3aXRoIHRoZSBldmVu dCBwcmVmaXgpLiBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwvY29kZT4gc28gaXQg YWRkcyB0aGUgQ2F0ZWdvcnkxIGFuZCAyIG5hbWVzIGFzIGNsYXNzIGlkZW50aWZpZXJzIHRv IGVhY2ggZXZlbnQuIFRodXMsIG91dCBvZiB0aGUgYm94LCB5b3UgY2FuIHN0eWxlIGV2ZW50 cyBieSBjYXRlZ29yeS4gPGRpdiBjbGFzcz0iYnJlYWsiPklmIHlvdSB3aXNoIHRvIGV4dGVu ZCBvciBhbHRlciB0aGlzLCBqdXN0IGdpdmUgYSBsaXN0IG9mIGZpZWxkcyB0aGF0IHlvdSB3 YW50IHRvIGFwcGx5IHRvIHRoZSBldmVudCAoZS5nLiA8Y29kZT5ldmVudGNsYXNzZXM9JnF1 b3Q7SUQsIEF1dGhvcklELCBjdXN0b21fNSZxdW90OzwvY29kZT4gd291bGQgYWRkIHRocmVl IGNsYXNzZXMgdG8gZWFjaCBldmVudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBldmVudCYjODIx NztzIElELCBpdHMgYXV0aG9yIChsb2dpbikgbmFtZSBhbmQgdGhlIGNvbnRlbnRzIG9mIGN1 c3RvbV81KS4gT2YgY291cnNlLCBpZiB5b3UgdXNlIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiBt b2RlIHRoZXNlIGNsYXNzZXMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGNlbGwgbGV2ZWwuIDwv ZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Tb21lIHNwZWNpYWwgbmFtZXMgZXhpc3Q6IDxjb2Rl PmNhdGVnb3J5PC9jb2RlPiByZXR1cm5zIGJvdGggQ2F0ZWdvcnkxIGFuZCBDYXRlZ29yeTIg KGlmIHNldCk7IDxjb2RlPmdjYXQ8L2NvZGU+IHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50ICYj ODIxNjtnbG9iYWwmIzgyMTc7IGNhdGVnb3J5IChpZiBjdXJyZW50bHkgZmlsdGVyaW5nIGJ5 IGNhdGVnb3J5KTsgPGNvZGU+YXV0aG9yPC9jb2RlPiByZXR1cm5zIHRoZSBhdXRob3IgSUQg KGlmIGN1cnJlbnRseSBmaWx0ZXJpbmcgYnkgYXV0aG9yKTsgPGNvZGU+c2VjdGlvbjwvY29k ZT4gZ2l2ZXMgdGhlIGN1cnJlbnQgc2VjdGlvbjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj5ldmVudHdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3aXRo b3V0IGl0cyBicmFja2V0cywgdG8gd3JhcCBlYWNoIGV2ZW50IHdpdGguIERlZmF1bHQ6IDxj b2RlPnNwYW48L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm15d3JhcHRh Zzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcsIHdpdGhvdXQgaXRzIGJyYWNrZXRzLCB0byB3 cmFwIGFyb3VuZCA8ZW0+Ym90aDwvZW0+IG1vbnRoICsgeWVhciBkcm9wZG93biBzZWxlY3Qg bGlzdHMgYW5kIG9wdGlvbmFsIHN1Ym1pdCBidXR0b24gKGl0IHdyYXBzIHRoZSBsb3QsIGNv bWJpbmVkKS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImV2ZW50cyI+ U3RhbmRhcmQgY2VsbHMgYW5kIGV2ZW50czwvaDI+CgoJPHA+VGhlc2UgYXJlIHRoZSBzdGFu ZGFyZCBjbGFzcyAvIGZsYWcgbmFtaW5nIHJ1bGVzLCBhbmQgdGhleSBhcmUgY3VtdWxhdGl2 ZTo8L3A+CgoJPHVsPgoJCTxsaT5Ob3JtYWwgKGRheSkgY2VsbHMgZG9uJiM4MjE3O3QgaGF2 ZSBhIGNsYXNzIGFzc2lnbmVkIHRvIHRoZW0gdW5sZXNzIHlvdSBzcGVjaWZ5IG9uZSB3aXRo IDxjb2RlPmNlbGxjbGFzczwvY29kZT48L2xpPgoJCTxsaT5BbnkgY2VsbCB0aGF0IGNvbnRh aW5zIGFuIGV2ZW50IChvZiBhbnkgdHlwZSkgaXMgZmxhZ2dlZCBhcyBhbiA8Y29kZT5ldmVu dDwvY29kZT48L2xpPgoJCTxsaT5BbnkgY2VsbCB0aGF0IGZhbGxzIG9uIGEgaG9saWRheSBp cyBnaXZlbiB0aGUgZmxhZyA8Y29kZT5ob2xzPC9jb2RlPjwvbGk+CgkJPGxpPlRoZSBjdXJy ZW50IGRheSBpcyBnaXZlbiB0aGUgZmxhZyA8Y29kZT50b2RheTwvY29kZT48L2xpPgoJCTxs aT5JZiB0aGUgY2VsbCBjb250YWlucyBhIHN0YW5kYXJkIChvbmUtb2ZmKSBldmVudCwgdGhl IDxlbT5ldmVudDwvZW0+IHdpbGwgYmUgZmxhZ2dlZCA8Y29kZT5zdGFuZGFyZDwvY29kZT48 L2xpPgoJCTxsaT5GbGFncyBwcm92aWRlIGluZm9ybWF0aW9uIDxlbT5hYm91dDwvZW0+IHRo ZSBjZWxsIC8gZXZlbnQgdGhhdCBjYW4gYmUgdGVzdGVkIHdpdGggdGhlIDxhIGhyZWY9IiNp ZmNhbCI+Y29uZGl0aW9uYWwgdGFnPC9hPiwgYW5kIGFyZSBhbHNvIGFkZGVkIGFzIGNsYXNz IG5hbWVzLiBXaGVuIGFzc2lnbmVkIGFzIGNsYXNzZXMsIGZsYWdzIDxzdHJvbmc+YWx3YXlz PC9zdHJvbmc+IHRha2UgdGhlICYjODIxNjtjbGFzcyYjODIxNzsgcHJlZml4IChpLmUuIHRo ZSAxc3QgaXRlbSBnaXZlbiBpbiA8Y29kZT5jbGFzc3ByZWZpeGVzPC9jb2RlPikgJiM4MjEy OyB3aGV0aGVyIHRoZXkgYXBwZWFyIGF0IHRoZSA8ZW0+ZXZlbnQ8L2VtPiBvciA8ZW0+Y2Vs bDwvZW0+IGxldmVscy4gVGhlIG9ubHkgY2xhc3NlcyB0aGF0IHRha2UgdGhlIDJuZCAmIzgy MTY7ZXZlbnQmIzgyMTc7IHByZWZpeCBhcmUgdGhlIGZpZWxkcyB5b3Ugc3BlY2lmeSBpbiA8 Y29kZT5ldmVudGNsYXNzZXM8L2NvZGU+PC9saT4KCTwvdWw+CgoJPHA+RmxhZ3MgZm9yIG90 aGVyIHR5cGVzIG9mIGV2ZW50IGFyZSBkZXRhaWxlZCBiZWxvdy48L3A+CgoJPGgyIGlkPSJy ZWN1ciI+UmVjdXJyaW5nIGV2ZW50czwvaDI+CgoJPHA+SWYgeW91IGhhdmUgbm9taW5hdGVk IGFuIGFydGljbGUgZmllbGQgYXMgeW91ciA8Y29kZT5zdGVwZmllbGQ8L2NvZGU+IHlvdSBt YXkgZW50ZXIgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmcmVxdWVuY2llcyBhdCB3aGlj aCB0aGlzIGV2ZW50IGlzIHRvIGJlIHJlcGVhdGVkLiBUaGUgZm9ybWF0IG9mIHRoZSByZXBl dGl0aW9uIGlzICYjODIyMDtudW1iZXIgaW50ZXJ2YWwmIzgyMjE7LCBlLmcuIDxjb2RlPjQg d2Vla3M8L2NvZGU+IG9yIDxjb2RlPjEwIGRheXM8L2NvZGU+IG9yIDxjb2RlPjYgbW9udGhz PC9jb2RlPi4gVGhlIHBsdWdpbiB3aWxsIGRvIGl0cyBiZXN0IHRvIGZpZ3VyZSBvdXQgd2hh dCB5b3UgbWVhbi4gQ29uc3VsdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdh cmUvdGFyL21hbnVhbC9odG1sX25vZGUvRGF0ZS1pbnB1dC1mb3JtYXRzLmh0bWwiPmRhdGUg aW5wdXQgZm9ybWF0czwvYT4gZm9yIHNvbWUgbW9yZSBleGFtcGxlcyAobGlrZSAmIzgyMjA7 dGhpcmQgbW9uZGF5JiM4MjIxOyBhbmQgc28gb24pLiBUaGluZ3MgbGlrZSAmIzgyMjA7Zmly c3QgdGh1cnNkYXkmIzgyMjE7IG9yICYjODIyMDtsYXN0IGZyaWRheSYjODIyMTsgd2lsbCBv bmx5IHNob3cgdGhlIGV2ZW50IG9uIHRoZSBnaXZlbiBmaXJzdC9sYXN0IGRheSBvZiB0aGUg bW9udGguPC9wPgoKCTxwPklmIHlvdSBjYW4gZmluZCBhIHVzZSBmb3IgaXQsIHlvdSBtYXkg c3BlY2lmeSBtdWx0aXBsZSBmcmVxdWVuY2llcywgZm9yIGV4YW1wbGUgPGNvZGU+MyBkYXlz LCAxIHdlZWs8L2NvZGU+LiBTbyB5b3Ugd291bGQgc2VlIHRoYXQgZXZlbnQgb24gdGhlIGZp cnN0IGRheSwgdGhlbiB0aGUgM3JkLCA2dGgsIDd0aCwgOXRoLCAxMnRoLCAxNHRoLCAxNXRo LCAxOHRoLCAyMXN0LCAyNHRoJiM4MjMwOyBkYXlzIHRoZXJlYWZ0ZXIuIE5vdGUgdGhhdCB0 aGUgZXZlbnQgb25seSBvY2N1cnMgb25jZSBvbiB0aGUgMjFzdCBkYXkgZXZlbiB0aG91Z2gg dGhlIHR3byBmcmVxdWVuY2llcyBjbGFzaC48L3A+CgoJPHA+UmVjdXIgcnVsZXM6PC9wPgoK CTx1bD4KCQk8bGk+VGhlIHJlcGV0aXRpb24gd2lsbCBjb250aW51ZSBmb3JldmVyPHN1cCBj bGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjE5NTI3OTE3NzQ0OTVlYWFmODg3NzEwIj4x PC9hPjwvc3VwPiB1bmxlc3MgeW91IHNwZWNpZnkgdGhhdCB0aGUgZXZlbnQgZXhwaXJlcyBi eSBzZXR0aW5nIGFuIGV4cGlyeSB0aW1lIHVuZGVyIHRoZSBhcnRpY2xlJiM4MjE3O3MgPGVt Pk1vcmU8L2VtPiBhcmVhPC9saT4KCQk8bGk+VGhlIHZlcnkgZmlyc3QgZXZlbnQgb2YgYSBy ZWN1cnJpbmcgc2V0IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2RlPnJlY3VyZmlyc3Q8L2Nv ZGU+PC9saT4KCQk8bGk+RWFjaCBmb2xsb3dpbmcgY2VsbCB0aGF0IGNvbnRhaW5zIGEgcmVj dXJyaW5nIGV2ZW50IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2RlPnJlY3VyPC9jb2RlPjwv bGk+CgkJPGxpPkJvdGggZmxhZ3MgYXJlIGFwcGxpZWQgdG8gdGhlIGV2ZW50IGFzIGNsYXNz ZXMgdXNpbmcgdGhlIGNsYXNzIHByZWZpeDwvbGk+CgkJPGxpPlJlcGVhdGVkIGV2ZW50cyBt YXkgYmUgPGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2VsbGVkIG9yIG9taXR0ZWQ8L2E+IG9uIGEg cGVyLWRhdGUgYmFzaXM8L2xpPgoJPC91bD4KCgk8cCBjbGFzcz0ic21hbGwiIGlkPSJmbjE5 NTI3OTE3NzQ0OTVlYWFmODg3NzEwIj48c3VwPjE8L3N1cD4gJiM4MjE2O2ZvcmV2ZXImIzgy MTc7IGlzIGxpbWl0ZWQgdG8gOTk5OTkgcmVjdXJyZW5jZXMgcGVyIGV2ZW50LCBvciAyNzQg eWVhcnMmIzgyMTc7IHdvcnRoIG9mIGRhaWx5IGV2ZW50cy4gPHNwYW4gY2xhc3M9ImNhcHMi PlBIUDwvc3Bhbj4gd2lsbCBydW4gb3V0IG9mIG1lbW9yeSBsb25nIGJlZm9yZSB5b3UgcmVh Y2ggdGhpcyBsaW1pdCA6LSk8L3A+CgoJPGgyIGlkPSJtdWx0aSI+TXVsdGlwbGUgKHNwYW5u ZWQpIGV2ZW50czwvaDI+CgoJPHA+QW55IGV2ZW50IHRoYXQgaGFzIGEgc3RhcnQgZGF0ZSBh bmQgYW4gZXhwaXJ5IGRhdGUgdGhhdCBpcyBhIGRheSBvciBtb3JlIGxhdGVyLCBhbmQgPGVt PmRvZXMgbm90PC9lbT4gaGF2ZSBhbnkgcmVwZXRpdGlvbiBpbiBpdHMgPGNvZGU+c3RlcGZp ZWxkPC9jb2RlPiwgaXMgZmxhZ2dlZCBhcyBhIDxjb2RlPm11bHRpPC9jb2RlPi4gQnkgZGVm YXVsdCB0aGUgZmlyc3QgZXZlbnQgaXMgZGlzcGxheWVkIGluIGZ1bGwgYW5kIGVhY2ggJiM4 MjE2O2NvbnRpbnVhdGlvbiYjODIxNzsgZXZlbnQgaXMgc2hvd24gb25seSBhcyBhIHJpZ2h0 IGFycm93IGluIHN1YnNlcXVlbnQgY2VsbHMgKHRoZSBldmVudCB0aXRsZSBpcyBkaXNwbGF5 ZWQgb24gbW91c2UgaG92ZXIpLiBFdmVudHMgbWF5IHNwYW4gbW9udGhzIG9yIHllYXJzIGFu ZCB0aGUgcGx1Z2luIGZpZ3VyZXMgZXZlcnl0aGluZyBvdXQgdXNpbmcgdGhlIGZsYWcgcnVs ZXM6PC9wPgoKCTx1bD4KCQk8bGk+VGhlIGZpcnN0IGNlbGwgb2YgYSBzcGFubmVkIHNldCBp cyBhIDxjb2RlPm11bHRpZmlyc3Q8L2NvZGU+PC9saT4KCQk8bGk+VGhlIGxhc3QgY2VsbCBp cyBhIDxjb2RlPm11bHRpbGFzdDwvY29kZT48L2xpPgoJCTxsaT5FdmVyeSBvdGhlciBjZWxs IGlzIGEgPGNvZGU+bXVsdGk8L2NvZGU+IDxlbT5leGNlcHQ8L2VtPiBpZiB0aGUgZXZlbnQg cm9sbHMgb3ZlciBpbnRvIHRoZSBuZXh0IG1vbnRoLiBJbiB0aGF0IGNhc2UsIHRoZSBlbnRy eSBvbiB0aGUgMXN0IG9mIHRoZSBtb250aCBpcyBhIDxjb2RlPm11bHRpcHJldjwvY29kZT4g dG8gaW5kaWNhdGUgaXQgYmVsb25ncyB0byBhIHByZXZpb3VzIGV2ZW50PC9saT4KCQk8bGk+ SWYgdGhlIDFzdCBkYXkgb2YgdGhlIG1vbnRoIGlzIHRoZSBsYXN0IGRheSBvZiB0aGUgZXZl bnQsIHRoZSA8Y29kZT5tdWx0aXByZXY8L2NvZGU+IGlzIGRyb3BwZWQgaW4gZmF2b3VyIG9m IDxjb2RlPm11bHRpbGFzdDwvY29kZT48L2xpPgoJPC91bD4KCgk8cD5Td2l0Y2ggb2ZmIHNw YW5uaW5nIGNvbXBsZXRlbHkgd2l0aCB0aGUgPGNvZGU+c2hvd3NwYW5uZWQ9JnF1b3Q7MCZx dW90OzwvY29kZT4gYXR0cmlidXRlLiBFdmVudHMgdGhhdCBoYXZlIGFuIGV4cGlyeSBhcmUg dGhlbiBqdXN0IHN0YW5kYXJkIGV2ZW50cy48L3A+CgoJPHA+JiM4MjE2O0NvbnRpbnVhdGlv biYjODIxNzsgY2VsbHMgbWF5IGJlIHByb2Nlc3NlZCB3aXRoIGEgc2VwYXJhdGUgZm9ybSAo Y2FsbGVkIGEgPGNvZGU+c3BhbmZvcm08L2NvZGU+IGJlY2F1c2UgJiM4MjE2O2NvbnRmb3Jt JiM4MjE3OyBkaWRuJiM4MjE3O3Qgc291bmQgdmVyeSBuaWNlISkuIElmIHlvdSBjaG9vc2Ug bm90IHRvIHVzZSBhIDxjb2RlPnNwYW5mb3JtPC9jb2RlPiwgdGhlIHN0YW5kYXJkIDxjb2Rl PmZvcm08L2NvZGU+IG9yIGNvbnRhaW5lciB3aWxsIGJlIHVzZWQgYW5kIHlvdSB3aWxsIGhh dmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgZGlmZmVyZW50IG11bHRpIGZsYWdzIHlv dXJzZWxmIHVzaW5nIHRoZSA8YSBocmVmPSIjaWZjYWwiPmNvbmRpdGlvbmFsIHRhZzwvYT4u PC9wPgoKCTxwPllvdSBjYW4gYWxzbyA8YSBocmVmPSIjY2FuY2VsIj5jYW5jZWwgb3Igb21p dDwvYT4gZGF5cyBvZiBhIHNwYW5uZWQgZXZlbnQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIHlv dSBkbyB3aXRoIDxhIGhyZWY9IiNyZWN1ciI+cmVjdXJyaW5nIGV2ZW50czwvYT4sIGV4Y2Vw dCB5b3UgY2Fubm90IGNhbmNlbCB0aGUgZmlyc3QgZGF5OyB5b3Ugc2hvdWxkIG1vdmUgdGhl IGV2ZW50IHN0YXJ0IGRhdGUgYW5kIGFwb2xvZ2lzZSE8L3A+CgoJPGgyIGlkPSJjYW5jZWwi PkNhbmNlbGxpbmcgYW5kIG9taXR0aW5nIGV2ZW50czwvaDI+CgoJPHA+UGxhbnMgY2hhbmdl IGFuZCB5b3UgbWF5IGZpbmQgdGhhdCBhIGdpZyBoYXMgdG8gYmUgY2FuY2VsbGVkIGZvciB3 aGF0ZXZlciByZWFzb24uIFBlcmhhcHMgeW91IGFkdmVydGlzZSBhIHdlZWtseSBib290IGZh aXIgYnV0IHRoZSBmaWVsZCBpcyB3YXRlcmxvZ2dlZCBvbmUgd2Vlay4gTm8gcHJvYmxlbS4g Tm9taW5hdGUgYSA8Y29kZT5za2lwZmllbGQ8L2NvZGU+IGluIHlvdXIgPGNvZGU+Jmx0O3R4 cDpzbWRfY2FsZW5kYXIgLyZndDs8L2NvZGU+IHRhZyBhbmQgZW50ZXIgdGhlIGRhdGUgb2Yg dGhlIGNhbmNlbGxlZCBldmVudC48L3A+CgoJPHA+U2ltaWxhcmx5IHlvdSBtaWdodCBydW4g YSB0aGVhdHJlIHdlYiBzaXRlIHRoYXQgaGFzIGEgdGhyZWUtd2VlayBwcm9kdWN0aW9uIHBl cmZvcm1hbmNlIG9uIHdlZWtuaWdodHMgb25seS4gSW5zdGVhZCBvZiBzZXR0aW5nIHVwIHRo cmVlIHNlcGFyYXRlIGV2ZW50cyAmIzgyMTI7IG9uZSBmb3IgZWFjaCB3ZWVrICYjODIxMjsg bm9taW5hdGUgYW4gPGNvZGU+b21pdGZpZWxkPC9jb2RlPiBhbmQgbGlzdCB0aGUgZGF0ZXMg b24gd2hpY2ggdGhlIHBlcmZvcm1hbmNlIGRvZXMgbm90IGFpci4gT21pdHRlZCBkYXRlcyB3 aWxsIG5vdCwgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMsIGFwcGVhciBvbiB0aGUgY2FsZW5k YXIgYW5kIHRoZXkgb3ZlcnJpZGUgY2FuY2VsbGVkIGRhdGVzL2hvbGlkYXlzLiBJZiA8Y29k ZT5jZWxscGx1czwvY29kZT4gbW9kZSBpcyB1c2VkLCB5b3Ugd2lsbCBob3dldmVyIHNlZSBh IGNlbGwgZmxhZyBsYWJlbGxlZCA8Y29kZT5vbWl0PC9jb2RlPiAocGx1cyBjbGFzcyBwcmVm aXgpIGluIGNhc2UgeW91IGRvIHdpc2ggdG8gc3R5bGUgc3VjaCBjZWxscy48L3A+CgoJPHA+ VG8gc3BlY2lmeSB0aGUgZGF0ZXMgaW4gZWl0aGVyIGZpZWxkLCB1c2UgYW55IGFjY2VwdGFi bGUgZGF0ZSBmb3JtYXQsIGJ1dCBkZXJpdmF0aXZlcyBvZiBkZC1tb250aG5hbWUteXl5eSBv ciBtb250aG5hbWUtZGQteXl5eSBhcmUgdGhlIG1vc3QgdW5hbWJpZ3VvdXMgdG8gYXZvaWQg cHJvYmxlbXMgb2YgaG93IHRoZSBwbHVnaW4gbWlnaHQgaW50ZXJwcmV0IDxjb2RlPjEvNTwv Y29kZT4gYXMgSmFuIDV0aCBvciBNYXkgMXN0LiBZb3UgY2FuIHNwZWNpZnkgYXMgbWFueSBj YW5jZWxsYXRpb25zIG9yIG9taXNzaW9ucyBhcyB5b3UgbGlrZTsgY29tbWEtc2VwYXJhdGUg ZWFjaCBvbmUuPC9wPgoKCTxwPkJ5IGRlZmF1bHQgY2FuY2VsbGVkIGV2ZW50cyB3aWxsIG5v dCBhcHBlYXIgb24gdGhlIGNhbGVuZGFyIGFuZCB0aGVyZSB3aWxsIGJlIGEgY29uc3BpY3Vv dXMgaG9sZSBpbiB0aGUgcmVwZXRpdGlvbi4gSWYgeW91IHN3aXRjaCA8Y29kZT5zaG93c2tp cHBlZD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0aGUgZXZlbnQgd2lsbCBhcHBlYXIgaW4gdGhl IGNlbGwgYXMgbm9ybWFsIGFuZCB0aGUgPGNvZGU+Y2FuY2VsPC9jb2RlPiBmbGFnIHdpbGwg YXBwbHkgdG8gdGhlIGV2ZW50IChhbmQgY2VsbCBpZiB5b3UgY2hvb3NlKSBzbyB5b3UgbWF5 IGRldGVjdC9zdHlsZSBpdC48L3A+CgoJPGgyIGlkPSJob2xpZGF5cyI+SG9saWRheXM8L2gy PgoKCTxwPlB1YmxpYyBob2xpZGF5cyBuZWVkIG5vdCBiZSBhIG51aXNhbmNlIHRvIHlvdXIg ZXZlbnRzLiBHaXZlIHRoZSBwbHVnaW4gYSBob2xpZGF5IGxpc3QgYW5kIGl0JiM4MjE3O2xs IG1ha2Ugc3VyZSB0aGF0IGFueSByZWN1cnJpbmcgb3IgbXVsdGkgZXZlbnRzIGFyZSBub3Qg c2NoZWR1bGVkIG9uIHRob3NlIGRheXMuIDxhIGhyZWY9IiNldmVudHMiPlN0YW5kYXJkPC9h PiBvbmUtb2ZmIGV2ZW50cyBhcmUgcGVybWl0dGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSB5b3Ug bWlnaHQgd2FudCB0byBvcmdhbmlzZSBhIHNwZWNpYWwgZXZlbnQgb24gdGhhdCBkYXksIHRo b3VnaCB5b3UgY2FuIGZvcmJpZCB0aG9zZSB0b28gaWYgeW91IHdpc2guPC9wPgoKCTxwPlRo ZSBsaXN0IG9mIGRhdGVzIHlvdSBzcGVjaWZ5IGNhbiBiZSBlbnRlcmVkIGRpcmVjdGx5IGlu IGEgc3RyaW5nIGluIHRoZSA8Y29kZT5ob2xpZGF5czwvY29kZT4gYXR0cmlidXRlIG9yIGlu IGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4uIFRoZSBsYXR0ZXIgaXMg bW9yZSBmdW4gc28gbGV0JiM4MjE3O3MgdHJ5IHRoYXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O25h dF9ob2xzJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7RGVjIDI1LCAyNiBEZWMsIDMxL0RlYywg SmFuLTEsCiAgICAgICAgTWF5IDQgMjAwOSwgMjAwOS0wOC0zMSZxdW90OyAvJmd0OwombHQ7 dHhwOnNtZF9jYWxlbmRhciBob2xpZGF5cz0mcXVvdDt0eHB2YXI6bmF0X2hvbHMmcXVvdDsg LyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZXJlIHlvdSBnbywgYWxsIGRvbmUuIFRoZSBs aXN0IHRoZXJlIHNob3dzIHNvbWUgb2YgdGhlIHZhcmlldHkgYW5kIGJyZWFkdGggb2YgZm9y bWF0cyB0aGF0IHRoZSBwbHVnaW4gYWxsb3dzLiBUaGVyZSBhcmUgbW9yZS4gTm90ZSB0aGF0 IHNvbWUgZXZlbnRzIGhhdmUgYSB5ZWFyIGFuZCBvdGhlcnMgZG9uJiM4MjE3O3QuIFRoZSBv bmVzIHdpdGhvdXQgYSB5ZWFyIG9jY3VyIG9uIHRoZSBzYW1lIGRhdGUgZXZlcnkgeWVhciB3 aGVyZWFzIHRoZSBvbmVzIHdpdGggYSB5ZWFyIHdpbGwgb25seSBvY2N1ciBvbiB0aGF0IHNw ZWNpZmljIGRhdGUuPC9wPgoKCTxwPk9uY2UgeW91ciBkYXRlcyBhcmUgZGVmaW5lZCB5b3Ug Y2FuIGNvbnRyb2wgd2hjaCBldmVudHMgYXJlIGFsbG93ZWQgdG8gZmFsbCBvbiB0aG9zZSBk YXRlcyB2aWEgPGNvZGU+aG9saWRheWZsYWdzPC9jb2RlPi4gSnVkaWNpYWwgdXNlIG9mIHRo YXQgYXR0cmlidXRlLCA8Y29kZT5zaG93c3Bhbm5lZDwvY29kZT4sIDxjb2RlPnNob3dza2lw cGVkPC9jb2RlPiBhbmQgdGhlIHZhcmlvdXMgZm9ybXMgJiM4MjEyOyBhbG9uZyB3aXRoIHRo ZSA8YSBocmVmPSIjaWZjYWwiPmNvbmRpdGlvbmFsIHRhZzwvYT4gJiM4MjEyOyBjYW4gZ2l2 ZSB5b3UgYSB3aWRlIHZhcmlldHkgb2Ygd2F5cyB0byBkaXNwbGF5IGV2ZW50cyBhbmQgY2Vs bHMuPC9wPgoKCTxwPkhvbGlkYXkgY2VsbHMgYXJlIGdpdmVuIHRoZSBmbGFnIDxjb2RlPmhv bHM8L2NvZGU+LCBhbmQgYW55IGV2ZW50IHRoYXQgaXMgbm90IHNwZWNpZmljYWxseSBwZXJt aXR0ZWQgYnkgdGhlIDxjb2RlPmhvbGlkYXlmbGFnczwvY29kZT4gaXMgYXV0b21hdGljYWxs eSBhc3NpZ25lZCBhIDxjb2RlPmNhbmNlbDwvY29kZT4gZmxhZyBpZiBpdCBmYWxscyBvbiBv bmUgb2YgdGhlIGRheXMuIE9taXR0ZWQgZGF0ZXMgd2lsbCwgaG93ZXZlciwgY2F1c2UgdGhl IDxjb2RlPmNhbmNlbDwvY29kZT4gZmxhZyB0byBiZSByZW1vdmVkLjwvcD4KCgk8aDIgaWQ9 ImNlbGxmb3JtIj5Vc2luZyBhIDxjb2RlPmNlbGxmb3JtPC9jb2RlPiB3aXRoIHJlcGxhY2Vt ZW50IHZhcmlhYmxlczwvaDI+CgoJPHA+SWYgeW91IGRvbiYjODIxNzt0IGxpa2UgdGhlIGxh eW91dCBvZiB0aGUgZGVmYXVsdCBjZWxsLCB5b3UgY2FuIGRvIGl0IHlvdXJzZWxmIHdpdGgg dGhlIDxjb2RlPmNlbGxmb3JtPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxwPlRvIGJ1aWxk IHlvdXIgb3duIGNlbGxzIHlvdSBvZnRlbiBuZWVkIGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhl IChwcmUtcHJvY2Vzc2VkKSBldmVudHMsIHRoZSBkYXksIG9yIG1vbnRoIGV0Yy4gU28gJiM4 MjEyOyBpbiBhZGRpdGlvbiB0byB5b3VyIHVzdWFsIG1hcmt1cCBhbmQgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyAmIzgyMTI7IHlvdSBtYXkgYWxzbyBpbnNlcnQgYW55 IG9mIHRoZSBmb2xsb3dpbmcgJiM4MjE2O3JlcGxhY2VtZW50cyYjODIxNzsgdG8gaGF2ZSB0 aGUgcmVsZXZhbnQgdmFsdWUgaW5zZXJ0ZWQgYXQgdGhhdCBwbGFjZSBpbiB0aGUgY2VsbDo8 L3A+CgoJPHVsPgoJCTxsaT48Y29kZT57ZGF5fTwvY29kZT4gOiBpbnNlcnRzIHRoZSBjdXJy ZW50IGRheSAoYXMgYSBudW1iZXIgZnJvbSAxIHRvIDMxKTwvbGk+CgkJPGxpPjxjb2RlPnt3 ZWVrZGF5fTwvY29kZT4gOiBpbnNlcnRzIHRoZSBjdXJyZW50IHdlZWtkYXkgKGFzIGEgd29y ZCBpbiB0aGUgbG9jYWwgbGFuZ3VhZ2UsIG9yIGZyb20geW91ciA8Y29kZT5kYXlmb3JtYXQ8 L2NvZGU+IGxpc3QpPC9saT4KCQk8bGk+PGNvZGU+e3dlZWt9PC9jb2RlPiA6IGluc2VydHMg dGhlIGN1cnJlbnQgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBudW1iZXI8 L2xpPgoJCTxsaT48Y29kZT57bW9udGh9PC9jb2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQg bW9udGggKGFzIGEgbnVtYmVyIGZyb20gMSB0byAxMik8L2xpPgoJCTxsaT48Y29kZT57bW9u dGhuYW1lfTwvY29kZT4gOiBpbnNlcnRzIHRoZSBtb250aCBuYW1lIGluIHRoZSBsb2NhbCBs YW5ndWFnZTwvbGk+CgkJPGxpPjxjb2RlPnt5ZWFyfTwvY29kZT4gOiBpbnNlcnRzIHRoZSBj dXJyZW50IHllYXIgKDQgZGlnaXRzKTwvbGk+CgkJPGxpPjxjb2RlPntzaG9ydHllYXJ9PC9j b2RlPiA6IGluc2VydHMgdGhlIGN1cnJlbnQgeWVhciAoMiBkaWdpdHMpPC9saT4KCQk8bGk+ PGNvZGU+e2V2ZW50c308L2NvZGU+IDogaW5zZXJ0cyBhbGwgZXZlbnRzIChpbmNsdWRpbmcg dGhlaXIgcHJvY2Vzc2VkIGZvcm0vY29udGFpbmVyIGluZm8pPC9saT4KCTwvdWw+CgoJPGgy IGlkPSJzaXplZGlmZiI+RGlmZmVyZW5jZXMgYmV0d2VlbiBsYXJnZSBhbmQgc21hbGwgY2Fs ZW5kYXJzPC9oMj4KCgk8cD5Ob3QgYSBsb3QhIEJ1dCB0aGVyZSBhcmUgc29tZSBzdWJ0bGV0 aWVzOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPmNlbGxmb3JtPC9jb2RlPiBjYW5ub3QgYmUg dXNlZCBvbiBhIHNtYWxsIGNhbGVuZGFyPC9saT4KCQk8bGk+QnkgZGVmYXVsdCwgbm8gZXZl bnRzIGFyZSBwbGFjZWQgaW4gdGhlIHNtYWxsIGNhbGVuZGFyLiBZb3UgY2FuIGFkZCB0aGVt IHlvdXJzZWxmIGlmIHlvdSB3aXNoIGJlY2F1c2UgeW91IGNhbiB1c2UgdGhlIHNhbWUgZm9y bS9jb250YWluZXIgbWVjaGFuaXNtIGFzIHRoZSBsYXJnZSBjYWxlbmRhcjwvbGk+CgkJPGxp PlRoZSBvbmx5IHRoaW5nIHJlbmRlcmVkIGluIGEgc21hbGwgY2FsZW5kYXIgY2VsbCBpcyB0 aGUgaHlwZXJsaW5rZWQgZGF0ZSBhbmQgYW55IDxhIGhyZWY9IiNuYW1pbmciPmZsYWdzPC9h PiBzbyB5b3UgY2FuIHN0eWxlIHRoZSBib3hlczwvbGk+CgkJPGxpPjxjb2RlPmNsYXNzbGV2 ZWxzPC9jb2RlPiBhcmUgaWdub3JlZDogZXZlcnl0aGluZyBpcyBhdXRvbWF0aWNhbGx5IGFz c2lnbmVkIGF0IHRoZSBjZWxsIGxldmVsIChpLmUuIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiBp cyBzZXQpPC9saT4KCQk8bGk+PGNvZGU+ZXZlbnRjbGFzc2VzPC9jb2RlPiBhcmUgc3RpbGwg aG9ub3VyZWQgaWYgeW91IHdpc2ggdG8gdXNlIGEgPGNvZGU+Zm9ybTwvY29kZT4gdG8gcHJv Y2VzcyB0aGVtIHlvdXJzZWxmPC9saT4KCQk8bGk+VGhlIHNtYWxsIGNhbGVuZGFyIG91dHB1 dHMgeWVhci1tb250aC1kYXktdGl0bGUgb3IgbWVzc3kgcGVybWxpbmtzIG9ubHk8L2xpPgoJ PC91bD4KCgk8cD5Bc2lkZSBmcm9tIHRoYXQgdGhleSYjODIxNztyZSBwcmV0dHkgbXVjaCBp ZGVudGljYWwuPC9wPgoKCTxoMiBpZD0iZGF0ZXMiPkRhdGVzLCBnb3RjaGFzIGFuZCBpZGlv c3luY3JhY2llczwvaDI+CgoJPHA+SWYgdGhlcmUgd2FzIG9uZSBnbG9iYWwgdGltZSB6b25l IHRoZSB3b3JsZCB3b3VsZCBiZSBzaW1wbGVyLiBTYWRseSwgd2UgYWxsIGxpdmUgaW4gZGlm ZmVyZW50IHBsYWNlcyBhbmQgdGhlIEludGVybmV0IEJlYXQgaGFzbiYjODIxNzt0IHJlYWxs eSB0YWtlbiBvZmYuIEV2ZW4gbW9yZSBzYWRseSwgY2VydGFpbiB1cHBlciBlY2hlbG9ucyBv ZiBwb3dlciBkZWNyZWUgdGhhdCB0d2ljZSBhIHllYXIgc29tZSBjb3VudHJpZXMgbXVzdCBh bHRlciB0aGVpciBjbG9ja3MgdG8gU2F2ZSBEYXlsaWdodCAod2hhdGV2ZXIgdGhhdCBtZWFu cykuPC9wPgoKCTxwPjxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRvZXMgaXRzIGJl c3QgdG8gc2hpZWxkIHlvdSBmcm9tIHRoaXMgbWF5aGVtIGJ5IGFsbG93aW5nIHlvdSB0byBz cGVjaWZ5IHlvdXIgbG9jYWxlLCB0aW1lIG9mZnNldCBmcm9tIDxzcGFuIGNsYXNzPSJjYXBz Ij5HTVQ8L3NwYW4+LCBhbmQgd2hlbiA8c3BhbiBjbGFzcz0iY2FwcyI+RFNUPC9zcGFuPiBh cHBsaWVzIGluIHlvdXIgdGltZSB6b25lIChub3QgZm9yZ2V0dGluZyB0aGUgdGltZSB6b25l IG9mIHlvdXIgc2VydmVyIGlmIGl0IGhhcHBlbnMgdG8gYmUgbm93aGVyZSBuZWFyIHlvdSku PC9wPgoKCTxwPkFuZCB0aGVyZWluIGxpZXMgdGhlIHJ1Yi48L3A+CgoJPHA+Rm9yIGEgY2Fs ZW5kYXIgc3lzdGVtLCB0aGlzIGlzIHN1Yi1vcHRpbWFsLiBJbiBmYWN0IGl0JiM4MjE3O3Mg ZG93bnJpZ2h0IGFubm95aW5nIGJlY2F1c2Ugd2hlbiB5b3Ugc2F5IHRoYXQgYW4gZXZlbnQg aXMgZ29pbmcgdG8gb2NjdXIgYXQgOHBtIGluIHNpeCBtb250aHMmIzgyMTc7IHRpbWUsIHBl c2t5IERheWxpZ2h0IFNhdmluZ3MgbWF5IHRoZW4gYmUgaW4gZWZmZWN0IGFuZCB5b3VyIGV2 ZW50IHdpbGwgYXBwZWFyIGFuIGhvdXIgJiM4MjE2O29mZiYjODIxNzsgKGl0IG1heSBsb29r IHdyb25nIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UgYXMgd2VsbCBhcyBpbiB5b3VyIGNhbGVu ZGFyLCBkZXBlbmRpbmcgb24gdGhlIHNldHRpbmdzKS48L3A+CgoJPHA+QWxzbywgaWYgeW91 ciBzZXJ2ZXIgb3IgeW91ciBvZmZpY2UgaXMgcmVsb2NhdGVkIGFuZCB5b3UgaGF2ZSB0byBh ZGp1c3QgdGltZSB6b25lLCBhbGwgeW91ciBiZWF1dGlmdWxseSBjcmFmdGVkIGRhdGVzIHdp bGwgYmUgc2hpZnRlZC4gV2VsbCwgdGhleSYjODIxNztyZSBub3QgYWN0dWFsbHkgY2hhbmdl ZCBpbiB0aGUgZGF0YWJhc2UgdW5sZXNzIHlvdSBlZGl0IGFuIGFydGljbGUgYW5kIHJlLXNh dmUgaXQsIGJ1dCB0aGV5IDxlbT5hcHBlYXI8L2VtPiB0byBoYXZlIHNoaWZ0ZWQgYmVjYXVz ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBpcyB0cnlpbmcgdG8gc2hpZWxkIHlv dSBmcm9tIHRpbWUgYnVyZWF1Y3JhY3kgaW4gYSB3b3JsZCBnb25lIG1hZC48L3A+CgoJPHA+ VW5mb3J0dW5hdGVseSB0aGVyZSBpcyBsaXR0bGUgd2UgY2FuIGRvIGFib3V0IHRoaXMgYXQg dGhlIG1vbWVudCB1bnRpbCB0aGUgd2F5IGRhdGVzIGFyZSBoYW5kbGVkIGluIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGlzIGNoYW5nZWQuIEJ1dCB0aGVyZSBhcmUgc29tZSBz ZXR0aW5ncyB0aGF0IHlvdSBjYW4gcGxheSB3aXRoIHRvIHRyeSBhbmQgbWFrZSBzZW5zZSBv ZiBpdCBhbGwuIE5hbWVseSB0aGUgPGNvZGU+Z210PC9jb2RlPiBhdHRyaWJ1dGUgdG8gdGhl IGNhbGVuZGFyIHBsdWdpbiBhbmQgYW55IG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+JiM4MjE3O3MgZGF0ZS1iYXNlZCB0YWdzIHN1Y2ggYXMgPGNvZGU+Jmx0O3R4cDpwb3N0 ZWQgLyZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7dHhwOmV4cGlyZXMgLyZndDs8L2NvZGU+ LiBTb21ldGltZXMgZmlkZGxpbmcgd2l0aCB0aGF0IGFuZCB0aGUgdGltZSB6b25lL0RTVCBm bGFncyB3aWxsIGhlbHAuIE90aGVyIHRpbWVzIHlvdSYjODIxNztsbCBnZXQgaW4gYSByaWdo dCBvbGQgbWVzcy48L3A+CgoJPHA+SWYgYWxsIHRoYXQgZmFpbHMsIHRoZSBjb25kaXRpb25h bCB0YWcgbWF5IGJlIGFibGUgdG8gaGVscCB5b3UgY29tcGFyZSBjZXJ0YWluIGRhdGVzIGFu ZCBhcHBseSBkaWZmZXJlbnQgYXR0cmlidXRlcyBkZXBlbmRpbmcgb24gdGhlIGRheSBvZiB0 aGUgeWVhci4gRmFpbGluZyB0aGF0LCBqdXN0IHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+R01U PC9zcGFuPiBhbmQgcmVmdXNlIHRvIG9ic2VydmUgPHNwYW4gY2xhc3M9ImNhcHMiPkRTVDwv c3Bhbj4gOi0pPC9wPgoKCTxoMiBpZD0iaWZjYWwiPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRf aWZfY2FsJmd0OzwvY29kZT48L2gyPgoKCTxwPlRoaXMgY29uZGl0aW9uYWwgdGFnIGFsbG93 cyB5b3UgJiM4MjEyOyBpbnNpZGUgeW91ciBjb250YWluZXIvZm9ybXMgICYjODIxMjsgdG8g dGVzdCBjZXJ0YWluIGNvbmRpdGlvbnMgb2YgdGhlIGN1cnJlbnQgZXZlbnQvY2VsbC4gRm9y IGVuaGFuY2VkIGNvbmRpdGlvbmFsIGNoZWNraW5nIChwZXJoYXBzIGluIGNvbmp1bmN0aW9u IHdpdGggPGEgaHJlZj0iI2NhbG5vdyIgc3R5bGU9InRleHQtYWxpZ246bGVmdDsiPnR4cDpz bWRfY2FsX25vdyAvJmd0OzwvYT4pLCBjb25zaWRlciB0aGUgc21kX2lmIHBsdWdpbi48L3A+ CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNpZmNhbCI+QXR0cmlidXRlczwvaDM+CgoJ PHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZmxhZzwvc3Bhbj4gOiB0aGUgY2VsbCBv ciBldmVudCBmbGFnKHMpIHlvdSB3YW50IHRvIHRlc3QsIGVhY2ggc2VwYXJhdGVkIGJ5IGEg Y29tbWEuIENob29zZSBmcm9tOiA8Y29kZT5ldmVudDwvY29kZT4sIDxjb2RlPnN0YW5kYXJk PC9jb2RlPiwgPGNvZGU+cmVjdXJmaXJzdDwvY29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiwg PGNvZGU+bXVsdGlmaXJzdDwvY29kZT4sIDxjb2RlPm11bHRpbGFzdDwvY29kZT4sIDxjb2Rl Pm11bHRpPC9jb2RlPiwgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiwgPGNvZGU+Y2FuY2VsPC9j b2RlPiwgPGNvZGU+b21pdDwvY29kZT4sIDxjb2RlPmhvbHM8L2NvZGU+LCA8Y29kZT50b2Rh eTwvY29kZT4gb3IgdGhlIHNwZWNpYWwgZmxhZyA8Y29kZT5TTURfQU5ZPC9jb2RlPiB3aGlj aCB3aWxsIHRyaWdnZXIgaWYgdGhlIGNlbGwgb3IgZXZlbnQgY29udGFpbnMgYW55IG9mIHRo ZSBhYm92ZS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Y2FsaWQ8L3NwYW4+IDogdGhlIGNhbGVuZGFyIElEIHlvdSB3aXNoIHRvIGNoZWNrIGZvciBh IG1hdGNoLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj55 ZWFyPC9zcGFuPiA6IHRoZSB5ZWFyIHRoZSBjdXJyZW50IGNlbGwgZmFsbHMgaW4uIERlZmF1 bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1vbnRoPC9zcGFuPiA6 IHRoZSBtb250aCBudW1iZXIgKDEtMTIpIHRoYXQgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBp bi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d2Vlazwv c3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gd2VlayBudW1iZXIg dGhhdCB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kYXk8L3NwYW4+IDogdGhlIGRheSBudW1iZXIgdGhl IGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+bG9naWM8L3NwYW4+IDogd2hldGhlciB5b3Ugd2FudCB0byBjaGVj ayBpZiA8ZW0+YWxsPC9lbT4gdGVzdHMgeW91IG5vbWluYXRlZCBhcmUgdHJ1ZSBpbiB0aGUg Y3VycmVudCBjZWxsICg8Y29kZT5sb2dpYz0mcXVvdDthbmQmcXVvdDs8L2NvZGU+KSBvciA8 ZW0+YXQgbGVhc3Qgb25lPC9lbT4gb2YgdGhlIHRlc3RzIGlzIHRydWUgKDxjb2RlPmxvZ2lj PSZxdW90O29yJnF1b3Q7PC9jb2RlPikuIERlZmF1bHQ6IDxjb2RlPmFuZDwvY29kZT48L2xp PgoJPC91bD4KCgk8cD5Zb3UgbWF5IGNvbWJpbmUgdGhlIHRlc3RzIHNvLCBmb3IgZXhhbXBs ZSwgeW91IGNhbiBjaGVjayBpZiB0aGUgY2VsbCBpcyBvZiBhIGNlcnRhaW4gdHlwZSA8c3Bh biBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBpcyBsYXRlciB0aGFuIHRoZSAxNXRoIG9mIHRo ZSBtb250aC48L3A+CgoJPHA+UnVkaW1lbnRhcnkgY29tcGFyYXRvcnMgY2FuIGJlIGFwcGxp ZWQgdG8gdGhlIDxjb2RlPnllYXI8L2NvZGU+LCA8Y29kZT5tb250aDwvY29kZT4gYW5kIDxj b2RlPmRheTwvY29kZT4gYXR0cmlidXRlcy4gTm9ybWFsbHkgdGhlIHZhbHVlIHlvdSBzdXBw bHkgd2lsbCBiZSB0ZXN0ZWQgZm9yIGFuIGV4YWN0IG1hdGNoIGJ1dCBpZiB5b3UgcHJlZml4 IGl0IHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIHNlcXVlbmNlcyB0aGVu IHRoZSBiZWhhdmlvdXIgY2hhbmdlczo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4mZ3Q7PC9j b2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPmdyZWF0ZXIgdGhhbjwvZW0+IHRoZSBn aXZlbiB2YWx1ZSAoZS5nLiA8Y29kZT55ZWFyPSZxdW90OyZndDsyMDA4JnF1b3Q7PC9jb2Rl Pik8L2xpPgoJCTxsaT48Y29kZT4mZ3Q7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlz IDxlbT5ncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG88L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUu Zy4gPGNvZGU+bW9udGg9JnF1b3Q7Jmd0Oz03JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48 Y29kZT4mbHQ7PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPmxlc3MgdGhhbjwv ZW0+IHRoZSBnaXZlbiB2YWx1ZSAoZS5nLiA8Y29kZT5kYXk9JnF1b3Q7Jmx0OzE1JnF1b3Q7 PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT4mbHQ7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmli dXRlIGlzIDxlbT5sZXNzIHRoYW4gb3IgZXF1YWwgdG88L2VtPiB0aGUgZ2l2ZW4gdmFsdWUg KGUuZy4gPGNvZGU+bW9udGg9JnF1b3Q7Jmx0Oz01JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxs aT48Y29kZT4hPC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPm5vdDwvZW0+IHRo ZSBnaXZlbiB2YWx1ZSAoZS5nLiA8Y29kZT5kYXk9JnF1b3Q7ITE1JnF1b3Q7PC9jb2RlPik8 L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNhbGluZm8iPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRf Y2FsX2luZm8gLyZndDs8L2NvZGU+PC9oMj4KCgk8cD5JbnNpZGUgeW91ciBjb250YWluZXIv Zm9ybXMsIHVzZSB0aGlzIHRhZyB0byBvdXRwdXQgY2VydGFpbiBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgY3VycmVudCBldmVudC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNj YWxpbmZvIj5BdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij50eXBlPC9zcGFuPiA6IHRoZSB0eXBlKHMpIG9mIGluZm9ybWF0aW9uIHlvdSB3YW50IHRv IHJldHVybiwgZWFjaCBzZXBhcmF0ZWQgYnkgYSBjb21tYS4gQ2hvb3NlIGZyb206IDxjb2Rl PmZsYWc8L2NvZGU+LCA8Y29kZT55ZWFyPC9jb2RlPiwgPGNvZGU+bW9udGg8L2NvZGU+LCA8 Y29kZT53ZWVrPC9jb2RlPiwgPGNvZGU+ZGF5PC9jb2RlPiwgPGNvZGU+c2VjdGlvbjwvY29k ZT4sIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+ Y2FsaWQ8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmpvaW48L3NwYW4+ IDogdGhlIGNoYXJhY3RlcnMgeW91IHdhbnQgdG8gdXNlIHRvIHNlcGFyYXRlIGVhY2ggaXRl bSB5b3UgYXNrZWQgZm9yLiBOb3RlIGl0IGlzIHRoZSBjaGFyYWN0ZXJzIDxlbT5iZXR3ZWVu PC9lbT4gZWFjaCBpdGVtIHNvIHRoZSB2ZXJ5IGZpcnN0IGVudHJ5IHdpbGwgPHN0cm9uZz5u b3Q8L3N0cm9uZz4gaGF2ZSB0aGUgPGNvZGU+am9pbjwvY29kZT4gaW4gZnJvbnQgb2YgaXQg KHNlZSA8Y29kZT5qb2luX3ByZWZpeDwvY29kZT4pLiBEZWZhdWx0OiBhIHNwYWNlPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmpvaW5fcHJlZml4PC9zcGFuPiA6IHRoZSBzdHJp bmcgeW91IHdhbnQgdG8gcHV0IGluIGZyb250IG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBy ZXR1cm5lZCBsaXN0LiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgdGhpcyBhdHRyaWJ1dGUgaXQg ZGVmYXVsdHMgdG8gPGNvZGU+U01EX0FVVE88L2NvZGU+IHdoaWNoIHRyaWVzIHRvIGJlIGNs ZXZlcjoKCTx1bD4KCQk8bGk+aWYgdXNpbmcgPGNvZGU+dHlwZT0mcXVvdDtmbGFnJnF1b3Q7 PC9jb2RlPiB0aGUgam9pbl9wcmVmaXggaXMgc2V0IHRvIHRoZSBzYW1lIGFzIDxjb2RlPmpv aW48L2NvZGU+LiBUaHVzIHdpdGggPGNvZGU+am9pbj0mcXVvdDsgY2FsXyZxdW90OzwvY29k ZT4geW91IG1pZ2h0IGdldCA8Y29kZT4gY2FsX211bHRpIGNhbF90b2RheSBjYWxfaG9sczwv Y29kZT48L2xpPgoJCTxsaT5pZiB1c2luZyA8Y29kZT5odG1sPSZxdW90OzEmcXVvdDs8L2Nv ZGU+IHRoZSBqb2luX3ByZWZpeCBpcyBzZXQgdG8gYSBxdWVzdGlvbiBtYXJrLCB0aHVzOiA8 Y29kZT50eXBlPSZxdW90O21vbnRoLHllYXIsY2F0ZWdvcnkmcXVvdDsgaHRtbD0mcXVvdDsx JnF1b3Q7PC9jb2RlPiBtaWdodCByZW5kZXIgPGNvZGU+P209MTImYW1wO3k9MjAwOCZhbXA7 Yz1naWdzPC9jb2RlPiwgd2hpY2ggY2FuIGJlIHB1dCBzdHJhaWdodCBvbiB0aGUgZW5kIG9m IGFuIGFuY2hvcjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5o dG1sPC9zcGFuPiA6IElmIHNldCB0byA8Y29kZT4xPC9jb2RlPiwgcmV0dXJucyBub3Qgb25s eSB0aGUgdmFsdWVzIHlvdSBzcGVjaWZpZWQgYnV0IHRoZWlyIDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IHZhcmlhYmxlIG5hbWVzIGFzIHdlbGwsIGdpdmluZyB5b3UgdGhlIGVu dGlyZSBzdHJpbmcgYXMgYSB2YWxpZCBzZXQgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gcGFyYW1ldGVycyB3aGljaCBjYW4gYmUgYWRkZWQgdG8gYW4gYW5jaG9yLiBJdCBv dmVycmlkZXMgdGhlIDxjb2RlPmpvaW48L2NvZGU+IGF0dHJpYnV0ZSBhbmQgc2V0cyBpdCB0 byBhbiBhbXBlcnNhbmQuIERlZmF1bHQ6IDxjb2RlPjA8L2NvZGU+LjxkaXYgY2xhc3M9ImJy ZWFrIj5UaGlzIGF0dHJpYnV0ZSBpcyB1c2VmdWwgaWYgeW91IGFyZSBidWlsZGluZyB5b3Vy IG93biBjb250ZW50IGluc2lkZSBlYWNoIGNlbGwgdmlhIGEgPGNvZGU+Zm9ybTwvY29kZT4g YW5kIHdpc2ggdG8gbWFpbnRhaW4gdGhlIGN1cnJlbnQgc2VhcmNoIGVudmlyb25tZW50LiBJ ZiB5b3UgYWxsb3cgcGVvcGxlIHRvIGZpbHRlciBldmVudHMgYnkgY2F0ZWdvcnkgb3IgYXV0 aG9yIHlvdSBjYW4gdXNlIHRoaXMgdG8gcmV0dXJuIHRoZSAmIzgyMTY7Y3VycmVudCYjODIx Nzsgc3RhdGUgb2YgY2VydGFpbiB2YXJpYWJsZXMgc28geW91IGNhbiBwYXNzIHRoZW0gdG8g dGhlIG5leHQgcGFnZSBhbmQgbWFpbnRhaW4gc3RhdGU8L2Rpdj48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+ZXNjYXBlPC9zcGFuPiA6IGVzY2FwZSA8c3BhbiBjbGFzcz0iY2Fw cyI+SFRNTDwvc3Bhbj4gZW50aXRpZXMgc3VjaCBhcyA8Y29kZT4mbHQ7PC9jb2RlPiwgPGNv ZGU+Jmd0OzwvY29kZT4gYW5kIDxjb2RlPiZhbXA7PC9jb2RlPiBmb3IgcGFnZSB2YWxpZGF0 aW9uIHB1cnBvc2VzLiBTZXQgdG8gPGNvZGU+ZXNjYXBlPSZxdW90OyZxdW90OzwvY29kZT4g dG8gdHVybiBpdCBvZmYuIERlZmF1bHQ6IDxjb2RlPmh0bWw8L2NvZGU+PC9saT4KCTwvdWw+ CgoJPGgyIGlkPSJjYWxjbGFzcyI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxfY2xhc3Mg LyZndDs8L2NvZGU+PC9oMj4KCgk8cD5JbnNpZGUgeW91ciBjb250YWluZXIvZm9ybXMsIHVz ZSB0aGlzIHRhZyB0byBhZGQgYSBsaXN0IG9mIGNsYXNzZXMgdG8gdGhlIGN1cnJlbnQgY2Vs bC9ldmVudC4gVmVyeSB1c2VmdWwgaWYgYnVpbGRpbmcgY2VsbHMgeW91cnNlbGYgYmVjYXVz ZSBpbnNpZGUgYSA8YSBocmVmPSIjY2FsaWYiPmNvbmRpdGlvbmFsPC9hPiB0YWcgeW91IGNv dWxkIGFkZCBwYXJ0aWN1bGFyIGNsYXNzIG5hbWVzIGJhc2VkIG9uIHNvbWUgdmFsdWUgaW4g YSBjZWxsLjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c2NhbGNsYXNzIj5BdHRy aWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYW1lPC9zcGFu PiA6IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY2xhc3NuYW1lcyB0byBhZGQgdG8gdGhl IGN1cnJlbnQgY2VsbC9ldmVudC4gVGhlc2UgYXJlIDxzdHJvbmc+bm90PC9zdHJvbmc+IHN1 YmplY3QgdG8gYW55IDxjb2RlPmNsYXNzcHJlZml4ZXM8L2NvZGU+IHNvIHdpbGwgYWx3YXlz IGFwcGVhciBleGFjdGx5IGFzIHlvdSB3cml0ZSB0aGVtPC9saT4KCTwvdWw+CgoJPGgyIGlk PSJjYWxub3ciPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX25vdyAvJmd0OzwvY29kZT48 L2gyPgoKCTxwPlJldHVybiB0aGUgY3VycmVudCBkYXRlL3RpbWUsIGZvcm1hdHRlZCBob3dl dmVyIHlvdSBwbGVhc2UuIFVzZWZ1bCBmb3IgZXh0cmFjdGluZyBwYXJ0cyBvZiB0aGUgY3Vy cmVudCBzeXN0ZW0gdGltZXN0YW1wIHRvIGNvbXBhcmUgdGhpbmdzIHZpYSBvdGhlciBjb25k aXRpb25hbCBwbHVnaW5zIG9yICYjODIxMjsgZXZlbnR1YWxseSAmIzgyMTI7IHRoZSA8Y29k ZT4mbHQ7dHhwOnNtZF9pZl9jYWwmZ3Q7PC9jb2RlPiB0YWcuPC9wPgoKCTxoMyBjbGFzcz0i YXR0cyAiIGlkPSJhdHRzY2Fsbm93Ij5BdHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5mb3JtYXQ8L3NwYW4+IDogdGhlIHdheSB5b3Ugd2FudCB0aGUg ZGF0ZS90aW1lIHJlcHJlc2VudGVkLiBVc2UgYW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly91 azIucGhwLm5ldC9zdHJmdGltZSI+c3RyZnRpbWUoKTwvYT4gc3RyaW5nLiBEZWZhdWx0cyB0 byB0aGUgZGF0ZSBmb3JtYXQgeW91IHNldCBpbiBCYXNpYyBQcmVmczwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3NwYW4+IDogcmV0dXJuIGVpdGhlciBsb2NhbCB0aW1l ICg8Y29kZT4wPC9jb2RlPikgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHpvbmUgc2V0IGluIEJh c2ljIFByZWZzLCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiB0aW1lICg8Y29k ZT4xPC9jb2RlPikuIERlZmF1bHQ6IDxjb2RlPjA8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmxhbmc8L3NwYW4+IDogYW4gPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwv c3Bhbj4gbGFuZ3VhZ2UgY29kZSB0aGF0IGZvcm1hdHMgdGltZSBzdHJpbmdzIHN1aXRhYmxl IGZvciB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIChvciBsb2NhbGUpIGFzIGRlZmluZWQgYnkg PGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fNjM5Ij48c3BhbiBj bGFzcz0iY2FwcyI+SVNPPC9zcGFuPiA2Mzk8L2E+LiBEZWZhdWx0OiB1bnNldCAoaS5lLiB1 c2UgdGhlIHZhbHVlIGFzIHN0YXRlZCBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBwcmVmcyk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImFydGV2Ij5UYWc6IDxjb2RlPiZsdDt0 eHA6c21kX2FydGljbGVfZXZlbnQgLyZndDs8L2NvZGU+PC9oMj4KCgk8cD5XaGVuIHlvdSBj cmVhdGUgZXZlbnRzLCB0aGV5IHJlYWxseSBvbmx5IGV4aXN0IG9uY2UgYXMgYSBzaW5nbGUg YXJ0aWNsZTsgdGhlIHJlcGV0aXRpb24gaXMgYSB0cmljay4gVGh1cyB0aGUgYnVpbHQtaW4g YXJ0aWNsZSB0YWdzIG9ubHkgc2hvdyB0aGUgc2luZ2xlLCByZWFsIGFydGljbGVzLjwvcD4K Cgk8cD5UaGlzIHRhZyAmIzgyMTI7IHNpbWlsYXIgaW4gZnVuY3Rpb24gdG8gPGNvZGU+Jmx0 O3R4cDphcnRpY2xlX2N1c3RvbSAvJmd0OzwvY29kZT4gJiM4MjEyOyBhbGxvd3MgeW91IHRv IHNlZSByZWN1cnJpbmcgYXJ0aWNsZXMgYXMgaWYgdGhleSB3ZXJlICYjODIxNjtyZWFsJiM4 MjE3OyBhcnRpY2xlcyBpbiB0aGUgZGF0YWJhc2UuIEluc2lkZSB0aGUgdGFnJiM4MjE3O3Mg PGNvZGU+Zm9ybTwvY29kZT4gb3IgY29udGFpbmVyIHlvdSBjYW4gdXNlIGFsbCBleGlzdGlu ZyBhcnRpY2xlIHRhZ3MgdG8gZGlzcGxheSBhbnkgaW5mb3JtYXRpb24geW91IGxpa2UgYWJv dXQgZWFjaCAmIzgyMTY7dmlydHVhbCYjODIxNzsgYXJ0aWNsZS48L3A+CgoJPGgzIGNsYXNz PSJhdHRzICIgaWQ9ImF0dHNhcnRldiI+QXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+c3RlcGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgaW4gPGEgaHJl Zj0iI3VzYWdlIj5zbWRfY2FsZW5kYXI8L2E+LCB0aGUgSUQgb2YgdGhlIGZpZWxkIHRoYXQg Y29udGFpbnMgZXZlbnQgcmVwZXRpdGlvbnMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnNraXBmaWVsZDwvc3Bhbj4gOiBzYW1lIGFzIGluIDxhIGhy ZWY9IiN1c2FnZSI+c21kX2NhbGVuZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBmaWVsZCB0aGF0 IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGV2ZW50IGNhbmNlbGxhdGlvbiBkYXRlcy4gRGVmYXVs dDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b21pdGZpZWxkPC9zcGFu PiA6IHNhbWUgYXMgaW4gPGEgaHJlZj0iI3VzYWdlIj5zbWRfY2FsZW5kYXI8L2E+LCB0aGUg SUQgb2YgdGhlIGZpZWxkIHRoYXQgY29udGFpbnMgdGhlIGxpc3Qgb2YgZXZlbnQgb21pc3Np b24gZGF0ZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PnR5cGU8L3NwYW4+IDogdGhlIHR5cGVzIG9mIGV2ZW50IHRvIGRpc3BsYXkuIENob29zZSBm cm9tIDxjb2RlPnN0YW5kYXJkPC9jb2RlPiwgPGNvZGU+cmVjdXI8L2NvZGU+IG9yIDxjb2Rl Pm11bHRpPC9jb2RlPi4gRGVmYXVsdDogPGNvZGU+c3RhbmRhcmQsIHJlY3VyLCBtdWx0aTwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiBy ZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEgbGlzdCBvZiBzZWN0aW9ucy4gRGVmYXVsdDogdW5z ZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogcmVz dHJpY3QgdGhlIGV2ZW50cyB0byBhIGxpc3Qgb2YgY2F0ZWdvcmllcy4gRGVmYXVsdDogdW5z ZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IHJlc3Ry aWN0IHRoZSBldmVudHMgdG8gYSBsaXN0IG9mIGF1dGhvcnMuIERlZmF1bHQ6IHVuc2V0PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBl dmVudHMgdG8gYSBsaXN0IG9mIGFydGljbGUgSURzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2 ZW50cyB0byB0aGlzIGxpc3Qgb2YgYXJ0aWNsZSBzdGF0dXMuIERlZmF1bHQ6IDxjb2RlPmxp dmU8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV4cGlyZWQ8L3NwYW4+ IDogZGVmaW5pdGl2ZWx5IGhpZGUgKDxjb2RlPjA8L2NvZGU+KSBvciBzaG93ICg8Y29kZT4x PC9jb2RlPikgZXhwaXJlZCBldmVudHMuIExlYXZlIGJsYW5rIHRvIHVzZSB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWR2YW5jZWQgUHJlZmVyZW5jZSA8Y29kZT5QdWJs aXNoIGV4cGlyZWQgYXJ0aWNsZXM8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnRpbWU8L3NwYW4+IDogb25seSBzaG93IGV2ZW50cyBpbiB0aGlzIHRpbWUgZnJhbWUu IENob29zZSBmcm9tIDxjb2RlPmFueTwvY29kZT4sIDxjb2RlPmZ1dHVyZTwvY29kZT4gb3Ig PGNvZGU+cGFzdDwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPmFueTwvY29kZT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+bW9udGg8L3NwYW4+IDogb25seSBzaG93IGV2ZW50cyB0 aGF0IG9jY3VyIGluIHRoZSBnaXZlbiA8c3BhbiBjbGFzcz0iY2FwcyI+WVlZWTwvc3Bhbj4t bW0uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZyb208 L3NwYW4+IDogb25seSBzaG93IGV2ZW50cyBmcm9tIHRoaXMgc3RhcnQgZGF0ZS4gQ2FuIGJl IGFueSB2YWxpZCBkYXRlIGZvcm1hdC4gRGVmYXVsdDogdW5zZXQgKGkuZS4gYWxsIGRhdGVz KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50bzwvc3Bhbj4gOiBvbmx5IHNob3cg ZXZlbnRzIHVwIHRvIHRoaXMgZW5kIGRhdGUuIENhbiBiZSBhbnkgdmFsaWQgZGF0ZSBmb3Jt YXQuIERlZmF1bHQ6IHVuc2V0IChpLmUuIGFsbCBkYXRlcyk8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c29ydDwvc3Bhbj4gOiBvcmRlciB0aGUgZXZlbnRzIGJ5IHRoaXMgY29s dW1uLiBUaGUgbW9zdCB1c2VmdWwgdmFsdWUgaXMgdGhlIGRlZmF1bHQ6IDxjb2RlPlBvc3Rl ZCBhc2M8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm08L3NwYW4+ IDogcGFzcyBlYWNoIG1hdGNoaW5nIGV2ZW50IHRvIHRoZSBnaXZlbiA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiBmb3JtLiBEZWZhdWx0OiB1bnNldC4gTm90ZSB0aGF0IHVzaW5n IHRoZSBjb250YWluZXIgb3ZlcnJpZGVzIHRoaXMgYXR0cmlidXRlLCBhbmQgaWYgeW91IHNw ZWNpZnkgbmVpdGhlciBhIGZvcm0gbm9yIGNvbnRhaW5lciwgeW91IHdpbGwgc2VlIGEgbGlz dCBvZiBhcnRpY2xlIHBvc3RlZCBkYXRlczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5vZmZzZXQ8L3NwYW4+IDogdW5saWtlIGFydGljbGVfY3VzdG9tLCBldmVudHMgZnJvbSB0 aGUgc21kX2FydGljbGVfZXZlbnQgdGFnIG1heSBiZSBwYWdlZCB1c2luZyA8Y29kZT4mbHQ7 dHhwOm9sZGVyIC8mZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDpuZXdlciAvJmd0Ozwv Y29kZT4uIFlvdSBtYXkgc3BlY2lmeSBhIGZpeGVkIG9mZnNldCBmcm9tIHRoZSBzdGFydCBv ZiB0aGUgbGlzdCBvZiBldmVudHMgaWYgeW91IHdpc2guIERlZmF1bHQ6IDxjb2RlPjA8L2Nv ZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbWl0PC9zcGFuPiA6IG9ubHkg c2hvdyB0aGlzIG1hbnkgZXZlbnRzIG1heGltdW0gPHN0cm9uZz5wZXIgcGFnZTwvc3Ryb25n PiwgaS5lLiB0aGUgbnVtYmVyIG9mIGV2ZW50cyB0byBkaXNwbGF5LCB3aGV0aGVyIHRoZXkg Y29tZSBmcm9tIG9uZSAmIzgyMTY7cmVhbCYjODIxNzsgYXJ0aWNsZSBvciBtYW55LiBEZWZh dWx0OiA8Y29kZT4xMDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZl bnRsaW1pdDwvc3Bhbj4gOiBvbmx5IHNob3cgdGhpcyBtYW55IGV2ZW50cyBtYXhpbXVtLCA8 c3Ryb25nPnBlciBldmVudDwvc3Ryb25nPi4gU28gaWYgeW91IGhhdmUgYSB3ZWVrbHkgcmVw ZWF0ZWQgZXZlbnQgdGhhdCBsYXN0cyBmb3IgZm91ciBtb250aHMgYW5kIHlvdSBzZXQgPGNv ZGU+ZXZlbnRsaW1pdD0mcXVvdDs2JnF1b3Q7PC9jb2RlPiB5b3Ugd2lsbCBvbmx5IHNlZSBh IG1heGltdW0gb2YgNiBldmVudHMgZnJvbSBldmVyeSBhcnRpY2xlIGNvbnRhaW5pbmcgcmVw ZXRpdGlvbi4gVGhlIHJhbmdlIChzdGFydCBhbmQgZW5kIGRhdGUpIGlzIGRldGVybWluZWQg Ynkgb3RoZXIgcGx1Z2luIGF0dHJpYnV0ZXMuIERlZmF1bHQ6IDxjb2RlPjEwPC9jb2RlPjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYWdlYnk8L3NwYW4+IDogZXNvdGVyaWMg cGFnaW5nIGZlYXR1cmUsIGlkZW50aWNhbCB0byA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZn dDs8L2NvZGU+LiBEZWZhdWx0OiBzYW1lIGFzIDxjb2RlPmxpbWl0PC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wZ29ubHk8L3NwYW4+IDogc2V0IHRvIDxjb2RlPjE8 L2NvZGU+IHRvIHBlcmZvcm0gdGhlIHBhZ2luZyBhY3Rpb24gd2l0aG91dCBkaXNwbGF5aW5n IGFueXRoaW5nLiBQcm9iYWJseSB1c2VsZXNzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyAo d2l0aG91dCBicmFja2V0cykgdG8gd3JhcCB0aGUgbGlzdCBpbi4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+IDogdGhlIChYKUhU TUwgdGFnIHRvIHNlcGFyYXRlIGVhY2ggaXRlbSB3aXRoLiBEZWZhdWx0OiB1bnNldDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWcuIERl ZmF1bHQ6IHVuc2V0PC9saT4KCTwvdWw+CgoJPGgyIGNsYXNzPSJleGFtcGxlcyI+RXhhbXBs ZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE8L2gzPgoKCTxwPlRoZSBiZWF1dHkg b2YgdGhlIHBsdWdpbiBpcyB0aGF0IHlvdSBoYXZlIHRoZSBlbnRpcmUgYXJzZW5hbCBvZiA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzIGF2YWlsYWJsZSB0byB5b3UgaWYg eW91IGNob29zZSB0byB1c2UgYSA8Y29kZT5mb3JtPC9jb2RlPi4gVGh1cyB5b3UgY2FuIHNl dCB0aGUgYXJ0aWNsZSYjODIxNztzIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgdG8gdGhlIHNhbWUg ZGF5IGFuZCBzZXQgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgdG8gaW5kaWNhdGUgdGhlIHN0 YXJ0IGFuZCBlbmQgb2YgdGhlIGV2ZW50LiBZb3UgY2FuIHRoZW4gdXNlIHN0YW5kYXJkIDxj b2RlPiZsdDt0eHA6cG9zdGVkIC8mZ3Q7PC9jb2RlPiBvciA8Y29kZT4mbHQ7dHhwOmV4cGly ZXMgLyZndDs8L2NvZGU+IHRhZ3Mgd2l0aCB2YXJpb3VzIDxjb2RlPmZvcm1hdDwvY29kZT4g c3RyaW5ncyB0byByZW5kZXIgdGhlIGV2ZW50JiM4MjE3O3MgY3JpdGVyaWEuPC9wPgoKCTxw PlNpbWlsYXJseSB5b3UgY2FuIHVzZSA8Y29kZT4mbHQ7dHhwOmV4Y2VycHQgLyZndDs8L2Nv ZGU+IGFuZCA8Y29kZT4mbHQ7dHhwOnRpdGxlIC8mZ3Q7PC9jb2RlPiBvciBvZiBjb3Vyc2Ug YW55IGN1c3RvbSBmaWVsZHMgdG8gc2hvdyBhcyBtdWNoIG9yIGFzIGxpdHRsZSBkZXRhaWwg YXMgeW91IGxpa2UgaW4gdGhlIGNhbGVuZGFyIGNlbGwuPC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfY2FsZW5kYXIgc2VjdGlvbj0m cXVvdDtldmVudHMmcXVvdDsmZ3Q7CiZsdDtkaXYmZ3Q7CiAgIEV2ZW50OiAmbHQ7dHhwOnBl cm1saW5rJmd0OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAg Jmx0O2JyIC8mZ3Q7Jmx0O3R4cDpleGNlcnB0IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7ZGl2 IGNsYXNzPSZxdW90O2V2dGltZSZxdW90OyZndDsKICAgU3RhcnQ6ICZsdDt0eHA6cG9zdGVk IGZvcm1hdD0mcXVvdDslSDolTSZxdW90OyAvJmd0OwombHQ7L2RpdiZndDsKJmx0O2RpdiBj bGFzcz0mcXVvdDtldnRpbWUmcXVvdDsmZ3Q7CiAgIEVuZDogJmx0O3R4cDpleHBpcmVzIGZv cm1hdD0mcXVvdDslSDolTSZxdW90OyAvJmd0OwombHQ7L2RpdiZndDsKJmx0Oy90eHA6c21k X2NhbGVuZGFyJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzIiPkV4YW1wbGUgMjwv aDM+CgoJPHA+VXNpbmcgdGhlIGNvbmRpdGlvbmFsIHRhZyB5b3UgY2FuIHRha2UgYWN0aW9u IGlmIGNlcnRhaW4gZXZlbnRzIGNvbnRhaW4gcGFydGljdWxhciBmbGFncy4gVGhpcyBleGFt cGxlIGFsc28gc2hvdyBhIGNvbXBsZXRlbHkgdXNlbGVzcyBtYW5uZXIgb2YgZW1wbG95aW5n IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9ub3cgLyZndDs8L2NvZGU+LjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRpbWUgaXM6ICZsdDt0eHA6c21kX2Nh bF9ub3cgZm9ybWF0PSZxdW90OyVUJnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6c21kX2NhbGVuZGFy IGZvcm09JnF1b3Q7ZXZmb3JtJnF1b3Q7CiAgICAgc3RlcGZpZWxkPSZxdW90O2N1c3RvbV8z JnF1b3Q7IHNraXBmaWVsZD0mcXVvdDtjdXN0b21fNiZxdW90OwogICAgIHNwYW5mb3JtPSZx dW90O211bHRpcyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+SW4gZm9ybSA8Y29k ZT5ldmZvcm08L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6c21kX2lmX2NhbCBmbGFnPSZxdW90O3JlY3VyJnF1b3Q7Jmd0Owog ICZsdDt0eHA6cGVybWxpbmsmZ3Q7KFJFQ1VSKSZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7 dHhwOmVsc2UgLyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8m Z3Q7Jmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiAgICZsdDt0eHA6c21kX2lmX2NhbCBmbGFnPSZx dW90O211bHRpZmlyc3QmcXVvdDsmZ3Q7CiAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O3Jp Z2h0JnF1b3Q7Jmd0OyZhbXA7bGFxdW87LS0mbHQ7L3NwYW4mZ3Q7CiAgICZsdDsvdHhwOnNt ZF9pZl9jYWwmZ3Q7CiAgICZsdDt0eHA6c21kX2lmX2NhbCBmbGFnPSZxdW90O3JlY3VyZmly c3QmcXVvdDsmZ3Q7CiAgICAgICZsdDtzcGFuJmd0O09uZSBvZiBtYW55Li4uJmx0Oy9zcGFu Jmd0OwogICAmbHQ7L3R4cDpzbWRfaWZfY2FsJmd0OwombHQ7L3R4cDpzbWRfaWZfY2FsJmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+QW5kIGluIGZvcm0gPGNvZGU+bXVsdGlzPC9jb2RlPjo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNt ZF9pZl9jYWwgZmxhZz0mcXVvdDttdWx0aSwgbXVsdGlwcmV2JnF1b3Q7CiAgICAgbG9naWM9 JnF1b3Q7b3ImcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7LS0mYW1wO3JhcXVv Oy0tJmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9jYWwmZ3Q7CiZsdDt0 eHA6c21kX2lmX2NhbCBmbGFnPSZxdW90O211bHRpbGFzdCZxdW90OyZndDsKICAgJmx0O3R4 cDpwZXJtbGluayZndDsKICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7bGVmdCZxdW90OyZn dDstLSZhbXA7cmFxdW87Jmx0Oy9zcGFuJmd0OyBFTkQgJmx0O3R4cDp0aXRsZSAvJmd0Owog ICAmbHQ7L3R4cDpwZXJtbGluayZndDsKJmx0Oy90eHA6c21kX2lmX2NhbCZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPk5vdGljZSB0aGF0IDxjb2RlPm11bHRpZmlyc3Q8L2NvZGU+IGlzIHRl c3RlZCBpbnNpZGUgdGhlIHNhbWUgZm9ybSBhcyBzdGFuZGFyZCBldmVudHMuIFRoaXMgaXMg YmVjYXVzZSBvbmx5IDxlbT5jb250aW51YXRpb24gc3Bhbm5lZCBjZWxsczwvZW0+IGFyZSBw YXNzZWQgdG8gdGhlIDxjb2RlPnNwYW5mb3JtPC9jb2RlPjsgdGhlIGZpcnN0IGV2ZW50IG9m IGEgc3Bhbm5lZCBncm91cCBpcyBqdXN0IGxpa2UgYW55IHN0YW5kYXJkIGV2ZW50LiBTaW1p bGFybHksIGlmIHlvdSBoYWQgYmVlbiB1c2luZyA8Y29kZT5yZWN1cmZvcm08L2NvZGU+IHRo ZSBmaXJzdCBldmVudCBvZiB0aGUgcmVjdXJyaW5nIHNldCB3b3VsZCBiZSBwcm9jZXNzZWQg aW4gdGhlIHVzdWFsIGZvcm0vY29udGFpbmVyIGFuZCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50 IHdvdWxkIGJlIHBhc3NlZCB0byB0aGUgZGVkaWNhdGVkIGZvcm0uPC9wPgoKCTxoMyBpZD0i ZWczIj5FeGFtcGxlIDM8L2gzPgoKCTxwPllvdSBjb3VsZCB1c2UgdGhlIGNhbGVuZGFyIHRh Z3MgdG8gb3V0cHV0IHZhcmlvdXMgcGllY2VzIG9mIGZsYWcgaW5mb3JtYXRpb24gdG8gYnVp bGQgeW91ciBvd24gY2xhc3MgbmFtZXMuIFRoaXMgZXhhbXBsZSBhbHNvIGRlbW9uc3RyYXRl cyB0aGUgPGNvZGU+aHRtbDwvY29kZT4gYXR0cmlidXRlIG9mIDxjb2RlPiZsdDt0eHA6c21k X2NhbF9pbmZvIC8mZ3Q7PC9jb2RlPiB0byBidWlsZCB1cCBhIHF1ZXJ5IHN0cmluZyB0aGF0 IGlzIHBhc3NlZCBhbG9uZyB3aXRoIGFuIGV2ZW50JiM4MjE3O3MgPGNvZGU+Y2F0ZWdvcnkx PC9jb2RlPiB3aGVuIGEgdmlzaXRvciBjbGlja3MgdGhlIGFuY2hvci48L3A+CgoJPHA+VGhp cyBhbGxvd3MgeW91ciBzaXRlIHZpc2l0b3JzIHRvIGZpbHRlciBldmVudHMgYnkgY2F0ZWdv cnkgd2hpbGUgcmV0YWluaW5nIHRoZSBhYmlsaXR5IHRvIHNob3cgdGhlIGNhbGVuZGFyIGZv ciB0aGUgY3VycmVudCBtb250aC95ZWFyIGFuZCBzZWN0aW9uIHRoZXkgYXJlIHZpZXdpbmcg aW5zdGVhZCBvZiBkcm9wcGluZyBiYWNrIHRvIHRoZSBjdXJyZW50IG1vbnRoL3llYXIgbGlr ZSBvdGhlciBjYWxlbmRhciBzeXN0ZW1zIG9mdGVuIGRvLjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2NhbGVuZGFyIGlzb3dlZWtz PSZxdW90O1dFRUsjJnF1b3Q7CiAgICAgeWVhcndpZHRoPSZxdW90OzAsMiZxdW90OyBzZWxl Y3Q9JnF1b3Q7eWVhciwgbW9udGgmcXVvdDsKICAgICBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9t XzEmcXVvdDsgc2tpcGZpZWxkPSZxdW90O2N1c3RvbV8yJnF1b3Q7CiAgICAgc2hvd3NraXBw ZWQ9JnF1b3Q7MSZxdW90OyBleHBpcmVkPSZxdW90OzEmcXVvdDsmZ3Q7CiAgICZsdDtzcGFu IGNsYXNzPSZxdW90OyZsdDt0eHA6c21kX2NhbF9pbmZvIGpvaW49JnF1b3Q7IGNhbF8mcXVv dDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAgICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0 aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwogICAgICAmbHQ7YSBocmVmPSZxdW90 Oz9jPSZsdDt0eHA6Y2F0ZWdvcnkxCiAgICAgICAgIC8mZ3Q7JmFtcDsmbHQ7dHhwOnNtZF9j YWxfaW5mbyB0eXBlPSZxdW90O3NlY3Rpb24sIHllYXIsCiAgICAgICAgIG1vbnRoLCBjYWxp ZCZxdW90OyBodG1sPSZxdW90OzEmcXVvdDsgam9pbl9wcmVmaXg9JnF1b3Q7JnF1b3Q7CiAg ICAgICAgIC8mZ3Q7JnF1b3Q7Jmd0OyZsdDt0eHA6Y2F0ZWdvcnkxIHRpdGxlPSZxdW90OzEm cXVvdDsgLyZndDsmbHQ7L2EmZ3Q7CiAgICZsdDsvc3BhbiZndDsKJmx0Oy90eHA6c21kX2Nh bGVuZGFyJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2hhdCBpcyBhbHNvIHVzZWZ1bCBhYm91 dCB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8gLyZndDs8L2NvZGU+IHRhZyBpcyB0 aGF0IGlmIGEgcGFydGljdWxhciB2YWx1ZSBpcyBub3Qgc2V0IGl0IHdpbGwgbm90IGJlIGlu Y2x1ZGVkIGluIHRoZSBvdXRwdXQuPC9wPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ8L2gz PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2gyJmd0O1Vw Y29taW5nIEV2ZW50cyZsdDsvaDImZ3Q7CiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgc3Rl cGZpZWxkPSZxdW90O2N1c3RvbV8xJnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDtkbCZxdW90 OyB0aW1lPSZxdW90O2Z1dHVyZSZxdW90OyBldmVudGxpbWl0PSZxdW90OzUmcXVvdDsmZ3Q7 CiAgICZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OwogICAgICZsdDtkdCZndDsmbHQ7dHhwOnBv c3RlZCBmb3JtYXQ9JnF1b3Q7JUIgJVkmcXVvdDsgLyZndDsmbHQ7L2R0Jmd0OwogICAmbHQ7 L3R4cDppZl9kaWZmZXJlbnQmZ3Q7CiAgICZsdDtkZCZndDsKICAgICAgJmx0O3R4cDpwZXJt bGluayZndDsmbHQ7dHhwOnRpdGxlLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgICAg Jmx0O3R4cDpwb3N0ZWQgLyZndDsKICAgJmx0Oy9kZCZndDsKJmx0Oy90eHA6c21kX2FydGlj bGVfZXZlbnQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IGxpc3RzIHRoZSBuZXh0IDUg dXBjb21pbmcgJiM4MjEyOyByZWN1cnJpbmcgJiM4MjEyOyBldmVudHMsIHBsdXMgYW55IHN0 YW5kYXJkIGFuZCBzcGFubmVkIGV2ZW50cywgZm9ybWF0dGluZyB0aGVtIGFzIGEgZGVmaW5p dGlvbiBsaXN0LiBJZiB5b3UgYWRkIHBhZ2luYXRpb24gdGFncyB5b3UgY2FuIGZsaXAgdGhy b3VnaCBhbGwgdGhlIGV2ZW50czsgdGhleSB3aWxsIGJlIGRpc3BsYXllZCAxMCBhdCBhIHRp bWUgb24gZWFjaCBwYWdlIChpZiB5b3Ugd2FudCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIHBh Z2UgeW91IGFyZSBvbiBhcyB5b3UgZmxpcCB0aHJvdWdoIGEgY2FsZW5kYXIgdGhhdCBpcyBp biBhIHNpZGViYXIsIGFkZCA8Y29kZT5wZzwvY29kZT4gdG8gdGhlIDxjb2RlPm1haW50YWlu PC9jb2RlPiBhdHRyaWJ1dGUgaW4geW91ciBjYWxlbmRhcikuPC9wPgoKCTxwPk5vdGUgdGhl IGh5cGVybGlua2VkIHRpdGxlIHNob3duIGhlcmUgd2lsbCByZXR1cm4gdG8gdGhlICYjODIx NjtyZWFsJiM4MjE3OyBhcnRpY2xlIHdoZW4gY2xpY2tlZC4gSWYgeW91IHdhbnRlZCB0byBh bGxvdyBwZW9wbGUgdG8gYm9vayBhbiBldmVudCBvbiB5b3VyIGluZGl2aWR1YWwgYXJ0aWNs ZSwgdHJ5IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7CiAmbHQ7dHhwOmFydGljbGUg bGltaXQ9JnF1b3Q7MSZxdW90OyZndDsKICAmbHQ7aDMmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0 OyZsdDsvaDMmZ3Q7CiAgJmx0O3R4cDpib2R5IC8mZ3Q7CiAgJmx0O3AmZ3Q7UGxlYXNlIGNo b29zZSBhIGRhdGUgdG8gYm9vazombHQ7L3AmZ3Q7CiAgJmx0O3NlbGVjdCZndDsKICAmbHQ7 dHhwOnNtZF9hcnRpY2xlX2V2ZW50IHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90Owog ICAgdHlwZT0mcXVvdDtyZWN1ciZxdW90OyBpZD0mIzM5OyZsdDt0eHA6YXJ0aWNsZV9pZCAv Jmd0OyYjMzk7Jmd0OwogICAgJmx0O29wdGlvbgogICAgIHZhbHVlPSYjMzk7Jmx0O3R4cDpw b3N0ZWQgZm9ybWF0PSZxdW90OyVHLSVtLSVkJnF1b3Q7LyZndDsmIzM5OyZndDsKICAgICAg Jmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZxdW90OyVtICVkLCAkRyZxdW90OyAvJmd0OwogICAg Jmx0Oy9vcHRpb24mZ3Q7CiAgJmx0Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7CiAgJmx0 Oy9zZWxlY3QmZ3Q7CiAmbHQ7L3R4cDphcnRpY2xlJmd0OwombHQ7L3R4cDppZl9pbmRpdmlk dWFsX2FydGljbGUmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRoIHNvbWUgY3VubmluZyB5 b3UgY291bGQgZXZlbiBhZGQgdGhlICYjODIxNjt2aXJ0dWFsJiM4MjE3OyBkYXRlIHRoYXQg dGhleSBjaG9zZSBpbiB5b3VyIG9yaWdpbmFsIGFydGljbGVfZXZlbnQgbGlzdCBhbmQgcGFz cyBpdCBhcyBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIHRvIHlv dXIgaW5kaXZpZHVhbCBhcnRpY2xlIHdoZXJlIHlvdSBjb3VsZCByZWFkIHRoZSB2YWx1ZSBh bmQgcHJlLXNlbGVjdCB0aGUgZGF0ZSBmb3IgdGhlIHZpc3Rvci48L3A+CgoJPGgzIGlkPSJl ZzUiPkV4YW1wbGUgNTwvaDM+CgoJPHA+SG93IGFib3V0IGJlaW5nIGFibGUgdG8gb3V0cHV0 IHlvdXIgZXZlbnRzIGluIGlDYWwgZm9ybWF0IHNvIG90aGVyIHBlb3BsZSBjYW4gc3luYyB0 aGVpciBjYWxlbmRhcnMgdG8geW91cnM/IFB1dCB0aGlzIGluIGEgbmV3IFBhZ2UgdGVtcGxh dGUgaW4gaXRzIG93biBTZWN0aW9uOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPkJFR0lOOlZDQUxFTkRBUgpWRVJTSU9OOjIuMApYLVdSLUNBTE5BTUU6 R2lncyBDYWxlbmRhcgpQUk9ESUQ6LS8vQXBwbGUgQ29tcHV0ZXIsIEluYy8vaUNhbCAxLjUv L0VOClgtV1ItVElNRVpPTkU6RXVyb3BlL0xvbmRvbgombHQ7dHhwOnNtZF9hcnRpY2xlX2V2 ZW50IGZvcm09JnF1b3Q7aWNzaXRlbSZxdW90OyB0aW1lPSZxdW90O2FueSZxdW90OwpzZWN0 aW9uPSZxdW90O2dpZ3MmcXVvdDsgbGltaXQ9JnF1b3Q7MTAwMCZxdW90OyZndDsKIEJFR0lO OlZFVkVOVAogRFRTVEFSVDombHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JVklbSVkVCVI JWklcyZxdW90OyAvJmd0OwogRFRFTkQ6Jmx0O3R4cDpleHBpcmVzIGZvcm1hdD0mcXVvdDsl WSVtJWRUJUglaSVzJnF1b3Q7IC8mZ3Q7CiBTVU1NQVJZOiZsdDt0eHA6dGl0bGUgLyZndDsK IEVORDpWRVZFTlQKJmx0Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7CkVORDpWQ0FMRU5E QVIKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd2lsbCBvdXRwdXQgYW4gaUNhbC1mb3JtYXR0 ZWQgZ2lnIGxpc3QgKHJlcGVhdGVkIG9yIG90aGVyd2lzZSkuIElmIHlvdSBnb3QgZnJlYWt5 IHdpdGggaXQgYW5kIGFkZGVkIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgaW5zaWRlIHRoZSB0 ZW1wbGF0ZSB5b3UgY291bGQgZXZlbiByZWFkIGluIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8 L3NwYW4+IHZhcmlhYmxlcyBhbmQgcGx1ZyB0aGVtIGluLiBUaHVzIHlvdSBjb3VsZCBsaW5r IHRvIGl0IGRpcmVjdGx5IG9mZiB0aGUgY2FsZW5kYXIgaXRzZWxmLCBwYXNzIGluIHRoZSBz ZWN0aW9uLCBjYXRlZ29yeSBvciBldmVudCBpbmZvIGFuZCBoYXZlIGEgY3VzdG9taXNlZCBp Q2FsIHN0cmVhbSBwdW1wZWQgb3V0IG9mIFRleHRwYXR0ZXJuLjwvcD4KCgk8cD5UaGFua3Mg dG8gd29vZiBmb3IgYnJpbmdpbmcgdGhlIG9yaWdpbmFsIDxhIGhyZWY9Imh0dHA6Ly9kZS1v bmxpbmUuY28udWsvMjAwNi8wNS8wNS90ZXh0cGF0dGVybi1hbmQtaWNhbCI+RGF2aWQgRW1l cnk8L2E+IGFydGljbGUgdG8gbXkgYXR0ZW50aW9uLjwvcD4KCgk8aDIgY2xhc3M9ImNoYW5n ZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxpPjIxIERlYyAwOCB8IDAuMSB8IElu aXRpYWwgcmVsZWFzZSAoc3BvbnNvcnMgb25seSk8L2xpPgoJCTxsaT4yMiBEZWMgMDggfCAw LjIgfCBGaXhlZCBhIGZldyBXM0MgdmFsaWRhdGlvbiBpc3N1ZXMgYW5kIGFkZGVkIG1vcmUg ZGF0YSB2YWxpZGl0eSBjaGVja3MgOyBhdHRlbXB0ZWQgdG8gYWRkcmVzcyBkYXRlL3RpbWV6 b25lIHByb2JsZW1zIChhbmQgbW9zdGx5IGZhaWxlZCwgc28gd3JvdGUgYWJvdXQgaXQgaW5z dGVhZCkgOyBlbmhhbmNlZCA8Y29kZT5zbWRfaWZfY2FsPC9jb2RlPiB0YWcgdG8gY2hlY2sg Zm9yIGRhdGVzIGFuZCA8Y29kZT5jYWxpZDwvY29kZT4gOyBhZGRlZCA8Y29kZT5lc2NhcGU8 L2NvZGU+IGF0dHJpYnV0ZSB0byBzbWRfY2FsX2luZm8gdGFnPC9saT4KCQk8bGk+MjMgRGVj IDA4IHwgMC4yMSB8IENoYW5nZWQgPGNvZGU+aXNvd2Vla3M8L2NvZGU+IHNvIGFueSBnaXZl biB0ZXh0IGJlY29tZXMgdGhlIGNvbHVtbiBoZWFkaW5nIDsgYWRkZWQgPGNvZGU+d2Vlazwv Y29kZT4gYXR0cmlidXRlIHRvIGFsbCByZWxldmFudCB0YWdzIDsgYWRkZWQgPGNvZGU+ZGF5 PC9jb2RlPiBhdHRyaWJ1dGUgdG8gPGNvZGU+c21kX2NhbF9pbmZvPC9jb2RlPiA7IGZpeGVk IDxjb2RlPm1vbnRoPC9jb2RlPiBhbmQgPGNvZGU+eWVhcjwvY29kZT4gYXR0cmlidXRlcyBz byBjYWxlbmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRlcyB0aGVtPC9saT4KCQk8bGk+MjYgRGVj IDA4IHwgMC4yMiB8IEVuaGFuY2VkIDxjb2RlPm5hdmNsYXNzPC9jb2RlPiA7IGFkZGVkIDxj b2RlPmxpbmtwb3N0ZWQ8L2NvZGU+IChib3RoIHRoYW5rcyBtcmRhbGUpPC9saT4KCQk8bGk+ MjggRGVjIDA4IHwgMC4yMyB8IENvcnJlY3RlZCB0aW1lem9uZSBvZmZzZXQgZmF1eCBwYXMg OyBhZGRlZCBmaXJzdC9sYXN0IHdlZWtkYXkgcmVjdXJyZW5jZSBhbmQgPGNvZGU+cmVjdXJm b3JtPC9jb2RlPiAoYWxsIHRoYW5rcyBtcmRhbGUpIDsgZml4ZWQgbWluaWNhbCAmIzgyMTY7 dG9kYXkmIzgyMTc7IGJlaW5nIHdyb25nbHkgc2V0PC9saT4KCQk8bGk+MDEgSmFuIDA5IHwg MC4zIHwgQWRkZWQgPGNvZGU+Y2VsbGZvcm08L2NvZGU+LCA8Y29kZT5uYXZpZDwvY29kZT4s IDxjb2RlPm5hdmFycm93PC9jb2RlPiwgYW5kIDxjb2RlPm1haW50YWluPC9jb2RlPiA7IGFk ZGVkIDxjb2RlPiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgLyZndDs8L2NvZGU+ICh0aGFu a3MgbXJkYWxlKSBhbmQgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2NsYXNzIC8mZ3Q7PC9jb2Rl PiA7IGFkZGVkIHRoZSA8Y29kZT5zdGFuZGFyZDwvY29kZT4gYW5kIDxjb2RlPnJlY3VyZmly c3Q8L2NvZGU+IGV2ZW50IGZsYWdzIDsgbWFkZSBjZWxsL2V2ZW50IGZsYWcgZGlzdGluY3Rp b24gYmV0dGVyIChlLmcuIDxjb2RlPmV2ZW50PC9jb2RlPiBhbmQgPGNvZGU+aG9sczwvY29k ZT4gZmxhZ3Mgbm93IG9jY3VyIDxlbT5vbmx5PC9lbT4gYXQgdGhlIGNlbGwgbGV2ZWwpIDsg YWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IGEgPGNvZGU+ZGF5Zm9ybWF0PC9jb2RlPiBhcnJh eSwgYWRkZWQgYSB3ZWVrIHNlbGVjdCBsaXN0IGFuZCBlbmhhbmNlZCB0aGUgPGNvZGU+aXNv d2Vla3M8L2NvZGU+IGF0dHJpYnV0ZSAodGhhbmtzIHVsaSkgOyBmaXhlZCBzbWRfaWZfY2Fs JiM4MjE3O3MgPGNvZGU+ZmxhZzwvY29kZT4gYnVtYmxpbmcsIGFuZCBhZGRlZCA8Y29kZT5T TURfQU5ZPC9jb2RlPiB0ZXN0IDsgZml4ZWQgc21kX2NhbF9pbmZvIDxjb2RlPmF1dGhvcjwv Y29kZT4gd2FybmluZyBhbmQgYWRkZWQgPGNvZGU+am9pbl9wcmVmaXg8L2NvZGU+IDsgZml4 ZWQgZGFuZ2xpbmcgYXJ0aWNsZSBhZnRlciBwbHVnaW4gdGVybWluYXRlczwvbGk+CgkJPGxp PjAyIEphbiAwOSB8IDAuMzEgfCBBZGRlZCA8Y29kZT5vbWl0ZmllbGQ8L2NvZGU+IGFuZCB0 aGUgPGNvZGU+b21pdDwvY29kZT4gY2VsbCBmbGFnICh0aGFua3Mgd29vZik8L2xpPgoJPC91 bD4KCgk8cD48L2Rpdj48L3A+CjwhLS0gLS0tIEJFR0lOIFBMVUdJTiBDU1MgLS0tIC0tPgo8 c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjUgO30K I3NtZF9oZWxwIGNvZGUgeyBmb250LXdlaWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNv dXJpZXIgTmV3IiwgY291cmllciwgbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZG RkNDO30KI3NtZF9oZWxwIGNvZGUuYmxvY2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRl cjoxcHggZG90dGVkICM5OTk7IGJhY2tncm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6 YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHggMjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVs cCBhOmxpbmssICNzbWRfaGVscCBhOnZpc2l0ZWQgeyBjb2xvcjogIzAwYzsgdGV4dC1kZWNv cmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1i b3R0b206MXB4O30KI3NtZF9oZWxwIGE6aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNv bG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBz b2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjog IzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQt YWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29s aWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdl b3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICMwNzk7IGZvbnQ6 IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFy Z2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB0ZXh0LWRlY29yYXRp b246dW5kZXJsaW5lO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBz YW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0 LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXRubSB7IGZvbnQtd2VpZ2h0 OmJvbGQ7IGNvbG9yOiMzM2Q7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVl OyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6OTAl OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9oZWxwIHRk LCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtIDA7 fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNzbWRfaGVscCAu cmVxdWlyZWQge2NvbG9yOnJlZDt9CiNzbWRfaGVscCBsaSB7IG1hcmdpbjo1cHggMjBweCA1 cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1cHg7IH0KPC9zdHls ZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBDU1MgLS0tIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiIw MWQ2YjA1YTg4OTRiNWU1ODQ3Y2NhYThkZWExZTRkZSI7fQ==