# Name: smd_gallery v0.53 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC41MyI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJjb2RlIjtzOjM1MzU2OiJyZXF1aXJlX3BsdWdp bignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2FsbExhbmc7 DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcsDQoJJ25h dmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSduYXZuZXh0 JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQKCdzbWRf Z2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEwbl9sYW5n dWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRzJyA9PiAn MCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdjb3VudHBv cycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJ J2FzcGVjdCcgPT4gJycsDQoJCSdhdXRob3InID0+ICcnLA0KCQknZGltZW5zaW9ucycgPT4g JycsDQoJCSdleHRlbnNpb24nID0+ICcnLA0KCQknZGlyZWN0b3J5JyA9PiAnJywNCgkJJ21h dGNoJyA9PiAnJywNCgkJJ3N1YmxldmVsJyA9PiAnMCcsDQoJCSdlc2NhcGUnID0+ICdhbHQs IHRpdGxlLCBjYXB0aW9uJywNCgkJJ3NvcnQnID0+ICcnLA0KCQknb2Zmc2V0JyA9PiAnMCcs DQoJCSdsaW1pdCcgPT4gJzAnLA0KCQknbWF4bGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVt YmxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1i JyA9PiAnMDoxJywNCgkJJ3RodW1ic2l6ZScgPT4gJycsDQoJCSdpbWdzaXplJyA9PiAnJywN CgkJJ29uY2hhbmdlJyA9PiAnY2F0ZWdvcnknLA0KCQknb25jaGFuZ2V3cmFwdGFnJyA9PiAn JywNCgkJJ29uY2hhbmdlY2xhc3MnID0+ICcnLA0KCQknb2JqZWN0Zm9ybScgPT4gJycsDQoJ CSdncm91cHRhZycgPT4gJycsDQoJCSdncm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ ICcnLA0KCQknZm9ybWF0JyA9PiAkZGF0ZWZvcm1hdCwNCgkJJ2dtdCcgPT4gJycsDQoJCSds YW5nJyA9PiAnJywNCgkJJ2NvbGxhdGUnID0+ICcnLA0KCQknY29tYm8nID0+ICcnLA0KCQkn cGFnaW5nJyA9PiAnMCcsDQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSdwYWdlcG9zJyA9PiAn YmVsb3cnLA0KCQknbmF2d3JhcHRhZycgPT4gJ3VsJywNCgkJJ25hdmJyZWFrJyA9PiAnbGkn LA0KCQknbmF2Y2xhc3MnID0+ICdzbWRfZ2FsbGVyeV9uYXYnLA0KCQknZW1wdHljbGFzcycg PT4gJ2VtcHR5JywNCgkJJ2dhbGxlcnlpZCcgPT4gJz80OjYnLA0KCQknd3JhcHRhZycgPT4g JycsDQoJCSdodG1sX2lkJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNzJyA9 PiAnJywNCgkJJ2RlYnVnJyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIENhdGVnb3J5 IHJlbGllcyBvbiB3aGV0aGVyIGlkIGhhcyBiZWVuIHNwZWNpZmllZCBvciBub3QuDQoJLy8g bEF0dHMoKSB3b24ndCBsZXQgdXMgaGFuZGxlIHRoaXMgbG9naWMgc28gaXQgaGFzIHRvIGJl IGRvbmUgbWFudWFsbHkNCgkkYXR0ZW1wdE1hdGNoID0gKGVtcHR5KCRjYXRlZ29yeSkgJiYg ZW1wdHkoJGlkKSkgPyBmYWxzZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVn b3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYydd OiAnJyk7DQoJJHNvcnQgPSAoJHNvcnQpID8gJHNvcnQgOiAoICgkaWQpID8gJ2lkJyA6ICdj YXRlZ29yeScgKTsNCg0KCS8vICoqIExPT0tVUCBUQUJMRVMNCgkvLyAkZmllbGRNYXAgaG9s ZHMgZGF0YWJhc2UgY29sdW1uIGFzIGtleSwgYW5kIHJlcGxhY2VtZW50IGlkZW50aWZpZXIg YXMgdmFsdWUuDQoJLy8gQWRkaXRpb25hbCBjb2xzIGNvcGllZCB0byAkZXh0cmFNYXAgZm9y IGl0ZXJhdGlvbiB3aGlsZSBjcmVhdGluZyByZXBsYWNlbWVudHMuDQoJLy8gVXNlIGFycmF5 X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJlY3Qga2V5 IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkkZmllbGRNYXAgPSBhcnJheSgp Ow0KCSRleHRyYU1hcCA9IGFycmF5KCk7DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5hbWUiLCAi aWQiLCAiYWx0IiwgImNhcHRpb24iLCAiY2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRhdGUiLCAi ZXh0IiwgInc6d2lkdGgiLCAiaDpoZWlnaHQiLCAidGh1bWJfdzp0aHVtYl93aWR0aCIsICJ0 aHVtYl9oOnRodW1iX2hlaWdodCIsICJ0aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkkbWxwRmll bGRzID0gYXJyYXkoImFsdCIsICJjYXB0aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUg TUxQIGNvbHVtbiBuYW1lcywgc2luY2UgdXNpbmcgZ2V0Um93cygpIGxhdGVyIGRvZXMgbm90 LiBDYXRlZ29yeSB0aXRsZSBhbHNvIGhhcyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkkdGhpc2xh bmcgPSAoaXNzZXQoJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFuZ3VhZ2Vb J2xvbmcnXSA6IExBTkc7DQoJJGRmbHRfdGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0KCSRjb2x1 bW5zID0gZG9fbGlzdCgkY29sdW1ucyk7DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJGNvcmVD b2xzLCAkY29sdW1ucykgYXMgJGNvbGluZm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xpc3QoJGNv bGluZm8sICI6Iik7DQoJCSRjb2x0YmwgPSBkb19saXN0KCRjb2xiaXRbMF0sICIuIik7DQoN CgkJaWYgKCRjb2xiaXRbMF0gPT0gJycpIGNvbnRpbnVlOw0KDQoJCWlmIChjb3VudCgkY29s dGJsKSA+IDEpIHsNCgkJCSR0YmwgPSAkY29sdGJsWzBdOw0KCQkJJGNvbG5hbWUgPSAkY29s dGJsWzFdOw0KCQl9IGVsc2Ugew0KCQkJJHRibCA9ICRkZmx0X3RibDsNCgkJCSRjb2xuYW1l ID0gJGNvbHRibFswXTsNCgkJfQ0KCQkkY29saWQgPSAoY291bnQoJGNvbGJpdCkgPiAxKSA/ ICRjb2xiaXRbMV0gOiAkY29sbmFtZTsNCgkJJGZpZWxkTWFwWygoJHRibCk/JHRibC4nLic6 JycpLiggKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25nJ10pICYmIGluX2FycmF5KCRjb2xu YW1lLCAkbWxwRmllbGRzKSkgPyBfbDEwbl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5hbWUsICR0 aGlzbGFuZykuICcgQVMgJy4kY29sbmFtZSAgOiAkY29sbmFtZSApXSA9ICRjb2xpZDsNCgkJ aWYgKCFpbl9hcnJheSgkY29saW5mbywgJGNvcmVDb2xzKSkgew0KCQkJJGV4dHJhTWFwWyRj b2xuYW1lXSA9ICRjb2xpZDsNCgkJfQ0KCX0NCgkkZmllbGRNYXAgPSBhcnJheV91bmlxdWUo JGZpZWxkTWFwKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcg aWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6 IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBo cmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6 ICR0aGluZzsNCgkkb2JqZWN0Zm9ybSA9IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8gJycgOiBm ZXRjaF9mb3JtKCRvYmplY3Rmb3JtKTsNCg0KCS8vIENvdW50aW5nDQoJJGNvdW50UG9zQWxs b3dlZCA9IGFycmF5KCJhYm92ZSIsICJiZWxvdyIpOw0KCSRjb3VudHBvc25zID0gYXJyYXko KTsNCgkkY291bnRpbmcgPSAwOw0KCWlmICgkY291bnRmb3JtKSB7DQoJCSRjb3VudGluZyA9 IDE7DQoJCSRjb3VudGZvcm0gPSBkb19saXN0KCRjb3VudGZvcm0sICRkZWxpbSk7DQoJCSRj b3VudHBvcyA9IHN0cl9yZXBsYWNlKCdzbWRfJywgJycsICRjb3VudHBvcyk7IC8vIEZvciBj b252ZW5pZW5jZQ0KCQkkY291bnRwb3MgPSBkb19saXN0KCRjb3VudHBvcywgJGRlbGltKTsN CgkJZm9yZWFjaCAoJGNvdW50cG9zIGFzICRjb3VudGl0ZW0pIHsNCgkJCSRjb3VudHBvc25z W10gPSAoaW5fYXJyYXkoJGNvdW50aXRlbSwgJGNvdW50UG9zQWxsb3dlZCkpID8gJGNvdW50 aXRlbSA6ICRjb3VudFBvc0FsbG93ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBQYWdpbmcgaW5p dA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJiZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdl b3V0ID0gYXJyYXkoKTsNCglpZiAoJHBhZ2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkk cGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gc3RyX3Jl cGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vwb3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xpc3QoJHBh Z2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRwYWdlcG9zIGFzICRwYWdlaXRlbSkgew0K CQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJheSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxsb3dlZCkp ID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NBbGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJLy8gb25j aGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9fbGlzdCgkb25jaGFuZ2UsICRk ZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9PSAiIikgPyBhcnJheSgpIDog JG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSAkcmVzZXRGb3JtcyA9IGFycmF5KCk7DQoJZm9y ZWFjaCAoJG9uY2hhbmdlIGFzICRyZXNldE9wdCkgew0KCQkkcmVzZXRQYXJ0cyA9IGRvX2xp c3QoJHJlc2V0T3B0LCAkcGFyYW1kZWxpbSk7DQoNCgkJaWYgKGNvdW50KCRyZXNldFBhcnRz KSA+IDEpIHsNCgkJCWlmICgkcmVzZXRQYXJ0c1swXSA9PSAnc21kX2V2ZXJ5Jykgew0KCQkJ CSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF0uJHBhcmFtZGVsaW0uJHJlc2V0UGFydHNbMV1d ID0gIiI7DQoJCQl9IGVsc2Ugew0KCQkJCSRyZXNldEZvcm1zWyRyZXNldFBhcnRzWzBdXSA9 ICRyZXNldFBhcnRzWzFdOw0KCQkJCSRyZXNldE9wdHNbJHJlc2V0UGFydHNbMF1dID0gIiI7 DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkcmVzZXRPcHRzWyRyZXNldFBhcnRzWzBdXSA9ICIi Ow0KCQl9DQoJfQ0KDQoJLy8gRXNjYXBpbmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8g MCA6IDE7DQoJJGVzY2FwZXMgPSBkb19saXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFj aCAoJGVzY2FwZXMgYXMgJGlkeCA9PiAkdmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJ CQl1bnNldCgkZXNjYXBlc1skaWR4XSk7DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBp ZGVudGlmaWVyIGlzIHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1i bmFpbCBwYWdlIGxpbmtzDQoJJGdhbGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcn IHx8IHN1YnN0cigkZ2FsbGVyeWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEg KGZhaXJseSBsaWtlbHkpIHVuaXF1ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJ CSRnYWxsVG1wID0gbWQ1KCRjYXRlZ29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1Ymxl dmVsLiRzb3J0LiRsaW1pdC4kbWF4bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNr aXApID0gZXhwbG9kZSgiOiIsIHN1YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4g PSAgKGVtcHR5KCRnYWxsTGVuKSkgPyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0g IChlbXB0eSgkZ2FsbFNraXApKSA/ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0g MCwgJGNudCA9IDA7ICRjbnQgPCAkZ2FsbExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRn YWxsU2tpcCkgJSBzdHJsZW4oJGdhbGxUbXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRt cFskaWR4XTsNCgkJfQ0KCX0gZWxzZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0N CgkkZ2FsbElEID0gInNtZF9nbHJ5XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5j cmVkaWJseSB1bmxpa2VseSkgbmFtZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUg dmFyaWFibGVzIGZyb20gdGhlIHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1k ZWxpbSBoZXJlIG9yIHRoZSBkZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0g ZG9fbGlzdCgkdGh1bWIsICI6Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsN CgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1 bWJtb2QgPSAidCI7DQoJfSBlbHNlIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9 PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ ICJ0IiA6ICIiOw0KCX0NCg0KCS8vIFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRp ZmZlcnMgaWYgdXNpbmcgZGlyZWN0b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXko KTsNCglpZiAoJGRpcmVjdG9yeSkgew0KCQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVj dG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFs bEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2Uo JHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQg PSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFy cmF5KCk7DQoJCSRmaXhlZE9yZGVyID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBl bHNlIHsNCgkJLy8gUHJvY2VzcyBjYXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1 eCBvZiB0aGUgd2hlcmUgY2xhdXNlLg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0 cyBBTkQgIWNhdHMgQU5EICFJRHMNCgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VP UiA9IGFycmF5KCk7DQoNCgkJLy8gU3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlz dCB3aXRoIHF1b3RlcyBhbmQgbWFrZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0g KCRzdWJsZXZlbCkgPyAiaW1hZ2U6Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMs ICRpZGV4YykgPSBzbWRfZG9MaXN0KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNw Yyk7DQoJCWxpc3QoJGNhdGluYywgJGNhdGV4YykgPSBzbWRfZG9MaXN0KCRjYXRlZ29yeSwg ZmFsc2UsICRzdWJpbmZvLCB0cnVlLCAkZGVsaW0sICRzcGMpOw0KCQlpZiAoJGlkaW5jKSB7 DQoJCQkkY2xhdXNlT1JbXSA9IFBGWC4ndHhwX2ltYWdlLmlkIElOICgnLmltcGxvZGUoIiwi LCAkaWRpbmMpLicpJzsNCgkJfQ0KCQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10g PSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYyku JyknOw0KCQl9DQoJCWlmICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0g JyAoJy5pbXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVz ZSA9IGltcGxvZGUoIiBBTkQgIiwgJGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMp ID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgi LCIsICRjYXRleGMpLicpJyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQg Jy5QRlguJ3R4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJykn IDogJyc7DQoNCgkJLy8gSWYgYSBjYXRlZ29yeS9pZCBvcHRpb24gd2FzIGNob3NlbiBhbmQg dGhleSBtYXRjaGVkIG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNhdGVnb3J5IHRoYXQgc2hvdWxk IG5vdCBleGlzdC4NCgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIHRo ZSBleHBlY3RlZCB0aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBpdCBm aW5kcyBub3RoaW5nLg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1hdGNo KSB7DQoJICAJCSRjbGF1c2UgPSBQRlguJ3R4cF9pbWFnZS5jYXRlZ29yeSA9ICJzbWRfJyAu bXRfcmFuZCgpLiAnIic7DQoJCX0NCg0KCQkkY2xhdXNlID0gJygnLnN0cl9yZXBsYWNlKCdT TURfRU1QVFknLCAnJywgJGNsYXVzZSkuJyknOw0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJ CQllY2hvICIrKyBJTkNMVURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJaWYg KCRpZGluYykgZG1wKCRpZGluYyk7DQoJCQlpZiAoJGlkZXhjKSBkbXAoJGlkZXhjKTsNCgkJ CWlmICgkY2F0aW5jKSBkbXAoJGNhdGluYyk7DQoJCQlpZiAoJGNhdGV4YykgZG1wKCRjYXRl eGMpOw0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGFzcGVjdCByYXRpbw0KCQlpZiAoJGFzcGVj dCkgew0KCQkJJGFzcGVjdHMgPSBkb19saXN0KCRhc3BlY3QsICRkZWxpbSk7DQoNCgkJCS8v IENvbXBhcmUgZnVsbHNpemUgb3IgdGh1bWJuYWlsIGFzcGVjdCByYXRpb3MNCgkJCSRmbGRt b2QgPSAoJGZ1bGxtb2QpID09ICd0JyA/ICd0aHVtYl8nIDogJyc7DQoJCQkkd2ZsZCA9IFBG WC4ndHhwX2ltYWdlLicuJGZsZG1vZC4ndyc7DQoJCQkkaGZsZCA9IFBGWC4ndHhwX2ltYWdl LicuJGZsZG1vZC4naCc7DQoNCgkJCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoJCQlmb3JlYWNo ICgkYXNwZWN0cyBhcyAkcmF0aW8pIHsNCgkJCQlzd2l0Y2goJHJhdGlvKSB7DQoJCQkJCWNh c2UgJ3BvcnRyYWl0JzoNCgkJCQkJCSRjbGF1c2VPUltdID0gJGhmbGQuICcgPiAnLiAkd2Zs ZDsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICdsYW5kc2NhcGUnOg0KCQkJCQkJJGNsYXVz ZU9SW10gPSAkd2ZsZC4gJyA+ICcuICRoZmxkOw0KCQkJCQkJYnJlYWs7DQoJCQkJCWNhc2Ug J3NxdWFyZSc6DQoJCQkJCQkkY2xhdXNlT1JbXSA9ICRoZmxkLiAnID0gJy4gJHdmbGQ7DQoJ CQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoIWVtcHR5KCRjbGF1c2VPUikpIHsN CgkJCQkkY2xhdXNlIC49ICcgQU5EICcuJHdmbGQuJyA+IDAgQU5EICcuJGhmbGQuJyA+IDAg QU5EICgnLmltcGxvZGUoIiBPUiAiLCAkY2xhdXNlT1IpLicpICc7DQoJCQl9DQoJCX0NCg0K CQkvLyBGaWx0ZXIgYnkgYXV0aG9yDQoJCWlmICgkYXV0aG9yKSB7DQoJCQkkYXV0aG9ycyA9 IGRvX2xpc3QoJGF1dGhvciwgJGRlbGltKTsNCgkJCSRjbGF1c2UgLj0gIiBBTkQgIiAuIFBG WC4idHhwX2ltYWdlLmF1dGhvciBJTiAoJyIuaW1wbG9kZSgiJywnIiwgJGF1dGhvcnMpLiIn KSI7DQoJCX0NCg0KCQkvLyBGaWx0ZXIgYnkgZXh0ZW5zaW9uDQoJCWlmICgkZXh0ZW5zaW9u KSB7DQoJCQkkZXh0ZW5zaW9ucyA9IGRvX2xpc3QoJGV4dGVuc2lvbiwgJGRlbGltKTsNCgkJ CWZvcmVhY2ggKCRleHRlbnNpb25zIGFzICRpZHggPT4gJGV4dCkgew0KCQkJCSRleHRlbnNp b25zWyRpZHhdID0gIi4iLiRleHQ7DQoJCQl9DQoJCQkkY2xhdXNlIC49ICIgQU5EICIgLiBQ RlguInR4cF9pbWFnZS5leHQgSU4gKCciLmltcGxvZGUoIicsJyIsICRleHRlbnNpb25zKS4i JykiOw0KCQl9DQoNCgkJLy8gRmlsdGVyIGJ5IGRpbWVuc2lvbnMNCgkJaWYgKCRkaW1lbnNp b25zKSB7DQoJCQkkZGltQWxsb3cgPSBhcnJheSgnPScsICc+JywgJzwnLCAnPj0nLCAnPD0n KTsNCgkJCSRkaW1zID0gZG9fbGlzdCgkZGltZW5zaW9ucywgJGRlbGltKTsNCg0KCQkJLy8g Q29tcGFyZSBmdWxsc2l6ZSBvciB0aHVtYm5haWwgYXNwZWN0IHJhdGlvcw0KCQkJJGZsZG1v ZCA9ICgkZnVsbG1vZCkgPT0gJ3QnID8gJ3RodW1iXycgOiAnJzsNCgkJCSR3ZmxkID0gUEZY Lid0eHBfaW1hZ2UuJy4kZmxkbW9kLid3JzsNCgkJCSRoZmxkID0gUEZYLid0eHBfaW1hZ2Uu Jy4kZmxkbW9kLidoJzsNCg0KCQkJJHdkaW0gPSAkZGltc1swXTsNCgkJCSRoZGltID0gKGlz c2V0KCRkaW1zWzFdKSkgPyAkZGltc1sxXSA6ICcnOw0KDQoJCQkkd2RpbXZhbCA9IHByZWdf cmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHdkaW0pOw0KCQkJJGhkaW12YWwgPSBwcmVnX3Jl cGxhY2UoJy9bXjAtOV0vJywgJycsICRoZGltKTsNCgkJCSR3ZGltb3AgPSBwcmVnX3JlcGxh Y2UoJy9bMC05XS8nLCAnJywgJHdkaW0pOw0KCQkJJHdkaW1vcCA9IGluX2FycmF5KCR3ZGlt b3AsICRkaW1BbGxvdykgPyAkd2RpbW9wIDogJz0nOw0KCQkJJGhkaW1vcCA9IHByZWdfcmVw bGFjZSgnL1swLTldLycsICcnLCAkaGRpbSk7DQoJCQkkaGRpbW9wID0gaW5fYXJyYXkoJGhk aW1vcCwgJGRpbUFsbG93KSA/ICRoZGltb3AgOiAnPSc7DQoJCQkkY2xhdXNlIC49ICgoJHdk aW0pID8gJyBBTkQgJyAuICR3ZmxkIC4gJHdkaW1vcCAuICR3ZGltdmFsIDogJycpIC4gKCgk aGRpbSkgPyAnIEFORCAnIC4gJGhmbGQgLiAkaGRpbW9wIC4gJGhkaW12YWwgOiAnJyk7DQoJ CX0NCg0KCQkvLyBDb252ZXJ0IHRoZSBzb3J0IGludG8gYSB2YWxpZCBzb3J0aW5nIGhpZXJh cmNoeS4NCgkJLy8gTm90ZSB0aGF0IHJhbmRvbSBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgdGhl IGZvbGxvd2luZyBydWxlcyBhcHBseToNCgkJLy8gIDEpIEFueXRoaW5nIGFwcGVhcmluZyBi ZWZvcmUgcmFuZG9tIGlzIHBhc3NlZCB0byB0aGUgZGF0YWJhc2UgcXVlcnkgZm9yIG9yZGVy aW5nDQoJCS8vICAyKSBBcyBzb29uIGFzIHJhbmRvbSBpcyBlbmNvdW50ZXJlZCwgdGhlIHJl c3Qgb2YgdGhlIHNvcnQgc3RyaW5nIGlzIGlnbm9yZWQuDQoJCS8vICAgICBUaGUgcmVzdWx0 c2V0IHdpbGwgYmUgc29ydGVkIHJhbmRvbWx5IGluc3RlYWQNCgkJLy8gIDMpIElmIHJhbmRv bSBhcHBlYXJzIGZpcnN0IGluIHRoZSBsaXN0LCB0aGUgZGF0YSBpcyByZXRyaWV2ZWQgcmFu ZG9tbHkgdGhlbiB0aGUNCgkJLy8gICAgIHJlbWFpbmluZyBvcHRpb25zIHNvcnQgdGhlIHJl c3VsdHNldA0KCQkkY2xhdXNlU29ydCA9IGFycmF5KCk7DQoJCSRwb3N0T3JkZXIgPSBhcnJh eSgpOw0KCQkkcnVsZSA9ICJzcWwiOw0KCQkkcG9zdFByZWZpeCA9ICJTT1JUXyI7DQoJCSRm aXhlZE9yZGVyID0gJHJhbmRzb3J0ID0gZmFsc2U7DQoJCSRzb3J0ID0gZG9fbGlzdCgkc29y dCwgJGRlbGltKTsNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRzb3J0KTsgJGlk eCsrKSB7DQoJCQkkc29ydF9kaXIgPSBleHBsb2RlKCcgJywgJHNvcnRbJGlkeF0pOw0KCQkJ JGRpcmVjdGlvbiA9ICRjb2xSZWYgPSAnJzsNCgkJCWlmIChjb3VudCgkc29ydF9kaXIpIDw9 IDEpIHsNCgkJCQkkc29ydF9kaXJbMV0gPSAiYXNjIjsNCgkJCX0NCgkJCWlmICgkcnVsZSA9 PSAic3FsIikgew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFdID09ICJkZXNjIikg PyAnIGRlc2MnIDogJyBhc2MnOw0KCQkJfSBlbHNlIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRz b3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJHBvc3RQcmVmaXguJ0RFU0MnIDogJHBvc3RQcmVm aXguJ0FTQyc7DQoJCQl9DQoNCgkJCXN3aXRjaCAoJHNvcnRfZGlyWzBdKSB7DQoJCQkJY2Fz ZSAncmFuZG9tJzoNCgkJCQkJJHJ1bGUgPSAicG9zdCI7DQoJCQkJCWlmICgkaWR4ID09IDAp IHsNCgkJCQkJCSRjbGF1c2VTb3J0W10gPSAncmFuZCgpJzsNCgkJCQkJfSBlbHNlIHsNCgkJ CQkJCSRyYW5kc29ydCA9IHRydWU7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAn Zml4ZWQnOg0KCQkJCQkvLyAnZml4ZWQnIG9ubHkgd29ya3Mgb24gaWRzIG9yIGNhdGVnb3Jp ZXMNCgkJCQkJJGZpeGVkT3JkZXIgPSAoJGlkID09ICcnICYmICRjYXRlZ29yeSA9PSAnJykg PyBmYWxzZSA6IHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjb2xS ZWYgPSBhcnJheV9zZWFyY2goJHNvcnRfZGlyWzBdLCAkZmllbGRNYXApOw0KCQkJCQkkY29s TmFtZSA9ICRmaWVsZE1hcFskY29sUmVmXTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiAo JHJ1bGUgPT0gInNxbCIpIHsNCgkJCQlpZiAoJGNvbFJlZiAhPSAnJykgew0KCQkJCQkkY2xh dXNlU29ydFtdID0gJGNvbFJlZi4kZGlyZWN0aW9uOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJ CQkJaWYgKCEkcmFuZHNvcnQpIHsNCgkJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJ CSRwb3N0T3JkZXJbXSA9IGFycmF5KCJjb2wiID0+ICRjb2xOYW1lLCAic29ydCIgPT4gJGRp cmVjdGlvbik7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoY291bnQoJGNs YXVzZVNvcnQpID4gMCkgew0KCQkJJGNsYXVzZSAuPSAnIE9SREVSIEJZICcgLiBpbXBsb2Rl KCIsIiwkY2xhdXNlU29ydCk7DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCWVjaG8g IisrIFdIRVJFIENMQVVTRSArKyI7DQoJCQlkbXAoJGNsYXVzZSk7DQoJCX0NCgkJLy8gVGhl IGRhdGFiYXNlIGZpZWxkcyByZXF1aXJlZA0KCQkkZmllbGRzID0gaW1wbG9kZSgiLCIsIGFy cmF5X2tleXMoJGZpZWxkTWFwKSk7DQoJCSRjVGl0bGUgPSAoaXNzZXQoJGwxMG5fbGFuZ3Vh Z2VbJ2xvbmcnXSkpID8gX2wxMG5fbWFrZV9maWVsZF9uYW1lKCd0aXRsZScsICR0aGlzbGFu ZykgOiAndGl0bGUnOw0KDQoJCSRycyA9IGdldFJvd3MoIg0KCQkJU0VMRUNUIERJU1RJTkNU ICRmaWVsZHMsICIuUEZYLiJ0eHBfY2F0ZWdvcnkuIi4kY1RpdGxlLiIgQVMgY2F0ZWdvcnlf dGl0bGUNCgkJCUZST00gIi5QRlguInR4cF9pbWFnZSBMRUZUIEpPSU4gIi5QRlguInR4cF9j YXRlZ29yeQ0KCQkJT04gIi5QRlguInR4cF9pbWFnZS5jYXRlZ29yeSA9ICIuUEZYLiJ0eHBf Y2F0ZWdvcnkubmFtZQ0KCQkJV0hFUkUgJGNsYXVzZQ0KCQkJTElNSVQgMCwgJG1heGxpbWl0 DQoJCSIsICRkZWJ1Zyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBh Z2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZz ZXQsICRwYWdpbmcpOw0KCX0NCg0KDQoJLy8gSXMgcG9zdC1vcmRlcmluZyByZXF1aXJlZD8g RG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNodWZmbGUoJHJzKTsNCgl9IGVsc2UgaWYg KGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkvLyBUcmFuc2xhdGUgdGhlIHJvd3MgaW50 byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0KCQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ ICRyb3cpIHsNCgkJCWZvcmVhY2ggKCRyb3cgYXMgJGlkZW50aWZpZXIgPT4gJGl0ZW0pIHsN CgkJCQkkdmFybmFtZSA9ICJjb2xfIi4kaWRlbnRpZmllcjsNCgkJCQkkeyR2YXJuYW1lfVsk a2V5XSA9ICRpdGVtOw0KCQkJfQ0KCQl9DQoNCgkJLy8gTWFrZSB1cCBhbiBhcnJheV9tdWx0 aXNvcnQgYXJnIGxpc3QgYW5kIGV4ZWN1dGUgaXQuDQoJCS8vIFRoZSBuZWNlc3NhcnkgZXZp bCgpIGlzIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueSBjb2xzIHRoZXJlIHdpbGwg YmUgaW4gdGhlIGFycmF5DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9y ZGVyKTsgJGlkeCsrKSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclsk aWR4XVsnY29sJ107DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQn XTsNCgkJfQ0KCQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwk c29ydGFyZ3MpLicsICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBm aXhlZC1vcmRlciBvdXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglp ZiAoJGZpeGVkT3JkZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVM aXN0ID0gQXJyYXkoKTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCg0KCQkvLyBTdWNr IG91dCB0aGUgZml4ZWQgaXRlbXMgZmlyc3QuIElEcyB0aGVuIGNhdGVnb3JpZXMNCgkJZm9y ICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRpZGluYyk7ICRpZHgrKykgew0KCQkJZm9yZWFj aCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgkaWQgJiYgZG9RdW90ZSgkcm93WydpZCddKSA9 PSAkaWRpbmNbJGlkeF0pIHsNCgkJCQkJJG9yZGVyZWRSU1tdID0gJHJvdzsNCgkJCQkJJGln bm9yZUxpc3RbXSA9ICRyb3dbJ2lkJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJ fQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGNhdGluYyk7ICRpZHgrKykgew0K CQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgkY2F0ZWdvcnkgJiYgZG9RdW90 ZSgkcm93WydjYXRlZ29yeSddKSA9PSAkY2F0aW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVk UlNbXSA9ICRyb3c7DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCX0N CgkJCX0NCgkJfQ0KCQkvLyBUYWNrIG9uIHRoZSByZW1haW5pbmcgcm93cw0KCQlpZiAoJHJz KSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCFpbl9hcnJheSgkcm93 WydpZCddLCAkaWdub3JlTGlzdCkpIHsNCgkJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0K CQkJCX0NCgkJCX0NCgkJfQ0KCQkkcnMgPSBhcnJheV9tZXJnZSgkb3JkZXJlZFJTLCAkcmVt YWluaW5nUlMpOw0KCX0NCg0KCS8vIEdyYWIgdGhlIHBvcnRpb24gb2YgdGhlIHJlY29yZCBz ZXQgYWN0dWFsbHkgcmVxdWlyZWQgdG8gaXRlcmF0ZSBvdmVyDQoJaWYgKCRycykgew0KCQkk cnMgPSBhcnJheV9zbGljZSgkcnMsICRvZmZzZXQsICgoJGRpcmVjdG9yeSkgPyAkZGlybGlt aXQgOiAoKCRsaW1pdD09MCkgPyAkbWF4bGltaXQgOiAkbGltaXQpKSk7DQoJfQ0KDQoJLy8g UHJlcGFyZSBmaXhlZCB0aHVtYnNpemVzDQoJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQg PSAnJzsNCgkkdGh1bWJXVW5pdHMgPSAkdGh1bWJIVW5pdHMgPSAnJzsNCglpZiAoJHRodW1i c2l6ZSkgew0KCQkkdGh1bWJTaXplcyA9IGRvX2xpc3QoJHRodW1ic2l6ZSwgJGRlbGltKTsN CgkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICR0aHVtYlNpemVzWzBd KTsNCgkJaWYgKGNvdW50KCR0aHVtYlNpemVzKSA9PSAxKSB7DQoJCQkkdGh1bWJXaWR0aCA9 ICR0aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1iU2l6 ZXNbMF0pOw0KCQkJJHRodW1iV1VuaXRzID0gJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAn JykgPyAkdGh1bWJXVW5pdHMgOiAkdW5pdHM7DQoJCX0gZWxzZSB7DQoJCQkkdGh1bWJXaWR0 aCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJ JHRodW1iSGVpZ2h0ID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkdGh1bWJTaXpl c1sxXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYldpZHRo ICE9ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IHByZWdfcmVw bGFjZSgnL1swLTldLycsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdGh1bWJIVW5pdHMg PSAoJHVuaXRzID09ICcnICYmICR0aHVtYkhlaWdodCAhPSAnJykgPyAkdGh1bWJIVW5pdHMg OiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBQcmVwYXJlIGZpeGVkIGltYWdlIHNpemVzDQoJ JGltYWdlV2lkdGggPSAkaW1hZ2VIZWlnaHQgPSAnJzsNCgkkaW1hZ2VXVW5pdHMgPSAkaW1h Z2VIVW5pdHMgPSAnJzsNCglpZiAoJGltZ3NpemUpIHsNCgkJJGltYWdlU2l6ZXMgPSBkb19s aXN0KCRpbWdzaXplLCAkZGVsaW0pOw0KCQkkdW5pdHMgPSBwcmVnX3JlcGxhY2UoJy9bMC05 XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQlpZiAoY291bnQoJGltYWdlU2l6ZXMpID09 IDEpIHsNCgkJCSRpbWFnZVdpZHRoID0gJGltYWdlSGVpZ2h0ID0gcHJlZ19yZXBsYWNlKCcv W14wLTldLycsICcnLCAkaW1hZ2VTaXplc1swXSk7DQoJCQkkaW1hZ2VXVW5pdHMgPSAkaW1h Z2VIVW5pdHMgPSAoJHVuaXRzID09ICcnKSA/ICRpbWFnZVdVbml0cyA6ICR1bml0czsNCgkJ fSBlbHNlIHsNCgkJCSRpbWFnZVdpZHRoID0gcHJlZ19yZXBsYWNlKCcvW14wLTldLycsICcn LCAkaW1hZ2VTaXplc1swXSk7DQoJCQkkaW1hZ2VIZWlnaHQgPSBwcmVnX3JlcGxhY2UoJy9b XjAtOV0vJywgJycsICRpbWFnZVNpemVzWzFdKTsNCgkJCSRpbWFnZVdVbml0cyA9ICgkdW5p dHMgPT0gJycgJiYgJGltYWdlV2lkdGggIT0gJycpID8gJGltYWdlV1VuaXRzIDogJHVuaXRz Ow0KCQkJJHVuaXRzID0gcHJlZ19yZXBsYWNlKCcvWzAtOV0vJywgJycsICRpbWFnZVNpemVz WzFdKTsNCgkJCSRpbWFnZUhVbml0cyA9ICgkdW5pdHMgPT0gJycgJiYgJGltYWdlSGVpZ2h0 ICE9ICcnKSA/ICRpbWFnZUhVbml0cyA6ICR1bml0czsNCgkJfQ0KCX0NCg0KCS8vIENvbGxh dGlvbiBkZWZlcnMgcGFyc2luZyB0aGUgZm9ybSBmb3IgZWFjaCByZXR1cm5lZCBpdGVtLg0K CS8vIEluc3RlYWQgaXQgb3V0cHV0cyB0aGUgZGF0YSBhcyBhIGxpc3QgYXQgdGhlIGVuZCAo aXRlbXMgbWF5IGJlIGluZGl2aWR1YWxseSBxdW90ZWQgb3IgZXh0cmFjdGVkIGlmIHJlcXVp cmVkKQ0KCS8vVE9ETyA6IEFkZCBBTFdBWVMgc3dpdGNoIGFzIGEgc2hvcnRjdXQgdG8gc3Bl Y2lmeSB0aGF0IGFsbCBtYXRjaGluZyBpdGVtcyAocmVnYXJkbGVzcyBvZiAjMSwgIzIsICMz IGV0YykgYXJlIHRvIGJlIHF1b3RlZA0KCWlmICgkY29sbGF0ZSkgew0KCQkkZGJsUXVvdGUg PSAkc2dsUXVvdGUgPSBhcnJheSgnU01ETk9ORScpOw0KCQkkY29sbGF0ZU9wdHMgPSBkb19s aXN0KCRjb2xsYXRlLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29sbGF0ZU9wdHMgYXMgJG9w dGlvbikgew0KCQkJJGluZGV4ZXMgPSBkb19saXN0KCRvcHRpb24sICRwYXJhbWRlbGltKTsN CgkJCSRjb2xUeXBlID0gYXJyYXlfc2hpZnQoJGluZGV4ZXMpOw0KCQkJLy8gU3VwcGx5aW5n ICdxdW90ZScgb24gaXRzIG93biB3aWxsIGVtcHR5IHRoZSByZWxldmFudCBhcnJheSwgaW1w bHlpbmcgIkFMTCIgZmllbGRzIGFyZSB0byBiZSBxdW90ZWQNCgkJCXN3aXRjaCAoJGNvbFR5 cGUpIHsNCgkJCQljYXNlICJzZ2xxdW90ZSI6DQoJCQkJCSRzZ2xRdW90ZSA9ICRpbmRleGVz Ow0KCQkJCQlicmVhazsNCgkJCQljYXNlICJkYmxxdW90ZSI6DQoJCQkJY2FzZSAicXVvdGUi Og0KCQkJCQkkZGJsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0N Cgl9DQoNCgkvLyBDb21ib3MgYXJlIHVzZXItZGVmaW5lZCBjb21iaW5hdGlvbnMgb2YgcmVw bGFjZW1lbnQgbW9kaWZpZXJzIChlLmcuIGlkZXh0OiB7aWR9e2V4dH0sIC4uLg0KCSRjb21i b3MgPSBhcnJheSgpOw0KCWlmICgkY29tYm8pIHsNCgkJJGNvbWJvID0gZG9fbGlzdCgkY29t Ym8sICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRjb21ibyBhcyAkbmV3RGVmKSB7DQoJCQlsaXN0 KCRkZWZQYXJ0cywgJHVud2FudGVkKSA9IHNtZF9kb0xpc3QoJG5ld0RlZiwgZmFsc2UsICcn LCBmYWxzZSwgJHBhcmFtZGVsaW0sICRzcGMpOw0KCQkJJGRlZk5hbWUgPSAieyIuYXJyYXlf c2hpZnQoJGRlZlBhcnRzKS4ifSI7DQoJCQkkY29tYm9zWyRkZWZOYW1lXSA9ICRkZWZQYXJ0 c1swXTsNCgkJfQ0KCX0NCglpZiAoJGRlYnVnID4gMSkgew0KCQllY2hvICIrKyBDT01CT3Mg KysiOw0KCQlkbXAoJGNvbWJvcyk7DQoJfQ0KCS8vIENvbnN0cnVjdCB0aGUgb3V0cHV0DQoJ JHRodW1ib3V0ID0gYXJyYXkoKTsNCgkkZ3JvdXBvdXQgPSBhcnJheSgpOw0KCSRuYXZvdXQg PSBhcnJheSgpOw0KCSRvdXQgPSBhcnJheSgpOw0KCSRjb2xsYXRpb25zID0gYXJyYXkoKTsN CgkkY2hJZGVudGlmaWVyID0gIm9uY2hhbmdlIjsNCg0KCWlmICgkZGVidWcgPiAyKSB7DQoJ CWVjaG8gIisrIFJFQ09SRCBTRVQgKysiOw0KCQlkbXAoJHJzKTsNCgl9DQoJaWYgKCRkZWJ1 ZyA+IDMpIHsNCgkJZWNobyAiKysgQVZBSUxBQkxFICc/JyBWQVJTICsrIjsNCgkJaWYgKCRw cmV0ZXh0KSBkbXAoJHByZXRleHQpOw0KCQlpZiAoJHRoaXNhcnRpY2xlKSBkbXAoJHRoaXNh cnRpY2xlKTsNCgl9DQoNCglpZigkcnMpIHsNCgkJJGlkeCA9IDA7DQoJCSRjdHIgPSAxOw0K CQkkdGh1bWJJZHggPSAwOw0KCQkkdGh1bWJDdHIgPSAxOw0KCQkkbnVtSW1hZ2VzID0gY291 bnQoJHJzKTsNCgkJJHJlcGFnZW1lbnRzID0gYXJyYXkoKTsNCg0KCQkvLyBTZXQgdXAgdGhl IHBhZ2luZyBmZWF0dXJlcyBpZiByZXF1aXJlZA0KCQlpZiAoKCRsaW1pdCA+IDApICYmICRw YWdpbmcpIHsNCgkJCSRuZXh0ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlICE9ICRu dW1QYWdlcyk7DQoJCQkkcHJldiA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSA+IDEp Ow0KCQkJJHByZXZQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSdd LCAkZ2FsbElELCAkdGh1bVBhZ2UtMSk7DQoJCQkkbmV4dFBhZ2UgPSBzbWRfYWRkUVNWYXIo JHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSsxKTsNCgkJCSR0 aGlzUGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJ RCwgJHRodW1QYWdlKTsNCgkJCSRmaXJzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRb J3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsIDEpOw0KCQkJJGxhc3RQYWdlID0gc21kX2FkZFFT VmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkbnVtUGFnZXMpOw0KDQoJ CQkvLyBMYWJlbHMgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgcmVwbGFjZW1lbnQgdGFnIGFm dGVyIGEgcGFyYW1kZWxpbS4NCgkJCS8vICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBkb24ndCBo YXZlIGxhYmVscy4gQW55dGhpbmcgc3BlY2lmaWVkIGFmdGVyIHBhcmFtZGVsaW0gaXMgdGhl IG1heCBudW1iZXIgb2YgcGFnZXMgdG8gc2hvdzsgZW1wdHkgPSBhbGwgcGFnZXMNCgkJCSRs YWJlbCA9IGFycmF5KA0KCQkJCQkne25hdmZpcnN0fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4 dCgnbmF2Zmlyc3QnKSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4 dCgnbmF2cHJldicpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZ0 aGlzfScgPT4gJHRodW1QYWdlLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiAkdGh1bVBhZ2Us DQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZuZXh0fScgPT4gJHNtZF9n YWxsTGFuZy0+Z1R4dCgnbmF2bmV4dCcpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAkc21kX2dh bGxMYW5nLT5nVHh0KCduYXZsYXN0JyksDQoJCQkJKTsNCg0KCQkJJGxhYmVsUkUgPSAnL1x7 KG5hdlthLXpdKyknLiRwYXJhbWRlbGltLicoLis/KVx9Lyc7DQoJCQkkbnVtTGFiZWxzID0g cHJlZ19tYXRjaF9hbGwoJGxhYmVsUkUsICRwYWdlZm9ybSwgJGxhYmVscyk7DQoNCgkJCWZv ciAoJGxhYmVsQ3RyID0gMDsgJGxhYmVsQ3RyIDwgJG51bUxhYmVsczsgJGxhYmVsQ3RyKysp IHsNCgkJCQkkZmllbGRuYW1lID0gJ3snLiRsYWJlbHNbMV1bJGxhYmVsQ3RyXS4nfSc7DQoJ CQkJJGxhYmVsWyRmaWVsZG5hbWVdID0gJGxhYmVsc1syXVskbGFiZWxDdHJdOw0KCQkJCSRw YWdlZm9ybSA9IHN0cl9yZXBsYWNlKCRsYWJlbHNbMF1bJGxhYmVsQ3RyXSwgJ3snLiRsYWJl bHNbMV1bJGxhYmVsQ3RyXS4nfScsICRwYWdlZm9ybSk7DQoJCQl9DQoNCgkJCWlmICgkZGVi dWcgPiAxKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIExBQkVMUyArKyI7DQoJCQkJZG1wKCRs YWJlbCk7DQoJCQl9DQoNCgkJCS8vIEdlbmVyYXRlICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBs aXN0cw0KCQkJJG51bUVhcmxpZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2ZWFybGllcn0nXSk7 DQoJCQkkbnVtTGF0ZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2bGF0ZXJ9J10pOw0KCQkJJG51 bUVhcmxpZXIgPSAoJG51bUVhcmxpZXIgJiYgKCR0aHVtUGFnZS0kbnVtRWFybGllciA+IDEp KSA/ICRudW1FYXJsaWVyIDogJHRodW1QYWdlLTE7DQoJCQkkbnVtTGF0ZXIgPSAoJG51bUxh dGVyICYmICgkdGh1bVBhZ2UrJG51bUxhdGVyIDwgJG51bVBhZ2VzKSkgPyAkbnVtTGF0ZXIg OiAkbnVtUGFnZXMtJHRodW1QYWdlOw0KCQkJJG5hdkVhcmxpZXIgPSAkbmF2TGF0ZXIgPSBh cnJheSgpOw0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlLSRudW1FYXJsaWVyOyAkY29kIDwg JHRodW1QYWdlOyAkY29kKyspIHsNCgkJCQkkbmF2RWFybGllcltdID0gJzxhIGhyZWY9Iicu c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4n Ij4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlKzE7ICRj b2QgPD0gJHRodW1QYWdlKyRudW1MYXRlcjsgJGNvZCsrKSB7DQoJCQkJJG5hdkxhdGVyW10g PSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRn YWxsSUQsICRjb2QpLiciPicuJGNvZC4nPC9hPic7DQoJCQl9DQoJCQkkbmF2RWFybGllciA9 IGRvV3JhcCgkbmF2RWFybGllciwgJycsICRuYXZicmVhaywgJycpOw0KCQkJJG5hdkxhdGVy ID0gZG9XcmFwKCRuYXZMYXRlciwgJycsICRuYXZicmVhaywgJycpOw0KDQoJCQkvLyBNYWtl IHVwIHRoZSByZXBhZ2VtZW50cyBhcnJheSBmb3IgcGFnZWZvcm0NCgkJCSRyZXBhZ2VtZW50 cyA9IGFycmF5KA0KCQkJCQkne25hdmZpcnN0fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEg aHJlZj0iJy4kZmlyc3RQYWdlLiciPicuJGxhYmVsWyd7bmF2Zmlyc3R9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2Zmlyc3R9J10sICRuYXZicmVhaywgJGVt cHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEg aHJlZj0iJy4kcHJldlBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZwcmV2fSddLic8L2E+JywgJG5h dmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdnByZXZ9J10sICRuYXZicmVhaywgJGVtcHR5 Y2xhc3MpKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJG5hdkVhcmxpZXIsDQoJCQkJCSd7 bmF2dGhpc30nID0+IGRvVGFnKCRsYWJlbFsne25hdnRoaXN9J10sICRuYXZicmVhaywgJ2N1 cnJlbnQgJy4kZW1wdHljbGFzcyksDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+IGRvVGFnKCc8 YSBocmVmPSInLiR0aGlzUGFnZS4nIj4nLiRsYWJlbFsne25hdnRoaXN1cmx9J10uJzwvYT4n LCAkbmF2YnJlYWssICdjdXJyZW50JyksDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAkbmF2TGF0 ZXIsDQoJCQkJCSd7bmF2bmV4dH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9Iicu JG5leHRQYWdlLiciPicuJGxhYmVsWyd7bmF2bmV4dH0nXS4nPC9hPicsICRuYXZicmVhaykg OiBkb1RhZygkbGFiZWxbJ3tuYXZuZXh0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSks DQoJCQkJCSd7bmF2bGFzdH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9IicuJGxh c3RQYWdlLiciPicuJGxhYmVsWyd7bmF2bGFzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBk b1RhZygkbGFiZWxbJ3tuYXZsYXN0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJ CQkJCSd7bmF2dGhpc3BhZ2V1cmx9JyA9PiAkdGhpc1BhZ2UsDQoJCQkJCSd7bmF2bmV4dHBh Z2V1cmx9JyA9PiAoKCRuZXh0KSA/ICRuZXh0UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZwcmV2 cGFnZXVybH0nID0+ICgoJHByZXYpID8gJHByZXZQYWdlIDogJycpLA0KCQkJCQkne25hdmZp cnN0cGFnZXVybH0nID0+ICRmaXJzdFBhZ2UsDQoJCQkJCSd7bmF2bGFzdHBhZ2V1cmx9JyA9 PiAkbGFzdFBhZ2UsDQoJCQkJCSd7dG90YWxpbWFnZXN9JyA9PiAkbnVtSW1hZ2VzLA0KCQkJ CQkne3RvdGFscGFnZXN9JyA9PiAkbnVtUGFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScgPT4g JGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkJLy8gUGVyZm9ybSBlc2NhcGluZyBoZXJlLCBq dXN0IHByaW9yIHRvIG91dHB1dA0KCQkJCWlmICgkZXNjYXBlcykgew0KCQkJCQlmb3JlYWNo ICgkcmVwYWdlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQkJaWYgKGlu X2FycmF5KHRyaW0oJGRlZk5hbWUsICJ7fSIpLCAkZXNjYXBlcykpIHsNCgkJCQkJCQkkcmVw YWdlbWVudHNbJGRlZk5hbWVdID0gaHRtbHNwZWNpYWxjaGFycygkZGVmVmFsLCBFTlRfUVVP VEVTKTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCS8vIFBlcmZvcm0gdGhlIHN1 YnN0aXR1dGlvbnMNCgkJCQkkbmF2b3V0W10gPSBwYXJzZShzdHJ0cigkcGFnZWZvcm0sICRy ZXBhZ2VtZW50cykpOw0KCQl9DQoNCgkJLy8gRm9yIGV2ZXJ5IGltYWdlIGluIHRoZSBnYWxs ZXJ5Li4uDQoJCWZvcmVhY2goJHJzIGFzICRrZXkgPT4gJHJvdykgew0KCQkJaWYgKCRkaXJl Y3RvcnkpIHsNCgkJCQkkdXJsUGF0aCA9ICRyb3dbJ3BhdGgnXS4nLyc7DQoJCQl9IGVsc2Ug ew0KCQkJCSR1cmxQYXRoID0gaHUuJGltZ19kaXIuJy8nOw0KCQkJfQ0KCQkJJHRoZVRodW1i ID0gJHVybFBhdGggLiAkcm93WydpZCddIC4gJHRodW1ibW9kIC4gJHJvd1snZXh0J107DQoJ CQkkZnVsbFNpemUgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAkZnVsbG1vZCAuJHJvd1sn ZXh0J107DQoNCgkJCS8vIERvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRodW1iIGNvdW50ZXIg dGhpcyB0aW1lPw0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJl c2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBvcygkcmVzZXRPcHQsICdzbWRfZXZlcnknKSA9PT0g MCkgew0KCQkJCQkkaXRlciA9IGV4cGxvZGUoJHBhcmFtZGVsaW0sICRyZXNldE9wdCk7DQoJ CQkJCSRpdGVyID0gKGNvdW50KCRpdGVyKSA+IDEpID8gJGl0ZXJbMV0gOiAwOw0KCQkJCQlp ZiAoJHRodW1iSWR4ICUgJGl0ZXIgPT0gMCkgew0KCQkJCQkJJHRodW1iSWR4ID0gMDsNCgkJ CQkJCSR0aHVtYkN0ciA9IDE7DQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKCRyb3dbJHJlc2V0 T3B0XSAhPSAkcmVzZXRWYWwpIHsNCgkJCQkJJHRodW1iSWR4ID0gMDsNCgkJCQkJJHRodW1i Q3RyID0gMTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBPdmVycmlkZSB0 aHVtYnNpemUgLyBpbWdzaXplIGlmIHJlcXVpcmVkDQoJCQlpZiAoJHRodW1ic2l6ZSkgew0K CQkJCSR0aGVUaHVtYldpZHRoID0gZW1wdHkoJHRodW1iV2lkdGgpID8gJHJvd1sndGh1bWJf dyddIDogJHRodW1iV2lkdGg7DQoJCQkJJHRoZVRodW1iSGVpZ2h0ID0gZW1wdHkoJHRodW1i SGVpZ2h0KSA/ICRyb3dbJ3RodW1iX2gnXSA6ICR0aHVtYkhlaWdodDsNCgkJCQkkdGhlVGh1 bWJXVW5pdHMgPSAkdGh1bWJXVW5pdHM7DQoJCQkJJHRoZVRodW1iSFVuaXRzID0gJHRodW1i SFVuaXRzOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGhlVGh1bWJXaWR0aCA9ICRyb3dbJ3RodW1i X3cnXTsNCgkJCQkkdGhlVGh1bWJIZWlnaHQgPSAkcm93Wyd0aHVtYl9oJ107DQoJCQkJJHRo ZVRodW1iV1VuaXRzID0gJHRoZVRodW1iSFVuaXRzID0gJyc7DQoJCQl9DQoNCgkJCWlmICgk aW1nc2l6ZSkgew0KCQkJCSR0aGVJbWFnZVdpZHRoID0gZW1wdHkoJGltYWdlV2lkdGgpID8g JHJvd1sndyddIDogJGltYWdlV2lkdGg7DQoJCQkJJHRoZUltYWdlSGVpZ2h0ID0gZW1wdHko JGltYWdlSGVpZ2h0KSA/ICRyb3dbJ2gnXSA6ICRpbWFnZUhlaWdodDsNCgkJCQkkdGhlSW1h Z2VXVW5pdHMgPSAkaW1hZ2VXVW5pdHM7DQoJCQkJJHRoZUltYWdlSFVuaXRzID0gJGltYWdl SFVuaXRzOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGhlSW1hZ2VXaWR0aCA9ICRyb3dbJ3cnXTsN CgkJCQkkdGhlSW1hZ2VIZWlnaHQgPSAkcm93WydoJ107DQoJCQkJJHRoZUltYWdlV1VuaXRz ID0gJHRoZUltYWdlSFVuaXRzID0gJyc7DQoJCQl9DQoNCgkJCS8vIENvbnN0cnVjdCB0aGUg cmVwbGFjZW1lbnQgYXJyYXkNCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tp ZH0nID0+ICRyb3dbJ2lkJ10sDQoJCQkJCSd7bmFtZX0nID0+ICRyb3dbJ25hbWUnXSwNCgkJ CQkJJ3tleHR9JyA9PiAkcm93WydleHQnXSwNCgkJCQkJJ3tjYXRlZ29yeX0nID0+ICRyb3db J2NhdGVnb3J5J10sDQoJCQkJCSd7Y2F0ZWdvcnlfdGl0bGV9JyA9PiAoKGlzc2V0KCRyb3db J2NhdGVnb3J5X3RpdGxlJ10pKSA/ICRyb3dbJ2NhdGVnb3J5X3RpdGxlJ10gOiAnJyksDQoJ CQkJCSd7YXV0aG9yfScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1bWJ9JyA9 PiAoaXNzZXQoJHJvd1sndGh1bWJuYWlsJ10pID8gJHJvd1sndGh1bWJuYWlsJ10gOiAwKSwN CgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNpemUsDQoJCQkJCSd7dGh1bWJ1cmx9JyA9PiAkdGhl VGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRofScgPT4gJHVybFBhdGgsDQoJCQkJCSd7aW1hZ2Vk ZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNpemUpLA0KCQkJCQkne3RodW1iZGVmfScgPT4gYmFz ZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJJ3thbHR9JyA9PiAkcm93WydhbHQnXSwNCgkJCQkJ J3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRpb24nXSwNCgkJCQkJJ3tjYXB0aW9ufScgPT4gJHJv d1snY2FwdGlvbiddLA0KCQkJCQkne3RodW1id2lkdGh9JyA9PiAkdGhlVGh1bWJXaWR0aCwN CgkJCQkJJ3t0aHVtYmhlaWdodH0nID0+ICR0aGVUaHVtYkhlaWdodCwNCgkJCQkJJ3t0aHVt Ynd1bml0c30nID0+ICR0aGVUaHVtYldVbml0cywNCgkJCQkJJ3t0aHVtYmh1bml0c30nID0+ ICR0aGVUaHVtYkhVbml0cywNCgkJCQkJJ3t3aWR0aH0nID0+ICR0aGVJbWFnZVdpZHRoLA0K CQkJCQkne2hlaWdodH0nID0+ICR0aGVJbWFnZUhlaWdodCwNCgkJCQkJJ3t3dW5pdHN9JyA9 PiAkdGhlSW1hZ2VXVW5pdHMsDQoJCQkJCSd7aHVuaXRzfScgPT4gJHRoZUltYWdlSFVuaXRz LA0KCQkJCQkne2RhdGV9JyA9PiAoKCRmb3JtYXQpID8gc2FmZV9zdHJmdGltZSgkZm9ybWF0 LCBzdHJ0b3RpbWUoJHJvd1snZGF0ZSddKSwgJGdtdCwgJGxhbmcpIDogJHJvd1snZGF0ZSdd KSwNCgkJCQkJJ3tnYWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2luZGV4fScgPT4g JGlkeCwNCgkJCQkJJ3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0aHVtYmluZGV4fScg PT4gJHRodW1iSWR4LA0KCQkJCQkne3RodW1iY291bnRlcn0nID0+ICR0aHVtYkN0ciwNCgkJ CQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScg PT4gJGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkvLyBBZGQgYW55IGN1c3RvbSBjb2x1bW5z DQoJCQlmb3JlYWNoICgkZXh0cmFNYXAgYXMgJGVDb2wgPT4gJGVWYWwpIHsNCgkJCQkkcmVw bGFjZW1lbnRzWyd7Jy4kZVZhbC4nfSddID0gJHJvd1skZUNvbF07DQoJCQl9DQoNCgkJCS8v IEFwcGVuZCBhbnkgY2hhbmdlZCBpdGVtcyB0aGF0IGFyZSByZXF1aXJlZA0KCQkJJGVuZHRh ZyA9IGZhbHNlOw0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJl c2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBvcygkcmVzZXRPcHQsICdzbWRfZXZlcnknKSA9PT0g MCkgew0KCQkJCQkkaXRlciA9IGV4cGxvZGUoJHBhcmFtZGVsaW0sICRyZXNldE9wdCk7DQoJ CQkJCSRpdGVyID0gKGNvdW50KCRpdGVyKSA+IDEpID8gJGl0ZXJbMV0gOiAwOw0KCQkJCQlp ZiAoJHRodW1iQ3RyICUgJGl0ZXIgPT09IDAgfHwgJGN0ciA9PSAkbnVtSW1hZ2VzKSB7DQoJ CQkJCQkkZW5kdGFnID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCSRyZXBs YWNlbWVudHNbJ3snLiRjaElkZW50aWZpZXIuJHBhcmFtZGVsaW0uJHJlc2V0T3B0Lid9J10g PSAoJHRodW1iSWR4ID09IDApID8gKChpc3NldCgkcmVzZXRGb3Jtc1skcmVzZXRPcHRdKSkg PyBzdHJ0cihwYXJzZV9mb3JtKCRyZXNldEZvcm1zWyRyZXNldE9wdF0pLCAkcmVwbGFjZW1l bnRzKSA6IGRvVGFnKCRyb3dbJHJlc2V0T3B0XSwgJG9uY2hhbmdld3JhcHRhZywgJG9uY2hh bmdlY2xhc3MpKSA6ICcnOw0KCQkJCQkvLyBEbyBhIHNuZWFreSAoeXVrKSBsb29rYWhlYWQN CgkJCQkJaWYgKGlzc2V0KCRyc1ska2V5KzFdKSkgew0KCQkJCQkJaWYoJHJzWyRrZXkrMV1b JHJlc2V0T3B0XSAhPSAkcm93WyRyZXNldE9wdF0pIHsNCgkJCQkJCQkkZW5kdGFnID0gdHJ1 ZTsNCgkJCQkJCX0NCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOyAvLyBM YXN0IGltYWdlDQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCSRyZXBsYWNlbWVudHNbJ3tn cm91cHRhZ2VuZH0nXSA9ICgkZ3JvdXB0YWcgJiYgJGVuZHRhZykgPyAnPC8nIC4gJGdyb3Vw dGFnIC4gJz4nIDogJyc7DQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdzdGFydH0nXSA9 ICgkZ3JvdXB0YWcgJiYgJHRodW1iSWR4ID09IDApID8gJzwnIC4gJGdyb3VwdGFnIC4gKCgk Z3JvdXBjbGFzcykgPyAnIGNsYXNzPSInLiRncm91cGNsYXNzLiciJyA6ICcnKSAuICc+JyA6 ICcnOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJZm9yZWFjaCAoJGNvbWJvcyBh cyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFhcnJheV9rZXlfZXhpc3RzKCRk ZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVwbGFjZW1lbnRzWyRkZWZOYW1l XSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0KCQkJCX0NCgkJCX0NCg0KCQkJ Ly8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9ybSB0aGF0IHJlcXVpcmUgZGV0 YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25seSBpbiBjb2xsYXRpb24NCgkJ CS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBsYWNlbWVudHMgYXJyYXkgb24g YW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGltZQ0KCQkJJHNvbG9SRSA9ICcv XHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVtU29sb3MgPSBwcmVnX21hdGNo X2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlmb3IgKCRzb2xvQ3RyID0gMDsg JHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsNCgkJCQkkZmllbGRuYW1lID0g J3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30nOw0KCQkJCSRncmFiZmllbGQg PSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJJHJlcGxhY2VtZW50c1skZmll bGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07DQoJCQl9DQoNCgkJCS8vIFBl cmZvcm0gZXNjYXBpbmcgb24gdGhlIHJlcGxhY2VtZW50cy4NCgkJCS8vIE5vdGUgdGhlIHJl cGFnZW1lbnRzIGhhdmUgYWxyZWFkeSBiZWVuIGVzY2FwZWQgc28gd2hlbi9pZiB0aGV5IGFy ZSBjb21iaW5lZCB3aXRoIHRoZSByZXBsYWNlbWVudHMsDQoJCQkvLyB0aGUgZXNjYXBpbmcg aXMgbm90IGRvbmUgdHdpY2UNCgkJCWlmICgkZXNjYXBlcykgew0KCQkJCWZvcmVhY2ggKCRy ZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQlpZiAoaW5fYXJy YXkodHJpbSgkZGVmTmFtZSwgInt9IiksICRlc2NhcGVzKSkgew0KCQkJCQkJJHJlcGxhY2Vt ZW50c1skZGVmTmFtZV0gPSBodG1sc3BlY2lhbGNoYXJzKCRkZWZWYWwsIEVOVF9RVU9URVMp Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBBZGQgdGhlIG5hdmlnYXRpb24gaXRl bXMgaWYgdGhleSdyZSBkZWZpbmVkDQoJCQlpZiAoY291bnQoJHJlcGFnZW1lbnRzKSA+IDAp IHsNCgkJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXlfbWVyZ2UoJHJlcGFnZW1lbnRzLCAkcmVw bGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJLy8gSXMgYSB0aHVtYi90ZXh0IG9iamVjdCByZXF1 aXJlZCB0aGlzIHRpbWU/DQoJCQkkb2JqZWN0ID0gJyc7DQoJCQlpZiAoJHRodW1iSWR4ID49 ICR0aHVtYm9mZnNldCAmJiAkdGh1bWJJZHggPCAkdGh1bWJvZmZzZXQrJHRodW1ibGltaXQp IHsNCgkJCQkkb2JqZWN0ID0gKCRvYmplY3Rmb3JtKSA/IHBhcnNlKHN0cnRyKCRvYmplY3Rm b3JtLCAkcmVwbGFjZW1lbnRzKSkgOiAoKCR0ZXh0KSA/ICR0ZXh0IDogJzxpbWcgc3JjPSIn LiR0aGVUaHVtYi4nIicgLigoJHJvd1snYWx0J10pID8gJyBhbHQ9IicuJHJvd1snYWx0J10u JyInIDogJycpIC4oKCR0aGVUaHVtYldpZHRoKSA/ICcgd2lkdGg9IicuJHRoZVRodW1iV2lk dGguJHRoZVRodW1iV1VuaXRzLiciJyA6ICcnKSAuKCgkdGhlVGh1bWJIZWlnaHQpID8gJyBo ZWlnaHQ9IicuJHRoZVRodW1iSGVpZ2h0LiR0aGVUaHVtYkhVbml0cy4nIicgOiAnJykgLicg Lz4nKTsNCgkJCX0NCgkJCSRyZXBsYWNlbWVudHNbJ3tvYmplY3R9J10gPSAkb2JqZWN0Ow0K DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyA6IElN QUdFICIuJGN0ci4iICsrIjsNCgkJCQlkbXAoJHJlcGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJ CS8vIENoZWNrIGlmIGNvdW50Zm9ybSBpcyB0byBiZSBjYWxsZWQNCgkJCSRjb3VudHByZSA9 ICRjb3VudHBvc3QgPSBhcnJheSgpOw0KCQkJaWYgKCRjb3VudGluZykgew0KCQkJCWZvcmVh Y2ggKCRjb3VudGZvcm0gYXMgJGNvdW50bGlzdCkgew0KCQkJCQkkcG9zb3ZlciA9IGFycmF5 KCk7DQoJCQkJCSRjb3VudGxpc3QgPSBzdHJ0cigkY291bnRsaXN0LCAkcmVwbGFjZW1lbnRz KTsgLy8gUmVwbGFjZSBhbnkge30gdmFycyB3aXRoIHRoZWlyIHJlYWwgdmFsdWVzDQoJCQkJ CSRjb3VudGxpc3QgPSBkb19saXN0KCRjb3VudGxpc3QsICRwYXJhbWRlbGltKTsNCgkJCQkJ aWYgKCRkcG9zPWFycmF5X3NlYXJjaCgnc21kX2Fib3ZlJywgJGNvdW50bGlzdCkpIHsNCgkJ CQkJCSRwb3NvdmVyW10gPSAiYWJvdmUiOw0KCQkJCQkJdW5zZXQoJGNvdW50bGlzdFskZHBv c10pOw0KCQkJCQl9DQoJCQkJCWlmICgkZHBvcz1hcnJheV9zZWFyY2goJ3NtZF9iZWxvdycs ICRjb3VudGxpc3QpKSB7DQoJCQkJCQkkcG9zb3ZlcltdID0gImJlbG93IjsNCgkJCQkJCXVu c2V0KCRjb3VudGxpc3RbJGRwb3NdKTsNCgkJCQkJfQ0KCQkJCQkkY291bnRsaXN0ID0gYXJy YXlfbWVyZ2UoJGNvdW50bGlzdCk7IC8vIHJlLWluZGV4DQoNCgkJCQkJJHBvc292ZXIgPSAo ZW1wdHkoJHBvc292ZXIpKSA/ICRjb3VudHBvc25zIDogJHBvc292ZXI7DQoJCQkJCSRkaXZi eSA9IGZhbHNlOw0KCQkJCQlpZiAoJGNvdW50bGlzdFswXSA9PSAnc21kX2V2ZXJ5Jykgew0K CQkJCQkJJGRpdmJ5ID0gdHJ1ZTsNCgkJCQkJCWFycmF5X3NoaWZ0KCRjb3VudGxpc3QpOw0K CQkJCQl9DQoJCQkJCSRudW1mb3JtcyA9IGNvdW50KCRjb3VudGxpc3QpOw0KCQkJCQkkY2Fs bGZvcm0gPSBmZXRjaF9mb3JtKCRjb3VudGxpc3RbJG51bWZvcm1zLTFdKTsNCgkJCQkJdW5z ZXQoJGNvdW50bGlzdFskbnVtZm9ybXMtMV0pOw0KCQkJCQkkb3Jsb2dpYyA9ICRhbmRsb2dp YyA9IGFycmF5KCk7DQoJCQkJCWZvcmVhY2ggKCRjb3VudGxpc3QgYXMgJGN1c3Rjb3VudCkg ew0KCQkJCQkJJHNob3d2YWwgPSAoc3RycG9zKCRjdXN0Y291bnQsICIhIikgPT09IDApID8g ZmFsc2UgOiB0cnVlOy8vIE5lZ2F0aXZlIGxvZ2ljIHJlcXVpcmVkDQoJCQkJCQkkY3VzdGNv dW50ID0gc3RyX3JlcGxhY2UoJyEnLCAnJywgJGN1c3Rjb3VudCk7DQoJCQkJCQlpZiAoJHNo b3d2YWwpIHsNCgkJCQkJCQkkb3Jsb2dpY1tdID0gZW1wdHkoJGN1c3Rjb3VudCkgfHwgKCgk ZGl2YnkpID8gKCgkY3RyICUgJGN1c3Rjb3VudCA9PT0gMCkgPyB0cnVlIDogZmFsc2UpIDog KCgkY3VzdGNvdW50ID09ICRjdHIpID8gdHJ1ZSA6IGZhbHNlKSk7DQoJCQkJCQl9IGVsc2Ug ew0KCQkJCQkJCSRhbmRsb2dpY1tdID0gKCRjdXN0Y291bnQgPT0gJGN0cikgPyBmYWxzZSA6 IHRydWU7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJaWYgKGluX2FycmF5KCcxJywgJG9ybG9n aWMpICYmICFpbl9hcnJheSgnMCcsICRhbmRsb2dpYykpIHsNCgkJCQkJCWlmIChpbl9hcnJh eSgiYWJvdmUiLCAkcG9zb3ZlcikpIHsNCgkJCQkJCQkkY291bnRwcmVbXSA9IHBhcnNlKHN0 cnRyKCRjYWxsZm9ybSwgJHJlcGxhY2VtZW50cykpOw0KCQkJCQkJfQ0KCQkJCQkJaWYgKGlu X2FycmF5KCJiZWxvdyIsICRwb3NvdmVyKSkgew0KCQkJCQkJCSRjb3VudHBvc3RbXSA9IHBh cnNlKHN0cnRyKCRjYWxsZm9ybSwgJHJlcGxhY2VtZW50cykpOw0KCQkJCQkJfQ0KCQkJCQl9 DQogICAgICAgICAgICB9DQoJCQl9DQoNCgkJCWlmICgkZGVidWcgPiAwICYmICgkY291bnRw cmUgfHwgJGNvdW50cG9zdCkpIHsNCgkJCQllY2hvICIrKyBDT1VOVCBGT1JNIFRSSUdHRVJF RCArKyI7DQoJCQkJaWYgKCRjb3VudHByZSkgew0KCQkJCQlkbXAoJGNvdW50cHJlKTsNCgkJ CQl9DQoJCQkJaWYgKCRjb3VudHBvc3QpIHsNCgkJCQkJZG1wKCRjb3VudHBvc3QpOw0KCQkJ CX0NCgkJCX0NCg0KCQkJLy8gSW4gY29sbGF0ZSBtb2RlIHRoZSBmb3JtIGlzIG9ubHkgcGFy c2VkIGF0IHRoZSBlbmQ6IGJ1aWxkIGEgY29sbG9zYWwgbXVsdGktZGltZW5zaW9uIGFycmF5 IG9mIGFsbCBpdGVtcyBoZXJlDQoJCQlpZiAoJGNvbGxhdGUpIHsNCgkJCQlmb3JlYWNoICgk cmVwbGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJJGNvbGxhdGlv bnNbJGRlZk5hbWVdW10gPSAkZGVmVmFsOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJaWYg KCRjb3VudGluZykgew0KCQkJCQkkdGh1bWJvdXQgPSBhcnJheV9tZXJnZSgkdGh1bWJvdXQs ICRjb3VudHByZSk7DQoJCQkJfQ0KDQoJCQkJJHRodW1ib3V0W10gPSBwYXJzZShzdHJ0cigk dGhpbmcsICRyZXBsYWNlbWVudHMpKTsNCg0KCQkJCWlmICgkY291bnRpbmcpIHsNCgkJCQkJ JHRodW1ib3V0ID0gYXJyYXlfbWVyZ2UoJHRodW1ib3V0LCAkY291bnRwb3N0KTsNCgkJCQl9 DQoJCQl9DQoNCgkJCS8vIEtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIHNvIHdl IGtub3cgaWYgdGhleSBjaGFuZ2UgbmV4dCB0aW1lDQoJCQlmb3JlYWNoICgkcmVzZXRPcHRz IGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNldE9w dCwgJ3NtZF9ldmVyeScpID09PSBmYWxzZSkgew0KCQkJCQkkcmVzZXRPcHRzWyRyZXNldE9w dF0gPSAkcm93WyRyZXNldE9wdF07DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlc2V0T3B0c1sk cmVzZXRPcHRdID0gJHRodW1iQ3RyOw0KCQkJCX0NCgkJCX0NCgkJCSR0aHVtYklkeCsrOw0K CQkJJHRodW1iQ3RyKys7DQoJCQkkaWR4Kys7DQoJCQkkY3RyKys7DQoJCX0NCgkJaWYgKCRj b2xsYXRlKSB7DQoJCQlmb3JlYWNoICgkY29sbGF0aW9ucyBhcyAkaXRlbSA9PiAkbGlzdCkg ew0KCQkJCS8vIFF1b3RlIHRoZSBsaXN0cyBpZiByZXF1aXJlZA0KCQkJCSRsaXN0ID0gKGVt cHR5KCRkYmxRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRkYmxRdW90ZSkpID8gZG9BcnJh eSgkbGlzdCwgJ3NtZF9kb0RibFF1b3RlJykgOiAkbGlzdDsNCgkJCQkkbGlzdCA9IChlbXB0 eSgkc2dsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkc2dsUXVvdGUpKSA/IGRvQXJyYXko JGxpc3QsICdkb1F1b3RlJykgOiAkbGlzdDsNCgkJCQkkY29sbGF0aW9uc1skaXRlbV0gPSBp bXBsb2RlKCRjb2xsYXRlZGVsaW0sICRsaXN0KTsNCgkJCX0NCgkJCWlmICgkZGVidWcgPiAw KSB7DQoJCQkJZWNobyAiKysgQ09MTEFUSU9OUyArKyI7DQoJCQkJZG1wKCRjb2xsYXRpb25z KTsNCgkJCX0NCgkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIoJHRoaW5nLCAkY29sbGF0 aW9ucykpOw0KCQl9DQoNCgkJLy8gVGFjayBvbiB0aGUgcGFnaW5nIGZyb20gZWFybGllciBp ZiBpdCdzIHRvIGdvIGFmdGVyd2FyZHMNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5n KSB7DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBSRVBMQUNF TUVOVFMgKysiOw0KCQkJCWRtcCgkcmVwYWdlbWVudHMpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJ Ly8gQWRkIHRoZSBwYWdpbmcgdG8gdGhlIG91dHB1dCBpZiBpdCdzIHRvIGdvIGFib3ZlIHRo ZSB0aHVtYnMNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJaWYgKGluX2Fy cmF5KCJhYm92ZSIsICRwYWdlb3V0KSkgew0KCQkJJG91dFtdID0gZG9XcmFwKCRuYXZvdXQs ICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCX0NCg0KCSRvdXRbXSA9IGRv V3JhcCgkdGh1bWJvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcywgJycsICcnLCAnJywg JGh0bWxfaWQpOw0KDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChp bl9hcnJheSgiYmVsb3ciLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2 b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCglpZiAoJGRl YnVnID4gMikgew0KCQllY2hvICIrKyBGSU5BTCBPVVRQVVQgKysiOw0KCQlkbXAoJG91dCk7 DQoJfQ0KDQoJcmV0dXJuIGpvaW4oIiAiLCAkb3V0KTsNCn0NCg0KLy8gV29yayBvdXQgd2hp Y2ggcGFnZSB0aGlzIGdhbGxlcnkgaXMgb24gYW5kIHJldHVybiB0aGUgcmVsZXZhbnQgaW5m bw0KZnVuY3Rpb24gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQs ICRwYWdpbmcpIHsNCgkkbnVtVGh1bXMgPSBjb3VudCgkcnMpIC0gJG9mZnNldDsNCglpZiAo KCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVBhZ2VzID0gKCRudW1UaHVtcyA+ IDApID8gY2VpbCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJCSR0aHVtUGFnZSA9ICghZ3Bz KCRnYWxsSUQpKSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRvZmZzZXQgPSAoKCR0aHVtUGFn ZSAtIDEpICogJGxpbWl0KSArICRvZmZzZXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8gcGFnaW5n IHJlcXVpcmVkDQoJCSRudW1QYWdlcyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJfQ0KCXJl dHVybiBhcnJheSgkbnVtVGh1bXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KTsN Cn0NCg0KLy8gUmVhZCB0aGUgZ2l2ZW4gZGVsaW1pdGVkIGRpcmVjdG9yaWVzIGFuZCBnZXQg YWxsIGZpbGVzIHRoYXQgbWF0Y2guDQovLyBHbyBkb3duIGFzIG1hbnkgc3ViZGlyIGxldmVs cyBhcyBnaXZlbiBpbiB0aGUgJHN1YiBwYXJhbWV0ZXINCmZ1bmN0aW9uIHNtZF9kb0RpcmVj dG9yeSgkbHN0LCAkbHZsPTAsICRzdWI9MCwgJG1hdGNoPSIiLCAkZGxtPSIsIiwgJHNwYz0x LCAkY3RyPTApIHsNCglsaXN0KCRkaXJpbmMsICRkaXJleGMpID0gc21kX2RvTGlzdCgkbHN0 LCBmYWxzZSwgJHN1YiwgZmFsc2UsICRkbG0sICRzcGMpOw0KCWxpc3QoJG1hdGNoaW5jLCAk bWF0Y2hleGMpID0gc21kX2RvTGlzdCgkbWF0Y2gsIGZhbHNlLCAnJywgZmFsc2UsICRkbG0s ICRzcGMpOw0KCSRtYXRjaGluYyA9ICIuKiIgLigoJG1hdGNoaW5jKSA/ICIoIiAuaW1wbG9k ZSgifCIsJG1hdGNoaW5jKS4iKSsuKiIgOiAiIik7DQoJJG1hdGNoZXhjID0gKCRtYXRjaGV4 YykgPyAiLiooIiAuaW1wbG9kZSgifCIsJG1hdGNoZXhjKS4iKSsuKiIgOiAic21kX2dscnlf Ii5tdF9yYW5kKCk7DQoNCgkkc3ViID0gKGVtcHR5KCRzdWIpKSA/IDAgOiAkc3ViOw0KCSRz dWIgPSAoc3RydG9sb3dlcigkc3ViKT09ImFsbCIpID8gOTk5OTkgOiAkc3ViOw0KCSRmaWxl TGlzdCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRpcmluYyBhcyAkZGlyKSB7DQoJCWlmICgk aGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHsNCgkJCXdoaWxlICgoJGZpbGUgPSBAcmVhZGRp cigkaGFuZGxlKSkgIT09IGZhbHNlKSB7DQoJCQkJJGZ1bGxwYXRoID0gJGRpci5EUy4kZmls ZTsNCgkJCQlpZiAocHJlZ19tYXRjaCgiLyIuJG1hdGNoaW5jLiIvIiwgJGZ1bGxwYXRoKSAm JiAhcHJlZ19tYXRjaCgiLyIuJG1hdGNoZXhjLiIvIiwgJGZ1bGxwYXRoKSkgew0KCQkJCQlp ZiAoaXNfZGlyKCRmdWxscGF0aCkpIHsNCgkJCQkJCWlmICgoJGZpbGUgPT0gIi4iKSB8fCAo JGZpbGU9PSAiLi4iKSB8fCAoaW5fYXJyYXkoJGZpbGUsICRkaXJleGMpKSB8fCAoJGx2bCA+ PSAkc3ViKSkgew0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkv LyBSZWN1cnNlIHRoZSBzdWJkaXIuIE5vdGUgdGhhdCB0aGUgJyEnIGlzIHRlbXBvcmFyaWx5 IGFkZGVkIGJhY2sgdG8gZWFjaCBkaXJleGMgaXRlbQ0KCQkJCQkJCSR0bXAgPSAkZGlyZXhj OyAvLyBEb24ndCBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsIGFycmF5DQoJCQkJCQkJYXJyYXlf dW5zaGlmdCgkdG1wLCAkZnVsbHBhdGgpOw0KCQkJCQkJCSRzdWJGaWxlcyA9IHNtZF9kb0Rp cmVjdG9yeShpbXBsb2RlKCRkbG0uIiEiLCAkdG1wKSwgJGx2bCsxLCAkc3ViLCAkbWF0Y2gs ICRkbG0sICRzcGMsICRjdHIpOw0KCQkJCQkJCSRmaWxlTGlzdCA9IGFycmF5X21lcmdlKCRm aWxlTGlzdCwgJHN1YkZpbGVzKTsNCgkJCQkJCQkkY3RyICs9IGNvdW50KCRzdWJGaWxlcyk7 DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkZmls ZXN0YXQgPSBzdGF0KCRmdWxscGF0aCk7DQoJCQkJCQkkaW1nc2l6ZSA9IGdldGltYWdlc2l6 ZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydwYXRoJ10gPSAkZGlyOw0K CQkJCQkJJGZpbGVMaXN0WyRjdHJdWyduYW1lJ10gPSBiYXNlbmFtZSgkZnVsbHBhdGgpOw0K CQkJCQkJJGZpbGVMaXN0WyRjdHJdWydpZCddID0gcHJlZ19yZXBsYWNlKCcvXC4uKyQvJywg JycsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYWx0J10gPSAnJzsNCgkJCQkJ CSRmaWxlTGlzdFskY3RyXVsnY2FwdGlvbiddID0gJyc7DQoJCQkJCQkkcGFydHMgPSBleHBs b2RlKERTLCAkZGlyKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2F0ZWdvcnknXSA9IChj b3VudCgkcGFydHMpID4gMSkgPyBlbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0 WyRjdHJdWydhdXRob3InXSA9IHN0cnZhbCgkZmlsZXN0YXRbJ3VpZCddKTsNCgkJCQkJCSRm aWxlTGlzdFskY3RyXVsnZGF0ZSddID0gc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVTIiwg JGZpbGVzdGF0WydjdGltZSddKTsNCgkJCQkJCSRwYXJ0cyA9IGV4cGxvZGUoIi4iLCAkZmls ZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2V4dCddID0gKGNvdW50KCRwYXJ0cykgPiAx KSA/ICIuIi5lbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyd3J10g PSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/IHN0cnZhbCgkaW1nc2l6ZVswXSkgOiAnJzsNCgkJ CQkJCSRmaWxlTGlzdFskY3RyXVsnaCddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2 YWwoJGltZ3NpemVbMV0pIDogJyc7DQoJCQkJCX0NCgkJCQkJJGN0cisrOw0KCQkJCX0NCgkJ CX0NCgkJfQ0KCQlpZiAoJGhhbmRsZSkgew0KCQkJQGNsb3NlZGlyKCRoYW5kbGUpOw0KCQl9 DQoJfQ0KCXJldHVybiAkZmlsZUxpc3Q7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJv cmRlciI7czoxOiI1IjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6NDoiaGVscCI7czo1NjgzOToi PGRpdiBpZD0ic21kX2hlbHAiPgoKCTxoMSBpZD0idG9wIj5zbWRfZ2FsbGVyeTwvaDE+CgoJ PGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+U3VwcG9ydHMg YWxsIGN1cnJlbnQgYW5kIChwcm9iYWJseSkgZnV0dXJlIGdhbGxlcnkgc2NyaXB0cyBpbmNs dWRpbmcgdGh1bWJwb3AsIHJvbGxvdmVyLCB0b29sdGlwLCBsaWdodGJveCwgbGl0ZWJveCwg c2xpbWJveCwgbW9vbmJveCwgdGhpY2tib3gsIHNsaWRlc2hvdywgZmFuY3l6b29tLCBldGM8 L2xpPgoJCTxsaT5QdWxsIGltYWdlcyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiBkYXRhYmFzZSB0aGF0IG1hdGNoIGNhdGVnb3JpZXMsIElEcywgYXV0aG9yLCBl eHRlbnNpb24gb3IgcGFydGljdWxhciBkaW1lbnNpb25zIC8gYXNwZWN0IHJhdGlvczwvbGk+ CgkJPGxpPlVzZSBhcnRpY2xlIGZpZWxkcyB0byBob2xkIGxpc3RzIG9mIGltYWdlIGNhdGVn b3JpZXMvSURzIGZvciBhcnRpY2xlLXNwZWNpZmljIGdhbGxlcmllczwvbGk+CgkJPGxpPk11 bHRpLWxldmVsIHN1Yi1jYXRlZ29yeSBzdXBwb3J0PC9saT4KCQk8bGk+R2FsbGVyeSBsYXlv dXQgaXMgZGVmaW5lZCBpbiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0v Y29udGFpbmVyPC9saT4KCQk8bGk+RGlyZWN0LWFjY2VzcyBwYWdpbmF0aW9uIGlzIHN1cHBv cnRlZCBhbmQgdGhlIGxheW91dCBvZiBwYWdpbmcgZmVhdHVyZXMgY2FuIGJlIGNvbnRyb2xs ZWQgYnkgYSBzZWNvbmQgZm9ybTwvbGk+CgkJPGxpPlVzZXMgYSB0YWctcmVwbGFjZW1lbnQg c3lzdGVtIGxpa2UgdGhlIHdldF9mb3JfZWFjaF9pbWFnZSBwbHVnaW48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzdXBwb3J0PC9saT4KCTwvdWw+CgoJPGgy IGlkPSJhdXRob3IiPkF1dGhvcjwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdz b24uY29tL2NvbnRhY3QiPlN0ZWYgRGF3c29uPC9hPi4gRm9yIG90aGVyIHNvZnR3YXJlIGJ5 IG1lLCBvciB0byBtYWtlIGEgZG9uYXRpb24sIHNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3N0 ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0 YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHAgY2xhc3M9InJl cXVpcmVkIj5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjIuMCsg YW5kIHNtZF9saWIgdjAuMzYrPC9wPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBl aXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzk1Ny9zbWRf Z2FsbGVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIHNvZnR3YXJlIHBhZ2UgYWJv dmUsIHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBw bHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29t L3ZpZXd0b3BpYy5waHA/aWQ9MjY0ODIiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5m byBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVn aW4uPC9wPgoKCTxwPlRvIHJlbW92ZSB0aGUgcGx1Z2luLCBzaW1wbHkgZGVsZXRlIGl0IGZy b20gdGhlIEFkbWluLSZndDtQbHVnaW5zIHRhYi4gSWYgbm8gb3RoZXIgcGx1Z2lucyBhcmUg dXNpbmcgc21kX2xpYiB5b3UgbWF5IHNhZmVseSBkZWxldGUgdGhhdCB0b28uPC9wPgoKCTxo MiBpZD0idXNhZ2UiPk92ZXJ2aWV3PC9oMj4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlzIHRo YXQgdGhpcyBwbHVnaW4gYWN0cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90aGlu ZyBtb3JlLiBUaGUgcGx1Z2luIG9wdGlvbnMgZ292ZXJuIHdoaWNoIGltYWdlcyBhcmUgcHVs bGVkIG91dCBvZiB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBpbnRvIHdoYXRl dmVyIG9yZGVyIHlvdSBsaWtlLjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNoIGltYWdlICYj ODIxMjsgb25lIGJ5IG9uZSAmIzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0ZXMgcGFzc2Vk IHRocm91Z2ggdGhlIGNvbnRhaW5lciBvciA8Y29kZT5mb3JtPC9jb2RlPiBvZiB5b3VyIGNo b2ljZTsgeW91IHNpbXBseSBjaG9vc2UgdG8gZGlzcGxheSB3aGljaGV2ZXIgaW1hZ2UgYXR0 cmlidXRlcyB5b3UgbGlrZSBpbiB0aGlzIGZvcm0uIFRoaXMgbWVhbnMgYW55IGltYWdlIGF0 dHJpYnV0ZXMgY2FuIGJlICYjODIyMDtpbmplY3RlZCYjODIyMTsgZGlyZWN0bHkgaW50byBh bnkgbWFya3VwOyBpdCBjb3VsZCBiZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0 YWdzLCBpdCBjb3VsZCBiZSBjb250ZW50LCBpdCBjb3VsZCBiZSBqYXZhc2NyaXB0LCBvciA8 c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjsgYW55dGhpbmcuPC9wPgoKCTxwPlBhZ2lu YXRpb24gd29ya3MgdGhlIHNhbWUgd2F5LCBhbGxvd2luZyB5b3UgdG8gc3BlY2lmeSBob3cg dXNlcnMgY2FuIHN0ZXAgdGhyb3VnaCB5b3VyIGltYWdlIGdhbGxlcmllcy48L3A+CgoJPHA+ VGhlcmUgaXMgYWxzbyBhIHNwZWNpYWwgJiM4MjIwO2NvbGxhdGUmIzgyMjE7IG1vZGUgdGhh dCBhbGxvd3MgeW91IHRvIGNvbGxlY3QgYWxsIGltYWdlIGF0dHJpYnV0ZXMgdG9nZXRoZXIg aW50byBhIHNlcmllcyBvZiBiaWcgbG9uZyBsaXN0cyA8ZW0+d2l0aG91dDwvZW0+IGNhbGxp bmcgdGhlIGZvcm0gZXZlcnkgdGltZS4gVGhlIGZvcm0vY29udGFpbmVyIGlzIHRoZW4gb25s eSBwcm9jZXNzZWQgb25jZSBhdCB0aGUgZW5kLjwvcD4KCgk8cD5CZXR3ZWVuIHRoZXNlIHR3 byBtb2RlcyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVhbGlzZSBhbnkgZ2FsbGVyeWluZyBz b2x1dGlvbjsgbm93IGFuZCBpbiBmdXR1cmUuPC9wPgoKCTxoMiBjbGFzcz0idGFnICIgaWQ9 InNtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvaDI+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5 Ij5QbGFjZSBvbmUgb3IgbW9yZSBzbWRfZ2FsbGVyeSB0YWdzIGluIGFuIGFydGljbGUsIHBh Z2Ugb3IgZm9ybSwgYW5kIHN1cHBseSBhbnkgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25zIHRv IGNvbmZpZ3VyZSBpdC4gVGhlIGF0dHJpYnV0ZXMgYXJlIGdyb3VwZWQgYnkgZnVuY3Rpb24g dG8gbWFrZSBpdCBlYXNpZXIgb24geW91ciBleWVzIC8gc2FuaXR5LjwvcD4KCgk8aDMgaWQ9 ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2gzPgoKCTxoND5GaWx0ZXJzPC9oND4KCgk8dWw+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiBsaXN0IG9mIGltYWdlIElE cyB0byBkaXNwbGF5LiBNYXkgYmUgaW50ZWdlcnMgb3IgcmFuZ2VzLCBmb3IgZXhhbXBsZSA8 Y29kZT5pZD0mcXVvdDs1LCA0MiwgOC0xMSZxdW90OzwvY29kZT4gd291bGQgZ3JhYiBpbWFn ZXMgNSwgOCwgOSwgMTAsIDExIGFuZCA0Mi4gVXNlICYjODIxNjshJiM4MjE3OyBpbiBmcm9u dCBvZiBhIG51bWJlciBvciByYW5nZSB0byBleGNsdWRlIHRob3NlIGltYWdlcy4gVXNlICYj ODIxNjs/JiM4MjE3OyBhbmQgdGhlIG5hbWUgb2YgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiBmaWVsZCB0byByZWFkIHRoZSBsaXN0IG9mIGltYWdlIElEcyBmcm9tIHRoYXQg ZmllbGQsIGUuZy4gPGNvZGU+aWQ9P2FydGljbGVfaW1hZ2UmcXVvdDs8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhdGVnb3J5PC9zcGFuPiA6IGxpc3Qgb2YgaW1h Z2UgY2F0ZWdvcmllcyB0byBkaXNwbGF5LiBZb3UgbWF5IHNwZWNpZnkgZml4ZWQtbmFtZSBj YXRlZ29yaWVzIChlLmcuICYjODIyMDthbmltYWxzJiM4MjIxOykgb3IgYSYjODIxNzs/JiM4 MjE3OyBmb2xsb3dlZCBieSBhbiBhcnRpY2xlIGZpZWxkIG5hbWUuIGUuZy4gPGNvZGU+Y2F0 ZWdvcnk9JnF1b3Q7YW5pbWFscywgYXJ0LT90aGlzaWQmcXVvdDs8L2NvZGU+IHdvdWxkIGdy YWIgYWxsIGltYWdlcyBmcm9tIGNhdGVnb3J5ICYjODIyMDthbmltYWxzJiM4MjIxOyBhbmQg Y2F0ZWdvcnkgJiM4MjIwO2FydC00MiYjODIyMTsgKGFzc3VtaW5nIHRoZSBjdXJyZW50IGFy dGljbGUgaGFzIGFuIGlkIG9mIDQyKS4gVXNlICYjODIxNjshJiM4MjE3OyB0byA8ZW0+ZXhj bHVkZTwvZW0+IHRoZSBnaXZlbiBjYXRlZ29yeSBvciBmaWVsZC48ZGl2IGNsYXNzPSJicmVh ayI+RmllbGRzIG1heSB0aGVtc2VsdmVzIGNvbnRhaW4gbGlzdHMgb2YgY2F0ZWdvcmllcy4g VGhlICYjODIxNjs/JiM4MjE3OyBmaWVsZCBuYW1lcyBtYXkgYmUgY29tYmluZWQgKGUuZy4g P3MtP2FydGljbGVfaW1hZ2UpIGJ1dCBiZSBhd2FyZSB0aGF0IGN1c3RvbSBmaWVsZCBuYW1l cyBtYXkgY29udGFpbiBzcGFjZXMgaWYgPGNvZGU+c3RyaWN0ZmllbGRzPSZxdW90OzAmcXVv dDs8L2NvZGU+PC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnN1YmxldmVs PC9zcGFuPiA6IGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgaG93IG1hbnkgJiM4MjE2O2xl dmVscyYjODIxNzsgZG93biB0byB0cmF2ZXJzZSBlYWNoIG1hdGNoaW5nIGNhdGVnb3J5LiA8 Y29kZT5zdWJsZXZlbD0mcXVvdDswJnF1b3Q7PC9jb2RlPiAodGhlIGRlZmF1bHQpIGlzIG9u bHkgdGhlIHRvcC1sZXZlbDsgMSA9IHRvcC1sZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNhdDsg MiA9IHRvcC1sZXZlbCBwbHVzIHRoZSBuZXh0IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4gPGNv ZGU+c3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7PC9jb2RlPiBpcyBhbGwgc3ViLWNhdHM8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IGZpbHRlciBpbWFn ZXMgYnkgdGhpcyBsaXN0IG9mIGF1dGhvciBsb2dpbiBuYW1lczwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5leHRlbnNpb248L3NwYW4+IDogZmlsdGVyIGltYWdlcyBieSB0aGlz IGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zICh3aXRob3V0IHRoZSBsZWFkaW5nIGRvdCk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXNwZWN0PC9zcGFuPiA6IGZpbHRlciBpbWFn ZXMgYnkgdGhpcyBsaXN0IG9mIGFzcGVjdCByYXRpb3MuIENob29zZSBmcm9tIGFueSBvZiA8 Y29kZT5wb3J0cmFpdDwvY29kZT4sIDxjb2RlPmxhbmRzY2FwZTwvY29kZT4gb3IgPGNvZGU+ c3F1YXJlPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kaW1lbnNpb25z PC9zcGFuPiA6IGZpbHRlciBpbWFnZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIGRpbWVuc2lvbnMu IFNwZWNpZnkgdXAgdG8gdHdvIHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSB3aWR0aCBhbmQg dGhlIHNlY29uZCBpcyB0aGUgaGVpZ2h0LiBJZiB5b3Ugd2lzaCB0byBzcGVjaWZ5IG1pbmlt dW0gb3IgbWF4aW11bSBkaW1lbnNpb25zLCBhZGQgPGNvZGU+Jmd0OzwvY29kZT4sIDxjb2Rl PiZndDs9PC9jb2RlPiwgPGNvZGU+Jmx0OzwvY29kZT4gb3IgPGNvZGU+Jmx0Oz08L2NvZGU+ IGJlZm9yZSB0aGUgdmFsdWUuIEZvciBleGFtcGxlLCA8Y29kZT5kaW1lbnNpb25zPSZxdW90 OyZndDs9MTAyNCwgJmd0Oz03NjgmcXVvdDs8L2NvZGU+IHdvdWxkIG9ubHkgc2hvdyBpbWFn ZXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEwMjQgJiMyMTU7IDc2OCBwaXhlbHM8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c29ydDwvc3Bhbj4gOiByZS1vcmRlciB0aGUg aW1hZ2VzIGJ5IDxjb2RlPmNhdGVnb3J5PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5u YW1lPC9jb2RlPiwgPGNvZGU+ZGF0ZTwvY29kZT4sIDxjb2RlPmlkPC9jb2RlPiAodGhlIGRl ZmF1bHQgaWYgdXNpbmcgYW4gaWQpLCBmaWxlIDxjb2RlPmV4dDwvY29kZT5lbnNpb24sIDxj b2RlPmFsdDwvY29kZT4sIDxjb2RlPmNhcHRpb248L2NvZGU+LCA8Y29kZT5hdXRob3I8L2Nv ZGU+LCA8Y29kZT53aWR0aDwvY29kZT4sIDxjb2RlPmhlaWdodDwvY29kZT4sIDxjb2RlPnRo dW1iX3dpZHRoPC9jb2RlPiwgPGNvZGU+dGh1bWJfaGVpZ2h0PC9jb2RlPiwgPGNvZGU+aGFz dGh1bWI8L2NvZGU+IGluIGVpdGhlciA8Y29kZT5hc2M8L2NvZGU+ZW5kaW5nIG9yIDxjb2Rl PmRlc2M8L2NvZGU+ZW5kaW5nIG9yZGVyLiBUd28gc3BlY2lhbCBjYXNlcyBleGlzdDogPGNv ZGU+Zml4ZWQ8L2NvZGU+IG1haW50YWlucyB0aGUgb3JkZXIgeW91IHNwZWNpZmllZCBpbiB0 aGUgaWQgYW5kL29yIGNhdGVnb3J5IGF0dHJpYnV0ZSwgd2hpbGUgPGNvZGU+cmFuZG9tPC9j b2RlPiBzaHVmZmxlcyB0aGUgb3JkZXIuPGRpdiBjbGFzcz0iYnJlYWsiPk5vdGUgdGhhdCBp ZiA8Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhl IGxpc3QsIHJhbmRvbSBpbWFnZXMgd2lsbCBiZSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2Ug YW5kIHRoZXkgd2lsbCB0aGVuIGJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGxp c3RlZCBhZnRlciBpdC4gSWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFueXdoZXJl IGVsc2UgaW4gdGhlIGxpc3QsIGFueSBzb3J0IGl0ZW1zIGJlZm9yZSBpdCB3aWxsIGRldGVy bWluZSB0aGUgb3JkZXIgb2YgZGF0YSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGFuZCB0 aGUgcmVzdWx0cyB3aWxsIHRoZW4gYmUgb3JkZXJlZCByYW5kb21seS4gSW4gdGhlIDJuZCBj YXNlLCBhbnkgaXRlbXMgbGlzdGVkIGFmdGVyICYjODIxNjtyYW5kb20mIzgyMTc7IHdpbGwg YmUgaWdub3JlZCwgYnV0IDxjb2RlPmZpeGVkPC9jb2RlPiBpcyBzdGlsbCBob25vdXJlZDwv ZGl2PjwvbGk+Cgk8L3VsPgoKCTxoND5MaW1pdHMgLyBvZmZzZXRzIC8gc2l6ZXM8L2g0PgoK CTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhp bXVtIG51bWJlciBvZiBpbWFnZXMgdG8gc2hvdyA8ZW0+cGVyIHBhZ2U8L2VtPi4gMCAodGhl IGRlZmF1bHQpIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+bWF4bGltaXQ8L3NwYW4+IDogdGhlIGFic29sdXRlIG1heGltdW0gbnVtYmVy IG9mIGltYWdlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIE11c3QgYmUgZ3JlYXRlciB0 aGFuIDA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFuPiA6IHNr aXAgdGhpcyBtYW55IGltYWdlcyBhbmQgc3RhcnQgZGlzcGxheWluZyB0aGVtIHRoZXJlYWZ0 ZXI8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJsaW1pdDwvc3Bhbj4gOiB0 aGUgbWF4aW11bSBudW1iZXIgb2YgdGh1bWJuYWlscyB0byBzaG93LiAwIG9yIG9taXR0ZWQg PSBhbGwgdGh1bWJzLiBOb3RlIHRoYXQgdGhpcyBkaWZmZXJzIGZyb20gbGltaXQ7IHlvdSBj YW4gbGF1bmNoIGEgMjAtaW1hZ2UgZ2FsbGVyeSBidXQgb25seSBzaG93IDEgdGh1bWJuYWls IG9uIHRoZSBwYWdlLiBCZSBhd2FyZSB0aGF0IGlmIHlvdSBhcmUgc2hvd2luZyBtdWx0aXBs ZSBjYXRlZ29yaWVzIGZyb20gYSBzaW5nbGUgdGFnLCB5b3Ugd2lsbCBzZWUgPGNvZGU+dGh1 bWJsaW1pdDwvY29kZT4gdGh1bWJuYWlscyA8ZW0+YXQgZWFjaCBjaGFuZ2UgaW4gY2F0ZWdv cnk8L2VtPi4gSWYgeW91IGRvbiYjODIxNzt0IHdhbnQgdGhpcywgc2V0IDxjb2RlPm9uY2hh bmdlPC9jb2RlPiB0byBzb21ldGhpbmcgZWxzZS4gU2VlIHRoZSA8Y29kZT57b2JqZWN0fTwv Y29kZT4gPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWc8L2E+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ib2Zmc2V0PC9zcGFuPiA6IHNraXAgdGhp cyBtYW55IHRodW1icyBiZWZvcmUgZGlzcGxheWluZyA8Y29kZT50aHVtYmxpbWl0PC9jb2Rl PiB0aHVtYm5haWxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ic2l6ZTwv c3Bhbj4gOiB0YWtlcyBvbmUgb3IgdHdvIGNvbW1hLXNlcGFyYXRlZCBudW1iZXJzIHRvIHNw ZWNpZnkgd2lkdGggYW5kL29yIGhlaWdodCBvZiBhbGwgeW91ciBnYWxsZXJ5IHRodW1ibmFp bHMuIFRoZSBkZWZhdWx0IGlzIGluIHBpeGVscyBpZiB5b3UgZG9uJiM4MjE3O3Qgc3BlY2lm eSB1bml0cy4gTWlzc2luZyBvdXQgb25lIG9yIHRoZSBvdGhlciBwYXJhbWV0ZXIgKGkuZS4g aGF2aW5nIGFuICYjODIyMDtlbXB0eSYjODIyMTsgcGFyYW1ldGVyIGJlZm9yZSBvciBhZnRl ciB0aGUgY29tbWEpIHdpbGwgb25seSBzZXQgb25lIG9mIHRoZSBkaW1lbnNpb25zLiBVc2Ug YSBzaW5nbGUgdmFsdWUgdG8gbWFrZSBzcXVhcmUgdGh1bWJzLiBJZiB5b3Ugb21pdCBlaXRo ZXIgb3IgYm90aCwgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgd2lsbCBiZSByZWFkIGZyb20g dGhlIGRhdGFiYXNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmltZ3NpemU8L3Nw YW4+IDogaWRlbnRpY2FsIHRvIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4gYnV0IGZvciB0aGUg ZnVsbCBzaXplIGltYWdlczwvbGk+Cgk8L3VsPgoKCTxoND5Gb3JtcyBhbmQgcGFnaW5nPC9o ND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5mb3JtPC9zcGFuPiA6IHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlvdXIg bWF0Y2hpbmcgaW1hZ2VzLiBXaXRob3V0IHRoaXMgYXR0cmlidXRlIHRoZSBwbHVnaW4gYWN0 cyBhcyBhIGNvbnRhaW5lciB0YWcuIFdpdGhvdXQgYSBjb250YWluZXIsIHRoZSBwbHVnaW4g ZGlzcGxheXMgZWFjaCBmdWxsLXNpemUgaW1hZ2UsIGh5cGVybGlua2VkPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIHlv dXIgcGFnaW5nIG5hdmlnYXRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFn aW5nPC9zcGFuPiA6IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lm eSBhIHBhZ2Vmb3JtLiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxhIGhyZWY9IiNyZXBfcGFn aW5nIj5wYWdlIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBhdmFpbGFibGUgaW4gdGhl IDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0YWdzPC9hPiBh cyB3ZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vwb3M8L3NwYW4+IDog dGhlIHBvc2l0aW9uIG9mIHRoZSBwYWdpbmcgYmxvY2suIE9wdGlvbnMgYXJlIDxjb2RlPmJl bG93PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5hYm92ZTwvY29kZT4sIG9yIGJvdGgg b2YgdGhlbSBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPm9iamVjdGZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91 ciA8Y29kZT57b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnLiBZb3UgY2FuIHVzZSBh bGwgdGhlIHN0YW5kYXJkIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNl bWVudCB0YWdzPC9hPiB3aXRoIHRoZSBleGNlcHRpb24gb2YgPGNvZGU+e29iamVjdH08L2Nv ZGU+IGl0c2VsZiEgVXNlcyBhIGh5cGVybGlua2VkIGltYWdlIGlmIG5vIGZvcm0gaXMgc3Bl Y2lmaWVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNvdW50Zm9ybTwvc3Bhbj4g OiBsaXN0IG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm1zIHRvIHVzZSB3 aGVuIGNlcnRhaW4gbnVtYmVyZWQgaW1hZ2VzIGFyZSByZWFjaGVkLiBTZWUgPGEgaHJlZj0i I2NvdW50Zm9ybSI+Y291bnQgZm9ybXM8L2E+IGFuZCA8YSBocmVmPSIjZWcxMCI+ZXhhbXBs ZSAxMDwvYT4uIFRoaXMgaGFzIG5vIGVmZmVjdCBpbiBjb2xsYXRlIG1vZGU8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Y291bnRwb3M8L3NwYW4+IDogZGVmYXVsdCBwb3NpdGlv biBvZiB0aGUgPGNvZGU+Y291bnRmb3JtPC9jb2RlPnMuIEVpdGhlciA8Y29kZT5hYm92ZTwv Y29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+YmVsb3c8L2NvZGU+LCBvciBib3RoIG9mIHRo ZW0gc2VwYXJhdGVkIGJ5IDxjb2RlPmRlbGltPC9jb2RlPi4gQ2FuIGJlIG92ZXJyaWRkZW4g b24gYSBwZXItZm9ybSBiYXNpczwvbGk+Cgk8L3VsPgoKCTxoND5Hcm91cGluZyBpbWFnZXM8 L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdlPC9zcGFuPiA6 IGEgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvICYjODIyMDt3YXRjaCYjODIyMTsuIEl0IHRlbGxz IHRoZSBwbHVnaW4gdGhhdCB5b3Ugd2FudCB0byBiZSBub3RpZmllZCB3aGVuIGl0ZW1zIGlu IHRoaXMgbGlzdCBjaGFuZ2UgY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIGltYWdlLiBVbmRl ciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB0aGlzIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB5b3Vy IDxjb2RlPnNvcnQ8L2NvZGU+IHBhcmFtZXRlciBvciB5b3UgbWF5IGdldCBzb21lIGZyZWFr eSByZXN1bHRzISBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwvY29kZT4uPGRpdiBj bGFzcz0iYnJlYWsiPlRoaXMgaXMgdmVyeSB1c2VmdWwgZm9yIHNwbGl0dGluZyBnYWxsZXJp ZXMgYXQgZXZlcnkgY2hhbmdlIGluIGNhdGVnb3J5IGFuZCBkaXNwbGF5aW5nIHRoZSBjYXRl Z29yeSB0aXRsZSBhYm92ZSBlYWNoIGdyb3VwLiBJdGVtcyB5b3Ugd2F0Y2ggYXJlIGFkZGVk IHRvIHRoZSBsaXN0IG9mIHJlcGxhY2VtZW50IHRhZ3MgYW5kIGFyZSBhdmFpbGFibGUgYnkg cHV0dGluZyAmIzgyMjA7b25jaGFuZ2U6JiM4MjIxOyBpbiBmcm9udCBvZiB0aGVpciBuYW1l IChlLmcuIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeX08L2NvZGU+ICYjODIxMjsgc2VlIDxh IGhyZWY9IiNlZzYiPmV4YW1wbGUgNjwvYT4gZm9yIG1vcmUpLiBUaGUgY29sb24gZGVsaW1p dGVyIGNhbiBiZSBjaGFuZ2VkIHdpdGggPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4uPC9kaXY+ PGRpdiBjbGFzcz0iYnJlYWsiPllvdSBjYW4gYWxzbyBlbGVjdCB0byBkZWZlciBwcm9jZXNz aW5nIG9mIG9uY2hhbmdlIGV2ZW50cyB0byBhIGZvcm0uIFRvIGRvIHNvLCBzcGVjaWZ5IGEg Zm9ybSBhZnRlciB5b3VyIHdhdGNoIGl0ZW0gbGlrZSB0aGlzIDxjb2RlPmNhdGVnb3J5X3Rp dGxlOm15X2Zvcm08L2NvZGU+LiBJbiBteV9mb3JtIHlvdSBjYW4gcHV0IGFueSBtYXJrdXAg YW5kIHJlcGxhY2VtZW50IHRhZ3MuIFNlZSA8YSBocmVmPSIjZWcxMSI+ZXhhbXBsZSAxMTwv YT4gZm9yIG1vcmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkFub3RoZXIgd2F5IG9mIHVz aW5nIHRoaXMgYXR0cmlidXRlIGlzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4IDxjb2RlPnNt ZF9ldmVyeTpuPC9jb2RlPiB3aGljaCB3aWxsIHRyaWdnZXIgYSBncm91cCBjaGFuZ2UgZXZl cnkgTnRoIGltYWdlLiBOb3RlIGl0IGNhbiYjODIxNzt0IGJlIHVzZWQgdG8gd2F0Y2ggc3Bl Y2lmaWMgdGhpbmdzIGluIHRoaXMgbW9kZTsgaXQgaXMgb25seSB1c2VkIHRvIHRyaWdnZXIg PGNvZGU+Z3JvdXB0YWc8L2NvZGU+IGNoYW5nZXM8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+b25jaGFuZ2V3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0 byBzdXJyb3VuZCBhbnkgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRzIHlvdSBhcmUg d2F0Y2hpbmcsIGUuZy4gPGNvZGU+b25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7PC9j b2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZWNsYXNzPC9zcGFu PiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRybyBh cHBseSB0byB0aGUgd3JhcHRhZyBvZiBhbnkgb25jaGFuZ2UgZWxlbWVudHMgeW91IGFyZSB3 YXRjaGluZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ncm91cHRhZzwvc3Bhbj4g OiB0aGUgKFgpSFRNTCB0YWcgdG8gbWFrZSBhdmFpbGFibGUgYXMgYSByZXBsYWNlbWVudCBz byB5b3UgY2FuIHdyYXAgZ3JvdXBzIG9mIGVsZW1lbnRzIGF0IGVhY2ggPGNvZGU+b25jaGFu Z2U8L2NvZGU+LiBEZWZhdWx0OiB1bnNldC4gU2VlIDxhIGhyZWY9IiNlZzYiPmV4YW1wbGVz IDY8L2E+IGZvciBtb3JlIG9uIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiAvIDxj b2RlPmdyb3VwdGFnZW5kPC9jb2RlPiByZXBsYWNlbWVudCB0YWdzPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmdyb3VwY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byBhbnkgPGNvZGU+Z3JvdXB0 YWc8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGg0PlRhZy9jbGFzcy9mb3JtYXR0aW5nIGF0dHJp YnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndyYXB0YWc8L3Nw YW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgZ2FsbGVyeSwg ZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+YnJlYWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1 cnJvdW5kIGVhY2ggdGh1bWJuYWlsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNs YXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBu YW1lIGFwcGxpZWQgdG8gdGhlIHdyYXB0YWc8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+aHRtbF9pZDwvc3Bhbj4gOiB0aGUgbmFtZSBvZiBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBhcHBseSB0byB0aGUg d3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZ3cmFwdGFnPC9zcGFu PiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJlIDxjb2RlPnBhZ2Vm b3JtPC9jb2RlPiwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT4u IERlZmF1bHQ6IDxjb2RlPnVsPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5uYXZicmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFjaCBp dGVtIHdpdGhpbiB0aGUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5s aTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2Y2xhc3M8L3NwYW4+ IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2YgdGhl IG5hdmlnYXRpb24gd3JhcHRhZy4gRGVmYXVsdDogPGNvZGU+c21kX2dhbGxlcnlfbmF2PC9j b2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lbXB0eWNsYXNzPC9zcGFuPiA6 IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIG9mIHRoZSBu YXZpZ2F0aW9uIGl0ZW1zIHRoYXQgYXJlIDxlbT5ub3Q8L2VtPiBsaW5rcy4gRGVmYXVsdDog PGNvZGU+ZW1wdHk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm1h dDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1c2luZyA8Y29kZT57 ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgZGF0ZSBm b3JtYXQgdXNlZC4gQ2FuIHRha2UgYW55IDxhIGhyZWY9Imh0dHA6Ly91ay5waHAubmV0L3N0 cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiB2YWx1ZXMuIERlZmF1bHRzIHRvIHRoZSBkYXRlIHN5 c3RlbSBhcyBzZXQgaW4gdGhlIHNpdGUmIzgyMTc7cyBwcmVmczwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5sYW5nPC9zcGFuPiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5vbmx5 IGlmIHVzaW5nIDxjb2RlPntkYXRlfTwvY29kZT48L3NwYW4+KSA6IHNldHMgdGhlIGxhbmd1 YWdlIGNvZGUgb2YgdGhlIGRhdGUgZm9ybWF0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmdtdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1c2luZyA8 Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiByZXR1cm5zIGVpdGhlciBsb2NhbCB0aW1l IGFjY29yZGluZyB0byB0aGUgc2V0IHRpbWUgem9uZSBwcmVmZXJlbmNlcyAoMCksIG9yIDxz cGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3NwYW4+IHRpbWUgKDEpLiBEZWZhdWx0OiAwPC9saT4K CTwvdWw+CgoJPGg0PlBsdWdpbiBjdXN0b21pc2F0aW9uPC9oND4KCgk8dWw+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRlciBm b3Igc3BlY2lmeWluZyBhdHRyaWJ1dGUgbGlzdHMuIERlZmF1bHQgaXMgY29tbWEgKCwpPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhcmFtZGVsaW08L3NwYW4+IDogY2hhbmdl IHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgaW50ZXItcGFyYW1ldGVyIGF0dHJpYnV0 ZXMuIERlZmF1bHQgaXMgY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmNvbGxhdGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8YSBocmVmPSIjY29s bGF0ZV9tb2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmNvbGxhdGVkZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGltaXRlciBiZXR3ZWVu IGVhY2ggY29sbGF0ZWQgaXRlbS4gRGVmYXVsdCBpcyBjb21tYSAoLCk8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y29tYm88L3NwYW4+IDogc3BlY2lmeSB5b3VyIG93biA8YSBo cmVmPSIjY29tYm9zIj5jdXN0b20gcmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+ZXNjYXBlPC9zcGFuPiA6IGxpc3Qgb2YgcmVwbGFjZW1lbnQg dmFyaWFibGUgbmFtZXMgdG8gJiM4MjE2O2VzY2FwZSYjODIxNzssIGluIG90aGVyIHdvcmRz IGNvbnZlcnQgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWdzIHRvIHRo ZWlyIGNoYXJhY3RlciBlbnRpdHkgZXF1aXZhbGVudHMuIFNldCB0byA8Y29kZT5lc2NhcGU9 JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0dXJuIHRoaXMgZmVhdHVyZSBvZmYuIFlvdSBjYW4g ZXNjYXBlIHlvdXIgb3duIGNvbWJvcy4gRGVmYXVsdDogPGNvZGU+YWx0LCB0aXRsZSwgY2Fw dGlvbjwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RyaWN0ZmllbGRz PC9zcGFuPiA6IHdoZW4gdXNpbmcgJiM4MjE2Oz8mIzgyMTc7IG9yICYjODIxNjshJiM4MjE3 OyBmaWVsZHMsIHNwYWNlcyBhcmUgYWxsb3dlZCBpbiBmaWVsZCBuYW1lcy4gU2V0IDxjb2Rl PnN0cmljdGZpZWxkcz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byBmb3JiaWQgc3BhY2VzLiBE ZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdhbGxlcnlpZDwvc3Bh bj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQg dGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElEIGJhc2VkIG9uIHRo ZSBzdXBwbGllZCBhdHRyaWJ1dGVzIHNvIHlvdSBtYXkgdXNlIG1vcmUgdGhhbiBvbmUgZ2Fs bGVyeSBvbiBhIHBhZ2UgYW5kIG5hdmlnYXRlIHRoZW0gaW5kZXBlbmRlbnRseS4gSW4gdGhl IHVubGlrZWx5IGV2ZW50IHRoYXQgdHdvIGlkZW50aWNhbCBJRHMgYXJlIGdlbmVyYXRlZCB5 b3UgY2FuIG92ZXJyaWRlIHRoZSBJRCBmb3IgYSBnYWxsZXJ5IGJ5IHVzaW5nIHRoaXMgYXR0 cmlidXRlLjxkaXYgY2xhc3M9ImJyZWFrIj5JbnRlcm5hbGx5IHRoZSBwbHVnaW4gZ2VuZXJh dGVzIGEgMzItY2hhcmFjdGVyIGhhc2ggc3RyaW5nIGZvciBlYWNoIHRhZywgdGhlbiBwaWNr cyBhIDQtY2hhciBjb2RlIGZyb20gdGhpcyBzdHJpbmcgKGl0IHRha2VzIGV2ZXJ5IDZ0aCBj aGFyYWN0ZXIgYnkgZGVmYXVsdCkuIFlvdSBjYW4gc3VwcGx5IGEgdW5pcXVlIGZpeGVkIHN0 cmluZyAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7TXlHYWwmcXVvdDs8L2NvZGU+KSBv ciBnaXZlIGl0IGEgcXVlc3Rpb24gbWFyayBhbmQgMiBudW1iZXJzIHNlcGFyYXRlZCBieSBh IGNvbG9uIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/NTo0JnF1b3Q7PC9jb2RlPiku IFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZmluYWwgc3RyaW5nIHRv IGdlbmVyYXRlLCB0aGUgc2Vjb25kIG51bWJlciBpcyBob3cgbWFueSBjaGFyYWN0ZXJzIHRv IHNraXAgaW4gdGhlIDMyLWNoYXIgc3RyaW5nIGVhY2ggdGltZSBpdCBwaWNrcyBvbmUuPC9k aXY+PGRpdiBjbGFzcz0iYnJlYWsiPkluIHRoaXMgY2FzZSBpdCBnZW5lcmF0ZXMgYSA1LWNo YXJhY3RlciBzdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVycyBpdCBmaW5kcyBhdCBwb3NpdGlv bnMgMSw1LDksMTMsIGFuZCAxNy4gSWYgeW91IG9taXQgdGhlIDJuZCBudW1iZXIgKGUuZy4g PGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz82JnF1b3Q7PC9jb2RlPikgaXQgd2lsbCBhc3N1bWUg aXQmIzgyMTc7cyBhbiBpbmNyZW1lbnQgb2YgMTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj50aHVtYjwvc3Bhbj4gOiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLCB0aHVt Ym5haWxzIHVzZSB0aGUgJiM4MjE2O3QmIzgyMTc7IGltYWdlIGluIHlvdXIgPGNvZGU+aW1h Z2VzPC9jb2RlPiBkaXJlY3RvcnkgYW5kIHRoZSBmdWxsIHNpemUgcGljdHVyZXMgZG9uJiM4 MjE3O3QuIElmIHlvdSB3aXNoIHRvIHJlZGVmaW5lIHRoaXMgeW91IG1heSBzcGVjaWZ5IHVw IHRvIHR3byB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGEgY29sb24uIFRoZSBmaXJzdCBpbmRpY2F0 ZXMgdGhlIHN0YXRlIG9mIHRoZSBmdWxsIHNpemUgaW1hZ2UsIGFuZCB0aGUgc2Vjb25kIGlz IHRoZSBzdGF0ZSBvZiB0aGUgdGh1bWJuYWlsOgoJPHVsPgoJCTxsaT50aHVtYj0wOjEgJiM4 MjEyOyBmdWxsc2l6ZSA9IHJlZ3VsYXIgaW1hZ2UgOiB0aHVtYm5haWwgPSB0aHVtYjwvbGk+ CgkJPGxpPnRodW1iPTE6MCAmIzgyMTI7IGZ1bGxzaXplID0gdGh1bWIgOiB0aHVtYm5haWwg PSByZWd1bGFyIGltYWdlPC9saT4KCQk8bGk+dGh1bWI9MDowIChvciB0aHVtYj0wKSAmIzgy MTI7IGZ1bGxzaXplID0gcmVndWxhciBpbWFnZSA6IHRodW1ibmFpbCA9IHJlZ3VsYXIgaW1h Z2U8L2xpPgoJCTxsaT50aHVtYj0xOjEgKG9yIHRodW1iPTEpICYjODIxMjsgZnVsbHNpemUg PSB0aHVtYiA6IHRodW1ibmFpbCA9IHRodW1iPC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnRleHQ8L3NwYW4+IDogZGlzcGxheSB0aGUgZ2l2ZW4gdGV4dCBp bnN0ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0ZXh0IGNhbiBjb250YWluIDxjb2RlPj88L2Nv ZGU+IGFydGljbGUgZmllbGRzPC9saT4KCTwvdWw+CgoJPGg0PlNwZWNpYWwgYXR0cmlidXRl czwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29sdW1uczwvc3Bhbj4g OiBnaXZlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBjb2x1bW5zIHlv dSB3b3VsZCBsaWtlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIEVhY2ggaXRlbSB5b3Ug c3BlY2lmeSBpcyBzcGxpdCBpbnRvIHRocmVlIHBhcnRzOiA8Y29kZT50YWJsZS5jb2x1bW46 cmVwbGFjZW1lbnQgbmFtZTwvY29kZT4uIFRoZSBvbmx5IG1hbmRhdG9yeSBwYXJ0IGlzIHRo ZSByZXBsYWNlbWVudCBuYW1lLCBzaW5jZSA8Y29kZT50YWJsZTwvY29kZT4gZGVmYXVsdHMg dG8gdHhwX2ltYWdlLCBhbmQgdGhlIDxjb2RlPmNvbHVtbjwvY29kZT4gZGVmYXVsdHMgdG8g dGhlIHNhbWUgbmFtZSBhcyB0aGUgcmVwbGFjZW1lbnQgeW91IHNwZWNpZnkuPGRpdiBjbGFz cz0iYnJlYWsiPkZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIGNub19p bWFnZV9vcmRlciBwbHVnaW4geW91IGNvdWxkIHVzZSA8Y29kZT5jb2x1bW5zPSZxdW90O3Bv c2l0aW9uJnF1b3Q7PC9jb2RlPiwgc2luY2UgdGhlIHBsdWdpbiBhZGRzIHRoZSAmIzgyMTY7 cG9zaXRpb24mIzgyMTc7IGNvbHVtbiB0byB0eHBfaW1hZ2UuIFlvdSBjb3VsZCB0aGVuIHNv cnQgYnkgPGNvZGU+cG9zaXRpb248L2NvZGU+IGFuZCBhbHNvIGRpc3BsYXkgdGhlIGltYWdl JiM4MjE3O3MgPGNvZGU+e3Bvc2l0aW9ufTwvY29kZT4uIElmIHlvdSB3aXNoZWQgdG8gcmVu YW1lIHRoZSB2YXJpYWJsZSB0bywgc2F5LCA8Y29kZT5pbWdwb3M8L2NvZGU+IHlvdSB3b3Vs ZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3NpdGlvbjppbWdwb3MmcXVvdDs8L2NvZGU+ LiBOb3RlIHRoYXQgaWYgeW91IHNwZWNpZnkgdGhlIHRhYmxlIG5hbWUgeW91IG11c3QgYWxz byBpbmNsdWRlIHRoZSB0YWJsZSBwcmVmaXggaWYgeW91IGhhdmUgdXNlZCBvbmUuPC9kaXY+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRpcmVjdG9yeTwvc3Bhbj4gOiAoPHNw YW4gY2xhc3M9InJlcXVpcmVkIj5leHBlcmltZW50YWw8L3NwYW4+KSByZWFkIGltYWdlcyBm cm9tIGEgbGlzdCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj5zKSBpbnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBk YXRhYmFzZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXRjaDwvc3Bhbj4gOiBs aW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9zZW4gaW4gPGNvZGU+ZGlyZWN0 b3J5PC9jb2RlPiBtb2RlLiBHaXZlIGEgbGlzdCBvZiB3b3JkcyB0byBpbmNsdWRlIG9yICFl eGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2lsbCBiZSBj aG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2ggdGVybXMgYXJlIGF1 dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIyMTsgc28gYW55IHBh cnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRoZSBtYXRjaDwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bhbj4gOiB0dXJuIG9uIGRpYWdu b3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkgZnJvbSAwIChub25lKSB0byA0 IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImdhbGxlcnlfZm9ybSI+R2FsbGVyeSBm b3JtPC9oMj4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4gaXMgd2hlcmUgeW91IGRlc2ln biB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlrZSBvbiB0aGUgc2NyZWVuLiBZ b3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFu PiBtYXJrdXAgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncyBhcyBub3Jt YWwuIEluIGtleSBwbGFjZXMgd2hlcmUgeW91IHdhbnQsIGZvciBleGFtcGxlLCBhbiBpbWFn ZSBJRCAvIGFsdCB0YWcgLyBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5ZWQsIHlvdSBzcGVj aWZ5IHNwZWNpYWwgcmVwbGFjZW1lbnQgdGFncywgZGV0YWlsZWQgYmVsb3cuIFRoZXNlIGFy ZSByZXBsYWNlZCBmb3IgZWFjaCBpbWFnZSBpbiB0dXJuLCB0aHVzIGJ1aWxkaW5nIHVwIHRo ZSBnYWxsZXJ5LjwvcD4KCgk8cD5JbiBjb2xsYXRlIG1vZGUsIHRoZSBpbWFnZSBkZXRhaWxz IGFyZSBpbnN0ZWFkIG1hZGUgaW50byBsaXN0cy4gVGhlIGZvcm0gaXMgb25seSBwcm9jZXNz ZWQgb25jZSBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgb3V0cHV0IHRoZSBlbnRpcmUgbGlz dC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9nYWxsZXJ5Ij5SZXBsYWNlbWVu dCB0YWdzOiBnYWxsZXJ5PC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 aWR9PC9zcGFuPiA6IGltYWdlIElEIChvciwgaW4gZGlyZWN0b3J5IG1vZGUsIHRoZSBmaWxl bmFtZSB3aXRob3V0IGl0cyBleHRlbnNpb24pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntuYW1lfTwvc3Bhbj4gOiBmdWxsIGltYWdlIGZpbGVuYW1lIGFzIGRlZmluZWQgaW4g dGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1ZGluZyBleHRlbnNpb248L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e2V4dH08L3NwYW4+IDogZmlsZSBleHRlbnNpb24sIGluY2x1 ZGluZyBkb3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NhdGVnb3J5fTwvc3Bh bj4gOiBpbWFnZSBjYXRlZ29yeSBuYW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PntjYXRlZ29yeV90aXRsZX08L3NwYW4+IDogaW1hZ2UgY2F0ZWdvcnkgdGl0bGU8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2F1dGhvcn08L3NwYW4+IDogd2hvIHVwbG9hZGVk IHRoZSBpbWFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dXJsfTwvc3Bhbj4g OiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgZnVsbHNpemUgaW1hZ2U8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1idXJsfTwvc3Bhbj4gOiA8c3Bh biBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1bWJuYWlsPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZXBhdGh9PC9zcGFuPiA6IGRpcmVjdG9yeSB0aGUg aW1hZ2UgaXMgaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2ltYWdlZGVmfTwv c3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUgaW1hZ2UgKGUuZy4gNS5q cGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmRlZn08L3NwYW4+IDog anVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIHRodW1ibmFpbCAoZS5nLiA1dC5qcGcp PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnthbHR9PC9zcGFuPiA6IGFsdCB0ZXh0 PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aXRsZX0gb3Ige2NhcHRpb259PC9z cGFuPiA6IGNhcHRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2RhdGV9PC9z cGFuPiA6IGltYWdlIHVwbG9hZCBkYXRlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pnt3aWR0aH08L3NwYW4+IDogaW1hZ2Ugd2lkdGg8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e2hlaWdodH08L3NwYW4+IDogaW1hZ2UgaGVpZ2h0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnt3dW5pdHN9PC9zcGFuPiA6IGltYWdlIHdpZHRoIHVuaXRzIChlLmcu IHB4LCAlLCBlbSwgZXRjLik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2h1bml0 c308L3NwYW4+IDogaW1hZ2UgaGVpZ2h0IHVuaXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnt0aHVtYndpZHRofTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lkdGg8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaGVpZ2h0fTwvc3Bhbj4gOiB0aHVtYm5haWwg aGVpZ2h0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYnd1bml0c308L3Nw YW4+IDogdGh1bWJuYWlsIHdpZHRoIHVuaXRzIChlLmcuIHB4LCAlLCBlbSwgZXRjLik8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaHVuaXRzfTwvc3Bhbj4gOiB0aHVt Ym5haWwgaGVpZ2h0IHVuaXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntoYXN0 aHVtYn08L3NwYW4+IDogaWYgdGhlIGltYWdlIGhhcyBhbiBhc3NvY2lhdGVkIHRodW1ibmFp bCBvciBub3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2dhbGxlcnlpZH08L3Nw YW4+IDogZ2FsbGVyeSBpZCB0aGF0IHlvdSBvciB0aGUgcGx1Z2luIGFzc2lnbmVkPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntvYmplY3R9PC9zcGFuPiA6IGEgc3BlY2lhbCBp dGVtIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSA8Y29kZT50ZXh0PC9jb2RlPiBPUiB0aGUgaW1h Z2UgdGFnIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRodW1ibmFpbCwgYnV0IDxlbT5vbmx5PC9l bT4gaWYgPGNvZGU+dGh1bWJsaW1pdDwvY29kZT4gYWxsb3dzIGl0LiBlLmcuIGlmIDxjb2Rl PnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdGhpcyB2YXJpYWJsZSBpcyBvbmx5 IHNldCBmb3IgdGhlIGZpcnN0IHRodW1ibmFpbCBpbiB0aGUgbGlzdDsgZXZlcnkgb3RoZXIg dGltZSBpdCBpcyBlbXB0eTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57Y291bnRl cn08L3NwYW4+IDogaW1hZ2UgY291bnRlciwgc3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1l bnRpbmcgZWFjaCB0aW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbmRleH08 L3NwYW4+IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7IHByb2JhYmx5IG5v dCBtdWNoIHVzZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iY291bnRl cn08L3NwYW4+IDogdGh1bWJuYWlsIGltYWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20gMS4g Tm90ZSBpdCBpcyAmIzgyMTY7cmVzZXQmIzgyMTc7IHdoZW5ldmVyIGFuIGVsZW1lbnQgZ2l2 ZW4gaW4gPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGRpZmZlcnMgZnJvbSB0aGUgcHJldmlvdXMg aXRlbTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJpbmRleH08L3NwYW4+ IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7IHByb2JhYmx5IG5vdCBtdWNo IHVzZSkuIEl0IGlzIHJlc2V0IGxpa2UgPGNvZGU+e3RodW1iY291bnRlcn08L2NvZGU+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGltYWdlc308L3NwYW4+IDogdG90 YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoaXMgcGFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiBhYnNvbHV0ZSBtYXhpbXVt IG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwvbGk+Cgk8L3VsPgoKCTxwPklu IGFkZGl0aW9uLCBpZiBlaXRoZXIgPGNvZGU+cGFnaW5nPSZxdW90OzEmcXVvdDs8L2NvZGU+ IG9yIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiBoYXZlIGJlZW4gc3BlY2lmaWVkLCBhbGwgdGhl IDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdpbmcgcmVwbGFjZW1lbnQgdGFnczwvYT4gYXJl IGF2YWlsYWJsZSB0b28uIElmIHRob3NlIGFyZW4mIzgyMTc7dCBlbm91Z2gsIHlvdSBjYW4g PGEgaHJlZj0iI2NvbWJvcyI+Y3JlYXRlIHlvdXIgb3duPC9hPiBieSBncm91cGluZyBjb21i aW5hdGlvbnMgb2YgdGhlIGFib3ZlLCBvcHRpb25hbGx5IHdpdGggYXJ0aWNsZSB2YXJpYWJs ZXMgc3VjaCBhcyA8Y29kZT4/ZXhjZXJwdDwvY29kZT4sIDxjb2RlPj9rZXl3b3JkczwvY29k ZT4sIDxjb2RlPj9hcnRpY2xlX2ltYWdlPC9jb2RlPiwgZXRjLjwvcD4KCgk8cD5PdGhlciB0 YWdzIGFyZSBhZGRlZCBkZXBlbmRpbmcgaWYgeW91IGFyZSB3YXRjaGluZyBmb3IgPGNvZGU+ b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRzLCBvciBpZiB5b3UgaGF2ZSBzcGVjaWZpZWQgYSA8 Y29kZT5ncm91cHRhZzwvY29kZT4uIElmIHlvdSBhZGRlZCA8Y29kZT5vbmNoYW5nZT0mcXVv dDthdXRob3IsIGNhdGVnb3J5JnF1b3Q7PC9jb2RlPiB0aGVuIGV2ZXJ5IHRpbWUgdGhlIGF1 dGhvciBvciBjYXRlZ29yeSBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cyBpbWFn ZSwgb25lIG9yIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyB3b3VsZCBiZWNvbWUgYXZhaWxh YmxlOyBuYW1lbHkgPGNvZGU+e29uY2hhbmdlOmF1dGhvcn08L2NvZGU+IGFuZCA8Y29kZT57 b25jaGFuZ2U6Y2F0ZWdvcnkpPC9jb2RlPi4gVXNpbmcgb25jaGFuZ2Ugd2l0aCA8Y29kZT5z bWRfZXZlcnk8L2NvZGU+IGRvZXMgPGVtPm5vdDwvZW0+IGFkZCBhIG5ldyByZXBsYWNlbWVu dCB0YWcgYXMgaXQgaXMgbWVyZWx5IHVzZWQgdG8gY291bnQuPC9wPgoKCTxwPklmIHlvdSB1 c2VkIDxjb2RlPmdyb3VwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT4gYXMgd2VsbCwgeW91 IHdvdWxkIGJlIGdpdmVuIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyBsYWJlbGxlZCA8Y29k ZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+LiBT ZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3IgZGV0YWlscy48L3A+CgoJPGgy IGlkPSJwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2gyPgoKCTxwPkFkZCBnYWxsZXJ5IG5h dmlnYXRpb24gdG8geW91ciBwYWdlLiBXb3JrcyBpbiBhIHNpbWlsYXIgbWFubmVyIHRvIHRo ZSA8YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5nYWxsZXJ5IGZvcm08L2E+OiBhIHNlcmllcyBv ZiByZXBsYWNlbWVudCB0YWdzIGdvdmVybiB3aGljaCBnYWxsZXJ5IG5hdmlnYXRpb24gaXRl bXMgYXJlIGF2YWlsYWJsZS4gWW91IGNvdWxkIGNob29zZSB0byBvbmx5IHNob3cgbmV4dC9w cmV2LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4gT3IgbnVtYmVyZWQgcGFnZSBs aW5rcy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9wYWdpbmciPlJlcGxhY2Vt ZW50IHRhZ3M6IHBhZ2luZzwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e25hdmZpcnN0fTwvc3Bhbj4gOiBmaXJzdCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7 Rmlyc3QmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZwcmV2fTwvc3Bhbj4gOiBwcmV2aW91cyBwYWdl IChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JmxhcXVvOyYjODIyMTsgLyA8c3BhbiBjbGFzcz0i Y2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmVh cmxpZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYmVmb3JlIHRoZSBjdXJyZW50IHBh Z2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN1cmx9PC9zcGFuPiA6 IGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGlu ayB0byBpdHNlbGY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN9PC9z cGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRob3V0IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gbGluazwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bGF0ZXJ9PC9z cGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dH08L3NwYW4+IDogbmV4dCBwYWdlIChk ZWZhdWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTsgLyA8c3BhbiBjbGFzcz0iY2Fw cyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhc3R9 PC9zcGFuPiA6IGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwO0xhc3QmIzgyMjE7 IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPntuYXZmaXJzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiB0byBmaXJzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntuYXZwcmV2cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBz Ij5VUkw8L3NwYW4+IHRvIHByZXZpb3VzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gdG8gY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntuYXZuZXh0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHRvIG5leHQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 bmF2bGFzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiB0byBsYXN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFs aW1hZ2VzfTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhl IGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dG90YWxwYWdl c308L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoaXMgY29sbGVjdGlvbjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiBhYnNv bHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwvbGk+Cgk8 L3VsPgoKCTxwPlRoZSBjdXJyZW50IHBhZ2UgaGFzIGEgZml4ZWQgY2xhc3Mgb2YgJiM4MjE2 O2N1cnJlbnQmIzgyMTc7IGFuZCBlYWNoIGl0ZW0gaXMsIGJ5IGRlZmF1bHQsIGEgPGNvZGU+ Jmx0O2xpJmd0OzwvY29kZT4gZm9yIGVhc3kgc3R5bGluZy4gQ3VzdG9tIGxhYmVscyBhcmUg ZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBpdHNlbGY7IGZvciBleGFtcGxlIHRvIGxh YmVsIHRoZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhl IGdhbGxlcnkgYXMgJiM4MjIwOzFzdCYjODIyMTssIHVzZTo8L3A+CgoJPHA+PGNvZGU+e25h dmZpcnN0OjFzdH08L2NvZGU+PC9wPgoKCTxwPldpdGggdGhpcyBzeW50YXggeW91IGNhbiBs YWJlbCBuYXZmaXJzdCwgbmF2bGFzdCwgbmF2cHJldiwgbmF2bmV4dCBhbmQgbmF2dGhpcyAo dGhlICYjODIxNjs6JiM4MjE3OyBkZWxpbWl0ZXIgaW4gdGhpcyBjYXNlIGlzIHNwZWNpZmll ZCBieSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPikuIFlvdSBjYW4gdXNlIHRoaXMgbWVjaGFu aXNtIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc25pcHBldHMsIGUu Zzo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMjfTwvY29kZT48L3A+ CgoJPHA+WW91IGFyZSBub3QgbGltaXRlZCB0byB0ZXh0IGxhYmVscy4gSW1hZ2VzIGNvdWxk IGJlIHVzZWQ6PC9wPgoKCTxwPjxjb2RlPntuYXZsYXN0OiAmbHQ7aW1nIHNyYz0mcXVvdDtp bWFnZXMvbGFzdC5wbmcmcXVvdDsgLyZndDt9PC9jb2RlPjwvcD4KCgk8cD5Zb3UgY2FuIG92 ZXJyaWRlIHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIGJ5IG5hdmVhcmxpZXIgYW5k IG5hdmxhdGVyIGJ5IHNwZWNpZnlpbmcgYSBjb2xvbiBhbmQgYSBudW1iZXIuIFNvIHRvIG9u bHkgc2hvdyAyIGl0ZW1zIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJyZW50IHBhZ2UgYW5kIDMg aXRlbXMgdG8gdGhlIHJpZ2h0LCB1c2UgPGNvZGU+e25hdmVhcmxpZXI6Mn0ge25hdmxhdGVy OjN9PC9jb2RlPiBpbiB5b3VyIGZvcm0uIElmIHlvdSB3ZXJlIG9uIHBhZ2UgOSBvZiAxNSwg e25hdmVhcmxpZXI6NH0ge25hdmxhdGVyOjN9IHdvdWxkIHNob3cgPGNvZGU+Jmx0OyZsdDsg NSA2IDcgOCA5IDEwIDExIDEyICZndDsmZ3Q7PC9jb2RlPjwvcD4KCgk8cD5DdXJyZW50bHkg PGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxhdGVyfTwvY29kZT4g b25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlkZWFzIG9uIGhvdyB0byBvZmZl ciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD4KCgk8aDIg aWQ9ImNvdW50Zm9ybSI+Q291bnQgZm9ybXM8L2gyPgoKCTxwPlNvbWV0aW1lcyBpdCYjODIx NztzIGhhbmR5IHRvIGJlIGFibGUgdG8gdGFrZSBhY3Rpb24gb25seSB3aGVuIGNlcnRhaW4g aW1hZ2VzIGFyZSByZWFjaGVkOyBmb3IgZXhhbXBsZTo8L3A+CgoJPHVsPgoJCTxsaT5vbmx5 IGRpc3BsYXkgc29tZXRoaW5nIG9uIHRoZSBmaXJzdCBvciBsYXN0IGltYWdlPC9saT4KCQk8 bGk+c3RhcnQgYSBuZXcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ICYjODIxNjty b3cmIzgyMTc7IGV2ZXJ5IDNyZCBpbWFnZTwvbGk+CgkJPGxpPmJyZWFrIHlvdXIgZ2FsbGVy eSB1cCB3aXRoIGFuIGFkdmVydDwvbGk+Cgk8L3VsPgoKCTxwPlRoaXMgY2FuIGJlIGRvbmUg d2l0aCBzbWRfaWYgYnV0IHNpbmNlIGl0IGlzIHN1Y2ggYSBjb21tb24gZmVhdHVyZSwgdGhl IHBsdWdpbiBoYXMgdGhlIGFiaWxpdHkgYnVpbHQgaW4uIEFsbCByZXBsYWNlbWVudCB0YWdz IGFyZSBhdmFpbGFibGUgd2l0aGluIHlvdXIgY291bnRmb3JtcyBzbyB5b3UgY2FuIGRvIHNv bWUgcHJldHR5IG5lYXQgc3R1ZmYuIEl0IGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6 PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzE6Z2FsX2hlYWQmcXVv dDs8L2NvZGU+IDogdGhpcyB3b3VsZCBvdXRwdXQgdGhlIGZvcm0gPGVtPmdhbF9oZWFkPC9l bT4gb25seSB3aGVuIHRoZSBmaXJzdCBpbWFnZSBpcyBkaXNwbGF5ZWQ8L2xpPgoJCTxsaT48 Y29kZT5jb3VudGZvcm09JnF1b3Q7e3RvdGFsaW1hZ2VzfTpnYWxfZm9vdCZxdW90OzwvY29k ZT4gOiB0aGlzIHdvdWxkIG91dHB1dCB0aGUgZm9ybSA8ZW0+Z2FsX2Zvb3Q8L2VtPiBvbmx5 IHdoZW4gdGhlIGxhc3QgaW1hZ2UgaXMgZGlzcGxheWVkPC9saT4KCQk8bGk+PGNvZGU+Y291 bnRmb3JtPSZxdW90OzE6Z2FsX2hlYWQsIHt0b3RhbGltYWdlc306Z2FsX2Zvb3QmcXVvdDs8 L2NvZGU+IDogZG8gYm90aCBvZiB0aGUgYWJvdmU8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZv cm09JnF1b3Q7MTpnYWxfaGVhZCwge3RvdGFsaW1hZ2VzfTpnYWxfZm9vdDpzbWRfYmVsb3cm cXVvdDs8L2NvZGU+IDogdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIGV4YW1wbGUsIGJ1dCBw dXQgdGhlIGNvbnRlbnRzIGJlbG93IHRoZSBsYXN0IGltYWdlIChieSBkZWZhdWx0LCBhbGwg b3V0cHV0IGFwcGVhcnMgYWJvdmUgdGhlIGdpdmVuIGltYWdlKTwvbGk+CgkJPGxpPjxjb2Rl PmNvdW50Zm9ybT0mcXVvdDs0Ojk6c21kX2JlbG93OmdhbF9hZCZxdW90OzwvY29kZT4gOiBv dXRwdXQgPGVtPmdhbF9hZDwvZW0+IGFmdGVyIHRoZSA0dGggYW5kIDl0aCBpbWFnZXMgb25s eTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6MzpnYWxfcm93 JnF1b3Q7PC9jb2RlPiA6IG91dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9yZSBldmVyeSAz cmQgaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7c21kX2V2ZXJ5OjI6 ITg6Z2FsX3JvdyZxdW90OzwvY29kZT4gOiBvdXRwdXQgPGVtPmdhbF9yb3c8L2VtPiBiZWZv cmUgZXZlcnkgZXZlbiBpbWFnZSBidXQgbm90IG9uIHRoZSA4dGggaW1hZ2U8L2xpPgoJCTxs aT48Y29kZT5jb3VudGZvcm09JnF1b3Q7OmdhbF9yb3cmcXVvdDs8L2NvZGU+IDogdXNlIGFu IGVtcHR5IGZpcnN0IHZhbHVlIHRvIG91dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9yZSBl dmVyeSBpbWFnZS4gVGhpcyBtYXkgc2VlbSB1c2VsZXNzLCBidXQgaXQgbWVhbnMgeW91IGNh biB1c2UgdHdvLCB0aHJlZSwgZm91ciYjODIzMDsgZm9ybXMgKG9yIGFueSBudW1iZXIgb2Yg Zm9ybXMgYW5kIHRoZSBjb250YWluZXIpIHNpbXVsdGFuZW91c2x5IHRvIGl0ZXJhdGUgb3Zl ciB0aGUgc2FtZSBnYWxsZXJ5LiBPciB1c2UgdGhlIHNhbWUgZm9ybSBhdCBkaWZmZXJlbnQg ZnJlcXVlbmNpZXMuIEdldCBjcmVhdGl2ZSE8L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09 JnF1b3Q7OiE1OmdhbF9yb3c6c21kX2JlbG93JnF1b3Q7PC9jb2RlPiA6IGFnYWluLCBtaXNz aW5nIG91dCB0aGUgZmlyc3QgdmFsdWUgd2lsbCBvdXRwdXQgZ2FsX3JvdyBhZnRlciBldmVy eSBpbWFnZSwgYnV0IHRoaXMgdGltZSBza2lwcGluZyB0aGUgNXRoIGltYWdlPC9saT4KCTwv dWw+CgoJPHA+VGhlIDxjb2RlPiw8L2NvZGU+IGFuZCA8Y29kZT46PC9jb2RlPiBjYW4gYmUg b3ZlcnJpZGRlbiB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYW5kIDxjb2RlPnBhcmFt ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZXMsIHJlc3BlY3RpdmVseS48L3A+CgoJPHA+VGhlcmUg YXJlIGEgZmV3IHJ1bGVzIHdoZW4gdXNpbmcgdGhlIGNvdW50Zm9ybTo8L3A+CgoJPHVsPgoJ CTxsaT5udW1iZXJzIG11c3QgYXBwZWFyIGJlZm9yZSB0aGUgZm9ybSBuYW1lPC9saT4KCQk8 bGk+dGhlIGZvcm0gbmFtZSBpcyB1c3VhbGx5IHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGNvbG9u LXNlcGFyYXRlZCBsaXN0LCB0aG91Z2ggeW91IGNhbiBwdXQgPGNvZGU+c21kX2Fib3ZlPC9j b2RlPiBvciA8Y29kZT5zbWRfYmVsb3c8L2NvZGU+IGxhc3QgaWYgeW91IHdpc2g8L2xpPgoJ CTxsaT48Y29kZT5zbWRfZXZlcnk8L2NvZGU+IG9ubHkgYWZmZWN0cyB0aGUgdmFsdWUgdGhh dCA8ZW0+aW1tZWRpYXRlbHk8L2VtPiBmb2xsb3dzIGl0LCBlLmcuIDxjb2RlPmNvdW50Zm9y bT0mcXVvdDtzbWRfZXZlcnk6NTo3OjEyOm15X2FkJnF1b3Q7PC9jb2RlPiB3aWxsIG91dHB1 dCA8ZW0+bXlfYWQ8L2VtPiBhdCBldmVyeSA1dGggaW1hZ2UsIGFzIHdlbGwgYXMgPGVtPm9u bHk8L2VtPiBvbiB0aGUgN3RoIGFuZCAxMnRoIGltYWdlcy4gVGh1cyB0aGUgc2VxdWVuY2Ug d291bGQgYmUgNSwgNywgMTAsIDEyLCAxNSwgMjAsIDI1LCAzMCYjODIzMDs8L2xpPgoJCTxs aT5pZiB1c2luZyA8Y29kZT5zbWRfZXZlcnk8L2NvZGU+LCBpdCA8c3Ryb25nPm11c3Q8L3N0 cm9uZz4gYXBwZWFyIGFzIHRoZSBmaXJzdCBpdGVtLiBGb3IgZXhhbXBsZSA8Y29kZT5jb3Vu dGZvcm09JnF1b3Q7NDp0aGVfZm91cnRoLCA2OnNtZF9ldmVyeTo1Om15X2FkJnF1b3Q7PC9j b2RlPiBpcyBpbnZhbGlkLCBidXQgPGNvZGU+Y291bnRmb3JtPSZxdW90OzQ6dGhlX2ZvdXJ0 aCwgc21kX2V2ZXJ5OjU6NjpteV9hZCZxdW90OzwvY29kZT4gaXMgT0s8L2xpPgoJPC91bD4K Cgk8cD5TZWUgPGEgaHJlZj0iI2VnMTAiPmV4YW1wbGUgMTA8L2E+IGZvciBtb3JlLjwvcD4K Cgk8aDIgaWQ9ImNvbWJvcyI+Q29tYm9zPC9oMj4KCgk8cD5JZiB0aGUgYnVpbHQtaW4gPGEg aHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPiBhcmVuJiM4MjE3O3Qg ZW5vdWdoIGZvciB5b3VyIG5lZWRzIG9yIHlvdSBmaW5kIHlvdXJzZWxmIHJlcGVhdGluZyB0 aGUgc2FtZSBjb21iaW5hdGlvbiBhbmQgd2FudCB0byBzYXZlIHlvdXJzZWxmIHNvbWUgdHlw aW5nLCB5b3UgY2FuIGRlZmluZSB5b3VyIG93bi4gVGhlIHN5bnRheCBpczo8L3A+CgoJPHA+ PGNvZGU+Y29tYm89JnF1b3Q7bmV3dGFnMTpkZWZpbml0aW9uLCBuZXd0YWcyOmRlZmluaXRp b24sIC4uLiZxdW90OzwvY29kZT48L3A+CgoJPHA+JiM4MjE2O2RlZmluaXRpb24mIzgyMTc7 IGNhbiBiZSBhbnkgZml4ZWQgdGV4dCwgYW55IGV4aXN0aW5nIHJlcGxhY2VtZW50IHRhZywg b3IgYW55ICYjODIxNjs/JiM4MjE3OyBhcnRpY2xlIHZhcmlhYmxlIHNvIHlvdSBjYW4gZ2V0 IHJlYWxseSB3aWxkIGhlcmUsIGZvciBleGFtcGxlOjwvcD4KCgk8cD48Y29kZT5jb21ibz0m cXVvdDtpbWdpbjpmb3VuZCBpbiA/cyBbdGFnZ2VkIHdpdGggP2tleXdvcmRzLiBQaG90byBi eSB7YXV0aG9yfV0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPk9uY2UgZGVmaW5lZCwgPGNvZGU+ e2ltZ2lufTwvY29kZT4gaXMgYXZhaWxhYmxlIHRvIHlvdXIgZ2FsbGVyeSA8Y29kZT5mb3Jt PC9jb2RlPiBhbmQgbWlnaHQgYmUgcmVwbGFjZWQgd2l0aCAmIzgyMjA7Zm91bmQgaW4gem9v IFt0YWdnZWQgd2l0aCB6ZWJyYSwgYWZyaWNhLCBzdHJpcGVzLiBQaG90byBieSBCbG9rZV0m IzgyMjE7LiAkcHJldGV4dCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgdGhvc2UgZ2Vla3Mgd2hv IGtub3cgd2hhdCYjODIxNztzIGluIGl0ICh0ZW1wb3JhcmlseSB1c2UgPGNvZGU+ZGVidWc9 JnF1b3Q7NCZxdW90OzwvY29kZT4gdG8gdmlldyBhbGwgYXZhaWxhYmxlIGFydGljbGUgdmFy aWFibGVzKS48L3A+CgoJPHA+T25lIHRoaW5nIHRvIHdhdGNoIG91dCBmb3IgaXMgdGhhdCB0 aGUgc3BhY2UgY2hhcmFjdGVyIGlzbiYjODIxNzt0IG5lY2Vzc2FyaWx5IGEgZGVsaW1pdGVy IGZvciA8Y29kZT4/PC9jb2RlPiB2YXJpYWJsZXMgKGJlY2F1c2UgY3VzdG9tIGZpZWxkcyBj YW4gaGF2ZSBzcGFjZXMgaW4gdGhlbSkuIFNvIDxjb2RlPmNvbWJvPSZxdW90O2RvZXNub3R3 b3JrOj9zIGluID9jYXRlZ29yeTEmcXVvdDs8L2NvZGU+IHdpbGwgbG9vayBmb3IgYSB2YXJp YWJsZSBsYWJlbGxlZCAmIzgyMjA7cyBpbiYjODIyMTsgYW5kIG9uZSBjYWxsZWQgJiM4MjIw O2NhdGVnb3J5MSYjODIyMTsuIE9ubHkgb25lIG9mIHRob3NlIGV4aXN0cyEgQ2xldmVyIHVz ZSBvZiBwYXJlbnRoZXNlcyBvciBvdGhlciBwdW5jdHVhdGlvbiBjYW4gd29yayByb3VuZCB0 aGlzLiBPciB1c2UgPGNvZGU+c3RyaWN0ZmllbGRzPSZxdW90OzAmcXVvdDs8L2NvZGU+IHRv IHR1cm4gb2ZmIHRoZSB1c2Ugb2Ygc3BhY2VzIGluIGN1c3RvbSBmaWVsZCBuYW1lcy48L3A+ CgoJPGgyIGlkPSJjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9kZTwvaDI+CgoJPHA+SWYgeW91 IHdhbnQgdG8gZ2V0IDxlbT5yZWFsbHk8L2VtPiBmdW5reSB5b3UgY2FuIHB1dCB0aGUgcGx1 Z2luIGludG8gYSAybmQgbW9kZSBjYWxsZWQgJiM4MjIwO2NvbGxhdGlvbiBtb2RlJiM4MjIx Oy4gVGhpcyBtZWFucyB5b3VyIGNob3NlbiBmb3JtIGlzIDxzdHJvbmc+bm90PC9zdHJvbmc+ IGV4ZWN1dGVkIGZvciBldmVyeSBpbWFnZTsgaXQgaXMgb25seSB1c2VkIG9uY2UgYXQgdGhl IHZlcnkgZW5kIG9mIHRoZSBsaXN0LCBhZnRlciBhbGwgdGhlIGltYWdlcyBoYXZlIGJlZW4g aW50ZXJuYWxseSAmIzgyMjA7Y29sbGVjdGVkJiM4MjIxOy4gSW4gZWZmZWN0LCB0aGUgcGx1 Z2luIGJ1aWxkcyB1cCBhIGdpYW50IGFycmF5IG9mIGFsbCBtYXRjaGluZyBpbWFnZXMgcmVh ZHkgZm9yIHlvdSB0byBvdXRwdXQgdGhlbSBhbGwgaW4gb25lIGdvLiBUaGlzIGlzIHZlcnkg aGFuZHkgZm9yIGRvaW5nIHNsaWRlc2hvd3MgYW5kIGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4 YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+ CgoJPHA+c3dpdGNoZXMgY29sbGF0aW9uIG1vZGUgb24uIElmIHRoZSBwbHVnaW4gbWF0Y2hl ZCA0IGltYWdlcyBhbmQgeW91IHdlcmUgdG8gdXNlIHRoZSByZXBsYWNlbWVudCB0YWcgPGNv ZGU+e25hbWV9PC9jb2RlPiBpbiB5b3VyIGZvcm0gbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IHtu YW1lfQo8L2NvZGU+PC9wcmU+CgoJPHA+eW91IG1pZ2h0IGdldCB0aGlzOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6 IGhlcm9uLmpwZyxwZW5ndWluLmpwZyxlbXUuanBnLHB1ZmZpbi5qcGcKPC9jb2RlPjwvcHJl PgoKCTxwPlNvbWV0aW1lcyBpdCYjODIxNztzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIHB1dCBx dW90ZXMgYXJvdW5kIGVhY2ggaXRlbSBzbyB5b3UgY2FuIHRlbGwgY29sbGF0ZSBtb2RlIHRv IGRvIHRoYXQgaW5zdGVhZDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7 bmFtZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPllvdSB3b3VsZCB0aGVuIGdldDo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1h Z2VzOiAmcXVvdDtoZXJvbi5qcGcmcXVvdDssJnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1 b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZmaW4uanBnJnF1b3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1hIGluIHRoaXMgY2FzZSkgY2FuIGJlIG92ZXJy aWRkZW4gd2l0aCB0aGUgPGNvZGU+ZGVsaW08L2NvZGU+IGF0dHJpYnV0ZS4gWW91IG1heSB1 c2UgPGNvZGU+c2dscXVvdGU8L2NvZGU+IHRvIHdyYXAgc2luZ2xlIHF1b3RlcyByb3VuZCB0 aGUgaXRlbXMsIG9yICYjODIyMDtkYmxxdW90ZSYjODIyMTsgYXMgYSBzeW5vbnltIGZvciAm IzgyMjA7cXVvdGUmIzgyMjE7IGlmIHlvdSBwcmVmZXIuIFlvdSBjYW4gcXVvdGUgbW9yZSB0 aGFuIG9uZSB0aGluZyBhdCBvbmNlIGJ5IHNwZWNpZnlpbmcgdGhlIGl0ZW1zIGFzIGEgZGVs aW1pdGVkIGxpc3Q6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9 OnthbHR9OntpbWdpbn0mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPlllcywgeW91IGNhbiB1c2Ug Y29tYm9zISBUaGUgZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBpdGVtcyBjYW4gYmUgb3ZlcnJp ZGVuIHdpdGggdGhlIDxjb2RlPmNvbGxhdGVkZWxpbTwvY29kZT4gYXR0cmlidXRlLjwvcD4K Cgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24gbW9kZSBpcyB0 aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRpcmUgbGlzdC4g WW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4gdGhlIGludGVy bmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gdGh1czo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57bmFtZX0gbWln aHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90 OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsgKGFzIGJlZm9y ZSkKe25hbWUjMX0gd291bGQgb25seSBvdXRwdXQgaGVyb24uanBnCntuYW1lIzN9IHdvdWxk IG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3aGVu IHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ZG8gbm90PC9z dHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVy IHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMgYmVjYXVzZSBp dCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUgcXVvdGVzIGlu IHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4mcXVvdDt7bmFtZSMyfSZxdW90OzwvY29k ZT4pPC9wPgoKCTxwPk1lc3NpbmcgYXJvdW5kIHdpdGggcHVsbGluZyBvdXQgaW5kaXZpZHVh bCBpdGVtcyBhbmQgbGlzdHMgY2FuIHlpZWxkIHNvbWUgdmVyeSBpbnRlcmVzdGluZyByZXN1 bHRzIGFuZCBhbGxvd3Mgc29tZSBjb21wbGV0ZWx5IHdhY2t5IGdhbGxlcmllcyB0byBiZSBn ZW5lcmF0ZWQuIFRyeSBjb21iaW5pbmcgc21kX2dhbGxlcnkgdGFncyB3aXRoIDxjb2RlPiZs dDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gZm9yIGEgcmVhbCBtaW5kIHNjcmFtYmxl IDotKTwvcD4KCgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPHA+VGhlIGV4 YW1wbGVzIGFsbCB1c2UgdGhlIGNsYXNzaWMgem9vIHdlYnNpdGUuIExldCYjODIxNztzIGdl dCBzb21lIHBpY3R1cmVzIG91dCBvZiB0aGUgZGF0YWJhc2UmIzgyMzA7PC9wPgoKCTxoMyBp ZD0iZWcxIj5FeGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94ZWQgZ2FsbGVyeTwvaDM+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxs ZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1 b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ VGhhdCBwdWxscyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGFuaW1hbHMgY2F0ZWdvcnks IGluY2x1ZGluZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUg Zm9ybSBjYWxsZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvciBwcm9jZXNzaW5nLiBUaGUg Zm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7aW1nIGNsYXNzPSZxdW90O2FuaW1hZ2UmcXVvdDsgc3JjPSZxdW90O3t1cmx9 JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OyAvJmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90 O2FjYXB0aW9uJnF1b3Q7Jmd0O3t0aXRsZX0mbHQ7L2RpdiZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPlRoYXQgbWVhbnMsIGZvciBldmVyeSBtYXRjaGVkIGltYWdlLCBzdWJzdGl0dXRlIGl0 cyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiwgYWx0IGFuZCB0aXRsZSB0YWdzIGlu dG8gdGhlIHJlbGV2YW50IHBsYWNlcy4gVGh1cyB5b3UgZ2V0IGEgc2VyaWVzIG9mIGltYWdl cyBvbiB0aGUgcGFnZSwgd2hpY2ggeW91IGNhbiBzdHlsZSBhY2NvcmRpbmdseS48L3A+CgoJ PHA+Rm9yIGEgbW9yZSBmYW5jeSBvdXRwdXQgdXNpbmcsIHNheSwgc2xpbWJveCwgeW91IGNv dWxkIGxvYWQgdGhlIHJlbGV2YW50IGxpYnJhcmllcyBhbmQgc3R5bGVzIGluIHRoZSA8Y29k ZT4mbHQ7aGVhZCZndDs8L2NvZGU+IG9mIHlvdXIgcGFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9q YXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9vbHMuanMmcXVvdDsmZ3Q7Jmx0 Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVv dDsgc3JjPSZxdW90Oy9qcy9zbGltYm94LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Owom bHQ7bGluayByZWw9JnF1b3Q7c3R5bGVzaGVldCZxdW90OyB0eXBlPSZxdW90O3RleHQvY3Nz JnF1b3Q7IGhyZWY9JnF1b3Q7L2Nzcy9zbGltYm94LmNzcyZxdW90OyAvJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+VGhlbiB5b3VyICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGNvdWxk IGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDth IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0m cXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge2NhcHRpb259JnF1b3Q7Jmd0 OwogJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2Em Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxl cnkgdGFnIHlvdSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZy b20gYSBzaW1wbGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0 dWFsbHkgdGhlIHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNr Ym94LCBsaWdodGJveCwgbGl0ZWJveCwgbW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1i b3ggZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBp bnN0cnVjdGlvbnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRv IHNtZF9nYWxsZXJ5LjwvcD4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJv bSBvbmUgaW1hZ2U8L2gzPgoKCTxwPkEgY29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0 byAmIzgyMjA7bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xl IGltYWdlIG9yIHRleHQgbGluay4gVXNpbmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBj YXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1 b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZx dW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNw ZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+IHJlcGxhY2VtZW50IHRhZyBzbyBpdCBvbmx5 IGRpc3BsYXlzIHRoZSB0aHVtYm5haWwgaWYgdGhlIHZhbHVlIG9mIHRodW1ibGltaXQgaGFz IDxzdHJvbmc+bm90PC9zdHJvbmc+IGJlZW4gcmVhY2hlZDo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gtc21k JnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1 cmUgb2Yge3RpdGxlfSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+Q2hhbmdlIHRoZSBzdGFydCBpbWFnZSBieSBzcGVjaWZ5aW5nIDxjb2RlPnRo dW1ib2Zmc2V0PC9jb2RlPiAmIzgyMTI7IG5vdGUgdGhpcyB3aWxsIGFsc28gc3RhcnQgdGhl IGxpZ2h0Ym94IGVmZmVjdCBmcm9tIHRoZSBpbWFnZSB5b3UgY2hvb3NlLiBJZiB5b3Ugd2Fu dCB0byBzdGFydCBvbiBhIHNwZWNpZmljIGltYWdlIGluIHBvc2l0aW9uIDEsIHVzZSB0aGUg PGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBicmluZyBpdCB0byB0aGUgdG9wIG9mIHRo ZSBsaXN0LCBvciBjaGFuZ2UgdGhlIHNvcnQgb3JkZXIuPC9wPgoKCTxwPklmIHlvdSB3YW50 ZWQgdG8gbGF1bmNoIHRoZSBnYWxsZXJ5IGZyb20gYSB0ZXh0IGxpbmssIGFkZCBzb21ldGhp bmcgbGlrZSA8Y29kZT50ZXh0PSZxdW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7 PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJlZzMiPkV4YW1wbGUgMzogcG9wdXAgZ2FsbGVyeTwv aDM+CgoJPHA+VG8gYWNoaWV2ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byByc3NfdGh1bWJwb3As IGFkZCBhbiBpbWFnZSBhbmQgY2FwdGlvbiBwbGFjZWhvbGRlciBvdXRzaWRlIHRoZSBjYWxs IHRvIHNtZF9nYWxsZXJ5LCB0aGVuIGluY2x1ZGUgeW91ciBzbWRfZ2FsbGVyeSB0YWcgYXMg dXN1YWwuIFRoaXMgdGltZSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGFsbCB0aGUgcGlj dHVyZXMgZnJvbSB0aGUgY2F0ZWdvcmllcyB1cCB0byB0d28gbGV2ZWxzIGJlbG93IGJvdGgg JiM4MjIwO2FuaW1hbHMmIzgyMjE7LCBwbHVzIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBs aXN0ZWQgaW4gPGNvZGU+bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPiBhbmQgdGhlIGltYWdlcyB3 aXRoIElEcyAyNSwgMzgsIDM5LCA0MCBhbmQgNDI6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBz cmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1 b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxs ZXJ5IHN1YmxldmVsPSZxdW90OzImcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDthbmltYWxz LCA/bXlfY3VzdG9tX2ZpZWxkJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7MjUsIDQyLCAzOC00MCZx dW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxw PlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlzIG9ubHkgYSB0aHVtYm5haWwg aW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3IgdGFnIHdpdGggdHdvIGFjdGlv bnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNvcHkgdGhlIHBpY3R1cmUgYW5k IGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBhIG1vdXNlb3V0IHRvIHJlbW92 ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1b3Q7e3RpdGxlfSZxdW90Owog ICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVs bHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1MID0gdGhpcy50aXRsZTsgcmV0 dXJuIGZhbHNlOyZxdW90OwogICAgIG9ubW91c2VvdXQ9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJiMzOTtmdWxsc2l6ZSYjMzk7KS5zcmMgPSAmIzM5Oy9pbWFnZXMvMTcuanBn JiMzOTs7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsY2FwdGlvbiYj Mzk7KS5pbm5lckhUTUwgPSAmIzM5OyYjMzk7OyByZXR1cm4gZmFsc2U7JnF1b3Q7Jmd0Owog ICZsdDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1 b3Q7IC8mZ3Q7CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhlcmUgYXJl IG11Y2ggbmVhdGVyIHdheXMgb2YgZG9pbmcgdGhpcyAoZS5nLiB3aXRoIGpRdWVyeSkgYW5k IGl0JiM4MjE3O3Mgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGZvcm0gaW4gYSBsaXZl IHNpdGUsIGJ1dCBpdCBnaXZlcyBhIGZsYXZvdXIgb2Ygd2hhdCBpcyBwb3NzaWJsZS48L3A+ CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDogc2xpZGVzaG93PC9oMz4KCgk8cD5UaGlzIG9u ZSB1c2VzIGNvbGxhdGUgbW9kZSBidXQgaXMgbm90IG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8g dW5kZXJzdGFuZC4gSW4geW91ciA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHNlY3Rpb246 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3Njcmlw dCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rv b2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7 dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpZGVzaG93LmpzJnF1b3Q7 Jmd0OyZsdDsvc2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIHRhZzo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxs ZXJ5CiAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxs ZXJ5JnF1b3Q7CiAgY29tYm89JnF1b3Q7aW1nbGlzdDp7aWR9e2V4dH0mcXVvdDsKICBjb2xs YXRlPSZxdW90O3F1b3RlOntpbWdsaXN0fTp7YWx0fSZxdW90OyAvJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+VGhhdCBwdWxscyBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYmlyZHMgYW5kIGZp c2ggY2F0ZWdvcmllcy4gQWx0aG91Z2ggdGVjaG5pY2FsbHkgdW5uZWNlc3NhcnksIGEgY29t Ym8gaGFzIGJlZW4gZGVmaW5lZCB0byBzaG93IGhvdyBpdCBjYW4gYmUgdXNlZC4gVGhpcyBj b21ibyBpcyBjYWxsZWQgPGNvZGU+aW1nbGlzdDwvY29kZT4gYW5kIGlzIGRlZmluZWQgYXMg dGhlIGltYWdlJiM4MjE3O3MgSUQgbnVtYmVyIHBsdXMgaXRzIGV4dGVuc2lvbi4gV2UgdXNl IHRoaXMgaW4gdGhlIGNvbGxhdGUgYXR0cmlidXRlIGFuZCB0ZWxsIGl0IHRvIHB1dCBkb3Vi bGUgcXVvdGVzIHJvdW5kIGV2ZXJ5IGl0ZW0gaW4gJiM4MjE2O2ltZ2xpc3QmIzgyMTc7IGFu ZCAmIzgyMTY7YWx0JiM4MjE3Oy4gVGhlbiB3ZSBjYW4gcHV0IHRoZXNlIHZhbHVlcyBpbnRv IHRoZSBuZWNlc3NhcnkgamF2YXNjcmlwdCBpbiB0aGUgPGNvZGU+Z2FsbGVyeTwvY29kZT4g Zm9ybSB0byBnZW5lcmF0ZSB0aGUgc2xpZGVzaG93OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1 b3Q7IGlkPSZxdW90O3NsaWRlc2hvdzEmcXVvdDsmZ3Q7CiAmbHQ7aW1nIHNyYz0mcXVvdDsm bHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzL3tpZCMxfS5qcGcmcXVvdDsKICAgICBhbHQ9 JnF1b3Q7e2FsdCMxfSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGgjMX0mcXVvdDsgaGVpZ2h0 PSZxdW90O3toZWlnaHQjMX0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CjwvY29kZT4KPGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0 JnF1b3Q7Jmd0OwpteVNob3cxID0gbmV3IFNsaWRlc2hvdygmcXVvdDtzbGlkZXNob3cxJnF1 b3Q7LAogIHsgaHU6ICZxdW90OyZsdDt0eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMvJnF1b3Q7 LAogICAgaW1hZ2VzOiBbe2ltZ2xpc3R9XSwKICAgIGNhcHRpb25zOiBbe2FsdH1dLAogICAg Y2xhc3NlczogWyZxdW90O3ByZXYmcXVvdDssJnF1b3Q7bmV4dCZxdW90OywmcXVvdDthY3Rp dmUmcXVvdDtdLAogICAgdHlwZTogJnF1b3Q7ZmFkZSZxdW90OwogIH0pOwombHQ7L3Njcmlw dCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBwb3J0aW9u IChpbiB0aGUgZGl2IGFuZCBpbWcgdGFncykgdXNlcyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5v dGF0aW9uIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGRpc3BsYXkgb25lIGltYWdlIHRvICYj ODIyMDtzdGFydCYjODIyMTsgdGhlIHNsaWRlc2hvdy4gSW4gdGhpcyBjYXNlIHdlJiM4MjE3 O3JlIHVzaW5nIHRoZSBmaXJzdCBpbWFnZSBpbiB0aGUgbGlzdCwgYnV0IHlvdSBjYW4gY2hh bmdlIHRoZSAjMSBmb3IgIzQyIGlmIHlvdSB3YW50ZWQgdG8gc2hvdyB0aGUgZm9ydHktc2Vj b25kIGltYWdlIGluc3RlYWQhIFRoZSBwYXJ0IGluIHRoZSBzY3JpcHQgdGFnIHVzZXMgdGhl IGZ1bGwsIHF1b3RlZCBsaXN0cyBiZWNhdXNlIHRoYXQmIzgyMTc7cyB0aGUgZm9ybWF0IHRo ZSBqYXZhc2NyaXB0IHJlcXVpcmVzLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1OiBw YWdpbmF0aW9uPC9oMz4KCgk8cD5UbyBhZGQgcGFnaW5nIHRvIGEgZ2FsbGVyeSB5b3UgdXNl IHRoZSA8Y29kZT5saW1pdDwvY29kZT4gYXR0cmlidXRlIHRvIHNob3cgYSBudW1iZXIgb2Yg dGh1bWJzIHBlciBwYWdlLiBGb3IgYSBwYWdlZCB0aHVtYnBvcCBnYWxsZXJ5IHRoYXQgc2hv d3MgZml2ZSB0aHVtYnMgcGVyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1 b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVs bGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IGNh dGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsg cGFnZWZvcm09JnF1b3Q7Z2FsbGVyeV9uYXYmcXVvdDsKICBsaW1pdD0mcXVvdDs1JnF1b3Q7 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZv cm0gaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgaW4gPGEgaHJlZj0iI2VnNCI+ZXhhbXBsZSA0 PC9hPiwgd2hpbGUgeW91ciBnYWxsZXJ5X25hdiBmb3JtIG1pZ2h0IGxvb2sgbGlrZSB0aGlz OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYg Y2xhc3M9JnF1b3Q7dG90YWwmcXVvdDsmZ3Q7IyBvZiBwaWNzOiB7dG90YWxpbWFnZXN9Jmx0 Oy9kaXYmZ3Q7CiAgICAge25hdmZpcnN0fSB7bmF2cHJldn0KICAgICB7bmF2ZWFybGllcn0g e25hdnRoaXN9IHtuYXZsYXRlcn0KICAgICB7bmF2bmV4dH0ge25hdmxhc3R9CjwvY29kZT48 L3ByZT4KCgk8cD5UaGF0IG1pZ2h0IHJlbmRlciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGlz IGJlbG93IHRoZSB0aHVtYnM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+IyBvZiBwaWNzOiAzOAogICAgIEZpcnN0ICZsdDsgMSAyIDMgNCA1IDYgNyA4 ICZndDsgTGFzdAo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjogb25j aGFuZ2U8L2gzPgoKCTxwPklmIHlvdSB3YW50IHRvIHNpbXVsYXRlIG11bHRpcGxlIGdhbGxl cmllcyBmcm9tIG9uZSBzbWRfZ2FsbGVyeSB0YWcgeW91IGNhbiB1c2UgPGNvZGU+b25jaGFu Z2U8L2NvZGU+IHRvICYjODIyMDt3YXRjaCYjODIyMTsgZm9yIHdoZW4gY2VydGFpbiBhdHRy aWJ1dGVzIG9mIGltYWdlcyBjaGFuZ2UgYW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVtPm9u bHkgd2hlbiBzb21ldGhpbmcgY2hhbmdlczwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBhY3Rz IGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lvbiBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiYjODIxNztzIGJ1aWx0LWluIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0Ozwv Y29kZT4gdGFnLjwvcD4KCgk8cD5Zb3UgY2FuIHdhdGNoIHRoZSB1c3VhbCB0aGluZ3MgbGlr ZSA8Y29kZT5jYXRlZ29yeTwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndp ZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNvZGU+ZXh0PC9jb2RlPmVuc2lv biBhbmQgc28gb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNo JnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O2Nh dGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgb25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNv cnRzIGJ5IGNhdGVnb3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBv bmUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08L2Nv ZGU+IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGh1bWIgbGlzdCBhbmQgYWxzbyB3 aGVuIHRoZSBjYXRlZ29yeSBzd2l0Y2hlcyBmcm9tICYjODIxNjtiaXJkcyYjODIxNzsgdG8g JiM4MjE2O2Zpc2gmIzgyMTc7LiBUaHVzIHlvdXIgZ2FsbGVyeSBmb3JtIGNvdWxkIGJlOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5nZTpj YXRlZ29yeV90aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7 bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+VGhhdCB3b3VsZCBtYWtlIHR3byBsaWdodGJveGFibGUgc2V0cyBv ZiB0aHVtYm5haWxzIHdpdGggYSBoZWFkaW5nIDMgYWJvdmUgZWFjaCBncm91cCBjb250YWlu aW5nIHRoZSBjYXRlZ29yeSB0aXRsZS48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBhZGQg PGNvZGU+dGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byB0aGUgc21kX2dhbGxl cnkgdGFnIHlvdSBjYW4gc2hvdyBqdXN0IG9uZSB0aHVtYm5haWwgaW4gZWFjaCBncm91cCwg d2l0aCBoZWFkaW5ncyBhYm92ZSBlYWNoIHRodW1iLiBWaXNpdG9ycyBjbGlja2luZyB0aGUg dGh1bWIgd2lsbCBsYXVuY2ggdGhlIGxpZ2h0Ym94IGFuZCBiZSBhYmxlIHRvIGJyb3dzZSB0 aGUgcmVsZXZhbnQgY2F0ZWdvcnkuPC9wPgoKCTxwPkFuIGV4dHJhIHBhaXIgb2YgcmVwbGFj ZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxlIGlmIHlvdSB3aXNoIHRvIHdyYXAgdGhlIG9iamVj dHMgdGhlbXNlbHZlcyB0byBncm91cCB0aGVtLiBVc2UgdGhlIDxjb2RlPmdyb3VwdGFnPC9j b2RlPiBhbmQgPGNvZGU+Z3JvdXBjbGFzczwvY29kZT4gYXR0cmlidXRlcyB0byBzZXQgaXQg dXAsIHRoZW4gdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIGNhbGxlZCA8Y29kZT5ncm91cHRh Z3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+IGJlY29tZSBhdmFp bGFibGUuIFRoZXkgYXJlIGNvbmRpdGlvbmFsIGFuZCBhcmUgb25seSBwb3B1bGF0ZWQgd2hl biB0aGUgYXR0cmlidXRlcyB5b3UgYXJlIHdhdGNoaW5nL3NvcnRpbmcgYnkgY2hhbmdlLiBV c2UgaXQgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVv dDsKICAgICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dh bGxlcnkmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90Owog ICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90 O2RpdiZxdW90OyBncm91cGNsYXNzPSZxdW90O2JveCZxdW90OyAvJmd0Owo8L2NvZGU+PC9w cmU+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6 Y2F0ZWdvcnlfdGl0bGV9Cntncm91cHRhZ3N0YXJ0fQombHQ7YSBocmVmPSZxdW90O3t1cmx9 JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2JqZWN0 fQombHQ7L2EmZ3Q7Cntncm91cHRhZ2VuZH0KPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhh dCB5b3UgY2FuIG1vdmUgdGhlIDxjb2RlPmdyb3VwdGFnc3RhcnQ8L2NvZGU+IHRvIHN1cnJv dW5kIHRoZSA8Y29kZT5vbmNoYW5nZTwvY29kZT5kIHRpdGxlIGlmIHlvdSB3aXNoLjwvcD4K Cgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3OiBzbWRfZXZlcnk8L2gzPgoKCTxwPllvdSBjYW4g YWxzbyB0cmlnZ2VyIGFuIG9uY2hhbmdlIGV2ZW50IGV2ZXJ5IG50aCBpbWFnZTo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxs ZXJ5IGNhdGVnb3J5PSZxdW90O2Zyb250cGFnZSZxdW90OwogICAgIGxpbWl0PSZxdW90Ozkm cXVvdDsgc29ydD0mcXVvdDtyYW5kb20mcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtzbWRf ZXZlcnk6MyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O3VsJnF1b3Q7IGdyb3VwY2xhc3M9 JnF1b3Q7c2xpZGVzaG93JnF1b3Q7Jmd0Owp7Z3JvdXB0YWdzdGFydH0KICAgJmx0O2xpJmd0 OwogICAgICAmbHQ7YSBocmVmPSZxdW90OyZsdDt0eHA6cGVybWxpbmsgaWQ9JnF1b3Q7e2Fs dH0mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAgICAgICZsdDtpbWcgc3JjPSZxdW90O3t0 aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0OwogICAgICAgICAmbHQ7c3Bh biZndDt7dGl0bGV9Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7L2EmZ3Q7CiAgICZsdDsvbGkm Z3Q7Cntncm91cHRhZ2VuZH0KJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3By ZT4KCgk8aDMgaWQ9ImVnOCI+RXhhbXBsZSA4OiB1bmNhdGVnb3JpemVkIGltYWdlczwvaDM+ CgoJPHA+U29tZXRpbWVzIHlvdSBtaWdodCB3aXNoIHRvIGV4dHJhY3QgaW1hZ2VzIHRoYXQg ZG8gbm90IGhhdmUgYSBjYXRlZ29yeSBhc3NpZ25lZC4gWW91IG5lZWQgdG8gdXNlIHRoZSBz cGVjaWFsIHZhbHVlIDxjb2RlPlNNRF9FTVBUWTwvY29kZT4gZm9yIHRoaXM6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVy eSBjYXRlZ29yeT0mcXVvdDtTTURfRU1QVFksIHNob2VzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5Zb3UgY2FuIGFsc28gbmVnYXRlIHRoZSBsb2dpYyBzbyB5b3UgY2FuIGV4 dHJhY3QgYWxsIGltYWdlcyB0aGF0IGhhdmUgc29tZSAoYW55KSBjYXRlZ29yeSBhc3NpZ25l ZCB0byB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7IVNNRF9FTVBUWSZxdW90OyAv Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzkiPkV4YW1wbGUgOToge29iamVjdH0g YW5kIG9iamVjdGZvcm08L2gzPgoKCTxwPlRoZSBkZWZhdWx0IDxjb2RlPntvYmplY3R9PC9j b2RlPiBvdXRwdXRzIGEgc2ltcGxlIGh5cGVybGlua2VkIHRodW1ibmFpbC4gSWYgeW91IHdh bnQgc29tZXRoaW5nIGEgYml0IG1vcmUgZXhvdGljLCBsaWtlIGxhdW5jaGluZyBhIHNoYWRv d2JveCBlZmZlY3QgZnJvbSBhIHNpbmdsZSB0aHVtYm5haWwgdGhhdCBhbHNvIGhhcyB0aGUg Y2FwdGlvbiBiZW5lYXRoIGl0LCB5b3UgbmVlZCB0byBjdXN0b21pc2UgdGhlIDxjb2RlPntv YmplY3R9PC9jb2RlPiB2aWEgdGhlIDxjb2RlPm9iamVjdGZvcm08L2NvZGU+IGF0dHJpYnV0 ZS4gUHV0IGEgbGlzdCBvZiBpbWFnZSBJRHMgaW4geW91ciBhcnRpY2xlIGltYWdlIGZpZWxk IGFuZCB0aGVuOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX2dhbGxlcnkgdGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7CiAgICAgaWQ9 JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsgd3JhcHRhZz0mcXVvdDtkaXYmcXVvdDsKICAg ICBjbGFzcz0mcXVvdDt0aHVtYnMmcXVvdDsgb2JqZWN0Zm9ybT0mcXVvdDtteV9vYmomcXVv dDsKICAgICBjb21ibz0mcXVvdDthcnRpZDo/dGhpc2lkJnF1b3Q7Jmd0OwogICZsdDthIHJl bD0mcXVvdDtzaGFkb3dib3hbe2FydGlkfV07CiAgICAgb3B0aW9ucz17Y291bnRlclR5cGU6 JiMzOTtza2lwJiMzOTssCiAgICAgY29udGludW91czp0cnVlLAogICAgIGFuaW1hdGU6ZmFs c2UsCiAgICAgYW5pbVNlcXVlbmNlOiYjMzk7c3luYyYjMzk7fSZxdW90OwogICAgIGhyZWY9 JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDt7YWx0fSZxdW90OyZndDt7b2Jq ZWN0fSZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5BbmQgaW4gPGNvZGU+bXlfb2JqPC9jb2RlPiwgeW91IGNvdWxkIHB1dDo8L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnRodW1ibmFp bCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7e3RpdGxlfQo8L2NvZGU+ PC9wcmU+CgoJPHA+Tm90aWNlIGhvdyB0aGUgcmVwbGFjZW1lbnQgdGFncyBzdGlsbCB3b3Jr IGluIHRoZSA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPj8gVGhpcyBhbGxvd3MgeW91IHRvIGJ1 aWxkIHVwIGEgY29tcGxldGUgbGF5b3V0IGZvciB0aGUgbGF1bmNoYWJsZSB0aHVtYm5haWwg YW5kIGhhdmUgaXQgb25seSByZW5kZXJlZCBvbmNlIG9uIHRoZSBwYWdlLiBUaGUgcmVzdCBv ZiB0aGUgY29udGFpbmVyIGluIHRoaXMgZXhhbXBsZSByZW5kZXJzIGFsbCB0aGUgJiM4MjIw O2hpZGRlbiYjODIyMTsgaW1hZ2VzIGluIHRoZSBzaGFkb3dib3ggZ2FsbGVyeS48L3A+CgoJ PGgzIGlkPSJlZzEwIj5FeGFtcGxlIDEwOiA8Y29kZT5jb3VudGZvcm08L2NvZGU+PC9oMz4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dh bGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAgIGNvdW50Zm9ybT0mcXVv dDsxOmdhbF9hOnNtZF9hYm92ZSwKICAgICAgIHt0b3RhbGltYWdlc306Z2FsX2MsCiAgICAg ICBzbWRfZXZlcnk6Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYiZxdW90OwogICAgIGNvdW50cG9z PSZxdW90O2JlbG93JnF1b3Q7Jmd0OwombHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7aWR9 JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+Tm90ZSB0aGF0IDxjb2RlPmNvdW50cG9zPC9jb2RlPiBpcyBzZXQgdG8gPGNvZGU+YmVs b3c8L2NvZGU+IGluIHRoaXMgZXhhbXBsZSBzbyBhbGwgb3V0cHV0IGFwcGVhcnMgPGVtPmFm dGVyPC9lbT4gdGhlIGdpdmVuIGltYWdlcy4gSWYgeW91IG1hZGUgdGhlIGZvbGxvd2luZyB0 aHJlZSBmb3JtcywgeW91ciB0YWcgd291bGQgc3BsaXQgdGhlIGdhbGxlcnkgaW50byAmIzgy MTY7cm93cyYjODIxNzsgb2YgMyBpbWFnZXM6PC9wPgoKCTxwPmdhbF9hOiA8Y29kZT4mbHQ7 ZGl2IGNsYXNzPSZxdW90O25ld3JvdyZxdW90OyZndDs8L2NvZGU+PGJyIC8+CmdhbF9iOiA8 Y29kZT4mbHQ7L2RpdiZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O25ld3JvdyZxdW90OyZndDs8 L2NvZGU+PGJyIC8+CmdhbF9jOiA8Y29kZT4mbHQ7L2RpdiZndDs8L2NvZGU+PC9wPgoKCTxw PkJyZWFraW5nIHRoZSA8Y29kZT5jb3VudGZvcm08L2NvZGU+IGF0dHJpYnV0ZSBkb3duIGlu dG8gaXRzIGNvbXBvbmVudHMsIHlvdSBjYW4gc2VlIHRoYXQ6PC9wPgoKCTx1bD4KCQk8bGk+ PGNvZGU+MTpnYWxfYTpzbWRfYWJvdmU8L2NvZGU+IGFkZHMgdGhlICYjODIxNjtuZXdyb3cm IzgyMTc7IGRpdiBhYm92ZSB0aGUgZmlyc3QgaW1hZ2U8L2xpPgoJCTxsaT48Y29kZT57dG90 YWxpbWFnZXN9OmdhbF9jPC9jb2RlPiBhZGRzIHRoZSBjbG9zaW5nIGRpdiBiZWxvdyB0aGUg bGFzdCBpbWFnZSBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48Y29kZT5zbWRfZXZlcnk6Mzoh e3RvdGFsaW1hZ2VzfTpnYWxfYjwvY29kZT4gYWRkcyBhIGNsb3NpbmcgYW5kIHRoZW4gYW4g b3BlbmluZyBkaXYgYWZ0ZXIgZXZlcnkgM3JkIGltYWdlLCA8ZW0+ZXhjZXB0PC9lbT4gb24g dGhlIGxhc3QgaW1hZ2UuIElmIHdlIGRpZG4mIzgyMTc7dCBwdXQgdGhlIGV4Y2VwdGlvbiBp biwgYW5kIHlvdSBoYWQgMTIgdGh1bWJuYWlscyBpbiB5b3VyIGdhbGxlcnkgKHdoaWNoIGlz IGRpdmlzaWJsZSBieSAzISkgeW91IHdvdWxkIHNlZSB0aGUgY29udGVudHMgb2YgZ2FsMiBh ZnRlciB0aGUgbGFzdCBpbWFnZSBhcyB3ZWxsPC9saT4KCTwvdWw+CgoJPGgzIGlkPSJlZzEx Ij5FeGFtcGxlIDExOiBVc2luZyBhbiBvbmNoYW5nZSBmb3JtPC9oMz4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkKICAgICBj YXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O2Nh dGVnb3J5X3RpdGxlOm9jX2Zvcm0mcXVvdDsmZ3Q7CntvbmNoYW5nZTpjYXRlZ29yeV90aXRs ZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2Nh dGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0OwombHQ7L3R4cDpzbWRfZ2Fs bGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPmFuZCBpbiBmb3JtIDxjb2RlPm9jX2Zvcm08 L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDtkaXYgaWQ9JnF1b3Q7e2NhdGVnb3J5fSZxdW90OwogICBjbGFzcz0mcXVvdDtjYXRlZ29y eSZxdW90OyZndDt7Y2F0ZWdvcnlfdGl0bGV9Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8aDIgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8cD5BbGwgYXZhaWxhYmxl IHZlcnNpb25zIGFuZCBjaGFuZ2VzIGFyZSBsaXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9u Zz5CZXRhPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+MTQgRmViIDA4IHwgMC4xIHwgSW5p dGlhbCByZWxlYXNlICYjODIxMTsgSGFwcHkgVmFsZW50aW5lcyBEYXkgOi0pPC9saT4KCQk8 bGk+MTkgRmViIDA4IHwgMC4yIHwgQWRkZWQge2dhbGxlcnlpZH0gKHRoYW5rcyBybG9hZGVy cm8pIGFuZCBzb21lIHNrZWxldG9uIGRvY3M8L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPk9m ZmljaWFsPC9zdHJvbmc+PC9wPgoKCTx1bD4KCQk8bGk+MTEgTWFyIDA4IHwgMC4zIHwgT2Zm aWNpYWwgcHVibGljIHJlbGVhc2UuIEZpeGVkIHNpbGx5IGVtcHR5IGZpZWxkIGJ1ZzsgYWRk ZWQge2NvdW50ZXJ9LCB7aW5kZXh9IGFuZCB0aGUgdG90YWxzIChhbGwgdGhhbmtzIGpha29i KTwvbGk+CgkJPGxpPjE1IE1hciAwOCB8IDAuMzEgfCBGaXhlZCBhIGNvdXBsZSBvZiB1bmRl ZmluZWQgaW5kZXhlcyBhbmQgYWRkZWQge2NhdGVnb3J5X3RpdGxlfSAodGhhbmtzIGpzdHVi YnMpPC9saT4KCQk8bGk+MTcgTWFyIDA4IHwgMC4zMiB8IEZpeGVkIGFub3RoZXIgdW5kZWZp bmVkIGluZGV4IGFuZCByZW1vdmVkIGJvZ3VzIGNhbGwgdG8gc21kX2xpYiAoYm90aCB0aGFu a3Mgc2VjdW5kYXIpPC9saT4KCQk8bGk+MjEgTWFyIDA4IHwgMC4zMyB8IERpZCB2MC4zMSBw cm9wZXJseSwgaW5jbHVkaW5nIHRhYmxlIHByZWZpeCAodGhhbmtzIG5hcmRvKTwvbGk+CgkJ PGxpPjAxIEFwciAwOCB8IDAuMzQgfCBGaXhlZCA8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9z cGFuPiBwYXJlbnRoZXNpcyBidWcgOyBhZGRlZCBlbXB0eWNsYXNzIGFuZCB7bWF4aW1hZ2Vz fSAodGhhbmtzIHRoZV9naG9zdCk8L2xpPgoJCTxsaT4wOCBBcHIgMDggfCAwLjQgfCBDaGFu Z2VkIHRodW1iIHRvIGFsbG93IHRodW1iL2Z1bGxzaXplIHN3YXBwaW5nIDsgQWRkZWQgdGh1 bWJjaGFuZ2UsIHRodW1iY2hhbmdld3JhcHRhZywgdGh1bWJjaGFuZ2VjbGFzcywge3RodW1i aW5kZXh9LCB7dGh1bWJjb3VudGVyfSBhbmQgdGhlIHtjaGFuZ2VkOip9IHJlcGxhY2VtZW50 IHRhZ3MgKHRoYW5rcyBmdWxzKTwvbGk+CgkJPGxpPjI2IE1heSAwOCB8IDAuNDEgfCBGaXhl ZCBEaXJlY3Rvcnkgc2VwYXJhdG9yICh0aGFua3MgY3VkYSkgOyBhZGRlZCByYXcgcGFnZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPnMgdG8gdGhlIG5hdiByZXBsYWNlbWVudCBh cnJheSBhbmQgbWFkZSB0aGUgbmF2IGFycmF5IGF2YWlsYWJsZSBpbiB0aGUgc3RhbmRhcmQg cmVwbGFjZW1lbnRzIGFycmF5ICh0aGFua3MgdmlzdWFscGVvcGxlKTwvbGk+CgkJPGxpPjI3 IE1heSAwOCB8IDAuNDIgfCBBZGRlZCBwYWdlcG9zIGFuZCBtYWRlIHBhZ2UgYmxvY2tzIGlu ZGVwZW5kZW50IG9mIHRodW1iIGJsb2NrICh0aGFua3MgZHVjaGFtcCk8L2xpPgoJCTxsaT4x MCBKdW4gMDggfCAwLjQzIHwgRml4ZWQgc29ydD0mIzgyMjA7Zml4ZWQmIzgyMjE7IHdoZW4g dXNpbmcgbGltaXQgKHRoYW5rcyByb2Jpbjc0NikgOyBhZGRlZCBwZXItZ3JvdXAgb25jaGFu Z2Ugd3JhcHBpbmcgYW5kIGFsbG93ZWQgZml4ZWQgc29ydGluZyBvZiBjYXRlZ29yaWVzICh0 aGFua3MganN0dWJicykgOyBkZXByZWNhdGVkIHRodW1iY2hhbmdlKiBhbmQgcmVuYW1lZCBh cyBvbmNoYW5nZSogOyBmaXhlZCAkaWR4IGNvdW50ZXIgcHJvYmxlbTwvbGk+CgkJPGxpPjEw IEp1biAwOCB8IDAuNDQgfCBBdHRlbXB0ICMyIGF0IHBlci1ncm91cCBvbmNoYW5nZSB3cmFw cGluZyAodGhhbmtzIGFnYWluIGpzdHViYnMpPC9saT4KCQk8bGk+MTQgSnVsIDA4IHwgMC40 NSB8IEZpeGVkIGxhY2sgb2Ygb3V0cHV0IHdoZW4gbm90IHVzaW5nIGNhdGVnb3JpZXMgKHRo YW5rcyByb2Jpbjc0Nik8L2xpPgoJCTxsaT4xNiBOb3YgMDggfCAwLjQ2IHwgQWRkZWQgY29s bGF0ZWRlbGltICh0aGFua3MgY3VyaW91eikgOyBmaXhlZCAoSSBob3BlKSB0aGUgY2F0ZWdv cnkgLyBpZCBidWcgZnJvbSAwLjQ0IGFuZCAwLjQ1ICh0aGFua3Mgcm9iaW43NDYvbmFyZG8p PC9saT4KCQk8bGk+MTMgRmViIDA5IHwgMC41IHwgUmVxdWlyZXMgc21kX2xpYiA7IGFkZGVk IDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHN1cHBvcnQgKHRoYW5rcyBuZXQtY2Fy dmVyKSA7IGFkZGVkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgdW5jYXRlZ29yaXNlZCBpbWFn ZXMgKHRoYW5rcyB4emFtZW4pIDsgJiM4MjE2Oz8mIzgyMTc7IHZhcnMgZXhwYW5kZWQgdG8g bGluayAvIGltYWdlIC8gZmlsZSAvIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2Nv ZGU+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSA7IG5ldyBh dHRyaWJ1dGVzOiA8Y29kZT5lc2NhcGU8L2NvZGU+LCA8Y29kZT5odG1sX2lkPC9jb2RlPiwg PGNvZGU+Zm9ybWF0PC9jb2RlPiwgPGNvZGU+Z210PC9jb2RlPiwgPGNvZGU+bGFuZzwvY29k ZT4gKHRoYW5rcyBtYW5pcXVpKSwgPGNvZGU+c3RyaWN0ZmllbGRzPC9jb2RlPiA7IGltcHJv dmVkIDxjb2RlPntvYmplY3R9PC9jb2RlPiBzdXBwb3J0IGFuZCBhZGRlZCA8Y29kZT5vYmpl Y3Rmb3JtPC9jb2RlPiAodGhhbmtzIHR5ZS9ydnR1cm5hZ2UpIDsgPGNvZGU+e3RpdGxlfTwv Y29kZT4gPT0gPGNvZGU+e2NhcHRpb259PC9jb2RlPiBhdCBsYXN0ISA7IHJlbW92ZWQgPGNv ZGU+dGh1bWJjaGFuZ2U8L2NvZGU+KiBhdHRyaWJ1dGVzIDsgaW1wcm92ZWQgc3VwcG9ydCBm b3IgdGFibGUgZXh0ZW5zaW9ucyAodmlhIHRoZSA8Y29kZT5jb2x1bW5zPC9jb2RlPiBhdHRy aWJ1dGU6IHRoYW5rcyBSZWRGb3gpIDsgYWRkZWQgPGNvZGU+c21kX2V2ZXJ5PC9jb2RlPiBz eW50YXggdG8gPGNvZGU+b25jaGFuZ2U8L2NvZGU+ICh0aGFua3MgamFrb2IpIDsgZml4ZWQg b2Zmc2V0IGJ1ZyAodGhhbmtzIGZlcmFnbm9saSk8L2xpPgoJCTxsaT4wMSBNYXIgMDkgfCAw LjUxIHwgQWRkZWQgPGNvZGU+Y291bnRmb3JtPC9jb2RlPiBhbmQgPGNvZGU+Y291bnRwb3M8 L2NvZGU+IDsgZml4ZWQgPGNvZGU+e2hhc3RodW1ifTwvY29kZT4gd2FybmluZzwvbGk+CgkJ PGxpPjE2IE5vdiAwOSB8IDAuNTIgfCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0 LjIuMCBvbmx5IDsgYWRkZWQgZGF0YWJhc2UgdGh1bWJuYWlsIGhlaWdodCBhbmQgd2lkdGgg c3VwcG9ydCA7IGFkZGVkIDxjb2RlPmFzcGVjdDwvY29kZT4sIDxjb2RlPmRpbWVuc2lvbnM8 L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT5leHRlbnNpb248L2NvZGU+IGFu ZCA8Y29kZT5pbWdzaXplPC9jb2RlPiBhdHRyaWJ1dGVzIDsgZml4ZWQgcXVvdGUgcGFyc2lu ZyBpbiA8Y29kZT5lc2NhcGU8L2NvZGU+IGF0dHJpYnV0ZSBhbmQgd2FybmluZyB3aGVuIHVz aW5nIDxjb2RlPmZpeGVkPC9jb2RlPiBzb3J0aW5nIChib3RoIHRoYW5rcyBtYW5pcXVpKTwv bGk+CgkJPGxpPjAxIEphbiAxMCB8IDAuNTMgfCBBZGRlZCBvbmNoYW5nZSBmb3JtIGNhcGFi aWxpdHkgKHRoYW5rcyBNYXR0RCk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImNyZWRpdHMiPkNy ZWRpdHM8L2gyPgoKCTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIxNzt0IGhhdmUgZXhpc3Rl ZCB3aXRob3V0IHRoZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdldHpsbWF5ci4gSGlzIHdl dF9mb3JfZWFjaF9pbWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7IHRoaXMgc2ltcGx5IHN0 YW5kcyBvbiB0aGUgc2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQgcm9sbHMgaW4gYSBzb3Vw ZWQgdXAgdmVyc2lvbiBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRpb24gZW5naW5lIGZyb20g c21kX3NsaW1ib3guIFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlzIGFsc28gaW5kZWJ0ZWQg dG8gYW55b25lIHdobyBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1ZyByZXBvcnRzIHRvIG1l IG9yIHRoZSBzbWRfc2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNztyZSBhbGwgbWFydmVsbG91 cy48L3A+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHls ZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21k X2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmll ciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7 fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFw eCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9j azsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6 bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRp b246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRv bToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6 IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlk IGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5 OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGln bjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBi bGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2Vvcmdp YSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDogYm9s ZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46 IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1 bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMt c2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJh bnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9s ZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJv cmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRl eHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNz bWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNz bWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIC5yZXF1 aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAz MHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8 IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjMwMjk1 YWEzNzU0NjU0ODcxMzhjZjY4YTcwMGQwZDUzIjt9