# Name: smd_lately v0.30 # Type: Client side plugin # Show recently viewed/popular articles # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEwOiJzbWRfbGF0ZWx5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjMwIjtzOjExOiJkZXNjcmlwdGlvbiI7czoz NzoiU2hvdyByZWNlbnRseSB2aWV3ZWQvcG9wdWxhciBhcnRpY2xlcyI7czo0OiJjb2RlIjtz OjEyOTcxOiJmdW5jdGlvbiBzbWRfbGF0ZWx5KCRhdHRzLCAkdGhpbmc9TlVMTCkgew0KCWds b2JhbCAkcHJlZnMsICR0aGlzYXJ0aWNsZSwgJHBlcm1saW5rX21vZGU7DQoNCgkvLyBDaGVj ayBsb2dnaW5nIGlzIG9uDQoJaWYgKCAkcHJlZnNbJ2xvZ2dpbmcnXSAhPSAnYWxsJykgew0K CQl0cmlnZ2VyX2Vycm9yKHNtZF9ydl9nVHh0KCdsb2dnaW5nX2VuYWJsZWQnKSwgRV9VU0VS X05PVElDRSk7DQoJCXJldHVybjsNCgl9DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkn YnknID0+ICdTTURfQ1VSUkVOVCcsIC8vIERlZmF1bHQgaXMgdGhlIElQIGFkZHJlc3Mgb2Yg dGhlIGN1cnJlbnQgdmlzaXRvci4gQ2FuIGJlIGVtcHR5IGZvciAnYWxsJyB2aXNpdG9ycw0K CQknc2VjdGlvbicgPT4gJycsDQoJCSdzdGF0dXMnID0+ICcnLA0KCQkndGltZScgPT4gJ3Bh c3QnLA0KCQknaW5jbHVkZScgPT4gJycsDQoJCSdleGNsdWRlJyA9PiAnJywNCgkJJ3dpdGhp bicgPT4gJycsDQoJCSdmcm9tJyA9PiAnJywNCgkJJ3RvJyA9PiAnJywNCgkJJ3Nob3dfY3Vy cmVudCcgPT4gMCwNCgkJJ2Zvcm0nID0+ICcnLA0KCQknbGltaXQnID0+IDEwLA0KCQknc29y dCcgPT4gJ3RpbWUgZGVzYycsDQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAn YnInLA0KCQknY2xhc3MnID0+IF9fRlVOQ1RJT05fXywNCgkJJ2FjdGl2ZV9jbGFzcycgPT4g J2FjdGl2ZScsDQoJCSdsYWJlbCcgPT4gJycsDQoJCSdsYWJlbHRhZycgPT4gJycsDQoJCSdk ZWxpbScgPT4gJywnLA0KCQkncGFyYW1fZGVsaW0nID0+ICc6JywNCgkJJ3NpbGVudCcgPT4g MCwNCgkJJ2NhY2hlX3RpbWUnID0+ICcwJywgLy8gaW4gc2Vjb25kcw0KCQknaGFzaHNpemUn ID0+ICc2OjUnLA0KCQknZGVidWcnID0+IDAsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIE1ha2Ug YSB1bmlxdWUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBpbnN0YW5jZSBzbyB0aGUgcmVzdWx0cyBj YW4gYmUgY2FjaGVkIGluIGEgZmlsZQ0KCSR1bmlxID0gJyc7DQoJJG1kNSA9IG1kNSgkYnku JHNvcnQuJHNlY3Rpb24uJHdpdGhpbi4kZnJvbS4kdG8uJGluY2x1ZGUuJGV4Y2x1ZGUpOw0K CWxpc3QoJGhhc2hMZW4sICRoYXNoU2tpcCkgPSBleHBsb2RlKCc6JywgJGhhc2hzaXplKTsN Cglmb3IgKCRpZHggPSAwLCAkY250ID0gMDsgJGNudCA8ICRoYXNoTGVuOyAkY250KyssICRp ZHggPSAoKCRpZHgrJGhhc2hTa2lwKSAlIHN0cmxlbigkbWQ1KSkpIHsNCgkJJHVuaXEgLj0g JG1kNVskaWR4XTsNCgl9DQoNCgkkdmFyX2xhc3Rtb2QgPSAnc21kX2xhdGVseV9sbW9kXycu JHVuaXE7DQoJJHZhcl9kYXRhID0gZmluZF90ZW1wX2RpcigpLkRTLidzbWRfbGF0ZWx5X2Rh dGFfJy4kdW5pcTsNCgkkbGFzdG1vZCA9IGdldF9wcmVmKCR2YXJfbGFzdG1vZCwgMCk7DQoJ JHJlYWRfY2FjaGUgPSAoKCRjYWNoZV90aW1lID4gMCkgJiYgKCh0aW1lKCkgLSAkbGFzdG1v ZCkgPCAkY2FjaGVfdGltZSkpID8gdHJ1ZSA6IGZhbHNlOw0KDQoJLy8gU2FuaXRpemUgc29y dCBvcHRpb25zDQoJJHNvcnRCaXRzID0gZG9fbGlzdCgkc29ydCwgIiAiKTsNCgkkc29ydEJp dHNbMF0gPSAoZW1wdHkoJHNvcnRCaXRzWzBdKSkgPyAndGltZScgOiAkc29ydEJpdHNbMF07 DQoJaWYgKCFpc3NldCgkc29ydEJpdHNbMV0pIHx8ICFpbl9hcnJheSgkc29ydEJpdHNbMV0s IGFycmF5KCdkZXNjJywgJ2FzYycpKSkgew0KCQkkc29ydEJpdHNbMV0gPSAnZGVzYyc7DQoJ CSRzb3J0ID0gam9pbigiICIsICRzb3J0Qml0cyk7DQoJfQ0KDQoJLy8gTWFrZSBhIG5vdGUg b2YgdGhlIGN1cnJlbnQgYXJ0aWNsZSBpZiBhcHByb3ByaWF0ZQ0KCWlmICgkcGVybWxpbmtf bW9kZT09J21lc3N5Jykgew0KCQkkbWF0Y2hfY29sID0gJ0lEJzsNCgkJJG1hdGNoX3RhY29s ID0gJ3RoaXNpZCc7DQoJCSRtYXRjaF9wcmVmaXggPSAnaWQ9JzsNCgl9IGVsc2Ugew0KCQkk bWF0Y2hfY29sID0gJG1hdGNoX3RhY29sID0gJ3VybF90aXRsZSc7DQoJCSRtYXRjaF9wcmVm aXggPSAnJzsNCgl9DQoJJGN1cnJfYXJ0ID0gKCR0aGlzYXJ0aWNsZSkgPyAkdGhpc2FydGlj bGVbJG1hdGNoX3RhY29sXSA6ICcnOw0KDQoJaWYgKCRyZWFkX2NhY2hlKSB7DQoJCSRycyA9 IHVuc2VyaWFsaXplKGZpbGVfZ2V0X2NvbnRlbnRzKCR2YXJfZGF0YSkpOw0KCX0gZWxzZSB7 DQoJCS8vIElQIGFkZHJlc3MgY2xhdXNlDQoJCSRpcCA9ICcnOw0KCQlpZiAoJGJ5ID09ICdT TURfQ1VSUkVOVCcpIHsNCgkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3JlbW90ZV9hZGRyJykp IHsNCgkJCQkkaXAgPSByZW1vdGVfYWRkcigpOw0KCQkJfSBlbHNlIHsNCgkJCQkkaXAgPSBz ZXJ2ZXJTZXQoJ1JFTU9URV9BRERSJyk7DQoJCQkJaWYgKCgkaXAgPT0gJzEyNy4wLjAuMScg fHwgJGlwID09IHNlcnZlclNldCgnU0VSVkVSX0FERFInKSkgJiYgc2VydmVyU2V0KCdIVFRQ X1hfRk9SV0FSREVEX0ZPUicpKSB7DQoJCQkJCSRpcHMgPSBleHBsb2RlKCcsICcsIHNlcnZl clNldCgnSFRUUF9YX0ZPUldBUkRFRF9GT1InKSk7DQoJCQkJCSRpcCA9ICRpcHNbMF07DQoJ CQkJfQ0KCQkJfQ0KCQkJaWYgKCRpcCkgew0KCQkJCSRpcCA9ICIgQU5EIGlwPSciLmRvU2xh c2goJGlwKS4iJyI7DQoJCQl9DQoJCX0gZWxzZSBpZiAoJGJ5ID09ICdTTURfQUxMJykgew0K CQkJJGJ5ID0gJyc7DQoJCX0NCg0KCQkvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgaW5jbHVkZSB0 aGUgY3VycmVudCBhcnRpY2xlDQoJCS8vIE5vdGUgdGhlIHJlZ2V4cCBpcyBhbmNob3JlZCB0 byB0aGUgZW5kIHdpdGggYSAkDQoJCSR0aGlzaWNsZSA9ICcnOw0KCQlpZiAoaXNzZXQoJHRo aXNhcnRpY2xlKSkgew0KCQkJaWYgKCEkc2hvd19jdXJyZW50KSB7DQoJCQkJJHVybHRpdGxl ID0gJHRoaXNhcnRpY2xlWyRtYXRjaF90YWNvbF07DQoJCQkJJHRoaXNpY2xlID0gKCR1cmx0 aXRsZSkgPyAiIEFORCBwYWdlIE5PVCBMSUtFICclJG1hdGNoX3ByZWZpeCR1cmx0aXRsZSci IDogJyc7DQoJCQl9DQoJCX0NCg0KCQkvLyBGaWx0ZXIgb3V0IGFydGljbGVfbGlzdCBwYWdl cyBhbmQgb3RoZXIgKHVuKWRlc2lyYWJsZXMNCgkJJHJ1bGVzID0gYXJyYXkoDQoJCQkicGFn ZSBOT1QgTElLRSAnLyciLCAvLyBHb29kYnllIGZyb250IHBhZ2UNCgkJCSJwYWdlIE5PVCBM SUtFICcnIiwNCgkJCSJwYWdlIE5PVCBMSUtFICclcT0lJyIsIC8vIEdvb2RieWUgc2VhcmNo ZXMNCgkJCSJwYWdlIE5PVCBMSUtFICclYz0lJyIsIC8vIEdvb2RieWUgY2F0IGxpc3RzDQoJ CQkicGFnZSBOT1QgTElLRSAnJXBnPSUnIiwgLy8gR29vZGJ5ZSBtdWx0aS1wYWdlIGxpc3Rz DQoJCQkicGFnZSBOT1QgTElLRSAnJWNhdGVnb3J5PSUnIiwNCgkJCSJwYWdlIE5PVCBMSUtF ICcvY2F0ZWdvcnkvJSciLA0KCQkJInBhZ2UgTk9UIExJS0UgJyVhdXRob3I9JSciLA0KCQkJ InBhZ2UgTk9UIExJS0UgJy9hdXRob3IvJSciLA0KCQkpOw0KDQoJCWlmICgkc2VjdGlvbikg ew0KCQkJJHNlY3Rpb24gPSBkb19saXN0KCRzZWN0aW9uLCAkZGVsaW0pOw0KCQkJJHN1YnJ1 bGUgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJHNlY3Rpb24gYXMgJHNlYykgew0KCQkJCWlm ICgkcGVybWxpbmtfbW9kZSA9PSAnbWVzc3knKSB7DQoJCQkJCSRzdWJydWxlW10gPSAicGFn ZSBMSUtFICclcz0kc2VjJSciOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRzdWJydWxlW10gPSAi cGFnZSBMSUtFICcvJHNlYyUnIEFORCBwYWdlIE5PVCBSRUdFWFAgJ14vJHNlYy8/JCciOw0K CQkJCX0NCgkJCX0NCgkJCSRzdWJydWxlID0gJygnIC4gam9pbignIE9SICcsICRzdWJydWxl KSAuICcpJzsNCgkJCSRydWxlc1tdID0gJHN1YnJ1bGU7DQoJCX0gZWxzZSB7DQoJCQkvLyBF eGNsdWRlIGFueSByb3dzIHRoYXQganVzdCBjb250YWluIHRoZSBzZWN0aW9uIChpLmUuIGFy dGljbGUgbGlzdCBwYWdlcykNCgkJCSRhbGxTZWNzID0gc2FmZV9jb2x1bW4oJ25hbWUnLCAn dHhwX3NlY3Rpb24nLCAiMT0xIiwgJGRlYnVnKTsNCgkJCSRydWxlc1tdID0gInBhZ2UgTk9U IFJFR0VYUCAnXi8oIiAuIGpvaW4oInwiLCAkYWxsU2VjcykgLiAiKS8/JCciOw0KCQl9DQoN CgkJLy8gUHJvY2VzcyBhbnkgbWFudWFsIGluY2x1ZGVzDQoJCWlmICgkaW5jbHVkZSkgew0K CQkJJGluY2x1ZGUgPSBkb19saXN0KCRpbmNsdWRlLCAkZGVsaW0pOw0KCQkJJHN1YnJ1bGVz ID0gYXJyYXkoKTsNCgkJCWZvcmVhY2ggKCRpbmNsdWRlIGFzICRpbmMpIHsNCgkJCQkkcmVn ZXggPSAkbGlrZSA9IGZhbHNlOw0KCQkJCSRjb2x1bW4gPSAnaXAnOw0KCQkJCSRwYXJ0cyA9 IGRvX2xpc3QoJGluYywgJHBhcmFtX2RlbGltKTsNCgkJCQkkbWF0Y2ggPSBhcnJheV9wb3Ao JHBhcnRzKTsNCgkJCQlmb3JlYWNoICgkcGFydHMgYXMgJHBhcnQpIHsNCgkJCQkJc3dpdGNo ICgkcGFydCkgew0KCQkJCQkJY2FzZSAiaXAiOg0KCQkJCQkJY2FzZSAiaG9zdCI6DQoJCQkJ CQljYXNlICJwYWdlIjoNCgkJCQkJCWNhc2UgInJlZmVyIjoNCgkJCQkJCQkkY29sdW1uID0g JHBhcnQ7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlICJsaWtlIjoNCgkJCQkJCQkkbGlr ZSA9IHRydWU7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQljYXNlICJyZWdleCI6DQoJCQkJCQkJ JHJlZ2V4ID0gdHJ1ZTsNCgkJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkc3Vi cnVsZXNbXSA9ICRyZWdleCA/ICIkY29sdW1uIFJFR0VYUCAnIi5kb1NsYXNoKHByZWdfcXVv dGUoJG1hdGNoKSkuIiciIDogKCgkbGlrZSkgPyAiJGNvbHVtbiBMSUtFICclIi5kb1NsYXNo KCRtYXRjaCkuIiUnIiA6ICIkY29sdW1uID0gJyIuZG9TbGFzaCgkbWF0Y2gpLiInIik7DQoJ CQl9DQoJCQkkcnVsZXNbXSA9ICcoJy5qb2luKCcgT1IgJywgJHN1YnJ1bGVzKS4nKSc7DQoJ CX0NCg0KCQkvLyBQcm9jZXNzIGFueSBtYW51YWwgZXhjbHVkZXMNCgkJaWYgKCRleGNsdWRl KSB7DQoJCQkkZXhjbHVkZSA9IGRvX2xpc3QoJGV4Y2x1ZGUsICRkZWxpbSk7DQoJCQlmb3Jl YWNoICgkZXhjbHVkZSBhcyAkZXhjKSB7DQoJCQkJJHJlZ2V4ID0gJGxpa2UgPSBmYWxzZTsN CgkJCQkkY29sdW1uID0gJ2lwJzsNCgkJCQkkcGFydHMgPSBkb19saXN0KCRleGMsICRwYXJh bV9kZWxpbSk7DQoJCQkJJG1hdGNoID0gYXJyYXlfcG9wKCRwYXJ0cyk7DQoJCQkJZm9yZWFj aCAoJHBhcnRzIGFzICRwYXJ0KSB7DQoJCQkJCXN3aXRjaCAoJHBhcnQpIHsNCgkJCQkJCWNh c2UgImlwIjoNCgkJCQkJCWNhc2UgImhvc3QiOg0KCQkJCQkJY2FzZSAicGFnZSI6DQoJCQkJ CQljYXNlICJyZWZlciI6DQoJCQkJCQkJJGNvbHVtbiA9ICRwYXJ0Ow0KCQkJCQkJCWJyZWFr Ow0KCQkJCQkJY2FzZSAibGlrZSI6DQoJCQkJCQkJJGxpa2UgPSB0cnVlOw0KCQkJCQkJCWJy ZWFrOw0KCQkJCQkJY2FzZSAicmVnZXgiOg0KCQkJCQkJCSRyZWdleCA9IHRydWU7DQoJCQkJ CQkJYnJlYWs7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHJ1bGVzW10gPSAkcmVnZXggPyAiJGNv bHVtbiBOT1QgUkVHRVhQICciLmRvU2xhc2gocHJlZ19xdW90ZSgkbWF0Y2gpKS4iJyIgOiAo KCRsaWtlKSA/ICIkY29sdW1uIE5PVCBMSUtFICclIi5kb1NsYXNoKCRtYXRjaCkuIiUnIiA6 ICIkY29sdW1uICE9ICciLmRvU2xhc2goJG1hdGNoKS4iJyIpOw0KCQkJfQ0KCQl9DQoNCgkJ Ly8gRmlsdGVyIGJ5IHRpbWUgZnJhbWUNCgkJJGZyb21zdGFtcCA9ICR0b3N0YW1wID0gJGRp ZmZzdGFtcCA9IDA7DQoJCSR0aGlzbW9udGggPSBkYXRlKCdGJywgbWt0aW1lKDAsMCwwLHN0 cmZ0aW1lKCclbScpLDEpKTsNCgkJJHRoaXN5ZWFyID0gc3RyZnRpbWUoJyVZJyk7DQoJCWlm ICgkZnJvbSkgew0KCQkJJGZyb20gPSBzdHJfcmVwbGFjZSgiP21vbnRoIiwgJHRoaXNtb250 aCwgJGZyb20pOw0KCQkJJGZyb20gPSBzdHJfcmVwbGFjZSgiP3llYXIiLCAkdGhpc3llYXIs ICRmcm9tKTsNCgkJCSRmcm9tc3RhbXAgPSBzdHJ0b3RpbWUoJGZyb20pOw0KCQkJaWYgKCRm cm9tc3RhbXApIHsNCgkJCQkkcnVsZXNbXSA9ICJVTklYX1RJTUVTVEFNUCh0aW1lKSA+ICRm cm9tc3RhbXAiOw0KCQkJfSBlbHNlIHsNCgkJCQlpZiAoISRzaWxlbnQpIHsNCgkJCQkJdHJp Z2dlcl9lcnJvcihzbWRfcnZfZ1R4dCgnaW52YWxpZF90cycsIGFycmF5KCJ7d2hlcmV9IiA9 PiAnZnJvbScpKSwgRV9VU0VSX05PVElDRSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWlmICgk dG8pIHsNCgkJCSR0byA9IHN0cl9yZXBsYWNlKCI/bW9udGgiLCAkdGhpc21vbnRoLCAkdG8p Ow0KCQkJJHRvID0gc3RyX3JlcGxhY2UoIj95ZWFyIiwgJHRoaXN5ZWFyLCAkdG8pOw0KCQkJ JHRvc3RhbXAgPSBzdHJ0b3RpbWUoJHRvKTsNCgkJCWlmICgkdG9zdGFtcCkgew0KCQkJCSRy dWxlc1tdID0gIlVOSVhfVElNRVNUQU1QKHRpbWUpIDwgJHRvc3RhbXAiOw0KCQkJfSBlbHNl IHsNCgkJCQlpZiAoISRzaWxlbnQpIHsNCgkJCQkJdHJpZ2dlcl9lcnJvcihzbWRfcnZfZ1R4 dCgnaW52YWxpZF90cycsIGFycmF5KCJ7d2hlcmV9IiA9PiAndG8nKSksIEVfVVNFUl9OT1RJ Q0UpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoJHdpdGhpbikgew0KCQkJaWYgKCR0b3N0 YW1wKSB7DQoJCQkJJHJlZnN0YW1wID0gJHRvc3RhbXA7DQoJCQkJJHJlZmRpciA9ICctJzsN CgkJCX0gZWxzZSBpZiAoJGZyb21zdGFtcCkgew0KCQkJCSRyZWZzdGFtcCA9ICRmcm9tc3Rh bXA7DQoJCQkJJHJlZmRpciA9ICcrJzsNCgkJCX0gZWxzZSB7DQoJCQkJJHJlZnN0YW1wID0g dGltZSgpOw0KCQkJCSRyZWZkaXIgPSAnLSc7DQoJCQl9DQoNCgkJCSRkaWZmc3RhbXAgPSBz dHJ0b3RpbWUoJHJlZmRpci4kd2l0aGluLCAkcmVmc3RhbXApOw0KCQkJaWYgKCRkaWZmc3Rh bXApIHsNCgkJCQkkcnVsZXNbXSA9ICJVTklYX1RJTUVTVEFNUCh0aW1lKSAiLigoJHJlZmRp ciA9PSAnLScpID8gJz4gJyA6ICc8ICcgKS4kZGlmZnN0YW1wOw0KCQkJfSBlbHNlIHsNCgkJ CQlpZiAoISRzaWxlbnQpIHsNCgkJCQkJdHJpZ2dlcl9lcnJvcihzbWRfcnZfZ1R4dCgnaW52 YWxpZF90cycsIGFycmF5KCJ7d2hlcmV9IiA9PiAnd2l0aGluJykpLCBFX1VTRVJfTk9USUNF KTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoJGRlYnVnKSB7DQoJCQllY2hvICIrKyBz bWRfbGF0ZWx5IFJVTEVTICsrIjsNCgkJCWRtcCgkcnVsZXMpOw0KCQkJaWYgKCRmcm9tIHx8 ICR0byB8fCAkd2l0aGluKSB7DQoJCQkJZWNobyAiKysgVElNRSBXSU5ET1cgKysiOw0KCQkJ CWlmICgkZnJvbSkgew0KCQkJCQlkbXAoIkZST006ICIgLiBkYXRlKCdZLU0tZCBIOmk6cycs ICRmcm9tc3RhbXApKTsNCgkJCQl9DQoJCQkJaWYgKCR3aXRoaW4pIHsNCgkJCQkJZG1wKCJX SVRISU46ICIgLiBkYXRlKCdZLU0tZCBIOmk6cycsICRkaWZmc3RhbXApLCAkd2l0aGluIC4g KCgkcmVmZGlyID09ICctJykgPyAiIEJFRk9SRSBUTyBEQVRFIiA6ICIgQUZURVIgRlJPTSBE QVRFIikpOw0KCQkJCX0NCgkJCQlpZiAoJHRvKSB7DQoJCQkJCWRtcCgiVE86ICIuIGRhdGUo J1ktTS1kIEg6aTpzJywgJHRvc3RhbXApKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlkbXAoIlRP OiAiLiBkYXRlKCdZLU0tZCBIOmk6cycsIHRpbWUoKSkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0K DQoJCSRydWxlcyA9ICcgQU5EICcgLiBqb2luKCcgQU5EICcsICRydWxlcyk7DQoNCgkJJHF1 ZXJ5ID0gJ1NFTEVDVCBjb3VudChwYWdlKSBhcyBwb3B1bGFyaXR5LCBwYWdlLCBNQVgodGlt ZSkgYXMgdGltZSBGUk9NICcuUEZYLid0eHBfbG9nIFdIRVJFIDE9MScuJGlwLiR0aGlzaWNs ZS4kcnVsZXMuJyBBTkQgc3RhdHVzID0gMjAwIEdST1VQIEJZIHBhZ2UgT1JERVIgQlkgJy4k c29ydDsNCgkJJHJzID0gZ2V0Um93cygkcXVlcnksICRkZWJ1Zyk7DQoNCgkJLy8gU3RvcmUg dGhlIGN1cnJlbnQgZG9jdW1lbnQgaW4gdGhlIGNhY2hlIGFuZCBkYXRlc3RhbXAgaXQNCgkJ aWYgKCRjYWNoZV90aW1lID4gMCkgew0KCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQlkbXAo JysrIERBVEEgQ0FDSEVEIHRvICcuJHZhcl9kYXRhLicgKysnKTsNCgkJCX0NCgkJCXNldF9w cmVmKCR2YXJfbGFzdG1vZCwgdGltZSgpLCAnc21kX2xhdGVseScsIFBSRUZfSElEREVOLCAn dGV4dF9pbnB1dCcpOw0KCQkJJGZoID0gZm9wZW4oJHZhcl9kYXRhLCAnd2InKTsNCgkJCWZ3 cml0ZSgkZmgsIHNlcmlhbGl6ZSgkcnMpKTsNCgkJCWZjbG9zZSgkZmgpOw0KCQl9DQoJfQ0K DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZG1wKCRycyk7DQoJfQ0KDQoJLy8gU2V0IHVwIGNv dW50ZXJzIGFuZCBjcmVhdGUgcXVlcnkgcGFyYW1zDQoJJGNvdW50ID0gMDsNCgkkb3V0ID0g YXJyYXkoKTsNCg0KCWlmICgkc3RhdHVzKSB7DQoJCSRzdGF0dXMgPSBkb19saXN0KCRzdGF0 dXMsICRkZWxpbSk7DQoJCSRzdGF0aSA9IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRzdGF0dXMg YXMgJHN0YXQpIHsNCgkJCWlmIChlbXB0eSgkc3RhdCkpIHsNCgkJCQljb250aW51ZTsNCgkJ CX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkpIHsNCgkJCQkkc3RhdGlbXSA9ICRzdGF0 Ow0KCQkJfSBlbHNlIHsNCgkJCQkkc3RhdGlbXSA9IGdldFN0YXR1c051bSgkc3RhdCk7DQoJ CQl9DQoJCX0NCgkJJHN0YXR1cyA9ICIgQU5EIFN0YXR1cyBJTiAoIi5qb2luKCcsJywgJHN0 YXRpKS4iKSI7DQoJfQ0KDQoJc3dpdGNoKCR0aW1lKSB7DQoJCWNhc2UgIiI6DQoJCWNhc2Ug ImFueSIgOiAkdGltZSA9ICIiOyBicmVhazsNCgkJY2FzZSAiZnV0dXJlIiA6ICR0aW1lID0g IiBBTkQgUG9zdGVkID4gTk9XKCkiOyBicmVhazsNCgkJZGVmYXVsdCA6ICR0aW1lID0gIiBB TkQgUG9zdGVkIDwgTk9XKCkiOyBicmVhazsNCgl9DQoNCgkvLyBQcm9jZXNzIHRoZSByZXN1 bHQgc2V0DQoJJGFydGljbGVzID0gYXJyYXkoKTsNCglpZiAoJHJzKSB7DQoJCS8vIExvb3Ag dW50aWwgbGltaXQgcmVhY2hlZA0KCQlmb3JlYWNoICgkcnMgYXMgJHJvdykgew0KCQkJaWYg KCRsaW1pdCA+IDAgJiYgaXNfbnVtZXJpYygkbGltaXQpICYmICRjb3VudCA9PSAkbGltaXQp IGJyZWFrOw0KCQkJaWYgKCRwZXJtbGlua19tb2RlID09ICdtZXNzeScpIHsNCgkJCQlwcmVn X21hdGNoKCdAaWQ9KFxkKylAJywgJHJvd1sncGFnZSddLCAkbWF0Y2hlcyk7DQoJCQkJJGRh X3VybCA9IGlzc2V0KCRtYXRjaGVzWzFdKSA/ICdpZCcuJG1hdGNoZXNbMV0gOiAgJyc7IC8v IEFkZCAnaWQnIHRvIHRyaWNrIGFycmF5X211bHRpc29ydCBpbnRvIGJlbGlldmluZyBpdHMg YW4gYXNzb2NpYXRpdmUgYXJyYXkNCgkJCX0gZWxzZSB7DQoJCQkJJGp1c3R1cmwgPSBleHBs b2RlKCc/Jywkcm93WydwYWdlJ10pOyAvLyBTdHJpcCBvZmYgYW55IHF1ZXJ5IHBhcmFtcw0K CQkJCSR1cmxwYXJ0ID0gZXhwbG9kZSgnLycsIHJ0cmltKCRqdXN0dXJsWzBdLCIvIikpOw0K CQkJCSRkYV91cmwgPSAkdXJscGFydFtjb3VudCgkdXJscGFydCktMV07DQoJCQl9DQoJCQlp ZiAoJGRhX3VybCkgew0KCQkJCWlmIChpc3NldCgkYXJ0aWNsZXNbJGRhX3VybF0pKSB7DQoJ CQkJCSRhcnRpY2xlc1skZGFfdXJsXVswXSArPSAkcm93Wydwb3B1bGFyaXR5J107DQoJCQkJ CWlmICgkcm93Wyd0aW1lJ10gPiAkYXJ0aWNsZXNbJGRhX3VybF1bMV0pIHsNCgkJCQkJCSRh cnRpY2xlc1skZGFfdXJsXVsxXSA9ICRyb3dbJ3RpbWUnXTsNCgkJCQkJfQ0KCQkJCX0gZWxz ZSB7DQoJCQkJCSRhcnRpY2xlc1skZGFfdXJsXSA9IGFycmF5KA0KCQkJCQkJJHJvd1sncG9w dWxhcml0eSddLA0KCQkJCQkJJHJvd1sndGltZSddLA0KCQkJCQkpOw0KCQkJCQkkY291bnQr KzsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAn KysgT1JJR0lOQUwgTE9HIExJU1QgKysnOw0KCQkJZG1wKCRhcnRpY2xlcyk7DQoJCX0NCg0K CQlpZiAoJGFydGljbGVzKSB7DQoJCQkvLyBJZiBzb3J0aW5nIGJ5IHBvcHVsYXJpdHksIHJl LW9yZGVyIHRoZSByZXN1bHRzIGluIGNhc2UgdGhleSd2ZSBiZWVuIHN1YnNlcXVlbnRseSBh Z2dyZWdhdGVkDQoJCQlpZigkc29ydEJpdHNbMF0gPT0gJ3BvcHVsYXJpdHknKSB7DQoJCQkJ Zm9yZWFjaCAoJGFydGljbGVzIGFzICRrZXkgPT4gJHJvdykgew0KCQkJCQkkYXBvcFska2V5 XSAgPSAkcm93WzBdOw0KCQkJCQkkYXRpbWVbJGtleV0gPSAkcm93WzFdOw0KCQkJCX0NCgkJ CQkkZGlyID0gKCRzb3J0Qml0c1sxXSA9PSAnYXNjJykgPyBTT1JUX0FTQyA6IFNPUlRfREVT QzsNCgkJCQlhcnJheV9tdWx0aXNvcnQoJGFwb3AsICRkaXIsICRhdGltZSwgJGRpciwgJGFy dGljbGVzKTsNCgkJCX0NCgkJCWlmICgkcGVybWxpbmtfbW9kZSA9PSAnbWVzc3knKSB7DQoJ CQkJLy8gU3RyaXAgb2ZmIHRoZSBmYWtlICdpZCcgaWRlbnRpZmllcnMgaW4gdGhlIGFycmF5 IGtleXMNCgkJCQlmb3JlYWNoICgkYXJ0aWNsZXMgYXMgJGtleSA9PiAkcm93KSB7DQoJCQkJ CSR0bXBbc3Vic3RyKCRrZXksIDIpXSA9ICRyb3c7DQoJCQkJfQ0KCQkJCSRhcnRpY2xlcyA9 ICR0bXA7DQoJCQl9DQoJCQlpZiAoJGRlYnVnID4gMikgew0KCQkJCWVjaG8gJysrIEZJTkFM IExPRyBMSVNUKysnOw0KCQkJCWRtcCgkYXJ0aWNsZXMpOw0KCQkJfQ0KCQkJJGRhcnRpY2xl cyA9IHNhZmVfcm93cygnKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLCB1 bml4X3RpbWVzdGFtcChFeHBpcmVzKSBhcyB1RXhwaXJlcywgdW5peF90aW1lc3RhbXAoTGFz dE1vZCkgYXMgdUxhc3RNb2QnLCAndGV4dHBhdHRlcm4nLCAiJG1hdGNoX2NvbCBJTiAoJyIg LiBqb2luKCInLCciLCBhcnJheV9rZXlzKCRhcnRpY2xlcykpIC4gIicpIi4kc3RhdHVzLiR0 aW1lLCAkZGVidWcpOw0KDQoJCQkvLyBSZWZhY3RvciB0aGUgYXJ0aWNsZSBsaXN0IGtleWVk IG9uIHVybF90aXRsZSBvciBJRCAoZGVwZW5kaW5nIG9uIHBlcm1saW5rX21vZGUpDQoJCQkk dXJsaWNsZXMgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGRhcnRpY2xlcyBhcyAkZGFydGlj bGUpIHsNCgkJCQkkdXJsaWNsZXNbJGRhcnRpY2xlWyRtYXRjaF9jb2xdXSA9ICRkYXJ0aWNs ZTsNCgkJCX0NCg0KCQkJLy8gSXRlcmF0ZSBvdmVyIHRoZSBfb3JpZ2luYWxfIGFydGljbGUg bGlzdCAoZnJvbSB0aGUgZmlyc3QgcXVlcnkpDQoJCQkvLyBhbmQgcGx1Y2sgb3V0IHRoZSBy ZWxldmFudCBhcnRpY2xlIGNvbnRlbnRzDQoJCQlmb3JlYWNoICgkYXJ0aWNsZXMgYXMgJHVy bFRpdGxlID0+ICRkYXJ0aWNsZSkgew0KCQkJCWlmIChpc3NldCgkdXJsaWNsZXNbJHVybFRp dGxlXSkpIHsNCgkJCQkJJHRoZVRpbWUgPSBzdHJ0b3RpbWUoJGRhcnRpY2xlWzFdKTsNCgkJ CQkJJGFrdGl2ID0gJHRoaXNhcnRpY2xlICYmICRzaG93X2N1cnJlbnQgJiYgJHVybFRpdGxl ID09ICRjdXJyX2FydDsNCgkJCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkJIntz bWRfbGF0ZWx5X2FjdGl2ZX0iID0+ICgoJGFrdGl2KSA/ICcgY2xhc3M9IicuJGFjdGl2ZV9j bGFzcy4nIicgOiAnJyksDQoJCQkJCQkie3NtZF9sYXRlbHlfYWN0aXZlY2xhc3N9IiA9PiAo KCRha3RpdikgPyAkYWN0aXZlX2NsYXNzIDogJycpLA0KCQkJCQkJIntzbWRfbGF0ZWx5X2Nv dW50fSIgPT4gJGRhcnRpY2xlWzBdLA0KCQkJCQkJIntzbWRfbGF0ZWx5X2Z1bGxkYXRlfSIg PT4gJGRhcnRpY2xlWzFdLA0KCQkJCQkJIntzbWRfbGF0ZWx5X2RhdGV9IiA9PiBzdHJmdGlt ZSgiJUYiLCAkdGhlVGltZSksDQoJCQkJCQkie3NtZF9sYXRlbHlfZGF0ZV95ZWFyfSIgPT4g c3RyZnRpbWUoIiVZIiwgJHRoZVRpbWUpLA0KCQkJCQkJIntzbWRfbGF0ZWx5X2RhdGVfbW9u dGh9IiA9PiBzdHJmdGltZSgiJW0iLCAkdGhlVGltZSksDQoJCQkJCQkie3NtZF9sYXRlbHlf ZGF0ZV9tb250aG5hbWV9IiA9PiBzdHJmdGltZSgiJUIiLCAkdGhlVGltZSksDQoJCQkJCQki e3NtZF9sYXRlbHlfZGF0ZV9kYXl9IiA9PiBzdHJmdGltZSgiJWQiLCAkdGhlVGltZSksDQoJ CQkJCQkie3NtZF9sYXRlbHlfZGF0ZV9kYXluYW1lfSIgPT4gc3RyZnRpbWUoIiVBIiwgJHRo ZVRpbWUpLA0KCQkJCQkJIntzbWRfbGF0ZWx5X3RpbWV9IiA9PiBzdHJmdGltZSgiJVQiLCAk dGhlVGltZSksDQoJCQkJCQkie3NtZF9sYXRlbHlfdGltZV9ob3VyfSIgPT4gc3RyZnRpbWUo IiVIIiwgJHRoZVRpbWUpLA0KCQkJCQkJIntzbWRfbGF0ZWx5X3RpbWVfbWludXRlfSIgPT4g c3RyZnRpbWUoIiVNIiwgJHRoZVRpbWUpLA0KCQkJCQkJIntzbWRfbGF0ZWx5X3RpbWVfc2Vj b25kfSIgPT4gc3RyZnRpbWUoIiVTIiwgJHRoZVRpbWUpLA0KCQkJCQkpOw0KCQkJCQlhcnRp Y2xlX3B1c2goKTsNCgkJCQkJcG9wdWxhdGVBcnRpY2xlRGF0YSgkdXJsaWNsZXNbJHVybFRp dGxlXSk7DQoJCQkJCSRvdXRbXSA9ICgkdGhpbmcpID8gcGFyc2Uoc3RydHIoJHRoaW5nLCAk cmVwbGFjZW1lbnRzKSkgOiAoKCRmb3JtKSA/IHBhcnNlX2Zvcm0oc3RydHIoJGZvcm0sICRy ZXBsYWNlbWVudHMpKSA6IGhyZWYoICR1cmxpY2xlc1skdXJsVGl0bGVdWydUaXRsZSddLCBw ZXJtbGlua3VybCgkdXJsaWNsZXNbJHVybFRpdGxlXSksICRyZXBsYWNlbWVudHNbJ3tzbWRf bGF0ZWx5X2FjdGl2ZX0nXSApKTsNCgkJCQkJYXJ0aWNsZV9wb3AoKTsNCgkJCQl9DQoJCQl9 DQoJCX0NCgl9DQoJcmV0dXJuICgkb3V0KSA/IGRvTGFiZWwoJGxhYmVsLCAkbGFiZWx0YWcp LmRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpIDogJyc7DQp9DQoNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gUGx1Z2luLXNwZWNpZmljIHJlcGxhY2Vt ZW50IHN0cmluZ3MgLSBsb2NhbGlzZSBhcyByZXF1aXJlZA0KZnVuY3Rpb24gc21kX3J2X2dU eHQoJHdoYXQsICRhdHRzID0gYXJyYXkoKSkgew0KCSRsYW5nID0gYXJyYXkoDQoJCSdpbnZh bGlkX3RzJyA9PiAnSW52YWxpZCBkYXRlL3RpbWUgaW5mbyBpbiAie3doZXJlfSIgYXR0cmli dXRlLicsDQoJCSdsb2dnaW5nX2VuYWJsZWQnID0+ICdMb2dnaW5nIG11c3QgYmUgc2V0IHRv ICJBbGwgaGl0cyIgaW4gQmFzaWMgUGVmcy4nLA0KCSk7DQoJcmV0dXJuIHN0cnRyKCRsYW5n WyR3aGF0XSwgJGF0dHMpOw0KfSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6 MToiNSI7czo1OiJmbGFncyI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6MTY4ODk6IjxkaXYgaWQ9 InNtZF9oZWxwIj4KCgk8aDE+c21kX2xhdGVseTwvaDE+CgoJPHA+TGlzdCB0aGUgbW9zdCBy ZWNlbnQgYXJ0aWNsZXMgdmlld2VkIGJ5IHRoZSBjdXJyZW50IHZpc2l0b3Igb3IsIGFsdGVy bmF0aXZlbHksIGFsbCB2aXNpdG9ycy4gQ2FuIGFsc28gb3JkZXIgYnkgcG9wdWxhcml0eSAo bW9zdCB2aWV3ZWQpLjwvcD4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJ PHVsPgoJCTxsaT5MaXN0IHJlY2VudGx5IHZpZXdlZCBhcnRpY2xlczogdXNlZnVsIG9uIHBy b2R1Y3QgcGFnZXMgb3IgaW4gYSBzaG9wcGluZyBjYXJ0PC9saT4KCQk8bGk+U2hvdyBhIGxp c3Qgb2YgdGhlIG1vc3QgcG9wdWxhciBhcnRpY2xlczwvbGk+CgkJPGxpPkxpbWl0IGVpdGhl ciBsaXN0IGJ5IHNlY3Rpb24gb3IgYXJiaXRyYXJ5IHZhbHVlIChpcCwgaG9zdCwgcGFnZSwg cmVmZXJlcikgaWYgeW91IHdpc2g8L2xpPgoJCTxsaT5Vc2VzIHRoZSB2aXNpdG9yIGxvZ3M8 L2xpPgoJCTxsaT5BdXRvbWF0aWNhbGx5IGZpbHRlcnMgb3V0IGFydGljbGUgbGlzdCBwYWdl cywgY2F0ZWdvcnksIGF1dGhvciBvciBzZWFyY2ggdmlzaXRzPC9saT4KCTwvdWw+CgoJPGgy IGlkPSJhdXRob3IiPkF1dGhvciAvIGNyZWRpdHM8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6 Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT4uPC9wPgoKCTxoMiBp ZD0iaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwIGNs YXNzPSJyZXF1aXJlZCI+UmVxdWlyZXMgTG9nZ2luZyB0byBiZSBzZXQgdG8gPGVtPkFsbCBo aXRzPC9lbT4gKHdpbGwgaXNzdWUgYSB3YXJuaW5nIGlmIG5vdCk8L3A+CgoJPHA+RG93bmxv YWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4u b3JnL3BsdWdpbnMvMTExMC9zbWRfbGF0ZWx5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0 aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9h PiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bh bj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBs dWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20v dmlld3RvcGljLnBocD9pZD0zMTM0MSI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZv IG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdp bi48L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBzaW1wbHkgZGVsZXRlIGZyb20gdGhlIEFkbWlu IC0mZ3Q7IFBsdWdpbnMgcGFnZS48L3A+CgoJPGgyIGlkPSJucCI+PGNvZGU+Jmx0O3R4cDpz bWRfbGF0ZWx5Jmd0OzwvY29kZT48L2gyPgoKCTxwPlBsYWNlIHRoaXMgdGFnIGFueXdoZXJl IHlvdSB3aXNoIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHJlY2VudGx5IHZpZXdlZCBhcnRpY2xl cy4gVGhlIHRhZyBtYXkgYmUgdXNlZCBhcyBhIHNpbmdsZSB0YWcgKHdpdGggYW4gb3B0aW9u YWwgZm9ybSkgb3IgYXMgYSBjb250YWluZXIuIEluc2lkZSB0aGUgZm9ybS9jb250YWluZXIg eW91IGNhbiB1c2UgYW55IHN0YW5kYXJkIGFydGljbGUgdGFncyAmIzgyMTI7IDxjb2RlPiZs dDt0eHA6dGl0bGUgLyZndDs8L2NvZGU+LCA8Y29kZT4mbHQ7dHhwOmV4Y2VycHQgLyZndDs8 L2NvZGU+LCA8Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0OzwvY29kZT4sIGV0YyAmIzgyMTI7 IHRvIGZvcm1hdCB0aGUgbGlzdCBob3dldmVyIHlvdSBsaWtlLiBXaXRob3V0IGVpdGhlciBh IGZvcm0gb3IgYSBjb250YWluZXIsIHRoZSBwbHVnaW4gZGlzcGxheXMgYSBoeXBlcmxpbmtl ZCB0aXRsZSB0byB0aGUgYXJ0aWNsZS48L3A+CgoJPHA+VGhlIGZvbGxvd2luZyBhdHRyaWJ1 dGVzIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgcGx1Z2luJiM4MjE3O3Mgb3V0cHV0Ojwv cD4KCgk8aDMgY2xhc3M9ImF0dHMiPkF0dHJpYnV0ZXM8L2gzPgoKCTxoND5Mb2cgZmlsdGVy aW5nIGFuZCBzb3J0IG9yZGVyIGF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmJ5PC9zcGFuPiA6IHVzZSA8Y29kZT5ieT0mcXVvdDsmcXVvdDs8L2Nv ZGU+IG9yIDxjb2RlPmJ5PSZxdW90O1NNRF9BTEwmcXVvdDs8L2NvZGU+IHRvIHZpZXcgdGhl IG1vc3QgcmVjZW50IGFydGljbGVzIGJ5IGFsbCBzaXRlIHZpc2l0b3JzLiBCeSBkZWZhdWx0 IChpLmUuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgb21pdHRlZCkgdGhlIHBsdWdpbiBvbmx5IHNo b3dzIHRoZSByZWNlbnQgYXJ0aWNsZXMgdmlld2VkIGJ5IHRoZSBjdXJyZW50IHZpc2l0b3I8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiBjaG9vc2Ug dG8gc2hvdyBhcnRpY2xlcyBvbmx5IGZyb20gdGhpcyBsaXN0IG9mIHNlY3Rpb25zLiBEZWZh dWx0OiB1bnNldCAoaS5lLiBmcm9tIGFsbCBzZWN0aW9ucykuIDxzcGFuIGNsYXNzPSJyZXF1 aXJlZCI+Tm90ZSB0aGF0IHlvdSBtdXN0IGJlIHVzaW5nIGVpdGhlciBtZXNzeSBtb2RlIG9y IGEgcGVybWxpbmsgbW9kZSB3aXRoIDxjb2RlPi9zZWN0aW9uPC9jb2RlPiBpbiBpdCB0byBm aWx0ZXIgYnkgc2VjdGlvbjwvc3Bhbj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ c2hvd19jdXJyZW50PC9zcGFuPiA6IERpc3BsYXkgdGhlIGFydGljbGUgYmVpbmcgdmlld2Vk IGluIHRoZSBsaXN0OiAxPVllczsgMD1Oby4gSWdub3JlZCBpZiBpbiBhbiBhcnRpY2xlX2xp c3QgcGFnZS4gRGVmYXVsdDogMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pbmNs dWRlPC9zcGFuPiA6IGVuc3VyZSB0aGF0IGxvZyBmaWxlIGVudHJpZXMgdGhhdCBtYXRjaCB0 aGlzIHNldCBvZiBjcml0ZXJpYSBhcmUgaW5jbHVkZWQgaW4gdGhlIGxpc3QuIFRoaXMgYXR0 cmlidXRlIHRha2VzIHVwIHRvIDMgcGFyYW1ldGVycywgc2VwYXJhdGVkIGJ5IDxjb2RlPnBh cmFtX2RlbGltPC9jb2RlPiAoZGVmYXVsdCBpcyB0aGUgY29sb24pLgoJPHVsPgoJCTxsaT5G aXJzdCBpcyB0aGUgbmFtZSBvZiBhIGZpZWxkIHRvIG1hdGNoIGFnYWluc3QuIENob29zZSBm cm9tIDxjb2RlPmlwPC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5ob3N0PC9jb2RlPiwg PGNvZGU+cGFnZTwvY29kZT4gb3IgPGNvZGU+cmVmZXI8L2NvZGU+PC9saT4KCQk8bGk+U2Vj b25kIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBt YXRjaCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwgd2lsZCBvciBhbiBleGFjdCBtYXRjaC4g VXNlIDxjb2RlPnJlZ2V4PC9jb2RlPiBpZiB5b3Ugd2lzaCB0aGlzIG1hdGNoIHRvIGJlIGNv bnNpZGVyZWQgYXMgYSByZWd1bGFyIGV4cHJlc3Npb24sIHNwZWNpZnkgPGNvZGU+bGlrZTwv Y29kZT4gaWYgeW91IHdhbnQgdG8gY2hlY2sgaWYgdGhlIHRleHQgaXMgYSBzaW1wbGUgJiM4 MjE2O3dpbGQmIzgyMTc7IG1hdGNoIChpdCYjODIxNztzIHNpbWlsYXIgdG8sIGJ1dCBxdWlj a2VyIHRoYW4sIGEgcmVnZXgpLCBvciBvbWl0IHRoZSBwYXJhbWV0ZXIgZW50aXJlbHkgaWYg eW91IHdhbnQgYW4gJiM4MjE2O2V4YWN0IG1hdGNoJiM4MjE3OyB0byBiZSBjb25zaWRlcmVk PC9saT4KCQk8bGk+RmluYWxseSwgc3BlY2lmeSB0aGUgdGV4dCB5b3Ugd2FudCB0byBtYXRj aCB3aXRoIHRoYXQgZmllbGQuIEZvciBleGFtcGxlLCA8Y29kZT5pbmNsdWRlPSZxdW90O2hv c3Q6bGlrZTp3d3cuZG9tYWluLmNvbSZxdW90OzwvY29kZT4gd291bGQgb25seSBpbmNsdWRl IHJlc3VsdHMgdGhhdCBoYWQgPGNvZGU+d3d3LmRvbWFpbi5jb208L2NvZGU+IHNvbWV3aGVy ZSBpbiB0aGVpciBob3N0IG5hbWUuIFVzaW5nIDxjb2RlPmluY2x1ZGU9JnF1b3Q7MTkyLjE2 OC4yLjIwMCZxdW90OzwvY29kZT4gd291bGQgc2hvdyBwYWdlcyBmcm9tIGFueSBpbnRlcm5h bCBtZWRkbGluZyB5b3UgbWF5IGhhdmUgZG9uZSBvbiB5b3VyIGxvY2FsIDxzcGFuIGNsYXNz PSJjYXBzIj5YQU1QUDwvc3Bhbj4gc2VydmVyLiBOb3RlIHRoYXQgaWYgeW91IG9taXQgcGFy YW1ldGVycyAxIGFuZCAyLCB0aGUgcGx1Z2luIHVzZXMgdGhlIGRlZmF1bHRzPC9saT4KCTwv dWw+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV4Y2x1ZGU8L3NwYW4+IDogZW5z dXJlIHRoYXQgbG9nIGZpbGUgZW50cmllcyB0aGF0IG1hdGNoIHRoaXMgc2V0IG9mIGNyaXRl cmlhIGFyZSA8c3Ryb25nPm5vdDwvc3Ryb25nPiBpbmNsdWRlZCBpbiB0aGUgbGlzdC4gVXNl IHRoaXMgaW4gdGhlIHNhbWUgbWFubmVyIGFzIDxjb2RlPmluY2x1ZGU8L2NvZGU+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZyb208L3NwYW4+IDogZGF0ZSAvIHRpbWUgc3Rh bXAgKHdyaXR0ZW4gaW4gRW5nbGlzaCkgb2YgdGhlIDxlbT5lYXJsaWVzdDwvZW0+IGRhdGUg dG8gY29uc2lkZXIgaW4gdGhlIGxvZ3MuIFlvdSBtYXkgc3BlY2lmeSA8Y29kZT4/bW9udGg8 L2NvZGU+IGFuZC9vciA8Y29kZT4/eWVhcjwvY29kZT4gdG8gaGF2ZSB0aGUgcGx1Z2luIHJl cGxhY2UgaXQgd2l0aCB0aGUgY3VycmVudCBtb250aC95ZWFyLiBEZWZhdWx0OiB1bnNldDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50bzwvc3Bhbj4gOiBkYXRlIC8gdGltZSBz dGFtcCAod3JpdHRlbiBpbiBFbmdsaXNoKSBvZiB0aGUgPGVtPm1vc3QgcmVjZW50PC9lbT4g ZGF0ZSB0byBjb25zaWRlciBpbiB0aGUgbG9ncy4gWW91IG1heSBzcGVjaWZ5IDxjb2RlPj9t b250aDwvY29kZT4gYW5kL29yIDxjb2RlPj95ZWFyPC9jb2RlPiB0byBoYXZlIHRoZSBwbHVn aW4gcmVwbGFjZSBpdCB3aXRoIHRoZSBjdXJyZW50IG1vbnRoL3llYXIuIERlZmF1bHQ6IGN1 cnJlbnQgdGltZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj53aXRoaW48L3NwYW4+ IDogZGF0ZSBvZmZzZXQgKHdyaXR0ZW4gaW4gRW5nbGlzaCkgd2hpY2ggc3BlY2lmaWVzIGEg dGltZSB3aW5kb3cgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLiBGb3IgZXhhbXBsZSA8 Y29kZT53aXRoaW49JnF1b3Q7MzYgaG91cnMmcXVvdDs8L2NvZGU+IHdvdWxkIHNob3cgcmVz dWx0cyBmcm9tIHRoZSBsYXN0IDM2IGhvdXJzLiBJZiB5b3Ugc3BlY2lmeSBhIDxjb2RlPnRv PC9jb2RlPiBkYXRlLCB0aGUgdmFsdWUgb2YgPGNvZGU+d2l0aGluPC9jb2RlPiBpcyBzdWJ0 cmFjdGVkIGZyb20gaXQuIElmIHlvdSBzcGVjaWZ5IGEgPGNvZGU+ZnJvbTwvY29kZT4gZGF0 ZSwgdGhlIHZhbHVlIG9mIDxjb2RlPndpdGhpbjwvY29kZT4gaXMgPGVtPmFkZGVkPC9lbT4g dG8gaXQuIElmIHlvdSBzcGVjaWZ5IGJvdGggPGNvZGU+ZnJvbTwvY29kZT4gYW5kIDxjb2Rl PnRvPC9jb2RlPiwgdGhlIG9mZnNldCBpcyBjYWxjdWxhdGVkIHJlbGF0aXZlIHRvIHRoZSA8 Y29kZT50bzwvY29kZT4gYXR0cmlidXRlLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5zb3J0PC9zcGFuPiA6IG9yZGVyIHRoZSBsaXN0IGJ5IGVpdGhl ciA8Y29kZT50aW1lPC9jb2RlPiwgb3IgPGNvZGU+cG9wdWxhcml0eTwvY29kZT4uIEFkZCA8 Y29kZT5hc2M8L2NvZGU+IG9yIDxjb2RlPmRlc2M8L2NvZGU+IHRvIGNob29zZSBhc2NlbmRp bmcgb3IgZGVzY2VuZGluZyBzb3J0IG9yZGVyLiBEZWZhdWx0OiA8Y29kZT50aW1lIGRlc2M8 L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbWl0PC9zcGFuPiA6IHNo b3cgdGhpcyBtYW55IGl0ZW1zIGluIHRoZSBsaXN0LiAwID0gdW5saW1pdGVkLiBEZWZhdWx0 OiAxMDwvbGk+Cgk8L3VsPgoKCTxoND5BcnRpY2xlIGZpbHRlciBhdHRyaWJ1dGVzPC9oND4K Cgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3NwYW4+IDogT25seSBh cnRpY2xlcyB3aXRoIG9uZSBvZiB0aGVzZSBsaXN0ZWQgc3RhdHVzIHZhbHVlcyBhcmUgZGlz cGxheWVkIGluIHRoZSBsaXN0LiBEZWZhdWx0OiA0ICg8Y29kZT5saXZlPC9jb2RlPik8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGltZTwvc3Bhbj4gOiBJZiBhbiBhcnRpY2xl IGluIHRoZSBsb2cgaGFzIGl0cyBwb3N0ZWQgdGltZXN0YW1wIGluIHRoZSB0aW1lIHBlcmlv ZCBpbmRpY2F0ZWQgaW4gdGhpcyBhdHRyaWJ1dGUsIGl0IHdpbGwgYmUgZGlzcGxheWVkLiBD aG9vc2UgZnJvbSA8Y29kZT5hbnk8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+IG9yIDxj b2RlPnBhc3Q8L2NvZGU+ICh0aGUgZGVmYXVsdCkuIExlYXZpbmcgdGhpcyBhdCBpdHMgZGVm YXVsdCBwcmV2ZW50cyBhbnkgZnV0dXJlLWRhdGVkIGFydGljbGVzIHRoYXQgeW91IG1heSBi ZSBwcmV2aWV3aW5nIGZyb20gc2hvd2luZyB1cCBpbiB0aGUgbGlzdDwvbGk+Cgk8L3VsPgoK CTxoND5EaXNwbGF5IGF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnLCB3aXRob3V0IGl0cyBi cmFja2V0cywgdG8gd3JhcCB0aGUgbGlzdCB3aXRoLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBseSB0byB0aGUgd3JhcHRhZy4g RGVmYXVsdDogPGNvZGU+c21kX2xhdGVseTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+YWN0aXZlX2NsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIHNldCBhcyB0aGUgYWN0aXZlIGNsYXNzIHdoZW4g PGNvZGU+c2hvd19jdXJyZW50PSZxdW90OzEmcXVvdDs8L2NvZGU+IGlzIHVzZWQuIERlZmF1 bHQ6IDxjb2RlPmFjdGl2ZTwvY29kZT4uIFNlZSA8YSBocmVmPSIjcmVwcyI+cmVwbGFjZW1l bnQgdmFyaWFibGVzPC9hPiBmb3IgZGV0YWlscyBvbiBob3cgdG8gYWN0dWFsbHkgaW5zZXJ0 IHRoaXMgaW50byB5b3VyIG1hcmt1cDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5i cmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcsIHdpdGhvdXQgaXRzIGJyYWNrZXRzLCB0 byB3cmFwIGVhY2ggaXRlbSB3aXRoLiBEZWZhdWx0OiA8Y29kZT5icjwvY29kZT48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGFiZWw8L3NwYW4+IDogdGhlIGxhYmVsIHRleHQg dG8gYWRkIHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxhYmVsdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRh Zywgd2l0aG91dCBpdHMgYnJhY2tldHMsIHRvIHdyYXAgdGhlIGxhYmVsIHdpdGguIERlZmF1 bHQ6IHVuc2V0PC9saT4KCTwvdWw+CgoJPGg0PlBsdWdpbiBjb25maWd1cmF0aW9uIGF0dHJp YnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZvcm08L3NwYW4+ IDogaWYgeW91IHByZWZlciB0byB1c2UgYSBmb3JtIGluc3RlYWQgb2YgdGhlIGNvbnRhaW5l ciB0byBob2xkIHlvdXIgbWFya3VwIGFuZCB0YWdzLCBzcGVjaWZ5IGl0IGhlcmUuIERlZmF1 bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRlbGltPC9zcGFuPiA6 IHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gaXRlbXMgaW4gYXR0cmlidXRlIGxpc3Rz ICg8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+aW5jbHVkZTwvY29kZT4sIDxjb2RlPmV4 Y2x1ZGU8L2NvZGU+LCA8Y29kZT5zdGF0dXM8L2NvZGU+KS4gRGVmYXVsdDogY29tbWE8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFyYW1fZGVsaW08L3NwYW4+IDogdGhlIGRl bGltaXRlciB0byB1c2UgYmV0d2VlbiBwYXJhbWV0ZXJzIGluc2lkZSBhbiBhdHRyaWJ1dGUg KDxjb2RlPmluY2x1ZGU8L2NvZGU+LCA8Y29kZT5leGNsdWRlPC9jb2RlPikuIERlZmF1bHQ6 IGNvbG9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNhY2hlX3RpbWU8L3NwYW4+ IDogaWYgc2V0LCB0aGUgcmVzdWx0cyBhcmUgY2FjaGVkIGluIGEgdGVtcG9yYXJ5IGZpbGUg Zm9yIHRoZSBkZXNpZ25hdGVkIG51bWJlciBvZiBzZWNvbmRzLiBTdWJzZXF1ZW50IGNhbGxz IHRvIHNtZF9sYXRlbHkgKGUuZy4gcmVmcmVzaGluZyB0aGUgcGFnZSkgd2lsbCByZWFkIHRo ZSBjYWNoZWQgaW5mb3JtYXRpb24gaW5zdGVhZCBvZiB0cmF3bGluZyB0aGUgbG9ncywgdGh1 cyBjdXR0aW5nIGRvd24gb24gc2VydmVyIGxvYWQuIEFmdGVyIDxjb2RlPmNhY2hlX3RpbWU8 L2NvZGU+IHNlY29uZHMgaGF2ZSBlbGFwc2VkLCB0aGUgbmV4dCBwYWdlIHJlZnJlc2ggd2ls bCBjYXVzZSB0aGUgaW5mb3JtYXRpb24gdG8gYmUgcmVjYWxjdWxhdGVkLiBOb3RlIHRoYXQg dGhlIGZpbGUgbmFtZSBvZiB0aGUgY2FjaGVkIGRhdGEgaXMgb2YgdGhlIGZvcm0gPGNvZGU+ c21kX2xhdGVseV9kYXRhX0FCQ0RFRjwvY29kZT4gd2hlcmUgPHNwYW4gY2xhc3M9ImNhcHMi PkFCQ0RFRjwvc3Bhbj4gaXMgYSB1bmlxdWUgc3RyaW5nIHRoYXQgYXBwbGllcyB0byB0aGlz IHBhcnRpY3VsYXIgc21kX2xhdGVseSB0YWcuIElmIHlvdSBhbHRlciB0aGUgYXR0cmlidXRl cyB0aGVyZSBpcyBhIGdvb2QgY2hhbmNlIGl0IHdpbGwgY3JlYXRlIGEgbmV3IHRlbXBvcmFy eSBmaWxlIGFuZCB0aGUgcGx1Z2luIGRvZXMgbm90IGNsZWFuIHVwIGFmdGVyIGl0c2VsZi4g Rm9yIHRoaXMgcmVhc29uIGl0JiM4MjE3O3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gcGxh eSB3aXRoIHRoZSBwbHVnaW4gYW5kIHNldCB5b3VyIGF0dHJpYnV0ZXMgdXAgYmVmb3JlIHNl dHRpbmcgPGNvZGU+Y2FjaGVfdGltZTwvY29kZT48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9 ImF0dHMiIGlkPSJyZXBzIj5SZXBsYWNlbWVudCB2YXJpYWJsZXM8L2gzPgoKCTxwPkluIGFk ZGl0aW9uIHRvIHJlZ3VsYXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gYXJ0aWNs ZSB0YWdzLCB5b3UgbWF5IGVtcGxveSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb2RlcyBpbiB5 b3VyIGZvcm0vY29udGFpbmVyIHRvIGRpc3BsYXkgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWU6 PC9wPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5X2FjdGl2 ZWNsYXNzfTwvc3Bhbj4gOiB0aGUgcmF3IGNsYXNzbmFtZSB5b3Ugc3BlY2lmaWVkIGluIHlv dXIgPGNvZGU+YWN0aXZlX2NsYXNzPC9jb2RlPiBhdHRyaWJ1dGU6IG9ubHkgc2V0IGlmIGN1 cnJlbnQgYXJ0aWNsZSBtYXRjaGVzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntz bWRfbGF0ZWx5X2FjdGl2ZX08L3NwYW4+IDogYSBmdWxsIDxjb2RlPiBjbGFzcz0mcXVvdDtj bGFzc19uYW1lJnF1b3Q7PC9jb2RlPiBzdHJpbmc6IG9ubHkgc2V0IGlmIGN1cnJlbnQgYXJ0 aWNsZSBtYXRjaGVzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5 X2NvdW50fTwvc3Bhbj4gOiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBhcnRpY2xlIGhhcyBi ZWVuIGFjY2Vzc2VkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5 X2Z1bGxkYXRlfTwvc3Bhbj4gOiB0aGUgYXJ0aWNsZSYjODIxNztzIGxhc3QgYWNjZXNzIGRh dGUgc3RhbXA8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9sYXRlbHlfZGF0 ZX08L3NwYW4+IDogdGhlIGFydGljbGUmIzgyMTc7cyBsYXN0IGFjY2VzcyBkYXRlPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5X2RhdGVfeWVhcn08L3NwYW4+ IDogdGhlIGFydGljbGUmIzgyMTc7cyBsYXN0IGFjY2VzcyB5ZWFyPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5X2RhdGVfbW9udGh9PC9zcGFuPiA6IHRoZSBh cnRpY2xlJiM4MjE3O3MgbGFzdCBhY2Nlc3MgbW9udGggKG51bWJlcik8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9sYXRlbHlfZGF0ZV9tb250aG5hbWV9PC9zcGFuPiA6 IHRoZSBhcnRpY2xlJiM4MjE3O3MgbGFzdCBhY2Nlc3MgbW9udGggKGZ1bGwgbmFtZSk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9sYXRlbHlfZGF0ZV9kYXl9PC9zcGFu PiA6IHRoZSBhcnRpY2xlJiM4MjE3O3MgbGFzdCBhY2Nlc3MgZGF5IChudW1iZXIpPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5X2RhdGVfZGF5bmFtZX08L3Nw YW4+IDogdGhlIGFydGljbGUmIzgyMTc7cyBsYXN0IGFjY2VzcyBkYXkgKGZ1bGwgbmFtZSk8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3NtZF9sYXRlbHlfdGltZX08L3NwYW4+ IDogdGhlIGFydGljbGUmIzgyMTc7cyBsYXN0IGFjY2VzcyB0aW1lIHN0YW1wPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5X3RpbWVfaG91cn08L3NwYW4+IDog dGhlIGFydGljbGUmIzgyMTc7cyBsYXN0IGFjY2VzcyBob3VyPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntzbWRfbGF0ZWx5X3RpbWVfbWludXRlfTwvc3Bhbj4gOiB0aGUgYXJ0 aWNsZSYjODIxNztzIGxhc3QgYWNjZXNzIG1pbnV0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj57c21kX2xhdGVseV90aW1lX3NlY29uZH08L3NwYW4+IDogdGhlIGFydGljbGUm IzgyMTc7cyBsYXN0IGFjY2VzcyBzZWNvbmQ8L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImNhdmVh dHMiPkNhdmVhdHM8L2gzPgoKCTxwPlNpbmNlIHRoZSBwbHVnaW4gdXNlcyB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gbG9ncyB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhl eSBhcmUgYmVpbmcgdXNlZCAoQWRtaW4tJmd0O0Jhc2ljIFByZWZzKS4gSXQgYWxzbyBtZWFu cyB0aGF0IGFueSB2aXNpdG9ycyB1c2luZyBhbiBhbm9ueW1pc2luZyBwcm94eSB3aWxsIGdl dCBzcHVyaW91cyAob3Igbm8pIHJlc3VsdHMuIFRoZWlyIGxvc3MuPC9wPgoKCTxoMiBjbGFz cz0iZXhhbXBsZXMiPkV4YW1wbGVzPC9oMj4KCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxOiBy ZWNlbnQgYXJ0aWNsZSBsaXN0IGZvciBjdXJyZW50IHZpc2l0b3I8L2gzPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfbGF0ZWx5IC8mZ3Q7 CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAyOiByZWNlbnQgYXJ0aWNs ZXMgZm9yIGFsbCB2aXNpdG9yczwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9sYXRlbHkgYnk9JnF1b3Q7JnF1b3Q7IHNlY3Rpb249 JnF1b3Q7YXJjaGl2ZSwgYWJvdXQmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk9u bHkgc2hvd3MgdGhlIGFydGljbGVzIHZpZXdlZCBmcm9tIHRoZSAmIzgyMTY7YXJjaGl2ZSYj ODIxNzsgYW5kICYjODIxNjthYm91dCYjODIxNzsgc2VjdGlvbnMuPC9wPgoKCTxoMyBpZD0i ZWczIj5FeGFtcGxlIDM6IG1vc3QgcG9wdWxhciBhcnRpY2xlcyBhY3Jvc3MgdGhlIHNpdGU8 L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpz bWRfbGF0ZWx5IGJ5PSZxdW90OyZxdW90OyBzb3J0PSZxdW90O3BvcHVsYXJpdHkmcXVvdDsg IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5XaXRob3V0IHVzaW5nIHRoZSA8Y29kZT5ieTwv Y29kZT4gYXR0cmlidXRlLCB0aGlzIHdvdWxkIGdpdmUgdGhlIG1vc3QgcG9wdWxhciBhcnRp Y2xlcyBmb3IgdGhlIGN1cnJlbnQgdmlzaXRvciAmIzgyMTI7IHByb2JhYmx5IG5vdCB3aGF0 IHlvdSB3YW50ITwvcD4KCgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0OiB0YWcgYXMgYSBjb250 YWluZXI8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfbGF0ZWx5IGJ5PSZxdW90OyZxdW90OwogICAgIHdyYXB0YWc9JnF1b3Q7dWwm cXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgbGltaXQ9JnF1b3Q7NiZxdW90OyZndDsKICAg Jmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxlIC8mZ3Q7Jmx0Oy90eHA6cGVybWxp bmsmZ3Q7IFt7c21kX2xhdGVseV9jb3VudH1dJmx0O2JyIC8mZ3Q7CiAgICZsdDt0eHA6cG9z dGVkIC8mZ3Q7IGJ5ICZsdDt0eHA6YXV0aG9yIC8mZ3Q7CiZsdDsvdHhwOnNtZF9sYXRlbHkm Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5TaG93cyB0aGUgNiBtb3N0IHJlY2VudCBhcnRpY2xl cyBhY2Nlc3NlZCBieSBhbnkgc2l0ZSB2aXNpdG9yLiBUaGUgdW5vcmRlcmVkIGxpc3Qgb3V0 cHV0IGNvbnRhaW5zIGEgcGVybWxpbmtlZCB0aXRsZSwgdGhlIGRhdGUgdGhlIGFydGljbGUg d2FzIHBvc3RlZCBhbmQgdGhlIGFydGljbGUmIzgyMTc7cyBhdXRob3IuPC9wPgoKCTxoMyBp ZD0iZWc1Ij5FeGFtcGxlIDU6IGZpbHRlcmluZyBieSBob3N0PC9oMz4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2xhdGVseSBieT0mcXVv dDsmcXVvdDsKICAgICB3cmFwdGFnPSZxdW90O3VsJnF1b3Q7IGJyZWFrPSZxdW90O2xpJnF1 b3Q7IGxpbWl0PSZxdW90OzYmcXVvdDsKICAgICBleGNsdWRlPSZxdW90O2hvc3Q6aWQzNDU2 LWJ0LmN1c3RyZWYuY29tLCByZWZlcjomcXVvdDsmZ3Q7CiAgICZsdDt0eHA6cGVybWxpbmsm Z3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OyBbe3NtZF9sYXRl bHlfY291bnR9XSZsdDticiAvJmd0OwombHQ7L3R4cDpzbWRfbGF0ZWx5Jmd0Owo8L2NvZGU+ PC9wcmU+CgoJPHA+U2hvd3Mgb25seSByZWNvcmRzIHRoYXQgaGF2ZSBzb21lIHJlZmVyZXIg aW5mb3JtYXRpb24gKGkuZS4gd2UgYXJlIGV4Y2x1ZGluZyBlbnRyaWVzIHdoZXJlIHJlZmVy ID0gZW1wdHkpIGFuZCB0aG9zZSB0aGF0IGhhdmUgPHNwYW4gY2xhc3M9ImNhcHMiPk5PVDwv c3Bhbj4gYmVlbiBhY2Nlc3NlZCB2aWEgdGhlIHVuaXF1ZSBob3N0bmFtZSBnaXZlbiB0byB5 b3UgYnkgeW91ciA8c3BhbiBjbGFzcz0iY2FwcyI+SVNQPC9zcGFuPiAmIzgyMTI7IGFzc3Vt aW5nIDxjb2RlPmlkMzQ1Ni1idC5jdXN0cmVmLmNvbTwvY29kZT4gc2hvd3MgdXAgaW4gdGhl ICYjODIxNjtob3N0JiM4MjE3OyBjb2x1bW4gd2hlbmV2ZXIgeW91IGFjY2VzcyBhIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGFydGljbGUuPC9wPgoKCTxwPklmIHlvdSBhZGp1 c3RlZCB0aGUgZXhjbHVkZSBhdHRyaWJ1dGUgdG8gcmVhZCA8Y29kZT5leGNsdWRlPSZxdW90 O2hvc3Q6bGlrZTpidC5jdXN0cmVmJnF1b3Q7PC9jb2RlPiB0aGVuIGFueSBsb2cgZW50cmll cyB3aXRoIDxjb2RlPmJ0LmN1c3RyZWY8L2NvZGU+IGluIHRoZW0gd291bGQgYmUgZXhjbHVk ZWQgZnJvbSBjb25zaWRlcmF0aW9uLjwvcD4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2OiBm aWx0ZXJpbmcgYnkgdGltZSByYW5nZTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9sYXRlbHkgYnk9JnF1b3Q7JnF1b3Q7CiAgICAg d3JhcHRhZz0mcXVvdDt1bCZxdW90OyBicmVhaz0mcXVvdDtsaSZxdW90OwogICAgIGZyb209 JnF1b3Q7P3llYXItP21vbnRoLTAxJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0 OyZsdDt0eHA6dGl0bGUgLyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsgW3tzbWRfbGF0ZWx5 X2NvdW50fV0mbHQ7YnIgLyZndDsKJmx0Oy90eHA6c21kX2xhdGVseSZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlNob3dzIG9ubHkgdGhlIGhpdHMgZ2VuZXJhdGVkIGZyb20gdGhlIGZpcnN0 IGRheSBvZiB0aGUgY3VycmVudCBtb250aCB1bnRpbCBub3cuIFRoZSByZWNlbnQgbGlzdCB3 aWxsIHRodXMgJiM4MjE2O3Jlc2V0JiM4MjE3OyBvbiB0aGUgMXN0IG9mIGV2ZXJ5IG1vbnRo LjwvcD4KCgk8cD5JZiB5b3UgcmVtb3ZlZCB0aGUgPGNvZGU+ZnJvbTwvY29kZT4gYXR0cmli dXRlIGFuZCB1c2VkIDxjb2RlPndpdGhpbj0mcXVvdDszMCBkYXlzJnF1b3Q7PC9jb2RlPiB5 b3Ugd291bGQgaW5zdGVhZCBzZWUgYSAmIzgyMTY7cm9sbGluZyYjODIxNzsgdG90YWwgb2Yg dGhlIGhpdHMgaW4gdGhlIHByZXZpb3VzIDMwIGRheXMgKHlvdSBjb3VsZCBhbHNvIHVzZSA8 Y29kZT53aXRoaW49JnF1b3Q7MSBtb250aCZxdW90OzwvY29kZT4gdG8gZ2V0IHJvdWdobHkg dGhlIHNhbWUgcmVzdWx0KS48L3A+CgoJPGgzIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwv aDM+CgoJPHVsPgoJCTxsaT4yMyBKdWwgMDkgfCAwLjEwIHwgSW5pdGlhbCByZWxlYXNlPC9s aT4KCQk8bGk+MjQgSnVsIDA5IHwgMC4xMSB8IE1hZGUgYmFja3dhcmRzIGNvbXBhdGlibGUg d2l0aCA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiA0LjAuODwvbGk+CgkJPGxpPjEw IEF1ZyAwOSB8IDAuMTIgfCBOZXZlciBhc3N1bWUgd2hhdCByZW1haW5zIGluIHRoZSBmaWx0 ZXJlZCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBpcyBhY3R1YWxseSBhbiBhcnRp Y2xlPC9saT4KCQk8bGk+MTEgU2VwIDA5IHwgMC4xMyB8IEFkZGVkIHJlcGxhY2VtZW50IHZh cnM8L2xpPgoJCTxsaT4xOSBGZWIgMTAgfCAwLjIwIHwgQWRkZWQgPGNvZGU+c3RhdHVzPC9j b2RlPiwgPGNvZGU+dGltZTwvY29kZT4sIDxjb2RlPmluY2x1ZGU8L2NvZGU+LCA8Y29kZT5l eGNsdWRlPC9jb2RlPiwgPGNvZGU+ZGVsaW08L2NvZGU+LCBhbmQgPGNvZGU+cGFyYW1fZGVs aW08L2NvZGU+IDsgYXJ0aWNsZSBsaXN0IG5vdyBmaWx0ZXJlZCBieSA8Y29kZT50aW1lPSZx dW90O3Bhc3QmcXVvdDs8L2NvZGU+IGFuZCA8Y29kZT5zdGF0dXM9JnF1b3Q7NCZxdW90Ozwv Y29kZT4gYnkgZGVmYXVsdDwvbGk+CgkJPGxpPjEwIE1heSAxMCB8IDAuMjEgfCBBZGRlZCA8 Y29kZT5mcm9tPC9jb2RlPiwgPGNvZGU+dG88L2NvZGU+IGFuZCA8Y29kZT53aXRoaW48L2Nv ZGU+ICh0aGFua3MgdGhlX2dob3N0KSA7IGFkZGVkIDxjb2RlPmxpa2U8L2NvZGU+IG1hdGNo aW5nIDsgcmVtb3ZlZCBzb21lIHBvd2VyLWh1bmdyeSA8c3BhbiBjbGFzcz0iY2FwcyI+UkVH RVhQPC9zcGFuPiBvcGVyYXRvcnMgaW4gZmF2b3VyIG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5M SUtFPC9zcGFuPiB0byBpbXByb3ZlIHBlcmZvcm1hbmNlPC9saT4KCQk8bGk+MjggTWF5IDEw IHwgMC4yMiB8IEZpeGVkIGRlZmF1bHQgPGNvZGU+Y2xhc3M8L2NvZGU+IGF0dHJpYnV0ZSBh bmQgcmVtb3ZlZCB0cmFpbGluZyBzbGFzaCBpbiBsb2cgcGFnZXMgKHRoYW5rcyBtYW5pcXVp KTwvbGk+CgkJPGxpPjEwIFNlcCAxMCB8IDAuMzAgfCBBZGRlZCA8Y29kZT5jYWNoZV90aW1l PC9jb2RlPiAodGhhbmtzIHBpZW1hbikgOyBub3cgb25seSB1c2VzIHR3byBxdWVyaWVzIHJl Z2FyZGxlc3Mgb2YgbnVtYmVyIG9mIHJlc3VsdHMgOyBpbXByb3ZlZCBtZXNzeSA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBzdXBwb3J0IDsgZml4ZWQgdGltZSBkaXNwbGF5IHBy b2JsZW1zIHVzaW5nIDxjb2RlPk5PVygpPC9jb2RlPiBhbmQgYWRkZWQgPGNvZGU+YWN0aXZl X2NsYXNzPC9jb2RlPiAoYm90aCB0aGFua3MgamVsbGUpPC9saT4KCTwvdWw+Cgo8L2Rpdj4K PCEtLSAqKiogQkVHSU4gUExVR0lOIENTUyAqKiogLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2Nz cyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZv bnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVy LCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29k ZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsg YmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHgg MTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7 IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWdu OiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJs YWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lh LCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMjc1Njg1OyBmb250OiBi b2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdp bjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9u OnVuZGVybGluZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fu cy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10 cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpi b2xkOyBjb2xvcjojMzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsg Ym9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsg dGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwg I3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30K I3NtZF9oZWxwIHVsIHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJl cXVpcmVkIHtjb2xvcjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4 IDMwcHg7IH0KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+ CjwhLS0gKioqIEVORCBQTFVHSU4gQ1NTICoqKiAtLT4KIjtzOjM6Im1kNSI7czozMjoiNmI0 Yzc1N2EzZWZiNmU5ZTkyNDU2NDQ4NmYxODRlN2MiO30=