# Name: smd_if v0.74 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6Njoic21kX2lmIjtzOjY6ImF1dGhvciI7czoxMToiU3RlZiBE YXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS8i O3M6NzoidmVyc2lvbiI7czo0OiIwLjc0IjtzOjExOiJkZXNjcmlwdGlvbiI7czozNToiR2Vu ZXJpYyBtdWx0aXBsZSBpZiBjb25kaXRpb24gdGVzdHMiO3M6NDoiY29kZSI7czoxMDkyNToi ZnVuY3Rpb24gc21kX2lmKCRhdHRzLCR0aGluZykgew0KCWdsb2JhbCAkdGhpc2FydGljbGUs ICRwcmV0ZXh0LCAkdGhpc2ZpbGUsICR0aGlzbGluaywgJHRoaXNpbWFnZSwgJHZhcmlhYmxl Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2ZpZWxkJyA9PiAnJywNCgkJJ29wZXJh dG9yJyA9PiAnJywNCgkJJ3ZhbHVlJyA9PiAnJywNCgkJJ2xvZ2ljJyA9PiAnYW5kJywNCgkJ J2Nhc2Vfc2Vuc2l0aXZlJyA9PiAwLA0KCQkncGFyYW1fZGVsaW0nID0+ICcsJywNCgkJJ21v ZF9kZWxpbScgPT4gJzonLA0KCQknbGlzdF9kZWxpbScgPT4gJy8nLA0KCQknZGVidWcnID0+ ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJLy8gU3BlY2lhbCBmaWVsZCBuYW1lcyB0aGF0IHJl ZmVyIHRvICRwcmV0ZXh0IG9yIGVsc2V3aGVyZSAtIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhc3N1 bWVkIHRvDQoJLy8gZXhpc3QgaW4gJHRoaXNhcnRpY2xlIHNvIGN1c3RvbSBmaWVsZHMgY2Fu IGJlIHVzZWQNCgkkYWxsUHR4dCA9IGFycmF5KA0KCQkiaWQiID0+ICckcHJldGV4dFsiaWQi XScsDQoJCSJzZWN0aW9uIiA9PiAnJHByZXRleHRbInMiXScsDQoJCSJjYXRlZ29yeSIgPT4g JyRwcmV0ZXh0WyJjIl0nLA0KCQkicXVlcnkiID0+ICckcHJldGV4dFsicSJdJywNCgkJInBn IiA9PiAnJHByZXRleHRbInBnIl0nLA0KCQkibW9udGgiID0+ICckcHJldGV4dFsibW9udGgi XScsDQoJCSJhdXRob3IiID0+ICckcHJldGV4dFsiYXV0aG9yIl0nLA0KCQkic3RhdHVzIiA9 PiAnJHByZXRleHRbInN0YXR1cyJdJywNCgkJInBhZ2UiID0+ICckcHJldGV4dFsicGFnZSJd JywNCgkJIm5leHRfaWQiID0+ICckcHJldGV4dFsibmV4dF9pZCJdJywNCgkJIm5leHRfdGl0 bGUiID0+ICckcHJldGV4dFsibmV4dF90aXRsZSJdJywNCgkJIm5leHRfdXRpdGxlIiA9PiAn JHByZXRleHRbIm5leHRfdXRpdGxlIl0nLA0KCQkicHJldl9pZCIgPT4gJyRwcmV0ZXh0WyJw cmV2X2lkIl0nLA0KCQkicHJldl90aXRsZSIgPT4gJyRwcmV0ZXh0WyJwcmV2X3RpdGxlIl0n LA0KCQkicHJldl91dGl0bGUiID0+ICckcHJldGV4dFsicHJldl91dGl0bGUiXScsDQoJCSJw ZXJtbGlua19tb2RlIiA9PiAnJHByZXRleHRbInBlcm1saW5rX21vZGUiXScsDQoJKTsNCgkv LyBFYWNoIGVudHJ5IGhhcyB0aGUgb3BlcmF0aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIgYW5k IGEgbGlzdCBvZiBkaXNhbGxvd2VkIGZpZWxkcw0KCSRhbGxPcHMgPSBhcnJheSgNCgkJJ2Vx JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA9PT0gQ0FTVCBWQUxV RScsICcnKSwNCgkJJ25vdCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklF TEQgIT09IENBU1QgVkFMVUUnLCAnJyksDQoJCSdndCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5B TUUpICYmIENBU1QgRklFTEQgPiBDQVNUIFZBTFVFJywgJycpLA0KCQknZ2UnID0+IGFycmF5 KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJRUxEID49IENBU1QgVkFMVUUnLCAnJyksDQoJ CSdsdCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPCBDQVNUIFZB TFVFJywgJycpLA0KCQknbGUnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJ RUxEIDw9IENBU1QgVkFMVUUnLCAnJyksDQoJCSdpbicgPT4gYXJyYXkoJ2lzc2V0KFZBUk5B TUUpICYmIGluX2FycmF5KEZJRUxELCBleHBsb2RlKCInLiRsaXN0X2RlbGltLiciLCBWQUxV RSkpICE9PSBmYWxzZScsICcnKSwNCgkJJ25vdGluJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgaW5fYXJyYXkoRklFTEQsIGV4cGxvZGUoIicuJGxpc3RfZGVsaW0uJyIsIFZBTFVF KSkgPT09IGZhbHNlJywgJycpLA0KCQknYmVnaW5zJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgc3RycG9zKEZJRUxELCBWQUxVRSkgPT09IDAnLCAnJyksDQoJCSdjb250YWlucycg PT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIHN0cnBvcyhGSUVMRCwgVkFMVUUpICE9PSBm YWxzZScsICcnKSwNCgkJJ2VuZHMnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBzdWJz dHIoRklFTEQsIHN0cmxlbihGSUVMRCkgLSBzdHJsZW4oVkFMVUUpKSA9PT0gVkFMVUUnLCAn JyksDQoJCSdkZWZpbmVkJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSknLCAncGFyZW50Jyks DQoJCSd1bmRlZmluZWQnID0+IGFycmF5KCchaXNzZXQoVkFSTkFNRSknLCAncGFyZW50Jyks DQoJCSdpc2VtcHR5JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgRklFTEQgPT0gIiIn LCAnJyksDQoJCSdpc3VzZWQnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBGSUVMRCAh PSAiIicsICcnKSwNCgkJJ2lzbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5 cGVfZGlnaXQoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2FscGhhJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxwaGEoKHN0cmluZylGSUVMRCknLCAnJyksDQoJ CSdpc2FsbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxudW0oKHN0 cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2xvd2VyJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgY3R5cGVfbG93ZXIoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3VwcGVyJyA9 PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfdXBwZXIoKHN0cmluZylGSUVMRCkn LCAnJyksDQoJCSdpc3B1bmN0JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVf cHVuY3QoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3NwYWNlJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgY3R5cGVfc3BhY2UoKHN0cmluZylGSUVMRCknLCAnJyksDQoJKTsN Cg0KCSRudW1lcmljT3BzID0gImd0LCBnZSwgbHQsIGxlLCBlcSwgbm90IjsNCgkkY2FzZU9w cyA9ICJpc2xvd2VyLCBpc3VwcGVyIjsNCgkkc3BhY2VPcHMgPSAiaXNudW0sIGlzYWxwaGEs IGlzYWxudW0sIGlzbG93ZXIsIGlzdXBwZXIsIGlzcHVuY3QsIGJlZ2lucywgY29udGFpbnMs IGVuZHMiOw0KCSRmaWVsZHMgPSBkb19saXN0KCRmaWVsZCwgJHBhcmFtX2RlbGltKTsNCgkk b3BzID0gZG9fbGlzdCgkb3BlcmF0b3IsICRwYXJhbV9kZWxpbSk7DQoJJG51bU9wcyA9IGNv dW50KCRvcHMpOw0KCSR2YWxzID0gZG9fbGlzdCgkdmFsdWUsICRwYXJhbV9kZWxpbSk7DQoJ JG51bVZhbHMgPSBjb3VudCgkdmFscyk7DQoJJHBhcmVudENhdHMgPSAnJzsgLy8gUGxhY2Vo b2xkZXIgZm9yIHRoZSBjb25jYXRlbmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBsZWFmIG5vZGVz DQoJJHJlcGxhY2VtZW50cyA9IGFycmF5KCk7DQoJJHR5cGUgPSAoJHRoaXNmaWxlKSA/ICJm aWxlIiA6ICgoJHRoaXNsaW5rKSA/ICJsaW5rIiA6ICgoJHRoaXNpbWFnZSkgPyAiaW1hZ2Ui IDogImFydGljbGUiKSk7DQoJJG91dCA9IGFycmF5KCk7DQoNCglmb3IgKCRpZHggPSAwOyAk aWR4IDwgY291bnQoJGZpZWxkcyk7ICRpZHgrKykgew0KCQkkZmxkID0gJGZpZWxkc1skaWR4 XTsNCgkJJGZsZFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkZmxkKTsNCgkJJHZhbCA9 ICgkaWR4IDwgJG51bVZhbHMpID8gJHZhbHNbJGlkeF0gOiAnJzsNCgkJJHZhbFBhcnRzID0g ZXhwbG9kZSgkbW9kX2RlbGltLCAkdmFsKTsNCgkJJG9wID0gKCRpZHggPCAkbnVtT3BzICYm ICRvcHNbJGlkeF0gIT0gJycpID8gJG9wc1skaWR4XSA6ICgoJGZsZFBhcnRzWzBdPT0icGFy ZW50IikgPyAiY29udGFpbnMiIDogImVxIik7DQoJCSRvcFBhcnRzID0gZXhwbG9kZSgkbW9k X2RlbGltLCAkb3ApOw0KCQkkb3AgPSAkc3RvcmVkT3AgPSAoYXJyYXlfa2V5X2V4aXN0cygk b3BQYXJ0c1swXSwgJGFsbE9wcykpID8gJG9wUGFydHNbMF0gOiAiZXEiOw0KCQkkY2FzdCA9 ICgoY291bnQoJG9wUGFydHMpID09IDIpICYmICgkb3BQYXJ0c1sxXSA9PT0gIk5VTSIpICYm IChpbl9saXN0KCRvcCwgJG51bWVyaWNPcHMpKSkgPyAnKGludCknIDogJyc7DQoJCSRsZW5n dGggPSAoKGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAoJG9wUGFydHNbMV0gPT09ICJMRU4i KSAmJiAoaW5fbGlzdCgkb3AsICRudW1lcmljT3BzKSkpID8gJ3N0cmxlbihGSUVMRCknIDog Jyc7DQoJCSRraWxsU3BhY2VzID0gKChjb3VudCgkb3BQYXJ0cykgPT0gMikgJiYgKCRvcFBh cnRzWzFdID09PSAiTk9TUEFDRSIpICYmIChpbl9saXN0KCRvcCwgJHNwYWNlT3BzKSkpID8g dHJ1ZSA6IGZhbHNlOw0KCQkkc3RyaXBGbGQgPSAoKGNvdW50KCRmbGRQYXJ0cykgPiAxKSAm JiAoaW5fYXJyYXkoIk5PVEFHUyIsICRmbGRQYXJ0cykpKSA/IHRydWUgOiBmYWxzZTsNCgkJ JHN0cmlwVmFsID0gKChjb3VudCgkdmFsUGFydHMpID4gMSkgJiYgKGluX2FycmF5KCJOT1RB R1MiLCAkdmFsUGFydHMpKSkgPyB0cnVlIDogZmFsc2U7DQoJCSRjYXNlX3NlbnNpdGl2ZSA9 IChpbl9saXN0KCRvcCwgJGNhc2VPcHMpKSA/IDEgOiAkY2FzZV9zZW5zaXRpdmU7DQoJCWlm ICgkZGVidWcpIHsNCgkJCWVjaG8gJ1RFU1QgJy4oJGlkeCsxKS5uOw0KCQkJZG1wKCRmbGRQ YXJ0cywgJG9wUGFydHMsICR2YWxQYXJ0cyk7DQoJCX0NCgkJLy8gR2V0IHRoZSBvcGVyYXRv ciByZXBsYWNlbWVudCBjb2RlDQoJCSRleGNsdWRlID0gZG9fbGlzdCgkYWxsT3BzWyRvcF1b MV0pOw0KCQkkb3AgPSAkYWxsT3BzWyRvcF1bMF07DQoNCgkJLy8gQXMgbG9uZyBhcyB0aGUg Y3VycmVudCBvcGVyYXRvciBhbGxvd3MgdGhpcyBmaWVsZC4uLg0KCQlpZiAoIWluX2FycmF5 KCRmbGRQYXJ0c1swXSwgJGV4Y2x1ZGUpKSB7DQoJCQkvLyBNYWtlIHVwIHRoZSB0ZXN0IGZp ZWxkIHZhcmlhYmxlDQoJCQlpZiAoaXNzZXQoJHRoaXNmaWxlWyRmbGRQYXJ0c1swXV0pKSB7 DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9ICckdGhpc2ZpbGVbIicu JHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNsaW5rWyRmbGRQYXJ0c1sw XV0pKSB7DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9ICckdGhpc2xp bmtbIicuJHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNpbWFnZVskZmxk UGFydHNbMF1dKSkgew0KCQkJCSRyZmxkID0gJGZsZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAn JHRoaXNpbWFnZVsiJy4kcmZsZC4nIl0nOw0KCQkJfSBlbHNlIGlmIChhcnJheV9rZXlfZXhp c3RzKCRmbGRQYXJ0c1swXSwgJGFsbFB0eHQpKSB7DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNb MF07DQoJCQkJJGZsZCA9ICRhbGxQdHh0WyRyZmxkXTsNCgkJCX0gZWxzZSBpZiAoJGZsZFBh cnRzWzBdID09ICJwYXJlbnQiKSB7DQoJCQkJJGxldmVsID0gJyc7DQoJCQkJZm9yZWFjaCAo JGZsZFBhcnRzIGFzICRwYXJ0KSB7DQoJCQkJCWlmICgkcGFydCA9PSAicGFyZW50Iikgew0K CQkJCQkJJHRoZUNhdCA9ICgkdGhpc2ZpbGUpID8gJHRoaXNmaWxlWydjYXRlZ29yeSddIDog KCgkdGhpc2xpbmspID8gJHRoaXNsaW5rWydjYXRlZ29yeSddIDogKCgkdGhpc2ltYWdlKSA/ ICR0aGlzaW1hZ2VbJ2NhdGVnb3J5J10gOiAkcHJldGV4dFsnYyddKSk7DQoJCQkJCX0gZWxz ZSBpZiAoc3RycG9zKCRwYXJ0LCAiQ0FUIikgPT09IDApIHsNCgkJCQkJCSR0aGVDYXQgPSAk dGhpc2FydGljbGVbImNhdGVnb3J5Ii5zdWJzdHIoJHBhcnQsIDMpXTsNCgkJCQkJfSBlbHNl IGlmIChzdHJwb3MoJHBhcnQsICJMVkwiKSA9PT0gMCkgew0KCQkJCQkJJGxldmVsID0gc3Vi c3RyKCRwYXJ0LCAzKTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSR0cmVlID0gZ2V0VHJlZVBh dGgoZG9TbGFzaCgkdGhlQ2F0KSwgJHR5cGUpOw0KCQkJCWlmICgkZGVidWcpIHsNCgkJCQkJ ZWNobyAiQ0FURUdPUlkgVFJFRToiOw0KCQkJCQlkbXAoJHRyZWUpOw0KCQkJCX0NCgkJCQkk aXRlbXMgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCR0cmVlIGFzICRsZWFmKSB7DQoJCQkJ CWlmICgkbGVhZlsnbmFtZSddID09ICJyb290IiB8fCAkbGVhZlsnbmFtZSddID09ICR0aGVD YXQpIHsNCgkJCQkJCWNvbnRpbnVlOw0KCQkJCQl9IGVsc2UgaWYgKCRsZXZlbCA9PSAnJyB8 fCAkbGV2ZWwgPT0gJGxlYWZbJ2xldmVsJ10pIHsNCgkJCQkJCSRpdGVtc1tdID0gJGxlYWZb J25hbWUnXTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkcGFyZW50Q2F0cyA9ICRyZmxkID0gaW1w bG9kZSgiICIsICRpdGVtcyk7DQoJCQkJJGZsZCA9ICckcGFyZW50Q2F0cyc7DQoJCQl9IGVs c2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAidHhwdmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxk UGFydHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9 ICckdmFyaWFibGVbIicuJHJmbGQuJyJdJzsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCRmbGRQ YXJ0c1swXSA9PSAidXJsdmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4gMSkg ew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckX0dFVFsiJy4k cmZsZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJzdnJ2 YXIiKSB7DQoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPiAxKSB7DQoJCQkJCSRyZmxkID0g JGZsZFBhcnRzWzFdOw0KCQkJCQkkZmxkID0gJyRfU0VSVkVSWyInLiRyZmxkLiciXSc7DQoJ CQkJfQ0KCQkJfSBlbHNlIGlmICgkZmxkUGFydHNbMF0gPT0gInBocHZhciIpIHsNCgkJCQlp ZiAoY291bnQoJGZsZFBhcnRzKSA+IDEpIHsNCgkJCQkJJHJmbGQgPSAkZmxkUGFydHNbMV07 DQoJCQkJCSRmbGQgPSAnJEdMT0JBTFNbIicuJHJmbGQuJyJdJzsNCgkJCQl9DQoJCQl9IGVs c2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskZmxkUGFydHNbMF1dKSkgew0KCQkJCSRyZmxk ID0gc3RydG9sb3dlcigkZmxkUGFydHNbMF0pOw0KCQkJCSRmbGQgPSAnJHRoaXNhcnRpY2xl WyInLiRyZmxkLiciXSc7DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAiTlVMTCIp IHsNCgkJCQkkc21kX2lmX3ZhciA9ICcnOw0KCQkJCSRmbGQgPSAnJHNtZF9pZl92YXInOw0K CQkJCSRyZmxkID0gIk5VTEwiOw0KCQkJfSBlbHNlIHsNCgkJCQkkc21kX2lmX3ZhciA9ICRm bGRQYXJ0c1swXTsNCgkJCQkkZmxkID0gJyRzbWRfaWZfdmFyJzsNCgkJCQkkcmZsZCA9ICJm aWVsZCIuKCRpZHgqMSsxKTsNCgkJCX0NCgkJCSRybGZsZCA9ICJzbWRfaWZfbGVuXyIuJHJm bGQ7DQoJCQkkcmZsZCA9ICJzbWRfaWZfIi4kcmZsZDsNCg0KCQkJLy8gVGFrZSBhIGNvcHkg b2YgJGZsZCB0byB1c2UgaW4gYW55IGlzc2V0KCkgcmVxdWVzdHMNCgkJCSRmbGRDbGVhbiA9 ICRmbGQ7DQoJCQlpZiAoJGtpbGxTcGFjZXMpIHsNCgkJCQkkZmxkID0gJ3ByZWdfcmVwbGFj ZSgiL1xzKy8iLCIiLCcuJGZsZC4nKSc7DQoJCQl9DQoJCQlpZiAoJHN0cmlwRmxkKSB7DQoJ CQkJJGZsZCA9ICd0cmltKHN0cmlwX3RhZ3MoJy4kZmxkLicpKSc7DQoJCQl9DQoNCgkJCS8v IEZpbmQgdGhlIHJlYWwgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0IChtYXkgYmUgYW5vdGhl ciBmaWVsZCkNCgkJCWlmICgkdmFsUGFydHNbMF0gPT0gInVybHZhciIpIHsNCgkJCQlpZiAo Y291bnQoJHZhbFBhcnRzKSA+IDEpIHsNCgkJCQkJJHZmbGQgPSAkdmFsUGFydHNbMV07DQoJ CQkJCSR2YWwgPSAoaXNzZXQoJF9HRVRbJHZmbGRdKSAmJiAkX0dFVFskdmZsZF0gIT0gIiIp ID8gJyRfR0VUWyInLiR2ZmxkLiciXScgOiBkb1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wi JywgJHZmbGQpKTsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCR2YWxQYXJ0c1swXSA9PSAic3Zy dmFyIikgew0KCQkJCWlmIChjb3VudCgkdmFsUGFydHMpID4gMSkgew0KCQkJCQkkdmZsZCA9 ICR2YWxQYXJ0c1sxXTsNCgkJCQkJJHZhbCA9IChpc3NldCgkX1NFUlZFUlskdmZsZF0pICYm ICRfU0VSVkVSWyR2ZmxkXSAhPSAiIikgPyAnJF9TRVJWRVJbIicuJHZmbGQuJyJdJyA6IGRv UXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmZsZCkpOw0KCQkJCX0NCgkJCX0gZWxz ZSBpZiAoJHZhbFBhcnRzWzBdID09ICJ0eHB2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCR2YWxQ YXJ0cykgPiAxKSB7DQoJCQkJCSR2ZmxkID0gJHZhbFBhcnRzWzFdOw0KCQkJCQkkdmFsID0g KGlzc2V0KCR2YXJpYWJsZVskdmZsZF0pICYmICR2YXJpYWJsZVskdmZsZF0gIT0gIiIpID8g JyR2YXJpYWJsZVsiJy4kdmZsZC4nIl0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdc IicsICR2ZmxkKSk7DQoJCQkJfQ0KCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInBo cHZhciIpIHsNCgkJCQlpZiAoY291bnQoJHZhbFBhcnRzKSA+IDEpIHsNCgkJCQkJJHZmbGQg PSAkdmFsUGFydHNbMV07DQoJCQkJCSR2YWwgPSAoaXNzZXQoJEdMT0JBTFNbJHZmbGRdKSAm JiAkR0xPQkFMU1skdmZsZF0gIT0gIiIpID8gJyRHTE9CQUxTWyInLiR2ZmxkLiciXScgOiBk b1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJCQl9DQoJCQl9IGVs c2UgaWYgKHN0cnBvcygkdmFsUGFydHNbMF0sICI/IikgPT09IDApIHsNCgkJCQkkdmFsUGFy dHNbMF0gPSBzdWJzdHIoc3RydG9sb3dlcigkdmFsUGFydHNbMF0pLCAxKTsNCgkJCQkkdmZs ZCA9ICR2YWxQYXJ0c1swXTsNCgkJCQlpZiAoaXNzZXQoJHRoaXNmaWxlWyR2ZmxkXSkgJiYg JHRoaXNmaWxlWyR2ZmxkXSAhPSAiIikgew0KCQkJCQkkdmFsID0gJyR0aGlzZmlsZVsiJy4k dmZsZC4nIl0nOw0KCQkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNsaW5rWyR2ZmxkXSkgJiYg JHRoaXNsaW5rWyR2ZmxkXSAhPSAiIikgew0KCQkJCQkkdmFsID0gJyR0aGlzbGlua1siJy4k dmZsZC4nIl0nOw0KCQkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNpbWFnZVskdmZsZF0pICYm ICR0aGlzaW1hZ2VbJHZmbGRdICE9ICIiKSB7DQoJCQkJCSR2YWwgPSAnJHRoaXNpbWFnZVsi Jy4kdmZsZC4nIl0nOw0KCQkJCX0gZWxzZSBpZiAoYXJyYXlfa2V5X2V4aXN0cygkdmZsZCwg JGFsbFB0eHQpICYmICRhbGxQdHh0WyR2ZmxkXSAhPSAiIikgew0KCQkJCQkkdmFsID0gJGFs bFB0eHRbJHZmbGRdOw0KCQkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyR2Zmxk XSkgJiYgJHRoaXNhcnRpY2xlWyR2ZmxkXSAhPSAiIikgew0KCQkJCQkkdmFsID0gJyR0aGlz YXJ0aWNsZVsiJy4kdmZsZC4nIl0nOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSR2YWwgPSBkb1F1 b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJCQl9DQoJCQl9IGVsc2Ug ew0KCQkJCSR2ZmxkID0gInZhbCIuKCRpZHgqMSsxKTsNCgkJCQkkdmFsID0gZG9RdW90ZShz dHJfcmVwbGFjZSgnIicsICdcIicsICR2YWxQYXJ0c1swXSkpOw0KCQkJfQ0KCQkJJHZsZmxk ID0gInNtZF9pZl9sZW5fIi4kdmZsZDsNCgkJCSR2ZmxkID0gInNtZF9pZl8iLiR2ZmxkOw0K CQkJaWYgKCRzdHJpcFZhbCkgew0KCQkJCSR2YWwgPSAndHJpbShzdHJpcF90YWdzKCcuJHZh bC4nKSknOw0KCQkJfQ0KDQoJCQkvLyBSZXBsYWNlIHRoZSBzdHJpbmcgcGFydHMuLi4NCgkJ CSRjbWQgPSBzdHJfcmVwbGFjZSgiQ0FTVCIsICRjYXN0LCAkb3ApOw0KCQkJJGNtZCA9ICgk bGVuZ3RoKSA/IHN0cl9yZXBsYWNlKCJGSUVMRCIsICRsZW5ndGgsICRjbWQpIDogJGNtZDsN CgkJCSRjbWQgPSBzdHJfcmVwbGFjZSgiRklFTEQiLCAoKCRjYXNlX3NlbnNpdGl2ZSkgPyAk ZmxkIDogJ3N0cnRvbG93ZXIoJy4kZmxkLicpJyksICRjbWQpOw0KCQkJJGNtZCA9IHN0cl9y ZXBsYWNlKCJWQVJOQU1FIiwgJGZsZENsZWFuLCAkY21kKTsNCgkJCSRjbWQgPSBzdHJfcmVw bGFjZSgiVkFMVUUiLCAoKCRjYXNlX3NlbnNpdGl2ZSkgPyAnVkFMVUUnIDogJ3N0cnRvbG93 ZXIoVkFMVUUpJyksICRjbWQpOw0KCQkJJGNtZCA9ICJAXCRyZXBsYWNlbWVudHNbJ3siLiRy ZmxkLiJ9J10gPSAiLiRmbGQuIjsgXG5AXCRyZXBsYWNlbWVudHNbJ3siLiRybGZsZC4ifSdd ID0gc3RybGVuKCIuJGZsZC4iKTsgXG5AXCRyZXBsYWNlbWVudHNbJ3siLiR2ZmxkLiJ9J10g PSAiLiR2YWwuIjsgXG5AXCRyZXBsYWNlbWVudHNbJ3siLiR2bGZsZC4ifSddID0gc3RybGVu KCIuJHZhbC4iKTsgXG5cJG91dFtdID0gKCIuc3RyX3JlcGxhY2UoIlZBTFVFIiwgKCgkdmFs PT09IicnIiAmJiBzdHJwb3MoJG9wLCAic3RycG9zIikgIT09IGZhbHNlKSA/ICInICciIDog JHZhbCksICRjbWQpLiIpID8gJ3RydWUnIDogJ2ZhbHNlJzsiOw0KCQkJaWYgKCRkZWJ1Zykg ew0KCQkJCWRtcCgkY21kKTsNCgkJCX0NCgkJCS8vIC4uLiBhbmQgZXZhbHVhdGUgdGhlIGV4 cHJlc3Npb24NCgkJCWV2YWwoJGNtZCk7DQoJCX0NCgl9DQoJaWYgKCRkZWJ1Zykgew0KCQll Y2hvICJSRVNVTFQ6IjsNCgkJZG1wKCRvdXQpOw0KCQllY2hvICJSRVBMQUNFTUVOVFM6IjsN CgkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCX0NCglpZiAoJGRlYnVnID4gMSkgew0KCQllY2hv ICJQUkVURVhUOiI7DQoJCWRtcCgkcHJldGV4dCk7DQoJCWVjaG8gIlRISVMgQVJUSUNMRToi Ow0KCQlkbXAoJHRoaXNhcnRpY2xlKTsNCgkJZWNobyAiVEhJUyBGSUxFOiI7DQoJCWRtcCgk dGhpc2ZpbGUpOw0KCQllY2hvICJUSElTIExJTks6IjsNCgkJZG1wKCR0aGlzbGluayk7DQoJ CWVjaG8gIlRISVMgSU1BR0U6IjsNCgkJZG1wKCR0aGlzaW1hZ2UpOw0KCX0NCgkvLyBDaGVj ayBsb2dpYw0KCSRyZXN1bHQgPSAoJG91dCkgPyB0cnVlIDogZmFsc2U7DQoJaWYgKHN0cnRv bG93ZXIoJGxvZ2ljKSA9PSAiYW5kIiAmJiBpbl9hcnJheSgiZmFsc2UiLCAkb3V0KSkgew0K CQkkcmVzdWx0ID0gZmFsc2U7DQoJfQ0KCWlmIChzdHJ0b2xvd2VyKCRsb2dpYykgPT0gIm9y IiAmJiAhaW5fYXJyYXkoInRydWUiLCAkb3V0KSkgew0KCQkkcmVzdWx0ID0gZmFsc2U7DQoJ fQ0KDQoJcmV0dXJuIHBhcnNlKEV2YWxFbHNlKHN0cnRyKCR0aGluZywgJHJlcGxhY2VtZW50 cyksICRyZXN1bHQpKTsNCn0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6MzA4 OTU6Igk8cD48ZGl2IGlkPSJzbWRfaGVscCI+PC9wPgoKCTxoMT5zbWRfaWY8L2gxPgoKCTxw PkEgcmVhbGx5IHNpbXBsZSwgZ2VuZXJpYyAmIzgyMTY7aWYgY29uZGl0aW9uJiM4MjE3OyB0 ZXN0ZXIuIENhbiB0ZXN0IGFueSBmaWVsZCBvciB2YXJpYWJsZSBpbiB0aGUgY3VycmVudCBh cnRpY2xlLCBmaWxlLCBpbWFnZSwgbGluaywgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gdmFyIG9yIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IGNvbnRleHQg Zm9yIGEgdmFyaWV0eSBvZiBhdHRyaWJ1dGVzIGFuZCB0YWtlIGFjdGlvbiBpZiA8c3BhbiBj bGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9z cGFuPi48L3A+CgoJPGgyPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRzIG1v c3QgbWFqb3IgYXJ0aWNsZSwgZmlsZSwgaW1hZ2UgYW5kIGxpbmsgdmFyaWFibGVzIHN1Y2gg YXMgc2VjdGlvbiwgY2F0ZWdvcnksIGN1c3RvbSBmaWVsZHMsIGlkLCBxdWVyeSBzdHJpbmcs IGF1dGhvciwgYm9keSwgZXhjZXJwdCwgeWFoZGUgeWFoZGUsIHBsdXMgdXJsIHZhcnMsIHNl cnZlciB2YXJzLCB0eHAgdmFycywgcGhwIHZhcnMsIGFuZCBzdWItY2F0ZWdvcnkvcGFyZW50 IGNoZWNraW5nPC9saT4KCQk8bGk+VGVzdHMgaW5jbHVkZSBlcXVhbGl0eSwgaW5lcXVhbGl0 eSwgbGVzcyB0aGFuLCBncmVhdGVyIHRoYW4sIGVtcHR5LCB1c2VkLCBkZWZpbmVkLCBiZWdp bnMsIGVuZHMsIGNvbnRhaW5zLCBpcyBudW1lcmljIC8gYWxwaGEgLyBhbHBoYW51bWVyaWMg LyBsb3dlcmNhc2UgLyB1cHBlcmNhc2UsIGFtb25nIG90aGVyczwvbGk+CgkJPGxpPlRlc3Rz IGZvciBtb3JlIHRoYW4gb25lIGNvbmRpdGlvbiBhdCBvbmNlIGFuZCBhcHBsaWVzIGVpdGhl ciA8c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBsb2dpYyAoYWxsIHRlc3RzIG11c3Qg cGFzcykgb3IgT1IgbG9naWMgKGFueSB0ZXN0IG11c3QgcGFzcyk8L2xpPgoJCTxsaT5BbGwg dGVzdGVkIGZpZWxkcyBhbmQgdmFsdWVzIGFyZSBhdmFpbGFibGUgdG8gdGhlIGNvbnRhaW5l ciBzbyB5b3UgY2FuIGRpc3BsYXkgdGhlbTwvbGk+CgkJPGxpPlVnbHkgYW5kIHZlcnkgZGly dHkuIFVzZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyA8Y29kZT5l dmFsKCk8L2NvZGU+IGNvbW1hbmQgd2hpY2ggbW9zdCBwcm9ncmFtbWVycyBjb25jdXIgc2hv dWxkIGJlIHJlbmFtZWQgPGNvZGU+ZXZpbCgpPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMj5B dXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50 Rm9ybSI+U3RlZiBEYXdzb248L2E+LiBCYXNlZCBvbiBhbiBpZGVhIGJyZXdpbmcgaW4gdGhl IGJhY2sgb2YgbXkgbWluZCB3aGlsZSBoYWNraW5nIGNoc19pZl91cmx2YXIuPC9wPgoKCTxo Mj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhl IHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3Bs dWdpbnMvOTMwL3NtZF9pZiI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9 Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRo ZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0m Z3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0 IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5w aHA/aWQ9MjUzNTciPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBv cnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxw PlRvIHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVn aW5zIHBhZ2UuPC9wPgoKCTxoMj5Vc2FnZTwvaDI+CgoJPHA+VXNlIHRoZSB0YWcgaW4gYW55 IHBhZ2UsIGZvcm0gb3IgYXJ0aWNsZSBjb250ZXh0LiBDYW4gYWxzbyBiZSB1c2VkIGluc2lk ZSBmaWxlLCBpbWFnZSBvciBsaW5rIGxpc3RzIHRvIHRha2UgYWN0aW9uIGRlcGVuZGluZyBv biBhdHRyaWJ1dGVzIG9mIHRoZSBjdXJyZW50IGl0ZW0uPC9wPgoKCTxoMyBjbGFzcz0idGFn Ij5zbWRfaWY8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+QXQgdGhlIHBsYWNlIHlv dSB3aXNoIHRvIGNvbXBhcmUgYSBmaWVsZCB3aXRoIGFub3RoZXIgdmFsdWUsIHB1dCB0aGlz IHRhZyB3aXRoIGFsbCB0aHJlZSBtYW5kYXRvcnkgYXR0cmlidXRlcyAoc2hhZGVkIGJlbG93 KS4gRWFjaCB0YWtlIGEgc2VyaWVzIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0cyAmIzgyMTI7 IHRob3VnaCB0aGUgPGEgaHJlZj0iI3BhcmFtZGVsaW0iPmNvbW1hIGlzIG92ZXJyaWRhYmxl PC9hPiB3aXRoIHRoZSBwYXJhbV9kZWxpbSBhdHRyaWJ1dGUuIElmIHRoZSByZXN1bHQgb2Yg YWxsIHRoZSBjb21wYXJpc29uIHRlc3RzIGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9z cGFuPiB0aGUgY29udGFpbmVkIGJsb2NrIHdpbGwgYmUgZXhlY3V0ZWQuIElmIHRoZSByZXN1 bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPiwgYW55IDxjb2RlPiZsdDt0 eHA6ZWxzZSAvJmd0OzwvY29kZT4gd2lsbCBiZSBleGVjdXRlZCBpbnN0ZWFkLiBXaXRob3V0 IGFueSA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2NvZGU+IGJsb2NrLCBub3RoaW5nIGlz IG91dHB1dCBpZiB0aGUgcmVzdWx0IGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bh bj4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVz PC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj5maWVsZDwv c3Bhbj4gOiB0aGUgPGEgaHJlZj0iI2ZpZWxkIj5maWVsZHM8L2E+IHRvIHRlc3Q8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUgbWFuZCI+b3BlcmF0b3I8L3NwYW4+IDogdGhl IDxhIGhyZWY9IiNvcGVyYXRvciI+b3BlcmF0aW9uczwvYT4gZm9yIGNvbXBhcmlzb24gd2l0 aCB0aGF0IGZpZWxkIChlLmcuIDxjb2RlPmVxPC9jb2RlPiwgPGNvZGU+bm90PC9jb2RlPiwg PGNvZGU+YmVnaW5zPC9jb2RlPiwgZXRjKS4gRGVmYXVsdCBpcyB1c3VhbGx5IDxjb2RlPmVx PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj52YWx1ZTwv c3Bhbj4gOiB0aGUgPGEgaHJlZj0iI3ZhbHVlIj52YWx1ZXM8L2E+IHdpdGggd2hpY2ggdG8g Y29tcGFyZSB0aGUgZmllbGRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5s b2dpYzwvc3Bhbj4gOiBob3cgbXVsdGlwbGUgdGVzdHMgYXJlIGpvaW5lZDogPHNwYW4gY2xh c3M9ImNhcHMiPkFORDwvc3Bhbj4gb3IgT1IuIERlZmF1bHQgaXMgPHNwYW4gY2xhc3M9ImNh cHMiPkFORDwvc3Bhbj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhc2Vf c2Vuc2l0aXZlPC9zcGFuPiA6IDEgPSBjYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uOyAwID0g aWdub3JlIGNhc2UuIERlZmF1bHQgaXMgMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+cGFyYW1fZGVsaW08L3NwYW4+IDogZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBlYWNo IGZpZWxkLCBvcGVyYXRvciBvciB2YWx1ZSBpbiBhIG11bHRpLXRlc3QuIERlZmF1bHQgaXMg YSBjb21tYSAoLCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1vZF9kZWxp bTwvc3Bhbj4gOiBkZWxpbWl0ZXIgdXNlZCB3aGVuIHNwZWNpZnlpbmcgZmllbGQgb3Igb3Bl cmF0b3IgbW9kaWZpZXJzIGZvciB1cmx2YXIsIHN2cnZhciBhbmQgdHhwdmFyLiBEZWZhdWx0 IGlzIGEgY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5saXN0 X2RlbGltPC9zcGFuPiA6IGRlbGltaXRlciB1c2VkIHdoZW4gc3BlY2lmeWluZyBhIGxpc3Qg b2YgdmFsdWVzIHRvIGNoZWNrIHZpYSB0aGUgPGNvZGU+aW48L2NvZGU+IG9yIDxjb2RlPm5v dGluPC9jb2RlPiBvcGVyYXRvcnMuIERlZmF1bHQgaXMgYSBmb3J3YXJkLXNsYXNoICgvKTwv bGk+Cgk8L3VsPgoKCTxwPlRoZSBsaXN0cyBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyLCBpLmUu IHRoZSAxc3QgZmllbGQgdXNlcyB0aGUgMXN0IG9wZXJhdG9yIGluIHRoZSBsaXN0IGFuZCBj b21wYXJlcyBpdCB0byB0aGUgMXN0IHZhbHVlOyB0aGUgMm5kIGZpZWxkIHVzZXMgdGhlIDJu ZCBvcGVyYXRvciBpbiB0aGUgbGlzdCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIDJuZCB2YWx1 ZSwgYW5kIHNvIG9uLiBWYWx1ZXMgc2hvdWxkIHVzdWFsbHkgYmUgc3BlY2lmaWVkIHdpdGgg cGxhY2Vob2xkZXJzIHRvIG1haW50YWluIG9yZGVyOiBlLmcuIDxjb2RlPnZhbHVlPSZxdW90 OywgNCwsIHRvcCZxdW90OzwvY29kZT48L3A+CgoJPHA+Tm90ZSB0aGF0LCBhbHRob3VnaCB0 aGUgZmlyc3QgdGhyZWUgYXR0cmlidXRlcyBhcmUgY29uc2lkZXJlZCBtYW5kYXRvcnksIGlm IHlvdSBoYXBwZW4gdG8gcmVxdWlyZSB0aGUgZGVmYXVsdCBvcGVyYXRvciBmb3IgYWxsIHlv dXIgdGVzdHMsIHlvdSBjYW4gc2FmZWx5IG9taXQgPGNvZGU+b3BlcmF0b3I8L2NvZGU+LiBT aW1pbGFybHkgd2l0aCB2YWx1ZXM6IGlmIHlvdSBhcmUgZW50aXJlbHkgdGVzdGluZyB0aGUg ZXhpc3RlbmNlIG9yIHR5cGUgb2YgdmFyaWFibGVzLCB5b3UgY2FuIG9taXQgdGhlIDxjb2Rl PnZhbHVlPC9jb2RlPiBwYXJhbWV0ZXIgaWYgeW91IHdpc2guPC9wPgoKCTxoNCBjbGFzcz0i YXR0LW5hbWUgIiBpZD0iZmllbGQiPmZpZWxkPC9oND4KCgk8cD5MaXN0IG9mIGZpZWxkIGxv Y2F0aW9ucyB0byBsb29rIGF0LiBTb21lIHVzZWZ1bCB2YWx1ZXMgYXJlOjwvcD4KCgk8dWw+ CgkJPGxpPjxjb2RlPnNlY3Rpb248L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Y2F0ZWdvcnk8 L2NvZGU+IChvciA8Y29kZT5jYXRlZ29yeTE8L2NvZGU+LCBvciA8Y29kZT5jYXRlZ29yeTI8 L2NvZGU+IGlmIG9uIGFuIGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5hdXRob3Jp ZDwvY29kZT4gb3IgPGNvZGU+YXV0aG9yPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPmlkPC9j b2RlPiAoZmlsZS9saW5rL2ltYWdlL2FydGljbGUgSUQpLiBJbiBhbiBpbmRpdmlkdWFsIGFy dGljbGUgY29udGV4dCwgdXNlIDxjb2RlPnRoaXNpZDwvY29kZT4gaW5zdGVhZDwvbGk+CgkJ PGxpPjxjb2RlPnF1ZXJ5PC9jb2RlPiAodGhlIHF1ZXJ5IHN0cmluZyBmcm9tIHRoZSBzZWFy Y2ggZm9ybSk8L2xpPgoJCTxsaT48Y29kZT5wZzwvY29kZT4gKHRoZSBjdXJyZW50IHBhZ2Ug bnVtYmVyIGluIGxpc3RzKTwvbGk+CgkJPGxpPjxjb2RlPm1vbnRoPC9jb2RlPiAoY3VycmVu dCBtb250aCBmaWVsZCBmcm9tIHRoZSBhZGRyZXNzIGJhcik8L2xpPgoJCTxsaT48Y29kZT5z dGF0dXM8L2NvZGU+IChkb2N1bWVudCBzdGF0dXM6IDIwMCwgNDA0LCA0MDMsIGV0Yyk8L2xp PgoJCTxsaT48Y29kZT5wYWdlPC9jb2RlPiAodGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8 L3NwYW4+IFBhZ2UgdGVtcGxhdGUgdXNlZCBieSB0aGlzIHNlY3Rpb24pPC9saT4KCQk8bGk+ PGNvZGU+bmV4dF9pZDwvY29kZT4gLyA8Y29kZT5wcmV2X2lkPC9jb2RlPiAoSUQgb2YgbmV4 dC9wcmV2IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5u ZXh0X3RpdGxlPC9jb2RlPiAvIDxjb2RlPnByZXZfdGl0bGU8L2NvZGU+KFRpdGxlIG9mIG5l eHQvcHJldiBkb2N1bWVudCBpZiBvbiBhcnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+ bmV4dF91dGl0bGU8L2NvZGU+IC8gPGNvZGU+cHJldl91dGl0bGU8L2NvZGU+ICh1cmwtdGl0 bGUgb2YgbmV4dC9wcmV2IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xpPgoJCTxs aT48Y29kZT5wZXJtbGlua19tb2RlPC9jb2RlPiAodGFrZSBhY3Rpb24gYmFzZWQgb24gb25l IG9mIHRoZSBtZXNzeS9jbGVhbiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBzY2hl bWVzKTwvbGk+CgkJPGxpPjxjb2RlPm90aGVyIGFydGljbGUvZmlsZS9saW5rIGZpZWxkPC9j b2RlPiAoZS5nLiBib2R5LCBleGNlcnB0LCBhcnRpY2xlX2ltYWdlLCBrZXl3b3JkcywgbGlu a2FubWUsIGZpbGVuYW1lLCBkb3dubG9hZHMsICYjODIzMDspPC9saT4KCQk8bGk+PGNvZGU+ bXlfY3VzdG9tX2ZpZWxkX25hbWU8L2NvZGU+IChhbnkgY3VzdG9tIGZpZWxkcyB5b3UgaGF2 ZSBkZWZpbmVkKTwvbGk+CgkJPGxpPjxjb2RlPnVybHZhcjp2YXJfbmFtZTwvY29kZT4gKGFu eSB2YXJpYWJsZSBpbiB0aGUgYWRkcmVzcyBiYXIgYWZ0ZXIgdGhlIDxjb2RlPj88L2NvZGU+ KTwvbGk+CgkJPGxpPjxjb2RlPnN2cnZhcjp2YXJfbmFtZTwvY29kZT4gKGFueSBzdGFuZGFy ZCBzZXJ2ZXIgdmFyaWFibGUsIGUuZy4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+ X1VTRVJfQUdFTlQpPC9saT4KCQk8bGk+PGNvZGU+dHhwdmFyOm15X3ZhcjwvY29kZT4gKGFu eSBUZXh0cGF0dGVybiB2YXJpYWJsZSBzZXQgd2l0aCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxl IG5hbWU9JnF1b3Q7bXlfdmFyJnF1b3Q7IC8mZ3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48Y29k ZT5waHB2YXI6bXlfdmFyPC9jb2RlPiAoYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3Nw YW4+IHZhcmlhYmxlIDxlbT5pbiB0aGUgZ2xvYmFsIHNjb3BlPC9lbT4pPC9saT4KCQk8bGk+ PGNvZGU+cGFyZW50Om9wdGlvbmFsX21vZGlmaWVyczwvY29kZT4gKHdoZXRoZXIgdGhlIGdp dmVuIGNhdGVnb3J5IGlzIGEgZGVzY2VuZGVudCBvZiBhbm90aGVyIGNhdGVnb3J5KTwvbGk+ CgkJPGxpPjxjb2RlPk5VTEw8L2NvZGU+ICh1c2VmdWwgd2hlbiBjb21wYXJpbmcgYXJiaXRy YXJ5IHZhbHVlcyBmb3IgZW1wdGluZXNzKTwvbGk+Cgk8L3VsPgoKCTxwPklmIHlvdSBzcGVj aWZ5IGEgZmllbGQgbmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0LCB0aGUgdGV4dCB5b3UgdXNl IHdpbGwgYmUgdGFrZW4gdmVyYmF0aW0gaW4gbW9zdCBjYXNlcy48L3A+CgoJPHA+SWYgeW91 IHdpc2ggdG8gY29tcGFyZSBhIGZpZWxkIHRoYXQgbWlnaHQgY29udGFpbiA8c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj4gKGUuZyA8Y29kZT5ib2R5PC9jb2RlPiksIGFkZCB0aGUg bW9kaWZpZXIgPGNvZGU+Ok5PVEFHUzwvY29kZT4gdG8gdGhlIGVuZCBvZiB0aGUgZmllbGQu IEl0IHdpbGwgaGF2ZSBpdHMgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGFuZCA8 c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiB0YWdzIHN0cmlwcGVkIGZyb20gaXQgYW5k IHdpbGwgYWxzbyBiZSB0cmltbWVkIHRvIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBz cGFjZXMuPC9wPgoKCTxwPlRoZSBzcGVjaWFsIGZpZWxkIDxjb2RlPnBhcmVudDwvY29kZT4g Y2hlY2tzIHRoZSBwYXJlbnQgY2F0ZWdvcnkgZm9yIGEgbWF0Y2guIFVubGlrZSB0aGUgb3Ro ZXIgZmllbGQgdHlwZXMsIHRoZSBkZWZhdWx0IDxhIGhyZWY9IiNvcGVyYXRvciI+b3BlcmF0 b3I8L2E+IGZvciBwYXJlbnQgaXMgJiM4MjE2O2NvbnRhaW5zJiM4MjE3Oy4gVGhpcyBpcyBi ZWNhdXNlIHRoZSBlbnRpcmUgdHJlZSBpcyBjaGVja2VkIGZvciBhIG1hdGNoLCBzdGFydGlu ZyBmcm9tIHRoZSB0b3Agb2YgdGhlIHRyZWUgZG93biB0byB0aGUgY3VycmVudCBjYXRlZ29y eS4gSW50ZXJuYWxseSwgdGhlIHBsdWdpbiBtYWtlcyB1cCBhICYjODIyMDticmVhZGNydW1i IHRyYWlsJiM4MjIxOyBvZiBjYXRlZ29yaWVzIGluIHRoZSBjdXJyZW50IGJyYW5jaCwgZWFj aCBzZXBhcmF0ZWQgYnkgYSBzcGFjZSwgc28gdGVzdGluZyBmb3IgZXF1YWxpdHkgd291bGQg cmVxdWlyZSBwdXR0aW5nIHRoZW0gYWxsIGluIHRoZSA8YSBocmVmPSIjdmFsdWUiPnZhbHVl PC9hPiBwYXJhbWV0ZXIuPC9wPgoKCTxwPllvdSBhcmUgb2YgY291cnNlIGZyZWUgdG8gY2hv b3NlIGFuIGFsdGVybmF0aXZlIG9wZXJhdG9yOyA8Y29kZT5iZWdpbnM8L2NvZGU+IGlzIHZl cnkgdXNlZnVsIGZvciB0ZXN0aW5nIGlmIHRoZSB0b3AgbGV2ZWwgY2F0ZWdvcnkgbWF0Y2hl cyB0aGUgb25lIGdpdmVuIGluIHRoZSA8Y29kZT52YWx1ZTwvY29kZT4gZmllbGQuPC9wPgoK CTxwPklmIHlvdSB1c2UgPGNvZGU+cGFyZW50OkxWTG48L2NvZGU+LCB0aGUgY29tcGFyaXNv biB3aWxsIGJlIHJlc3RyaWN0ZWQgdG8gdGhhdCAmIzgyMjA7bGV2ZWwmIzgyMjE7IG9mIHN1 Yi1jYXRlZ29yeTsgTFZMMSBpcyB0aGUgJiM4MjIwO3RvcCYjODIyMTsgbGV2ZWwsIExWTDIg aXMgdGhlIG5leHQgc3ViLWNhdGVnb3J5IGxldmVsLCBhbmQgc28gb24uIFdoZW4gdXNpbmcg dGhlc2UgbW9kaWZpZXJzLCB0aGUgJiM4MjE2O2VxJiM4MjE3OyBvcGVyYXRvciBiZWNvbWVz IG1vcmUgdXNlZnVsIGJlY2F1c2UgeW91IGFyZSBjb21wYXJpbmcgYSBzaW5nbGUgcGFyZW50 IGNhdGVnb3J5LjwvcD4KCgk8cD5XaGVuIHVzaW5nIGFydGljbGVzLCB5b3UgY2FuIGZ1cnRo ZXIgbW9kaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIHBhcmVudCB1c2luZyB0aGUgPGNvZGU+ Q0FUbjwvY29kZT4gc3ludGF4ICh3aGVyZSAmIzgyMTY7biYjODIxNzsgaXMgMSBvciAyKS4g U3BlY2lmeWluZyAmIzgyMjA7cGFyZW50JiM4MjIxOyB3aXRob3V0IDxjb2RlPkNBVG48L2Nv ZGU+IHdpbGwgdXNlIHRoZSBnbG9iYWwgY2F0ZWdvcnkgKDxjb2RlPj9jPTwvY29kZT4pLiBJ ZiB5b3UgYWRkIDxjb2RlPjpDQVRuPC9jb2RlPiBpdCB3aWxsIGluc3RlYWQgY29tcGFyZSB0 aGUgYXJ0aWNsZSYjODIxNztzIGNhdGVnb3J5MSBvciBjYXRlZ29yeTIgcmVzcGVjdGl2ZWx5 LjwvcD4KCgk8cD5Zb3UgY2FuIHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q0FUPC9zcGFuPiBh bmQgPHNwYW4gY2xhc3M9ImNhcHMiPkxWTDwvc3Bhbj4gaW4gY29tYmluYXRpb24sIGluZGVw ZW5kZW50bHkgb3Igbm90IGF0IGFsbC4gVGhpcyBhbGxvd3MgY29tcGFyaXNvbnMgc3VjaCBh cyAmIzgyMjA7aWYgdGhlIDJuZCBzdWItY2F0ZWdvcnkgb2YgY2F0ZWdvcnkxIGVxdWFscyBi bGFoYmxhaCYjODIyMTsgb3IgJiM4MjIwO2lmIGNhdGVnb3J5MiBpcyBhIGNoaWxkIG9mIGJs YWhibGFoJiM4MjIxOy4gU2VlIDxhIGhyZWY9IiNlZzQiPkV4YW1wbGUgNDwvYT4uPC9wPgoK CTxwPk9uZSBvdGhlciBzcGVjaWFsIGZpZWxkIGlzIDxjb2RlPk5VTEw8L2NvZGU+LiBUaGlz IGlzIGV4YWN0bHkgd2hhdCBpdCBzYXlzIGl0IGlzOiBlbXB0eS4gVGhlIHJlYXNvbiBmb3Ig aXRzIGluY2x1c2lvbiBpcyB0aGF0IHNvbWV0aW1lcyB5b3Ugd2lzaCB0byB0ZXN0IHNvbWV0 aGluZyB0aGF0IGlzbiYjODIxNzt0IGEgdHJ1ZSB2YXJpYWJsZSAmIzgyMTI7IGUuZy4gYSBy ZXBsYWNlbWVudCB2YXJpYWJsZSBmcm9tIHNtZF92YXJzIG9yIHNtZF9lYWNoICYjODIxMjsg dG8gc2VlIGlmIGl0JiM4MjE3O3MgZW1wdHkgb3Igbm90LjwvcD4KCgk8cD5JZiB5b3Ugd2Vy ZSB0byBwdXQgdGhpczo8L3A+CgoJPHA+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1 b3Q7e3Jlc3VsdH0mcXVvdDsgb3BlcmF0b3I9JnF1b3Q7aXNlbXB0eSZxdW90OyZndDs8L2Nv ZGU+PC9wPgoKCTxwPnlvdSB3b3VsZCBub3QgZ2V0IHRoZSByZXN1bHQgeW91IGV4cGVjdCAo aXQmIzgyMTc7cyBwcmV0dHkgZXNvdGVyaWMgYnV0IGl0IHJldm9sdmVzIGFyb3VuZCB0aGUg ZmFjdCB0aGF0IDxjb2RlPiZxdW90OyZxdW90OzwvY29kZT4gKGFzIGEgdmFyaWFibGUgbmFt ZSkgaXMgbm90IGVtcHR5LCBpdCYjODIxNztzIGludmFsaWQpLiBUbyBnZXQgcm91bmQgdGhp cyB5b3UgbWF5IHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+TlVMTDwvc3Bhbj4gYXMgYSBwbGFj ZWhvbGRlciBhbmQgbW92ZSB0aGUgdGhpbmcgeW91IHdhbnQgdG8gY2hlY2sgaW50byB0aGUg PGNvZGU+dmFsdWU8L2NvZGU+IGluc3RlYWQsIGUuZzo8L3A+CgoJPHA+PGNvZGU+Jmx0O3R4 cDpzbWRfaWYgZmllbGQ9JnF1b3Q7TlVMTCZxdW90OyBvcGVyYXRvcj0mcXVvdDtlcSZxdW90 OyB2YWx1ZT0mcXVvdDt7cmVzdWx0fSZxdW90OyZndDs8L2NvZGU+PC9wPgoKCTxwPndpbGwg dGVzdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTEw8L3NwYW4+IG9iamVjdCAoaS5lLiAm IzgyMTY7ZW1wdGluZXNzJiM4MjE3OykgdG8gc2VlIGlmIGl0JiM4MjE3O3MgZXF1YWwgdG8g dGhlIDxjb2RlPntyZXN1bHR9PC9jb2RlPiByZXBsYWNlbWVudCB2YXJpYWJsZS4gWW91IGNh biB1c2Ugc2ltaWxhciBsb2dpYyB0byB0ZXN0IGZvciBvcHRpb25hbCB2YXJpYWJsZXMgYnkg c3dhcHBpbmcgdGhlIGZpZWxkIGFuZCB2YWx1ZSwgbGlrZSB0aGlzOjwvcD4KCgk8cD48Y29k ZT4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDs3JnF1b3Q7IG9wZXJhdG9yPSZxdW90O2d0 JnF1b3Q7IHZhbHVlPSZxdW90O3tyZXN1bHR9JnF1b3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+ VGhhdCB3b3VsZCBzZWUgaWYgdGhlIHJlcGxhY2VtZW50IHZhcmlhYmxlIDxjb2RlPntyZXN1 bHR9PC9jb2RlPiB3YXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDcgKHRoYXQmIzgyMTc7cyBu b3QgYSB0eXBvLCB0aGUgbG9naWMgaXMgcmV2ZXJzZWQgaW4gdGhpcyBjYXNlOiBpdCBpcyBp bnRlcnByZXRlZCBhczogJiM4MjIwO2lzIDcgZ3JlYXRlciB0aGFuIHtyZXN1bHR9JiM4MjIx Oywgd2hpY2ggaXMgdGhlIHNhbWUgYXMgJiM4MjIwO2lzIHtyZXN1bHR9IGxlc3MgdGhhbiBv ciBlcXVhbCB0byA3JiM4MjIxOyEpPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0i b3BlcmF0b3IiPm9wZXJhdG9yPC9oND4KCgk8cD5MaXN0IG9mIG9wZXJhdG9ycyB0byBhcHBs eSwgaW4gb3JkZXIsIHRvIGVhY2ggZmllbGQuIENob29zZSBmcm9tOjwvcD4KCgk8dWw+CgkJ PGxpPjxjb2RlPmVxPC9jb2RlPiBFcXVhbCAodGhlIGRlZmF1bHQgZm9yIGFsbCBleGNlcHQg JiM4MjE2O3BhcmVudCYjODIxNzspPC9saT4KCQk8bGk+PGNvZGU+bm90PC9jb2RlPiBOb3Qg ZXF1YWw8L2xpPgoJCTxsaT48Y29kZT5sdDwvY29kZT4gTGVzcyB0aGFuPC9saT4KCQk8bGk+ PGNvZGU+Z3Q8L2NvZGU+IEdyZWF0ZXIgdGhhbjwvbGk+CgkJPGxpPjxjb2RlPmxlPC9jb2Rl PiBMZXNzIHRoYW4gb3IgZXF1YWwgdG88L2xpPgoJCTxsaT48Y29kZT5nZTwvY29kZT4gR3Jl YXRlciB0aGFuIG9yIGVxdWFsIHRvPC9saT4KCQk8bGk+PGNvZGU+aW48L2NvZGU+IEZpZWxk IGlzIG9uZSBvZiBhIGxpc3Qgb2YgdmFsdWVzPC9saT4KCQk8bGk+PGNvZGU+bm90aW48L2Nv ZGU+IEZpZWxkIGlzIG5vdCBvbmUgb2YgdGhlIGdpdmVuIGxpc3Qgb2YgdmFsdWVzPC9saT4K CQk8bGk+PGNvZGU+YmVnaW5zPC9jb2RlPiBGaWVsZCBiZWdpbnMgd2l0aCBhIHNlcXVlbmNl IG9mIGNoYXJhY3RlcnM8L2xpPgoJCTxsaT48Y29kZT5jb250YWluczwvY29kZT4gRmllbGQg Y29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIChkZWZhdWx0IGZvciAmIzgyMTY7 cGFyZW50JiM4MjE3Oyk8L2xpPgoJCTxsaT48Y29kZT5lbmRzPC9jb2RlPiBGaWVsZCBlbmRz IHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzPC9saT4KCQk8bGk+PGNvZGU+aXNlbXB0 eTwvY29kZT4gRmllbGQgaXMgZW1wdHkgKGNvbnRhaW5zIG5vdGhpbmcpPC9saT4KCQk8bGk+ PGNvZGU+aXN1c2VkPC9jb2RlPiBGaWVsZCBoYXMgc29tZSB2YWx1ZTwvbGk+CgkJPGxpPjxj b2RlPmRlZmluZWQ8L2NvZGU+IEZpZWxkIGlzIHNldCAodXNlZnVsIHdpdGggdXJsdmFyIHZh cmlhYmxlcyk8L2xpPgoJCTxsaT48Y29kZT51bmRlZmluZWQ8L2NvZGU+IEZpZWxkIGlzIG5v dCBzZXQsIG9yIG1pc3NpbmcgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bh bj4gbGluZTwvbGk+CgkJPGxpPjxjb2RlPmlzbnVtPC9jb2RlPiBGaWVsZCBpcyBhIG51bWJl cjwvbGk+CgkJPGxpPjxjb2RlPmlzYWxwaGE8L2NvZGU+IEZpZWxkIGNvbnRhaW5zIGNoYXJh Y3RlcnMgb25seTwvbGk+CgkJPGxpPjxjb2RlPmlzYWxudW08L2NvZGU+IEZpZWxkIGNvbnRh aW5zIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9ubHk8L2xpPgoJCTxsaT48Y29kZT5pc2xv d2VyPC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIGxvd2VyIGNhc2U8 L2xpPgoJCTxsaT48Y29kZT5pc3VwcGVyPC9jb2RlPiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhl IGZpZWxkIGlzIHVwcGVyIGNhc2U8L2xpPgoJCTxsaT48Y29kZT5pc3B1bmN0PC9jb2RlPiBF dmVyeSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIHNvbWUgcHVuY3R1YXRpb24gbWFyazwv bGk+CgkJPGxpPjxjb2RlPmlzc3BhY2U8L2NvZGU+IEV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUg ZmllbGQgaXMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciAob3IgdGFiLCBuZXdsaW5lLCBldGMp PC9saT4KCTwvdWw+CgoJPHA+V2l0aCB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgKHByaW1h cmlseSBndCwgbHQsIGdlLCBsZSkgeW91IG1heSBmaW5kIG9kZCBiZWhhdmlvdXIgd2hlbiBj b21wYXJpbmcgbnVtYmVycy4gRm9yIGV4YW1wbGUsIDxjb2RlPnVybHZhcjpwaWMgZ3QgNjwv Y29kZT4gd2lsbCByZXR1cm4gPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IGlmIDxj b2RlPnBpYzwvY29kZT4gaXMgc2V0IHRvICYjODIyMDtmcmVkJiM4MjIxOy4gVGhpcyBpcyBi ZWNhdXNlIHRoZSB3b3JkICYjODIyMDtmcmVkJiM4MjIxOyAob3IgYXQgbGVhc3QgdGhlICYj ODIyMDtjaGFyYWN0ZXIgZiYjODIyMTspIGlzIGdyZWF0ZXIgaW4gdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5BU0NJSTwvc3Bhbj4gdGFibGUgdGhhbiB0aGUgJiM4MjIwO2NoYXJhY3RlciA2 JiM4MjIxOy48L3A+CgoJPHA+VG8gY2lyY3VtdmVudCB0aGlzIHByb2JsZW0sIHlvdSBtYXkg YXBwZW5kIDxjb2RlPjpOVU08L2NvZGU+IHRvIHRoZSBlbmQgb2YgYW55IG9mIHRoZXNlIG9w ZXJhdG9ycyB0byBmb3JjZSB0aGUgcGx1Z2luIHRvIGNoZWNrIHRoYXQgdGhlIHZhbHVlcyBh cmUgaW50ZWdlcnMuPC9wPgoKCTxwPklmIHlvdSB3aXNoIHRvIGNvbXBhcmUgdGhlIGxlbmd0 aCBvZiBhIGZpZWxkIG9yIHZhbHVlLCBhcHBlbmQgPGNvZGU+OkxFTjwvY29kZT4gdG8gYW55 IG9mIHRoZSBudW1lcmljYWwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEl0IGRvZXNuJiM4MjE3 O3QgbWFrZSBzZW5zZSB0byB1c2UgYm90aCA8Y29kZT46TlVNPC9jb2RlPiBhbmQgPGNvZGU+ OkxFTjwvY29kZT4gdG9nZXRoZXIsIHNvIHRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS48 L3A+CgoJPHA+VGhlIDxjb2RlPmJlZ2luczwvY29kZT4sIDxjb2RlPmVuZHM8L2NvZGU+IGFu ZCA8Y29kZT5jb250YWluczwvY29kZT4gb3BlcmF0b3JzLCBhbG9uZyB3aXRoIGFueSBvZiB0 aGUgPGNvZGU+aXM8L2NvZGU+IG9wZXJhdG9ycyAoZXhjZXB0IDxjb2RlPmlzc3BhY2U8L2Nv ZGU+KSwgY2FuIHRha2UgYW4gZXh0cmEgcGFyYW1ldGVyIGFzIHdlbGwuIFNpbmNlIHRoZXkg Y29tcGFyZSBldmVyeSBjaGFyYWN0ZXIgYWdhaW5zdCB0aGUgZ2l2ZW4gYmVoYXZpb3VyLCBz cGFjZSBjaGFyYWN0ZXJzIGNhbiBtZXNzIHRoaW5ncyB1cCBhIGJpdC4gRm9yIGV4YW1wbGUg PGNvZGU+ZmllbGQ9JnF1b3Q7Y3VzdG9tMSZxdW90OyBvcGVyYXRvcj0mcXVvdDtpc2xvd2Vy JnF1b3Q7PC9jb2RlPiB3aWxsIGZhaWwgaWYgY3VzdG9tMSBjb250YWlucyAmIzgyMjA7dGhp cyBpcyBhIHRlc3QmIzgyMjE7LiBPciBjb21wYXJpbmcgc29tZXRoaW5nIHRvIDxjb2RlPmJv ZHk8L2NvZGU+IGNhbiBmYWlsIGJlY2F1c2UgdGhlIGJvZHkgb2Z0ZW4gc3RhcnRzIHdpdGgg YSBudW1iZXIgb2Ygc3BhY2UgY2hhcmFjdGVycy4gVG8gY2lyY3VtdmVudCB0aGlzLCBhZGQg PGNvZGU+Ok5PU1BBQ0U8L2NvZGU+IHRvIHRoZSBvcGVyYXRvciB3aGljaCB3aWxsIHJlbW92 ZSBhbGwgc3BhY2VzIGZyb20gdGhlIHN0cmluZyBiZWZvcmUgdGVzdGluZyBpdC48L3A+CgoJ PHA+Tm90ZSBhbHNvIHRoYXQgd2hpbGUgPGNvZGU+ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2Rl PnVuZGVmaW5lZDwvY29kZT4gZGlmZmVyIHNlbWFudGljYWxseSBmcm9tIDxjb2RlPmlzdXNl ZDwvY29kZT4gYW5kIDxjb2RlPmlzZW1wdHk8L2NvZGU+IChyZXNwZWN0aXZlbHkpLCB0aGUg d2F5IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFzc2lnbnMgdmFyaWFibGVzIG1l YW5zIHRoYXQsIGZvciB0aGUgbW9zdCBwYXJ0LCB0aGUgdGVybXMgYXJlIGludGVyY2hhbmdl YWJsZS4gV2hlbiBkZWFsaW5nIHdpdGggdXJsdmFycyBhbmQgc3ZydmFycywgdGhlIHR3byBz ZXRzIG9mIG9wZXJhdG9ycyBiZWhhdmUgaW5kZXBlbmRlbnRseSwgYXMgeW91IHdvdWxkIGV4 cGVjdC4gU2VlIDxhIGhyZWY9IiNlZzUiPkV4YW1wbGUgNTwvYT4gZm9yIG1vcmUuIE5laXRo ZXIgPGNvZGU+ZGVmaW5lZDwvY29kZT4gbm9yIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gbWFr ZSBzZW5zZSB3aXRoIDxjb2RlPnBhcmVudDwvY29kZT4sIHNvIHRoZXkgYXJlIGZvcmJpZGRl bi48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJ2YWx1ZSI+dmFsdWU8L2g0PgoK CTxwPkxpc3Qgb2YgdmFsdWVzIHRvIGNvbXBhcmUgZWFjaCBmaWVsZCBpbiB0dXJuIHRvLiBD YW4gYmUgc3RhdGljIHZhbHVlcy90ZXh0IG9yIHRoZSBuYW1lIG9mIGFueSA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCwgbGlrZSB0aG9zZSBnaXZlbiBpbiA8YSBocmVm PSIjZmllbGQiPmZpZWxkPC9hPiAoZXhjZXB0ICYjODIyMDtwYXJlbnQmIzgyMjE7KS48L3A+ CgoJPHA+VG8gZGlzdGluZ3Vpc2ggYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBm aWVsZCBmcm9tIHN0YXRpYyB0ZXh0LCBwcmVmaXggdGhlIGZpZWxkIG5hbWUgd2l0aCA8Y29k ZT4/PC9jb2RlPi4gRm9yIGV4YW1wbGU6IDxjb2RlPnZhbHVlPSZxdW90O3RpdGxlJnF1b3Q7 PC9jb2RlPiB3aWxsIGNvbXBhcmUgeW91ciBjaG9zZW4gZmllbGQgYWdhaW5zdCB0aGUgd29y ZCAmIzgyMjA7dGl0bGUmIzgyMjE7LCB3aGVyZWFzIDxjb2RlPnZhbHVlPSZxdW90Oz90aXRs ZSZxdW90OzwvY29kZT4gd2lsbCBjb21wYXJlIHlvdXIgZmllbGQgYWdhaW5zdCB0aGUgY3Vy cmVudCBhcnRpY2xlJiM4MjE3O3MgdGl0bGUuPC9wPgoKCTxwPklmIHlvdSB3aXNoIHRvIGNv bXBhcmUgYSB2YWx1ZSB0aGF0IG1pZ2h0IGNvbnRhaW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhU TUw8L3NwYW4+IChlLmcgPGNvZGU+P2JvZHk8L2NvZGU+KSwgYWRkIHRoZSBtb2RpZmllciA8 Y29kZT46Tk9UQUdTPC9jb2RlPiB0byB0aGUgZW5kIG9mIHRoZSB2YWx1ZS4gSXQgd2lsbCBo YXZlIGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gYW5kIDxzcGFuIGNsYXNz PSJjYXBzIj5QSFA8L3NwYW4+IHRhZ3Mgc3RyaXBwZWQgZnJvbSBpdCBhbmQgd2lsbCBhbHNv IGJlIHRyaW1tZWQgdG8gcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcy48L3A+ CgoJPHA+Tm90ZSB0aGF0IHlvdSBtYXkgZmluZCB1c2luZyBkb3VibGUtcXVvdGVzIGluIGZp ZWxkcyBnaXZlcyB1bmV4cGVjdGVkIHJlc3VsdHMuIFRoZXkgYXJlIGJlc3QgYXZvaWRlZCwg b3Igd29ya2VkIGFyb3VuZCBieSB1c2luZyA8Y29kZT5jb250YWluczwvY29kZT4gaW5zdGVh ZCBvZiA8Y29kZT5lcTwvY29kZT4uPC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0i bG9naWMiPmxvZ2ljPC9oND4KCgk8cD5DYW4gYmUgb25lIG9mIDxjb2RlPmFuZDwvY29kZT4g KHRoZSBkZWZhdWx0KSBvciA8Y29kZT5vcjwvY29kZT4uIElmIHVzaW5nIDxjb2RlPmFuZDwv Y29kZT4sIGFsbCBjb25kaXRpb25zIG11c3QgYmUgbWV0IGZvciBhIDxzcGFuIGNsYXNzPSJj YXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuIElmIHVzaW5nIDxjb2RlPm9yPC9jb2RlPiwgYW55 IG9mIHRoZSBjb25kaXRpb25zIHRoYXQgbWF0Y2ggd2lsbCBnaXZlIGEgPHNwYW4gY2xhc3M9 ImNhcHMiPlRSVUU8L3NwYW4+IHJlc3VsdC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAi IGlkPSJjYXNlc2Vuc2UiPmNhc2Vfc2Vuc2l0aXZlPC9oND4KCgk8cD5CeSBkZWZhdWx0LCBh bGwgY29tcGFyaXNvbnMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgKDApLiBJZiB5b3Ugd2lzaCB0 byBtYWtlIHRoZW0gc2Vuc2l0aXZlIHRvIGNhcHRpbGlzYXRpb24sIHNwZWNpZnkgPGNvZGU+ Y2FzZV9zZW5zaXRpdmU9JnF1b3Q7MSZxdW90OzwvY29kZT4uIE5vdGUgdGhhdCBpZiB1c2lu ZyA8Y29kZT5pc2xvd2VyPC9jb2RlPiBvciA8Y29kZT5pc3VwcGVyPC9jb2RlPiBpbiBhIGNv bXBhcmlzb24sIGNhc2Ugc2Vuc2l0aXZpdHkgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHN3aXRj aGVkIG9uIHdoaWxlIHRoZSB0ZXN0IGlzIHRha2luZyBwbGFjZS48L3A+CgoJPGg0IGNsYXNz PSJhdHQtbmFtZSAiIGlkPSJwYXJhbWRlbGltIj5wYXJhbV9kZWxpbTwvaDQ+CgoJPHA+WW91 IG5vcm1hbGx5IHNwZWNpZnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIHRvIHRoZSA8Y29kZT5m aWVsZDwvY29kZT4sIDxjb2RlPm9wZXJhdG9yPC9jb2RlPiBhbmQgPGNvZGU+dmFsdWU8L2Nv ZGU+IHBhcmFtZXRlcnMuIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IG5vdCBiZSBkZXNpcmFibGUg aWYgeW91IGhhdmUgdXNlZCB0aGF0IGNoYXJhY3RlciBpbiB0aGUgbmFtZSBvZiBhIGN1c3Rv bSBmaWVsZCwgZm9yIGV4YW1wbGUuIFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gY2hhbmdl IHRoZSBkZWxpbWl0ZXIgdG8gYWxtb3N0IGFueXRoaW5nIHlvdSBsaWtlLCBlLmcuIHNwZWNp ZnlpbmcgPGNvZGU+cGFyYW1fZGVsaW09JnF1b3Q7Ly8mcXVvdDs8L2NvZGU+IG1lYW5zIHlv dSB3b3VsZCBzcGVjaWZ5IDxlbT5hbGw8L2VtPiB5b3VyIHBhcmFtZXRlciBsaXN0cyBsaWtl IHRoaXM6PC9wPgoKCTxwPjxjb2RlPmZpZWxkPSZxdW90O3NlY3Rpb24gLy8gdXJsdmFyOnR5 cGUmcXVvdDsgb3BlcmF0b3I9JnF1b3Q7ZXEgLy8gYmVnaW5zJnF1b3Q7IHZhbHVlPSZxdW90 O2FuaW1hbHMgLy8gdGlnZXImcXVvdDs8L2NvZGU+PC9wPgoKCTxoNCBjbGFzcz0iYXR0LW5h bWUgIiBpZD0ibW9kZGVsaW0iPm1vZF9kZWxpbTwvaDQ+CgoJPHA+VmVyeSBzaW1pbGFyIHRv IDxhIGhyZWY9IiNwYXJhbWRlbGltIj5wYXJhbV9kZWxpbTwvYT4sIHRoaXMgZ292ZXJucyB0 aGUgZGVsaW1pdGVyIHRvIHVzZSBiZXR3ZWVuIGFuIG9wdGlvbiBhbmQgaXRzIG1vZGlmaWVy IChlLmcuIHRoZSB0aGluZyBzZXBhcmF0aW5nIHVybHZhciwgc3ZydmFyIG9yIHR4cHZhciBm cm9tIHRoZSB2YXJpYWJsZSBuYW1lLCBvciBwYXJlbnQgZnJvbSA8Y29kZT5MVkw8L2NvZGU+ IGFuZCA8Y29kZT5DQVQ8L2NvZGU+LCBhbmQgYWxzbyB0aGUgY2hhcmFjdGVyKHMpIHRoYXQg c2VwYXJhdGUgYW4gb3BlcmF0b3IgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTTwv c3Bhbj4gb3IgPHNwYW4gY2xhc3M9ImNhcHMiPk5PU1BBQ0U8L3NwYW4+IG1vZGlmaWVycyku IEl0IGlzIHRoZSBjb2xvbiAoOikgYnkgZGVmYXVsdC48L3A+CgoJPGg0IGNsYXNzPSJhdHQt bmFtZSAiIGlkPSJtb2RkZWxpbSI+bGlzdF9kZWxpbTwvaDQ+CgoJPHA+Rm9yIHVzZSB3aXRo IHRoZSA8Y29kZT5pbjwvY29kZT4gYW5kIDxjb2RlPm5vdGluPC9jb2RlPiBvcGVyYXRvcnMs IHRoaXMgaXMgdGhlIGRlbGltaXRlciBiZXR3ZWVuIHZhbHVlcy4gSXQgaXMgdGhlIGZvcndh cmQtc2xhc2ggKC8pIGJ5IGRlZmF1bHQuIEEgY29udHJpdmVkIGV4YW1wbGU6PC9wPgoKPHBy ZT48Y29kZT4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt0eHB2YXI6bGV2ZWwmcXVvdDsg b3BlcmF0b3I9JnF1b3Q7aW4mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDsxLzIvMy81LzgvMTMv MjEvMzQmcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7UmVzdWx0IGlzIGEgRmlib25hY2NpIHZhbHVl ISZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90 ZSB0aGF0IGluIGFsbCAmIzgyMTY7ZGVsaW0mIzgyMTc7IGF0dHJpYnV0ZXMsIHNvbWUgY2hh cmFjdGVyIHNlcXVlbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMgKHF1b3RlcyAmIzgyMTI7IHNp bmdsZSBvciBkb3VibGUgJiM4MjEyOyBzcHJpbmcgdG8gbWluZDsgb3RoZXJzIGxpa2UgcGFy ZW50aGVzZXMgbWF5IGFsc28gY2F1c2UgdGhlIHBsdWdpbiB0byBleHBsb2RlKS48L3A+CgoJ PGgzPlJlcGxhY2VtZW50IHRhZ3M8L2gzPgoKCTxwPkV2ZXJ5IGZpZWxkIG9yIHZhbHVlIHRo YXQgeW91IHJlZmVyIHRvIGluIHlvdXIgc21kX2lmIHRhZyBiZWNvbWVzIGF2YWlsYWJsZSB3 aXRoaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sgc28geW91IGNhbiBkaXNwbGF5IGl0cyBjb250 ZW50cyBpZiB5b3Ugd2lzaC4gTW9zdCBvZiB0aGUgdGltZSB0aGlzIGlzIG5vdCBtdWNoIHVz ZSBidXQgaXQgY2FuIGJlIHZlcnkgdXNlZnVsIHdpdGggdGhlIDxjb2RlPmluPC9jb2RlPiBv cGVyYXRvciBvciB0aGUgPGNvZGU+OkxFTjwvY29kZT4gbW9kaWZpZXIgLiBGb3IgaW5zdGFu Y2UsIGlmIHlvdSBoYXZlIGFza2VkIHNtZF9pZiB0byB0ZXN0IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBuYW1lZCAmIzgyMTY7bGV2ZWwmIzgyMTc7IGFu ZCB0b2xkIGl0IHRvIGNvbXBhcmUgaXQgdG8gdGhlIGN1c3RvbSBmaWVsZCBsYWJlbGxlZCAm IzgyMTY7YWxsb3dhYmxlX2xldmVscyYjODIxNzssIHR3byB0YWdzIGJlY29tZSBhdmFpbGFi bGUgd2hpY2ggeW91IGNhbiB1c2Ugd2l0aGluIHRoZSBjb250YWluaW5nIGJsb2NrOjwvcD4K Cgk8dWw+CgkJPGxpPjxjb2RlPntzbWRfaWZfbGV2ZWx9PC9jb2RlPiB3b3VsZCBkaXNwbGF5 IHRoZSB2YWx1ZSBvZiB0aGUgJiM4MjE2O2xldmVsJiM4MjE3OyA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiB2YXJpYWJsZTwvbGk+CgkJPGxpPjxjb2RlPntzbWRfaWZfYWxsb3dh YmxlX2xldmVsc308L2NvZGU+IHdvdWxkIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIHRoZSBj dXJyZW50IGFydGljbGUmIzgyMTc7cyBjdXN0b20gZmllbGQ8L2xpPgoJPC91bD4KCgk8cD5U aGUgcmVwbGFjZW1lbnQgdGFncyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggPGNvZGU+c21k X2lmXzwvY29kZT4gc28gdGhleSBkb24mIzgyMTc7dCBjbGFzaCB3aXRoIHRoZSBvbmVzIGlu IHNtZF9nYWxsZXJ5IChmb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBzbWRfaWYgaW5zaWRlIGFu IHNtZF9nYWxsZXJ5IHRhZykuIElmIHlvdSBhcmUgY29tcGFyaW5nIGEgZml4ZWQtdmFsdWUg ZmllbGQgKHN1Y2ggYXMgPGNvZGU+ZmllbGQ9JnF1b3Q7TlVMTCZxdW90OzwvY29kZT4gb3Ig PGNvZGU+dmFsdWU9JnF1b3Q7MTImcXVvdDs8L2NvZGU+IG9yIHNtZF9nYWxsZXJ5JiM4MjE3 O3MgPGNvZGU+dmFsdWU9JnF1b3Q7e2NhdGVnb3J5fSZxdW90OzwvY29kZT4pIHRoZSBuYW1l IG9mIHRoZSByZXBsYWNlbWVudCB0YWdzIGFyZSA8Y29kZT57c21kX2lmX2ZpZWxkTn08L2Nv ZGU+IGZvciBmaWVsZHMgYW5kIDxjb2RlPntzbWRfaWZfdmFsTn08L2NvZGU+IGZvciB2YWx1 ZXMsIHdoZXJlIE4gaXMgdGhlIHRlc3QgbnVtYmVyIHN0YXJ0aW5nIGZyb20gMS48L3A+CgoJ PHA+VGhlcmUgYXJlIGFsc28gdHdvICYjODIxNjtsZW5ndGgmIzgyMTc7IHJlcGxhY2VtZW50 IHRhZ3MuIEZvbGxvd2luZyBhIHNpbWlsYXIgY29udmVudGlvbiB0byBhYm92ZSwgdGhlc2Ug YXJlIHByZWZpeGVkIHdpdGggPGNvZGU+c21kX2lmX2xlbl88L2NvZGU+LiBJZiB5b3UgZ2V0 IHN0dWNrLCB0ZW1wb3JhcmlseSBzd2l0Y2ggPGNvZGU+ZGVidWc9JnF1b3Q7MSZxdW90Ozwv Y29kZT4gb24gdG8gc2VlIHRoZSByZXBsYWNlbWVudHMgYXZhaWxhYmxlIGFuZCB0aGVpciBh c3NvY2lhdGVkIG5hbWVzL3ZhbHVlcy48L3A+CgoJPHA+U2VlIDxhIGhyZWY9IiNlZzgiPkV4 YW1wbGUgODwvYT4gYW5kIDxhIGhyZWY9IiNlZzkiPjk8L2E+IGZvciBtb3JlLjwvcD4KCgk8 aDI+RXhhbXBsZXM8L2gyPgoKCTxoMyBpZD0iZWcxIj5FeGFtcGxlIDE8L2gzPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9 JnF1b3Q7c2VjdGlvbiwgaWQmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtiZWdpbnMsIGd0 JnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7bGlvbiwgMTImcXVvdDsmZ3Q7CiAmbHQ7dHhwOmFy dGljbGUgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRo YW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ Q2hlY2tzIGlmIHRoZSBjdXJyZW50IHNlY3Rpb24gbmFtZSBiZWdpbnMgd2l0aCB0aGUgd29y ZCAmIzgyMjA7bGlvbiYjODIyMTsgYW5kIHRoZSBhcnRpY2xlIElEIGlzIGdyZWF0ZXIgdGhh biAxMi4gRGlzcGxheXMgdGhlIGFydGljbGUgaWYgYm90aCBjb25kaXRpb25zIGFyZSBtZXQg b3IgZGlzcGxheXMgdGhlIHRleHQgJiM4MjIwO05vdCB0b2RheSwgdGhhbmtzJiM4MjIxOyBp ZiBub3QuPC9wPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI8L2gzPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7 c3VtbWFyeSwgY2F0ZWdvcnksIHVybHZhcjpwaWMmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVv dDtpc3VzZWQsIGVxLCBpc251bSZxdW90OwogICAgIHZhbHVlPSZxdW90OywgYW5pbWFsICwm cXVvdDsgJmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0Owog Jmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyBpZiB0aGUgY3VzdG9tIGZpZWxkIGxhYmVs bGVkICYjODIyMDtzdW1tYXJ5JiM4MjIxOyBoYXMgc29tZSBkYXRhIGluIGl0LCBjaGVja3Mg aWYgdGhlIGdsb2JhbCBjYXRlZ29yeSBlcXVhbHMgJiM4MjIwO2FuaW1hbCYjODIyMTsgYW5k IHRlc3RzIGlmIHRoZSB1cmx2YXIgPGNvZGU+cGljPC9jb2RlPiBpcyBudW1lcmljIChlLmcu IDxjb2RlPj9waWM9NTwvY29kZT4pLjwvcD4KCgk8cD5JZiBhbGwgdGhlc2UgY29uZGl0aW9u cyBhcmUgbWV0IHRoZSBhcnRpY2xlIGlzIGRpc3BsYXllZCwgZWxzZSB0aGUgbWVzc2FnZSBp cyBzaG93bi4gTm90ZSB0aGF0IDxjb2RlPmlzdXNlZDwvY29kZT4gYW5kIDxjb2RlPmlzbnVt PC9jb2RlPiBkb24mIzgyMTc7dCB0YWtlIGFyZ3VtZW50cyBmb3IgPGNvZGU+dmFsdWU8L2Nv ZGU+IGFuZCB0aGVpciBwb3NpdGlvbnMgYXJlIGhlbGQgYnkgZW1wdHkgY29tbWFzICh0ZWNo bmljYWxseSB0aGUgbGFzdCBjb21tYSBpc24mIzgyMTc7dCBuZWVkZWQgYnV0IGl0IGhlbHBz IGtlZXAgZXZlcnl0aGluZyBuZWF0IGlmIHlvdSBhZGQgZnVydGhlciB0ZXN0cyBsYXRlciBv bikuPC9wPgoKCTxoMyBpZD0iZWczIj5FeGFtcGxlIDM8L2gzPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7YXJ0 aWNsZV9pbWFnZSwgc3ZydmFyOkhUVFBfVVNFUl9BR0VOVCZxdW90OwogICAgIG9wZXJhdG9y PSZxdW90O2VxLCBjb250YWlucyZxdW90OwogICAgIHZhbHVlPSZxdW90O3VybHZhcjpwaWMs IFNhZmFyaSZxdW90OwogICAgIGxvZ2ljPSZxdW90O29yJnF1b3Q7Jmd0OwogJmx0O3R4cDph cnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0 aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxw PkNvbXBhcmVzIChmb3IgZXF1YWxpdHkpIHRoZSBjdXJyZW50IGFydGljbGUgaW1hZ2UgaWQg d2l0aCB0aGUgdmFsdWUgb2YgdGhlIHVybCB2YXJpYWJsZSA8Y29kZT5waWM8L2NvZGU+IGFu ZCBjaGVja3MgaWYgdGhlIHZhbHVlIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRUUDwv c3Bhbj5fVVNFUl9BR0VOVCBzdHJpbmcgY29udGFpbnMgJiM4MjIwO1NhZmFyaSYjODIyMTsu IFRoaXMgZXhhbXBsZSB1c2VzIHRoZSAmIzgyMTY7b3ImIzgyMTc7IGxvZ2ljLCBoZW5jZSBp ZiA8ZW0+ZWl0aGVyPC9lbT4gY29uZGl0aW9uIGlzIG1ldCB0aGUgYXJ0aWNsZSBpcyBzaG93 biwgb3RoZXJ3aXNlIHRoZSAmIzgyMTY7bm90IHRvZGF5JiM4MjE3OyBtZXNzYWdlIGlzIGRp c3BsYXllZC48L3A+CgoJPGgzIGlkPSJlZzQiPkV4YW1wbGUgNDwvaDM+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVv dDtwYXJlbnQ6TFZMMiZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2VxJnF1b3Q7CiAgICAg dmFsdWU9JnF1b3Q7bWFtbWFsJnF1b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZs dDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7 CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyB0aGUgMm5k IHN1Yi1jYXRlZ29yeSBvZiB0aGUgZ2xvYmFsIGNhdGVnb3J5JiM4MjE3O3MgdHJlZSB0byBz ZWUgaWYgaXQgZXF1YWxzICYjODIyMDttYW1tYWwmIzgyMjE7LiBJZiBpdCBkb2VzLCBzaG93 IHRoZSBhcnRpY2xlOyBpZiBub3Qgc2hvdyB0aGUgbWVzc2FnZS4gUmVtb3ZpbmcgdGhlIDxj b2RlPjpMVkwyPC9jb2RlPiAod2hpY2ggYWxsb3dzIHlvdSB0byBhbHNvIHJlbW92ZSB0aGUg b3BlcmF0b3IgcGFyYW1ldGVyIHRvIGZvcmNlIHRoZSBjb21wYXJpc29uIHRvIGJlIHRoZSBk ZWZhdWx0ICYjODIyMDtjb250YWlucyYjODIyMTspIGNoZWNrcyBpZiB0aGUgY3VycmVudCBn bG9iYWwgY2F0ZWdvcnkgaXMgYSBjaGlsZCBvZiAmIzgyMTY7bWFtbWFsJiM4MjE3OyAoYXQg YW55IGxldmVsKS48L3A+CgoJPHA+Q2hhbmdlIHRoZSBmaWVsZCB0byA8Y29kZT5wYXJlbnQ6 Q0FUMTwvY29kZT4gdG8gc2VlIGlmIHRoZSBhcnRpY2xlJiM4MjE3O3MgY2F0ZWdvcnkxIG1h dGNoZXMgJiM4MjE2O21hbW1hbCYjODIxNzsgYXQgYW55IGxldmVsLCBvciB1c2UgPGNvZGU+ ZmllbGQ9JnF1b3Q7cGFyZW50OkNBVDE6TFZMMiZxdW90OzwvY29kZT4gdG8gY29tYmluZSB0 aGUgY2hlY2tzLjwvcD4KCgk8aDMgaWQ9ImVnNSI+RXhhbXBsZSA1PC9oMz4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZx dW90O3VybHZhcjpwaWMsIHVybHZhcjpwYWdlJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7 Z3Q6TlVNLCB1bmRlZmluZWQmcXVvdDsKICAgICB2YWx1ZT0mcXVvdDs/YXJ0aWNsZV9pbWFn ZSwmcXVvdDsmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7 CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRoYW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lm Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGVzdHMgaWYgdGhlIHVybCB2YXJpYWJsZSA8Y29k ZT5waWM8L2NvZGU+IGlzIHN0cmljdGx5IG51bWVyaWNhbGx5IGdyZWF0ZXIgdGhhbiB0aGUg dmFsdWUgaW4gdGhlIGN1cnJlbnQgYXJ0aWNsZSYjODIxNztzIDxjb2RlPmFydGljbGVfaW1h Z2U8L2NvZGU+IGZpZWxkIGFuZCB0aGF0IHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGFnZTwv Y29kZT4gaXMgbWlzc2luZyBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBhZGRyZXNzLiBDb21wYXJlIHRoZSBvdXRjb21lIG9mIHRoaXMgdGVzdCB3aXRoIHRoZSBv dGhlciBvcGVyYXRvcnMgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWJsZSB3aGVuIHRlc3Rpbmcg dGhlIDxjb2RlPnBhZ2U8L2NvZGU+IHVybHZhcjo8L3A+CgoJPHRhYmxlPgoJCTx0cj4KCQkJ PHRoPjxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPjwv c3Bhbj4gPC90aD4KCQkJPHRoPmRlZmluZWQgPC90aD4KCQkJPHRoPnVuZGVmaW5lZCA8L3Ro PgoJCQk8dGg+aXN1c2VkIDwvdGg+CgkJCTx0aD5pc2VtcHR5IDwvdGg+CgkJPC90cj4KCQk8 dHI+CgkJCTx0ZD4gaW5kZXgucGhwP3BhZyA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJj YXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8 dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48 L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJj YXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNh cHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJPC90 cj4KCQk8dHI+CgkJCTx0ZD4gaW5kZXgucGhwP3BhZ2U9IDwvdGQ+CgkJCTx0ZD4gPHNwYW4g Y2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90 ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNF PC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4g Y2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBj bGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3Rk PgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4LnBocD9wYWdlPTQgPC90ZD4KCQkJPHRk PiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9z cGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2Fw cyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBz Ij48c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4g PHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3Nw YW4+IDwvdGQ+CgkJPC90cj4KCTwvdGFibGU+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUgNjwv aDM+CgoJPHA+UHV0IHRoaXMgaW5zaWRlIHlvdXIgPGNvZGU+cGxhaW5saW5rczwvY29kZT4g Zm9ybSBhbmQgZXhlY3V0ZSBhIDxjb2RlPiZsdDt0eHA6bGlua2xpc3QgLyZndDs8L2NvZGU+ IGZyb20gYW4gYXJ0aWNsZSBwYWdlL2Zvcm06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7aWQsIGlkJnF1 b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7Z2U6TlVNLCBsZTpOVU0mcXVvdDsKICAgICB2YWx1 ZT0mcXVvdDt1cmx2YXI6bWluLCB1cmx2YXI6bWF4JnF1b3Q7Jmd0OwogICZsdDt0eHA6bGlu a2Rlc2N0aXRsZSAvJmd0OyZsdDticiAvJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5UaGF0IHdpbGwgbGlzdCBvbmx5IHRoZSBsaW5rcyB0aGF0IGhhdmUg SURzIGJldHdlZW4gdGhlIDxjb2RlPm1pbjwvY29kZT4gYW5kIDxjb2RlPm1heDwvY29kZT4g dmFyaWFibGVzIHNwZWNpZmllZCBvbiB0aGUgYWRkcmVzcyBiYXIuPC9wPgoKCTxoMyBpZD0i ZWc3Ij5FeGFtcGxlIDc8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOnByb2R1Y3RfY29kZSZx dW90OwogICAgIG9wZXJhdG9yPSZxdW90O2lzYWxudW0mcXVvdDsmZ3Q7CiAgJmx0O3R4cDpv dXRwdXRfZm9ybSBmb3JtPSZxdW90O3Nob3dfcHJvZHVjdCZxdW90OyAvJmd0OwombHQ7dHhw OmVsc2UgLyZndDsKICZsdDtwJmd0O0ludmFsaWQgcHJvZHVjdCBjb2RlJmx0Oy9wJmd0Owom bHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UZXN0cyB0byBzZWUgaWYg dGhlIHByb2R1Y3RfY29kZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJs ZSBpcyBhbHBoYW51bWVyaWMgYW5kIGRpc3BsYXlzIGEgZm9ybSBpZiBzby48L3A+CgoJPGgz IGlkPSJlZzgiPkV4YW1wbGUgODwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt1cmx2YXI6c29ydF9vcmRl ciZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2luJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7 aWQvcHJpY2Uvc2l6ZS9jb2xvdXImcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7U29ydGluZyB2YWx1 ZXMgYnkge3NtZF9pZl9zb3J0X29yZGVyfSZsdDsvcCZndDsKICAvLyBEbyBzb21lIHN0dWZm CiZsdDt0eHA6ZWxzZSAvJmd0OwogIC8vIFVzZSBhIGRlZmF1bHQgc29ydCwgb3Igc2hvdyBh biBlcnJvciBoZXJlCiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkJ5 IHVzaW5nIHRoZSByZXBsYWNlbWVudCB0YWcge3NtZF9pZl9zb3J0X29yZGVyfSB5b3UgaGF2 ZSBwbHVja2VkIHRoZSB2YWx1ZSBmcm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiBiYXIgYW5kIGluc2VydGVkIGl0IGludG8gdGhlIGFydGljbGUuIFVzZWZ1bCB3aGVu IHVzaW5nIHRoZSA8Y29kZT5pbjwvY29kZT4gb3IgPGNvZGU+bm90aW48L2NvZGU+IG9wZXJh dG9ycyBiZWNhdXNlLCBhbHRob3VnaCB5b3Uga25vdyB0aGF0IHRoZSBmaWVsZCBtYXRjaGVk IG9uZSBvZiB0aGUgdmFsdWVzIGluIHlvdXIgbGlzdCwgeW91IHdvdWxkIG90aGVyd2lzZSBu b3Qga25vdyB3aGljaCBvbmUgaGFzIGJlZW4gZ2l2ZW4gb24gdGhlIGFkZHJlc3MgYmFyLjwv cD4KCgk8aDMgaWQ9ImVnOSI+RXhhbXBsZSA5PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6cGhwJmd0OwpnbG9iYWwgJGJvZHlleDsKJGJv ZHlleCA9IGJvZHkoYXJyYXkoKSkgLiBleGNlcnB0KGFycmF5KCkpOwombHQ7L3R4cDpwaHAm Z3Q7CiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3BocHZhcjpib2R5ZXgmcXVvdDsKICAg ICBvcGVyYXRvcj0mcXVvdDtndDpMRU4mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDs1MDAmcXVv dDsmZ3Q7CiAgJmx0O3AmZ3Q7WW91IGFyZSBhIGJpZyBib3kgYXQge3NtZF9pZl9sZW5fYm9k eWV4fQogICAgIGNoYXJhY3RlcnMgbG9uZyEmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZn dDsKPC9jb2RlPjwvcHJlPgoKCTxoMiBjbGFzcz0iY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gy PgoKCTx1bD4KCQk8bGk+MzAgRGVjIDA3IHwgMC4xIHwgSW5pdGlhbCByZWxlYXNlPC9saT4K CQk8bGk+MzAgRGVjIDA3IHwgMC4yIHwgQWRkZWQgcGFyZW50IGNhdGVnb3J5IGNoZWNraW5n ICh0aGFua3MgdGhlX2dob3N0KTwvbGk+CgkJPGxpPjAyIEphbiAwOCB8IDAuMyB8IEFkZGVk IGRlZmluZWQvdW5kZWZpbmVkIGFuZCBzdHJpY3QgbnVtZXJpYyBjb21wYXJpc29uczwvbGk+ CgkJPGxpPjA2IEphbiAwOCB8IDAuNCB8IEFkZGVkIDxjb2RlPj88L2NvZGU+IG5vdGF0aW9u IHRvIGFsbG93IHRoZSB2YWx1ZSB0byByZWFkIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw YW4+IGZpZWxkczsgYmV0dGVyIHF1b3RlIHN1cHBvcnQgKGJvdGggdGhhbmtzIE5laWxBKTwv bGk+CgkJPGxpPjA2IEphbiAwOCB8IDAuNDEgfCBGaXhlZCBsb3dlciBjYXNlIGZpZWxkIG5h bWVzIGFuZCB1bmRlZmluZWQgaW5kZXggZXJyb3IgKHRoYW5rcyBwZXRlcmopPC9saT4KCQk8 bGk+MTQgSmFuIDA4IHwgMC41IHwgQWRkZWQgY2FzZV9zZW5zaXRpdmUgb3B0aW9uOyBtYWRl ICYjODIxNjtjb250YWlucyYjODIxNzsgdGhlIGRlZmF1bHQgZm9yICYjODIxNjtwYXJlbnQm IzgyMTc7IHRlc3RzOyBpbXByb3ZlZCBoZWxwIChhbGwgdGhhbmtzIHRoZV9naG9zdCk7IGFk ZGVkIGRlbGltIG9wdGlvbnM8L2xpPgoJCTxsaT4xNSBKYW4gMDggfCAwLjUxIHwgRml4ZWQg ZGVmaW5lZC91bmRlZmluZWQgc3ludGF4IGVycm9yOyB0aWdodGVuZWQgaXN1c2VkL2lzZW1w dHkgdG8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIGRlZmluZWQvdW5kZWZpbmVkPC9saT4KCQk8 bGk+MjUgTWF5IDA4IHwgMC42IHwgRml4ZWQgJiM4MjE2O3VuZGVmaW5lZCBpbmRleCYjODIx NzsgZXJyb3JzICh0aGFua3MgcmVkYm90IGFuZCB0aGVfZ2hvc3QpIDsgYWRkZWQgbW9yZSBw cmV0ZXh0IHZhcmlhYmxlcyA7IGFkZGVkIG1vcmUgPGNvZGU+aXM8L2NvZGU+IGNoZWNrcyAo YW5kIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9TUEFDRTwvc3Bhbj4gbW9kaWZpZXIpIDsg YWxsb3dlZCBmaWxlIGFuZCBsaW5rIHRlc3RzIChpbmNsdWRpbmcgcGFyZW50IGNhdGVnb3Jp ZXMpPC9saT4KCQk8bGk+MjYgTWF5IDA4IHwgMC42MSB8IEZpeGVkIHN0dXBpZCBvdmVyc2ln aHQgaW4gZmllbGQgbmFtZSBnZW5lcmF0aW9uIHRvIGFsbG93IGFyYml0cmFyeSBuYW1lcyBp bnN0ZWFkIG9mIGZvcmNpbmcgJHRoaXNhcnRpY2xlICh0aGFua3MgdG8gSm9hbmEgQ2FydmFs aG8gZm9yIGxlYWRpbmcgbWUgdG8gdGhpcyk8L2xpPgoJCTxsaT4xMSBKdW4gMDggfCAwLjYy IHwgRml4ZWQgaW5jb3JyZWN0IHJlc3VsdCBpZiBldmFsKCkgaXMgZW1wdHkgOyBhZGRlZCA8 c3BhbiBjbGFzcz0iY2FwcyI+TlVMTDwvc3Bhbj4gZmllbGQgb2JqZWN0PC9saT4KCQk8bGk+ MTAgU2VwIDA4IHwgMC43IHwgRml4ZWQgd2FybmluZyBpZiBlbXB0eSBjdXN0b20gZmllbGQg aW4gdmFsdWUgKHRoYW5rcyB2aXN1YWxwZW9wbGUpIDsgYWRkZWQgdHhwdmFyIHN1cHBvcnQg KHRoYW5rcyB0aGVfZ2hvc3QpIDsgYWRkZWQgdGhpc2ltYWdlIHN1cHBvcnQgKGZvciB0aGUg ZnV0dXJlKSA7IGFkZGVkIG9wZXJhdG9ycyA8Y29kZT5pbjwvY29kZT4sIDxjb2RlPm5vdGlu PC9jb2RlPiBhbmQgdGhlIDxjb2RlPmxpc3RfZGVsaW08L2NvZGU+IGF0dHJpYnV0ZTsgZW5h YmxlZCByZXBsYWNlbWVudCB0YWdzIGZvciBtYXRjaGVkIHZhcmlhYmxlczwvbGk+CgkJPGxp PjAxIE9jdCAwOCB8IDAuNzEgfCBGaXhlZCB0aGUgZml4IGZvciBlbXB0eSBjdXN0b20gZmll bGRzIGltcGxlbWVudGVkIGluIDAuNyAodGhhbmtzIG1hcHUvdmlzdWFscGVvcGxlKTwvbGk+ CgkJPGxpPjAxIE9jdCAwOCB8IDAuNzIgfCBBZGRlZCA8Y29kZT46Tk9UQUdTPC9jb2RlPiAo dGhhbmtzIG1hcHUpPC9saT4KCQk8bGk+MTMgT2N0IDA4IHwgMC43MyB8IEFkZGVkIDxjb2Rl PjpOT1NQQUNFPC9jb2RlPiB0byA8Y29kZT5iZWdpbnM8L2NvZGU+LCA8Y29kZT5lbmRzPC9j b2RlPiBhbmQgPGNvZGU+Y29udGFpbnM8L2NvZGU+ICh0aGFua3MgbWFwdSksIGFkZGVkIHBo cHZhciBzdXBwb3J0LCA8Y29kZT46TEVOPC9jb2RlPiBtb2RpZmllciBhbmQgbGVuZ3RoIHJl cGxhY2VtZW50IHRhZ3MgKGFsbCB0aGFua3MgdGhlX2dob3N0KTwvbGk+CgkJPGxpPjEzIE9j dCAwOCB8IDAuNzQgfCBCdWcgZml4IHRoZSBzbWRfaWZfIG5hbWVzIG9mIHZhbHMgYW5kIGZp ZWxkcyB0byBhdm9pZCBjbGFzaGVzLiBOb3cgbnVtZXJpY2FsbHkgaW5kZXhlZDwvbGk+Cgk8 L3VsPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAtLS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+ CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuMyA7 fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAi Q291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNG RkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9y ZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxh eTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9o ZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRl Y29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5n LWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsg Y29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4 IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9y OiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4 dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBz b2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHgg R2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9u dDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBt YXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7fQojc21kX2hlbHAg aDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5n OiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0K I3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxwIC5t YW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRf aGVscCB0YWJsZSB7d2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90 dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlk ICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KPC9zdHlsZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBD U1MgLS0tIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiJlZGFkZDhjM2NiYjA0MGJhZDM3NTUxZDdj NGEzYjkwMSI7fQ==