# Name: smd_if v0.75 # Type: Client side plugin # Generic multiple if condition tests # 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: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjY6InNtZF9pZiI7czo2OiJhdXRob3IiO3M6MTE6IlN0ZWYg RGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5jb20v IjtzOjc6InZlcnNpb24iO3M6NDoiMC43NSI7czoxMToiZGVzY3JpcHRpb24iO3M6MzU6Ikdl bmVyaWMgbXVsdGlwbGUgaWYgY29uZGl0aW9uIHRlc3RzIjtzOjQ6ImNvZGUiO3M6MTExNDU6 ImZ1bmN0aW9uIHNtZF9pZigkYXR0cywkdGhpbmcpIHsNCglnbG9iYWwgJHRoaXNhcnRpY2xl LCAkcHJldGV4dCwgJHRoaXNmaWxlLCAkdGhpc2xpbmssICR0aGlzaW1hZ2UsICR2YXJpYWJs ZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdmaWVsZCcgPT4gJycsDQoJCSdvcGVy YXRvcicgPT4gJycsDQoJCSd2YWx1ZScgPT4gJycsDQoJCSdsb2dpYycgPT4gJ2FuZCcsDQoJ CSdjYXNlX3NlbnNpdGl2ZScgPT4gMCwNCgkJJ3BhcmFtX2RlbGltJyA9PiAnLCcsDQoJCSdt b2RfZGVsaW0nID0+ICc6JywNCgkJJ2xpc3RfZGVsaW0nID0+ICcvJywNCgkJJ2RlYnVnJyA9 PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIFNwZWNpYWwgZmllbGQgbmFtZXMgdGhhdCBy ZWZlciB0byAkcHJldGV4dCBvciBlbHNld2hlcmUgLSBldmVyeXRoaW5nIGVsc2UgaXMgYXNz dW1lZCB0bw0KCS8vIGV4aXN0IGluICR0aGlzYXJ0aWNsZSBzbyBjdXN0b20gZmllbGRzIGNh biBiZSB1c2VkDQoJJGFsbFB0eHQgPSBhcnJheSgNCgkJImlkIiA9PiAnJHByZXRleHRbImlk Il0nLA0KCQkic2VjdGlvbiIgPT4gJyRwcmV0ZXh0WyJzIl0nLA0KCQkiY2F0ZWdvcnkiID0+ ICckcHJldGV4dFsiYyJdJywNCgkJInF1ZXJ5IiA9PiAnJHByZXRleHRbInEiXScsDQoJCSJw ZyIgPT4gJyRwcmV0ZXh0WyJwZyJdJywNCgkJIm1vbnRoIiA9PiAnJHByZXRleHRbIm1vbnRo Il0nLA0KCQkiYXV0aG9yIiA9PiAnJHByZXRleHRbImF1dGhvciJdJywNCgkJInN0YXR1cyIg PT4gJyRwcmV0ZXh0WyJzdGF0dXMiXScsDQoJCSJwYWdlIiA9PiAnJHByZXRleHRbInBhZ2Ui XScsDQoJCSJuZXh0X2lkIiA9PiAnJHByZXRleHRbIm5leHRfaWQiXScsDQoJCSJuZXh0X3Rp dGxlIiA9PiAnJHByZXRleHRbIm5leHRfdGl0bGUiXScsDQoJCSJuZXh0X3V0aXRsZSIgPT4g JyRwcmV0ZXh0WyJuZXh0X3V0aXRsZSJdJywNCgkJInByZXZfaWQiID0+ICckcHJldGV4dFsi cHJldl9pZCJdJywNCgkJInByZXZfdGl0bGUiID0+ICckcHJldGV4dFsicHJldl90aXRsZSJd JywNCgkJInByZXZfdXRpdGxlIiA9PiAnJHByZXRleHRbInByZXZfdXRpdGxlIl0nLA0KCQki cGVybWxpbmtfbW9kZSIgPT4gJyRwcmV0ZXh0WyJwZXJtbGlua19tb2RlIl0nLA0KCSk7DQoJ Ly8gRWFjaCBlbnRyeSBoYXMgdGhlIG9wZXJhdGlvbiB0byBiZSBldmFsKClkIGxhdGVyIGFu ZCBhIGxpc3Qgb2YgZGlzYWxsb3dlZCBmaWVsZHMNCgkkYWxsT3BzID0gYXJyYXkoDQoJCSdl cScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPT09IENBU1QgVkFM VUUnLCAnJyksDQoJCSdub3QnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJ RUxEICE9PSBDQVNUIFZBTFVFJywgJycpLA0KCQknZ3QnID0+IGFycmF5KCdpc3NldChWQVJO QU1FKSAmJiBDQVNUIEZJRUxEID4gQ0FTVCBWQUxVRScsICcnKSwNCgkJJ2dlJyA9PiBhcnJh eSgnaXNzZXQoVkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA+PSBDQVNUIFZBTFVFJywgJycpLA0K CQknbHQnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJRUxEIDwgQ0FTVCBW QUxVRScsICcnKSwNCgkJJ2xlJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgQ0FTVCBG SUVMRCA8PSBDQVNUIFZBTFVFJywgJycpLA0KCQknZGl2aXNpYmxlJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCAlIENBU1QgVkFMVUUgPT09IDAnLCAnJyksDQoJ CSdpbicgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIGluX2FycmF5KEZJRUxELCBleHBs b2RlKCInLiRsaXN0X2RlbGltLiciLCBWQUxVRSkpICE9PSBmYWxzZScsICcnKSwNCgkJJ25v dGluJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgaW5fYXJyYXkoRklFTEQsIGV4cGxv ZGUoIicuJGxpc3RfZGVsaW0uJyIsIFZBTFVFKSkgPT09IGZhbHNlJywgJycpLA0KCQknYmVn aW5zJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgc3RycG9zKEZJRUxELCBWQUxVRSkg PT09IDAnLCAnJyksDQoJCSdjb250YWlucycgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYm IHN0cnBvcyhGSUVMRCwgVkFMVUUpICE9PSBmYWxzZScsICcnKSwNCgkJJ2VuZHMnID0+IGFy cmF5KCdpc3NldChWQVJOQU1FKSAmJiBzdWJzdHIoRklFTEQsIHN0cmxlbihGSUVMRCkgLSBz dHJsZW4oVkFMVUUpKSA9PT0gVkFMVUUnLCAnJyksDQoJCSdkZWZpbmVkJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSknLCAncGFyZW50JyksDQoJCSd1bmRlZmluZWQnID0+IGFycmF5KCch aXNzZXQoVkFSTkFNRSknLCAncGFyZW50JyksDQoJCSdpc2VtcHR5JyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgRklFTEQgPT0gIiInLCAnJyksDQoJCSdpc3VzZWQnID0+IGFycmF5 KCdpc3NldChWQVJOQU1FKSAmJiBGSUVMRCAhPSAiIicsICcnKSwNCgkJJ2lzbnVtJyA9PiBh cnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfZGlnaXQoKHN0cmluZylGSUVMRCknLCAn JyksDQoJCSdpc2FscGhhJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxw aGEoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2FsbnVtJyA9PiBhcnJheSgnaXNzZXQo VkFSTkFNRSkgJiYgY3R5cGVfYWxudW0oKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2xv d2VyJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfbG93ZXIoKHN0cmluZylG SUVMRCknLCAnJyksDQoJCSdpc3VwcGVyJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYg Y3R5cGVfdXBwZXIoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3B1bmN0JyA9PiBhcnJh eSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfcHVuY3QoKHN0cmluZylGSUVMRCknLCAnJyks DQoJCSdpc3NwYWNlJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfc3BhY2Uo KHN0cmluZylGSUVMRCknLCAnJyksDQoJKTsNCg0KCSRudW1lcmljT3BzID0gImd0LCBnZSwg bHQsIGxlLCBlcSwgbm90LCBkaXZpc2libGUiOw0KCSRjYXNlT3BzID0gImlzbG93ZXIsIGlz dXBwZXIiOw0KCSRzcGFjZU9wcyA9ICJpc251bSwgaXNhbHBoYSwgaXNhbG51bSwgaXNsb3dl ciwgaXN1cHBlciwgaXNwdW5jdCwgYmVnaW5zLCBjb250YWlucywgZW5kcyI7DQoJJGZpZWxk cyA9IGRvX2xpc3QoJGZpZWxkLCAkcGFyYW1fZGVsaW0pOw0KCSRudW1GbGRzID0gY291bnQo JGZpZWxkcyk7DQoJJG9wcyA9IGRvX2xpc3QoJG9wZXJhdG9yLCAkcGFyYW1fZGVsaW0pOw0K CSRudW1PcHMgPSBjb3VudCgkb3BzKTsNCgkkdmFscyA9IGRvX2xpc3QoJHZhbHVlLCAkcGFy YW1fZGVsaW0pOw0KCSRudW1WYWxzID0gY291bnQoJHZhbHMpOw0KCSRwYXJlbnRDYXRzID0g Jyc7IC8vIFBsYWNlaG9sZGVyIGZvciB0aGUgY29uY2F0ZW5hdGVkIGxpc3Qgb2YgY2F0ZWdv cnkgbGVhZiBub2Rlcw0KCSRyZXBsYWNlbWVudHMgPSBhcnJheSgpOw0KCSR0eXBlID0gKCR0 aGlzZmlsZSkgPyAiZmlsZSIgOiAoKCR0aGlzbGluaykgPyAibGluayIgOiAoKCR0aGlzaW1h Z2UpID8gImltYWdlIiA6ICJhcnRpY2xlIikpOw0KCSRvdXQgPSBhcnJheSgpOw0KCSRpdGVy YXRpb25zID0gKCRudW1GbGRzID4gJG51bU9wcykgPyAkbnVtRmxkcyA6ICRudW1PcHM7DQoN Cglmb3IgKCRpZHggPSAwOyAkaWR4IDwgJGl0ZXJhdGlvbnM7ICRpZHgrKykgew0KCQkkZmxk ID0gKCRpZHggPCAkbnVtRmxkcykgPyAkZmllbGRzWyRpZHhdIDogJGZpZWxkc1swXTsgLy8g QWxsb3cgc2hvcnQtY2lyY3VpdA0KCQkkZmxkUGFydHMgPSBleHBsb2RlKCRtb2RfZGVsaW0s ICRmbGQpOw0KCQkkdmFsID0gKCRpZHggPCAkbnVtVmFscykgPyAkdmFsc1skaWR4XSA6ICcn Ow0KCQkkdmFsUGFydHMgPSBleHBsb2RlKCRtb2RfZGVsaW0sICR2YWwpOw0KCQkkb3AgPSAo JGlkeCA8ICRudW1PcHMgJiYgJG9wc1skaWR4XSAhPSAnJykgPyAkb3BzWyRpZHhdIDogKCgk ZmxkUGFydHNbMF09PSJwYXJlbnQiKSA/ICJjb250YWlucyIgOiAiZXEiKTsNCgkJJG9wUGFy dHMgPSBleHBsb2RlKCRtb2RfZGVsaW0sICRvcCk7DQoJCSRvcCA9IChhcnJheV9rZXlfZXhp c3RzKCRvcFBhcnRzWzBdLCAkYWxsT3BzKSkgPyAkb3BQYXJ0c1swXSA6ICJlcSI7DQoJCSRj YXN0ID0gKChjb3VudCgkb3BQYXJ0cykgPT0gMikgJiYgKCRvcFBhcnRzWzFdID09PSAiTlVN IikgJiYgKGluX2xpc3QoJG9wLCAkbnVtZXJpY09wcykpKSA/ICcoaW50KScgOiAnJzsNCgkJ JGxlbmd0aCA9ICgoY291bnQoJG9wUGFydHMpID09IDIpICYmICgkb3BQYXJ0c1sxXSA9PT0g IkxFTiIpICYmIChpbl9saXN0KCRvcCwgJG51bWVyaWNPcHMpKSkgPyAnc3RybGVuKEZJRUxE KScgOiAnJzsNCgkJJGtpbGxTcGFjZXMgPSAoKGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAo JG9wUGFydHNbMV0gPT09ICJOT1NQQUNFIikgJiYgKGluX2xpc3QoJG9wLCAkc3BhY2VPcHMp KSkgPyB0cnVlIDogZmFsc2U7DQoJCSRzdHJpcEZsZCA9ICgoY291bnQoJGZsZFBhcnRzKSA+ IDEpICYmIChpbl9hcnJheSgiTk9UQUdTIiwgJGZsZFBhcnRzKSkpID8gdHJ1ZSA6IGZhbHNl Ow0KCQkkc3RyaXBWYWwgPSAoKGNvdW50KCR2YWxQYXJ0cykgPiAxKSAmJiAoaW5fYXJyYXko Ik5PVEFHUyIsICR2YWxQYXJ0cykpKSA/IHRydWUgOiBmYWxzZTsNCgkJJGNhc2Vfc2Vuc2l0 aXZlID0gKGluX2xpc3QoJG9wLCAkY2FzZU9wcykpID8gMSA6ICRjYXNlX3NlbnNpdGl2ZTsN CgkJaWYgKCRkZWJ1Zykgew0KCQkJZWNobyAnVEVTVCAnLigkaWR4KzEpLm47DQoJCQlkbXAo JGZsZFBhcnRzLCAkb3BQYXJ0cywgJHZhbFBhcnRzKTsNCgkJfQ0KCQkvLyBHZXQgdGhlIG9w ZXJhdG9yIHJlcGxhY2VtZW50IGNvZGUNCgkJJGV4Y2x1ZGUgPSBkb19saXN0KCRhbGxPcHNb JG9wXVsxXSk7DQoJCSRvcCA9ICRhbGxPcHNbJG9wXVswXTsNCg0KCQkvLyBBcyBsb25nIGFz IHRoZSBjdXJyZW50IG9wZXJhdG9yIGFsbG93cyB0aGlzIGZpZWxkLi4uDQoJCWlmICghaW5f YXJyYXkoJGZsZFBhcnRzWzBdLCAkZXhjbHVkZSkpIHsNCgkJCS8vIE1ha2UgdXAgdGhlIHRl c3QgZmllbGQgdmFyaWFibGUNCgkJCWlmIChpc3NldCgkdGhpc2ZpbGVbJGZsZFBhcnRzWzBd XSkpIHsNCgkJCQkkcmZsZCA9ICRmbGRQYXJ0c1swXTsNCgkJCQkkZmxkID0gJyR0aGlzZmls ZVsiJy4kcmZsZC4nIl0nOw0KCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2xpbmtbJGZsZFBh cnRzWzBdXSkpIHsNCgkJCQkkcmZsZCA9ICRmbGRQYXJ0c1swXTsNCgkJCQkkZmxkID0gJyR0 aGlzbGlua1siJy4kcmZsZC4nIl0nOw0KCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2ltYWdl WyRmbGRQYXJ0c1swXV0pKSB7DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZs ZCA9ICckdGhpc2ltYWdlWyInLiRyZmxkLiciXSc7DQoJCQl9IGVsc2UgaWYgKGFycmF5X2tl eV9leGlzdHMoJGZsZFBhcnRzWzBdLCAkYWxsUHR4dCkpIHsNCgkJCQkkcmZsZCA9ICRmbGRQ YXJ0c1swXTsNCgkJCQkkZmxkID0gJGFsbFB0eHRbJHJmbGRdOw0KCQkJfSBlbHNlIGlmICgk ZmxkUGFydHNbMF0gPT0gInBhcmVudCIpIHsNCgkJCQkkbGV2ZWwgPSAnJzsNCgkJCQlmb3Jl YWNoICgkZmxkUGFydHMgYXMgJHBhcnQpIHsNCgkJCQkJaWYgKCRwYXJ0ID09ICJwYXJlbnQi KSB7DQoJCQkJCQkkdGhlQ2F0ID0gKCR0aGlzZmlsZSkgPyAkdGhpc2ZpbGVbJ2NhdGVnb3J5 J10gOiAoKCR0aGlzbGluaykgPyAkdGhpc2xpbmtbJ2NhdGVnb3J5J10gOiAoKCR0aGlzaW1h Z2UpID8gJHRoaXNpbWFnZVsnY2F0ZWdvcnknXSA6ICRwcmV0ZXh0WydjJ10pKTsNCgkJCQkJ fSBlbHNlIGlmIChzdHJwb3MoJHBhcnQsICJDQVQiKSA9PT0gMCkgew0KCQkJCQkJJHRoZUNh dCA9ICR0aGlzYXJ0aWNsZVsiY2F0ZWdvcnkiLnN1YnN0cigkcGFydCwgMyldOw0KCQkJCQl9 IGVsc2UgaWYgKHN0cnBvcygkcGFydCwgIkxWTCIpID09PSAwKSB7DQoJCQkJCQkkbGV2ZWwg PSBzdWJzdHIoJHBhcnQsIDMpOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJJHRyZWUgPSBnZXRU cmVlUGF0aChkb1NsYXNoKCR0aGVDYXQpLCAkdHlwZSk7DQoJCQkJaWYgKCRkZWJ1Zykgew0K CQkJCQllY2hvICJDQVRFR09SWSBUUkVFOiI7DQoJCQkJCWRtcCgkdHJlZSk7DQoJCQkJfQ0K CQkJCSRpdGVtcyA9IGFycmF5KCk7DQoJCQkJZm9yZWFjaCAoJHRyZWUgYXMgJGxlYWYpIHsN CgkJCQkJaWYgKCRsZWFmWyduYW1lJ10gPT0gInJvb3QiIHx8ICRsZWFmWyduYW1lJ10gPT0g JHRoZUNhdCkgew0KCQkJCQkJY29udGludWU7DQoJCQkJCX0gZWxzZSBpZiAoJGxldmVsID09 ICcnIHx8ICRsZXZlbCA9PSAkbGVhZlsnbGV2ZWwnXSkgew0KCQkJCQkJJGl0ZW1zW10gPSAk bGVhZlsnbmFtZSddOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSRwYXJlbnRDYXRzID0gJHJmbGQg PSBpbXBsb2RlKCIgIiwgJGl0ZW1zKTsNCgkJCQkkZmxkID0gJyRwYXJlbnRDYXRzJzsNCgkJ CX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJ0eHB2YXIiKSB7DQoJCQkJaWYgKGNvdW50 KCRmbGRQYXJ0cykgPiAxKSB7DQoJCQkJCSRyZmxkID0gJGZsZFBhcnRzWzFdOw0KCQkJCQkk ZmxkID0gJyR2YXJpYWJsZVsiJy4kcmZsZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAo JGZsZFBhcnRzWzBdID09ICJ1cmx2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykg PiAxKSB7DQoJCQkJCSRyZmxkID0gJGZsZFBhcnRzWzFdOw0KCQkJCQkkZmxkID0gJyRfR0VU WyInLiRyZmxkLiciXSc7DQoJCQkJfQ0KCQkJfSBlbHNlIGlmICgkZmxkUGFydHNbMF0gPT0g InN2cnZhciIpIHsNCgkJCQlpZiAoY291bnQoJGZsZFBhcnRzKSA+IDEpIHsNCgkJCQkJJHJm bGQgPSAkZmxkUGFydHNbMV07DQoJCQkJCSRmbGQgPSAnJF9TRVJWRVJbIicuJHJmbGQuJyJd JzsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAicGhwdmFyIikgew0K CQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0 c1sxXTsNCgkJCQkJJGZsZCA9ICckR0xPQkFMU1siJy4kcmZsZC4nIl0nOw0KCQkJCX0NCgkJ CX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRmbGRQYXJ0c1swXV0pKSB7DQoJCQkJ JHJmbGQgPSBzdHJ0b2xvd2VyKCRmbGRQYXJ0c1swXSk7DQoJCQkJJGZsZCA9ICckdGhpc2Fy dGljbGVbIicuJHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJO VUxMIikgew0KCQkJCSRzbWRfaWZfdmFyID0gJyc7DQoJCQkJJGZsZCA9ICckc21kX2lmX3Zh cic7DQoJCQkJJHJmbGQgPSAiTlVMTCI7DQoJCQl9IGVsc2Ugew0KCQkJCSRzbWRfaWZfdmFy ID0gJGZsZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAnJHNtZF9pZl92YXInOw0KCQkJCSRyZmxk ID0gImZpZWxkIi4oJGlkeCoxKzEpOw0KCQkJfQ0KCQkJJHJsZmxkID0gInNtZF9pZl9sZW5f Ii4kcmZsZDsNCgkJCSRyZmxkID0gInNtZF9pZl8iLiRyZmxkOw0KDQoJCQkvLyBUYWtlIGEg Y29weSBvZiAkZmxkIHRvIHVzZSBpbiBhbnkgaXNzZXQoKSByZXF1ZXN0cw0KCQkJJGZsZENs ZWFuID0gJGZsZDsNCgkJCWlmICgka2lsbFNwYWNlcykgew0KCQkJCSRmbGQgPSAncHJlZ19y ZXBsYWNlKCIvXHMrLyIsIiIsJy4kZmxkLicpJzsNCgkJCX0NCgkJCWlmICgkc3RyaXBGbGQp IHsNCgkJCQkkZmxkID0gJ3RyaW0oc3RyaXBfdGFncygnLiRmbGQuJykpJzsNCgkJCX0NCg0K CQkJLy8gRmluZCB0aGUgcmVhbCB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QgKG1heSBiZSBh bm90aGVyIGZpZWxkKQ0KCQkJaWYgKCR2YWxQYXJ0c1swXSA9PSAidXJsdmFyIikgew0KCQkJ CWlmIChjb3VudCgkdmFsUGFydHMpID4gMSkgew0KCQkJCQkkdmZsZCA9ICR2YWxQYXJ0c1sx XTsNCgkJCQkJJHZhbCA9IChpc3NldCgkX0dFVFskdmZsZF0pICYmICRfR0VUWyR2ZmxkXSAh PSAiIikgPyAnJF9HRVRbIicuJHZmbGQuJyJdJyA6IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyIn LCAnXCInLCAkdmZsZCkpOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJHZhbFBhcnRzWzBdID09 ICJzdnJ2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCR2YWxQYXJ0cykgPiAxKSB7DQoJCQkJCSR2 ZmxkID0gJHZhbFBhcnRzWzFdOw0KCQkJCQkkdmFsID0gKGlzc2V0KCRfU0VSVkVSWyR2Zmxk XSkgJiYgJF9TRVJWRVJbJHZmbGRdICE9ICIiKSA/ICckX1NFUlZFUlsiJy4kdmZsZC4nIl0n IDogZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2ZmxkKSk7DQoJCQkJfQ0KCQkJ fSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInR4cHZhciIpIHsNCgkJCQlpZiAoY291bnQo JHZhbFBhcnRzKSA+IDEpIHsNCgkJCQkJJHZmbGQgPSAkdmFsUGFydHNbMV07DQoJCQkJCSR2 YWwgPSAoaXNzZXQoJHZhcmlhYmxlWyR2ZmxkXSkgJiYgJHZhcmlhYmxlWyR2ZmxkXSAhPSAi IikgPyAnJHZhcmlhYmxlWyInLiR2ZmxkLiciXScgOiBkb1F1b3RlKHN0cl9yZXBsYWNlKCci JywgJ1wiJywgJHZmbGQpKTsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCR2YWxQYXJ0c1swXSA9 PSAicGhwdmFyIikgew0KCQkJCWlmIChjb3VudCgkdmFsUGFydHMpID4gMSkgew0KCQkJCQkk dmZsZCA9ICR2YWxQYXJ0c1sxXTsNCgkJCQkJJHZhbCA9IChpc3NldCgkR0xPQkFMU1skdmZs ZF0pICYmICRHTE9CQUxTWyR2ZmxkXSAhPSAiIikgPyAnJEdMT0JBTFNbIicuJHZmbGQuJyJd JyA6IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmZsZCkpOw0KCQkJCX0NCgkJ CX0gZWxzZSBpZiAoc3RycG9zKCR2YWxQYXJ0c1swXSwgIj8iKSA9PT0gMCkgew0KCQkJCSR2 YWxQYXJ0c1swXSA9IHN1YnN0cihzdHJ0b2xvd2VyKCR2YWxQYXJ0c1swXSksIDEpOw0KCQkJ CSR2ZmxkID0gJHZhbFBhcnRzWzBdOw0KCQkJCWlmIChpc3NldCgkdGhpc2ZpbGVbJHZmbGRd KSAmJiAkdGhpc2ZpbGVbJHZmbGRdICE9ICIiKSB7DQoJCQkJCSR2YWwgPSAnJHRoaXNmaWxl WyInLiR2ZmxkLiciXSc7DQoJCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2xpbmtbJHZmbGRd KSAmJiAkdGhpc2xpbmtbJHZmbGRdICE9ICIiKSB7DQoJCQkJCSR2YWwgPSAnJHRoaXNsaW5r WyInLiR2ZmxkLiciXSc7DQoJCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2ltYWdlWyR2Zmxk XSkgJiYgJHRoaXNpbWFnZVskdmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9ICckdGhpc2lt YWdlWyInLiR2ZmxkLiciXSc7DQoJCQkJfSBlbHNlIGlmIChhcnJheV9rZXlfZXhpc3RzKCR2 ZmxkLCAkYWxsUHR4dCkgJiYgJGFsbFB0eHRbJHZmbGRdICE9ICIiKSB7DQoJCQkJCSR2YWwg PSAkYWxsUHR4dFskdmZsZF07DQoJCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2FydGljbGVb JHZmbGRdKSAmJiAkdGhpc2FydGljbGVbJHZmbGRdICE9ICIiKSB7DQoJCQkJCSR2YWwgPSAn JHRoaXNhcnRpY2xlWyInLiR2ZmxkLiciXSc7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHZhbCA9 IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmZsZCkpOw0KCQkJCX0NCgkJCX0g ZWxzZSB7DQoJCQkJJHZmbGQgPSAidmFsIi4oJGlkeCoxKzEpOw0KCQkJCSR2YWwgPSBkb1F1 b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZhbFBhcnRzWzBdKSk7DQoJCQl9DQoJCQkk dmxmbGQgPSAic21kX2lmX2xlbl8iLiR2ZmxkOw0KCQkJJHZmbGQgPSAic21kX2lmXyIuJHZm bGQ7DQoJCQlpZiAoJHN0cmlwVmFsKSB7DQoJCQkJJHZhbCA9ICd0cmltKHN0cmlwX3RhZ3Mo Jy4kdmFsLicpKSc7DQoJCQl9DQoNCgkJCS8vIFJlcGxhY2UgdGhlIHN0cmluZyBwYXJ0cy4u Lg0KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJDQVNUIiwgJGNhc3QsICRvcCk7DQoJCQkkY21k ID0gKCRsZW5ndGgpID8gc3RyX3JlcGxhY2UoIkZJRUxEIiwgJGxlbmd0aCwgJGNtZCkgOiAk Y21kOw0KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJGSUVMRCIsICgoJGNhc2Vfc2Vuc2l0aXZl KSA/ICRmbGQgOiAnc3RydG9sb3dlcignLiRmbGQuJyknKSwgJGNtZCk7DQoJCQkkY21kID0g c3RyX3JlcGxhY2UoIlZBUk5BTUUiLCAkZmxkQ2xlYW4sICRjbWQpOw0KCQkJJGNtZCA9IHN0 cl9yZXBsYWNlKCJWQUxVRSIsICgoJGNhc2Vfc2Vuc2l0aXZlKSA/ICdWQUxVRScgOiAnc3Ry dG9sb3dlcihWQUxVRSknKSwgJGNtZCk7DQoJCQkkY21kID0gIkBcJHJlcGxhY2VtZW50c1sn eyIuJHJmbGQuIn0nXSA9ICIuJGZsZC4iOyBcbkBcJHJlcGxhY2VtZW50c1sneyIuJHJsZmxk LiJ9J10gPSBzdHJsZW4oIi4kZmxkLiIpOyBcbkBcJHJlcGxhY2VtZW50c1sneyIuJHZmbGQu In0nXSA9ICIuJHZhbC4iOyBcbkBcJHJlcGxhY2VtZW50c1sneyIuJHZsZmxkLiJ9J10gPSBz dHJsZW4oIi4kdmFsLiIpOyBcblwkb3V0W10gPSAoIi5zdHJfcmVwbGFjZSgiVkFMVUUiLCAo KCR2YWw9PT0iJyciICYmIHN0cnBvcygkb3AsICJzdHJwb3MiKSAhPT0gZmFsc2UpID8gIicg JyIgOiAkdmFsKSwgJGNtZCkuIikgPyAndHJ1ZScgOiAnZmFsc2UnOyI7DQoJCQlpZiAoJGRl YnVnKSB7DQoJCQkJZG1wKCRjbWQpOw0KCQkJfQ0KCQkJLy8gLi4uIGFuZCBldmFsdWF0ZSB0 aGUgZXhwcmVzc2lvbg0KCQkJZXZhbCgkY21kKTsNCgkJfQ0KCX0NCglpZiAoJGRlYnVnKSB7 DQoJCWVjaG8gIlJFU1VMVDoiOw0KCQlkbXAoJG91dCk7DQoJCWVjaG8gIlJFUExBQ0VNRU5U UzoiOw0KCQlkbXAoJHJlcGxhY2VtZW50cyk7DQoJfQ0KCWlmICgkZGVidWcgPiAxKSB7DQoJ CWVjaG8gIlBSRVRFWFQ6IjsNCgkJZG1wKCRwcmV0ZXh0KTsNCgkJZWNobyAiVEhJUyBBUlRJ Q0xFOiI7DQoJCWRtcCgkdGhpc2FydGljbGUpOw0KCQllY2hvICJUSElTIEZJTEU6IjsNCgkJ ZG1wKCR0aGlzZmlsZSk7DQoJCWVjaG8gIlRISVMgTElOSzoiOw0KCQlkbXAoJHRoaXNsaW5r KTsNCgkJZWNobyAiVEhJUyBJTUFHRToiOw0KCQlkbXAoJHRoaXNpbWFnZSk7DQoJfQ0KCS8v IENoZWNrIGxvZ2ljDQoJJHJlc3VsdCA9ICgkb3V0KSA/IHRydWUgOiBmYWxzZTsNCglpZiAo c3RydG9sb3dlcigkbG9naWMpID09ICJhbmQiICYmIGluX2FycmF5KCJmYWxzZSIsICRvdXQp KSB7DQoJCSRyZXN1bHQgPSBmYWxzZTsNCgl9DQoJaWYgKHN0cnRvbG93ZXIoJGxvZ2ljKSA9 PSAib3IiICYmICFpbl9hcnJheSgidHJ1ZSIsICRvdXQpKSB7DQoJCSRyZXN1bHQgPSBmYWxz ZTsNCgl9DQoNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2Uoc3RydHIoJHRoaW5nLCAkcmVwbGFj ZW1lbnRzKSwgJHJlc3VsdCkpOw0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIi O3M6MToiNSI7czo0OiJoZWxwIjtzOjMxMzQwOiIJPHA+PGRpdiBpZD0ic21kX2hlbHAiPjwv cD4KCgk8aDE+c21kX2lmPC9oMT4KCgk8cD5BIHJlYWxseSBzaW1wbGUsIGdlbmVyaWMgJiM4 MjE2O2lmIGNvbmRpdGlvbiYjODIxNzsgdGVzdGVyLiBDYW4gdGVzdCBhbnkgZmllbGQgb3Ig dmFyaWFibGUgaW4gdGhlIGN1cnJlbnQgYXJ0aWNsZSwgZmlsZSwgaW1hZ2UsIGxpbmssIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhciBvciA8Y29kZT4mbHQ7dHhwOnZhcmlh YmxlIC8mZ3Q7PC9jb2RlPiBjb250ZXh0IGZvciBhIHZhcmlldHkgb2YgYXR0cmlidXRlcyBh bmQgdGFrZSBhY3Rpb24gaWYgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IG9yIDxz cGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj4uPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+ CgoJPHVsPgoJCTxsaT5TdXBwb3J0cyBtb3N0IG1ham9yIGFydGljbGUsIGZpbGUsIGltYWdl IGFuZCBsaW5rIHZhcmlhYmxlcyBzdWNoIGFzIHNlY3Rpb24sIGNhdGVnb3J5LCBjdXN0b20g ZmllbGRzLCBpZCwgcXVlcnkgc3RyaW5nLCBhdXRob3IsIGJvZHksIGV4Y2VycHQsIHlhaGRl IHlhaGRlLCBwbHVzIHVybCB2YXJzLCBzZXJ2ZXIgdmFycywgdHhwIHZhcnMsIHBocCB2YXJz LCBhbmQgc3ViLWNhdGVnb3J5L3BhcmVudCBjaGVja2luZzwvbGk+CgkJPGxpPlRlc3RzIGlu Y2x1ZGUgZXF1YWxpdHksIGluZXF1YWxpdHksIGxlc3MgdGhhbiwgZ3JlYXRlciB0aGFuLCBk aXZpc2libGUgYnksIGVtcHR5LCB1c2VkLCBkZWZpbmVkLCBiZWdpbnMsIGVuZHMsIGNvbnRh aW5zLCBpcyBudW1lcmljIC8gYWxwaGEgLyBhbHBoYW51bWVyaWMgLyBsb3dlcmNhc2UgLyB1 cHBlcmNhc2UsIGFtb25nIG90aGVyczwvbGk+CgkJPGxpPlRlc3RzIGZvciBtb3JlIHRoYW4g b25lIGNvbmRpdGlvbiBhdCBvbmNlIGFuZCBhcHBsaWVzIGVpdGhlciA8c3BhbiBjbGFzcz0i Y2FwcyI+QU5EPC9zcGFuPiBsb2dpYyAoYWxsIHRlc3RzIG11c3QgcGFzcykgb3IgT1IgbG9n aWMgKGFueSB0ZXN0IG11c3QgcGFzcyk8L2xpPgoJCTxsaT5BbGwgdGVzdGVkIGZpZWxkcyBh bmQgdmFsdWVzIGFyZSBhdmFpbGFibGUgdG8gdGhlIGNvbnRhaW5lciBzbyB5b3UgY2FuIGRp c3BsYXkgdGhlbTwvbGk+CgkJPGxpPlVnbHkgYW5kIHZlcnkgZGlydHkuIFVzZXMgPHNwYW4g Y2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyA8Y29kZT5ldmFsKCk8L2NvZGU+IGNv bW1hbmQgd2hpY2ggbW9zdCBwcm9ncmFtbWVycyBjb25jdXIgc2hvdWxkIGJlIHJlbmFtZWQg PGNvZGU+ZXZpbCgpPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRob3I8L2gyPgoKCTxw PjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50Rm9ybSI+U3RlZiBEYXdz b248L2E+LiBCYXNlZCBvbiBhbiBpZGVhIGJyZXdpbmcgaW4gdGhlIGJhY2sgb2YgbXkgbWlu ZCB3aGlsZSBoYWNraW5nIGNoc19pZl91cmx2YXIuPC9wPgoKCTxoMj5JbnN0YWxsYXRpb24g LyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVp dGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTMwL3NtZF9p ZiI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFu ZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVmPSJo dHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjUzNTciPmZv cnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1Y2Nl c3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHVuaW5zdGFsbCwg c2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPgoK CTxoMj5Vc2FnZTwvaDI+CgoJPHA+VXNlIHRoZSB0YWcgaW4gYW55IHBhZ2UsIGZvcm0gb3Ig YXJ0aWNsZSBjb250ZXh0LiBDYW4gYWxzbyBiZSB1c2VkIGluc2lkZSBmaWxlLCBpbWFnZSBv ciBsaW5rIGxpc3RzIHRvIHRha2UgYWN0aW9uIGRlcGVuZGluZyBvbiBhdHRyaWJ1dGVzIG9m IHRoZSBjdXJyZW50IGl0ZW0uPC9wPgoKCTxoMyBjbGFzcz0idGFnIj5zbWRfaWY8L2gzPgoK CTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+QXQgdGhlIHBsYWNlIHlvdSB3aXNoIHRvIGNvbXBh cmUgYSBmaWVsZCB3aXRoIGFub3RoZXIgdmFsdWUsIHB1dCB0aGlzIHRhZyB3aXRoIGFsbCB0 aHJlZSBtYW5kYXRvcnkgYXR0cmlidXRlcyAoc2hhZGVkIGJlbG93KS4gRWFjaCB0YWtlIGEg c2VyaWVzIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0cyAmIzgyMTI7IHRob3VnaCB0aGUgPGEg aHJlZj0iI3BhcmFtZGVsaW0iPmNvbW1hIGlzIG92ZXJyaWRhYmxlPC9hPiB3aXRoIHRoZSBw YXJhbV9kZWxpbSBhdHRyaWJ1dGUuIElmIHRoZSByZXN1bHQgb2YgYWxsIHRoZSBjb21wYXJp c29uIHRlc3RzIGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiB0aGUgY29udGFp bmVkIGJsb2NrIHdpbGwgYmUgZXhlY3V0ZWQuIElmIHRoZSByZXN1bHQgaXMgPHNwYW4gY2xh c3M9ImNhcHMiPkZBTFNFPC9zcGFuPiwgYW55IDxjb2RlPiZsdDt0eHA6ZWxzZSAvJmd0Ozwv Y29kZT4gd2lsbCBiZSBleGVjdXRlZCBpbnN0ZWFkLiBXaXRob3V0IGFueSA8Y29kZT4mbHQ7 dHhwOmVsc2UgLyZndDs8L2NvZGU+IGJsb2NrLCBub3RoaW5nIGlzIG91dHB1dCBpZiB0aGUg cmVzdWx0IGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj4uPC9wPgoKCTxoNCBj bGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj5maWVsZDwvc3Bhbj4gOiB0aGUgPGEg aHJlZj0iI2ZpZWxkIj5maWVsZHM8L2E+IHRvIHRlc3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUgbWFuZCI+b3BlcmF0b3I8L3NwYW4+IDogdGhlIDxhIGhyZWY9IiNvcGVy YXRvciI+b3BlcmF0aW9uczwvYT4gZm9yIGNvbXBhcmlzb24gd2l0aCB0aGF0IGZpZWxkIChl LmcuIDxjb2RlPmVxPC9jb2RlPiwgPGNvZGU+bm90PC9jb2RlPiwgPGNvZGU+YmVnaW5zPC9j b2RlPiwgZXRjKS4gRGVmYXVsdCBpcyB1c3VhbGx5IDxjb2RlPmVxPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj52YWx1ZTwvc3Bhbj4gOiB0aGUgPGEg aHJlZj0iI3ZhbHVlIj52YWx1ZXM8L2E+IHdpdGggd2hpY2ggdG8gY29tcGFyZSB0aGUgZmll bGRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5sb2dpYzwvc3Bhbj4gOiBo b3cgbXVsdGlwbGUgdGVzdHMgYXJlIGpvaW5lZDogPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwv c3Bhbj4gb3IgT1IuIERlZmF1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkFORDwvc3Bhbj48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhc2Vfc2Vuc2l0aXZlPC9zcGFu PiA6IDEgPSBjYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uOyAwID0gaWdub3JlIGNhc2UuIERl ZmF1bHQgaXMgMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFyYW1fZGVs aW08L3NwYW4+IDogZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBlYWNoIGZpZWxkLCBvcGVyYXRv ciBvciB2YWx1ZSBpbiBhIG11bHRpLXRlc3QuIERlZmF1bHQgaXMgYSBjb21tYSAoLCk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1vZF9kZWxpbTwvc3Bhbj4gOiBkZWxp bWl0ZXIgdXNlZCB3aGVuIHNwZWNpZnlpbmcgZmllbGQgb3Igb3BlcmF0b3IgbW9kaWZpZXJz IGZvciB1cmx2YXIsIHN2cnZhciBhbmQgdHhwdmFyLiBEZWZhdWx0IGlzIGEgY29sb24gKDop PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5saXN0X2RlbGltPC9zcGFuPiA6 IGRlbGltaXRlciB1c2VkIHdoZW4gc3BlY2lmeWluZyBhIGxpc3Qgb2YgdmFsdWVzIHRvIGNo ZWNrIHZpYSB0aGUgPGNvZGU+aW48L2NvZGU+IG9yIDxjb2RlPm5vdGluPC9jb2RlPiBvcGVy YXRvcnMuIERlZmF1bHQgaXMgYSBmb3J3YXJkLXNsYXNoICgvKTwvbGk+Cgk8L3VsPgoKCTxw PlRoZSBsaXN0cyBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyLCBpLmUuIHRoZSAxc3QgZmllbGQg dXNlcyB0aGUgMXN0IG9wZXJhdG9yIGluIHRoZSBsaXN0IGFuZCBjb21wYXJlcyBpdCB0byB0 aGUgMXN0IHZhbHVlOyB0aGUgMm5kIGZpZWxkIHVzZXMgdGhlIDJuZCBvcGVyYXRvciBpbiB0 aGUgbGlzdCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIDJuZCB2YWx1ZSwgYW5kIHNvIG9uLiBW YWx1ZXMgc2hvdWxkIHVzdWFsbHkgYmUgc3BlY2lmaWVkIHdpdGggcGxhY2Vob2xkZXJzIHRv IG1haW50YWluIG9yZGVyOiBlLmcuIDxjb2RlPnZhbHVlPSZxdW90OywgNCwsIHRvcCZxdW90 OzwvY29kZT48L3A+CgoJPHA+Tm90ZSB0aGF0LCBhbHRob3VnaCB0aGUgZmlyc3QgdGhyZWUg YXR0cmlidXRlcyBhcmUgY29uc2lkZXJlZCBtYW5kYXRvcnksIGlmIHlvdSBoYXBwZW4gdG8g cmVxdWlyZSB0aGUgZGVmYXVsdCBvcGVyYXRvciBmb3IgYWxsIHlvdXIgdGVzdHMsIHlvdSBj YW4gc2FmZWx5IG9taXQgPGNvZGU+b3BlcmF0b3I8L2NvZGU+LiBTaW1pbGFybHkgd2l0aCB2 YWx1ZXM6IGlmIHlvdSBhcmUgZW50aXJlbHkgdGVzdGluZyB0aGUgZXhpc3RlbmNlIG9yIHR5 cGUgb2YgdmFyaWFibGVzLCB5b3UgY2FuIG9taXQgdGhlIDxjb2RlPnZhbHVlPC9jb2RlPiBw YXJhbWV0ZXIgaWYgeW91IHdpc2guIEFuZCBpZiB5b3UgYXJlIHRlc3RpbmcgdGhlIHNhbWUg PGNvZGU+ZmllbGQ8L2NvZGU+IGFnYWluIGFuZCBhZ2FpbiBmb3IgZGlmZmVyaW5nIGNvbmRp dGlvbnMsIHlvdSBjYW4gbGlzdCBpdCBqdXN0IG9uY2UgYXMgYSBjb252ZW5pZW50IHNob3J0 Y3V0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9ImZpZWxkIj5maWVsZDwvaDQ+ CgoJPHA+TGlzdCBvZiBmaWVsZCBsb2NhdGlvbnMgdG8gbG9vayBhdC4gU29tZSB1c2VmdWwg dmFsdWVzIGFyZTo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5zZWN0aW9uPC9jb2RlPjwvbGk+ CgkJPGxpPjxjb2RlPmNhdGVnb3J5PC9jb2RlPiAob3IgPGNvZGU+Y2F0ZWdvcnkxPC9jb2Rl Piwgb3IgPGNvZGU+Y2F0ZWdvcnkyPC9jb2RlPiBpZiBvbiBhbiBhcnRpY2xlIHBhZ2UpPC9s aT4KCQk8bGk+PGNvZGU+YXV0aG9yaWQ8L2NvZGU+IG9yIDxjb2RlPmF1dGhvcjwvY29kZT48 L2xpPgoJCTxsaT48Y29kZT5pZDwvY29kZT4gKGZpbGUvbGluay9pbWFnZS9hcnRpY2xlIElE KS4gSW4gYW4gaW5kaXZpZHVhbCBhcnRpY2xlIGNvbnRleHQsIHVzZSA8Y29kZT50aGlzaWQ8 L2NvZGU+IGluc3RlYWQ8L2xpPgoJCTxsaT48Y29kZT5xdWVyeTwvY29kZT4gKHRoZSBxdWVy eSBzdHJpbmcgZnJvbSB0aGUgc2VhcmNoIGZvcm0pPC9saT4KCQk8bGk+PGNvZGU+cGc8L2Nv ZGU+ICh0aGUgY3VycmVudCBwYWdlIG51bWJlciBpbiBsaXN0cyk8L2xpPgoJCTxsaT48Y29k ZT5tb250aDwvY29kZT4gKGN1cnJlbnQgbW9udGggZmllbGQgZnJvbSB0aGUgYWRkcmVzcyBi YXIpPC9saT4KCQk8bGk+PGNvZGU+c3RhdHVzPC9jb2RlPiAoZG9jdW1lbnQgc3RhdHVzOiAy MDAsIDQwNCwgNDAzLCBldGMpPC9saT4KCQk8bGk+PGNvZGU+cGFnZTwvY29kZT4gKHRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBQYWdlIHRlbXBsYXRlIHVzZWQgYnkgdGhp cyBzZWN0aW9uKTwvbGk+CgkJPGxpPjxjb2RlPm5leHRfaWQ8L2NvZGU+IC8gPGNvZGU+cHJl dl9pZDwvY29kZT4gKElEIG9mIG5leHQvcHJldiBkb2N1bWVudCBpZiBvbiBhcnRpY2xlIHBh Z2UpPC9saT4KCQk8bGk+PGNvZGU+bmV4dF90aXRsZTwvY29kZT4gLyA8Y29kZT5wcmV2X3Rp dGxlPC9jb2RlPihUaXRsZSBvZiBuZXh0L3ByZXYgZG9jdW1lbnQgaWYgb24gYXJ0aWNsZSBw YWdlKTwvbGk+CgkJPGxpPjxjb2RlPm5leHRfdXRpdGxlPC9jb2RlPiAvIDxjb2RlPnByZXZf dXRpdGxlPC9jb2RlPiAodXJsLXRpdGxlIG9mIG5leHQvcHJldiBkb2N1bWVudCBpZiBvbiBh cnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+cGVybWxpbmtfbW9kZTwvY29kZT4gKHRh a2UgYWN0aW9uIGJhc2VkIG9uIG9uZSBvZiB0aGUgbWVzc3kvY2xlYW4gPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4gc2NoZW1lcyk8L2xpPgoJCTxsaT48Y29kZT5vdGhlciBhcnRp Y2xlL2ZpbGUvbGluayBmaWVsZDwvY29kZT4gKGUuZy4gYm9keSwgZXhjZXJwdCwgYXJ0aWNs ZV9pbWFnZSwga2V5d29yZHMsIGxpbmthbm1lLCBmaWxlbmFtZSwgZG93bmxvYWRzLCAmIzgy MzA7KTwvbGk+CgkJPGxpPjxjb2RlPm15X2N1c3RvbV9maWVsZF9uYW1lPC9jb2RlPiAoYW55 IGN1c3RvbSBmaWVsZHMgeW91IGhhdmUgZGVmaW5lZCk8L2xpPgoJCTxsaT48Y29kZT51cmx2 YXI6dmFyX25hbWU8L2NvZGU+IChhbnkgdmFyaWFibGUgaW4gdGhlIGFkZHJlc3MgYmFyIGFm dGVyIHRoZSA8Y29kZT4/PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT5zdnJ2YXI6dmFyX25h bWU8L2NvZGU+IChhbnkgc3RhbmRhcmQgc2VydmVyIHZhcmlhYmxlLCBlLmcuIDxzcGFuIGNs YXNzPSJjYXBzIj5IVFRQPC9zcGFuPl9VU0VSX0FHRU5UKTwvbGk+CgkJPGxpPjxjb2RlPnR4 cHZhcjpteV92YXI8L2NvZGU+IChhbnkgVGV4dHBhdHRlcm4gdmFyaWFibGUgc2V0IHdpdGgg PGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O215X3ZhciZxdW90OyAvJmd0Ozwv Y29kZT4pPC9saT4KCQk8bGk+PGNvZGU+cGhwdmFyOm15X3ZhcjwvY29kZT4gKGFueSA8c3Bh biBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiB2YXJpYWJsZSA8ZW0+aW4gdGhlIGdsb2JhbCBz Y29wZTwvZW0+KTwvbGk+CgkJPGxpPjxjb2RlPnBhcmVudDpvcHRpb25hbF9tb2RpZmllcnM8 L2NvZGU+ICh3aGV0aGVyIHRoZSBnaXZlbiBjYXRlZ29yeSBpcyBhIGRlc2NlbmRlbnQgb2Yg YW5vdGhlciBjYXRlZ29yeSk8L2xpPgoJCTxsaT48Y29kZT5OVUxMPC9jb2RlPiAodXNlZnVs IHdoZW4gY29tcGFyaW5nIGFyYml0cmFyeSB2YWx1ZXMgZm9yIGVtcHRpbmVzcyk8L2xpPgoJ PC91bD4KCgk8cD5JZiB5b3Ugc3BlY2lmeSBhIGZpZWxkIG5hbWUgdGhhdCBkb2VzIG5vdCBl eGlzdCwgdGhlIHRleHQgeW91IHVzZSB3aWxsIGJlIHRha2VuIHZlcmJhdGltIGluIG1vc3Qg Y2FzZXMuPC9wPgoKCTxwPklmIHlvdSB3aXNoIHRvIGNvbXBhcmUgYSBmaWVsZCB0aGF0IG1p Z2h0IGNvbnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IChlLmcgPGNvZGU+ Ym9keTwvY29kZT4pLCBhZGQgdGhlIG1vZGlmaWVyIDxjb2RlPjpOT1RBR1M8L2NvZGU+IHRv IHRoZSBlbmQgb2YgdGhlIGZpZWxkLiBJdCB3aWxsIGhhdmUgaXRzIDxzcGFuIGNsYXNzPSJj YXBzIj5IVE1MPC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gdGFn cyBzdHJpcHBlZCBmcm9tIGl0IGFuZCB3aWxsIGFsc28gYmUgdHJpbW1lZCB0byByZW1vdmUg bGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzLjwvcD4KCgk8cD5UaGUgc3BlY2lhbCBmaWVs ZCA8Y29kZT5wYXJlbnQ8L2NvZGU+IGNoZWNrcyB0aGUgcGFyZW50IGNhdGVnb3J5IGZvciBh IG1hdGNoLiBVbmxpa2UgdGhlIG90aGVyIGZpZWxkIHR5cGVzLCB0aGUgZGVmYXVsdCA8YSBo cmVmPSIjb3BlcmF0b3IiPm9wZXJhdG9yPC9hPiBmb3IgcGFyZW50IGlzICYjODIxNjtjb250 YWlucyYjODIxNzsuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZW50aXJlIHRyZWUgaXMgY2hlY2tl ZCBmb3IgYSBtYXRjaCwgc3RhcnRpbmcgZnJvbSB0aGUgdG9wIG9mIHRoZSB0cmVlIGRvd24g dG8gdGhlIGN1cnJlbnQgY2F0ZWdvcnkuIEludGVybmFsbHksIHRoZSBwbHVnaW4gbWFrZXMg dXAgYSAmIzgyMjA7YnJlYWRjcnVtYiB0cmFpbCYjODIyMTsgb2YgY2F0ZWdvcmllcyBpbiB0 aGUgY3VycmVudCBicmFuY2gsIGVhY2ggc2VwYXJhdGVkIGJ5IGEgc3BhY2UsIHNvIHRlc3Rp bmcgZm9yIGVxdWFsaXR5IHdvdWxkIHJlcXVpcmUgcHV0dGluZyB0aGVtIGFsbCBpbiB0aGUg PGEgaHJlZj0iI3ZhbHVlIj52YWx1ZTwvYT4gcGFyYW1ldGVyLjwvcD4KCgk8cD5Zb3UgYXJl IG9mIGNvdXJzZSBmcmVlIHRvIGNob29zZSBhbiBhbHRlcm5hdGl2ZSBvcGVyYXRvcjsgPGNv ZGU+YmVnaW5zPC9jb2RlPiBpcyB2ZXJ5IHVzZWZ1bCBmb3IgdGVzdGluZyBpZiB0aGUgdG9w IGxldmVsIGNhdGVnb3J5IG1hdGNoZXMgdGhlIG9uZSBnaXZlbiBpbiB0aGUgPGNvZGU+dmFs dWU8L2NvZGU+IGZpZWxkLjwvcD4KCgk8cD5JZiB5b3UgdXNlIDxjb2RlPnBhcmVudDpMVkxu PC9jb2RlPiwgdGhlIGNvbXBhcmlzb24gd2lsbCBiZSByZXN0cmljdGVkIHRvIHRoYXQgJiM4 MjIwO2xldmVsJiM4MjIxOyBvZiBzdWItY2F0ZWdvcnk7IExWTDEgaXMgdGhlICYjODIyMDt0 b3AmIzgyMjE7IGxldmVsLCBMVkwyIGlzIHRoZSBuZXh0IHN1Yi1jYXRlZ29yeSBsZXZlbCwg YW5kIHNvIG9uLiBXaGVuIHVzaW5nIHRoZXNlIG1vZGlmaWVycywgdGhlICYjODIxNjtlcSYj ODIxNzsgb3BlcmF0b3IgYmVjb21lcyBtb3JlIHVzZWZ1bCBiZWNhdXNlIHlvdSBhcmUgY29t cGFyaW5nIGEgc2luZ2xlIHBhcmVudCBjYXRlZ29yeS48L3A+CgoJPHA+V2hlbiB1c2luZyBh cnRpY2xlcywgeW91IGNhbiBmdXJ0aGVyIG1vZGlmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBw YXJlbnQgdXNpbmcgdGhlIDxjb2RlPkNBVG48L2NvZGU+IHN5bnRheCAod2hlcmUgJiM4MjE2 O24mIzgyMTc7IGlzIDEgb3IgMikuIFNwZWNpZnlpbmcgJiM4MjIwO3BhcmVudCYjODIyMTsg d2l0aG91dCA8Y29kZT5DQVRuPC9jb2RlPiB3aWxsIHVzZSB0aGUgZ2xvYmFsIGNhdGVnb3J5 ICg8Y29kZT4/Yz08L2NvZGU+KS4gSWYgeW91IGFkZCA8Y29kZT46Q0FUbjwvY29kZT4gaXQg d2lsbCBpbnN0ZWFkIGNvbXBhcmUgdGhlIGFydGljbGUmIzgyMTc7cyBjYXRlZ29yeTEgb3Ig Y2F0ZWdvcnkyIHJlc3BlY3RpdmVseS48L3A+CgoJPHA+WW91IGNhbiB1c2UgPHNwYW4gY2xh c3M9ImNhcHMiPkNBVDwvc3Bhbj4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5MVkw8L3NwYW4+ IGluIGNvbWJpbmF0aW9uLCBpbmRlcGVuZGVudGx5IG9yIG5vdCBhdCBhbGwuIFRoaXMgYWxs b3dzIGNvbXBhcmlzb25zIHN1Y2ggYXMgJiM4MjIwO2lmIHRoZSAybmQgc3ViLWNhdGVnb3J5 IG9mIGNhdGVnb3J5MSBlcXVhbHMgYmxhaGJsYWgmIzgyMjE7IG9yICYjODIyMDtpZiBjYXRl Z29yeTIgaXMgYSBjaGlsZCBvZiBibGFoYmxhaCYjODIyMTsuIFNlZSA8YSBocmVmPSIjZWc0 Ij5FeGFtcGxlIDQ8L2E+LjwvcD4KCgk8cD5PbmUgb3RoZXIgc3BlY2lhbCBmaWVsZCBpcyA8 Y29kZT5OVUxMPC9jb2RlPi4gVGhpcyBpcyBleGFjdGx5IHdoYXQgaXQgc2F5cyBpdCBpczog ZW1wdHkuIFRoZSByZWFzb24gZm9yIGl0cyBpbmNsdXNpb24gaXMgdGhhdCBzb21ldGltZXMg eW91IHdpc2ggdG8gdGVzdCBzb21ldGhpbmcgdGhhdCBpc24mIzgyMTc7dCBhIHRydWUgdmFy aWFibGUgJiM4MjEyOyBlLmcuIGEgcmVwbGFjZW1lbnQgdmFyaWFibGUgZnJvbSBzbWRfdmFy cyBvciBzbWRfZWFjaCAmIzgyMTI7IHRvIHNlZSBpZiBpdCYjODIxNztzIGVtcHR5IG9yIG5v dC48L3A+CgoJPHA+SWYgeW91IHdlcmUgdG8gcHV0IHRoaXM6PC9wPgoKCTxwPjxjb2RlPiZs dDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3tyZXN1bHR9JnF1b3Q7IG9wZXJhdG9yPSZxdW90 O2lzZW1wdHkmcXVvdDsmZ3Q7PC9jb2RlPjwvcD4KCgk8cD55b3Ugd291bGQgbm90IGdldCB0 aGUgcmVzdWx0IHlvdSBleHBlY3QgKGl0JiM4MjE3O3MgcHJldHR5IGVzb3RlcmljIGJ1dCBp dCByZXZvbHZlcyBhcm91bmQgdGhlIGZhY3QgdGhhdCA8Y29kZT4mcXVvdDsmcXVvdDs8L2Nv ZGU+IChhcyBhIHZhcmlhYmxlIG5hbWUpIGlzIG5vdCBlbXB0eSwgaXQmIzgyMTc7cyBpbnZh bGlkKS4gVG8gZ2V0IHJvdW5kIHRoaXMgeW91IG1heSB1c2UgPHNwYW4gY2xhc3M9ImNhcHMi Pk5VTEw8L3NwYW4+IGFzIGEgcGxhY2Vob2xkZXIgYW5kIG1vdmUgdGhlIHRoaW5nIHlvdSB3 YW50IHRvIGNoZWNrIGludG8gdGhlIDxjb2RlPnZhbHVlPC9jb2RlPiBpbnN0ZWFkLCBlLmc6 PC9wPgoKCTxwPjxjb2RlPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O05VTEwmcXVvdDsg b3BlcmF0b3I9JnF1b3Q7ZXEmcXVvdDsgdmFsdWU9JnF1b3Q7e3Jlc3VsdH0mcXVvdDsmZ3Q7 PC9jb2RlPjwvcD4KCgk8cD53aWxsIHRlc3QgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5OVUxM PC9zcGFuPiBvYmplY3QgKGkuZS4gJiM4MjE2O2VtcHRpbmVzcyYjODIxNzspIHRvIHNlZSBp ZiBpdCYjODIxNztzIGVxdWFsIHRvIHRoZSA8Y29kZT57cmVzdWx0fTwvY29kZT4gcmVwbGFj ZW1lbnQgdmFyaWFibGUuIFlvdSBjYW4gdXNlIHNpbWlsYXIgbG9naWMgdG8gdGVzdCBmb3Ig b3B0aW9uYWwgdmFyaWFibGVzIGJ5IHN3YXBwaW5nIHRoZSBmaWVsZCBhbmQgdmFsdWUsIGxp a2UgdGhpczo8L3A+CgoJPHA+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7NyZx dW90OyBvcGVyYXRvcj0mcXVvdDtndCZxdW90OyB2YWx1ZT0mcXVvdDt7cmVzdWx0fSZxdW90 OyZndDs8L2NvZGU+PC9wPgoKCTxwPlRoYXQgd291bGQgc2VlIGlmIHRoZSByZXBsYWNlbWVu dCB2YXJpYWJsZSA8Y29kZT57cmVzdWx0fTwvY29kZT4gd2FzIGxlc3MgdGhhbiBvciBlcXVh bCB0byA3ICh0aGF0JiM4MjE3O3Mgbm90IGEgdHlwbywgdGhlIGxvZ2ljIGlzIHJldmVyc2Vk IGluIHRoaXMgY2FzZTogaXQgaXMgaW50ZXJwcmV0ZWQgYXM6ICYjODIyMDtpcyA3IGdyZWF0 ZXIgdGhhbiB7cmVzdWx0fSYjODIyMTssIHdoaWNoIGlzIHRoZSBzYW1lIGFzICYjODIyMDtp cyB7cmVzdWx0fSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gNyYjODIyMTshKTwvcD4KCgk8aDQg Y2xhc3M9ImF0dC1uYW1lICIgaWQ9Im9wZXJhdG9yIj5vcGVyYXRvcjwvaDQ+CgoJPHA+TGlz dCBvZiBvcGVyYXRvcnMgdG8gYXBwbHksIGluIG9yZGVyLCB0byBlYWNoIGZpZWxkLiBDaG9v c2UgZnJvbTo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5lcTwvY29kZT4gRXF1YWwgKHRoZSBk ZWZhdWx0IGZvciBhbGwgZXhjZXB0ICYjODIxNjtwYXJlbnQmIzgyMTc7KTwvbGk+CgkJPGxp Pjxjb2RlPm5vdDwvY29kZT4gTm90IGVxdWFsPC9saT4KCQk8bGk+PGNvZGU+bHQ8L2NvZGU+ IExlc3MgdGhhbjwvbGk+CgkJPGxpPjxjb2RlPmd0PC9jb2RlPiBHcmVhdGVyIHRoYW48L2xp PgoJCTxsaT48Y29kZT5sZTwvY29kZT4gTGVzcyB0aGFuIG9yIGVxdWFsIHRvPC9saT4KCQk8 bGk+PGNvZGU+Z2U8L2NvZGU+IEdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bzwvbGk+CgkJPGxp Pjxjb2RlPmluPC9jb2RlPiBGaWVsZCBpcyBvbmUgb2YgYSBsaXN0IG9mIHZhbHVlczwvbGk+ CgkJPGxpPjxjb2RlPm5vdGluPC9jb2RlPiBGaWVsZCBpcyBub3Qgb25lIG9mIHRoZSBnaXZl biBsaXN0IG9mIHZhbHVlczwvbGk+CgkJPGxpPjxjb2RlPmRpdmlzaWJsZTwvY29kZT4gRmll bGQgaXMgZXhhY3RseSBkaXZpc2libGUgYnkgdGhlIHZhbHVlPC9saT4KCQk8bGk+PGNvZGU+ YmVnaW5zPC9jb2RlPiBGaWVsZCBiZWdpbnMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJhY3Rl cnM8L2xpPgoJCTxsaT48Y29kZT5jb250YWluczwvY29kZT4gRmllbGQgY29udGFpbnMgYSBz ZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIChkZWZhdWx0IGZvciAmIzgyMTY7cGFyZW50JiM4MjE3 Oyk8L2xpPgoJCTxsaT48Y29kZT5lbmRzPC9jb2RlPiBGaWVsZCBlbmRzIHdpdGggYSBzZXF1 ZW5jZSBvZiBjaGFyYWN0ZXJzPC9saT4KCQk8bGk+PGNvZGU+aXNlbXB0eTwvY29kZT4gRmll bGQgaXMgZW1wdHkgKGNvbnRhaW5zIG5vdGhpbmcpPC9saT4KCQk8bGk+PGNvZGU+aXN1c2Vk PC9jb2RlPiBGaWVsZCBoYXMgc29tZSB2YWx1ZTwvbGk+CgkJPGxpPjxjb2RlPmRlZmluZWQ8 L2NvZGU+IEZpZWxkIGlzIHNldCAodXNlZnVsIHdpdGggdXJsdmFyIHZhcmlhYmxlcyk8L2xp PgoJCTxsaT48Y29kZT51bmRlZmluZWQ8L2NvZGU+IEZpZWxkIGlzIG5vdCBzZXQsIG9yIG1p c3NpbmcgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZTwvbGk+ CgkJPGxpPjxjb2RlPmlzbnVtPC9jb2RlPiBGaWVsZCBpcyBhIG51bWJlcjwvbGk+CgkJPGxp Pjxjb2RlPmlzYWxwaGE8L2NvZGU+IEZpZWxkIGNvbnRhaW5zIGNoYXJhY3RlcnMgb25seTwv bGk+CgkJPGxpPjxjb2RlPmlzYWxudW08L2NvZGU+IEZpZWxkIGNvbnRhaW5zIGFscGhhbnVt ZXJpYyBjaGFyYWN0ZXJzIG9ubHk8L2xpPgoJCTxsaT48Y29kZT5pc2xvd2VyPC9jb2RlPiBF dmVyeSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIGxvd2VyIGNhc2U8L2xpPgoJCTxsaT48 Y29kZT5pc3VwcGVyPC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIHVw cGVyIGNhc2U8L2xpPgoJCTxsaT48Y29kZT5pc3B1bmN0PC9jb2RlPiBFdmVyeSBjaGFyYWN0 ZXIgaW4gdGhlIGZpZWxkIGlzIHNvbWUgcHVuY3R1YXRpb24gbWFyazwvbGk+CgkJPGxpPjxj b2RlPmlzc3BhY2U8L2NvZGU+IEV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgZmllbGQgaXMgYSB3 aGl0ZXNwYWNlIGNoYXJhY3RlciAob3IgdGFiLCBuZXdsaW5lLCBldGMpPC9saT4KCTwvdWw+ CgoJPHA+V2l0aCB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgKHByaW1hcmlseSBndCwgbHQs IGdlLCBsZSkgeW91IG1heSBmaW5kIG9kZCBiZWhhdmlvdXIgd2hlbiBjb21wYXJpbmcgbnVt YmVycy4gRm9yIGV4YW1wbGUsIDxjb2RlPnVybHZhcjpwaWMgZ3QgNjwvY29kZT4gd2lsbCBy ZXR1cm4gPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IGlmIDxjb2RlPnBpYzwvY29k ZT4gaXMgc2V0IHRvICYjODIyMDtmcmVkJiM4MjIxOy4gVGhpcyBpcyBiZWNhdXNlIHRoZSB3 b3JkICYjODIyMDtmcmVkJiM4MjIxOyAob3IgYXQgbGVhc3QgdGhlICYjODIyMDtjaGFyYWN0 ZXIgZiYjODIyMTspIGlzIGdyZWF0ZXIgaW4gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5BU0NJ STwvc3Bhbj4gdGFibGUgdGhhbiB0aGUgJiM4MjIwO2NoYXJhY3RlciA2JiM4MjIxOy48L3A+ CgoJPHA+VG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIHlvdSBtYXkgYXBwZW5kIDxjb2Rl PjpOVU08L2NvZGU+IHRvIHRoZSBlbmQgb2YgYW55IG9mIHRoZXNlIG9wZXJhdG9ycyB0byBm b3JjZSB0aGUgcGx1Z2luIHRvIGNoZWNrIHRoYXQgdGhlIHZhbHVlcyBhcmUgaW50ZWdlcnMu PC9wPgoKCTxwPklmIHlvdSB3aXNoIHRvIGNvbXBhcmUgdGhlIGxlbmd0aCBvZiBhIGZpZWxk IG9yIHZhbHVlLCBhcHBlbmQgPGNvZGU+OkxFTjwvY29kZT4gdG8gYW55IG9mIHRoZSBudW1l cmljYWwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEl0IGRvZXNuJiM4MjE3O3QgbWFrZSBzZW5z ZSB0byB1c2UgYm90aCA8Y29kZT46TlVNPC9jb2RlPiBhbmQgPGNvZGU+OkxFTjwvY29kZT4g dG9nZXRoZXIsIHNvIHRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS48L3A+CgoJPHA+VGhl IDxjb2RlPmJlZ2luczwvY29kZT4sIDxjb2RlPmVuZHM8L2NvZGU+IGFuZCA8Y29kZT5jb250 YWluczwvY29kZT4gb3BlcmF0b3JzLCBhbG9uZyB3aXRoIGFueSBvZiB0aGUgPGNvZGU+aXM8 L2NvZGU+IG9wZXJhdG9ycyAoZXhjZXB0IDxjb2RlPmlzc3BhY2U8L2NvZGU+KSwgY2FuIHRh a2UgYW4gZXh0cmEgcGFyYW1ldGVyIGFzIHdlbGwuIFNpbmNlIHRoZXkgY29tcGFyZSBldmVy eSBjaGFyYWN0ZXIgYWdhaW5zdCB0aGUgZ2l2ZW4gYmVoYXZpb3VyLCBzcGFjZSBjaGFyYWN0 ZXJzIGNhbiBtZXNzIHRoaW5ncyB1cCBhIGJpdC4gRm9yIGV4YW1wbGUgPGNvZGU+ZmllbGQ9 JnF1b3Q7Y3VzdG9tMSZxdW90OyBvcGVyYXRvcj0mcXVvdDtpc2xvd2VyJnF1b3Q7PC9jb2Rl PiB3aWxsIGZhaWwgaWYgY3VzdG9tMSBjb250YWlucyAmIzgyMjA7dGhpcyBpcyBhIHRlc3Qm IzgyMjE7LiBPciBjb21wYXJpbmcgc29tZXRoaW5nIHRvIDxjb2RlPmJvZHk8L2NvZGU+IGNh biBmYWlsIGJlY2F1c2UgdGhlIGJvZHkgb2Z0ZW4gc3RhcnRzIHdpdGggYSBudW1iZXIgb2Yg c3BhY2UgY2hhcmFjdGVycy4gVG8gY2lyY3VtdmVudCB0aGlzLCBhZGQgPGNvZGU+Ok5PU1BB Q0U8L2NvZGU+IHRvIHRoZSBvcGVyYXRvciB3aGljaCB3aWxsIHJlbW92ZSBhbGwgc3BhY2Vz IGZyb20gdGhlIHN0cmluZyBiZWZvcmUgdGVzdGluZyBpdC48L3A+CgoJPHA+Tm90ZSBhbHNv IHRoYXQgd2hpbGUgPGNvZGU+ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2RlPnVuZGVmaW5lZDwv Y29kZT4gZGlmZmVyIHNlbWFudGljYWxseSBmcm9tIDxjb2RlPmlzdXNlZDwvY29kZT4gYW5k IDxjb2RlPmlzZW1wdHk8L2NvZGU+IChyZXNwZWN0aXZlbHkpLCB0aGUgd2F5IDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFzc2lnbnMgdmFyaWFibGVzIG1lYW5zIHRoYXQsIGZv ciB0aGUgbW9zdCBwYXJ0LCB0aGUgdGVybXMgYXJlIGludGVyY2hhbmdlYWJsZS4gV2hlbiBk ZWFsaW5nIHdpdGggdXJsdmFycyBhbmQgc3ZydmFycywgdGhlIHR3byBzZXRzIG9mIG9wZXJh dG9ycyBiZWhhdmUgaW5kZXBlbmRlbnRseSwgYXMgeW91IHdvdWxkIGV4cGVjdC4gU2VlIDxh IGhyZWY9IiNlZzUiPkV4YW1wbGUgNTwvYT4gZm9yIG1vcmUuIE5laXRoZXIgPGNvZGU+ZGVm aW5lZDwvY29kZT4gbm9yIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gbWFrZSBzZW5zZSB3aXRo IDxjb2RlPnBhcmVudDwvY29kZT4sIHNvIHRoZXkgYXJlIGZvcmJpZGRlbi48L3A+CgoJPGg0 IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJ2YWx1ZSI+dmFsdWU8L2g0PgoKCTxwPkxpc3Qgb2Yg dmFsdWVzIHRvIGNvbXBhcmUgZWFjaCBmaWVsZCBpbiB0dXJuIHRvLiBDYW4gYmUgc3RhdGlj IHZhbHVlcy90ZXh0IG9yIHRoZSBuYW1lIG9mIGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiBmaWVsZCwgbGlrZSB0aG9zZSBnaXZlbiBpbiA8YSBocmVmPSIjZmllbGQiPmZp ZWxkPC9hPiAoZXhjZXB0ICYjODIyMDtwYXJlbnQmIzgyMjE7KS48L3A+CgoJPHA+VG8gZGlz dGluZ3Vpc2ggYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCBmcm9tIHN0 YXRpYyB0ZXh0LCBwcmVmaXggdGhlIGZpZWxkIG5hbWUgd2l0aCA8Y29kZT4/PC9jb2RlPi4g Rm9yIGV4YW1wbGU6IDxjb2RlPnZhbHVlPSZxdW90O3RpdGxlJnF1b3Q7PC9jb2RlPiB3aWxs IGNvbXBhcmUgeW91ciBjaG9zZW4gZmllbGQgYWdhaW5zdCB0aGUgd29yZCAmIzgyMjA7dGl0 bGUmIzgyMjE7LCB3aGVyZWFzIDxjb2RlPnZhbHVlPSZxdW90Oz90aXRsZSZxdW90OzwvY29k ZT4gd2lsbCBjb21wYXJlIHlvdXIgZmllbGQgYWdhaW5zdCB0aGUgY3VycmVudCBhcnRpY2xl JiM4MjE3O3MgdGl0bGUuPC9wPgoKCTxwPklmIHlvdSB3aXNoIHRvIGNvbXBhcmUgYSB2YWx1 ZSB0aGF0IG1pZ2h0IGNvbnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IChl LmcgPGNvZGU+P2JvZHk8L2NvZGU+KSwgYWRkIHRoZSBtb2RpZmllciA8Y29kZT46Tk9UQUdT PC9jb2RlPiB0byB0aGUgZW5kIG9mIHRoZSB2YWx1ZS4gSXQgd2lsbCBoYXZlIGFueSA8c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8 L3NwYW4+IHRhZ3Mgc3RyaXBwZWQgZnJvbSBpdCBhbmQgd2lsbCBhbHNvIGJlIHRyaW1tZWQg dG8gcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcy48L3A+CgoJPHA+Tm90ZSB0 aGF0IHlvdSBtYXkgZmluZCB1c2luZyBkb3VibGUtcXVvdGVzIGluIGZpZWxkcyBnaXZlcyB1 bmV4cGVjdGVkIHJlc3VsdHMuIFRoZXkgYXJlIGJlc3QgYXZvaWRlZCwgb3Igd29ya2VkIGFy b3VuZCBieSB1c2luZyA8Y29kZT5jb250YWluczwvY29kZT4gaW5zdGVhZCBvZiA8Y29kZT5l cTwvY29kZT4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ibG9naWMiPmxvZ2lj PC9oND4KCgk8cD5DYW4gYmUgb25lIG9mIDxjb2RlPmFuZDwvY29kZT4gKHRoZSBkZWZhdWx0 KSBvciA8Y29kZT5vcjwvY29kZT4uIElmIHVzaW5nIDxjb2RlPmFuZDwvY29kZT4sIGFsbCBj b25kaXRpb25zIG11c3QgYmUgbWV0IGZvciBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9z cGFuPiByZXN1bHQuIElmIHVzaW5nIDxjb2RlPm9yPC9jb2RlPiwgYW55IG9mIHRoZSBjb25k aXRpb25zIHRoYXQgbWF0Y2ggd2lsbCBnaXZlIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8 L3NwYW4+IHJlc3VsdC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJjYXNlc2Vu c2UiPmNhc2Vfc2Vuc2l0aXZlPC9oND4KCgk8cD5CeSBkZWZhdWx0LCBhbGwgY29tcGFyaXNv bnMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgKDApLiBJZiB5b3Ugd2lzaCB0byBtYWtlIHRoZW0g c2Vuc2l0aXZlIHRvIGNhcHRpbGlzYXRpb24sIHNwZWNpZnkgPGNvZGU+Y2FzZV9zZW5zaXRp dmU9JnF1b3Q7MSZxdW90OzwvY29kZT4uIE5vdGUgdGhhdCBpZiB1c2luZyA8Y29kZT5pc2xv d2VyPC9jb2RlPiBvciA8Y29kZT5pc3VwcGVyPC9jb2RlPiBpbiBhIGNvbXBhcmlzb24sIGNh c2Ugc2Vuc2l0aXZpdHkgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHN3aXRjaGVkIG9uIHdoaWxl IHRoZSB0ZXN0IGlzIHRha2luZyBwbGFjZS48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAi IGlkPSJwYXJhbWRlbGltIj5wYXJhbV9kZWxpbTwvaDQ+CgoJPHA+WW91IG5vcm1hbGx5IHNw ZWNpZnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIHRvIHRoZSA8Y29kZT5maWVsZDwvY29kZT4s IDxjb2RlPm9wZXJhdG9yPC9jb2RlPiBhbmQgPGNvZGU+dmFsdWU8L2NvZGU+IHBhcmFtZXRl cnMuIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IG5vdCBiZSBkZXNpcmFibGUgaWYgeW91IGhhdmUg dXNlZCB0aGF0IGNoYXJhY3RlciBpbiB0aGUgbmFtZSBvZiBhIGN1c3RvbSBmaWVsZCwgZm9y IGV4YW1wbGUuIFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBkZWxpbWl0 ZXIgdG8gYWxtb3N0IGFueXRoaW5nIHlvdSBsaWtlLCBlLmcuIHNwZWNpZnlpbmcgPGNvZGU+ cGFyYW1fZGVsaW09JnF1b3Q7Ly8mcXVvdDs8L2NvZGU+IG1lYW5zIHlvdSB3b3VsZCBzcGVj aWZ5IDxlbT5hbGw8L2VtPiB5b3VyIHBhcmFtZXRlciBsaXN0cyBsaWtlIHRoaXM6PC9wPgoK CTxwPjxjb2RlPmZpZWxkPSZxdW90O3NlY3Rpb24gLy8gdXJsdmFyOnR5cGUmcXVvdDsgb3Bl cmF0b3I9JnF1b3Q7ZXEgLy8gYmVnaW5zJnF1b3Q7IHZhbHVlPSZxdW90O2FuaW1hbHMgLy8g dGlnZXImcXVvdDs8L2NvZGU+PC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0ibW9k ZGVsaW0iPm1vZF9kZWxpbTwvaDQ+CgoJPHA+VmVyeSBzaW1pbGFyIHRvIDxhIGhyZWY9IiNw YXJhbWRlbGltIj5wYXJhbV9kZWxpbTwvYT4sIHRoaXMgZ292ZXJucyB0aGUgZGVsaW1pdGVy IHRvIHVzZSBiZXR3ZWVuIGFuIG9wdGlvbiBhbmQgaXRzIG1vZGlmaWVyIChlLmcuIHRoZSB0 aGluZyBzZXBhcmF0aW5nIHVybHZhciwgc3ZydmFyIG9yIHR4cHZhciBmcm9tIHRoZSB2YXJp YWJsZSBuYW1lLCBvciBwYXJlbnQgZnJvbSA8Y29kZT5MVkw8L2NvZGU+IGFuZCA8Y29kZT5D QVQ8L2NvZGU+LCBhbmQgYWxzbyB0aGUgY2hhcmFjdGVyKHMpIHRoYXQgc2VwYXJhdGUgYW4g b3BlcmF0b3IgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTTwvc3Bhbj4gb3IgPHNw YW4gY2xhc3M9ImNhcHMiPk5PU1BBQ0U8L3NwYW4+IG1vZGlmaWVycykuIEl0IGlzIHRoZSBj b2xvbiAoOikgYnkgZGVmYXVsdC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJt b2RkZWxpbSI+bGlzdF9kZWxpbTwvaDQ+CgoJPHA+Rm9yIHVzZSB3aXRoIHRoZSA8Y29kZT5p bjwvY29kZT4gYW5kIDxjb2RlPm5vdGluPC9jb2RlPiBvcGVyYXRvcnMsIHRoaXMgaXMgdGhl IGRlbGltaXRlciBiZXR3ZWVuIHZhbHVlcy4gSXQgaXMgdGhlIGZvcndhcmQtc2xhc2ggKC8p IGJ5IGRlZmF1bHQuIEEgY29udHJpdmVkIGV4YW1wbGU6PC9wPgoKPHByZT48Y29kZT4mbHQ7 dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt0eHB2YXI6bGV2ZWwmcXVvdDsgb3BlcmF0b3I9JnF1 b3Q7aW4mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDsxLzIvMy81LzgvMTMvMjEvMzQmcXVvdDsm Z3Q7CiAgJmx0O3AmZ3Q7UmVzdWx0IGlzIGEgRmlib25hY2NpIHZhbHVlISZsdDsvcCZndDsK Jmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IGluIGFs bCAmIzgyMTY7ZGVsaW0mIzgyMTc7IGF0dHJpYnV0ZXMsIHNvbWUgY2hhcmFjdGVyIHNlcXVl bmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMgKHF1b3RlcyAmIzgyMTI7IHNpbmdsZSBvciBkb3Vi bGUgJiM4MjEyOyBzcHJpbmcgdG8gbWluZDsgb3RoZXJzIGxpa2UgcGFyZW50aGVzZXMgbWF5 IGFsc28gY2F1c2UgdGhlIHBsdWdpbiB0byBleHBsb2RlKS48L3A+CgoJPGgzPlJlcGxhY2Vt ZW50IHRhZ3M8L2gzPgoKCTxwPkV2ZXJ5IGZpZWxkIG9yIHZhbHVlIHRoYXQgeW91IHJlZmVy IHRvIGluIHlvdXIgc21kX2lmIHRhZyBiZWNvbWVzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGNv bnRhaW5pbmcgYmxvY2sgc28geW91IGNhbiBkaXNwbGF5IGl0cyBjb250ZW50cyBpZiB5b3Ug d2lzaC4gTW9zdCBvZiB0aGUgdGltZSB0aGlzIGlzIG5vdCBtdWNoIHVzZSBidXQgaXQgY2Fu IGJlIHZlcnkgdXNlZnVsIHdpdGggdGhlIDxjb2RlPmluPC9jb2RlPiBvcGVyYXRvciBvciB0 aGUgPGNvZGU+OkxFTjwvY29kZT4gbW9kaWZpZXIgLiBGb3IgaW5zdGFuY2UsIGlmIHlvdSBo YXZlIGFza2VkIHNtZF9pZiB0byB0ZXN0IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiB2YXJpYWJsZSBuYW1lZCAmIzgyMTY7bGV2ZWwmIzgyMTc7IGFuZCB0b2xkIGl0IHRv IGNvbXBhcmUgaXQgdG8gdGhlIGN1c3RvbSBmaWVsZCBsYWJlbGxlZCAmIzgyMTY7YWxsb3dh YmxlX2xldmVscyYjODIxNzssIHR3byB0YWdzIGJlY29tZSBhdmFpbGFibGUgd2hpY2ggeW91 IGNhbiB1c2Ugd2l0aGluIHRoZSBjb250YWluaW5nIGJsb2NrOjwvcD4KCgk8dWw+CgkJPGxp Pjxjb2RlPntzbWRfaWZfbGV2ZWx9PC9jb2RlPiB3b3VsZCBkaXNwbGF5IHRoZSB2YWx1ZSBv ZiB0aGUgJiM4MjE2O2xldmVsJiM4MjE3OyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiB2YXJpYWJsZTwvbGk+CgkJPGxpPjxjb2RlPntzbWRfaWZfYWxsb3dhYmxlX2xldmVsc308 L2NvZGU+IHdvdWxkIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50IGFydGlj bGUmIzgyMTc7cyBjdXN0b20gZmllbGQ8L2xpPgoJPC91bD4KCgk8cD5UaGUgcmVwbGFjZW1l bnQgdGFncyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggPGNvZGU+c21kX2lmXzwvY29kZT4g c28gdGhleSBkb24mIzgyMTc7dCBjbGFzaCB3aXRoIHRoZSBvbmVzIGluIHNtZF9nYWxsZXJ5 IChmb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBzbWRfaWYgaW5zaWRlIGFuIHNtZF9nYWxsZXJ5 IHRhZykuIElmIHlvdSBhcmUgY29tcGFyaW5nIGEgZml4ZWQtdmFsdWUgZmllbGQgKHN1Y2gg YXMgPGNvZGU+ZmllbGQ9JnF1b3Q7TlVMTCZxdW90OzwvY29kZT4gb3IgPGNvZGU+dmFsdWU9 JnF1b3Q7MTImcXVvdDs8L2NvZGU+IG9yIHNtZF9nYWxsZXJ5JiM4MjE3O3MgPGNvZGU+dmFs dWU9JnF1b3Q7e2NhdGVnb3J5fSZxdW90OzwvY29kZT4pIHRoZSBuYW1lIG9mIHRoZSByZXBs YWNlbWVudCB0YWdzIGFyZSA8Y29kZT57c21kX2lmX2ZpZWxkTn08L2NvZGU+IGZvciBmaWVs ZHMgYW5kIDxjb2RlPntzbWRfaWZfdmFsTn08L2NvZGU+IGZvciB2YWx1ZXMsIHdoZXJlIE4g aXMgdGhlIHRlc3QgbnVtYmVyIHN0YXJ0aW5nIGZyb20gMS48L3A+CgoJPHA+VGhlcmUgYXJl IGFsc28gdHdvICYjODIxNjtsZW5ndGgmIzgyMTc7IHJlcGxhY2VtZW50IHRhZ3MuIEZvbGxv d2luZyBhIHNpbWlsYXIgY29udmVudGlvbiB0byBhYm92ZSwgdGhlc2UgYXJlIHByZWZpeGVk IHdpdGggPGNvZGU+c21kX2lmX2xlbl88L2NvZGU+LiBJZiB5b3UgZ2V0IHN0dWNrLCB0ZW1w b3JhcmlseSBzd2l0Y2ggPGNvZGU+ZGVidWc9JnF1b3Q7MSZxdW90OzwvY29kZT4gb24gdG8g c2VlIHRoZSByZXBsYWNlbWVudHMgYXZhaWxhYmxlIGFuZCB0aGVpciBhc3NvY2lhdGVkIG5h bWVzL3ZhbHVlcy48L3A+CgoJPHA+U2VlIDxhIGhyZWY9IiNlZzgiPkV4YW1wbGUgODwvYT4g YW5kIDxhIGhyZWY9IiNlZzkiPjk8L2E+IGZvciBtb3JlLjwvcD4KCgk8aDI+RXhhbXBsZXM8 L2gyPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7c2VjdGlv biwgaWQmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtiZWdpbnMsIGd0JnF1b3Q7CiAgICAg dmFsdWU9JnF1b3Q7bGlvbiwgMTImcXVvdDsmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZndDsK Jmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRoYW5rcyZsdDsvcCZn dDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hlY2tzIGlmIHRo ZSBjdXJyZW50IHNlY3Rpb24gbmFtZSBiZWdpbnMgd2l0aCB0aGUgd29yZCAmIzgyMjA7bGlv biYjODIyMTsgYW5kIHRoZSBhcnRpY2xlIElEIGlzIGdyZWF0ZXIgdGhhbiAxMi4gRGlzcGxh eXMgdGhlIGFydGljbGUgaWYgYm90aCBjb25kaXRpb25zIGFyZSBtZXQgb3IgZGlzcGxheXMg dGhlIHRleHQgJiM4MjIwO05vdCB0b2RheSwgdGhhbmtzJiM4MjIxOyBpZiBub3QuPC9wPgoK CTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7c3VtbWFyeSwgY2F0 ZWdvcnksIHVybHZhcjpwaWMmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtpc3VzZWQsIGVx LCBpc251bSZxdW90OwogICAgIHZhbHVlPSZxdW90OywgYW5pbWFsICwmcXVvdDsgJmd0Owog Jmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90 IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPkNoZWNrcyBpZiB0aGUgY3VzdG9tIGZpZWxkIGxhYmVsbGVkICYjODIyMDtz dW1tYXJ5JiM4MjIxOyBoYXMgc29tZSBkYXRhIGluIGl0LCBjaGVja3MgaWYgdGhlIGdsb2Jh bCBjYXRlZ29yeSBlcXVhbHMgJiM4MjIwO2FuaW1hbCYjODIyMTsgYW5kIHRlc3RzIGlmIHRo ZSB1cmx2YXIgPGNvZGU+cGljPC9jb2RlPiBpcyBudW1lcmljIChlLmcuIDxjb2RlPj9waWM9 NTwvY29kZT4pLjwvcD4KCgk8cD5JZiBhbGwgdGhlc2UgY29uZGl0aW9ucyBhcmUgbWV0IHRo ZSBhcnRpY2xlIGlzIGRpc3BsYXllZCwgZWxzZSB0aGUgbWVzc2FnZSBpcyBzaG93bi4gTm90 ZSB0aGF0IDxjb2RlPmlzdXNlZDwvY29kZT4gYW5kIDxjb2RlPmlzbnVtPC9jb2RlPiBkb24m IzgyMTc7dCB0YWtlIGFyZ3VtZW50cyBmb3IgPGNvZGU+dmFsdWU8L2NvZGU+IGFuZCB0aGVp ciBwb3NpdGlvbnMgYXJlIGhlbGQgYnkgZW1wdHkgY29tbWFzICh0ZWNobmljYWxseSB0aGUg bGFzdCBjb21tYSBpc24mIzgyMTc7dCBuZWVkZWQgYnV0IGl0IGhlbHBzIGtlZXAgZXZlcnl0 aGluZyBuZWF0IGlmIHlvdSBhZGQgZnVydGhlciB0ZXN0cyBsYXRlciBvbikuPC9wPgoKCTxo MyBpZD0iZWczIj5FeGFtcGxlIDM8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7YXJ0aWNsZV9pbWFnZSwg c3ZydmFyOkhUVFBfVVNFUl9BR0VOVCZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2VxLCBj b250YWlucyZxdW90OwogICAgIHZhbHVlPSZxdW90O3VybHZhcjpwaWMsIFNhZmFyaSZxdW90 OwogICAgIGxvZ2ljPSZxdW90O29yJnF1b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7 CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3Am Z3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNvbXBhcmVzIChm b3IgZXF1YWxpdHkpIHRoZSBjdXJyZW50IGFydGljbGUgaW1hZ2UgaWQgd2l0aCB0aGUgdmFs dWUgb2YgdGhlIHVybCB2YXJpYWJsZSA8Y29kZT5waWM8L2NvZGU+IGFuZCBjaGVja3MgaWYg dGhlIHZhbHVlIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRUUDwvc3Bhbj5fVVNFUl9B R0VOVCBzdHJpbmcgY29udGFpbnMgJiM4MjIwO1NhZmFyaSYjODIyMTsuIFRoaXMgZXhhbXBs ZSB1c2VzIHRoZSAmIzgyMTY7b3ImIzgyMTc7IGxvZ2ljLCBoZW5jZSBpZiA8ZW0+ZWl0aGVy PC9lbT4gY29uZGl0aW9uIGlzIG1ldCB0aGUgYXJ0aWNsZSBpcyBzaG93biwgb3RoZXJ3aXNl IHRoZSAmIzgyMTY7bm90IHRvZGF5JiM4MjE3OyBtZXNzYWdlIGlzIGRpc3BsYXllZC48L3A+ CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtwYXJlbnQ6TFZM MiZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2VxJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7 bWFtbWFsJnF1b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAv Jmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNt ZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyB0aGUgMm5kIHN1Yi1jYXRlZ29y eSBvZiB0aGUgZ2xvYmFsIGNhdGVnb3J5JiM4MjE3O3MgdHJlZSB0byBzZWUgaWYgaXQgZXF1 YWxzICYjODIyMDttYW1tYWwmIzgyMjE7LiBJZiBpdCBkb2VzLCBzaG93IHRoZSBhcnRpY2xl OyBpZiBub3Qgc2hvdyB0aGUgbWVzc2FnZS4gUmVtb3ZpbmcgdGhlIDxjb2RlPjpMVkwyPC9j b2RlPiAod2hpY2ggYWxsb3dzIHlvdSB0byBhbHNvIHJlbW92ZSB0aGUgb3BlcmF0b3IgcGFy YW1ldGVyIHRvIGZvcmNlIHRoZSBjb21wYXJpc29uIHRvIGJlIHRoZSBkZWZhdWx0ICYjODIy MDtjb250YWlucyYjODIyMTspIGNoZWNrcyBpZiB0aGUgY3VycmVudCBnbG9iYWwgY2F0ZWdv cnkgaXMgYSBjaGlsZCBvZiAmIzgyMTY7bWFtbWFsJiM4MjE3OyAoYXQgYW55IGxldmVsKS48 L3A+CgoJPHA+Q2hhbmdlIHRoZSBmaWVsZCB0byA8Y29kZT5wYXJlbnQ6Q0FUMTwvY29kZT4g dG8gc2VlIGlmIHRoZSBhcnRpY2xlJiM4MjE3O3MgY2F0ZWdvcnkxIG1hdGNoZXMgJiM4MjE2 O21hbW1hbCYjODIxNzsgYXQgYW55IGxldmVsLCBvciB1c2UgPGNvZGU+ZmllbGQ9JnF1b3Q7 cGFyZW50OkNBVDE6TFZMMiZxdW90OzwvY29kZT4gdG8gY29tYmluZSB0aGUgY2hlY2tzLjwv cD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3VybHZhcjpw aWMsIHVybHZhcjpwYWdlJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7Z3Q6TlVNLCB1bmRl ZmluZWQmcXVvdDsKICAgICB2YWx1ZT0mcXVvdDs/YXJ0aWNsZV9pbWFnZSwmcXVvdDsmZ3Q7 CiAmbHQ7dHhwOmFydGljbGUgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtO b3QgdG9kYXksIHRoYW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+VGVzdHMgaWYgdGhlIHVybCB2YXJpYWJsZSA8Y29kZT5waWM8L2NvZGU+ IGlzIHN0cmljdGx5IG51bWVyaWNhbGx5IGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgaW4gdGhl IGN1cnJlbnQgYXJ0aWNsZSYjODIxNztzIDxjb2RlPmFydGljbGVfaW1hZ2U8L2NvZGU+IGZp ZWxkIGFuZCB0aGF0IHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGFnZTwvY29kZT4gaXMgbWlz c2luZyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBhZGRyZXNzLiBD b21wYXJlIHRoZSBvdXRjb21lIG9mIHRoaXMgdGVzdCB3aXRoIHRoZSBvdGhlciBvcGVyYXRv cnMgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWJsZSB3aGVuIHRlc3RpbmcgdGhlIDxjb2RlPnBh Z2U8L2NvZGU+IHVybHZhcjo8L3A+CgoJPHRhYmxlPgoJCTx0cj4KCQkJPHRoPjxzcGFuIGNs YXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPjwvc3Bhbj4gPC90aD4K CQkJPHRoPmRlZmluZWQgPC90aD4KCQkJPHRoPnVuZGVmaW5lZCA8L3RoPgoJCQk8dGg+aXN1 c2VkIDwvdGg+CgkJCTx0aD5pc2VtcHR5IDwvdGg+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4g aW5kZXgucGhwP3BhZyA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBj bGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNs YXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+ CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwv c3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNs YXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJ CTx0ZD4gaW5kZXgucGhwP3BhZ2U9IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMi PjxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8 c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bh bj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMi PkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+ PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+CgkJ PHRyPgoJCQk8dGQ+IGluZGV4LnBocD9wYWdlPTQgPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFz cz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJ CQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3Nw YW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9 ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJ PC90cj4KCTwvdGFibGU+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjwvaDM+CgoJPHA+UHV0 IHRoaXMgaW5zaWRlIHlvdXIgPGNvZGU+cGxhaW5saW5rczwvY29kZT4gZm9ybSBhbmQgZXhl Y3V0ZSBhIDxjb2RlPiZsdDt0eHA6bGlua2xpc3QgLyZndDs8L2NvZGU+IGZyb20gYW4gYXJ0 aWNsZSBwYWdlL2Zvcm06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7aWQmcXVvdDsKICAgICBvcGVyYXRv cj0mcXVvdDtnZTpOVU0sIGxlOk5VTSZxdW90OwogICAgIHZhbHVlPSZxdW90O3VybHZhcjpt aW4sIHVybHZhcjptYXgmcXVvdDsmZ3Q7CiAgJmx0O3R4cDpsaW5rZGVzY3RpdGxlIC8mZ3Q7 Jmx0O2JyIC8mZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRo YXQgd2lsbCBsaXN0IG9ubHkgdGhlIGxpbmtzIHRoYXQgaGF2ZSBJRHMgYmV0d2VlbiB0aGUg PGNvZGU+bWluPC9jb2RlPiBhbmQgPGNvZGU+bWF4PC9jb2RlPiB2YXJpYWJsZXMgc3BlY2lm aWVkIG9uIHRoZSBhZGRyZXNzIGJhci4gTm90aWNlIHRoYXQgdGhlIGlkIGZpZWxkIGlzIG9u bHkgbGlzdGVkIG9uY2UgYW5kIGVhY2ggb3BlcmF0b3IgaXMgYXBwbGllZCB0byBpdCBpbiB0 dXJuLjwvcD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3PC9oMz4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3Vy bHZhcjpwcm9kdWN0X2NvZGUmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtpc2FsbnVtJnF1 b3Q7Jmd0OwogICZsdDt0eHA6b3V0cHV0X2Zvcm0gZm9ybT0mcXVvdDtzaG93X3Byb2R1Y3Qm cXVvdDsgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtJbnZhbGlkIHByb2R1 Y3QgY29kZSZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+VGVzdHMgdG8gc2VlIGlmIHRoZSBwcm9kdWN0X2NvZGUgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gdmFyaWFibGUgaXMgYWxwaGFudW1lcmljIGFuZCBkaXNwbGF5cyBhIGZv cm0gaWYgc28uPC9wPgoKCTxoMyBpZD0iZWc4Ij5FeGFtcGxlIDg8L2gzPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1 b3Q7dXJsdmFyOnNvcnRfb3JkZXImcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtpbiZxdW90 OwogICAgIHZhbHVlPSZxdW90O2lkL3ByaWNlL3NpemUvY29sb3VyJnF1b3Q7Jmd0OwogICZs dDtwJmd0O1NvcnRpbmcgdmFsdWVzIGJ5IHtzbWRfaWZfc29ydF9vcmRlcn0mbHQ7L3AmZ3Q7 CiAgLy8gRG8gc29tZSBzdHVmZgombHQ7dHhwOmVsc2UgLyZndDsKICAvLyBVc2UgYSBkZWZh dWx0IHNvcnQsIG9yIHNob3cgYW4gZXJyb3IgaGVyZQombHQ7L3R4cDpzbWRfaWYmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5CeSB1c2luZyB0aGUgcmVwbGFjZW1lbnQgdGFnIHtzbWRfaWZf c29ydF9vcmRlcn0geW91IGhhdmUgcGx1Y2tlZCB0aGUgdmFsdWUgZnJvbSB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gYmFyIGFuZCBpbnNlcnRlZCBpdCBpbnRvIHRoZSBh cnRpY2xlLiBVc2VmdWwgd2hlbiB1c2luZyB0aGUgPGNvZGU+aW48L2NvZGU+IG9yIDxjb2Rl Pm5vdGluPC9jb2RlPiBvcGVyYXRvcnMgYmVjYXVzZSwgYWx0aG91Z2ggeW91IGtub3cgdGhh dCB0aGUgZmllbGQgbWF0Y2hlZCBvbmUgb2YgdGhlIHZhbHVlcyBpbiB5b3VyIGxpc3QsIHlv dSB3b3VsZCBvdGhlcndpc2Ugbm90IGtub3cgd2hpY2ggb25lIGhhcyBiZWVuIGdpdmVuIG9u IHRoZSBhZGRyZXNzIGJhci48L3A+CgoJPGgzIGlkPSJlZzkiPkV4YW1wbGUgOTwvaDM+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnBocCZndDsK Z2xvYmFsICRib2R5ZXg7CiRib2R5ZXggPSBib2R5KGFycmF5KCkpIC4gZXhjZXJwdChhcnJh eSgpKTsKJmx0Oy90eHA6cGhwJmd0OwombHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtwaHB2 YXI6Ym9keWV4JnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7Z3Q6TEVOJnF1b3Q7CiAgICAg dmFsdWU9JnF1b3Q7NTAwJnF1b3Q7Jmd0OwogICZsdDtwJmd0O1lvdSBhcmUgYSBiaWcgYm95 IGF0IHtzbWRfaWZfbGVuX2JvZHlleH0KICAgICBjaGFyYWN0ZXJzIGxvbmchJmx0Oy9wJmd0 OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDIgY2xhc3M9ImNoYW5n ZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxpPjMwIERlYyAwNyB8IDAuMSB8IElu aXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjMwIERlYyAwNyB8IDAuMiB8IEFkZGVkIHBhcmVu dCBjYXRlZ29yeSBjaGVja2luZyAodGhhbmtzIHRoZV9naG9zdCk8L2xpPgoJCTxsaT4wMiBK YW4gMDggfCAwLjMgfCBBZGRlZCBkZWZpbmVkL3VuZGVmaW5lZCBhbmQgc3RyaWN0IG51bWVy aWMgY29tcGFyaXNvbnM8L2xpPgoJCTxsaT4wNiBKYW4gMDggfCAwLjQgfCBBZGRlZCA8Y29k ZT4/PC9jb2RlPiBub3RhdGlvbiB0byBhbGxvdyB0aGUgdmFsdWUgdG8gcmVhZCA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZHM7IGJldHRlciBxdW90ZSBzdXBwb3J0IChi b3RoIHRoYW5rcyBOZWlsQSk8L2xpPgoJCTxsaT4wNiBKYW4gMDggfCAwLjQxIHwgRml4ZWQg bG93ZXIgY2FzZSBmaWVsZCBuYW1lcyBhbmQgdW5kZWZpbmVkIGluZGV4IGVycm9yICh0aGFu a3MgcGV0ZXJqKTwvbGk+CgkJPGxpPjE0IEphbiAwOCB8IDAuNSB8IEFkZGVkIGNhc2Vfc2Vu c2l0aXZlIG9wdGlvbjsgbWFkZSAmIzgyMTY7Y29udGFpbnMmIzgyMTc7IHRoZSBkZWZhdWx0 IGZvciAmIzgyMTY7cGFyZW50JiM4MjE3OyB0ZXN0czsgaW1wcm92ZWQgaGVscCAoYWxsIHRo YW5rcyB0aGVfZ2hvc3QpOyBhZGRlZCBkZWxpbSBvcHRpb25zPC9saT4KCQk8bGk+MTUgSmFu IDA4IHwgMC41MSB8IEZpeGVkIGRlZmluZWQvdW5kZWZpbmVkIHN5bnRheCBlcnJvcjsgdGln aHRlbmVkIGlzdXNlZC9pc2VtcHR5IHRvIGRpc3Rpbmd1aXNoIHRoZW0gZnJvbSBkZWZpbmVk L3VuZGVmaW5lZDwvbGk+CgkJPGxpPjI1IE1heSAwOCB8IDAuNiB8IEZpeGVkICYjODIxNjt1 bmRlZmluZWQgaW5kZXgmIzgyMTc7IGVycm9ycyAodGhhbmtzIHJlZGJvdCBhbmQgdGhlX2do b3N0KSA7IGFkZGVkIG1vcmUgcHJldGV4dCB2YXJpYWJsZXMgOyBhZGRlZCBtb3JlIDxjb2Rl PmlzPC9jb2RlPiBjaGVja3MgKGFuZCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPk5PU1BBQ0U8 L3NwYW4+IG1vZGlmaWVyKSA7IGFsbG93ZWQgZmlsZSBhbmQgbGluayB0ZXN0cyAoaW5jbHVk aW5nIHBhcmVudCBjYXRlZ29yaWVzKTwvbGk+CgkJPGxpPjI2IE1heSAwOCB8IDAuNjEgfCBG aXhlZCBzdHVwaWQgb3ZlcnNpZ2h0IGluIGZpZWxkIG5hbWUgZ2VuZXJhdGlvbiB0byBhbGxv dyBhcmJpdHJhcnkgbmFtZXMgaW5zdGVhZCBvZiBmb3JjaW5nICR0aGlzYXJ0aWNsZSAodGhh bmtzIHRvIEpvYW5hIENhcnZhbGhvIGZvciBsZWFkaW5nIG1lIHRvIHRoaXMpPC9saT4KCQk8 bGk+MTEgSnVuIDA4IHwgMC42MiB8IEZpeGVkIGluY29ycmVjdCByZXN1bHQgaWYgZXZhbCgp IGlzIGVtcHR5IDsgYWRkZWQgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTEw8L3NwYW4+IGZpZWxk IG9iamVjdDwvbGk+CgkJPGxpPjEwIFNlcCAwOCB8IDAuNyB8IEZpeGVkIHdhcm5pbmcgaWYg ZW1wdHkgY3VzdG9tIGZpZWxkIGluIHZhbHVlICh0aGFua3MgdmlzdWFscGVvcGxlKSA7IGFk ZGVkIHR4cHZhciBzdXBwb3J0ICh0aGFua3MgdGhlX2dob3N0KSA7IGFkZGVkIHRoaXNpbWFn ZSBzdXBwb3J0IChmb3IgdGhlIGZ1dHVyZSkgOyBhZGRlZCBvcGVyYXRvcnMgPGNvZGU+aW48 L2NvZGU+LCA8Y29kZT5ub3RpbjwvY29kZT4gYW5kIHRoZSA8Y29kZT5saXN0X2RlbGltPC9j b2RlPiBhdHRyaWJ1dGU7IGVuYWJsZWQgcmVwbGFjZW1lbnQgdGFncyBmb3IgbWF0Y2hlZCB2 YXJpYWJsZXM8L2xpPgoJCTxsaT4wMSBPY3QgMDggfCAwLjcxIHwgRml4ZWQgdGhlIGZpeCBm b3IgZW1wdHkgY3VzdG9tIGZpZWxkcyBpbXBsZW1lbnRlZCBpbiAwLjcgKHRoYW5rcyBtYXB1 L3Zpc3VhbHBlb3BsZSk8L2xpPgoJCTxsaT4wMSBPY3QgMDggfCAwLjcyIHwgQWRkZWQgPGNv ZGU+Ok5PVEFHUzwvY29kZT4gKHRoYW5rcyBtYXB1KTwvbGk+CgkJPGxpPjEzIE9jdCAwOCB8 IDAuNzMgfCBBZGRlZCA8Y29kZT46Tk9TUEFDRTwvY29kZT4gdG8gPGNvZGU+YmVnaW5zPC9j b2RlPiwgPGNvZGU+ZW5kczwvY29kZT4gYW5kIDxjb2RlPmNvbnRhaW5zPC9jb2RlPiAodGhh bmtzIG1hcHUpLCBhZGRlZCBwaHB2YXIgc3VwcG9ydCwgPGNvZGU+OkxFTjwvY29kZT4gbW9k aWZpZXIgYW5kIGxlbmd0aCByZXBsYWNlbWVudCB0YWdzIChhbGwgdGhhbmtzIHRoZV9naG9z dCk8L2xpPgoJCTxsaT4xMyBPY3QgMDggfCAwLjc0IHwgQnVnIGZpeCB0aGUgc21kX2lmXyBu YW1lcyBvZiB2YWxzIGFuZCBmaWVsZHMgdG8gYXZvaWQgY2xhc2hlcy4gTm93IG51bWVyaWNh bGx5IGluZGV4ZWQ8L2xpPgoJCTxsaT4wMiBEZWMgMDggfCAwLjc1IHwgQWRkZWQgPGNvZGU+ ZGl2aXNpYmxlPC9jb2RlPiBvcGVyYXRvciAodGhhbmtzIGdvbWVkaWEpIDsgYWxsb3cgc2hv cnQtY2lyY3VpdCBvZiBmaWVsZHMgKHRoYW5rcyByZWRib3QpPC9saT4KCTwvdWw+CgogIDwv ZGl2Pgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRl eHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS4zIDt9CiNzbWRfaGVscCBjb2Rl IHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNv dXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVs cCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAj OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46 MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21k X2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNz bWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFk ZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIw cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7 IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjNjkzOyBmb250OiBib2xkIDEycHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQg MTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAx MHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0dC1u YW1lIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5k OiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0 aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9o ZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzou NWVtIDA7fQo8L3N0eWxlPgo8IS0tIC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+CiI7czoz OiJtZDUiO3M6MzI6ImNmMGMzNjM0OGRiMDNhYTdhZjlhY2MyNzQyMDUyMTAzIjt9