# Name: smd_faux_role v0.1 # Type: Admin side plugin # Switch user privs on the fly so you can see what other accounts see # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEzOiJzbWRfZmF1eF9yb2xlIjtzOjY6ImF1dGhvciI7czox MToiU3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS8iO3M6NzoidmVyc2lvbiI7czozOiIwLjEiO3M6MTE6ImRlc2NyaXB0aW9uIjtz OjY3OiJTd2l0Y2ggdXNlciBwcml2cyBvbiB0aGUgZmx5IHNvIHlvdSBjYW4gc2VlIHdoYXQg b3RoZXIgYWNjb3VudHMgc2VlIjtzOjQ6ImNvZGUiO3M6NDcyMToiaWYgKEB0eHBpbnRlcmZh Y2UgPT0gJ2FkbWluJykgew0KCWdsb2JhbCAkdHhwX3VzZXIsICRzbWRfZmF1eF9wdWJsaXNo X3VzZXIsICRzbWRfZmF1eF9wb3NpdGlvbiwgJHNtZF9wcml2czsNCg0KCS8vIFBVVCBZT1VS IFNVUEVSLVVTRVIgTE9HSU4gTkFNRShTKSBJTlNJREUgVEhFICcnIChDQVNFIFNFTlNJVElW RSkuDQoJLy8gQ09NTUEtU0VQQVJBVEUgVEhFIExJU1QgT0YgTkFNRVMuDQoJJHNtZF9mYXV4 X3B1Ymxpc2hfdXNlciA9ICcnOw0KDQoJLy8gRFJPUERPV04gTE9DQVRJT04uIFNFVCBUSElT IFRPOg0KCS8vICAqIDAgSUYgWU9VIFdBTlQgQU4gQURNSU4tPlNXSVRDSCBST0xFIFRBQiBX SVRIIFRIRSBEUk9QRE9XTiBJTiBJVC4NCgkvLyAgKiBBTlkgT1RIRVIgVkFMVUUoUykgU1BF Q0lGWSBXSEVSRSBZT1UgV0FOVCBUSEUgRFJPUERPV04gVE8gQVBQRUFSIElOIEEgRklYRUQg TE9DQVRJT04gT04gVEhFIFNDUkVFTg0KCS8vICAgIC0tPiBUSEUgVkFMVUUgSVMgVEhFIE5V TUJFUiBPRiBQSVhFTFMgRlJPTSBUSEUgTEVGVCAmIFRPUCBFREdFUywgZS5nLiAnODAwJyBv ciAnNzUwLDcyJy4NCgkkc21kX2ZhdXhfcG9zaXRpb24gPSAnMCc7DQoNCgkvLyBET04nVCBU T1VDSCBBTllUSElORyBCRUxPVyBUSElTIExJTkUhDQoJJHNtZF9wcml2cyA9IGFycmF5KA0K CQkxID0+IGdUeHQoJ3B1Ymxpc2hlcicpLA0KCQkyID0+IGdUeHQoJ21hbmFnaW5nX2VkaXRv cicpLA0KCQkzID0+IGdUeHQoJ2NvcHlfZWRpdG9yJyksDQoJCTQgPT4gZ1R4dCgnc3RhZmZf d3JpdGVyJyksDQoJCTUgPT4gZ1R4dCgnZnJlZWxhbmNlcicpLA0KCQk2ID0+IGdUeHQoJ2Rl c2lnbmVyJyksDQoJKTsNCg0KCWlmIChpbl9saXN0KCR0eHBfdXNlciwgJHNtZF9mYXV4X3B1 Ymxpc2hfdXNlcikpIHsNCgkJaWYgKCRzbWRfZmF1eF9wb3NpdGlvbikgew0KCQkJLy8gQWRk IHRoZSBkcm9wZG93biB0byB0aGUgdG9wIGJhcg0KCQkJcmVnaXN0ZXJfY2FsbGJhY2soJ3Nt ZF9mYXV4X2dvJywgJ2FkbWluX3NpZGUnLCAnaGVhZGVyJyk7DQoJCX0gZWxzZSB7DQoJCQkv LyBBZGQgdGhlIGludGVyZmFjZSB0byB0aGUgQWRtaW4gdGFiIHNpbmNlIHRoYXQncyB2aXNp YmxlIHRvIGFsbCB1c2Vycw0KCQkJYWRkX3ByaXZzKCdzbWRfZmF1eF9yb2xlJywgJzEsMiwz LDQsNSw2Jyk7DQoJCQlyZWdpc3Rlcl90YWIoJ2FkbWluJywgJ3NtZF9mYXV4X3JvbGUnLCBz bWRfZmF1eF9nVHh0KCd0YWJfbmFtZScpKTsNCgkJCXJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRf ZmF1eF9yb2xlJywgJ3NtZF9mYXV4X3JvbGUnKTsNCgkJfQ0KCQlyZWdpc3Rlcl9jYWxsYmFj aygnc21kX2ZhdXhfcGx1Z2luX29mZicsICdwbHVnaW5fbGlmZWN5Y2xlLnNtZF9mYXV4X3Jv bGUnLCAnZGlzYWJsZWQnKTsNCgkJcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9mYXV4X3BsdWdp bl9vZmYnLCAncGx1Z2luX2xpZmVjeWNsZS5zbWRfZmF1eF9yb2xlJywgJ2RlbGV0ZWQnKTsN Cgl9DQp9DQoNCi8vIFBsdWdpbiBqdW1wLW9mZiBwb2ludA0KZnVuY3Rpb24gc21kX2ZhdXhf cm9sZSgkZXZlbnQsICRzdGVwKSB7DQoJaWYoISRzdGVwIG9yICFpbl9hcnJheSgkc3RlcCwg YXJyYXkoDQoJCSdzbWRfZmF1eF9wcmVmcycsDQoJCSdzbWRfZmF1eF9zYXZlJywNCgkpKSkg ew0KCQlzbWRfZmF1eF9wcmVmcygpOw0KCX0gZWxzZSAkc3RlcCgpOw0KfQ0KDQovLyBBbGxv dyByb2xlIHRvIGJlIGFsdGVyZWQgdmlhIGRyb3Bkb3duIG9uIGl0cyBvd24gdGFiLi4uDQpm dW5jdGlvbiBzbWRfZmF1eF9wcmVmcygkbXNnPScnKSB7DQoJJG1zZyA9IChlbXB0eSgkbXNn KSkgPyBncHMoJ3NtZF9mYXV4X21zZycpIDogJG1zZzsNCg0KCXBhZ2V0b3Aoc21kX2ZhdXhf Z1R4dCgndGFiX25hbWUnKSwgJG1zZyk7DQoJZWNobyBzbWRfZmF1eF9kcm9wZG93bigpOw0K fQ0KDQovLyAuLi5vciBwb3NpdGlvbiB0aGUgZHJvcGRvd24gb24gdGhlIHRvcCByb3cNCmZ1 bmN0aW9uIHNtZF9mYXV4X2dvKCRldmVudCwgJHN0ZXAsICRkYXRhKSB7DQoJZ2xvYmFsICRz bWRfZmF1eF9wb3NpdGlvbjsNCg0KCXNtZF9mYXV4X3NhdmUoKTsNCgkkcG9zID0gZG9fbGlz dCgkc21kX2ZhdXhfcG9zaXRpb24pOw0KCSRsZWZ0ID0gKGlzc2V0KCRwb3NbMF0pICYmIGlz X251bWVyaWMoJHBvc1swXSkpID8gJHBvc1swXSA6IDA7DQoJJHRvcCA9IChpc3NldCgkcG9z WzFdKSAmJiBpc19udW1lcmljKCRwb3NbMV0pKSA/ICRwb3NbMV0gOiAwOw0KCXJldHVybiAn PGRpdiBpZD0ic21kX2ZhdXhfZ28iIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oicu JGxlZnQuJ3B4O3RvcDonLiR0b3AuJ3B4OyI+Jy5zbWRfZmF1eF9kcm9wZG93bigpLic8L2Rp dj4nLiRkYXRhOw0KfQ0KDQovLyBSZW5kZXIgdGhlIGRyb3Bkb3duDQpmdW5jdGlvbiBzbWRf ZmF1eF9kcm9wZG93bigpIHsNCglnbG9iYWwgJHR4cF91c2VyLCAkc21kX2ZhdXhfcHVibGlz aF91c2VyLCAkc21kX2ZhdXhfcG9zaXRpb24sICRzbWRfcHJpdnM7DQoNCgkkdXNlcmxpc3Qg PSBkb19saXN0KCRzbWRfZmF1eF9wdWJsaXNoX3VzZXIpOw0KCSRvdXQgPSAnJzsNCg0KCWZv cmVhY2ggKCR1c2VybGlzdCBhcyAkdGhlVXNlcikgew0KCQlpZiAoJHR4cF91c2VyID09ICR0 aGVVc2VyKSB7DQoJCQkkY3Vycl9wcml2cyA9IHNhZmVfZmllbGQoInByaXZzIiwgInR4cF91 c2VycyIsICJuYW1lID0gJyIuZG9TbGFzaCgkdGhlVXNlcikuIiciKTsNCgkJCSRvdXQgPSBm b3JtKA0KCQkJCSc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+Jy5zbWRfZmF1eF9n VHh0KCdzZXRfdXNlcicsIGFycmF5KCd7bmFtZX0nID0+ICR0aGVVc2VyKSkNCgkJCQkuIHNl bGVjdElucHV0KCdzbWRfZmF1eF9wcml2JywgJHNtZF9wcml2cywgJGN1cnJfcHJpdnMsICcn LCAxKQ0KCQkJCS4oKCRzbWRfZmF1eF9wb3NpdGlvbikgPyBlSW5wdXQoZ3BzKCdldmVudCcp KS5zSW5wdXQoZ3BzKCdzdGVwJykpIDogZUlucHV0KCdzbWRfZmF1eF9yb2xlJykuc0lucHV0 KCdzbWRfZmF1eF9zYXZlJykpDQoJCQkJLmhJbnB1dCgnc21kX2ZhdXhfdXNlcicsICR0aGVV c2VyKQ0KCQkJCS4gJzwvZGl2PicNCgkJCQkpOw0KCQl9DQoJfQ0KCXJldHVybiAkb3V0Ow0K fQ0KDQovLyBVcGRhdGUgdGhlIHVzZXIgcHJpdnMgaW4gdGhlIGRhdGFiYXNlIHdoZW4gdGhl IHNlbGVjdCBsaXN0IGlzIGFsdGVyZWQNCmZ1bmN0aW9uIHNtZF9mYXV4X3NhdmUoKSB7DQoJ Z2xvYmFsICRzbWRfcHJpdnMsICRzbWRfZmF1eF9wb3NpdGlvbjsNCg0KCSRwcml2ID0gZ3Bz KCdzbWRfZmF1eF9wcml2Jyk7DQoJJHVuYW1lID0gZG9TbGFzaChncHMoJ3NtZF9mYXV4X3Vz ZXInKSk7DQoJJG1zZyA9ICcnOw0KDQoJaWYgKCRwcml2ICYmICR1bmFtZSkgew0KCQlhc3Nl cnRfaW50KCRwcml2KTsNCgkJJGNoZWNrID0gc2FmZV9maWVsZCgnbmFtZScsICd0eHBfdXNl cnMnLCAibmFtZT0nJHVuYW1lJyIpOw0KDQoJCS8vIEFsdGVyIHRoZSBwcml2cyBvZiB0aGUg bm9taW5hdGVkIHN1cGVyLXVzZXINCgkJaWYgKCRjaGVjaykgew0KCQkJc2FmZV91cGRhdGUo J3R4cF91c2VycycsICdwcml2cz0nLmRvU2xhc2goJHByaXYpLCAibmFtZSA9ICciLiR1bmFt ZS4iJyIpOw0KCQkJJG1zZyA9IHNtZF9mYXV4X2dUeHQoJ25ld19yb2xlJywgYXJyYXkoJ3tu YW1lfScgPT4gJHVuYW1lLCAne3JvbGV9JyA9PiAkc21kX3ByaXZzWyRwcml2XSkpOw0KCQl9 IGVsc2Ugew0KCQkJJG1zZyA9IHNtZF9mYXV4X2dUeHQoJ2JhZF91c2VyJywgYXJyYXkoJ3tu YW1lfScgPT4gJHVuYW1lKSk7DQoJCX0NCg0KCQlpZiAoJHNtZF9mYXV4X3Bvc2l0aW9uKSB7 DQoJCQloZWFkZXIoIkxvY2F0aW9uOiAiLiRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSk7DQoJ CX0gZWxzZSB7DQoJCQkkYXJnc1snZXZlbnQnXSA9ICdzbWRfZmF1eF9yb2xlJzsNCgkJCSRh cmdzWydzdGVwJ10gPSAnc21kX2ZhdXhfcHJlZnMnOw0KCQkJJGFyZ3NbJ3NtZF9mYXV4X21z ZyddID0gJG1zZzsNCgkJCWhlYWRlcigiTG9jYXRpb246ICIuJF9TRVJWRVJbJ1JFUVVFU1Rf VVJJJ10uc3RyX3JlcGxhY2UoJyZhbXA7JywgJyYnLCBqb2luX3FzKCRhcmdzKSkpOw0KCQl9 DQoJfQ0KfQ0KDQovLyBSZXN0b3JlIHB1Ymxpc2hlciBwcml2cyBpZiBwbHVnaW4gaXMgZGVs ZXRlZC9kaXNhYmxlZA0KZnVuY3Rpb24gc21kX2ZhdXhfcGx1Z2luX29mZigkZXZlbnQsICRz dGVwKSB7DQoJZ2xvYmFsICRzbWRfZmF1eF9wdWJsaXNoX3VzZXI7DQoNCgkkdXNlcmxpc3Qg PSBkb19saXN0KCRzbWRfZmF1eF9wdWJsaXNoX3VzZXIpOw0KDQoJZm9yZWFjaCAoJHVzZXJs aXN0IGFzICR0aGVVc2VyKSB7DQoJCXNhZmVfdXBkYXRlKCd0eHBfdXNlcnMnLCAncHJpdnM9 MScsICJuYW1lID0gJyIuZG9TbGFzaCgkdGhlVXNlcikuIiciKTsNCgl9DQp9DQoNCi8vIFBs dWdpbi1zcGVjaWZpYyByZXBsYWNlbWVudCBzdHJpbmdzIC0gbG9jYWxpc2UgYXMgcmVxdWly ZWQNCmZ1bmN0aW9uIHNtZF9mYXV4X2dUeHQoJHdoYXQsICRhdHRzID0gYXJyYXkoKSkgew0K CSRsYW5nID0gYXJyYXkoDQoJCSdiYWRfdXNlcicgPT4gJ05vIHN1Y2ggdXNlcjoge25hbWV9 JywNCgkJJ25ld19yb2xlJyA9PiAnTmV3IHJvbGUgZm9yIHtuYW1lfSBpcyB7cm9sZX0nLA0K CQknc2V0X3VzZXInID0+ICdTZXQgdXNlciB7bmFtZX0gdG86ICcsDQoJCSd0YWJfbmFtZScg PT4gJ1N3aXRjaCByb2xlJywNCgkpOw0KCXJldHVybiBzdHJ0cigkbGFuZ1skd2hhdF0sICRh dHRzKTsNCn0iO3M6NDoidHlwZSI7czoxOiIzIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6NToi ZmxhZ3MiO3M6MToiMiI7czo0OiJoZWxwIjtzOjUyMTc6IjxkaXYgaWQ9InNtZF9oZWxwIj4K Cgk8aDEgaWQ9InRvcCI+c21kX2ZhdXhfcm9sZTwvaDE+CgoJPHA+QWx0ZXIgdXNlciBwcml2 cyBhdCBhbnkgdGltZSBzbyB5b3UgY2FuIGV4cGVyaWVuY2UgdGhlIGFkbWluIHNpZGUgYXMg b3RoZXIgdXNlcnMgc2VlIGl0LjwvcD4KCgk8aDIgaWQ9ImF1dGhvciI+QXV0aG9yPC9oMj4K Cgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29udGFjdCI+U3RlZiBEYXdz b248L2E+LiBGb3Igb3RoZXIgc29mdHdhcmUgYnkgbWUsIG9yIHRvIG1ha2UgYSBkb25hdGlv biwgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNvZnR3YXJl IHBhZ2U8L2E+LjwvcD4KCgk8aDIgaWQ9Imluc3RhbGwiPkluc3RhbGxhdGlvbiAvIFVuaW5z dGFsbGF0aW9uPC9oMj4KCgk8cCBjbGFzcz0iaW1wb3J0YW50Ij5SZXF1aXJlcyA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjIuMCs8L3A+CgoJPHA+RG93bmxvYWQgdGhlIHBs dWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdp bnMvMTE1OS9zbWRfZmF1eF9yb2xlIj50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgc29m dHdhcmUgcGFnZSBhYm92ZSwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFu ZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50 ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0zMzQ2MiI+Zm9ydW0gdGhyZWFkPC9h PiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndp c2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNpbXBs eSBkZWxldGUgaXQgZnJvbSB0aGUgQWRtaW4tJmd0O1BsdWdpbnMgdGFiLiBXaGVuZXZlciB5 b3UgZGVsZXRlIG9yIGRpc2FibGUgdGhlIHBsdWdpbiB0aGUgbm9taW5hdGVkIGFjY291bnRz IGFyZSBhbGwgYXV0b21hdGljYWxseSByZXN0b3JlZCB0byBQdWJsaXNoZXIuPC9wPgoKCTxo MiBpZD0idXNhZ2UiPlVzYWdlPC9oMj4KCgk8cD5Gb3Igc2VjdXJpdHkgcmVhc29ucyB5b3Ug bXVzdCBlZGl0IHRoZSBwbHVnaW4gY29kZSBiZWZvcmUgdXNpbmcgaXQuIFlvdSBjYW4gY3Vz dG9taXNlIHR3byBwYXJhbWV0ZXJzOjwvcD4KCgk8aDMgaWQ9InVzZXJzIj5Vc2VyczwvaDM+ CgoJPHA+QWx0ZXIgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHJlcHJlc2VudCB0aGUgdXNlciAo bG9naW4pIG5hbWUgb3IgbmFtZXMgb2YgeW91ciBtYWluIFB1Ymxpc2hlciBhY2NvdW50KHMp OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPgkkc21kX2Zh dXhfcHVibGlzaF91c2VyID0gJiMzOTsmIzM5OzsKPC9jb2RlPjwvcHJlPgoKCTxwPkZvciBl eGFtcGxlLCBpZiB5b3VyIG1haW4gcHVibGlzaGVyIGxvZ2luIHdhcyA8Y29kZT5GcmVkPC9j b2RlPiwgeW91IHdvdWxkIGNoYW5nZSB0aGF0IGxpbmUgdG8gcmVhZDo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4JJHNtZF9mYXV4X3B1Ymxpc2hfdXNl ciA9ICYjMzk7RnJlZCYjMzk7Owo8L2NvZGU+PC9wcmU+CgoJPHA+SWYgeW91IHdhbnRlZCB0 byBhbGxvdyB0d28gdXNlcnMgJiM4MjEyOyBGcmVkIGFuZCBEYXBobmUgJiM4MjEyOyB0byBh bHRlciB0aGVpciBwcml2cywgc3BlY2lmeSB0aGVtIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4JJHNtZF9mYXV4X3B1Ymxpc2hfdXNl ciA9ICYjMzk7RnJlZCwgRGFwaG5lJiMzOTs7CjwvY29kZT48L3ByZT4KCgk8cD5PbmNlIHRo YXQgaXMgZG9uZSwgc2F2ZSB0aGUgcGx1Z2luLiBBIG5ldyB0YWIgd2lsbCBhcHBlYXIgdW5k ZXIgPGVtPkFkbWluLSZndDtTd2l0Y2ggcm9sZTwvZW0+IHdoZW4geW91IGFyZSBsb2dnZWQg aW4gYXMgb25lIG9mIHRoZSBub21pbmF0ZWQgYWNjb3VudHMuIFVzZSB0aGUgZHJvcGRvd24g dG8gc2V0IHRoaXMgdXNlciYjODIxNztzIHByaXZzIGxldmVsLiBJdCBkb2VzIHRoaXMgZGly ZWN0bHkgYW5kIHBlcm1hbmVudGx5IGluIHRoZSBkYXRhYmFzZS48L3A+CgoJPHA+UGxlYXNl IG5vdGU6PC9wPgoKCTx1bD4KCQk8bGk+TG9naW4gbmFtZXMgYXJlIGNhc2Utc2Vuc2l0aXZl PC9saT4KCQk8bGk+UHVibGlzaGVyIHByaXZzIHdpbGwgYmUgcmVzdG9yZWQgdG8gPHN0cm9u Zz5hbGwgbm9taW5hdGVkIGFjY291bnRzPC9zdHJvbmc+IHdoZW4gdGhlIHBsdWdpbiBpcyBl aXRoZXIgZGlzYWJsZWQgb3IgZGVsZXRlZDwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0icG9zaXRp b24iPkRyb3Bkb3duIHBvc2l0aW9uPC9oMz4KCgk8cD5BbHRlciB0aGUgZm9sbG93aW5nIGxp bmUgdG8gZGV0ZXJtaW5lIHdoZXJlIHlvdSB3YW50IHRoZSBkcm9wZG93biB0byBhcHBlYXIg Zm9yIGFsbCBub21pbmF0ZWQgdXNlcnM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+CSRzbWRfZmF1eF9wb3NpdGlvbiA9ICYjMzk7MCYjMzk7Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+SWYgeW91IHNldCBpdCB0byAwLCB0aGUgZHJvcGRvd24gd2lsbCBh cHBlYXIgaW4gaXRzIG93biB0YWIgdW5kZXIgPGVtPkFkbWluLSZndDtTd2l0Y2ggcm9sZTwv ZW0+LiBJZiB5b3Ugc2V0IGl0IHRvIGFueXRoaW5nIGVsc2UsIHRoZSBwbHVnaW4gYXNzdW1l cyB5b3UgYXJlIGRlZmluaW5nIHRoZSB4IGFuZCB5IGNvLW9yZGluYXRlcyBvZiB0aGUgc2Ny ZWVuIGxvY2F0aW9uIGF0IHdoaWNoIHlvdSB3aXNoIHRoZSBkcm9wZG93biB0byBhcHBlYXIg aW4gdGhlIGludGVyZmFjZSAmIzgyMTI7IG9uIGFsbCB0YWJzLjwvcD4KCgk8cD5Gb3IgZXhh bXBsZSwgdG8gc2V0IHRoZSBkcm9wZG93biB0byBhcHBlYXIgb24gdGhlIHRvcCBiYXIgKGlu IHRoZSBjbGFzc2ljIHRoZW1lIGF0IGxlYXN0KSBhdCA3MDBweCBmcm9tIHRoZSBsZWZ0IGVk Z2Ugb2YgdGhlIHNjcmVlbjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4JJHNtZF9mYXV4X3Bvc2l0aW9uID0gJiMzOTs3MDAmIzM5OzsKPC9jb2RlPjwv cHJlPgoKCTxwPlRvIHNldCBpdCB0byBhcHBlYXIgYXQgNzUwIHBpeGVscyBmcm9tIHRoZSBs ZWZ0IGFuZCA3MiBwaXhlbHMgZnJvbSB0aGUgdG9wOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPgkkc21kX2ZhdXhfcG9zaXRpb24gPSAmIzM5Ozc1MCwg NzImIzM5OzsKPC9jb2RlPjwvcHJlPgoKCTxwPkFsdGhvdWdoIHRoZSBkcm9wZG93biBpcyBh YnNvbHV0ZWx5IHBvc2l0aW9uZWQgKHNvIGl0IHdvbiYjODIxNzt0IGludGVyZmVyZSB3aXRo IHlvdXIgYWRtaW4gc2lkZSBsYXlvdXQpIG5vIGd1YXJhbnRlZSBpcyBtYWRlIHRoYXQgaXQg d2lsbCBhcHBlYXIgY29ycmVjdGx5IGluIHRoZW1lcyBvdGhlciB0aGFuIGNsYXNzaWMgYW5k IHJlbW9yYSBiZWNhdXNlIGl0IGRlcGVuZHMgaG93IHRoZSBhdXRob3IgaGFzIGRlc2lnbmVk IHRoZSBoZWFkZXIuIEV4cGVyaW1lbnQgdG8gZmluZCB0aGUgYmVzdCBsb2NhdGlvbi4gWW91 IG1heSB1c2UgbmVnYXRpdmUgdmFsdWVzIGlmIHJlcXVpcmVkLjwvcD4KCjwvZGl2Pgo8IS0t ICoqKiBCRUdJTiBQTFVHSU4gQ1NTICoqKiAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K I3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBjb2RlIHsgZm9udC13 ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1v bm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVscCBjb2RlLmJs b2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBiYWNr Z3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4 IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21kX2hlbHAgYTp2 aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJv dHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBh OmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0 aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0 b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHggR2Vvcmdp YSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9o ZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHgg MCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNz bWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEycHggQXJpYWwsIHNhbnMt c2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFu c2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CiNzbWRfaGVs cCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNp bmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsg fQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojMzNkOyB9CiNz bWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5 OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBh ZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6 MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVsIHsgbGlzdC1z dHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLmltcG9ydGFudCB7Y29sb3I6cmVkO30K I3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAu YnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lO IENTUyAqKiogLS0+CiI7czozOiJtZDUiO3M6MzI6IjRjOGI1MGRjYTg3ODQzZTNiZjVkMDc0 ZTUwZDI2OGU5Ijt9