<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>CGContacts</name>
	<version>1.3.2</version>
  <mincmsversion>1.12.1</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgaXMgYSBtb2R1bGUgZm9yIG1hbmFnaW5nIGNvbnRhY3RzLiAgSXQgbWFuYWdlcyBhIHBob3RvLCBuYW1lcywgbmlja25hbWVzLCBjb21wYW55IG5hbWVzLCBtdWx0aXBsZSBwaHlzaWNhbCBhZGRyZXNzZXMsIGVtYWlsIGFkZHJlc3NlcyBhbmQgcGhvbmUgbnVtYmVycyBmb3IgZWFjaCBjb250YWN0LjwvcD4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgY2hlY2sgZm9yIGR1cGxpY2F0ZSBuYW1lcywgb3IgZHVwbGljYXRlIGVtYWlsIGFkZHJlc3Nlcy4gSXQgaXMgZW50aXJlbHkgcG9zc2libGUgdG8gaGF2ZSAyMCBjb250YWN0cyB3aXRoIHRoZSBzYW1lIGVtYWlsIGFkZHJlc3MgYW5kIHBoeXNpY2FsIGFkZHJlc3MuPC9wPgoKPGgzPkZlYXR1cmVzOjwvaDM+Cjx1bD4KICA8bGk+dmNhcmQgaW1wb3J0IChpbmNsdWRpbmcgYSB2Y2YgZmlsZSBjb250YWluaW5nIG11bHRpcGxlIHZjYXJkcykuPC9saT4KICA8bGk+dmNhcmQgZXhwb3J0PC9saT4KICA8bGk+QWxsb3dzIHR5aW5nIGEgY29udGFjdCB0byBhbiBGRVUgdXNlciBhY2NvdW50LjwvbGk+CiAgPGxpPkEganF1ZXJ5IHBsdWdpbiBmb3IgcXVpY2tseSBzZWxlY3RpbmcgYSBjb250YWN0IGZvciB1c2UgaW4gb3RoZXIgYXBwcy48L2xpPgogIDxsaT5FeHBvcnQgY29udGFjdHMgdG8gUERGIDxlbT4ocmVxdWlyZXMgdGhlIENHSFRNTDJQREYgbW9kdWxlKTwvZW0+PC9saT4KICA8bGk+bW9yZS4uLjwvbGk+CjwvdWw+Cgo8aDM+SG93IGRvIEkgdXNlIGl0OjwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgcHJpbWFyaWx5IGJ5IG1vZHVsZSBkZXZlbG9wZXJzIGFuZCBzb2x1dGlvbiBwcm92aWRlcnMgd2hlbiBidWlsZGluZyBhcHBsaWNhdGlvbnMgZm9yIHRoZWlyIGN1c3RvbWVycy4gIFRoaXMgbW9kdWxlIGhhcyBubyBmcm9udGVuZCBpbnRlcmZhY2UuPC9wPgo8cD5UaGlzIG1vZHVsZSBjb21lcyB3aXRoIGEgY29tcGxldGVseSBkb2N1bWVudGVkIEFQSSBmb3IgdXNlIGJ5IG1vZHVsZSBkZXZlbG9wZXJzIGFuZCBzb2x1dGlvbiBwcm92aWRlcnMuPC9wPgoKPGgzPkNvbmZpZyBFbnRyaWVzOjwvaDM+CjxwPlRoaXMgbW9kdWxlIHdpbGwgcmVhZCBmcm9tIGEgc3BlY2lhbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGluIHRoZSBDTVNNUyBjb25maWcucGhwIHRvIGZpbmQgZXh0cmEgY2xhc3NlcyB0aGF0IHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiBlZGl0aW5nIGEgY29udGFjdC4gIFRoaXMgdmFyaWFibGUgY29udGFpbnMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhYnNvbHV0ZSBjbGFzcyBuYW1lcyB0aGF0IGVpdGhlciBtdXN0IGJlIGxvYWRlZCwgb3IgbXVzdCBiZSBhdXRvLWxvYWRhYmxlLjwvcD4KPHA+aS5lOiA8Y29kZT4kY29uZmlnWydjZ2NvbnRhY3RzX2V4dHJhJ10gPSAnXENHQ29udGFjdHNcY29udGFjdF9kYWlseXdhZ2UsXENHQ29udGFjdHNcY29udGFjdF9zY29yZTAxJzs8L2NvZGU+PC9wPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGUgbW9kdWxlIGF1dGhvciBpcyBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiAgSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkEgYnVnIHRyYWNraW5nIGFuZCBmZWF0dXJlIHJlcXVlc3Qgc3lzdGVtIGhhcyBiZWVuIGNyZWF0ZWQgZm9yIHRoaXMgbW9kdWxlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY2djb250YWN0cyI+aGVyZTwvYT4uICBQbGVhc2UgYmUgdmVyYm9zZSBhbmQgZGVzY3JpcHRpdmUgd2hlbiBzdWJtaXR0aW5nIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzLCBhbmQgZm9yIGJ1ZyByZXBvcnRzIGVuc3VyZSB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBpc3N1ZS48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LiAgV2hlbiBkZXNjcmliaW5nIGFuIGlzc3VlIHBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byBwcm92aWRlIGFsbCByZWxhdmFudCBpbmZvcm1hdGlvbiwgYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0IG9yIHlvdXIgZGlzY3Vzc2lvbiBtYXkgYmUgaWdub3JlZC48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LiAgSG93ZXZlciwgcGxlYXNlIHVzZSB0aGlzIGFzIGEgbGFzdCByZXNvcnQsIGFuZCBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBmb2xsb3dlZCBhbGwgYXBwbGljYWJsZSBpbnN0cnVjdGlvbnMgb24gdGhlIGZvcmdlLCBpbiB0aGUgZm9ydW1zLCBldGMuPC9saT4KPC91bD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgpzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+CjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuNTMuMTwvbGk+PGxpPkNHU2ltcGxlU21hcnR5ID0mZ3Q7IDEuOTwvbGk+PGxpPkNHSFRNTDJQREYgPSZndDsgMS4wPC9saT48bGk+SlF1ZXJ5VG9vbHMgPSZndDsgMS4zLjg8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMy4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+VmVyc2lvbiAxLjMKCTx1bD4KICAgICAgICA8bGk+QWRkcyBwZXJtaXNzaW9uIHRvIG1hbmFnZSBjYXRlZ29yaWVzLjwvbGk+Cgk8bGk+T24gc2F2ZSBlbnN1cmUgdGhhdCBhIGZ1bGwgbmFtZSBpcyBnZW5lcmF0ZWQuPC9saT4KCTxsaT5DaGFuZ2UgZGVmYXVsdCBzb3J0aW5nIG9yZGVyIHRvIGZ1bGxuYW1lLjwvbGk+Cgk8bGk+QWRkcyB0aGUgY29udGFjdF9zY29yZTAxIGNsYXNzIChhIHNjb3JlIGJldHdlZW4gMCBhbmQgMSkuICBPbmx5IG9uZSBvYmplY3Qgb2YgdGhpcyB0eXBlIGlzIGFsbG93ZWQuPC9saT4KCTxsaT5BZGRzIHRoZSBjZ2NvbnRhY3RzX2V4dHJhIGNvbmZpZyBlbnRyeSwgYW5kIGNvZGUgdG8gdXNlIGl0LiAgTm93IG9ubHkgZW1haWwscGhvbmUsYWRkcmVzcyx1cmwsIGFuZCBjcmVhdG9yIGZpZWxkcyBhcmUgc3RhbmRhcmQuPC9saT4KCTwvdWw+CjwvdWw+CjxiciAvPg==]]></about>
	<description><![CDATA[A contact manager for CMSMS modules.]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.53.1</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGSimpleSmarty</requiredname>
	  <requiredversion>1.9</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGHTML2PDF</requiredname>
	  <requiredversion>1.0</requiredversion>
	</requires>
	<requires>
	  <requiredname>JQueryTools</requiredname>
	  <requiredversion>1.3.8</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.#method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_savecontact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIFxDR0NvbnRhY3RzXGNvbnRhY3QgYXMgQ0dDb250YWN0OwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgpkZWJ1Z190b19sb2coJ1NBVkUnKTsKZGVidWdfdG9fbG9nKCRfUkVRVUVTVCk7CiRzdGF0dXMgPSAnRVJST1InOwokZGF0YSA9IG51bGw7CiRtc2cgPSBudWxsOwokb3V0ID0gYXJyYXkoJ3N0YXR1cyc9PiRzdGF0dXMsJ21zZyc9Pm51bGwpOwoKJHN0cl9jb250YWN0ID0gY2dlX3V0aWxzOjpnZXRfcGFyYW0oJF9SRVFVRVNULCdjb250YWN0Jyk7CnRyeSB7CiAgICBpZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oIENHQ29udGFjdHM6OlBFUk0gKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ1Blcm1pc3Npb24gZGVuaWVkJyk7CiAgICBpZiggISRzdHJfY29udGFjdCApIHRocm93IG5ldyBFeGNlcHRpb24oJ0luc3VmZmljaWVudCBQYXJhbWV0ZXJzJyk7CgogICAgJHJhd19jb250YWN0ID0ganNvbl9kZWNvZGUoJHN0cl9jb250YWN0LFRSVUUpOwogICAgZGVidWdfdG9fbG9nKCdyYXcgY29udGFjdCcpOwogICAgZGVidWdfdG9fbG9nKCRyYXdfY29udGFjdCk7CgogICAgLy8gY29udmVydCB0aGlzIGJhY2sgaW50byBhIGNvbnRhY3Qgb2JqZWN0CiAgICAkY29udGFjdF9vYmogPSBuZXcgQ0dDb250YWN0OwogICAgaWYoIGlzc2V0KCRyYXdfY29udGFjdFsnaWQnXSkgJiYgJHJhd19jb250YWN0WydpZCddID4gMCApIHsKICAgICAgICAkY29udGFjdF9vYmogPSBDR0NvbnRhY3Q6OmxvYWQoJHJhd19jb250YWN0WydpZCddKTsKICAgIH0KICAgICRjb250YWN0X29iai0+ZnJvbV9kYXRhKCRyYXdfY29udGFjdCk7CiAgICAkY29udGFjdF9vYmotPnNhdmUoKTsKICAgICRvdXRbJ3N0YXR1cyddID0gJ09LJzsKICAgICRvdXRbJ2NvbnRhY3RfaWQnXSA9ICRjb250YWN0X29iai0+Z2V0X2lkKCk7Cn0KY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgIGRlYnVnX3RvX2xvZygnZXJyb3InKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICRvdXRbJ3N0YXR1cyddID0gJ0VSUk9SJzsKICAgICRvdXRbJ21zZyddID0kZS0+R2V0TWVzc2FnZSgpOwp9CgoKY2dlX3V0aWxzOjpzZW5kX2FqYXhfYW5kX2V4aXQoJG91dCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_savecontent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIFxDR0NvbnRhY3RzXGNvbnRhY3QgYXMgQ0dDb250YWN0OwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggQ0dDb250YWN0czo6UEVSTSApICkgZXhpdDsKCmRlYnVnX3RvX2xvZygnU0FWRScpOwpkZWJ1Z190b19sb2coJF9SRVFVRVNUKTsKJHN0YXR1cyA9ICdFUlJPUic7CiRkYXRhID0gbnVsbDsKJG1zZyA9IG51bGw7Cgokc3RyX2NvbnRhY3QgPSBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkX1JFUVVFU1QsJ2NvbnRhY3QnKTsKaWYoICRzdHJfY29udGFjdCApIHsKICAgIHRyeSB7CiAgICAgICAgJHJhd19jb250YWN0ID0ganNvbl9kZWNvZGUoJHN0cl9jb250YWN0LFRSVUUpOwogICAgICAgIC8vIGNvbnZlcnQgdGhpcyBiYWNrIGludG8gYSBjb250YWN0IG9iamVjdAogICAgICAgICRjb250YWN0X29iaiA9IG5ldyBDR0NvbnRhY3Q7CiAgICAgICAgaWYoIGlzc2V0KCRyYXdfY29udGFjdFsnaWQnXSkgJiYgJHJhd19jb250YWN0WydpZCddID4gMCApIHsKICAgICAgICAgICAgJGNvbnRhY3Rfb2JqID0gQ0dDb250YWN0Ojpsb2FkKCRyYXdfY29udGFjdFsnaWQnXSk7CiAgICAgICAgfQogICAgICAgICRjb250YWN0X29iai0+ZnJvbV9kYXRhKCRyYXdfY29udGFjdCk7CiAgICAgICAgJGNvbnRhY3Rfb2JqLT5zYXZlKCk7CiAgICAgICAgJHN0YXR1cyA9ICdPSyc7CiAgICAgICAgJGRhdGEgPSAkY29udGFjdF9vYmotPmdldF9pZCgpOwogICAgfQogICAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICBkZWJ1Z190b19sb2coJ2Vycm9yJyk7CiAgICAgICAgZGVidWdfdG9fbG9nKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgICRtc2cgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgfQp9CgokaGFuZGxlcnMgPSBvYl9saXN0X2hhbmRsZXJzKCk7CmZvciAoJGNudCA9IDA7ICRjbnQgPCBzaXplb2YoJGhhbmRsZXJzKTsgJGNudCsrKSB7IG9iX2VuZF9jbGVhbigpOyB9CmhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyk7CiRvdXQgPSBhcnJheSgnc3RhdHVzJz0+JHN0YXR1cywnZGF0YSc9PiRkYXRhLCdtc2cnPT4kbXNnKTsKZWNobyBqc29uX2VuY29kZSgkb3V0KTsKZXhpdDsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_bulkcontacts.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6UEVSTSkgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdjb250YWN0cycpOwoKLy8gdmFsaWRhdGUgYW5kIGNsZWFuIHRoZSBzZWxlY3RlZCBhcnJheQppZiggIWlzc2V0KCRwYXJhbXNbJ3NlbGVjdGVkJ10pICkgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKJHRtcCA9IGV4cGxvZGUoJywnLGNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ3NlbGVjdGVkJykpOwokc2VsZWN0ZWQgPSBhcnJheSgpOwpmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAkb25lID0gKGludCkgJG9uZTsKICAgIGlmKCAkb25lIDwgMSB8fCBpbl9hcnJheSgkb25lLCRzZWxlY3RlZCkgKSBjb250aW51ZTsKICAgICRzZWxlY3RlZFtdID0gJG9uZTsKfQppZiggIWNvdW50KCRzZWxlY3RlZCkgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZSddKSApIHsKICAgIC8vIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgaXRlbXMuCiAgICAkcXVlcnkgPSBuZXcgXENHQ29udGFjdHNcY29udGFjdF9xdWVyeShhcnJheSgnaWRsaXN0Jz0+JHNlbGVjdGVkKSk7CiAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICRuX2RlbGV0ZWQ9MDsKICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAvLyBzb21lIGNvbnRhY3RzIG1heSBub3QgYmUgZGVsZXRlZCBkdWUgdG8gZm9yZWlnbiBrZXkgY29uc3RyYWludHMuCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGNvbnRhY3QgPSAkcnMtPmdldF9vYmplY3QoKTsKICAgICAgICAgICAgJGNvbnRhY3QtPmRlbGV0ZSgpOwogICAgICAgICAgICAkbl9kZWxldGVkKys7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIH0KICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICB9CiAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX25kZWxldGVkJywkbl9kZWxldGVkKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CmVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ2V4cG9ydCddKSApIHsKCiAgICAkcXVlcnkgPSBuZXcgXENHQ29udGFjdHNcY29udGFjdF9xdWVyeShhcnJheSgnaWRsaXN0Jz0+JHNlbGVjdGVkKSk7CiAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICRvdXQgPSAnJzsKICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAkb2JqID0gJHJzLT5nZXRfb2JqZWN0KCk7CiAgICAgICAgJG91dCAuPSBcQ0dDb250YWN0c1x1dGlsczo6Z2V0X3ZjYXJkKCRvYmopOwogICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgIH0KICAgIC8vIG91dHB1dCB0aGUgdGhpbmcKICAgIFxjZ2VfdXRpbHM6OnNlbmRfZGF0YV9hbmRfZXhpdCgkb3V0LCd0ZXh0L3YtY2FyZCcsJHRoaXMtPkdldE5hbWUoKS4nLnZjZicpOwp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_delete_cat.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIFxDR0NvbnRhY3RzXGNhdGVnb3J5IGFzIENhdGVnb3J5OwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbihDR0NvbnRhY3RzOjpDQVRTX1BFUk0pICkgZXhpdDsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2NhdGVnb3JpZXMnKTsKCnRyeSB7CiAgICAkY2F0X2lkID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdjYXRpZCcpOwogICAgaWYoICRjYXRfaWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19wYXJhbScpKTsKCiAgICAkY2F0ZWdvcnkgPSBDYXRlZ29yeTo6bG9hZCgkY2F0X2lkKTsKICAgICRjYXRlZ29yeS0+ZGVsZXRlKCk7CiAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX2NhdGVnb3J5X2RlbGV0ZWQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_del_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6UEVSTSkgKSBleGl0OwokdGhpcy0+U2V0Q3VycmVudFRhYignY29udGFjdHMnKTsKCnRyeSB7CiAgICAkY2lkID0gKGludCkgY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnY2lkJyk7CiAgICBpZiggJGNpZCA8IDEgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19wYXJhbScpKTsKCiAgICAkY29udGFjdCA9IFxDR0NvbnRhY3RzXGNvbnRhY3Q6OmxvYWQoJGNpZCk7CgogICAgdHJ5IHsKICAgICAgICAkY29udGFjdC0+ZGVsZXRlKCk7CiAgICB9CiAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgIGF1ZGl0KCRjb250YWN0LT5nZXRfaWQoKSwkdGhpcy0+R2V0TmFtZSgpLCdEZWxldGUgUHJvYmxlbTogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kZWxldGVfY29udGFjdCcpKTsKICAgIH0KfQpjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwp9CgokdGhpcy0+UmVkaXJlY3RUb1RhYigpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_edit_cat.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIFxDR0NvbnRhY3RzXGNhdGVnb3J5IGFzIENhdGVnb3J5OwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbihDR0NvbnRhY3RzOjpDQVRTX1BFUk0pICkgZXhpdDsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2NhdGVnb3JpZXMnKTsKCmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSB7CiAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnb3BfY2FuY2VsbGVkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQoKdHJ5IHsKICAgICRhbGxfY2F0ZWdvcmllcyA9IENhdGVnb3J5OjpnZXRfYWxsKCk7CiAgICAkY2F0X2lkID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdjYXRpZCcsLTEpOwogICAgJGNhdGVnb3J5ID0gbmV3IENhdGVnb3J5OwoKICAgIGlmKCAkY2F0X2lkID4gMCApICRjYXRlZ29yeSA9IENhdGVnb3J5Ojpsb2FkKCRjYXRfaWQpOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgJGNhdGVnb3J5WyduYW1lJ10gPSAkcGFyYW1zWyduYW1lJ107CiAgICAgICAgJGNhdGVnb3J5WydkZXNjcmlwdGlvbiddID0gJHBhcmFtc1snZGVzY3JpcHRpb24nXTsKICAgICAgICAkY2F0ZWdvcnlbJ3BhcmVudF9pZCddID0gJHBhcmFtc1sncGFyZW50X2lkJ107CiAgICAgICAgJGNhdGVnb3J5LT5zYXZlKCk7CgogICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2F0ZWdvcnlfc2F2ZWQnKSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICAgIH0KCiAgICAkc21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5JywkY2F0ZWdvcnkpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKfQoKJHBhcm1zID0gYXJyYXkoKTsKaWYoICRjYXRfaWQgPiAwICkgJHBhcm1zWydjYXRpZCddID0gJGNhdF9pZDsKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2VkaXRfY2F0JywkcmV0dXJuaWQsJHBhcm1zKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgovLyBnZXQgdGhlIGNhdGVnb3J5IGxpc3QgKGJ1dCBleGNsdWRlIG91cnNlbHZlcywgYW5kIGFueSBjaGlsZHJlbiBvZiBvdXJzZWx2ZXMpCiRsaXN0ID0gYXJyYXkoJy0xJz0+JHRoaXMtPkxhbmcoJ25vbmUnKSk7CmZvcmVhY2goICRhbGxfY2F0ZWdvcmllcyBhcyAkb25lICkgewogICAgJHN0ciA9IHN0cl9yZXBlYXQoJyAmcmFxdW87ICcsJG9uZVsnZGVwdGgnXSkuJG9uZVsnbmFtZSddOwogICAgJGxpc3RbJG9uZVsnaWQnXV0gPSAkc3RyOwp9CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnlfbGlzdCcsJGxpc3QpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2VkaXRfY2F0LnRwbCcpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_edit_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKdXNlIFxDR0NvbnRhY3RzXGNvbnRhY3QgYXMgQ0dDb250YWN0OwoKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oIENHQ29udGFjdHM6OlBFUk0gKSApIGV4aXQ7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdjb250YWN0cycpOwoKJGFqYXggPSBmYWxzZTsKJGNpZCA9IG51bGw7CiRjb250YWN0ID0gbnVsbDsKdHJ5IHsKICAgICRhamF4ID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdhamF4Jyk7CiAgICAkY2lkID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdjaWQnKTsKICAgICRjb250YWN0ID0gbmV3IENHQ29udGFjdCgpOwogICAgLy8kY29udGFjdC0+YWRkX2VtYWlsKCcnLCdXb3JrJyk7CiAgICAvLyRjb250YWN0LT5hZGRfcGhvbmUoXENHQ29udGFjdHNcY29udGFjdF9waG9uZTo6VFlQRV9WT0lDRSwnJywnV29yaycpOwogICAgaWYoICRjaWQgPiAwICkgJGNvbnRhY3QgPSBDR0NvbnRhY3Q6OmxvYWQoJGNpZCk7CgogICAgLy8gaWYgd2UgaGF2ZSBhIHNlcmlhbGl6ZWQgY29udGFjdCwgYXNzdW1lIHdlJ3JlIHNhdmluZyBpdC4KICAgICRzYXZpbmcgPSBmYWxzZTsKICAgICRjb250YWN0X2pzb24gPSB0cmltKGNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2NvbnRhY3QnKSk7CiAgICBpZiggJGFqYXggJiYgJGNvbnRhY3RfanNvbiApIHsKICAgICAgICAkY29udGFjdF9vYmogPSBqc29uX2RlY29kZSgkY29udGFjdF9qc29uLFRSVUUpOwogICAgICAgIGlmKCAkY29udGFjdF9vYmogKSB7CiAgICAgICAgICAgICRzYXZpbmcgPSB0cnVlOwogICAgICAgICAgICAkY29udGFjdC0+ZnJvbV9kYXRhKCRjb250YWN0X29iaik7CiAgICAgICAgICAgICRjb250YWN0LT5zYXZlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGFsbCBkb25lLi4uCiAgICBpZiggJGFqYXggKSB7CiAgICAgICAgJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwogICAgICAgIGZvciAoJGNudCA9IDA7ICRjbnQgPCBzaXplb2YoJGhhbmRsZXJzKTsgJGNudCsrKSB7IG9iX2VuZF9jbGVhbigpOyB9CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nKTsKICAgICAgICAkb3V0ID0gYXJyYXkoJ3N0YXR1cyc9PidPSycsJ2RhdGEnPT4kY29udGFjdC0+dG9fZGF0YSgpKTsKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKCRvdXQpOwogICAgICAgIGV4aXQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAvLyBnZXQgY2xhc3NlcwogICAgICAgICRjbGFzc2VzID0gYXJyYXkoKTsKICAgICAgICAkY2xhc3Nlc1snY29udGFjdF9lbWFpbCddID0gJyogJy4kdGhpcy0+TGFuZygnbGJsX2VtYWlsJyk7CiAgICAgICAgJGNsYXNzZXNbJ2NvbnRhY3RfcGhvbmUnXSA9ICcqICcuJHRoaXMtPkxhbmcoJ2xibF9waG9uZScpOwogICAgICAgICRjbGFzc2VzWydjb250YWN0X2FkZHJlc3MnXSA9ICcqICcuJHRoaXMtPkxhbmcoJ2xibF9hZGRyZXNzJyk7CiAgICAgICAgJGNsYXNzZXNbJ2NvbnRhY3RfdXJsJ10gPSAnKiAnLiR0aGlzLT5MYW5nKCdsYmxfdXJsJyk7CiAgICAgICAgJGNsYXNzZXNbJ2NvbnRhY3RfY3JlYXRvciddID0gJHRoaXMtPkxhbmcoJ2xibF9jcmVhdG9yJyk7CiAgICAgICAgJGV4dHJhID0gJGNvbmZpZ1snY2djb250YWN0c19leHRyYSddOwogICAgICAgIGlmKCAkZXh0cmEgKSB7CiAgICAgICAgICAgICRleHRyYSA9IGV4cGxvZGUoJywnLCRleHRyYSk7CiAgICAgICAgICAgIGZvcmVhY2goICRleHRyYSBhcyAkb25lX2NsYXNzICkgewogICAgICAgICAgICAgICAgJG9uZV9jbGFzcyA9IHRyaW0oJG9uZV9jbGFzcyk7CiAgICAgICAgICAgICAgICBpZiggISRvbmVfY2xhc3MgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCBzdHJwb3MoJ1xcJywkb25lX2NsYXNzKSA9PT0gRkFMU0UgKSAkb25lX2NsYXNzID0gJ1xcQ0dDb250YWN0c1xcJy4kb25lX2NsYXNzOwogICAgICAgICAgICAgICAgaWYoICFjbGFzc19leGlzdHMoJG9uZV9jbGFzcykgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICRvbmVfY2xhc3MgPSBiYXNlbmFtZShzdHJfcmVwbGFjZSgnXFwnLCcvJywkb25lX2NsYXNzKSk7CiAgICAgICAgICAgICAgICAkY2xhc3Nlc1skb25lX2NsYXNzXSA9ICR0aGlzLT5MYW5nKCdsYmxfJy4kb25lX2NsYXNzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2NsYXNzZXMnLGpzb25fZW5jb2RlKCRjbGFzc2VzKSk7CgogICAgICAgICRjYXRlZ29yaWVzID0gXENHQ29udGFjdHNcY2F0ZWdvcnk6OmdldF90cmVlKCk7CiAgICAgICAgJG91dCAgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2goICRjYXRlZ29yaWVzIGFzICRvbmUgKSB7CiAgICAgICAgICAgICRvdXRbXSA9ICRvbmUtPnRvX2RhdGEoKTsKICAgICAgICB9CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yaWVzJywkb3V0KTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2NpZCcsJGNpZCk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdjb250YWN0Jyxqc29uX2VuY29kZSgkY29udGFjdC0+dG9fZGF0YSgpKSk7CiAgICAgICAgJHRtcCA9IFxDR0NvbnRhY3RzXHV0aWxzOjpnZXRfZmV1X2xpc3QoKTsKICAgICAgICBpZiggY291bnQoJHRtcCkgKSB7CiAgICAgICAgICAgICR0bXAgPSBcY2dlX2FycmF5OjpoYXNoX3ByZXBlbmQoJHRtcCwtMSwkdGhpcy0+TGFuZygnbm9uZScpKTsKICAgICAgICAgICAgJHRtcDIgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRrZXkgPT4gJHZhbHVlICkgewogICAgICAgICAgICAgICAgJHRtcDJbXSA9IGFycmF5KCdpZCc9PiRrZXksJ3ZhbCc9PiR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdmZXVfdXNlcnMnLGpzb25fZW5jb2RlKCR0bXAyKSk7CiAgICAgICAgfQogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fZWRpdF9jb250YWN0LnRwbCcpOwogICAgfQp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICBpZiggJGFqYXggKSB7CiAgICAgICAgJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwogICAgICAgIGZvciAoJGNudCA9IDA7ICRjbnQgPCBzaXplb2YoJGhhbmRsZXJzKTsgJGNudCsrKSB7IG9iX2VuZF9jbGVhbigpOyB9CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nKTsKICAgICAgICAkb3V0ID0gYXJyYXkoJ3N0YXR1cyc9PidFUlJPUicsJ21zZyc9PiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJG91dCk7CiAgICAgICAgZXhpdDsKICAgIH0KICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_export_pdf.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6UEVSTSkgKSByZXR1cm47CgovLyBoZXJlIHdlIHNob3VsZCBpbmhlcml0IGEgZmlsdGVyIGZyb20gc29tZXdoZXJlIChvciBpdCB3b3VsZCBiZSBuaWNlIHRvIGluaGVyaXQgYSBmaWx0ZXIgZnJvbSBzb21ld2hlcmUpCgokcXVlcnkgPSBuZXcgXENHQ29udGFjdHNcY29udGFjdF9xdWVyeTsKCiRyZXBvcnQgPSBuZXcgXENHRXh0ZW5zaW9uc1xyZXBvcnRzXGZvcm1hdHRlZF9yZXBvcnRfZGVmbjsKJHJlcG9ydC0+c2V0X3F1ZXJ5KCRxdWVyeSk7CiRyZXBvcnQtPnNldF9pdGVtX3RlbXBsYXRlKCdjb250YWN0X3JlcG9ydF9kZWZuLnRwbCcpOwokcmVwb3J0LT5zZXRfdGl0bGUoJHRoaXMtPkxhbmcoJ2NvbnRhY3RfcmVwb3J0X3RpdGxlJykpOwokcmVwb3J0LT5zZXRfZGVzY3JpcHRpb24oJHRoaXMtPkxhbmcoJ2NvbnRhY3RfcmVwb3J0X2Rlc2NyaXB0aW9uJykpOwovLyRnZW5lcmF0b3IgPSBuZXcgXENHRXh0ZW5zaW9uc1xyZXBvcnRzXGZvcm1hdHRlZF9yZXBvcnRfZ2VuZXJhdG9yKCRyZXBvcnQpOwokZ2VuZXJhdG9yID0gbmV3IFxDR0hUTUwyUERGXHBkZl9mb3JtYXR0ZWRfcmVwb3J0X2dlbmVyYXRvcigkcmVwb3J0KTsKCiRnZW5lcmF0b3ItPnNldF90ZW1wbGF0ZSgnY29udGFjdF9yZXBvcnQudHBsJyk7CiRnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiRoYW5kbGVycyA9IG9iX2xpc3RfaGFuZGxlcnMoKTsKZm9yICgkY250ID0gMDsgJGNudCA8IHNpemVvZigkaGFuZGxlcnMpOyAkY250KyspIHsgb2JfZW5kX2NsZWFuKCk7IH0KJG91dCA9ICRnZW5lcmF0b3ItPmdldF9vdXRwdXQoKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_vcard.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6UEVSTSkgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdjb250YWN0cycpOwoKJGtub3duX3R5cGVzID0gYXJyYXkoXENHQ29udGFjdHNcY29udGFjdF9waG9uZTo6VFlQRV9WT0lDRSwKICAgICAgICAgICAgICAgICAgICAgXENHQ29udGFjdHNcY29udGFjdF9waG9uZTo6VFlQRV9NU0csCiAgICAgICAgICAgICAgICAgICAgIFxDR0NvbnRhY3RzXGNvbnRhY3RfcGhvbmU6OlRZUEVfRkFYLAogICAgICAgICAgICAgICAgICAgICBcQ0dDb250YWN0c1xjb250YWN0X3Bob25lOjpUWVBFX01PQklMRSwKICAgICAgICAgICAgICAgICAgICAgXENHQ29udGFjdHNcY29udGFjdF9waG9uZTo6VFlQRV9QQUdFUiwKICAgICAgICAgICAgICAgICAgICAgXENHQ29udGFjdHNcY29udGFjdF9waG9uZTo6VFlQRV9WSURFTywKICAgICAgICAgICAgICAgICAgICAgXENHQ29udGFjdHNcY29udGFjdF9waG9uZTo6VFlQRV9TQVQsCiAgICApOwokdHlwZV9hbGlhc2VzID0gYXJyYXkoKTsKJHR5cGVfYWxpYXNlc1tcQ0dDb250YWN0c1xjb250YWN0X3Bob25lOjpUWVBFX01PQklMRV0gPSBhcnJheSgnY2VsbCcsJ2NlbCcpOwokdHlwZV9hbGlhc2VzW1xDR0NvbnRhY3RzXGNvbnRhY3RfcGhvbmU6OlRZUEVfUEFHRVJdID0gYXJyYXkoJ3NtcycpOwoKJHByb2Nlc3NfcGhvdG8gPSBmdW5jdGlvbigkdXJsKSB7CiAgICAvLyBjb3B5IHRoZSBpbWFnZSB0byBhIHRlbXBvcmFyeSBsb2NhdGlvbgogICAgJGNyZiA9IG5ldyBjZ2VfY2FjaGVkX3JlbW90ZV9maWxlKCR1cmwpOwogICAgaWYoICRjcmYtPnNpemUoKSA9PSAwICkgcmV0dXJuOwogICAgJGZuID0gJGNyZi0+Z2V0X2Rlc3QoKTsKCiAgICAvLyBjaGVjayB0aGUgaW1hZ2UKICAgICRpbmZvID0gZ2V0aW1hZ2VzaXplKCRmbik7CiAgICBpZiggJGluZm8gPT09IEZBTFNFICkgcmV0dXJuOwoKICAgIC8vIHJlc2l6ZSBpZiBuZWNlc3NhcnkgKDQwMCBwaXhlbHMgbWF4KQogICAgaWYoICRpbmZvWzBdID4gNDAwIHx8ICRpbmZvWzFdID4gNDAwICkgewogICAgICAgIC8vIGdvdHRhIHJlc2l6ZSB0aGUgaW1hZ2UKICAgICAgICAkZGVzdGZuID0gVE1QX0NBQ0hFX0xPQ0FUSU9OLicvJy5tZDUoJHVybC50aW1lKCkpOwogICAgICAgIGNnZV9pbWFnZTo6dHJhbnNmb3JtX2ltYWdlKCRmbiwkZGVzdGZuLDQwMCk7CiAgICAgICAgJGNyZi0+Y2xlYW51cCgpOwogICAgICAgIHVuc2V0KCRjcmYpOwogICAgICAgICRmbiA9ICRkZXN0Zm47CiAgICB9CgogICAgLy8gZW5jb2RlIGl0IGludG8gYSBkYXRhIHVyaQogICAgLy8gYW5kIG1ha2Ugc3VyZSBpdCdzIGxlc3MgdGhhbiA2NGsKICAgICRvdXQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRmbikpOwogICAgJG91dCA9ICdkYXRhOicuY2dlX3V0aWxzOjpnZXRfbWltZV90eXBlKCRmbikuJztiYXNlNjQsJy4kb3V0OwogICAgdW5saW5rKCRmbik7CiAgICBpZiggc3RybGVuKCRvdXQpID49IDY1NTM1ICkgcmV0dXJuOwogICAgcmV0dXJuICRvdXQ7Cn07CgokZmluZF90eXBlID0gZnVuY3Rpb24oJGluX3R5cGVzKSB1c2UoJGtub3duX3R5cGVzLCR0eXBlX2FsaWFzZXMpIHsKICAgIGZvcmVhY2goICRpbl90eXBlcyBhcyAkb25lICkgewogICAgICAgIGlmKCBpbl9hcnJheSgkb25lLCRrbm93bl90eXBlcykgKSByZXR1cm4gJG9uZTsKICAgICAgICBmb3JlYWNoKCAkdHlwZV9hbGlhc2VzIGFzICR0ID0+ICRhbGlhc2VzICkgewogICAgICAgICAgICBpZiggaW5fYXJyYXkoJG9uZSwkYWxpYXNlcykgKSByZXR1cm4gJHQ7CiAgICAgICAgfQogICAgfQp9OwoKJGZpbmRfbGFiZWwgPSBmdW5jdGlvbigkaW5fdHlwZXMpIHVzZSAoJGZpbmRfdHlwZSkgewogICAgLy8gYW55dGhpbmcgdGhhdCBpcyBub3QgYSBrbm93biBsYWJlbAogICAgZm9yZWFjaCggJGluX3R5cGVzIGFzICRvbmUgKSB7CiAgICAgICAgJHRtcCA9ICRmaW5kX3R5cGUoYXJyYXkoJG9uZSkpOwogICAgICAgIGlmKCAhJHRtcCApIHJldHVybiAkb25lOwogICAgfQp9OwoKJG1vZCA9ICR0aGlzOwokaW1wb3J0X2Zyb21fdmNhcmQgPSBmdW5jdGlvbih2Q2FyZCAkdmNhcmQsJHByZWZzKSB1c2UgKCYkbW9kLCRmaW5kX3R5cGUsJGZpbmRfbGFiZWwsJHByb2Nlc3NfcGhvdG8pIHsKICAgIC8vIGltcG9ydCBhIHNpbmdsZSBjb250YWN0CiAgICB0cnkgewogICAgICAgIC8vIGRvdWJsZSBjaGVjayB0aGUgdmVyc2lvbgogICAgICAgIGlmKCAhJHZjYXJkLT52ZXJzaW9uICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ01hbGZvcm1lZCB2Y2FyZCBmaWxlJyk7CiAgICAgICAgJHZlcnNpb24gPSAkdmNhcmQtPnZlcnNpb25bMF07CiAgICAgICAgaWYoIHZlcnNpb25fY29tcGFyZSgkdmVyc2lvbiwnMy4wJykgIT0gMCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdDYW4gb25seSBpbXBvcnQgdmNhcmQgdjMuMCBmb3JtYXQnKTsKCiAgICAgICAgJGNvbnRhY3QgPSBuZXcgXENHQ29udGFjdHNcY29udGFjdDsKICAgICAgICBpZiggJHZjYXJkLT51aWQgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkdWlkID0gJHZjYXJkLT51aWRbMF07CiAgICAgICAgICAgICAgICAkcmV2ID0gJHZjYXJkLT5yZXZbMF07CiAgICAgICAgICAgICAgICAkdG1wID0gc3RydG90aW1lKCRyZXYpOwoKICAgICAgICAgICAgICAgIC8vIHRyeSB0byBsb2FkIGEgY29udGFjdCB3aXRoIHRoaXMgdWlkCiAgICAgICAgICAgICAgICAkY29udGFjdCA9IFxDR0NvbnRhY3RzXGNvbnRhY3Q6OmxvYWRfYnlfZ3VpZCgkdWlkKTsKICAgICAgICAgICAgICAgIGlmKCAkcHJlZnNbJ3VwZGF0ZV9jaGVja3JldiddICYmICRjb250YWN0LT5nZXRfbW9kaWZpZWQoKSA+ICR0bXAgKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ01vZGlmaWVkIHRpbWUgb2YgY29udGFjdCBpbiBkYXRhYmFzZSBpcyBncmVhdGVyIHRoYW4gcmV2aXNpb24gZGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgLy8gbm8gY29udGFjdCBmb3VuZC4gYnV0IHdlIGhhdmUgYSBVSUQKICAgICAgICAgICAgICAgICRjb250YWN0LT5zZXRfZ3VpZCgkdmNhcmQtPnVpZFswXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGNvbXBhbnkvb3JnL3JvbGUgKG9ubHkgb25lIGFsbG93ZWQpCiAgICAgICAgaWYoICR2Y2FyZC0+b3JnICkgewogICAgICAgICAgICAkdmFsID0gJHZjYXJkLT5vcmdbMF1bJ05hbWUnXTsKICAgICAgICAgICAgJGNvbnRhY3QtPnNldF9jb21wYW55KCR2YWwpOzsKICAgICAgICB9CiAgICAgICAgaWYoICR2Y2FyZC0+dGl0bGUgKSB7CiAgICAgICAgICAgICR2YWwgPSAkdmNhcmQtPnRpdGxlWzBdOwogICAgICAgICAgICAkY29udGFjdC0+c2V0X3RpdGxlKCR2YWwpOwogICAgICAgIH0KICAgICAgICBpZiggJHZjYXJkLT5yb2xlICkgewogICAgICAgICAgICAkdmFsID0gJHZjYXJkLT5yb2xlWzBdOwogICAgICAgICAgICAkY29udGFjdC0+c2V0X3JvbGUoJHZhbCk7CiAgICAgICAgfQoKICAgICAgICAvLyBub3RlIChvbmx5IG9uZSkKICAgICAgICBpZiggJHZjYXJkLT5ub3RlICkgewogICAgICAgICAgICAkdmFsID0gJHZjYXJkLT5ub3RlOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZjYXJkLT5ub3RlKSApICR2YWwgPSAkdmNhcmQtPm5vdGVbMF07CiAgICAgICAgICAgICRjb250YWN0LT5zZXRfbm90ZSgkdmFsKTsKICAgICAgICB9CgogICAgICAgIC8vIHVybCAob25seSBvbmUpCiAgICAgICAgaWYoICR2Y2FyZC0+dXJsICkgewogICAgICAgICAgICAkdmFsID0gJHZjYXJkLT51cmw7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmNhcmQtPnVybCkgKSAkdmFsID0gJHZjYXJkLT51cmxbMF07CiAgICAgICAgICAgICRjb250YWN0LT5pbnNlcnRfc2V0X3VybCgkdmFsKTsKICAgICAgICB9CgogICAgICAgIC8vIG5hbWUKICAgICAgICBpZiggaXNfYXJyYXkoJHZjYXJkLT5uKSAmJiBjb3VudCgkdmNhcmQtPm4pICkgewogICAgICAgICAgICAkcmVjID0gJHZjYXJkLT5uWzBdOwogICAgICAgICAgICAkY29udGFjdC0+c2V0X25hbWUoJHJlY1snUHJlZml4ZXMnXSwkcmVjWydGaXJzdE5hbWUnXSwkcmVjWydBZGRpdGlvbmFsTmFtZXMnXSwkcmVjWydMYXN0TmFtZSddLCRyZWNbJ1N1ZmZpeGVzJ10pOwogICAgICAgIH0KICAgICAgICBpZiggJHZjYXJkLT5mbiApIHsKICAgICAgICAgICAgJGNvbnRhY3QtPnNldF9mdWxsbmFtZSgkdmNhcmQtPmZuWzBdKTsKICAgICAgICB9CgogICAgICAgIC8vIGFkZHJlc3NlcwogICAgICAgIGlmKCBpc19hcnJheSgkdmNhcmQtPmFkcikgJiYgY291bnQoJHZjYXJkLT5hZHIpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdmNhcmQtPmFkciBhcyAkYWRkciApIHsKICAgICAgICAgICAgICAgICR0eXBlcyA9ICRhZGRyWydUeXBlJ107CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdHlwZXMgYXMgJiR0bXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9IHN0cnRvbG93ZXIoJHRtcCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHByZWZlcnJlZCA9IDA7CiAgICAgICAgICAgICAgICBpZiggKCRrZXkgPSBhcnJheV9zZWFyY2goJ3ByZWYnLCR0eXBlcykpICE9PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkdHlwZXNbJGtleV0pOwogICAgICAgICAgICAgICAgICAgICRwcmVmZXJyZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICR0eXBlcyA9IGFycmF5X3ZhbHVlcygkdHlwZXMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRsYWJlbCA9ICd1bmtub3duJzsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkdHlwZXNbMF0pICYmIGNvdW50KCR0eXBlc1swXSkgKSAkbGFiZWwgPSAkdHlwZXNbMF07CiAgICAgICAgICAgICAgICAkY29udGFjdC0+aW5zZXJ0X2FkZF9hZGRyZXNzKCRhZGRyWydTdHJlZXRBZGRyZXNzJ10sJGFkZHJbJ1BPQm94J10sJGFkZHJbJ0xvY2FsaXR5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGRyWydSZWdpb24nXSwkYWRkclsnUG9zdGFsQ29kZSddLCRhZGRyWydDb3VudHJ5J10sJGxhYmVsLCRwcmVmZXJyZWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBwaG9uZSBudW1iZXJzCiAgICAgICAgaWYoIGlzX2FycmF5KCR2Y2FyZC0+dGVsKSAmJiBjb3VudCgkdmNhcmQtPnRlbCkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR2Y2FyZC0+dGVsIGFzICR0ZWwgKSB7CiAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0ZWwpICkgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3ZvaWNlJzsKICAgICAgICAgICAgICAgICAgICAkbGFiZWwgPSAndW5rbm93bic7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRhY3QtPmluc2VydF9hZGRfcGhvbmUoJHR5cGUsJHRlbCwkbGFiZWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGVzID0gJHRlbFsnVHlwZSddOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goICR0eXBlcyBhcyAmJHRtcCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCA9IHN0cnRvbG93ZXIoJHRtcCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcHJlZmVycmVkID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiggKCRrZXkgPSBhcnJheV9zZWFyY2goJ3ByZWYnLCR0eXBlcykpICE9PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHR5cGVzWyRrZXldKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHByZWZlcnJlZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlcyA9IGFycmF5X3ZhbHVlcygkdHlwZXMpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkZmluZF90eXBlKCR0eXBlcyk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkdHlwZSApICR0eXBlID0gXENHQ29udGFjdHNcY29udGFjdF9waG9uZTo6VFlQRV9WT0lDRTsKICAgICAgICAgICAgICAgICAgICAkbGFiZWwgPSAkZmluZF9sYWJlbCgkdHlwZXMpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhJGxhYmVsICkgJGxhYmVsID0gJ3Vua25vd24nOwogICAgICAgICAgICAgICAgICAgICRjb250YWN0LT5pbnNlcnRfYWRkX3Bob25lKCR0eXBlLCR0ZWxbJ1ZhbHVlJ10sJGxhYmVsLCRwcmVmZXJyZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBlbWFpbCBhZGRyZXNzZXMKICAgICAgICBpZiggaXNfYXJyYXkoJHZjYXJkLT5lbWFpbCkgJiYgY291bnQoJHZjYXJkLT5lbWFpbCkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR2Y2FyZC0+ZW1haWwgYXMgJGVtYWlsICkgewogICAgICAgICAgICAgICAgJHR5cGVzID0gJGVtYWlsWydUeXBlJ107CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdHlwZXMgYXMgJiR0bXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9IHN0cnRvbG93ZXIoJHRtcCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHByZWZlcnJlZCA9IDA7CiAgICAgICAgICAgICAgICBpZiggKCRrZXkgPSBhcnJheV9zZWFyY2goJ3ByZWYnLCR0eXBlcykpICE9PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkdHlwZXNbJGtleV0pOwogICAgICAgICAgICAgICAgICAgICRwcmVmZXJyZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICR0eXBlcyA9IGFycmF5X3ZhbHVlcygkdHlwZXMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRsYWJlbCA9ICd1bmtub3duJzsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkdHlwZXNbMF0pICYmIGNvdW50KCR0eXBlc1swXSkgKSAkbGFiZWwgPSAkdHlwZXNbMF07CiAgICAgICAgICAgICAgICAkY29udGFjdC0+aW5zZXJ0X2FkZF9lbWFpbCgkZW1haWxbJ1ZhbHVlJ10sJGxhYmVsLCRwcmVmZXJyZWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBjYXRlZ29yaWUocykKICAgICAgICBpZiggJHZjYXJkLT5jYXRlZ29yaWVzICkgewogICAgICAgICAgICAkdmFsID0gJHZjYXJkLT5jYXRlZ29yaWVzWzBdOwogICAgICAgICAgICBpZiggJHZhbCApIHsKICAgICAgICAgICAgICAgICRsaXN0ID0gJHZhbDsKICAgICAgICAgICAgICAgIGlmKCBpc19zdHJpbmcoJHZhbCkgKSAkbGlzdCA9IGV4cGxvZGUoJywnLCR2YWwpOwogICAgICAgICAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGxpc3QpOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgICRjYXRfaWQgPSBcQ0dDb250YWN0c1xjYXRlZ29yeTo6Z2V0X2NhdGVnb3J5X2lkKCRsaXN0WyRpXSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkY2F0X2lkICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXRlZ29yeSBuYW1lIG5vdCBmb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVyZSB3ZSBjb3VsZCBjcmVhdGUgYSBuZXcgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoICRjYXRfaWQgKSAkY29udGFjdC0+YWRkX2NhdGVnb3J5KCRjYXRfaWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBpbWFnZQogICAgICAgIGlmKCBpc19hcnJheSgkdmNhcmQtPnBob3RvKSAmJiBjb3VudCgkdmNhcmQtPnBob3RvKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJHZjYXJkLT5waG90byBhcyAkcGhvdG8gKSB7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHBob3RvWydFbmNvZGluZyddKSAmJiAkcGhvdG9bJ0VuY29kaW5nJ10gPT0gJ2InICkgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2pwZWcnOwogICAgICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkcGhvdG9bJ1R5cGUnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkcGhvdG9bJ1R5cGUnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICRwaG90b1snVHlwZSddWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkcGhvdG9bJ1R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBpdCdzIGFscmVhZHkgZW5jb2RlZAogICAgICAgICAgICAgICAgICAgICRkYXRhX3VyaSA9ICdkYXRhOmltYWdlLycuJHR5cGUuJztiYXNlNjQsJy4kcGhvdG9bJ1ZhbHVlJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZGF0YV91cmkgPSAkcHJvY2Vzc19waG90bygkcGhvdG9bJ1ZhbHVlJ10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoICRkYXRhX3VyaSApIHsKICAgICAgICAgICAgICAgICAgICAkY29udGFjdC0+c2V0X2ltYWdlKCRkYXRhX3VyaSk7CiAgICAgICAgICAgICAgICAgICAgLy8gb25seSBuZWVkIG9uZSBpbWFnZQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY29udGFjdC0+c2F2ZSgpOwogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgcmV0dXJuICRlLT5HZXRNZXNzYWdlKCk7CiAgICB9Cn07CgppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkgewogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQplbHNlIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICB0cnkgewogICAgICAgICRwcmVmcyA9IGFycmF5KCk7CiAgICAgICAgJHByZWZzWyd1cGRhdGVfY2hlY2tyZXYnXSA9IChpbnQpICRwYXJhbXNbJ3VwZGF0ZV9jaGVja3JldiddOwoKICAgICAgICAka2V5ID0gJGlkLidmaWxlJzsKICAgICAgICBpZiggIWlzc2V0KCRfRklMRVNbJGtleV0pIHx8ICRfRklMRVNbJGtleV1bJ3NpemUnXSA9PSAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9ub2ZpbGV1cGxvYWRlZCcpKTsKICAgICAgICAkZmlsZSA9ICRfRklMRVNbJGtleV07CiAgICAgICAgaWYoICRmaWxlWydlcnJvciddICE9IDAgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VwbG9hZHByb2JsZW0nKSk7CiAgICAgICAgJHZhbGlkX3R5cGVzID0gYXJyYXkoJ3RleHQvdmNhcmQnLCd0ZXh0L3gtdmNhcmQnLCd0ZXh0L2RpcmVjdG9yeScpOwogICAgICAgIGlmKCAhaW5fYXJyYXkoJGZpbGVbJ3R5cGUnXSwkdmFsaWRfdHlwZXMpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl91cGxvYWRmaWxldHlwZScsJ3RleHQvdmNhcmQnLCRmaWxlWyd0eXBlJ10pKTsKCiAgICAgICAgJGVycm9ycyA9IGFycmF5KCk7CiAgICAgICAgJG5pbXBvcnRlZCA9IDA7CiAgICAgICAgcmVxdWlyZV9vbmNlKF9fRElSX18uJy92ZW5kb3IvdkNhcmQtcGFyc2VyL3ZDYXJkLnBocCcpOwogICAgICAgICR2Q2FyZCA9IG5ldyB2Q2FyZCgkZmlsZVsndG1wX25hbWUnXSk7CiAgICAgICAgaWYoIGNvdW50KCR2Q2FyZCkgPT0gMSApICB7CiAgICAgICAgICAgICRyZXMgPSAkaW1wb3J0X2Zyb21fdmNhcmQoJHZDYXJkLCRwcmVmcyk7CiAgICAgICAgICAgIGlmKCAkcmVzICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXMpOyAvLyBvbmUgdmNhcmQsIGp1c3QgdGhyb3cgYW4gZXhjZXB0aW9uLgogICAgICAgICAgICAkbmltcG9ydGVkKys7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkaWR4ID0gMDsKICAgICAgICAgICAgZm9yZWFjaCggJHZDYXJkIGFzICRpbiApIHsKICAgICAgICAgICAgICAgICRyZXMgPSAkaW1wb3J0X2Zyb21fdmNhcmQoJGluLCRwcmVmcyk7CiAgICAgICAgICAgICAgICBpZiggISRyZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgJGVycm9yc1skaWR4XSA9ICRyZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbmltcG9ydGVkKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaWR4Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCBjb3VudCgkZXJyb3JzKSApIHsKICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcnMnLCRlcnJvcnMpOwogICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnQnKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX25pbXBvcnRlZCcsJG5pbXBvcnRlZCkpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwogICAgICAgIH0KICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICB9Cn0KCgovLyBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9pbXBvcnRfdmNhcmQnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5faW1wb3J0X3ZjYXJkLnRwbCcpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.ajax_contactinfo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGNvbnRhY3RfaWQgPSAoaW50KSBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkX1JFUVVFU1QsJ2NvbnRhY3RfaWQnLC0xKTsKJG91dHB1dCA9IG51bGw7Cgp0cnkgewogICAgJGNvbnRhY3QgPSBcQ0dDb250YWN0c1xjb250YWN0Ojpsb2FkKCRjb250YWN0X2lkKTsKICAgICRvdXRwdXQgPSBhcnJheSgnc3RhdHVzJz0+J09LJywnZGF0YSc9Pm51bGwpOwogICAgJHRtcCA9ICRjb250YWN0LT5nZXRfY2dlX2FkZHJlc3MoKS0+dG9fYXJyYXkoKTsKICAgICR0bXBbJ2ZldV91aWQnXSA9ICRjb250YWN0LT5nZXRfZmV1X3VpZCgpOwogICAgJHRtcFsnZnVsbG5hbWUnXSA9ICRjb250YWN0LT5nZXRfZnVsbG5hbWUoKTsKICAgICRvdXRwdXQgPSBhcnJheSgnc3RhdHVzJz0+J09LJywnZGF0YSc9PiR0bXApOwogICAgZGVidWdfdG9fbG9nKCRvdXRwdXQsJ19fRklMRV9fJyk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkb3V0cHV0ID0gYXJyYXkoJ3N0YXR1cyc9PidFUlJPUicsJ21zZyc9PiRlLT5HZXRNZXNzYWdlKCkpOwogICAgZGVidWdfdG9fbG9nKCRlLT5HZXRNZXNzYWdlKCksJ19fRklMRV9fJyk7Cn0KCmNnZV91dGlsczo6c2VuZF9hamF4X2FuZF9leGl0KCRvdXRwdXQpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.ajax_findcontact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJG91dHB1dCA9IGFycmF5KCdzdGF0dXMnPT4nT0snKTsKJGNhdGVnb3J5ID0gKGludCkgY2dlX3V0aWxzOjpnZXRfcGFyYW0oJF9SRVFVRVNULCdjYXRlZ29yeScpOwokbGltaXQgPSAoaW50KSBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkX1JFUVVFU1QsJ2xpbWl0JywxMCk7CiRhdXRvY29tcGxldGUgPSAoaW50KSBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkX1JFUVVFU1QsJ2F1dG9jb21wbGV0ZScsMCk7CiRuYW1lID0gdHJpbShjZ2VfdXRpbHM6OmdldF9wYXJhbSgkX1JFUVVFU1QsJ25hbWUnKSk7CmlmKCAkYXV0b2NvbXBsZXRlICkgewogICAgJG5hbWUgPSB0cmltKGNnZV91dGlsczo6Z2V0X3BhcmFtKCRfUkVRVUVTVCwndGVybScpKTsKfQoKdHJ5IHsKICAgICRxdWVyeSA9IG5ldyBcQ0dDb250YWN0c1xjb250YWN0X3F1ZXJ5OwogICAgJHF1ZXJ5WydsaW1pdCddID0gJGxpbWl0OwogICAgJHF1ZXJ5WydjYXRlZ29yeSddID0gJGNhdGVnb3J5OwogICAgJHF1ZXJ5WyduYW1lJ10gPSAkbmFtZTsKICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgJHRtcCA9IGFycmF5KCk7CiAgICB3aGlsZSggISRycy0+RU9GKCkgKSB7CiAgICAgICAgJG9iaiA9ICRycy0+Z2V0X2NvbnRhY3QoKTsKICAgICAgICAkdG1wMiA9IGFycmF5KCk7CiAgICAgICAgaWYoICRhdXRvY29tcGxldGUgKSB7CiAgICAgICAgICAgICR0bXAyWyd2YWx1ZSddID0gJG9iai0+Z2V0X2lkKCk7CiAgICAgICAgICAgICR0bXAyWydsYWJlbCddID0gJG9iai0+Z2V0X2Rpc3BsYXlfbmFtZSgpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHRtcDJbJ2lkJ10gPSAkb2JqLT5nZXRfaWQoKTsKICAgICAgICAgICAgJHRtcDJbJ25hbWUnXSA9ICRvYmotPmdldF9kaXNwbGF5X25hbWUoKTsKICAgICAgICB9CiAgICAgICAgJHRtcDJbJ2NvbnRhY3QnXSA9ICRvYmotPnRvX2RhdGEoKTsKICAgICAgICAkdG1wW10gPSAkdG1wMjsKICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICB9CiAgICBpZiggJGF1dG9jb21wbGV0ZSApIHsKICAgICAgICAkb3V0cHV0ID0gJHRtcDsKICAgIH0gZWxzZSB7CiAgICAgICAgJG91dHB1dFsncmVzdWx0cyddID0gJHRtcDsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGRlYnVnX3RvX2xvZygkZGItPnNxbCk7CiAgICBkZWJ1Z190b19sb2coJ0Vycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgJG91dHB1dFsnc3RhdHVzJ10gPSAnRVJST1InOwogICAgJG91dHB1dFsnbXNnJ10gPSAkZS0+R2V0TWVzc2FnZSgpOwp9CgpjZ2VfdXRpbHM6OnNlbmRfYWpheF9hbmRfZXhpdCgkb3V0cHV0KTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.ajax_getcontact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGNvbnRhY3RfaWQgPSAoaW50KSBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkX1JFUVVFU1QsJ2NvbnRhY3RfaWQnLC0xKTsKJHRlbXBsYXRlICA9IGNnZV91dGlsczo6Z2V0X3BhcmFtKCRfUkVRVUVTVCwndGVtcGxhdGUnLCdhamF4X2dldGNvbnRhY3QudHBsJyk7CiRvdXRwdXQgPSBudWxsOwoKdHJ5IHsKICAgICRjb250YWN0ID0gXENHQ29udGFjdHNcY29udGFjdDo6bG9hZCgkY29udGFjdF9pZCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2NvbnRhY3QnLCRjb250YWN0KTsKICAgICRzbWFydHktPmFzc2lnbignZnJvbnRlbmQnLENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Nhbl9lZGl0JywkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKENHQ29udGFjdHM6OlBFUk0pKTsKICAgICRvdXRwdXQgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCR0ZW1wbGF0ZSk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkb3V0cHV0ID0gJGUtPkdldE1lc3NhZ2UoKTsKfQoKY2dlX3V0aWxzOjpzZW5kX2FqYXhfYW5kX2V4aXQoJG91dHB1dCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSApIHJldHVybjsKCi8vIHRhYiBoZWFkZXJzCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbihDR0NvbnRhY3RzOjpQRVJNKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignY29udGFjdHMnLCR0aGlzLT5MYW5nKCd0YWJfY29udGFjdHMnKSk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6Q0FUU19QRVJNKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignY2F0ZWdvcmllcycsJHRoaXMtPkxhbmcoJ3RhYl9jYXRlZ29yaWVzJykpOwovLyAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NldHRpbmdzJywkdGhpcy0+TGFuZygndGFiX3NldHRpbmdzJykpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCi8vIHRhYiBjb250ZW50CmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbihDR0NvbnRhY3RzOjpQRVJNKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjb250YWN0cycpOwogICAgaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fY29udGFjdHNfdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6Q0FUU19QRVJNKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjYXRlZ29yaWVzJyk7CiAgICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9jYXRlZ29yaWVzX3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CmVjaG8gJHRoaXMtPmVuZFRhYkNvbnRlbnQoKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/CGContacts.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ29udGFjdHMgKGMpIDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0cyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmRlZmluZSgnQ0dDT05UQUNUU19UQkwnLGNtc19kYl9wcmVmaXgoKS4nbW9kX2NnY29udGFjdHMnKTsKZGVmaW5lKCdDR0NPTlRBQ1RTX1NVQl9UQkwnLGNtc19kYl9wcmVmaXgoKS4nbW9kX2NnY29udGFjdHNfc3ViJyk7CmRlZmluZSgnQ0dDT05UQUNUU19DQVRTX1RCTCcsY21zX2RiX3ByZWZpeCgpLidtb2RfY2djb250YWN0c19jYXRzJyk7CmRlZmluZSgnQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwnLGNtc19kYl9wcmVmaXgoKS4nbW9kX2NnY29udGFjdHNfYWRyX2NhdHMnKTsKCmNsYXNzIENHQ29udGFjdHMgZXh0ZW5kcyBDR0V4dGVuc2lvbnMKewogICAgY29uc3QgUEVSTSA9ICdNYW5hZ2UgQ29udGFjdHMnOwogICAgY29uc3QgQ0FUU19QRVJNID0gJ01hbmFnZSBDb250YWN0IENhdGVnb3JpZXMnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOwogICAgICAgICR0aGlzLT5BZGRJbWFnZURpcignaW1hZ2VzJyk7CgogICAgICAgICRzbWFydHkgPSBcY21zX3V0aWxzOjpnZXRfc21hcnR5KCk7CiAgICAgICAgaWYoICEkc21hcnR5ICkgcmV0dXJuOwoKICAgICAgICAvLyByZWdpc3RlciBzb21lIG5pY2Ugc21hcnR5IHBsdWdpbnMgdGhhdCB3ZSBjYW4gdXNlIGJvdGggb24gdGhlIGFkbWluIHNpZGUgYW5kIHRoZSBmcm9udGVuZAogICAgICAgIC8vJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnY19kaXNwbGF5bmFtZScsICdcQ0dDb250YWN0c1xjb250YWN0X3NtYXJ0eTo6ZGlzcGxheW5hbWUnICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSB7IHJldHVybiBnZXRfY2xhc3MoJHRoaXMpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcxLjMuMic7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcxLjEyLjEnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ2NhbGd1eTEwMDAnOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7IHJldHVybiAnY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyc7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7IHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoX19ESVJfXy4nL2RvYy9jaGFuZ2Vsb2cuaW5jJyk7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIFRSVUU7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIFRSVUU7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBIYW5kbGVzRXZlbnRzICgpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkgeyByZXR1cm4gVFJVRTsgfQogICAgcHVibGljIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7IHJldHVybiBUUlVFOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dBdXRvSW5zdGFsbCgpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpIHsgcmV0dXJuIEZBTFNFOyB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpIHsKICAgICAgICByZXR1cm4gYXJyYXkoJ0NHRXh0ZW5zaW9ucyc9PicxLjUzLjEnLCdDR1NpbXBsZVNtYXJ0eSc9PicxLjknLCdDR0hUTUwyUERGJz0+JzEuMCcsJ0pRdWVyeVRvb2xzJz0+JzEuMy44Jyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbihDR0NvbnRhY3RzOjpQRVJNKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKENHQ29udGFjdHM6OkNBVFNfUEVSTSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQogICAgewogICAgICAgICRvdXQgPSBwYXJlbnQ6OkdldEhlYWRlckhUTUwoKTsKICAgICAgICAkY3NzX2ZtdCA9ICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IiVzIi8+JzsKCiAgICAgICAgJHVybCA9ICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkuJy9saWIvY29udGFjdF9mb3JtLmNzcyc7CiAgICAgICAgJG91dCAuPSBzcHJpbnRmKCRjc3NfZm10LCR1cmwpOwoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.category.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTI2NTY5NzY3NiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0yNjU2OTc2NzYiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE3NjMwMjM3NDUiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTc2MzAyMzc0NSIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+IDxpIGNsYXNzPSJpY29uLWxldmVsLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlxDR0NvbnRhY3RzPC9zbWFsbD5jYXRlZ29yeTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPkEgY2xhc3MgdG8gcmVwcmVzZW50IGEgY2F0ZWdvcnkgd2l0aGluIHRoZSBDR0NvbnRhY3RzIG1vZHVsZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjbWV0aG9kX2lzX2NoaWxkX29mIiBjbGFzcz0iIj5pc19jaGlsZF9vZigpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sI21ldGhvZF9zYXZlIiBjbGFzcz0iIj5zYXZlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjbWV0aG9kX2RlbGV0ZSIgY2xhc3M9IiI+ZGVsZXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjbWV0aG9kX2xvYWQiIGNsYXNzPSIiPmxvYWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCNtZXRob2RfZ2V0X2FsbCIgY2xhc3M9IiI+Z2V0X2FsbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sI21ldGhvZF9nZXRfbGlzdCIgY2xhc3M9IiI+Z2V0X2xpc3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCNtZXRob2RfZ2V0X3RyZWUiIGNsYXNzPSIiPmdldF90cmVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjbWV0aG9kX2dldF9jYXRlZ29yeV9pZCIgY2xhc3M9IiI+Z2V0X2NhdGVnb3J5X2lkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjbWV0aG9kX2dldF9jYXRlZ29yeV9uYW1lIiBjbGFzcz0iIj5nZXRfY2F0ZWdvcnlfbmFtZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sI3Byb3BlcnR5X2lkIiBjbGFzcz0iIj4kaWQ8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjcHJvcGVydHlfbmFtZSIgY2xhc3M9IiI+JG5hbWU8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjcHJvcGVydHlfZGVzY3JpcHRpb24iIGNsYXNzPSIiPiRkZXNjcmlwdGlvbjwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCNwcm9wZXJ0eV9wYXJlbnRfaWQiIGNsYXNzPSIiPiRwYXJlbnRfaWQ8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjcHJvcGVydHlfaXRlbV9vcmRlciIgY2xhc3M9IiI+JGl0ZW1fb3JkZXI8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwjcHJvcGVydHlfaGllcmFyY2h5IiBjbGFzcz0iIj4kaGllcmFyY2h5PC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sI3Byb3BlcnR5X2xvbmdfbmFtZSIgY2xhc3M9IiI+JGxvbmdfbmFtZTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gY29uc3RhbnRzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY2F0ZWdvcnkucGhwLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+Y2xhc3MuY2F0ZWdvcnkucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1xjYXRlZ29yeTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9InByb3BlcnRpZXMiIG5hbWU9InByb3BlcnRpZXMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxoMj5Qcm9wZXJ0aWVzPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV9pZCIgbmFtZT0icHJvcGVydHlfaWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InByb3BlcnR5Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+JGlkPC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JGlkIDogaW50PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGUgY2F0ZWdvcnkgaWQuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+VHlwZTwvaDQ+CiAgICAgICAgICAgICAgICBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPjxlbT5Ob25lIGZvdW5kPC9lbT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV9uYW1lIiBuYW1lPSJwcm9wZXJ0eV9uYW1lIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJwcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPiRuYW1lPC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JG5hbWUgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoZSBjYXRlZ29yeSBuYW1lLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlR5cGU8L2g0PgogICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj48ZW0+Tm9uZSBmb3VuZDwvZW0+PC90ZD48L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0icHJvcGVydHlfZGVzY3JpcHRpb24iIG5hbWU9InByb3BlcnR5X2Rlc2NyaXB0aW9uIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJwcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPiRkZXNjcmlwdGlvbjwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPiRkZXNjcmlwdGlvbiA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhlIGNhdGVnb3J5IGRlc2NyaXB0aW9uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+VHlwZTwvaDQ+CiAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPjxlbT5Ob25lIGZvdW5kPC9lbT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV9wYXJlbnRfaWQiIG5hbWU9InByb3BlcnR5X3BhcmVudF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0icHJvcGVydHkiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj4kcGFyZW50X2lkPC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JHBhcmVudF9pZCA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhlIGlkIG9mIHRoaXMgb2JqZWN0cycgcGFyZW50LiAgb3IgLTE8L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5UeXBlPC9oND4KICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+PGVtPk5vbmUgZm91bmQ8L2VtPjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9InByb3BlcnR5X2l0ZW1fb3JkZXIiIG5hbWU9InByb3BlcnR5X2l0ZW1fb3JkZXIiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InByb3BlcnR5Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+JGl0ZW1fb3JkZXI8L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj4kaXRlbV9vcmRlciA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhlIG9yZGVyIG9mIHRoaXMgb2JqZWN0IGFtb25nc3QgaXQncyBwZWVycy48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5UeXBlPC9oND4KICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+PGVtPk5vbmUgZm91bmQ8L2VtPjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9InByb3BlcnR5X2hpZXJhcmNoeSIgbmFtZT0icHJvcGVydHlfaGllcmFyY2h5IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJwcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPiRoaWVyYXJjaHk8L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj4kaGllcmFyY2h5IDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD4ocmVhZCBvbmx5KSBUaGUgaGllcmFyY2h5IG9mIHRoaXMgb2JqZWN0IChwYXRoIHRvIHRoZSByb290KSBleHByZXNzZWQgaW4gY2F0ZWdvcnkgaWRzLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlR5cGU8L2g0PgogICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj48ZW0+Tm9uZSBmb3VuZDwvZW0+PC90ZD48L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0icHJvcGVydHlfbG9uZ19uYW1lIiBuYW1lPSJwcm9wZXJ0eV9sb25nX25hbWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InByb3BlcnR5Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+JGxvbmdfbmFtZTwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPiRsb25nX25hbWUgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPihyZWFkIG9ubHkpIFRoZSBoaWVyYXJjaHkgb2YgdGhpcyBvYmplY3QgKHBhdGggdG8gdGhlIHJvb3QpIGV4cHJlc3NlZCBpbiB0ZXJtcyBvZiBjYXRlZ29yeSBuYW1lcy48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5UeXBlPC9oND4KICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+PGVtPk5vbmUgZm91bmQ8L2VtPjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJtZXRob2RzIiBuYW1lPSJtZXRob2RzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj48aDI+TWV0aG9kczwvaDI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPjwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pc19jaGlsZF9vZiIgbmFtZT0ibWV0aG9kX2lzX2NoaWxkX29mIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19jaGlsZF9vZigpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aXNfY2hpbGRfb2YoaW50IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGE8L3NwYW4+LCBpbnQgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kYjwvc3Bhbj4pIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgY2F0ZWdvcnkgQSBpcyBhIGNoaWxkIG9mIGNhdGVnb3J5IEI8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+aW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5UaGUgZmlyc3QgY2F0ZWdvcnkgaWQuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5pbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kYjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPlRoZSBzZWNvbmQgY2F0ZWdvcnkgaWQuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPnN0YXRpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2F2ZSIgbmFtZT0ibWV0aG9kX3NhdmUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNhdmUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNhdmUoYm9vbCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR1cGRhdGVfcG9zaXRpb25zPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TYXZlIHRoaXMgY29udGVudCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmJvb2w8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdXBkYXRlX3Bvc2l0aW9uczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPkEgZmxhZyBpbmRpY2F0aW5nIHdldGhlciBvciBub3QgdG8gdXBkYXRlIGhpZXJhcmNoeSBwb3NpdGlvbnMgYWNyb3NzIGFsbCBjYXRlZ29yaWVzLjwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2RlbGV0ZSIgbmFtZT0ibWV0aG9kX2RlbGV0ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+ZGVsZXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5kZWxldGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkRlbGV0ZSB0aGlzIGNhdGVnb3J5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2xvYWQiIG5hbWU9Im1ldGhvZF9sb2FkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5sb2FkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5sb2FkKGludCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRpZDwvc3Bhbj4pIDogXENHQ29udGFjdHNcY2F0ZWdvcnk8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Mb2FkIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkgb2JqZWN0LCBnaXZlbiBpdCYjMDM5O3MgaWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmludDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRpZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPlxDR0NvbnRhY3RzXGNhdGVnb3J5PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPnN0YXRpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2FsbCIgbmFtZT0ibWV0aG9kX2dldF9hbGwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9hbGwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9hbGwoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+TG9hZCBhbGwgY2F0ZWdvcmllcyBhcyBhIGZsYXQgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5zdGF0aWM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9saXN0IiBuYW1lPSJtZXRob2RfZ2V0X2xpc3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9saXN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfbGlzdCgpIDogYXJyYXk8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNhdGVnb3JpZXMgYXMgYSBsaXN0CnN1aXRhYmxlIGZvciB1c2UgaW4gYSBkcm9wZG93bi48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBhcnJheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPnN0YXRpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3RyZWUiIG5hbWU9Im1ldGhvZF9nZXRfdHJlZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3RyZWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF90cmVlKCkgOiBhcnJheTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY2F0ZWdvcmllcyBhcyBhIHRyZWUuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5zdGF0aWM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jYXRlZ29yeV9pZCIgbmFtZT0ibWV0aG9kX2dldF9jYXRlZ29yeV9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NhdGVnb3J5X2lkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2F0ZWdvcnlfaWQoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHN0cjwvc3Bhbj4pIDogaW50PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2l2ZW4gYSBjYXRlZ29yeSBuYW1lLCBhdHRlbXB0IHRvIGZpbmQgYW4gaWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRzdHI8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPnN0YXRpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NhdGVnb3J5X25hbWUiIG5hbWU9Im1ldGhvZF9nZXRfY2F0ZWdvcnlfbmFtZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NhdGVnb3J5X25hbWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jYXRlZ29yeV9uYW1lKGludCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRpZDwvc3Bhbj4pIDogc3RyaW5nfG51bGw8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HaXZlbiBhIGNhdGVnb3J5IGlkLCBnZXQgaXQmIzAzOTtzIG5hbWU8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+aW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGlkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmd8bnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPnN0YXRpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPmNsYXNzLmNhdGVnb3J5LnBocDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNhdGVnb3J5LnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE2MTU0NjU5ODQiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTYxNTQ2NTk4NCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTIwMDYzNzE2NSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xMjAwNjM3MTY1IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3Q8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5BIGNvbnRhY3QgaGFzIG51bWVyb3VzIHByb3BlcnRpZXMgKGZ1bGwgbmFtZSwgbmlja25hbWUsIHRpdGxlLCBjb21wYW55LCBkaXZpc2lvbiwgcm9sZQpjYW4gYmVsb25nIHRvIHplcm8gb3IgbW9yZSBjYXRlZ29yaWVzICh3aGljaCBjYW4gYmUgbmVzdGVkKQphbmQgY2FuIGhhdmUgb25lIG9yIG1vcmUgb2JqZWN0cwogICBzb21lIG9iamVjdHMgKG5hbWUpIGNhbiBvbmx5IGV4aXN0IG9uY2UKICAgb3RoZXIgb2JqZWN0cyBjYW4gZXhpc3QgbXVsdGlwbGUgdGltZXMKICAgICB0aGVzZSBvYmplY3RzIGVhY2ggaGF2ZSBhIGxhYmVsCiAgICAgYW5kIGNhbiBiZSBwcmVmZXJyZWQKbmFtZXM6CiAgaWYgYSBmdWxsbmFtZSBpcyBzZXQsIGl0IGlzIHVzZWQgYXMgdGhlIGRpc3BsYXkgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICA8cD5lbHNlIGlmIG5pY2tuYW1lIGlzIHNldCwgaXQgaXMgdXNlZCBhcyB0aGUgZGlzcGxheSBuYW1lCiAgZWxzZSBpZiBhIG5hbWUgb2JqZWN0IGV4aXN0cywgaXQgaXMgZm9ybWF0dGVkIGFuZCB1c2VkIGFzIHRoZSBkaXNwbGF5IG5hbWUKcHJlZmVycmVkOgogIGlmIG5vIG9iamVjdCBvZiBhIGNlcnRhaW4gdHlwZSBpcyBzZXQgYXMgJ3ByZWZlcnJlZCcgdGhlbiB0aGUgZmlyc3Qgb2JqZWN0CiAgb2YgdGhhdCB0eXBlIGlzIHJldHVybmVkLiAgTXVsdGlwbGUgb2JqZWN0cyBvZiBhIGNlcnRhaW4gdHlwZSBjYW4gYmUgcHJlZmVycmVkCiAgYnV0IG9ubHkgdGhlIGZpcnN0IG9uZSB3aWxsIGJlIHJldHVybmVkIHdoZW4gYXNraW5nIGZvciB0aGUgcHJlZmVycmVkIG9iamVjdCBvZiBhIHR5cGUuCmxhYmVscwogIHVzZXIgZGVmaWVuZCwgYnV0IHN5c3RlbSBtYXkgY3JlYXRlIG51bWVyb3VzIHN0YW5kYXJkIGxhYmVscyAoaS5lOiBob21lL3dvcmspCiAgbGFiZWxzIGNhbm5vdCBiZSBlbXB0eS48L3A+CjxwPk5vdGU6IFRoaXMgY2xhc3MgKGFuZCBpdCdzIGRlcGVuZGVudCBjbGFzc2VzKSB1c2UgaGVhdnkgdXNlIG9mIGV4Y2VwdGlvbnMuPC9wPgoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ic3VtbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5TdW1tYXJ5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBoZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29uc3RhbnRzIj5Db25zdGFudHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwdWJsaWMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9hZGRfb2JqZWN0IiBjbGFzcz0iIj5hZGRfb2JqZWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfY291bnRfb2JqZWN0cyIgY2xhc3M9IiI+Y291bnRfb2JqZWN0cygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9vYmplY3QiIGNsYXNzPSIiPmdldF9vYmplY3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9yZW1vdmVfb2JqZWN0IiBjbGFzcz0iIj5yZW1vdmVfb2JqZWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3ByZWZlcnJlZF9vYmplY3QiIGNsYXNzPSIiPmdldF9wcmVmZXJyZWRfb2JqZWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9IiI+c2V0X3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9pZCIgY2xhc3M9IiI+Z2V0X2lkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X2ZldV91aWQiIGNsYXNzPSIiPmdldF9mZXVfdWlkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2Rfc2V0X2ZldV91aWQiIGNsYXNzPSIiPnNldF9mZXVfdWlkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X2d1aWQiIGNsYXNzPSIiPmdldF9ndWlkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2Rfc2V0X2d1aWQiIGNsYXNzPSIiPnNldF9ndWlkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X2Z1bGxuYW1lIiBjbGFzcz0iIj5nZXRfZnVsbG5hbWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9zZXRfZnVsbG5hbWUiIGNsYXNzPSIiPnNldF9mdWxsbmFtZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9pbWFnZSIgY2xhc3M9IiI+Z2V0X2ltYWdlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2Rfc2V0X2ltYWdlIiBjbGFzcz0iIj5zZXRfaW1hZ2UoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfbG9nbyIgY2xhc3M9IiI+Z2V0X2xvZ28oKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9zZXRfbG9nbyIgY2xhc3M9IiI+c2V0X2xvZ28oKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfbmlja25hbWUiIGNsYXNzPSIiPmdldF9uaWNrbmFtZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX3NldF9uaWNrbmFtZSIgY2xhc3M9IiI+c2V0X25pY2tuYW1lKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X2NvbXBhbnkiIGNsYXNzPSIiPmdldF9jb21wYW55KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2Rfc2V0X2NvbXBhbnkiIGNsYXNzPSIiPnNldF9jb21wYW55KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3RpdGxlIiBjbGFzcz0iIj5nZXRfdGl0bGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9zZXRfdGl0bGUiIGNsYXNzPSIiPnNldF90aXRsZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9yb2xlIiBjbGFzcz0iIj5nZXRfcm9sZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX3NldF9yb2xlIiBjbGFzcz0iIj5zZXRfcm9sZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX3NldF9uYW1lIiBjbGFzcz0iIj5zZXRfbmFtZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9uYW1lIiBjbGFzcz0iIj5nZXRfbmFtZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX3JlbW92ZV9uYW1lIiBjbGFzcz0iIj5yZW1vdmVfbmFtZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9kaXNwbGF5X25hbWUiIGNsYXNzPSIiPmdldF9kaXNwbGF5X25hbWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfdXVpZCIgY2xhc3M9IiI+Z2V0X3V1aWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfc3RhdHVzIiBjbGFzcz0iIj5nZXRfc3RhdHVzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZGlzYWJsZSIgY2xhc3M9IiI+ZGlzYWJsZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2lzX2VuYWJsZWQiIGNsYXNzPSIiPmlzX2VuYWJsZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9zZXRfbm90ZSIgY2xhc3M9IiI+c2V0X25vdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfbm90ZSIgY2xhc3M9IiI+Z2V0X25vdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9hZGRfZW1haWwiIGNsYXNzPSIiPmFkZF9lbWFpbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2luc2VydF9hZGRfZW1haWwiIGNsYXNzPSIiPmluc2VydF9hZGRfZW1haWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfZW1haWwiIGNsYXNzPSIiPmdldF9lbWFpbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9wcmVmZXJyZWRfZW1haWxfb2JqIiBjbGFzcz0iIj5nZXRfcHJlZmVycmVkX2VtYWlsX29iaigpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9wcmVmZXJyZWRfZW1haWwiIGNsYXNzPSIiPmdldF9wcmVmZXJyZWRfZW1haWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfZW1haWxfb2JqZWN0cyIgY2xhc3M9IiI+Z2V0X2VtYWlsX29iamVjdHMoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9yZW1vdmVfZW1haWwiIGNsYXNzPSIiPnJlbW92ZV9lbWFpbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2FkZF91cmwiIGNsYXNzPSIiPmFkZF91cmwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9pbnNlcnRfc2V0X3VybCIgY2xhc3M9IiI+aW5zZXJ0X3NldF91cmwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfdXJsIiBjbGFzcz0iIj5nZXRfdXJsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3ByZWZlcnJlZF91cmwiIGNsYXNzPSIiPmdldF9wcmVmZXJyZWRfdXJsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3VybF9vYmplY3RzIiBjbGFzcz0iIj5nZXRfdXJsX29iamVjdHMoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9yZW1vdmVfdXJsIiBjbGFzcz0iIj5yZW1vdmVfdXJsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfYWRkX2ltIiBjbGFzcz0iIj5hZGRfaW0oKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfaW0iIGNsYXNzPSIiPmdldF9pbSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9wcmVmZXJyZWRfaW0iIGNsYXNzPSIiPmdldF9wcmVmZXJyZWRfaW0oKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9yZW1vdmVfaW0iIGNsYXNzPSIiPnJlbW92ZV9pbSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2FkZF9waG9uZSIgY2xhc3M9IiI+YWRkX3Bob25lKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfaW5zZXJ0X2FkZF9waG9uZSIgY2xhc3M9IiI+aW5zZXJ0X2FkZF9waG9uZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9waG9uZV9vYmplY3QiIGNsYXNzPSIiPmdldF9waG9uZV9vYmplY3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfcGhvbmVfb2JqZWN0X2J5X3R5cGUiIGNsYXNzPSIiPmdldF9waG9uZV9vYmplY3RfYnlfdHlwZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9waG9uZSIgY2xhc3M9IiI+Z2V0X3Bob25lKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3Bob25lX2J5X3R5cGUiIGNsYXNzPSIiPmdldF9waG9uZV9ieV90eXBlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3Bob25lX3R5cGUiIGNsYXNzPSIiPmdldF9waG9uZV90eXBlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3ByZWZlcnJlZF9waG9uZV9vYmoiIGNsYXNzPSIiPmdldF9wcmVmZXJyZWRfcGhvbmVfb2JqKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X3ByZWZlcnJlZF9waG9uZSIgY2xhc3M9IiI+Z2V0X3ByZWZlcnJlZF9waG9uZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9waG9uZV9vYmplY3RzIiBjbGFzcz0iIj5nZXRfcGhvbmVfb2JqZWN0cygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX3JlbW92ZV9waG9uZSIgY2xhc3M9IiI+cmVtb3ZlX3Bob25lKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfYWRkX2FkZHJlc3MiIGNsYXNzPSIiPmFkZF9hZGRyZXNzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfaW5zZXJ0X2FkZF9hZGRyZXNzIiBjbGFzcz0iIj5pbnNlcnRfYWRkX2FkZHJlc3MoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfYWRkcmVzcyIgY2xhc3M9IiI+Z2V0X2FkZHJlc3MoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfcHJlZmVycmVkX2FkZHJlc3MiIGNsYXNzPSIiPmdldF9wcmVmZXJyZWRfYWRkcmVzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9hZGRyZXNzX29iamVjdHMiIGNsYXNzPSIiPmdldF9hZGRyZXNzX29iamVjdHMoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9yZW1vdmVfYWRkcmVzcyIgY2xhc3M9IiI+cmVtb3ZlX2FkZHJlc3MoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9hZGRfY29vcmRzIiBjbGFzcz0iIj5hZGRfY29vcmRzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZ2V0X2Nvb3JkcyIgY2xhc3M9IiI+Z2V0X2Nvb3JkcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9wcmVmZXJyZWRfY29vcmRzIiBjbGFzcz0iIj5nZXRfcHJlZmVycmVkX2Nvb3JkcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX3JlbW92ZV9jb29yZHMiIGNsYXNzPSIiPnJlbW92ZV9jb29yZHMoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9hZGRfZGF0ZSIgY2xhc3M9IiI+YWRkX2RhdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfZGF0ZSIgY2xhc3M9IiI+Z2V0X2RhdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfcHJlZmVycmVkX2RhdGUiIGNsYXNzPSIiPmdldF9wcmVmZXJyZWRfZGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9kYXRlX29iamVjdHMiIGNsYXNzPSIiPmdldF9kYXRlX29iamVjdHMoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9yZW1vdmVfZGF0ZSIgY2xhc3M9IiI+cmVtb3ZlX2RhdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9hZGRfY2F0ZWdvcnkiIGNsYXNzPSIiPmFkZF9jYXRlZ29yeSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9jYXRlZ29yaWVzIiBjbGFzcz0iIj5nZXRfY2F0ZWdvcmllcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9jYXRlZ29yaWVzX2Z1bGwiIGNsYXNzPSIiPmdldF9jYXRlZ29yaWVzX2Z1bGwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9yZW1vdmVfY2F0ZWdvcnkiIGNsYXNzPSIiPnJlbW92ZV9jYXRlZ29yeSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9tb2RpZmllZCIgY2xhc3M9IiI+Z2V0X21vZGlmaWVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfbG9hZCIgY2xhc3M9IiI+bG9hZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2xvYWRfYnlfZ3VpZCIgY2xhc3M9IiI+bG9hZF9ieV9ndWlkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZXhpc3RzIiBjbGFzcz0iIj5leGlzdHMoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF92YWxpZGF0ZSIgY2xhc3M9IiI+dmFsaWRhdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9zYXZlIiBjbGFzcz0iIj5zYXZlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfZGVsZXRlIiBjbGFzcz0iIj5kZWxldGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9nZXRfY2dlX2FkZHJlc3MiIGNsYXNzPSIiPmdldF9jZ2VfYWRkcmVzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNjb25zdGFudF9MQUJFTF9OQU1FIiBjbGFzcz0iIj5MQUJFTF9OQU1FPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjY29uc3RhbnRfU1RBVFVTX0RJU0FCTEVEIiBjbGFzcz0iIj5TVEFUVVNfRElTQUJMRUQ8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwjbWV0aG9kX2dldF9vYmplY3RzX2J5X3R5cGUiIGNsYXNzPSIiPmdldF9vYmplY3RzX2J5X3R5cGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sI21ldGhvZF9fdXBkYXRlIiBjbGFzcz0iIj5fdXBkYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCNtZXRob2RfX2luc2VydCIgY2xhc3M9IiI+X2luc2VydCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcml2YXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0LnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3QucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJjb25zdGFudHMiIG5hbWU9ImNvbnN0YW50cyI+PC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgICAgICAgICAgPGgyPkNvbnN0YW50czwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJjb25zdGFudF9MQUJFTF9OQU1FIiBuYW1lPSJjb25zdGFudF9MQUJFTF9OQU1FIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGlkPSJjb25zdGFudF9MQUJFTF9OQU1FIiBjbGFzcz0iY29uc3RhbnQiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSIiPkxBQkVMX05BTUU8L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj5MQUJFTF9OQU1FPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJjb25zdGFudF9TVEFUVVNfRElTQUJMRUQiIG5hbWU9ImNvbnN0YW50X1NUQVRVU19ESVNBQkxFRCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBpZD0iY29uc3RhbnRfU1RBVFVTX0RJU0FCTEVEIiBjbGFzcz0iY29uc3RhbnQiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSIiPlNUQVRVU19ESVNBQkxFRDwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPlNUQVRVU19ESVNBQkxFRDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0ibWV0aG9kcyIgbmFtZT0ibWV0aG9kcyI+PC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+PGgyPk1ldGhvZHM8L2gyPjwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWRkX29iamVjdCIgbmFtZT0ibWV0aG9kX2FkZF9vYmplY3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFkZF9vYmplY3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFkZF9vYmplY3QoXENHQ29udGFjdHNcY29udGFjdF9zdWIgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kb2JqZWN0PC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+QWRkIGFuIG9iamVjdCB0byB0aGUgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JG9iamVjdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPlRoZSBvYmplY3QgdG8gYWRkIChtdXN0IGJlIGEgdmFsaWQgb2JqZWN0KTwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2NvdW50X29iamVjdHMiIG5hbWU9Im1ldGhvZF9jb3VudF9vYmplY3RzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5jb3VudF9vYmplY3RzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5jb3VudF9vYmplY3RzKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRjbGFzc19uYW1lPC9zcGFuPikgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db3VudCB0aGUgbnVtYmVyIG9mIG9iamVjdHMgb2YgYSBjZXJ0YWluIGNsYXNzPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRjbGFzc19uYW1lPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X29iamVjdCIgbmFtZT0ibWV0aG9kX2dldF9vYmplY3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9vYmplY3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9vYmplY3Qoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGNsYXNzX25hbWU8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IFxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IGFuIG9iamVjdCBvZiBhIHNwZWNpZmljIGNsYXNzIHdpdGggYSBzcGVjaWZpYyBsYWJlbDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kY2xhc3NfbmFtZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfcmVtb3ZlX29iamVjdCIgbmFtZT0ibWV0aG9kX3JlbW92ZV9vYmplY3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnJlbW92ZV9vYmplY3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnJlbW92ZV9vYmplY3Qoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGNsYXNzX25hbWU8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZW1vdmUgYW4gb2JqZWN0IGZyb20gdGhlIGxpc3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGNsYXNzX25hbWU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcHJlZmVycmVkX29iamVjdCIgbmFtZT0ibWV0aG9kX2dldF9wcmVmZXJyZWRfb2JqZWN0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcHJlZmVycmVkX29iamVjdCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ByZWZlcnJlZF9vYmplY3Qoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGNsYXNzX25hbWU8L3NwYW4+KSA6IFxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBwcmVmZXJyZWQgb2JqZWN0IG9mIGEgY2VydGFpbiBjbGFzczwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+TXVsdGlwbGUgb2JqZWN0cyBvZiBhIGNsYXNzIGNhbiBiZSBwcmVmZXJyZWQuICBPciBub25lLgpJZiBubyBvYmplY3RzIG9mIHRoZSBzcGVjaWZpZWQgY2xhc3MgYXJlIHByZWZlcnJlZCwgdGhlIGZpcnN0IG9iamVjdCBvZiB0aGUgc3BlY2lmaWVkCmNsYXNzIHdpbGwgYmUgcmV0dXJuZWQuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGNsYXNzX25hbWU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgbmFtZT0ibWV0aG9kX3NldF9wcmVmZXJyZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9wcmVmZXJyZWQoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGNsYXNzX25hbWU8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIG9uIGFuIG9iamVjdCAoaWRlbnRpZmllZCBieSBjbGFzcyBhbmQgbGFiZWwpIHRvIHRydWUKYXV0b21hdGljYWxseSBzZXRzIGFsbCBvdGhlciBvYmplY3RzIG9mIHRoYXQgY2xhc3MgdG8gYmUgbm9uLXByZWZlcnJlZDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kY2xhc3NfbmFtZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9pZCIgbmFtZT0ibWV0aG9kX2dldF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2lkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfaWQoKSA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHVybiB0aGUgaWQgb2YgdGhzaSBjb250YWN0ClRoZSBpZCBvZiBhIG5ldyAodW5zYXZlZCkgb2JqZWN0IGlzIG51bGw8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2ZldV91aWQiIG5hbWU9Im1ldGhvZF9nZXRfZmV1X3VpZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2ZldV91aWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9mZXVfdWlkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIEZFVSB1aWQgYXR0YWNoZWQgdG8gdGhpcyBjb250YWN0IChpZiBhbnkpPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9mZXVfdWlkIiBuYW1lPSJtZXRob2Rfc2V0X2ZldV91aWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9mZXVfdWlkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfZmV1X3VpZChpbnQgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdWlkPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Bc3NvY2lhdGUgYW4gRkVVIHVpZCB3aXRoIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPkEgMCBvciBuZWdhdGl2ZSB2YWx1ZSB3aWxsIHJlbW92ZSB0aGUgYXNzb2NpYXRpb24uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+aW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHVpZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2d1aWQiIG5hbWU9Im1ldGhvZF9nZXRfZ3VpZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2d1aWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9ndWlkKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGd1aWQgZm9yIHRoaXMgY29udGFjdApUaGUgZ3VpZCBpcyBhIHVuaXF1ZSwgcmFuZG9tbHkgZ2VuZXJhdGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBjb250YWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VHlwaWNhbGx5IHRoZSBndWlkIGlzIHVzZWQgaW4gZXhwb3J0IGZvcm1hdHMgbGlrZSB2Y2FyZDwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9ndWlkIiBuYW1lPSJtZXRob2Rfc2V0X2d1aWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9ndWlkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfZ3VpZChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kc3RyPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIEdVSUQgZm9yIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoZSBHVUlEIG11c3QgYmUgdW5pcXVlIHRvIGFsbCB1c2Vycy4gIElmIG5vbmUgaXMgc3BlY2lmaWVkLCBvbiBzYXZlCmEgdW5pcWUgR1VJRCB3aWxsIGJlIGdlbmVyYXRlZC48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kc3RyPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfZnVsbG5hbWUiIG5hbWU9Im1ldGhvZF9nZXRfZnVsbG5hbWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9mdWxsbmFtZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2Z1bGxuYW1lKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGZ1bGwgbmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0ClRoZSBmdWxsIG5hbWUgbWF5IG5vdCBiZSBzZXQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9mdWxsbmFtZSIgbmFtZT0ibWV0aG9kX3NldF9mdWxsbmFtZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2Z1bGxuYW1lKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfZnVsbG5hbWUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgZnVsbCBuYW1lIGZvciB0aGlzIGNvbnRhY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2ltYWdlIiBuYW1lPSJtZXRob2RfZ2V0X2ltYWdlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfaW1hZ2UoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9pbWFnZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBpbWFnZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0ClRoZSBpbWFnZSBpcyBzdG9yZWQgYXMgYSBkYXRhIHVyaTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfaW1hZ2UiIG5hbWU9Im1ldGhvZF9zZXRfaW1hZ2UiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9pbWFnZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2ltYWdlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIGltYWdlIGZvciB0aGlzIGNvbnRhY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPkEgZGF0YSB1cmkgdG8gYW4gaW1hZ2UuLi4gdGhlIGRhdGEgdXJpIG11c3QgZml0IHdpdGhpbiA2NGs8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbG9nbyIgbmFtZT0ibWV0aG9kX2dldF9sb2dvIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbG9nbygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2xvZ28oKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgbG9nbyAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0ClRoZSBpbWFnZSBpcyBzdG9yZWQgYXMgYSBkYXRhIHVyaS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPi4gbWF4aW11bSA2NGs8L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfbG9nbyIgbmFtZT0ibWV0aG9kX3NldF9sb2dvIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbG9nbygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2xvZ28oc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsb2dvIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKVGhlIGxvZ28gaXMgc3RvcmVkIGFzIGEgZGF0YSB1cmkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD4uIG1heGltdW0gNjRrPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X25pY2tuYW1lIiBuYW1lPSJtZXRob2RfZ2V0X25pY2tuYW1lIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbmlja25hbWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9uaWNrbmFtZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIHRoZSBuaWNrbmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9uaWNrbmFtZSIgbmFtZT0ibWV0aG9kX3NldF9uaWNrbmFtZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X25pY2tuYW1lKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbmlja25hbWUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgbmlja25hbWUgKG9yIGVyYXNlIGl0KSBmb3IgdGhpcyBjb250YWN0PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jb21wYW55IiBuYW1lPSJtZXRob2RfZ2V0X2NvbXBhbnkiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jb21wYW55KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY29tcGFueSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIHRoZSBjb21wYW55IG5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfY29tcGFueSIgbmFtZT0ibWV0aG9kX3NldF9jb21wYW55IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfY29tcGFueSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2NvbXBhbnkoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCAob3IgZXJhc2UpIHRoZSBjb21wYW55IG5hbWUgZm9yIHRoaXMgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfdGl0bGUiIG5hbWU9Im1ldGhvZF9nZXRfdGl0bGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF90aXRsZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3RpdGxlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIHRpdGxlIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3RpdGxlIiBuYW1lPSJtZXRob2Rfc2V0X3RpdGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfdGl0bGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF90aXRsZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsPC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IChvciBlcmFzZSkgdGhlIHRpdGxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3JvbGUiIG5hbWU9Im1ldGhvZF9nZXRfcm9sZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3JvbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9yb2xlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJvbGUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcm9sZSIgbmFtZT0ibWV0aG9kX3NldF9yb2xlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfcm9sZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3JvbGUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IChvciBlcmFzZSkgdGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfbmFtZSIgbmFtZT0ibWV0aG9kX3NldF9uYW1lIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbmFtZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X25hbWUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHByZWZpeDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmaXJzdDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRtaWRkbGU8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFzdDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRzdWZmaXg8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcHJlZml4PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+VGhlIHByZWZpeCAoaS5lOiBNciwgTXJzLiBEciwgZXRjKTwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGZpcnN0PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+VGhlIGZpcnN0IG5hbWU8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRtaWRkbGU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5UaGUgbWlkZGxlIG5hbWUgKG9wdGlvbmFsKTwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhc3Q8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5UaGUgc3VybmFtZSAob3B0aW9uYWwpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kc3VmZml4PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+VGhlIHN1ZmZpeCAoaS5lOiBQSEQsIEIuUy4sIFAuR2VvKTwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9uYW1lIiBuYW1lPSJtZXRob2RfZ2V0X25hbWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9uYW1lKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfbmFtZSgpIDogXENHQ29udGFjdHNcY29udGFjdF9zdWI8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIG5hbWUgb2JqZWN0IChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3JlbW92ZV9uYW1lIiBuYW1lPSJtZXRob2RfcmVtb3ZlX25hbWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnJlbW92ZV9uYW1lKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5yZW1vdmVfbmFtZSgpIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkVyYXNlIHRoZSBuYW1lIG9iamVjdCAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2Rpc3BsYXlfbmFtZSIgbmFtZT0ibWV0aG9kX2dldF9kaXNwbGF5X25hbWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9kaXNwbGF5X25hbWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9kaXNwbGF5X25hbWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCBhIGRpc3BsYXlhYmxlIG5hbWUKSWYgYSBuYW1lIG9iamVjdCBleGlzdHMsIGl0JiMwMzk7cyBmb3JtYXR0ZWQgdmFsdWUgaXMgcmV0dXJuZWQKb3RoZXJ3aXNlLCB0aGUgZnVsbCBuYW1lLCBvciBuaWNrbmFtZSBpcyByZXR1cm5lZCB3aGljaGV2ZXIgb2NjdXJyZWQgZmlyc3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3V1aWQiIG5hbWU9Im1ldGhvZF9nZXRfdXVpZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3V1aWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF91dWlkKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5hbGlhcyBmb3IgZ2V0X2d1aWQoKTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfc3RhdHVzIiBuYW1lPSJtZXRob2RfZ2V0X3N0YXR1cyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3N0YXR1cygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3N0YXR1cygpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBzdGF0dXMgKGlmIGFueSkgZm9yIHRoaXMgY29udGFjdAphIG5vbiBlbXB0eSBzdGF0dXMgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbnRhY3QgaXMgZGlzYWJsZWQ8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZGlzYWJsZSIgbmFtZT0ibWV0aG9kX2Rpc2FibGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmRpc2FibGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmRpc2FibGUoKSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXRzIHRoaXMgY29udGFjdCB0byBkaXNhYmxlZC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pc19lbmFibGVkIiBuYW1lPSJtZXRob2RfaXNfZW5hYmxlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+aXNfZW5hYmxlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aXNfZW5hYmxlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhlIGNvbnRhY3QgaXMgZGlzYWJsZWQ8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9ub3RlIiBuYW1lPSJtZXRob2Rfc2V0X25vdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9ub3RlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbm90ZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsPC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IChvciBlcmFzZSkgdGhlIG5vdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdApNYXhpbXVtIHNpemUgaXMgNjRrPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9ub3RlIiBuYW1lPSJtZXRob2RfZ2V0X25vdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9ub3RlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfbm90ZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIHRoZSBub3RlIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWRkX2VtYWlsIiBuYW1lPSJtZXRob2RfYWRkX2VtYWlsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hZGRfZW1haWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFkZF9lbWFpbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kZW1haWw8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+LCBib29sIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHByZWZlcnJlZDwvc3Bhbj4pIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkFkZCBhbiBlbWFpbCBhZGRyZXNzIHRvIHRoaXMgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+TXVsdGlwbGUgZW1haWwgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGxhYmVsIGFyZSBwZXJtaXR0ZWQuCmFuZCBtdWx0aXBsZSBwcmVmZXJyZWQgYXJlIHBlcm1pdHRlZCBpbiB0aGUgZGF0YWJhc2UuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGVtYWlsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+VGhlIGVtYWlsIGFkZHJlc3M8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPlRoZSBsYWJlbDwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Ym9vbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwcmVmZXJyZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5XZXRoZXIgdGhpcyBpcyB0aGUgcHJlZmVycmVkIGVtYWlsIGFkZHJlc3M8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pbnNlcnRfYWRkX2VtYWlsIiBuYW1lPSJtZXRob2RfaW5zZXJ0X2FkZF9lbWFpbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+aW5zZXJ0X2FkZF9lbWFpbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aW5zZXJ0X2FkZF9lbWFpbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsdWU8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+LCBib29sIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHByZWZlcnJlZDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IGFuIGVtYWlsIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWRlIGxhYmVsLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhpcyBtZXRob2Qgd2lsbCBmaXJzdCBzZWFyY2ggZW1haWwgb2JqZWN0cyBmb3IgdGhlIHNhbWUgbGFiZWwuCmlmIGEgbWF0Y2ggaXMgZm91bmQsIGl0J3MgdmFsdWUgYW5kIHByZWZlcnJlZCBmbGFnIGFyZSB1cGRhdGVkLgppZiBubyBtYXRjaCBpcyBmb3VuZCwgYSBuZXcgb2JqZWN0IGlzIGNyZWF0ZWQuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbHVlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5ib29sPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHByZWZlcnJlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2VtYWlsIiBuYW1lPSJtZXRob2RfZ2V0X2VtYWlsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfZW1haWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9lbWFpbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCBhbiBlbWFpbCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcHJlZmVycmVkX2VtYWlsX29iaiIgbmFtZT0ibWV0aG9kX2dldF9wcmVmZXJyZWRfZW1haWxfb2JqIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcHJlZmVycmVkX2VtYWlsX29iaigpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ByZWZlcnJlZF9lbWFpbF9vYmooKSA6IFxDR0NvbnRhY3RzXGNvbnRhY3RfZW1haWw8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIHByZWZlcnJlZCBlbWFpbCBvYmplY3QgKGlmIGFueSk8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X2VtYWlsPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcHJlZmVycmVkX2VtYWlsIiBuYW1lPSJtZXRob2RfZ2V0X3ByZWZlcnJlZF9lbWFpbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3ByZWZlcnJlZF9lbWFpbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ByZWZlcnJlZF9lbWFpbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIHRoZSBwcmVmZXJyZWQgZW1haWwgYWRkcmVzcyAoaWYgYW55KTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfZW1haWxfb2JqZWN0cyIgbmFtZT0ibWV0aG9kX2dldF9lbWFpbF9vYmplY3RzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfZW1haWxfb2JqZWN0cygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2VtYWlsX29iamVjdHMoKSA6IFxDR0NvbnRhY3RzXGNvbnRhY3RfZW1haWxbXTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHVybiBhbGwgb2YgdGhlIGVtYWlsIG9iamVjdHMgKGlmIGFueSk8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBcQ0dDb250YWN0c1xjb250YWN0X2VtYWlsW10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfcmVtb3ZlX2VtYWlsIiBuYW1lPSJtZXRob2RfcmVtb3ZlX2VtYWlsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5yZW1vdmVfZW1haWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnJlbW92ZV9lbWFpbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZW1vdmUgYWxsIHRoZSBlbWFpbCBhZGRyZXNzZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWRkX3VybCIgbmFtZT0ibWV0aG9kX2FkZF91cmwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFkZF91cmwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFkZF91cmwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHVybDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4sIGJvb2wgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcHJlZmVycmVkPC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+QWRkIGEgdXJsIHRvIHRoZSBjb250YWN0PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR1cmw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmJvb2w8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcHJlZmVycmVkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pbnNlcnRfc2V0X3VybCIgbmFtZT0ibWV0aG9kX2luc2VydF9zZXRfdXJsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pbnNlcnRfc2V0X3VybCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aW5zZXJ0X3NldF91cmwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbHVlPC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBmaXJzdCBVUkwgb2JqZWN0IGluIHRoZSBsaXN0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiBubyBVUkwgb2JqZWN0cyBhcmUgZm91bmQsIGluc2VydCBvbmUgYXMgYSBwcmVmZXJyZWQgVVJMLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWx1ZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3VybCIgbmFtZT0ibWV0aG9kX2dldF91cmwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF91cmwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF91cmwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPikgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGZpcnN0IHVybCB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwgKGlmIGFueSk8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ByZWZlcnJlZF91cmwiIG5hbWU9Im1ldGhvZF9nZXRfcHJlZmVycmVkX3VybCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3ByZWZlcnJlZF91cmwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9wcmVmZXJyZWRfdXJsKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHByZWZlcnJlZCB1cmwgKGlmIGFueSkgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF91cmxfb2JqZWN0cyIgbmFtZT0ibWV0aG9kX2dldF91cmxfb2JqZWN0cyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3VybF9vYmplY3RzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfdXJsX29iamVjdHMoKSA6IFxDR0NvbnRhY3RzXGNvbnRhY3RfdXJsW108L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIFVSTCBvYmplY3RzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBcQ0dDb250YWN0c1xjb250YWN0X3VybFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3JlbW92ZV91cmwiIG5hbWU9Im1ldGhvZF9yZW1vdmVfdXJsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5yZW1vdmVfdXJsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5yZW1vdmVfdXJsKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4pIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJlbW92ZSBhbGwgb2YgdGhlIHVybCBvYmplY3RzIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2FkZF9pbSIgbmFtZT0ibWV0aG9kX2FkZF9pbSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+YWRkX2ltKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5hZGRfaW0oc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGltPC9zcGFuPiwgc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPiwgYm9vbCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRwcmVmZXJyZWQ8L3NwYW4+KSA6IGJvb2w8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5BZGQgYW4gSU0gb2JqZWN0IHRvIHRoZSBjb250YWN0PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRpbTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPih0aGUgSU0gdmFsdWUgKGkuZTogZmFjZWJvb2sgdXNlcm5hbWUpKTwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmJvb2w8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcHJlZmVycmVkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9pbSIgbmFtZT0ibWV0aG9kX2dldF9pbSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2ltKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfaW0oc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPikgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIChmaXJzdCkgSU0gd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsIChpZiBhbnkpPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9wcmVmZXJyZWRfaW0iIG5hbWU9Im1ldGhvZF9nZXRfcHJlZmVycmVkX2ltIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcHJlZmVycmVkX2ltKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcHJlZmVycmVkX2ltKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHByZWZlcnJlZCBJTSBvYmplY3QgKGlmIGFueSk8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfcmVtb3ZlX2ltIiBuYW1lPSJtZXRob2RfcmVtb3ZlX2ltIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5yZW1vdmVfaW0oKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnJlbW92ZV9pbShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZW1vdmUgYWxsIElNIG9iamVjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWRkX3Bob25lIiBuYW1lPSJtZXRob2RfYWRkX3Bob25lIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hZGRfcGhvbmUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFkZF9waG9uZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdHlwZTwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWx1ZTwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4sIGJvb2wgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcHJlZmVycmVkPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5BZGQgYSBwaG9uZSBudW1iZXIgb2JqZWN0IG9mIHRoZSBzcGVjaWZpZWQgdHlwZTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdHlwZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPlRoZSB0eXBlIChvbmUgb2Ygdm9pY2UsbXNnLGZheCxtb2JpbGUscGFnZXIsdmlkZW8sc2F0ZWxsaXRlKTwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbHVlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5ib29sPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHByZWZlcnJlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaW5zZXJ0X2FkZF9waG9uZSIgbmFtZT0ibWV0aG9kX2luc2VydF9hZGRfcGhvbmUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmluc2VydF9hZGRfcGhvbmUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmluc2VydF9hZGRfcGhvbmUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHR5cGU8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsdWU8L3NwYW4+LCBzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+LCBib29sIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHByZWZlcnJlZDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IGEgcGhvbmUgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZGUgbGFiZWwgYW5kIHR5cGUuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGlzIG1ldGhvZCB3aWxsIGZpcnN0IHNlYXJjaCBwaG9uZSBvYmplY3RzIGZvciB0aGUgc2FtZSBsYWJlbCBhbmQgdHlwZQppZiBhIG1hdGNoIGlzIGZvdW5kLCBpdCdzIHZhbHVlIGFuZCBwcmVmZXJyZWQgZmxhZyBhcmUgdXBkYXRlZC4KaWYgbm8gbWF0Y2ggaXMgZm91bmQsIGEgbmV3IG9iamVjdCBpcyBjcmVhdGVkLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR0eXBlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+VGhlIHR5cGUgKG9uZSBvZiB2b2ljZSxtc2csZmF4LG1vYmlsZSxwYWdlcix2aWRlbyxzYXRlbGxpdGUpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsdWU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmJvb2w8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcHJlZmVycmVkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcGhvbmVfb2JqZWN0IiBuYW1lPSJtZXRob2RfZ2V0X3Bob25lX29iamVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3Bob25lX29iamVjdCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3Bob25lX29iamVjdChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IFxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBmaXJzdCBwaG9uZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsIChpZiBhbnkpPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcGhvbmVfb2JqZWN0X2J5X3R5cGUiIG5hbWU9Im1ldGhvZF9nZXRfcGhvbmVfb2JqZWN0X2J5X3R5cGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9waG9uZV9vYmplY3RfYnlfdHlwZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3Bob25lX29iamVjdF9ieV90eXBlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR0eXBlPC9zcGFuPikgOiBcQ0dDb250YWN0c1xjb250YWN0X3N1YjwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCBmaXJzdCBwaG9uZSBvYmplY3Qgb2YgdGhlIHNwZWNpZmllZCB0eXBlPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR0eXBlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9waG9uZSIgbmFtZT0ibWV0aG9kX2dldF9waG9uZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3Bob25lKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcGhvbmUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPikgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGZpcnN0IHBob25lIG51bWJlciB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwKVGhpcyBpcyB1c2VmdWwgZm9yIGdldHRpbmcgYSBudW1iZXIsIG5vdGUgdGhlIHR5cGUgaXMgbm90IHJldHVybmVkPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9waG9uZV9ieV90eXBlIiBuYW1lPSJtZXRob2RfZ2V0X3Bob25lX2J5X3R5cGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9waG9uZV9ieV90eXBlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcGhvbmVfYnlfdHlwZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdHlwZTwvc3Bhbj4pIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBmaXJzdCBwaG9uZSBudW1iZXIgb2YgdGhlIHNwZWNpZmllZCB0eXBlLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdHlwZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9waG9uZV90eXBlIiBuYW1lPSJtZXRob2RfZ2V0X3Bob25lX3R5cGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9waG9uZV90eXBlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcGhvbmVfdHlwZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgdHlwZSBvZiB0aGUgZmlyc3QgcGhvbmUgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ByZWZlcnJlZF9waG9uZV9vYmoiIG5hbWU9Im1ldGhvZF9nZXRfcHJlZmVycmVkX3Bob25lX29iaiIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3ByZWZlcnJlZF9waG9uZV9vYmooKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9wcmVmZXJyZWRfcGhvbmVfb2JqKCkgOiBcQ0dDb250YWN0c1xjb250YWN0X3N1YjwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgZmlyc3QgcHJlZmVycmVkIHBob25lIG9iamVjdCAoaWYgYW55KTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ByZWZlcnJlZF9waG9uZSIgbmFtZT0ibWV0aG9kX2dldF9wcmVmZXJyZWRfcGhvbmUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9wcmVmZXJyZWRfcGhvbmUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9wcmVmZXJyZWRfcGhvbmUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgcHJlZmVycmVkIHBob25lIG51bWJlciAoaWYgYW55KTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcGhvbmVfb2JqZWN0cyIgbmFtZT0ibWV0aG9kX2dldF9waG9uZV9vYmplY3RzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcGhvbmVfb2JqZWN0cygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3Bob25lX29iamVjdHMoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCBhbGwgb2YgdGhlIHBob25lIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9yZW1vdmVfcGhvbmUiIG5hbWU9Im1ldGhvZF9yZW1vdmVfcGhvbmUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnJlbW92ZV9waG9uZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+cmVtb3ZlX3Bob25lKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4pIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJlbW92ZSBhbGwgcGhvbmUgbnVtYmVycyB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWw8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9hZGRfYWRkcmVzcyIgbmFtZT0ibWV0aG9kX2FkZF9hZGRyZXNzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hZGRfYWRkcmVzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+YWRkX2FkZHJlc3Moc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHN0cmVldDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRwb2JveDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRjaXR5PC9zcGFuPiwgc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHN0YXRlPC9zcGFuPiwgc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHppcDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRjb3VudHJ5PC9zcGFuPiwgc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPiwgYm9vbCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRwcmVmZXJyZWQ8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkFkZCBhbiBhZGRyZXNzIG9iamVjdCBtYW51YWxseS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPkFueSBvZiB0aGUgdmFsdWVzIG1heSBiZSBlbXB0eSAoZXhjZXB0IGxhYmVsKS4gIEhvd2V2ZXIsIGF0IGxlYXN0IG9uZSB2YWx1ZSBtdXN0CmJlIHNwZWNpZmllZC48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kc3RyZWV0PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwb2JveDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kY2l0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kc3RhdGU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHppcDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kY291bnRyeTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Ym9vbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwcmVmZXJyZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2luc2VydF9hZGRfYWRkcmVzcyIgbmFtZT0ibWV0aG9kX2luc2VydF9hZGRfYWRkcmVzcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+aW5zZXJ0X2FkZF9hZGRyZXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5pbnNlcnRfYWRkX2FkZHJlc3Moc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHN0cmVldDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRwb2JveDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRjaXR5PC9zcGFuPiwgc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHN0YXRlPC9zcGFuPiwgc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHppcDwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRjb3VudHJ5PC9zcGFuPiwgc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPiwgYm9vbCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRwcmVmZXJyZWQ8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlVwZGF0ZSBhbiBhZGRyZXNzIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiBubyBhZGRyZXNzIG9iamVjdCB3aXRoIHRoYXQgbGFiZWwgZXhpc3RzLCBjcmVhdGUgYSBuZXcgYWRkcmVzcyByZWNvcmQuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHN0cmVldDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcG9ib3g8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGNpdHk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHN0YXRlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR6aXA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGNvdW50cnk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmJvb2w8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcHJlZmVycmVkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfYWRkcmVzcyIgbmFtZT0ibWV0aG9kX2dldF9hZGRyZXNzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfYWRkcmVzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2FkZHJlc3Moc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPikgOiBcQ0dDb250YWN0c1xjb250YWN0X3N1YjwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCBhbiBhZGRyZXNzIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ByZWZlcnJlZF9hZGRyZXNzIiBuYW1lPSJtZXRob2RfZ2V0X3ByZWZlcnJlZF9hZGRyZXNzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcHJlZmVycmVkX2FkZHJlc3MoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9wcmVmZXJyZWRfYWRkcmVzcygpIDogXENHQ29udGFjdHNcY29udGFjdF9zdWI8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIHByZWZlcnJlZCBhZGRyZXNzPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfYWRkcmVzc19vYmplY3RzIiBuYW1lPSJtZXRob2RfZ2V0X2FkZHJlc3Nfb2JqZWN0cyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2FkZHJlc3Nfb2JqZWN0cygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2FkZHJlc3Nfb2JqZWN0cygpIDogXENHQ29udGFjdHNcY29udGFjdF9hZGRyZXNzW108L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgYWxsIG9mIHRoZSBhZGRyZXNzIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBcQ0dDb250YWN0c1xjb250YWN0X2FkZHJlc3NbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9yZW1vdmVfYWRkcmVzcyIgbmFtZT0ibWV0aG9kX3JlbW92ZV9hZGRyZXNzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5yZW1vdmVfYWRkcmVzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+cmVtb3ZlX2FkZHJlc3Moc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIGFsbCBhZGRyZXNzZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWRkX2Nvb3JkcyIgbmFtZT0ibWV0aG9kX2FkZF9jb29yZHMiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFkZF9jb29yZHMoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFkZF9jb29yZHMoZmxvYXQgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGF0PC9zcGFuPiwgZmxvYXQgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbG9uZzwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4sIGJvb2wgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcHJlZmVycmVkPC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+QWRkIGEgY29vcmRpbmF0ZSBzZXQgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmZsb2F0PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhdDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPkxhdGl0dWRlIChtdXN0IGJlIGJldHdlZW4gLTE4MCBhbmQgMTgwKTwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ZmxvYXQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbG9uZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPkxvbmdpdHVkZSAobXVzdCBiZSBiZXR3ZWVuIC0xODAgYW5kIDE4MCk8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5ib29sPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHByZWZlcnJlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2Nvb3JkcyIgbmFtZT0ibWV0aG9kX2dldF9jb29yZHMiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jb29yZHMoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb29yZHMoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPikgOiBcQ0dDb250YWN0c1xjb250YWN0X3N1YjwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY29vcmRpbmF0ZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsIChpZiBhbnkpPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcHJlZmVycmVkX2Nvb3JkcyIgbmFtZT0ibWV0aG9kX2dldF9wcmVmZXJyZWRfY29vcmRzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcHJlZmVycmVkX2Nvb3JkcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ByZWZlcnJlZF9jb29yZHMoKSA6IFxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBwcmVmZXJyZWQgY29vcmRpbmF0ZXMgb2JqZWN0IChpZiBhbnkpPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9yZW1vdmVfY29vcmRzIiBuYW1lPSJtZXRob2RfcmVtb3ZlX2Nvb3JkcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+cmVtb3ZlX2Nvb3JkcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+cmVtb3ZlX2Nvb3JkcyhzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZW1vdmUgYW55IGNvb3JkaW5hdGUgb2JqZWN0cyB3dGggdGhlIHNwZWNpZmllZCBsYWJlbDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2FkZF9kYXRlIiBuYW1lPSJtZXRob2RfYWRkX2RhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFkZF9kYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5hZGRfZGF0ZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kZGF0ZTwvc3Bhbj4sIHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4sIGJvb2wgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcHJlZmVycmVkPC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+QWRkIGEgZGF0ZSBvYmplY3QgKGJpcnRoZGF5LCBvciBhbm5pdmVyc2FyeSkgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRkYXRlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5ib29sPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHByZWZlcnJlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2RhdGUiIG5hbWU9Im1ldGhvZF9nZXRfZGF0ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2RhdGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9kYXRlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4pIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBkYXRlIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbCAoaWYgYW55KTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcHJlZmVycmVkX2RhdGUiIG5hbWU9Im1ldGhvZF9nZXRfcHJlZmVycmVkX2RhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9wcmVmZXJyZWRfZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ByZWZlcnJlZF9kYXRlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHByZWZlcnJlZCBkYXRlIChpZiBhbnkpPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9kYXRlX29iamVjdHMiIG5hbWU9Im1ldGhvZF9nZXRfZGF0ZV9vYmplY3RzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfZGF0ZV9vYmplY3RzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfZGF0ZV9vYmplY3RzKCkgOiBcQ0dDb250YWN0c1xjb250YWN0X2RhdGVbXTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCBhbGwgb2YgdGhlIGRhdGUgb2JqZWN0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIFxDR0NvbnRhY3RzXGNvbnRhY3RfZGF0ZVtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3JlbW92ZV9kYXRlIiBuYW1lPSJtZXRob2RfcmVtb3ZlX2RhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnJlbW92ZV9kYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5yZW1vdmVfZGF0ZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZW1vdmUgYW55IGRhdGUgb2JqZWN0cyB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWw8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9hZGRfY2F0ZWdvcnkiIG5hbWU9Im1ldGhvZF9hZGRfY2F0ZWdvcnkiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFkZF9jYXRlZ29yeSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+YWRkX2NhdGVnb3J5KG1peGVkIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGNhdDwvc3Bhbj4pIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkFkZCB0aGUgdGhlIHNwZWNpZmllZCBjYXRlZ29yeSB0byB0aGUgY29udGFjdCBvYmplY3Q8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kY2F0PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+KEVpdGhlciBhbiBpbnRlZ2VyIGNhdGVnb3J5IGlkLCBvciBcQ0dDb250YWN0c1xjYXRlb2dyeSBvYmplY3QpPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NhdGVnb3JpZXMiIG5hbWU9Im1ldGhvZF9nZXRfY2F0ZWdvcmllcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NhdGVnb3JpZXMoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jYXRlZ29yaWVzKCkgOiBpbnRbXTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgbGlzdCBvZiBjYXRlZ29yeSBpZHMgdGhhdCB0aGlzIGNvbnRhY3QgYmVsb25ncyB0byAoaWYgYW55KTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jYXRlZ29yaWVzX2Z1bGwiIG5hbWU9Im1ldGhvZF9nZXRfY2F0ZWdvcmllc19mdWxsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY2F0ZWdvcmllc19mdWxsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2F0ZWdvcmllc19mdWxsKCkgOiBcQ0dDb250YWN0c1xjb250YWN0W108L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGxpc3Qgb2YgY2F0ZWdvcnkgb2JqZWN0cyB0aGF0IHRoaXMgY29udGFjdCBiZWxvbmdzIHRvIChpZiBhbnkpPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgXENHQ29udGFjdHNcY29udGFjdFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3JlbW92ZV9jYXRlZ29yeSIgbmFtZT0ibWV0aG9kX3JlbW92ZV9jYXRlZ29yeSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+cmVtb3ZlX2NhdGVnb3J5KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5yZW1vdmVfY2F0ZWdvcnkobWl4ZWQgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kY2F0PC9zcGFuPikgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+RGUtYXNzb2NpYXRlIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkgZnJvbSB0aGUgY29udGFjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5taXhlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRjYXQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD4oRWl0aGVyIGFuIGludGVnZXIgY2F0ZWdvcnkgaWQsIG9yIFxDR0NvbnRhY3RzXGNhdGVvZ3J5IG9iamVjdCk8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbW9kaWZpZWQiIG5hbWU9Im1ldGhvZF9nZXRfbW9kaWZpZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9tb2RpZmllZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X21vZGlmaWVkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIHRpbWVzdGFtcCBvZiB0aGUgdGltZSB0aGlzIGNvbnRhY3Qgd2FzIGxhc3QgbW9kaWZpZWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2xvYWQiIG5hbWU9Im1ldGhvZF9sb2FkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5sb2FkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5sb2FkKGludCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRpZDwvc3Bhbj4pIDogXENHY29udGFjdHNcY29udGFjdDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkxvYWQgdGhlIHNwZWNpZmllZCBjb250YWN0IG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoZSBsb2FkZWQgb2JqZWN0IGlzIGNhY2hlZCBzbyB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdHMgZm9yIHRoYXQgY29udGFjdCB3aWxsIG5vdCBoaXQgdGhlIGRhdGFiYXNlPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+aW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGlkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+VGhlIGNvbnRhY3QgaWQ8L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBcQ0djb250YWN0c1xjb250YWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+c3RhdGljPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9sb2FkX2J5X2d1aWQiIG5hbWU9Im1ldGhvZF9sb2FkX2J5X2d1aWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmxvYWRfYnlfZ3VpZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+bG9hZF9ieV9ndWlkKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR1aWQ8L3NwYW4+KSA6IFxDR0NvbnRhY3RzXGNvbnRhY3Q8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Mb2FkIHRoZSBzcGVjaWZpZWQgY29udGVudCBvYmplY3QgKGJ5IHVuaXF1ZSBpZCk8L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoZSBsb2FkZWQgb2JqZWN0IGlzIGNhY2hlZCBzbyB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdHMgZm9yIHRoYXQgY29udGFjdCB3aWxsIG5vdCBoaXQgdGhlIGRhdGFiYXNlPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHVpZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPlRoZSBjb250YWN0IHVpZDwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Q8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+c3RhdGljPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9leGlzdHMiIG5hbWU9Im1ldGhvZF9leGlzdHMiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmV4aXN0cygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+ZXhpc3RzKGludCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRpZDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+QSBxdWljayAobGlnaHR3ZWlnaHQpIGNvbnZlbmllbmNlIG1ldGhvZCB0byB0ZXN0IGlmIGEgY29udGFjdCB3aXRoIHRoZSBzcGVjaWZpZWQgaWQgZXhpc3RzPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGlzIG1ldGhvZCBmaXJzdCBjaGVja3MgdGhlIGNhY2hlIHRvIHNlZSBpZiB0aGUgb2JqZWN0IGV4aXN0cywgb3RoZXJ3aXNlIGl0IGRvZXMgYSBzaW1sZQpxdWVyeSB0byB0aGUgZGF0YWJhc2UuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+aW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGlkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPnN0YXRpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdmFsaWRhdGUiIG5hbWU9Im1ldGhvZF92YWxpZGF0ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+dmFsaWRhdGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnZhbGlkYXRlKCkgOiB2b2lkPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+QSBtZXRob2QgdG8gdmFsaWRhdGUgdGhlIGNvbnRhY3Qgb2JqZWN0ICh0eXBpY2FsbHkgdXNlZCBiZWZvcmUgc2F2aW5nIHRoZSBvYmplY3QgdG8gdGhlIGRhdGFiYXNlKTwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhpcyBtZXRob2QgdmFsaWRhdGVzIHRoYXQgdGhlcmUgaXMgc29tZSBzb3J0IG9mIGRpc3BsYXlhYmxlIG5hbWUsIGFuZCB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSB2YWxpZCBvYmplY3QKZXhjZXB0aW9ucyBhcmUgdGhyb3duIG9uIGVycm9yczwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2F2ZSIgbmFtZT0ibWV0aG9kX3NhdmUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNhdmUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNhdmUoKSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TYXZlIHRoaXMgb2JqZWN0IHRvIHRoZSBkYXRhYmFzZTwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+Rmlyc3QgYSB2YWxpZGF0aW9uIGNoZWNrIGlzIHBlcmZvcm1lZCwgdGhlbiBkZXBlbmRpbmcgdXBvbiBpZiB0aGVyZSBpcyBhIHZhbGlkIGNvbnRhY3QgaWQKZWl0aGVyIGFuIHVwZGF0ZSwgb3IgYW4gaW5zZXJ0IGlzIHBlcmZvcm1lZC4gIEFsbCBzdGF0aWMgY29udGFjdCBjYWNoZXMgYXJlIGNsZWFyZWQ8L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+ZmluYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2RlbGV0ZSIgbmFtZT0ibWV0aG9kX2RlbGV0ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+ZGVsZXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5kZWxldGUoKSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5EZWxldGUgdGhpcyBjb250YWN0IG9iamVjdCBmcm9tIHRoZSBkYXRhYmFzZTwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhlIGNvbnRhY3Qgb2JqZWN0IGlzIGNvbXBsZXRlbHkgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSBjb250YWN0IGlkCmlzIGVyYXNlZCwgc28gdGhhdCBhIHN1YnNlcXVlbnQgc2F2ZSB3aWxsIHJlc3VsdCBpbiBhIG5ldyBpbnNlcnQKQWRkaXRpb25hbGx5LCBhbGwgY2FjaGVzIGFyZSBjbGVhcmVkPC9wPgoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2dlX2FkZHJlc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2dlX2FkZHJlc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jZ2VfYWRkcmVzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NnZV9hZGRyZXNzKCkgOiBcQ0dDb250YWN0c1xjZ2VfYWRkcmVzczwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIGZyb20gdGhlIGNvbnRhY3QgaW50byBhIGNnZV9hZGRyZXNzIG9iamVjdDwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIFxDR0NvbnRhY3RzXGNnZV9hZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfb2JqZWN0c19ieV90eXBlIiBuYW1lPSJtZXRob2RfZ2V0X29iamVjdHNfYnlfdHlwZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHJvdGVjdGVkICI+Z2V0X29iamVjdHNfYnlfdHlwZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X29iamVjdHNfYnlfdHlwZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kY2xhc3NfbmFtZTwvc3Bhbj4pIDogXENHQ29udGFjdHNcY29udGFjdF9zdWJbXTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHJpZXZlIGFsbCBvZiB0aGUgb2JqZWN0cyBvZiBhIGNlcnRhaW4gdHlwZTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kY2xhc3NfbmFtZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgXENHQ29udGFjdHNcY29udGFjdF9zdWJbXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9fdXBkYXRlIiBuYW1lPSJtZXRob2RfX3VwZGF0ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHJvdGVjdGVkICI+X3VwZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+X3VwZGF0ZSgpIDogdm9pZDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkEgbWV0aG9kIHRvIHNhdmUgYW4gZXhpc3RpbmcgY29udGFjdCBvYmplY3QgdG8gdGhlIGRhdGFiYXNlPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX2luc2VydCIgbmFtZT0ibWV0aG9kX19pbnNlcnQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InByb3RlY3RlZCAiPl9pbnNlcnQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9pbnNlcnQoKSA6IHZvaWQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5BIG1ldGhvZCB0byBzYXZlIGEgbmV3IGNvbnRhY3Qgb2JqZWN0IHRvIHRoZSBkYXRhYmFzZTwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPmNsYXNzLmNvbnRhY3QucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdC5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_address.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTg5NjM1MzQ3MCI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS04OTYzNTM0NzAiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE2OTEwNjg1MjkiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTY5MTA2ODUyOSIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+IDxpIGNsYXNzPSJpY29uLWxldmVsLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlxDR0NvbnRhY3RzPC9zbWFsbD5jb250YWN0X2FkZHJlc3M8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGlzIGNsYXNzIGRlZmluZXMgYSBwaHlzaWNhbCBhZGRyZXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIDxwPk11bHRpcGxlIHBoeXNpY2FsIGFkZHJlc3NlcyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC48L3A+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWV0aG9kcyI+TWV0aG9kczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb25zdGFudHMiPkNvbnN0YW50czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHB1YmxpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCNtZXRob2RfZm9ybWF0IiBjbGFzcz0iIj5mb3JtYXQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwjbWV0aG9kX2dldF9zdHJlZXQiIGNsYXNzPSIiPmdldF9zdHJlZXQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwjbWV0aG9kX3NldF9zdHJlZXQiIGNsYXNzPSIiPnNldF9zdHJlZXQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwjbWV0aG9kX2dldF9wb2JveCIgY2xhc3M9IiI+Z2V0X3BvYm94KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sI21ldGhvZF9zZXRfcG9ib3giIGNsYXNzPSIiPnNldF9wb2JveCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCNtZXRob2RfZ2V0X2NpdHkiIGNsYXNzPSIiPmdldF9jaXR5KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sI21ldGhvZF9zZXRfY2l0eSIgY2xhc3M9IiI+c2V0X2NpdHkoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwjbWV0aG9kX2dldF96aXAiIGNsYXNzPSIiPmdldF96aXAoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwjbWV0aG9kX3NldF96aXAiIGNsYXNzPSIiPnNldF96aXAoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwjbWV0aG9kX2dldF9zdGF0ZSIgY2xhc3M9IiI+Z2V0X3N0YXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sI21ldGhvZF9zZXRfc3RhdGUiIGNsYXNzPSIiPnNldF9zdGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCNtZXRob2RfZ2V0X2NvdW50cnkiIGNsYXNzPSIiPmdldF9jb3VudHJ5KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sI21ldGhvZF9zZXRfY291bnRyeSIgY2xhc3M9IiI+c2V0X2NvdW50cnkoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSIiPnZhbGlkYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSIiPmdldF9yYXdfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSIiPl9fY29uc3RydWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iIj5nZXRfY29udGFjdF9pZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSIiPmdldF9jbGFzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSIiPmdldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSIiPnNldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSIiPmlzX3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iIj5zZXRfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9IiI+YWxsb3dzX211bHRpcGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3RvX2RhdGEiIGNsYXNzPSIiPnRvX2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSIiPnNldF9kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gY29uc3RhbnRzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9hZGRyZXNzLnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3RfYWRkcmVzcy5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X2FkZHJlc3M8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0ibWV0aG9kcyIgbmFtZT0ibWV0aG9kcyI+PC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+PGgyPk1ldGhvZHM8L2gyPjwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZm9ybWF0IiBuYW1lPSJtZXRob2RfZm9ybWF0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5mb3JtYXQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmZvcm1hdCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Rm9ybWF0IHRoZSBhZGRyZXNzIGFzIGEgc2luZ2xlIHN0cmluZy48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3N0cmVldCIgbmFtZT0ibWV0aG9kX2dldF9zdHJlZXQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9zdHJlZXQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9zdHJlZXQoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgc3RyZWV0IGFkZHJlc3MgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3N0cmVldCIgbmFtZT0ibWV0aG9kX3NldF9zdHJlZXQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9zdHJlZXQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9zdHJlZXQoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBzdHJpbmcgYWRkcmVzcyBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcG9ib3giIG5hbWU9Im1ldGhvZF9nZXRfcG9ib3giIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9wb2JveCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3BvYm94KCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHBvc3Qgb2ZmaWNlIGJveCBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcG9ib3giIG5hbWU9Im1ldGhvZF9zZXRfcG9ib3giIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9wb2JveCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3BvYm94KHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgcG9zdCBvZmZpY2UgYm94IHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jaXR5IiBuYW1lPSJtZXRob2RfZ2V0X2NpdHkiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jaXR5KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2l0eSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBjaXR5IHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9jaXR5IiBuYW1lPSJtZXRob2Rfc2V0X2NpdHkiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9jaXR5KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfY2l0eShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIGNpdHkgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ppcCIgbmFtZT0ibWV0aG9kX2dldF96aXAiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF96aXAoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF96aXAoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgemlwL3Bvc3RhbCBjb2RlIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF96aXAiIG5hbWU9Im1ldGhvZF9zZXRfemlwIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfemlwKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfemlwKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgemlwL3Bvc3RhbCBjb2RlIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9zdGF0ZSIgbmFtZT0ibWV0aG9kX2dldF9zdGF0ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3N0YXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfc3RhdGUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgc3RhdGUvcHJvdmluY2UgY29kZSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfc3RhdGUiIG5hbWU9Im1ldGhvZF9zZXRfc3RhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9zdGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3N0YXRlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgc3RhdGUvcHJvdmluY2UgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvdW50cnkiIG5hbWU9Im1ldGhvZF9nZXRfY291bnRyeSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvdW50cnkoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb3VudHJ5KCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNvdW50cnkgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2NvdW50cnkiIG5hbWU9Im1ldGhvZF9zZXRfY291bnRyeSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2NvdW50cnkoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9jb3VudHJ5KHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgY291bnRyeSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX19jb25zdHJ1Y3QiIG5hbWU9Im1ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+X19jb25zdHJ1Y3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9fY29uc3RydWN0KFxDR0NvbnRhY3RzXGNvbnRhY3QgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcGFyZW50PC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db25zdHJ1Y3RvcjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwYXJlbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5BIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgbmFtZT0ibWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY29udGFjdF9pZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NvbnRhY3RfaWQoKSA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBjb250YWN0IG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPklmIHRoZSBjb250YWN0IG9iamVjdCBpcyBuZXcgYW5kIGhhcyBub3QgYmVlbiBzYXZlZCwgaXQgbWF5IG5vdCBoYXZlIGFuIGlkLjwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jbGFzcyIgbmFtZT0ibWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NsYXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2xhc3MoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY2xhc3MgKHR5cGUpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbGFiZWwiIG5hbWU9Im1ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9sYWJlbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2xhYmVsKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGxhYmVsLCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2xhYmVsIiBuYW1lPSJtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9sYWJlbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCBhIGxhYmVsIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pc19wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmlzX3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aXNfcHJlZmVycmVkKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VGVzdCBpZiB0aGlzIG9iamVjdCBpcyBhIHByZWZlcnJlZCBvYmplY3Qgb2YgaXRzIHR5cGUgZm9yIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfcHJlZmVycmVkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfcHJlZmVycmVkKG1peGVkIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGZsYWc8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgcHJlZmVycmVkIGZsYWcgZm9yIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhpcyBtZXRob2Qgd2lsbCBhdHRlbXB0IHRvIGludGVycHJldCB0aGUgcGFzc2VkIHZhbHVlIGFzIGEgYm9vbGVhbiBpbiBhbnkgd2F5IGl0IGNhbi48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5taXhlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRmbGFnPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIG5hbWU9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFsbG93c19tdWx0aXBsZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+YWxsb3dzX211bHRpcGxlKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+V2hldGhlciB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgb2JqZWN0cyBvZiB0aGlzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3RvX2RhdGEiIG5hbWU9Im1ldGhvZF90b19kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj50b19kYXRhKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij50b19kYXRhKCkgOiBhcnJheTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNvbnZlcnQgdGhpcyBvYmplY3QgdG8gYSBkYXRhIGFycmF5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGFycmF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9kYXRhIiBuYW1lPSJtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9kYXRhKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfZGF0YShhcnJheSA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRkYXRhPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5GaWxsIHRoaXMgb2JqZWN0IGZyb20gYSBkYXRhIGFycmF5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5hcnJheTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRkYXRhPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnN0YWN0CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9hZGRyZXNzLnBocDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfYWRkcmVzcy5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_coords.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTIwNjc2OTc5NDgiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMjA2NzY5Nzk0OCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTcyNzk2NjU1NiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xNzI3OTY2NTU2IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfY29vcmRzPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+QSBjbGFzcyB0byByZXByZXNlbnQgYSBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIHBhaXIuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+QSBjb250YWN0IGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwjbWV0aG9kX2dldF9sYXQiIGNsYXNzPSIiPmdldF9sYXQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCNtZXRob2RfZ2V0X2xvbmciIGNsYXNzPSIiPmdldF9sb25nKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwjbWV0aG9kX3NldF9sYXQiIGNsYXNzPSIiPnNldF9sYXQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCNtZXRob2Rfc2V0X2xvbmciIGNsYXNzPSIiPnNldF9sb25nKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iIj52YWxpZGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9IiI+X19jb25zdHJ1Y3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIGNsYXNzPSIiPmdldF9jb250YWN0X2lkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9IiI+Z2V0X2NsYXNzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9sYWJlbCIgY2xhc3M9IiI+Z2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9IiI+c2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2lzX3ByZWZlcnJlZCIgY2xhc3M9IiI+aXNfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9wcmVmZXJyZWQiIGNsYXNzPSIiPnNldF9wcmVmZXJyZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iIj5hbGxvd3NfbXVsdGlwbGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X3Jhd192YWx1ZSIgY2xhc3M9IiI+Z2V0X3Jhd192YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF90b19kYXRhIiBjbGFzcz0iIj50b19kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iIj5zZXRfZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkZpbGU8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfY29vcmRzLnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3RfY29vcmRzLnBocDwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+Q2xhc3MgaGllcmFyY2h5PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0iaGllcmFyY2h5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3RfY29vcmRzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9sYXQiIG5hbWU9Im1ldGhvZF9nZXRfbGF0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGF0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfbGF0KCkgOiBmbG9hdDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgbGF0aXR1ZGUgb2YgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgZmxvYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xvbmciIG5hbWU9Im1ldGhvZF9nZXRfbG9uZyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2xvbmcoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sb25nKCkgOiBmbG9hdDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgbG9uZ2l0dWRlIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGZsb2F0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYXQiIG5hbWU9Im1ldGhvZF9zZXRfbGF0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbGF0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGF0KGZsb2F0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBsYXRpdHVkZSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ZmxvYXQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfbG9uZyIgbmFtZT0ibWV0aG9kX3NldF9sb25nIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbG9uZygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2xvbmcoZmxvYXQgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIGxvbmdpdHVkZSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ZmxvYXQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHBhcmVudDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcGFyZW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+QSByZWZlcmVuY2UgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhpcyBvYmplY3QuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIG5hbWU9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvbnRhY3RfaWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb250YWN0X2lkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgY29udGFjdCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiB0aGUgY29udGFjdCBvYmplY3QgaXMgbmV3IGFuZCBoYXMgbm90IGJlZW4gc2F2ZWQsIGl0IG1heSBub3QgaGF2ZSBhbiBpZC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2xhc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jbGFzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NsYXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNsYXNzICh0eXBlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhYmVsIiBuYW1lPSJtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYWJlbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsYWJlbCwgaWYgYW55LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYWJlbCIgbmFtZT0ibWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGFiZWwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgYSBsYWJlbCBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBuYW1lPSJtZXRob2RfZ2V0X3Jhd192YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3Jhd192YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3Jhd192YWx1ZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSByYXcgdmFsdWUgKGZvciBzdG9yaW5nIGluIHRoZSBkYXRhYmFzZSkgb2YgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+YWJzdHJhY3Q8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3RvX2RhdGEiIG5hbWU9Im1ldGhvZF90b19kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj50b19kYXRhKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij50b19kYXRhKCkgOiBhcnJheTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNvbnZlcnQgdGhpcyBvYmplY3QgdG8gYSBkYXRhIGFycmF5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGFycmF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9kYXRhIiBuYW1lPSJtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9kYXRhKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfZGF0YShhcnJheSA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRkYXRhPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5GaWxsIHRoaXMgb2JqZWN0IGZyb20gYSBkYXRhIGFycmF5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5hcnJheTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRkYXRhPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnN0YWN0CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9jb29yZHMucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9jb29yZHMucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_creator.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE1MDQwNzM3Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTE1MDQwNzM3IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS03MjE1MTgxMDMiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtNzIxNTE4MTAzIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfY3JlYXRvcjwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPkEgc2ltcGxlIGNsYXNzIHRvIGFsbG93IGFzc29jaWF0aW5nIGEgY3JlYXRvciBwcm9lcHJ0eSB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICA8cD5BIGNvbnRhY3QgY2FuIGNvbnNpc3Qgb2YgbXVsdGlwbGUgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMuPC9wPgoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ic3VtbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5TdW1tYXJ5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBoZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29uc3RhbnRzIj5Db25zdGFudHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwdWJsaWMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCNtZXRob2RfZ2V0X3ZhbHVlIiBjbGFzcz0iIj5nZXRfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCNtZXRob2Rfc2V0X3ZhbHVlIiBjbGFzcz0iIj5zZXRfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSIiPnZhbGlkYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSIiPmdldF9yYXdfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdG9fZGF0YSIgY2xhc3M9IiI+dG9fZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfZGF0YSIgY2xhc3M9IiI+c2V0X2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSIiPl9fY29uc3RydWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iIj5nZXRfY29udGFjdF9pZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSIiPmdldF9jbGFzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSIiPmdldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSIiPnNldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSIiPmlzX3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iIj5zZXRfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9IiI+YWxsb3dzX211bHRpcGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gY29uc3RhbnRzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9jcmVhdG9yLnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3RfY3JlYXRvci5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9jcmVhdG9yPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF92YWx1ZSIgbmFtZT0ibWV0aG9kX2dldF92YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfdmFsdWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF92YWx1ZSIgbmFtZT0ibWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfdmFsdWUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3ZhbGlkYXRlIiBuYW1lPSJtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnZhbGlkYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij52YWxpZGF0ZSgpPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuICBUaHJvdyBhbiBleGNlcHRpb24gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3Jhd192YWx1ZSIgbmFtZT0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9yYXdfdmFsdWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9yYXdfdmFsdWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgcmF3IHZhbHVlIChmb3Igc3RvcmluZyBpbiB0aGUgZGF0YWJhc2UpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPmFic3RyYWN0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF90b19kYXRhIiBuYW1lPSJtZXRob2RfdG9fZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+dG9fZGF0YSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dG9fZGF0YSgpIDogYXJyYXk8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db252ZXJ0IHRoaXMgb2JqZWN0IHRvIGEgZGF0YSBhcnJheS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBhcnJheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfZGF0YSIgbmFtZT0ibWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfZGF0YSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2RhdGEoYXJyYXkgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kZGF0YTwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+RmlsbCB0aGlzIG9iamVjdCBmcm9tIGEgZGF0YSBhcnJheS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+YXJyYXk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZGF0YTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzdGFjdAogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX19jb25zdHJ1Y3QiIG5hbWU9Im1ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+X19jb25zdHJ1Y3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9fY29uc3RydWN0KFxDR0NvbnRhY3RzXGNvbnRhY3QgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcGFyZW50PC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db25zdHJ1Y3RvcjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwYXJlbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5BIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgbmFtZT0ibWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY29udGFjdF9pZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NvbnRhY3RfaWQoKSA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBjb250YWN0IG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPklmIHRoZSBjb250YWN0IG9iamVjdCBpcyBuZXcgYW5kIGhhcyBub3QgYmVlbiBzYXZlZCwgaXQgbWF5IG5vdCBoYXZlIGFuIGlkLjwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jbGFzcyIgbmFtZT0ibWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NsYXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2xhc3MoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY2xhc3MgKHR5cGUpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbGFiZWwiIG5hbWU9Im1ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9sYWJlbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2xhYmVsKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGxhYmVsLCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2xhYmVsIiBuYW1lPSJtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9sYWJlbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCBhIGxhYmVsIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pc19wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmlzX3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aXNfcHJlZmVycmVkKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VGVzdCBpZiB0aGlzIG9iamVjdCBpcyBhIHByZWZlcnJlZCBvYmplY3Qgb2YgaXRzIHR5cGUgZm9yIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfcHJlZmVycmVkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfcHJlZmVycmVkKG1peGVkIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGZsYWc8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgcHJlZmVycmVkIGZsYWcgZm9yIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhpcyBtZXRob2Qgd2lsbCBhdHRlbXB0IHRvIGludGVycHJldCB0aGUgcGFzc2VkIHZhbHVlIGFzIGEgYm9vbGVhbiBpbiBhbnkgd2F5IGl0IGNhbi48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5taXhlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRmbGFnPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIG5hbWU9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFsbG93c19tdWx0aXBsZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+YWxsb3dzX211bHRpcGxlKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+V2hldGhlciB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgb2JqZWN0cyBvZiB0aGlzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy5jb250YWN0X2NyZWF0b3IucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9jcmVhdG9yLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_dailywage.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE1MTI2NzE0NjQiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTUxMjY3MTQ2NCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTc3NTg5NTQxMiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xNzc1ODk1NDEyIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfZGFpbHl3YWdlPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+QSBzaW1wbGUgY2xhc3MgdG8gYWxsb3cgc3RvcmluZyBhIGRhaWx5IHdhZ2UgKGEgbnVtYmVyKSB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICA8cD5BIGNvbnRhY3QgY2FuIGNvbnNpc3Qgb2YgbXVsdGlwbGUgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMuPC9wPgoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ic3VtbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5TdW1tYXJ5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBoZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29uc3RhbnRzIj5Db25zdGFudHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwdWJsaWMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSIiPl9fY29uc3RydWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwjbWV0aG9kX2dldF92YWx1ZSIgY2xhc3M9IiI+Z2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2lzX3ByZWZlcnJlZCIgY2xhc3M9IiI+aXNfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9wcmVmZXJyZWQiIGNsYXNzPSIiPnNldF9wcmVmZXJyZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iIj5hbGxvd3NfbXVsdGlwbGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCNtZXRob2Rfc2V0X3ZhbHVlIiBjbGFzcz0iIj5zZXRfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSIiPnZhbGlkYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSIiPmdldF9yYXdfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdG9fZGF0YSIgY2xhc3M9IiI+dG9fZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfZGF0YSIgY2xhc3M9IiI+c2V0X2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIGNsYXNzPSIiPmdldF9jb250YWN0X2lkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9IiI+Z2V0X2NsYXNzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9sYWJlbCIgY2xhc3M9IiI+Z2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9IiI+c2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gY29uc3RhbnRzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9kYWlseXdhZ2UucGhwLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+Y2xhc3MuY29udGFjdF9kYWlseXdhZ2UucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3RfZGFpbHl3YWdlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHBhcmVudDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcGFyZW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+QSByZWZlcmVuY2UgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhpcyBvYmplY3QuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ZhbHVlIiBuYW1lPSJtZXRob2RfZ2V0X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfdmFsdWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF92YWx1ZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zaW5nbGVfdmFsdWU8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9zZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ZhbHVlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbmdsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdG9fZGF0YSIgbmFtZT0ibWV0aG9kX3RvX2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnRvX2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnRvX2RhdGEoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29udmVydCB0aGlzIG9iamVjdCB0byBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2RhdGEiIG5hbWU9Im1ldGhvZF9zZXRfZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9kYXRhKGFycmF5IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGRhdGE8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkZpbGwgdGhpcyBvYmplY3QgZnJvbSBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmFycmF5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RhY3QKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jb250YWN0X2lkIiBuYW1lPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jb250YWN0X2lkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY29udGFjdF9pZCgpIDogaW50PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIHRoZSBpZCBvZiB0aGUgcGFyZW50IGNvbnRhY3Qgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+SWYgdGhlIGNvbnRhY3Qgb2JqZWN0IGlzIG5ldyBhbmQgaGFzIG5vdCBiZWVuIHNhdmVkLCBpdCBtYXkgbm90IGhhdmUgYW4gaWQuPC9wPgoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NsYXNzIiBuYW1lPSJtZXRob2RfZ2V0X2NsYXNzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY2xhc3MoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jbGFzcygpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBjbGFzcyAodHlwZSkgb2YgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9sYWJlbCIgbmFtZT0ibWV0aG9kX2dldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfbGFiZWwoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgbGFiZWwsIGlmIGFueSwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfbGFiZWwiIG5hbWU9Im1ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9sYWJlbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2xhYmVsKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IGEgbGFiZWwgZm9yIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy5jb250YWN0X2RhaWx5d2FnZS5waHA8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X2RhaWx5d2FnZS5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_date.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTkyNjc1NDI3NSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS05MjY3NTQyNzUiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTEyNjY0MDE4MTYiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTI2NjQwMTgxNiIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+IDxpIGNsYXNzPSJpY29uLWxldmVsLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlxDR0NvbnRhY3RzPC9zbWFsbD5jb250YWN0X2RhdGU8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBkYXRlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+VGhlIGNvbnRhY3QgY2FuIG1hbmFnZSBtdWx0aXBsZSBkYXRlcy48L3A+CjxwPlRoaXMgY2xhc3MgaXMgc3ViamVjdCB0byBjaGFuZ2UgYXMgQ0dDb250YWN0cyBiZWdpbnMgdG8gc3VwcG9ydCBkYXRlcy48L3A+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWV0aG9kcyI+TWV0aG9kczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb25zdGFudHMiPkNvbnN0YW50czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHB1YmxpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCNtZXRob2RfZ2V0X2RhdGUiIGNsYXNzPSIiPmdldF9kYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sI21ldGhvZF9zZXRfZGF0ZSIgY2xhc3M9IiI+c2V0X2RhdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCNtZXRob2RfZ2V0X3ZhbHVlIiBjbGFzcz0iIj5nZXRfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCNtZXRob2Rfc2V0X3ZhbHVlIiBjbGFzcz0iIj5zZXRfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSIiPnZhbGlkYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSIiPmdldF9yYXdfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdG9fZGF0YSIgY2xhc3M9IiI+dG9fZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfZGF0YSIgY2xhc3M9IiI+c2V0X2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSIiPl9fY29uc3RydWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iIj5nZXRfY29udGFjdF9pZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSIiPmdldF9jbGFzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSIiPmdldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSIiPnNldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSIiPmlzX3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iIj5zZXRfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9IiI+YWxsb3dzX211bHRpcGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gY29uc3RhbnRzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9kYXRlLnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3RfZGF0ZS5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9kYXRlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9kYXRlIiBuYW1lPSJtZXRob2RfZ2V0X2RhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9kYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfZGF0ZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBkYXRlIHZhbHVlLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfZGF0ZSIgbmFtZT0ibWV0aG9kX3NldF9kYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2RhdGUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBkYXRlIHZhbHVlLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9zZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ZhbHVlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdG9fZGF0YSIgbmFtZT0ibWV0aG9kX3RvX2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnRvX2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnRvX2RhdGEoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29udmVydCB0aGlzIG9iamVjdCB0byBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2RhdGEiIG5hbWU9Im1ldGhvZF9zZXRfZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9kYXRhKGFycmF5IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGRhdGE8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkZpbGwgdGhpcyBvYmplY3QgZnJvbSBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmFycmF5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RhY3QKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHBhcmVudDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcGFyZW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+QSByZWZlcmVuY2UgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhpcyBvYmplY3QuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIG5hbWU9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvbnRhY3RfaWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb250YWN0X2lkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgY29udGFjdCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiB0aGUgY29udGFjdCBvYmplY3QgaXMgbmV3IGFuZCBoYXMgbm90IGJlZW4gc2F2ZWQsIGl0IG1heSBub3QgaGF2ZSBhbiBpZC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2xhc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jbGFzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NsYXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNsYXNzICh0eXBlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhYmVsIiBuYW1lPSJtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYWJlbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsYWJlbCwgaWYgYW55LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYWJlbCIgbmFtZT0ibWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGFiZWwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgYSBsYWJlbCBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9kYXRlLnBocDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfZGF0ZS5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_email.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE4NzE0MzI3OTciPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTg3MTQzMjc5NyIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMjEwNjI5NzkzMCI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0yMTA2Mjk3OTMwIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfZW1haWw8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5BIGNsYXNzIHRvIHJlcHJlc250IGFuIGVtYWlsIG9iamVjdCB3aXRoaW4gYSBjb250YWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIDxwPkEgY29udGFjdCBjYW4gY29uc2lzdCBvZiBtdWx0aXBsZSBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcy48L3A+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWV0aG9kcyI+TWV0aG9kczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb25zdGFudHMiPkNvbnN0YW50czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHB1YmxpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwjbWV0aG9kX2dldF9hZGRyZXNzIiBjbGFzcz0iIj5nZXRfYWRkcmVzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwjbWV0aG9kX3NldF9hZGRyZXNzIiBjbGFzcz0iIj5zZXRfYWRkcmVzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sI21ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSIiPmdldF92YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sI21ldGhvZF9zZXRfdmFsdWUiIGNsYXNzPSIiPnNldF92YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF92YWxpZGF0ZSIgY2xhc3M9IiI+dmFsaWRhdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X3Jhd192YWx1ZSIgY2xhc3M9IiI+Z2V0X3Jhd192YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF90b19kYXRhIiBjbGFzcz0iIj50b19kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iIj5zZXRfZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9IiI+X19jb25zdHJ1Y3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIGNsYXNzPSIiPmdldF9jb250YWN0X2lkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9IiI+Z2V0X2NsYXNzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9sYWJlbCIgY2xhc3M9IiI+Z2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9IiI+c2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2lzX3ByZWZlcnJlZCIgY2xhc3M9IiI+aXNfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9wcmVmZXJyZWQiIGNsYXNzPSIiPnNldF9wcmVmZXJyZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iIj5hbGxvd3NfbXVsdGlwbGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHVibGljIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBjb25zdGFudHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcm90ZWN0ZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcml2YXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X2VtYWlsLnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3RfZW1haWwucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3RfZW1haWw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0ibWV0aG9kcyIgbmFtZT0ibWV0aG9kcyI+PC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+PGgyPk1ldGhvZHM8L2gyPjwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2FkZHJlc3MiIG5hbWU9Im1ldGhvZF9nZXRfYWRkcmVzcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2FkZHJlc3MoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9hZGRyZXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGlzIGlzIGFuIGFsaWFzIGZvciB0aGUgZ2V0X3ZhbHVlKCkgbWV0aG9kLjwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9hZGRyZXNzIiBuYW1lPSJtZXRob2Rfc2V0X2FkZHJlc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9hZGRyZXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfYWRkcmVzcyhzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGlzIGlzIGFuIGFsaWFzIGZvciB0aGUgc2V0X3ZhbHVlKCkgbWV0aG9kLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF92YWx1ZSIgbmFtZT0ibWV0aG9kX2dldF92YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfdmFsdWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF92YWx1ZSIgbmFtZT0ibWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfdmFsdWUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3ZhbGlkYXRlIiBuYW1lPSJtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnZhbGlkYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij52YWxpZGF0ZSgpPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuICBUaHJvdyBhbiBleGNlcHRpb24gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3Jhd192YWx1ZSIgbmFtZT0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9yYXdfdmFsdWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9yYXdfdmFsdWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgcmF3IHZhbHVlIChmb3Igc3RvcmluZyBpbiB0aGUgZGF0YWJhc2UpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPmFic3RyYWN0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF90b19kYXRhIiBuYW1lPSJtZXRob2RfdG9fZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+dG9fZGF0YSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dG9fZGF0YSgpIDogYXJyYXk8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db252ZXJ0IHRoaXMgb2JqZWN0IHRvIGEgZGF0YSBhcnJheS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBhcnJheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfZGF0YSIgbmFtZT0ibWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfZGF0YSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2RhdGEoYXJyYXkgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kZGF0YTwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+RmlsbCB0aGlzIG9iamVjdCBmcm9tIGEgZGF0YSBhcnJheS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+YXJyYXk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZGF0YTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzdGFjdAogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX19jb25zdHJ1Y3QiIG5hbWU9Im1ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+X19jb25zdHJ1Y3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9fY29uc3RydWN0KFxDR0NvbnRhY3RzXGNvbnRhY3QgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcGFyZW50PC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db25zdHJ1Y3RvcjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwYXJlbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5BIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgbmFtZT0ibWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY29udGFjdF9pZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NvbnRhY3RfaWQoKSA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBjb250YWN0IG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPklmIHRoZSBjb250YWN0IG9iamVjdCBpcyBuZXcgYW5kIGhhcyBub3QgYmVlbiBzYXZlZCwgaXQgbWF5IG5vdCBoYXZlIGFuIGlkLjwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jbGFzcyIgbmFtZT0ibWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NsYXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2xhc3MoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY2xhc3MgKHR5cGUpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbGFiZWwiIG5hbWU9Im1ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9sYWJlbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2xhYmVsKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGxhYmVsLCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2xhYmVsIiBuYW1lPSJtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9sYWJlbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCBhIGxhYmVsIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pc19wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmlzX3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aXNfcHJlZmVycmVkKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VGVzdCBpZiB0aGlzIG9iamVjdCBpcyBhIHByZWZlcnJlZCBvYmplY3Qgb2YgaXRzIHR5cGUgZm9yIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfcHJlZmVycmVkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfcHJlZmVycmVkKG1peGVkIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGZsYWc8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgcHJlZmVycmVkIGZsYWcgZm9yIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhpcyBtZXRob2Qgd2lsbCBhdHRlbXB0IHRvIGludGVycHJldCB0aGUgcGFzc2VkIHZhbHVlIGFzIGEgYm9vbGVhbiBpbiBhbnkgd2F5IGl0IGNhbi48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5taXhlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRmbGFnPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIG5hbWU9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFsbG93c19tdWx0aXBsZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+YWxsb3dzX211bHRpcGxlKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+V2hldGhlciB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgb2JqZWN0cyBvZiB0aGlzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy5jb250YWN0X2VtYWlsLnBocDwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfZW1haWwucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_name.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTEzNjgzODU4MDAiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTM2ODM4NTgwMCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTI0NjQwMjgwOCI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xMjQ2NDAyODA4IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfbmFtZTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPkEgY2xhc3MgdG8gcmVwcmVzZW50IGEgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICA8cD5BIG5hbWUgY29uc2lzdHMgb2YgYSBwcmVmaXgsIGEgZmlyc3QsIG1pZGRsZSwgYW5kIGxhc3QgcGFydCwgYW5kIGEgc3VmZml4LgpPbmx5IG9uZSBuYW1lIG9iamVjdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC48L3A+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWV0aG9kcyI+TWV0aG9kczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb25zdGFudHMiPkNvbnN0YW50czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHB1YmxpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCNtZXRob2RfZ2V0X3ByZWZpeCIgY2xhc3M9IiI+Z2V0X3ByZWZpeCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCNtZXRob2Rfc2V0X3ByZWZpeCIgY2xhc3M9IiI+c2V0X3ByZWZpeCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCNtZXRob2RfZ2V0X2ZpcnN0IiBjbGFzcz0iIj5nZXRfZmlyc3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwjbWV0aG9kX3NldF9maXJzdCIgY2xhc3M9IiI+c2V0X2ZpcnN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sI21ldGhvZF9nZXRfbWlkZGxlIiBjbGFzcz0iIj5nZXRfbWlkZGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sI21ldGhvZF9zZXRfbWlkZGxlIiBjbGFzcz0iIj5zZXRfbWlkZGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sI21ldGhvZF9nZXRfbGFzdCIgY2xhc3M9IiI+Z2V0X2xhc3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwjbWV0aG9kX3NldF9sYXN0IiBjbGFzcz0iIj5zZXRfbGFzdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCNtZXRob2RfZ2V0X3N1ZmZpeCIgY2xhc3M9IiI+Z2V0X3N1ZmZpeCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCNtZXRob2Rfc2V0X3N1ZmZpeCIgY2xhc3M9IiI+c2V0X3N1ZmZpeCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCNtZXRob2RfZ2V0X2Zvcm1hdHRlZCIgY2xhc3M9IiI+Z2V0X2Zvcm1hdHRlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF90b19kYXRhIiBjbGFzcz0iIj50b19kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iIj52YWxpZGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iIj5nZXRfcmF3X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iIj5zZXRfZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9IiI+X19jb25zdHJ1Y3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIGNsYXNzPSIiPmdldF9jb250YWN0X2lkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9IiI+Z2V0X2NsYXNzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9sYWJlbCIgY2xhc3M9IiI+Z2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9IiI+c2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2lzX3ByZWZlcnJlZCIgY2xhc3M9IiI+aXNfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9wcmVmZXJyZWQiIGNsYXNzPSIiPnNldF9wcmVmZXJyZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iIj5hbGxvd3NfbXVsdGlwbGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHVibGljIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBjb25zdGFudHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcm90ZWN0ZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcml2YXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X25hbWUucGhwLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+Y2xhc3MuY29udGFjdF9uYW1lLnBocDwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+Q2xhc3MgaGllcmFyY2h5PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0iaGllcmFyY2h5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3RfbmFtZTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJtZXRob2RzIiBuYW1lPSJtZXRob2RzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj48aDI+TWV0aG9kczwvaDI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPjwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcHJlZml4IiBuYW1lPSJtZXRob2RfZ2V0X3ByZWZpeCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3ByZWZpeCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ByZWZpeCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBwcmVmaXggcG9ydGlvbiBvZiB0aGUgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3ByZWZpeCIgbmFtZT0ibWV0aG9kX3NldF9wcmVmaXgiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9wcmVmaXgoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9wcmVmaXgoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBwcmVmaXggcG9ydGlvbiBvZiB0aGUgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2ZpcnN0IiBuYW1lPSJtZXRob2RfZ2V0X2ZpcnN0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfZmlyc3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9maXJzdCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBmaXJzdG5hbWUgcG9ydGlvbiBvZiB0aGUgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2ZpcnN0IiBuYW1lPSJtZXRob2Rfc2V0X2ZpcnN0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfZmlyc3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9maXJzdChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIGZpcnN0bmFtZSBwb3J0aW9uIG9mIHRoZSBuYW1lLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbWlkZGxlIiBuYW1lPSJtZXRob2RfZ2V0X21pZGRsZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X21pZGRsZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X21pZGRsZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBtaWRkbGUgcG9ydGlvbiBvZiB0aGUgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X21pZGRsZSIgbmFtZT0ibWV0aG9kX3NldF9taWRkbGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9taWRkbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9taWRkbGUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBtaWRkbGUgcG9ydGlvbiBvZiB0aGUgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhc3QiIG5hbWU9Im1ldGhvZF9nZXRfbGFzdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2xhc3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYXN0KCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGxhc3QgcG9ydGlvbiBvZiB0aGUgbmFtZS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2xhc3QiIG5hbWU9Im1ldGhvZF9zZXRfbGFzdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhc3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9sYXN0KHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBuYW1lLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfc3VmZml4IiBuYW1lPSJtZXRob2RfZ2V0X3N1ZmZpeCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3N1ZmZpeCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3N1ZmZpeCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBuYW1lIHN1ZmZpeC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3N1ZmZpeCIgbmFtZT0ibWV0aG9kX3NldF9zdWZmaXgiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9zdWZmaXgoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9zdWZmaXgoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBuYW1lIHN1ZmZpeC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2Zvcm1hdHRlZCIgbmFtZT0ibWV0aG9kX2dldF9mb3JtYXR0ZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9mb3JtYXR0ZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9mb3JtYXR0ZWQoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgbmFtZSBmb3JtYXR0ZWQgaW4gYSBkaXNwbGF5YWJsZSBmb3JtYXQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3RvX2RhdGEiIG5hbWU9Im1ldGhvZF90b19kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj50b19kYXRhKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij50b19kYXRhKCkgOiBhcnJheTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNvbnZlcnQgdGhpcyBvYmplY3QgdG8gYSBkYXRhIGFycmF5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGFycmF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3ZhbGlkYXRlIiBuYW1lPSJtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnZhbGlkYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij52YWxpZGF0ZSgpPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuICBUaHJvdyBhbiBleGNlcHRpb24gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3Jhd192YWx1ZSIgbmFtZT0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9yYXdfdmFsdWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9yYXdfdmFsdWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgcmF3IHZhbHVlIChmb3Igc3RvcmluZyBpbiB0aGUgZGF0YWJhc2UpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPmFic3RyYWN0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfZGF0YSIgbmFtZT0ibWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfZGF0YSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2RhdGEoYXJyYXkgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kZGF0YTwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+RmlsbCB0aGlzIG9iamVjdCBmcm9tIGEgZGF0YSBhcnJheS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+YXJyYXk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZGF0YTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzdGFjdAogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX19jb25zdHJ1Y3QiIG5hbWU9Im1ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+X19jb25zdHJ1Y3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9fY29uc3RydWN0KFxDR0NvbnRhY3RzXGNvbnRhY3QgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcGFyZW50PC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db25zdHJ1Y3RvcjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwYXJlbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5BIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgbmFtZT0ibWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY29udGFjdF9pZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NvbnRhY3RfaWQoKSA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBjb250YWN0IG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPklmIHRoZSBjb250YWN0IG9iamVjdCBpcyBuZXcgYW5kIGhhcyBub3QgYmVlbiBzYXZlZCwgaXQgbWF5IG5vdCBoYXZlIGFuIGlkLjwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jbGFzcyIgbmFtZT0ibWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NsYXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2xhc3MoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY2xhc3MgKHR5cGUpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbGFiZWwiIG5hbWU9Im1ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9sYWJlbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2xhYmVsKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGxhYmVsLCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2xhYmVsIiBuYW1lPSJtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9sYWJlbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCBhIGxhYmVsIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pc19wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmlzX3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aXNfcHJlZmVycmVkKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VGVzdCBpZiB0aGlzIG9iamVjdCBpcyBhIHByZWZlcnJlZCBvYmplY3Qgb2YgaXRzIHR5cGUgZm9yIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfcHJlZmVycmVkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfcHJlZmVycmVkKG1peGVkIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGZsYWc8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgcHJlZmVycmVkIGZsYWcgZm9yIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhpcyBtZXRob2Qgd2lsbCBhdHRlbXB0IHRvIGludGVycHJldCB0aGUgcGFzc2VkIHZhbHVlIGFzIGEgYm9vbGVhbiBpbiBhbnkgd2F5IGl0IGNhbi48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5taXhlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRmbGFnPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIG5hbWU9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFsbG93c19tdWx0aXBsZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+YWxsb3dzX211bHRpcGxlKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+V2hldGhlciB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgb2JqZWN0cyBvZiB0aGlzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy5jb250YWN0X25hbWUucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9uYW1lLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_pagination.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE2MDY2MjE5NzAiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTYwNjYyMTk3MCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTg2OTA5NzMzMyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xODY5MDk3MzMzIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfcGFnaW5hdGlvbjwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoaXMgY2xhc3MgbWFrZXMgaXQgZWFzeSB0byBnZW5lcmF0ZSBhIHBhZ2luYXRpb24gdXNlciBpbnRlcmZhY2UgdG8gc2Nyb2xsIHRocm91Z2ggcGFnZXMgb2YgcmVzdWx0cyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIHF1ZXJ5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ic3VtbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5TdW1tYXJ5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBoZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29uc3RhbnRzIj5Db25zdGFudHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwdWJsaWMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwjbWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iIj5fX2NvbnN0cnVjdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5maW5hbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3BhZ2luYXRpb24ucGhwLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+Y2xhc3MuY29udGFjdF9wYWdpbmF0aW9uLnBocDwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+Q2xhc3MgaGllcmFyY2h5PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0iaGllcmFyY2h5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+XENHRXh0ZW5zaW9uc1xxdWVyeVxwYWdpbmF0aW9uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9wYWdpbmF0aW9uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0X3Jlc3VsdHNldCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRyczwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRyczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPlRoZSByZXN1bHRzZXQuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPmNsYXNzLmNvbnRhY3RfcGFnaW5hdGlvbi5waHA8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3BhZ2luYXRpb24ucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_phone.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTEyNTcyODc1NzgiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTI1NzI4NzU3OCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTU3MTQ1Mjc0MiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xNTcxNDUyNzQyIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfcGhvbmU8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5BIHBob25lIG51bWJlciBoYXMgYSB0eXBlLCBhcyB3ZWxsIGFzIGEgbGFiZWwgYW5kIHZhbHVlLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIDxwPlRoZSB0eXBlIGlzIGJhc2VkIG9uIFZDQVJEIDMuMCBzcGVjaWZpY2F0aW9ucy48L3A+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWV0aG9kcyI+TWV0aG9kczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb25zdGFudHMiPkNvbnN0YW50czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHB1YmxpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9IiI+X19jb25zdHJ1Y3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sI21ldGhvZF9nZXRfdHlwZSIgY2xhc3M9IiI+Z2V0X3R5cGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sI21ldGhvZF9zZXRfdHlwZSIgY2xhc3M9IiI+c2V0X3R5cGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sI21ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSIiPmdldF92YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwjbWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9IiI+c2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iIj52YWxpZGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iIj5nZXRfcmF3X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3RvX2RhdGEiIGNsYXNzPSIiPnRvX2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSIiPnNldF9kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iIj5nZXRfY29udGFjdF9pZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSIiPmdldF9jbGFzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSIiPmdldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSIiPnNldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSIiPmlzX3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iIj5zZXRfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9IiI+YWxsb3dzX211bHRpcGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sI2NvbnN0YW50X1RZUEVfVk9JQ0UiIGNsYXNzPSIiPlRZUEVfVk9JQ0U8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCNjb25zdGFudF9UWVBFX01TRyIgY2xhc3M9IiI+VFlQRV9NU0c8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCNjb25zdGFudF9UWVBFX0ZBWCIgY2xhc3M9IiI+VFlQRV9GQVg8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCNjb25zdGFudF9UWVBFX01PQklMRSIgY2xhc3M9IiI+VFlQRV9NT0JJTEU8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCNjb25zdGFudF9UWVBFX1BBR0VSIiBjbGFzcz0iIj5UWVBFX1BBR0VSPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwjY29uc3RhbnRfVFlQRV9WSURFTyIgY2xhc3M9IiI+VFlQRV9WSURFTzwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sI2NvbnN0YW50X1RZUEVfU0FUIiBjbGFzcz0iIj5UWVBFX1NBVDwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9waG9uZS5waHAuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5jbGFzcy5jb250YWN0X3Bob25lLnBocDwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+Q2xhc3MgaGllcmFyY2h5PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0iaGllcmFyY2h5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3RfcGhvbmU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9ImNvbnN0YW50cyIgbmFtZT0iY29uc3RhbnRzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8aDI+Q29uc3RhbnRzPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9ImNvbnN0YW50X1RZUEVfVk9JQ0UiIG5hbWU9ImNvbnN0YW50X1RZUEVfVk9JQ0UiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgaWQ9ImNvbnN0YW50X1RZUEVfVk9JQ0UiIGNsYXNzPSJjb25zdGFudCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9IiI+VFlQRV9WT0lDRTwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPlRZUEVfVk9JQ0U8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9ImNvbnN0YW50X1RZUEVfTVNHIiBuYW1lPSJjb25zdGFudF9UWVBFX01TRyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBpZD0iY29uc3RhbnRfVFlQRV9NU0ciIGNsYXNzPSJjb25zdGFudCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9IiI+VFlQRV9NU0c8L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj5UWVBFX01TRzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0iY29uc3RhbnRfVFlQRV9GQVgiIG5hbWU9ImNvbnN0YW50X1RZUEVfRkFYIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGlkPSJjb25zdGFudF9UWVBFX0ZBWCIgY2xhc3M9ImNvbnN0YW50Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iIj5UWVBFX0ZBWDwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPlRZUEVfRkFYPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJjb25zdGFudF9UWVBFX01PQklMRSIgbmFtZT0iY29uc3RhbnRfVFlQRV9NT0JJTEUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgaWQ9ImNvbnN0YW50X1RZUEVfTU9CSUxFIiBjbGFzcz0iY29uc3RhbnQiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSIiPlRZUEVfTU9CSUxFPC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+VFlQRV9NT0JJTEU8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9ImNvbnN0YW50X1RZUEVfUEFHRVIiIG5hbWU9ImNvbnN0YW50X1RZUEVfUEFHRVIiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgaWQ9ImNvbnN0YW50X1RZUEVfUEFHRVIiIGNsYXNzPSJjb25zdGFudCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9IiI+VFlQRV9QQUdFUjwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPlRZUEVfUEFHRVI8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9ImNvbnN0YW50X1RZUEVfVklERU8iIG5hbWU9ImNvbnN0YW50X1RZUEVfVklERU8iIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgaWQ9ImNvbnN0YW50X1RZUEVfVklERU8iIGNsYXNzPSJjb25zdGFudCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9IiI+VFlQRV9WSURFTzwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPlRZUEVfVklERU88L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9ImNvbnN0YW50X1RZUEVfU0FUIiBuYW1lPSJjb25zdGFudF9UWVBFX1NBVCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBpZD0iY29uc3RhbnRfVFlQRV9TQVQiIGNsYXNzPSJjb25zdGFudCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9IiI+VFlQRV9TQVQ8L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj5UWVBFX1NBVDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0ibWV0aG9kcyIgbmFtZT0ibWV0aG9kcyI+PC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+PGgyPk1ldGhvZHM8L2gyPjwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX19jb25zdHJ1Y3QiIG5hbWU9Im1ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+X19jb25zdHJ1Y3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9fY29uc3RydWN0KFxDR0NvbnRhY3RzXGNvbnRhY3QgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcGFyZW50PC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db25zdHJ1Y3RvcjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwYXJlbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5BIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfdHlwZSIgbmFtZT0ibWV0aG9kX2dldF90eXBlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfdHlwZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3R5cGUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgdHlwZSBvZiB0aGlzIHBob25lIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3R5cGUiIG5hbWU9Im1ldGhvZF9zZXRfdHlwZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3R5cGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF90eXBlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgdHlwZSBvZiB0aGlzIHBob25lIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ZhbHVlIiBuYW1lPSJtZXRob2RfZ2V0X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfdmFsdWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF92YWx1ZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSB2YWx1ZSAocGhvbmUgbnVtYmVyKSBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF92YWx1ZSIgbmFtZT0ibWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfdmFsdWUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSB2YWx1ZSAocGhvbmUgbnVtYmVyKSBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3ZhbGlkYXRlIiBuYW1lPSJtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnZhbGlkYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij52YWxpZGF0ZSgpPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuICBUaHJvdyBhbiBleGNlcHRpb24gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3Jhd192YWx1ZSIgbmFtZT0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9yYXdfdmFsdWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9yYXdfdmFsdWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgcmF3IHZhbHVlIChmb3Igc3RvcmluZyBpbiB0aGUgZGF0YWJhc2UpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPmFic3RyYWN0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF90b19kYXRhIiBuYW1lPSJtZXRob2RfdG9fZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+dG9fZGF0YSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dG9fZGF0YSgpIDogYXJyYXk8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db252ZXJ0IHRoaXMgb2JqZWN0IHRvIGEgZGF0YSBhcnJheS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBhcnJheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfZGF0YSIgbmFtZT0ibWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfZGF0YSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2RhdGEoYXJyYXkgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kZGF0YTwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+RmlsbCB0aGlzIG9iamVjdCBmcm9tIGEgZGF0YSBhcnJheS48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+YXJyYXk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZGF0YTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzdGFjdAogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIG5hbWU9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvbnRhY3RfaWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb250YWN0X2lkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgY29udGFjdCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiB0aGUgY29udGFjdCBvYmplY3QgaXMgbmV3IGFuZCBoYXMgbm90IGJlZW4gc2F2ZWQsIGl0IG1heSBub3QgaGF2ZSBhbiBpZC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2xhc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jbGFzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NsYXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNsYXNzICh0eXBlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhYmVsIiBuYW1lPSJtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYWJlbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsYWJlbCwgaWYgYW55LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYWJlbCIgbmFtZT0ibWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGFiZWwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgYSBsYWJlbCBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9waG9uZS5waHA8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3Bob25lLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_query.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTYyNTMxNzE1OSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS02MjUzMTcxNTkiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTMwNjA3NDY3Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTMwNjA3NDY3IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3RfcXVlcnk8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGlzIGNsYXNzIGNvbnRhaW5zIGFsbCBvZiB0aGUgcGFyYW1ldGVycyByZXF1aXJlZCB0byBjb2xsZWN0IGEgc2VyaWVzIG9mIGNvbnRhY3RzIG1hdGNoaW5nIGEgY3JpdGVyaWEuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWV0aG9kcyI+TWV0aG9kczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb25zdGFudHMiPkNvbnN0YW50czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHB1YmxpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwjbWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iIj5fX2NvbnN0cnVjdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwjbWV0aG9kX2V4ZWN1dGUiIGNsYXNzPSIiPmV4ZWN1dGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sI3Byb3BlcnR5X2lkbGlzdCIgY2xhc3M9IiI+JGlkbGlzdDwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sI3Byb3BlcnR5X2xpbWl0IiBjbGFzcz0iIj4kbGltaXQ8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCNwcm9wZXJ0eV9vZmZzZXQiIGNsYXNzPSIiPiRvZmZzZXQ8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCNwcm9wZXJ0eV9zb3J0YnkiIGNsYXNzPSIiPiRzb3J0Ynk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCNwcm9wZXJ0eV9zb3J0b3JkZXIiIGNsYXNzPSIiPiRzb3J0b3JkZXI8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCNwcm9wZXJ0eV9jYXRlZ29yeSIgY2xhc3M9IiI+JGNhdGVnb3J5PC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwjcHJvcGVydHlfbW9kaWZpZWRfc2luY2UiIGNsYXNzPSIiPiRtb2RpZmllZF9zaW5jZTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sI3Byb3BlcnR5XyIgY2xhc3M9IiI+JDwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sI3Byb3BlcnR5XyIgY2xhc3M9IiI+JDwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sI3Byb3BlcnR5X2NhdGNoaWxkcmVuIiBjbGFzcz0iIj4kY2F0Y2hpbGRyZW48L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5maW5hbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3F1ZXJ5LnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3RfcXVlcnkucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dFeHRlbnNpb25zXHF1ZXJ5XHF1ZXJ5PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9xdWVyeTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2VwcnR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnN0cmluZyAkbmFtZSBTZWFyY2ggb24gbmFtZSAob3IgcGFydHMgb2YgYSBuYW1lKS4gIFdpbGRjYXJkIGNoYXJhY3RlcnMgYXJlIGFjY2VwdGVkLiAgSWYgc2V0LCB0aGUgaWRsaXN0IGFuZCBmdWxsbmFtZSBwcm9wZXJ0aWVzIGFyZSByZXNldC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9InByb3BlcnRpZXMiIG5hbWU9InByb3BlcnRpZXMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxoMj5Qcm9wZXJ0aWVzPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV9pZGxpc3QiIG5hbWU9InByb3BlcnR5X2lkbGlzdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0icHJvcGVydHkiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj4kaWRsaXN0PC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JGlkbGlzdCA6IGludFtdPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5BcnJheSBvZiBpbnRlZ2VyIGlkcyB0byByZXR1cm4uICBJZiBzZXQsIHRoZSBuYW1lLCBmdWxsbmFtZSwgY2F0ZWdvcnksIGFuZCBjYXRjaGlsZHJlbiBwcm9wZXJ0aWVzIGFyZSByZXNldC48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5UeXBlPC9oND4KICAgICAgICAgICAgICAgIGludFtdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj48ZW0+Tm9uZSBmb3VuZDwvZW0+PC90ZD48L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0icHJvcGVydHlfbGltaXQiIG5hbWU9InByb3BlcnR5X2xpbWl0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJwcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPiRsaW1pdDwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPiRsaW1pdCA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhlIG1heGltdW0gbnVtYmVyIG9mIHJlY29yZHMgdG8gcmV0dXJuLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgNTAwLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlR5cGU8L2g0PgogICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj48ZW0+Tm9uZSBmb3VuZDwvZW0+PC90ZD48L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0icHJvcGVydHlfb2Zmc2V0IiBuYW1lPSJwcm9wZXJ0eV9vZmZzZXQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InByb3BlcnR5Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+JG9mZnNldDwvaDM+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiPiRvZmZzZXQgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoZSBzdGFydCBwb3NpdGlvbiB3aXRoaW4gdGhlIG1hdGNoZWQgdmFsdWVzIHRvIHJldHVybi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDA8L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5UeXBlPC9oND4KICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+PGVtPk5vbmUgZm91bmQ8L2VtPjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9InByb3BlcnR5X3NvcnRieSIgbmFtZT0icHJvcGVydHlfc29ydGJ5IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJwcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPiRzb3J0Ynk8L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj4kc29ydGJ5IDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGUgY29sdW1uIHRvIHNvcnQgb24uICBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBtb2RpZmllZCxmdWxsbmFtZSxuaWNrbmFtZSxkaXNwbGF5X25hbWUsdGl0bGUsY29tcGFueSxyb2xlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgbW9kaWZpZWQuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+VHlwZTwvaDQ+CiAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPjxlbT5Ob25lIGZvdW5kPC9lbT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV9zb3J0b3JkZXIiIG5hbWU9InByb3BlcnR5X3NvcnRvcmRlciIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0icHJvcGVydHkiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj4kc29ydG9yZGVyPC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JHNvcnRvcmRlciA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhlIHNvcnQgb3JkZXIuICBQb3NzaWJsZSB2YWx1ZXMgYXJlIEFTQyBhbmQgREVTQy4gIERlZmF1bHQgdmFsdWUgaXMgJ0FTQyc7PC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+VHlwZTwvaDQ+CiAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPjxlbT5Ob25lIGZvdW5kPC9lbT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV9jYXRlZ29yeSIgbmFtZT0icHJvcGVydHlfY2F0ZWdvcnkiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InByb3BlcnR5Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+JGNhdGVnb3J5PC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JGNhdGVnb3J5IDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5BIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzLCBvciBpZHMgdG8gZmlsdGVyIHVwb24uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+VHlwZTwvaDQ+CiAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPjxlbT5Ob25lIGZvdW5kPC9lbT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV9tb2RpZmllZF9zaW5jZSIgbmFtZT0icHJvcGVydHlfbW9kaWZpZWRfc2luY2UiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9InByb3BlcnR5Ij4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+JG1vZGlmaWVkX3NpbmNlPC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JG1vZGlmaWVkX3NpbmNlIDogaW50PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5GaWx0ZXIgYWxsIGNvbnRhY3RzIHRoYXQgd2VyZSBsYXN0IG1vZGlmaWVkIGFmdGVyIHRoaXMgdW5peCB0aW1lc3RhbXAuPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+VHlwZTwvaDQ+CiAgICAgICAgICAgICAgICBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPjxlbT5Ob25lIGZvdW5kPC9lbT48L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJwcm9wZXJ0eV8iIG5hbWU9InByb3BlcnR5XyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0icHJvcGVydHkiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj4kPC9oMz4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSI+JCA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+cHJvcGNsYXNzWzAtOV08L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5UeXBlPC9oND4KICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+PGVtPk5vbmUgZm91bmQ8L2VtPjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9InByb3BlcnR5XyIgbmFtZT0icHJvcGVydHlfIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJwcm9wZXJ0eSI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPiQ8L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj4kIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5wcm9wdmFsWzAtOV08L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5UeXBlPC9oND4KICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+PGVtPk5vbmUgZm91bmQ8L2VtPjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9InByb3BlcnR5X2NhdGNoaWxkcmVuIiBuYW1lPSJwcm9wZXJ0eV9jYXRjaGlsZHJlbiIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0icHJvcGVydHkiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj4kY2F0Y2hpbGRyZW48L2gzPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIj4kY2F0Y2hpbGRyZW4gOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+PC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5PcHRpb25hbGx5IGluY2x1ZGUsIG9yIGV4Y2x1ZGUgdGhlIGNoaWxkcmVuIGNhdGVnb3JpZXMgb2YgdGhlIHNwZWNpZmllZCBjYXRlZ29yaWVzIGZyb20gdGhlIHJlc3VsdHMuICBEZWZhdWx0IHZhbHVlIGlzIGZhbHNlLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlR5cGU8L2g0PgogICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+PGVtPk5vbmUgZm91bmQ8L2VtPjwvdGQ+PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJtZXRob2RzIiBuYW1lPSJtZXRob2RzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj48aDI+TWV0aG9kczwvaDI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPjwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9fX2NvbnN0cnVjdCIgbmFtZT0ibWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5fX2NvbnN0cnVjdCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+X19jb25zdHJ1Y3QoYXJyYXkgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcGFybXM8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNvbnN0cnVjdG9yLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5hcnJheTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwYXJtczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPkFuIGFycmF5IG9mIHByb3BlcnRpZXMgZm9yIHRoaXMgb2JqZWN0LjwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2V4ZWN1dGUiIG5hbWU9Im1ldGhvZF9leGVjdXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5leGVjdXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5leGVjdXRlKCkgOiBcQ0dDb250YWN0c1xjb250YWN0X3Jlc3VsdHNldDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkV4ZWN1dGUgdGhlIHF1ZXJ5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3Jlc3VsdHNldDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPmNsYXNzLmNvbnRhY3RfcXVlcnkucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9xdWVyeS5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_resultset.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTcwMjkwODU0MyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS03MDI5MDg1NDMiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTI2ODAwODQ3NiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0yNjgwMDg0NzYiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgICAgICAgICAgPG5hdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPiA8aSBjbGFzcz0iaWNvbi1sZXZlbC11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KCiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD5cQ0dDb250YWN0czwvc21hbGw+Y29udGFjdF9yZXN1bHRzZXQ8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYSBxdWVyeSBmcm9tIGNvbnRhY3RfcXVlcnkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJzdW1tYXJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlN1bW1hcnk8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWV0aG9kcyI+TWV0aG9kczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb3BlcnRpZXMiPlByb3BlcnRpZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb25zdGFudHMiPkNvbnN0YW50czwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHB1YmxpYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sI21ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9IiI+X19jb25zdHJ1Y3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCNtZXRob2RfZ2V0X3F1ZXJ5IiBjbGFzcz0iIj5nZXRfcXVlcnkoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCNtZXRob2RfUmVjb3JkQ291bnQiIGNsYXNzPSIiPlJlY29yZENvdW50KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwjbWV0aG9kX01vdmVOZXh0IiBjbGFzcz0iIj5Nb3ZlTmV4dCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sI21ldGhvZF9Nb3ZlRmlyc3QiIGNsYXNzPSIiPk1vdmVGaXJzdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sI21ldGhvZF9SZXdpbmQiIGNsYXNzPSIiPlJld2luZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sI21ldGhvZF9Nb3ZlTGFzdCIgY2xhc3M9IiI+TW92ZUxhc3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCNtZXRob2RfRU9GIiBjbGFzcz0iIj5FT0YoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCNtZXRob2RfQ2xvc2UiIGNsYXNzPSIiPkNsb3NlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwjbWV0aG9kX1RvdGFsTWF0Y2hlcyIgY2xhc3M9IiI+VG90YWxNYXRjaGVzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwjbWV0aG9kX2dldF9vYmplY3QiIGNsYXNzPSIiPmdldF9vYmplY3QoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCNtZXRob2RfZ2V0X2NvbnRhY3QiIGNsYXNzPSIiPmdldF9jb250YWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwjbWV0aG9kX2dldF9wYWdpbmF0aW9uIiBjbGFzcz0iIj5nZXRfcGFnaW5hdGlvbigpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5maW5hbDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3Jlc3VsdHNldC5waHAuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5jbGFzcy5jb250YWN0X3Jlc3VsdHNldC5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0V4dGVuc2lvbnNccXVlcnlccmVzdWx0c2V0PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9yZXN1bHRzZXQ8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0ibWV0aG9kcyIgbmFtZT0ibWV0aG9kcyI+PC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+PGgyPk1ldGhvZHM8L2gyPjwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj48L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX19jb25zdHJ1Y3QiIG5hbWU9Im1ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+X19jb25zdHJ1Y3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9fY29uc3RydWN0KFxDR0NvbnRhY3RzXGNvbnRhY3RfcXVlcnkgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcXVlcnk8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNvbnN0cnVjdG9yLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3F1ZXJ5PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRxdWVyeTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3F1ZXJ5IiBuYW1lPSJtZXRob2RfZ2V0X3F1ZXJ5IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcXVlcnkoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9xdWVyeSgpIDogXENHQ29udGFjdHNcY29udGFjdF9xdWVyeTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgcXVlcnkgdXNlZCB0byBjb25zdHJ1Y3QgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9xdWVyeTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfUmVjb3JkQ291bnQiIG5hbWU9Im1ldGhvZF9SZWNvcmRDb3VudCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+UmVjb3JkQ291bnQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPlJlY29yZENvdW50KCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIG51bWJlciBvZiByZWNvcmRzIHJldHVybmVkIGluIHRoaXMgcmVzdWx0c2V0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9Nb3ZlTmV4dCIgbmFtZT0ibWV0aG9kX01vdmVOZXh0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5Nb3ZlTmV4dCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+TW92ZU5leHQoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPk1vdmUgdG8gdGhlIG5leHQgcmVjb3JkIGluIHRoZSByZXN1bHRzZXQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfTW92ZUZpcnN0IiBuYW1lPSJtZXRob2RfTW92ZUZpcnN0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5Nb3ZlRmlyc3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPk1vdmVGaXJzdCgpPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+TW92ZSB0byB0aGUgZmlyc3QgcmVjb3JkIGluIHRoZSByZXN1bHRzZXQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfUmV3aW5kIiBuYW1lPSJtZXRob2RfUmV3aW5kIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5SZXdpbmQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPlJld2luZCgpPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+TW92ZSB0byB0aGUgZmlyc3QgcmVjb3JkIGluIHRoZSByZXN1bHRzZXQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfTW92ZUxhc3QiIG5hbWU9Im1ldGhvZF9Nb3ZlTGFzdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+TW92ZUxhc3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPk1vdmVMYXN0KCk8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Nb3ZlIHRvIHRoZSBsYXN0IHJlY29yZCBpbiB0aGUgcmVzdWx0c2V0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX0VPRiIgbmFtZT0ibWV0aG9kX0VPRiIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+RU9GKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5FT0YoKSA6IGJvb2w8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5UZXN0IGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSByZXN1bHRzZXQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9DbG9zZSIgbmFtZT0ibWV0aG9kX0Nsb3NlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5DbG9zZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Q2xvc2UoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNsb3NlIHRoZSByZXN1bHRzZXQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfVG90YWxNYXRjaGVzIiBuYW1lPSJtZXRob2RfVG90YWxNYXRjaGVzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5Ub3RhbE1hdGNoZXMoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPlRvdGFsTWF0Y2hlcygpIDogaW50PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcyB0aGF0IG1hdGNoIHRoZSBxdWVyeSAobm90IG9ubHkgaW4gdGhpcyByZWNvcmRzZXQpLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfb2JqZWN0IiBuYW1lPSJtZXRob2RfZ2V0X29iamVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X29iamVjdCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X29iamVjdCgpIDogXENHQ29udGFjdHNcY29udGFjdDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY29udGFjdCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHJlY29yZC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY29udGFjdCIgbmFtZT0ibWV0aG9kX2dldF9jb250YWN0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY29udGFjdCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NvbnRhY3QoKSA6IFxDR0NvbnRhY3RzXGNvbnRhY3Q8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNvbnRhY3Qgb2JqZWN0IGZvciB0aGUgY3VycmVudCByZWNvcmQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBmb3IgZ2V0X29iamVjdC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Q8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9wYWdpbmF0aW9uIiBuYW1lPSJtZXRob2RfZ2V0X3BhZ2luYXRpb24iIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9wYWdpbmF0aW9uKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcGFnaW5hdGlvbigpIDogXENHQ29udGFjdHNcY29udGFjdF9wYWdpbmF0aW9uPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IGFuIG9iamVjdCB0byBhaWRlIGluIHNjcm9sbGluZyB0aHJvdWdoIHRoZSBkaWZmZXJlbnQgcGFnZXMgb2Ygb2JqZWN0cwp0aGF0IG1hdGNoIHRoaXMgcXVlcnkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3BhZ2luYXRpb248L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy5jb250YWN0X3Jlc3VsdHNldC5waHA8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3Jlc3VsdHNldC5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_score01.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTU5NjE2NzgyIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTU5NjE2NzgyIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMTg0OTQzNTk2Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTExODQ5NDM1OTYiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgICAgICAgICAgPG5hdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPiA8aSBjbGFzcz0iaWNvbi1sZXZlbC11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KCiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD5cQ0dDb250YWN0czwvc21hbGw+Y29udGFjdF9zY29yZTAxPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+QSBzaW1wbGUgY2xhc3MgdG8gYWxsb3cgc3RvcmluZyBhIGRhaWx5IHdhZ2UgKGEgbnVtYmVyKSB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICA8cD5BIGNvbnRhY3QgY2FuIGNvbnNpc3Qgb2YgbXVsdGlwbGUgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMuPC9wPgoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ic3VtbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5TdW1tYXJ5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBoZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29uc3RhbnRzIj5Db25zdGFudHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwdWJsaWMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSIiPnZhbGlkYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iIj5fX2NvbnN0cnVjdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sI21ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSIiPmdldF92YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSIiPmlzX3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iIj5zZXRfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9IiI+YWxsb3dzX211bHRpcGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwjbWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9IiI+c2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSIiPmdldF9yYXdfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdG9fZGF0YSIgY2xhc3M9IiI+dG9fZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfZGF0YSIgY2xhc3M9IiI+c2V0X2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIGNsYXNzPSIiPmdldF9jb250YWN0X2lkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9IiI+Z2V0X2NsYXNzKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9sYWJlbCIgY2xhc3M9IiI+Z2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9IiI+c2V0X2xhYmVsKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gY29uc3RhbnRzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zY29yZTAxLnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3Rfc2NvcmUwMS5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zY29yZTAxPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3ZhbGlkYXRlIiBuYW1lPSJtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnZhbGlkYXRlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij52YWxpZGF0ZSgpPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuICBUaHJvdyBhbiBleGNlcHRpb24gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfX19jb25zdHJ1Y3QiIG5hbWU9Im1ldGhvZF9fX2NvbnN0cnVjdCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+X19jb25zdHJ1Y3QoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPl9fY29uc3RydWN0KFxDR0NvbnRhY3RzXGNvbnRhY3QgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kcGFyZW50PC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5Db25zdHJ1Y3RvcjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRwYXJlbnQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48cD5BIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC48L3A+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbmdsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9pc19wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmlzX3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+aXNfcHJlZmVycmVkKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+VGVzdCBpZiB0aGlzIG9iamVjdCBpcyBhIHByZWZlcnJlZCBvYmplY3Qgb2YgaXRzIHR5cGUgZm9yIHRoaXMgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9wcmVmZXJyZWQiIG5hbWU9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfcHJlZmVycmVkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfcHJlZmVycmVkKG1peGVkIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGZsYWc8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgcHJlZmVycmVkIGZsYWcgZm9yIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+VGhpcyBtZXRob2Qgd2lsbCBhdHRlbXB0IHRvIGludGVycHJldCB0aGUgcGFzc2VkIHZhbHVlIGFzIGEgYm9vbGVhbiBpbiBhbnkgd2F5IGl0IGNhbi48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5taXhlZDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRmbGFnPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIG5hbWU9Im1ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmFsbG93c19tdWx0aXBsZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+YWxsb3dzX211bHRpcGxlKCkgOiBib29sPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+V2hldGhlciB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgb2JqZWN0cyBvZiB0aGlzIHR5cGUgYXNzb2NpYXRlZCB3aXRoIGEgY29udGFjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF92YWx1ZSIgbmFtZT0ibWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfdmFsdWUoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiR2YWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdG9fZGF0YSIgbmFtZT0ibWV0aG9kX3RvX2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnRvX2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnRvX2RhdGEoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29udmVydCB0aGlzIG9iamVjdCB0byBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2RhdGEiIG5hbWU9Im1ldGhvZF9zZXRfZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9kYXRhKGFycmF5IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGRhdGE8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkZpbGwgdGhpcyBvYmplY3QgZnJvbSBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmFycmF5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RhY3QKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jb250YWN0X2lkIiBuYW1lPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jb250YWN0X2lkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY29udGFjdF9pZCgpIDogaW50PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+UmV0dXJuIHRoZSBpZCBvZiB0aGUgcGFyZW50IGNvbnRhY3Qgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgPHA+SWYgdGhlIGNvbnRhY3Qgb2JqZWN0IGlzIG5ldyBhbmQgaGFzIG5vdCBiZWVuIHNhdmVkLCBpdCBtYXkgbm90IGhhdmUgYW4gaWQuPC9wPgoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBpbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NsYXNzIiBuYW1lPSJtZXRob2RfZ2V0X2NsYXNzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY2xhc3MoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jbGFzcygpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBjbGFzcyAodHlwZSkgb2YgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9sYWJlbCIgbmFtZT0ibWV0aG9kX2dldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfbGFiZWwoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgbGFiZWwsIGlmIGFueSwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfbGFiZWwiIG5hbWU9Im1ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9sYWJlbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2xhYmVsKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRsYWJlbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IGEgbGFiZWwgZm9yIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kbGFiZWw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy5jb250YWN0X3Njb3JlMDEucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zY29yZTAxLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_simple_value.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTIzNTQ3NTg0NyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0yMzU0NzU4NDciIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTEzMTMyMTA3NDAiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTMxMzIxMDc0MCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+IDxpIGNsYXNzPSJpY29uLWxldmVsLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlxDR0NvbnRhY3RzPC9zbWFsbD5jb250YWN0X3NpbXBsZV92YWx1ZTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdCBkZWZpbmVzIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIG9ubHkgYSBzaW5nbGUgdmFsdWUuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+QSBjb250YWN0IGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwjbWV0aG9kX2dldF92YWx1ZSIgY2xhc3M9IiI+Z2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwjbWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9IiI+c2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iIj52YWxpZGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iIj5nZXRfcmF3X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3RvX2RhdGEiIGNsYXNzPSIiPnRvX2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSIiPnNldF9kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iIj5fX2NvbnN0cnVjdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9IiI+Z2V0X2NvbnRhY3RfaWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NsYXNzIiBjbGFzcz0iIj5nZXRfY2xhc3MoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iIj5nZXRfbGFiZWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iIj5zZXRfbGFiZWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iIj5pc19wcmVmZXJyZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9IiI+c2V0X3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSIiPmFsbG93c19tdWx0aXBsZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+YWJzdHJhY3Q8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3NpbXBsZV92YWx1ZS5waHAuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5jbGFzcy5jb250YWN0X3NpbXBsZV92YWx1ZS5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJtZXRob2RzIiBuYW1lPSJtZXRob2RzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj48aDI+TWV0aG9kczwvaDI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPjwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9zZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ZhbHVlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdG9fZGF0YSIgbmFtZT0ibWV0aG9kX3RvX2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnRvX2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnRvX2RhdGEoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29udmVydCB0aGlzIG9iamVjdCB0byBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2RhdGEiIG5hbWU9Im1ldGhvZF9zZXRfZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9kYXRhKGFycmF5IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGRhdGE8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkZpbGwgdGhpcyBvYmplY3QgZnJvbSBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmFycmF5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RhY3QKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHBhcmVudDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcGFyZW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+QSByZWZlcmVuY2UgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhpcyBvYmplY3QuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIG5hbWU9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvbnRhY3RfaWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb250YWN0X2lkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgY29udGFjdCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiB0aGUgY29udGFjdCBvYmplY3QgaXMgbmV3IGFuZCBoYXMgbm90IGJlZW4gc2F2ZWQsIGl0IG1heSBub3QgaGF2ZSBhbiBpZC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2xhc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jbGFzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NsYXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNsYXNzICh0eXBlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhYmVsIiBuYW1lPSJtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYWJlbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsYWJlbCwgaWYgYW55LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYWJlbCIgbmFtZT0ibWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGFiZWwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgYSBsYWJlbCBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9zaW1wbGVfdmFsdWUucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zaW1wbGVfdmFsdWUucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_single_value.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTQ3MTg3NzUiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtNDcxODc3NSIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtODExMzI4ODMwIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTgxMTMyODgzMCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+IDxpIGNsYXNzPSJpY29uLWxldmVsLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlxDR0NvbnRhY3RzPC9zbWFsbD5jb250YWN0X3NpbmdsZV92YWx1ZTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdCBkZWZpbmVzIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIG9ubHkgYSBzaW5nbGUgdmFsdWUsIGFuZCBjYW4gb25seSBoYXZlIG9uZSBvZiB0aGlzIHR5cGUuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+QSBjb250YWN0IGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iIj5fX2NvbnN0cnVjdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sI21ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSIiPmdldF92YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSIiPmlzX3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iIj5zZXRfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9IiI+YWxsb3dzX211bHRpcGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwjbWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9IiI+c2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iIj52YWxpZGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iIj5nZXRfcmF3X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3RvX2RhdGEiIGNsYXNzPSIiPnRvX2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSIiPnNldF9kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iIj5nZXRfY29udGFjdF9pZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSIiPmdldF9jbGFzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSIiPmdldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSIiPnNldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+YWJzdHJhY3Q8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3NpbmdsZV92YWx1ZS5waHAuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5jbGFzcy5jb250YWN0X3NpbmdsZV92YWx1ZS5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbmdsZV92YWx1ZTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJtZXRob2RzIiBuYW1lPSJtZXRob2RzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj48aDI+TWV0aG9kczwvaDI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPjwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9fX2NvbnN0cnVjdCIgbmFtZT0ibWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5fX2NvbnN0cnVjdCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+X19jb25zdHJ1Y3QoXENHQ29udGFjdHNcY29udGFjdCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRwYXJlbnQ8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNvbnN0cnVjdG9yPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Q8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHBhcmVudDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxwPkEgcmVmZXJlbmNlIHRvIHRoZSBjb250YWN0IG9iamVjdCB0aGF0IHdpbGwgb3duIHRoaXMgb2JqZWN0LjwvcD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF92YWx1ZSIgbmFtZT0ibWV0aG9kX2dldF92YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfdmFsdWUoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2lzX3ByZWZlcnJlZCIgbmFtZT0ibWV0aG9kX2lzX3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+aXNfcHJlZmVycmVkKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5pc19wcmVmZXJyZWQoKSA6IGJvb2w8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5UZXN0IGlmIHRoaXMgb2JqZWN0IGlzIGEgcHJlZmVycmVkIG9iamVjdCBvZiBpdHMgdHlwZSBmb3IgdGhpcyBjb250YWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGJvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgbmFtZT0ibWV0aG9kX3NldF9wcmVmZXJyZWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9wcmVmZXJyZWQobWl4ZWQgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kZmxhZzwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+U2V0IHRoZSBwcmVmZXJyZWQgZmxhZyBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5UaGlzIG1ldGhvZCB3aWxsIGF0dGVtcHQgdG8gaW50ZXJwcmV0IHRoZSBwYXNzZWQgdmFsdWUgYXMgYSBib29sZWFuIGluIGFueSB3YXkgaXQgY2FuLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPm1peGVkPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGZsYWc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2FsbG93c19tdWx0aXBsZSIgbmFtZT0ibWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+YWxsb3dzX211bHRpcGxlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5hbGxvd3NfbXVsdGlwbGUoKSA6IGJvb2w8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5XaGV0aGVyIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBvYmplY3RzIG9mIHRoaXMgdHlwZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGJvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X3ZhbHVlIiBuYW1lPSJtZXRob2Rfc2V0X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfdmFsdWUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF92YWx1ZShzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kdmFsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JHZhbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdmFsaWRhdGUiIG5hbWU9Im1ldGhvZF92YWxpZGF0ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+dmFsaWRhdGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnZhbGlkYXRlKCk8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5WYWxpZGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG9iamVjdC4gIFRocm93IGFuIGV4Y2VwdGlvbiBpZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBuYW1lPSJtZXRob2RfZ2V0X3Jhd192YWx1ZSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X3Jhd192YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3Jhd192YWx1ZSgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSByYXcgdmFsdWUgKGZvciBzdG9yaW5nIGluIHRoZSBkYXRhYmFzZSkgb2YgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+YWJzdHJhY3Q8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3RvX2RhdGEiIG5hbWU9Im1ldGhvZF90b19kYXRhIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj50b19kYXRhKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij50b19kYXRhKCkgOiBhcnJheTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkNvbnZlcnQgdGhpcyBvYmplY3QgdG8gYSBkYXRhIGFycmF5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGFycmF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9kYXRhIiBuYW1lPSJtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF9kYXRhKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfZGF0YShhcnJheSA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRkYXRhPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5GaWxsIHRoaXMgb2JqZWN0IGZyb20gYSBkYXRhIGFycmF5LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5hcnJheTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRkYXRhPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnN0YWN0CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgbmFtZT0ibWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfY29udGFjdF9pZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NvbnRhY3RfaWQoKSA6IGludDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBjb250YWN0IG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPklmIHRoZSBjb250YWN0IG9iamVjdCBpcyBuZXcgYW5kIGhhcyBub3QgYmVlbiBzYXZlZCwgaXQgbWF5IG5vdCBoYXZlIGFuIGlkLjwvcD4KCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9jbGFzcyIgbmFtZT0ibWV0aG9kX2dldF9jbGFzcyIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NsYXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfY2xhc3MoKSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdldCB0aGUgY2xhc3MgKHR5cGUpIG9mIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfbGFiZWwiIG5hbWU9Im1ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9sYWJlbCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2xhYmVsKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGxhYmVsLCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2xhYmVsIiBuYW1lPSJtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9sYWJlbChzdHJpbmcgPHNwYW4gY2xhc3M9ImFyZ3VtZW50Ij4kbGFiZWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCBhIGxhYmVsIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+c3RyaW5nPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGxhYmVsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9zaW5nbGVfdmFsdWUucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zaW5nbGVfdmFsdWUucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_smarty.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTMzMzc1NTIyMiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0zMzM3NTUyMjIiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTU2NjkyMzUxMSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS01NjY5MjM1MTEiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgICAgICAgICAgPG5hdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPiA8aSBjbGFzcz0iaWNvbi1sZXZlbC11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KCiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD5cQ0dDb250YWN0czwvc21hbGw+Y29udGFjdF9zbWFydHk8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5BIHV0aWxpdHkgY2xhc3MgY29udGFpbmluZyBzbWFydHkgcGx1Z2lucy48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHVibGljIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBjb25zdGFudHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcm90ZWN0ZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcml2YXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+ZmluYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zbWFydHkucGhwLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+Y2xhc3MuY29udGFjdF9zbWFydHkucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NtYXJ0eTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9zbWFydHkucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zbWFydHkucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_string.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE3MjA3OTk2MSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xNzIwNzk5NjEiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTI2NzE1MzkxMSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0yNjcxNTM5MTEiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgICAgICAgICAgPG5hdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPiA8aSBjbGFzcz0iaWNvbi1sZXZlbC11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KCiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD5cQ0dDb250YWN0czwvc21hbGw+Y29udGFjdF9zdHJpbmc8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzaW1wbGUgc3RyaW5nIHByb3BlcnR5IGZvciBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+QSBjb250YWN0IGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwjbWV0aG9kX2dldF92YWx1ZSIgY2xhc3M9IiI+Z2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwjbWV0aG9kX3NldF92YWx1ZSIgY2xhc3M9IiI+c2V0X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iIj52YWxpZGF0ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iIj5nZXRfcmF3X3ZhbHVlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3RvX2RhdGEiIGNsYXNzPSIiPnRvX2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2RhdGEiIGNsYXNzPSIiPnNldF9kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iIj5fX2NvbnN0cnVjdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9IiI+Z2V0X2NvbnRhY3RfaWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NsYXNzIiBjbGFzcz0iIj5nZXRfY2xhc3MoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iIj5nZXRfbGFiZWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iIj5zZXRfbGFiZWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iIj5pc19wcmVmZXJyZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9IiI+c2V0X3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSIiPmFsbG93c19tdWx0aXBsZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkZpbGU8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3Rfc3RyaW5nLnBocC5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPmNsYXNzLmNvbnRhY3Rfc3RyaW5nLnBocDwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+Q2xhc3MgaGllcmFyY2h5PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0iaGllcmFyY2h5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N0cmluZzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJtZXRob2RzIiBuYW1lPSJtZXRob2RzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj48aDI+TWV0aG9kczwvaDI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPjwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9zZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ZhbHVlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdG9fZGF0YSIgbmFtZT0ibWV0aG9kX3RvX2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnRvX2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnRvX2RhdGEoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29udmVydCB0aGlzIG9iamVjdCB0byBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2RhdGEiIG5hbWU9Im1ldGhvZF9zZXRfZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9kYXRhKGFycmF5IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGRhdGE8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkZpbGwgdGhpcyBvYmplY3QgZnJvbSBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmFycmF5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RhY3QKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHBhcmVudDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcGFyZW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+QSByZWZlcmVuY2UgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhpcyBvYmplY3QuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIG5hbWU9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvbnRhY3RfaWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb250YWN0X2lkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgY29udGFjdCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiB0aGUgY29udGFjdCBvYmplY3QgaXMgbmV3IGFuZCBoYXMgbm90IGJlZW4gc2F2ZWQsIGl0IG1heSBub3QgaGF2ZSBhbiBpZC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2xhc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jbGFzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NsYXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNsYXNzICh0eXBlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhYmVsIiBuYW1lPSJtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYWJlbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsYWJlbCwgaWYgYW55LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYWJlbCIgbmFtZT0ibWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGFiZWwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgYSBsYWJlbCBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF9zdHJpbmcucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zdHJpbmcucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_sub.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTk0MjAyMzk5NyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS05NDIwMjM5OTciIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTg1Mjc4MjI3Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTg1Mjc4MjI3IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT4gPGkgY2xhc3M9Imljb24tbGV2ZWwtdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+XENHQ29udGFjdHM8L3NtYWxsPmNvbnRhY3Rfc3ViPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+QW4gYWJzdHJhY3QgY2xhc3MgdG8gZGVzY3JpYmUgYSBiYXNpYyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+QSBjb250YWN0IGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzLjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX19fY29uc3RydWN0IiBjbGFzcz0iIj5fX2NvbnN0cnVjdCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9IiI+Z2V0X2NvbnRhY3RfaWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2NsYXNzIiBjbGFzcz0iIj5nZXRfY2xhc3MoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iIj5nZXRfbGFiZWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X2xhYmVsIiBjbGFzcz0iIj5zZXRfbGFiZWwoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iIj5pc19wcmVmZXJyZWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9IiI+c2V0X3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9hbGxvd3NfbXVsdGlwbGUiIGNsYXNzPSIiPmFsbG93c19tdWx0aXBsZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF92YWxpZGF0ZSIgY2xhc3M9IiI+dmFsaWRhdGUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfZ2V0X3Jhd192YWx1ZSIgY2xhc3M9IiI+Z2V0X3Jhd192YWx1ZSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF90b19kYXRhIiBjbGFzcz0iIj50b19kYXRhKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX3NldF9kYXRhIiBjbGFzcz0iIj5zZXRfZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwdWJsaWMgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIGNvbnN0YW50cyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByb3RlY3RlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIHByaXZhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJpdmF0ZSBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Ti9BPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+YWJzdHJhY3Q8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5GaWxlPC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3N1Yi5waHAuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5jbGFzcy5jb250YWN0X3N1Yi5waHA8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkNsYXNzIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHBhcmVudDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcGFyZW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+QSByZWZlcmVuY2UgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhpcyBvYmplY3QuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIG5hbWU9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvbnRhY3RfaWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb250YWN0X2lkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgY29udGFjdCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiB0aGUgY29udGFjdCBvYmplY3QgaXMgbmV3IGFuZCBoYXMgbm90IGJlZW4gc2F2ZWQsIGl0IG1heSBub3QgaGF2ZSBhbiBpZC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2xhc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jbGFzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NsYXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNsYXNzICh0eXBlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhYmVsIiBuYW1lPSJtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYWJlbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsYWJlbCwgaWYgYW55LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYWJlbCIgbmFtZT0ibWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGFiZWwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgYSBsYWJlbCBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdG9fZGF0YSIgbmFtZT0ibWV0aG9kX3RvX2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnRvX2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnRvX2RhdGEoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29udmVydCB0aGlzIG9iamVjdCB0byBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2RhdGEiIG5hbWU9Im1ldGhvZF9zZXRfZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9kYXRhKGFycmF5IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGRhdGE8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkZpbGwgdGhpcyBvYmplY3QgZnJvbSBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmFycmF5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RhY3QKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy5jb250YWN0X3N1Yi5waHA8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3N1Yi5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.contact_url.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTc4NTY4MTU2NyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS03ODU2ODE1NjciIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTEzNzY4Mjk5NDQiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTM3NjgyOTk0NCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+IDxpIGNsYXNzPSJpY29uLWxldmVsLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlxDR0NvbnRhY3RzPC9zbWFsbD5jb250YWN0X3VybDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPkEgY2xhc3MgdG8gcmVwcmVzZW50IGEgVVJMIG9iamVjdCB3aXRoaW4gYSBjb250YWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIDxwPk11bHRpcGxlIFVSTCBvYmplY3RzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InN1bW1hcnkiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3VtbWFyeTwvaDI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgaGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZXRob2RzIj5NZXRob2RzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvcGVydGllcyI+UHJvcGVydGllczwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnN0YW50cyI+Q29uc3RhbnRzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHVibGljIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwjbWV0aG9kX2dldF9hZGRyZXNzIiBjbGFzcz0iIj5nZXRfYWRkcmVzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sI21ldGhvZF9zZXRfYWRkcmVzcyIgY2xhc3M9IiI+c2V0X2FkZHJlc3MoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCNtZXRob2RfZ2V0X3ZhbHVlIiBjbGFzcz0iIj5nZXRfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCNtZXRob2Rfc2V0X3ZhbHVlIiBjbGFzcz0iIj5zZXRfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdmFsaWRhdGUiIGNsYXNzPSIiPnZhbGlkYXRlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9yYXdfdmFsdWUiIGNsYXNzPSIiPmdldF9yYXdfdmFsdWUoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfdG9fZGF0YSIgY2xhc3M9IiI+dG9fZGF0YSgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfZGF0YSIgY2xhc3M9IiI+c2V0X2RhdGEoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCNtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSIiPl9fY29uc3RydWN0KCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2dldF9jb250YWN0X2lkIiBjbGFzcz0iIj5nZXRfY29udGFjdF9pZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSIiPmdldF9jbGFzcygpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9nZXRfbGFiZWwiIGNsYXNzPSIiPmdldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfbGFiZWwiIGNsYXNzPSIiPnNldF9sYWJlbCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9pc19wcmVmZXJyZWQiIGNsYXNzPSIiPmlzX3ByZWZlcnJlZCgpPC9hPjxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sI21ldGhvZF9zZXRfcHJlZmVycmVkIiBjbGFzcz0iIj5zZXRfcHJlZmVycmVkKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwjbWV0aG9kX2FsbG93c19tdWx0aXBsZSIgY2xhc3M9IiI+YWxsb3dzX211bHRpcGxlKCk8L2E+PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHB1YmxpYyBwcm9wZXJ0aWVzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gY29uc3RhbnRzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJvdGVjdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByb3RlY3RlZCBtZXRob2RzIGZvdW5kPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgcHJpdmF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcml2YXRlIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5OL0E8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF91cmwucGhwLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+Y2xhc3MuY29udGFjdF91cmwucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lc3BhY2Utd3JhcHBlciI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3RfdXJsPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZHMiIG5hbWU9Im1ldGhvZHMiPjwvYT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPjxoMj5NZXRob2RzPC9oMj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+PC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9hZGRyZXNzIiBuYW1lPSJtZXRob2RfZ2V0X2FkZHJlc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9hZGRyZXNzKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfYWRkcmVzcygpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBVUkwgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfYWRkcmVzcyIgbmFtZT0ibWV0aG9kX3NldF9hZGRyZXNzIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5zZXRfYWRkcmVzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X2FkZHJlc3Moc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHZhbDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBVUkwgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfdmFsdWUiIG5hbWU9Im1ldGhvZF9zZXRfdmFsdWUiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnNldF92YWx1ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ZhbHVlKHN0cmluZyA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiR2YWw8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5zdHJpbmc8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZTwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF92YWxpZGF0ZSIgbmFtZT0ibWV0aG9kX3ZhbGlkYXRlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj52YWxpZGF0ZSgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+dmFsaWRhdGUoKTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LiAgVGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX2dldF9yYXdfdmFsdWUiIG5hbWU9Im1ldGhvZF9nZXRfcmF3X3ZhbHVlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfcmF3X3ZhbHVlKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5nZXRfcmF3X3ZhbHVlKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIHJhdyB2YWx1ZSAoZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5hYnN0cmFjdDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfdG9fZGF0YSIgbmFtZT0ibWV0aG9kX3RvX2RhdGEiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPnRvX2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnRvX2RhdGEoKSA6IGFycmF5PC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29udmVydCB0aGlzIG9iamVjdCB0byBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2Rfc2V0X2RhdGEiIG5hbWU9Im1ldGhvZF9zZXRfZGF0YSIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2RhdGEoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPnNldF9kYXRhKGFycmF5IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGRhdGE8L3NwYW4+KTwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkZpbGwgdGhpcyBvYmplY3QgZnJvbSBhIGRhdGEgYXJyYXkuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPmFycmF5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGE8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RhY3QKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX19fY29uc3RydWN0IiBuYW1lPSJtZXRob2RfX19jb25zdHJ1Y3QiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPl9fY29uc3RydWN0KCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5fX2NvbnN0cnVjdChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JHBhcmVudDwvc3Bhbj4pPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+Q29uc3RydWN0b3I8L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+XENHQ29udGFjdHNcY29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kcGFyZW50PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PHA+QSByZWZlcmVuY2UgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhpcyBvYmplY3QuPC9wPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2NvbnRhY3RfaWQiIG5hbWU9Im1ldGhvZF9nZXRfY29udGFjdF9pZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+Z2V0X2NvbnRhY3RfaWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9jb250YWN0X2lkKCkgOiBpbnQ8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5SZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgY29udGFjdCBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICA8cD5JZiB0aGUgY29udGFjdCBvYmplY3QgaXMgbmV3IGFuZCBoYXMgbm90IGJlZW4gc2F2ZWQsIGl0IG1heSBub3QgaGF2ZSBhbiBpZC48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9nZXRfY2xhc3MiIG5hbWU9Im1ldGhvZF9nZXRfY2xhc3MiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmdldF9jbGFzcygpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Z2V0X2NsYXNzKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5HZXQgdGhlIGNsYXNzICh0eXBlKSBvZiB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X2xhYmVsIiBuYW1lPSJtZXRob2RfZ2V0X2xhYmVsIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfbGFiZWwoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF9sYWJlbCgpIDogc3RyaW5nPC9wcmU+CiAgICAgICAgICAgICAgICA8cD48ZW0+R2V0IHRoZSBsYWJlbCwgaWYgYW55LCBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYXJyb3ctZG93biI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5Jbmhlcml0ZWQgZnJvbTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj48ZGl2IGNsYXNzPSJwYXRoLXdyYXBwZXIiPlxDR0NvbnRhY3RzXGNvbnRhY3Rfc3ViPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgY2xhc3MiPgogICAgICAgICAgICA8YSBpZD0ibWV0aG9kX3NldF9sYWJlbCIgbmFtZT0ibWV0aG9kX3NldF9sYWJlbCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X2xhYmVsKCk8L2gzPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIiBzdHlsZT0iZm9udC1zaXplOiAxLjFlbTsgcGFkZGluZzogOXB4IDE0cHgiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzaWduYXR1cmUiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDU0cHg7Ij5zZXRfbGFiZWwoc3RyaW5nIDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGxhYmVsPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgYSBsYWJlbCBmb3IgdGhpcyBvYmplY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5QYXJhbWV0ZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnN0cmluZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRsYWJlbDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfaXNfcHJlZmVycmVkIiBuYW1lPSJtZXRob2RfaXNfcHJlZmVycmVkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5pc19wcmVmZXJyZWQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmlzX3ByZWZlcnJlZCgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPlRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9zZXRfcHJlZmVycmVkIiBuYW1lPSJtZXRob2Rfc2V0X3ByZWZlcnJlZCIgY2xhc3M9ImFuY2hvciI+PC9hPgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0ibWV0aG9kIj4KICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0icHVibGljICI+c2V0X3ByZWZlcnJlZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+c2V0X3ByZWZlcnJlZChtaXhlZCA8c3BhbiBjbGFzcz0iYXJndW1lbnQiPiRmbGFnPC9zcGFuPik8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5TZXQgdGhlIHByZWZlcnJlZCBmbGFnIGZvciB0aGlzIG9iamVjdC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlBhcmFtZXRlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+bWl4ZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4kZmxhZzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PkluaGVyaXRlZCBmcm9tPC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+XENHQ29udGFjdHNcY29udGFjdF9zdWI8L2Rpdj48L2E+PC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBuYW1lPSJtZXRob2RfYWxsb3dzX211bHRpcGxlIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5hbGxvd3NfbXVsdGlwbGUoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmFsbG93c19tdWx0aXBsZSgpIDogYm9vbDwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPldoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UmV0dXJuczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgYm9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+SW5oZXJpdGVkIGZyb208L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+PGRpdiBjbGFzcz0icGF0aC13cmFwcGVyIj5cQ0dDb250YWN0c1xjb250YWN0X3N1YjwvZGl2PjwvYT48L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RvCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9hc2lkZT4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+Y2xhc3MuY29udGFjdF91cmwucGhwPC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF91cmwucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/classes/CGContacts.utils.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICBmdW5jdGlvbiBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKSB7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgdmFyIHNyYyA9IHByZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSAoc3JjLm1hdGNoKC9cLihcdyspJC8pIHx8IFssICcnXSlbMV07CiAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7CiAgICAgICAgICAgIGNvZGUuY2xhc3NOYW1lID0gJ2xhbmd1YWdlLScgKyBsYW5ndWFnZTsKCiAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICdMb2FkaW5n4oCmJzsKCiAgICAgICAgICAgIHByZS5hcHBlbmRDaGlsZChjb2RlKTsKCiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBzcmMsIHRydWUpOwoKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzIDwgNDAwICYmIHhoci5yZXNwb25zZVRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9IHhoci5yZXNwb25zZVRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4aHIuc3RhdHVzID49IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgIH0pOwogICAgfQoKICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgbG9hZEV4dGVybmFsQ29kZVNuaXBwZXRzKCk7CiAgICB9KTsKICAgICQoJyNzb3VyY2UtdmlldycpLm9uKCdzaG93bicsIGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgIH0pCjwvc2NyaXB0PgoKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTIwNTMyNDUzMTIiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMjA1MzI0NTMxMiIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtODc4MDEzNTQxIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTg3ODAxMzU0MSIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+IDxpIGNsYXNzPSJpY29uLWxldmVsLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlxDR0NvbnRhY3RzPC9zbWFsbD51dGlsczwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoaXMgY2xhc3MgcHJvdmlkZXMgdmFyaW91cyBzdGF0aWMgYXBwbGljYXRpb24gbGV2ZWwgdXRpbGl0aWVzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0ic3VtbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5TdW1tYXJ5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBoZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI21ldGhvZHMiPk1ldGhvZHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29uc3RhbnRzIj5Db25zdGFudHM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwdWJsaWMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCNtZXRob2RfY2FsY19ndWlkIiBjbGFzcz0iIj5jYWxjX2d1aWQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCNtZXRob2RfZ2V0X3ZjYXJkIiBjbGFzcz0iIj5nZXRfdmNhcmQoKTwvYT48YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHVibGljIHByb3BlcnRpZXMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBjb25zdGFudHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcm90ZWN0ZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+Tm8gcHJvdGVjdGVkIG1ldGhvZHMgZm91bmQ8L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbT5ObyBwcm90ZWN0ZWQgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBwcml2YXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgbWV0aG9kcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk5vIHByaXZhdGUgcHJvcGVydGllcyBmb3VuZDwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPk4vQTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyI+ZmluYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+RmlsZTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iLi4vZmlsZXMvY2xhc3MudXRpbHMucGhwLmh0bWwiPjxkaXYgY2xhc3M9InBhdGgtd3JhcHBlciI+Y2xhc3MudXRpbHMucGhwPC9kaXY+PC9hPjwvZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DbGFzcyBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkIGNsYXNzPSJoaWVyYXJjaHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cQ0dDb250YWN0c1x1dGlsczwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJtZXRob2RzIiBuYW1lPSJtZXRob2RzIj48L2E+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj48aDI+TWV0aG9kczwvaDI+PC9kaXY+CiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPjwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGNsYXNzIj4KICAgICAgICAgICAgPGEgaWQ9Im1ldGhvZF9jYWxjX2d1aWQiIG5hbWU9Im1ldGhvZF9jYWxjX2d1aWQiIGNsYXNzPSJhbmNob3IiPjwvYT4KICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im1ldGhvZCI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InB1YmxpYyAiPmNhbGNfZ3VpZCgpPC9oMz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4xZW07IHBhZGRpbmc6IDlweCAxNHB4Ij48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiA1NHB4OyI+Y2FsY19ndWlkKCkgOiBzdHJpbmc8L3ByZT4KICAgICAgICAgICAgICAgIDxwPjxlbT5DYWxjdWxhdGUgYSB1bmlxdWUgR1VJRC48L2VtPjwvcD4KICAgICAgICAgICAgICAgIDxwPlRoaXMgbWV0aG9kIHVzZXMgdGhlIGZ1bmN0aW9uIGNvbV9jcmVhdGVfZ3VpZCBpZiBpdCBjYW4gYmUgZm91bmQsIG90aGVyd2lzZQppdCBnZW5lcmF0ZXMgYSBzZXJpZXMgb2YgcmFuZG9tIHZhbHVlcy48L3A+CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlJldHVybnM8L2g0PgogICAgICAgICAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWFycm93LWRvd24iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8iPnN0YXRpYzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kbwogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBjbGFzcyI+CiAgICAgICAgICAgIDxhIGlkPSJtZXRob2RfZ2V0X3ZjYXJkIiBuYW1lPSJtZXRob2RfZ2V0X3ZjYXJkIiBjbGFzcz0iYW5jaG9yIj48L2E+CiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJtZXRob2QiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJwdWJsaWMgIj5nZXRfdmNhcmQoKTwvaDM+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiIHN0eWxlPSJmb250LXNpemU6IDEuMWVtOyBwYWRkaW5nOiA5cHggMTRweCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbi1yaWdodDogNTRweDsiPmdldF92Y2FyZChcQ0dDb250YWN0c1xjb250YWN0IDxzcGFuIGNsYXNzPSJhcmd1bWVudCI+JGNvbnRhY3Q8L3NwYW4+KSA6IHN0cmluZzwvcHJlPgogICAgICAgICAgICAgICAgPHA+PGVtPkdlbmVyYXRlIGEgdmNhcmQgZm9yIHRoZSBwcm92aWRlZCBjb250YWN0LjwvZW0+PC9wPgogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+UGFyYW1ldGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5cQ0dDb250YWN0c1xjb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRjb250YWN0PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5SZXR1cm5zPC9oND4KICAgICAgICAgICAgICAgICAgICBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1hcnJvdy1kb3duIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIj5zdGF0aWM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZG8KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2FzaWRlPgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj5jbGFzcy51dGlscy5waHA8L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy51dGlscy5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/css/jquery.iviewer.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnZpZXdlciB7CiAgICAtbXMtdG91Y2gtYWN0aW9uOiBub25lOwp9CgouaXZpZXdlcl9jb21tb24gewogICAgcG9zaXRpb246YWJzb2x1dGU7CiAgICBib3R0b206MTBweDsKICAgIGJvcmRlcjogMXB4ICBzb2xpZCAjMDAwOwogICAgaGVpZ2h0OiAyOHB4OwogICAgei1pbmRleDogNTAwMDsKfQoKLml2aWV3ZXJfY3Vyc29yIHsKICAgIGN1cnNvcjogdXJsKC4uL2ltYWdlcy9pdmlld2VyL2hhbmQuY3VyKSA2IDgsIHBvaW50ZXI7Cn0KCi5pdmlld2VyX2RyYWdfY3Vyc29yIHsKICAgIGN1cnNvcjogdXJsKC4uL2ltYWdlcy9pdmlld2VyL2dyYWIuY3VyKSA2IDgsIHBvaW50ZXI7Cn0KCi5pdmlld2VyX2J1dHRvbiB7CiAgICB3aWR0aDogMjhweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9CgouaXZpZXdlcl96b29tX2luIHsKICAgIGxlZnQ6IDIwcHg7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2l2aWV3ZXIvaXZpZXdlci56b29tX2luLnBuZyk7Cn0KCi5pdmlld2VyX3pvb21fb3V0IHsKICAgIGxlZnQ6IDU1cHg7CiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2l2aWV3ZXIvaXZpZXdlci56b29tX291dC5wbmcpOwp9CgouaXZpZXdlcl96b29tX3plcm8gewogICAgbGVmdDogOTBweDsKICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvaXZpZXdlci9pdmlld2VyLnpvb21femVyby5wbmcpOwp9CgouaXZpZXdlcl96b29tX2ZpdCB7CiAgICBsZWZ0OiAxMjVweDsKICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvaXZpZXdlci9pdmlld2VyLnpvb21fZml0LnBuZyk7Cn0KCi5pdmlld2VyX3pvb21fc3RhdHVzIHsKICAgIGxlZnQ6IDE2MHB4OwogICAgZm9udDogMWVtLzI4cHggU2FuczsKICAgIGNvbG9yOiAjMDAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHdpZHRoOiA2MHB4Owp9CgouaXZpZXdlcl9yb3RhdGVfbGVmdCB7CiAgICBsZWZ0OiAyMjdweDsKICAgIGJhY2tncm91bmQ6ICNmZmYgdXJsKC4uL2ltYWdlcy9pdmlld2VyL2l2aWV3ZXIucm90YXRlX2xlZnQucG5nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDsKfQoKLml2aWV3ZXJfcm90YXRlX3JpZ2h0IHsKICAgIGxlZnQ6IDI2MnB4OwogICAgYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vaW1hZ2VzL2l2aWV3ZXIvaXZpZXdlci5yb3RhdGVfcmlnaHQucG5nKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/fonts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.dev.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+ClRoaXMgaXMgYSBjdXN0b20gU1ZHIGZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uCjxpY29uc2V0IGlkPSJwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zIiBuYW1lPSJwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zIiBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmciIGdyaWQ9IjE2Ij48L2ljb25zZXQ+PGF1dGhvciBuYW1lPSJNaWtlIHZhbiBSaWVsIiBocmVmPSJodHRwOi8vd3d3Lm1pa2V2YW5yaWVsLmNvbSI+PC9hdXRob3I+PGxpY2Vuc2UgbmFtZT0iU0lMIj48L2xpY2Vuc2U+CjwvbWV0YWRhdGE+CjxkZWZzPgo8Zm9udCBpZD0icGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucyIgaG9yaXotYWR2LXg9IjUxMiIgPgo8Zm9udC1mYWNlIHVuaXRzLXBlci1lbT0iNTEyIiBhc2NlbnQ9IjQ4MCIgZGVzY2VudD0iLTMyIiAvPgo8bWlzc2luZy1nbHlwaCBob3Jpei1hZHYteD0iNTEyIiAvPgo8Z2x5cGggY2xhc3M9ImhpZGRlbiIgdW5pY29kZT0iJiN4ZjAwMDsiIGQ9Ik0wLDQ4MEwgNTEyIC0zMkwwIC0zMiB6IiBob3Jpei1hZHYteD0iMCIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDA7IiBkPSJNIDEzOS42MzYsNDU2LjcyNyBDIDc1LjE3MSw0NTYuNzI3IDIzLjI3Myw0MDQuODI5IDIzLjI3MywzNDAuMzY0IGwgMC0yMzIuNzI3IGMgMC02NC40NjUgNTEuODk4LTExNi4zNjQgMTE2LjM2NC0xMTYuMzY0IGwgMjMyLjcyNywwIGMgNjQuNDY1LDAgMTE2LjM2NCw1MS44OTggMTE2LjM2NCwxMTYuMzY0IEwgNDg4LjcyNywzNDAuMzY0IEMgNDg4LjcyNyw0MDQuODI5IDQzNi44MjksNDU2LjcyNyAzNzIuMzY0LDQ1Ni43MjcgTCAxMzkuNjM2LDQ1Ni43MjcgeiBtIDIwLjcyNy00MS4zODEgMTkxLjI3NCwwIGMgNTMuMDAxLDAgOTUuNzA5LTQyLjcwOCA5NS43MDktOTUuNzA5IGwgMC0xOTEuMjc0IGMgMC01My4wMDEgLTQyLjcwOC05NS43MDkgLTk1LjcwOS05NS43MDkgbCAtMTkxLjI3NCwwIGMgLTUzLjAwMSwwIC05NS43MDksNDIuNzA4IC05NS43MDksOTUuNzA5IGwgMCwxOTEuMjc0IGMgMCw1My4wMDEgNDIuNzA4LDk1LjcwOSA5NS43MDksOTUuNzA5IHpNIDM1OS45NjMsMzY2LjgyNyAgbTAsMCwwLTQzLjEyNCAtODQuMjcxLDAgMC0yMzEuMDUyIC01MC4yNDYsMCAwLDIzMS4wNTIgLTg0LjI3MSwwIDAsNDMuMTI0IDIxOC43ODcsMCIgZGF0YS10YWdzPSJ0cmFpdCIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDE7IiBkPSJNIDEzOS42MzYsNDU2LjcyNyBDIDc1LjE3MSw0NTYuNzI3IDIzLjI3Myw0MDQuODI5IDIzLjI3MywzNDAuMzY0IGwgMC0yMzIuNzI3IGMgMC02NC40NjUgNTEuODk4LTExNi4zNjQgMTE2LjM2NC0xMTYuMzY0IGwgMjMyLjcyNywwIGMgNjQuNDY1LDAgMTE2LjM2NCw1MS44OTggMTE2LjM2NCwxMTYuMzY0IEwgNDg4LjcyNywzNDAuMzY0IEMgNDg4LjcyNyw0MDQuODI5IDQzNi44MjksNDU2LjcyNyAzNzIuMzY0LDQ1Ni43MjcgTCAxMzkuNjM2LDQ1Ni43MjcgeiBtIDIwLjcyNy00MS4zODEgMTkxLjI3NCwwIGMgNTMuMDAxLDAgOTUuNzA5LTQyLjcwOCA5NS43MDktOTUuNzA5IGwgMC0xOTEuMjc0IGMgMC01My4wMDEgLTQyLjcwOC05NS43MDkgLTk1LjcwOS05NS43MDkgbCAtMTkxLjI3NCwwIGMgLTUzLjAwMSwwIC05NS43MDksNDIuNzA4IC05NS43MDksOTUuNzA5IGwgMCwxOTEuMjc0IGMgMCw1My4wMDEgNDIuNzA4LDk1LjcwOSA5NS43MDksOTUuNzA5IHpNIDIzMS4wNzUsMzY2LjgyNyAgbTAsMCwgNDkuODUsMCAwLTI3NC4xNzYgLTQ5Ljg1LDAgMCwyNzQuMTc2IiBkYXRhLXRhZ3M9ImludGVyZmFjZSIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDI7IiBkPSJNIDEzOS42MzYsNDU2LjcyNyBDIDc1LjE3MSw0NTYuNzI3IDIzLjI3Myw0MDQuODI5IDIzLjI3MywzNDAuMzY0IGwgMC0yMzIuNzI3IGMgMC02NC40NjUgNTEuODk4LTExNi4zNjQgMTE2LjM2NC0xMTYuMzY0IGwgMjMyLjcyNywwIGMgNjQuNDY1LDAgMTE2LjM2NCw1MS44OTggMTE2LjM2NCwxMTYuMzY0IEwgNDg4LjcyNywzNDAuMzY0IEMgNDg4LjcyNyw0MDQuODI5IDQzNi44MjksNDU2LjcyNyAzNzIuMzY0LDQ1Ni43MjcgTCAxMzkuNjM2LDQ1Ni43MjcgeiBtIDIwLjcyNy00MS4zODEgMTkxLjI3NCwwIGMgNTMuMDAxLDAgOTUuNzA5LTQyLjcwOCA5NS43MDktOTUuNzA5IGwgMC0xOTEuMjc0IGMgMC01My4wMDEgLTQyLjcwOC05NS43MDkgLTk1LjcwOS05NS43MDkgbCAtMTkxLjI3NCwwIGMgLTUzLjAwMSwwIC05NS43MDksNDIuNzA4IC05NS43MDksOTUuNzA5IGwgMCwxOTEuMjc0IGMgMCw1My4wMDEgNDIuNzA4LDk1LjcwOSA5NS43MDksOTUuNzA5IHpNIDI3OC43NDksODYuNzE3ICBtMCwwLGMgLTIwLjU3MywwIC0zOS4wMzYsMy4xNjUgLTU1LjM4OSw5LjQ5NSAtMTYuMzUzLDYuMzMgLTMwLjIsMTUuNTYyIC00MS41NDIsMjcuNjk1IC0xMS4zNDIsMTIuMzk3IC0yMC4wNDYsMjcuNDMxIC0yNi4xMTIsNDUuMTAzIC02LjA2NiwxNy42NzIgLTkuMSwzNy45ODEgLTkuMSw2MC45MjggMCwyMi45NDcgMy40MjksNDMuMjU2IDEwLjI4Nyw2MC45MjggNy4xMjEsMTcuNjcyIDE2Ljc0OSwzMi41NzQgMjguODgxLDQ0LjcwNyAxMi4xMzMsMTIuMzk2IDI2LjM3NiwyMS43NiA0Mi43MjksMjguMDkwIDE2LjM1Myw2LjMzIDMzLjg5Myw5LjQ5NSA1Mi42Miw5LjQ5NSAxMS4zNDEsMCAyMS42MjgtMC45MjMgMzAuODYtMi43NjkgOS4yMzEtMS41ODMgMTcuMjc2LTMuNDI5IDI0LjEzNC01LjUzOSA2Ljg1Ny0yLjExIDEyLjUyOC00LjM1MiAxNy4wMTItNi43MjYgNC40ODQtMi4zNzQgNy42NDktNC4wODkgOS40OTUtNS4xNDMgbCAtMTQuNjM5LTQwLjc1MSBjIC02LjMzLDMuOTU2IC0xNS40Myw3LjY0OSAtMjcuMjk5LDExLjA3OCAtMTEuNjA2LDMuNjkyIC0yNC4yNjYsNS41MzkgLTM3Ljk4MSw1LjUzOSAtMTEuODY5LDAgLTIyLjk0Ny0yLjExIC0zMy4yMzMtNi4zMyAtMTAuMjg3LTMuOTU3IC0xOS4yNTQtMTAuMDIzIC0yNi45MDMtMTguMTk5IC03LjM4NS04LjE3NyAtMTMuMTg4LTE4LjQ2MyAtMTcuNDA4LTMwLjg2IC00LjIyLTEyLjM5NyAtNi4zMy0yNi43NzIgLTYuMzMtNDMuMTI0IDAtMTQuNTA3IDEuNTgyLTI3LjgyNyA0Ljc0OC0zOS45NTkgMy40MjktMTIuMTMzIDguNTcyLTIyLjY4MyAxNS40My0zMS42NTEgNi44NTgtOC43MDQgMTUuNTYyLTE1LjU2MiAyNi4xMTItMjAuNTczIDEwLjU1LTQuNzQ4IDIzLjIxMS03LjEyMiAzNy45ODEtNy4xMjEgMTcuNjcyLDAgMzIuMDQ2LDEuNzE0IDQzLjEyNCw1LjE0MyAxMS4wNzgsMy42OTMgMTkuNjUsNy4xMjEgMjUuNzE2LDEwLjI4NyBsIDEzLjQ1Mi00MC43NTEgYyAtMy4xNjUtMi4xMSAtNy41MTctNC4yMiAtMTMuMDU2LTYuMzMgLTUuMjc1LTIuMTEgLTExLjYwNi00LjIyIC0xOC45OTEtNi4zMyAtNy4zODUtMS44NDYgLTE1LjY5NC0zLjI5NyAtMjQuOTI1LTQuMzUyIC05LjIzMi0xLjMxOSAtMTkuMTIzLTEuOTc4IC0yOS42NzMtMS45NzgiIGRhdGEtdGFncz0iY2xhc3MiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDsiIGhvcml6LWFkdi14PSIyNTYiIC8+CjwvZm9udD48L2RlZnM+PC9zdmc+]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.eot</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[FAkAACAIAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAABAAAAAAAAAAAAEAAIAAAAAATESX7gAAAAAAAAAAAAAAAAAAAAAAADIAcABoAHAAZABvAGMAdQBtAGUAbgB0AG8AcgAtAGMAbABlAGEAbgAtAGkAYwBvAG4AcwAAABYAYwBsAGUAYQBuAC0AaQBjAG8AbgBzAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAyAHAAaABwAGQAbwBjAHUAbQBlAG4AdABvAHIALQBjAGwAZQBhAG4ALQBpAGMAbwBuAHMAAAAAAAABAAAADQCAAAMAUEZGVE1oWxY8AAAIBAAAABxHREVGADQABgAAB+QAAAAgT1MvMi+63B8AAAFYAAAAVmNtYXDgFvPUAAAByAAAAVJnYXNw//8AAwAAB9wAAAAIZ2x5ZnXnY54AAAMsAAAB9GhlYWT9PLQpAAAA3AAAADZoaGVhBBD/5gAAARQAAAAkaG10eATBAC4AAAGwAAAAGGxvY2EAjgFCAAADHAAAABBtYXhwAE0AWAAAATgAAAAgbmFtZTYxlMIAAAUgAAACanBvc3Q1pnxxAAAHjAAAAFAAAQAAAAEAAO6XRExfDzz1AAsCAAAAAADODrm2AAAAAM4OubYAAP/gAgAB4AAAAAgAAgAAAAAAAAABAAAB4P/gAC4CAAAA/gACAAABAAAAAAAAAAAAAAAAAAAABQABAAAABwBVAAQAAAAAAAIAAAABAAEAAABAAAAAAAAAAAECAAGQAAUACAFMAWYAAABHAUwBZgAAAPUAGQCEAAACAAUDAAAAAAAAAAAAABAAAAAAAAAAAAAAAFBmRWQAQOAA8AAB4P/gAC4B4AAggAAAAQAAAAAAAAIAAAAAAAAAAKoAAAAAAAACAAAXABcAFwAAAAMAAAADAAAAHAABAAAAAABMAAMAAQAAABwABAAwAAAACAAIAAIAAAAA4ALwAP//AAAAAOAA8AD//wAAIAQQAwABAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAEgAgAD6AAEAAP/gAgAB4AACAAARASECAP4AAeD+AAAAAAAEABf/9wHpAckADwAfACAAKQAAEyIGHQEUFjsBMjY9ATQmIwczMhYdARQGKwEiJj0BNDYXMRUjFSM1IzUzjDFERDHoMUREMdTAJzg4J8AnODjvVDNU2wHJRDHoMUREMegxRCo4J8AnODgnwCc4MCvn5ysAAAQAF//3AekByQAPAB8AIAAlAAATIgYdARQWOwEyNj0BNCYjBzMyFh0BFAYrASImPQE0NhcxMxEjEYwxREQx6DFERDHUwCc4OCfAJzg4bjIyAclEMegxREQx6DFEKjgnwCc4OCfAJzgw/u4BEgAAAAAEABf/9wHpAckADwAfACAAVAAAEyIGHQEUFjsBMjY9ATQmIwczMhYdARQGKwEiJj0BNDYTMSImJy4BNDc2Nz4BMzIXHgIXByYnJiMiBwYHDgEVFBcWFxYXFjMyNzY3FwYHBgcGBwYjjDFERDHoMUREMdTAJzg4J8AnODieHzERERIKCxISMRwRDg4UDgMPChESFBIQDwsMDAUFCgoQEBYbEBEJDQQJCAsLDg0QAclEMegxREQx6DFEKjgnwCc4OCfAJzj+uBMSEzVEGxoTEhMDAgYHAikGBQYGBg0MJRkVExINDQgHBQYEKAMEAwMDAQIAAAAAAAAMAJYAAQAAAAAAAQAZADQAAQAAAAAAAgALAGYAAQAAAAAAAwA1AN4AAQAAAAAABAAZAUgAAQAAAAAABQALAXoAAQAAAAAABgAZAboAAwABBAkAAQAyAAAAAwABBAkAAgAWAE4AAwABBAkAAwBqAHIAAwABBAkABAAyARQAAwABBAkABQAWAWIAAwABBAkABgAyAYYAcABoAHAAZABvAGMAdQBtAGUAbgB0AG8AcgAtAGMAbABlAGEAbgAtAGkAYwBvAG4AcwAAcGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucwAAYwBsAGUAYQBuAC0AaQBjAG8AbgBzAABjbGVhbi1pY29ucwAARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABwAGgAcABkAG8AYwB1AG0AZQBuAHQAbwByAC0AYwBsAGUAYQBuAC0AaQBjAG8AbgBzACAAOgAgADEAOQAtADcALQAyADAAMQAzAABGb250Rm9yZ2UgMi4wIDogcGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucyA6IDE5LTctMjAxMwAAcABoAHAAZABvAGMAdQBtAGUAbgB0AG8AcgAtAGMAbABlAGEAbgAtAGkAYwBvAG4AcwAAcGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucwAAVgBlAHIAcwBpAG8AbgAgADEALgAwAABWZXJzaW9uIDEuMAAAcABoAHAAZABvAGMAdQBtAGUAbgB0AG8AcgAtAGMAbABlAGEAbgAtAGkAYwBvAG4AcwAAcGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAABAAIBAgEDAQQBBQd1bmlGMDAwB3VuaUUwMDAHdW5pRTAwMQd1bmlFMDAyAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAwAGAAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADODrm2AAAAAM4OubY=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+ClRoaXMgaXMgYSBjdXN0b20gU1ZHIGZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uCjxpY29uc2V0IGlkPSJwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zIiBuYW1lPSJwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zIiBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmciIGdyaWQ9IjE2Ij48L2ljb25zZXQ+PGF1dGhvciBuYW1lPSJNaWtlIHZhbiBSaWVsIiBocmVmPSJodHRwOi8vd3d3Lm1pa2V2YW5yaWVsLmNvbSI+PC9hdXRob3I+PGxpY2Vuc2UgbmFtZT0iU0lMIj48L2xpY2Vuc2U+CjwvbWV0YWRhdGE+CjxkZWZzPgo8Zm9udCBpZD0icGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucyIgaG9yaXotYWR2LXg9IjUxMiIgPgo8Zm9udC1mYWNlIHVuaXRzLXBlci1lbT0iNTEyIiBhc2NlbnQ9IjQ4MCIgZGVzY2VudD0iLTMyIiAvPgo8bWlzc2luZy1nbHlwaCBob3Jpei1hZHYteD0iNTEyIiAvPgo8Z2x5cGggY2xhc3M9ImhpZGRlbiIgdW5pY29kZT0iJiN4ZjAwMDsiIGQ9Ik0wLDQ4MEwgNTEyIC0zMkwwIC0zMiB6IiBob3Jpei1hZHYteD0iMCIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDA7IiBkPSJNIDEzOS42MzYsNDU2LjcyNyBDIDc1LjE3MSw0NTYuNzI3IDIzLjI3Myw0MDQuODI5IDIzLjI3MywzNDAuMzY0IGwgMC0yMzIuNzI3IGMgMC02NC40NjUgNTEuODk4LTExNi4zNjQgMTE2LjM2NC0xMTYuMzY0IGwgMjMyLjcyNywwIGMgNjQuNDY1LDAgMTE2LjM2NCw1MS44OTggMTE2LjM2NCwxMTYuMzY0IEwgNDg4LjcyNywzNDAuMzY0IEMgNDg4LjcyNyw0MDQuODI5IDQzNi44MjksNDU2LjcyNyAzNzIuMzY0LDQ1Ni43MjcgTCAxMzkuNjM2LDQ1Ni43MjcgeiBtIDIwLjcyNy00MS4zODEgMTkxLjI3NCwwIGMgNTMuMDAxLDAgOTUuNzA5LTQyLjcwOCA5NS43MDktOTUuNzA5IGwgMC0xOTEuMjc0IGMgMC01My4wMDEgLTQyLjcwOC05NS43MDkgLTk1LjcwOS05NS43MDkgbCAtMTkxLjI3NCwwIGMgLTUzLjAwMSwwIC05NS43MDksNDIuNzA4IC05NS43MDksOTUuNzA5IGwgMCwxOTEuMjc0IGMgMCw1My4wMDEgNDIuNzA4LDk1LjcwOSA5NS43MDksOTUuNzA5IHpNIDM1OS45NjMsMzY2LjgyNyAgbTAsMCwwLTQzLjEyNCAtODQuMjcxLDAgMC0yMzEuMDUyIC01MC4yNDYsMCAwLDIzMS4wNTIgLTg0LjI3MSwwIDAsNDMuMTI0IDIxOC43ODcsMCIgIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDAxOyIgZD0iTSAxMzkuNjM2LDQ1Ni43MjcgQyA3NS4xNzEsNDU2LjcyNyAyMy4yNzMsNDA0LjgyOSAyMy4yNzMsMzQwLjM2NCBsIDAtMjMyLjcyNyBjIDAtNjQuNDY1IDUxLjg5OC0xMTYuMzY0IDExNi4zNjQtMTE2LjM2NCBsIDIzMi43MjcsMCBjIDY0LjQ2NSwwIDExNi4zNjQsNTEuODk4IDExNi4zNjQsMTE2LjM2NCBMIDQ4OC43MjcsMzQwLjM2NCBDIDQ4OC43MjcsNDA0LjgyOSA0MzYuODI5LDQ1Ni43MjcgMzcyLjM2NCw0NTYuNzI3IEwgMTM5LjYzNiw0NTYuNzI3IHogbSAyMC43MjctNDEuMzgxIDE5MS4yNzQsMCBjIDUzLjAwMSwwIDk1LjcwOS00Mi43MDggOTUuNzA5LTk1LjcwOSBsIDAtMTkxLjI3NCBjIDAtNTMuMDAxIC00Mi43MDgtOTUuNzA5IC05NS43MDktOTUuNzA5IGwgLTE5MS4yNzQsMCBjIC01My4wMDEsMCAtOTUuNzA5LDQyLjcwOCAtOTUuNzA5LDk1LjcwOSBsIDAsMTkxLjI3NCBjIDAsNTMuMDAxIDQyLjcwOCw5NS43MDkgOTUuNzA5LDk1LjcwOSB6TSAyMzEuMDc1LDM2Ni44MjcgIG0wLDAsIDQ5Ljg1LDAgMC0yNzQuMTc2IC00OS44NSwwIDAsMjc0LjE3NiIgIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDAyOyIgZD0iTSAxMzkuNjM2LDQ1Ni43MjcgQyA3NS4xNzEsNDU2LjcyNyAyMy4yNzMsNDA0LjgyOSAyMy4yNzMsMzQwLjM2NCBsIDAtMjMyLjcyNyBjIDAtNjQuNDY1IDUxLjg5OC0xMTYuMzY0IDExNi4zNjQtMTE2LjM2NCBsIDIzMi43MjcsMCBjIDY0LjQ2NSwwIDExNi4zNjQsNTEuODk4IDExNi4zNjQsMTE2LjM2NCBMIDQ4OC43MjcsMzQwLjM2NCBDIDQ4OC43MjcsNDA0LjgyOSA0MzYuODI5LDQ1Ni43MjcgMzcyLjM2NCw0NTYuNzI3IEwgMTM5LjYzNiw0NTYuNzI3IHogbSAyMC43MjctNDEuMzgxIDE5MS4yNzQsMCBjIDUzLjAwMSwwIDk1LjcwOS00Mi43MDggOTUuNzA5LTk1LjcwOSBsIDAtMTkxLjI3NCBjIDAtNTMuMDAxIC00Mi43MDgtOTUuNzA5IC05NS43MDktOTUuNzA5IGwgLTE5MS4yNzQsMCBjIC01My4wMDEsMCAtOTUuNzA5LDQyLjcwOCAtOTUuNzA5LDk1LjcwOSBsIDAsMTkxLjI3NCBjIDAsNTMuMDAxIDQyLjcwOCw5NS43MDkgOTUuNzA5LDk1LjcwOSB6TSAyNzguNzQ5LDg2LjcxNyAgbTAsMCxjIC0yMC41NzMsMCAtMzkuMDM2LDMuMTY1IC01NS4zODksOS40OTUgLTE2LjM1Myw2LjMzIC0zMC4yLDE1LjU2MiAtNDEuNTQyLDI3LjY5NSAtMTEuMzQyLDEyLjM5NyAtMjAuMDQ2LDI3LjQzMSAtMjYuMTEyLDQ1LjEwMyAtNi4wNjYsMTcuNjcyIC05LjEsMzcuOTgxIC05LjEsNjAuOTI4IDAsMjIuOTQ3IDMuNDI5LDQzLjI1NiAxMC4yODcsNjAuOTI4IDcuMTIxLDE3LjY3MiAxNi43NDksMzIuNTc0IDI4Ljg4MSw0NC43MDcgMTIuMTMzLDEyLjM5NiAyNi4zNzYsMjEuNzYgNDIuNzI5LDI4LjA5MCAxNi4zNTMsNi4zMyAzMy44OTMsOS40OTUgNTIuNjIsOS40OTUgMTEuMzQxLDAgMjEuNjI4LTAuOTIzIDMwLjg2LTIuNzY5IDkuMjMxLTEuNTgzIDE3LjI3Ni0zLjQyOSAyNC4xMzQtNS41MzkgNi44NTctMi4xMSAxMi41MjgtNC4zNTIgMTcuMDEyLTYuNzI2IDQuNDg0LTIuMzc0IDcuNjQ5LTQuMDg5IDkuNDk1LTUuMTQzIGwgLTE0LjYzOS00MC43NTEgYyAtNi4zMywzLjk1NiAtMTUuNDMsNy42NDkgLTI3LjI5OSwxMS4wNzggLTExLjYwNiwzLjY5MiAtMjQuMjY2LDUuNTM5IC0zNy45ODEsNS41MzkgLTExLjg2OSwwIC0yMi45NDctMi4xMSAtMzMuMjMzLTYuMzMgLTEwLjI4Ny0zLjk1NyAtMTkuMjU0LTEwLjAyMyAtMjYuOTAzLTE4LjE5OSAtNy4zODUtOC4xNzcgLTEzLjE4OC0xOC40NjMgLTE3LjQwOC0zMC44NiAtNC4yMi0xMi4zOTcgLTYuMzMtMjYuNzcyIC02LjMzLTQzLjEyNCAwLTE0LjUwNyAxLjU4Mi0yNy44MjcgNC43NDgtMzkuOTU5IDMuNDI5LTEyLjEzMyA4LjU3Mi0yMi42ODMgMTUuNDMtMzEuNjUxIDYuODU4LTguNzA0IDE1LjU2Mi0xNS41NjIgMjYuMTEyLTIwLjU3MyAxMC41NS00Ljc0OCAyMy4yMTEtNy4xMjIgMzcuOTgxLTcuMTIxIDE3LjY3MiwwIDMyLjA0NiwxLjcxNCA0My4xMjQsNS4xNDMgMTEuMDc4LDMuNjkzIDE5LjY1LDcuMTIxIDI1LjcxNiwxMC4yODcgbCAxMy40NTItNDAuNzUxIGMgLTMuMTY1LTIuMTEgLTcuNTE3LTQuMjIgLTEzLjA1Ni02LjMzIC01LjI3NS0yLjExIC0xMS42MDYtNC4yMiAtMTguOTkxLTYuMzMgLTcuMzg1LTEuODQ2IC0xNS42OTQtMy4yOTcgLTI0LjkyNS00LjM1MiAtOS4yMzItMS4zMTkgLTE5LjEyMy0xLjk3OCAtMjkuNjczLTEuOTc4IiAgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwOyIgaG9yaXotYWR2LXg9IjI1NiIgLz4KPC9mb250PjwvZGVmcz48L3N2Zz4=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.ttf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAEAAAANAIAAAwBQRkZUTWhbFjwAAAgEAAAAHEdERUYANAAGAAAH5AAAACBPUy8yL7rcHwAAAVgAAABWY21hcOAW89QAAAHIAAABUmdhc3D//wADAAAH3AAAAAhnbHlmdedjngAAAywAAAH0aGVhZP08tCkAAADcAAAANmhoZWEEEP/mAAABFAAAACRobXR4BMEALgAAAbAAAAAYbG9jYQCOAUIAAAMcAAAAEG1heHAATQBYAAABOAAAACBuYW1lNjGUwgAABSAAAAJqcG9zdDWmfHEAAAeMAAAAUAABAAAAAQAA7pdETF8PPPUACwIAAAAAAM4OubYAAAAAzg65tgAA/+ACAAHgAAAACAACAAAAAAAAAAEAAAHg/+AALgIAAAD+AAIAAAEAAAAAAAAAAAAAAAAAAAAFAAEAAAAHAFUABAAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQMAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUGZFZABA4ADwAAHg/+AALgHgACCAAAABAAAAAAAAAgAAAAAAAAAAqgAAAAAAAAIAABcAFwAXAAAAAwAAAAMAAAAcAAEAAAAAAEwAAwABAAAAHAAEADAAAAAIAAgAAgAAAADgAvAA//8AAAAA4ADwAP//AAAgBBADAAEAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ASACAAPoAAQAA/+ACAAHgAAIAABEBIQIA/gAB4P4AAAAAAAQAF//3AekByQAPAB8AIAApAAATIgYdARQWOwEyNj0BNCYjBzMyFh0BFAYrASImPQE0NhcxFSMVIzUjNTOMMUREMegxREQx1MAnODgnwCc4OO9UM1TbAclEMegxREQx6DFEKjgnwCc4OCfAJzgwK+fnKwAABAAX//cB6QHJAA8AHwAgACUAABMiBh0BFBY7ATI2PQE0JiMHMzIWHQEUBisBIiY9ATQ2FzEzESMRjDFERDHoMUREMdTAJzg4J8AnODhuMjIByUQx6DFERDHoMUQqOCfAJzg4J8AnODD+7gESAAAAAAQAF//3AekByQAPAB8AIABUAAATIgYdARQWOwEyNj0BNCYjBzMyFh0BFAYrASImPQE0NhMxIiYnLgE0NzY3PgEzMhceAhcHJicmIyIHBgcOARUUFxYXFhcWMzI3NjcXBgcGBwYHBiOMMUREMegxREQx1MAnODgnwCc4OJ4fMREREgoLEhIxHBEODhQOAw8KERIUEhAPCwwMBQUKChAQFhsQEQkNBAkICwsODRAByUQx6DFERDHoMUQqOCfAJzg4J8AnOP64ExITNUQbGhMSEwMCBgcCKQYFBgYGDQwlGRUTEg0NCAcFBgQoAwQDAwMBAgAAAAAAAAwAlgABAAAAAAABABkANAABAAAAAAACAAsAZgABAAAAAAADADUA3gABAAAAAAAEABkBSAABAAAAAAAFAAsBegABAAAAAAAGABkBugADAAEECQABADIAAAADAAEECQACABYATgADAAEECQADAGoAcgADAAEECQAEADIBFAADAAEECQAFABYBYgADAAEECQAGADIBhgBwAGgAcABkAG8AYwB1AG0AZQBuAHQAbwByAC0AYwBsAGUAYQBuAC0AaQBjAG8AbgBzAABwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zAABjAGwAZQBhAG4ALQBpAGMAbwBuAHMAAGNsZWFuLWljb25zAABGAG8AbgB0AEYAbwByAGcAZQAgADIALgAwACAAOgAgAHAAaABwAGQAbwBjAHUAbQBlAG4AdABvAHIALQBjAGwAZQBhAG4ALQBpAGMAbwBuAHMAIAA6ACAAMQA5AC0ANwAtADIAMAAxADMAAEZvbnRGb3JnZSAyLjAgOiBwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zIDogMTktNy0yMDEzAABwAGgAcABkAG8AYwB1AG0AZQBuAHQAbwByAC0AYwBsAGUAYQBuAC0AaQBjAG8AbgBzAABwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zAABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABwAGgAcABkAG8AYwB1AG0AZQBuAHQAbwByAC0AYwBsAGUAYQBuAC0AaQBjAG8AbgBzAABwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAgECAQMBBAEFB3VuaUYwMDAHdW5pRTAwMAd1bmlFMDAxB3VuaUUwMDIAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQADAAYAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAM4OubYAAAAAzg65tg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/fonts/phpdocumentor-clean-icons.woff</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[d09GRk9UVE8AAAcoAAsAAAAAC4gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAABCAAAA+wAAAXZYDil1EZGVE0AAAT0AAAAGgAAABxoWxY8R0RFRgAABRAAAAAcAAAAIAAyAARPUy8yAAAFLAAAAEsAAABgL9zcQGNtYXAAAAV4AAAAPQAAAVLgFPLNaGVhZAAABbgAAAAuAAAANv08tCloaGVhAAAF6AAAAB4AAAAkBBD/5GhtdHgAAAYIAAAAEAAAABAEFwAubWF4cAAABhgAAAAGAAAABgAFUABuYW1lAAAGIAAAAPwAAAJqNjGUwnBvc3QAAAccAAAADAAAACAAAwAAeJx9VF1sFGUUvbPdn3F3dqmlW9vNdJc2VLC6SYGAiNrUxjahJAK20aQmLNhWJcC2sT8KxgeSaosD/qyrMZWYZo2kAR76sNjQkLYKCQryZ6hBGhtEWjH8SVvbETZ7Pd/MtPIC+/DNmXu/Oefec79vJbLbSZKkQNMbTfWNda3bGqItjW+G67Y2bIqGN9c1RptJspFEpXrIpi/I0HPtmpKhKfagm/Kqs1jT5oDi0rbocb3FodLxeSpRpkpnH1ZJUe1Xs8gpOGSaRzmUTytobWt0c2VJSQkeFXOPJeZj6X0ruX+JRFKH1Cntkj4gh1CykUKbKGF3+zS9xZ6K63GXj0lLnGPph37Vv8DNlN2fz/zLV23+ArzI1W3MZ95Z6Gf8BnKYi1Z0Mp+/VM5UU7GROXeil2lp6R2mP73rzBg9HhpwPoiUO5oK/idN53D6xs8TTEt+7WIpK+xjPv3o6w+sivvUg5zu25AyCFKMLtv9TO7dpzWmh67kItCTBHq6nklav1+gQiBfNvpZGwBqbmVyvfox0IVPLWRTi5mcNUcEWszkqHzNijl2payYvVa1YhnFpUZMZp7YXcW0eKjcwfzvrQCqGd7JPLMtBhSLMk9dx57UC1/MoliY+XZ3Odpe/STzzWpdw/uqy6KPQebJl34Eb2SA+Z/mZRAcfNdCDts5sK45jhJH9kFpYS1aST4l0CtAM2eY74zUCwtOmSKkFCpmMaQUnITcFhuTd/01GOTbeVLGI9Ps5jEENhK0Vr6IrQ2JOdQN1VMxUK5eKSz6CDJhTNi1r0ggn1Ddg3Iyx8WW7fBkKm1tNgg883XLNs9oG+S8fW6sSs80alkECz1fFgpjLor826LmJzCmvC7TLAxiB5DneRnVff35rMHpRVsxMu950dgxoD4chbvtuZZld9sDAg3BihpUYXt2Stiz16zCtEwMj2emdojBY0LTx0aBPisTaK+IxWH3t504PterMLCeJIZzo+Iy1putR4Xo98y3vkmA7MD796Lb350AReIsBvgbRCe7ujHqydHl1vt05BnsycPl0X93GkM3yzGRcSSu9Y5D5S/vJ8YK1zPkQyI6JhweM3feg+TkKua/Z9bAvJf3CMGIQB8KvUlYfWHY6iizdoMo8T2BIhbKausQrRzFlYr1arJPj2drfk1x4w9pPtkkafslpqv9ESdT2Vu4d8vGcDh/CgRxPjunQ+Kq4fA+UnHFIQJJpPIuirxq5INGyjmbCuTj+/EiweQJCVbVxcZvlvoPk1/kNdnDfIIxx+GqIWvBa4i57PCIy0xR8aEyM0XL6bkg02BlkVPgcjNlLkiFjJTLTJkfGJ+CJOj5D3US/u54nGNgYGBkAIIztovOg+hzfDu3wWgASzsHEgAAeJxjYGRgYOADYgkGEGBiYARCFjAG8RgABHYAN3icY2BmYmCcwMDKwMHow5jGwMDgDqW/MkgytDAwMDGwMjPAgQCCyRCQ5prC4PCA4QMD44P/Dxj0GB8wKDQwMDDCFSgAISMAEEIMHwB4nGNgYGBmgGAZBkYGEPAB8hjBfBYGAyDNAYRMIIkHTB8Y/v8HsxggLAUmAUaoLjBgZGNA5o5IAADLqAiwAAAAeJxjYGRgYABig0Vn7sfz23xl4GZiAIFzfDu3Iej/D5gYGB8AuRwMYGkAR+sLjgAAeJxjYGRgYHzw/wGDHhMDA8M/BiAJFEEBzABt5wP2AAACAAAAAAAAAAIAABcAFwAXAABQAAAFAAB4nK2QMW4CMRBFv2FBikiJkOh8Aa/WThCCA6BUKenJ4sBGYK/M0nAAjpDD5DA5S/5upklBEQlLI7/5/uMZG8AjPqHQLoUpnoV7GOFduI8ZvoUzTNWL8AAjdREeUv+iU2UPVFxX1XIPE7wK9/GBJJzBqbHwABP1JjykfkWNPWOLiBJnHOER0DBLMFQOzDdUDCpmkXQC6n29jeX56EMTkykPfhNMVcbAoxsVfzyrTm26PWFHv+YrchTcl4z/T/RbZ7GgOmc43mXxxFYxNKuYdl67vNBLfXNyntmFmRtXWJbd90/W9Cd6qs7bztm+FWufTlUM2ubFnTv+AHexdVl4nGNgZsALAAB9AAQ=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/lte-ie7.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogTG9hZCB0aGlzIHNjcmlwdCB1c2luZyBjb25kaXRpb25hbCBJRSBjb21tZW50cyBpZiB5b3UgbmVlZCB0byBzdXBwb3J0IElFIDcgYW5kIElFIDYuICovCgp3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CglmdW5jdGlvbiBhZGRJY29uKGVsLCBlbnRpdHkpIHsKCQl2YXIgaHRtbCA9IGVsLmlubmVySFRNTDsKCQllbC5pbm5lckhUTUwgPSAnPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBcJ3BocGRvY3VtZW50b3ItY2xlYW4taWNvbnNcJyI+JyArIGVudGl0eSArICc8L3NwYW4+JyArIGh0bWw7Cgl9Cgl2YXIgaWNvbnMgPSB7CgkJCSdpY29uLXRyYWl0JyA6ICcmI3hlMDAwOycsCgkJCSdpY29uLWludGVyZmFjZScgOiAnJiN4ZTAwMTsnLAoJCQknaWNvbi1jbGFzcycgOiAnJiN4ZTAwMjsnCgkJfSwKCQllbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpLAoJCWksIGF0dHIsIGh0bWwsIGMsIGVsOwoJZm9yIChpID0gMDsgOyBpICs9IDEpIHsKCQllbCA9IGVsc1tpXTsKCQlpZighZWwpIHsKCQkJYnJlYWs7CgkJfQoJCWF0dHIgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWNvbicpOwoJCWlmIChhdHRyKSB7CgkJCWFkZEljb24oZWwsIGF0dHIpOwoJCX0KCQljID0gZWwuY2xhc3NOYW1lOwoJCWMgPSBjLm1hdGNoKC9pY29uLVteXHMnIl0rLyk7CgkJaWYgKGMgJiYgaWNvbnNbY1swXV0pIHsKCQkJYWRkSWNvbihlbCwgaWNvbnNbY1swXV0pOwoJCX0KCX0KfTs=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/Read Me.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VG8gbW9kaWZ5IHlvdXIgZ2VuZXJhdGVkIGZvbnQsIHVzZSB0aGUgKmRldi5zdmcqIGZpbGUsIGxvY2F0ZWQgaW4gdGhlICpmb250cyogZm9sZGVyIGluIHRoaXMgcGFja2FnZS4gWW91IGNhbiBpbXBvcnQgdGhpcyBkZXYuc3ZnIGZpbGUgdG8gdGhlIEljb01vb24gYXBwLiBBbGwgdGhlIHRhZ3MgKGNsYXNzIG5hbWVzKSBhbmQgdGhlIFVuaWNvZGUgcG9pbnRzIG9mIHlvdXIgZ2x5cGhzIGFyZSBzYXZlZCBpbiB0aGlzIGZpbGUuCgpTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mbyBvbiBob3cgdG8gdXNlIHRoaXMgcGFja2FnZTogaHR0cDovL2ljb21vb24uaW8vI2RvY3MvZm9udC1mYWNl]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/phpdocumentor-clean-icons/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7Cglmb250LWZhbWlseTogJ3BocGRvY3VtZW50b3ItY2xlYW4taWNvbnMnOwoJc3JjOnVybCgnZm9udHMvcGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucy5lb3QnKTsKCXNyYzp1cmwoJ2ZvbnRzL3BocGRvY3VtZW50b3ItY2xlYW4taWNvbnMuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwKCQl1cmwoJ2ZvbnRzL3BocGRvY3VtZW50b3ItY2xlYW4taWNvbnMud29mZicpIGZvcm1hdCgnd29mZicpLAoJCXVybCgnZm9udHMvcGhwZG9jdW1lbnRvci1jbGVhbi1pY29ucy50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksCgkJdXJsKCdmb250cy9waHBkb2N1bWVudG9yLWNsZWFuLWljb25zLnN2ZyNwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zJykgZm9ybWF0KCdzdmcnKTsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cglmb250LXN0eWxlOiBub3JtYWw7Cn0KCi8qIFVzZSB0aGUgZm9sbG93aW5nIENTUyBjb2RlIGlmIHlvdSB3YW50IHRvIHVzZSBkYXRhIGF0dHJpYnV0ZXMgZm9yIGluc2VydGluZyB5b3VyIGljb25zICovCltkYXRhLWljb25dOmJlZm9yZSB7Cglmb250LWZhbWlseTogJ3BocGRvY3VtZW50b3ItY2xlYW4taWNvbnMnOwoJY29udGVudDogYXR0cihkYXRhLWljb24pOwoJc3BlYWs6IG5vbmU7Cglmb250LXdlaWdodDogbm9ybWFsOwoJZm9udC12YXJpYW50OiBub3JtYWw7Cgl0ZXh0LXRyYW5zZm9ybTogbm9uZTsKCWxpbmUtaGVpZ2h0OiAxOwoJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Cn0KCi8qIFVzZSB0aGUgZm9sbG93aW5nIENTUyBjb2RlIGlmIHlvdSB3YW50IHRvIGhhdmUgYSBjbGFzcyBwZXIgaWNvbiAqLwovKgpJbnN0ZWFkIG9mIGEgbGlzdCBvZiBhbGwgY2xhc3Mgc2VsZWN0b3JzLAp5b3UgY2FuIHVzZSB0aGUgZ2VuZXJpYyBzZWxlY3RvciBiZWxvdywgYnV0IGl0J3Mgc2xvd2VyOgpbY2xhc3MqPSJpY29uLSJdIHsKKi8KLmljb24tdHJhaXQsIC5pY29uLWludGVyZmFjZSwgLmljb24tY2xhc3MgewoJZm9udC1mYW1pbHk6ICdwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zJzsKCXNwZWFrOiBub25lOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCWZvbnQtdmFyaWFudDogbm9ybWFsOwoJdGV4dC10cmFuc2Zvcm06IG5vbmU7CglsaW5lLWhlaWdodDogMTsKCS13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwp9Ci5pY29uLXRyYWl0OmJlZm9yZSB7Cgljb250ZW50OiAiXGUwMDAiOwp9Ci5pY29uLWludGVyZmFjZTpiZWZvcmUgewoJY29udGVudDogIlxlMDAxIjsKfQouaWNvbi1jbGFzczpiZWZvcmUgewoJY29udGVudDogIlxlMDAyIjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/prism.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIHByaXNtLmpzIGRlZmF1bHQgdGhlbWUgZm9yIEphdmFTY3JpcHQsIENTUyBhbmQgSFRNTAogKiBCYXNlZCBvbiBkYWJibGV0IChodHRwOi8vZGFiYmxldC5jb20pCiAqIEBhdXRob3IgTGVhIFZlcm91CiAqLwoKY29kZVtjbGFzcyo9Imxhbmd1YWdlLSJdLApwcmVbY2xhc3MqPSJsYW5ndWFnZS0iXSB7Cgljb2xvcjogYmxhY2s7Cgl0ZXh0LXNoYWRvdzogMCAxcHggd2hpdGU7Cglmb250LWZhbWlseTogQ29uc29sYXMsIE1vbmFjbywgJ0FuZGFsZSBNb25vJywgbW9ub3NwYWNlOwoJZGlyZWN0aW9uOiBsdHI7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJd2hpdGUtc3BhY2U6IHByZTsKCXdvcmQtc3BhY2luZzogbm9ybWFsOwoKCS1tb3otdGFiLXNpemU6IDQ7Cgktby10YWItc2l6ZTogNDsKCXRhYi1zaXplOiA0OwoKCS13ZWJraXQtaHlwaGVuczogbm9uZTsKCS1tb3otaHlwaGVuczogbm9uZTsKCS1tcy1oeXBoZW5zOiBub25lOwoJaHlwaGVuczogbm9uZTsKfQoKOjotbW96LXNlbGVjdGlvbiB7Cgl0ZXh0LXNoYWRvdzogbm9uZTsKCWJhY2tncm91bmQ6ICNiM2Q0ZmM7Cn0KCjo6c2VsZWN0aW9uIHsKCXRleHQtc2hhZG93OiBub25lOwoJYmFja2dyb3VuZDogI2IzZDRmYzsKfQoKQG1lZGlhIHByaW50IHsKCWNvZGVbY2xhc3MqPSJsYW5ndWFnZS0iXSwKCXByZVtjbGFzcyo9Imxhbmd1YWdlLSJdIHsKCQl0ZXh0LXNoYWRvdzogbm9uZTsKCX0KfQoKLyogQ29kZSBibG9ja3MgKi8KcHJlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0gewoJcGFkZGluZzogMWVtOwoJbWFyZ2luOiAuNWVtIDA7CglvdmVyZmxvdzogYXV0bzsKfQoKOm5vdChwcmUpID4gY29kZVtjbGFzcyo9Imxhbmd1YWdlLSJdLApwcmVbY2xhc3MqPSJsYW5ndWFnZS0iXSB7CgliYWNrZ3JvdW5kOiAjZjVmMmYwOwp9CgovKiBJbmxpbmUgY29kZSAqLwo6bm90KHByZSkgPiBjb2RlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0gewoJcGFkZGluZzogLjFlbTsKCWJvcmRlci1yYWRpdXM6IC4zZW07Cn0KCi50b2tlbi5jb21tZW50LAoudG9rZW4ucHJvbG9nLAoudG9rZW4uZG9jdHlwZSwKLnRva2VuLmNkYXRhIHsKCWNvbG9yOiBzbGF0ZWdyYXk7Cn0KCi50b2tlbi5wdW5jdHVhdGlvbiB7Cgljb2xvcjogIzk5OTsKfQoKLm5hbWVzcGFjZSB7CglvcGFjaXR5OiAuNzsKfQoKLnRva2VuLnByb3BlcnR5LAoudG9rZW4udGFnLAoudG9rZW4uYm9vbGVhbiwKLnRva2VuLm51bWJlciB7Cgljb2xvcjogIzkwNTsKfQoKLnRva2VuLnNlbGVjdG9yLAoudG9rZW4uYXR0ci1uYW1lLAoudG9rZW4uc3RyaW5nIHsKCWNvbG9yOiAjNjkwOwp9CgoudG9rZW4ub3BlcmF0b3IsCi50b2tlbi5lbnRpdHksCi50b2tlbi51cmwsCi5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZywKLnN0eWxlIC50b2tlbi5zdHJpbmcgewoJY29sb3I6ICNhNjdmNTk7CgliYWNrZ3JvdW5kOiBoc2xhKDAsMCUsMTAwJSwuNSk7Cn0KCi50b2tlbi5hdHJ1bGUsCi50b2tlbi5hdHRyLXZhbHVlLAoudG9rZW4ua2V5d29yZCB7Cgljb2xvcjogIzA3YTsKfQoKCi50b2tlbi5yZWdleCwKLnRva2VuLmltcG9ydGFudCB7Cgljb2xvcjogI2U5MDsKfQoKLnRva2VuLmltcG9ydGFudCB7Cglmb250LXdlaWdodDogYm9sZDsKfQoKLnRva2VuLmVudGl0eSB7CgljdXJzb3I6IGhlbHA7Cn0KcHJlW2RhdGEtbGluZV0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJcGFkZGluZzogMWVtIDAgMWVtIDNlbTsKfQoKLmxpbmUtaGlnaGxpZ2h0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWxlZnQ6IDA7CglyaWdodDogMDsKCXBhZGRpbmc6IGluaGVyaXQgMDsKCW1hcmdpbi10b3A6IDFlbTsgLyogU2FtZSBhcyAucHJpc23igJlzIHBhZGRpbmctdG9wICovCgoJYmFja2dyb3VuZDogaHNsYSgyNCwgMjAlLCA1MCUsLjA4KTsKCWJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KGxlZnQsIGhzbGEoMjQsIDIwJSwgNTAlLC4xKSA3MCUsIGhzbGEoMjQsIDIwJSwgNTAlLDApKTsKCWJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsIGhzbGEoMjQsIDIwJSwgNTAlLC4xKSA3MCUsIGhzbGEoMjQsIDIwJSwgNTAlLDApKTsKCWJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCBoc2xhKDI0LCAyMCUsIDUwJSwuMSkgNzAlLCBoc2xhKDI0LCAyMCUsIDUwJSwwKSk7CgliYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQobGVmdCwgaHNsYSgyNCwgMjAlLCA1MCUsLjEpIDcwJSwgaHNsYSgyNCwgMjAlLCA1MCUsMCkpOwoJCglwb2ludGVyLWV2ZW50czogbm9uZTsKCQoJbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cgl3aGl0ZS1zcGFjZTogcHJlOwp9CgoJLmxpbmUtaGlnaGxpZ2h0OmJlZm9yZSwKCS5saW5lLWhpZ2hsaWdodFtkYXRhLWVuZF06YWZ0ZXIgewoJCWNvbnRlbnQ6IGF0dHIoZGF0YS1zdGFydCk7CgkJcG9zaXRpb246IGFic29sdXRlOwoJCXRvcDogLjRlbTsKCQlsZWZ0OiAuNmVtOwoJCW1pbi13aWR0aDogMWVtOwoJCXBhZGRpbmc6IDAgLjVlbTsKCQliYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDI0LCAyMCUsIDUwJSwuNCk7CgkJY29sb3I6IGhzbCgyNCwgMjAlLCA5NSUpOwoJCWZvbnQ6IGJvbGQgNjUlLzEuNSBzYW5zLXNlcmlmOwoJCXRleHQtYWxpZ246IGNlbnRlcjsKCQl2ZXJ0aWNhbC1hbGlnbjogLjNlbTsKCQlib3JkZXItcmFkaXVzOiA5OTlweDsKCQl0ZXh0LXNoYWRvdzogbm9uZTsKCQlib3gtc2hhZG93OiAwIDFweCB3aGl0ZTsKCX0KCQoJLmxpbmUtaGlnaGxpZ2h0W2RhdGEtZW5kXTphZnRlciB7CgkJY29udGVudDogYXR0cihkYXRhLWVuZCk7CgkJdG9wOiBhdXRvOwoJCWJvdHRvbTogLjRlbTsKCX0KcHJlLmxpbmUtbnVtYmVycyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglwYWRkaW5nLWxlZnQ6IDMuOGVtOwoJY291bnRlci1yZXNldDogbGluZW51bWJlcjsKfQoKcHJlLmxpbmUtbnVtYmVycyA+IGNvZGUgewoJcG9zaXRpb246IHJlbGF0aXZlOwp9CgoubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93cyB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKCXRvcDogMDsKCWZvbnQtc2l6ZTogMTAwJTsKCWxlZnQ6IC0zLjhlbTsKCXdpZHRoOiAzZW07IC8qIHdvcmtzIGZvciBsaW5lLW51bWJlcnMgYmVsb3cgMTAwMCBsaW5lcyAqLwoJbGV0dGVyLXNwYWNpbmc6IC0xcHg7Cglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjOTk5OwoKCS13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLW1zLXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7Cgp9CgoJLmxpbmUtbnVtYmVycy1yb3dzID4gc3BhbiB7CgkJcG9pbnRlci1ldmVudHM6IG5vbmU7CgkJZGlzcGxheTogYmxvY2s7CgkJY291bnRlci1pbmNyZW1lbnQ6IGxpbmVudW1iZXI7Cgl9CgoJCS5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlIHsKCQkJY29udGVudDogY291bnRlcihsaW5lbnVtYmVyKTsKCQkJY29sb3I6ICM5OTk7CgkJCWRpc3BsYXk6IGJsb2NrOwoJCQlwYWRkaW5nLXJpZ2h0OiAwLjhlbTsKCQkJdGV4dC1hbGlnbjogcmlnaHQ7CgkJfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/css/template.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVNvdXJjZStTYW5zK1Bybyk7CkBpbXBvcnQgdXJsKCdwaHBkb2N1bWVudG9yLWNsZWFuLWljb25zL3N0eWxlLmNzcycpOwoKYm9keSB7CiAgICBwYWRkaW5nLXRvcDogICAgICA0MHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMzsKfQoKYSB7CiAgICBjb2xvcjogIzY0OTVlZDsKfQphLmFuY2hvciB7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tdG9wOiAtNDBweDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuYnJhbmQgewogICAgZm9udC1mYW1pbHk6ICAgICdTb3VyY2UgU2FucyBQcm8nLCBzYW5zLXNlcmlmOwogICAgZm9udC13ZWlnaHQ6ICAgIG5vcm1hbDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07Cn0KCmgyLCBoMywgLmRldGFpbHNiYXIgaDEgewogICAgb3ZlcmZsb3c6ICAgIGhpZGRlbjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBtYXJnaW46ICAgICAgMzBweCAwIDIwcHggMDsKfQoKaDI6YWZ0ZXIsIGgzOmFmdGVyLCAuZGV0YWlsc2JhciBoMTphZnRlciB7CiAgICBjb250ZW50OiAgICAgICAgJyc7CiAgICBkaXNwbGF5OiAgICAgICAgaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHdpZHRoOiAgICAgICAgICAxMDAlOwogICAgaGVpZ2h0OiAgICAgICAgIDJweDsKICAgIG1hcmdpbi1sZWZ0OiAgICAxZW07CiAgICBiYWNrZ3JvdW5kOiAgICAgc2lsdmVyOwp9CgpoMyB7CiAgICBtYXJnaW46IDEwcHggMCAyMHB4IDA7Cn0KCmg0IHsKICAgIG1hcmdpbjogICAgMjBweCAwIDEwcHggMDsKICAgIGNvbG9yOiAgICAgZ3JheTsKICAgIGZvbnQtc2l6ZTogMTguNXB4Owp9CgpoMy5wdWJsaWMsIGgzLnByb3RlY3RlZCwgaDMucHJpdmF0ZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoKLnRhYmxlIHRyOmZpcnN0LW9mLXR5cGUgdGgsIC50YWJsZSB0cjpmaXJzdC1vZi10eXBlIHRkIHsKICAgIGJvcmRlci10b3A6IG5vbmU7Cn0KLmRldGFpbHNiYXIgewogICAgY29sb3I6ICAgICAgICAgICAgI2VlZWVlZTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzMzMzM7CiAgICBmb250LXNpemU6ICAgICAgICAwLjllbTsKICAgIG92ZXJmbG93OiAgICAgICAgIGhpZGRlbjsKICAgIGJvcmRlci1sZWZ0OiAgICAgIDJweCBzb2xpZCBncmF5Owp9CgouZGV0YWlsc2JhciBoMSB7CiAgICBmb250LXNpemU6ICAgICAxLjVlbTsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICBtYXJnaW4tdG9wOiAgICAwOwp9CgouZGV0YWlsc2JhciBoMiB7CiAgICBmb250LXNpemU6IDEuMmVtOwogICAgbWFyZ2luOiAgICAwOwogICAgcGFkZGluZzogICAwOwp9CgouZGV0YWlsc2JhciBoMTphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiBncmF5Owp9Ci5kZXRhaWxzYmFyIGgyOmFmdGVyLCAuZGV0YWlsc2JhciBoMzphZnRlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKfQoKLmRldGFpbHNiYXIgZHQgewogICAgZm9udC12YXJpYW50OiAgIHNtYWxsLWNhcHM7CiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOwogICAgZm9udC1zaXplOiAgICAgIDEuMWVtOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtOwogICAgY29sb3I6ICAgICAgICAgIHNpbHZlcjsKfQoKLmhpZXJhcmNoeSBkaXY6bnRoLW9mLXR5cGUoMikgeyBtYXJnaW4tbGVmdDogMTFweDsgfQouaGllcmFyY2h5IGRpdjpudGgtb2YtdHlwZSgzKSB7IG1hcmdpbi1sZWZ0OiAyMnB4OyB9Ci5oaWVyYXJjaHkgZGl2Om50aC1vZi10eXBlKDQpIHsgbWFyZ2luLWxlZnQ6IDMzcHg7IH0KLmhpZXJhcmNoeSBkaXY6bnRoLW9mLXR5cGUoNSkgeyBtYXJnaW4tbGVmdDogNDRweDsgfQouaGllcmFyY2h5IGRpdjpudGgtb2YtdHlwZSg2KSB7IG1hcmdpbi1sZWZ0OiA1NXB4OyB9Ci5oaWVyYXJjaHkgZGl2Om50aC1vZi10eXBlKDcpIHsgbWFyZ2luLWxlZnQ6IDY2cHg7IH0KLmhpZXJhcmNoeSBkaXY6bnRoLW9mLXR5cGUoOCkgeyBtYXJnaW4tbGVmdDogNzdweDsgfQouaGllcmFyY2h5IGRpdjpudGgtb2YtdHlwZSg5KSB7IG1hcmdpbi1sZWZ0OiA4OHB4OyB9Ci5oaWVyYXJjaHkgZGl2OmJlZm9yZSB7CiAgICBjb250ZW50OiAiXGYwZGEiOwogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgbWFyZ2luLXJpZ2h0OiA1cHg7Cn0KCi5yb3ctZmx1aWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICBvdmVyZmxvdzogICAgICAgICBoaWRkZW47Cn0KCmZvb3Rlci5yb3ctZmx1aWQsIGZvb3Rlci5yb3ctZmx1aWQgKiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzMzMzOwogICAgY29sb3I6ICAgICAgICAgICAgd2hpdGU7Cn0KCmZvb3Rlci5yb3ctZmx1aWQgewogICAgYm9yZGVyLXRvcDogMnB4IGRhc2hlZCAjNTU1OwogICAgbWFyZ2luLXRvcDogMnB4Owp9CgouZm9vdGVyLXNlY3Rpb25zIC5zcGFuNCB7CiAgICBib3JkZXI6ICAgICAgICAycHggc29saWQgIzU1NTsKICAgIHRleHQtYWxpZ246ICAgIGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBtYXJnaW4tdG9wOiAgICA3MHB4OwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgIGJhY2tncm91bmQ6ICAgICMzNzM3Mzc7Cn0KCi5mb290ZXItc2VjdGlvbnMgLnNwYW40IGgxIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgbWFyZ2luLXRvcDogLTMwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgZm9udC1zaXplOiAgNWVtOwp9CgouZm9vdGVyLXNlY3Rpb25zIC5zcGFuNCBoMSAqIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Owp9CgouZm9vdGVyLXNlY3Rpb25zIC5zcGFuNCBkaXYgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDZweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDZweDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBtaW4taGVpZ2h0OiA0MHB4Owp9Ci5mb290ZXItc2VjdGlvbnMgLnNwYW40IGRpdiwgLmZvb3Rlci1zZWN0aW9ucyAuc3BhbjQgZGl2ICogewogICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTsKfQouZm9vdGVyLXNlY3Rpb25zIC5zcGFuNCB1bCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5jb250ZW50IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgcGFkZGluZy1yaWdodDogICAgMjBweDsKfQoKLmNvbnRlbnQgbmF2IHsKICAgIHRleHQtYWxpZ246ICAgICBjZW50ZXI7CiAgICBib3JkZXItYm90dG9tOiAgMXB4IHNvbGlkIHNpbHZlcjsKICAgIG1hcmdpbjogICAgICAgICA1cHggMCAyMHB4IDA7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4Owp9CgouY29udGVudCA+IGgxIHsKICAgIHBhZGRpbmctYm90dG9tOiAxNXB4Owp9CgouY29udGVudCA+IGgxIHNtYWxsIHsKICAgIGRpc3BsYXk6ICAgICAgICBibG9jazsKICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICBmb250LXNpemU6ICAgICAgMC42ZW07Cn0KCi5kZXByZWNhdGVkIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOwp9CgoubWV0aG9kIHsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5tZXRob2QgLnNpZ25hdHVyZSAuYXJndW1lbnQgewogICAgY29sb3I6ICAgICAgIG1hcm9vbjsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouY2xhc3MgI3N1bW1hcnkgc2VjdGlvbi5yb3ctZmx1aWQgewogICAgb3ZlcmZsb3c6IGhpZGRlbgp9CgouY2xhc3MgI3N1bW1hcnkgLmhlYWRpbmcgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB0ZXh0LWFsaWduOiAgY2VudGVyOwp9CgouY2xhc3MgI3N1bW1hcnkgc2VjdGlvbiAuc3BhbjQgewogICAgcGFkZGluZzogICAgICAgIDNweDsKICAgIG92ZXJmbG93OiAgICAgICBoaWRkZW47CiAgICBtYXJnaW4tYm90dG9tOiAgLTk5OTlweDsKICAgIHBhZGRpbmctYm90dG9tOiA5OTk5cHg7CiAgICB3aGl0ZS1zcGFjZTogICAgbm93cmFwOwogICAgdGV4dC1vdmVyZmxvdzogIGVsbGlwc2lzOwogICAgYm9yZGVyLWxlZnQ6ICAgIDVweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmNsYXNzICNzdW1tYXJ5IHNlY3Rpb24ucHVibGljIC5zcGFuNDpmaXJzdC1vZi10eXBlOmJlZm9yZSwKLmNsYXNzICNzdW1tYXJ5IHNlY3Rpb24ucHVibGljIC5zcGFuNjpmaXJzdC1vZi10eXBlOmJlZm9yZSwKaDMucHVibGljOmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgICBjb250ZW50OiAgICAgIlxmMDQ2IjsKICAgIGNvbG9yOiAgICAgICBncmVlbjsKICAgIGRpc3BsYXk6ICAgICBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogICAgICAgMS4yZW07Cn0KCi5jbGFzcyAjc3VtbWFyeSBzZWN0aW9uIC5zcGFuNDpmaXJzdC1vZi10eXBlLAouY2xhc3MgI3N1bW1hcnkgc2VjdGlvbiAuc3BhbjY6Zmlyc3Qtb2YtdHlwZSB7CiAgICBwYWRkaW5nLWxlZnQ6IDIxcHg7Cn0KLmNsYXNzICNzdW1tYXJ5IHNlY3Rpb24gLnNwYW40OmZpcnN0LW9mLXR5cGU6YmVmb3JlLAouY2xhc3MgI3N1bW1hcnkgc2VjdGlvbiAuc3BhbjY6Zmlyc3Qtb2YtdHlwZTpiZWZvcmUgewogICAgbWFyZ2luLWxlZnQ6IC0yMXB4Owp9Ci5jbGFzcyAjc3VtbWFyeSBzZWN0aW9uLnByb3RlY3RlZCAuc3BhbjQ6Zmlyc3Qtb2YtdHlwZTpiZWZvcmUsCi5jbGFzcyAjc3VtbWFyeSBzZWN0aW9uLnByb3RlY3RlZCAuc3BhbjY6Zmlyc3Qtb2YtdHlwZTpiZWZvcmUsCmgzLnByb3RlY3RlZDpiZWZvcmUgewogICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lOwogICAgY29udGVudDogICAgICJcZjEzMiI7CiAgICBjb2xvcjogICAgICAgb3JhbmdlOwogICAgZGlzcGxheTogICAgIGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAgICAgICAxLjJlbTsKfQoKLmNsYXNzICNzdW1tYXJ5IHNlY3Rpb24ucHJpdmF0ZSAuc3BhbjQ6Zmlyc3Qtb2YtdHlwZTpiZWZvcmUsCi5jbGFzcyAjc3VtbWFyeSBzZWN0aW9uLnByaXZhdGUgLnNwYW42OmZpcnN0LW9mLXR5cGU6YmVmb3JlLApoMy5wcml2YXRlOmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgICBjb250ZW50OiAgICAgIlxmMDIzIjsKICAgIGNvbG9yOiAgICAgICByZWQ7CiAgICBkaXNwbGF5OiAgICAgaW5saW5lLWJsb2NrOwogICAgd2lkdGg6ICAgICAgIDEuMmVtOwp9CgouY2xhc3MgI3N1bW1hcnkgc2VjdGlvbiBlbSB7CiAgICBmb250LXNpemU6IDAuOWVtOwogICAgY29sb3I6IHNpbHZlcjsKfQouY2xhc3MgI3N1bW1hcnkgLmluaGVyaXRlZCB7CiAgICBjb2xvcjogICAgICBncmF5OwogICAgZm9udC1zdHlsZTogaXRhbGljOwp9CgouYWNjb3JkaW9uLWdyb3VwIHsKICAgIGJvcmRlcjogbm9uZTsKfQoKLmFjY29yZGlvbiB7CiAgICBtYXJnaW4tYm90dG9tOiAwOwp9CgouYWNjb3JkaW9uIGE6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgYmFja2dyb3VuZDogICAgICAjMzMzMzMzOwogICAgY29sb3I6ICAgICAgICAgICAjZWVlZWVlOwp9CgouYWNjb3JkaW9uLWhlYWRpbmcgLmFjY29yZGlvbi10b2dnbGU6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICAgICAgIlxmMDc4IjsKICAgIGZvbnQtZmFtaWx5OiAgRm9udEF3ZXNvbWU7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKfQoKLmFjY29yZGlvbi1oZWFkaW5nIC5hY2NvcmRpb24tdG9nZ2xlLmNvbGxhcHNlZDpiZWZvcmUgewogICAgY29udGVudDogIlxmMDU0IjsKfQouYWNjb3JkaW9uLWhlYWRpbmcgLmFjY29yZGlvbi10b2dnbGUgewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIHBhZGRpbmc6IDRweCAycHggNHB4IDEycHg7Cn0KLmFjY29yZGlvbi1oZWFkaW5nIGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwYWRkaW5nOiA0cHggMTJweDsKfQoKLmFjY29yZGlvbi1pbm5lciBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcGFkZGluZzogNHB4IDEycHg7Cn0KCi5hY2NvcmRpb24taW5uZXIgPiB1bCBhOmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogJ3BocGRvY3VtZW50b3ItY2xlYW4taWNvbnMnOwogICAgY29udGVudDogICAgICAiXGUwMDEiOwogICAgbWFyZ2luLXJpZ2h0OiA1cHg7Cn0KCi5hY2NvcmRpb24taW5uZXIgbGkuY2xhc3MgYTpiZWZvcmUgewogICAgY29udGVudDogICAgICAiXGUwMDIiOwp9CgouYWNjb3JkaW9uLWlubmVyIGxpLmludGVyZmFjZSBhOmJlZm9yZSB7CiAgICBjb250ZW50OiAgICAgICJcZTAwMSI7Cn0KCi5hY2NvcmRpb24taW5uZXIgbGkudHJhaXQgYTpiZWZvcmUgewogICAgY29udGVudDogICAgICAiXGUwMDAiOwp9CgouYWNjb3JkaW9uLWlubmVyIHsKICAgIHBhZGRpbmc6IDRweCAwIDRweCAxMnB4Owp9Ci5hY2NvcmRpb24taW5uZXIgdWwgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBhZGRpbmc6ICAgIDA7CiAgICBtYXJnaW46ICAgICAwOwp9Cgoucm93LWZsdWlkIC5zcGFuMiB7CiAgICB3aWR0aDogMTYuNSU7Cn0KCmJvZHkgLm1vZGFsIHsKICAgIHdpZHRoOiA5MCU7IC8qIGRlc2lyZWQgcmVsYXRpdmUgd2lkdGggKi8KICAgIGxlZnQ6IDUlOyAvKiAoMTAwJS13aWR0aCkvMiAqLwogICAgLyogcGxhY2UgY2VudGVyICovCiAgICBtYXJnaW4tbGVmdDphdXRvOwogICAgbWFyZ2luLXJpZ2h0OmF1dG87Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjdweCkgewogICAgLnNpZGViYXIgewogICAgICAgIHBvc2l0aW9uOiAgICAgICAgIGZpeGVkOwogICAgICAgIHRvcDogICAgICAgICAgICAgIDQwcHg7CiAgICAgICAgYm90dG9tOiAgICAgICAgICAgMDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzOwogICAgICAgIGxlZnQ6ICAgICAgICAgICAgIDA7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAgICAgMXB4IHNvbGlkICNlOWU5ZTk7CiAgICAgICAgb3ZlcmZsb3cteTogICAgICAgc2Nyb2xsOwogICAgICAgIG92ZXJmbG93LXg6ICAgICAgIGhpZGRlbjsKICAgICAgICBwYWRkaW5nLXRvcDogICAgICAxMHB4OwogICAgfQoKICAgIC5zaWRlYmFyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICB9CgogICAgLnNpZGViYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICBiYWNrZ3JvdW5kOiAgICAgICNjY2NjY2M7CiAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgICAgICBib3JkZXI6ICAgICAgICAgIDNweCBzb2xpZCAjZjNmM2YzOwogICAgICAgIGJvcmRlci1yYWRpdXM6ICAgNXB4OwogICAgfQoKICAgIC5zaWRlYmFyOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLnNpZGViYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjNmM2YzOwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTc5cHgpIHsKICAgIGJvZHkgewogICAgICAgIHBhZGRpbmctdG9wOiAwOwogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgIC5jbGFzcyAjc3VtbWFyeSAuaGVhZGluZyB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAuZGV0YWlsc2JhciBoMSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICBib2R5IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIH0KCiAgICBmb290ZXIucm93LWZsdWlkLCBmb290ZXIucm93LWZsdWlkICogewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgfQoKICAgIC5mb290ZXItc2VjdGlvbnMgaDEgewogICAgICAgIGNvbG9yOiAjY2NjY2Q5OwogICAgfQoKICAgIC5kZXRhaWxzYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICBjb2xvcjogIzMzMzsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjdweCkgewogICAgLmRldGFpbHNiYXIgewogICAgICAgIG1pbi1oZWlnaHQ6ICAgICAxMDAlOwogICAgICAgIG1hcmdpbi1ib3R0b206ICAtOTk5OTlweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogOTk5OTlweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6ICAgMjBweDsKICAgICAgICBwYWRkaW5nLXRvcDogICAgMTBweDsKICAgIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogICAgLnJvdy1mbHVpZCAuc3BhbjIgewogICAgICAgIHdpZHRoOiAxNi41JTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.category.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0zNzY3MjkxNzUiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMzc2NzI5MTc1IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS01OTg1NzExNTEiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtNTk4NTcxMTUxIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgZmlsZSI+CiAgICAgICAgICAgICAgICAgICAgPG5hdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+PC9zbWFsbD5jbGFzcy5jYXRlZ29yeS5waHA8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3QgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBjbGFzcyB0byByZXByZXNlbnQgYSBjYXRlZ29yeSB3aXRoaW4gdGhlIENHQ29udGFjdHMgbW9kdWxlLjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlByb2R1Y3Rpdml0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jYXRlZ29yeS5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.category.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3QgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY2xhc3MgdG8gcmVwcmVzZW50IGEgY2F0ZWdvcnkgd2l0aGluIHRoZSBDR0NvbnRhY3RzIG1vZHVsZS4KICoKICogQHByb3BlcnR5IGludCAkaWQgVGhlIGNhdGVnb3J5IGlkLgogKiBAcHJvcGVydHkgc3RyaW5nICRuYW1lIFRoZSBjYXRlZ29yeSBuYW1lLgogKiBAcHJvcGVydHkgc3RyaW5nICRkZXNjcmlwdGlvbiBUaGUgY2F0ZWdvcnkgZGVzY3JpcHRpb24KICogQHByb3BlcnR5IGludCAkcGFyZW50X2lkIFRoZSBpZCBvZiB0aGlzIG9iamVjdHMnIHBhcmVudC4gIG9yIC0xCiAqIEBwcm9wZXJ0eSBpbnQgJGl0ZW1fb3JkZXIgVGhlIG9yZGVyIG9mIHRoaXMgb2JqZWN0IGFtb25nc3QgaXQncyBwZWVycy4KICogQHByb3BlcnR5IHN0cmluZyAkaGllcmFyY2h5IChyZWFkIG9ubHkpIFRoZSBoaWVyYXJjaHkgb2YgdGhpcyBvYmplY3QgKHBhdGggdG8gdGhlIHJvb3QpIGV4cHJlc3NlZCBpbiBjYXRlZ29yeSBpZHMuCiAqIEBwcm9wZXJ0eSBzdHJpbmcgJGxvbmdfbmFtZSAocmVhZCBvbmx5KSBUaGUgaGllcmFyY2h5IG9mIHRoaXMgb2JqZWN0IChwYXRoIHRvIHRoZSByb290KSBleHByZXNzZWQgaW4gdGVybXMgb2YgY2F0ZWdvcnkgbmFtZXMuCiAqLwpjbGFzcyBjYXRlZ29yeSBpbXBsZW1lbnRzIFxBcnJheUFjY2Vzcwp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgnaWQnPT5udWxsLCduYW1lJz0+bnVsbCwnZGVzY3JpcHRpb24nPT5udWxsLCdwYXJlbnRfaWQnPT5udWxsLCdpdGVtX29yZGVyJz0+bnVsbCwnaGllcmFyY2h5Jz0+bnVsbCwnbG9uZ19uYW1lJz0+bnVsbCwnY2hpbGRyZW4nPT5udWxsKTsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RpcnR5OwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfb2xkX3BhcmVudDsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX29sZF9vcmRlcjsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJF9jYWNoZWRfY2F0ZWdvcmllczsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCgka2V5KQogICAgewogICAgICAgICRrZXkgPSBzdHJ0b2xvd2VyKHRyaW0oJGtleSkpOwogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgY2FzZSAncGFyZW50X2lkJzoKICAgICAgICBjYXNlICdpdGVtX29yZGVyJzoKICAgICAgICBjYXNlICdoaWVyYXJjaHknOgogICAgICAgIGNhc2UgJ2xvbmdfbmFtZSc6CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ2Rlc2MnOgogICAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsnZGVzY3JpcHRpb24nXTsKCiAgICAgICAgY2FzZSAnZGVwdGgnOgogICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydkZXB0aCddKSApIHJldHVybiAkdGhpcy0+X2RhdGFbJ2RlcHRoJ107CiAgICAgICAgICAgIHJldHVybiBjb3VudChleHBsb2RlKCd8JywkdGhpc1snbG9uZ19uYW1lJ10pKS0xOwoKICAgICAgICBjYXNlICdjaGlsZHJlbic6CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2NoaWxkcmVuJ10pICkgcmV0dXJuICR0aGlzLT5fZGF0YVsnY2hpbGRyZW4nXTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG9mIGEgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRTZXQoJGtleSwkdmFsKSB7CiAgICAgICAgJGtleSA9IHN0cnRvbG93ZXIodHJpbSgka2V5KSk7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICBjYXNlICdoaWVyYXJjaHknOgogICAgICAgIGNhc2UgJ2xvbmdfbmFtZSc6CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJGtleS4nIGNhbm5vdCBiZSBkaXJlY3RseSBtb2RpZmllZCBpbiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CgogICAgICAgIGNhc2UgJ2l0ZW1fb3JkZXInOgogICAgICAgICAgICAkdmFsID0gKGludCkkdmFsOwogICAgICAgICAgICBpZiggJHZhbCA8IDEgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdpdGVtIG9yZGVyIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9vbGRfb3JkZXIgKSAkdGhpcy0+X29sZF9vcmRlciA9ICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IFRSVUU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdwYXJlbnRfaWQnOgogICAgICAgICAgICAkdmFsID0gKGludCkkdmFsOwogICAgICAgICAgICBpZiggJHZhbCA9PSAwIHx8ICR2YWwgPCAtMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ3BhcmVudF9pZCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgb3IgLTEnKTsKICAgICAgICAgICAgLy8gaWYgdGhlIG5ldyBwYXJlbnQgaXMgYSBjaGlsZCBvZiB0aGUgY3VycmVudCBpdGVtLCBkaXNhbGxvdyBpdC4KICAgICAgICAgICAgLy9pZiggc2VsZjo6aXNfY2hpbGRfb2YoJHZhbCwkdGhpc1snaWQnXSkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdjYW5ub3QgbW92ZSBhbiBpdGVtIHRvIGJlIGEgZGVzY2VuZGFudCBvZiBpdHNlbGYnKTsKICAgICAgICAgICAgaWYoICEkdGhpcy0+X29sZF9vcmRlciApICR0aGlzLT5fb2xkX29yZGVyID0gJHRoaXMtPl9kYXRhWydpdGVtX29yZGVyJ107CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9vbGRfcGFyZW50ICkgJHRoaXMtPl9vbGRfcGFyZW50ID0gJHRoaXMtPl9kYXRhWydwYXJlbnRfaWQnXTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydoaWVyYXJjaHknXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnbG9uZ19uYW1lJ10gPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2l0ZW1fb3JkZXInXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSBUUlVFOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZGVwdGgnOgogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSBtYXgoMCwoaW50KSR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnY2hpbGRyZW4nOgogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgJiYgY291bnQoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICBpZiggaXNfb2JqZWN0KCR2YWxbMF0pICkgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZGVzYyc6CiAgICAgICAgICAgICRrZXkgPSAnZGVzY3JpcHRpb24nOwogICAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzoKICAgICAgICBjYXNlICduYW1lJzoKICAgICAgICAgICAgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSBUUlVFOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbigka2V5LicgaXMgbm90IGEgdmFsaWQgcHJvcGVydHkgb2YgYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEV4aXN0cygka2V5KQogICAgewogICAgICAgICRrZXkgPSBzdHJ0b2xvd2VyKHRyaW0oJGtleSkpOwogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnaGllcmFyY2h5JzoKICAgICAgICBjYXNlICdsb25nX25hbWUnOgogICAgICAgIGNhc2UgJ2l0ZW1fb3JkZXInOgogICAgICAgIGNhc2UgJ3BhcmVudF9pZCc6CiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgY2FzZSAnZGVzYyc6CiAgICAgICAgY2FzZSAnZGVzY3JpcHRpb24nOgogICAgICAgIGNhc2UgJ2NoaWxkcmVuJzoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG9mIGEgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRVbnNldCgka2V5KQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF92YWxpZGF0ZV91cGRhdGUoKQogICAgewogICAgICAgIGlmKCAkdGhpc1snbmFtZSddID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTmFtZSBjYW5ub3QgYmUgZW1wdHkgaW4gYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgcGFyZW50X2lkCiAgICAgICAgaWYoICR0aGlzWydwYXJlbnRfaWQnXSA9PSAnJyB8fCAkdGhpc1sncGFyZW50X2lkJ10gPT0gMCB8fCAkdGhpc1sncGFyZW50X2lkJ10gPCAtMSApICR0aGlzWydwYXJlbnRfaWQnXSA9IC0xOwoKICAgICAgICAvLyB2YWxpZGF0ZSBuYW1lIGZvciB0aGUgc2FtZSBwYXJlbnQKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGlkIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgV0hFUkUgbmFtZSA9ID8gQU5EIHBhcmVudF9pZCA9ID8gQU5EIGlkICE9ID8nOwogICAgICAgICR0bXAgPSAoaW50KSAkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSwkdGhpc1sncGFyZW50X2lkJ10sJHRoaXNbJ2lkJ10pKTsKICAgICAgICBpZiggJHRtcCA+IDAgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBIGNhdGVnb3J5IHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgc2FtZSBwYXJlbnQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF91cGRhdGUoKQogICAgewogICAgICAgIGlmKCAhJHRoaXMtPl9kaXJ0eSApIHJldHVybjsKICAgICAgICAkdGhpcy0+X3ZhbGlkYXRlX3VwZGF0ZSgpOwogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwoKICAgICAgICAvLyBpZiB3ZSd2ZSBjaGFuZ2VkIHRoZSBwYXJlbnQgaWQKICAgICAgICAvLyB3ZSBoYXZlIHRvIHJlLW9yZGVyIGFsbCBvZiB0aGUgaXRlbXMgdGhhdAogICAgICAgIC8vIHVzZWQgdG8gYmUgYWZ0ZXIgdGhpcyBpdGVtIHdpdGggdGhlIHNhbWUgcGFyZW50CiAgICAgICAgLy8gc2ltaWxhciB0byBhIGRlbGV0ZSArIGFkZAoKICAgICAgICAvLyBpZiB3ZSBoYXZlIG5vIGl0ZW0gb3JkZXIsIHdlIGNhbiBjcmVhdGUgb25lCiAgICAgICAgaWYoICR0aGlzWydpdGVtX29yZGVyJ10gPCAxICkgewogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIENPQUxFU0NFKE1BWChpdGVtX29yZGVyKSwwKSArIDEgRlJPTSAnLkNHQ09OVEFDVFNfQ0FUU19UQkwuJyBXSEVSRSBwYXJlbnRfaWQgPSA/JzsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpdGVtX29yZGVyJ10gPSAoaW50KSRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkdGhpc1sncGFyZW50X2lkJ10pKTsKICAgICAgICB9CgogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgU0VUIG5hbWUgPSA/LCBkZXNjcmlwdGlvbiA9ID8sIHBhcmVudF9pZCA9ID8sIGl0ZW1fb3JkZXIgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSwkdGhpc1snZGVzY3JpcHRpb24nXSwoaW50KSR0aGlzWydwYXJlbnRfaWQnXSwoaW50KSR0aGlzWydpdGVtX29yZGVyJ10sKGludCkkdGhpc1snaWQnXSkpOwogICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRVJST1IgJy4kZGItPkVycm9yTXNnKCkuJyAtLSAnLiRkYi0+c3FsKTsKICAgICAgICAkdGhpcy0+X2RpcnR5ID0gRkFMU0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfdmFsaWRhdGVfaW5zZXJ0KCkKICAgIHsKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgbmFtZQogICAgICAgIGlmKCAkdGhpc1snbmFtZSddID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTmFtZSBjYW5ub3QgYmUgZW1wdHkgaW4gYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgcGFyZW50X2lkCiAgICAgICAgaWYoICR0aGlzWydwYXJlbnRfaWQnXSA9PSAnJyB8fCAkdGhpc1sncGFyZW50X2lkJ10gPT0gMCB8fCAkdGhpc1sncGFyZW50X2lkJ10gPCAtMSApICR0aGlzWydwYXJlbnRfaWQnXSA9IC0xOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgbmFtZSBmb3IgdGhlIHNhbWUgcGFyZW50CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCBGUk9NICcuQ0dDT05UQUNUU19DQVRTX1RCTC4nIFdIRVJFIG5hbWUgPSA/IEFORCBwYXJlbnRfaWQgPSA/JzsKICAgICAgICAkdG1wID0gKGludCkgJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCR0aGlzWyduYW1lJ10sJHRoaXNbJ3BhcmVudF9pZCddKSk7CiAgICAgICAgaWYoICR0bXAgPiAwICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignQSBjYXRlZ29yeSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIHNhbWUgcGFyZW50Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfaW5zZXJ0KCkKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5fZGlydHkgKSByZXR1cm47CiAgICAgICAgJHRoaXMtPl92YWxpZGF0ZV9pbnNlcnQoKTsKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgLy8gaWYgd2UgaGF2ZSBubyBpdGVtIG9yZGVyLCB3ZSBjYW4gY3JlYXRlIG9uZQogICAgICAgIGlmKCAkdGhpc1snaXRlbV9vcmRlciddIDwgMSApIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBDT0FMRVNDRShNQVgoaXRlbV9vcmRlciksMCkgKyAxIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgV0hFUkUgcGFyZW50X2lkID0gPyc7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaXRlbV9vcmRlciddID0gKGludCkkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHRoaXNbJ3BhcmVudF9pZCddKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBpbnNlcnQgdGhlIHJlY29yZAogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNHQ09OVEFDVFNfQ0FUU19UQkwuJyAobmFtZSxkZXNjcmlwdGlvbixwYXJlbnRfaWQsaXRlbV9vcmRlcikgVkFMVUVTKD8sPyw/LD8pJzsKICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpc1snbmFtZSddLCR0aGlzWydkZXNjJ10sKGludCkkdGhpc1sncGFyZW50X2lkJ10sKGludCkkdGhpc1snaXRlbV9vcmRlciddKSk7CiAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFUlJPUiAnLiRkYi0+RXJyb3JNc2coKS4nIC0tICcuJGRiLT5zcWwpOwoKICAgICAgICAvLyBnZXQgdGhlIG5ldyBpZAogICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9ICRkYi0+SW5zZXJ0X0lEKCk7CgogICAgICAgIC8vIG1hcmsgbm90IGRpcnR5CiAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IEZBTFNFOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBpZiBjYXRlZ29yeSBBIGlzIGEgY2hpbGQgb2YgY2F0ZWdvcnkgQgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGEgVGhlIGZpcnN0IGNhdGVnb3J5IGlkLgogICAgICogQHBhcmFtIGludCAkYiBUaGUgc2Vjb25kIGNhdGVnb3J5IGlkLgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfY2hpbGRfb2YoJGEsICRiKQogICAgewogICAgICAgIC8vIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgaXMgYSBjaGlsZCBvZiBiCiAgICAgICAgLy8gaWYgYiBpcyAtMSB0aGUgcmVzdWx0IGlzIGFsd2F5cyB0cnVlCiAgICAgICAgLy8gdGVzdCBpZiBCIGlzIGEgY2hpbGQgb2YgQQogICAgICAgIGlmKCAkYSA8IDEgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgaWYoICRiIDwgMSApIHJldHVybiBUUlVFOyAvLyBldmVyeXRoaW5nIGlzIGEgY2hpbGQgb2YgdGhlIHJvb3Qgc29tZWhvdy4KICAgICAgICAkY2F0cyA9IHNlbGY6OmdldF9hbGwoKTsKCiAgICAgICAgaWYoICFpc3NldCgkY2F0c1skYV0pICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIGNhdGVnb3J5IHdpdGggaWQgJy4kYSk7CiAgICAgICAgJGNhdCA9ICRjYXRzWyRhXTsKICAgICAgICBpZiggJGNhdFsncGFyZW50X2lkJ10gPT0gJGIgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gc2VsZjo6aXNfY2hpbGRfb2YoJGNhdFsncGFyZW50X2lkJ10sJGIpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZSB0aGlzIGNvbnRlbnQgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBib29sICR1cGRhdGVfcG9zaXRpb25zIEEgZmxhZyBpbmRpY2F0aW5nIHdldGhlciBvciBub3QgdG8gdXBkYXRlIGhpZXJhcmNoeSBwb3NpdGlvbnMgYWNyb3NzIGFsbCBjYXRlZ29yaWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgkdXBkYXRlX3Bvc2l0aW9ucyA9IFRSVUUpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fZGF0YVsnaWQnXSA+IDAgKSB7CiAgICAgICAgICAgICR0aGlzLT5fdXBkYXRlKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+X2luc2VydCgpOwogICAgICAgIH0KCiAgICAgICAgaWYoICR1cGRhdGVfcG9zaXRpb25zICkgc2VsZjo6Y2FsY3VsYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIERlbGV0ZSB0aGlzIGNhdGVnb3J5LgogICAgICoKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fZGF0YVsnaWQnXSA8IDEgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgZGVsZXRlIGEgY2F0ZWdvcnkgdGhhdCBoYXMgbm90IGJlZW4gc2F2ZWQnKTsKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLkNHQ09OVEFDVFNfQURSX0NBVFNfVEJMLicgV0hFUkUgY2F0X2lkID0gPyc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCR0aGlzLT5fZGF0YVsnaWQnXSkpOwoKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLkNHQ09OVEFDVFNfQ0FUU19UQkwuJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkdGhpcy0+X2RhdGFbJ2lkJ10pKTsKCiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IHRydWU7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uICZfZnJvbV9kYXRhKCRyb3cpCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBzZWxmKCk7CiAgICAgICAgJG9iai0+X2RhdGEgPSAkcm93OwogICAgICAgIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXNbJG9ialsnaWQnXV0gPSAkb2JqOwogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9fZGF0YSgpCiAgICB7CiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9kYXRhIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgaWYoICRrZXkgPT0gJ2NoaWxkcmVuJyApIHsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSApIHsKICAgICAgICAgICAgICAgICAgICAkY2hpbGRyZW4gPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goICR2YWwgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkb25lLT50b19kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRvdXRbJGtleV0gPSAkY2hpbGRyZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dFska2V5XSA9ICR2YWw7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogTG9hZCB0aGUgc3BlY2lmaWVkIGNhdGVnb3J5IG9iamVjdCwgZ2l2ZW4gaXQncyBpZC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRpZAogICAgICogQHJldHVybiBjYXRlZ29yeQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZsb2FkKCRpZCkKICAgIHsKICAgICAgICAkaWQgPSAoaW50KSRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oIkludmFsaWQgaWQgcGFzc2VkIHRvICIuX19NRVRIT0RfXyk7CgogICAgICAgICRjYXRzID0gc2VsZjo6Z2V0X2FsbCgpOwogICAgICAgIGlmKCBpc3NldCgkY2F0c1skaWRdKSApIHJldHVybiAkY2F0c1skaWRdOwoKICAgICAgICAvLyBjb3VsZG4ndCBmaW5kIGl0CiAgICAgICAgJG9iaiA9IG51bGw7CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2FkIGFsbCBjYXRlZ29yaWVzIGFzIGEgZmxhdCBhcnJheS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2FsbCgpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXMpICkgcmV0dXJuIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXM7CgogICAgICAgIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXMgPSBhcnJheSgpOwogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuQ0dDT05UQUNUU19DQVRTX1RCTC4nIE9SREVSIEJZIGhpZXJhcmNoeSc7CiAgICAgICAgJHRtcCA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJHJvdyApIHsKICAgICAgICAgICAgICAgIHNlbGY6Ol9mcm9tX2RhdGEoJHJvdyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjYXRlZ29yaWVzIGFzIGEgbGlzdAogICAgICogc3VpdGFibGUgZm9yIHVzZSBpbiBhIGRyb3Bkb3duLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbGlzdCgpCiAgICB7CiAgICAgICAgJHRyZWUgPSBzZWxmOjpnZXRfdHJlZSgpOwogICAgICAgIGlmKCAhY291bnQoJHRyZWUpICkgcmV0dXJuOwogICAgICAgICRsaXN0ID0gYXJyYXkoKTsKCiAgICAgICAgJGZsYXR0ZW4gPSBmdW5jdGlvbigkdHJlZSwmJGxpc3QsJGRlcHRoID0gMCkgdXNlICgmJGZsYXR0ZW4pIHsKICAgICAgICAgICAgZm9yZWFjaCggJHRyZWUgYXMgJG5vZGUgKSB7CiAgICAgICAgICAgICAgICAkbGlzdFskbm9kZVsnaWQnXV0gPSBzdHJfcmVwZWF0KCcmbmJzcDsmbmJzcDsnLCRkZXB0aCkuJG5vZGVbJ25hbWUnXTsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkbm9kZVsnY2hpbGRyZW4nXSkgJiYgY291bnQoJG5vZGVbJ2NoaWxkcmVuJ10pICkgewogICAgICAgICAgICAgICAgICAgICRmbGF0dGVuKCRub2RlWydjaGlsZHJlbiddLCRsaXN0LCRkZXB0aCsxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgoKICAgICAgICAkZmxhdHRlbigkdHJlZSwkbGlzdCk7CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjYXRlZ29yaWVzIGFzIGEgdHJlZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3RyZWUoKQogICAgewogICAgICAgICRsaXN0ID0gc2VsZjo6Z2V0X2FsbCgpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGxpc3QpIHx8IGNvdW50KCRsaXN0KSA9PSAwICkgcmV0dXJuOwoKICAgICAgICAvLyBjb252ZXJ0IHRoZSBmbGF0IGxpc3QgaW50byBhIHRyZWUuCiAgICAgICAgLy8gYXNzdW1lIGl0J3Mgc29ydGVkIGJ5IGhpZXJhcmNoeS4KCiAgICAgICAgJGdldF90cmVlID0gZnVuY3Rpb24oJHBhcmVudF9pZCA9IC0xLCAkZGVwdGggPSAwKSB1c2UgKCRsaXN0LCYkZGF0YSwmJGdldF90cmVlKSB7CiAgICAgICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkbGlzdCBhcyAkb25lICkgewogICAgICAgICAgICAgICAgaWYoICRvbmVbJ3BhcmVudF9pZCddICE9ICRwYXJlbnRfaWQgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkdG1wID0gJGdldF90cmVlKCRvbmVbJ2lkJ10sJGRlcHRoKzEpOwogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0bXApICYmIGNvdW50KCR0bXApICkgJG9uZVsnY2hpbGRyZW4nXSA9ICR0bXA7CiAgICAgICAgICAgICAgICAkb25lWydkZXB0aCddID0gJGRlcHRoOyAvLyB3aWxsIHByb2xseSBmYWlsLgogICAgICAgICAgICAgICAgJG91dFtdID0gJG9uZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJG91dDsKICAgICAgICB9OwoKICAgICAgICAkdHJlZSA9ICRnZXRfdHJlZSgpOwogICAgICAgIHJldHVybiAkdHJlZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdpdmVuIGEgY2F0ZWdvcnkgbmFtZSwgYXR0ZW1wdCB0byBmaW5kIGFuIGlkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfY2F0ZWdvcnlfaWQoJHN0cikKICAgIHsKICAgICAgICAkY2F0cyA9IHNlbGY6OmdldF9hbGwoKTsKICAgICAgICBpZiggIWlzX2FycmF5KCRjYXRzKSB8fCBjb3VudCgkY2F0cykgPT0gMCApIHJldHVybjsKCiAgICAgICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICAgICAgaWYoIChpbnQpICRzdHIgPiAwICkgewogICAgICAgICAgICAvLyBpdCdzIGFscmVhZHkgYW4gaW50CiAgICAgICAgICAgICRpZCA9IChpbnQpJHN0cjsKICAgICAgICAgICAgaWYoIGlzc2V0KCRjYXRzWyRpZF0pICkgcmV0dXJuICRpZDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzdHIgPSB0cmltKCRzdHIpOwogICAgICAgICAgICBmb3JlYWNoKCAkY2F0cyBhcyAkY2F0aWQgPT4gJGNhdCApIHsKICAgICAgICAgICAgICAgIGlmKCBzdHJwb3MoJGNhdFsnbG9uZ19uYW1lJ10sJHN0cikgIT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2F0WydpZCddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2l2ZW4gYSBjYXRlZ29yeSBpZCwgZ2V0IGl0J3MgbmFtZQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3J5X25hbWUoJGlkKQogICAgewogICAgICAgICRjYXRzID0gc2VsZjo6Z2V0X2FsbCgpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGNhdHMpIHx8IGNvdW50KCRjYXRzKSA9PSAwICkgcmV0dXJuOwogICAgICAgICRpZCA9IChpbnQpICRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCggJGNhdHMgYXMgJGNhdGlkID0+ICRjYXQgKSB7CiAgICAgICAgICAgIGlmKCAkY2F0WydpZCddID09ICRpZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY2F0WyduYW1lJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjdWxhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygpCiAgICB7CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CgogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgaWQsIGl0ZW1fb3JkZXIsIG5hbWUgRlJPTSAiLkNHQ09OVEFDVFNfQ0FUU19UQkw7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSB0aHJvdyBuZXcgXENtc0V4Y2VwdGlvbignU1FMIEVycm9yOiAnLiRkYi0+c3FsLicgLS0gJy4kZGItPkVycm9yTXNnKCkpOwogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSAiIjsKICAgICAgICAgICAgJGN1cnJlbnRfbG9uZ19uYW1lID0gIiI7CiAgICAgICAgICAgICRjb250ZW50X2lkID0gJHJvd1snaWQnXTsKICAgICAgICAgICAgJGN1cnJlbnRfcGFyZW50X2lkID0gJHJvd1snaWQnXTsKICAgICAgICAgICAgJGNvdW50ID0gMDsKCiAgICAgICAgICAgIHdoaWxlICgkY3VycmVudF9wYXJlbnRfaWQgPiAwKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGlkLCBpdGVtX29yZGVyLCBuYW1lLCBwYXJlbnRfaWQgRlJPTSAiLkNHQ09OVEFDVFNfQ0FUU19UQkwuIiBXSEVSRSBpZCA9ID8iOwogICAgICAgICAgICAgICAgJHJvdzIgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRjdXJyZW50X3BhcmVudF9pZCkpOwogICAgICAgICAgICAgICAgaWYgKCRyb3cyKSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uID0gc3RyX3BhZCgkcm93MlsnaXRlbV9vcmRlciddLCA1LCAnMCcsIFNUUl9QQURfTEVGVCkgLiAiLiIgLiAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbG9uZ19uYW1lID0gJHJvdzJbJ25hbWUnXSAuICcgfCAnIC4gJGN1cnJlbnRfbG9uZ19uYW1lOwogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9ICRyb3cyWydwYXJlbnRfaWQnXTsKICAgICAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9IC0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbikgPiAwKSB7CiAgICAgICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSBzdWJzdHIoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAwLCBzdHJsZW4oJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uKSAtIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RybGVuKCRjdXJyZW50X2xvbmdfbmFtZSkgPiAwKSAkY3VycmVudF9sb25nX25hbWUgPSBzdWJzdHIoJGN1cnJlbnRfbG9uZ19uYW1lLCAwLCBzdHJsZW4oJGN1cnJlbnRfbG9uZ19uYW1lKSAtIDMpOwoKICAgICAgICAgICAgJHF1ZXJ5ID0gIlVQREFURSAiLkNHQ09OVEFDVFNfQ0FUU19UQkwuIiBTRVQgaGllcmFyY2h5ID0gPywgbG9uZ19uYW1lID0gPyBXSEVSRSBpZCA9ID8iOwogICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAkY3VycmVudF9sb25nX25hbWUsICRjb250ZW50X2lkKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIGRpZSgkZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHBhbmQgYSBjYXRlZ29yeSBpZCBpbnRvIGl0IGFuZCBpdHMgY2hpbGRyZW4uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhwYW5kX2NhdGVnb3J5KCRjYXRpZCkKICAgIHsKICAgICAgICAkY2F0aWQgPSAoaW50KSAkY2F0aWQ7CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgaWYoICRjYXRpZCA8IDEgKSB7CiAgICAgICAgICAgIC8vIGFsbCBjYXRlZ29yaWVzCiAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGlkIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgT1JERVIgQlkgaGllcmFyY2h5JzsKICAgICAgICAgICAgJG91dCA9ICRkYi0+R2V0Q29sKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkY2F0ID0gc2VsZjo6bG9hZCgkY2F0aWQpOwogICAgICAgICAgICBpZiggJGNhdCApIHsKICAgICAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGlkIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgV0hFUkUgaGllcmFyY2h5IExJS0UgPyc7CiAgICAgICAgICAgICAgICAkb3V0ID0gJGRiLT5HZXRDb2woJHNxbCxhcnJheSgkY2F0WydoaWVyYXJjaHknXS4nJScpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMjQ0OTM2MDUwIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEyNDQ5MzYwNTAiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTUyMDMwNDk0NyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS01MjAzMDQ5NDciIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3QucGhwPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+VGhlIGRlZmluaXRpb24gZm9yIHRoZSBjb250YWN0IGNsYXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5DbGFzc2VzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BIGNvbnRhY3QgaGFzIG51bWVyb3VzIHByb3BlcnRpZXMgKGZ1bGwgbmFtZSwgbmlja25hbWUsIHRpdGxlLCBjb21wYW55LCBkaXZpc2lvbiwgcm9sZQpjYW4gYmVsb25nIHRvIHplcm8gb3IgbW9yZSBjYXRlZ29yaWVzICh3aGljaCBjYW4gYmUgbmVzdGVkKQphbmQgY2FuIGhhdmUgb25lIG9yIG1vcmUgb2JqZWN0cwogICBzb21lIG9iamVjdHMgKG5hbWUpIGNhbiBvbmx5IGV4aXN0IG9uY2UKICAgb3RoZXIgb2JqZWN0cyBjYW4gZXhpc3QgbXVsdGlwbGUgdGltZXMKICAgICB0aGVzZSBvYmplY3RzIGVhY2ggaGF2ZSBhIGxhYmVsCiAgICAgYW5kIGNhbiBiZSBwcmVmZXJyZWQKbmFtZXM6CiAgaWYgYSBmdWxsbmFtZSBpcyBzZXQsIGl0IGlzIHVzZWQgYXMgdGhlIGRpc3BsYXkgbmFtZS48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Qcm9kdWN0aXZpdHk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPmNhbGd1eTEwMDAgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Db3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGw8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+PC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdC5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3QgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY29udGFjdCBoYXMgbnVtZXJvdXMgcHJvcGVydGllcyAoZnVsbCBuYW1lLCBuaWNrbmFtZSwgdGl0bGUsIGNvbXBhbnksIGRpdmlzaW9uLCByb2xlCiAqIGNhbiBiZWxvbmcgdG8gemVybyBvciBtb3JlIGNhdGVnb3JpZXMgKHdoaWNoIGNhbiBiZSBuZXN0ZWQpCiAqIGFuZCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBvYmplY3RzCiAqICAgIHNvbWUgb2JqZWN0cyAobmFtZSkgY2FuIG9ubHkgZXhpc3Qgb25jZQogKiAgICBvdGhlciBvYmplY3RzIGNhbiBleGlzdCBtdWx0aXBsZSB0aW1lcwogKiAgICAgIHRoZXNlIG9iamVjdHMgZWFjaCBoYXZlIGEgbGFiZWwKICogICAgICBhbmQgY2FuIGJlIHByZWZlcnJlZAogKiBuYW1lczoKICogICBpZiBhIGZ1bGxuYW1lIGlzIHNldCwgaXQgaXMgdXNlZCBhcyB0aGUgZGlzcGxheSBuYW1lLgogKiAgIGVsc2UgaWYgbmlja25hbWUgaXMgc2V0LCBpdCBpcyB1c2VkIGFzIHRoZSBkaXNwbGF5IG5hbWUKICogICBlbHNlIGlmIGEgbmFtZSBvYmplY3QgZXhpc3RzLCBpdCBpcyBmb3JtYXR0ZWQgYW5kIHVzZWQgYXMgdGhlIGRpc3BsYXkgbmFtZQogKiBwcmVmZXJyZWQ6CiAqICAgaWYgbm8gb2JqZWN0IG9mIGEgY2VydGFpbiB0eXBlIGlzIHNldCBhcyAncHJlZmVycmVkJyB0aGVuIHRoZSBmaXJzdCBvYmplY3QKICogICBvZiB0aGF0IHR5cGUgaXMgcmV0dXJuZWQuICBNdWx0aXBsZSBvYmplY3RzIG9mIGEgY2VydGFpbiB0eXBlIGNhbiBiZSBwcmVmZXJyZWQKICogICBidXQgb25seSB0aGUgZmlyc3Qgb25lIHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBhc2tpbmcgZm9yIHRoZSBwcmVmZXJyZWQgb2JqZWN0IG9mIGEgdHlwZS4KICogbGFiZWxzCiAqICAgdXNlciBkZWZpZW5kLCBidXQgc3lzdGVtIG1heSBjcmVhdGUgbnVtZXJvdXMgc3RhbmRhcmQgbGFiZWxzIChpLmU6IGhvbWUvd29yaykKICogICBsYWJlbHMgY2Fubm90IGJlIGVtcHR5LgogKgogKiBOb3RlOiBUaGlzIGNsYXNzIChhbmQgaXQncyBkZXBlbmRlbnQgY2xhc3NlcykgdXNlIGhlYXZ5IHVzZSBvZiBleGNlcHRpb25zLgogKi8KY2xhc3MgY29udGFjdAp7CiAgICBjb25zdCBMQUJFTF9OQU1FID0gJ25hbWUnOwogICAgY29uc3QgU1RBVFVTX0RJU0FCTEVEID0gJ2Rpc2FibGVkJzsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgnaWQnPT5udWxsLCdzdGF0dXMnPT5udWxsLCdndWlkJz0+bnVsbCwnZmV1X3VpZCc9Pm51bGwsJ2Z1bGxuYW1lJz0+bnVsbCwnbmlja25hbWUnPT5udWxsLCdjb21wYW55Jz0+bnVsbCwndGl0bGUnPT5udWxsLCdyb2xlJz0+bnVsbCwnbm90ZSc9Pm51bGwsJ2ltYWdlJz0+bnVsbCwnbG9nbyc9Pm51bGwpOwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfb2JqZWN0cyA9IGFycmF5KCk7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9jYXRlZ29yaWVzID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9IG51bGw7CiAgICAgICAgJHRoaXMtPl9kYXRhWydndWlkJ10gPSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIG9iamVjdCB0byB0aGUgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0X3N1YiAkb2JqZWN0IFRoZSBvYmplY3QgdG8gYWRkIChtdXN0IGJlIGEgdmFsaWQgb2JqZWN0KQogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfb2JqZWN0KGNvbnRhY3Rfc3ViICRvYmplY3QpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGNsYXNzID0gZ2V0X2NsYXNzKCRvYmplY3QpOwogICAgICAgICAgICAkb2JqZWN0LT52YWxpZGF0ZSgpOwoKICAgICAgICAgICAgLy8gYWxsb3cgb25seSBvbmUgbmFtZSBvYmplY3QKICAgICAgICAgICAgaWYoICEkb2JqZWN0LT5hbGxvd3NfbXVsdGlwbGUoKSAmJiAkdGhpcy0+Y291bnRfb2JqZWN0cygkY2xhc3MpID4gMCApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdDYW5ub3QgYWRkIGEgc2Vjb25kIG9iamVjdCBvZiB0eXBlICcuJGNsYXNzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICRvYmplY3QtPmlzX3ByZWZlcnJlZCgpICkgewogICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIHByZWZlcnJlZCBvYmplY3QsIHNldCBhbGwgdGhlIG90aGVyIG9iamVjdHMgb2YgdGhpcyBjbGFzcyB0byBiZSBub24gcHJlZmVycmVkLgogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fb2JqZWN0cykgJiYgY291bnQoJHRoaXMtPl9vYmplY3RzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X29iamVjdHMgYXMgJG9iaiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoICRvYmplY3QtPmdldF9jbGFzcygpID09ICRjbGFzcyApICRvYmotPnNldF9wcmVmZXJyZWQoRkFMU0UpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPl9vYmplY3RzW10gPSAkb2JqZWN0OwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ291bnQgdGhlIG51bWJlciBvZiBvYmplY3RzIG9mIGEgY2VydGFpbiBjbGFzcwogICAgICoKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc19uYW1lCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRfb2JqZWN0cygkY2xhc3NfbmFtZSkKICAgIHsKICAgICAgICAkY2xhc3NfbmFtZSA9IHRyaW0oKHN0cmluZykkY2xhc3NfbmFtZSk7CiAgICAgICAgaWYoICEkY2xhc3NfbmFtZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0NsYXNzIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJG91dCA9IDA7CgogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAkb2JqICkgewogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF9jbGFzcygpID09ICRjbGFzc19uYW1lICkgJG91dCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbiBvYmplY3Qgb2YgYSBzcGVjaWZpYyBjbGFzcyB3aXRoIGEgc3BlY2lmaWMgbGFiZWwKICAgICAqCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NfbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9vYmplY3QoJGNsYXNzX25hbWUsJGxhYmVsKQogICAgewogICAgICAgICRjbGFzc19uYW1lID0gdHJpbSgoc3RyaW5nKSRjbGFzc19uYW1lKTsKICAgICAgICBpZiggISRjbGFzc19uYW1lICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignQ2xhc3MgbmFtZSBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fb2JqZWN0cykgJiYgY291bnQoJHRoaXMtPl9vYmplY3RzKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmogKSB7CiAgICAgICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgJiYgJG9iai0+Z2V0X2xhYmVsKCkgPT0gJGxhYmVsICkgcmV0dXJuICRvYmo7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gdG9kbzogdGhyb3cgZXhjZXB0aW9uID8/CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBhbGwgb2YgdGhlIG9iamVjdHMgb2YgYSBjZXJ0YWluIHR5cGUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc19uYW1lCiAgICAgKiBAcmV0dXJuIGNvbnRhY3Rfc3ViW10KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9vYmplY3RzX2J5X3R5cGUoJGNsYXNzX25hbWUpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fb2JqZWN0cykgJiYgY291bnQoJHRoaXMtPl9vYmplY3RzKSApIHsKICAgICAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAkb2JqICkgewogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF9jbGFzcygpID09ICRjbGFzc19uYW1lICkgJG91dFtdID0gJG9iajsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggY291bnQoJG91dCkgKSByZXR1cm4gJG91dDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmUgYW4gb2JqZWN0IGZyb20gdGhlIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc19uYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfb2JqZWN0KCRjbGFzc19uYW1lLCRsYWJlbCkKICAgIHsKICAgICAgICAkY2xhc3NfbmFtZSA9IHRyaW0oKHN0cmluZykkY2xhc3NfbmFtZSk7CiAgICAgICAgaWYoICEkY2xhc3NfbmFtZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0NsYXNzIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgIC8vIGRpc2FsbG93IHJlbW92aW5nIGEgJ25hbWUnIG9iamVjdCBpZiB3ZSBoYXZlIG9uZQogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fb2JqZWN0cyk7ICRpKysgKSB7CiAgICAgICAgICAgICRvYmogPSAkdGhpcy0+X29iamVjdHNbJGldOwogICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgJiYgJG9iai0+Z2V0X2xhYmVsKCkgPT0gJGxhYmVsICkgYXJyYXlfc3BsaWNlKCR0aGlzLT5fb2JqZWN0cywkaSwxKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHByZWZlcnJlZCBvYmplY3Qgb2YgYSBjZXJ0YWluIGNsYXNzCiAgICAgKgogICAgICogTXVsdGlwbGUgb2JqZWN0cyBvZiBhIGNsYXNzIGNhbiBiZSBwcmVmZXJyZWQuICBPciBub25lLgogICAgICogSWYgbm8gb2JqZWN0cyBvZiB0aGUgc3BlY2lmaWVkIGNsYXNzIGFyZSBwcmVmZXJyZWQsIHRoZSBmaXJzdCBvYmplY3Qgb2YgdGhlIHNwZWNpZmllZAogICAgICogY2xhc3Mgd2lsbCBiZSByZXR1cm5lZC4KICAgICAqCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NfbmFtZQogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9vYmplY3QoJGNsYXNzX25hbWUpCiAgICB7CiAgICAgICAgJGNsYXNzX25hbWUgPSB0cmltKChzdHJpbmcpJGNsYXNzX25hbWUpOwogICAgICAgIGlmKCAhJGNsYXNzX25hbWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdDbGFzcyBuYW1lIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAvLyBnZXQgdGhlIHByZWZlcnJlZCBvYmplY3Qgb2YgYSBzcGVjaWZpYyB0eXBlCiAgICAgICAgLy8gd2UgcmVtZW1iZXIgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiB0aGUgc3BlY2lmaWVkIGNsYXNzCiAgICAgICAgLy8gaWYgbm8gb2JqZWN0cyBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMgcHJlZmVycmVkCiAgICAgICAgLy8gdGhlbiB3ZSByZXR1cm4gdGhlIGZpcnN0IG9iamVjdCBvZiB0aGF0IGNsYXNzIHRoYXQgd2UgZmluZC4KICAgICAgICAkaWR4X2ZpcnN0ID0gLTE7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9vYmplY3RzKTsgJGkrKyApIHsKICAgICAgICAgICAgJG9iaiA9ICR0aGlzLT5fb2JqZWN0c1skaV07CiAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfY2xhc3MoKSA9PSAkY2xhc3NfbmFtZSApIHsKICAgICAgICAgICAgICAgIGlmKCAkaWR4X2ZpcnN0IDwgMCApICRpZHhfZmlyc3QgPSAkaTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5pc19wcmVmZXJyZWQoKSApIHJldHVybiAkb2JqOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAkaWR4X2ZpcnN0ID4gLTEgKSByZXR1cm4gJHRoaXMtPl9vYmplY3RzWyRpZHhfZmlyc3RdOwogICAgICAgIC8vIHRvZG86IHRocm93IGV4Y2VwdGlvbiA/PwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwcmVmZXJyZWQgZmxhZyBvbiBhbiBvYmplY3QgKGlkZW50aWZpZWQgYnkgY2xhc3MgYW5kIGxhYmVsKSB0byB0cnVlCiAgICAgKiBhdXRvbWF0aWNhbGx5IHNldHMgYWxsIG90aGVyIG9iamVjdHMgb2YgdGhhdCBjbGFzcyB0byBiZSBub24tcHJlZmVycmVkCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NfbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ByZWZlcnJlZCgkY2xhc3NfbmFtZSwkbGFiZWwpCiAgICB7CiAgICAgICAgJGNsYXNzX25hbWUgPSB0cmltKChzdHJpbmcpJGNsYXNzX25hbWUpOwogICAgICAgIGlmKCAhJGNsYXNzX25hbWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdDbGFzcyBuYW1lIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAvLyBzZXQgYWxsIHRoZSBvYmplY3RzIHdpdGggdGhpcyBjbGFzcyB0byBiZSBub3QgcHJlZmVycmVkCiAgICAgICAgJGNsYXNzX25hbWUgPSB0cmltKChzdHJpbmcpJGNsYXNzX25hbWUpOwogICAgICAgICRkb25lID0gRkFMU0U7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9vYmplY3RzKTsgJGkrKyApIHsKICAgICAgICAgICAgJG9iaiA9JiAkdGhpcy0+X29iamVjdHNbJGldOwogICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgKSB7CiAgICAgICAgICAgICAgICAkb2JqLT5zZXRfcHJlZmVycmVkKEZBTFNFKTsKICAgICAgICAgICAgICAgIGlmKCAhJGRvbmUgJiYgJG9iai0+Z2V0X2xhYmVsKCkgPT0gJGxhYmVsICkgewogICAgICAgICAgICAgICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoVFJVRSk7CiAgICAgICAgICAgICAgICAgICAgJGRvbmUgPSBUUlVFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9vYmplY3QoJGNsYXNzX25hbWUsJGxhYmVsKTsKICAgICAgICBpZiggJG9iaiApICRvYmotPnNldF9wcmVmZXJyZWQoKTsKICAgIH0KCiAgICAvLwogICAgLy8gYmFzaWMgZGlyZWN0IGFjY2Vzc29ycy9zZXR0ZXJzCiAgICAvLwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBpZCBvZiB0aHNpIGNvbnRhY3QKICAgICAqIFRoZSBpZCBvZiBhIG5ldyAodW5zYXZlZCkgb2JqZWN0IGlzIG51bGwKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2lkKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnaWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgRkVVIHVpZCBhdHRhY2hlZCB0byB0aGlzIGNvbnRhY3QgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2ZldV91aWQoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdmZXVfdWlkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NvY2lhdGUgYW4gRkVVIHVpZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqIEEgMCBvciBuZWdhdGl2ZSB2YWx1ZSB3aWxsIHJlbW92ZSB0aGUgYXNzb2NpYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkdWlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZmV1X3VpZCgkdWlkKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgIGlmKCAkdWlkIDwgMSApICR1aWQgPSBudWxsOwogICAgICAgICR0aGlzLT5fZGF0YVsnZmV1X3VpZCddID0gJHVpZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZ3VpZCBmb3IgdGhpcyBjb250YWN0CiAgICAgKiBUaGUgZ3VpZCBpcyBhIHVuaXF1ZSwgcmFuZG9tbHkgZ2VuZXJhdGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBjb250YWN0LgogICAgICogVHlwaWNhbGx5IHRoZSBndWlkIGlzIHVzZWQgaW4gZXhwb3J0IGZvcm1hdHMgbGlrZSB2Y2FyZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZ3VpZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2d1aWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgR1VJRCBmb3IgdGhpcyBjb250YWN0LgogICAgICogVGhlIEdVSUQgbXVzdCBiZSB1bmlxdWUgdG8gYWxsIHVzZXJzLiAgSWYgbm9uZSBpcyBzcGVjaWZpZWQsIG9uIHNhdmUKICAgICAqIGEgdW5pcWUgR1VJRCB3aWxsIGJlIGdlbmVyYXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9ndWlkKCRzdHIpCiAgICB7CiAgICAgICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICAgICAgJHRoaXMtPl9kYXRhWydndWlkJ10gPSAkc3RyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBmdWxsIG5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICogVGhlIGZ1bGwgbmFtZSBtYXkgbm90IGJlIHNldC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Z1bGxuYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnZnVsbG5hbWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZnVsbCBuYW1lIGZvciB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2Z1bGxuYW1lKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydmdWxsbmFtZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaW1hZ2UgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICogVGhlIGltYWdlIGlzIHN0b3JlZCBhcyBhIGRhdGEgdXJpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9pbWFnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2ltYWdlJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGltYWdlIGZvciB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwgQSBkYXRhIHVyaSB0byBhbiBpbWFnZS4uLiB0aGUgZGF0YSB1cmkgbXVzdCBmaXQgd2l0aGluIDY0awogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfaW1hZ2UoJHZhbCkKICAgIHsKICAgICAgICAkdmFsID0gdHJpbSgkdmFsKTsKICAgICAgICBpZiggISR2YWwgKSB7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaW1hZ2UnXSA9ICR2YWw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0ZXN0ID0gc3Vic3RyKCR2YWwsMCwxMCk7CiAgICAgICAgaWYoICR0ZXN0ICE9ICdkYXRhOmltYWdlJyApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ltYWdlIHZhbHVlIHNwZWNpZmllZCBpcyBub3QgYSBkYXRhIFVSSTogJy4kdGVzdCk7CiAgICAgICAgaWYoIHN0cmxlbigkdmFsKSA+IDY1NTM1ICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignSW1hZ2UgdmFsdWUgc3BlY2lmaWVkIGlzIHRvbyBsYXJnZScpOwogICAgICAgICR0aGlzLT5fZGF0YVsnaW1hZ2UnXSA9ICR2YWw7CiAgICB9CgoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb2dvIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqIFRoZSBpbWFnZSBpcyBzdG9yZWQgYXMgYSBkYXRhIHVyaS4uIG1heGltdW0gNjRrCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb2dvKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnbG9nbycpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb2dvIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqIFRoZSBsb2dvIGlzIHN0b3JlZCBhcyBhIGRhdGEgdXJpLi4gbWF4aW11bSA2NGsKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9sb2dvKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgaWYoICEkdmFsICkgewogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2xvZ28nXSA9ICR2YWw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmKCAhc3RhcnRzd2l0aCgkdmFsLCdkYXRhOicpICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTG9nbyB2YWx1ZSBzcGVjaWZpZWQgaXMgbm90IGEgZGF0YSBVUkk6ICcuJHZhbCk7CiAgICAgICAgaWYoIHN0cmxlbigkdmFsKSA+IDY1NTM1ICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTG9nbyB2YWx1ZSBzcGVjaWZpZWQgaXMgdG9vIGxhcmdlJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydsb2dvJ10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuaWNrbmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9uaWNrbmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ25pY2tuYW1lJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG5pY2tuYW1lIChvciBlcmFzZSBpdCkgZm9yIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbmlja25hbWUoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ25pY2tuYW1lJ10gPSB0cmltKChzdHJpbmcpICR2YWwpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBjb21wYW55IG5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29tcGFueSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2NvbXBhbnknKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCAob3IgZXJhc2UpIHRoZSBjb21wYW55IG5hbWUgZm9yIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfY29tcGFueSgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnY29tcGFueSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgdGl0bGUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdGl0bGUoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCd0aXRsZScpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IChvciBlcmFzZSkgdGhlIHRpdGxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3RpdGxlKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd0aXRsZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcm9sZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9yb2xlKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwncm9sZScpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IChvciBlcmFzZSkgdGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3JvbGUoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3JvbGUnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHByZWZpeCBUaGUgcHJlZml4IChpLmU6IE1yLCBNcnMuIERyLCBldGMpCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaXJzdCAgVGhlIGZpcnN0IG5hbWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1pZGRsZSBUaGUgbWlkZGxlIG5hbWUgKG9wdGlvbmFsKQogICAgICogQHBhcmFtIHN0cmluZyAkbGFzdCAgIFRoZSBzdXJuYW1lIChvcHRpb25hbCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN1ZmZpeCBUaGUgc3VmZml4IChpLmU6IFBIRCwgQi5TLiwgUC5HZW8pCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9uYW1lKCRwcmVmaXgsJGZpcnN0LCRtaWRkbGUsJGxhc3QsJHN1ZmZpeCkKICAgIHsKICAgICAgICAkYWRkaW5nID0gZmFsc2U7CiAgICAgICAgJHRtcCA9ICR0aGlzLT5nZXRfb2JqZWN0c19ieV90eXBlKCdjb250YWN0X25hbWUnKTsKICAgICAgICAkbmFtZSA9IG51bGw7CiAgICAgICAgaWYoIGNvdW50KCR0bXApICkgewogICAgICAgICAgICAkbmFtZSA9ICR0bXBbMF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkbmFtZSA9IG5ldyBjb250YWN0X25hbWUoJHRoaXMpOwogICAgICAgICAgICAkYWRkaW5nID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJG5hbWUtPnNldF9wcmVmaXgoJHByZWZpeCk7CiAgICAgICAgJG5hbWUtPnNldF9maXJzdCgkZmlyc3QpOwogICAgICAgICRuYW1lLT5zZXRfbWlkZGxlKCRtaWRkbGUpOwogICAgICAgICRuYW1lLT5zZXRfbGFzdCgkbGFzdCk7CiAgICAgICAgJG5hbWUtPnNldF9zdWZmaXgoJHN1ZmZpeCk7CiAgICAgICAgJG5hbWUtPnNldF9wcmVmZXJyZWQoVFJVRSk7CiAgICAgICAgJG5hbWUtPnNldF9sYWJlbChzZWxmOjpMQUJFTF9OQU1FKTsKICAgICAgICBpZiggJGFkZGluZyApICR0aGlzLT5hZGRfb2JqZWN0KCRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbmFtZSBvYmplY3QgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9uYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9wcmVmZXJyZWRfb2JqZWN0KCdjb250YWN0X25hbWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEVyYXNlIHRoZSBuYW1lIG9iamVjdCAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfbmFtZSgpCiAgICB7CiAgICAgICAgJGNsYXNzX25hbWUgPSAnY29udGFjdF9uYW1lJzsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkdGhpcy0+X29iamVjdHMpOyAkaSsrICkgewogICAgICAgICAgICBpZiggJHRoaXMtPl9vYmplY3RzWyRpXS0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgKSB1bnNldCgkdGhpcy0+X29iamVjdHNbJGldKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBkaXNwbGF5YWJsZSBuYW1lCiAgICAgKiBJZiBhIG5hbWUgb2JqZWN0IGV4aXN0cywgaXQncyBmb3JtYXR0ZWQgdmFsdWUgaXMgcmV0dXJuZWQKICAgICAqIG90aGVyd2lzZSwgdGhlIGZ1bGwgbmFtZSwgb3Igbmlja25hbWUgaXMgcmV0dXJuZWQgd2hpY2hldmVyIG9jY3VycmVkIGZpcnN0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9kaXNwbGF5X25hbWUoKQogICAgewogICAgICAgICRmbiA9ICR0aGlzLT5nZXRfZnVsbG5hbWUoKTsKICAgICAgICBpZiggJGZuICkgcmV0dXJuICRmbjsKICAgICAgICAkbm4gPSAkdGhpcy0+Z2V0X25pY2tuYW1lKCk7CiAgICAgICAgaWYoICRubiApIHJldHVybiAkbm47CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfbmFtZSgpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF9mb3JtYXR0ZWQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIGFsaWFzIGZvciBnZXRfZ3VpZCgpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF91dWlkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9ndWlkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHN0YXR1cyAoaWYgYW55KSBmb3IgdGhpcyBjb250YWN0CiAgICAgKiBhIG5vbiBlbXB0eSBzdGF0dXMgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbnRhY3QgaXMgZGlzYWJsZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3N0YXR1cygpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ3N0YXR1cycpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyB0aGlzIGNvbnRhY3QgdG8gZGlzYWJsZWQuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXNhYmxlKCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gc2VsZjo6U1RBVFVTX0RJU0FCTEVEOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBpZiB0aGUgY29udGFjdCBpcyBkaXNhYmxlZAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNfZW5hYmxlZCgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfc3RhdHVzKCkgIT0gc2VsZjo6U1RBVFVTX0RJU0FCTEVEICkgcmV0dXJuIFRSVUU7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IChvciBlcmFzZSkgdGhlIG5vdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICogTWF4aW11bSBzaXplIGlzIDY0awogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbm90ZSgkdmFsKQogICAgewogICAgICAgICR2YWwgPSB0cmltKChzdHJpbmcpJHZhbCk7CiAgICAgICAgaWYoIHN0cmxlbigkdmFsKSA+IDY1NTM1ICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignVGhlIG1heGltdW0gc2l6ZSBvZiBhIG5vdGUgaXMgNjRrJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydub3RlJ10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBub3RlIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25vdGUoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdub3RlJyk7CiAgICB9CgogICAgLy8gZW1haWwgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGFuIGVtYWlsIGFkZHJlc3MgdG8gdGhpcyBjb250YWN0CiAgICAgKgogICAgICogTXVsdGlwbGUgZW1haWwgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGxhYmVsIGFyZSBwZXJtaXR0ZWQuCiAgICAgKiBhbmQgbXVsdGlwbGUgcHJlZmVycmVkIGFyZSBwZXJtaXR0ZWQgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGVtYWlsIFRoZSBlbWFpbCBhZGRyZXNzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbCBUaGUgbGFiZWwKICAgICAqIEBwYXJhbSBib29sICRwcmVmZXJyZWQgV2V0aGVyIHRoaXMgaXMgdGhlIHByZWZlcnJlZCBlbWFpbCBhZGRyZXNzCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZF9lbWFpbCgkZW1haWwsJGxhYmVsLCRwcmVmZXJyZWQgPSBGQUxTRSkKICAgIHsKICAgICAgICAkZW1haWwgPSB0cmltKChzdHJpbmcpJGVtYWlsKTsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRlbWFpbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0VtYWlsIGFkZHJlc3MgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X2VtYWlsKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfdmFsdWUoJGVtYWlsKTsKICAgICAgICAkb2JqLT5zZXRfbGFiZWwoJGxhYmVsKTsKICAgICAgICAkb2JqLT5zZXRfcHJlZmVycmVkKChib29sKSRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IGFuIGVtYWlsIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWRlIGxhYmVsLgogICAgICogVGhpcyBtZXRob2Qgd2lsbCBmaXJzdCBzZWFyY2ggZW1haWwgb2JqZWN0cyBmb3IgdGhlIHNhbWUgbGFiZWwuCiAgICAgKiBpZiBhIG1hdGNoIGlzIGZvdW5kLCBpdCdzIHZhbHVlIGFuZCBwcmVmZXJyZWQgZmxhZyBhcmUgdXBkYXRlZC4KICAgICAqIGlmIG5vIG1hdGNoIGlzIGZvdW5kLCBhIG5ldyBvYmplY3QgaXMgY3JlYXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICRwcmVmZXJyZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGluc2VydF9hZGRfZW1haWwoJHZhbHVlLCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICAkdmFsdWUgPSB0cmltKChzdHJpbmcpJHZhbHVlKTsKICAgICAgICBpZiggISR2YWx1ZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ1ZhbHVlIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAkY2xhc3NfbmFtZSA9ICdjb250YWN0X2VtYWlsJzsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9vYmplY3RzKSAmJiBjb3VudCgkdGhpcy0+X29iamVjdHMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X29iamVjdHMgYXMgJiRvYmogKSB7CiAgICAgICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgIT0gJGNsYXNzX25hbWUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfbGFiZWwoKSAhPSAkbGFiZWwgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgbWF0Y2gKICAgICAgICAgICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIG5vIG1hdGNoZXMgZm91bmQKICAgICAgICAkdGhpcy0+YWRkX2VtYWlsKCR2YWx1ZSwkbGFiZWwsJHByZWZlcnJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gZW1haWwgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9lbWFpbCgkbGFiZWwpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfZW1haWwnLCRsYWJlbCk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X2FkZHJlc3MoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgcHJlZmVycmVkIGVtYWlsIG9iamVjdCAoaWYgYW55KQogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9lbWFpbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9lbWFpbF9vYmooKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9vYmplY3QoJ2NvbnRhY3RfZW1haWwnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgcHJlZmVycmVkIGVtYWlsIGFkZHJlc3MgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9lbWFpbCgpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9lbWFpbCcpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFsbCBvZiB0aGUgZW1haWwgb2JqZWN0cyAoaWYgYW55KQogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9lbWFpbFtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZW1haWxfb2JqZWN0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfb2JqZWN0c19ieV90eXBlKCdjb250YWN0X2VtYWlsJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmUgYWxsIHRoZSBlbWFpbCBhZGRyZXNzZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX2VtYWlsKCRsYWJlbCkKICAgIHsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X2VtYWlsJywkbGFiZWwpOwogICAgfQoKICAgIC8vIHVybCBtZXRob2RzCgogICAgLyoqCiAgICAgKiBBZGQgYSB1cmwgdG8gdGhlIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1cmwKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZmVycmVkCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZF91cmwoJHVybCwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICR1cmwgPSB0cmltKChzdHJpbmcpJHVybCk7CiAgICAgICAgaWYoICEkdXJsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignVVJMIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X3VybCgkdGhpcyk7CiAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR1cmwpOwogICAgICAgICRvYmotPnNldF9sYWJlbCgkbGFiZWwpOwogICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBmaXJzdCBVUkwgb2JqZWN0IGluIHRoZSBsaXN0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCiAgICAgKiBJZiBubyBVUkwgb2JqZWN0cyBhcmUgZm91bmQsIGluc2VydCBvbmUgYXMgYSBwcmVmZXJyZWQgVVJMLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGluc2VydF9zZXRfdXJsKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSB0cmltKChzdHJpbmcpICR2YWx1ZSk7CiAgICAgICAgaWYoICEkdmFsdWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdWYWx1ZSBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGNsYXNzX25hbWUgPSAnY29udGFjdF91cmwnOwogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAmJG9iaiApIHsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfY2xhc3MoKSAhPSAkY2xhc3NfbmFtZSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5hZGRfdXJsKCR2YWx1ZSwndW5rbm93bicsMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0IHVybCB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF91cmwoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfb2JqZWN0KCdjb250YWN0X3VybCcsJGxhYmVsKTsKICAgICAgICBpZiggJG9iaiApIHJldHVybiAkb2JqLT5nZXRfdmFsdWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcHJlZmVycmVkIHVybCAoaWYgYW55KSB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF91cmwoKQogICAgewogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9vYmplY3QoJ2NvbnRhY3RfdXJsJyk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X3ZhbHVlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVSTCBvYmplY3RzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfdXJsW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF91cmxfb2JqZWN0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfb2JqZWN0c19ieV90eXBlKCdjb250YWN0X3VybCcpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFsbCBvZiB0aGUgdXJsIG9iamVjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX3VybCgkbGFiZWwpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW92ZV9vYmplY3QoJ2NvbnRhY3RfdXJsJywkbGFiZWwpOwogICAgfQoKICAgIC8vIGltIG1ldGhvZHMKCiAgICAvKioKICAgICAqIEFkZCBhbiBJTSBvYmplY3QgdG8gdGhlIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbSAodGhlIElNIHZhbHVlIChpLmU6IGZhY2Vib29rIHVzZXJuYW1lKSkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAgICRwcmVmZXJyZWQKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkX2ltKCRpbSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICRpbSA9IHRyaW0oKHN0cmluZykkaW0pOwogICAgICAgIGlmKCAhJGltICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignSU0gdmFsdWUgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X2ltKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfY29udGFjdCgkaW0pOwogICAgICAgICRvYmotPnNldF9sYWJlbCgkbGFiZWwpOwogICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSAoZmlyc3QpIElNIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbCAoaWYgYW55KQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2ltKCRsYWJlbCkKICAgIHsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfaW0nLCRsYWJlbCk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X3ZhbHVlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHByZWZlcnJlZCBJTSBvYmplY3QgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9pbSgpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9pbScpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFsbCBJTSBvYmplY3RzIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZV9pbSgkbGFiZWwpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW92ZV9vYmplY3QoJ2NvbnRhY3RfaW0nLCRsYWJlbCk7CiAgICB9CgogICAgLy8gcGhvbmUgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGEgcGhvbmUgbnVtYmVyIG9iamVjdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIFRoZSB0eXBlIChvbmUgb2Ygdm9pY2UsbXNnLGZheCxtb2JpbGUscGFnZXIsdmlkZW8sc2F0ZWxsaXRlKQogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZmVycmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfcGhvbmUoJHR5cGUsJHZhbHVlLCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJHR5cGUgPSB0cmltKChzdHJpbmcpJHR5cGUpOwogICAgICAgIGlmKCAhJHR5cGUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdQaG9uZSB0eXBlIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJHZhbHVlID0gdHJpbSgoc3RyaW5nKSR2YWx1ZSk7CiAgICAgICAgaWYoICEkdmFsdWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdWYWx1ZSBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X3Bob25lKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfdHlwZSgkdHlwZSk7CiAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgJG9iai0+c2V0X2xhYmVsKCRsYWJlbCk7CiAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgoYm9vbCkgJHByZWZlcnJlZCk7CiAgICAgICAgJHRoaXMtPmFkZF9vYmplY3QoJG9iaik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgYSBwaG9uZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkZSBsYWJlbCBhbmQgdHlwZS4KICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgZmlyc3Qgc2VhcmNoIHBob25lIG9iamVjdHMgZm9yIHRoZSBzYW1lIGxhYmVsIGFuZCB0eXBlCiAgICAgKiBpZiBhIG1hdGNoIGlzIGZvdW5kLCBpdCdzIHZhbHVlIGFuZCBwcmVmZXJyZWQgZmxhZyBhcmUgdXBkYXRlZC4KICAgICAqIGlmIG5vIG1hdGNoIGlzIGZvdW5kLCBhIG5ldyBvYmplY3QgaXMgY3JlYXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIFRoZSB0eXBlIChvbmUgb2Ygdm9pY2UsbXNnLGZheCxtb2JpbGUscGFnZXIsdmlkZW8sc2F0ZWxsaXRlKQogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZmVycmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbnNlcnRfYWRkX3Bob25lKCR0eXBlLCR2YWx1ZSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICR0eXBlID0gdHJpbSgoc3RyaW5nKSR0eXBlKTsKICAgICAgICBpZiggISR0eXBlICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignUGhvbmUgdHlwZSBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICR2YWx1ZSA9IHRyaW0oKHN0cmluZykkdmFsdWUpOwogICAgICAgIGlmKCAhJHZhbHVlICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignVmFsdWUgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRjbGFzc19uYW1lID0gJ2NvbnRhY3RfcGhvbmUnOwogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAmJG9iaiApIHsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfY2xhc3MoKSAhPSAkY2xhc3NfbmFtZSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF90eXBlKCkgIT0gJHR5cGUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfbGFiZWwoKSAhPSAkbGFiZWwgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgbWF0Y2gKICAgICAgICAgICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIG5vIG1hdGNoZXMgZm91bmQKICAgICAgICAkdGhpcy0+YWRkX3Bob25lKCR0eXBlLCR2YWx1ZSwkbGFiZWwsJHByZWZlcnJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0IHBob25lIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Bob25lX29iamVjdCgkbGFiZWwpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfcGhvbmUnLCRsYWJlbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgZmlyc3QgcGhvbmUgb2JqZWN0IG9mIHRoZSBzcGVjaWZpZWQgdHlwZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9waG9uZV9vYmplY3RfYnlfdHlwZSgkdHlwZSkKICAgIHsKICAgICAgICAkdHlwZSA9IHRyaW0oKHN0cmluZykkdHlwZSk7CiAgICAgICAgaWYoICEkdHlwZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ1R5cGUgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRjbGFzc19uYW1lID0gJ2NvbnRhY3RfcGhvbmUnOwogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAkb2JqICkgewogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF9jbGFzcygpID09ICRjbGFzc19uYW1lICYmICRvYmotPmdldF90eXBlKCkgPT0gJHR5cGUgKSByZXR1cm4gJG9iajsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZmlyc3QgcGhvbmUgbnVtYmVyIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbAogICAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGdldHRpbmcgYSBudW1iZXIsIG5vdGUgdGhlIHR5cGUgaXMgbm90IHJldHVybmVkCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcGhvbmUoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3Bob25lX29iamVjdCgkbGFiZWwpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKCiAgICAvKioKICAgICAqIEdldCB0aGUgZmlyc3QgcGhvbmUgbnVtYmVyIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Bob25lX2J5X3R5cGUoJHR5cGUpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfcGhvbmVfb2JqZWN0X2J5X3R5cGUoJHR5cGUpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBwaG9uZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Bob25lX3R5cGUoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3Bob25lX29iamVjdCgkbGFiZWwpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF90eXBlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0IHByZWZlcnJlZCBwaG9uZSBvYmplY3QgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3Rfc3ViCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJlZmVycmVkX3Bob25lX29iaigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9waG9uZScpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwcmVmZXJyZWQgcGhvbmUgbnVtYmVyIChpZiBhbnkpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wcmVmZXJyZWRfcGhvbmUoKQogICAgewogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9waG9uZV9vYmooKTsKICAgICAgICBpZiggJG9iaiApIHJldHVybiAkb2JqLT5nZXRfdmFsdWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbGwgb2YgdGhlIHBob25lIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9waG9uZV9vYmplY3RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3RzX2J5X3R5cGUoJ2NvbnRhY3RfcGhvbmUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlbW92ZSBhbGwgcGhvbmUgbnVtYmVycyB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfcGhvbmUoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X3Bob25lJywkbGFiZWwpOwogICAgfQoKICAgIC8vIGFkZHJlc3MgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGFuIGFkZHJlc3Mgb2JqZWN0IG1hbnVhbGx5LgogICAgICogQW55IG9mIHRoZSB2YWx1ZXMgbWF5IGJlIGVtcHR5IChleGNlcHQgbGFiZWwpLiAgSG93ZXZlciwgYXQgbGVhc3Qgb25lIHZhbHVlIG11c3QKICAgICAqIGJlIHNwZWNpZmllZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJlZXQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvYm94CiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaXR5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdGF0ZQogICAgICogQHBhcmFtIHN0cmluZyAkemlwCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb3VudHJ5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHBhcmFtIGJvb2wgICAkcHJlZmVycmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfYWRkcmVzcygkc3RyZWV0LCRwb2JveCwkY2l0eSwkc3RhdGUsJHppcCwkY291bnRyeSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICRvYmogPSBuZXcgY29udGFjdF9hZGRyZXNzKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfc3RyZWV0KCRzdHJlZXQpOwogICAgICAgICRvYmotPnNldF9wb2JveCgkcG9ib3gpOwogICAgICAgICRvYmotPnNldF9jaXR5KCRjaXR5KTsKICAgICAgICAkb2JqLT5zZXRfc3RhdGUoJHN0YXRlKTsKICAgICAgICAkb2JqLT5zZXRfemlwKCR6aXApOwogICAgICAgICRvYmotPnNldF9jb3VudHJ5KCRjb3VudHJ5KTsKICAgICAgICAkb2JqLT5zZXRfbGFiZWwoJGxhYmVsKTsKICAgICAgICAkb2JqLT5zZXRfcHJlZmVycmVkKCRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogVXBkYXRlIGFuIGFkZHJlc3Mgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbC4KICAgICAqIElmIG5vIGFkZHJlc3Mgb2JqZWN0IHdpdGggdGhhdCBsYWJlbCBleGlzdHMsIGNyZWF0ZSBhIG5ldyBhZGRyZXNzIHJlY29yZC4KICAgICAqCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyZWV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb2JveAogICAgICogQHBhcmFtIHN0cmluZyAkY2l0eQogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHppcAogICAgICogQHBhcmFtIHN0cmluZyAkY291bnRyeQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICAgJHByZWZlcnJlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5zZXJ0X2FkZF9hZGRyZXNzKCRzdHJlZXQsJHBvYm94LCRjaXR5LCRzdGF0ZSwkemlwLCRjb3VudHJ5LCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGNsYXNzX25hbWUgPSAnY29udGFjdF9hZGRyZXNzJzsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9vYmplY3RzKSAmJiBjb3VudCgkdGhpcy0+X29iamVjdHMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X29iamVjdHMgYXMgJiRvYmogKSB7CiAgICAgICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgIT0gJGNsYXNzX25hbWUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfbGFiZWwoKSAhPSAkbGFiZWwgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgbWF0Y2gKICAgICAgICAgICAgICAgICRvYmotPnNldF9zdHJlZXQoJHN0cmVldCk7CiAgICAgICAgICAgICAgICAkb2JqLT5zZXRfcG9ib3goJHBvYm94KTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9jaXR5KCRjaXR5KTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9zdGF0ZSgkc3RhdGUpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ppcCgkemlwKTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9jb3VudHJ5KCRjb3VudHJ5KTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9sYWJlbCgkbGFiZWwpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgkcHJlZmVycmVkKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbm8gbWF0Y2hlcyBmb3VuZAogICAgICAgICR0aGlzLT5hZGRfYWRkcmVzcygkc3RyZWV0LCRwb2JveCwkY2l0eSwkc3RhdGUsJHppcCwkY291bnRyeSwkbGFiZWwsJHByZWZlcnJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gYWRkcmVzcyB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2FkZHJlc3MoJGxhYmVsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X29iamVjdCgnY29udGFjdF9hZGRyZXNzJywkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBwcmVmZXJyZWQgYWRkcmVzcwogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wcmVmZXJyZWRfYWRkcmVzcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9hZGRyZXNzJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYWxsIG9mIHRoZSBhZGRyZXNzIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfYWRkcmVzc1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfYWRkcmVzc19vYmplY3RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3RzX2J5X3R5cGUoJ2NvbnRhY3RfYWRkcmVzcycpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFsbCBhZGRyZXNzZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX2FkZHJlc3MoJGxhYmVsKQogICAgewogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X2FkZHJlc3MnLCRsYWJlbCk7CiAgICB9CgogICAgLy8gY29vcmRpbmF0ZSBtZXRob2RzCgogICAgLyoqCiAgICAgKiBBZGQgYSBjb29yZGluYXRlIHNldCB0byB0aGUgY29udGFjdCBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0gZmxvYXQgJGxhdCAgTGF0aXR1ZGUgKG11c3QgYmUgYmV0d2VlbiAtMTgwIGFuZCAxODApCiAgICAgKiBAcGFyYW0gZmxvYXQgJGxvbmcgTG9uZ2l0dWRlIChtdXN0IGJlIGJldHdlZW4gLTE4MCBhbmQgMTgwKQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICRwcmVmZXJyZWQKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkX2Nvb3JkcygkbGF0LCRsb25nLCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X2Nvb3JkcygkdGhpcyk7CiAgICAgICAgJG9iai0+c2V0X2xhdCgkbGF0KTsKICAgICAgICAkb2JqLT5zZXRfbG9uZygkbG9uZyk7CiAgICAgICAgJG9iai0+c2V0X2xhYmVsKCRsYWJlbCk7CiAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgoYm9vbCkgJHByZWZlcnJlZCk7CiAgICAgICAgJHRoaXMtPmFkZF9vYmplY3QoJG9iaik7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNvb3JkaW5hdGVzIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbCAoaWYgYW55KQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIGNvbnRhY3Rfc3ViCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29vcmRzKCRsYWJlbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfY29vcmRzJywkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwcmVmZXJyZWQgY29vcmRpbmF0ZXMgb2JqZWN0IChpZiBhbnkpCiAgICAgKgogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9jb29yZHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9vYmplY3QoJ2NvbnRhY3RfY29vcmRzJywkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFueSBjb29yZGluYXRlIG9iamVjdHMgd3RoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfY29vcmRzKCRsYWJlbCkKICAgIHsKICAgICAgICAkdGhpcy0+cmVtb3ZlX2Nvb3JkcygnY29udGFjdF9hZGRyZXNzJywkbGFiZWwpOwogICAgfQoKICAgIC8vIGRhdGUgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGEgZGF0ZSBvYmplY3QgKGJpcnRoZGF5LCBvciBhbm5pdmVyc2FyeSkgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0ZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICAgJHByZWZlcnJlZAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfZGF0ZSgkZGF0ZSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICRvYmogPSBuZXcgY29udGFjdF9kYXRlKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfZGF0ZSgkZGF0ZSk7CiAgICAgICAgJG9iai0+c2V0X2xhYmVsKCRsYWJlbCk7CiAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgoYm9vbCkgJHByZWZlcnJlZCk7CiAgICAgICAgJHRoaXMtPmFkZF9vYmplY3QoJG9iaik7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGRhdGUgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsIChpZiBhbnkpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGF0ZSgkbGFiZWwpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfb2JqZWN0KCdjb250YWN0X2RhdGUnLCRsYWJlbCk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X3QoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcHJlZmVycmVkIGRhdGUgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9kYXRlKCkKICAgIHsKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9wcmVmZXJyZWRfb2JqZWN0KCdjb250YWN0X2RhdGUnKTsKICAgICAgICBpZiggJG9iaiApIHJldHVybiAkb2JqLT5nZXRfdmFsdWUoKTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBHZXQgYWxsIG9mIHRoZSBkYXRlIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfZGF0ZVtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGF0ZV9vYmplY3RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3RzX2J5X3R5cGUoJ2NvbnRhY3RfZGF0ZScpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFueSBkYXRlIG9iamVjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX2RhdGUoJGxhYmVsKQogICAgewogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X2RhdGUnLCRsYWJlbCk7CiAgICB9CgogICAgLy8gY2F0ZWdvcnkgbWV0aG9kcwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRfY2F0ZWdvcnlfaWQoJGNhdCkKICAgIHsKICAgICAgICAkaWQgPSBudWxsOwogICAgICAgIGlmKCBpc19hKCRjYXQsJ1xDR0NvbnRhY3RzXGNhdGVnb3J5JykgKSB7CiAgICAgICAgICAgICRpZCA9ICRjYXRbJ2lkJ107CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoIChpbnQpJGNhdCA+IDAgKSB7CiAgICAgICAgICAgIC8vIGlmIGl0J3MgYSB2YWxpZCBjYXRlZ29yeSwgYWRkIGl0CiAgICAgICAgICAgICRjYXQgPSBjYXRlZ29yeTo6bG9hZCgkY2F0KTsKICAgICAgICAgICAgJGlkID0gJGNhdFsnaWQnXTsKICAgICAgICB9CgogICAgICAgIGlmKCAkaWQgPCAxICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgdGhlIHNwZWNpZmllZCBjYXRlZ29yeScpOwogICAgICAgIHJldHVybiAkaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgdGhlIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRjYXQgKEVpdGhlciBhbiBpbnRlZ2VyIGNhdGVnb3J5IGlkLCBvciBcQ0dDb250YWN0c1xjYXRlb2dyeSBvYmplY3QpCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZF9jYXRlZ29yeSgkY2F0KQogICAgewogICAgICAgICRpZCA9ICR0aGlzLT5fZ2V0X2NhdGVnb3J5X2lkKCRjYXQpOwogICAgICAgIGlmKCAkaWQgPiAwICYmICFpbl9hcnJheSgkaWQsICR0aGlzLT5fY2F0ZWdvcmllcykgKSAkdGhpcy0+X2NhdGVnb3JpZXNbXSA9ICRpZDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbGlzdCBvZiBjYXRlZ29yeSBpZHMgdGhhdCB0aGlzIGNvbnRhY3QgYmVsb25ncyB0byAoaWYgYW55KQogICAgICoKICAgICAqIEByZXR1cm4gaW50W10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXRlZ29yaWVzKCkKICAgIHsKICAgICAgICBpZiggY291bnQoJHRoaXMtPl9jYXRlZ29yaWVzKSApIHJldHVybiAkdGhpcy0+X2NhdGVnb3JpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2YgY2F0ZWdvcnkgb2JqZWN0cyB0aGF0IHRoaXMgY29udGFjdCBiZWxvbmdzIHRvIChpZiBhbnkpCiAgICAgKgogICAgICogQHJldHVybiBcQ0dDb250YWN0c1xjb250YWN0W10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXRlZ29yaWVzX2Z1bGwoKQogICAgewogICAgICAgIGlmKCAhY291bnQoJHRoaXMtPl9jYXRlZ29yaWVzKSApIHJldHVybjsKCiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRpZCApIHsKICAgICAgICAgICAgJG91dFtdID0gY2F0ZWdvcnk6OmxvYWQoJGlkKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZS1hc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBjYXRlZ29yeSBmcm9tIHRoZSBjb250YWN0CiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRjYXQgKEVpdGhlciBhbiBpbnRlZ2VyIGNhdGVnb3J5IGlkLCBvciBcQ0dDb250YWN0c1xjYXRlb2dyeSBvYmplY3QpCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZV9jYXRlZ29yeSgkY2F0KQogICAgewogICAgICAgICRpZCA9ICR0aGlzLT5fZ2V0X2NhdGVnb3J5X2lkKCRjYXQpOwogICAgICAgIGlmKCAkaWQgJiYgaW5fYXJyYXkoJGlkLCAkdGhpcy0+X2NhdGVnb3JpZXMpICkgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRjYXRpZCApIHsKICAgICAgICAgICAgICAgIGlmKCAkaWQgIT0gJGNhdGlkICkgJHRtcFtdID0gJGNhdGlkOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5fY2F0ZWdvcmllcyA9ICR0bXA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSB0aW1lc3RhbXAgb2YgdGhlIHRpbWUgdGhpcyBjb250YWN0IHdhcyBsYXN0IG1vZGlmaWVkLgogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbW9kaWZpZWQoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+Z2V0X2lkKCkgPiAwICkgcmV0dXJuICR0aGlzLT5fZGF0YVsnbW9kaWZpZWQnXTsKICAgIH0KICAgIC8vCiAgICAvLyBqcyBkYXRhCiAgICAvLwoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgY29udGFjdCBvYmplY3QgdG8gYW4gYXJyYXkgc3VpdGFibGUgZm9yIGNvbnZlcnNpb24gdG8ganNvbiBmb3JtYXQKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvX2RhdGEoKQogICAgewogICAgICAgICRvdXQgPSAkdGhpcy0+X2RhdGE7CiAgICAgICAgJG91dFsnY2F0ZWdvcmllcyddID0gJHRoaXMtPl9jYXRlZ29yaWVzOwogICAgICAgICRvdXRbJ29iamVjdHMnXSA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmplY3QgKSB7CiAgICAgICAgICAgICRvdXRbJ29iamVjdHMnXVtdID0gJG9iamVjdC0+dG9fZGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgLy8gbWV0YSBjb250YWlucyBtZXRhIGluZm9ybWF0aW9uLgogICAgICAgICRvdXRbJ21ldGEnXSA9IGFycmF5KCk7CiAgICAgICAgJG91dFsnbWV0YSddWydkaXNwbGF5X25hbWUnXSA9ICR0aGlzLT5nZXRfZGlzcGxheV9uYW1lKCk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQb3B1bGF0ZSB0aGlzIGNvbnRhY3Qgb2JqZWN0IGdpdmVuIGFuIGFycmF5CiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZyb21fZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2lkJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2lkJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydzdGF0dXMnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnc3RhdHVzJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydndWlkJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2d1aWQnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2ZldV91aWQnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnZmV1X3VpZCcpOwogICAgICAgICR0aGlzLT5fZGF0YVsnZnVsbG5hbWUnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnZnVsbG5hbWUnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ25pY2tuYW1lJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ25pY2tuYW1lJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydjb21wYW55J10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2NvbXBhbnknKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3RpdGxlJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ3RpdGxlJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydyb2xlJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ3JvbGUnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ25vdGUnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbm90ZScpOwogICAgICAgICR0aGlzLT5fZGF0YVsnbW9kaWZpZWQnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbW9kaWZpZWQnKTsKICAgICAgICAkdGhpcy0+c2V0X2ltYWdlKFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnaW1hZ2UnKSk7CiAgICAgICAgJHRoaXMtPnNldF9sb2dvKFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbG9nbycpKTsKCiAgICAgICAgJHRoaXMtPl9jYXRlZ29yaWVzID0gYXJyYXkoKTsKICAgICAgICBpZiggaXNzZXQoJGRhdGFbJ2NhdGVnb3JpZXMnXSkgKSAkdGhpcy0+X2NhdGVnb3JpZXMgPSAkZGF0YVsnY2F0ZWdvcmllcyddOwoKICAgICAgICAkdGhpcy0+X29iamVjdHMgPSBhcnJheSgpOwogICAgICAgIGlmKCBpc3NldCgkZGF0YVsnb2JqZWN0cyddKSAmJiBpc19hcnJheSgkZGF0YVsnb2JqZWN0cyddKSAmJiBjb3VudCgkZGF0YVsnb2JqZWN0cyddKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGRhdGFbJ29iamVjdHMnXSBhcyAkb2JqX3JvdyApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJG9ial9yb3dbJ2NsYXNzJ10pICkgY29udGludWU7CiAgICAgICAgICAgICAgICAkY2xhc3NuYW1lID0gIkNHQ29udGFjdHNcXCIuJG9ial9yb3dbJ2NsYXNzJ107CiAgICAgICAgICAgICAgICAkb2JqID0gbnVsbDsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgJG9iaiA9IG5ldyAkY2xhc3NuYW1lKCR0aGlzKTsKICAgICAgICAgICAgICAgICAgICAkb2JqLT5zZXRfZGF0YSgkb2JqX3Jvdyk7CiAgICAgICAgICAgICAgICAgICAgJG9iai0+dmFsaWRhdGUoKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YWRkX29iamVjdCgkb2JqKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhdGNoKCBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24gJGUgKXsKICAgICAgICAgICAgICAgICAgICBpZiggJG9ial9yb3dbJ2NsYXNzJ10gPT0gJ2NvbnRhY3RfbmFtZScgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLwogICAgLy8gYmVnaW4gZGF0YWJhc2UgbWV0aG9kcwogICAgLy8KCiAgICAvKioKICAgICAqIExvYWQgdGhlIHNwZWNpZmllZCBjb250YWN0IG9iamVjdC4KICAgICAqIFRoZSBsb2FkZWQgb2JqZWN0IGlzIGNhY2hlZCBzbyB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdHMgZm9yIHRoYXQgY29udGFjdCB3aWxsIG5vdCBoaXQgdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogQHBhcmFtIGludCAkaWQgVGhlIGNvbnRhY3QgaWQKICAgICAqIEByZXR1cm4gXENHY29udGFjdHNcY29udGFjdAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZsb2FkKCRpZCkKICAgIHsKICAgICAgICAkaWQgPSAoaW50KSRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ludmFsaWQgY29udGFjdCBpZCBzcGVjaWZpZWQnKTsKCiAgICAgICAgaWYoIGlzc2V0KHNlbGY6OiRfY29udGFjdF9jYWNoZVskaWRdKSApIHJldHVybiBzZWxmOjokX2NvbnRhY3RfY2FjaGVbJGlkXTsKCiAgICAgICAgLy8gZ2V0IHRoZSBtYXN0ZXIgcm93CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCxzdGF0dXMsZ3VpZCxmZXVfdWlkLGZ1bGxuYW1lLG5pY2tuYW1lLGNvbXBhbnksdGl0bGUscm9sZSxub3RlLGltYWdlLGxvZ28sbW9kaWZpZWQgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgV0hFUkUgaWQgPSA/JzsKICAgICAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LGFycmF5KCRpZCkpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJHJvdykgKSB0aHJvdyBuZXcgXENtc05vdEZvdW5kRXhjZXB0aW9uKCdDb250YWN0IHdpdGggaWQgJy4kaWQuJyBub3QgZm91bmQnKTsKCiAgICAgICAgLy8gZ2V0IHRoZSBvYmplY3RzCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjb250YWN0X2lkLGNsYXNzLGxhYmVsLHByZWZlcnJlZCx2YWx1ZSBGUk9NICcuQ0dDT05UQUNUU19TVUJfVEJMLicgV0hFUkUgY29udGFjdF9pZCA9ID8gT1JERVIgQlkgY2xhc3MsbGFiZWwnOwogICAgICAgICRyb3dbJ29iamVjdHMnXSA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LGFycmF5KCRpZCkpOwoKICAgICAgICAvLyBnZXQgdGhlIGNhdGVnb3JpZXMKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIERJU1RJTkNUIGNhdF9pZCBGUk9NICcuQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyBXSEVSRSBjb250YWN0X2lkID0gPyc7CiAgICAgICAgJHJvd1snY2F0ZWdvcmllcyddID0gJGRiLT5HZXRDb2woJHF1ZXJ5LGFycmF5KCRpZCkpOwoKICAgICAgICAvLyBwdXQgaXQgYWxsIHRvZ2V0aGVyCiAgICAgICAgJGNvbnRhY3QgPSBuZXcgc2VsZigpOwogICAgICAgICRjb250YWN0LT5mcm9tX2RhdGEoJHJvdyk7CiAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlWyRpZF0gPSAkY29udGFjdDsKICAgICAgICByZXR1cm4gJGNvbnRhY3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2FkIHRoZSBzcGVjaWZpZWQgY29udGVudCBvYmplY3QgKGJ5IHVuaXF1ZSBpZCkKICAgICAqCiAgICAgKiBUaGUgbG9hZGVkIG9iamVjdCBpcyBjYWNoZWQgc28gdGhhdCBzdWJzZXF1ZW50IHJlcXVlc3RzIGZvciB0aGF0IGNvbnRhY3Qgd2lsbCBub3QgaGl0IHRoZSBkYXRhYmFzZQogICAgICogQHBhcmFtIHN0cmluZyAkdWlkIFRoZSBjb250YWN0IHVpZAogICAgICogQHJldHVybiBcQ0dDb250YWN0c1xjb250YWN0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJmxvYWRfYnlfZ3VpZCgkdWlkKQogICAgewogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgV0hFUkUgZ3VpZCA9ID8nOwogICAgICAgICRpZCA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkdWlkKSk7CiAgICAgICAgaWYoICRpZCApIHJldHVybiBzZWxmOjpsb2FkKCRpZCk7CgogICAgICAgIHRocm93IG5ldyBcQ21zTm90Rm91bmRFeGNlcHRpb24oJ0NvbnRhY3Qgd2l0biBndWlkICcuJGlkLicgbm90IGZvdW5kJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBIHF1aWNrIChsaWdodHdlaWdodCkgY29udmVuaWVuY2UgbWV0aG9kIHRvIHRlc3QgaWYgYSBjb250YWN0IHdpdGggdGhlIHNwZWNpZmllZCBpZCBleGlzdHMKICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBmaXJzdCBjaGVja3MgdGhlIGNhY2hlIHRvIHNlZSBpZiB0aGUgb2JqZWN0IGV4aXN0cywgb3RoZXJ3aXNlIGl0IGRvZXMgYSBzaW1sZQogICAgICogcXVlcnkgdG8gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhpc3RzKCRpZCkKICAgIHsKICAgICAgICAkaWQgPSAoaW50KSRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ludmFsaWQgY29udGFjdCBpZCBzcGVjaWZpZWQnKTsKCiAgICAgICAgLy8gaWYgaXQncyBub3QgaW4gb3VyIGNhY2hlLi4uIGRvIGEgcXVpY2sgcXVlcnkKICAgICAgICBpZiggaXNzZXQoc2VsZjo6JF9jb250YWN0X2NhY2hlWyRpZF0pICkgcmV0dXJuIFRSVUU7CgogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgV0hFUkUgaWQgPSA/JzsKICAgICAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCRpZCkpOwogICAgICAgIGlmKCAkdG1wID09ICRpZCApIHJldHVybiBUUlVFOwogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgbWV0aG9kIHRvIHNhdmUgYW4gZXhpc3RpbmcgY29udGFjdCBvYmplY3QgdG8gdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3VwZGF0ZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfaWQoKSA8IDEgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQ2Fubm90IGNhbGwgJy5fX01FVEhPRF9fLicgd2l0aG91dCBhIHZhbGlkIGNvbnRhY3QgaWQnKTsKICAgICAgICBpZiggJHRoaXMtPmdldF9ndWlkKCkgPT0gJycgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQ2Fubm90IGNhbGwgJy5fX01FVEhPRF9fLicgd2l0aG91dCBhIHZhbGlkIGd1aWQnKTsKCiAgICAgICAgJHRoaXMtPl9kYXRhWydtb2RpZmllZCddID0gdGltZSgpOwogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKCiAgICAgICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5DR0NPTlRBQ1RTX1RCTC4nIFNFVCBzdGF0dXMgPSA/LCBmZXVfdWlkID0gPywgZnVsbG5hbWUgPSA/LCBuaWNrbmFtZSA9ID8sIGNvbXBhbnkgPSA/LCB0aXRsZSA9ID8sCiAgICAgICAgICAgICAgICAgICAgICByb2xlID0gPywgbm90ZSA9ID8sIGltYWdlID0gPywgbG9nbyA9ID8sIG1vZGlmaWVkID0gPyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpcy0+X2RhdGFbJ3N0YXR1cyddLCR0aGlzLT5fZGF0YVsnZmV1X3VpZCddLCR0aGlzLT5fZGF0YVsnZnVsbG5hbWUnXSwkdGhpcy0+X2RhdGFbJ25pY2tuYW1lJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnY29tcGFueSddLCR0aGlzLT5fZGF0YVsndGl0bGUnXSwkdGhpcy0+X2RhdGFbJ3JvbGUnXSwkdGhpcy0+X2RhdGFbJ25vdGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpbWFnZSddLCR0aGlzLT5fZGF0YVsnbG9nbyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ21vZGlmaWVkJ10sJHRoaXMtPl9kYXRhWydpZCddKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRVJST1I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CgogICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJy5DR0NPTlRBQ1RTX0FEUl9DQVRTX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoKGludCkkdGhpcy0+X2RhdGFbJ2lkJ10pKTsKICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKCiAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLkNHQ09OVEFDVFNfU1VCX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoKGludCkkdGhpcy0+X2RhdGFbJ2lkJ10pKTsKICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKCiAgICAgICAgICAgIC8vIHNhdmUgY2F0ZWdvcmllcwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9jYXRlZ29yaWVzKSAmJiBjb3VudCgkdGhpcy0+X2NhdGVnb3JpZXMpICkgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyAoY29udGFjdF9pZCwgY2F0X2lkKSBWQUxVRVMgKD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRjYXRpZCApIHsKICAgICAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpcy0+X2RhdGFbJ2lkJ10sJGNhdGlkKSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2F2ZSBvYmplY3RzCiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5DR0NPTlRBQ1RTX1NVQl9UQkwuJyAoY29udGFjdF9pZCwgY2xhc3MsIGxhYmVsLCBwcmVmZXJyZWQsIHZhbHVlKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmplY3QgKSB7CiAgICAgICAgICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXMtPl9kYXRhWydpZCddLCRvYmplY3QtPmdldF9jbGFzcygpLCRvYmplY3QtPmdldF9sYWJlbCgpLCRvYmplY3QtPmlzX3ByZWZlcnJlZCgpLCRvYmplY3QtPmdldF9yYXdfdmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRXJyb3I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRkYi0+Q29tcGxldGVUcmFucygpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQSBtZXRob2QgdG8gc2F2ZSBhIG5ldyBjb250YWN0IG9iamVjdCB0byB0aGUgZGF0YWJhc2UKICAgICAqCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfaW5zZXJ0KCkKICAgIHsKICAgICAgICBpZiggJHRoaXMtPmdldF9pZCgpID4gMCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdDYW5ub3QgY2FsbCAnLl9fTUVUSE9EX18uJyB3aXRoIGEgdmFsaWQgY29udGFjdCBpZCcpOwoKICAgICAgICBpZiggJHRoaXMtPmdldF9ndWlkKCkgPT0gJycgKSAkdGhpcy0+X2RhdGFbJ2d1aWQnXSA9IHV0aWxzOjpjYWxjX2d1aWQoKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ21vZGlmaWVkJ10gPSB0aW1lKCk7CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwoKICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuQ0dDT05UQUNUU19UQkwuJyAoc3RhdHVzLGd1aWQsZmV1X3VpZCxmdWxsbmFtZSxuaWNrbmFtZSxjb21wYW55LHRpdGxlLHJvbGUsbm90ZSxpbWFnZSxsb2dvLG1vZGlmaWVkKSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/KSc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCR0aGlzLT5fZGF0YVsnc3RhdHVzJ10sJHRoaXMtPl9kYXRhWydndWlkJ10sJHRoaXMtPl9kYXRhWydmZXVfdWlkJ10sJHRoaXMtPl9kYXRhWydmdWxsbmFtZSddLCR0aGlzLT5fZGF0YVsnbmlja25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydjb21wYW55J10sJHRoaXMtPl9kYXRhWyd0aXRsZSddLCR0aGlzLT5fZGF0YVsncm9sZSddLCR0aGlzLT5fZGF0YVsnbm90ZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2ltYWdlJ10sJHRoaXMtPl9kYXRhWydsb2dvJ10sJHRoaXMtPl9kYXRhWydtb2RpZmllZCddKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRVJST1I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9ICRkYi0+SW5zZXJ0X0lEKCk7CgogICAgICAgICAgICAvLyBzYXZlIGNhdGVnb3JpZXMKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fY2F0ZWdvcmllcykgJiYgY291bnQoJHRoaXMtPl9jYXRlZ29yaWVzKSApIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNHQ09OVEFDVFNfQURSX0NBVFNfVEJMLicgKGNvbnRhY3RfaWQsIGNhdF9pZCkgVkFMVUVTKD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRjYXRpZCApIHsKICAgICAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpcy0+X2RhdGFbJ2lkJ10sJGNhdGlkKSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2F2ZSBvYmplY3RzCiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5DR0NPTlRBQ1RTX1NVQl9UQkwuJyAoY29udGFjdF9pZCwgY2xhc3MsIGxhYmVsLCBwcmVmZXJyZWQsIHZhbHVlKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmplY3QgKSB7CiAgICAgICAgICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXMtPl9kYXRhWydpZCddLCRvYmplY3QtPmdldF9jbGFzcygpLCRvYmplY3QtPmdldF9sYWJlbCgpLCRvYmplY3QtPmlzX3ByZWZlcnJlZCgpLCRvYmplY3QtPmdldF9yYXdfdmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRXJyb3I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRkYi0+Q29tcGxldGVUcmFucygpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQSBtZXRob2QgdG8gdmFsaWRhdGUgdGhlIGNvbnRhY3Qgb2JqZWN0ICh0eXBpY2FsbHkgdXNlZCBiZWZvcmUgc2F2aW5nIHRoZSBvYmplY3QgdG8gdGhlIGRhdGFiYXNlKQogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHZhbGlkYXRlcyB0aGF0IHRoZXJlIGlzIHNvbWUgc29ydCBvZiBkaXNwbGF5YWJsZSBuYW1lLCBhbmQgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsaWQgb2JqZWN0CiAgICAgKiBleGNlcHRpb25zIGFyZSB0aHJvd24gb24gZXJyb3JzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgLy8gd2UgbmVlZCBzb21lIHNvcnQgb2YgbmFtZSwgYW5kIHNvbWUgc29ydCBvZiBlbWFpbCwgdXJsLCBhZGRyZXNzLCBvciBwaG9uZSBudW1iZXIKICAgICAgICBpZiggJHRoaXMtPmdldF9kaXNwbGF5X25hbWUoKSA9PSAnJykgdGhyb3cgbmV3IFxFeGNlcHRpb24oX19DTEFTU19fLicgb2JqZWN0IGlzIGludmFsaWQgKG5vIG5hbWUgZm91bmQpJyk7CgogICAgICAgIGlmKCBjb3VudCgkdGhpcy0+X29iamVjdHMpID09IDAgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbihfX0NMQVNTX18uJyBvYmplY3QgaXMgaW52YWxpZCAobm8gb2JqZWN0cyBmb3VuZCknKTsKCiAgICAgICAgJHNpbmdsZXMgPSBhcnJheSgpOwogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fb2JqZWN0cyk7ICRpKysgKSB7CiAgICAgICAgICAgICRvYmogPSAkdGhpcy0+X29iamVjdHNbJGldOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJG9iai0+dmFsaWRhdGUoKTsKICAgICAgICAgICAgICAgIGlmKCAhJG9iai0+YWxsb3dzX211bHRpcGxlKCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNsYXNzbmFtZSA9IGdldF9jbGFzcygkb2JqKTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRzaW5nbGVzWyRjbGFzc25hbWVdKSApICRzaW5nbGVzWyRjbGFzc25hbWVdID0gMDsKICAgICAgICAgICAgICAgICAgICAkc2luZ2xlc1skY2xhc3NuYW1lXSsrOwogICAgICAgICAgICAgICAgICAgIGlmKCAkc2luZ2xlc1skY2xhc3NuYW1lXSA+IDEgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQSBjb250YWN0IGNhbiBvbmx5IGhhdmUgb25lIGluc3RhbmNlIG9mIGEgJy4kY2xhc3NuYW1lLicgb2JqZWN0Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgIGlmKCBnZXRfY2xhc3MoJG9iaikgIT0gJ1xcQ0dDb250YWN0c1xcY29udGFjdF9uYW1lJyApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNhdmUgdGhpcyBvYmplY3QgdG8gdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogRmlyc3QgYSB2YWxpZGF0aW9uIGNoZWNrIGlzIHBlcmZvcm1lZCwgdGhlbiBkZXBlbmRpbmcgdXBvbiBpZiB0aGVyZSBpcyBhIHZhbGlkIGNvbnRhY3QgaWQKICAgICAqIGVpdGhlciBhbiB1cGRhdGUsIG9yIGFuIGluc2VydCBpcyBwZXJmb3JtZWQuICBBbGwgc3RhdGljIGNvbnRhY3QgY2FjaGVzIGFyZSBjbGVhcmVkCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCkKICAgIHsKICAgICAgICAvLyBpZiB3ZSBoYXZlIG5vIGZ1bGxuYW1lLi4uIHdlIGNhbGN1bGF0ZSBvbmUKICAgICAgICAkdGhpcy0+dmFsaWRhdGUoKTsKICAgICAgICBpZiggISR0aGlzLT5nZXRfZnVsbG5hbWUoKSApICR0aGlzLT5zZXRfZnVsbG5hbWUoJHRoaXMtPmdldF9kaXNwbGF5X25hbWUoKSk7CgogICAgICAgIGlmKCAkdGhpcy0+Z2V0X2lkKCkgPiAwICkgewogICAgICAgICAgICAkdGhpcy0+X3VwZGF0ZSgpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPl9pbnNlcnQoKTsKICAgICAgICB9CiAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIERlbGV0ZSB0aGlzIGNvbnRhY3Qgb2JqZWN0IGZyb20gdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogVGhlIGNvbnRhY3Qgb2JqZWN0IGlzIGNvbXBsZXRlbHkgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSBjb250YWN0IGlkCiAgICAgKiBpcyBlcmFzZWQsIHNvIHRoYXQgYSBzdWJzZXF1ZW50IHNhdmUgd2lsbCByZXN1bHQgaW4gYSBuZXcgaW5zZXJ0CiAgICAgKiBBZGRpdGlvbmFsbHksIGFsbCBjYWNoZXMgYXJlIGNsZWFyZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpCiAgICB7CiAgICAgICAgJGNpZCA9IChpbnQpJHRoaXMtPmdldF9pZCgpOwogICAgICAgIGlmKCAkY2lkIDwgMSApIHJldHVybjsKCiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKCiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwoKICAgICAgICAgICAgJHEgPSAnREVMRVRFIEZST00gJy5DR0NPTlRBQ1RTX0FEUl9DQVRTX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcSwgYXJyYXkoJGNpZCkpOwogICAgICAgICAgICBpZiggISRkYnIgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignU1FMIEVycm9yOiAnLiRkYi0+c3FsLicgLS0gJy4kZGItPkVycm9yTXNnKCkpOwoKICAgICAgICAgICAgJHEgPSAnREVMRVRFIEZST00gJy5DR0NPTlRBQ1RTX1NVQl9UQkwuJyBXSEVSRSBjb250YWN0X2lkID0gPyc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHEsIGFycmF5KCRjaWQpKTsKICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKCiAgICAgICAgICAgICRxID0gJ0RFTEVURSBGUk9NICcuQ0dDT05UQUNUU19UQkwuJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxLCBhcnJheSgkY2lkKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRXJyb3I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CgogICAgICAgICAgICAkZGItPkNvbXBsZXRlVHJhbnMoKTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZCddID0gbnVsbDsKICAgICAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSBmcm9tIHRoZSBjb250YWN0IGludG8gYSBjZ2VfYWRkcmVzcyBvYmplY3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGNnZV9hZGRyZXNzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2dlX2FkZHJlc3MoKQogICAgewogICAgICAgICRvdXQgPSBuZXcgXGNnZV9hZGRyZXNzOwogICAgICAgICRvdXQtPnNldF9jb21wYW55KCR0aGlzLT5nZXRfY29tcGFueSgpKTsKICAgICAgICAkb3V0LT5zZXRfZW1haWwoJHRoaXMtPmdldF9wcmVmZXJyZWRfZW1haWwoKSk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Z2V0X25hbWUoKTsKICAgICAgICBpZiggaXNfb2JqZWN0KCRuYW1lKSApIHsKICAgICAgICAgICAgJG91dC0+c2V0X2ZpcnN0bmFtZSgkbmFtZS0+Z2V0X2ZpcnN0KCkpOwogICAgICAgICAgICAkb3V0LT5zZXRfbGFzdG5hbWUoJG5hbWUtPmdldF9sYXN0KCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPmdldF9kaXNwbGF5X25hbWUoKTsKICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnICcsJG5hbWUsMyk7CiAgICAgICAgICAgICRvdXQtPnNldF9maXJzdG5hbWUoJHBhcnRzWzBdKTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJ0c1sxXSkgKSAkb3V0LT5zZXRfbGFzdG5hbWUoJHBhcnRzWzFdKTsKICAgICAgICB9CiAgICAgICAgJGFkZHJlc3MgPSAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9hZGRyZXNzKCk7CiAgICAgICAgaWYoIGlzX29iamVjdCgkYWRkcmVzcykgKSB7CiAgICAgICAgICAgICRvdXQtPnNldF9hZGRyZXNzMSgkYWRkcmVzcy0+Z2V0X3N0cmVldCgpKTsKICAgICAgICAgICAgJHBvYm94ID0gJGFkZHJlc3MtPmdldF9wb2JveCgpOwogICAgICAgICAgICBpZiggJHBvYm94ICkgJG91dC0+c2V0X2FkZHJlc3MyKCRwb2JveCAuPSAnUC5PLiBCb3ggJy4kcG9ib3gpOwogICAgICAgICAgICAkb3V0LT5zZXRfY2l0eSgkYWRkcmVzcy0+Z2V0X2NpdHkoKSk7CiAgICAgICAgICAgICRvdXQtPnNldF9jb3VudHJ5KCRhZGRyZXNzLT5nZXRfY291bnRyeSgpKTsKICAgICAgICAgICAgJG91dC0+c2V0X3N0YXRlKCRhZGRyZXNzLT5nZXRfc3RhdGUoKSk7CiAgICAgICAgICAgICRvdXQtPnNldF9wb3N0YWwoJGFkZHJlc3MtPmdldF96aXAoKSk7CiAgICAgICAgfQogICAgICAgICRvdXQtPnNldF9waG9uZSgkdGhpcy0+Z2V0X3ByZWZlcnJlZF9waG9uZSgpKTsKICAgICAgICAkb3V0LT5zZXRfZmF4KCR0aGlzLT5nZXRfcGhvbmVfYnlfdHlwZSgnZmF4JykpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_address.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xNDc3OTk0ODgiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTQ3Nzk5NDg4IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMDUwODc0NDQ3Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEwNTA4NzQ0NDciIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3RfYWRkcmVzcy5waHA8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfYWRkcmVzcyBjbGFzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+Q2xhc3NlczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPlRoaXMgY2xhc3MgZGVmaW5lcyBhIHBoeXNpY2FsIGFkZHJlc3MuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UHJvZHVjdGl2aXR5PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfYWRkcmVzcy5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_address.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfYWRkcmVzcyBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dDb250YWN0cwogKiBAY2F0ZWdvcnkgUHJvZHVjdGl2aXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgcGh5c2ljYWwgYWRkcmVzcy4KICogTXVsdGlwbGUgcGh5c2ljYWwgYWRkcmVzc2VzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LgogKi8KY2xhc3MgY29udGFjdF9hZGRyZXNzIGV4dGVuZHMgY29udGFjdF9zdWIKewogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9kYXRhOwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b3N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtYXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvcm1hdCB0aGUgYWRkcmVzcyBhcyBhIHNpbmdsZSBzdHJpbmcuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZvcm1hdCgpCiAgICB7CiAgICAgICAgJHRtcCA9IGFycmF5X3ZhbHVlcygkdGhpcy0+X2RhdGEpOwogICAgICAgIHJldHVybiBpbXBsb2RlKCJcbiIsJHRtcCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHN0cmVldCBhZGRyZXNzIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9zdHJlZXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWV0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBzdHJpbmcgYWRkcmVzcyBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3N0cmVldCgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnc3RyZWV0J10gPSB0cmltKChzdHJpbmcpICR2YWwpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwb3N0IG9mZmljZSBib3ggcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3BvYm94KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvYm94OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwb3N0IG9mZmljZSBib3ggcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9wb2JveCgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsncG9ib3gnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNpdHkgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NpdHkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2l0eTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgY2l0eSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2NpdHkoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2NpdHknXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHppcC9wb3N0YWwgY29kZSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfemlwKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnppcDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgemlwL3Bvc3RhbCBjb2RlIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfemlwKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd6aXAnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHN0YXRlL3Byb3ZpbmNlIGNvZGUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3N0YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXRlOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBzdGF0ZS9wcm92aW5jZSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3N0YXRlKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydzdGF0ZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY291bnRyeSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY291bnRyeSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb3VudHJ5OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjb3VudHJ5IHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfY291bnRyeSgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnY291bnRyeSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgJGtleSA9IHRyaW0oKHN0cmluZykgJGtleSk7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3N0cmVldCc6CiAgICAgICAgY2FzZSAncG9ib3gnOgogICAgICAgIGNhc2UgJ2NpdHknOgogICAgICAgIGNhc2UgJ3N0YXRlJzoKICAgICAgICBjYXNlICd6aXAnOgogICAgICAgIGNhc2UgJ2NvdW50cnknOgogICAgICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwka2V5KTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgb2JqZWN0IHRvIGEgZmxhdCBhcnJheS4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvX2RhdGEoKQogICAgewogICAgICAgICRvdXQgPSBwYXJlbnQ6OnRvX2RhdGEoKTsKICAgICAgICAkb3V0ID0gYXJyYXlfbWVyZ2UoJG91dCwkdGhpcy0+X2RhdGEpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogVmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QgcHJpb3IgdG8gc2F2aW5nLgogICAgICogQWx0aG91Z2ggdGhlIGZvcm1hdCBvZiBhbiBhZGRyZXNzIGlzIGxvb3NlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIGZpZWxkcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICAqIFRoaXMgbWV0aG9kIHRocm93cyBhbiBleGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgcGFyZW50Ojp2YWxpZGF0ZSgpOwogICAgICAgICRmbmQgPSAwOwogICAgICAgIGZvcmVhY2goICR0aGlzLT5fZGF0YSBhcyAka2V5ID0+ICR2YWx1ZSApIHsKICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICBjYXNlICdzdHJlZXQnOgogICAgICAgICAgICBjYXNlICdwb2JveCc6CiAgICAgICAgICAgIGNhc2UgJ2NpdHknOgogICAgICAgICAgICBjYXNlICdzdGF0ZSc6CiAgICAgICAgICAgIGNhc2UgJ3ppcCc6CiAgICAgICAgICAgIGNhc2UgJ2NvdW50cnknOgogICAgICAgICAgICAgICAgaWYoICR2YWx1ZSAhPSAnJyApICRmbmQrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAkZm5kID09IDAgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBdCBsZWFzdCBzb21lIGRhdGEgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIGFuIGFkZHJlc3Mgb2JqZWN0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJhdyBjb250ZW50IG9mIHRoaXMgb2JqZWN0IHN1aXRhYmxlIGZvciBzYXZpbmcuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9yYXdfdmFsdWUoKQogICAgewogICAgICAgIHJldHVybiBzZXJpYWxpemUoJHRoaXMtPl9kYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdpdmVuIGFuIGFycmF5IG9mIGRhdGEsIGZpbGwgdGhlIG9iamVjdC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgIGlmKCBpc3NldCgkZGF0YVsndmFsdWUnXSkgKSB7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YSA9IHVuc2VyaWFsaXplKCRkYXRhWyd2YWx1ZSddKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBmb3JlYWNoKCAkZGF0YSBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICAgIGNhc2UgJ3N0cmVldCc6CiAgICAgICAgICAgICAgY2FzZSAncG9ib3gnOgogICAgICAgICAgICAgIGNhc2UgJ2NpdHknOgogICAgICAgICAgICAgIGNhc2UgJ3N0YXRlJzoKICAgICAgICAgICAgICBjYXNlICd6aXAnOgogICAgICAgICAgICAgIGNhc2UgJ2NvdW50cnknOgogICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgoKPz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_coords.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS02MjI4MzUxMzQiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtNjIyODM1MTM0IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMTYxODg2NDA2Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTExNjE4ODY0MDYiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3RfY29vcmRzLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9jb29yZHMgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBjbGFzcyB0byByZXByZXNlbnQgYSBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIHBhaXIuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UHJvZHVjdGl2aXR5PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfY29vcmRzLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_coords.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfY29vcmRzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIGNsYXNzIHRvIHJlcHJlc2VudCBhIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgcGFpci4KICovCmNsYXNzIGNvbnRhY3RfY29vcmRzIGV4dGVuZHMgY29udGFjdF9zdWIKewogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9kYXRhOwoKICAgIC8qKgogICAgICogR2V0IHRoZSBsYXRpdHVkZSBvZiB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGZsb2F0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbGF0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxhdDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbG9uZ2l0dWRlIG9mIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb25nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxvbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGxhdGl0dWRlIG9mIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBmbG9hdCAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbGF0KCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IChmbG9hdCkkdmFsOwogICAgICAgIGlmKCAkdmFsIDwgLTE4MC4wIHx8ICR2YWwgPiAxODAuMCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGxhdGl0dWRlIHZhbHVlIGZvciAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgICR0aGlzLT5fZGF0YVsnbGF0J10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBsb25naXR1ZGUgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIGZsb2F0ICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9sb25nKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IChmbG9hdCkkdmFsOwogICAgICAgIGlmKCAkdmFsIDwgLTE4MC4wIHx8ICR2YWwgPiAxODAuMCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGxvbmdpdHVkZSB2YWx1ZSBmb3IgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2xvbmcnXSA9ICR2YWw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgka2V5KQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdsYXQnOgogICAgICAgICAgICByZXR1cm4gY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdsYXQnKTsKCiAgICAgICAgY2FzZSAnbG9uZyc6CiAgICAgICAgICAgIHJldHVybiBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2xvbmcnKTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICR0aGlzLT5sYXQgPT0gJycgfHwgJHRoaXMtPmxvbmcgPT0gJycgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdJbnZhbGlkIGNvb3JkaW5hdGVzIHNwZWNpZmllZCcpOwogICAgfQoKICAgIC8qKgogICAgICogRmlsbCB0aGlzIG9iamVjdCBmcm9tIGFuIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICBwYXJlbnQ6OnNldF9kYXRhKCRkYXRhKTsKICAgICAgICAkdGhpcy0+X2RhdGEgPSB1bnNlcmlhbGl6ZSgkZGF0YVsndmFsdWUnXSk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_creator.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xNDMxOTYzMTg4Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTE0MzE5NjMxODgiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTEyMDIxNjA5NTAiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTIwMjE2MDk1MCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGZpbGUiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPjwvc21hbGw+Y2xhc3MuY29udGFjdF9jcmVhdG9yLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPkRlZmluaXRpb24gZm9yIHRoZSBjb250YWN0X2NyZWF0b3IgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBhc3NvY2lhdGluZyBhIGNyZWF0b3IgcHJvZXBydHkgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UHJvZHVjdGl2aXR5PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfY3JlYXRvci5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_creator.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9jcmVhdG9yIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBhc3NvY2lhdGluZyBhIGNyZWF0b3IgcHJvZXBydHkgd2l0aCBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X2NyZWF0b3IgZXh0ZW5kcyBcQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZSB7fQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_dailywage.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS00ODU2MjMyODgiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtNDg1NjIzMjg4IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMDI5MDA4NDAyIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEwMjkwMDg0MDIiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3RfZGFpbHl3YWdlLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgdXRpbHMgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBzaW1wbGUgY2xhc3MgdG8gYWxsb3cgc3RvcmluZyBhIGRhaWx5IHdhZ2UgKGEgbnVtYmVyKSB3aXRoIGEgY29udGFjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Qcm9kdWN0aXZpdHk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPmNhbGd1eTEwMDAgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Db3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGw8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+PC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9kYWlseXdhZ2UucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_dailywage.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBzdG9yaW5nIGEgZGFpbHkgd2FnZSAoYSBudW1iZXIpIHdpdGggYSBjb250YWN0LgogKi8KY2xhc3MgY29udGFjdF9kYWlseXdhZ2UgZXh0ZW5kcyBcQ0dDb250YWN0c1xjb250YWN0X3NpbmdsZV92YWx1ZSB7fQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_date.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0yMDkzMzk1MDgwIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTIwOTMzOTUwODAiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE2MDQ5ODUyODkiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTYwNDk4NTI4OSIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGZpbGUiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPjwvc21hbGw+Y2xhc3MuY29udGFjdF9kYXRlLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9kYXRlIGNsYXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5DbGFzc2VzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyByZXByZXNlbnRzIGEgZGF0ZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlByb2R1Y3Rpdml0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X2RhdGUucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_date.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfZGF0ZSBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dDb250YWN0cwogKiBAY2F0ZWdvcnkgUHJvZHVjdGl2aXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgZGF0ZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LgogKiBUaGUgY29udGFjdCBjYW4gbWFuYWdlIG11bHRpcGxlIGRhdGVzLgogKgogKiBUaGlzIGNsYXNzIGlzIHN1YmplY3QgdG8gY2hhbmdlIGFzIENHQ29udGFjdHMgYmVnaW5zIHRvIHN1cHBvcnQgZGF0ZXMuCiAqLwpjbGFzcyBjb250YWN0X2RhdGUgZXh0ZW5kcyBjb250YWN0X3NpbXBsZV92YWx1ZQp7CiAgICAvKioKICAgICAqIEdldCB0aGUgZGF0ZSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RhdGUoKQogICAgewogICAgICAgIHJldHVybiBwYXJlbnQ6OmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkYXRlIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2RhdGUoJHZhbCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnNldF92YWx1ZSgkdmFsKTsKICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_email.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xNzI0NzkyNzMwIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTE3MjQ3OTI3MzAiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTkyNzI2NzcwNiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS05MjcyNjc3MDYiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3RfZW1haWwucGhwPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+VGhlIGRlZmluaXRpb24gZm9yIHRoZSBjb250YWN0X2VtYWlsIGNsYXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5DbGFzc2VzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BIGNsYXNzIHRvIHJlcHJlc250IGFuIGVtYWlsIG9iamVjdCB3aXRoaW4gYSBjb250YWN0LjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlByb2R1Y3Rpdml0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X2VtYWlsLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_email.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfZW1haWwgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY2xhc3MgdG8gcmVwcmVzbnQgYW4gZW1haWwgb2JqZWN0IHdpdGhpbiBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X2VtYWlsIGV4dGVuZHMgY29udGFjdF9zaW1wbGVfdmFsdWUKewogICAgLyoqCiAgICAgKiBHZXQgdGhlIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmplY3QuCiAgICAgKiBUaGlzIGlzIGFuIGFsaWFzIGZvciB0aGUgZ2V0X3ZhbHVlKCkgbWV0aG9kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfYWRkcmVzcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIG9iamVjdC4KICAgICAqIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHRoZSBzZXRfdmFsdWUoKSBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfYWRkcmVzcygkdmFsKQogICAgewogICAgICAgICR0aGlzLT5zZXRfdmFsdWUoJHZhbCk7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_name.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMjg3Mzg5MzYwIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEyODczODkzNjAiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE3NzY3OTQ1NTIiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTc3Njc5NDU1MiIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGZpbGUiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPjwvc21hbGw+Y2xhc3MuY29udGFjdF9uYW1lLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9waG9uZV92YWx1ZSBjbGFzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+Q2xhc3NlczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPkEgY2xhc3MgdG8gcmVwcmVzZW50IGEgbmFtZS48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Qcm9kdWN0aXZpdHk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPmNhbGd1eTEwMDAgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Db3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGw8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+PC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9uYW1lLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_name.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcGhvbmVfdmFsdWUgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY2xhc3MgdG8gcmVwcmVzZW50IGEgbmFtZS4KICogQSBuYW1lIGNvbnNpc3RzIG9mIGEgcHJlZml4LCBhIGZpcnN0LCBtaWRkbGUsIGFuZCBsYXN0IHBhcnQsIGFuZCBhIHN1ZmZpeC4KICogT25seSBvbmUgbmFtZSBvYmplY3QgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X25hbWUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGE7CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHByZWZpeCBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJlZml4KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByZWZpeDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgcHJlZml4IHBvcnRpb24gb2YgdGhlIG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfcHJlZml4KCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydwcmVmaXgnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0bmFtZSBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZmlyc3QoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Zmlyc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGZpcnN0bmFtZSBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2ZpcnN0KCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydmaXJzdCddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlkZGxlIHBvcnRpb24gb2YgdGhlIG5hbWUuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9taWRkbGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bWlkZGxlOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBtaWRkbGUgcG9ydGlvbiBvZiB0aGUgbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9taWRkbGUoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ21pZGRsZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbGFzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXN0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBsYXN0IHBvcnRpb24gb2YgdGhlIG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbGFzdCgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnbGFzdCddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbmFtZSBzdWZmaXguCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9zdWZmaXgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3VmZml4OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBuYW1lIHN1ZmZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9zdWZmaXgoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3N1ZmZpeCddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbmFtZSBmb3JtYXR0ZWQgaW4gYSBkaXNwbGF5YWJsZSBmb3JtYXQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9mb3JtYXR0ZWQoKQogICAgewogICAgICAgICRkYXRhID0gJHRoaXMtPl9kYXRhOwogICAgICAgIGlmKCAkZGF0YVsnbWlkZGxlJ10gJiYgIWVuZHN3aXRoKCRkYXRhWydtaWRkbGUnXSwnLicpICkgICRkYXRhWydtaWRkbGUnXSAuPSAnLic7CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJyAnLCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgJGtleSA9IHRyaW0oKHN0cmluZykka2V5KTsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAncHJlZml4JzoKICAgICAgICBjYXNlICdmaXJzdCc6CiAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICBjYXNlICdsYXN0JzoKICAgICAgICBjYXNlICdzdWZmaXgnOgogICAgICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwka2V5KTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsb3dzX211bHRpcGxlKCkKICAgIHsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXByZXNlbnQgdGhpcyBvYmplY3QgYXMgYW4gYXJyYXkuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9fZGF0YSgpCiAgICB7CiAgICAgICAgJG91dCA9IHBhcmVudDo6dG9fZGF0YSgpOwogICAgICAgICRvdXQgPSBhcnJheV9tZXJnZSgkb3V0LCR0aGlzLT5fZGF0YSk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBWYWxpZGF0ZSB0aGlzIG9iamVjdC4KICAgICAqIFVwb24gZXJyb3IsIHRoaXMgbWV0aG9kIHRocm93cyBleGNlcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGUoKQogICAgewogICAgICAgIHBhcmVudDo6dmFsaWRhdGUoKTsKCiAgICAgICAgJGZuZCA9IDA7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9kYXRhIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICBjYXNlICdwcmVmaXgnOgogICAgICAgICAgICBjYXNlICdmaXJzdCc6CiAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6CiAgICAgICAgICAgIGNhc2UgJ2xhc3QnOgogICAgICAgICAgICBjYXNlICdzdWZmaXgnOgogICAgICAgICAgICAgICAgaWYoICR2YWwgIT0gJycgKSAkZm5kKys7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiggJGZuZCA9PSAwICkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coJ25vIHZhbGlkIG5hbWUgYXQgJy5fX01FVEhPRF9fKTsKICAgICAgICAgICAgZGVidWdfYnRfdG9fbG9nKCk7CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0F0IGxlYXN0IHNvbWUgZGF0YSBtdXN0IGJlIHNwZWNpZmllZCBmb3IgYSBuYW1lIG9iamVjdCcpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgdmFsdWUgb2YgdGhpcyBvYmplY3QgaW4gYSBmb3JtIHRoYXQgY2FuIGJlIHNhdmVkIHRvIHRoZSBkYXRhYmFzZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Jhd192YWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZSgkdGhpcy0+X2RhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogRmlsbCB0aGlzIG9iamVjdCBmcm9tIGFuIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2RhdGEoJGRhdGEpCiAgICB7CiAgICAgICAgcGFyZW50OjpzZXRfZGF0YSgkZGF0YSk7CiAgICAgICAgaWYoIGlzc2V0KCRkYXRhWyd2YWx1ZSddKSApIHsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhID0gdW5zZXJpYWxpemUoJGRhdGFbJ3ZhbHVlJ10pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZm9yZWFjaCggJGRhdGEgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICAgICAgY2FzZSAncHJlZml4JzoKICAgICAgICAgICAgICAgIGNhc2UgJ2ZpcnN0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6CiAgICAgICAgICAgICAgICBjYXNlICdsYXN0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ3N1ZmZpeCc6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_pagination.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMDYyMTg0NTg1Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEwNjIxODQ1ODUiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTEwNzk3NzE1MjMiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTA3OTc3MTUyMyIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGZpbGUiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPjwvc21hbGw+Y2xhc3MuY29udGFjdF9wYWdpbmF0aW9uLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9wYWdpbmF0aW9uIGNsYXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5DbGFzc2VzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyBtYWtlcyBpdCBlYXN5IHRvIGdlbmVyYXRlIGEgcGFnaW5hdGlvbiB1c2VyIGludGVyZmFjZSB0byBzY3JvbGwgdGhyb3VnaCBwYWdlcyBvZiByZXN1bHRzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcXVlcnkuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VXRpbGl0aWVzPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfcGFnaW5hdGlvbi5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_pagination.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcGFnaW5hdGlvbiBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dDb250YWN0cwogKiBAY2F0ZWdvcnkgVXRpbGl0aWVzCiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyBtYWtlcyBpdCBlYXN5IHRvIGdlbmVyYXRlIGEgcGFnaW5hdGlvbiB1c2VyIGludGVyZmFjZSB0byBzY3JvbGwgdGhyb3VnaCBwYWdlcyBvZiByZXN1bHRzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcXVlcnkuCiAqLwpmaW5hbCBjbGFzcyBjb250YWN0X3BhZ2luYXRpb24gZXh0ZW5kcyBcQ0dFeHRlbnNpb25zXHF1ZXJ5XHBhZ2luYXRpb24KewogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RvcgogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0X3Jlc3VsdHNldCAkcnMgVGhlIHJlc3VsdHNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNvbnRhY3RfcmVzdWx0c2V0ICYkcnMpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkcnMpOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_phone.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xNzEzMjk3Mzg4Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTE3MTMyOTczODgiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE2NjEyODczNDciPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTY2MTI4NzM0NyIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGZpbGUiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPjwvc21hbGw+Y2xhc3MuY29udGFjdF9waG9uZS5waHA8L2gxPgogICAgICAgICAgICAgICAgICAgIDxwPjxlbT5UaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcGhvbmVfdmFsdWUgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPkEgcGhvbmUgbnVtYmVyIGhhcyBhIHR5cGUsIGFzIHdlbGwgYXMgYSBsYWJlbCBhbmQgdmFsdWUuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UHJvZHVjdGl2aXR5PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfcGhvbmUucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_phone.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcGhvbmVfdmFsdWUgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgcGhvbmUgbnVtYmVyIGhhcyBhIHR5cGUsIGFzIHdlbGwgYXMgYSBsYWJlbCBhbmQgdmFsdWUuCiAqIFRoZSB0eXBlIGlzIGJhc2VkIG9uIFZDQVJEIDMuMCBzcGVjaWZpY2F0aW9ucy4KICovCmNsYXNzIGNvbnRhY3RfcGhvbmUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICBjb25zdCBUWVBFX1ZPSUNFICA9ICd2b2ljZSc7CiAgICBjb25zdCBUWVBFX01TRyAgICA9ICdtc2cnOwogICAgY29uc3QgVFlQRV9GQVggICAgPSAnZmF4JzsKICAgIGNvbnN0IFRZUEVfTU9CSUxFID0gJ21vYmlsZSc7CiAgICBjb25zdCBUWVBFX1BBR0VSICA9ICdwYWdlcic7CiAgICBjb25zdCBUWVBFX1ZJREVPICA9ICd2aWRlbyc7CiAgICBjb25zdCBUWVBFX1NBVCAgICA9ICdzYXRlbGxpdGUnOwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfZGF0YSA9IGFycmF5KCk7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Rvc3RyaW5nKCkKICAgIHsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDb250YWN0cycpOwogICAgICAgICRrZXkgPSAncGhvbmVfJy4kdGhpcy0+Z2V0X3R5cGUoKTsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF92YWx1ZSgpLicgKCcuJG1vZC0+TGFuZygka2V5KS4nKSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RvcgogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0ICRwYXJlbnQgVGhlIGNvbnRhY3QgdGhhdCB0aGlzIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdpdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChjb250YWN0ICYkcGFyZW50KSB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkcGFyZW50KTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3R5cGUnXSA9IHNlbGY6OlRZUEVfVk9JQ0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhpcyBwaG9uZSBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF90eXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwndHlwZScpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSB0eXBlIG9mIHRoaXMgcGhvbmUgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3R5cGUoJHZhbCkKICAgIHsKICAgICAgICAkdmFsID0gdHJpbSgoc3RyaW5nKSR2YWwpOwogICAgICAgIGlmKCAhJHZhbCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdpbnZhbGlkIHR5cGUgZm9yICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd0eXBlJ10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSAocGhvbmUgbnVtYmVyKSBmb3IgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF92YWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ3ZhbHVlJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHZhbHVlIChwaG9uZSBudW1iZXIpIGZvciB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF92YWx1ZSgkdmFsKQogICAgewogICAgICAgICR2YWwgPSB0cmltKChzdHJpbmcpJHZhbCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJHZhbDsKICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogSWYgYW4gZXJyb3Igb2NjdXJzLCB0aGlzIG1ldGhvZCB0aHJvd3MgZXhjZXB0aW9ucy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfdHlwZSgpID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTm8gdHlwZSBmb3IgcGhvbmUgb2JqZWN0Jyk7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfdmFsdWUoKSA9PSAnJyApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ05vIHZhbHVlIGZvciBwaG9uZSBvYmplY3QnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcmF3IHZhbHVlIG9mIHRoaXMgb2JqZWN0IHN1aXRhYmxlIGZvciBzYXZpbmcgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmF3X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VyaWFsaXplKCR0aGlzLT5fZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhpcyBvYmplY3QgcmVwcmVzZW50YWQgYXMgYW4gYXJyYXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b19kYXRhKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50Ojp0b19kYXRhKCk7CiAgICAgICAgJG91dFsndmFsdWUnXSA9ICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgICAgICAkb3V0Wyd0eXBlJ10gPSAkdGhpcy0+Z2V0X3R5cGUoKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbGwgdGhpcyBvYmplY3QgZnJvbSBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgIGlmKCBpc3NldCgkZGF0YVsndmFsdWUnXSkgKSB7CiAgICAgICAgICAgICR0bXAgPSBAdW5zZXJpYWxpemUoJGRhdGFbJ3ZhbHVlJ10pOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGEgPSAkdG1wOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJGRhdGFbJ3ZhbHVlJ107CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ3R5cGUnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwndHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_query.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMDc0NDEwNTU4Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEwNzQ0MTA1NTgiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTc2NzM3NzY5OCI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS03NjczNzc2OTgiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3RfcXVlcnkucGhwPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+VGhlIGRlZmluaXRpb24gZm9yIHRoZSBjb250YWN0X3F1ZXJ5IGNsYXNzLjwvZW0+PC9wPgogICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5DbGFzc2VzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5UaGlzIGNsYXNzIGNvbnRhaW5zIGFsbCBvZiB0aGUgcGFyYW1ldGVycyByZXF1aXJlZCB0byBjb2xsZWN0IGEgc2VyaWVzIG9mIGNvbnRhY3RzIG1hdGNoaW5nIGEgY3JpdGVyaWEuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VXRpbGl0aWVzPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfcXVlcnkucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_query.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcXVlcnkgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFV0aWxpdGllcwogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIFRoaXMgY2xhc3MgY29udGFpbnMgYWxsIG9mIHRoZSBwYXJhbWV0ZXJzIHJlcXVpcmVkIHRvIGNvbGxlY3QgYSBzZXJpZXMgb2YgY29udGFjdHMgbWF0Y2hpbmcgYSBjcml0ZXJpYS4KICoKICogQHByb3BlcnR5IGludFtdICRpZGxpc3QgQXJyYXkgb2YgaW50ZWdlciBpZHMgdG8gcmV0dXJuLiAgSWYgc2V0LCB0aGUgbmFtZSwgZnVsbG5hbWUsIGNhdGVnb3J5LCBhbmQgY2F0Y2hpbGRyZW4gcHJvcGVydGllcyBhcmUgcmVzZXQuCiAqIEBwcm9wZXJ0eSBpbnQgJGxpbWl0IFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWNvcmRzIHRvIHJldHVybi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUwMC4KICogQHByb3BlcnR5IGludCAkb2Zmc2V0IFRoZSBzdGFydCBwb3NpdGlvbiB3aXRoaW4gdGhlIG1hdGNoZWQgdmFsdWVzIHRvIHJldHVybi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAKICogQHByb3BlcnR5IHN0cmluZyAkc29ydGJ5IFRoZSBjb2x1bW4gdG8gc29ydCBvbi4gIFBvc3NpYmxlIHZhbHVlcyBhcmU6IG1vZGlmaWVkLGZ1bGxuYW1lLG5pY2tuYW1lLGRpc3BsYXlfbmFtZSx0aXRsZSxjb21wYW55LHJvbGUuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBtb2RpZmllZC4KICogQHByb3BlcnR5IHN0cmluZyAkc29ydG9yZGVyIFRoZSBzb3J0IG9yZGVyLiAgUG9zc2libGUgdmFsdWVzIGFyZSBBU0MgYW5kIERFU0MuICBEZWZhdWx0IHZhbHVlIGlzICdBU0MnOwogKiBAcHJvZXBydHkgc3RyaW5nICRuYW1lIFNlYXJjaCBvbiBuYW1lIChvciBwYXJ0cyBvZiBhIG5hbWUpLiAgV2lsZGNhcmQgY2hhcmFjdGVycyBhcmUgYWNjZXB0ZWQuICBJZiBzZXQsIHRoZSBpZGxpc3QgYW5kIGZ1bGxuYW1lIHByb3BlcnRpZXMgYXJlIHJlc2V0LgogKiBAcHJvcGVydHkgc3RyaW5nICRjYXRlZ29yeSBBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzLCBvciBpZHMgdG8gZmlsdGVyIHVwb24uCiAqIEBwcm9wZXJ0eSBpbnQgJG1vZGlmaWVkX3NpbmNlIEZpbHRlciBhbGwgY29udGFjdHMgdGhhdCB3ZXJlIGxhc3QgbW9kaWZpZWQgYWZ0ZXIgdGhpcyB1bml4IHRpbWVzdGFtcC4KICogQHByb3BlcnR5IHN0cmluZyBwcm9wY2xhc3NbMC05XQogKiBAcHJvcGVydHkgc3RyaW5nIHByb3B2YWxbMC05XQogKiBAcHJvcGVydHkgYm9vbCAkY2F0Y2hpbGRyZW4gT3B0aW9uYWxseSBpbmNsdWRlLCBvciBleGNsdWRlIHRoZSBjaGlsZHJlbiBjYXRlZ29yaWVzIG9mIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcmllcyBmcm9tIHRoZSByZXN1bHRzLiAgRGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS4KICovCmZpbmFsIGNsYXNzIGNvbnRhY3RfcXVlcnkgZXh0ZW5kcyBcQ0dFeHRlbnNpb25zXHF1ZXJ5XHF1ZXJ5CnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfZGF0YSA9IGFycmF5KCdtb2RpZmllZF9zaW5jZSc9Pm51bGwsJ2lkbGlzdCc9Pm51bGwsJ2xpbWl0Jz0+NTAwLCdvZmZzZXQnPT4wLCdzb3J0YnknPT4nZnVsbG5hbWUnLCdzb3J0b3JkZXInPT4nYXNjJywnY2F0ZWdvcnknPT5udWxsLCdjYXRjaGlsZHJlbic9Pm51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdmZXVfdWlkJz0+bnVsbCwnbmFtZSc9Pm51bGwsJ2Z1bGxuYW1lJz0+bnVsbCwncHJvcHMnPT5hcnJheSgpLCd1c2VsaWtlJz0+ZmFsc2UpOwoKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJtcyBBbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwYXJtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgZm9yZWFjaCggJHBhcm1zIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgaWYoICFpbl9hcnJheSgka2V5LGFycmF5X2tleXMoJHRoaXMtPl9kYXRhKSkgKSBjb250aW51ZTsgLy8gaWdub3JlIHVua25vd25zCiAgICAgICAgICAgICR0aGlzWyRrZXldID0gJHZhbDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRHZXQoJGtleSkKICAgIHsKICAgICAgICBpZiggYXJyYXlfa2V5X2V4aXN0cygka2V5LCR0aGlzLT5fZGF0YSkgKSByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0U2V0KCRrZXksJHZhbHVlKQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZGxpc3QnOgogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbHVlKSAmJiBjb3VudCgkdmFsdWUpICkgewogICAgICAgICAgICAgICAgLy8gY2xlYW4gdXAgdGhlIGlkbGlzdAogICAgICAgICAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdmFsdWUgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICAkb25lID0gKGludCkgJG9uZTsKICAgICAgICAgICAgICAgICAgICAkdG1wW10gPSAkb25lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRtcCA9IGFycmF5X3VuaXF1ZSgkdG1wKTsKICAgICAgICAgICAgICAgIGlmKCBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVska2V5XSA9ICR0bXA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyduYW1lJ10gPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2NhdGVnb3J5J10gPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2NhdGNoaWxkcmVuJ10gPSBudWxsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAndXNlbGlrZSc6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IGNtc190b19ib29sKCR2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdtb2RpZmllZF9zaW5jZSc6CiAgICAgICAgICAgIGlmKCAhJHZhbHVlICkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gc3RydG90aW1lKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZnVsbG5hbWUnOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKCR2YWx1ZSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnbmFtZSddID0gbnVsbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKCR2YWx1ZSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnZnVsbG5hbWUnXSA9IG51bGw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdmZXVfdWlkJzoKICAgICAgICAgICAgJHZhbHVlID0gKGludCkgJHZhbHVlOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdjYXRlZ29yeSc6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdjYXRjaGlsZHJlbic6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IFxjZ2VfdXRpbHM6OnRvX2Jvb2woJHZhbHVlKTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdsaW1pdCc6CiAgICAgICAgICAgICR2YWx1ZSA9IG1heCgxLG1pbigxMDAwLChpbnQpJHZhbHVlKSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ29mZnNldCc6CiAgICAgICAgICAgICR2YWwgPSBtYXgoMCxtaW4oOTAwMDAwMCwoaW50KSR2YWx1ZSkpOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdzb3J0YnknOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKHN0cnRvbG93ZXIoJHZhbHVlKSk7CiAgICAgICAgICAgIHN3aXRjaCggJHZhbHVlICkgewogICAgICAgICAgICBjYXNlICdtb2RpZmllZCc6CiAgICAgICAgICAgIGNhc2UgJ2Z1bGxuYW1lJzoKICAgICAgICAgICAgY2FzZSAnbmlja25hbWUnOgogICAgICAgICAgICBjYXNlICdkaXNwbGF5X25hbWUnOiAvLyBzcGVjaWFsIHZhbHVlCiAgICAgICAgICAgIGNhc2UgJ3RpdGxlJzoKICAgICAgICAgICAgY2FzZSAnY29tcGFueSc6CiAgICAgICAgICAgIGNhc2UgJ3JvbGUnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignSW52YWxpZCBzb3J0YnkgdmFsdWUgJy4kdmFsdWUuJyBmb3IgJy5fX0NMQVNTX18pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdzb3J0b3JkZXInOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKHN0cnRvdXBwZXIoJHZhbHVlKSk7CiAgICAgICAgICAgIHN3aXRjaCggJHZhbHVlICkgewogICAgICAgICAgICBjYXNlICdBU0MnOgogICAgICAgICAgICBjYXNlICdERVNDJzoKICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ludmFsaWQgc29ydG9yZGVyIHZhbHVlICcuJHZhbHVlLicgZm9yICcuX19DTEFTU19fKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoJGtleSwncHJvcGNsYXNzJykgfHwgc3RhcnRzd2l0aCgka2V5LCdwcm9wdmFsJykgfHwgc3RhcnRzd2l0aCgka2V5LCdwcm9wbGFiZWwnKSApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVsncHJvcHMnXVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCRrZXkuJyBpcyBub3QgYSB2YWxpZCBwcm9wZXJ0eSBmb3IgYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCRrZXkpCiAgICB7CiAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRVbnNldCgka2V5KQogICAgewogICAgICAgIC8vIGRvIG5vdGhpbmcKICAgIH0KCiAgICAvKioKICAgICAqIEV4ZWN1dGUgdGhlIHF1ZXJ5LgogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9yZXN1bHRzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uICZleGVjdXRlKCkKICAgIHsKICAgICAgICAkcnMgPSBuZXcgY29udGFjdF9yZXN1bHRzZXQoJHRoaXMpOwogICAgICAgIHJldHVybiAkcnM7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_resultset.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xNzAyODE0NDY0Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTE3MDI4MTQ0NjQiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTg3OTYyMjg0OSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS04Nzk2MjI4NDkiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3RfcmVzdWx0c2V0LnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9yZXN1bHRzZXQgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSByZXN1bHRzIG9mIGEgcXVlcnkgZnJvbSBjb250YWN0X3F1ZXJ5LjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlV0aWxpdGllczwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3Jlc3VsdHNldC5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_resultset.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcmVzdWx0c2V0IGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBVdGlsaXRpZXMKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYSBxdWVyeSBmcm9tIGNvbnRhY3RfcXVlcnkuCiAqLwpmaW5hbCBjbGFzcyBjb250YWN0X3Jlc3VsdHNldCBleHRlbmRzIFxDR0V4dGVuc2lvbnNccXVlcnlccmVzdWx0c2V0CnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfcHJlbG9hZGVkX2NhdHM7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9wcmVsb2FkZWRfb2JqZWN0czsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX3ByZWxvYWRlZF9jb250YWN0czsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0X3F1ZXJ5ICRxdWVyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY29udGFjdF9xdWVyeSAkcXVlcnkpCiAgICB7CiAgICAgICAgJHRoaXMtPl9maWx0ZXIgPSAkcXVlcnk7CiAgICAgICAgJHRoaXMtPl9xdWVyeSgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBxdWVyeSB1c2VkIHRvIGNvbnN0cnVjdCB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfcXVlcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uICZnZXRfcXVlcnkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2ZpbHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9xdWVyeSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm47CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgU1FMX0NBTENfRk9VTkRfUk9XUyAlY29scyUgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgQyAnOwogICAgICAgICRjb2xzID0gYXJyYXkoJ0MuaWQnKTsKICAgICAgICAkd2hlcmUgPSBhcnJheSgpOwogICAgICAgICRqb2lucyA9IGFycmF5KCk7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAkdXNlbGlrZSA9IFxjZ2VfcGFyYW06OmdldF9ib29sKCR0aGlzLT5fZmlsdGVyLCd1c2VybGlrZScpOwoKICAgICAgICBpZiggKCRpZGxpc3QgPSAkdGhpcy0+X2ZpbHRlclsnaWRsaXN0J10pICkgewogICAgICAgICAgICAkc3RyID0gJygnLmltcGxvZGUoJywnLCRpZGxpc3QpLicpJzsKICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5pZCBJTiAnLiRzdHI7CiAgICAgICAgfQoKICAgICAgICBpZiggJHRoaXMtPl9maWx0ZXJbJ25hbWUnXSApIHsKICAgICAgICAgICAgLy8gbmFtZSBhdXRvbWF0aWNhbGx5IHVzZXMgbGlrZQogICAgICAgICAgICAkc3RyID0gdHJpbSgkdGhpcy0+X2ZpbHRlclsnbmFtZSddKTsKICAgICAgICAgICAgaWYoIHN0cmxlbigkc3RyKSA+IDEgKSB7CiAgICAgICAgICAgICAgICAvLyBtaW5pbXVtIDIgY2hhcmFjdGVycywgY2FuIG5vdyB1c2UgbGlrZSBleHByZXNzaW9uLgogICAgICAgICAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkc3RyID0gIiV7JHN0cn0lIjsKICAgICAgICAgICAgICAgICR0bXBbXSA9ICdDLmZ1bGxuYW1lIExJS0UgPyc7CiAgICAgICAgICAgICAgICAkdG1wW10gPSAnQy5uaWNrbmFtZSBMSUtFID8nOwogICAgICAgICAgICAgICAgJGpvaW5zWyduYW1lJ10gPSBDR0NPTlRBQ1RTX1NVQl9UQkwuJyBTVSBPTiBDLmlkID0gU1UuY29udGFjdF9pZCBBTkQgU1UuY2xhc3MgPSBcJ2NvbnRhY3RfbmFtZVwnJzsKICAgICAgICAgICAgICAgICR0bXBbXSA9ICdTVS52YWx1ZSBsaWtlID8nOwogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnKCcuaW1wbG9kZSgnIE9SICcsJHRtcCkuJyknOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkc3RyOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkc3RyOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkc3RyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiggKCR2YWwgPSAkdGhpcy0+X2ZpbHRlclsnZmV1X3VpZCddKSApIHsKICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5mZXVfdWlkID0gPyc7CiAgICAgICAgICAgICRwYXJtc1tdID0gJHZhbDsKICAgICAgICB9CgogICAgICAgIGlmKCAoJHZhbCA9ICR0aGlzLT5fZmlsdGVyWydmdWxsbmFtZSddKSApIHsKICAgICAgICAgICAgaWYoICR1c2VsaWtlICkgewogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5mdWxsbmFtZSBMSUtFID8nOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkdGhpcy0+d2lsZGNhcmQoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdDLmZ1bGxuYW1lID0gPyc7CiAgICAgICAgICAgICAgICAkcGFybXNbXSA9ICR2YWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAoJHZhbCA9ICR0aGlzLT5fZmlsdGVyWydtb2RpZmllZF9zaW5jZSddKSApIHsKICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5tb2RpZmllZCA+PSA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSAkdmFsOwogICAgICAgIH0KCiAgICAgICAgaWYoICR0aGlzLT5fZmlsdGVyWydjYXRlZ29yeSddICkgewogICAgICAgICAgICAkY2F0ZWdvcnlfaWRfbGlzdCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjYXRlZ29yeSA9ICR0aGlzLT5fZmlsdGVyWydjYXRlZ29yeSddOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCRjYXRlZ29yeSkgKSAkY2F0ZWdvcnkgPSBleHBsb2RlKCcsJywkY2F0ZWdvcnkpOwoKICAgICAgICAgICAgZm9yZWFjaCggJGNhdGVnb3J5IGFzICRvbmVjYXQgKSB7CiAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gYSBjYXRlZ29yeSBpZC4KICAgICAgICAgICAgICAgICRpZCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiggaXNfbnVtZXJpYygkb25lY2F0KSAmJiAoaW50KSAkb25lY2F0ID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaWQgPSAkb25lY2F0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGlkID0gY2F0ZWdvcnk6OmdldF9jYXRlZ29yeV9pZCgkb25lY2F0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCAhJGlkICkgY29udGludWU7CgogICAgICAgICAgICAgICAgaWYoICEkdGhpcy0+X2ZpbHRlclsnY2F0Y2hpbGRyZW4nXSApIHsKICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcnlfaWRfbGlzdFtdID0gJGlkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9IGNhdGVnb3J5OjpleHBhbmRfY2F0ZWdvcnkoJGlkKTsKICAgICAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSAkY2F0ZWdvcnlfaWRfbGlzdCA9IGFycmF5X21lcmdlKCRjYXRlZ29yeV9pZF9saXN0LCR0bXApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpZiB3ZSBzcGVjaWZpZWQgY2F0ZWdvcmllcywgYnV0IGNvdWxkbid0IGZpbmQgYW55IGNhdGVnb3J5IGlkcwogICAgICAgICAgICAvLyB0aGVuIHdlIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXRlbSB3aWxsIG1hdGNoIG5vIGNhdGVnb3JpZXMKICAgICAgICAgICAgaWYoICFjb3VudCgkY2F0ZWdvcnlfaWRfbGlzdCkgKSAkY2F0ZWdvcnlfaWRfbGlzdFtdID0gLTk5OTsKICAgICAgICAgICAgJGNvbHNbXSA9ICdBQy5jYXRfaWQgQVMgY2F0X2lkJzsKICAgICAgICAgICAgJGpvaW5zWydhZHJfY2F0cyddID0gQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyBBQyBPTiBDLmlkID0gQUMuY29udGFjdF9pZCc7CiAgICAgICAgICAgICR3aGVyZVtdID0gJ0FDLmNhdF9pZCBJTiAoJy5pbXBsb2RlKCcsJywkY2F0ZWdvcnlfaWRfbGlzdCkuJyknOwogICAgICAgIH0KCiAgICAgICAgaWYoIGNvdW50KCR0aGlzLT5fZmlsdGVyWydwcm9wcyddKSApIHsKICAgICAgICAgICAgJHByb3BzID0gJHRoaXMtPl9maWx0ZXJbJ3Byb3BzJ107CiAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8IDUwOyAkaSsrICkgewogICAgICAgICAgICAgICAgJGtleTEgPSAncHJvcGNsYXNzJy4kaTsKICAgICAgICAgICAgICAgICRrZXkyID0gJ3Byb3B2YWwnLiRpOwogICAgICAgICAgICAgICAgJGtleTMgPSAncHJvcGxhYmVsJy4kaTsKICAgICAgICAgICAgICAgICRrZXkgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwcm9wcywka2V5MSk7CiAgICAgICAgICAgICAgICAkdmFsID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcHJvcHMsJGtleTIpOwogICAgICAgICAgICAgICAgJGxibCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHByb3BzLCRrZXkzKTsKICAgICAgICAgICAgICAgIGlmKCAhJGtleSAmJiAhJHZhbCApIGJyZWFrOwoKICAgICAgICAgICAgICAgICRra2V5ID0gJ3Byb3BzJy4kaTsKICAgICAgICAgICAgICAgICRqb2luc1ska2tleV0gPSBDR0NPTlRBQ1RTX1NVQl9UQkwuIiAka2tleSBPTiBDLmlkID0gJGtrZXkuY29udGFjdF9pZCI7CiAgICAgICAgICAgICAgICBpZiggJGxibCApIHsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICIka2tleS5sYWJlbCA9ID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJGxibDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCAkdXNlbGlrZSApIHsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICIka2tleS52YWx1ZSBMSUtFID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJHRoaXMtPndpbGRjYXJkKCR2YWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAiJGtrZXkudmFsdWUgPSA/IjsKICAgICAgICAgICAgICAgICAgICAkcGFybXNbXSA9ICR2YWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vCiAgICAgICAgLy8gQlVJTEQgVEhJUyBRVUVSWQogICAgICAgIC8vCgogICAgICAgIGlmKCBjb3VudCgkam9pbnMpICkgewogICAgICAgICAgICAkcXVlcnkgLj0gJyBMRUZUIEpPSU4gJy5pbXBsb2RlKCcgTEVGVCBKT0lOICcsJGpvaW5zKTsKICAgICAgICB9CiAgICAgICAgaWYoIGNvdW50KCR3aGVyZSkgKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIFdIRVJFICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CiAgICAgICAgfQoKICAgICAgICAkcXVlcnkgLj0gJyBHUk9VUCBCWSBDLmlkJzsKCiAgICAgICAgc3dpdGNoKCAkdGhpcy0+X2ZpbHRlclsnc29ydGJ5J10gKSB7CiAgICAgICAgY2FzZSAnbW9kaWZpZWQnOgogICAgICAgIGNhc2UgJ2Z1bGxuYW1lJzoKICAgICAgICBjYXNlICduaWNrbmFtZSc6CiAgICAgICAgY2FzZSAndGl0bGUnOgogICAgICAgIGNhc2UgJ2NvbXBhbnknOgogICAgICAgIGNhc2UgJ3JvbGUnOgogICAgICAgICAgICAkcXVlcnkgLj0gJyBPUkRFUiBCWSAnLiR0aGlzLT5fZmlsdGVyWydzb3J0YnknXTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2Rpc3BsYXlfbmFtZSc6IC8vIHNwZWNpYWwgdmFsdWUKICAgICAgICAgICAgZGllKCdub3QgZG9uZSAnLl9fRklMRV9fLic6OicuX19MSU5FX18pOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoKCAkdGhpcy0+X2ZpbHRlclsnc29ydG9yZGVyJ10gKSB7CiAgICAgICAgY2FzZSAnQVNDJzoKICAgICAgICBjYXNlICdERVNDJzoKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgJy4kdGhpcy0+X2ZpbHRlclsnc29ydG9yZGVyJ107CiAgICAgICAgfQogICAgICAgICRxdWVyeSA9IHN0cl9yZXBsYWNlKCclY29scyUnLGltcGxvZGUoJywnLCRjb2xzKSwkcXVlcnkpOwoKICAgICAgICAvLyBjYWxjdWxhdGUgaW5kZXhlcwoKICAgICAgICAvLyBub3cgZXhlY3V0ZSB0aGUgdGhpbmcKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICAkdGhpcy0+X3JzID0gJGRiLT5TZWxlY3RMaW1pdCgkcXVlcnksJHRoaXMtPl9maWx0ZXJbJ2xpbWl0J10sJHRoaXMtPl9maWx0ZXJbJ29mZnNldCddLCRwYXJtcyk7CiAgICAgICAgaWYoICEkdGhpcy0+X3JzICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ0lOVEVSTkFMIEVSUk9SOiBRdWVyeSBmYWlsZWQgLSAnLiRkYi0+c3FsLicgLS0gJy4kZGItPkVycm9yTXNnKCkpOwogICAgICAgICR0aGlzLT5fdG90YWxtYXRjaGluZyA9IChpbnQpICRkYi0+R2V0T25lKCdTRUxFQ1QgRk9VTkRfUk9XUygpJyk7CgogICAgICAgICR0aGlzLT5fcHJlbG9hZCgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXIgb2YgcmVjb3JkcyByZXR1cm5lZCBpbiB0aGlzIHJlc3VsdHNldC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gUmVjb3JkQ291bnQoKQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkoKTsKICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5SZWNvcmRDb3VudCgpOwogICAgfQoKICAgIC8qKgogICAgICogTW92ZSB0byB0aGUgbmV4dCByZWNvcmQgaW4gdGhlIHJlc3VsdHNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIE1vdmVOZXh0KCkKICAgIHsKICAgICAgICAkdGhpcy0+X3F1ZXJ5KCk7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+TW92ZU5leHQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1vdmUgdG8gdGhlIGZpcnN0IHJlY29yZCBpbiB0aGUgcmVzdWx0c2V0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gTW92ZUZpcnN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+X3F1ZXJ5KCk7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+TW92ZUZpcnN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNb3ZlIHRvIHRoZSBmaXJzdCByZWNvcmQgaW4gdGhlIHJlc3VsdHNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFJld2luZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5Nb3ZlRmlyc3QoKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1vdmUgdG8gdGhlIGxhc3QgcmVjb3JkIGluIHRoZSByZXN1bHRzZXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBNb3ZlTGFzdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPl9xdWVyeSgpOwogICAgICAgIGlmKCAkdGhpcy0+X3JzICkgcmV0dXJuICR0aGlzLT5fcnMtPk1vdmVMYXN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSByZXN1bHRzZXQuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBFT0YoKQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkoKTsKICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5FT0YoKTsKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICAvKioKICAgICAqIENsb3NlIHRoZSByZXN1bHRzZXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBDbG9zZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+Q2xvc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIHJlY29yZHMgdGhhdCBtYXRjaCB0aGUgcXVlcnkgKG5vdCBvbmx5IGluIHRoaXMgcmVjb3Jkc2V0KS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gVG90YWxNYXRjaGVzKCkKICAgIHsKICAgICAgICAkdGhpcy0+X3F1ZXJ5KCk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fdG90YWxtYXRjaGluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9wcmVsb2FkKCkKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5fcnMgKSByZXR1cm47CgogICAgICAgICRpZGxpc3QgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT5fcnMtPk1vdmVGaXJzdCgpOwogICAgICAgIHdoaWxlKCAhJHRoaXMtPkVPRigpICkgewogICAgICAgICAgICAkaWRsaXN0W10gPSAoaW50KSR0aGlzLT5maWVsZHNbJ2lkJ107CiAgICAgICAgICAgICR0aGlzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+X3JzLT5Nb3ZlRmlyc3QoKTsKICAgICAgICAkaWRsaXN0ID0gYXJyYXlfdW5pcXVlKCRpZGxpc3QpOwoKICAgICAgICBpZiggIWNvdW50KCRpZGxpc3QpICkgcmV0dXJuOyAvLyBub3RoaW5nIHRvIGRvLgoKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgLy8gcHJlbG9hZCB0aGUgY29udGFjdCBvYmplY3RzCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCxzdGF0dXMsZ3VpZCxpbWFnZSxsb2dvLGZ1bGxuYW1lLG5pY2tuYW1lLGNvbXBhbnksdGl0bGUscm9sZSxub3RlLG1vZGlmaWVkIEZST00gJy5DR0NPTlRBQ1RTX1RCTC4nIFdIRVJFIGlkIElOKCcuaW1wbG9kZSgnLCcsJGlkbGlzdCkuJykgT1JERVIgQlkgaWQnOwogICAgICAgICRjb250YWN0cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICBpZiggIWlzX2FycmF5KCRjb250YWN0cykgfHwgY291bnQoJGNvbnRhY3RzKSA9PSAwICkgcmV0dXJuOyAvLyB0aGlzIGlzIHdlaXJkCiAgICAgICAgJHRoaXMtPl9wcmVsb2FkZWRfY29udGFjdHMgPSBcY2dlX2FycmF5Ojp0b19oYXNoKCRjb250YWN0cywnaWQnKTsKCiAgICAgICAgLy8gcHJlbG9hZCB0aGUgb2JqZWN0cwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY29udGFjdF9pZCxwcmVmZXJyZWQsY2xhc3MsbGFiZWwsdmFsdWUgRlJPTSAnLkNHQ09OVEFDVFNfU1VCX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJGlkbGlzdCkuJykgT1JERVIgQlkgY29udGFjdF9pZCwgcHJlZmVycmVkLCBjbGFzcywgbGFiZWwnOwogICAgICAgICRvYmplY3RzID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgIGlmKCBpc19hcnJheSgkb2JqZWN0cykgJiYgY291bnQoJG9iamVjdHMpICkgJHRoaXMtPl9wcmVsb2FkZWRfb2JqZWN0cyA9ICRvYmplY3RzOwoKICAgICAgICAvLyBwcmVsb2FkIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjb250YWN0X2lkLGNhdF9pZCBGUk9NICcuQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyBXSEVSRSBjb250YWN0X2lkIElOICgnLmltcGxvZGUoJywnLCRpZGxpc3QpLicpIE9SREVSIEJZIGNvbnRhY3RfaWQnOwogICAgICAgICRjYXRlZ29yaWVzID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgIGlmKCBpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgY291bnQoJGNhdGVnb3JpZXMpKSAkdGhpcy0+X3ByZWxvYWRlZF9jYXRzID0gJGNhdGVnb3JpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNvbnRhY3Qgb2JqZWN0IGZvciB0aGUgY3VycmVudCByZWNvcmQuCiAgICAgKgogICAgICogQHJldHVybiBjb250YWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0X29iamVjdCgpCiAgICB7CiAgICAgICAgJHJldCA9IG51bGw7CiAgICAgICAgaWYoICEkdGhpcy0+X3JzICkgcmV0dXJuICRyZXQ7CgogICAgICAgICRjb250YWN0X2lkID0gJHRoaXMtPmZpZWxkc1snaWQnXTsKICAgICAgICBpZiggIWlzc2V0KCR0aGlzLT5fcHJlbG9hZGVkX2NvbnRhY3RzWyRjb250YWN0X2lkXSkgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnRlcm5hbCBlcnJvcjogc29tZWhvdyB0aGUgY29udGFjdCBpbmZvIGZvciB0aGlzIGNvbnRhY3Qgd2FzIG5vdCBwcmVsb2FkZWQnKTsKICAgICAgICB9CgogICAgICAgICRjb250YWN0ID0gJHRoaXMtPl9wcmVsb2FkZWRfY29udGFjdHNbJGNvbnRhY3RfaWRdOwoKICAgICAgICAvLyBtZXJnZSBpbiB0aGUgb2JqZWN0cywgaWYgYW55CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9wcmVsb2FkZWRfb2JqZWN0cyk7ICRpKysgKSB7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+X3ByZWxvYWRlZF9vYmplY3RzWyRpXVsnY29udGFjdF9pZCddICE9ICRjb250YWN0X2lkICkgY29udGludWU7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJGNvbnRhY3RbJ29iamVjdHMnXSkgKSAkY29udGFjdFsnb2JqZWN0cyddID0gYXJyYXkoKTsKCiAgICAgICAgICAgICRjb250YWN0WydvYmplY3RzJ11bXSA9ICR0aGlzLT5fcHJlbG9hZGVkX29iamVjdHNbJGldOwogICAgICAgIH0KCiAgICAgICAgLy8gbWVyZ2UgaW4gdGhlIGNhdGVnb3JpZXMsIGlmIGFueQogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fcHJlbG9hZGVkX2NhdHMpOyAkaSsrICkgewogICAgICAgICAgICBpZiggJHRoaXMtPl9wcmVsb2FkZWRfY2F0c1skaV1bJ2NvbnRhY3RfaWQnXSAhPSAkY29udGFjdF9pZCApIGNvbnRpbnVlOwogICAgICAgICAgICBpZiggIWlzc2V0KCRjb250YWN0WydjYXRlZ29yaWVzJ10pICkgJGNvbnRhY3RbJ2NhdGVnb3JpZXMnXSA9IGFycmF5KCk7CgogICAgICAgICAgICAkY29udGFjdFsnY2F0ZWdvcmllcyddW10gPSAkdGhpcy0+X3ByZWxvYWRlZF9jYXRzWyRpXTsKICAgICAgICB9CgogICAgICAgICRvYmogPSBuZXcgY29udGFjdDsKICAgICAgICAkb2JqLT5mcm9tX2RhdGEoJGNvbnRhY3QpOwogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb250YWN0IG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVjb3JkLgogICAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIGdldF9vYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBjb250YWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0X2NvbnRhY3QoKQogICAgewogICAgICAgICR0bXAgPSAkdGhpcy0+Z2V0X29iamVjdCgpOwogICAgICAgIHJldHVybiAkdG1wOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIG9iamVjdCB0byBhaWRlIGluIHNjcm9sbGluZyB0aHJvdWdoIHRoZSBkaWZmZXJlbnQgcGFnZXMgb2Ygb2JqZWN0cwogICAgICogdGhhdCBtYXRjaCB0aGlzIHF1ZXJ5LgogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9wYWdpbmF0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0X3BhZ2luYXRpb24oKQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkoKTsKICAgICAgICAkb2JqID0gbmV3IGNvbnRhY3RfcGFnaW5hdGlvbigkdGhpcyk7CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_score01.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0yNTIxMzIxNSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0yNTIxMzIxNSIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTgwNzc4NjExMiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xODA3Nzg2MTEyIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgZmlsZSI+CiAgICAgICAgICAgICAgICAgICAgPG5hdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NvdXJjZS12aWV3IiByb2xlPSJidXR0b24iIGNsYXNzPSJwdWxsLXJpZ2h0IGJ0biIgZGF0YS10b2dnbGU9Im1vZGFsIj48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+PC9zbWFsbD5jbGFzcy5jb250YWN0X3Njb3JlMDEucGhwPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+QSBkZWZpbml0aW9uIGZvciBhIHNpbXBsZSBjbGFzcyB0aGF0IGFjY2VwdHMgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDE8L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+Q2xhc3NlczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPkEgc2ltcGxlIGNsYXNzIHRvIGFsbG93IHN0b3JpbmcgYSBkYWlseSB3YWdlIChhIG51bWJlcikgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UHJvZHVjdGl2aXR5PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3Rfc2NvcmUwMS5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_score01.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBIGRlZmluaXRpb24gZm9yIGEgc2ltcGxlIGNsYXNzIHRoYXQgYWNjZXB0cyBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMQogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBzdG9yaW5nIGEgZGFpbHkgd2FnZSAoYSBudW1iZXIpIHdpdGggYSBjb250YWN0LgogKi8KY2xhc3MgY29udGFjdF9zY29yZTAxIGV4dGVuZHMgXENHQ29udGFjdHNcY29udGFjdF9zaW5nbGVfdmFsdWUKewogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgJHZhbCA9IChmbG9hdCkgJHRoaXMtPmdldF92YWx1ZSgpOwogICAgICAgIGlmKCAkdmFsIDwgMCB8fCAkdmFsID4gMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ1RoZSB2YWx1ZSBmb3IgdGhlIHNjb3JlIGlzIGludmFsaWQnKTsKICAgIH0KfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_simple_value.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMTk5NTgyMTY4Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTExOTk1ODIxNjgiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTE4MTM4MDc3OTMiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPkNHQ29udGFjdHM8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMTgxMzgwNzc5MyIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlICI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9hZGRyZXNzLmh0bWwiPmNvbnRhY3RfYWRkcmVzczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3ViLmh0bWwiPmNvbnRhY3Rfc3ViPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2NyZWF0b3IuaHRtbCI+Y29udGFjdF9jcmVhdG9yPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zY29yZTAxLmh0bWwiPmNvbnRhY3Rfc2NvcmUwMTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY29vcmRzLmh0bWwiPmNvbnRhY3RfY29vcmRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9yZXN1bHRzZXQuaHRtbCI+Y29udGFjdF9yZXN1bHRzZXQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhaWx5d2FnZS5odG1sIj5jb250YWN0X2RhaWx5d2FnZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGFnaW5hdGlvbi5odG1sIj5jb250YWN0X3BhZ2luYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N0cmluZy5odG1sIj5jb250YWN0X3N0cmluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcGhvbmUuaHRtbCI+Y29udGFjdF9waG9uZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLnV0aWxzLmh0bWwiPnV0aWxzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9lbWFpbC5odG1sIj5jb250YWN0X2VtYWlsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9xdWVyeS5odG1sIj5jb250YWN0X3F1ZXJ5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYXRlLmh0bWwiPmNvbnRhY3RfZGF0ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9uYW1lLmh0bWwiPmNvbnRhY3RfbmFtZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuOCBjb250ZW50IGZpbGUiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+CgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzb3VyY2UtdmlldyIgcm9sZT0iYnV0dG9uIiBjbGFzcz0icHVsbC1yaWdodCBidG4iIGRhdGEtdG9nZ2xlPSJtb2RhbCI+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPjwvc21hbGw+Y2xhc3MuY29udGFjdF9zaW1wbGVfdmFsdWUucGhwPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD48ZW0+VGhlIGRlZmluaXRpb24gZm9yIHRoZSBjb250YWN0X3NpbXBsZV92YWx1ZSBjbGFzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+Q2xhc3NlczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5UaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgZGVmaW5lcyBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIHZhbHVlLjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlByb2R1Y3Rpdml0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3NpbXBsZV92YWx1ZS5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_simple_value.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3Rfc2ltcGxlX3ZhbHVlIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgZGVmaW5lcyBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIHZhbHVlLgogKi8KYWJzdHJhY3QgY2xhc3MgY29udGFjdF9zaW1wbGVfdmFsdWUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwndmFsdWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ZhbHVlKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJHZhbDsKICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBleGNlcHRpb25zIG9uIGFuIGVycm9yLgogICAgICoKICAgICAqIEBhYnN0cmFjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICEkdGhpcy0+Z2V0X3ZhbHVlKCkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBlYWNoIHNhdmVkIGNvbnRhY3Qgb2JqZWN0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJhdyB2YWx1ZSBvZiB0aGlzIG9iamVjdCwgc3VpdGFibGUgZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmF3X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgb2JqZWN0IGludG8gYW4gYXJyYXkuCiAgICAgKgogICAgICogQGluZ2VybmFsCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b19kYXRhKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50Ojp0b19kYXRhKCk7CiAgICAgICAgJG91dFsndmFsdWUnXSA9ICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbGwgdGhpcyBvYmplY3QgZnJvbSBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgICR0aGlzLT5fZGF0YVsndmFsdWUnXSA9ICRkYXRhWyd2YWx1ZSddOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_single_value.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0yMDg4OTc1NjY0Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTIwODg5NzU2NjQiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTIwNDg4MjA0NSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0yMDQ4ODIwNDUiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9zaW5nbGVfdmFsdWUgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBpcyBhbiBhYnN0cmFjdCBjbGFzcyB0aGF0IGRlZmluZXMgYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgb25seSBhIHNpbmdsZSB2YWx1ZSwgYW5kIGNhbiBvbmx5IGhhdmUgb25lIG9mIHRoaXMgdHlwZS48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Qcm9kdWN0aXZpdHk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPmNhbGd1eTEwMDAgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Db3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGw8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+PC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zaW5nbGVfdmFsdWUucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_single_value.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3Rfc2luZ2xlX3ZhbHVlIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgZGVmaW5lcyBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIHZhbHVlLCBhbmQgY2FuIG9ubHkgaGF2ZSBvbmUgb2YgdGhpcyB0eXBlLgogKi8KYWJzdHJhY3QgY2xhc3MgY29udGFjdF9zaW5nbGVfdmFsdWUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IKICAgICAqCiAgICAgKiBAcGFyYW0gY29udGFjdCAkcGFyZW50IEEgcmVmZXJlbmNlIHRvIHRoZSBjb250YWN0IG9iamVjdCB0aGF0IHdpbGwgb3duIHRoaXMgb2JqZWN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY29udGFjdCAmJHBhcmVudCkgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHBhcmVudCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydwcmVmZXJyZWQnXSA9IFRSVUU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdmFsdWUoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCd2YWx1ZScpOwogICAgfQoKCiAgICAvKioKICAgICAqIFRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuCiAgICAgKiBGb3IgdGhlIGNvbnRhY3Rfc2luZ2xlX3ZhbHVlIG9iamVjdHMsIHRoaXMgaXMgYWx3YXlzIHRydWUuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc19wcmVmZXJyZWQoKQogICAgewogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwcmVmZXJyZWQgZmxhZyBmb3IgdGhpcyBvYmplY3QuCiAgICAgKiBmb3IgY29udGFjdF9zaW5nbGVfdmFsdWUgb2JqZWN0cywgdGhlIHByZWZlcnJlZCBzdGF0dXMgY2Fubm90IGJlIHVuc2V0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkZmxhZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ByZWZlcnJlZCgkZmxhZyA9IFRSVUUpCiAgICB7CiAgICAgICAgJGZsYWcgPSB0cnVlOwogICAgICAgICR0aGlzLT5fZGF0YVsncHJlZmVycmVkJ10gPSAkZmxhZzsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBhbGxvd3NfbXVsdGlwbGUoKQogICAgewogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ZhbHVlKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJHZhbDsKICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBleGNlcHRpb25zIG9uIGFuIGVycm9yLgogICAgICoKICAgICAqIEBhYnN0cmFjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICEkdGhpcy0+Z2V0X3ZhbHVlKCkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBlYWNoIHNhdmVkIGNvbnRhY3Qgb2JqZWN0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJhdyB2YWx1ZSBvZiB0aGlzIG9iamVjdCwgc3VpdGFibGUgZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmF3X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgb2JqZWN0IGludG8gYW4gYXJyYXkuCiAgICAgKgogICAgICogQGluZ2VybmFsCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b19kYXRhKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50Ojp0b19kYXRhKCk7CiAgICAgICAgJG91dFsndmFsdWUnXSA9ICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbGwgdGhpcyBvYmplY3QgZnJvbSBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgICR0aGlzLT5fZGF0YVsndmFsdWUnXSA9ICRkYXRhWyd2YWx1ZSddOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_smarty.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xODc5OTgyNDYwIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTE4Nzk5ODI0NjAiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTM4NTUwNjA1OSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0zODU1MDYwNTkiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3Rfc21hcnR5LnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgdXRpbHMgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSB1dGlsaXR5IGNsYXNzIGNvbnRhaW5pbmcgc21hcnR5IHBsdWdpbnMuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VXRpbGl0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3NtYXJ0eS5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_smarty.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBVdGlsaXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogQSB1dGlsaXR5IGNsYXNzIGNvbnRhaW5pbmcgc21hcnR5IHBsdWdpbnMuCiAqCiAqIEBpZ25vcmUKICovCmZpbmFsIGNsYXNzIGNvbnRhY3Rfc21hcnR5CnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkaXNwbGF5bmFtZSgkcGFyYW1zLCYkdHBsKQogICAgewogICAgICAgICRjb250YWN0X2lkID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdpZCcpOwogICAgICAgICRjb250YWN0X2lkID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdjb250YWN0X2lkJywkY29udGFjdF9pZCk7CiAgICAgICAgJGFzc2lnbiA9IHRyaW0oXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdhc3NpZ24nKSk7CgogICAgICAgICRvdXQgPSBudWxsOwogICAgICAgIGlmKCAkY29udGFjdF9pZCA+IDAgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkY29udGFjdCA9IGNvbnRhY3Q6OmxvYWQoJGNvbnRhY3RfaWQpOwogICAgICAgICAgICAgICAgJG91dCA9ICRjb250YWN0LT5nZXRfZGlzcGxheV9uYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoICRhc3NpZ24gKSB7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbigkYXNzaWduLCRvdXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkb3V0OwogICAgICAgIH0KICAgIH0KfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_string.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xNzU5MDg3MjcxIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTE3NTkwODcyNzEiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTgwMDAxMDg3NSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS04MDAwMTA4NzUiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3Rfc3RyaW5nLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgdXRpbHMgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2ltcGxlIHN0cmluZyBwcm9wZXJ0eSBmb3IgYSBjb250YWN0LjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgICAgICA8aDI+VGFnczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1jb25kZW5zZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlByb2R1Y3Rpdml0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy5jb250YWN0X3N0cmluZy5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_string.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNpbXBsZSBzdHJpbmcgcHJvcGVydHkgZm9yIGEgY29udGFjdC4KICovCmNsYXNzIGNvbnRhY3Rfc3RyaW5nIGV4dGVuZHMgXENHQ29udGFjdHNcY29udGFjdF9zaW1wbGVfdmFsdWUge30KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_sub.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0yMDQ2OTQ0NjM0Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTIwNDY5NDQ2MzQiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTk5MTg3OTQ4MyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS05OTE4Nzk0ODMiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3Rfc3ViLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdCBjbGFzcy48L2VtPjwvcD4KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+Q2xhc3NlczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BbiBhYnN0cmFjdCBjbGFzcyB0byBkZXNjcmliZSBhIGJhc2ljIG9iamVjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgPGgyPlRhZ3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtY29uZGVuc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Qcm9kdWN0aXZpdHk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPmNhbGd1eTEwMDAgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Db3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGw8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgICAgICAgICA8L2FzaWRlPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGl2IGlkPSJzb3VyY2UtdmlldyIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0ic291cmNlLXZpZXctbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+w5c8L2J1dHRvbj4KICAgICAgICAgICAgPGgzIGlkPSJzb3VyY2Utdmlldy1sYWJlbCI+PC9oMz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgPHByZSBkYXRhLXNyYz0iLi4vZmlsZXMvY2xhc3MuY29udGFjdF9zdWIucGhwLnR4dCIgY2xhc3M9Imxhbmd1YWdlLXBocCBsaW5lLW51bWJlcnMiPjwvcHJlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_sub.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3QgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEFuIGFic3RyYWN0IGNsYXNzIHRvIGRlc2NyaWJlIGEgYmFzaWMgb2JqZWN0LgogKiBBIGNvbnRhY3QgY2FuIGNvbnNpc3Qgb2YgbXVsdGlwbGUgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMuCiAqLwphYnN0cmFjdCBjbGFzcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2NvbnRhY3Q7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9kYXRhID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKgogICAgICogQHBhcmFtIGNvbnRhY3QgJHBhcmVudCBBIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNvbnRhY3QgJiRwYXJlbnQpIHsKICAgICAgICAkdGhpcy0+X2NvbnRhY3QgPSAkcGFyZW50OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBpZCBvZiB0aGUgcGFyZW50IGNvbnRhY3Qgb2JqZWN0LgogICAgICogSWYgdGhlIGNvbnRhY3Qgb2JqZWN0IGlzIG5ldyBhbmQgaGFzIG5vdCBiZWVuIHNhdmVkLCBpdCBtYXkgbm90IGhhdmUgYW4gaWQuCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jb250YWN0X2lkKCkKICAgIHsKICAgICAgICAkaWQgPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdjb250YWN0X2lkJyk7CiAgICAgICAgaWYoICEkaWQgKSByZXR1cm4gJHRoaXMtPl9wYXJlbnQtPmdldF9pZCgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjbGFzcyAodHlwZSkgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jbGFzcygpIHsKICAgICAgICAkY2xhc3MgPSBnZXRfY2xhc3MoJHRoaXMpOwogICAgICAgICRjbGFzcyA9IHN0cl9yZXBsYWNlKCdcXCcsJy8nLCRjbGFzcyk7CiAgICAgICAgcmV0dXJuIGJhc2VuYW1lKCRjbGFzcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxhYmVsLCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2xhYmVsKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnbGFiZWwnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBhIGxhYmVsIGZvciB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2xhYmVsKCRsYWJlbCkKICAgIHsKICAgICAgICAkbGFiZWwgPSB0cmltKCRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdsYWJlbCBjYW5ub3QgYmUgZW1wdHkgaW4gYSAnLiR0aGlzLT5nZXRfY2xhc3MoKS4nIG9iamVjdCcpOwogICAgICAgICR0aGlzLT5fZGF0YVsnbGFiZWwnXSA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBpZiB0aGlzIG9iamVjdCBpcyBhIHByZWZlcnJlZCBvYmplY3Qgb2YgaXRzIHR5cGUgZm9yIHRoaXMgY29udGFjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzX3ByZWZlcnJlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChib29sKSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdwcmVmZXJyZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgcHJlZmVycmVkIGZsYWcgZm9yIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRmbGFnCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfcHJlZmVycmVkKCRmbGFnID0gVFJVRSkKICAgIHsKICAgICAgICAkZmxhZyA9IChib29sKSBcY2dlX3V0aWxzOjp0b19ib29sKCRmbGFnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3ByZWZlcnJlZCddID0gJGZsYWc7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBvYmplY3RzIG9mIHRoaXMgdHlwZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LgogICAgICoKICAgICAqIEBhYnN0cmFjdAogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbGxvd3NfbXVsdGlwbGUoKQogICAgewogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIC8qKgogICAgICogVmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuICBUaHJvdyBhbiBleGNlcHRpb24gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuCiAgICAgKgogICAgICogQGFic3RyYWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfY2xhc3MoKSA9PSAnJyApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0VhY2ggY29udGFjdCBvYmplY3QgbXVzdCBoYXZlIGEgY2xhc3MnKTsKICAgICAgICBpZiggJHRoaXMtPmdldF9sYWJlbCgpID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignRWFjaCBjb250YWN0IG9iamVjdCBtdXN0IGhhdmUgYSBsYWJlbCcpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSByYXcgdmFsdWUgKGZvciBzdG9yaW5nIGluIHRoZSBkYXRhYmFzZSkgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldF9yYXdfdmFsdWUoKTsKCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBvYmplY3QgdG8gYSBkYXRhIGFycmF5LgogICAgICoKICAgICAqIEBhYnN0cmFjdAogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9fZGF0YSgpCiAgICB7CiAgICAgICAgJG91dCA9ICR0aGlzLT5fZGF0YTsKICAgICAgICAkb3V0WydjbGFzcyddID0gJHRoaXMtPmdldF9jbGFzcygpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogRmlsbCB0aGlzIG9iamVjdCBmcm9tIGEgZGF0YSBhcnJheS4KICAgICAqCiAgICAgKiBAYWJzdGFjdAogICAgICogQHBhcmFtIGFycmF5ICRkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICAvLyB2YWxpZGF0ZSB0aHMgZGF0YQogICAgICAgICRjb250YWN0X2lkID0gKGludClcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2NvbnRhY3RfaWQnKTsKICAgICAgICAkbGFiZWwgPSB0cmltKFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbGFiZWwnKSk7CiAgICAgICAgJHByZWZlcnJlZCA9IFxjZ2VfdXRpbHM6OnRvX2Jvb2woXGNnZV91dGlsczo6Z2V0X3BhcmFtKCRkYXRhLCdwcmVmZXJyZWQnKSk7CiAgICAgICAgaWYoICRsYWJlbCA9PSAnJykgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignZGF0YSBzdXBwbGllZCB0byAnLl9fTUVUSE9EX18uJyBpcyBpbnZhbGlkJyk7CgogICAgICAgIGlmKCAkY29udGFjdF9pZCA+IDAgKSAgJHRoaXMtPl9kYXRhWydjb250YWN0X2lkJ10gPSAkY29udGFjdF9pZDsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2xhYmVsJ10gPSAkbGFiZWw7CiAgICAgICAgJHRoaXMtPl9kYXRhWydwcmVmZXJyZWQnXSA9ICRwcmVmZXJyZWQ7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_url.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMDIxNDUyMTc4Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9kZWZhdWx0Lmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5cPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEwMjE0NTIxNzgiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTQzMzAxOTI4NyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS00MzMwMTkyODciIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLmNvbnRhY3RfdXJsLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF91cmwgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF91cmwuaHRtbCI+Y29udGFjdF91cmw8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBjbGFzcyB0byByZXByZXNlbnQgYSBVUkwgb2JqZWN0IHdpdGhpbiBhIGNvbnRhY3QuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UHJvZHVjdGl2aXR5PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jYWxndXkxMDAwIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIj5jYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGRpdiBpZD0ic291cmNlLXZpZXciIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9InNvdXJjZS12aWV3LWxhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CiAgICAgICAgICAgIDxoMyBpZD0ic291cmNlLXZpZXctbGFiZWwiPjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxwcmUgZGF0YS1zcmM9Ii4uL2ZpbGVzL2NsYXNzLmNvbnRhY3RfdXJsLnBocC50eHQiIGNsYXNzPSJsYW5ndWFnZS1waHAgbGluZS1udW1iZXJzIj48L3ByZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.contact_url.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfdXJsIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIGNsYXNzIHRvIHJlcHJlc2VudCBhIFVSTCBvYmplY3Qgd2l0aGluIGEgY29udGFjdC4KICogTXVsdGlwbGUgVVJMIG9iamVjdHMgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X3VybCBleHRlbmRzIGNvbnRhY3Rfc2ltcGxlX3ZhbHVlCnsKICAgIC8qKgogICAgICogR2V0IHRoZSBVUkwgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfYWRkcmVzcygpCiAgICB7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6Z2V0X3ZhbHVlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVSTCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfYWRkcmVzcygkdmFsKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X3ZhbHVlKCR2YWwpOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.utils.php.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpIHsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlW2RhdGEtc3JjXScpKS5mb3JFYWNoKGZ1bmN0aW9uIChwcmUpIHsKICAgICAgICAgICAgICAgIHZhciBzcmMgPSBwcmUuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpOwogICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IChzcmMubWF0Y2goL1wuKFx3KykkLykgfHwgWywgJyddKVsxXTsKICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZSA9ICdwaHAnOwoKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29kZScpOwogICAgICAgICAgICAgICAgY29kZS5jbGFzc05hbWUgPSAnbGFuZ3VhZ2UtJyArIGxhbmd1YWdlOwoKICAgICAgICAgICAgICAgIHByZS50ZXh0Q29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIGNvZGUudGV4dENvbnRlbnQgPSAnTG9hZGluZ+KApic7CgogICAgICAgICAgICAgICAgcHJlLmFwcGVuZENoaWxkKGNvZGUpOwoKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgc3JjLCB0cnVlKTsKCiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA8IDQwMCAmJiB4aHIucmVzcG9uc2VUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0geGhyLnJlc3BvbnNlVGV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KGNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhoci5zdGF0dXMgPj0gNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLnRleHRDb250ZW50ID0gJ+KcliBFcnJvciAnICsgeGhyLnN0YXR1cyArICcgd2hpbGUgZmV0Y2hpbmcgZmlsZTogJyArIHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS50ZXh0Q29udGVudCA9ICfinJYgRXJyb3I6IEZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgZW1wdHknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBsb2FkRXh0ZXJuYWxDb2RlU25pcHBldHMoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcjc291cmNlLXZpZXcnKS5vbignc2hvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRFeHRlcm5hbENvZGVTbmlwcGV0cygpOwogICAgICAgIH0pCiAgICA8L3NjcmlwdD4KCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlICIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS00MzIwMjc0OTUiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtNDMyMDI3NDk1IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgaW4iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24iIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24tZ3JvdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhY2NvcmRpb24tdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI25hbWVzcGFjZS0xMjEzODU3NTk2Ij48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMzBweDsgcGFkZGluZy1sZWZ0OiAwIj5DR0NvbnRhY3RzPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0ibmFtZXNwYWNlLTEyMTM4NTc1OTYiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBmaWxlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc291cmNlLXZpZXciIHJvbGU9ImJ1dHRvbiIgY2xhc3M9InB1bGwtcmlnaHQgYnRuIiBkYXRhLXRvZ2dsZT0ibW9kYWwiPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPGgxPjxzbWFsbD48L3NtYWxsPmNsYXNzLnV0aWxzLnBocDwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHA+PGVtPlRoZSBkZWZpbml0aW9uIGZvciB0aGUgdXRpbHMgY2xhc3MuPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkNsYXNzZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyBwcm92aWRlcyB2YXJpb3VzIHN0YXRpYyBhcHBsaWNhdGlvbiBsZXZlbCB1dGlsaXRpZXMuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGFzaWRlIGNsYXNzPSJzcGFuNCBkZXRhaWxzYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgICAgIDxoMj5UYWdzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWNvbmRlbnNlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VXRpbGl0eTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Y2FsZ3V5MTAwMCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZzwvYT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5cmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkNvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgoKICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxkaXYgaWQ9InNvdXJjZS12aWV3IiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJzb3VyY2Utdmlldy1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7DlzwvYnV0dG9uPgogICAgICAgICAgICA8aDMgaWQ9InNvdXJjZS12aWV3LWxhYmVsIj48L2gzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICA8cHJlIGRhdGEtc3JjPSIuLi9maWxlcy9jbGFzcy51dGlscy5waHAudHh0IiBjbGFzcz0ibGFuZ3VhZ2UtcGhwIGxpbmUtbnVtYmVycyI+PC9wcmU+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/files/class.utils.php.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBVdGlsaXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyBwcm92aWRlcyB2YXJpb3VzIHN0YXRpYyBhcHBsaWNhdGlvbiBsZXZlbCB1dGlsaXRpZXMuCiAqLwpmaW5hbCBjbGFzcyB1dGlscwp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZF9qcygkcGx1Z2luX25hbWUpCiAgICB7CiAgICAgICAgJF9nQ21zID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ09OVEFDVFMpOwoKICAgICAgICBzd2l0Y2goICRwbHVnaW5fbmFtZSApIHsKICAgICAgICBjYXNlICdjZ2NvbnRhY3RzX2FkZCc6CiAgICAgICAgICAgICR0cGwgPSAkbW9kLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnanF1ZXJ5LmNnY29udGFjdHNfYWRkLnRwbCcpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ21vZCcsJG1vZCk7CiAgICAgICAgICAgICRvYmogPSBuZXcgXFN0ZENsYXNzOwogICAgICAgICAgICAkb2JqLT5jb2RlID0gJHRwbC0+ZmV0Y2goKTsKICAgICAgICAgICAgcmV0dXJuICRvYmo7CgogICAgICAgIGNhc2UgJ2NnY29udGFjdHNfc2VsJzoKICAgICAgICAgICAgJHRwbCA9ICRtb2QtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCdqcXVlcnkuY2djb250YWN0c19zZWwudHBsJyk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignbW9kJywkbW9kKTsKICAgICAgICAgICAgJG9iaiA9IG5ldyBcU3RkQ2xhc3M7CiAgICAgICAgICAgICRvYmotPmNvZGUgPSAkdHBsLT5mZXRjaCgpOwogICAgICAgICAgICAkdHBsID0gJG1vZC0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2pxdWVyeS5jZ2NvbnRhY3RzX3NlbC5jc3MudHBsJyk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignbW9kJywkbW9kKTsKICAgICAgICAgICAgJG9iai0+c3R5bGVzID0gJHRwbC0+ZmV0Y2goKTsKICAgICAgICAgICAgcmV0dXJuICRvYmo7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHN0YWNrX3RyYWNlKCk7CiAgICAgICAgICAgIGRpZSgndW5rbm93biBwbHVnaW4gJy4kcGx1Z2luX25hbWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENhbGN1bGF0ZSBhIHVuaXF1ZSBHVUlELgogICAgICogVGhpcyBtZXRob2QgdXNlcyB0aGUgZnVuY3Rpb24gY29tX2NyZWF0ZV9ndWlkIGlmIGl0IGNhbiBiZSBmb3VuZCwgb3RoZXJ3aXNlCiAgICAgKiBpdCBnZW5lcmF0ZXMgYSBzZXJpZXMgb2YgcmFuZG9tIHZhbHVlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNhbGNfZ3VpZCgpCiAgICB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY29tX2NyZWF0ZV9ndWlkJykgPT09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuIHRyaW0oY29tX2NyZWF0ZV9ndWlkKCksICd7fScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNwcmludGYoJyUwNFglMDRYLSUwNFgtJTA0WC0lMDRYLSUwNFglMDRYJTA0WCcsIG10X3JhbmQoMCwgNjU1MzUpLCBtdF9yYW5kKDAsIDY1NTM1KSwgbXRfcmFuZCgwLCA2NTUzNSksIG10X3JhbmQoMTYzODQsIDIwNDc5KSwgbXRfcmFuZCgzMjc2OCwgNDkxNTEpLCBtdF9yYW5kKDAsIDY1NTM1KSwgbXRfcmFuZCgwLCA2NTUzNSksIG10X3JhbmQoMCwgNjU1MzUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfZmV1X2xpc3QoKQogICAgewogICAgICAgIHN0YXRpYyAkbGlzdDsKICAgICAgICBpZiggIWlzX2FycmF5KCRsaXN0KSApIHsKICAgICAgICAgICAgJGxpc3QgPSBhcnJheSgpOwoKICAgICAgICAgICAgLy8gbm93IGFkZCBpbiBmZXUgdXNlcnMKCSAgICAkZmV1ID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwogICAgICAgICAgICBpZiggaXNfb2JqZWN0KCRmZXUpICkgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gbmV3IFxmZXVfdXNlcl9xdWVyeTsKICAgICAgICAgICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXGZldV91c2VyX3F1ZXJ5X09QVDo6TUFUQ0hfTk9URVhQSVJFRCk7CiAgICAgICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXGZldV91c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FKTsKICAgICAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcZmV1X3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfQVNDKTsKICAgICAgICAgICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgd2hpbGUoICEkcnMtPkVPRigpICkgewogICAgICAgICAgICAgICAgICAgICRsaXN0WyRycy0+ZmllbGRzWydpZCddXSA9ICRycy0+ZmllbGRzWyd1c2VybmFtZSddOwogICAgICAgICAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGxpc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZSBhIHZjYXJkIGZvciB0aGUgcHJvdmlkZWQgY29udGFjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gY29udGFjdCAkY29udGFjdAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdmNhcmQoY29udGFjdCAkY29udGFjdCkKICAgIHsKICAgICAgICAkdmNhcmQgPSBuZXcgdmNhcmRfZ2VuZXJhdG9yOwoKICAgICAgICAvLyB1aWQKICAgICAgICBpZiggKCR1aWQgPSAkY29udGFjdC0+Z2V0X3V1aWQoKSkgKSAkdmNhcmQtPnNldFVJRCgkdWlkKTsKICAgICAgICAvLyBmdWxsbmFtZQogICAgICAgIGlmKCAoJGRuID0gJGNvbnRhY3QtPmdldF9kaXNwbGF5X25hbWUoKSkgKSAkdmNhcmQtPnNldEZ1bGxuYW1lKCRkbik7CiAgICAgICAgLy8gbmlja25hbWUKICAgICAgICBpZiggKCRubiA9ICRjb250YWN0LT5nZXRfbmlja25hbWUoKSkgKSAkdmNhcmQtPnNldE5pY2tuYW1lKCk7CiAgICAgICAgLy8gY29tcGFueQogICAgICAgIGlmKCAkY29udGFjdC0+Z2V0X2NvbXBhbnkoKSApICR2Y2FyZC0+YWRkQ29tcGFueSgkY29udGFjdC0+Z2V0X2NvbXBhbnkoKSk7CiAgICAgICAgLy8gdGl0bGVzCiAgICAgICAgaWYoICRjb250YWN0LT5nZXRfdGl0bGUoKSApICR2Y2FyZC0+c2V0Sm9iVGl0bGUoJGNvbnRhY3QtPmdldF90aXRsZSgpKTsKICAgICAgICAvLyByb2xlCiAgICAgICAgaWYoICRjb250YWN0LT5nZXRfcm9sZSgpICkgJHZjYXJkLT5zZXRQcm9wZXJ0eSgnUk9MRScsJGNvbnRhY3QtPmdldF9yb2xlKCkpOwogICAgICAgIC8vIG5hbWVzCiAgICAgICAgJG5hbWUgPSAkY29udGFjdC0+Z2V0X25hbWUoKTsKICAgICAgICBpZiggaXNfb2JqZWN0KCRuYW1lKSApIHsKICAgICAgICAgICAgJHZjYXJkLT5zZXROYW1lKCRuYW1lLT5nZXRfbGFzdCgpLCRuYW1lLT5nZXRfZmlyc3QoKSwkbmFtZS0+Z2V0X21pZGRsZSgpLCRuYW1lLT5nZXRfcHJlZml4KCksJG5hbWUtPmdldF9zdWZmaXgoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBhZGRyZXNzZXMKICAgICAgICAkYWRkcmVzc2VzID0gJGNvbnRhY3QtPmdldF9hZGRyZXNzX29iamVjdHMoKTsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkYWRkcmVzc2VzKTsgJGkrKyApIHsKICAgICAgICAgICAgJGFkciA9ICRhZGRyZXNzZXNbJGldOwogICAgICAgICAgICAkdmNhcmQtPmFkZEFkZHJlc3MoJGFkci0+Z2V0X3BvYm94KCksJGFkci0+Z2V0X3N0cmVldCgpLCRhZHItPmdldF9jaXR5KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRyLT5nZXRfc3RhdGUoKSwgJGFkci0+Z2V0X3ppcCgpLCAkYWRyLT5nZXRfY291bnRyeSgpLCRhZHItPmdldF9sYWJlbCgpLCRhZHItPmlzX3ByZWZlcnJlZCgpKTsKICAgICAgICB9CgogICAgICAgIC8vIGVtYWlscwogICAgICAgICRlbWFpbHMgPSAkY29udGFjdC0+Z2V0X2VtYWlsX29iamVjdHMoKTsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZW1haWxzKTsgJGkrKyApIHsKICAgICAgICAgICAgJG9iaiA9ICRlbWFpbHNbJGldOwogICAgICAgICAgICAkdmNhcmQtPmFkZEVtYWlsKCRvYmotPmdldF9hZGRyZXNzKCksJG9iai0+Z2V0X2xhYmVsKCksJG9iai0+aXNfcHJlZmVycmVkKCkpOwogICAgICAgIH0KCiAgICAgICAgLy8gcGhvbmUKICAgICAgICAkcGhvbmVzID0gJGNvbnRhY3QtPmdldF9waG9uZV9vYmplY3RzKCk7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHBob25lcyk7ICRpKysgKSB7CiAgICAgICAgICAgICRvYmogPSAkcGhvbmVzWyRpXTsKICAgICAgICAgICAgJHR5cGVzID0gYXJyYXkoJG9iai0+Z2V0X3R5cGUoKSwkb2JqLT5nZXRfbGFiZWwoKSk7CiAgICAgICAgICAgICR2Y2FyZC0+YWRkUGhvbmUoJG9iai0+Z2V0X3ZhbHVlKCksJHR5cGVzLCRvYmotPmlzX3ByZWZlcnJlZCgpKTsKICAgICAgICB9CgogICAgICAgIC8vIG5vdGUKICAgICAgICBpZiggKCRub3RlID0gJGNvbnRhY3QtPmdldF9ub3RlKCkpICkgJHZjYXJkLT5hZGROb3RlKCRub3RlKTsKCiAgICAgICAgLy8gdXJsCiAgICAgICAgJHVybCA9ICRjb250YWN0LT5nZXRfcHJlZmVycmVkX3VybCgpOwogICAgICAgIGlmKCAkdXJsICkgJHZjYXJkLT5hZGRVUkwoJHVybCk7CgogICAgICAgIC8vIGNhdGVnb3JpZXMKICAgICAgICAkY2F0ZWdvcmllcyA9ICRjb250YWN0LT5nZXRfY2F0ZWdvcmllcygpOwogICAgICAgIGlmKCBpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgY291bnQoJGNhdGVnb3JpZXMpICkgewogICAgICAgICAgICAkbmFtZXMgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkY2F0ZWdvcmllcyBhcyAkcmVjICkgewogICAgICAgICAgICAgICAgJGNhdF9pZCA9ICRyZWNbJ2NhdF9pZCddOwogICAgICAgICAgICAgICAgJG5hbWVzW10gPSBjYXRlZ29yeTo6Z2V0X2NhdGVnb3J5X25hbWUoJGNhdF9pZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHZjYXJkLT5zZXRDYXRlZ29yaWVzKCRuYW1lcyk7CiAgICAgICAgfQoKICAgICAgICAvLyBiaXJ0aGRheSAodG9kbykKCiAgICAgICAgLy8gcGhvdG8gLyBsb2dvCiAgICAgICAgaWYoICgkaW1hZ2UgPSAkY29udGFjdC0+Z2V0X2ltYWdlKCkpICkgJHZjYXJkLT5hZGRQaG90bygkaW1hZ2UpOwogICAgICAgIGlmKCAoJGxvZ28gPSAkY29udGFjdC0+Z2V0X2xvZ28oKSkgKSAkdmNhcmQtPmFkZExvZ28oJGltYWdlKTsKCiAgICAgICAgcmV0dXJuICR2Y2FyZC0+Z2V0KCk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/graphs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/graphs/class.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy9qcXVlcnkuaXZpZXdlci5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgPHN0eWxlPgogICAgICAgICN2aWV3ZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIH0KICAgICAgICAud3JhcHBlciB7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL2pxdWVyeS5tb3VzZXdoZWVsLm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9qcXVlcnkuaXZpZXdlci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICQoIiN2aWV3ZXIiKS5oZWlnaHQoJCh3aW5kb3cpLmhlaWdodCgpIC0gMTAwKTsKICAgICAgICB9KTsKCiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoIiN2aWV3ZXIiKS5pdmlld2VyKHtzcmM6ICcuLi9ncmFwaHMvY2xhc3Nlcy5zdmcnLCB6b29tX2FuaW1hdGlvbjogZmFsc2V9KTsKICAgICAgICAgICAgJCgnI3ZpZXdlciBpbWcnKS5iaW5kKCdkcmFnc3RhcnQnLCBmdW5jdGlvbihldmVudCl7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZSgpOwogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CgogICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24ucG5nIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSI3Mng3MiIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tNzJ4NzIucG5nIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxMTR4MTE0IiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi0xMTR4MTE0LnBuZyIvPgo8L2hlYWQ+Cjxib2R5PgoKPGRpdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1maXhlZC10b3AiPgogICAgPGRpdiBjbGFzcz0ibmF2YmFyLWlubmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1uYXZiYXIiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXYtY29sbGFwc2UiPgogICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tZWxsaXBzaXMtdmVydGljYWwiPjwvaT4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0iYnJhbmQiIGhyZWY9Ii4uL2luZGV4Lmh0bWwiPkNHQ29udGFjdHMgMS4zLjE8L2E+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtY29sbGFwc2UiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJuYXYgcHVsbC1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2luZGV4Lmh0bWwiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgRG9jdW1lbnRhdGlvbiA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0iY2hhcnRzLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO0NsYXNzIGhpZXJhcmNoeSBkaWFncmFtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJyZXBvcnRzLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO0Vycm9ycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4xPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO01hcmtlcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPCEtLTxkaXYgY2xhc3M9ImdvX3RvX3RvcCI+LS0+CiAgICA8IS0tPGEgaHJlZj0iI19fXyIgc3R5bGU9ImNvbG9yOiBpbmhlcml0Ij5CYWNrIHRvIHRvcCYjMTYwOyYjMTYwOzxpIGNsYXNzPSJpY29uLXVwbG9hZCBpY29uLXdoaXRlIj48L2k+PC9hPi0tPgogICAgPCEtLTwvZGl2Pi0tPgo8L2Rpdj4KCjxkaXYgaWQ9Il9fXyIgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cmFwcGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InZpZXdlciIgY2xhc3M9InZpZXdlciI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/graphs/classes.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8IS0tIEdlbmVyYXRlZCBieSBncmFwaHZpeiB2ZXJzaW9uIDIuMzYuMCAoMjAxNDAxMTEuMjMxNSkKIC0tPgo8IS0tIFRpdGxlOiBHIFBhZ2VzOiAxIC0tPgo8c3ZnIHdpZHRoPSI2MjJwdCIgaGVpZ2h0PSIxMDMycHQiCiB2aWV3Qm94PSIwLjAwIDAuMDAgNjIyLjAwIDEwMzIuMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8ZyBpZD0iZ3JhcGgwIiBjbGFzcz0iZ3JhcGgiIHRyYW5zZm9ybT0ic2NhbGUoMSAxKSByb3RhdGUoMCkgdHJhbnNsYXRlKDQgMTAyOCkiPgo8dGl0bGU+RzwvdGl0bGU+Cjxwb2x5Z29uIGZpbGw9IndoaXRlIiBzdHJva2U9Im5vbmUiIHBvaW50cz0iLTQsNCAtNCwtMTAyOCA2MTgsLTEwMjggNjE4LDQgLTQsNCIvPgo8ZyBpZD0iY2x1c3QxIiBjbGFzcz0iY2x1c3RlciI+PHRpdGxlPmNsdXN0ZXJfR2xvYmFsPC90aXRsZT4KPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJncmF5IiBkPSJNMjAsLTIwNkMyMCwtMjA2IDU5NCwtMjA2IDU5NCwtMjA2IDYwMCwtMjA2IDYwNiwtMjEyIDYwNiwtMjE4IDYwNiwtMjE4IDYwNiwtMTAwNCA2MDYsLTEwMDQgNjA2LC0xMDEwIDYwMCwtMTAxNiA1OTQsLTEwMTYgNTk0LC0xMDE2IDIwLC0xMDE2IDIwLC0xMDE2IDE0LC0xMDE2IDgsLTEwMTAgOCwtMTAwNCA4LC0xMDA0IDgsLTIxOCA4LC0yMTggOCwtMjEyIDE0LC0yMDYgMjAsLTIwNiIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIzMDciIHk9Ii0xMDAzLjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCIgZmlsbD0iZ3JheSI+R2xvYmFsPC90ZXh0Pgo8L2c+CjxnIGlkPSJjbHVzdDIiIGNsYXNzPSJjbHVzdGVyIj48dGl0bGU+Y2x1c3Rlcl9cQ0dDb250YWN0czwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iZ3JheSIgZD0iTTI4LC0yMTRDMjgsLTIxNCA1ODYsLTIxNCA1ODYsLTIxNCA1OTIsLTIxNCA1OTgsLTIyMCA1OTgsLTIyNiA1OTgsLTIyNiA1OTgsLTk3NiA1OTgsLTk3NiA1OTgsLTk4MiA1OTIsLTk4OCA1ODYsLTk4OCA1ODYsLTk4OCAyOCwtOTg4IDI4LC05ODggMjIsLTk4OCAxNiwtOTgyIDE2LC05NzYgMTYsLTk3NiAxNiwtMjI2IDE2LC0yMjYgMTYsLTIyMCAyMiwtMjE0IDI4LC0yMTQiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMzA3IiB5PSItOTc1LjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCIgZmlsbD0iZ3JheSI+Q0dDb250YWN0czwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9hZGRyZXNzIC0tPgo8ZyBpZD0ibm9kZTEiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X2FkZHJlc3M8L3RpdGxlPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjMzNiwtOTMzIDI0OCwtOTMzIDI0OCwtODk3IDMzNiwtODk3IDMzNiwtOTMzIi8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjI5MiIgeT0iLTkxMi4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3RfYWRkcmVzczwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9zdWIgLS0+CjxnIGlkPSJub2RlMiIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3Rfc3ViPC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI5My41LC03OTggMjQuNSwtNzk4IDI0LjUsLTc2MiA5My41LC03NjIgOTMuNSwtNzk4Ii8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJzdGFydCIgeD0iMzYiIHk9Ii03ODMuMiIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjExLjAwIj7Cq2Fic3RyYWN0wrs8L3RleHQ+Cjx0ZXh0IHRleHQtYW5jaG9yPSJzdGFydCIgeD0iMzIuNSIgeT0iLTc3MS4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3Rfc3ViPC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X2FkZHJlc3MmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc3ViIC0tPgo8ZyBpZD0iZWRnZTEiIGNsYXNzPSJlZGdlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X2FkZHJlc3MmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc3ViPC90aXRsZT4KPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgZD0iTTI0Ny43NTIsLTkxMS44NjVDMjIyLjYyNywtOTA4LjU3MyAxOTEuMDgzLC05MDEuODI1IDE2NiwtODg4IDEyOS41NywtODY3LjkyMSA5Ny42NTUyLC04MzEuMzY3IDc4LjYwNTksLTgwNi4zOTciLz4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI4MS4yMDAyLC04MDQuMDIxIDcyLjQxODIsLTc5OC4wOTQgNzUuNTg3NCwtODA4LjIwNCA4MS4yMDAyLC04MDQuMDIxIi8+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfdXJsIC0tPgo8ZyBpZD0ibm9kZTMiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3VybDwvdGl0bGU+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iNTczLC02MzYgNTA3LC02MzYgNTA3LC02MDAgNTczLC02MDAgNTczLC02MzYiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iNTQwIiB5PSItNjE1LjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCI+Y29udGFjdF91cmw8L3RleHQ+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlIC0tPgo8ZyBpZD0ibm9kZTQiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbXBsZV92YWx1ZTwvdGl0bGU+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzQ4LjUsLTY5MCAyMzUuNSwtNjkwIDIzNS41LC02NTQgMzQ4LjUsLTY1NCAzNDguNSwtNjkwIi8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJzdGFydCIgeD0iMjY5IiB5PSItNjc1LjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCI+wqthYnN0cmFjdMK7PC90ZXh0Pgo8dGV4dCB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9IjI0My41IiB5PSItNjYzLjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L3RleHQ+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfdXJsJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbXBsZV92YWx1ZSAtLT4KPGcgaWQ9ImVkZ2UyIiBjbGFzcz0iZWRnZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF91cmwmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC90aXRsZT4KPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgZD0iTTUwNi45MTMsLTYyNS4yMjJDNDgyLjUzNCwtNjMwLjY5NSA0NDguMTY4LC02MzguMzc2IDQxOCwtNjQ1IDM5OC43MDMsLTY0OS4yMzcgMzc3LjcxNywtNjUzLjc5MSAzNTguNTQ5LC02NTcuOTI5Ii8+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzU3Ljc0NiwtNjU0LjUyMiAzNDguNzA5LC02NjAuMDUyIDM1OS4yMjIsLTY2MS4zNjUgMzU3Ljc0NiwtNjU0LjUyMiIvPgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbXBsZV92YWx1ZSYjNDU7Jmd0O1xcQ0dDb250YWN0c1xcY29udGFjdF9zdWIgLS0+CjxnIGlkPSJlZGdlMyIgY2xhc3M9ImVkZ2UiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3N1YjwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik0yNDcuMzExLC02OTAuMDczQzIyMy4xNzEsLTcwMC4yNTggMTkyLjc0MiwtNzEzLjQyOCAxNjYsLTcyNiAxNDQuOTU4LC03MzUuODkyIDEyMS45MjQsLTc0Ny41MjcgMTAyLjcxOSwtNzU3LjQ1OSIvPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjEwMC44ODYsLTc1NC40NjcgOTMuNjI0MywtNzYyLjE4MyAxMDQuMTEyLC03NjAuNjc5IDEwMC44ODYsLTc1NC40NjciLz4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9zaW5nbGVfdmFsdWUgLS0+CjxnIGlkPSJub2RlNSIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSIzNDcsLTgyNSAyMzcsLTgyNSAyMzcsLTc4OSAzNDcsLTc4OSAzNDcsLTgyNSIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ic3RhcnQiIHg9IjI2OSIgeT0iLTgxMC4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPsKrYWJzdHJhY3TCuzwvdGV4dD4KPHRleHQgdGV4dC1hbmNob3I9InN0YXJ0IiB4PSIyNDUiIHk9Ii03OTguMiIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjExLjAwIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9zaW5nbGVfdmFsdWUmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc3ViIC0tPgo8ZyBpZD0iZWRnZTQiIGNsYXNzPSJlZGdlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbmdsZV92YWx1ZSYjNDU7Jmd0O1xcQ0dDb250YWN0c1xcY29udGFjdF9zdWI8L3RpdGxlPgo8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBkPSJNMjM2Ljg0MSwtODAwLjY3QzE5Ni4zNzIsLTc5NS45NCAxNDEuNzUxLC03ODkuNTU1IDEwMy45NywtNzg1LjEzOSIvPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjEwNC4xMjUsLTc4MS42MzQgOTMuNzg2NSwtNzgzLjk0OSAxMDMuMzEyLC03ODguNTg2IDEwNC4xMjUsLTc4MS42MzQiLz4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9zbWFydHkgLS0+CjxnIGlkPSJub2RlNiIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3Rfc21hcnR5PC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI1ODIsLTkwNiA0OTgsLTkwNiA0OTgsLTg3MCA1ODIsLTg3MCA1ODIsLTkwNiIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSI1NDAiIHk9Ii04ODUuMiIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjExLjAwIj5jb250YWN0X3NtYXJ0eTwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9jcmVhdG9yIC0tPgo8ZyBpZD0ibm9kZTciIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X2NyZWF0b3I8L3RpdGxlPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjU4MywtNTgyIDQ5NywtNTgyIDQ5NywtNTQ2IDU4MywtNTQ2IDU4MywtNTgyIi8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjU0MCIgeT0iLTU2MS4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3RfY3JlYXRvcjwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9jcmVhdG9yJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbXBsZV92YWx1ZSAtLT4KPGcgaWQ9ImVkZ2U1IiBjbGFzcz0iZWRnZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9jcmVhdG9yJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbXBsZV92YWx1ZTwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik01MDQuNjM2LC01ODIuMTM0QzQ5OS42NTksLTU4NC45OTEgNDk0LjY1LC01ODcuOTk2IDQ5MCwtNTkxIDQ1Ni40MDEsLTYxMi43MDUgNDU0LjM5LC02MjguMzk0IDQxOCwtNjQ1IDM5OS41OTYsLTY1My4zOTkgMzc4LjQ1OCwtNjU5LjIzOSAzNTguODYzLC02NjMuMjc4Ii8+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzU3LjkzMSwtNjU5Ljg5NCAzNDguNzc5LC02NjUuMjMxIDM1OS4yNjIsLTY2Ni43NjYgMzU3LjkzMSwtNjU5Ljg5NCIvPgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0IC0tPgo8ZyBpZD0ibm9kZTgiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0PC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI1NjcsLTc5OCA1MTMsLTc5OCA1MTMsLTc2MiA1NjcsLTc2MiA1NjcsLTc5OCIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSI1NDAiIHk9Ii03NzcuMiIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjExLjAwIj5jb250YWN0PC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X3Njb3JlMDEgLS0+CjxnIGlkPSJub2RlOSIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3Rfc2NvcmUwMTwvdGl0bGU+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iNTg0LjUsLTk2MCA0OTUuNSwtOTYwIDQ5NS41LC05MjQgNTg0LjUsLTkyNCA1ODQuNSwtOTYwIi8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjU0MCIgeT0iLTkzOS4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3Rfc2NvcmUwMTwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9zY29yZTAxJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbmdsZV92YWx1ZSAtLT4KPGcgaWQ9ImVkZ2U2IiBjbGFzcz0iZWRnZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9zY29yZTAxJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbmdsZV92YWx1ZTwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik01MDIuNzYyLC05MjMuODk0QzQ5OC4zMTIsLTkyMS4xMzcgNDkzLjk0NywtOTE4LjE1MiA0OTAsLTkxNSA0NTIuMzYzLC04ODQuOTQzIDQ1OS41OTYsLTg1OC4yODUgNDE4LC04MzQgMzk5LjYyOCwtODIzLjI3NCAzNzcuNDk3LC04MTYuNzk1IDM1Ni45OTQsLTgxMi44ODYiLz4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSIzNTcuNTM1LC04MDkuNDI3IDM0Ny4wODQsLTgxMS4xNjYgMzU2LjMzOCwtODE2LjMyNCAzNTcuNTM1LC04MDkuNDI3Ii8+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfY29vcmRzIC0tPgo8ZyBpZD0ibm9kZTEwIiBjbGFzcz0ibm9kZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9jb29yZHM8L3RpdGxlPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjMzMy41LC04NzkgMjUwLjUsLTg3OSAyNTAuNSwtODQzIDMzMy41LC04NDMgMzMzLjUsLTg3OSIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIyOTIiIHk9Ii04NTguMiIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjExLjAwIj5jb250YWN0X2Nvb3JkczwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9jb29yZHMmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc3ViIC0tPgo8ZyBpZD0iZWRnZTciIGNsYXNzPSJlZGdlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X2Nvb3JkcyYjNDU7Jmd0O1xcQ0dDb250YWN0c1xcY29udGFjdF9zdWI8L3RpdGxlPgo8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBkPSJNMjUwLjI5NSwtODU0Ljk1QzIyNS40OSwtODUwLjU5NCAxOTMuNDAxLC04NDMuNzUzIDE2NiwtODM0IDE0Mi45ODgsLTgyNS44MDkgMTE4LjYxNCwtODEzLjY2MSA5OS4wNDksLTgwMi45NiIvPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjEwMC41OCwtNzk5LjgwNyA5MC4xMzk1LC03OTguMDA3IDk3LjE3ODYsLTgwNS45MjUgMTAwLjU4LC03OTkuODA3Ii8+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfcmVzdWx0c2V0IC0tPgo8ZyBpZD0ibm9kZTExIiBjbGFzcz0ibm9kZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9yZXN1bHRzZXQ8L3RpdGxlPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjU4NiwtNDIwIDQ5NCwtNDIwIDQ5NCwtMzg0IDU4NiwtMzg0IDU4NiwtNDIwIi8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjU0MCIgeT0iLTM5OS4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3RfcmVzdWx0c2V0PC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0V4dGVuc2lvbnNcXHF1ZXJ5XFxyZXN1bHRzZXQgLS0+CjxnIGlkPSJub2RlMjIiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0V4dGVuc2lvbnNcXHF1ZXJ5XFxyZXN1bHRzZXQ8L3RpdGxlPgo8ZWxsaXBzZSBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBjeD0iMjkyIiBjeT0iLTE4MCIgcng9IjExOC4wNzkiIHJ5PSIxOCIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIyOTIiIHk9Ii0xNzYuMyIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjE0LjAwIiBmaWxsPSJncmF5Ij5cQ0dFeHRlbnNpb25zXHF1ZXJ5XHJlc3VsdHNldDwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9yZXN1bHRzZXQmIzQ1OyZndDtcXENHRXh0ZW5zaW9uc1xccXVlcnlcXHJlc3VsdHNldCAtLT4KPGcgaWQ9ImVkZ2U4IiBjbGFzcz0iZWRnZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9yZXN1bHRzZXQmIzQ1OyZndDtcXENHRXh0ZW5zaW9uc1xccXVlcnlcXHJlc3VsdHNldDwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik01MDAuMjU1LC0zODMuOTY3QzQ5Ni41MjEsLTM4MS4yODggNDkzLjAxLC0zNzguMzAyIDQ5MCwtMzc1IDQzNi4wOSwtMzE1Ljg3NyA0NzkuMzI3LC0yNjEuMzg4IDQxOCwtMjEwIDQxMC44MzksLTIwNCA0MDIuNjc5LC0xOTkuMTYgMzk0LjAzNiwtMTk1LjI2MSIvPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjM5NS4wNzUsLTE5MS45MDYgMzg0LjQ5MywtMTkxLjM5IDM5Mi40NDQsLTE5OC4zOTIgMzk1LjA3NSwtMTkxLjkwNiIvPgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X2RhaWx5d2FnZSAtLT4KPGcgaWQ9Im5vZGUxMiIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3RfZGFpbHl3YWdlPC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI1OTAsLTg1MiA0OTAsLTg1MiA0OTAsLTgxNiA1OTAsLTgxNiA1OTAsLTg1MiIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSI1NDAiIHk9Ii04MzEuMiIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjExLjAwIj5jb250YWN0X2RhaWx5d2FnZTwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9kYWlseXdhZ2UmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc2luZ2xlX3ZhbHVlIC0tPgo8ZyBpZD0iZWRnZTkiIGNsYXNzPSJlZGdlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X2RhaWx5d2FnZSYjNDU7Jmd0O1xcQ0dDb250YWN0c1xcY29udGFjdF9zaW5nbGVfdmFsdWU8L3RpdGxlPgo8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBkPSJNNDg5LjgwOSwtODI4LjYwMUM0NTEuNzI3LC04MjQuNDIxIDM5OC42NjQsLTgxOC41OTcgMzU3LjIzMiwtODE0LjA1Ii8+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzU3LjU1OCwtODEwLjU2NSAzNDcuMjM2LC04MTIuOTUzIDM1Ni43OTQsLTgxNy41MjMgMzU3LjU1OCwtODEwLjU2NSIvPgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X3BhZ2luYXRpb24gLS0+CjxnIGlkPSJub2RlMTMiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3BhZ2luYXRpb248L3RpdGxlPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjU5MCwtMzY2IDQ5MCwtMzY2IDQ5MCwtMzMwIDU5MCwtMzMwIDU5MCwtMzY2Ii8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjU0MCIgeT0iLTM0NS4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3RfcGFnaW5hdGlvbjwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dFeHRlbnNpb25zXFxxdWVyeVxccGFnaW5hdGlvbiAtLT4KPGcgaWQ9Im5vZGUyMyIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHRXh0ZW5zaW9uc1xccXVlcnlcXHBhZ2luYXRpb248L3RpdGxlPgo8ZWxsaXBzZSBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBjeD0iMjkyIiBjeT0iLTEyNiIgcng9IjEyNi4xNzgiIHJ5PSIxOCIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIyOTIiIHk9Ii0xMjIuMyIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjE0LjAwIiBmaWxsPSJncmF5Ij5cQ0dFeHRlbnNpb25zXHF1ZXJ5XHBhZ2luYXRpb248L3RleHQ+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfcGFnaW5hdGlvbiYjNDU7Jmd0O1xcQ0dFeHRlbnNpb25zXFxxdWVyeVxccGFnaW5hdGlvbiAtLT4KPGcgaWQ9ImVkZ2UxMCIgY2xhc3M9ImVkZ2UiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3RfcGFnaW5hdGlvbiYjNDU7Jmd0O1xcQ0dFeHRlbnNpb25zXFxxdWVyeVxccGFnaW5hdGlvbjwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik01MDAuMjMzLC0zMjkuOTg3QzQ5Ni41MDMsLTMyNy4zMDQgNDkzLC0zMjQuMzExIDQ5MCwtMzIxIDQzNS40NjMsLTI2MC43OTQgNDgwLjY4NywtMjA0LjY2NiA0MTgsLTE1MyA0MTIuNTksLTE0OC41NDEgNDA2LjYxMiwtMTQ0Ljc3MSA0MDAuMjksLTE0MS41ODgiLz4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI0MDEuMzYyLC0xMzguMjM0IDM5MC44MDYsLTEzNy4zMzMgMzk4LjQ5NywtMTQ0LjYyIDQwMS4zNjIsLTEzOC4yMzQiLz4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9zdHJpbmcgLS0+CjxnIGlkPSJub2RlMTQiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3N0cmluZzwvdGl0bGU+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iNTc5LjUsLTY5MCA1MDAuNSwtNjkwIDUwMC41LC02NTQgNTc5LjUsLTY1NCA1NzkuNSwtNjkwIi8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjU0MCIgeT0iLTY2OS4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3Rfc3RyaW5nPC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X3N0cmluZyYjNDU7Jmd0O1xcQ0dDb250YWN0c1xcY29udGFjdF9zaW1wbGVfdmFsdWUgLS0+CjxnIGlkPSJlZGdlMTEiIGNsYXNzPSJlZGdlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3N0cmluZyYjNDU7Jmd0O1xcQ0dDb250YWN0c1xcY29udGFjdF9zaW1wbGVfdmFsdWU8L3RpdGxlPgo8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBkPSJNNTAwLjI5MiwtNjcyQzQ2Mi40MjgsLTY3MiA0MDQuMDMxLC02NzIgMzU4Ljg1NiwtNjcyIi8+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzU4Ljg0OCwtNjY4LjUgMzQ4Ljg0OCwtNjcyIDM1OC44NDgsLTY3NS41IDM1OC44NDgsLTY2OC41Ii8+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfcGhvbmUgLS0+CjxnIGlkPSJub2RlMTUiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3Bob25lPC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSIzMzIsLTc3MSAyNTIsLTc3MSAyNTIsLTczNSAzMzIsLTczNSAzMzIsLTc3MSIvPgo8dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB4PSIyOTIiIHk9Ii03NTAuMiIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjExLjAwIj5jb250YWN0X3Bob25lPC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X3Bob25lJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3N1YiAtLT4KPGcgaWQ9ImVkZ2UxMiIgY2xhc3M9ImVkZ2UiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3RfcGhvbmUmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc3ViPC90aXRsZT4KPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgZD0iTTI1MS44MTQsLTc1Ny41OEMyMTAuNzg4LC03NjIuMzc1IDE0Ni41MSwtNzY5Ljg4OCAxMDMuODI3LC03NzQuODc3Ii8+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMTAzLjI2LC03NzEuNDIgOTMuNzM0MywtNzc2LjA1NyAxMDQuMDczLC03NzguMzcyIDEwMy4yNiwtNzcxLjQyIi8+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXHV0aWxzIC0tPgo8ZyBpZD0ibm9kZTE2IiBjbGFzcz0ibm9kZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcdXRpbHM8L3RpdGxlPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjU2NywtNDc0IDUxMywtNDc0IDUxMywtNDM4IDU2NywtNDM4IDU2NywtNDc0Ii8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjU0MCIgeT0iLTQ1My4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPnV0aWxzPC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X2VtYWlsIC0tPgo8ZyBpZD0ibm9kZTE3IiBjbGFzcz0ibm9kZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9lbWFpbDwvdGl0bGU+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iNTc5LjUsLTUyOCA1MDAuNSwtNTI4IDUwMC41LC00OTIgNTc5LjUsLTQ5MiA1NzkuNSwtNTI4Ii8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjU0MCIgeT0iLTUwNy4yIiBmb250LWZhbWlseT0iVGltZXMsc2VyaWYiIGZvbnQtc2l6ZT0iMTEuMDAiPmNvbnRhY3RfZW1haWw8L3RleHQ+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfZW1haWwmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlIC0tPgo8ZyBpZD0iZWRnZTEzIiBjbGFzcz0iZWRnZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9lbWFpbCYjNDU7Jmd0O1xcQ0dDb250YWN0c1xcY29udGFjdF9zaW1wbGVfdmFsdWU8L3RpdGxlPgo8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBkPSJNNTAxLjU3MiwtNTI4LjA5NEM0OTcuNDYyLC01MzAuODAzIDQ5My41MDQsLTUzMy43OCA0OTAsLTUzNyA0NDcuNTI0LC01NzYuMDM1IDQ2NS42ODUsLTYxMi41MzMgNDE4LC02NDUgNDAwLjU3MywtNjU2Ljg2NSAzNzguODc1LC02NjMuNjQzIDM1OC40NzIsLTY2Ny40NzUiLz4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSIzNTcuODcxLC02NjQuMDI3IDM0OC41ODUsLTY2OS4xMjkgMzU5LjAyNiwtNjcwLjkzMSAzNTcuODcxLC02NjQuMDI3Ii8+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfcXVlcnkgLS0+CjxnIGlkPSJub2RlMTgiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjb250YWN0X3F1ZXJ5PC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI1NzkuNSwtMzEyIDUwMC41LC0zMTIgNTAwLjUsLTI3NiA1NzkuNSwtMjc2IDU3OS41LC0zMTIiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iNTQwIiB5PSItMjkxLjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCI+Y29udGFjdF9xdWVyeTwvdGV4dD4KPC9nPgo8IS0tIFxcQ0dFeHRlbnNpb25zXFxxdWVyeVxccXVlcnkgLS0+CjxnIGlkPSJub2RlMjQiIGNsYXNzPSJub2RlIj48dGl0bGU+XFxDR0V4dGVuc2lvbnNcXHF1ZXJ5XFxxdWVyeTwvdGl0bGU+CjxlbGxpcHNlIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGN4PSIyOTIiIGN5PSItNzIiIHJ4PSIxMDguNTgxIiByeT0iMTgiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMjkyIiB5PSItNjguMyIgZm9udC1mYW1pbHk9IlRpbWVzLHNlcmlmIiBmb250LXNpemU9IjE0LjAwIiBmaWxsPSJncmF5Ij5cQ0dFeHRlbnNpb25zXHF1ZXJ5XHF1ZXJ5PC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X3F1ZXJ5JiM0NTsmZ3Q7XFxDR0V4dGVuc2lvbnNcXHF1ZXJ5XFxxdWVyeSAtLT4KPGcgaWQ9ImVkZ2UxNCIgY2xhc3M9ImVkZ2UiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3RfcXVlcnkmIzQ1OyZndDtcXENHRXh0ZW5zaW9uc1xccXVlcnlcXHF1ZXJ5PC90aXRsZT4KPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgZD0iTTUwMC4yMzMsLTI3NS45ODdDNDk2LjUwMywtMjczLjMwNCA0OTMsLTI3MC4zMTEgNDkwLC0yNjcgNDM1LjQ2MywtMjA2Ljc5NCA0ODAuNjg3LC0xNTAuNjY2IDQxOCwtOTkgNDExLjA5MSwtOTMuMzA2IDQwMy4yNTgsLTg4LjczNTggMzk0Ljk2MiwtODUuMDc2OCIvPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjM5Ni4wMTEsLTgxLjcyODQgMzg1LjQyNCwtODEuMzIxNCAzOTMuNDQ3LC04OC4yNDE3IDM5Ni4wMTEsLTgxLjcyODQiLz4KPC9nPgo8IS0tIFxcQ0dDb250YWN0c1xcY29udGFjdF9kYXRlIC0tPgo8ZyBpZD0ibm9kZTE5IiBjbGFzcz0ibm9kZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9kYXRlPC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI1NzYuNSwtNzQ0IDUwMy41LC03NDQgNTAzLjUsLTcwOCA1NzYuNSwtNzA4IDU3Ni41LC03NDQiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iNTQwIiB5PSItNzIzLjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCI+Y29udGFjdF9kYXRlPC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X2RhdGUmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc2ltcGxlX3ZhbHVlIC0tPgo8ZyBpZD0iZWRnZTE1IiBjbGFzcz0iZWRnZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9kYXRlJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3NpbXBsZV92YWx1ZTwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik01MDMuNDkyLC03MTguMjA2QzQ2NS44MDgsLTcwOS45MzMgNDA1LjQwNywtNjk2LjY3NSAzNTguOTUyLC02ODYuNDc3Ii8+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzU5LjQ4MywtNjgzLjAxMSAzNDguOTY1LC02ODQuMjg1IDM1Ny45ODIsLTY4OS44NDggMzU5LjQ4MywtNjgzLjAxMSIvPgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjYXRlZ29yeSAtLT4KPGcgaWQ9Im5vZGUyMCIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNhdGVnb3J5PC90aXRsZT4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSI1NjcuNSwtMjU4IDUxMi41LC0yNTggNTEyLjUsLTIyMiA1NjcuNSwtMjIyIDU2Ny41LC0yNTgiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iNTQwIiB5PSItMjM3LjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCI+Y2F0ZWdvcnk8L3RleHQ+CjwvZz4KPCEtLSBcXEFycmF5QWNjZXNzIC0tPgo8ZyBpZD0ibm9kZTI1IiBjbGFzcz0ibm9kZSI+PHRpdGxlPlxcQXJyYXlBY2Nlc3M8L3RpdGxlPgo8ZWxsaXBzZSBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBjeD0iMjkyIiBjeT0iLTE4IiByeD0iNTguNDg5NiIgcnk9IjE4Ii8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjI5MiIgeT0iLTE0LjMiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxNC4wMCIgZmlsbD0iZ3JheSI+XEFycmF5QWNjZXNzPC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjYXRlZ29yeSYjNDU7Jmd0O1xcQXJyYXlBY2Nlc3MgLS0+CjxnIGlkPSJlZGdlMTYiIGNsYXNzPSJlZGdlIj48dGl0bGU+XFxDR0NvbnRhY3RzXFxjYXRlZ29yeSYjNDU7Jmd0O1xcQXJyYXlBY2Nlc3M8L3RpdGxlPgo8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBzdHJva2UtZGFzaGFycmF5PSIxLDUiIGQ9Ik01MzMuMjEyLC0yMjEuODAzQzUxOS43ODUsLTE4Mi43MTEgNDgyLjYzOCwtOTAuNTcwMyA0MTgsLTQ1IDQwMS4xNTcsLTMzLjEyNTkgMzgwLjA5NiwtMjYuMzEyOCAzNjAuMDg5LC0yMi40NTE4Ii8+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzYwLjUxMSwtMTguOTczMiAzNTAuMDY0LC0yMC43Mzc0IDM1OS4zMzEsLTI1Ljg3MyAzNjAuNTExLC0xOC45NzMyIi8+CjwvZz4KPCEtLSBcXENHQ29udGFjdHNcXGNvbnRhY3RfbmFtZSAtLT4KPGcgaWQ9Im5vZGUyMSIgY2xhc3M9Im5vZGUiPjx0aXRsZT5cXENHQ29udGFjdHNcXGNvbnRhY3RfbmFtZTwvdGl0bGU+Cjxwb2x5Z29uIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMzMxLC02MzYgMjUzLC02MzYgMjUzLC02MDAgMzMxLC02MDAgMzMxLC02MzYiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMjkyIiB5PSItNjE1LjIiIGZvbnQtZmFtaWx5PSJUaW1lcyxzZXJpZiIgZm9udC1zaXplPSIxMS4wMCI+Y29udGFjdF9uYW1lPC90ZXh0Pgo8L2c+CjwhLS0gXFxDR0NvbnRhY3RzXFxjb250YWN0X25hbWUmIzQ1OyZndDtcXENHQ29udGFjdHNcXGNvbnRhY3Rfc3ViIC0tPgo8ZyBpZD0iZWRnZTE3IiBjbGFzcz0iZWRnZSI+PHRpdGxlPlxcQ0dDb250YWN0c1xcY29udGFjdF9uYW1lJiM0NTsmZ3Q7XFxDR0NvbnRhY3RzXFxjb250YWN0X3N1YjwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik0yNTIuOTMyLC02MTkuNTA5QzIyNi43NjgsLTYyMi4wODEgMTkyLjE2NCwtNjI4LjYzNSAxNjYsLTY0NSAxMjMuNDE0LC02NzEuNjM2IDkwLjk1MjksLTcyMS43MjUgNzMuNzQ2MywtNzUyLjgzNCIvPgo8cG9seWdvbiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiBwb2ludHM9IjcwLjU2MDYsLTc1MS4zNjcgNjguOTAxNywtNzYxLjgzMiA3Ni43MjQxLC03NTQuNjg2IDcwLjU2MDYsLTc1MS4zNjciLz4KPC9nPgo8L2c+Cjwvc3ZnPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/images/apple-touch-icon-72x72.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wCBBQgAaUmrVsAACAASURBVHjaZLx5uCVVfe/9WWNV7b3P1DNDN5MgUUAEREFA0RBnxUSS9/VC9GZyiEbjFI3JjVFzbxKSaEz0isZIMM5JnCcERVCJDCJCi8xN0/OZzx6qao3vH7XVPHnPX6ef8+x+dq1a61ffsQT/7UdKSUqJQb/PaDwWgAJ6b3zV7zx+26aZHUZQlIWWMmUhhRRSCLIQKK3JyuJdg1SKHAJGSgBSjiQUKSdySkgyOXps0SMqRU4ZUsIUluwcpEzSkpghxYiWEi0VKQVyziSlSd4jpESSUUojlaF1NUIZckrE0GJNgciZTMo55rwxGaY2Cre4Pj78nqs+ejcwBuLsoJ83RuOfX/t//RH/9R9KKWKMKClFTMkAC+95x1tf9+THn/xanX2xdGi/OXLkEEcOH2Y0aSiERAhQSlBagzaWNgRS8qQICoFUkhgiLmeiAGImhRYlFL2qIJEQWZCkoldo6nFNjBlTapyPZCGRKVFoTQZ8ziAlddNilcSIhDEaayrWxyNMUdA4T46BTYMZWh8J3oMSzMwtsHlhns07jvZB2vbOBx798B9d+f4rU/DLUsqQUkpaSsJ/WSTx33fQ/Exfrg3HM//7za/57TOP3/GWMFzbvu+RB/NkMiGCcCmCVDmGIEChRSbnhDWGfr8khEDjHMaUxBBQUhBTJIRAVqbbFcGjMlSlRSkFWuNcy0xR4HwkhIg2Ep8FMXiEEFTWEEIi5ETKUDcN/arEak1pLY1zuBBACOo2MFdZhIAQIjFmxq3LbQxCASGEPNPr85jjTxD9LduP7N639LdvvfL9Vw3KYjhq2vT/20FSClLKCIHKmYW/e9trr9w1a15+z113JWuEKIpCKKXQWtO4Bpe6LxnaFikNOQWssZSFRhuJQyNypq0nGGmQUuKjJ+ZIiBkhQERBryqRKpOlIqZEaRW+aQkhYwqNS0DqznhhLW3bIqymaRwpZSprsFqDiLQxk3xD7SJFUdHTmZg1MSZq56jbhsIW5BSJMWGVIfiQSTGf9cSz5Z5x+thr3vV3bwaWgSCFIOWMAsgZZnuVan2Y/+Cfve6jvTT5jd2778ptCtJoIwprQYLUEmsMWQgyGam6C7PGAolMpqhKSIGYM8aWkDPaKqRUCCkQQiKEQEiJMRpjNFIJUooYJUEYEKDLguRbco4UVYUQmZQTSIFrW2xpsVpjrCZGR0KC0OQs6RUCpQtSTDjf0oaIlgKtFTlnrDGIbjaKkII4cPhw3jTXf8KzLzzv8V/97q1fm+mVbetDZjqAAWTrw+yf/v7L373FpMvv3v2TbLUQtihw3qOVwlqDEAlBd5xiSkipEVIQU0ILiZQSCZS9PilnJJGUM0ZpyAm0ATJkIEaMsSjhSXRzRSuNkgpyQhtLiiAkaCVQUpNzQmhNzlAYi1ZgraX1EVIgRCjKgsJovA8kBONmgtEWLTMoRbc0AoFAKo2UknHTiD2P7s9bZquTzzn77E3f/P7t3wEckH+2QMVLnvOMFz77cTv/8r777stCCSG1ykYbYazGBTf98hIBKG272UI3T7KQZDJKdndIaxBSknOenuKMVBIx/V1ojRQSiJS9GZCSFFqsLUg5k1JAGUsIHoSgLAqCd8QcSFmQc8IYhTaKjCBMv0PKmcoqEJLgPSEkEgJbWnIGLTVKqe5JKgVSKSZtQ5tEtkaL8XiUn/RLJ59t+/2f/vjeh34KBDm9gi1PPXXXK39y7725bRtKo7DGCsiIDEoqah8IKSO0JaXu0Wu1QhuDMYqUM0IIcs7EkDBaIZVCKUgJRE4oKZACREoIKZBSkpl+WakQSiOlwJii2y1SoISAHBFSom1JThGtJFpJjNZ416CtxTtHaTVaCvL0KeRzxBQWMYUvStB93miklrgYccFTGCX6vRJS5J7dd+dzT9n1CmALICVQAkftmOtd6JzPSmuRYsJKMFqDBGMKlNYMxxPatiUjiBmUCGijESJjrKH1DSQIMZNjRKoOBwktu7OSE8ZYBJFMJqVIShEhBMoYgq+72UAiJ4/UCkHuLlAIUnCkGFBKoaQgZ8jS4NoWKQWF1YQYcc0YF3N35KUgOI+WqpubQgKZ1nlG4yFGa6zqbl6/rISrh2yZqc4DdgKFAmaveMEz/qJMk9OEFMIYmRFKSClREoSQpOAQUiKkxPmIEiAEICRaCHw7QeiK3EEASBEpQIo8vbxE9C1KaWJwHRjLIFAoEZGyOyoiJ8gCKRRZQM55OtQhATFEQGGtRsmMD4kUHN4nCmuJviUmQUgCHzxaK6IPKNntIDIIKaibGhcS1hrKskKikDlQ2AKljDApsOukx+y45a57vyKBmeOPmn/G/gMHObS0lKXUorCSnBMpJAqj0Vp1w9U7hMgMa0eMqbuDKdAfzCJ8gwRSaIFMCLlbyJyROZOzREmJFBJtLCIlIBNDJERHaGui94TgidHh64YwGdNNOhBCdLhKK7ToBmxoW1IS5BjQSiGkJvia1jmM1YS2QRKRCFKMQGRST3Cpm5OFVkjAToGuINN6l/ctLrKpL88DZjQwY9y4wJY5eScOLi+zbfNmBr2C1jmapu0e7THiEBihgMRw0jDoVd1Fx4gpS2JdI4ylrVtEBc0kUAz6NJMaITqslXPmoQcf5NG9j3LsiY/n1Ceew7EnPZaFbcdQ9vuQoRkPWTr8KPsevI89P7mdg3seYPtROzh61wnI5BDK4kPqkHXKFGVBzuDqGp81yghC65DKIoUkJIcg432miVAWBTJ1WKosFEooXAiMm5ZR68Wo9WxXWv9sgcrkvRiPN5ibWwAyyxsbOGeZH1QoqfEhoJTESAiuQSpNIrG+vsb83AyZjDEF0WhCyiQj8D4gpMZ4DzmyNhwxHrbMHn0cL3nduznvkhf+NwzfkvP0KSdst2ORP//rjV/7N677t4+TJsvMVSPKskdEIIVECU1wDQGIoUEiQCkkCXI3d1yM1ClhjUKkFqUNpTXk6PFJ0rSR9dGYxkdcTFmRJNDXgO5JAaIbdr2yIOfMuG6IWbB5to9REec8WmmkTvjYgcSkFeOJZ6ZXkGOitIZJE5B0xyGJzP4jixwZjnnNX1zFSY97ImWvO5qwTM4WIRpgnpzHCGEAQ84BIWogk3OFEJELn30JFz3n2dQTuOfW73HVu/6QrbMz7DjmKHJKeO+JCbQpCSlipnBAaU3dOCatxxqBUSUSQaXNFFULxq1j2HSfF1KRnRdSKaG0LjUgC1uI2V4pAJq2oap6FEoSY2RxZZ25QYU1mpASKQSM0bi220mtd0CmXxkUisIoUpSsjUYcCYoX/tabefqLXgI05NyQs0AIDVQIEUhpQIoB6BNjB0SFBCE0SmWEzNNdJck5UlaGs572y1z1tJ9w7Weu4Tv//k/0NBhbIrUmBo8SkHJCa0vd1DQhURqF0hoRW4rCksk0LjJpPRPnSSGRSYiUKZSmlFIAQgOsra3S1C3zM32kNNSuJSuJLSzJeVaHEyqjGPQKglYQE6UtcSmhixIfA5MaBhWIFDhwYD/HPu4C/uD/vA8pN8h5HZAIochZ4NrE6qEj7Hvwpxx64G5GR/ZQT9ZZfnQfutBs3rGTrAq2HHsiR518OkedeCrz2xewdg4hAjkPAccll13GxZf+Bn/9h7/Dnrtv4YRTTkQKUGSEMbQuMJrUDAYDIGNkh8BThknTMm4dPsYOWWuJih2odI3Htw0/XyDTK3BrY4aTml5VMChLMuBaj1ICqxR1CPhhZH52QEyemAJaSnwISKkIMbK6VhOS4KVvupKzn34JOR/5OZsRYo7Dex/g7pu+wdJDuylUJucIWbBl0Cf0DMds34HIAkTC+YQ//AAHV/dy/42fx6M55pQncOpTn8X2nceSsyJnh7aJt7//w9z4la/x6ff8ObuO3oSwlqZxuJjp9/vkGKjKAq06mFK3nnHTdjAw08EZBNJomrah8RGhBwBogLoNVL0KI6GeTEgx0u+V9Kym9YGYA5rufK5tjJnpWRSdjFEZiw+e4caQtYngHVd/li07tpLSCCEUQpSM1mtu/8Y/sfe2bzLoVWyamcP5ho2NMa0LjIfrCKloJxO01kiRCVlhtKSsAkoZ5nuWZs8dfO3Wb7HrnEt48nMvpT9XkHMg5SEXPe857Dr5sXzoT15F2YyQRUGhBDkm+r2KnCN146hbh5seJ4VE6o4See+JMSMRGGMQ3QM3K2DnGccuXHFkdWitsfR7fZSkkxaExEqBNhofI0IolBJMGk/yLYXSZDLeeZbG8Fef+Qpzm+J0ZhiEmOfmL32eb1/zD7B+iIW5eYbjEUeWVnCNZ1KPmUxqUkzk2OJSIoZEjJHReISUGte2rK8PaVuHkAJjC9zaYe6+4euMa8nOx54JYgNyZH5zxdkX/xpf/MQnmJ8tIAcG/Q7Ajsc14ybgQkAIidEGTacipJgAgdaamCK1Cyij/Pfu2fdJCVCUJZAZTiYsra/S+E6wyjniQiQnGBQFkkCKEaMhSU2dMxBZn3j+4prP0p8BMAjhaCaRL/7DO3j0B19kbmAY1RMOHT7EpK5pmiGTyQakhJSSmALEAEKSY0CIjLaG6BuatsX7Fl9vsHTkCMtrq7T1iLnZip9++9/41JXvpBmXHTTIgYWthj/7509xaHGV2X6f4FrGtaeOmTxVIqw1KCFIOaKExCiFEJlJW9NGSEJiptJIt0BFQVkWFNZCiGwMh6yNminiVOQUqeuWQmp6VpNTp/Rl33LrbffxRx/8DLObuu0OmfFQ8/43/C5+8RGqsmJ9eYmV5UVWlhbJrUcrQ0oCSe7oSIiIDHjfDcwM2SeMUiQfURkQAh8zvm0Zrq1x4MA+tNXk1Uf46Nt+n8mo7TSp1LDt2Fne+Pf/yi0338bEQ+06oKilQJJI7QTSzzTzSBsiTdMCGiMlIid8iCBEt0ClEJS2QJMpqx79fr9j8HXD6toQFzNaiY4I+kghM7P9AYcOrPCKd7+XzdsBPEIoQij41z9/K5v7mbXhkIMHDkBKiAxCabx3qJQIriHFjAiJ6ANCKozRaJlxdYvRghQCITQoKQhtR0NkSngXGA0nLC8ukn3DQl/zkT95Kz7OgrSQBbtOPpYXv/7dHDm8hJUChUBLhQKsMojULYJLnVCvlQKRabynbhpc4xBiClWz6AQsawpKY7BKUxhDaTS2KBiNxqyOJ7Tek5PDtS2TjSHV3NE84wUXd6QSRw6ZD73pD5gVE2SOjIdDRnVLypmeUQjAuYhWBm01ccqJ2hBYXFrmuuu/w9333MeDB1d4+OFHEDkjhKLQhixUx+LJhJyJwSOjZ2V5kfX1dfps8E9vfi2CASIPyeMDXHr5C9gYZnJMKDJagNaGSKaNEaEUKkdSTjSh+76ubcg+IMSUOAO0raN1jratSTkhhaBQAiMF1kqq0lIUBW3rGdUBYSzL6zVv/8g/gag7tCAEN33pm9g4xsVEPZ5AjOSU2BjXnTSrBFkK6rbBCMmPfvhDliaCpXFk32LNG9/7Cd71ue9y5Vdu4jX/+O+w7WTuuXs3bVOzvLJCbBtCzoSUpvKspo2SxrWUVjNvam783BdACigL0Im/+sxnWVlaoyoKXAg03oHSCCHwITBpWpq6mSoFGVIHMnOcCn0AWUqkUkBn0UTvOqnUGEzOVEqhc6KqSgqjaVvPzic8jU1bKnIMQGL1iOb6f/57UHDw0H6G9RApJIUSSAltyGghGK+tsHf/Cqux5GXv+iCHHnmAC5/zq/z9dT/inEueSn9WkvOIY07axG/9+ft4xZX/wp13PYDecgKhfxyP7j8CrqXUBp8SUkClFOsrq4yayLUffR8rRwwoCzmx7dhNHP+E82lci5Ca5AP1ZELjAm3jOzoiQISIRELyWFN0ECnzix0UYqYNjpAhpIhva9q6JvjYCd1SUynJoKq4/eYf8/I3vhbaMfhI9pH3vfb3OP30k0lNS86J4COjegIJTPDs3bOPW+5+hGe95s955+e+yxuv+hgLm7fzvN99M3d880t85UN/SwxyysdKVg61fPSPX8Vo+Qhv+sh/cMJjTuaNH7iGt3/8m8TB0dx59/2InOipblauTyZM6gmnnLKTq97we+SUySkjcs2lr3wVt996N963tD50DwXvIQU0Eq0t2iqsMaAUtfeM2m4GaQDnPc57ysJ0OrCEQKYqOrnAhYAikbOGtuZ5L30Z23ZU5NQiEOx7ZI3BILP/yGFi01IpRRKK8XjC3g3HY895Ki971aWccf7T+OH1X+ZL//huWpeYmZ3lMWc9hT/97Le4+Yuf4Yt/8y6Of+J5LO3fR1GU/Mbb3k5v5ljuu/VGDuy+gztu+DJnPu0i3nzVp7n7Bzdz7dXv5757bmdh61zHr1xDchVzvczBPWscc2xJjpHjH7ODE8+4kOAOoMgoo8lKkjOEDClEJo3HhUBCEnxLjmWnswM7zzxm/oqN8cQWhZnq/RmlDGk6Q6RWhClOGY1qLn3NH7J91xaQCqG28Zkr/wbpVhmPxjTOda6DVgzXR1z+jvdz0aUvZO/dd/PVD17JrsefzjNe+krOuPCXWXz0AZb3PsT2k07kxDNO5JcufDFfv+pvef5r385JZ5+KEIEfXns9//mFT3DRS1/B7m9/jR9+83p2nnoSx516NOc//zIed8EzueHL32BW+w5iNA5rC+65+yHOffZzILQILZnZdBT33PQtqsp0nl5OTBpHGyI+po52CEHKiYhgYK2/bc/iJzWAEt1ZliGSRSIpScy5kznJ3UoqibGGI63l2JOOhbpFKMGoXuXB277D8ScehSEjlCTEzMR7Nm2a4/qPfYADTzqf4B2veO8/Aavk9AgIwQW/9qsc2XOIGz95DQvbj+K8X72Can4zMTjuuuEm9tx5Jyed/RRe/pd/hbElp1/wJB647Uf8x9/9DdtPOJlfefllHHXcLnZs30qaHCHljG8alNXsu/U7jNaHDCogek547DFsOIH0HhcSCTpxP2XIgkQi+k6Ew3skgZ/5Yjuf9vjjr2h8tEZ3yr+SGasVMsdOMZQdJlFGk808L7r8JYiptPqtL3yT0aGHaCYbCKHQJKyRyJwoq5LVwwdYWd7ACBitLrLjhJNRRkzNFEdvLnHKuc/myMMPcP01H2Bx34OsHtxPf36Bp/+P32LrrhIpWsCTc6aa24Qu5rj/5m/RjAU3fu7fGB+8twsexIgiU2jNYKZi5CpOPmEbIiZKW/Clz3yVuRnZzdWYOntJayChfmZKpc79HZTW37pnuaMatiiwRYGQCluWWGPQSlGUJYVRFEbTK0vGq+ucds65iDDuRnzO3PfDOykrg0PSxMCoaYhCYpThkfse5tQLX8DMlm0MjjqO4087l2uvuoql/RsIIYCAlFsYruxnce9eisEco9UhvflNrB1a5P5bvgtsR8hjWHxknR988XruvflWTnvq+Zx47gVc/8kP0+zfzea5AYXKGCVxKbDROJBw7x13QtUjx4jqWU45/TTqjRorMkZmekWFBrSUpBzIORJTAiGI0f+CzU9lKqTUpNyZfmnqLihlkFqiyLhxy0mPexyisIiUSbYiDVeQwSNjhyNyEoyHY+7dt8Jlb3w7v/LS3wDgqx/8MHd++xuc9+sv55YvfIoTzzyLwaYdPHTb11g9vMTJ553HqU9+Jh943W9y8UtfwfriPTx85718/YPvY27zZqq5BX7p/HOY37YdGFCPR+za2kepyPqkYVJPwwsZUmrBaNJolVxUyHYMRE553Gk8cuv12M2ziJSIKSKUJLkAwpJFd0oEAaHLzgTtBLN1xuMJVgmS6RzU0mpCDBhrkCGjjWZpbcj2E45DuG4gZr2derRKv8ydhxZaZmZK9h+pefNHPsspT9hCSiuQEs995Uu564bb+eJ7/zcv/8v38uX3/x1KCM55/rPYuutEcp7hhn/9AKmpufnzH+OCl/wGCzu2sXr4bG7+90/xvMueA/RYO7zIV696N4uHVxk3gry2jDEWmT0zZZcFcK5FkmgmK+SkQRWQYceJJ7AxrqnmBmShcd51Ljjd0I45E1PCO0+I9hc7KKdEzpGM7qh/DISpowlACJAKmjrR61lwjiwVmcTG+hrZQ4yhA4SjGqkNrq5BlAg3RkhBzo7Tn/4kipkZPvKGVyPIPO/1b2N536P86NqPYivDKU85lwv/35ew+Mh+bvr4NWQpOfHsC1g9cIBvXf051g8vMn/0Dp7+0pey48Rj+Oj/upLFH1+HLRVt0DgXyELgI4RxTeMTOReQEyJIev0K77pBnEJAooi5kzsEU98sgbEGEbtrlwCxneDGE1RKiBSRKSJzQKWI8o5CS7RIGGPQNpJDQDgHORG9IwbXCefOkXJi2+aCz7zzbdxx/R0IY6ZabyD7DU456zgu+5O30Y5W+NCrf5vVwwe5+GWX8bT/8QKOPmEeKdbZceJ2zv9/Lmew+Wj+9U2/w+rSYU580nlc+pbf5+IrfoWjT1pAMub4M85go87Uk3H3tJWiS7jpjvel4H5hmoSGst+DkOlZhVaZQgl61tAvLJVRWEHnegSPluIXbF5JhS06uUIJgVISkTJaTg3EGFFSUVmDFKbbEUZ1LqeS9IzBSkHPWgZlSSEkp560hds+/n6+dfWXEGZzN9tSIgfP7Bz8z/f8IyecdTbz23agjSATQM2R4ma+9r6P8PE/fgNKCl71kQ/z2g++l+MfNw9pDXIm+0j2gSc983yEKCiLAiMEMngKY6BtKLTqnFoUpADaIkREC5BZTM3MSGhbYuvIKRNjIIXYkWLVWdQaIOZECAEvFEp2WzATCBmMsaSUoW1YH09w3oGcRYQAomGSFCZEYggIASYlau+YRM/m+Xn23vZNvrixxnNf/T+R1kEKZARFVXP5O9/F/331qxgv/zInnP0U9t55Iw/echPnv/Q3OfqUk4F1cnbg1sDYDhmkBEogoqI/s4WxV2xC0EZHCBFEJORMCh4vCxBjcBGoGY8mNMDaeERMdLgpBHKC1o+ICFKGcdNiYscSugVCIrVFaInQprNMjEJOGa/ICalLykHB0sFlTpgvu3MtGqreLEqvE5qEVBlTWDQC0TaktjMB3CN38M+vv58rrnw3VRHJSuGaBW742IeJw0Nc/7Fr2HXt57nw1e/kzOc+GZEDOR1CCN1hE1NA7BxVZEE9zHzlgx/h4f+8njMeM0PbjMlBEIzAhYgko5Wi7A06322ab1xbXKc/KFHGknxES0UMCQqNyl0YIsSAUJbuf/kZF2sb6rolOkkOAa0lKYBRCknGKIVCsHW+z5GHD5DPfSzCO4RvWdi0QNFM8DOC7DuaEaMnp8zhpVWs1Yybkqdf/mI++cfv5MxnP4dHd9/NZHWJ4858Apf/zT9yaM9hvveBd/Dl9/wpr/zwP5NZgxBBQRYSITXeVTx02z3c/e3vsrLnAU6+6GIeFJnxZMLGqCalgNYGmWKnZ5Exg3mE9+QUyVqz/7772LowQAlBFnSBVa27pIqWpAgag1IeY02XjusyioqyqugZRTl1AwqjUVKgZTfJlRIsDBbYd99usn0WCJDB0duynfUH97C2vIQuKrTypOgpy7KL76aMlZFTzj2D0y96Ij+56Vae//rXo3QNaYOM5JF7VhjWDcODq3zzqqu55PcuBaXJsqBeb3j4R3dy08c/ibEVF778ck550h9SjzI3fupqZotMaTR17Qkx0Ym+gtB45nbuQDYN5EwSgj27d9PvW0ajDugq6Gz0lLpsEwmhBNGYbkb9bAZtmZ8nb0wolECLjFYSKcBoiRFyChwjVb/i3h/fhV8bUbiarARPuOhCrr7uC2zfNoOSYLXCmC4WAxlpDM4JUm7YtG0TF7z4AuAgOUtE7FxUJTVt7Tn/N1/NbZ+6iiddeimj1SXu/Mo3WD18iF2nn8aL3/bHbD9xDpqaPDkI4mi899RB4UOgLAoQ0MYu0nfoyJBLXnlRpw6mTDMJHD64j4Wq25HdAoBz3ezyCXyKuNCpi/NzfYSQ3QIJ2QFBKTJlVZJjIE/dR+8cOXZ55Unr8HnA0uIqx8xaRFJc8LwL+OCbJH1rSMGhRCbEhMsZpRV4T6UrpCjIwUPsInhMcQa5C1BZoznvRS9g349/yMf/6PVs23Uij73wIp77y69BiDWy89CMu8+4FkygZw2lhroOTNouoC6lpNKWepx46vMvgkN7QQgOL66ic0PdOkZ1Q5aCGDok3SXbQEWBSoEcA23bQs5ZQ5fda9oxTfKM67rjWSkiJcg8zRfmLipXWcGD9z/KMRed3rkQYcxlb/hDbvvsVSgtcSGhhMBahcmRwnTx3euv/jiXveW1FEVDbltEl2oCrTuSKxTt+DCXvf31tGPH7LZ5lGyhPUSWGpG6LU9OiPmj0Y1i5CJVEFgitjDULjKuG2qXeeEfvAH8BvRKEJL77vwRlprWTZNvQiBtl+ZvJg1RCJwPxJQRWqFUFxqVAAcWF1leXWNjNKZuGoL3CCkgdaGBwlr6vR6DwrB5rsd113yaaKsOTa9t8PQXXcziRsBUJRpBpTU2J7JQ1C7Sm61I++7gE29+Kw/cdRDRnwMpyEJCXaOUh6mr0JsRLGxVSCYdYjfFFMcYhB1w5HDkhms+z7+87lVsm5M0wVOnLmlbWcmm2RmW1hwXP/8C8tIqufU4LNf/y9XMzVT0raHSEhEjwTmi7waykpqyrLBFgQuRNqRfUI2Y0tSZEB03yQmLpiwMlbEoMlIIRO4Q0vrBn/Kjm3dz9hm7yEXJnFac9rTncfj2r7CwMEP0kTqBIFEWmtQ0tDZQ2lV+cNXfcODJl3DBy16EoCFLSYoCpRVSWEixS4BIyDEijIbyGPb86C6+95lPU0wW0TLSsw2yX5I3HE5A7boLziHy5EtezNxcRR5PEM7x3W/fSAxr1MHiYxe1E0JS5ISLmbppaOuWkAXCWKqyYjDb+8VTjJy79Kcu6BUFlZZY3Z1LQcLYDqT5EFlcXee4x+zkhn//Amc95Y+6uywSr/nrt/GWjYMbxgAAEUNJREFUZ9xMIFCHgLUWTcLkRF23jFvJvJBs37KZvbd8g889fB9P+91XsmVnRUwKqQHhu8yQd2C3MXQNu7/yLQ7ddRtp4xAzOjMOnta1jOqWtdEIazQDk6hFQqqCwxsDfud/vZo8GYFWpNk5vvulrzO3UHFkaQmyQFszLchoEp6qrNC6oHYtjY+MxmMmOvwX49AoBlVBZSz25/QidPm9smRYN6yPapCS3mDAcDxm7923sPsnS4he2c2S0RK/9dfv5P77D3SPeBIiR+rgmISAFBIZA/sOHiRFx2w4zH+8/U3ce/Oj5FyikkBgyKpiEvp8430f5dOvfSXDH11HPy7T+prxxpDFpSMcPLJEamtECLTOk7Vh08yAxYOrvO6v/wSWl6BtEUrxwxt/ilx9mOi6KkLMmdFwxNrGBhtNi09dglYZhdGasiiZmRlQ2U4BUMDOc4/fcsW4DdaaLl5bVgVCatrQefPWGgaDGVKMtHVNZTQ7j9rEndd9i7Of+zxM7CpMW4/ewtzRj+M///1TLMz18ChaFymsptKCceNonUdnT+0DM4OSvd+/ltu+/336wjEOA27+12s48N3ryMMDbJoxHFpepp6MWV5dx0WPCJ46ROqmpTSShCIryU92P8jlf/4PnHXxGeRxjRCwXMMH3vQWNm8yOB8gTS0eZQgpMRmNaZ0ndIktMgKJIKTIbFX4Wx5Z+UQn2m/vX+GzslVlycC4diQBVhsGszOIlAjBY7Vitt9D5q6XMdMvuPf+Jc566tngHVjN8aedyNKKYPdtP8AUitIqZsuC1kW8AJPBGsOodrjJiMFMn34R2bFplv333Mb2hRLXNiwvr9BMxmzUDa5pAJg0rqtQ5UQQXc+sVxoefuQwT37Jb/PC334+2bVQaISp+OD/+RBVPMLiyirj0RCRE0IqZOpqENoanPdMJjWN66yvKARZKQbW+FseWe4W6PyTj75ieTi2LkZiiMwtzDKoeiitusaOlsxWJUp0gDGnxHDS0riW8ZFDtHqexzzlCeAaWF/lzKedg5jbyfe/+FV2HTVLloZx2yIF9KzGJ6jrmp41TLzvvCrf4GNmMh4zXF+ljp3s0vhICJ7SWnzOeB8otGYyGROlYM8Dh/i1t/wFl77ixeT1dYgJMbfAFz7wSZbu/h6jpmY8meBjwqcOgkjZ8UwlJFrrLiXnAqPJhOFoTExQaOnv2L/WLdBjNtsrmpDtoCyZn59F5IxrGkTwzFYVpVaEFIgx4FrPZAqwyl6PhbmKtQfupbftZLYdNQNRQNNw8hNOYfMJp3Hnjd9nPNpAKpjrVQA0vhPXrdFMml8kL0Z1A6HL6kwmNVp2KaY2REqrSSnjY7drgoscXhO8+I/+mGe85GKyazrBq9fj1mvv4MFvf4H+wLK+uoJzsQOGKdOEgGvb7oksOvtUTMOeylhAMJrUiBz8vSvtJyTA/NwcmzZtoqhKRqMRvm3oF4Z+vwIBLgRCjNQ+0k7tWC0l0bV0lZyWf3nrm/nx7fsguM5fioELXvBk3vqZT8Pmx7G66ruFn4aViqrLCiYyCtG1C6e9sratMVUFQv082OR8wOpOxXzokSXsjlP5iy//Bxc/7zzS0mKHzAez3P6tH3Pdh/+OJjmWlpcoy5KF2T5Gdg9sJTVZa0ato2maTpeeQhgtMoN+j7n5eXq9HnnK13aec9yWK5bXhza5ltmqpFdYhBQk76Ymf2TiHEJIysIipaRfFVRas3zkMFkothy1wI9uuAk1fxzHnXky4CFkitTwzMtfxEnnXsx9ux9i355HiG3NTFUQgJQF/bKY5gM9pS0wxtK0DVoolMw0PrK6uMx4HOgfdwa//qd/xvNf+TJsGnf+nJZQ9rnhE9fyk69/GmES6+vrjCYNelqhKK0ixoTznhACSNUBQucQueuvZehaRTGxaVD62/dOj9jp23pXJKRdmJvpVMQUETmRhaTxAR8jRmuM1iglmS1LtISVlWVM1aNNifW1dTYv9Dh01w85fGDM8Wc+EaMzeTyGlNi0czNPedFL2HnamdRes3RoiUOHjjCZNJRa4nzA+4BMifF4yMbYsTGqWV9tCNVmTnjqs3j2q17DC175GjbPB6jHUFhE2WNcSz79nqt54IYvMTtnWVlZYTiaIKbhU4lACoFU3dwJKU1rV4ksJY3vSjUd8FO03jNbFP62/WufEMD5b3jmad9YHDcDJboMjZk2CV3oiiDWaIy1qJiZn60QSbC8vIgtCiIC5x2FscwUhqO2b0UKS2s2c96vX8ZZzzwb/JgcEiJmpjIBtdeMVjd49J77WTu0yGi0weG9ByhtZGH7seiqYvtxx7HzsafQny+phAerOzdlOrcYHMMd136H733q44RmmSQT45Vl1DSA0CaIrkPjvbLETqM3zgfGjaNuPTFnfIz42HVllRQkodk2KMcfuuXR53e+WE5dAUQAxuCjJ8WAINMr+ygh0CkyPzOL956V5SWqXg+PoB6N6fVK8A5VdXevPzeHzIe47v/+Aw//4Mmc++IXcvRJO1A6wHhIJlHGmmqTZesl5wCDqX/gp+wnQa5BZEiePBySE50AWg4IRY999zzMzf92NWLxAbb0IwebwJGDh4khUhUGay3EjLNd0W59NGJQ9SiKEujaS0jBpPVdAo4uATdpHDEFUq8A6Nj8pB53np8UYlzXSDL9XkVhLUpKrMrMDWYZj4asra7Sn5nDA6ONdWZmZxHB068KvPcELOOlFXJIHLV9M/nIT/jOP/yESbGds571K5z1K09GqgyrS2RfI3KAviCvryO0gdL+Ip4iBVmJjo/1thJD4rYvXMeD37+JevUAQmVEiqQm0oxHSK3xKTNqWqqcsLYkp0w7HfSra2v0ej0Gg5LsBP0ERhtWhxNCSJ2mXhjaScvaZNw1kzrpvsyNHwoZwOqOvWutu/yNLSisZm1tlY2NDQZz89Rti3OOwcwMbjRkdnamq0HmjEayvrbKzOyAyXjMipIIW1CKA+z+/DXs/sKn2PqYX6LcsYttu47m6JOOo696qEGJVhYoCXlIjJHh4jJLew+wtPcRlvbsYfnRB5i3gb4ReJNZH03YWF9lruqhp33ZlBNCdgpjzgJrLDF3tYOi16P2jjQSzPRKQJLahtl+Bz9GretcDaOz0TanFIIG4rD23ruWsiyx1nYDWUj6lcUYzfrGOsPRiNmFzQTvmDQNg14fQqAoO2OujWCrHhsb62hryM2EXBYsLi4jpynavpTMzg0YP3oX7eL97L+55S66TPa4TYxGnpmqc1LaCP2eZWFgMFpQ1y1WRJY3xmTfklAdqMuwsr5OvyrpF5ambXGp05pb57scpNFYbXBTBD2pJ8QY6ZcWW1QI1TktWQp8Aia1iKIXgKgBv+rT4fmZ3iahCiChp3xMG8Pi0hGaSc38lq00TctoPKJfdtVv7x3z8wvE5JHa0ExqRqMxm2Zn0EqRgUnjKbQmTWqS7LLIwlisLdDAwvyAQa+inzKbN0cW+n3aZkwdYGNjnfG4oG1rVjfGoDVt22AE00ZRJ+atjxsGgwFaJPq9AampadsWow1hMqEc9LGFoRnV+JAx1jJpGpz3zM4MSFOgaLVhtux6mOsuHwJaBcxE5M6TNvfP9jHlSmvRKy1KSFaWl5iMJsxv3UrjWjbWN+j3KqzWZNcymJkhpYTznVSytrba/V1JelWf2rvOWY0JlRO+bcnAaDyhHtddBzVl6saxvLzK2uoqRM/q6hrD8YRx0+LqBh89w9GQjGRSN5TWEmPEFgXjusYWBRvDEZs2LdBMRiBVt3u6ftTPK6WFsWTRZZ+00rTe07iuvSS0AmSOUoi+lty5VH91eWNyvQQ2Hj68cruUqpVSZFsVxCw4cPAgw+GQua1baVrH2tpaJ2MoQzMZ0+sPunagaxnMz7O0dARtLaVSKClBKXyclsJz15WXSnVvXlCaQPcGhtY1jOsJGxvrOB8YDjdo6hYXIpPxpGsmO4eSEhe7HmrXH+kSqNqYriBMZjgc0ev3MVJSVRVZ5A7vZMVkPMGHSKEUUkDMGVsWxJRYHU6m7wlBgMimGvj79i3dDGxIYAg8tHe9uWXrTE/WdZP379+XG+cZbNrKZNKwurqKtV0SP7QTqqrXHZ/WUc3Os7G+QSBjlerOvC2om6a7WylPX3ASCD4waVtSSnjXEKfvNkhIpC1wbdsJ/sERQ8C5zsrxbUvO0NYt2lgmjQME3nustbgQMVWPxZUVpDIdoAW0trTO06ZETJlJUxNzwghJCp4QIlJrXAysDcd50rg8KIx4aHH1VuBhYCiBGtjznXsPfDXGFA4fOkzro+jNLdC0jqWVFUxRYI2haSaklFHGMBpPyLp7A8Pi4jLWdL1zpos0agMpJkKKyJhwIYLSRDrSKKUm50wIofOzUqdhZyFAaiIglOoKe1JjtJ2m5SQueCKC9Y0NBOBd1ycJ0rK0soo2BiUlSpmOKvlO84kpsba+1lnfxhB8xIeI0hbnvVjdGKGliDfcd/jr0wWqf/bmBZdSFg8vbshfOmrudFX1RcypO1ZVIXpVRWhrhJTMDGZp25aAZHZujsXFJaRWFNNmdFVVjFtHpANiAkGK/ucFXD+thEfv0UIghKAJmbpuup57TsREF2HJCT+toccYmdRtV5TzqVM9c+6i3sYwnowpq4q19TWq/qAjzGlqcztP4xxCaVKItC6gywIpBJOmzTELUoLZXpG++ONHP7VRuy8D9/xsSDOFsM3Ex4CtZk/a1DvxwOFFoYylX/WFryc5+Ch6vR4hJWoXGMzOsjHcYLgxpCotKQasLsgoRs5jtMI7R1EUuLompURAIZTqOFdOlGWJsSV17EhjCBEtJFlKXOyORaJ7p0dMmTZ42tS9sWFjY0T//6vmbH4kp4Eo/nOcpDtJb093zzIrwQVGCK3EAYm/e/eC4ICExAkuCLghrYDlMMzCbIue7nS+HMcuDnYPsxIfyw1yiRKl7LjkKqtU772yCkl7ltONgVIwiaJtG1arNeMYGIUOYq3nSLKccbQYayXJZkp8UIfZVHP5+kX9+fNt/QT4CtjdFzchhlqzrbvmat/Ke49Wl+tqntZdL9aOqigKtM6kbltVVAucF3a7W/JZHo5xEYqq4tC2eBFQGu89iQjjGLQ1ehcwgON46oQGEYDBeroh0AGKogx8scEgKqXtehQqQFO8UHeGeVVyaFpmeco4OdIsxynoB0uaZRwPDfksJ53NQh7zghMJyR1EqUQNxqjeOLlYLZROtP302S8f/3BzeAp8AbwI9c6rDvJAA+y70dXXR1svy3y10jxYVIXOspRj1ys1K8jSTLa/7dTkXNgpkyPL51jnOQ4GnQUtjUQHJxk74lRKbyYSHarlLOIgndJ0p0V4QSuFsY7WTqg8px0G0iyj7Xoc0BhLkuWRvqSxUziqkzSnGUwIIxTHpmFelDgPozGMosQG2pNKdBIUs5Sfro/26rPvX360rftPgC+BqxhRf65AFavFC+B94MOzIv/g7c3i8bsPq3cWRba8WC+T5nik3u/ZrB6QOEeiNOvNkrrtsGakXC4RERY6wQwDOlWY2NzLshzXd2wWJfM8x2dzbpsGpQQ9eTZlzuAs/QRpVXHYH6jyHO0tCsXL2wPFek2Cou871mVJ27acnT+kMSO9MRRFyfbmVzbLBedvPOJ2t2NwnmYwHEfnd910vNo1P/28757te/st8A3wHXADESD9Nw46QfNK4E3gErhU8JZO1CZJVIWIFpEkUaHRqFBBXyPK4UTcQlSD8VHoI15CpGyGBM6d3R8Ty+mzKKcTxjohjyV0fVERoxSkee6GP83rfUCgnGR6BBFk8kLnRHYiXAPPgR9jSLV3076Gg+7/7xw4A87jvYzv/8n2v3ZJTCMdcIhJ+BCf5a+M/s0i1b2c9X9zziv7NyJ/5XUMfgfreajRpyEnJAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/apple-touch-icon-114x114.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAHIAAAByCAYAAACP3YV9AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wCBBQfJLb8UyAAACAASURBVHjanLx5uGVpVeb5W9+w9znnjjHPkUPkAJkkmZBMmUJCQgKSlCAoMpUlkxYUaolSSFdbTjiUjUOVPmW3LdgqWKiopSgKCBQJyZSZJDkPkVMMGRnzcIdzzt77G1b/8e0bEdYj3dUdz3OHOPfefc7Z6/vWete73vcT/r/9k/6rBZx3zs/OjKrKe59ycihOUSNgVBFQOfc3cu5z/0lRUEAE+u9Fznu2/sff+Z/21xSQc/9D++/OXkzPfZHzrqn/9F2d/e3/4fF/7kXIuTeCrv3Bee9j7clk7bHyae0jK2RBkjESQ0zd6mTahRACEIH0nZ/5/zkw/zO/J30Aqz0X7p5zRoYvv+GFVz/zist/cPPGxRskh7mBs7W1lpmBx4jBxIDzFaZ/QypgjUMqB25A6lpiClhXkVKAlKiM6d+8oJrImslYsgiaM5pSuY4qOQUEpR6MwDiSMRixhG6KYPCDAVYgNw0qAimBM2SxJM3kmFAUZyxWDM4YsiZS7MBYsnHlrocOBZx1iCZEBOcqrKvIOdK0UxCLcZ6cEjkFUgrUvqKqhqTQkmJARcgxszKZsNqMaZN0Ocv46NLKV+5/6NE/+tyXvvJtNWb62L6Dq0DXB1X/ZwL6/xpIY4zknF0fwIVnX/G0C172wue/fc+ube/aODuUFFrOnDnFeOkUp8+cYXVlmdOnzzBpO80xSW0toCWwBqyx1JXF+ZoYO6JC1oymgKpB1eCNIsagWUk5E3Mmi5AFNGVAyLHFqMVYYVBVGJvJCgYpy91Yam9xBqbjKdZWtF2HrwxYT+g6MoIYgZioqwqjJSXEpGRRjHOEEGlDRDQz8A6jCe88xkLla2JUVpsprqoAaEMkpowXZXFmlpRTuV5OxJBUnMjc/AK+GjA/O2Jh/QZm5xfA16xMI/uPHP/Yrd+65/dvu+f+x584cOgM0BljUs45//8OpLXWpJR8PRjMveK7nnfxd9/wgrc9bffO98yZxNHDBzj05CGdTsdkzdLFTEJJMWB8TewaMA6DwRshpghkal8jBmZmhsSuIWYIMWGsxVhP6KZ4WyH0AVYldC1Yj1pHTrnc7NBgVXDWUlUeYxUrFSoZFUsILYPBgEoMIURiTOSsVJWjjS0YT4wBRNAUGdWDPl0amrZBjeB8zXQ6JaSMd5aBd1hj8NbgnSdrZtp2JAQrSszQhIgB5gY1zhq6tiHTZxM1NDHShIAiWAEjQoxB68GQyy66WHbt3MlYHY8ePvZ7n7n1jj/8x6/e9mgzna44a0NM6TsG036nABsjNuc8wNj1P/5Db/zeV15/7e/sWT+66cTBR7n3vnv02NEjqCZxzomvKsTZsos0Y4wgxiLWkFUxAsaY/ufgnMMYgx8MMdaQcwJRnHGIq8gpYa3FGFAUMQ5sqaqIgBGcdYAiSEmNzgAZqSoQyDnjvcfkQBYhhBZjHc4ZVAQ15fVKVlxV463FWkvO5TmcL9dJCuSIdxbvK6wRrLOIEXJWuhgRjYj3dLEEqBZlULuSSjVjjEMRgia6WN6rdxYngvEOI1ZyznLs8GHd98QTVDnKnl3bnrPnwgv+xQU7dpz65t0PHIgpRpHvnGbtdwiiyVkHG9Ytbvngj/zLd119ya5fdc3SugfuvVcPHz2CNYivKjG2BMdYwVuHkDEiiLUYZ0th1URWcN6jOZXfMwKaqOsBEDHVEOM81pXg5BSwxmGs4GyFGEFEEQFrPTm1GCN448tX7xnUA8SAsaXGijF4X66hOWGsK2+4sms1o6R7a7AiVN5jjEU1o6LYyqMCKUSc91R1hTcGZx3el1oaVRHnEI2olN1X1wNGA4cRUCwipkc3SkiJlCOV93hnEVFQQTRROU/lvSBGjp04qaePH2Pbwuzcjh3bb77q6ZdPH9x/8LGVldVGIP9zwbT/TE10Oetg/eLClg/+8Fve97QdGz8wPXXUPPTwXj29vCTWWRlUNdZZjDEgCkaw1uK8L/VLE6oJY30PUC0qJQ1qTmeXlbNlV6omcsqogvUOwfSAwpddQ9nhGDmLDI21JWAKzlucsxhryi7tl67zHmcsqgVoqSZ8PewXSzoLNL2vcE6ATM6KWAsGYghnF2HlLNYYrDNYK+SUSCqINQiG0AaMG1A7g7OCdQNyTqiW7BBSoksR73yfkQTEgmaMgDOmR9QKRmV1OpFTp5d0ZuBk29YtN1x6wa7hXQ8+evekaabGmKyq+TsGcm0nYs3G9739De952o6NP3niyJPsffQRzTmJrz0Yg+aMcyUViYAxFkERtKQde27Viyk3SHPGWov3vqRAY1BN5U2LnA2wdR4x0qfoctNEBBFDD2ZLoEvqwNiyiNZSsfQLLKeItQK5w7i6R8ceVzkwgsaCeFUjvqqw1qEKKSWMKwsidh0IeG/x1mKMUFUVqpGYYgFLCBkhAd4KAy/9LhQ0lyC2oSEm+lKQsP2CzCnijKPyFaqKUMqMkvHOEXKSQydOqsYgW9ctXrt718701bvuvz/n3BqRfH53dn4gjSr1zMzMhne/6XVvufaSnT+7dPyIPLbvgFqyOGdwziFiiClijMFZg7UGayyqEUExRjDS1z0VjFiMc2hWsirWGFDta6bHoFSDIWJdDzwCxpRUJDnjnC87SDNY16PZc22WpIyzDmctkkuboDmhxmJEsK4ALpFSQ53zqIJmwJSFaI3grO9bHsVYwDhyBmtdQakiWFPqO2JLrcsJVElZETEM6gHOWXLK5LwWtkTTtRhXYQWsAesrVKC8snPNsyAYa/G+JudEFyIxJTl24rRWkmTHts3X7d69+9R9j+7b23Vdy3lp1pyHXh0we83TL7niOXu2/7uqncjBJ59UaxBjHWJcWdH9mwk50XQNqkrOob8zJeU4Z6gHA4yGsrtywtpyI5OWnZRiV1azGlIPbkRzqWfGYJ0j5dSnQAWNBTQB1jlsXZ9tbrNmEMVWg7P1UXLEiMH2aTKn7uxCE1WMrzDOlYXWl4icyr0REVTP7XgjlGu5kt5zVjQGjLOknFEE7x3Oll2FWFJoS5CToioYIyUt+wrE9CXBIQZKllTEaLlPWlquiBBjwghy8MgRpRtzzSU73//8q6+4BpjrYyb/YyDrzRvWbX3F869+36KE9Y/v26ekINaAOAf9Exrn8ZVDROlSpI0R1T7fn+1mDN5aXFVjrEFjh4hgXUVMHSkr1tYApZcMgRwbnPcY60qa0Yw4hxowzuFcVYBUXxpEShq21QDVUouM8RjrMb4utXst0n1w12qsCuTYluAaU2qxGHLO5BzIWmqo5lSSp4DxJbVrToQUML4CsWTK41YyhjVYqWBKkLuuwfkK6yzWV2URQAF9YsrrFXPeojN0ORBTRsVgvGc4rHFG5MBTR3S9l7lXPv+q92/duG4rUK/FcC2QHpi//MKdz7xo/eiV+588xMlTJ/ueSRg4i+3RZkGiihUQlbL9M6XdcBXGlbQgCJUVrBGqqsYYwTkDqSsv0FjQkppyzoiWvsp5V4JuCprLWftd2vddziJkSKlHqNq3Ihml1FXR8vzGW0RcX7t9SZ+a+5oLpFh2KEpOETEWVw0KsFLFoFgRrCmsjzWWGNqyoL0rNdQIlXdU3hXUm0vlBIg5llbJO6xwtqQ4KbsczeW12TUsAKnfjSEFDMpwUDOoPM4K0/GY/fueYPfi6EXPvPzSa8WYhT52mP6j3rppw+ZX3fD8985XliMnT6tYK0kVaz1GoLIWckbLeitvuh6AdUzaKZPphNA1ZFVUIaY+mM5hqgElPVuqwQyaO6ImMgpiCTGQMCWl+qrnYTOmGpatl+NZMCQYzFmuM6MipJzKTtOCWMWW1U/fs4mcx/GKoLHD+BpbDTGYQg8KGOOw1qMxkVPEOIf1pZUQU/4+q0WMQxRiDEiKWDIihtCOUVVijCSFhOCqAaZH0TmXFK2pK8Aql4VqrAVrCQpdF0ipvJaq8tS+7FznKryInDx1Wmcrw40vuOrHN69f3Ly2K02fZ2di1264aN3gulMrY2pnqavCrsTQIQpWtPRaa0hVDNY6rC1AomkDIaZCIEshrtU40A6nobQGOWC9w/mKLkwLp54zRiwpJlKMEBuMK2laNCHWoKZvQzRjpDTwQqlTpd2AlEJJsSn1dGAJUKlVhbdVlBybkj3IhXDIXdnRuYC1FJqyMHoUbkTOA3CK9v9v2waxDucEX/UACiE0YxSIuZSHglAhxVTqqghGXKnpZo2ESISuo23bwtuSqb3FEqG/Ru083lssQU6cXuLC9bPXOGs2AzOAs0BdebflpuuvfeOeDaPrnjpyjNq7s80+fdF3zvYVYI3LV8gFwhvngQJaJOceIPRIUcA7T2ynxNggpi6Pp3S2JUAVzYoxYHJX6pNqqZc5FnZIy6rPKZXgGIu1vlCCYkpgyLiqJrcNiENj29fU0g6Ytd1tfD/iKOnSOEuMEWMLwApdi7F1ATDGIpJBMykJqRujIsQ2YL2ndp4cW8ASU8kMXVBSnOJ8DakQ/SKGyplz0xroWzMlhI6gQkoZ6zxVVVFVHhSclAVsbclu3nsmk1Y3z41E61H34OMH74wprRqg9s4t7t60+KrTy8scW1rWJkacs3irVINSM2K/Gn1/MUUL9hVHDi2gJLGsTsd0XaDrpsQYSDETQsdgOCw3pQccph5gXE3IJcWoUMhlM8DVI4yr0b5Jjt2EpOUmGVdakBxbUtdgrCWLQcSD9CCuqlCjmHqIDEYl8UhZkOJqVMurj+24gJIYSSmSyPS9R19zFaT0vDFFQo7gh4QuoMaV5eEMGUPbNSgQEkRVrB+cRecJQeO055uFtQKVVelC4V670KGacUaxUkqOdxUigpFM5UomixlWJmPaZsrWDYs3OmvXAbUBBkaYX5wfXHTyxAkmq2M5deYMkzZQVQO8VYwkWBv7pIS3htoXvrTQTCAxYEmIrZh2kazm3ExQyo0fzsxBaJHQQugwopC6EtycyEnRnEvbkvtUpIp1NZoFY0yfOqUwNMZAjBj6vhRFNGCtwVHaJJtLO+T6vteIQdsJhA5XDxEN50gNgRQCWTPWOZwYrCnALCfQENCcyDFDCnjnERWMsRiB0E7oug5nyg6K01WwDquRyg9KNsuJHEsr1LVTgiqZ0qPWlS3UnbFYVQyZqvJUvpSwthkTUyRllYNHj1HbtEvQOaB2QKWqc5WmQXQDRJbpYubM0hIwz+xwwGjoCSGRM4RYWA3vHFaVdrKKcVWh13K5oTlEJhlGVbnpzleI8Vgx1NbSucJG55wRa2knLcPRkKyRrk0YqXHOlR4yl3SYVckxlvRoygjMqICznDh2nMnqCiEFVpbOkI1h6eRJYs5Y7yCVGjWaGTEYjchk5ucWmJsZsXnLZubnFvC2KgtJwRhBuwapB6AWTZBjQGMkJQ/G4bTDoKR+HKZqSFq4XRFDmKyC8VgVjPGkWNKr5oz3NW3omDYRjOKcpfKu9NFJMVYxmrDG4my5bgiRlIUYIqvjMVFhVr3L+Vwga9U8kjBl0jaM5hbQFEginF5eIiPMDQfUgwEhBnLoG38xWO8YuJqmnaJrEw8R8I6UEpMIo8GAjJA1krqAqStsVLrpCm4wKjvMGqbNlEFdI87QtVMGfrYHWy3GWXISUgbrMktLSxw7eYpDBw/SJWX3nmdw8TUv4sKnXcnFT78KXw/ZsvOiMueTcxTz8qnjHD98gMl4lf177+eJB+7m8P693P6tuxgOKtatX2T9pm3MjYb9RMOCFUJKZAzqa3KZouHcDCqGbKCbrJDFk8X0HKqArRDrsFJwhhpDSC1WhDYI0yagzvdSCw8aCV2D80Osc3hbMkxWaFOmCYG2CzQxEYwlho55bVDNw7VAOlXqnDKT6SreVdSDnljOltXphBgDc7Fm4IW68qSUSSmVNGjLvDEhpVb2rAlWiKFjpW2Ynx8VWK+FGPdW0NGQdjpFfIWpLLlNxFhWqPR/a8WUqb/3TKcrHD54iKeOHGbbxZfz7Bd/D+98yXdz6VXX9jTeeVoOtB+wJ/Rsis+s27yVdZu3AMo117/sLDfZtQ0P3vlVvvWVz3PbFz7DqcMHuPSyi9m5czsYS+giWXOpdVrAm6EfFjerZGMIXVf4t5DpUsDWI5zIWdYm50zlBoQcaVMkiuCM4CxobFBjqYYzVM4hOZJTGTZ0IZGiMp1OaWImpFJhY5fUFinFAPAOsKrqyIEuJBWi1CjOGrCF7Wi6jhgbFmfnmZtxGI1oDOQs51iYnBBToTGUABtDyglxnpXxlPkZV2i8OMYPZqmsI1VlQmDEYqsazYqogWTQKKhNrK4ss//gU2RT8bybvoefesPb2H7RZX0IMrCCqiAS+06q6iUvDmgRGfaBbXpqebVvvRSwqBqq2nL1dS/j6utexjs+8Ks89sBd/OOff5R7v/Z5amvYvn071XBI7mJpn6whhw4wGFuTu1i45tig1Wzhi7OiOZBywFdDJAeiZpo2kMRgURwZZyoUwYnBG4OloOwuRlLOhKRMmpaohhCawqIBOaukLrBj88btjxw8bBxgRMTMuIra14KxdG0HVYW3gsmpoKXQsTxpiSrMDSt85YkxEWNCKEQvZNpeZZJV8dWgp6QM06ZlNKwxpiLlhDFQe0fbUcZeoUUztEHx1rC81PDUseMMFjfy5vf9Etd/9+uw1vUBOYOq7YOniFQ90uz6QNbAMjALTPtF686bE6T+o58JkoCI6hQRYc8VV7Ln53+H0DZ8/i/+mM9+8g9oV55k++ZNzK9bIIdY6LmsTCYr4Gp8PUB1QNKEoWiA1EpRoQmoqZlOxsQM1lucJJwfknPCG6H2FWgkZyWrkLPQxkQTIm1SYghYVxfCJWfoGvygJpfIWteTJDIcDpkZ1KhCyEozWYHhDHU9KHM4Y0gxMp02xLZhdjigHtYYk+liJOYyDXCuCKViOwE/QHImpY5JkxBZoK4LXZVTIZqzNbQ54X1NzJnl06c4euQUC1t28daf+o9c/6rv7QMwRnWMSAL6XhSPakJk3AdrttcreWCh/7vZ81LuWiaa9t83/a6MiAxKC0MG2jLeqh2veuuP8Mo3vYPPffLj/OOff5SlAwfZumVLwQzNFFxdSHfNxBBAlaqqCbHBuhrb1/wmKEkp7ZspNTS2YwaDGYxG0FAeC4EuRLqQSj3siuqAnlbUGJGkVM7jxWB60sr1vb2ZNlOgsDe1KCENe9K3LU9uDaYuICYoLE+njHKmskJlDTGXcY5qxtUGet2OqQclfXihjZGcAjMzo4JucyqjISssLS9x4sQSZnaRF7/xHbzlve/HWA8s9akzIWJ7+WE+L6AJZZbQBEK3TIoQ29Mg0DVNSdemzDTLrlF8VZdhdG3x9ajfleP+2ufUCNCg2mKs8t1vehs3vPr1/Pn//mvc/40vYsNRRqN5BrNDRCkD6V7PU/hThzVCzIY2C9mU2mo1F7pPldrXeGewdkBKSte0dDHQRT2bWjWnMgPWMgly1pOlsGFO9KzmswQS1cl4zGQ8ZTQqKW9UDUkp0MZI7CcBviozNWIii2Fl2jBwltnRsDSxzpQVnpTa+Z6bLIhNtICQadPiXMWgMiQBkxOT1VUOHTnJjkufxds+8B/YtefpfQDpCW5Fte6DByIVKWUmy0tMllc4dfwIJ598gpUTR+jGpxifOkzSzIkn96NJsJXDGmX9tgtpu8D8hq3MLm5kcct2FrddyOKmrQzn5piZH2DtbJ9qc//8oU+7HaO5Bd72gV/m4btu4w9//UPse+xBtm5ZYP3mzUUBoYkeWmOsIeXMZNrQdS3D0Uy5d2JRVWpr8d6hqSNmRxcioU+lIaVeWyuILyXBpCLBFGvRlAldomvbHkwVKqSsRAPTrimyQ60ZiOCtZcb7vuhmuhDxRkr61EzCMg2RsLrC3GiGqvLkpDTTwjdazSBFrSb9oNcPR0xDAAyV8yyvjFlpMze94Z18/3t+CuhQPVqmFmcD2E8rGDFZOcXJw3s5euAJTu5/iKNPPMjyqeMMRyMG1YDFhXl2b9/OdLrKhds240dz5eamliYkuqhMJyuceuwgxx++nabtqObWsbjjUrZfdhXbLriE9Vt3MJyd73eqouoQyagWHvTya57DL370T/nYf/41bvvsp8icYuP6RYxzpBhwCDElpl0ixkDlK4RMDhFjLYOqwleuL2NCTIE2RJq2LQxvz9uKKEbXGCmHACln2rYjpEzScxoBtzbbG8yMGI0aUCWEQE6J4aCi8g5vDN46uhCKrLDX6FTWEDCEGFheHTM7M6K2Ql0PyKplcdpc8jqmEOopYcUyHrccOn2ILRdezhv+9bu55oUvA1ZR7foACpAKz8kC7WSFfQ98lX333snhvXeRJ2dYt349OzZvYPeOrcQYaact1sBkdYWYldWl0xi/XAROAr5yxAxOhHXr1jG7uA5RZWV1zIn993Lsodt4eH4D2y+/mu1PfzYXXnEl9XCESEDV9q8HVJ/C1yPe8YFf5OKnXcmn/uB3OXboKTbv2oGzjpwz06ZFsQyHo54xaqkHQ2pfaMoYi/61bTtiLnrYlHOZ2qTcT1wETYpISdXTZkKICYzFaC87kfMCqQptV1JnrzYhhsBkMiUNaryhrHjv6GIgJS3cZ09m174iI4ynHcFkZkZDnLXkENAs1PWwdB4pkjXRNi0PPvAY1770u3nzv/1pdl78NFRPA66/UWvSjHlSzDx+3zfYf/c3OfzwHdBO2bRxI4PNF5FzpmvGjE81xBAJqZ+OmCL2KjUy95qeHpBQ1H7OGibjMa6qUDGsW7eBwZbCrhx74OscuO92Hr/0Oex59nPZc9U1hdxnuR+Vub5On+Ilr/kBNu+4gL/83Q9z+NBeNm3YUKY1YnBS5rYpRAb1sJDmmkhRaLtQslzMpFx6UmMEyRnry8iwgGxTNlYGzeW9YRxKpN+6uobFtzoju5+xbf7mM03AieCtx1W2KLuglyuAs5a6rstoBi0X1zJ4tb3lIiKEEBES3hT9ChTJoXWGkOCeex7guS9/He/4X36Orbt2oLrS12wHGEQGKAMOPLyXb/79p3joy3/P5PAjbN24gfl165lMp5xZWmI6GdM2HU3TMBlPaJuWti1SyZQSzXRaBrUhgRi66ZRp/5hmiF1HFwKry2NCCKSc8b5ifn4dkhOHH3uII48/zOmjx3DDAQsbdvQpVvq2R1GdsHn7Jex5xrM5tH8/D951D7MLs1SVL+UgK95aBrUHFbquIybogtK0LV1XJC/GGLyryqxVy/A+p0Toyk41va0h94PxEDPDynLnvuO3nF4ZP2yBrdaa3dfu2Xrz8dPLpFzGhNZaqmpQJvVFDX1WAiGa8K5IJFJOJVeLLaq1VCTyoW0QKEyFpCJEyom7v3U3z77ptfzoh36NhfWzqB4/rxaWIIY28q3P/T23/d2fcXr//cwPKxbXrSMrLK8ssbKyxLRpSako0VOONE1DyrnXDFlyaogpl0mdguZQaLIYibEALgS6nvpa85WkFFhZXiaLYd3GDdQmc2r/XvY/+ADTaWTzrotwfoDIKqq+zyBLLKzfySVXXcvD997P4X172bhpAzl21JWjrj2qStNO6bqONiltU6Yl1tpeOO36Kb+U0d15hiTnHNYUxJ5U6WKijcpwWHHP/uO3nFmZlEB6a3Zfd/mOm8+sjrG26hVcgawRa1yB6rZIE0qzWlRjlXX4omEgxliIc9FetuCIFHmis4aqsux7Yj97rn0J7/n5X2VucQbVSSGSNfaIdJYzx49xyyd+n0P3fZWKjvnFeTKwurpSbkTb0oVA1056mrCfzGhRLYTYUlcVhAa1vlcERIwpbYhKkZiIlhrUhq5Qg5oxmui6hmlT0l5KHbV3zC8uEKcr7N97Pwcf38fWCy9nOLvQL0DTf22YmZvlsquvZ++9d3Ps4ONs37oZawyha4hZaLtIm0s/ifQyzl5Wao1gMaQcySn1E5WiAsw5EGKgi6XHDz3GWTc74K4njt1yZrUPpHN294uecfHN4y7iTIH82u+0GAOKQSQXhbS1ZaFkehFV0Xw6W8alMZfpgbVFkBVTAQhPHTrCht2X8u5f/G3Wba5RbXsQ4fv+cIbD+w7zd//Hh2mOPsLmDQuItZw+fYpJM2HatMQu9AruXmqYElaKfaD4RHIRJhtbmCctFgVU8a7XrWqxL9jCZdO2AWMt1iiWIiQOMRdBcyygrwsB5zyVg8NPPMpj997D9kuvYnZhIyItmqZlQUpmfnGBS555PXd88dPEZszMaK40910gZCkz3BTOqvJtvxMl56KQ6MdvztheBqqlr0y5sGjGFqWftSyMBtz5+LFbzqyOz+3IF155wc0rTRH8eO8xmkqezrl3RBUm3lh3Vp+paGEeVIuc3glWDDEpXTMp6jEiR48tceJ04Cd/6/fZdsHmPoicXc1Qs+/hg3zytz5EXjrGjp1bySkznUyYjsdMm4bQtYRmiu3V5XoeW2PIpX4AOUasGCyJrp1ijCt1ytmefYmQoXIWzUrsyjyzyGYcKZUFSl+rUtfQdh1dLBqexYV5JqeP8eDtX2PzRVeysGG+Lx0O0Q4ls7BuG7suuYq//sPfpx7UqLU0zRSxRWJSSlNRBWqM5Fjuh7FruETLIDsJTTstygvrsUrpIxW6LjKqXUmtq5OH11R0DJ2nsrYX+paiPxiOGA6GeFcm720bWB1PmDSBmAVvCruQeodRiBlyYOgMo8EMmpWuUx7Z+zg/+iv/md17NoKeQcSeF0ThqSeO88lf/zmqsMym7Rs5dXqJE8eP0k4mxUanvZnUWEIXIHVYpaSt0J412miMkFIZAtPTWeSS+kLX72glxoYcOnLKJO2K3QGDqvTkRy4caVZCgvG4YTyecPrUaZrVFbZu3UiVpvzph3+ep/adBBmW5xAQPOgKlz/7mfzgB3+NW7/6bVLqhdax6xkfizW2BzUJZxxGM4ZCBISodKmQjcY4rOSiKzCGmFJPHkTaNpw15Z4NZApt1zpdhgAAIABJREFUsag5j7dFICy9PNH3vaSzlpwj0/Eqq5Mpq11HtpaqqsrPkpYGNwYq51gYDdj/+EHe8J6f5tobngtpFboOpemDOODE4Ya/+I3/wJzrWLdhjsl4zJmlM6xMWpq2wzqDF4Ol6D5jziS1RVHQtUjOaCxmGGc8YsuUQMQyGM2VZipFxHiapsM6S+VrjPV07aSn14qQulldJcVU1N8pkVKkbacAhVeNgRhaxivLjObnqLTh47/8Mxx7aowyg8hMLw9JGLPKDa95Fa/4gbfzxGP7qWzhq7VtccajKfUSS1MEbdbTdYmm6wqd7xySujJIdzVZIaRIGwJdCISuwfR9LeeNBBBrSV2H8x5rSzALI1vyujjT60ld4VFDYDKJtEao69JrWpNxdkhoW5z1HD+zxGh+E69/14/gdRm8h64t14ljmm4jf/kbv4Btlti2azsrK8tMVpbJmbPzzpGp+v6rFPqUSnocjQaoBNQIEcWp4hyEaJjEjuXlJe6+90EisDAzZDKeMJhbRw5jLttzKaN1C71/MzPwg9ICVINeYpEwQNRiHYgxFG9FCkzHgaWVVUYzc2zZvMCRI6f4q9/8Bd7+od+mHhpEVqGdQoKhdfzQ+3+SH7/506yOp8yOBiVIprjy1zwyIfW0HFrsfP1AXZGCUkOga1tST6pILGDtfG/+2R3ZdaHUmJR6ViZhezOmozhwrbW96lsYztTUVdFcdiEybSNtqzTNBOsMzsJtX7uXt/37X2F+MUJVFxbClyFwlhk+9/E/4NShfezctY3J6irNdAoxk2Mh39umYXl5CdVMVQ8KwjJCEqGZjrFG8K4q80GF44cPc/TYUfYfXuLoSpmoVNUcr3znv+M/fXEv/9vffYvv/dGf57EDR/j2t+9kZXmF0XAAGmlTR9c1mKx406sCe6+kt5bhYIhgaVpFxdJ1HSvLy1xy8Q5k9Qi3/OkfcM5UbFELWGHj1nne/sGf58ATBxkMBj2YBKQ0+tNQ5pPOV/i6LkPjEIgJQsyFDIgFqxilZIpcFIXkc+cXFNRqze7rL9tx88mllWLgjF3xRZiiP1mDx0VHUnofTeVivvKgqdjEiy0VV9U89dQxnvPyV/PqH3oDdbUmFHa9NDHzwO2P8cU//h0uvGAby+MJbRtIoaMLHc5KebHOo2ssSgo98tR+oSnDumKyusLDDz7KXfc/yI6nX8vmPVdy+MDjiDje9L6f4d3/8fe47JqrqQZCVScufsazeekb342bWcdtt36Jo08eYGYwRGzN8VOn6bqGmUFFm1JRBKSE6TWwXQY1xX2MEUb1ACMwHNZ8++vfYNOFz2TTjoUiJnO+8MtW2Lr7Qu752jeYnD7K3MICoQu0oSP3iNsYUySRoSNnaNqGGBMpdGVWu+Z4FsiUldDFjsWZGe47dPqWpfHkfNR64c2TmNGwVpB7r6GWD2N7N1Yfisr2etSUegeRx1lL7Ioz+I47HuEnPvw7bL9gQxnbpICKQcSyujziox/8MdYvjHC1ZWXpNMsrZ8gkHIqzg4KKUyoLS8EaT2UNmiMpRk6cWOKRh/ey0kZueOMP87ybXsM9t3wag/KW9/8yP/jBX2H30y7HmFVEuoIsFSDgq5ZLnnkdL3/zj1AN57j9C/9IJGEXtxOC5a5v3M7cwjzDwaBwx9bRxVxKTPGQMvKeHDq6LhESVIMB3/zCF3juK99KPZSzZiAwOF+zuGEX//Anf8TGzeuIYjHYcrCFQoi9uFssMeReS6y910XIIZUdaWzZZNZhxLE4W3PvwVNfWhr3qFVVmTSTYhxxFWp6KJ8Le58004aup94sqCWm0PsBHZUxGAQnwsLCAkcPH+em172JXXvWIWFcFOGakThFteaLH/99NswKW7euZ7wyoW0brBvQtYkgFV1s0RjwxqCpEA3jySpLS0scP3mSu+56GLvuAt714T/iN//xfr7vvT/NQ9+6lYF35JCoqprYraA6Pu+4FYdI6M06hmY84cFvfpkHb7uFuW0XwOwmnn3Dy/nQX3ye9/72H3KqMTxw/8OsLq8waTui9qRmVioDKXZMQ2RpPGESOmZnHHMD5XN//H+iOipBVEXTBGunXPqsS9nxjOdx4vQKlXMkjUXT2hWKMcVIbhtsv/tz6EgpEjVhXAGUxkBxVQlJlBAzuU+t5typEKV5jl1H17UkVZKaokbMsSC2rqVr22IjwNCTKjhrGDhTzCzWcuCJo7zmbW9nbnYIqkiIaCpP99QTJ/nCJz7Gtm2baVbHeCm7u2tXgUzoGpq2I+MgBmyMrJw6w97HDvPwU6tcesPr+K3P38kvfPyvueoF1xPjUnkDQbj53f+ei654Fh/54A/zyV//ECcPrRI77QkHR4pDxkvKg1+/mz/5xffztb/6M970kz/LBz/6F+y64GIktUDi+le9gt/41Jd48wd+iSPLykN7DzAdT7A5M3IWMjRtOe0jhIbYtqwsrbJzx0a+8d8+zpF9x3qBc7HPkZW5hRGve+e/4fFHnqRpJuVUEc2Iapn051ROJEkJSZmqGlJXI2rnKSYtOauYb0OgaUI/DuSf1shrL95y85nVaUkdvUpMel9FF4tH3vm6twOs5WzpfYe9pctZTh47wUVXPptXvPn1DF1EnSn27KxQz/OJX/8v1G5Mlo520tA2E4xmnAhi67Mi4WkXOHlmlaMnlpjbvoc3/Pj/yo/84m9y1fUvoZ2scN+tn+cz/9d/4fjBw2y5YA97v/4Znn7dS3jpW36YZ730FTxyxze46+8+hmjN/JYLCNPEw7ffzlc/8VFOH9jLi3/wX/Oyt/4Is+vWs3r6GA9//RbCdMyuK59JPShm1wuf/ixe9qa3Im6WB+68mzPHjmGtMG2nqLW9o9qSYsegrhkNarz3HHnqMM980Y1IWAVXFRt+CtRz6/ny338RbwsfXHwv2gdJehea6c9CcMVfqcq0i0yacrpIVgrxHiLzMwMePrJ0y/J42pPmxuy+ZtfGmyddRKzpbYRy1oxjRM4ZSovbo5jYUlFpi7GkXOi9fY89xc1v/zdc/qyLsJbivcgKgxkO71vmT//TL3PxRVsZr06YTCfFgdw7iZ2UOnDq5ArLnecZN97M237213n1297D5p27OfLEXu74x7/lH/7gd1h6ah/Pv/n7OLL/Cb79hU9zbO99XP6Cl7Jp1zwzCyOufsnr2HThHu774t9y1xf+gSdu+yLLJ45x3Rt+kBe8/m3MbwCYELrMU488ysG7v8mJA4/zrS99nsFwI4ubNuMGDdYolz/rRdz4A29k0ioP3ruXpTOnqSuHM2A0MajqsptyZmZuxO1f+ybXvPh7mZsX6DqkacF7jMtMlhP3fuVLbN26npQizhVjlHPlYIvSchThVRtTAT6pHGahvaIo54hxnlnveOjI0i3Lk6bnWo3Zfc3OdTefWR0j6HmrxfQTcu29hb27dg3y+qrMGHsSPeXEydOR7//R97Bx62KBBs6jziEs8Pcf+Si6epTB0NNMm36kE0mpsKfWOjQEumx41bt+gu/94R/DmIbH7r6LOz/3d9z+6b9ARHnl29/Li9/0w2y58EKuuO6lzK9f5ORTB7DGMFrcwszCekSWWNyyg2fc+Dr23v5VUjS88Wd/k/mNc8AKOWWOPnGEb33uC3z7c3/F4pYdXP/Gd1B7zzf/+uM8+cgTzCxsZnZxHdY3WNdy5fNu5PpX30ybLI/c/yAzLjOoyz1ou0jIJY37qubYsSWufvENaFhFbFX43sEAU83yuT/9c3bv2tz3gWWXxRTpUu5dbbHXP5X7uuZO01zYI6wjpczcsOaho8vndqQzsvtZO+ZvXmkCdeWxCBr7QSdlu+dUDnSg9z+qFsm1Uno+aw3Hji1z+XNezHe9+iUMa9frVIvYKISKT374V9i9Y5HQdYTpFE2ZnGOhnroAxlAPauJ0zLEjx7jyuhu47R8+zZf/6k+56KqreeU738M1N/4L5jd40JMoZ4AJG7bt4pkv+x4O3Hs7j9zxTaYrU4ZzGxjOjoCKx+++gxharnrxK4Exxw8c5OGv38Pdn/8MyyeOc+Nbf4jrX/9DbNq5jUuvfQGb9zyNA/feyX1f+Cynjy8xWtjI7MIQ4RT1aJ5nPP8mnnzoAZaOHsAPBiQKKaEpo6a4pvbe/wg3vuEHsGkFfFXcz71W+NG7HmLlzBFEioq87dUCOSsxpLN+GnppR7H3l4+UlRRCCWTtePjoyvmBNLufd8nWm1cmU+p60CugpS/UqU+12ntOU9naPXqS3idZD2r2PfoUL/n+t3Llc5+OC22fnhXckHu/ejf3f+WzbNgwRzudFGcmmcqX1ep8OUlKjGU4nGHlzBnOnDqDMxnvhOte830sbloATqDaICqI+H6ElLCm5aJrbmRmbp57vvRZnnrwAWIQFrZs49E7vkHqxlz4zOdy3y238Mjtd3Dm6AGuvulmXvzmt7K4eQScKteVCRu2XcAV178YU9Xc8ZlP8+gd36KqZ9iw8zKMG/Hpj/4ud3/hr1lcmC0ushjpmhZNIE6YrStWziyz+aIr2XrpdgihAK4eHR4+tMLd37yVucUhMcb+FJBzvtLUD4VzvwNVMynms7VUY4sRy+KM54Ej5wXSW7P7+st33jxpSxG2vZG1NMLSn3phMFrUZWt9pmiZNtC7mY4eXea173wnu3ZvgtT1LuKM+EU+9dGPopPT5NgwnUwKzsq5TFKsFEcVGYNhMPDk1HHgsX0IhunSKU499STNeJUNOy7EuhmQhEpGtFCHZWh/msWtu7jsBTewcvwY933l8xx+7AGOHXyMlWOHSTmzdPwYlz7naq57/fezftsW4Bia1wBb7hGuYLwn5wpEWD3+JI/feRvbLnkW99z6Fb74Xz/CuoUB1tmz0x+rZWpUr0lHneX4iTHPednL0OWTSFLICW8cyw186a//hp27N9G1HWKKsi7FVCQfdu3MoH7U1feuZzNiLvaFuUHFg0eWb1keNw+7teajqsq0A8oOLFOQ/jQKkcLWW1MIAnMOEGmPtMbLq2zZeTHrt8xD7NC2Q6oKUYWh8OAdt3PRrlna8ZiAIfbu3a5tqStfDoJQi/WO8Zklmq5MEh6483a+510/ziXPeCbf/tzfsHz0CFe97JWs27oeYYqS+oOT+j6PZapqlhe8/odIWfmr3/w5/MxsmTRUX+Cmt/0Yl1z7HKA9K7lEquKDZI6cDE/cew/HDxwgRuGy5zyf0WjAN/7+v/EPH/sIJw4+wpaNs4xmB4SmgUTZUbaiaZvi3eznoffedjvgy2EaPTkglWfLrvUMZ9fRtalMRbRIPSyFHTN27VSRwnBpLxkpBxTGouJASbE7e9COW1MUmLWjxSjHeInpR1oUlr4YLte0Obk/LMkgTqgqx8qZVS58+mWMhg5SW/SYprjbD+87zOTMGdg+JMSuyBiyokZJKeHMgJQyHlg6cYal5SnXvvoHuPKFN3H3lz7LXf/9H9hx6dO58V+9m3s+/7d85U/+iCtufDmXPPuqXnJRvB/COmKyPHb7V7n/y7eiAje983089LWvELoxL3jtWzhw77d59LavsPOyy7nkBc9lNHsBEFANPH7ntzj82GPYasTCps3sfvpFzK6/hKMHHifHyMlH72Lb1vUMKtsDtVRGaVlp25YkQgoRLwYngenyaY7sP8LWrTVMJqWvrCrmFkZcdNmltGf2sbAwQ9dOi0/GWKwth2mkXHZjTKkccaprR8vY3kAkZ6WT/3T6YYp2JMZQEKpIObSoh8NG6Y8qM1jWfIBlJzgxaEhs3bWTwaAqxHgvsGXg2X//XayfH2JyLqMnUzQsJZ0ozXSK854jR09yejnyfe/9KV7yhtcyM7+Bi67Yw5f/7JN8/iO/xYve+K943uv+JY/edit3ffYznHhiL8961WuoR5topid47Jv/nQdu/SrGetbtuoiLnnExO6+4nuMH9rF6+jjPfvn3cOLJ+zm89xGOHzrK47/3UTbt3M7GnRdw6OEHGS5uZMtFe9h2yQXMrlsAVgrCzZGRF7Zs3gxGGU8a2hCZduWIs6brd0YGlWLO9XXFuoUhj9/7AFsveBaMV5D+4MNh5dm2czePHX2kF7JJOZ9H13zg5fjRGBKYMpjAZOgSxpdBeUpaXN26xlv1HNakmfQTkESOxRtoeuWb9H0kRnoNNsX3l4uRVZ1jedyxbutOBjOzYNJ5hwbPcfjxRxjVgkimris0c/agCTeoyRp5ct8RxqHm7T/3S3zXzTfgvEP1KDMLI17+trewYds2vvKJj3H60CFe+KY3s2H3du741Kf4/Ec/wuziPIf2PsTc4kYuftb1bL/8YjZfvBtrHDCEDIPRCICNO7eycecmVk6tcOSxw+y779s8cOsXufqVr2Xz7k3Mrp/vvSEtsBmwHD9wiOUzpxlWsT/aMxCBrpkW8qQvPSkXHtTbckjh/Gzi8BOPANdRxkgONDEYjti0Yxf33dqRUcR5SLlQcjH2NJwpdI0KKaaz5+5oVmJKxJBIuT7L7JzVtU7G5YiVAnQALYfomViAjnf2bF2zvohwNUesK8Ll8bRhbuMi3jtoJj3V44Ga/Y8+TjWsSbrmrRAkBYwxDGvL6jgxt/ki3vuzv8wV117c60fXDoko2tPnvPq7mN+4ji994r9y+uhBbn7Pv+WV7/4J/vLXfobJ0gmuvum1bLt0K+u2b0ZYAGoOPngH3/7sp5kunwRVbvu7P+OaV7yUqpplbr0wt34T1cwMt/3Nn3HxNc8DDvWLbzMnD+3n7i/8JQ/+34S9ebSl11ne+dvTN5xz7r01l8bSaFuSLWRjWbaw5QkHbDmYjiEOSXsR2umE7tVNCHRCwtAhOCRkaAidpKEZkw4EMASHycbGeJZHbFm2NVrzUKr5Dmf6hj31H+++JdndvbrWqrVqaVXpnvPtb0/v+zy/5/OfI6mag9e9lHPPPoSKK+EGAc5qtEoXobvZ1Hg/QsjkGKgry6knHpWVyTQiT8xCAZkdOUzngxhZh1Fs9NqS4ij3xSSzXZREcnpNORdtkpyU0/O4gvbr+OEpk63gRFJM6NL0NHVFCLnAhsohJwdi8DiXyNYy9ImqdqgcYRzAVuADNHDh9GmaGFh3geDFPq4EG8By3bPuI4evPsFNr7gdeJbsk+yxCsiBnEa0dtxw+0uZHj7GB3/p/+C3f+rH+Gs/8a+p6wlXvPhl3HjHrWh9gHG8wP0fex/3fvSDbB49wfW338Gr3/G95NTzxFfu473v/ikuv/GlvOw73sZsc4O6mYm9HU0YZtz/yU9yz5//Gd18hytvfjlv/G/fxaXXXcmZp0/zX/71u6nimkYrklLEZEViOXrBYJNJypC0Ztl1aDvh9FNnigMsXyTHGQV1WxFDKkI2qWjFEIQipBUhP7dqqYIjDYMU/bWGqq5KoTx//UCmGEhhxFkH2VzksUktUSrwZMhKpjaFZ4MSkC3KULcV+FGuFlmJ54LE9vkLXHFUk4KnW6+o2rawi+TvbGxMOfXQl/mlH/0h/ta73411mbyeF7+YRVW1nE7pufKFl/H2H/mHfOAX/z2/9b/+XS48+wwves2bOPP4Kb70gV/g8bvv4YZXv5bXf9/f5sCxI7SbGmnEH2LzyKu47qW38PAXvsjv/9Mf5+g1N3HlTTdx5omHef+//9fcf9cnOH71tdz8+m/nype8mNnBhrqJKAMHjt1GVDMW62epplNCiAwhoI0jayN8Be8JwePaFmLC1Yrdc2e/nqWfBa7h6prgs6DZ7EAKvpQ/FdnLahdKpUgpUW+YIvgWBZ4WwuXXH3YyyQ8MfY8hU+8D+0QygGtqoV+U3qSN+5TEjFGJNHZUdYVxEZKXHxACVEJ29MMA2RKjF/ZMEuu62mfKVYbLjk945p7P8W9/4H/hb/3TH2Pr6Iy8XhTm+FiokB6lPIeOV3zXP/r7vO8Xfp3dU4/x3n/+kxy8/BJu+da38M6feQftpsHVhWcQO3JSKDVSNS3VZce49S+/g+nhS3n///7PuPfPfp8RjTIV7/jJf87xqy/B2h5jE6gAKRSHVceVN76Ir931OMPoCWOPso6YAspYxm6FMhpb1+gy+ciCRnvuV5LvMjtIXdfkmHEaaqsIShNCxClbkC+GWCo6uRRZE4qkDWkIEAN2UtAzzx12IEXRbhpnC70fqrpBG7HJmYL0lCbzPp9VDj21a5hYhynmLqUU1DXEABhqk7E5yUthtcAtrdxFnbY4EhsHNrniqGN7+zF+4yd+nHf8w5/g2LWXk/NOiYNQqORFBBkH6rri7T/8w3zydy7nw//pl3jVd/0NbnnD67CuB9YXpZJZt8VH0gJTHv3Sl/jMb/8ap752P4evv5FvfvN38aLbb6WqM1r1qLBzcdfJaLmso1FEXvyKl/HMF+/CjCvaScs4jhhnLxJDxqEnhoG6mcl2lDxS6q5kJJyTA0gYMTrRWk2lLU7JNmKcIkcBJ6WUCjdtH07FRaihMZakUrH/5a+/R9Z1i+mWhVSYi0Q9k1LA2bqw4KT+EccgjqxCpVBakSieCFPuj7ks8mSq6YSUPVXd4qOQD3VSIpzKmRwzy25gqixHjh9ivVryxz/3M9zxvd/HC297KTkvYOxlRQApwocezFnu+J6/wtbxy/jDn/9phsWS2972WqwTlp0wdA4RvOLBj3+Kv/ij32E53+El3/odvPnv/WOOXLZFzhdQcQm+g3YiBpx9PtUwCpIzBqgC191yC8lO6YeVCIoxIgYLAV18LymCX+3RTDZJ2WCbCeBFGT128nysKcJjoX/54PGF5iX11hGlnWDZtBblQPTkQoNOKZCTwpjq/3nY2QfcxRiIOaGdGDUVipADpIQvQl+ZkXL5TYUHsLdc40Nfprop+6MSk2i1yXI8jbMQRw+62Ki9AIGIgT6M9NFT9ysOHTpMCCs+9Cu/wO657+G2t74RKgH5ZpVlXygQBfIe3/SG2zh0yb/jN378R9g99RRv+lvfi2umrBcjD37iQ3zhD97D8RfcwOu+73/k2m++sbzJI5kLUnkKfWmx5+cA+CmRrZE+aoqQHIcvu5boZsTVaVplSMozDD0pgtOaYRwFil+3DEm8mNXssFxnvBeHVQjkrFn3A6PWzNdrFt1aojIYy+RTxL6/GHIzemkspBABRT8OxAQL5cnpGw47Q8iiIy1ioDEVXILWRQVgBayXM4oCFrQGZQ1VO8HVltU8QFBgDIxjQd0tOXBwk70nH2VzsxGRcCEuCpcgkkOgblriKIkAe+fPcejgIS7dcnzhd36N5bltXvM9b6eql6hxlE5CBlXVpfm6x+U3vIRv+/7/mXvf+2u896ef4dDlV/HsA/dw0+vfzDt/7heZbG4AOzCeIRuHMpW4qHWGeiLI0SR1TFUseApFNpbcbLFzZslfvP//ZPvJh7nsqCsyf6hsTbZSMqurqtj5OhQNKlXC+iGDqwvVxBO0ZVh2TBsr25lxpecoPNfkS/VLFbpHBj94UlHeibZX4akurpIXB1IbTdtOsJUwTeumRpUirYiV90NVEj54KQYYg8MxjAO2MuztXMD3HS70z9FTyFx27bXsPXUvxhmcqoh9kMtuyjRtg24qdBZPhFWOurIM/QI7mXL0yJQv/uFvs3fuDG98199ga6tG6UDShuhrlruZB+/6BH/xvt+DfpdopqTHHiZtP0k0B7n1v/nraHNWXNAocJXMOsFZgXEFlZtR0UvvMCkSDTFoTj9yis/80X/gvk9+iFmVuO2WS/Ghl2J3UvTDIIWS0oKK+4yCqmK5N3LttdfKjMypyDkNPgTm2wuMkyQDtIKoSkKDJkaROqrKgtYEH7CuxseIsYaEYuj8fn84P48hINePmAJDL0VzUqZ0qohl4BSISzZGyBGnVDkoZTbbivmpHYascdOp7JHjAEPPtS+8nvs+5Gl1wxAD9eYUFWRZtoVAiRZn03rds1isqZuaU2e2oTnGlbe9jtOPPsqf/vtf543v+j42Dmxx8qFH+NpdH+drn7sLdOTab34FN73u27j+1jv4/X/1T+ke+xxh50nues9/4I6/fudFMRRDD80Ugix1WSdUDChbQdKEUbGcB56+90G+8oE/Yf7s4+R2yqrzHDo0ox89u/Ol7GVjjzEOqwzkct8rBxqTIrkPXHnddYUbq2R5taJ43372JLNpBSGjs8JqXTh4uUCnxOMh3FhNSmL4oWS42IpC7Hz+HpkzXd+zXHa0bYMuBGTMPoBeiBj7DiFlTQkgEd1KWzkOH5gIjCF4cBN523MFWnHVjTcSx+KlVxvEUpvs+x6TwIfxYm3WVFaE0TGgsqJfrXjRbbdz3bvexfv+zU/zpz/7MyhXsdo5zyXXv4C3/uAPce0rXlmY6XvAHiF2LJdrdIKP/adf5EW3v4Hj10yKVcGIG8oUYqSyYGu6pWf39JxHPn839370z1kvLnDsqqv5pu/4bl79jnfyf/2Tn+SZz/8peqtFKUUMYkMIiJA4J0k2SH5NM2kBw2LRc+KGa+WFTkEwb1YzLHeZnz7F4Q0RLFdWEaIqSQcaH2IhZmZcIY1JoyEVMGGSA9F0+g3dDxR1VbOxaXHWUBXgQ+0qrJIkncpJTVFIjBSGqNwlrcpsbEy48MyT9H0Pbos8ZlRlYOi55iXXsRhg0fUMfUe3WuLaCTlknBapCCkK0L5I6nVMGCtdyjBss3X8CG/+wR/kng99kq0jR7jpjtfSbsxk38tnS8F5H/cJMUcePbnm+AHLh3/53/KOd/8TrO2gqlAxgqpJKbDa6Tn/1Eke/NRf8NgXPgdoLnnBi7j52/97rrv1pRglyrr1ekVKGWfA+0hTOfq+L5olSz/2QqzMjiEkxpjY6zXX33IjzE/K6Td4cIrOZ04/8RiHDmj6Tjyfz09kMUqShdK+mWg/UWE/0UgpaFv082Q3VmrhisMHDpKWvSTGOXPROmdLTFJOEW1F2aWyEB+FVJzRxjGbNjz0tYfZ2+657NKE6nsYPVmBnq25/KZRlLMCAAAgAElEQVSXc+bpLzGtQRkn2qDKCf/GWpyt0SHirKgTnKsKL10TicAuhy6d8cbv/c6LACXSXO6VIYiyGyl56axZLzte/Vfezv2f+RjP3v85vvRnH+MVb301EPEJth99lpMPfo1HP/dFdk8+xYFLL+Elb/p2XvLGOzh8+XEhZ4VdKUJUW6Ayy3XP1E+kaVAox1oZfE6ELG5tVeQvXQ/Xf/PLUTqQ+0EgxlHQaudP7bB34QxXXn4ZO7sjVdWI9imKTnUY+iLxeE5Z7gtvpzC00Shq5wTW9Px7pCKJt1ArUghC91eGjCyfzjms1ai0n0tVEmZCZAxrUIrdxYonH3mU6688gBs6MCXAZbXg9m/7Vn7v33yWg1duCr4zJzH+GI2OEUtElX2hD4lkwUdpFksXw4BfQFjKnlO5IsvnOZBgFr6c0YYwBpppy9t/+Ef5w3/2o9z93v/IlTe+mPXuaZ7+6gM8cfcXCKHn6DXX8Zpv+z6uufWbaZqJzO7hLHkolaymAgyVMVTOgBI+3JCTYDiVGGun01bC2LQjK8Op3Tlv/5vfCv1cuhtKCubduueJBx9BNYbdxZp+8BdnoxRcKCTOQIxRikHFWuiHsdw9IyErNt3sG5fWUqC3+xboTFNXFyOQ9hHY4xgIQXyFOaaSt6FRxe4222x45CsPcvvtN7OligosKVivec1bX8Nv/UvJ0AJBX5skqTdJweDTfikSW1thr2lFYwzONkVFlqRvZ/bjKbIgi1N+LjrTyJtblb3lhle9is/dfDu799/FH/zMT1A3MzYPH+AFt7+K6151K8evvgrYhbgij3NUeUlUlaHvYRigFjRZay2NNYRRihohJtYxYLUWsnOx42ulCT7z6re+HlZ7EKJ4Zeqa1Wrk4bu/yqEDE+nyp8RQ7tZoyZdUSqOMKnleSc4msRCwlBcfZwh4P5LT806tAG3T0IyisUljf5GpE4MXi1uMKGuIxY5tbaE9poxzluAMG1PLVz77Ofbe+ZfZOrohlRErqJStI5vc/KrXsHr6i0xbSyDjE6RS0TfOXVwRchBF3Wxjyu58ydMPPcbL3ngHyjXksZNCOhkGXyolDqKXvaCEtFRWFA457/AdP/D9fPDn12xdeTVXv+QlnLjlxcwOHoRwHoZTwrJJGdXUgrErbPJcV5Ak0iEZzVhCvawSdUNIEFJiTPIccgwoW7PY7bjxlXeweWSTvFgLx7bvISd2dlc8fM/dXHGZwxffTNOY0qYSRKgUZyB4qUnvX1OE/mGxToE2TOqaXCxg9jlmqWdnbw+tldCCs0QV5ZxK1kcS3HWh2O3rW5USzoAPkUMHJpx99BmefeIsV1xyGO1kz1IG6Be87X/4m/zkX/0AL73lUnEgKkXWmcJ5oaqsAFpyFG66MlgbeeBjH6SuHK9625vZOn4Ihm1ySMVfWGakLoUIKrnIRyFGQeTQpTPe9D/9HQ4dP46pHbAmh9My+5RG1Q66odSGKTlVoNoJsEUOkb3zO9JMTpl+8DgDbTEujSEJ8CgEfErc97Uz/It/+Tehu4DaJ4tMJ/ioefL+J3FxQeMOMvReJsp+QrHWWGex5e4op2tLTPliBmYuYTQ+ZQYf9zE7+43lzPndHfYWC4wq4AfrSGmUBuo+v7zccXIpjGtjcNZiFbSVpbaWK45v8KWPfpqX3HYDs6Ymh+KqXa+58ZZruPIlt7K3fIytgzP8MKASWG2ptUKlSFVVjGNiGBPZRqabE0wKPPOpD/DBpx7n1u/6Lq596XUotSt2BF/AQVZMtNQdxsgVSZc8LNLI0Ss2IS7IUaz1KuZynxylb2r3c0NANRtCGDl7jq9+9I84ee9XUBeeZDYpwKhS4bI+SipRBqMc3mh2dtdc97JXcuPNJ2A5l0A1FMo61mPgix/4INdcfRSItJXM+NGPjD4Q0YK6sQaV5LlLnTWJA8vIoPf9wBgzvddfbz3PGfoi66McHoRG6FFKFS1rviiWraxjUjfMmprGQG0Fpu5Hz/FLDvCVj32Y0yd3RWEWInR9ieyM/Hc/9vd58KGThGEUAJPTVEYCYpRSwm9TmqhlqYnjwHRiOHTQsvPYl/njn/05Pvm7HyTkgyg9LbNaoogYRiBjtUxSa57XPcj5uaCGkpdFyU7OWkHToJoDUB/hmQdP8+e//Gv80b/433jkI++jP3U/xw9bjhzcoDLSAPYxM8TIeghkpaidpa0sTz96inf92A+hxjV5HGEYUYs1qQ889bXTPH7fPcw22mJgDVTW0jYNs8mEaVNRG4XyAykINqYfesZ9ZlFdU1cVddPQ1DXtpP1/sZ6rfZZAwJpCodJGnMuuKqJlTVNVWCUpayqmi+q6VJbHEEbqyvPp932cK77/O2mUIrcTwYr0PTfddj2veNPb2H3k05y44hgpenJMdF5qimQR7FbOlhJhYr43Z92PTLcmTELHs5/8Yz709GPc+lf/GkdPzISmEb2kuWKkzOtMEfQ6yJ0MXrEmkJIszTqimk1gRvSZhz71Ge775MdZnzvDTPccUJG4oel9Rb9eSxJcTkxqSx+F/DX6QLf2TKcNO+dX3P7m7+SmV14P812Uc6UJFOiC54Pv+QOmm4691ZoxKUIqybVoIgmjNU0tEYgJGEbJDYshMsqXKtEXBussVV1dzCO72FgmZcZxpC7WcKUNjTM4IykwRiu0AVfynyAXV7MU1DMwX64YY+SSK47wqT/6L7zu7W/mxBUbKD+ClzulSR3v+skf5cff8q1sTefMNls6n0haYH+5nNCcUtgUiTmxHAN1EH3ZkQMHmE0cZx6+h9//Zw/xLX/9e7n59a9EmYWcDKnIWsn31Uidc7+vl8TIq6YTlJ0AG8zPL/jSn/4eT9z9WTZMoGIEUzKzFPihY73umC8W5NL9qYzBaOiC2PRtXbO91/P4Mx0//Fs/iOlX5H25aL8iNROefGyHez/1ca67asrefIEPXnAwRe6hTcnEzIaYBkDRNg3GOKoQ6MeBUOKaxujph5HN6jmpR3FjqRMvvnTzzt5nnFG0TU1bSYqp0/pitUUVn4dWUnO1WpGzYt0PdIP88KZt2dicEf1I3zluvOV6TM5kZ1FWmr2zIzOmW9fwod/9XQ5fdpgYRbJgKkdlLY2RVLoxeNa9F8SlUlRaoXOiDwHXWFzynP7yFzh/asllN9yCaw3QcO8nPs/q7ONc9sKbufLmm8CvJZ9yGFCzo8AGT95/ik/95m/wuf/8q+i9U0ycx+QepwU1tujW7O3uEcaRFCLrfrgI0N6/llXWXswmeuC+k7zrp/8F33zLCVTXS/RDzqi6Zaha3vOzv4rqz6B1ZrVa4X2Qva4EdqcshXcZULFixChaV6WFkKWyyCRjkBdtVikePt9/ZDX4R+x+xE9tNI3TpYaqC5goi4IrRbRyRU1nsc4xjiNdP5TyXkXTOOqmwVjLar3m0KGWP/2t/8wr3vKXeOFNh1HjKD6QnNH9mtd+1x188RNv54m7/4xrrr5EFOs5EYdBQrbJDCHt20UxpZqy7NbErhdJ4dYGdeU4+YUP85tf/gJv/rs/whUvOiECp6Qulq9U3QAbxLrl/g/fwwMf+gP2Tj3LoYMt1125RU6R3fXI2PfYnBm6NcthYBhGbJbnUhvDqu/JxjA4h3MVTikONQ33P/g4t9353bzpL78CPQxyFSnJP0llHv7i4zz7lc9y1bUHOHf+Am3TSJtPBUbv6dad3BKqijG6MvNdgUBpskmi+i/xVGoqoN66qvcByvtGV3XiFScO3dmFYhUoVQb5h5a6buQEBcSs6PpRIue1om1bJrNZie5LrNZLyJmt2YxjWy1P3Ps1vvkt34qJvewXIYAPWJW48bWv56P/5f30yz0uO35QTo9kklIMowi+tNFYMrVVRGXZmy/xIVA5Qw49Y85sbk0JywWf/6/vQbdb7F04zXDmcQ5efTNXv+y17J4fuOf3/5D3/fzPcfarX+CSLcOxQy1jGIRq1a3Y3d2jGz3rbk30PX3Xi7FUMvWoKnGXZa3xPlxUf589dZ5cH+KHfvHfsdkiJ+eMJAlZyzw7fvUfvJsjBxIxesYQySlcvBMqrQq4Kcu9PSWBNpVtJpGeUywYI61vJXKQzUnF/WcWH1n1/pGLtrqXXnHozkXvySkIlK9ERjgntGQfM0OIEjdU+HPtdIpzFSEIB8aPPZN2wkZbo2LgwOFNtp89ia4u4cTN16P7Xtow1oExtLXmxXe8iT//jd8k+0EkLa5hPQrRKYVAUzkaK9zEVdcRUqSuKnSUJcmHTLfuOLg1YWPmuPdTH+O+L36BoxsN0VZ8+SMf5uO/+rNMhrNcdulB2omk2I3dmu29Oav1muAD0QcWq3UhbUheY0jgY6Lve7FJqCQo6+JWPnN+j5NnVvzIf/xdLr12ExVHqTQZA9aSZhv88a+9jyfu+yybW9VFVkAsLUGVpVRpnASmpmI98KN8nhAlZiop4e2kWNRzSGvxQNtw3+nFR5b9WAZSceLmY5M7+6BwztA0NZVzpAxd7xmTFHO1UlSVYzKZYI2w3QSbKQ98YzbFKYlV0iULeTZp+ej7PsKNd7yBgzVSPRlHciV5kluXHuKam1/JH/z67zDdbIkqF72sobaGaVNByvQxEo2k1TXG0DQVQ8z4EOjXKyySZ1XXlisuP8ylRw9y/unHiKsLnLjiKAc2JsyXK3Z3dxmGsZD/BfEZvceozBijtNasxVmBE0UUyljRyJTQT6UN57cXPPbENv/o13+DF916NTqOcmd2FqIk4t17/yl++ad+mhdee5C9vTmrvqNfr8RaUDRQRotiX8D2DuPELNX3fTHPlhmKJBHF/SuG1mw0Ffee2nveQBp94lXXHL1zKGniISb60bNer9FWY5VhOp3QVjVVXYlBs1szDCOVNWy0jRybgRgDfpSyWz96VO2wleOeT3yB2777u6niQNYyoDl5dL/i+DWXc93LXsd7/8N/RuvM1laLIjNrasFKe88YZIlpq4pKi/Qholh3a0lGcI5+DCwXC0Y/oFLANQ5TW8LoiWHkwvY263XHajEXDVLeN5kGVPA41xBVoV6isVoCTWPx8qckKQw753d57Jk9/v4v/Tove+1N6L1t2TacJRuFmm1wbtfz8z/wjzhxSUUMPSFLTXUMSV4cayVEPGdSiBcjOXTx4LiqwhT23NAPdF0vfdv9lPWsaK3m/jPz5y+t+sTLrzl257ndOSEkwj5tonJsbG4wnU6l2K1E+TwOA9ZoNqcTJnUlt5cQiTkWeK6ij0LYD95z/JJDdLt7nH76HDe98Vswk0bqkutOrgMqc9nlW9zwmjfw57/7IUK34OiBhspakjKypJfAbavlCpCMKcDcLO0koA+CNNuPZRgjrBYrKS7HyGq9IpSsZWtELxRKBLpBYStLSMU5HEMp8MPQd3gvirZnn9lmb234kV/7T9xyxw2osS/wKEUePWo2Y+gV7/kn/4pJ3mG2UbNYCy8hlKJLUgYfCyOWImYr7UJdJFcogXIY62QPTYkQEuuuk5crRlqneejs8iOroQykUerEC49O7px3o0DctWEyaZlNJiLtSEkwm8MAOdI6y2zS4owmRkmSC6Eo7WKkL50R6xx125JC5NixTS48/hj92nDiJTdjVtvSMTdOHkDKXHLt5bz0jW/gvs/cw3rnvOxTObNer9DGMqkdk7omZOGsKmPQMVFXoj1ddbKXOWtQKTJG6LqukBgD3idRvYVUls7nli1jpMaZlRJ4EXI+qJ1FG0c/jJw6vcQeuoq/9wv/lhe94oUwrsihSDT7DtW09LHij3/uV9h5/Ctccukh1usly/mCofPSKHaS35xQ+MKGT6UpobUmJLmbiqFb+pumkt6vMjLM3brHh4hVkSf2xo+sh1AGUnPipmPTO31SzCYzprMJTVOjjKJfrfF9j0qZuszCpm4FSDsMRe0lcNNulODsjHDrrC1GIKOwGY4dPcAjd3+O3rdcdfMLJHaolJ9ySKj1kkNXX8Ztb30bp06e52v3PcRisaKdNEzqikmpTe5fA2IMOCNYGAnRU3jvqa3FVJZ+FA5NGEaqWhRq3TBQt63ECmo53vd9R0a8KyQYRr8fA4rKmb3dJef3Eje+/k7+7s+/m8uu2ITVnGxsoZJkVNMw6Jb3//J7efwLH+aqq4+zu7dLv+5JWWrImSysgNI1yhl58YehsMoFL55T+rrMk+iFFWtdJWAqJ52TiTM8MffPDaQ15sSrb7jizmwqmkYCwNarFcELiLdxjmlTyxeltLqS4MWkp5bpfSQhKjADuFrCqrWCtna0VSWEK2O55xOfwUwv59IXXo7zA7mqUN6TJxPQ0EwVL3vj66i3TvDoQ0+xd2EXlz3TSSUPQhuRaGpNXQu8wqPwwVM5R6WE2rWPjM4xUlWOrltj20mhFEtLDuMuUjP0/rXLWnwInD+3x2KdaY+c4M3f/4N89w+8k9YFcjdIcUErqeA0U1bLwMff8wHu+9gfsHVgwt58TrdeXsw8UVoa0NLJkDbdPudP+rkUnXB6jiegVHFkFRFWmZXaWJQxbLQVj1zoPrIenrdH3nbN0Tvn3SCV+K4jhcCkqpjUjrp2RS1X3JElPsh7TzeM+CRiZGtElGWsNFed1my0DTondrd3GLxntjHl0NEtPvknH0LXG1z24hupJxZCgIlkaeWuR4Wea2+5ltf+le9AVZucP3We3bPn2ZvvYStH1dbSnVeakKTJq7T8zLq2GFsxlAdTV00BE1lCka2YAn6Xx6aJPmCUtPB2d+bsrBLu8FW88m3fzTt/8h9z3S03oNbnyN1QCu9aas2bM/bOjXz8N/4rD971fjYPTPB+ZL6Y0w0jprBZ9z0aVYEY718n0r5ZVEksVSj7YS6p8SjZvigdl1SW25zhwKTmoXPP2yOtViduvuzAnbvLNURJ29mYtEyapoiB9nU7pQdptISPjHIxVoXDXVcVMQZUhrZybEwb/OiZ7+3R9x11OyGQ6YeeI8e2OPnAA2yf8xy76gqmlx9DjZ2YYKuKPHiYL3ATyw23fwvf9IY3sB4Nu7s9e9u77J3fRqdAVTsx35buTOMclRNH9OijoH60+FYyStTg3ktINgm0ZhgDi8WK7Qtzem9oL72eF7/xTt754/+Al73+FVi1IkeJ85VeZ0JZA5MZzzx6lj//ld9k59HPc/DglL35jhTSu06KCiVJwBhT7HNyjclRCg1+kLQEWRFkgIYggrS4zzPahyVluRWEKAnxB6c1D5xZPW8glTrxkmOTO3ufmE1appMW52Q/yjmWjEiB9yQFY4iMo+h6jNYYFM5JxLyOUQ5JVoj58709SfXZ2CQqxXy+wI8jbVMxm1TsPPkYzzz8LPXsAEevPIFykPsB+h5VVyWc3NNutrz49m/hhltvpT5whKxbQlDsnNvm7NlzdN1A3/VURsRcoSgaVOGtKhLr1ZJ+8HT9yHKxpFuuOXN6l3UwVAev5NKXvIJb/tKbecvf+du88i3fTtv25OUcQihiYSN136Yh0HD3p77CB3/1t9l74l4OHZbW1HK5kM/S97i6xo8FSJgyRqkC1pc6vlZKXMhc7LLJyVVrUZUnMfOk/RhZAZ9fDGLdahvuP7f8yKrfr7Uq2JhOGRipnBNqcozkGEqCjSxBIcgMjCGiSFSuxhkpXe1LINrphKau6Po1y8WC6D2TrQNEFKvFguQ9s40N5rt7qI3AJccOszr7MH/2i7/CM9/+Vl71llezcWACfScbflUiH1ZLVJpzyVUHeOu7/gbj93wnTzzwME898DCnnniKCydPsdzZZey3OXN+hyEmzjxzmhQT00ajUmR65BhDqpgePMb0+GEOHDnMtYcv5fh1l3PVi17ANS9+EdVkKgq9cEGWeGPAB/nz7ACoKdunz3DXH/4pd7//fWxOA9NDNds7O5JQNAZUFJ3TPvFkHEYiGjWdYAtQCa1QWmIhel8id0OQHm6JjsgoQhL4rgpyqk3FxmGdFdjj1/kjlXjelZLE7zAGdE640tKKpUgQQpIfYoQfbq1UIRg9zlgmTYWzjq7rWSyWeD/STmckFMu9PSiBl+PoURpybJjPF7RtC2PPV9/3+5x95FFufM1tfNOrX4qtxVCboyQeoDR0HTkuqGrHC1/+Il748lsAxc4zJ9m5sEO3HFhu7xJS5NzJ0+QccVZSYw8cu4yYEgeOH2S2dZCDx49x4OhhcUsxwmJO7kunRAlSM2fJLlHTCd5X3PvRT/D45z7NE1+9h0OzhHaw6npWezJzrRPUjI2esZh6VFZgNcu+p61rWm2xWqxxxihqbDn4Z8YsOqCScyEp6WXyxCjceaUNWekif/wG74ccjaMspTFQlxJdiLFMb4FEWGtwVVt4dRmVg5xKG/lve7u7kjnlLFXdgq1YLpeMg2cybSUyIQScc/hxYJkTq/WKQ0cvYWY8px/8PKcfeZgnvnw/t7759Zx48YtQbgXLhSzxPogGKGVYzyWOyToObjkOXn41qP0Q0PB1YZ/PwTA9jAuoJIGWuC2zLWvwcpBAK9mrmwala1J0fO3z93L/xz9J99RDKL/HZZe0LHrPhe0LLBZLydlU4ve3yAurU6IbAtrpopCLUi/2jknbiDscyctS5Y+JTA6CLkMJQk7ljNaiVOxHaaZpY0tz5xs0O+M4yhR2BmMsPglcVmuh9ButqeqaqnKy+RbfRmU0TdNijGExX7BcLjHWUk1mxBTZ3dlGKUUzaUu0/YDJiaqeEWLE+456NuPC9jaJzHQyQccd9u77DHedfISNK6/lhte8jutffgNKj7DalVptRpRvUYwx5VImckiTIQyislNZTLdKibTRVbBYwDSIAq9Q1kQ158RGZy1KbxJzw0Of+TwP3vVJzj3+GKwvcPzoBtnVLJYrlnsLiZUPgRASGIMKmZSGIqIy1M4wJmEyGCXnhsVyQQYZTKdl68OgosVoR+8D63Ekjl4iB7OkCDlVEdMgV7DgGbzfH8f8nIrOj2ilckarkCXbyhhN8EJArJzDlQavViJ5aSrLpGnJKbK9c571cgVK0dQtISXW6zUpJdpJK/JJ77FGM6lbxnGQL1c3hJTZPX8WZxxxGDlycIvZhkaHbXYf2uZDDzzAZ//oUl74ilu54VUvZ+vYphzNx05m6mqFcpX4HN1E3tJ1J4OW0n4utgx4jFwU9Wi5iiirQVeo+oAwD57d4cG7/oST936Ffvc843qXaeMYqsyF7Z2yPYSLKe/GOXRMZA1rP9I6Rw4eazKVq8nDyIjMdKskFXexWDB6z6SpqWpLDuKdNErRVkV4nWDIIvUQeKPEdyQCYQyshv6iSMfuz01ra8bklc0iPt4HEzjnsNriih1N50SlHXVVy0AHz3K5ZG9nh6qdMNnYwo8Dw1poyxsbM3LODKsFTVVRN3IhDyGCsVSVYzFfMA4eM7VEP9Kt11RWNCnKKjbVmnD2Eb76J0/yxT/8rxw+cTUvePnLueSGG7ns+utQ9FxEZpBlWZ22sOrI3oPNKNtC7eQrKw3VBGhRNEDkqfse4JkH/oJHvnQ3/fYpDtQRpwKHpjW72TL4kWH0zOd7zFq57yolGtwYgnDpkqjdQs7kbiRWibbETWWFEI+TXCeUNowxkHt5p+rKQVWTohxunFJMmwqlNTFKdahsm8Kqc2SjnVr28/75A5k6ISipft2VfqPYBCSFB2IUolPbNtRVjTVSSdnb2WHoR6rJlMl0RoyB9XpNTInJbIo2hrBeoxGAOykTsiR7123LetGxWq+kcF0ghD4E5ss5aQ6mnTBpJDVvo1LYnEkXHuWhP3uSz743EKg5cuXVXH7dCS677jpml14h1BBjOXTs+qKSN0DN+VOPk3OiX6yYP/soZx9/nPmpxzn31FMMfWA2NVibONhknIJx7Ik54MeBvfmCBPgQ2N7Z4cDGJtbVVN6DMnTe03W95EwWmINOUhN21lJZc1H1IHfYTA4ZHwN5EPZQ5aygy4xB54RRmSZncluz9p44BkF8JjBWK+ssPsRuf2nNGdIwhJj8aH0QcbBWMhtNcWBVWqSLdVWhtWIYB5aLJf044uqadrZBipHlaoWPkbaqxa0VIzF5NmabApq3jpAzbjIh9ANDEINLVVXEYQ1mQk6J1XJFzAYbIsGP6Ayj0UwmDXVVUZnE8UMObWB54Ws8u/sIp7/4EYZ+JBtFN0RWC7nrTmqwGXTlyFrRrTKbm45pY2hs5rID0HkYw4gxmgvnd7BOoXIUQ6uxInoahS7Shch8uWTaNpASzli6Uc4MMSdUFPtcTIk4jiLQygmVodKGoVRnrHGEHBiGnhACG5NWRG7a4CqNLtmb5dJZigSVnBFGT8iTfRpEsiWS0HdjWjlnt3COqpbyF/txRCrjGulFaqNYr9cs5guGvqNuWiYbm6ScWKxWjN7TNo0sizEyrtdMJjO0Vlhr6dZrlK2oYmYIgeViyWxjAxVleXJOsFx974kq0VhNWK1prEUZhY8jTdPgY77o2cxasbGxgU6BQ5OKbGuipKQQY2RWO6pig/NZsdhboCykMEI29INnuVrSjQlXOdZjjx4zFhjCSFMrwujxo6CrU0ysYs90MsU1NSEmrFa0sxn9MDB0Pa6WtAa8J5TT/nQ2I2UBH/lcoMbGkJ0jpMR83TGpa+qmSEGVPLOkwMRIVVKHgtY4rRiyWmVhrQVbkoOGJZy7pHFb8yjISZR80aZuqJ1gK7WWONu93V38OFC3U6ZbW8QUme/u4WOQCMKsyD4wdCuxzDnxyns/oFxN207ou55VLy4urVSJcTdkUonZy9StkWN4zkQFvQ/klCTcyxh0Pwiw10fyekkzmzBpG/pVL1+471HOEdqWylqWiz180iQN83O7VK6itoZxkGSDZTdi60pUDzEwqWv80JNGL2cIo8ka2knLYnfBYrng4KFDMAw0VcMQhdm6XiyleaAl84qxJ2UjrSenRI0wegYvL47SmhwjPmbm3jMtd3iJ6wgoJcFoddNibEXuOjYbywimxl8AAA4OSURBVNl1Op9zHoAowY1wZKNtTly+Ub2w8yJ3tEBTVVROMicMmvV6xc72Nn70TGYbTDY28WGUE9gw4KxlMpthtCIOHcYoptMNXFUV1V1PXbeAYr6Yk8lMmoa6VI+aupEHMQxgrdQkU5ZabxCyvnGW4CPrriflRL8eSF6O+/sJr4vlmtVqzegj890drFYM6zXrvpfy2TiICCpnxq6XqlWMrPu1MFW1pu/k+1hjSEDTtKS0r98RG/h8scQ5y2QykRS5bgVlxuZC14whoKsalTPeD0X6b7BFCeCjlOSkfSX11cFLxcYUaH26GBQAsRCbD7UVjy3C3c/uLD+VM08boMmwOV8P02+65pLXjMOgrDZZg6pqizOWFDyLxZz5ckEMEVtVNLMZMQSWixVdt6aqa2YbG8SxJ5XWTe3E0Cran57J1gHqtmU+F9FTXVeoGCRZ3VmapsWHwLrzEtWEREeQQgEdFvxlAf4qpSRTOSeBGZa4pW709ENHQmQbOku5bL67TdivJaxXhGFEOy0Mm5gZxpFsDJVzjCGWDMmEH3qhVWolD94aFJpARqVE5Wwx3LgCy5AgNqU1WYEv4XEUGKBSiqquCyVFPqMqyUdJgvcYBnHDWeukXZaRxHMliUhN0/LxB0/+3noMDwCndCl9zENMZ87Ph6eOz8T330wabEkzX3Y9e/MFQ9djKyeWNG1YLJf0Q0ddNVSuEm9fVsQYqCpH007QRpZU7RxVXbG3vcNyMaduG5wxTJqGcRypXC0QoZiESZolZ0sbgzFOXFMlxCSGwvAp/TlXV0Xp5+mHHh9EK9ovO4L3DP2aED1KO8QBl4khoawVlVqUVpIxmmHoyeWuPAyjBHBWNd4HLKLrjTFJs9g5lus1q67HlK6L0Ya6rphuzERMHBO2qssKIPKScQhChMyZyoj4OwRpVbm6QmuRfgwhsug6fIgiypRJmY9utFxYx5PdGE6LtZpe7zOhxxhPf/mZ859xdUtltNLGZu8D29sX2N3bI+RMvbFJM9tk6Ad2t7dFcaY0dVuXboknDD1VVaO0sNWG0TNGxWRjk6EbWXVrQk5YY0qlI1M3kyKxCKJnLbVEcUdJw3fsRfE9eC+BMinJIHUlazkr4f9oJ2EzdUMi4YeREDI5S1i3L6JqP/gSYZgYu46xHyArwjASY0JrK7lXPgKafhC1gasqYoyEIKgUXM18vkfKkjhntEhFyRmjZEBGLwE4/Sh3zhADYxALhbUOpzWU+2NKokJUWuNjoOt6Vt1A3w8oY7PWWmkSX3r6zGeGkM4UAsagS1FyL2fOntxe3H9qFZ6+8sgBlosF586fZ3dvjh+DeBDqhpQy666X8pDSVJMJGkMcxTVk66psyobRS9O53ZihtGa5WpBQNO0EI5pAkYVoyQzpxpGkcincSwHfFBVCuvhbiUA4Q9ZaeHlODkX77aBY4oS1LVxZ5I0WTFhpIzktvnyrMVWNdlXZhhR9PwhvyGlW3aokxmX6fhC2gjUkpdDW4pyjD7C32EVpjXFyUNRkTOVK2HWSq0tloWok27kfWK/XDP1AThHnxD7vx+dgSfsr4noYWHYDg/ccmThOLsOZJ8/Nv5pz3h9Ivz+Qa+Ds4OMTn3zo5Md3FuuQxl7t7i1yTBnXtjSzDVKGnZ1dFsslGWgnk9JVFw/DvlcvA0N5k5R1OOtYrdbs7szljVNa2G0poYzIAkcfGcqSmUIiKaTCFCN9P4KSE2DMuYD+JPNSRk+WphgjIQvbIJXPoGwFWtgE2tZCWJQmJ2MnKTcpS2Pa2gpTZB4p7zvbEwlRBi6WC2IIOFfjBy9B28qAdezszlmu1pLpnIXlp1KB+iu5Bnkv+R7xIjCiY/AjSluMsuIlyUpWn/1uDxKKuuz6HMZBjTHHTz9y5mO9j08DZ6XnJqfWfUaVAqr1MNYhpa1DLl+RyMrUTd7Y2lIoJXetrkMbzWQyxRrp8wXvUWgm7RTrJKJ33Q+gLRtbW8QY2N7eJmURStmydECiaRrxAYZMyGJRQIsQ2Sh5S0OhRoUoMUNKi/526AeMylTG4L3HKLE0jKEAfp2DGCXqQmu6lQDi0SIAzkpJYbqkpUvN2dN7sdbHooJwzqEUdP2AsQ7nanofGPyIrSq00aJZCh5X1Rjjiga1lHSNQAS9F5W5NrbQzEoPUmmMlf9PTEHEX0WrI6sL2WmlppXjy8/O737w2e2P5ZzvBZ4ue2Qyz0fClpaYPb239lvTyeFrjh04ql2lQsx5uVwqkSUaJpMJtasgR8Z+EF1M2xSlmMDaE5rZxibGGhbLFV3X4SpHUwnHLQRP00wwRossfxQ0NlqWTmMdRhcpREpUVUVA042hYNbURQ6NAN7BVsK4CTkz9L0gSlNEpShoUS0a2WwEA+ZLO81acxEt7X2g9xHXNmhj6YZBzL2uCL/y/tKqWS1XF53bKWdWiwV101DXTVGGi3MkZjn0xEJByaUHfPE0GqOYbZWEY6ecGLwnZUXKKldGq0ObEx7b6R769COnPphy/irwCHBeGqnPNer4hqqzObsah6MHt44en9UHd3Z21Xy1ykppNWlbKuvIKTJ2Eq1eVY1QHhFbtI9ZXLWTlsVyyWK+wHtPVUno9uhHOSQ1DSnB2gdiStLjBIL3VJUcAoa+l+QDVzFGMdFYawvVQuSQdd2I8KqqGUEOMTHIvTKJ+FhyvCKj9+i6uVipqepG9uhiYYs5sx5kS7C2oluLol6cT5qhNMW1khcwFlWhNlYk/n4U60LTyM8bR7lilIC4EBN+8OXELeqKEOJzA6zNxYpU70OurVZbbc3JhX/6rkdOf3AM6SvAA8ApYLlP/Hv+QO6HoQUgx5TUqb117xSziYmHjEJp63LlahRZjX0nb3RVCXFZSRG9HzyubaibhmEc2NvdkwfuHI2Te5bSmqadYoymGwbWwyiXZOekklOkjjklRu9LUIxmLHFDKcl+k6IkxRkjS7VShj4kcVj5UXBg3kuaXCUQ/TFEspLitKSqSyJQKlrSTKYfAyEi+LAi9ddGKl7j6MkpUbctURuGUfBr1knXY71aSSJP1QjdcRxAiSFIguCSzM5yWKPoePapjygD2mSlFY1G1bXLT+0Nj3760TMfW/bjPcD9wJNlSfXPz4/kG2ZlLNM1jCHGp3ZWq6qq3CUHZwcPzxqbUlKrrs/ee6X3o+utDMCq68A52rZFacN8vmAYRnQJCJVQa1EZOefkLrpekwtwff+Ol0uuYixvqtaagGLw4aLm04eI0eLNpGCkI1osBoMv/84QvZcie1UzDCPrYSBlQaOt1x37eaiytEootU9SDqzqGpRmuV6X5dURi93c2oL0LJ/ROHfxjphSlMZyVRNiIEQJqklluY37you8fzhRBcQbGH3MbV2pw7NaJcx4/9nFfZ9+9MwnuiHcA9wHPCHcNobnD9w3DuT+YI7lL3ognF2OyyGrsa2rdqvWsypFJYoyl0tpTHXDSFKa6cYmRimWqzXLcrrVBVMmeBGonKjjhpjovcc6Jx2GUToNRsvdsffildDGMiZpIaly7JeBpByI5FSZtcGXB3Jxn8hJmAfW0g+jvAzWoYyhK7PFVbJVDN6TlSSmjinLYalsFzkrqqrGhyCfozjOfMjlsg/GWrJSdF0nA183UidO8oKEGIi5zMAQGAe5aoSUc1YKp5WaOqXqynJqEc7e/czul7789IXPxpi+Wmbi48CFMjb5/28g95dYX5JMeqDfWQ2L0/N+vhhC56qquvTQ5uTItFGtMWr0o5w4m4aqqun7Ic8XSzV6kSpUZU/bV2/aSoCxq25gHD3aChc8KblGmBJQ0PV9IY0Y1r0nJDC2kgPJMAid0hgxHWmNT4p+lOU976u0Y0IZySpZd52U3pz4M/tekseVNhJJ7GUW+5jpBoEAGy3GnnXXS9hnTqz7nmH0VHVDjPLCDcOIcRVkRe+lLoyWmAelDMMwispcsnZyjknC0Y1is63UZlsrV1nOdeH8V0/P7/3SM7tfeGZncXeWg82DZSZul/FI3zhoiv/vX1qQGGyWSJqr9n9vttWVhybVJZdsTi6/ZKM+0lq90baVPTCbaKsVe3t7LPfm2Nr93+2dbWvbMBSFH0uy/JI0pGOQbf//j3UfygppmxenthxZ2od7XTIYXdd9GxEYCww2+HCle6Sjc1m1Nd5YxtBjTUldexbLBS8hcDh2OGNob27Iry6HidaVcuAznvFVScJyCqNYmjWN8KwxsGo9lRPTosp7QuHo45nu0OErRxwjrbO0zrBcLnnu9pzDRGxbfFlyPBxIGRpX0liZpwqxJmS720NVc7teE2NkdzjQ+pJV09BrkrdYrXC+phsGutMJ7z2+qhmGgf3TI4vas9l8ofQV3fHIEIJsNU2JPowMU07hHOMu5O6xG7bbbrjf9eOPfX++03nwDviufHGvwZV+B9ZbQM6tVIv+NbABvgLfgI0zZtN6e+udWVpjqtJaXxTZifVZLIw1YqyrQ1yBEaW1tcQ0yVKYpu+zH05RiLJ9mmTPVA7JCGFHyyGKjlaKj4oBsdFzKCLFn80SUsoqoBYuF1MUI2O1ypRv8Gp2kbXIKTr0ZSNrq3JCWArPOGs1MRLFvTFWExjZLDZGnkfRQMniuGbFFwlVnlKOU+accg5DTF0/Ts9TSg/AA3Cv14MY5dFfJjYfBfIyOlvVGn4CPut9rVHbApXKR4qL69p+nba4YAdBV9WOCtiTcsNHjcCXt6LwI0BeAuq0RlALLIEb7TcKpL2C+Ecws7KDoNE2g3nSfq9Ap/e+9F9+9gxqqRVKZhsmcwXx3WDODGGcGcLfgHdt/2H7CRF0llZq0xhLAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/apple-touch-icon.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wCBBQgJ3crKKYAACAASURBVGjezZt5tO1nWd8/zzv8hr33Ge/JnXIzc5OQmSGBEEIkEkwQBafWGq2soi1qxaoVKrRUrVYqSFGhpVqslUpJBwyYCBJImAJhCGQyc3KTO5/57PE3vFP/+B1cbVf7v+9a+4+z9l77vL/nfd7n+Q7PFnbX4qDPzmT6nT/54Td+f++Ss/fvW15avErjVgheJx/EKCUigrYG0Tmta4CEAQQhpEhIEGNEYkArQWU5KXXfa7QQG0+yCh8TkhKZMsQUiECI3QeNJIzN8cGTRBFCQFLEakOMIcUYUxNC8GI2V9fWHzi2OTl92+1/MfvO/vtFzrRuABAAEf5mE4B5z9t//pVnzPf+wRkL/Z8IzYyN9dNsbGwyns7IRKNUIreGoiyo25YQIyoKSgvOexyQkhBcQ2EsNtOIKCJCpoS6brG5ofGRFCOlNcQEPiUa5zFKyLWQ5zlV40ArqsbRzwxaNG3rCAKDuXkWl5cxeZ/xrL1tu/H/4e3v+XdfAjz/25K5smBc1aSUEBHe96s//2vL2v/CbGdjsa1npESKgjQxpBiTRBcQAaMNg35GFIho2rrGKkNMER89LtJFXgxFYUlGE0Mg00JTO0ymaaMgIVLkGa51RCVUdUuRWQprQSWapqF2HqMzepnCB6hbx7Suk1ZKXNumMitk0OuzsnffcKz6f/Cz/+p977rrQ7+dbnrLrzIoC3TrPR96x89z9Wtexwf/xVs/XLjxLz755ON56x1FkYu2WooiT0orSUISLaKURgkkEmVZEGLAZDkC2NyilAIRlBKMMeR5htYK6NItIZgyJ7Q11mZYqwkxkqQLdJFnZLnBB0cSQ4zQLzVKDK1rqb1PVosYY1KeZ6JFmFbTtLmxkS/M9W547SuvPe/HfvXdt3/8376Tj9xxDxrgji993bzrZ3/y7cva/dNHHn00DvqFCinJd/6hSJA8y4gpihJDSBEFaK0xRmOyDEmemBJWadAaBCSBSpDZLiAohTUZpIjJMkJIaA1aGRIRtMEojbWKzGY0bUsIkbwoyIym9YFZU2OMEaNBayMKEFEYY6QNXp468nxcmS+uevk118Sf+Ve//xUgaoAfvvm7rn7xwcX3Hn3u2bmylyvRJuXWiI8OUZrMGERprNGElCAlQozY3c3ZzJC+c8FT6k4tdZtWQJaXKGtJ3mGzjJQiojXBe6w1EAORRPARYxRFbvHeE1IiJiitJiZo25aEwmYWImilEUBphYuJadOmXq+nxuNhOm/fygvnl5e//NCTR44rIL9o/9L1o+HOmTElNJAbLQgpzwpcjMyalpgSCSEzYGx3gm1oiCFBTGhjEOlOS0hYmyHRkyQRk0cElDWkFFFak6JDG41KEaXUboAi1mi00vgEIQSKzAAJ11SEBCYzBOcxWiMktNb4EJhU05QZpMwNhTHsbJw+cOby3PVAoS8+/6wzz923+O5Sp33GKBAlRiuU1hK8Q2mD9xEhdu1AKZJvQVliCCAKSQmtuiDE6BEgRU+MEZJCS8RoTUJBjChRxN2KrgSSCN7tZo3VeB8JviVFQRMJAdqQCCmSUkIRu1MUoWlrahfIMytZliPBp7IoxSghKXvOVu1uV4PC7C1NuuL5EyeTj0nyTKcUE0YJmelSSaJnUjta50kxkecFOnoUEIPD+4hKCcXuPVQaJYq2bZkMd2hdJBmLyUuy/jym1ydFoZ3NmIyG1LNpV3mNRmuDbxpCEJSAUgbXVjjvUUQkehRCCI66rah9xJhEpjWZUpS5lZRC2hiNkvezC03yZ5jZdDqXXI3Jc9kcT1hIfVno5d0poVAkWrqIT2YVZWYpcktW5PjYNf7WNUgV6M8NqKsZm2vrmP48Z5zzQlYOnseBcy7gjIOHGCwsoIwhuMBkuMX6qeNsHH+O00ef4vjTj5OPd1haXiEJhJQojaZpalqfUAIxgtkFDj4GapewRnfAQQtGCY1TbI1HMqpaFhLMptN5k0LMVIi4EJgvelTVDOdaVhbnIQaci2RK4UJAtKJqA0ZrMkn0ipxp1YEBQuTIE0/QO3Aef/ftv8bCyhxLZ+ylKAdACwyAEZADGbCPw5dfChRUszW219cYrg/57//uXzNdO845F1xADB7nA0p3LcYgKEk0LjBtWvI8wygobY5IpG49O7OWqnGEGBGBiPSNiOi5smTmAnVdpX6vL1pgY3vE4qDEGoXzHqsVbVOD0owmjvlBD2sNeWbYGo84tT7i1l9+D1e/+iZSGnUVVCwpOWJUBD8jpYwYPEpFREWMiYiqKMqS/WedxYGzX8C7/vhO7v30J7jzw7/DXG7RRUkMAU1ClNC2nsp5SmtQJHKtgcSkcozrBtcGEhFNotQaBdp45xiOhhBgvldK41qwGi2wM6korKJX5KQYybMClyIxJaZVSz8G6qpm7+GX8K7feC/ChMSYhGa0ucl4c5uN40c5/sRDTNeeYzLaYLq1zeLefYjtsXLWBRy88EqWDh5gYeUc5lcyYJPrbr6Zl910M7/3tp9j++jjzA1KtFb4JEzqmrLIMVpRaE1MwmgyY9Y6QgJlFDZqlNVE74kxikEpVGbxs4bJbEa/LDFK473fzfFApKWXma7CSkIjtE3NM6fGvOkdv81V198IaQNkjsnOmEc+/2nWn36IWI0JoaFpA72yIF/ey/LiGShJuACzk0/xzOoREMPc0gr9Qxdz+atvYX4povWUX3zv7/GFT97JXX/yPhbmerRJKGxGpjTWKBrnmVaO2jVobbHSEYMo4FsHZQ4iybTOs7E9IqBZnh8QgicET24MSitC8KQE41lLJoF+URBT5Mjzp/nNj97BwXMWSKlCZB9f//THeea+z7CQK6rJkKr2CInJdMrEGLRO+ABGhFlTMxjME+KMPCvQsspwc53Tj36Tc65+DS/9njcCJ/muN9zICy69jH/5E2/koovOwhiDUcJ4PGXWdswlMxmSwEdPDAmrDY04ps7hQ0x6ea48fOGZe24dzSpa12BNRgdCElppCqsJwaMURAQUDIdj3v6hj3LmeXtJKeC94dN/+LusPfx5UooMhzs0bcNkOoQQSAgheowkfBKURJJ0/bZpWgg14/EEFwJzvYyjj3ydpx97nIuufhVKGhb2DLjkZTfx1b/8n8z1MiaVY+YDSgRrMzSQYkArTSIyaxqaoChzy+PHN27TK/O9w5eft//WEBM6JVrX5bbRGq2E6AN5Bz6BxHBrxM1v/mWufMWLSSlQV5Hb3vPbNKefxhrDxvoao9GIDIUoTYoJJUJ0vkMvSVApEWPCiOCdx2hF6yPROcajEcpaZLbFE99+gPNffA3GBPbsP0Cgz0NfuxcUaBG0EnAtIiAitCF2QRNLjBFF4vETW7cpEchEkSlNv9dn0O+jlaJpHONpTe0crWvBt1iExYOHefUbvpuUJkhS3PHBDxA2nmM0mXDq9CqZ0WTWUjctVoREwkrCOcfG5hYPP/htnnzqOU4dew6JnsxoUuwAvEqJum4Zb29RTYbsHHuKT37gg4haIIUxr3nj96DKFawIBsiUxmiD956YIMVIQqjrGbOqwrUNpISKMVE3DW3bMXyrND2jKQuLMYoowmRaE5VmdX3IL/zuexAVEdF85S/vYeuZh4kh4Oua1gVmdYtVQhQhxMDG6VOc2JhwaqdmY6L4mX/7X/nn/+0ufuzX/4jVGaydPMH29g60NYEuW7RohtOGRKA99ShfvfMziE7oMvJPf+/32VrfpswzGu+IWpNEaL2nqiqa1uFdSwyBFDoyoRKQlAJRBB8IrkGUYAX6xpAJ9MqSyWjMRde/gfnFASTH1mriUx/8LYJKrG2ehgSFAR8C3nlcU7M6hqve8A/IBvNce9P38+5P3ssLr76MwYLl4pdeyFt//2OsXHwtYf4gZv8VbO9MMDHhYsQoRWpaKgef/MBvsbmqAMXK/r288LqbGY1GEKGaTqkaR9u4jpGEgBbd4VutSQnk3DMWXnfLi867c1w19MucTBJWQW46omuUkOeWBx88wp/e/00sIyjmec9P/WPOXFKsra7TuBofEoTE/N6D2D1ncc1Nt3DGvgOMdzaZjWcc/etvM7e0zBXXX0eIidHGmBPPPMxlr7yZu/7k9/m77/g3THY2uO19v8Pw2GOE8Ram30O05sD+vWxN4K3//t+DHzIaK950zdVcfOm5xBBJoStkUYTaOZyPjJuW0ho++9cnfkDPl/bwWQvFrS4mtMiuKNKhCEThfct0POKmH/9pLn/F5WAKHv3a45x67BusrZ2mbRt6WcZwa5sbf/odvOS1r0ealqzImV/ez3B9nfUjj/N9P/cr7Dm4xGNf+hrK9Nh/7l4uvOYavvaJ2ykG8zz4uTvQWvN9//AfcdYlL0H1F3jyW/czKISm8RRFSb58FnsP7CHvZYy2A1tH/hqb50QRGh9ofcCFSOs9fpfvPrs2uk0vlPbw+Su9W0OIaEBSghTxziMKlNFMpoGbfuJW9q8sgjZ84X98nNGxJ0nOEVKXXoOyZDyukZS47JWv5vCLD7OwR3Pg/LNZOXQh9/yXD2Nsn3xugZWzzuH0kSd54DOf48rX3MgVN1zPhVdfw7PffoAvf/zjvOjGl3HOJS/iG3/5SbRKzGYNzjc4B5e+4qXgGyJw3113Ibqrqt55QoiEFPG+I/W5hmfXx7cZYwz9wTxhOsMowaouXUmdEBXagC0H7FleIrqWrdUN1o8fZTIdY5Ql764zWgnrzz5MO5tBaMmLm1g6sAB4FvcnXveWX+Fzf/IBHvryZ9h71vkcfum13PyWtwJrBD/Ct5GLX/kqNk4c5+6P3M7xZx6lbz0xCUYSucDm8aOsP/0cK3uXWFleAttDCeAdIhGjFSoCCrwLkDQJMKIUWZ6jGo/NNEYiRhuMAm00yXn27D3E3FyOKMVsVjHdWCWKpvaO5B1tVTNYOcQbf/FtnDpyhMHcIkceeJSTz+RccNUljDeGnD5yO8XcPIcuuorzLn8Jxngeuvuv2HPwLOrJiKoac+jCF3L5a27hz3/rbSwv5MQiZzqrqL3D1QqzeppZSBA9c2cssHfvQerto1gFVuc47ztiTSIpTRI6ku19YDSeUtc1Vd1Qu0jrA20C5yO1c/SW9lD2+4gkYurh6zFWCRkBneD8l93Mm3/nt7j02sv4rh96DYOFgqOPP8Khiy7nCx/9czZPHOesSy7hyu9+Pb6aMt5c56rXvI5zLr+QIw99i6WD81x2/Q1Mh1t84WMfA5uxPRoync5IKdKzFhNapJ101dJYyrJkbs8KdeuImK7gpIRHERASEJJ0ymCKEe9afAx4J93RW0sImjYGoouItujgiQitc+xs79DrZyjpmvfSvoMs7z9ArEdoo7nsVVdTzC/ysV9/Jxdf+0p6iwf45h2fYrBngde/9edoq4Yv/pf/TH/PXryL3H/n55lsfYIzL72YN/3G2/lvv/shnr/3f5L352gah1eC85GqGuJa1aUgGpPl+JAQH5CkCNFDElJMCB2yIiVMigFfzZAISknXX5JCO0+WWVyEvFAQPRK6ohRdA9Hgo2cwV/LwHX9Gz1pe9aOvpcwtqd3hBVcdYs+7/hl//E9+mdHmDt//C2/eJc+OKYFLb7yJBz5zF0/e91le+zO/zAVXXgIMgZpLr38FD3zqNpZtTVIG39YoY5HYdsJQSig81mT0rAYTkaTJsPhIh5dVd5eVEgwiKK2Jwf2NshRj6GQ+HzqolATRBlKHSZQyCAljDAKs7FvguXs/wWz9GNe/6SdZOXOO6BqW9vb4qT94P1//5N2sPvMMCwcO8Py3H2P79Co6s7z4luv57je9AWiJYQ1BEBGuvO5GPtwarLVUVYNSGt/WpF2YiHOkpAnJ0bQOjSZEj3cBn6B2nYKvrSLFiEkJYtcriNoQSGjT6Zjs0qzJbIavGnKVEOMIJqd2Dq0SRpdMRiP2LC1Sn36Uz73/vVz3U2/h0EX7gD7NrOHZr93Nw3ffwYuufTmXvv4HOfeq88n7BRBJYQbRoWwJzPPIl77Kt/7i3Vz0gjMIfkqroA1dq8IWKNMgsoBvHHXj8AIxdnfP09UTj9B4T4oBHyMmxkhdV8waj8SAtZoUOlEo0xprDXE8pVGavDRkbLMyP4eRmtg2pBSJIXJ6fRNrDQtnH+LLH/1zLnjpSzj68EPYTPHGf/ZOdjYrPvvuX6J/6GyuecNNpGYExoAyhFDy+Ocf5Ft3fIqVs89m7fhzZNTsTGq0VujYeS+FLrFASpGqqfHDbfp5hgsRH0FpjQa0TxgjWANKBKOUoihKjE30iozSanJryLRCSWe1taN1ZlXFXH+BwhhiOcfpo8cwebFbvhXWGGyCheU+P/i2n+fxL3+NH3rHO4EdoGH12DHGVcs3P3knh6++kv5ij62ja2ye2ODhz32R/uKAH3rnL9FfOszDX/kCSgK51viY8CRCTNjBPJnSSIzMJjOG66d3JdOARVB0LSOk2LXATrLGWKNZHPSZ1i1lbtG7yK51jhQjohVussrm8VX2G+GMPXvorxxgfPIZCk0n8++i/SiCKIWWmituuILknu9AhdEYZVncf4jzX34dn/2PH2Vp/36ycsDBiw/x/b/00/SWejAbQtpAS8InaH3oAg1ISJxx6Gz27VsB37C5OWQ2G6EkEWKntoeUiBFiDLR1i7K6q65KusteNQ3Ot92Dpe6lpNNbrbI8d+Q4l156Hsoornv9Ldz51ANEN+vEXa3IiWRaWHv6SdaOjzlw7hxp5lBGg7KIaHKjufaHv5fNoydYOrCH/pzFWNVVw2qMZDnIHtoAlkQmgTYqJlVDOVjmmlu+B9XPwAnPPvYcKtQ46XpiVIJrO+zaOI9PIKqT6VXVtpxYW2dzZ8h4MqVt2l15H/I8Z9Ar2bdnnns+8jF83ie1jpdcewW17mN7BVYUpRIQRR0SZRrxyX/5qzz8pSeQ3hxJK2gatHGgFL15w7mX7mN+KUNLIsVEFI1LOY9/4zn+7FfewpyMmbqWJoI1sGd+QEXBS66+hDQcU6ece/70T1hZnqdvNSpGQutQIiilyfMCZTSNT8SUUCmlzvqWzufQSiisZb5X0Dcaq7pWQrvGZz/+OaQsQAKv/4c/x87pbXqlpQ4JFxJGEtVkgjY1D/7p+/nsBz/CaNhCnhO8wmQaSZB8RGyJc8LGiTGP3v0t/uvb/jkP/uf3o6ZHyXJNqRQA06rl6LFNfuRnfhYkIL2C2//4v5MVjmHVINpQFjkL/ZJMC9E1NNWUFBNFkaN26SKZFpK19POcTCVyrcgy03kfAZLS7DlwBp/76Ee44Y23UPoxr3jddRx/7O9z78f+AwfPPogKjuBbZi6ijcb0YfWRe/ni+49y2Y/8OMoudoaR6YPJeeiur3LigW+iJutsr5+kT2BtMkH5wHBWIcawOOhx9LljXPsjb+alN1wJsxnj0OOJz/8VZT9jczgleI/SiiwvsNayMGeZ1TXTNnTGVEzopV5++AVnzN8aUyLTiqLMianjZ8YYirKHdy0qJg7s6fH8k89zxQ3XkcY7HH7x5Rx/bpvtpx7A9HpUjaPINClERpMZmQoQWk7efx/f+PJ99CRw6tg2T97xPxg+9SBh+yQ7OxtsD0fM2oammjGeVRQaAorNrS3Of/n3cevbfxq1tYOUPf7oN9+PqVdpmhaVEkkUtXOMx5PuHuqOFglCmRme2Zzdpudzffi8pfJWsRZRwqz2aKPoDwa7Up9nUBbYXfvczSqyub0cPLCCLi3nXnEp93/lIcbbq8z3c0pjmIWABbRSDMcTcqsY2JqFXBiffAqJLWtrq9TVjNFkCikyrRt6RUYbIYTUiWALZ/MT/+KXmOtZpFfw1Xvu58mv3sPaxiqzyQSlBJ0SNss73jurmFZ1BwhEUWaWp9fHt+mFXnb47D39W8ezFm008/NzZEYTnSM3il7e+ZAuBCZ1i3c1W8dXOefa6xj0hL5KXHHjjTz8jSfw2ydxCCLQywyV63qY86FjC65lWrVMR0OmbYNKgartpEpHp/Wq6FnbntA/82L+8e/9LsvzFgGOnxjypQ//IZPhKuPprGMcoSuQWjoJ1eYZKcG0qv8meM/vVJ0y8IL9i7favEArkODJdRcFLeCCp249zne2ea/M6SvHNz59L4df/ir6WaIsM6567Q3ky2fzxTvvYbkEbS0hQZ5pGufRu7iz8a7zKJRG0/VDpQRrNNs7IyZTuOWtv8L3vvnvMF8qGAw4/uwmt7/3vcRmmxAcCqEOAb8rejVNuzuv0w1WaG1QNkNIHNupb9OLvfzweSuDWyeTCXOZpZdndGQGnA/M2hZrLNpoBmWODp7xeEJ/YPj6XV/mzMuvYenQIpkI55x7gFf+vR/l9OmKx779APiGQb/EJaFfZKA1ISSKLKdxLZk2xJTYWN1gPG4571Wv503veTcXX3YuufdIkfHEN5/hi3/0AaazDTa3h8QQsZkl14qm7YzhgFC3jhACSukO9QTPXJHz/HZ9m57PujtZ9nqd0BsCJKh9oA2BzFqs0Sz0eqgYGI5GJGvZ2tlhec5w5L6vUyydxeLeZWxoKQYZV772+7j8u17NrDWsr28znlSUeU7rEyF0cz7TVqi9IuRLXHDD9/LD73gnr/rBH6EIG0hR0kTN/Xd/m7/60B9Q2pbNzS2qpqWJEZJ0UydKEWIkxERMkTZ2DgAihCRkSnFku7pNzl+Ze90tlx26c2dakRuVlIg45zBGkVtLbg1zRYlvG2azKcpmtK7FKMXSoGRlaZE2WPZd8lKu/YFbOOvw2WgdoalhMICg2V7fYnt1xGQ6ZbazxdziIlkvY+XMgyztWQBfdbMwJsdPWp5/8hRPfO6veOr+e6l8zXh7myLPaFOibiNRhMxaCqNp2pZp3TCuGhrnaXxn3IaQ2DPocfez2280PnjquiLEyLT2ooj0ioI8y8g0zPd6TEZDnI/oPGcymVLmGaVRxBDYGI5JCeLDX+b+0Qke3HOQg1e9jKtvua6b/ppusrRoWNp/PswmUFzcDcO4GoxAGEG2BGi+ecdnOf7g/WyffB7dTsgzYWNnQh0ibjajV5bkVlOHRNU0NDXMzfUoRRBRjKqmw7vapMY7GVVVB9YRlXxSzOqG3CqKosAYTWkN/TJne3urs7SNYToa0y8LVAoYk+ESxMbhXENhhK2Nk6jxFsPnn+TRT9zG/ktfxPw5F3DepYdZPpRjygwlfUKq8TFn85mTnHzyaU49/gRrzzzCchFovGM6mTDc3mKuKDvTiURKiumsplcWWC34AI7EzqRmcdDbLTsQY2JY1QKgjEFS8saF5Md1m0SQLMvIjKGfZ2SZZWNzAxciRdljPB7RL3tI9NjM0ISALUomO9uUuptaOHlqlazfY2AMiwt9Nh+7l/XHvspTn3D4tmU4C0TvGZSGOghz/Yzl+Zxx00KE46dHSErszBp8TOyMx/SLnKpuqXynMU1mFXmRkxtL7T1t27C54xn0CoqiJIlOQZDWR0IUkogzUxdG08CRPWV5vhJSYa0orVk9fRptLLYo2RkOO/O1rdB5TkJhbM5wewdIlHkPFyNtBFrHqKmpmoqAkBnL8sKA/kIfiobC9jEEpi4ynU3xWzO2doZgM9qmoTQahSaGSOsC/YGll+d4oKqbjjM2DUWpkRDQxuCcZ2s0pdcrUNZIkRVpeV5kY9o+P/NppBsXsr2D4rLlfnZJr1eglJK106dSVpRi8pztnS16RY/kW/plidIaZS3j0YRIYr7IKYqCmfMYayB0vmCM0IRI9B5JnTG6vr6Baxqq6Yxp45hMp6QUca7tUj8mRCDPcmof/jc2ZHZ7YiAgECF4T5HnhBSJu01vVrVJGyMoBUrL6qi5+8nVndsVsLk6ae4r82zYNC3Hjh1LmEyiaNbXN1KeFSgimc1A1O5klDBrG3JrQbrxl5iEsLvJ4D3Tuu4ewDsSqtNAlaZpGhrX4J2jrh1t03Ytq6oRrWl9pG1b8jwnimJrNELpjNwYrLY4F6hDpHWeqm2wShFcmyLgSbI1mqRZ3SIwOjWc3AdsKoHJs2vDL5waVg9srK8TlUVsltY3N1Pe64kSknMOZQyj6QzJcra2dzDakoIHrZk0Hh8iPgSC8wQUDumcLgTnWprW48Ju1MXgEyQBFyJaW3xI+JRwMbEzGkFMeBdJpuDU2jo2yztl31icc7QJprMZVeNSkefinU8JlZwPjKczNibNQ0+vjb8gMN61r5g+tTocnbln8ZL9i4O9pza3Uln2xCrBN430+gPqpk227ItzjqqqsFqhlQZtaULoSrW2+LbuUk8U3ntUit0Eso9UdY3aFX6bkHCpC0JKkWldE5Slqmsyk9E4B1oTU2RSNSBCUWT4GGh9ZFY3CWWkrhuJSpLWhvGsSoMiU5t1eOJTjxx7H/BVoNZ0I2VNgq2To3rUOLfv3OXBmSEmmU2nlGUPFyLJGNHGpo3NTSnyjJQSvf6A4XRGkq5QGKBtHW3aPZU2UOQZiKHyiWk16wxSoxhXDSEKznnSLtiufKQJnZzSuoDNc6Z1i7aWne0hg/l5Wu9xkdR6L62PCaWZzmYkNGfM99S3T2zf/43nN/8wxPRprWQ9Jbqh3t3x83GI6fT6pN2okzZ7S7V3rl9mSiupfJSi6KXVjU1hd4w7y3LaEJm2HuhUhRA6KFj7hChN6xxWa6IYZq3HxYQAMcC0dSRraUOgaRoCMG09iW4E23tHiNCERFSqm09vG7KspKlraZNKVV0TSeSZjc658X3HRvc8cnL7P4WYPg2c+Jvhfv7PdRz4i2fWhs89s8a95yzPXX14pf/C5YXe/LSulXNOBvN98B1InlQ1WgQxBiNC27aI0bBbnCR23CCmbm5cBIjg8Z19H8G5SKE0JIhtQzYoqKoZC0VJ6xxZXjKpKrKsYDTcptcboJXGatB5EbYqP37u1PCxY9uzbwBfAR4Gtv6PQXv+H0vAJlgGDu2+9uxO/in+9qwENMAGcAI4LrCR/q9fEvx/H/L/LQ7lDwAAABpJREFUet/QpfXfpgf8zopA2P2JRPr/feh/Ad1YUv7Sf+rMAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/custom-icons.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMjIwIgogICBoZWlnaHQ9IjIyMCIKICAgaWQ9InN2ZzIiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImN1c3RvbS1pY29ucy5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM0IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi40MTgxODE4IgogICAgIGlua3NjYXBlOmN4PSI2MC4zNzU5NCIKICAgICBpbmtzY2FwZTpjeT0iMTEwIgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjQiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTM2NiIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI3MTgiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjEwIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMTAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMTAiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEwIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTciPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkJhY2tncm91bmQiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcuMDIxNzM2MSw4LjA2OTQ5NjIpIgogICAgIHNvZGlwb2RpOmluc2Vuc2l0aXZlPSJ0cnVlIj4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIgogICAgICAgZD0iTSA2MCwxMCBDIDMyLjMsMTAgMTAsMzIuMyAxMCw2MCBsIDAsMTAwIGMgMCwyNy43IDIyLjMsNTAgNTAsNTAgbCAxMDAsMCBjIDI3LjcsMCA1MCwtMjIuMyA1MCwtNTAgTCAyMTAsNjAgQyAyMTAsMzIuMyAxODcuNywxMCAxNjAsMTAgTCA2MCwxMCB6IG0gOC45MDYyNSwxNy43ODEyNSA4Mi4xODc1LDAgYyAyMi43NzQ0LDAgNDEuMTI1LDE4LjM1MDYwMSA0MS4xMjUsNDEuMTI1IGwgMCw4Mi4xODc1IGMgMCwyMi43NzQ0IC0xOC4zNTA2LDQxLjEyNSAtNDEuMTI1LDQxLjEyNSBsIC04Mi4xODc1LDAgYyAtMjIuNzc0Mzk5LDAgLTQxLjEyNSwtMTguMzUwNiAtNDEuMTI1LC00MS4xMjUgbCAwLC04Mi4xODc1IGMgMCwtMjIuNzc0Mzk5IDE4LjM1MDYwMSwtNDEuMTI1IDQxLjEyNSwtNDEuMTI1IHoiCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNy4wMjE3MzYxLC04LjA2OTQ5NjIpIgogICAgICAgaWQ9InJlY3Q0OTkxIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICA8L2c+CiAgPGcKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjIiCiAgICAgaW5rc2NhcGU6bGFiZWw9IkNsYXNzIgogICAgIHN0eWxlPSJkaXNwbGF5Om5vbmUiCiAgICAgc29kaXBvZGk6aW5zZW5zaXRpdmU9InRydWUiPgogICAgPGcKICAgICAgIHN0eWxlPSJmb250LXNpemU6MjBweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEyNSU7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzMzMzMzMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpVYnVudHU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUiCiAgICAgICBpZD0idGV4dDM3NjEiPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDExOS43NzUsMTY4Ljk4ODkzIGMgLTguODQwMDYsMCAtMTYuNzczMzgsLTEuMzYgLTIzLjgsLTQuMDggLTcuMDI2NzAyLC0yLjcxOTk5IC0xMi45NzY2OTYsLTYuNjg2NjUgLTE3Ljg1LC0xMS45IC00Ljg3MzM1MywtNS4zMjY2NCAtOC42MTMzNDksLTExLjc4NjY0IC0xMS4yMiwtMTkuMzggLTIuNjA2Njc3LC03LjU5MzI5IC0zLjkxMDAwOSwtMTYuMzE5OTUgLTMuOTEsLTI2LjE4IC05ZS02LC05Ljg1OTkyNyAxLjQ3MzMyMiwtMTguNTg2NTg1IDQuNDIsLTI2LjE3OTk5NiAzLjA1OTk4MywtNy41OTMyNCA3LjE5NjY0NiwtMTMuOTk2NTY3IDEyLjQxLC0xOS4yMSA1LjIxMzMwMiwtNS4zMjY1NTcgMTEuMzMzMjk2LC05LjM0OTg4NiAxOC4zNiwtMTIuMDcgNy4wMjY2MiwtMi43MTk4ODEgMTQuNTYzMjcsLTQuMDc5ODc5IDIyLjYxLC00LjA4IDQuODczMjYsMS4yMWUtNCA5LjI5MzI2LDAuMzk2Nzg3IDEzLjI2LDEuMTkgMy45NjY1OCwwLjY4MDExOSA3LjQyMzI1LDEuNDczNDUyIDEwLjM3LDIuMzggMi45NDY1NywwLjkwNjc4MyA1LjM4MzI0LDEuODcwMTE1IDcuMzEsMi44OSAxLjkyNjU3LDEuMDIwMTEzIDMuMjg2NTcsMS43NTY3NzkgNC4wOCwyLjIxIGwgLTYuMjksMTcuNTEgYyAtMi43MjAwOSwtMS42OTk5MDQgLTYuNjMwMDksLTMuMjg2NTY5IC0xMS43MywtNC43NiAtNC45ODY3NSwtMS41ODY1NjYgLTEwLjQyNjc0LC0yLjM3OTg5OCAtMTYuMzIsLTIuMzggLTUuMTAwMDYsMS4wMmUtNCAtOS44NjAwNiwwLjkwNjc2OCAtMTQuMjgsMi43MiAtNC40MjAwNSwxLjcwMDA5NyAtOC4yNzMzNzksNC4zMDY3NjEgLTExLjU2LDcuODIgLTMuMTczMzcyLDMuNTEzNDIxIC01LjY2NjcwMyw3LjkzMzQxNyAtNy40OCwxMy4yNiAtMS44MTMzNjYsNS4zMjY3MzkgLTIuNzIwMDMyLDExLjUwMzM5NiAtMi43MiwxOC41Mjk5OTYgLTMuMmUtNSw2LjIzMzM5IDAuNjc5OTY3LDExLjk1NjcyIDIuMDQsMTcuMTcgMS40NzMyOTgsNS4yMTMzNyAzLjY4MzI5Niw5Ljc0NjcgNi42MywxMy42IDIuOTQ2NjIzLDMuNzQwMDMgNi42ODY2Miw2LjY4NjY5IDExLjIyLDguODQgNC41MzMyOCwyLjA0MDAyIDkuOTczMjcsMy4wNjAwMiAxNi4zMiwzLjA2IDcuNTkzMjYsMmUtNSAxMy43Njk5MiwtMC43MzY2NSAxOC41MywtMi4yMSA0Ljc1OTkxLC0xLjU4NjY0IDguNDQzMjQsLTMuMDU5OTcgMTEuMDUsLTQuNDIgbCA1Ljc4LDE3LjUxIGMgLTEuMzYwMSwwLjkwNjY4IC0zLjIzMDEsMS44MTMzNCAtNS42MSwyLjcyIC0yLjI2Njc2LDAuOTA2NjcgLTQuOTg2NzYsMS44MTMzNCAtOC4xNiwyLjcyIC0zLjE3MzQyLDAuNzkzMzQgLTYuNzQzNDIsMS40MTY2NyAtMTAuNzEsMS44NyAtMy45NjY3NCwwLjU2NjY3IC04LjIxNjc0LDAuODUgLTEyLjc1LDAuODUiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTcwcHg7Zm9udC13ZWlnaHQ6NTAwO2ZpbGw6IzMzMzMzMzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSBNZWRpdW0iCiAgICAgICAgIGlkPSJwYXRoNTAxMyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvZz4KICA8L2c+CiAgPGcKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjMiCiAgICAgaW5rc2NhcGU6bGFiZWw9IkludGVyZmFjZSIKICAgICBzdHlsZT0iZGlzcGxheTpub25lIgogICAgIHNvZGlwb2RpOmluc2Vuc2l0aXZlPSJ0cnVlIj4KICAgIDxnCiAgICAgICBzdHlsZT0iZm9udC1zaXplOjIwcHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxMjUlO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiMzMzMzMzM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6VWJ1bnR1Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VWJ1bnR1IgogICAgICAgaWQ9InRleHQzNzYxLTkiPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDk5LjI4OTk5Myw0OC42Mjg5MzQgMjEuNDE5OTk3LDAgMCwxMTcuODA5OTk2IC0yMS40MTk5OTcsMCAwLC0xMTcuODA5OTk2IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE3MHB4O2ZvbnQtd2VpZ2h0OjUwMDtmaWxsOiMzMzMzMzM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUgTWVkaXVtIgogICAgICAgICBpZD0icGF0aDUwODYiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L2c+CiAgPC9nPgogIDxnCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXI0IgogICAgIGlua3NjYXBlOmxhYmVsPSJUcmFpdCIKICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiCiAgICAgc29kaXBvZGk6aW5zZW5zaXRpdmU9InRydWUiPgogICAgPGcKICAgICAgIHN0eWxlPSJmb250LXNpemU6MjBweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEyNSU7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzMzMzMzMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpVYnVudHU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUiCiAgICAgICBpZD0idGV4dDM3NjEtNyI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTU0LjY3MTQ4LDQ4LjYyODkzNCAwLDE4LjUzIC0zNi4yMSwwIDAsOTkuMjc5OTk2IC0yMS41ODk5OTUsMCAwLC05OS4yNzk5OTYgLTM2LjIxLDAgMCwtMTguNTMgOTQuMDA5OTk1LDAiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTcwcHg7Zm9udC13ZWlnaHQ6NTAwO2ZpbGw6IzMzMzMzMzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSBNZWRpdW0iCiAgICAgICAgIGlkPSJwYXRoNTA4OSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/favicon.ico</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAABAAEAEBAAAAAAAABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA4ODgAAAAABgAAAHIAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAhQAAAIUAAACFAAAAcgAAAAcAAAAAAAAAFwwfQv8dNGH/KUFr/yhCdP8tSXv/KUR1/y5Kff8nRHz/KkeA/y5IgP8nQG7/KD9r/xw0YP8aLlL/AAAAFytBZfofN2T/DyhV/yNAdf8cOW3/L02A/ytKgP85WJL/M1SP/ydHf/85WZL/OFaP/xs2Zv8rQ3L/Ijhj/ytBa/scL1X/IThh/zlShP8VMGH/J0V//05no//Q8f//4f///9z9///U9P//SmCY/yZDd/8tRnj/NlCB/xwzXP8PIkP/JThb/ylBb/8kPmv/NlOI/9fz+v/T8v//MlOM/zdcnf8zVY//MVOU/+H////l9vn/MU2F/yE5Zv8fOGf/HS9Q/xsuU/8lPmz/M015/213nf9QWH//Lk2F/zhalf9zf6X/SFua/zxdl/83WZb/UF6J/1lch/8nQW//KD5n/x4wVf8XKkz/GTBZ/x03Zf/O6v//ME6B/zlWkv/S8v//doGq/9v9///S8///ICpg/y5Lhf/S8P//JD9w/yE5ZP8XKUn/HC9Q/xsyXP8yS3j/0uz3/zhXj/83WJH/5u3y/3J7o//U+P//2vv//yk3bf8zUov/1e/3/zhRfv8oP2f/ITJS/xwvUf8qP2j/OFF8/9vs8P8wTYH/1fX//6u3zP+jrsj/8////05ajf/y9fb/OFOF/9rt8P89VoL/KD9o/yY4WP8eM1b/KUNs/zVPeP/e+f//PluQ/yEzY//n////2t3l/1VmlP/k////cICm/zhVg//W8v//KkZx/ytCaf8kNlj/MENi/zVPdv89VYD/3fj//09pl/9GZJf/MUBq/9nc5f/s////wcjU/0Ngjf9Pa5X/4P3//zlRef8qRW3/Kz9d/zFFYf82UXX/RF+I/z1Yfv/q////aYi1/0xrl/9Na5v/TWuX/0lrm/9gfKn/3vz//0dijP9BW4H/PliA/zhMaP8oP2H/PlV2/0Vihv9IYYX/UW6Y/+v////t8PL/epjC/3SRuP/t7/L/7f///0lki/87Vnz/TGmR/z5Vdv80SWr/Rlt9/0tkjP9KZIf/TmqU/0xni/9Vc5j/Um2V/x07Yf8dOmH/UW2V/0hpk/9Qa5P/TGaM/0Nafv9KZI7/QlV3/wAAAC5EXYD/VG+X/1JukP9MZ4//T22S/1Ntj/9beJn/W3id/05tlf9ceZ7/UGyQ/0tlhv9OZ4//P1Z2/wAAAC/9/f0AIyUqMEtjjf9HW4L/SWSN/0dhiv9EXID/UGeO/09nkv9OZ5H/R2CF/0xliv9KY43/RlyB/yMmKzEAAAAA4AcAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAwAMAAA==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/hierarchy-item.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAARCAIAAACNaGH2AAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAAAIhJREFUKM9jNDY2ZiAaMDGQAihRzSqurCHLTaRqVuWIhsZYTe5B4G4kR3GzEq2a26p63pIGN1lWgqrZ2NhYf12cO/2icn5PNZoGFnS1QtaNq7bBeBL5maZHq459hfEZccS8uENVT6n+9e687gMvfxN0d2amJrpSPGazsrL+/v2b2BDEopTGcQkAlj4m+FZaLVQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/icon-class-13x13.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAA6AAAAOgBhtX2rwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEpSURBVCiRjZIhS0NhFIaf892rIMw2BJNBwWTxOxdhDkxWq9FVy9KyTYta9gsM/gWDaQhOGLtLBstEl4yDlV2G9x7DHFw3Lu7El+eBl+97xXu/DzSBQ/6/NlAPf4VX4CzLsu8i2jkXAg2gKd57A3biOH6fAap6ICInwGaWZW8ich/H8ZeqbgN9B5CmaZoTGsCLmR2Z2aqI1MxM81yYrxBF0S5wJSIX3W73cpaLiPypOlf9GHClUuk2H5qZFUpmtgUMW61WUvQgC5KIDICyqpaXlpxzD0ACXKvqCkClUlmrVqvrhVKn0/kws3PgFBip6udkMhkmSVLLcyFAEATBLOj1eneq+igikZltiMhgPB4/5Tnx3j8zXcTNkovYC4E60yn1nZv/gYVrA/Uf6WhrDeKPiz4AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/icon-class.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB2ZXJzaW9uPSIxLjEiCiAgIHdpZHRoPSIyMjAiCiAgIGhlaWdodD0iMjIwIgogICBpZD0ic3ZnMiI+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3LjAyMTczNjEsOC4wNjk0OTYyKSIKICAgICBpZD0ibGF5ZXIxIj4KICAgIDxwYXRoCiAgICAgICBkPSJNIDYwLDEwIEMgMzIuMywxMCAxMCwzMi4zIDEwLDYwIGwgMCwxMDAgYyAwLDI3LjcgMjIuMyw1MCA1MCw1MCBsIDEwMCwwIGMgMjcuNywwIDUwLC0yMi4zIDUwLC01MCBMIDIxMCw2MCBDIDIxMCwzMi4zIDE4Ny43LDEwIDE2MCwxMCBMIDYwLDEwIHogbSA4LjkwNjI1LDE3Ljc4MTI1IDgyLjE4NzUsMCBjIDIyLjc3NDQsMCA0MS4xMjUsMTguMzUwNjAxIDQxLjEyNSw0MS4xMjUgbCAwLDgyLjE4NzUgYyAwLDIyLjc3NDQgLTE4LjM1MDYsNDEuMTI1IC00MS4xMjUsNDEuMTI1IGwgLTgyLjE4NzUsMCBjIC0yMi43NzQzOTksMCAtNDEuMTI1LC0xOC4zNTA2IC00MS4xMjUsLTQxLjEyNSBsIDAsLTgyLjE4NzUgYyAwLC0yMi43NzQzOTkgMTguMzUwNjAxLC00MS4xMjUgNDEuMTI1LC00MS4xMjUgeiIKICAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03LjAyMTczNjEsLTguMDY5NDk2MikiCiAgICAgICBpZD0icmVjdDQ5OTEiCiAgICAgICBzdHlsZT0iZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgogIDwvZz4KICA8ZwogICAgIGlkPSJsYXllcjIiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAgIDxnCiAgICAgICBpZD0idGV4dDM3NjEiCiAgICAgICBzdHlsZT0iZm9udC1zaXplOjIwcHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxMjUlO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiMzMzMzMzM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6VWJ1bnR1Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VWJ1bnR1Ij4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAxMTkuNzc1LDE2OC45ODg5MyBjIC04Ljg0MDA2LDAgLTE2Ljc3MzM4LC0xLjM2IC0yMy44LC00LjA4IC03LjAyNjcwMiwtMi43MTk5OSAtMTIuOTc2Njk2LC02LjY4NjY1IC0xNy44NSwtMTEuOSAtNC44NzMzNTMsLTUuMzI2NjQgLTguNjEzMzQ5LC0xMS43ODY2NCAtMTEuMjIsLTE5LjM4IC0yLjYwNjY3NywtNy41OTMyOSAtMy45MTAwMDksLTE2LjMxOTk1IC0zLjkxLC0yNi4xOCAtOWUtNiwtOS44NTk5MjcgMS40NzMzMjIsLTE4LjU4NjU4NSA0LjQyLC0yNi4xNzk5OTYgMy4wNTk5ODMsLTcuNTkzMjQgNy4xOTY2NDYsLTEzLjk5NjU2NyAxMi40MSwtMTkuMjEgNS4yMTMzMDIsLTUuMzI2NTU3IDExLjMzMzI5NiwtOS4zNDk4ODYgMTguMzYsLTEyLjA3IDcuMDI2NjIsLTIuNzE5ODgxIDE0LjU2MzI3LC00LjA3OTg3OSAyMi42MSwtNC4wOCA0Ljg3MzI2LDEuMjFlLTQgOS4yOTMyNiwwLjM5Njc4NyAxMy4yNiwxLjE5IDMuOTY2NTgsMC42ODAxMTkgNy40MjMyNSwxLjQ3MzQ1MiAxMC4zNywyLjM4IDIuOTQ2NTcsMC45MDY3ODMgNS4zODMyNCwxLjg3MDExNSA3LjMxLDIuODkgMS45MjY1NywxLjAyMDExMyAzLjI4NjU3LDEuNzU2Nzc5IDQuMDgsMi4yMSBsIC02LjI5LDE3LjUxIGMgLTIuNzIwMDksLTEuNjk5OTA0IC02LjYzMDA5LC0zLjI4NjU2OSAtMTEuNzMsLTQuNzYgLTQuOTg2NzUsLTEuNTg2NTY2IC0xMC40MjY3NCwtMi4zNzk4OTggLTE2LjMyLC0yLjM4IC01LjEwMDA2LDEuMDJlLTQgLTkuODYwMDYsMC45MDY3NjggLTE0LjI4LDIuNzIgLTQuNDIwMDUsMS43MDAwOTcgLTguMjczMzc5LDQuMzA2NzYxIC0xMS41Niw3LjgyIC0zLjE3MzM3MiwzLjUxMzQyMSAtNS42NjY3MDMsNy45MzM0MTcgLTcuNDgsMTMuMjYgLTEuODEzMzY2LDUuMzI2NzM5IC0yLjcyMDAzMiwxMS41MDMzOTYgLTIuNzIsMTguNTI5OTk2IC0zLjJlLTUsNi4yMzMzOSAwLjY3OTk2NywxMS45NTY3MiAyLjA0LDE3LjE3IDEuNDczMjk4LDUuMjEzMzcgMy42ODMyOTYsOS43NDY3IDYuNjMsMTMuNiAyLjk0NjYyMywzLjc0MDAzIDYuNjg2NjIsNi42ODY2OSAxMS4yMiw4Ljg0IDQuNTMzMjgsMi4wNDAwMiA5Ljk3MzI3LDMuMDYwMDIgMTYuMzIsMy4wNiA3LjU5MzI2LDJlLTUgMTMuNzY5OTIsLTAuNzM2NjUgMTguNTMsLTIuMjEgNC43NTk5MSwtMS41ODY2NCA4LjQ0MzI0LC0zLjA1OTk3IDExLjA1LC00LjQyIGwgNS43OCwxNy41MSBjIC0xLjM2MDEsMC45MDY2OCAtMy4yMzAxLDEuODEzMzQgLTUuNjEsMi43MiAtMi4yNjY3NiwwLjkwNjY3IC00Ljk4Njc2LDEuODEzMzQgLTguMTYsMi43MiAtMy4xNzM0MiwwLjc5MzM0IC02Ljc0MzQyLDEuNDE2NjcgLTEwLjcxLDEuODcgLTMuOTY2NzQsMC41NjY2NyAtOC4yMTY3NCwwLjg1IC0xMi43NSwwLjg1IgogICAgICAgICBpZD0icGF0aDUwMTMiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTcwcHg7Zm9udC13ZWlnaHQ6NTAwO2ZpbGw6IzMzMzMzMzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSBNZWRpdW0iIC8+CiAgICA8L2c+CiAgPC9nPgogIDxnCiAgICAgaWQ9ImxheWVyMyIKICAgICBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgIDx0ZXh0CiAgICAgICB4PSIxMTAuMDgyMzQiCiAgICAgICB5PSIxNjYuNDM4OTMiCiAgICAgICBpZD0idGV4dDM3NjEtOSIKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBzdHlsZT0iZm9udC1zaXplOjIwcHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxMjUlO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiMzMzMzMzM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6VWJ1bnR1Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VWJ1bnR1Ij48dHNwYW4KICAgICAgICAgeD0iMTEwLjA4MjM0IgogICAgICAgICB5PSIxNjYuNDM4OTMiCiAgICAgICAgIGlkPSJ0c3BhbjM3NjMtNSIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNzBweDtmb250LXdlaWdodDo1MDA7ZmlsbDojMzMzMzMzOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VWJ1bnR1IE1lZGl1bSI+STwvdHNwYW4+PC90ZXh0PgogIDwvZz4KICA8ZwogICAgIGlkPSJsYXllcjQiCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICA8dGV4dAogICAgICAgeD0iMTA3LjU5MjExIgogICAgICAgeT0iMTY2LjQzODkzIgogICAgICAgaWQ9InRleHQzNzYxLTciCiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgc3R5bGU9ImZvbnQtc2l6ZToyMHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MTI1JTtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjptaWRkbGU7ZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OlVidW50dTstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSI+PHRzcGFuCiAgICAgICAgIHg9IjEwNy41OTIxMSIKICAgICAgICAgeT0iMTY2LjQzODkzIgogICAgICAgICBpZD0idHNwYW4zNzYzLTgiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTcwcHg7Zm9udC13ZWlnaHQ6NTAwO2ZpbGw6IzMzMzMzMzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSBNZWRpdW0iPlQ8L3RzcGFuPjwvdGV4dD4KICA8L2c+Cjwvc3ZnPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/icon-interface-13x13.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAA6AAAAOgBhtX2rwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACxSURBVCiR7ZIxCsJAEEXf7ibkBoK22krASWflSQQPkMo72FjlAJ7GdGmC7XoBD5Am7moRFxZEkgM45eP9YQa+EpENUAFbxqcGyuQTuAF77/3zl621ToAjUCkReQGrpmnuQcjzfJam6aHv+0vbto/Ai6JYAlYDOOdcvNUYMwdOWZYtYh48PeGP71P/oShkjDExdM5ZpdSu6zob8+ApEbkyNOI8sRHrBCgZqmS1Hr22Bso335szaMsx+TsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/icon-interface.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB2ZXJzaW9uPSIxLjEiCiAgIHdpZHRoPSIyMjAiCiAgIGhlaWdodD0iMjIwIgogICBpZD0ic3ZnMiI+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3LjAyMTczNjEsOC4wNjk0OTYyKSIKICAgICBpZD0ibGF5ZXIxIj4KICAgIDxwYXRoCiAgICAgICBkPSJNIDYwLDEwIEMgMzIuMywxMCAxMCwzMi4zIDEwLDYwIGwgMCwxMDAgYyAwLDI3LjcgMjIuMyw1MCA1MCw1MCBsIDEwMCwwIGMgMjcuNywwIDUwLC0yMi4zIDUwLC01MCBMIDIxMCw2MCBDIDIxMCwzMi4zIDE4Ny43LDEwIDE2MCwxMCBMIDYwLDEwIHogbSA4LjkwNjI1LDE3Ljc4MTI1IDgyLjE4NzUsMCBjIDIyLjc3NDQsMCA0MS4xMjUsMTguMzUwNjAxIDQxLjEyNSw0MS4xMjUgbCAwLDgyLjE4NzUgYyAwLDIyLjc3NDQgLTE4LjM1MDYsNDEuMTI1IC00MS4xMjUsNDEuMTI1IGwgLTgyLjE4NzUsMCBjIC0yMi43NzQzOTksMCAtNDEuMTI1LC0xOC4zNTA2IC00MS4xMjUsLTQxLjEyNSBsIDAsLTgyLjE4NzUgYyAwLC0yMi43NzQzOTkgMTguMzUwNjAxLC00MS4xMjUgNDEuMTI1LC00MS4xMjUgeiIKICAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03LjAyMTczNjEsLTguMDY5NDk2MikiCiAgICAgICBpZD0icmVjdDQ5OTEiCiAgICAgICBzdHlsZT0iZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgogIDwvZz4KICA8ZwogICAgIGlkPSJsYXllcjIiCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICA8ZwogICAgICAgaWQ9InRleHQzNzYxIgogICAgICAgc3R5bGU9ImZvbnQtc2l6ZToyMHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MTI1JTtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjptaWRkbGU7ZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OlVidW50dTstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTE5Ljc3NSwxNjguOTg4OTMgYyAtOC44NDAwNiwwIC0xNi43NzMzOCwtMS4zNiAtMjMuOCwtNC4wOCAtNy4wMjY3MDIsLTIuNzE5OTkgLTEyLjk3NjY5NiwtNi42ODY2NSAtMTcuODUsLTExLjkgLTQuODczMzUzLC01LjMyNjY0IC04LjYxMzM0OSwtMTEuNzg2NjQgLTExLjIyLC0xOS4zOCAtMi42MDY2NzcsLTcuNTkzMjkgLTMuOTEwMDA5LC0xNi4zMTk5NSAtMy45MSwtMjYuMTggLTllLTYsLTkuODU5OTI3IDEuNDczMzIyLC0xOC41ODY1ODUgNC40MiwtMjYuMTc5OTk2IDMuMDU5OTgzLC03LjU5MzI0IDcuMTk2NjQ2LC0xMy45OTY1NjcgMTIuNDEsLTE5LjIxIDUuMjEzMzAyLC01LjMyNjU1NyAxMS4zMzMyOTYsLTkuMzQ5ODg2IDE4LjM2LC0xMi4wNyA3LjAyNjYyLC0yLjcxOTg4MSAxNC41NjMyNywtNC4wNzk4NzkgMjIuNjEsLTQuMDggNC44NzMyNiwxLjIxZS00IDkuMjkzMjYsMC4zOTY3ODcgMTMuMjYsMS4xOSAzLjk2NjU4LDAuNjgwMTE5IDcuNDIzMjUsMS40NzM0NTIgMTAuMzcsMi4zOCAyLjk0NjU3LDAuOTA2NzgzIDUuMzgzMjQsMS44NzAxMTUgNy4zMSwyLjg5IDEuOTI2NTcsMS4wMjAxMTMgMy4yODY1NywxLjc1Njc3OSA0LjA4LDIuMjEgbCAtNi4yOSwxNy41MSBjIC0yLjcyMDA5LC0xLjY5OTkwNCAtNi42MzAwOSwtMy4yODY1NjkgLTExLjczLC00Ljc2IC00Ljk4Njc1LC0xLjU4NjU2NiAtMTAuNDI2NzQsLTIuMzc5ODk4IC0xNi4zMiwtMi4zOCAtNS4xMDAwNiwxLjAyZS00IC05Ljg2MDA2LDAuOTA2NzY4IC0xNC4yOCwyLjcyIC00LjQyMDA1LDEuNzAwMDk3IC04LjI3MzM3OSw0LjMwNjc2MSAtMTEuNTYsNy44MiAtMy4xNzMzNzIsMy41MTM0MjEgLTUuNjY2NzAzLDcuOTMzNDE3IC03LjQ4LDEzLjI2IC0xLjgxMzM2Niw1LjMyNjczOSAtMi43MjAwMzIsMTEuNTAzMzk2IC0yLjcyLDE4LjUyOTk5NiAtMy4yZS01LDYuMjMzMzkgMC42Nzk5NjcsMTEuOTU2NzIgMi4wNCwxNy4xNyAxLjQ3MzI5OCw1LjIxMzM3IDMuNjgzMjk2LDkuNzQ2NyA2LjYzLDEzLjYgMi45NDY2MjMsMy43NDAwMyA2LjY4NjYyLDYuNjg2NjkgMTEuMjIsOC44NCA0LjUzMzI4LDIuMDQwMDIgOS45NzMyNywzLjA2MDAyIDE2LjMyLDMuMDYgNy41OTMyNiwyZS01IDEzLjc2OTkyLC0wLjczNjY1IDE4LjUzLC0yLjIxIDQuNzU5OTEsLTEuNTg2NjQgOC40NDMyNCwtMy4wNTk5NyAxMS4wNSwtNC40MiBsIDUuNzgsMTcuNTEgYyAtMS4zNjAxLDAuOTA2NjggLTMuMjMwMSwxLjgxMzM0IC01LjYxLDIuNzIgLTIuMjY2NzYsMC45MDY2NyAtNC45ODY3NiwxLjgxMzM0IC04LjE2LDIuNzIgLTMuMTczNDIsMC43OTMzNCAtNi43NDM0MiwxLjQxNjY3IC0xMC43MSwxLjg3IC0zLjk2Njc0LDAuNTY2NjcgLTguMjE2NzQsMC44NSAtMTIuNzUsMC44NSIKICAgICAgICAgaWQ9InBhdGg1MDEzIgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE3MHB4O2ZvbnQtd2VpZ2h0OjUwMDtmaWxsOiMzMzMzMzM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUgTWVkaXVtIiAvPgogICAgPC9nPgogIDwvZz4KICA8ZwogICAgIGlkPSJsYXllcjMiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAgIDxnCiAgICAgICBpZD0idGV4dDM3NjEtOSIKICAgICAgIHN0eWxlPSJmb250LXNpemU6MjBweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEyNSU7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzMzMzMzMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpVYnVudHU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUiPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDk5LjI4OTk5Myw0OC42Mjg5MzQgMjEuNDE5OTk3LDAgMCwxMTcuODA5OTk2IC0yMS40MTk5OTcsMCAwLC0xMTcuODA5OTk2IgogICAgICAgICBpZD0icGF0aDUwODYiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTcwcHg7Zm9udC13ZWlnaHQ6NTAwO2ZpbGw6IzMzMzMzMzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSBNZWRpdW0iIC8+CiAgICA8L2c+CiAgPC9nPgogIDxnCiAgICAgaWQ9ImxheWVyNCIKICAgICBzdHlsZT0iZGlzcGxheTpub25lIj4KICAgIDxnCiAgICAgICBpZD0idGV4dDM3NjEtNyIKICAgICAgIHN0eWxlPSJmb250LXNpemU6MjBweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEyNSU7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzMzMzMzMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpVYnVudHU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUiPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDE1NC42NzE0OCw0OC42Mjg5MzQgMCwxOC41MyAtMzYuMjEsMCAwLDk5LjI3OTk5NiAtMjEuNTg5OTk1LDAgMCwtOTkuMjc5OTk2IC0zNi4yMSwwIDAsLTE4LjUzIDk0LjAwOTk5NSwwIgogICAgICAgICBpZD0icGF0aDUwODkiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTcwcHg7Zm9udC13ZWlnaHQ6NTAwO2ZpbGw6IzMzMzMzMzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSBNZWRpdW0iIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/icon-trait-13x13.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAA6AAAAOgBhtX2rwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAADRSURBVCiR3ZKxTQNBFETf7K4uoQwISCDgn5wQQUQXFIB0EWUQOXAtLgCLZO8AITK7CVJu9xMYpBMWsmN+OJr3NSONzOwCmAOX7L8V0KVv4A24rbWOf7lDCAm4B+YyMwdOcs4bM7uWNPsNuPtL3/fLtm2PgXUCKKUUAEmn7n4TQjhy9xZ4dvcPSZ/AspRSYoyk6cec8wJYmNm5pNda690wDE87UQ8ov9vvv0IxxjgVx3HcSLpqmuZ9qv/4ZGaPbBfxcOAizhLQsZ3SOoS9aVdA9wUmn0iraysBGAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/icon-trait.svg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB2ZXJzaW9uPSIxLjEiCiAgIHdpZHRoPSIyMjAiCiAgIGhlaWdodD0iMjIwIgogICBpZD0ic3ZnMiI+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiIC8+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3LjAyMTczNjEsOC4wNjk0OTYyKSIKICAgICBpZD0ibGF5ZXIxIj4KICAgIDxwYXRoCiAgICAgICBkPSJNIDYwLDEwIEMgMzIuMywxMCAxMCwzMi4zIDEwLDYwIGwgMCwxMDAgYyAwLDI3LjcgMjIuMyw1MCA1MCw1MCBsIDEwMCwwIGMgMjcuNywwIDUwLC0yMi4zIDUwLC01MCBMIDIxMCw2MCBDIDIxMCwzMi4zIDE4Ny43LDEwIDE2MCwxMCBMIDYwLDEwIHogbSA4LjkwNjI1LDE3Ljc4MTI1IDgyLjE4NzUsMCBjIDIyLjc3NDQsMCA0MS4xMjUsMTguMzUwNjAxIDQxLjEyNSw0MS4xMjUgbCAwLDgyLjE4NzUgYyAwLDIyLjc3NDQgLTE4LjM1MDYsNDEuMTI1IC00MS4xMjUsNDEuMTI1IGwgLTgyLjE4NzUsMCBjIC0yMi43NzQzOTksMCAtNDEuMTI1LC0xOC4zNTA2IC00MS4xMjUsLTQxLjEyNSBsIDAsLTgyLjE4NzUgYyAwLC0yMi43NzQzOTkgMTguMzUwNjAxLC00MS4xMjUgNDEuMTI1LC00MS4xMjUgeiIKICAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03LjAyMTczNjEsLTguMDY5NDk2MikiCiAgICAgICBpZD0icmVjdDQ5OTEiCiAgICAgICBzdHlsZT0iZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgogIDwvZz4KICA8ZwogICAgIGlkPSJsYXllcjIiCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICA8ZwogICAgICAgaWQ9InRleHQzNzYxIgogICAgICAgc3R5bGU9ImZvbnQtc2l6ZToyMHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MTI1JTtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjptaWRkbGU7ZmlsbDojMzMzMzMzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OlVidW50dTstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTE5Ljc3NSwxNjguOTg4OTMgYyAtOC44NDAwNiwwIC0xNi43NzMzOCwtMS4zNiAtMjMuOCwtNC4wOCAtNy4wMjY3MDIsLTIuNzE5OTkgLTEyLjk3NjY5NiwtNi42ODY2NSAtMTcuODUsLTExLjkgLTQuODczMzUzLC01LjMyNjY0IC04LjYxMzM0OSwtMTEuNzg2NjQgLTExLjIyLC0xOS4zOCAtMi42MDY2NzcsLTcuNTkzMjkgLTMuOTEwMDA5LC0xNi4zMTk5NSAtMy45MSwtMjYuMTggLTllLTYsLTkuODU5OTI3IDEuNDczMzIyLC0xOC41ODY1ODUgNC40MiwtMjYuMTc5OTk2IDMuMDU5OTgzLC03LjU5MzI0IDcuMTk2NjQ2LC0xMy45OTY1NjcgMTIuNDEsLTE5LjIxIDUuMjEzMzAyLC01LjMyNjU1NyAxMS4zMzMyOTYsLTkuMzQ5ODg2IDE4LjM2LC0xMi4wNyA3LjAyNjYyLC0yLjcxOTg4MSAxNC41NjMyNywtNC4wNzk4NzkgMjIuNjEsLTQuMDggNC44NzMyNiwxLjIxZS00IDkuMjkzMjYsMC4zOTY3ODcgMTMuMjYsMS4xOSAzLjk2NjU4LDAuNjgwMTE5IDcuNDIzMjUsMS40NzM0NTIgMTAuMzcsMi4zOCAyLjk0NjU3LDAuOTA2NzgzIDUuMzgzMjQsMS44NzAxMTUgNy4zMSwyLjg5IDEuOTI2NTcsMS4wMjAxMTMgMy4yODY1NywxLjc1Njc3OSA0LjA4LDIuMjEgbCAtNi4yOSwxNy41MSBjIC0yLjcyMDA5LC0xLjY5OTkwNCAtNi42MzAwOSwtMy4yODY1NjkgLTExLjczLC00Ljc2IC00Ljk4Njc1LC0xLjU4NjU2NiAtMTAuNDI2NzQsLTIuMzc5ODk4IC0xNi4zMiwtMi4zOCAtNS4xMDAwNiwxLjAyZS00IC05Ljg2MDA2LDAuOTA2NzY4IC0xNC4yOCwyLjcyIC00LjQyMDA1LDEuNzAwMDk3IC04LjI3MzM3OSw0LjMwNjc2MSAtMTEuNTYsNy44MiAtMy4xNzMzNzIsMy41MTM0MjEgLTUuNjY2NzAzLDcuOTMzNDE3IC03LjQ4LDEzLjI2IC0xLjgxMzM2Niw1LjMyNjczOSAtMi43MjAwMzIsMTEuNTAzMzk2IC0yLjcyLDE4LjUyOTk5NiAtMy4yZS01LDYuMjMzMzkgMC42Nzk5NjcsMTEuOTU2NzIgMi4wNCwxNy4xNyAxLjQ3MzI5OCw1LjIxMzM3IDMuNjgzMjk2LDkuNzQ2NyA2LjYzLDEzLjYgMi45NDY2MjMsMy43NDAwMyA2LjY4NjYyLDYuNjg2NjkgMTEuMjIsOC44NCA0LjUzMzI4LDIuMDQwMDIgOS45NzMyNywzLjA2MDAyIDE2LjMyLDMuMDYgNy41OTMyNiwyZS01IDEzLjc2OTkyLC0wLjczNjY1IDE4LjUzLC0yLjIxIDQuNzU5OTEsLTEuNTg2NjQgOC40NDMyNCwtMy4wNTk5NyAxMS4wNSwtNC40MiBsIDUuNzgsMTcuNTEgYyAtMS4zNjAxLDAuOTA2NjggLTMuMjMwMSwxLjgxMzM0IC01LjYxLDIuNzIgLTIuMjY2NzYsMC45MDY2NyAtNC45ODY3NiwxLjgxMzM0IC04LjE2LDIuNzIgLTMuMTczNDIsMC43OTMzNCAtNi43NDM0MiwxLjQxNjY3IC0xMC43MSwxLjg3IC0zLjk2Njc0LDAuNTY2NjcgLTguMjE2NzQsMC44NSAtMTIuNzUsMC44NSIKICAgICAgICAgaWQ9InBhdGg1MDEzIgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE3MHB4O2ZvbnQtd2VpZ2h0OjUwMDtmaWxsOiMzMzMzMzM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUgTWVkaXVtIiAvPgogICAgPC9nPgogIDwvZz4KICA8ZwogICAgIGlkPSJsYXllcjMiCiAgICAgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICA8ZwogICAgICAgaWQ9InRleHQzNzYxLTkiCiAgICAgICBzdHlsZT0iZm9udC1zaXplOjIwcHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxMjUlO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiMzMzMzMzM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6VWJ1bnR1Oy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VWJ1bnR1Ij4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSA5OS4yODk5OTMsNDguNjI4OTM0IDIxLjQxOTk5NywwIDAsMTE3LjgwOTk5NiAtMjEuNDE5OTk3LDAgMCwtMTE3LjgwOTk5NiIKICAgICAgICAgaWQ9InBhdGg1MDg2IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE3MHB4O2ZvbnQtd2VpZ2h0OjUwMDtmaWxsOiMzMzMzMzM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUgTWVkaXVtIiAvPgogICAgPC9nPgogIDwvZz4KICA8ZwogICAgIGlkPSJsYXllcjQiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAgIDxnCiAgICAgICBpZD0idGV4dDM3NjEtNyIKICAgICAgIHN0eWxlPSJmb250LXNpemU6MjBweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEyNSU7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzMzMzMzMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpVYnVudHU7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpVYnVudHUiPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDE1NC42NzE0OCw0OC42Mjg5MzQgMCwxOC41MyAtMzYuMjEsMCAwLDk5LjI3OTk5NiAtMjEuNTg5OTk1LDAgMCwtOTkuMjc5OTk2IC0zNi4yMSwwIDAsLTE4LjUzIDk0LjAwOTk5NSwwIgogICAgICAgICBpZD0icGF0aDUwODkiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTcwcHg7Zm9udC13ZWlnaHQ6NTAwO2ZpbGw6IzMzMzMzMzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlVidW50dSBNZWRpdW0iIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/grab.cur</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////DAwM/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////wICAv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////DQ0N/wAAAAAAAAAAAAAAAAAAAAADAwP//////////////////////////////////////////////////////wUFBf8AAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////////////////////BQUF/wAAAAAAAAAAAAAAAAAAAAABAQH/AAAA/////////////////////////////////////////////////wEBAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAcHB/////////////////////////////////////////////////8CAgL/AAAAAAAAAAAAAAAAAAAAABoaGv///////////////////////////////////////////wAAAP//////AgIC/wAAAAAAAAAAAAAAAAAAAAAAAAD///////////8AAAD///////////8AAAD///////////8NDQ3/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCf8AAAD/AAAAAAICAv8AAAD/AAAAAAEBAf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AcAwPgH3cDwBwAA4AMAAMADAADAAQAA4AEAAPABAADgAQAA4AMAAPJPAAD//wAA//8AAP//AAD//wAA//8AAA==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/hand.cur</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////8aGhr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQH//////////////////////////////////////wEBAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////AQEB/wAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////////xQUFP8AAAAAAAAAAAAAAAAAAAAAHh4e////////////////////////////////////////////////////////////DQ0N/wAAAAAAAAAAAAAA/////////////////////////////////////////////////////////////////wMDA/8AAAAADw8P/////////////////w8PD/////////////////////////////////////////////////8AAAD/AAAAAAAAAP///////////wwMDP8AAAD//////////////////////////////////////////////////////wAAAP8AAAAAAAAA/yEhIf8AAAD/AAAA//////////////////////////////////////8AAAD///////////8BAQH/AAAAAAAAAAAAAAAAAAAA////////////AAAA////////////AAAA////////////BAQE////////////AAAA/wAAAAAAAAAAAAAAAAkJCf///////////xYWFv///////////wICAv///////////wEBAf8AAAD//////wwMDP8AAAAAAAAAAAAAAP///////////wAAAP8NDQ3///////////8AAAD///////////8YGBj/AAAAAAcHB/8AAAAAAAAAAAAAAAABAQH///////////8BAQH/AAAA////////////BQUF////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAP///////////wUFBf8EBAT/AwMD/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wQEBP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AcgIPgHICDwByAg4AMgIMADICDAASAggAEgIAABICAAACAggAAgIOAAICDgACAgwAUgIMAHICDkDyAg/n8gIA==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/iviewer.rotate_left.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABXdJREFUWMPFlntQlFUYxg9qjjqiVprllONE/VGOOkmjqZiwkIymjgaIaZlTNjg14zRNSiFNIMoiiJI3QDRQEfEGLKh5SW7LrojKRVYJ5bbLLgsrIPebyNN7vt2lBZZFTO3M/ObAt+ec9/ne814+BoD9nzzLMWxxIEtauovxU4ezFzyGOm1nceLTDIt3CgJefqHGHbexuN9OMfyt8oJTgCDgtRf35tz4WYaMe6txV70V87YyiPwZHMXdqMk7Yr72WRsfttCfJflKGOQl6xCazlCg3Yu8qqXI162A4sEylNVEoKAyHJHS9fD4YypEW9lPtG/IUxlz3JIoXeCVBHuvC/jEWy7l9+wcyHCr4hscus4Qfo0hTM5wLJtjJcyxOW/hzO13kV6yCoW6MIRcXA1HPxbPzxuM8SF2G6M8vGPzoGkFKtsB+1/S+T1PEf3KrvpeZIjMY4ggg4eIyFyGqDz9s8M5DAfpWdhNEpM/CXd1gdh10R0iHxY0mCsZOd8zvkJa1IQ/C5ugagLm/3yJC3ibmP6xJ0vzuURG7zIcIRy2MSyku18SzLDhOEMgXU3kHfIQCTqqsEaObjO+PjgZsz3Y+7TfaiDjVh9+tUP07QE5lI1A4FUVVI1cwDkuYBIxnpjJRfgmM5xQMjjvELJgkY09+266OwtYuJ21eJCQyEISQUISlbYIz/wITr5MQuteGkjAcLsfT0ii5WqklLTA/4oK5YIHEo2pNtQoYgGJ8Kc4+DRIEPAeMZngb7mAiwjKoisqJi+UWOO8djac9ek6xqL1KXNdX/8s4IpgNFRWgeCU8t4CmKkIR28mX6avhBMNgTaKC5n5JfNZH8MQXUFohiGhZiIW6T013mKO2/1wLDjk/D1cU7VjT5qa0JgTYBQxgZgxYgyz7VUJR81cw75YQhWSG3UW6+clQaxxoII12s5TgsKaLpzMqUGYTCugD0KJuWrH39iaGNurF/B7foOYRTgaEBEfEOP6Tb0530ds8IrJRW5lJyKuVeJQZpUwWxDQbyATI4hXDHuMjLMUhCPnb47TZlDqxSvqEJWlwxEiMqtKyALumedZ77tTL1/Xiejsahw3EH2rWkjH5y1ASL1jMjWSi5pxMrcGpwg+x1IslJGAeZsThDqw9oA0YRUJdd8nrVrud+adJyksAw6eeivEV1BUD8Tdru3BWaKsAZi7KZ4LsFm1XwY+mlsfwet0HtyCLz91s+mRersp9TLK2pB4p64HEsJEwFS3vRmCgAxVrTAfTi2Ca0hK6mCbTZ/UU1Q9prrfgAsF9X0o/VfANFeDgL+KdZAqq/EYXcgurcW6iEys8E+YNdgr6U69G5oOXCYB5iit7ysgs7wW19WE5iEetFK77OrCptgcuO2+Gj64rkepl3q/AdLSFiTfbzKLOQH5lQ1QcKoahL/L6pqF5zFyJVx/T9cs9zttM5A3rGwNqad40IV0EpBW0tyH9NJmlJgIcNmjF1BcS89N4P8bRRRo6rH2YCZW7rIcoELqHZGWI4vcLy9rhcwMcmWbWQHaxrY+VBjmjsddwhrfeAXcQlLNByhPveXiy7j3ELip7sB1VZtZbpS3o5gEzOkloL6tA3Wt/dPa2Smsk2Sr4bJHChexpEeAdqdeATWe3MpHyNV2IMcMefSb3gMJPWKAv2MnBZ4ljENd24KNR29h9d6UKGOAjhZ5nxMqnJIaDX/D/uApqG3rbkbTjIXoacaaUDk/YzQX8KrTloRyhy1JQp/ndaA/+O/8y9jB84ySf+24BZ5Lc98nA78KwbVPAPfa5wdkWLnzvNTQIYX+PYNwMOnXluDrphNv8mrIP7mecJ8p9oa91sYPhrG9erUlJhjWjzAcMGEQe03PsP4vJfuZjX8AgDmxlj4vX40AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/iviewer.rotate_right.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABWxJREFUWMPFlgtQlFUYho9CTjUaWqRlkzlZzWRppY2mQsolTVNHE7zmZRobnJpxmkbRQR3FlFUJNTRhRcMLKooKC97C5LYXLioXQQmFZXdZWFhlBeWyIOzbd35WhGWBHyfzzDxz/tv5v/ec873nHAaAPU96UvrM2MkwbQeLo2tH9hzKgGm/MUiiGDy3srN07/B/CxjouY3hH50fNp5i8NjybEU4UC8lHhKmJ8BxD2CYsJnhln4zFLcXYuOZZzMSvd03s1U+fw5HuHw58sul0FSGIe/uTOQaZyOnYgbyDXsQksKgUi+Dv4xhiuS/ywnHGYF9onddWoACYyhS1PNx+sb7iMx6G0czGdFLqENVDNJUhgPpDNcNy/B1IOOpPOCrDRfkk9bFYaJfHDzWxcp7KsrBfRML3HlpLm4atyMydzBCrzHsp4AHsxjCcxgOEeHZFJiehWW2PPO/RFOzgV2h9kMn+V1AeQNQWg+sj8yBy8pDPnxExQTvNdaHDf9+/xBkGX1xJK8fpDzYTYYdNNQrjjFMD2KYTHngtoXh8C0SQ2z6i+HLNSyZ2o8k3nVdex66GuBiQQ3khTVwXRNdRs9fEiPgBU9/JpOmfYFY7WhIKXB4AYMPBZ68ldWNnMe2DZvEfqTvpk7ZznBCSz1PaA0+inAmBruuPQfdQ2DHFR20VP+wT4XPl2535x3sTsArU8he5w1jcUTdDweKGAIzWoLTu4nEcGII8eE3NN8BNP8T2wfnLhjoujYWJTQCAZd1SFTXIUKlh8svJ2R8AetOgPNU6llM5SBElDoiooxh+XGGUYvZJmvgl60JNWgmrYQe61mqTXDWVkBQYglClGXC9bfbLmPoeK83ul1gpgeyh1wEWQq8nk4r3qhF7Dtr8NaV0DrfnxCv2/i/VUBwcimhR6quAbvP34bLz0eDulsr+hOfEXy+PKyMId7k+dF2LyCciH52LEYCZEIShioNAiezKlFQaYHLGhm3ad8uk9AqYmAbXiVeFJNAtgLCUstxIK1CqLPLm+B3PBvjfgpbIdaST71P8J5yF4RnVOBwhhGHiOi8Kii4JX3PGsRa8qkFTPCNEewXcf0ejmW2EEHkGpt6ZElRC9esX0+/N2+vvGL+H0oslaZW0LO3xq+OgYYERNLcn8yuxKnsljqhsBZHleIt2e1m5R0Uv8ovKge15kfghYug5x+MXx0NzQPgzA0TztpQWA3MloizZJebldfuxKSDSYVobLJAoTMJArz3KLiAjx8LkN2sQqwNCo0Zu0Ra0u6Qzw6IGbMsLA2ZxSaYm5uh0N7D30VGQYBXi4ARXEAxCbiQX92BiwUPkFfRLMqSHXZJ710J0tUns/CoqRllNWakl95Hut6ENL2powAa6ngKZo+rpY09siQlWtQwr99TSk+otEIgTVUtcst5Twiq+bU9AQl3auwiL65D0p0HoizZe+7O+FVL9qchv6xaCKKl4EWmWqjbwO95mRP8RICaPk8prkWyuiMpJCDvrkWw5OguLOnovTspyT86T/h5Q7MFhofmTrEnQKU1Q6mp74CKyKBpOCwvsWvJXnMksjFzguWQZeqFH9fTnFfVN3ZKtbmxnYBxJKCIBFwtaUC6zmyXa/pG3L4PzJLEt7Okw8I9ieErj1yH3lSHx6XJYukSi/W7JzkQI4xATvkjZBkaO5DNoXf5tEHZWrLvohAVnrZYF6IRfDMy0KxwK/KR6AwtbVh8xXRff67Vks5LQpU1C/Yphd7waRCHAvP2KrE4RHGf/vGRm2+Uhp+I+bmA+70z+Hs3Oj17rospoXavdXYeEAtv8ynxjvWw4iaynZv1YOPU2XmgJ/S3npycrCclse2cbA48z6f8CxeSsmD2KTWvAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/iviewer.zoom_fit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkU1MjFBN0YzNTQxMUUwQTgxRkE0QUYwRjU5QkY0QSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4RkU1MjFBNkYzNTQxMUUwQTgxRkE0QUYwRjU5QkY0QSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MTc5MDFEQTYyRERFMDExQTdBMTk4NkNFRjM1MkFEMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlTc7RkAAAEWSURBVHja3FddCoMwDF72Jgy6QwiCFxIED6aPgoMdYLBb7Ml7bAh7dS2kkJXK2rSdboUP/CH52vRL0sIucMzzzLLbM/mE4lQAAPFN4uij1ytJgF5tiwaYW5ZyVZIQYoT6hIgzKUeMEgfE6GpHQ80hfkqUxKbEb8mJG0seN6mJW1sBQUetD3GIqsHXhqNqH/WeY6h6kqhpiSRYshFoM3H3WKVJYdZmF2J0XJipZhKLBRFlH6Ly9k6dEueZTXTq32aaBJ3ZTSIPCHWOPlh5rARSMcRVhYiLYvAgHv6igOjRISFQZ+iwS90WV2kSq7bFKAeBEHHpxlFzxLWZw94lIe/Vloucm8Qdn49yJY+fuUlAhH1j2b0EGAAsrdDtPhEtrAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/iviewer.zoom_in.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNzg4MzJBMUYzNTQxMUUwQTRCNENENUJBMjhGNTEyOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNzg4MzJBMEYzNTQxMUUwQTRCNENENUJBMjhGNTEyOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2NzM1OEYwMDY4RTBFMDExQTEyN0Q1MzRBODU0NTU1RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pic1crIAAAG+SURBVHjavJbBSsNAEIYbC4GCEMipUAgUhEJPgT6AJ6FvUBC8CoJQ8FTwGfoCgg/gXdBLoVdBqHhKj0KLXpReK5U4A5MyrLubySZx4Kdldme/7GR2Nl6jpKVp6hTn5YyHoBFoCOqAYvK/gNagR9AdwL8aFVkLNAFtcFM52tDcFu5eKp21QU8CoCqMabuCMZ1vyoIJ6Ao0ADVJA/IlylyM7RQF+5qdTinttlcy1ezcLwKesOAtFZS0qocUk8VPpOAA9MkCxzqGoj2YFhqzMVwrkIBPWdArvcei4CbFZuMXNvABxY8Y4Bb049BIMOaGuUSvildnz7JLrdiu+8y/kqSaNwq/BPiQF6gk1XXYt20wA38wX1QCxmPXEvDSUBQek+6C8SBtfOyY/V9KnvSsouO0kB4n3kB4gV06gM+VGyv4j5Z54toys0viuYJLYgfqulyLK8O1GLN5MfXmxHC20T/DZlTkQyBy/BDYaXzvJrgthdcFPn1w7pEhA1p4noVU4ffKUVmQD8dCttjM8HB/4KVNWaxPkFx4pWAhvFsLWACf1wamhXsG+LZWsAU+rx1MADxmDwTF3wj9XhVgF/sVYAAy1yBFOaoPDQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/iviewer.zoom_out.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBN0QxOThDNEYzNTQxMUUwQkZCOUE5NTNBRTAyQ0IyRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBN0QxOThDM0YzNTQxMUUwQkZCOUE5NTNBRTAyQ0IyRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2NTM1OEYwMDY4RTBFMDExQTEyN0Q1MzRBODU0NTU1RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrmQubEAAAG6SURBVHjavJbBSsNAEIYbC4GCEMipUAgUhEJPgT6AJ6FvUBC8CoJQ8BTwGfoCgg/gXdBLoVdBqHhKj0KLXpReK5U4AxMY1mx2dpM48NMy2ZkvO9mdXa9V0bIsc4rzDM9D0AQ0BvVAMflfQBvQI+gO4F+tmqwDSkBbnJRBWxrbwdlLVWRd0JMAqApjuq5gLOebkjAFXYFGoDZpRL5UGYuxPVuwXzDTGZW97JPMCmbu24ATFryjBSVd1WOKyeMTKTgAfbLAqc12okRTFo+5Agn4lAW90ne0BbcpNs9zUQY+oPgJy3UL+nFoJBhzw1yiT8VX54Dnk4jNesj8a0mpeaPwK4AP+QKVlLoJ+y57mIM/mC+qAOOxGwl4pVkUnklQNn7QHLP/K8mbntW0nZbS7cQbCF9glw7gc+XECv6jZZ64tsz8kHiu4ZDYg/oux+JacyzGbFxMvTnV7G30z7EZ2VwEIseLwL7A966Dl5Xw2uLqg2OPNBUohJsspBV+r2yVJfnwWciSzTUv9wde2ZRkQ4IY4bWChfB+I2ABfNEYmBIPNPBdo+AS+KJxMAFwmz0QFH8j9Ht1gF3sV4ABAAkfEFlXCHkAAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/images/iviewer/iviewer.zoom_zero.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQjA3QTVCMUYzNTQxMUUwQTYxOUM5MDMzMjNGMEQ5OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQjA3QTVCMEYzNTQxMUUwQTYxOUM5MDMzMjNGMEQ5OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MDgwMkVEN0YyREZFMDExQjM5QTlBMjFDMkNBNzIyQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjE4NkRCRkVCN0JFMDExODBERUJDM0QxRjY2MzNCMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnMNZRoAAAB1SURBVHjaYvz//z/DQAAmhgECGBYzMjJSHATEmDFgPmYh18U0sRiY4BiHbVAzDlR2YqFV/IKiC5tZsGhkoaWvYJaAHICebgZPATJq8ajFQ8ZiYFZiHigf84zG8ajFoxbTv81FxcLjPzobXkeP9iSGvcUAAQYA3cwkU5PSBGAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJjc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9ImNzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImpzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9ImltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9ImltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSJpbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJpbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0ibmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImdyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJyZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InJlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTYzMzM3MjA5MyI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Im5hbWVzcGFjZXMvZGVmYXVsdC5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+XDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS02MzMzNzIwOTMiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSBpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhY2NvcmRpb24taW5uZXIiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTY3NjU3ODI2MiI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Im5hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS02NzY1NzgyNjIiIGNsYXNzPSJhY2NvcmRpb24tYm9keSBjb2xsYXBzZSAiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWlubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9ImNsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfdXJsLmh0bWwiPmNvbnRhY3RfdXJsPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSJjbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW1wbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW1wbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9ImNsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbmdsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbmdsZV92YWx1ZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc21hcnR5Lmh0bWwiPmNvbnRhY3Rfc21hcnR5PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSJjbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3QuaHRtbCI+Y29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9ImNsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcmVzdWx0c2V0Lmh0bWwiPmNvbnRhY3RfcmVzdWx0c2V0PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSJjbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9ImNsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSJjbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdHJpbmcuaHRtbCI+Y29udGFjdF9zdHJpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9ImNsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9ImNsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZW1haWwuaHRtbCI+Y29udGFjdF9lbWFpbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfcXVlcnkuaHRtbCI+Y29udGFjdF9xdWVyeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9ImNsYXNzZXMvQ0dDb250YWN0cy5jYXRlZ29yeS5odG1sIj5jYXRlZ29yeTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfbmFtZS5odG1sIj5jb250YWN0X25hbWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjggY29udGVudCBuYW1lc3BhY2UiPgogICAgICAgICAgICAgICAgICAgIDxuYXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgICAgICAgICAgICAgIDxoMT48c21hbGw+PC9zbWFsbD5cPC9oMT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+TmFtZXNwYWNlczwvaDI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Im5hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5DR0NvbnRhY3RzPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxhc2lkZSBjbGFzcz0ic3BhbjQgZGV0YWlsc2JhciI+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+TmFtZXNwYWNlIGhpZXJhcmNoeTwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0iaGllcmFyY2h5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgICAgPC9hc2lkZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Im5hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9InJlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0icmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/js/jquery.dotdotdot-1.5.9.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoJCiAqCWpRdWVyeSBkb3Rkb3Rkb3QgMS41LjkKICoJCiAqCUNvcHlyaWdodCAoYykgMjAxMyBGcmVkIEhldXNzY2hlbgogKgl3d3cuZnJlYnNpdGUubmwKICoKICoJUGx1Z2luIHdlYnNpdGU6CiAqCWRvdGRvdGRvdC5mcmVic2l0ZS5ubAogKgogKglEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy4KICoJaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQogKglodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dOVV9HZW5lcmFsX1B1YmxpY19MaWNlbnNlCiAqLwoKKGZ1bmN0aW9uKCAkICkKewoJaWYgKCAkLmZuLmRvdGRvdGRvdCApCgl7CgkJcmV0dXJuOwoJfQoKCSQuZm4uZG90ZG90ZG90ID0gZnVuY3Rpb24oIG8gKQoJewoJCWlmICggdGhpcy5sZW5ndGggPT0gMCApCgkJewoJCQlpZiAoICFvIHx8IG8uZGVidWcgIT09IGZhbHNlICkKCQkJewoJCQkJZGVidWcoIHRydWUsICdObyBlbGVtZW50IGZvdW5kIGZvciAiJyArIHRoaXMuc2VsZWN0b3IgKyAnIi4nICk7CQkJCQoJCQl9CgkJCXJldHVybiB0aGlzOwoJCX0KCQlpZiAoIHRoaXMubGVuZ3RoID4gMSApCgkJewoJCQlyZXR1cm4gdGhpcy5lYWNoKAoJCQkJZnVuY3Rpb24oKQoJCQkJewoJCQkJCSQodGhpcykuZG90ZG90ZG90KCBvICk7CgkJCQl9CgkJCSk7CgkJfQoKCgkJdmFyICRkb3QgPSB0aGlzOwoKCQlpZiAoICRkb3QuZGF0YSggJ2RvdGRvdGRvdCcgKSApCgkJewoJCQkkZG90LnRyaWdnZXIoICdkZXN0cm95LmRvdCcgKTsKCQl9CgoJCSRkb3QuZGF0YSggJ2RvdGRvdGRvdC1zdHlsZScsICRkb3QuYXR0ciggJ3N0eWxlJyApICk7CgkJJGRvdC5jc3MoICd3b3JkLXdyYXAnLCAnYnJlYWstd29yZCcgKTsKCgkJJGRvdC5iaW5kX2V2ZW50cyA9IGZ1bmN0aW9uKCkKCQl7CgkJCSRkb3QuYmluZCgKCQkJCSd1cGRhdGUuZG90JywKCQkJCWZ1bmN0aW9uKCBlLCBjICkKCQkJCXsKCQkJCQllLnByZXZlbnREZWZhdWx0KCk7CgkJCQkJZS5zdG9wUHJvcGFnYXRpb24oKTsKCgkJCQkJb3B0cy5tYXhIZWlnaHQgPSAoIHR5cGVvZiBvcHRzLmhlaWdodCA9PSAnbnVtYmVyJyApIAoJCQkJCQk/IG9wdHMuaGVpZ2h0IAoJCQkJCQk6IGdldFRydWVJbm5lckhlaWdodCggJGRvdCApOwoKCQkJCQlvcHRzLm1heEhlaWdodCArPSBvcHRzLnRvbGVyYW5jZTsKCgkJCQkJaWYgKCB0eXBlb2YgYyAhPSAndW5kZWZpbmVkJyApCgkJCQkJewoJCQkJCQlpZiAoIHR5cGVvZiBjID09ICdzdHJpbmcnIHx8IGMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCApCgkJCQkJCXsKCQkJCQkgCQljID0gJCgnPGRpdiAvPicpLmFwcGVuZCggYyApLmNvbnRlbnRzKCk7CgkJCQkJCX0KCQkJCQkJaWYgKCBjIGluc3RhbmNlb2YgJCApCgkJCQkJCXsKCQkJCQkJCW9yZ0NvbnRlbnQgPSBjOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQkkaW5yID0gJGRvdC53cmFwSW5uZXIoICc8ZGl2IGNsYXNzPSJkb3Rkb3Rkb3QiIC8+JyApLmNoaWxkcmVuKCk7CgkJCQkJJGluci5lbXB0eSgpCgkJCQkJCS5hcHBlbmQoIG9yZ0NvbnRlbnQuY2xvbmUoIHRydWUgKSApCgkJCQkJCS5jc3MoewoJCQkJCQkJJ2hlaWdodCcJOiAnYXV0bycsCgkJCQkJCQknd2lkdGgnCQk6ICdhdXRvJywKCQkJCQkJCSdib3JkZXInCTogJ25vbmUnLAoJCQkJCQkJJ3BhZGRpbmcnCTogMCwKCQkJCQkJCSdtYXJnaW4nCTogMAoJCQkJCQl9KTsKCgkJCQkJdmFyIGFmdGVyID0gZmFsc2UsCgkJCQkJCXRydW5jID0gZmFsc2U7CgoJCQkJCWlmICggY29uZi5hZnRlckVsZW1lbnQgKQoJCQkJCXsKCQkJCQkJYWZ0ZXIgPSBjb25mLmFmdGVyRWxlbWVudC5jbG9uZSggdHJ1ZSApOwoJCQkJCQljb25mLmFmdGVyRWxlbWVudC5yZW1vdmUoKTsKCQkJCQl9CgkJCQkJaWYgKCB0ZXN0KCAkaW5yLCBvcHRzICkgKQoJCQkJCXsKCQkJCQkJaWYgKCBvcHRzLndyYXAgPT0gJ2NoaWxkcmVuJyApCgkJCQkJCXsKCQkJCQkJCXRydW5jID0gY2hpbGRyZW4oICRpbnIsIG9wdHMsIGFmdGVyICk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQl0cnVuYyA9IGVsbGlwc2lzKCAkaW5yLCAkZG90LCAkaW5yLCBvcHRzLCBhZnRlciApOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRpbnIucmVwbGFjZVdpdGgoICRpbnIuY29udGVudHMoKSApOwoJCQkJCSRpbnIgPSBudWxsOwoJCQkJCQoJCQkJCWlmICggJC5pc0Z1bmN0aW9uKCBvcHRzLmNhbGxiYWNrICkgKQoJCQkJCXsKCQkJCQkJb3B0cy5jYWxsYmFjay5jYWxsKCAkZG90WyAwIF0sIHRydW5jLCBvcmdDb250ZW50ICk7CgkJCQkJfQoKCQkJCQljb25mLmlzVHJ1bmNhdGVkID0gdHJ1bmM7CgkJCQkJcmV0dXJuIHRydW5jOwoJCQkJfQoKCQkJKS5iaW5kKAoJCQkJJ2lzVHJ1bmNhdGVkLmRvdCcsCgkJCQlmdW5jdGlvbiggZSwgZm4gKQoJCQkJewoJCQkJCWUucHJldmVudERlZmF1bHQoKTsKCQkJCQllLnN0b3BQcm9wYWdhdGlvbigpOwoKCQkJCQlpZiAoIHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nICkKCQkJCQl7CgkJCQkJCWZuLmNhbGwoICRkb3RbIDAgXSwgY29uZi5pc1RydW5jYXRlZCApOwoJCQkJCX0KCQkJCQlyZXR1cm4gY29uZi5pc1RydW5jYXRlZDsKCQkJCX0KCgkJCSkuYmluZCgKCQkJCSdvcmlnaW5hbENvbnRlbnQuZG90JywKCQkJCWZ1bmN0aW9uKCBlLCBmbiApCgkJCQl7CgkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJCWUuc3RvcFByb3BhZ2F0aW9uKCk7CgoJCQkJCWlmICggdHlwZW9mIGZuID09ICdmdW5jdGlvbicgKQoJCQkJCXsKCQkJCQkJZm4uY2FsbCggJGRvdFsgMCBdLCBvcmdDb250ZW50ICk7CgkJCQkJfQoJCQkJCXJldHVybiBvcmdDb250ZW50OwoJCQkJfQoKCQkJKS5iaW5kKAoJCQkJJ2Rlc3Ryb3kuZG90JywKCQkJCWZ1bmN0aW9uKCBlICkKCQkJCXsKCQkJCQllLnByZXZlbnREZWZhdWx0KCk7CgkJCQkJZS5zdG9wUHJvcGFnYXRpb24oKTsKCgkJCQkJJGRvdC51bndhdGNoKCkKCQkJCQkJLnVuYmluZF9ldmVudHMoKQoJCQkJCQkuZW1wdHkoKQoJCQkJCQkuYXBwZW5kKCBvcmdDb250ZW50ICkKCQkJCQkJLmF0dHIoICdzdHlsZScsICRkb3QuZGF0YSggJ2RvdGRvdGRvdC1zdHlsZScgKSApCgkJCQkJCS5kYXRhKCAnZG90ZG90ZG90JywgZmFsc2UgKTsKCQkJCX0KCQkJKTsKCQkJcmV0dXJuICRkb3Q7CgkJfTsJLy8JL2JpbmRfZXZlbnRzCgoJCSRkb3QudW5iaW5kX2V2ZW50cyA9IGZ1bmN0aW9uKCkKCQl7CgkJCSRkb3QudW5iaW5kKCcuZG90Jyk7CgkJCXJldHVybiAkZG90OwoJCX07CS8vCS91bmJpbmRfZXZlbnRzCgoJCSRkb3Qud2F0Y2ggPSBmdW5jdGlvbigpCgkJewoJCQkkZG90LnVud2F0Y2goKTsKCQkJaWYgKCBvcHRzLndhdGNoID09ICd3aW5kb3cnICkKCQkJewoJCQkJdmFyICR3aW5kb3cgPSAkKHdpbmRvdyksCgkJCQkJX3dXaWR0aCA9ICR3aW5kb3cud2lkdGgoKSwKCQkJCQlfd0hlaWdodCA9ICR3aW5kb3cuaGVpZ2h0KCk7IAoKCQkJCSR3aW5kb3cuYmluZCgKCQkJCQkncmVzaXplLmRvdCcgKyBjb25mLmRvdElkLAoJCQkJCWZ1bmN0aW9uKCkKCQkJCQl7CgkJCQkJCWlmICggX3dXaWR0aCAhPSAkd2luZG93LndpZHRoKCkgfHwgX3dIZWlnaHQgIT0gJHdpbmRvdy5oZWlnaHQoKSB8fCAhb3B0cy53aW5kb3dSZXNpemVGaXggKQoJCQkJCQl7CgkJCQkJCQlfd1dpZHRoID0gJHdpbmRvdy53aWR0aCgpOwoJCQkJCQkJX3dIZWlnaHQgPSAkd2luZG93LmhlaWdodCgpOwoJCgkJCQkJCQlpZiAoIHdhdGNoSW50ICkKCQkJCQkJCXsKCQkJCQkJCQljbGVhckludGVydmFsKCB3YXRjaEludCApOwoJCQkJCQkJfQoJCQkJCQkJd2F0Y2hJbnQgPSBzZXRUaW1lb3V0KAoJCQkJCQkJCWZ1bmN0aW9uKCkKCQkJCQkJCQl7CgkJCQkJCQkJCSRkb3QudHJpZ2dlciggJ3VwZGF0ZS5kb3QnICk7CgkJCQkJCQkJfSwgMTAKCQkJCQkJCSk7CgkJCQkJCX0KCQkJCQl9CgkJCQkpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJd2F0Y2hPcmcgPSBnZXRTaXplcyggJGRvdCApOwoJCQkJd2F0Y2hJbnQgPSBzZXRJbnRlcnZhbCgKCQkJCQlmdW5jdGlvbigpCgkJCQkJewoJCQkJCQl2YXIgd2F0Y2hOZXcgPSBnZXRTaXplcyggJGRvdCApOwoJCQkJCQlpZiAoIHdhdGNoT3JnLndpZHRoICAhPSB3YXRjaE5ldy53aWR0aCB8fAoJCQkJCQkJIHdhdGNoT3JnLmhlaWdodCAhPSB3YXRjaE5ldy5oZWlnaHQgKQoJCQkJCQl7CgkJCQkJCQkkZG90LnRyaWdnZXIoICd1cGRhdGUuZG90JyApOwoJCQkJCQkJd2F0Y2hPcmcgPSBnZXRTaXplcyggJGRvdCApOwoJCQkJCQl9CgkJCQkJfSwgMTAwCgkJCQkpOwoJCQl9CgkJCXJldHVybiAkZG90OwoJCX07CgkJJGRvdC51bndhdGNoID0gZnVuY3Rpb24oKQoJCXsKCQkJJCh3aW5kb3cpLnVuYmluZCggJ3Jlc2l6ZS5kb3QnICsgY29uZi5kb3RJZCApOwoJCQlpZiAoIHdhdGNoSW50ICkKCQkJewoJCQkJY2xlYXJJbnRlcnZhbCggd2F0Y2hJbnQgKTsKCQkJfQoJCQlyZXR1cm4gJGRvdDsKCQl9OwoKCQl2YXIJb3JnQ29udGVudAk9ICRkb3QuY29udGVudHMoKSwKCQkJb3B0cyAJCT0gJC5leHRlbmQoIHRydWUsIHt9LCAkLmZuLmRvdGRvdGRvdC5kZWZhdWx0cywgbyApLAoJCQljb25mCQk9IHt9LAoJCQl3YXRjaE9yZwk9IHt9LAoJCQl3YXRjaEludAk9IG51bGwsCgkJCSRpbnIJCT0gbnVsbDsKCgkJY29uZi5hZnRlckVsZW1lbnQJPSBnZXRFbGVtZW50KCBvcHRzLmFmdGVyLCAkZG90ICk7CgkJY29uZi5pc1RydW5jYXRlZAk9IGZhbHNlOwoJCWNvbmYuZG90SWQJCQk9IGRvdElkKys7CgoKCQkkZG90LmRhdGEoICdkb3Rkb3Rkb3QnLCB0cnVlICkKCQkJLmJpbmRfZXZlbnRzKCkKCQkJLnRyaWdnZXIoICd1cGRhdGUuZG90JyApOwoKCQlpZiAoIG9wdHMud2F0Y2ggKQoJCXsKCQkJJGRvdC53YXRjaCgpOwoJCX0KCgkJcmV0dXJuICRkb3Q7Cgl9OwoKCgkvLwlwdWJsaWMKCSQuZm4uZG90ZG90ZG90LmRlZmF1bHRzID0gewoJCSdlbGxpcHNpcycJOiAnLi4uICcsCgkJJ3dyYXAnCQk6ICd3b3JkJywKCQknbGFzdENoYXJhY3Rlcic6IHsKCQkJJ3JlbW92ZScJCTogWyAnICcsICcsJywgJzsnLCAnLicsICchJywgJz8nIF0sCgkJCSdub0VsbGlwc2lzJwk6IFtdCgkJfSwKCQkndG9sZXJhbmNlJwk6IDAsCgkJJ2NhbGxiYWNrJwk6IG51bGwsCgkJJ2FmdGVyJwkJOiBudWxsLAoJCSdoZWlnaHQnCTogbnVsbCwKCQknd2F0Y2gnCQk6IGZhbHNlLAoJCSd3aW5kb3dSZXNpemVGaXgnOiB0cnVlLAoJCSdkZWJ1ZycJCTogZmFsc2UKCX07CgkKCgkvLwlwcml2YXRlCgl2YXIgZG90SWQgPSAxOwoKCWZ1bmN0aW9uIGNoaWxkcmVuKCAkZWxlbSwgbywgYWZ0ZXIgKQoJewoJCXZhciAkZWxlbWVudHMgCT0gJGVsZW0uY2hpbGRyZW4oKSwKCQkJaXNUcnVuY2F0ZWQJPSBmYWxzZTsKCgkJJGVsZW0uZW1wdHkoKTsKCgkJZm9yICggdmFyIGEgPSAwLCBsID0gJGVsZW1lbnRzLmxlbmd0aDsgYSA8IGw7IGErKyApCgkJewoJCQl2YXIgJGUgPSAkZWxlbWVudHMuZXEoIGEgKTsKCQkJJGVsZW0uYXBwZW5kKCAkZSApOwoJCQlpZiAoIGFmdGVyICkKCQkJewoJCQkJJGVsZW0uYXBwZW5kKCBhZnRlciApOwoJCQl9CgkJCWlmICggdGVzdCggJGVsZW0sIG8gKSApCgkJCXsKCQkJCSRlLnJlbW92ZSgpOwoJCQkJaXNUcnVuY2F0ZWQgPSB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZiAoIGFmdGVyICkKCQkJCXsKCQkJCQlhZnRlci5yZW1vdmUoKTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gaXNUcnVuY2F0ZWQ7Cgl9CglmdW5jdGlvbiBlbGxpcHNpcyggJGVsZW0sICRkLCAkaSwgbywgYWZ0ZXIgKQoJewoJCXZhciAkZWxlbWVudHMgCT0gJGVsZW0uY29udGVudHMoKSwKCQkJaXNUcnVuY2F0ZWQJPSBmYWxzZTsKCgkJJGVsZW0uZW1wdHkoKTsKCgkJdmFyIG5vdHggPSAndGFibGUsIHRoZWFkLCB0Ym9keSwgdGZvb3QsIHRyLCBjb2wsIGNvbGdyb3VwLCBvYmplY3QsIGVtYmVkLCBwYXJhbSwgb2wsIHVsLCBkbCwgc2VsZWN0LCBvcHRncm91cCwgb3B0aW9uLCB0ZXh0YXJlYSwgc2NyaXB0LCBzdHlsZSc7CgkJZm9yICggdmFyIGEgPSAwLCBsID0gJGVsZW1lbnRzLmxlbmd0aDsgYSA8IGw7IGErKyApCgkJewoKCQkJaWYgKCBpc1RydW5jYXRlZCApCgkJCXsKCQkJCWJyZWFrOwoJCQl9CgoJCQl2YXIgZQk9ICRlbGVtZW50c1sgYSBdLAoJCQkJJGUJPSAkKGUpOwoKCQkJaWYgKCB0eXBlb2YgZSA9PSAndW5kZWZpbmVkJyApCgkJCXsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkkZWxlbS5hcHBlbmQoICRlICk7CgkJCWlmICggYWZ0ZXIgKQoJCQl7CgkJCQkkZWxlbVsgKCAkZWxlbS5pcyggbm90eCApICkgPyAnYWZ0ZXInIDogJ2FwcGVuZCcgXSggYWZ0ZXIgKTsKCQkJfQoJCQlpZiAoIGUubm9kZVR5cGUgPT0gMyApCgkJCXsKCQkJCWlmICggdGVzdCggJGksIG8gKSApCgkJCQl7CgkJCQkJaXNUcnVuY2F0ZWQgPSBlbGxpcHNpc0VsZW1lbnQoICRlLCAkZCwgJGksIG8sIGFmdGVyICk7CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpc1RydW5jYXRlZCA9IGVsbGlwc2lzKCAkZSwgJGQsICRpLCBvLCBhZnRlciApOwoJCQl9CgoJCQlpZiAoICFpc1RydW5jYXRlZCApCgkJCXsKCQkJCWlmICggYWZ0ZXIgKQoJCQkJewoJCQkJCWFmdGVyLnJlbW92ZSgpOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBpc1RydW5jYXRlZDsKCX0KCWZ1bmN0aW9uIGVsbGlwc2lzRWxlbWVudCggJGUsICRkLCAkaSwgbywgYWZ0ZXIgKQoJewoJCXZhciBpc1RydW5jYXRlZAk9IGZhbHNlLAoJCQllID0gJGVbIDAgXTsKCgkJaWYgKCB0eXBlb2YgZSA9PSAndW5kZWZpbmVkJyApCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQl2YXIgc2Vwb3JhdG9yCT0gKCBvLndyYXAgPT0gJ2xldHRlcicgKSA/ICcnIDogJyAnLAoJCQl0ZXh0QXJyCQk9IGdldFRleHRDb250ZW50KCBlICkuc3BsaXQoIHNlcG9yYXRvciApLAoJCQlwb3NpdGlvbiAJPSAtMSwKCQkJbWlkUG9zCQk9IC0xLAoJCQlzdGFydFBvcwk9IDAsCgkJCWVuZFBvcwkJPSB0ZXh0QXJyLmxlbmd0aCAtIDE7CgoJCXdoaWxlICggc3RhcnRQb3MgPD0gZW5kUG9zICkKCQl7CgkJCXZhciBtID0gTWF0aC5mbG9vciggKCBzdGFydFBvcyArIGVuZFBvcyApIC8gMiApOwoJCQlpZiAoIG0gPT0gbWlkUG9zICkgCgkJCXsKCQkJCWJyZWFrOwoJCQl9CgkJCW1pZFBvcyA9IG07CgoJCQlzZXRUZXh0Q29udGVudCggZSwgdGV4dEFyci5zbGljZSggMCwgbWlkUG9zICsgMSApLmpvaW4oIHNlcG9yYXRvciApICsgby5lbGxpcHNpcyApOwoKCQkJaWYgKCAhdGVzdCggJGksIG8gKSApCgkJCXsKCQkJCXBvc2l0aW9uID0gbWlkUG9zOwoJCQkJc3RhcnRQb3MgPSBtaWRQb3M7IAoJCQl9CgkJCWVsc2UKCQkJewoJCQkJZW5kUG9zID0gbWlkUG9zOwoJCQl9CQkJCQoJCX0JCgkKCQlpZiAoIHBvc2l0aW9uICE9IC0xICYmICEoIHRleHRBcnIubGVuZ3RoID09IDEgJiYgdGV4dEFyclsgMCBdLmxlbmd0aCA9PSAwICkgKQoJCXsKCQkJdmFyIHR4dCA9IGFkZEVsbGlwc2lzKCB0ZXh0QXJyLnNsaWNlKCAwLCBwb3NpdGlvbiArIDEgKS5qb2luKCBzZXBvcmF0b3IgKSwgbyApOwoJCQlpc1RydW5jYXRlZCA9IHRydWU7CgkJCXNldFRleHRDb250ZW50KCBlLCB0eHQgKTsKCQl9CgkJZWxzZQoJCXsKCQkJdmFyICR3ID0gJGUucGFyZW50KCk7CgkJCSRlLnJlbW92ZSgpOwoKCQkJdmFyIGFmdGVyTGVuZ3RoID0gKCBhZnRlciApID8gYWZ0ZXIubGVuZ3RoIDogMCA7CgoJCQlpZiAoICR3LmNvbnRlbnRzKCkuc2l6ZSgpID4gYWZ0ZXJMZW5ndGggKQoJCQl7CgkJCQl2YXIgJG4gPSAkdy5jb250ZW50cygpLmVxKCAtMSAtIGFmdGVyTGVuZ3RoICk7CgkJCQlpc1RydW5jYXRlZCA9IGVsbGlwc2lzRWxlbWVudCggJG4sICRkLCAkaSwgbywgYWZ0ZXIgKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXZhciAkcCA9ICR3LnByZXYoKQoJCQkJdmFyIGUgPSAkcC5jb250ZW50cygpLmVxKCAtMSApWyAwIF07CgoJCQkJaWYgKCB0eXBlb2YgZSAhPSAndW5kZWZpbmVkJyApCgkJCQl7CgkJCQkJdmFyIHR4dCA9IGFkZEVsbGlwc2lzKCBnZXRUZXh0Q29udGVudCggZSApLCBvICk7CgkJCQkJc2V0VGV4dENvbnRlbnQoIGUsIHR4dCApOwoJCQkJCWlmICggYWZ0ZXIgKQoJCQkJCXsKCQkJCQkJJHAuYXBwZW5kKCBhZnRlciApOwoJCQkJCX0KCQkJCQkkdy5yZW1vdmUoKTsKCQkJCQlpc1RydW5jYXRlZCA9IHRydWU7CgkJCQl9CgoJCQl9CgkJfQoKCQlyZXR1cm4gaXNUcnVuY2F0ZWQ7Cgl9CglmdW5jdGlvbiB0ZXN0KCAkaSwgbyApCgl7CgkJcmV0dXJuICRpLmlubmVySGVpZ2h0KCkgPiBvLm1heEhlaWdodDsKCX0KCWZ1bmN0aW9uIGFkZEVsbGlwc2lzKCB0eHQsIG8gKQoJewoJCXdoaWxlKCAkLmluQXJyYXkoIHR4dC5zbGljZSggLTEgKSwgby5sYXN0Q2hhcmFjdGVyLnJlbW92ZSApID4gLTEgKQoJCXsKCQkJdHh0ID0gdHh0LnNsaWNlKCAwLCAtMSApOwoJCX0KCQlpZiAoICQuaW5BcnJheSggdHh0LnNsaWNlKCAtMSApLCBvLmxhc3RDaGFyYWN0ZXIubm9FbGxpcHNpcyApIDwgMCApCgkJewoJCQl0eHQgKz0gby5lbGxpcHNpczsKCQl9CgkJcmV0dXJuIHR4dDsKCX0KCWZ1bmN0aW9uIGdldFNpemVzKCAkZCApCgl7CgkJcmV0dXJuIHsKCQkJJ3dpZHRoJwk6ICRkLmlubmVyV2lkdGgoKSwKCQkJJ2hlaWdodCc6ICRkLmlubmVySGVpZ2h0KCkKCQl9OwoJfQoJZnVuY3Rpb24gc2V0VGV4dENvbnRlbnQoIGUsIGNvbnRlbnQgKQoJewoJCWlmICggZS5pbm5lclRleHQgKQoJCXsKCQkJZS5pbm5lclRleHQgPSBjb250ZW50OwoJCX0KCQllbHNlIGlmICggZS5ub2RlVmFsdWUgKQoJCXsKCQkJZS5ub2RlVmFsdWUgPSBjb250ZW50OwoJCX0KCQllbHNlIGlmIChlLnRleHRDb250ZW50KQoJCXsKCQkJZS50ZXh0Q29udGVudCA9IGNvbnRlbnQ7CgkJfQoKCX0KCWZ1bmN0aW9uIGdldFRleHRDb250ZW50KCBlICkKCXsKCQlpZiAoIGUuaW5uZXJUZXh0ICkKCQl7CgkJCXJldHVybiBlLmlubmVyVGV4dDsKCQl9CgkJZWxzZSBpZiAoIGUubm9kZVZhbHVlICkKCQl7CgkJCXJldHVybiBlLm5vZGVWYWx1ZTsKCQl9CgkJZWxzZSBpZiAoIGUudGV4dENvbnRlbnQgKQoJCXsKCQkJcmV0dXJuIGUudGV4dENvbnRlbnQ7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAiIjsKCQl9Cgl9CglmdW5jdGlvbiBnZXRFbGVtZW50KCBlLCAkaSApCgl7CgkJaWYgKCB0eXBlb2YgZSA9PSAndW5kZWZpbmVkJyApCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWlmICggIWUgKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlpZiAoIHR5cGVvZiBlID09ICdzdHJpbmcnICkKCQl7CgkJCWUgPSAkKGUsICRpKTsKCQkJcmV0dXJuICggZS5sZW5ndGggKQoJCQkJPyBlIAoJCQkJOiBmYWxzZTsKCQl9CgkJaWYgKCB0eXBlb2YgZSA9PSAnb2JqZWN0JyApCgkJewoJCQlyZXR1cm4gKCB0eXBlb2YgZS5qcXVlcnkgPT0gJ3VuZGVmaW5lZCcgKQoJCQkJPyBmYWxzZQoJCQkJOiBlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CglmdW5jdGlvbiBnZXRUcnVlSW5uZXJIZWlnaHQoICRlbCApCgl7CgkJdmFyIGggPSAkZWwuaW5uZXJIZWlnaHQoKSwKCQkJYSA9IFsgJ3BhZGRpbmdUb3AnLCAncGFkZGluZ0JvdHRvbScgXTsKCgkJZm9yICggdmFyIHogPSAwLCBsID0gYS5sZW5ndGg7IHogPCBsOyB6KysgKSB7CgkJCXZhciBtID0gcGFyc2VJbnQoICRlbC5jc3MoIGFbIHogXSApLCAxMCApOwoJCQlpZiAoIGlzTmFOKCBtICkgKQoJCQl7CgkJCQltID0gMDsKCQkJfQoJCQloIC09IG07CgkJfQoJCXJldHVybiBoOwoJfQoJZnVuY3Rpb24gZGVidWcoIGQsIG0gKQoJewoJCWlmICggIWQgKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlpZiAoIHR5cGVvZiBtID09ICdzdHJpbmcnICkKCQl7CgkJCW0gPSAnZG90ZG90ZG90OiAnICsgbTsKCQl9CgkJZWxzZQoJCXsKCQkJbSA9IFsgJ2RvdGRvdGRvdDonLCBtIF07CgkJfQoKCQlpZiAoIHR5cGVvZiB3aW5kb3cuY29uc29sZSAhPSAndW5kZWZpbmVkJyApCgkJewoJCQlpZiAoIHR5cGVvZiB3aW5kb3cuY29uc29sZS5sb2cgIT0gJ3VuZGVmaW5lZCcgKQoJCQl7CgkJCQl3aW5kb3cuY29uc29sZS5sb2coIG0gKTsKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCgkvLwlvdmVycmlkZSBqUXVlcnkuaHRtbAoJdmFyIF9vcmdIdG1sID0gJC5mbi5odG1sOwogICAgJC5mbi5odG1sID0gZnVuY3Rpb24oIHN0ciApIHsKCQlpZiAoIHR5cGVvZiBzdHIgIT0gJ3VuZGVmaW5lZCcgKQoJCXsKCQkJaWYgKCB0aGlzLmRhdGEoICdkb3Rkb3Rkb3QnICkgKQoJCQl7CgkJCQlpZiAoIHR5cGVvZiBzdHIgIT0gJ2Z1bmN0aW9uJyApCgkJCQl7CgkJCQkJcmV0dXJuIHRoaXMudHJpZ2dlciggJ3VwZGF0ZScsIFsgc3RyIF0gKTsKCQkJCX0KCQkJfQoJCQlyZXR1cm4gX29yZ0h0bWwuY2FsbCggdGhpcywgc3RyICk7CgkJfQoJCXJldHVybiBfb3JnSHRtbC5jYWxsKCB0aGlzICk7CiAgICB9OwoKCgkvLwlvdmVycmlkZSBqUXVlcnkudGV4dAoJdmFyIF9vcmdUZXh0ID0gJC5mbi50ZXh0OwogICAgJC5mbi50ZXh0ID0gZnVuY3Rpb24oIHN0ciApIHsKCQlpZiAoIHR5cGVvZiBzdHIgIT0gJ3VuZGVmaW5lZCcgKQoJCXsKCQkJaWYgKCB0aGlzLmRhdGEoICdkb3Rkb3Rkb3QnICkgKQoJCQl7CgkJCQl2YXIgdGVtcCA9ICQoICc8ZGl2IC8+JyApOwoJCQkJdGVtcC50ZXh0KCBzdHIgKTsKCQkJCXN0ciA9IHRlbXAuaHRtbCgpOwoJCQkJdGVtcC5yZW1vdmUoKTsKCQkJCXJldHVybiB0aGlzLnRyaWdnZXIoICd1cGRhdGUnLCBbIHN0ciBdICk7CgkJCX0KCQkJcmV0dXJuIF9vcmdUZXh0LmNhbGwoIHRoaXMsIHN0ciApOwoJCX0KICAgICAgICByZXR1cm4gX29yZ1RleHQuY2FsbCggdGhpcyApOwogICAgfTsKCgp9KSggalF1ZXJ5ICk7Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/js/jquery.dotdotdot-1.5.9.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoJCiAqCWpRdWVyeSBkb3Rkb3Rkb3QgMS41LjkKICoJCiAqCUNvcHlyaWdodCAoYykgMjAxMyBGcmVkIEhldXNzY2hlbgogKgl3d3cuZnJlYnNpdGUubmwKICoKICoJUGx1Z2luIHdlYnNpdGU6CiAqCWRvdGRvdGRvdC5mcmVic2l0ZS5ubAogKgogKglEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy4KICoJaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQogKglodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dOVV9HZW5lcmFsX1B1YmxpY19MaWNlbnNlCiAqLwoKKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYSxiLGMpe3ZhciBkPWEuY2hpbGRyZW4oKSxlPSExO2EuZW1wdHkoKTtmb3IodmFyIGc9MCxoPWQubGVuZ3RoO2g+ZztnKyspe3ZhciBpPWQuZXEoZyk7aWYoYS5hcHBlbmQoaSksYyYmYS5hcHBlbmQoYyksZihhLGIpKXtpLnJlbW92ZSgpLGU9ITA7YnJlYWt9YyYmYy5yZW1vdmUoKX1yZXR1cm4gZX1mdW5jdGlvbiBkKGIsYyxnLGgsaSl7dmFyIGo9Yi5jb250ZW50cygpLGs9ITE7Yi5lbXB0eSgpO2Zvcih2YXIgbD0idGFibGUsIHRoZWFkLCB0Ym9keSwgdGZvb3QsIHRyLCBjb2wsIGNvbGdyb3VwLCBvYmplY3QsIGVtYmVkLCBwYXJhbSwgb2wsIHVsLCBkbCwgc2VsZWN0LCBvcHRncm91cCwgb3B0aW9uLCB0ZXh0YXJlYSwgc2NyaXB0LCBzdHlsZSIsbT0wLG49ai5sZW5ndGg7bj5tJiYhazttKyspe3ZhciBvPWpbbV0scD1hKG8pO3ZvaWQgMCE9PW8mJihiLmFwcGVuZChwKSxpJiZiW2IuaXMobCk/ImFmdGVyIjoiYXBwZW5kIl0oaSksMz09by5ub2RlVHlwZT9mKGcsaCkmJihrPWUocCxjLGcsaCxpKSk6az1kKHAsYyxnLGgsaSksa3x8aSYmaS5yZW1vdmUoKSl9cmV0dXJuIGt9ZnVuY3Rpb24gZShhLGIsYyxkLGgpe3ZhciBrPSExLGw9YVswXTtpZihsPT09dm9pZCAwKXJldHVybiExO2Zvcih2YXIgbT0ibGV0dGVyIj09ZC53cmFwPyIiOiIgIixuPWoobCkuc3BsaXQobSksbz0tMSxwPS0xLHE9MCxyPW4ubGVuZ3RoLTE7cj49cTspe3ZhciBzPU1hdGguZmxvb3IoKHErcikvMik7aWYocz09cClicmVhaztwPXMsaShsLG4uc2xpY2UoMCxwKzEpLmpvaW4obSkrZC5lbGxpcHNpcyksZihjLGQpP3I9cDoobz1wLHE9cCl9aWYoLTE9PW98fDE9PW4ubGVuZ3RoJiYwPT1uWzBdLmxlbmd0aCl7dmFyIHU9YS5wYXJlbnQoKTthLnJlbW92ZSgpO3ZhciB2PWg/aC5sZW5ndGg6MDtpZih1LmNvbnRlbnRzKCkuc2l6ZSgpPnYpe3ZhciB3PXUuY29udGVudHMoKS5lcSgtMS12KTtrPWUodyxiLGMsZCxoKX1lbHNle3ZhciB4PXUucHJldigpLGw9eC5jb250ZW50cygpLmVxKC0xKVswXTtpZihsIT09dm9pZCAwKXt2YXIgdD1nKGoobCksZCk7aShsLHQpLGgmJnguYXBwZW5kKGgpLHUucmVtb3ZlKCksaz0hMH19fWVsc2V7dmFyIHQ9ZyhuLnNsaWNlKDAsbysxKS5qb2luKG0pLGQpO2s9ITAsaShsLHQpfXJldHVybiBrfWZ1bmN0aW9uIGYoYSxiKXtyZXR1cm4gYS5pbm5lckhlaWdodCgpPmIubWF4SGVpZ2h0fWZ1bmN0aW9uIGcoYixjKXtmb3IoO2EuaW5BcnJheShiLnNsaWNlKC0xKSxjLmxhc3RDaGFyYWN0ZXIucmVtb3ZlKT4tMTspYj1iLnNsaWNlKDAsLTEpO3JldHVybiAwPmEuaW5BcnJheShiLnNsaWNlKC0xKSxjLmxhc3RDaGFyYWN0ZXIubm9FbGxpcHNpcykmJihiKz1jLmVsbGlwc2lzKSxifWZ1bmN0aW9uIGgoYSl7cmV0dXJue3dpZHRoOmEuaW5uZXJXaWR0aCgpLGhlaWdodDphLmlubmVySGVpZ2h0KCl9fWZ1bmN0aW9uIGkoYSxiKXthLmlubmVyVGV4dD9hLmlubmVyVGV4dD1iOmEubm9kZVZhbHVlP2Eubm9kZVZhbHVlPWI6YS50ZXh0Q29udGVudCYmKGEudGV4dENvbnRlbnQ9Yil9ZnVuY3Rpb24gaihhKXtyZXR1cm4gYS5pbm5lclRleHQ/YS5pbm5lclRleHQ6YS5ub2RlVmFsdWU/YS5ub2RlVmFsdWU6YS50ZXh0Q29udGVudD9hLnRleHRDb250ZW50OiIifWZ1bmN0aW9uIGsoYixjKXtyZXR1cm4gYj09PXZvaWQgMD8hMTpiPyJzdHJpbmciPT10eXBlb2YgYj8oYj1hKGIsYyksYi5sZW5ndGg/YjohMSk6Im9iamVjdCI9PXR5cGVvZiBiP2IuanF1ZXJ5PT09dm9pZCAwPyExOmI6ITE6ITF9ZnVuY3Rpb24gbChhKXtmb3IodmFyIGI9YS5pbm5lckhlaWdodCgpLGM9WyJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLGQ9MCxlPWMubGVuZ3RoO2U+ZDtkKyspe3ZhciBmPXBhcnNlSW50KGEuY3NzKGNbZF0pLDEwKTtpc05hTihmKSYmKGY9MCksYi09Zn1yZXR1cm4gYn1mdW5jdGlvbiBtKGEsYil7cmV0dXJuIGE/KGI9InN0cmluZyI9PXR5cGVvZiBiPyJkb3Rkb3Rkb3Q6ICIrYjpbImRvdGRvdGRvdDoiLGJdLHdpbmRvdy5jb25zb2xlIT09dm9pZCAwJiZ3aW5kb3cuY29uc29sZS5sb2chPT12b2lkIDAmJndpbmRvdy5jb25zb2xlLmxvZyhiKSwhMSk6ITF9aWYoIWEuZm4uZG90ZG90ZG90KXthLmZuLmRvdGRvdGRvdD1mdW5jdGlvbihlKXtpZigwPT10aGlzLmxlbmd0aClyZXR1cm4gZSYmZS5kZWJ1Zz09PSExfHxtKCEwLCdObyBlbGVtZW50IGZvdW5kIGZvciAiJyt0aGlzLnNlbGVjdG9yKyciLicpLHRoaXM7aWYodGhpcy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5kb3Rkb3Rkb3QoZSl9KTt2YXIgZz10aGlzO2cuZGF0YSgiZG90ZG90ZG90IikmJmcudHJpZ2dlcigiZGVzdHJveS5kb3QiKSxnLmRhdGEoImRvdGRvdGRvdC1zdHlsZSIsZy5hdHRyKCJzdHlsZSIpKSxnLmNzcygid29yZC13cmFwIiwiYnJlYWstd29yZCIpLGcuYmluZF9ldmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gZy5iaW5kKCJ1cGRhdGUuZG90IixmdW5jdGlvbihiLGUpe2IucHJldmVudERlZmF1bHQoKSxiLnN0b3BQcm9wYWdhdGlvbigpLGoubWF4SGVpZ2h0PSJudW1iZXIiPT10eXBlb2Ygai5oZWlnaHQ/ai5oZWlnaHQ6bChnKSxqLm1heEhlaWdodCs9ai50b2xlcmFuY2UsZSE9PXZvaWQgMCYmKCgic3RyaW5nIj09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkmJihlPWEoIjxkaXYgLz4iKS5hcHBlbmQoZSkuY29udGVudHMoKSksZSBpbnN0YW5jZW9mIGEmJihpPWUpKSxxPWcud3JhcElubmVyKCc8ZGl2IGNsYXNzPSJkb3Rkb3Rkb3QiIC8+JykuY2hpbGRyZW4oKSxxLmVtcHR5KCkuYXBwZW5kKGkuY2xvbmUoITApKS5jc3Moe2hlaWdodDoiYXV0byIsd2lkdGg6ImF1dG8iLGJvcmRlcjoibm9uZSIscGFkZGluZzowLG1hcmdpbjowfSk7dmFyIGg9ITEsaz0hMTtyZXR1cm4gbi5hZnRlckVsZW1lbnQmJihoPW4uYWZ0ZXJFbGVtZW50LmNsb25lKCEwKSxuLmFmdGVyRWxlbWVudC5yZW1vdmUoKSksZihxLGopJiYoaz0iY2hpbGRyZW4iPT1qLndyYXA/YyhxLGosaCk6ZChxLGcscSxqLGgpKSxxLnJlcGxhY2VXaXRoKHEuY29udGVudHMoKSkscT1udWxsLGEuaXNGdW5jdGlvbihqLmNhbGxiYWNrKSYmai5jYWxsYmFjay5jYWxsKGdbMF0sayxpKSxuLmlzVHJ1bmNhdGVkPWssa30pLmJpbmQoImlzVHJ1bmNhdGVkLmRvdCIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksImZ1bmN0aW9uIj09dHlwZW9mIGImJmIuY2FsbChnWzBdLG4uaXNUcnVuY2F0ZWQpLG4uaXNUcnVuY2F0ZWR9KS5iaW5kKCJvcmlnaW5hbENvbnRlbnQuZG90IixmdW5jdGlvbihhLGIpe3JldHVybiBhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSwiZnVuY3Rpb24iPT10eXBlb2YgYiYmYi5jYWxsKGdbMF0saSksaX0pLmJpbmQoImRlc3Ryb3kuZG90IixmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSxnLnVud2F0Y2goKS51bmJpbmRfZXZlbnRzKCkuZW1wdHkoKS5hcHBlbmQoaSkuYXR0cigic3R5bGUiLGcuZGF0YSgiZG90ZG90ZG90LXN0eWxlIikpLmRhdGEoImRvdGRvdGRvdCIsITEpfSksZ30sZy51bmJpbmRfZXZlbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIGcudW5iaW5kKCIuZG90IiksZ30sZy53YXRjaD1mdW5jdGlvbigpe2lmKGcudW53YXRjaCgpLCJ3aW5kb3ciPT1qLndhdGNoKXt2YXIgYj1hKHdpbmRvdyksYz1iLndpZHRoKCksZD1iLmhlaWdodCgpO2IuYmluZCgicmVzaXplLmRvdCIrbi5kb3RJZCxmdW5jdGlvbigpe2M9PWIud2lkdGgoKSYmZD09Yi5oZWlnaHQoKSYmai53aW5kb3dSZXNpemVGaXh8fChjPWIud2lkdGgoKSxkPWIuaGVpZ2h0KCkscCYmY2xlYXJJbnRlcnZhbChwKSxwPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtnLnRyaWdnZXIoInVwZGF0ZS5kb3QiKX0sMTApKX0pfWVsc2Ugbz1oKGcpLHA9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt2YXIgYT1oKGcpOyhvLndpZHRoIT1hLndpZHRofHxvLmhlaWdodCE9YS5oZWlnaHQpJiYoZy50cmlnZ2VyKCJ1cGRhdGUuZG90Iiksbz1oKGcpKX0sMTAwKTtyZXR1cm4gZ30sZy51bndhdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIGEod2luZG93KS51bmJpbmQoInJlc2l6ZS5kb3QiK24uZG90SWQpLHAmJmNsZWFySW50ZXJ2YWwocCksZ307dmFyIGk9Zy5jb250ZW50cygpLGo9YS5leHRlbmQoITAse30sYS5mbi5kb3Rkb3Rkb3QuZGVmYXVsdHMsZSksbj17fSxvPXt9LHA9bnVsbCxxPW51bGw7cmV0dXJuIG4uYWZ0ZXJFbGVtZW50PWsoai5hZnRlcixnKSxuLmlzVHJ1bmNhdGVkPSExLG4uZG90SWQ9YisrLGcuZGF0YSgiZG90ZG90ZG90IiwhMCkuYmluZF9ldmVudHMoKS50cmlnZ2VyKCJ1cGRhdGUuZG90Iiksai53YXRjaCYmZy53YXRjaCgpLGd9LGEuZm4uZG90ZG90ZG90LmRlZmF1bHRzPXtlbGxpcHNpczoiLi4uICIsd3JhcDoid29yZCIsbGFzdENoYXJhY3Rlcjp7cmVtb3ZlOlsiICIsIiwiLCI7IiwiLiIsIiEiLCI/Il0sbm9FbGxpcHNpczpbXX0sdG9sZXJhbmNlOjAsY2FsbGJhY2s6bnVsbCxhZnRlcjpudWxsLGhlaWdodDpudWxsLHdhdGNoOiExLHdpbmRvd1Jlc2l6ZUZpeDohMCxkZWJ1ZzohMX07dmFyIGI9MSxuPWEuZm4uaHRtbDthLmZuLmh0bWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT12b2lkIDA/dGhpcy5kYXRhKCJkb3Rkb3Rkb3QiKSYmImZ1bmN0aW9uIiE9dHlwZW9mIGE/dGhpcy50cmlnZ2VyKCJ1cGRhdGUiLFthXSk6bi5jYWxsKHRoaXMsYSk6bi5jYWxsKHRoaXMpfTt2YXIgbz1hLmZuLnRleHQ7YS5mbi50ZXh0PWZ1bmN0aW9uKGIpe2lmKGIhPT12b2lkIDApe2lmKHRoaXMuZGF0YSgiZG90ZG90ZG90Iikpe3ZhciBjPWEoIjxkaXYgLz4iKTtyZXR1cm4gYy50ZXh0KGIpLGI9Yy5odG1sKCksYy5yZW1vdmUoKSx0aGlzLnRyaWdnZXIoInVwZGF0ZSIsW2JdKX1yZXR1cm4gby5jYWxsKHRoaXMsYil9cmV0dXJuIG8uY2FsbCh0aGlzKX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/js/jquery.iviewer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogaXZpZXdlciBXaWRnZXQgZm9yIGpRdWVyeSBVSQogKiBodHRwczovL2dpdGh1Yi5jb20vY2FuM3AvaXZpZXdlcgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEyIERtaXRyeSBQZXRyb3YKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMuCiAqICAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqICAtIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbAogKgogKiBBdXRob3I6IERtaXRyeSBQZXRyb3YKICogVmVyc2lvbjogMC43LjcKICovCgooIGZ1bmN0aW9uKCAkLCB1bmRlZmluZWQgKSB7CgovL3RoaXMgY29kZSB3YXMgdGFrZW4gZnJvbSB0aGUgaHR0cHM6Ly9naXRodWIuY29tL2Z1cmYvanF1ZXJ5LXVpLXRvdWNoLXB1bmNoCnZhciBtb3VzZUV2ZW50cyA9IHsKICAgICAgICB0b3VjaHN0YXJ0OiAnbW91c2Vkb3duJywKICAgICAgICB0b3VjaG1vdmU6ICdtb3VzZW1vdmUnLAogICAgICAgIHRvdWNoZW5kOiAnbW91c2V1cCcKICAgIH0sCiAgICBnZXN0dXJlc1N1cHBvcnQgPSAnb25nZXN0dXJlc3RhcnQnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwoKCi8qKgogKiBDb252ZXJ0IGEgdG91Y2ggZXZlbnQgdG8gYSBtb3VzZS1saWtlCiAqLwpmdW5jdGlvbiBtYWtlTW91c2VFdmVudCAoZXZlbnQpIHsKICAgIHZhciB0b3VjaCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07CgogICAgcmV0dXJuICQuZXh0ZW5kKGV2ZW50LCB7CiAgICAgICAgdHlwZTogICAgbW91c2VFdmVudHNbZXZlbnQudHlwZV0sCiAgICAgICAgd2hpY2g6ICAgMSwKICAgICAgICBwYWdlWDogICB0b3VjaC5wYWdlWCwKICAgICAgICBwYWdlWTogICB0b3VjaC5wYWdlWSwKICAgICAgICBzY3JlZW5YOiB0b3VjaC5zY3JlZW5YLAogICAgICAgIHNjcmVlblk6IHRvdWNoLnNjcmVlblksCiAgICAgICAgY2xpZW50WDogdG91Y2guY2xpZW50WCwKICAgICAgICBjbGllbnRZOiB0b3VjaC5jbGllbnRZLAogICAgICAgIGlzVG91Y2hFdmVudDogdHJ1ZQogICAgfSk7Cn0KCnZhciBtb3VzZVByb3RvID0gJC51aS5tb3VzZS5wcm90b3R5cGUsCiAgICBfbW91c2VJbml0ID0gJC51aS5tb3VzZS5wcm90b3R5cGUuX21vdXNlSW5pdDsKCm1vdXNlUHJvdG8uX21vdXNlSW5pdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgc2VsZi5fdG91Y2hBY3RpdmUgPSBmYWxzZTsKCiAgICB0aGlzLmVsZW1lbnQuYmluZCggJ3RvdWNoc3RhcnQuJyArIHRoaXMud2lkZ2V0TmFtZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICBpZiAoZ2VzdHVyZXNTdXBwb3J0ICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGggPiAxKSB7IHJldHVybjsgfQogICAgICAgIHNlbGYuX3RvdWNoQWN0aXZlID0gdHJ1ZTsKICAgICAgICByZXR1cm4gc2VsZi5fbW91c2VEb3duKG1ha2VNb3VzZUV2ZW50KGV2ZW50KSk7CiAgICB9KQoKICAgIHZhciBzZWxmID0gdGhpczsKICAgIC8vIHRoZXNlIGRlbGVnYXRlcyBhcmUgcmVxdWlyZWQgdG8ga2VlcCBjb250ZXh0CiAgICB0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgaWYgKGdlc3R1cmVzU3VwcG9ydCAmJiBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgJiYgZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aCA+IDEpIHsgcmV0dXJuOyB9CiAgICAgICAgaWYgKHNlbGYuX3RvdWNoQWN0aXZlKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb3VzZU1vdmUobWFrZU1vdXNlRXZlbnQoZXZlbnQpKTsKICAgICAgICB9CiAgICB9OwogICAgdGhpcy5fbW91c2VVcERlbGVnYXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICBpZiAoc2VsZi5fdG91Y2hBY3RpdmUpIHsKICAgICAgICAgICAgc2VsZi5fdG91Y2hBY3RpdmUgPSBmYWxzZTsKICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vdXNlVXAobWFrZU1vdXNlRXZlbnQoZXZlbnQpKTsKICAgICAgICB9CiAgICB9OwoKICAgICQoZG9jdW1lbnQpCiAgICAgICAgLmJpbmQoJ3RvdWNobW92ZS4nKyB0aGlzLndpZGdldE5hbWUsIHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKQogICAgICAgIC5iaW5kKCd0b3VjaGVuZC4nICsgdGhpcy53aWRnZXROYW1lLCB0aGlzLl9tb3VzZVVwRGVsZWdhdGUpOwoKICAgIF9tb3VzZUluaXQuYXBwbHkodGhpcyk7Cn0KCi8qKgogKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgalF1ZXJ5IGxpa2UgZ2V0dGVycy9zZXR0ZXJzCiAqIHZhciB2YWwgPSBzb21ldGhpbmcoKTsKICogc29tZXRoaW5nKHZhbCk7CiAqLwp2YXIgc2V0dGVyID0gZnVuY3Rpb24oc2V0dGVyLCBnZXR0ZXIpIHsKICAgIHJldHVybiBmdW5jdGlvbih2YWwpIHsKICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gZ2V0dGVyLmFwcGx5KHRoaXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH0KICAgIH0KfTsKCi8qKgogKiBJbnRlcm5ldCBleHBsb3JlciByb3RhdGVzIGltYWdlIHJlbGF0aXZlIGxlZnQgdG9wIGNvcm5lciwgc28gd2Ugc2hvdWxkCiAqIHNoaWZ0IGltYWdlIHdoZW4gaXQncyByb3RhdGVkLgogKi8KdmFyIGllVHJhbnNmb3JtcyA9IHsKICAgICAgICAnMCc6IHsKICAgICAgICAgICAgbWFyZ2luTGVmdDogMCwKICAgICAgICAgICAgbWFyZ2luVG9wOiAwLAogICAgICAgICAgICBmaWx0ZXI6ICdwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4KE0xMT0xLCBNMTI9MCwgTTIxPTAsIE0yMj0xLCBTaXppbmdNZXRob2Q9ImF1dG8gZXhwYW5kIiknCiAgICAgICAgfSwKCiAgICAgICAgJzkwJzogewogICAgICAgICAgICBtYXJnaW5MZWZ0OiAtMSwKICAgICAgICAgICAgbWFyZ2luVG9wOiAxLAogICAgICAgICAgICBmaWx0ZXI6ICdwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4KE0xMT0wLCBNMTI9LTEsIE0yMT0xLCBNMjI9MCwgU2l6aW5nTWV0aG9kPSJhdXRvIGV4cGFuZCIpJwogICAgICAgIH0sCgogICAgICAgICcxODAnOiB7CiAgICAgICAgICAgIG1hcmdpbkxlZnQ6IDAsCiAgICAgICAgICAgIG1hcmdpblRvcDogMCwKICAgICAgICAgICAgZmlsdGVyOiAncHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0Lk1hdHJpeChNMTE9LTEsIE0xMj0wLCBNMjE9MCwgTTIyPS0xLCBTaXppbmdNZXRob2Q9ImF1dG8gZXhwYW5kIiknCiAgICAgICAgfSwKCiAgICAgICAgJzI3MCc6IHsKICAgICAgICAgICAgbWFyZ2luTGVmdDogLTEsCiAgICAgICAgICAgIG1hcmdpblRvcDogMSwKICAgICAgICAgICAgZmlsdGVyOiAncHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0Lk1hdHJpeChNMTE9MCwgTTEyPTEsIE0yMT0tMSwgTTIyPTAsIFNpemluZ01ldGhvZD0iYXV0byBleHBhbmQiKScKICAgICAgICB9CiAgICB9LAogICAgLy8gdGhpcyB0ZXN0IGlzIHRoZSBpbnZlcnNpb24gb2YgdGhlIGNzcyBmaWx0ZXJzIHRlc3QgZnJvbSB0aGUgbW9kZXJuaXpyIHByb2plY3QKICAgIHVzZUllVHJhbnNmb3JtcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBtb2RFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbW9kZXJuaXpyJyksCgkJbVN0eWxlID0gbW9kRWxlbS5zdHlsZSwKCQlvbVByZWZpeGVzID0gJ1dlYmtpdCBNb3ogTyBtcycsCgkJZG9tUHJlZml4ZXMgPSBvbVByZWZpeGVzLnRvTG93ZXJDYXNlKCkuc3BsaXQoJyAnKSwKICAgICAgICAJcHJvcHMgPSAoInRyYW5zZm9ybSIgKyAnICcgKyBkb21QcmVmaXhlcy5qb2luKCJUcmFuc2Zvcm0gIikgKyAiVHJhbnNmb3JtIikuc3BsaXQoJyAnKTsKICAgICAgICBmb3IgKCB2YXIgaSBpbiBwcm9wcyApIHsKICAgICAgICAgICAgdmFyIHByb3AgPSBwcm9wc1tpXTsKICAgICAgICAgICAgaWYgKCAhJC5jb250YWlucyhwcm9wLCAiLSIpICYmIG1TdHlsZVtwcm9wXSAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfSgpOwoKJC53aWRnZXQoICJ1aS5pdmlld2VyIiwgJC51aS5tb3VzZSwgewogICAgd2lkZ2V0RXZlbnRQcmVmaXg6ICJpdmlld2VyIiwKICAgIG9wdGlvbnMgOiB7CiAgICAgICAgLyoqCiAgICAgICAgKiBzdGFydCB6b29tIHZhbHVlIGZvciBpbWFnZSwgbm90IHVzZWQgbm93CiAgICAgICAgKiBtYXkgYmUgZXF1YWwgdG8gImZpdCIgdG8gZml0IGltYWdlIGludG8gY29udGFpbmVyIG9yIHNjYWxlIGluICUKICAgICAgICAqKi8KICAgICAgICB6b29tOiAiZml0IiwKICAgICAgICAvKioKICAgICAgICAqIGJhc2UgdmFsdWUgdG8gc2NhbGUgaW1hZ2UKICAgICAgICAqKi8KICAgICAgICB6b29tX2Jhc2U6IDEwMCwKICAgICAgICAvKioKICAgICAgICAqIG1heGltdW0gem9vbQogICAgICAgICoqLwogICAgICAgIHpvb21fbWF4OiA4MDAsCiAgICAgICAgLyoqCiAgICAgICAgKiBtaW5pbXVtIHpvb20KICAgICAgICAqKi8KICAgICAgICB6b29tX21pbjogMjUsCiAgICAgICAgLyoqCiAgICAgICAgKiBiYXNlIG9mIHJhdGUgbXVsdGlwbGllci4KICAgICAgICAqIHpvb20gaXMgY2FsY3VsYXRlZCBieSBmb3JtdWxhOiB6b29tX2Jhc2UgKiB6b29tX2RlbHRhXnJhdGUKICAgICAgICAqKi8KICAgICAgICB6b29tX2RlbHRhOiAxLjQsCiAgICAgICAgLyoqCiAgICAgICAgKiB3aGV0aGVyIHRoZSB6b29tIHNob3VsZCBiZSBhbmltYXRlZC4KICAgICAgICAqLwogICAgICAgIHpvb21fYW5pbWF0aW9uOiB0cnVlLAogICAgICAgIC8qKgogICAgICAgICogaWYgdHJ1ZSBwbHVnaW4gZG9lc24ndCBhZGQgaXRzIG93biBjb250cm9scwogICAgICAgICoqLwogICAgICAgIHVpX2Rpc2FibGVkOiBmYWxzZSwKICAgICAgICAvKioKICAgICAgICAgKiBJZiBmYWxzZSBtb3VzZXdoZWVsIHdpbGwgYmUgZGlzYWJsZWQKICAgICAgICAgKi8KICAgICAgICBtb3VzZXdoZWVsOiB0cnVlLAogICAgICAgIC8qKgogICAgICAgICogaWYgZmFsc2UsIHBsdWdpbiBkb2Vzbid0IGJpbmQgcmVzaXplIGV2ZW50IG9uIHdpbmRvdyBhbmQgdGhpcyBtdXN0CiAgICAgICAgKiBiZSBoYW5kbGVkIG1hbnVhbGx5CiAgICAgICAgKiovCiAgICAgICAgdXBkYXRlX29uX3Jlc2l6ZTogdHJ1ZSwKICAgICAgICAvKioKICAgICAgICAqIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHpvb20gdmFsdWUgaXMgY2hhbmdlZAogICAgICAgICogQHBhcmFtIGludCBuZXcgem9vbSB2YWx1ZQogICAgICAgICogQHJldHVybiBib29sZWFuIGlmIGZhbHNlIHpvb20gYWN0aW9uIGlzIGFib3J0ZWQKICAgICAgICAqKi8KICAgICAgICBvblpvb206IGpRdWVyeS5ub29wLAogICAgICAgIC8qKgogICAgICAgICogZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gem9vbSB2YWx1ZSBpcyBjaGFuZ2VkIGFmdGVyIGltYWdlIGlzIHNldCB0byB0aGUgbmV3IGRpbWVuc2lvbnMKICAgICAgICAqIEBwYXJhbSBpbnQgbmV3IHpvb20gdmFsdWUKICAgICAgICAqIEByZXR1cm4gYm9vbGVhbiBpZiBmYWxzZSB6b29tIGFjdGlvbiBpcyBhYm9ydGVkCiAgICAgICAgKiovCiAgICAgICAgb25BZnRlclpvb206IGpRdWVyeS5ub29wLAogICAgICAgIC8qKgogICAgICAgICogZXZlbnQgaXMgZmlyZWQgb24gZHJhZyBiZWdpbgogICAgICAgICogQHBhcmFtIG9iamVjdCBjb29yZHMgbW91c2UgY29vcmRpbmF0ZXMgb24gdGhlIGltYWdlCiAgICAgICAgKiBAcmV0dXJuIGJvb2xlYW4gaWYgZmFsc2UgaXMgcmV0dXJuZWQsIGRyYWcgYWN0aW9uIGlzIGFib3J0ZWQKICAgICAgICAqKi8KICAgICAgICBvblN0YXJ0RHJhZzogalF1ZXJ5Lm5vb3AsCiAgICAgICAgLyoqCiAgICAgICAgKiBldmVudCBpcyBmaXJlZCBvbiBkcmFnIGFjdGlvbgogICAgICAgICogQHBhcmFtIG9iamVjdCBjb29yZHMgbW91c2UgY29vcmRpbmF0ZXMgb24gdGhlIGltYWdlCiAgICAgICAgKiovCiAgICAgICAgb25EcmFnOiBqUXVlcnkubm9vcCwKICAgICAgICAvKioKICAgICAgICAqIGV2ZW50IGlzIGZpcmVkIG9uIGRyYWcgc3RvcAogICAgICAgICogQHBhcmFtIG9iamVjdCBjb29yZHMgbW91c2UgY29vcmRpbmF0ZXMgb24gdGhlIGltYWdlCiAgICAgICAgKiovCiAgICAgICAgb25TdG9wRHJhZzogalF1ZXJ5Lm5vb3AsCiAgICAgICAgLyoqCiAgICAgICAgKiBldmVudCBpcyBmaXJlZCB3aGVuIG1vdXNlIG1vdmVzIG92ZXIgaW1hZ2UKICAgICAgICAqIEBwYXJhbSBvYmplY3QgY29vcmRzIG1vdXNlIGNvb3JkaW5hdGVzIG9uIHRoZSBpbWFnZQogICAgICAgICoqLwogICAgICAgIG9uTW91c2VNb3ZlOiBqUXVlcnkubm9vcCwKICAgICAgICAvKioKICAgICAgICAqIG1vdXNlIGNsaWNrIGV2ZW50CiAgICAgICAgKiBAcGFyYW0gb2JqZWN0IGNvb3JkcyBtb3VzZSBjb29yZGluYXRlcyBvbiB0aGUgaW1hZ2UKICAgICAgICAqKi8KICAgICAgICBvbkNsaWNrOiBqUXVlcnkubm9vcCwKICAgICAgICAvKioKICAgICAgICAqIGV2ZW50IGlzIGZpcmVkIHdoZW4gaW1hZ2Ugc3RhcnRzIHRvIGxvYWQKICAgICAgICAqLwogICAgICAgIG9uU3RhcnRMb2FkOiBudWxsLAogICAgICAgIC8qKgogICAgICAgICogZXZlbnQgaXMgZmlyZWQsIHdoZW4gaW1hZ2UgaXMgbG9hZGVkIGFuZCBpbml0aWFsbHkgcG9zaXRpb25lZAogICAgICAgICovCiAgICAgICAgb25GaW5pc2hMb2FkOiBudWxsLAogICAgICAgIC8qKgogICAgICAgICogZXZlbnQgaXMgZmlyZWQgd2hlbiBpbWFnZSBsb2FkIGVycm9yIG9jY3VycwogICAgICAgICovCiAgICAgICAgb25FcnJvckxvYWQ6IG51bGwKICAgIH0sCgogICAgX2NyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG1lID0gdGhpczsKCiAgICAgICAgLy9kcmFnIHZhcmlhYmxlcwogICAgICAgIHRoaXMuZHggPSAwOwogICAgICAgIHRoaXMuZHkgPSAwOwoKICAgICAgICAvKiBvYmplY3QgY29udGFpbmluZyBhY3R1YWwgaW5mb3JtYXRpb24gYWJvdXQgaW1hZ2UKICAgICAgICAqICAgQGltZ19vYmplY3Qub2JqZWN0IC0ganF1ZXJ5IGltZyBvYmplY3QKICAgICAgICAqICAgQGltZ19vYmplY3Qub3JpZ197d2lkdGh8aGVpZ2h0fSAtIG9yaWdpbmFsIGRpbWVuc2lvbnMKICAgICAgICAqICAgQGltZ19vYmplY3QuZGlzcGxheV97d2lkdGh8aGVpZ2h0fSAtIGFjdHVhbCBkaW1lbnNpb25zCiAgICAgICAgKi8KICAgICAgICB0aGlzLmltZ19vYmplY3QgPSB7fTsKCiAgICAgICAgdGhpcy56b29tX29iamVjdCA9IHt9OyAvL29iamVjdCB0byBzaG93IHpvb20gc3RhdHVzCgogICAgICAgIHRoaXMuX2FuZ2xlID0gMDsKCiAgICAgICAgdGhpcy5jdXJyZW50X3pvb20gPSB0aGlzLm9wdGlvbnMuem9vbTsKCiAgICAgICAgaWYodGhpcy5vcHRpb25zLnNyYyA9PT0gbnVsbCl7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5lbGVtZW50OwoKICAgICAgICB0aGlzLl91cGRhdGVDb250YWluZXJJbmZvKCk7CgogICAgICAgIC8vaW5pdCBjb250YWluZXIKICAgICAgICB0aGlzLmNvbnRhaW5lci5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIik7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMudXBkYXRlX29uX3Jlc2l6ZSA9PSB0cnVlKSB7CiAgICAgICAgICAgICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBtZS51cGRhdGUoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmltZ19vYmplY3QgPSBuZXcgJC51aS5pdmlld2VyLkltYWdlT2JqZWN0KHRoaXMub3B0aW9ucy56b29tX2FuaW1hdGlvbik7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMubW91c2V3aGVlbCkgewogICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5iaW5kKCdtb3VzZXdoZWVsLml2aWV3ZXInLCBmdW5jdGlvbihldiwgZGVsdGEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy90aGlzIGV2ZW50IGlzIHRoZXJlIGluc3RlYWQgb2YgY29udGFpbmluZyBkaXYsIGJlY2F1c2UKICAgICAgICAgICAgICAgICAgICAvL2F0IG9wZXJhIGl0IHRyaWdnZXJzIG1hbnkgdGltZXMgb24gZGl2CiAgICAgICAgICAgICAgICAgICAgdmFyIHpvb20gPSAoZGVsdGEgPiAwKT8xOi0xLAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfb2Zmc2V0ID0gbWUuY29udGFpbmVyLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBtb3VzZV9wb3MgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2pxdWVyeS5tb3VzZXdoZWVsIDMuMS4wIHVzZXMgc3RyYW5nZSBNb3pNb3VzZVBpeGVsU2Nyb2xsIGV2ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3doaWNoIGlzIG5vdCBiZWluZyBmaXhlZCBieSBqUXVlcnkuRXZlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IChldi5wYWdlWCB8fCBldi5vcmlnaW5hbEV2ZW50LnBhZ2VYKSAtIGNvbnRhaW5lcl9vZmZzZXQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IChldi5wYWdlWSB8fCBldi5vcmlnaW5hbEV2ZW50LnBhZ2VYKSAtIGNvbnRhaW5lcl9vZmZzZXQudG9wCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIG1lLnpvb21fYnkoem9vbSwgbW91c2VfcG9zKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmIChnZXN0dXJlc1N1cHBvcnQpIHsKICAgICAgICAgICAgICAgIHZhciBnZXN0dXJlVGhyb3R0bGUgPSArbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbFNjYWxlLCBvcmlnaW5hbENlbnRlcjsKICAgICAgICAgICAgICAgIHRoaXMuaW1nX29iamVjdC5vYmplY3QoKQogICAgICAgICAgICAgICAgICAgIC8vIC5iaW5kKCdnZXN0dXJlc3RhcnQnLCBmdW5jdGlvbihldikgewogICAgICAgICAgICAgICAgICAgIC5iaW5kKCd0b3VjaHN0YXJ0JywgZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxTY2FsZSA9IG1lLmN1cnJlbnRfem9vbTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvdWNoZXMgPSBldi5vcmlnaW5hbEV2ZW50LnRvdWNoZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodG91Y2hlcy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX29mZnNldCA9IG1lLmNvbnRhaW5lci5vZmZzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsQ2VudGVyID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6ICh0b3VjaGVzWzBdLnBhZ2VYICsgdG91Y2hlc1sxXS5wYWdlWCkgLyAyICAtIGNvbnRhaW5lcl9vZmZzZXQubGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAodG91Y2hlc1swXS5wYWdlWSArIHRvdWNoZXNbMV0ucGFnZVkpIC8gMiAtIGNvbnRhaW5lcl9vZmZzZXQudG9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxDZW50ZXIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkuYmluZCgnZ2VzdHVyZWNoYW5nZScsIGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vZG8gbm90IHdhbnQgdG8gaW1wb3J0IHRocm90dGxlIGZ1bmN0aW9uIGZyb20gdW5kZXJzY29yZQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9ICtuZXcgRGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGQgLSBnZXN0dXJlVGhyb3R0bGUpIDwgNTApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGdlc3R1cmVUaHJvdHRsZSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6b29tID0gb3JpZ2luYWxTY2FsZSAqIGV2Lm9yaWdpbmFsRXZlbnQuc2NhbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lLnNldF96b29tKHpvb20sIG9yaWdpbmFsQ2VudGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICB9KS5iaW5kKCdnZXN0dXJlZW5kJywgZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxDZW50ZXIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL2luaXQgb2JqZWN0CiAgICAgICAgdGhpcy5pbWdfb2JqZWN0Lm9iamVjdCgpCiAgICAgICAgICAgIC8vYmluZCBtb3VzZSBldmVudHMKICAgICAgICAgICAgLmNsaWNrKGZ1bmN0aW9uKGUpe3JldHVybiBtZS5fY2xpY2soZSl9KQogICAgICAgICAgICAgICAgLnByZXBlbmRUbyh0aGlzLmNvbnRhaW5lcik7CgogICAgICAgIHRoaXMuY29udGFpbmVyLmJpbmQoJ21vdXNlbW92ZScsIGZ1bmN0aW9uKGV2KSB7IG1lLl9oYW5kbGVNb3VzZU1vdmUoZXYpOyB9KTsKCiAgICAgICAgdGhpcy5sb2FkSW1hZ2UodGhpcy5vcHRpb25zLnNyYyk7CgogICAgICAgIGlmKCF0aGlzLm9wdGlvbnMudWlfZGlzYWJsZWQpCiAgICAgICAgewogICAgICAgICAgICB0aGlzLmNyZWF0ZXVpKCk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9tb3VzZUluaXQoKTsKICAgIH0sCgogICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCggdGhpcyApOwogICAgICAgIHRoaXMuX21vdXNlRGVzdHJveSgpOwogICAgICAgIHRoaXMuaW1nX29iamVjdC5vYmplY3QoKS5yZW1vdmUoKTsKICAgICAgICB0aGlzLmNvbnRhaW5lci5vZmYoJy5pdmlld2VyJyk7CiAgICAgICAgdGhpcy5jb250YWluZXIuY3NzKCdvdmVyZmxvdycsICcnKTsgLy9jbGVhbnVwIHN0eWxlcyBvbiBkZXN0cm95CiAgICB9LAoKICAgIF91cGRhdGVDb250YWluZXJJbmZvOiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdGhpcy5vcHRpb25zLmhlaWdodCA9IHRoaXMuY29udGFpbmVyLmhlaWdodCgpOwogICAgICAgIHRoaXMub3B0aW9ucy53aWR0aCA9IHRoaXMuY29udGFpbmVyLndpZHRoKCk7CiAgICB9LAoKICAgIHVwZGF0ZTogZnVuY3Rpb24oKQogICAgewogICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRhaW5lckluZm8oKQogICAgICAgIHRoaXMuc2V0Q29vcmRzKHRoaXMuaW1nX29iamVjdC54KCksIHRoaXMuaW1nX29iamVjdC55KCkpOwogICAgfSwKCiAgICBsb2FkSW1hZ2U6IGZ1bmN0aW9uKCBzcmMgKQogICAgewogICAgICAgIHRoaXMuY3VycmVudF96b29tID0gdGhpcy5vcHRpb25zLnpvb207CiAgICAgICAgdmFyIG1lID0gdGhpczsKCiAgICAgICAgdGhpcy5fdHJpZ2dlcignb25TdGFydExvYWQnLCAwLCBzcmMpOwoKICAgICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygiaXZpZXdlcl9sb2FkaW5nIik7CiAgICAgICAgdGhpcy5pbWdfb2JqZWN0LmxvYWQoc3JjLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbWUuX2ltYWdlTG9hZGVkKHNyYyk7CiAgICAgICAgfSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG1lLl90cmlnZ2VyKCJvbkVycm9yTG9hZCIsIDAsIHNyYyk7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIF9pbWFnZUxvYWRlZDogZnVuY3Rpb24oc3JjKSB7CiAgICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoIml2aWV3ZXJfbG9hZGluZyIpOwogICAgICAgIHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJpdmlld2VyX2N1cnNvciIpOwoKICAgICAgICBpZih0aGlzLm9wdGlvbnMuem9vbSA9PSAiZml0Iil7CiAgICAgICAgICAgIHRoaXMuZml0KHRydWUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5zZXRfem9vbSh0aGlzLm9wdGlvbnMuem9vbSwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLl90cmlnZ2VyKCdvbkZpbmlzaExvYWQnLCAwLCBzcmMpOwogICAgfSwKCiAgICAvKioKICAgICogZml0cyBpbWFnZSBpbiB0aGUgY29udGFpbmVyCiAgICAqCiAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2tpcF9hbmltYXRpb24KICAgICoqLwogICAgZml0OiBmdW5jdGlvbihza2lwX2FuaW1hdGlvbikKICAgIHsKICAgICAgICB2YXIgYXNwZWN0X3JhdGlvID0gdGhpcy5pbWdfb2JqZWN0Lm9yaWdfd2lkdGgoKSAvIHRoaXMuaW1nX29iamVjdC5vcmlnX2hlaWdodCgpOwogICAgICAgIHZhciB3aW5kb3dfcmF0aW8gPSB0aGlzLm9wdGlvbnMud2lkdGggLyAgdGhpcy5vcHRpb25zLmhlaWdodDsKICAgICAgICB2YXIgY2hvb3NlX2xlZnQgPSAoYXNwZWN0X3JhdGlvID4gd2luZG93X3JhdGlvKTsKICAgICAgICB2YXIgbmV3X3pvb20gPSAwOwoKICAgICAgICBpZihjaG9vc2VfbGVmdCl7CiAgICAgICAgICAgIG5ld196b29tID0gdGhpcy5vcHRpb25zLndpZHRoIC8gdGhpcy5pbWdfb2JqZWN0Lm9yaWdfd2lkdGgoKSAqIDEwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5ld196b29tID0gdGhpcy5vcHRpb25zLmhlaWdodCAvIHRoaXMuaW1nX29iamVjdC5vcmlnX2hlaWdodCgpICogMTAwOwogICAgICAgIH0KCiAgICAgIHRoaXMuc2V0X3pvb20obmV3X3pvb20sIHNraXBfYW5pbWF0aW9uKTsKICAgIH0sCgogICAgLyoqCiAgICAqIGNlbnRlciBpbWFnZSBpbiBjb250YWluZXIKICAgICoqLwogICAgY2VudGVyOiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdGhpcy5zZXRDb29yZHMoLU1hdGgucm91bmQoKHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X3dpZHRoKCkgLSB0aGlzLm9wdGlvbnMud2lkdGgpLzIpLAogICAgICAgICAgICAgICAgLU1hdGgucm91bmQoKHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X2hlaWdodCgpIC0gdGhpcy5vcHRpb25zLmhlaWdodCkvMikpOwogICAgfSwKCiAgICAvKioKICAgICogICBtb3ZlIGEgcG9pbnQgaW4gY29udGFpbmVyIHRvIHRoZSBjZW50ZXIgb2YgZGlzcGxheSBhcmVhCiAgICAqICAgQHBhcmFtIHggYSBwb2ludCBpbiBjb250YWluZXIKICAgICogICBAcGFyYW0geSBhIHBvaW50IGluIGNvbnRhaW5lcgogICAgKiovCiAgICBtb3ZlVG86IGZ1bmN0aW9uKHgsIHkpCiAgICB7CiAgICAgICAgdmFyIGR4ID0geC1NYXRoLnJvdW5kKHRoaXMub3B0aW9ucy53aWR0aC8yKTsKICAgICAgICB2YXIgZHkgPSB5LU1hdGgucm91bmQodGhpcy5vcHRpb25zLmhlaWdodC8yKTsKCiAgICAgICAgdmFyIG5ld194ID0gdGhpcy5pbWdfb2JqZWN0LngoKSAtIGR4OwogICAgICAgIHZhciBuZXdfeSA9IHRoaXMuaW1nX29iamVjdC55KCkgLSBkeTsKCiAgICAgICAgdGhpcy5zZXRDb29yZHMobmV3X3gsIG5ld195KTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBHZXQgY29udGFpbmVyIG9mZnNldCBvYmplY3QuCiAgICAgKi8KICAgIGdldENvbnRhaW5lck9mZnNldDogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGpRdWVyeS5leHRlbmQoe30sIHRoaXMuY29udGFpbmVyLm9mZnNldCgpKTsKICAgIH0sCgogICAgLyoqCiAgICAqIHNldCBjb29yZGluYXRlcyBvZiB1cHBlciBsZWZ0IGNvcm5lciBvZiBpbWFnZSBvYmplY3QKICAgICoqLwogICAgc2V0Q29vcmRzOiBmdW5jdGlvbih4LHkpCiAgICB7CiAgICAgICAgLy9kbyBub3RoaW5nIHdoaWxlIGltYWdlIGlzIGJlaW5nIGxvYWRlZAogICAgICAgIGlmKCF0aGlzLmltZ19vYmplY3QubG9hZGVkKCkpIHsgcmV0dXJuOyB9CgogICAgICAgIHZhciBjb29yZHMgPSB0aGlzLl9jb3JyZWN0Q29vcmRzKHgseSk7CiAgICAgICAgdGhpcy5pbWdfb2JqZWN0LngoY29vcmRzLngpOwogICAgICAgIHRoaXMuaW1nX29iamVjdC55KGNvb3Jkcy55KTsKICAgIH0sCgogICAgX2NvcnJlY3RDb29yZHM6IGZ1bmN0aW9uKCB4LCB5ICkKICAgIHsKICAgICAgICB4ID0gcGFyc2VJbnQoeCwgMTApOwogICAgICAgIHkgPSBwYXJzZUludCh5LCAxMCk7CgogICAgICAgIC8vY2hlY2sgbmV3IGNvb3JkaW5hdGVzIHRvIGJlIGNvcnJlY3QgKHRvIGJlIGluIHJlY3QpCiAgICAgICAgaWYoeSA+IDApewogICAgICAgICAgICB5ID0gMDsKICAgICAgICB9CiAgICAgICAgaWYoeCA+IDApewogICAgICAgICAgICB4ID0gMDsKICAgICAgICB9CiAgICAgICAgaWYoeSArIHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X2hlaWdodCgpIDwgdGhpcy5vcHRpb25zLmhlaWdodCl7CiAgICAgICAgICAgIHkgPSB0aGlzLm9wdGlvbnMuaGVpZ2h0IC0gdGhpcy5pbWdfb2JqZWN0LmRpc3BsYXlfaGVpZ2h0KCk7CiAgICAgICAgfQogICAgICAgIGlmKHggKyB0aGlzLmltZ19vYmplY3QuZGlzcGxheV93aWR0aCgpIDwgdGhpcy5vcHRpb25zLndpZHRoKXsKICAgICAgICAgICAgeCA9IHRoaXMub3B0aW9ucy53aWR0aCAtIHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X3dpZHRoKCk7CiAgICAgICAgfQogICAgICAgIGlmKHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X3dpZHRoKCkgPD0gdGhpcy5vcHRpb25zLndpZHRoKXsKICAgICAgICAgICAgeCA9IC0odGhpcy5pbWdfb2JqZWN0LmRpc3BsYXlfd2lkdGgoKSAtIHRoaXMub3B0aW9ucy53aWR0aCkvMjsKICAgICAgICB9CiAgICAgICAgaWYodGhpcy5pbWdfb2JqZWN0LmRpc3BsYXlfaGVpZ2h0KCkgPD0gdGhpcy5vcHRpb25zLmhlaWdodCl7CiAgICAgICAgICAgIHkgPSAtKHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X2hlaWdodCgpIC0gdGhpcy5vcHRpb25zLmhlaWdodCkvMjsKICAgICAgICB9CgogICAgICAgIHJldHVybiB7IHg6IHgsIHk6eSB9OwogICAgfSwKCgogICAgLyoqCiAgICAqIGNvbnZlcnQgY29vcmRpbmF0ZXMgb24gdGhlIGNvbnRhaW5lciB0byB0aGUgY29vcmRpbmF0ZXMgb24gdGhlIGltYWdlIChpbiBvcmlnaW5hbCBzaXplKQogICAgKgogICAgKiBAcmV0dXJuIG9iamVjdCB3aXRoIGZpZWxkcyB4LHkgYWNjb3JkaW5nIHRvIGNvb3JkaW5hdGVzIG9yIGZhbHNlCiAgICAqIGlmIGluaXRpYWwgY29vcmRzIGFyZSBub3QgaW5zaWRlIGltYWdlCiAgICAqKi8KICAgIGNvbnRhaW5lclRvSW1hZ2UgOiBmdW5jdGlvbiAoeCx5KQogICAgewogICAgICAgIHZhciBjb29yZHMgPSB7IHggOiB4IC0gdGhpcy5pbWdfb2JqZWN0LngoKSwKICAgICAgICAgICAgICAgICB5IDogIHkgLSB0aGlzLmltZ19vYmplY3QueSgpCiAgICAgICAgfTsKCiAgICAgICAgY29vcmRzID0gdGhpcy5pbWdfb2JqZWN0LnRvT3JpZ2luYWxDb29yZHMoY29vcmRzKTsKCiAgICAgICAgcmV0dXJuIHsgeCA6ICB1dGlsLmRlc2NhbGVWYWx1ZShjb29yZHMueCwgdGhpcy5jdXJyZW50X3pvb20pLAogICAgICAgICAgICAgICAgIHkgOiAgdXRpbC5kZXNjYWxlVmFsdWUoY29vcmRzLnksIHRoaXMuY3VycmVudF96b29tKQogICAgICAgIH07CiAgICB9LAoKICAgIC8qKgogICAgKiBjb252ZXJ0IGNvb3JkaW5hdGVzIG9uIHRoZSBpbWFnZSAoaW4gb3JpZ2luYWwgc2l6ZSwgYW5kIHplcm8gYW5nbGUpIHRvIHRoZSBjb29yZGluYXRlcyBvbiB0aGUgY29udGFpbmVyCiAgICAqCiAgICAqIEByZXR1cm4gb2JqZWN0IHdpdGggZmllbGRzIHgseSBhY2NvcmRpbmcgdG8gY29vcmRpbmF0ZXMKICAgICoqLwogICAgaW1hZ2VUb0NvbnRhaW5lciA6IGZ1bmN0aW9uICh4LHkpCiAgICB7CiAgICAgICAgdmFyIGNvb3JkcyA9IHsKICAgICAgICAgICAgICAgIHggOiB1dGlsLnNjYWxlVmFsdWUoeCwgdGhpcy5jdXJyZW50X3pvb20pLAogICAgICAgICAgICAgICAgeSA6IHV0aWwuc2NhbGVWYWx1ZSh5LCB0aGlzLmN1cnJlbnRfem9vbSkKICAgICAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuIHRoaXMuaW1nX29iamVjdC50b1JlYWxDb29yZHMoY29vcmRzKTsKICAgIH0sCgogICAgLyoqCiAgICAqIGdldCBtb3VzZSBjb29yZGluYXRlcyBvbiB0aGUgaW1hZ2UKICAgICogQHBhcmFtIGUgLSBvYmplY3QgY29udGFpbmluZyBwYWdlWCBhbmQgcGFnZVkgZmllbGRzLCBlLmcuIG1vdXNlIGV2ZW50IG9iamVjdAogICAgKgogICAgKiBAcmV0dXJuIG9iamVjdCB3aXRoIGZpZWxkcyB4LHkgYWNjb3JkaW5nIHRvIGNvb3JkaW5hdGVzIG9yIGZhbHNlCiAgICAqIGlmIGluaXRpYWwgY29vcmRzIGFyZSBub3QgaW5zaWRlIGltYWdlCiAgICAqKi8KICAgIF9nZXRNb3VzZUNvb3JkcyA6IGZ1bmN0aW9uKGUpCiAgICB7CiAgICAgICAgdmFyIGNvbnRhaW5lck9mZnNldCA9IHRoaXMuY29udGFpbmVyLm9mZnNldCgpOwogICAgICAgICAgICBjb29yZHMgPSB0aGlzLmNvbnRhaW5lclRvSW1hZ2UoZS5wYWdlWCAtIGNvbnRhaW5lck9mZnNldC5sZWZ0LCBlLnBhZ2VZIC0gY29udGFpbmVyT2Zmc2V0LnRvcCk7CgogICAgICAgIHJldHVybiBjb29yZHM7CiAgICB9LAoKICAgIC8qKgogICAgKiBzZXQgaW1hZ2Ugc2NhbGUgdG8gdGhlIG5ld196b29tCiAgICAqCiAgICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdfem9vbSBpbWFnZSBzY2FsZSBpbiAlCiAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2tpcF9hbmltYXRpb24KICAgICogQHBhcmFtIHt4OiBudW1iZXIsIHk6IG51bWJlcn0gQ29vcmRpbmF0ZXMgb2YgcG9pbnQgdGhlIHNob3VsZCBub3QgYmUgbW92ZWQgb24gem9vbS4gVGhlIGRlZmF1bHQgaXMgdGhlIGNlbnRlciBvZiBpbWFnZS4KICAgICoqLwogICAgc2V0X3pvb206IGZ1bmN0aW9uKG5ld196b29tLCBza2lwX2FuaW1hdGlvbiwgem9vbV9jZW50ZXIpCiAgICB7CiAgICAgICAgaWYgKHRoaXMuX3RyaWdnZXIoJ29uWm9vbScsIDAsIG5ld196b29tKSA9PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvL2RvIG5vdGhpbmcgd2hpbGUgaW1hZ2UgaXMgYmVpbmcgbG9hZGVkCiAgICAgICAgaWYoIXRoaXMuaW1nX29iamVjdC5sb2FkZWQoKSkgeyByZXR1cm47IH0KCiAgICAgICAgem9vbV9jZW50ZXIgPSB6b29tX2NlbnRlciB8fCB7CiAgICAgICAgICAgIHg6IE1hdGgucm91bmQodGhpcy5vcHRpb25zLndpZHRoLzIpLAogICAgICAgICAgICB5OiBNYXRoLnJvdW5kKHRoaXMub3B0aW9ucy5oZWlnaHQvMikKICAgICAgICB9CgogICAgICAgIGlmKG5ld196b29tIDwgIHRoaXMub3B0aW9ucy56b29tX21pbikKICAgICAgICB7CiAgICAgICAgICAgIG5ld196b29tID0gdGhpcy5vcHRpb25zLnpvb21fbWluOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKG5ld196b29tID4gdGhpcy5vcHRpb25zLnpvb21fbWF4KQogICAgICAgIHsKICAgICAgICAgICAgbmV3X3pvb20gPSB0aGlzLm9wdGlvbnMuem9vbV9tYXg7CiAgICAgICAgfQoKICAgICAgICAvKiB3ZSBmYWtlIHRoZXNlIHZhbHVlcyB0byBtYWtlIGZpdCB6b29tIHByb3Blcmx5IHdvcmsgKi8KICAgICAgICBpZih0aGlzLmN1cnJlbnRfem9vbSA9PSAiZml0IikKICAgICAgICB7CiAgICAgICAgICAgIHZhciBvbGRfeCA9IHpvb21fY2VudGVyLnggKyBNYXRoLnJvdW5kKHRoaXMuaW1nX29iamVjdC5vcmlnX3dpZHRoKCkvMik7CiAgICAgICAgICAgIHZhciBvbGRfeSA9IHpvb21fY2VudGVyLnkgKyBNYXRoLnJvdW5kKHRoaXMuaW1nX29iamVjdC5vcmlnX2hlaWdodCgpLzIpOwogICAgICAgICAgICB0aGlzLmN1cnJlbnRfem9vbSA9IDEwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBvbGRfeCA9IC10aGlzLmltZ19vYmplY3QueCgpICsgem9vbV9jZW50ZXIueDsKICAgICAgICAgICAgdmFyIG9sZF95ID0gLXRoaXMuaW1nX29iamVjdC55KCkgKyB6b29tX2NlbnRlci55CiAgICAgICAgfQoKICAgICAgICB2YXIgbmV3X3dpZHRoID0gdXRpbC5zY2FsZVZhbHVlKHRoaXMuaW1nX29iamVjdC5vcmlnX3dpZHRoKCksIG5ld196b29tKTsKICAgICAgICB2YXIgbmV3X2hlaWdodCA9IHV0aWwuc2NhbGVWYWx1ZSh0aGlzLmltZ19vYmplY3Qub3JpZ19oZWlnaHQoKSwgbmV3X3pvb20pOwogICAgICAgIHZhciBuZXdfeCA9IHV0aWwuc2NhbGVWYWx1ZSggdXRpbC5kZXNjYWxlVmFsdWUob2xkX3gsIHRoaXMuY3VycmVudF96b29tKSwgbmV3X3pvb20pOwogICAgICAgIHZhciBuZXdfeSA9IHV0aWwuc2NhbGVWYWx1ZSggdXRpbC5kZXNjYWxlVmFsdWUob2xkX3ksIHRoaXMuY3VycmVudF96b29tKSwgbmV3X3pvb20pOwoKICAgICAgICBuZXdfeCA9IHpvb21fY2VudGVyLnggLSBuZXdfeDsKICAgICAgICBuZXdfeSA9IHpvb21fY2VudGVyLnkgLSBuZXdfeTsKCiAgICAgICAgbmV3X3dpZHRoID0gTWF0aC5mbG9vcihuZXdfd2lkdGgpOwogICAgICAgIG5ld19oZWlnaHQgPSBNYXRoLmZsb29yKG5ld19oZWlnaHQpOwogICAgICAgIG5ld194ID0gTWF0aC5mbG9vcihuZXdfeCk7CiAgICAgICAgbmV3X3kgPSBNYXRoLmZsb29yKG5ld195KTsKCiAgICAgICAgdGhpcy5pbWdfb2JqZWN0LmRpc3BsYXlfd2lkdGgobmV3X3dpZHRoKTsKICAgICAgICB0aGlzLmltZ19vYmplY3QuZGlzcGxheV9oZWlnaHQobmV3X2hlaWdodCk7CgogICAgICAgIHZhciBjb29yZHMgPSB0aGlzLl9jb3JyZWN0Q29vcmRzKCBuZXdfeCwgbmV3X3kgKSwKICAgICAgICAgICAgc2VsZiA9IHRoaXM7CgogICAgICAgIHRoaXMuaW1nX29iamVjdC5zZXRJbWFnZVByb3BzKG5ld193aWR0aCwgbmV3X2hlaWdodCwgY29vcmRzLngsIGNvb3Jkcy55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9hbmltYXRpb24sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWxmLl90cmlnZ2VyKCdvbkFmdGVyWm9vbScsIDAsIG5ld196b29tICk7CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5jdXJyZW50X3pvb20gPSBuZXdfem9vbTsKCiAgICAgICAgdGhpcy51cGRhdGVfc3RhdHVzKCk7CiAgICB9LAoKICAgIC8qKgogICAgKiBjaGFuZ2VzIHpvb20gc2NhbGUgYnkgZGVsdGEKICAgICogem9vbSBpcyBjYWxjdWxhdGVkIGJ5IGZvcm11bGE6IHpvb21fYmFzZSAqIHpvb21fZGVsdGFecmF0ZQogICAgKiBAcGFyYW0gSW50ZWdlciBkZWx0YSBudW1iZXIgdG8gYWRkIHRvIHRoZSBjdXJyZW50IG11bHRpcGxpZXIgcmF0ZSBudW1iZXIKICAgICogQHBhcmFtIHt4OiBudW1iZXIsIHk6IG51bWJlcj19IENvb3JkaW5hdGVzIG9mIHBvaW50IHRoZSBzaG91bGQgbm90IGJlIG1vdmVkIG9uIHpvb20uCiAgICAqKi8KICAgIHpvb21fYnk6IGZ1bmN0aW9uKGRlbHRhLCB6b29tX2NlbnRlcikKICAgIHsKICAgICAgICB2YXIgY2xvc2VzdF9yYXRlID0gdGhpcy5maW5kX2Nsb3Nlc3Rfem9vbV9yYXRlKHRoaXMuY3VycmVudF96b29tKTsKCiAgICAgICAgdmFyIG5leHRfcmF0ZSA9IGNsb3Nlc3RfcmF0ZSArIGRlbHRhOwogICAgICAgIHZhciBuZXh0X3pvb20gPSB0aGlzLm9wdGlvbnMuem9vbV9iYXNlICogTWF0aC5wb3codGhpcy5vcHRpb25zLnpvb21fZGVsdGEsIG5leHRfcmF0ZSkKICAgICAgICBpZihkZWx0YSA+IDAgJiYgbmV4dF96b29tIDwgdGhpcy5jdXJyZW50X3pvb20pCiAgICAgICAgewogICAgICAgICAgICBuZXh0X3pvb20gKj0gdGhpcy5vcHRpb25zLnpvb21fZGVsdGE7CiAgICAgICAgfQoKICAgICAgICBpZihkZWx0YSA8IDAgJiYgbmV4dF96b29tID4gdGhpcy5jdXJyZW50X3pvb20pCiAgICAgICAgewogICAgICAgICAgICBuZXh0X3pvb20gLz0gdGhpcy5vcHRpb25zLnpvb21fZGVsdGE7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnNldF96b29tKG5leHRfem9vbSwgdW5kZWZpbmVkLCB6b29tX2NlbnRlcik7CiAgICB9LAoKICAgIC8qKgogICAgKiBSb3RhdGUgaW1hZ2UKICAgICogQHBhcmFtIHtudW19IGRlZyBEZWdyZWVzIGFtb3VudCB0byByb3RhdGUuIFBvc2l0aXZlIHZhbHVlcyByb3RhdGUgaW1hZ2UgY2xvY2t3aXNlLgogICAgKiAgICAgQ3VycmVudGx5IDAsIDkwLCAxODAsIDI3MCBhbmQgLTkwLCAtMTgwLCAtMjcwIHZhbHVlcyBhcmUgc3VwcG9ydGVkCiAgICAqCiAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYWJzIElmIHRoZSBmbGFnIGlzIHRydWUgaWYsIHRoZSBkZWcgcGFyYW1ldGVyIHdpbGwgYmUgY29uc2lkZXJlZCBhcwogICAgKiAgICAgYSBhYnNvbHV0ZSB2YWx1ZSBhbmQgcmVsYXRpdmUgb3RoZXJ3aXNlLgogICAgKiBAcmV0dXJuIHtudW18bnVsbH0gTWV0aG9kIHdpbGwgcmV0dXJuIGN1cnJlbnQgaW1hZ2UgYW5nbGUgaWYgY2FsbGVkIHdpdGhvdXQgYW55IGFyZ3VtZW50cy4KICAgICoqLwogICAgYW5nbGU6IGZ1bmN0aW9uKGRlZywgYWJzKSB7CiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsgcmV0dXJuIHRoaXMuaW1nX29iamVjdC5hbmdsZSgpOyB9CgogICAgICAgIGlmIChkZWcgPCAtMjcwIHx8IGRlZyA+IDI3MCB8fCBkZWcgJSA5MCAhPT0gMCkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIWFicykgeyBkZWcgKz0gdGhpcy5pbWdfb2JqZWN0LmFuZ2xlKCk7IH0KICAgICAgICBpZiAoZGVnIDwgMCkgeyBkZWcgKz0gMzYwOyB9CiAgICAgICAgaWYgKGRlZyA+PSAzNjApIHsgZGVnIC09IDM2MDsgfQoKICAgICAgICBpZiAoZGVnID09PSB0aGlzLmltZ19vYmplY3QuYW5nbGUoKSkgeyByZXR1cm47IH0KCiAgICAgICAgdGhpcy5pbWdfb2JqZWN0LmFuZ2xlKGRlZyk7CiAgICAgICAgLy90aGUgcm90YXRlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCBpbiBhbGwgZWRpdG9ycy4gRm9yIG5vdyB3ZSAganVzdCBjZW50ZXIgdGhlCiAgICAgICAgLy9pbWFnZS4gSG93ZXZlciwgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gdHJ5IHRvIGtlZXAgdGhlIHBvc2l0aW9uLgogICAgICAgIHRoaXMuY2VudGVyKCk7CiAgICAgICAgdGhpcy5fdHJpZ2dlcignYW5nbGUnLCAwLCB7IGFuZ2xlOiB0aGlzLmltZ19vYmplY3QuYW5nbGUoKSB9KTsKICAgIH0sCgogICAgLyoqCiAgICAqIGZpbmRzIGNsb3Nlc3QgbXVsdGlwbGllciByYXRlIGZvciB2YWx1ZQogICAgKiBiYXNpbmcgb24gem9vbV9iYXNlIGFuZCB6b29tX2RlbHRhIHZhbHVlcyBmcm9tIHNldHRpbmdzCiAgICAqIEBwYXJhbSBOdW1iZXIgdmFsdWUgem9vbSB2YWx1ZSB0byBleGFtaW5lCiAgICAqKi8KICAgIGZpbmRfY2xvc2VzdF96b29tX3JhdGU6IGZ1bmN0aW9uKHZhbHVlKQogICAgewogICAgICAgIGlmKHZhbHVlID09IHRoaXMub3B0aW9ucy56b29tX2Jhc2UpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGRpdih2YWwxLHZhbDIpIHsgcmV0dXJuIHZhbDEgLyB2YWwyIH07CiAgICAgICAgZnVuY3Rpb24gbXVsKHZhbDEsdmFsMikgeyByZXR1cm4gdmFsMSAqIHZhbDIgfTsKCiAgICAgICAgdmFyIGZ1bmMgPSAodmFsdWUgPiB0aGlzLm9wdGlvbnMuem9vbV9iYXNlKT9tdWw6ZGl2OwogICAgICAgIHZhciBzZ24gPSAodmFsdWUgPiB0aGlzLm9wdGlvbnMuem9vbV9iYXNlKT8xOi0xOwoKICAgICAgICB2YXIgbWx0cGxyID0gdGhpcy5vcHRpb25zLnpvb21fZGVsdGE7CiAgICAgICAgdmFyIHJhdGUgPSAxOwoKICAgICAgICB3aGlsZShNYXRoLmFicyhmdW5jKHRoaXMub3B0aW9ucy56b29tX2Jhc2UsIE1hdGgucG93KG1sdHBscixyYXRlKSkgLSB2YWx1ZSkgPgogICAgICAgICAgICAgIE1hdGguYWJzKGZ1bmModGhpcy5vcHRpb25zLnpvb21fYmFzZSwgTWF0aC5wb3cobWx0cGxyLHJhdGUrMSkpIC0gdmFsdWUpKQogICAgICAgIHsKICAgICAgICAgICAgcmF0ZSsrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNnbiAqIHJhdGU7CiAgICB9LAoKICAgIC8qIHVwZGF0ZSBzY2FsZSBpbmZvIGluIHRoZSBjb250YWluZXIgKi8KICAgIHVwZGF0ZV9zdGF0dXM6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICBpZighdGhpcy5vcHRpb25zLnVpX2Rpc2FibGVkKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSBNYXRoLnJvdW5kKDEwMCp0aGlzLmltZ19vYmplY3QuZGlzcGxheV9oZWlnaHQoKS90aGlzLmltZ19vYmplY3Qub3JpZ19oZWlnaHQoKSk7CiAgICAgICAgICAgIGlmKHBlcmNlbnQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRoaXMuem9vbV9vYmplY3QuaHRtbChwZXJjZW50ICsgIiUiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCgogICAgLyoqCiAgICAgKiBHZXQgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UuCiAgICAgKiAgICAgQ3VycmVudGx5IG9yaWdfKHdpZHRofGhlaWdodCksIGRpc3BsYXlfKHdpZHRofGhlaWdodCksIGFuZ2xlLCB6b29tIGFuZCBzcmMgcGFyYW1zIGFyZSBzdXBwb3J0ZWQuCiAgICAgKgogICAgICogIEBwYXJhbSB7c3RyaW5nfSBwYXJhbWV0ZXIgdG8gY2hlY2sKICAgICAqICBAcGFyYW0ge2Jvb2xlYW59IHdpdGhvdXRSb3RhdGlvbiBpZiBwYXJhbSBpcyBvcmlnX3dpZHRoIG9yIG9yaWdfaGVpZ2h0IGFuZCB0aGlzIGZsYWcgaXMgc2V0IHRvIHRydWUsCiAgICAgKiAgICAgIG1ldGhvZCB3aWxsIHJldHVybiBvcmlnaW5hbCBpbWFnZSB3aWR0aCB3aXRob3V0IGNvbnNpZGVyaW5nIHJvdGF0aW9uLgogICAgICoKICAgICAqLwogICAgaW5mbzogZnVuY3Rpb24ocGFyYW0sIHdpdGhvdXRSb3RhdGlvbikgewogICAgICAgIGlmICghcGFyYW0pIHsgcmV0dXJuOyB9CgogICAgICAgIHN3aXRjaCAocGFyYW0pIHsKICAgICAgICAgICAgY2FzZSAnb3JpZ193aWR0aCc6CiAgICAgICAgICAgIGNhc2UgJ29yaWdfaGVpZ2h0JzoKICAgICAgICAgICAgICAgIGlmICh3aXRob3V0Um90YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHRoaXMuaW1nX29iamVjdC5hbmdsZSgpICUgMTgwID09PSAwID8gdGhpcy5pbWdfb2JqZWN0W3BhcmFtXSgpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID09PSAnb3JpZ193aWR0aCcgPyB0aGlzLmltZ19vYmplY3Qub3JpZ19oZWlnaHQoKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWdfb2JqZWN0Lm9yaWdfd2lkdGgoKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmltZ19vYmplY3RbcGFyYW1dKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgJ2Rpc3BsYXlfd2lkdGgnOgogICAgICAgICAgICBjYXNlICdkaXNwbGF5X2hlaWdodCc6CiAgICAgICAgICAgIGNhc2UgJ2FuZ2xlJzoKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmltZ19vYmplY3RbcGFyYW1dKCk7CiAgICAgICAgICAgIGNhc2UgJ3pvb20nOgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudF96b29tOwogICAgICAgICAgICBjYXNlICdzcmMnOgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW1nX29iamVjdC5vYmplY3QoKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgY2FzZSAnY29vcmRzJzoKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgeDogdGhpcy5pbWdfb2JqZWN0LngoKSwKICAgICAgICAgICAgICAgICAgICB5OiB0aGlzLmltZ19vYmplY3QueSgpCiAgICAgICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0sCgogICAgLyoqCiAgICAqICAgY2FsbGJhY2sgZm9yIGhhbmRsaW5nIG1vdXNkb3duIGV2ZW50IHRvIHN0YXJ0IGRyYWdnaW5nIGltYWdlCiAgICAqKi8KICAgIF9tb3VzZVN0YXJ0OiBmdW5jdGlvbiggZSApCiAgICB7CiAgICAgICAgJC51aS5tb3VzZS5wcm90b3R5cGUuX21vdXNlU3RhcnQuY2FsbCh0aGlzLCBlKTsKICAgICAgICBpZiAodGhpcy5fdHJpZ2dlcignb25TdGFydERyYWcnLCAwLCB0aGlzLl9nZXRNb3VzZUNvb3JkcyhlKSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8qIHN0YXJ0IGRyYWcgZXZlbnQqLwogICAgICAgIHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJpdmlld2VyX2RyYWdfY3Vyc29yIik7CgogICAgICAgIC8vIzEwOiBmaXggbW92ZW1lbnQgcXVpcmtzIGZvciBpcGFkCiAgICAgICAgdGhpcy5fZHJhZ0luaXRpYWxpemVkID0gIShlLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXMgJiYgZS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09MSk7CgogICAgICAgIHRoaXMuZHggPSBlLnBhZ2VYIC0gdGhpcy5pbWdfb2JqZWN0LngoKTsKICAgICAgICB0aGlzLmR5ID0gZS5wYWdlWSAtIHRoaXMuaW1nX29iamVjdC55KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAoKICAgIF9tb3VzZUNhcHR1cmU6IGZ1bmN0aW9uKCBlICkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfSwKCiAgICAvKioKICAgICAqIEhhbmRsZSBtb3VzZSBtb3ZlIGlmIG5lZWRlZC4gVXNlciBjYW4gYXZvaWQgdXNpbmcgdGhpcyBjYWxsYmFjaywgYmVjYXVzZQogICAgICogICAgaGUgY2FuIGdldCB0aGUgc2FtZSBpbmZvcm1hdGlvbiB0aHJvdWdoIHB1YmxpYyBtZXRob2RzLgogICAgICogIEBwYXJhbSB7alF1ZXJ5LkV2ZW50fSBlCiAgICAgKi8KICAgIF9oYW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgICB0aGlzLl90cmlnZ2VyKCdvbk1vdXNlTW92ZScsIGUsIHRoaXMuX2dldE1vdXNlQ29vcmRzKGUpKTsKICAgIH0sCgogICAgLyoqCiAgICAqICAgY2FsbGJhY2sgZm9yIGhhbmRsaW5nIG1vdXNlbW92ZSBldmVudCB0byBkcmFnIGltYWdlCiAgICAqKi8KICAgIF9tb3VzZURyYWc6IGZ1bmN0aW9uKGUpCiAgICB7CiAgICAgICAgJC51aS5tb3VzZS5wcm90b3R5cGUuX21vdXNlRHJhZy5jYWxsKHRoaXMsIGUpOwoKICAgICAgICAvLyMxMDogaW1pdGF0ZSBtb3VzZVN0YXJ0LCBiZWNhdXNlIHdlIGNhbiBnZXQgaGVyZSB3aXRob3V0IGl0IG9uIGlQYWQgZm9yIHNvbWUgcmVhc29uCiAgICAgICAgaWYgKCF0aGlzLl9kcmFnSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgdGhpcy5keCA9IGUucGFnZVggLSB0aGlzLmltZ19vYmplY3QueCgpOwogICAgICAgICAgICB0aGlzLmR5ID0gZS5wYWdlWSAtIHRoaXMuaW1nX29iamVjdC55KCk7CiAgICAgICAgICAgIHRoaXMuX2RyYWdJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgbHRvcCA9ICBlLnBhZ2VZIC0gdGhpcy5keTsKICAgICAgICB2YXIgbGxlZnQgPSBlLnBhZ2VYIC0gdGhpcy5keDsKCiAgICAgICAgdGhpcy5zZXRDb29yZHMobGxlZnQsIGx0b3ApOwogICAgICAgIHRoaXMuX3RyaWdnZXIoJ29uRHJhZycsIGUsIHRoaXMuX2dldE1vdXNlQ29vcmRzKGUpKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAoKICAgIC8qKgogICAgKiAgIGNhbGxiYWNrIGZvciBoYW5kbGluZyBzdG9wIGRyYWcKICAgICoqLwogICAgX21vdXNlU3RvcDogZnVuY3Rpb24oZSkKICAgIHsKICAgICAgICAkLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VTdG9wLmNhbGwodGhpcywgZSk7CiAgICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoIml2aWV3ZXJfZHJhZ19jdXJzb3IiKTsKICAgICAgICB0aGlzLl90cmlnZ2VyKCdvblN0b3BEcmFnJywgMCwgdGhpcy5fZ2V0TW91c2VDb29yZHMoZSkpOwogICAgfSwKCiAgICBfY2xpY2s6IGZ1bmN0aW9uKGUpCiAgICB7CiAgICAgICAgdGhpcy5fdHJpZ2dlcignb25DbGljaycsIDAsIHRoaXMuX2dldE1vdXNlQ29vcmRzKGUpKTsKICAgIH0sCgogICAgLyoqCiAgICAqICAgY3JlYXRlIHpvb20gYnV0dG9ucyBpbmZvIGJveAogICAgKiovCiAgICBjcmVhdGV1aTogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciBtZT10aGlzOwoKICAgICAgICAkKCI8ZGl2PiIsIHsgJ2NsYXNzJzogIml2aWV3ZXJfem9vbV9pbiBpdmlld2VyX2NvbW1vbiBpdmlld2VyX2J1dHRvbiJ9KQogICAgICAgICAgICAgICAgICAgIC5iaW5kKCdtb3VzZWRvd24gdG91Y2hzdGFydCcsZnVuY3Rpb24oKXttZS56b29tX2J5KDEpOyByZXR1cm4gZmFsc2U7fSkKICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8odGhpcy5jb250YWluZXIpOwoKICAgICAgICAkKCI8ZGl2PiIsIHsgJ2NsYXNzJzogIml2aWV3ZXJfem9vbV9vdXQgaXZpZXdlcl9jb21tb24gaXZpZXdlcl9idXR0b24ifSkKICAgICAgICAgICAgICAgICAgICAuYmluZCgnbW91c2Vkb3duIHRvdWNoc3RhcnQnLGZ1bmN0aW9uKCl7bWUuem9vbV9ieSgtIDEpOyByZXR1cm4gZmFsc2U7fSkKICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8odGhpcy5jb250YWluZXIpOwoKICAgICAgICAkKCI8ZGl2PiIsIHsgJ2NsYXNzJzogIml2aWV3ZXJfem9vbV96ZXJvIGl2aWV3ZXJfY29tbW9uIGl2aWV3ZXJfYnV0dG9uIn0pCiAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ21vdXNlZG93biB0b3VjaHN0YXJ0JyxmdW5jdGlvbigpe21lLnNldF96b29tKDEwMCk7IHJldHVybiBmYWxzZTt9KQogICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7CgogICAgICAgICQoIjxkaXY+IiwgeyAnY2xhc3MnOiAiaXZpZXdlcl96b29tX2ZpdCBpdmlld2VyX2NvbW1vbiBpdmlld2VyX2J1dHRvbiJ9KQogICAgICAgICAgICAgICAgICAgIC5iaW5kKCdtb3VzZWRvd24gdG91Y2hzdGFydCcsZnVuY3Rpb24oKXttZS5maXQodGhpcyk7IHJldHVybiBmYWxzZTt9KQogICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7CgogICAgICAgIHRoaXMuem9vbV9vYmplY3QgPSAkKCI8ZGl2PiIpLmFkZENsYXNzKCJpdmlld2VyX3pvb21fc3RhdHVzIGl2aWV3ZXJfY29tbW9uIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKHRoaXMuY29udGFpbmVyKTsKCiAgICAgICAgJCgiPGRpdj4iLCB7ICdjbGFzcyc6ICJpdmlld2VyX3JvdGF0ZV9sZWZ0IGl2aWV3ZXJfY29tbW9uIGl2aWV3ZXJfYnV0dG9uIn0pCiAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ21vdXNlZG93biB0b3VjaHN0YXJ0JyxmdW5jdGlvbigpe21lLmFuZ2xlKC05MCk7IHJldHVybiBmYWxzZTt9KQogICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7CgogICAgICAgICQoIjxkaXY+IiwgeyAnY2xhc3MnOiAiaXZpZXdlcl9yb3RhdGVfcmlnaHQgaXZpZXdlcl9jb21tb24gaXZpZXdlcl9idXR0b24iIH0pCiAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ21vdXNlZG93biB0b3VjaHN0YXJ0JyxmdW5jdGlvbigpe21lLmFuZ2xlKDkwKTsgcmV0dXJuIGZhbHNlO30pCiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKHRoaXMuY29udGFpbmVyKTsKCiAgICAgICAgdGhpcy51cGRhdGVfc3RhdHVzKCk7IC8vaW5pdGlhbCBzdGF0dXMgdXBkYXRlCiAgICB9Cgp9ICk7CgovKioKICogQGNsYXNzICQudWkuaXZpZXdlci5JbWFnZU9iamVjdCBDbGFzcyByZXByZXNlbnRzIGltYWdlIGFuZCBwcm92aWRlcyBwdWJsaWMgYXBpIHdpdGhvdXQKICogICAgIGV4dGVuZGluZyBpbWFnZSBwcm90b3R5cGUuCiAqIEBjb25zdHJ1Y3RvcgogKiBAcGFyYW0ge2Jvb2xlYW59IGRvX2FuaW0gRG8gd2Ugd2FudCB0byBhbmltYXRlIGltYWdlIG9uIGRpbWVuc2lvbiBjaGFuZ2VzPwogKi8KJC51aS5pdmlld2VyLkltYWdlT2JqZWN0ID0gZnVuY3Rpb24oZG9fYW5pbSkgewogICAgdGhpcy5faW1nID0gJCgiPGltZz4iKQogICAgICAgICAgICAvL3RoaXMgaXMgbmVlZGVkLCBiZWNhdXNlIGNocm9taXVtIHNldHMgdGhlbSBhdXRvIG90aGVyd2lzZQogICAgICAgICAgICAuY3NzKHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHRvcCA6IjBweCIsIGxlZnQ6ICIwcHgifSk7CgogICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CiAgICB0aGlzLl9zd2FwRGltZW5zaW9ucyA9IGZhbHNlOwogICAgdGhpcy5fZG9fYW5pbSA9IGRvX2FuaW0gfHwgZmFsc2U7CiAgICB0aGlzLngoMCwgdHJ1ZSk7CiAgICB0aGlzLnkoMCwgdHJ1ZSk7CiAgICB0aGlzLmFuZ2xlKDApOwp9OwoKCi8qKiBAbGVuZHMgJC51aS5pdmlld2VyLkltYWdlT2JqZWN0LnByb3RvdHlwZSAqLwooZnVuY3Rpb24oKSB7CiAgICAvKioKICAgICAqIFJlc3RvcmUgaW5pdGlhbCBvYmplY3Qgc3RhdGUuCiAgICAgKgogICAgICogQHBhcmFtIHtudW1iZXJ9IHcgSW1hZ2Ugd2lkdGguCiAgICAgKiBAcGFyYW0ge251bWJlcn0gaCBJbWFnZSBoZWlnaHQuCiAgICAgKi8KICAgIHRoaXMuX3Jlc2V0ID0gZnVuY3Rpb24odywgaCkgewogICAgICAgIHRoaXMuX2FuZ2xlID0gMDsKICAgICAgICB0aGlzLl9zd2FwRGltZW5zaW9ucyA9IGZhbHNlOwogICAgICAgIHRoaXMueCgwKTsKICAgICAgICB0aGlzLnkoMCk7CgogICAgICAgIHRoaXMub3JpZ193aWR0aCh3KTsKICAgICAgICB0aGlzLm9yaWdfaGVpZ2h0KGgpOwogICAgICAgIHRoaXMuZGlzcGxheV93aWR0aCh3KTsKICAgICAgICB0aGlzLmRpc3BsYXlfaGVpZ2h0KGgpOwogICAgfTsKCiAgICAvKioKICAgICAqIENoZWNrIGlmIGltYWdlIGlzIGxvYWRlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICB0aGlzLmxvYWRlZCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fbG9hZGVkOyB9OwoKICAgIC8qKgogICAgICogTG9hZCBpbWFnZS4KICAgICAqCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3JjIEltYWdlIHVybC4KICAgICAqIEBwYXJhbSB7RnVuY3Rpb249fSBsb2FkZWQgRnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb24gaW1hZ2UgbG9hZC4KICAgICAqLwogICAgdGhpcy5sb2FkID0gZnVuY3Rpb24oc3JjLCBsb2FkZWQsIGVycm9yKSB7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICBsb2FkZWQgPSBsb2FkZWQgfHwgalF1ZXJ5Lm5vb3A7CiAgICAgICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CgogICAgICAgIC8vSWYgd2UgYXNzaWduIG5ldyBpbWFnZSB1cmwgdG8gdGhlIHRoaXMuX2ltZyBJRTkgZmlyZXMgb25sb2FkIGV2ZW50IGFuZCBpbWFnZSB3aWR0aCBhbmQKICAgICAgICAvL2hlaWdodCBhcmUgc2V0IHRvIHplcm8uIFNvLCB3ZSBjcmVhdGUgYW5vdGhlciBpbWFnZSBvYmplY3QgYW5kIGxvYWQgaW1hZ2UgdGhyb3VnaCBpdC4KICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7CiAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWxmLl9sb2FkZWQgPSB0cnVlOwogICAgICAgICAgICBzZWxmLl9yZXNldCh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7CgogICAgICAgICAgICBzZWxmLl9pbWcKICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCJ3aWR0aCIpCiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cigiaGVpZ2h0IikKICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCJzdHlsZSIpCiAgICAgICAgICAgICAgICAvL21heC13aWR0aCBpcyByZXNldCwgYmVjYXVzZSBwbHVnaW4gYnJlYWtzIGluIHRoZSB0d2l0dGVyIGJvb3RzdHJhcCBvdGhlcndpc2UKICAgICAgICAgICAgICAgIC5jc3MoeyBwb3NpdGlvbjogImFic29sdXRlIiwgdG9wIDoiMHB4IiwgbGVmdDogIjBweCIsIG1heFdpZHRoOiAibm9uZSJ9KQoKICAgICAgICAgICAgc2VsZi5faW1nWzBdLnNyYyA9IHNyYzsKICAgICAgICAgICAgbG9hZGVkKCk7CiAgICAgICAgfTsKCiAgICAgICAgaW1nLm9uZXJyb3IgPSBlcnJvcjsKCiAgICAgICAgLy93ZSBuZWVkIHRoaXMgYmVjYXVzZSBzb21ldGltZXMgaW50ZXJuZXQgZXhwbG9yZXIgOCBmaXJlcyBvbmxvYWQgZXZlbnQKICAgICAgICAvL3JpZ2h0IGFmdGVyIGFzc2lnbm1lbnQgKHN5bmNocm9ub3VzbHkpCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaW1nLnNyYyA9IHNyYzsKICAgICAgICB9LCAwKTsKCiAgICAgICAgdGhpcy5hbmdsZSgwKTsKICAgIH07CgogICAgdGhpcy5fZGltZW5zaW9uID0gZnVuY3Rpb24ocHJlZml4LCBuYW1lKSB7CiAgICAgICAgdmFyIGhvcml6ID0gJ18nICsgcHJlZml4ICsgJ18nICsgbmFtZSwKICAgICAgICAgICAgdmVydCA9ICdfJyArIHByZWZpeCArICdfJyArIChuYW1lID09PSAnaGVpZ2h0JyA/ICd3aWR0aCcgOiAnaGVpZ2h0Jyk7CiAgICAgICAgcmV0dXJuIHNldHRlcihmdW5jdGlvbih2YWwpIHsKICAgICAgICAgICAgICAgIHRoaXNbdGhpcy5fc3dhcERpbWVuc2lvbnMgPyBob3JpejogdmVydF0gPSB2YWw7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdGhpcy5fc3dhcERpbWVuc2lvbnMgPyBob3JpejogdmVydF07CiAgICAgICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEdldHRlcnMgYW5kIHNldHRlciBmb3IgY29tbW9uIGltYWdlIGRpbWVuc2lvbnMuCiAgICAgKiAgICBkaXNwbGF5XyBtZWFucyByZWFsIGltYWdlIHRhZyBkaW1lbnNpb25zCiAgICAgKiAgICBvcmlnXyBtZWFucyBwaHlzaWNhbCBpbWFnZSBkaW1lbnNpb25zLgogICAgICogIE5vdGUsIHRoYXQgZGltZW5zaW9ucyBhcmUgc3dhcHBlZCBpZiBpbWFnZSBpcyByb3RhdGVkLiBJdCBuZWNlc3NhcnksCiAgICAgKiAgYmVjYXVzZSBhcyBsaXR0bGUgYXMgcG9zc2libGUgY29kZSBzaG91bGQga25vdyBhYm91dCByb3RhdGlvbi4KICAgICAqLwogICAgdGhpcy5kaXNwbGF5X3dpZHRoID0gdGhpcy5fZGltZW5zaW9uKCdkaXNwbGF5JywgJ3dpZHRoJyksCiAgICB0aGlzLmRpc3BsYXlfaGVpZ2h0ID0gdGhpcy5fZGltZW5zaW9uKCdkaXNwbGF5JywgJ2hlaWdodCcpLAogICAgdGhpcy5kaXNwbGF5X2RpZmYgPSBmdW5jdGlvbigpIHsgcmV0dXJuIE1hdGguZmxvb3IoIHRoaXMuZGlzcGxheV93aWR0aCgpIC0gdGhpcy5kaXNwbGF5X2hlaWdodCgpICkgfTsKICAgIHRoaXMub3JpZ193aWR0aCA9IHRoaXMuX2RpbWVuc2lvbignb3JpZycsICd3aWR0aCcpLAogICAgdGhpcy5vcmlnX2hlaWdodCA9IHRoaXMuX2RpbWVuc2lvbignb3JpZycsICdoZWlnaHQnKSwKCiAgICAvKioKICAgICAqIFNldHRlciBmb3IgIFggY29vcmRpbmF0ZS4gSWYgaW1hZ2UgaXMgcm90YXRlZCB3ZSBuZWVkIHRvIGFkZGl0aW9uYWx5IHNoaWZ0IGFuCiAgICAgKiAgICAgaW1hZ2UgdG8gbWFwIGltYWdlIGNvb3JkaW5hdGUgdG8gdGhlIHZpc3VhbCBwb3NpdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsIENvb3JkaW5hdGUgdmFsdWUuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNraXBDc3MgSWYgdHJ1ZSwgd2Ugb25seSBzZXQgdGhlIHZhbHVlIGFuZCBkbyBub3QgdG91Y2ggdGhlIGRvbS4KICAgICAqLwogICAgdGhpcy54ID0gc2V0dGVyKGZ1bmN0aW9uKHZhbCwgc2tpcENzcykgewogICAgICAgICAgICB0aGlzLl94ID0gdmFsOwogICAgICAgICAgICBpZiAoIXNraXBDc3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaEFuaW1hdGlvbigpOwogICAgICAgICAgICAgICAgdGhpcy5faW1nLmNzcygibGVmdCIsdGhpcy5feCArICh0aGlzLl9zd2FwRGltZW5zaW9ucyA/IHRoaXMuZGlzcGxheV9kaWZmKCkgLyAyIDogMCkgKyAicHgiKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl94OwogICAgICAgIH0pOwoKICAgIC8qKgogICAgICogU2V0dGVyIGZvciAgWSBjb29yZGluYXRlLiBJZiBpbWFnZSBpcyByb3RhdGVkIHdlIG5lZWQgdG8gYWRkaXRpb25hbHkgc2hpZnQgYW4KICAgICAqICAgICBpbWFnZSB0byBtYXAgaW1hZ2UgY29vcmRpbmF0ZSB0byB0aGUgdmlzdWFsIHBvc2l0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWwgQ29vcmRpbmF0ZSB2YWx1ZS4KICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2tpcENzcyBJZiB0cnVlLCB3ZSBvbmx5IHNldCB0aGUgdmFsdWUgYW5kIGRvIG5vdCB0b3VjaCB0aGUgZG9tLgogICAgICovCiAgICB0aGlzLnkgPSBzZXR0ZXIoZnVuY3Rpb24odmFsLCBza2lwQ3NzKSB7CiAgICAgICAgICAgIHRoaXMuX3kgPSB2YWw7CiAgICAgICAgICAgIGlmICghc2tpcENzcykgewogICAgICAgICAgICAgICAgdGhpcy5fZmluaXNoQW5pbWF0aW9uKCk7CiAgICAgICAgICAgICAgICB0aGlzLl9pbWcuY3NzKCJ0b3AiLHRoaXMuX3kgLSAodGhpcy5fc3dhcERpbWVuc2lvbnMgPyB0aGlzLmRpc3BsYXlfZGlmZigpIC8gMiA6IDApICsgInB4Iik7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl95OwogICAgICAgfSk7CgogICAgLyoqCiAgICAgKiBQZXJmb3JtIGltYWdlIHJvdGF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZWcgQWJzb2x1dGUgaW1hZ2UgYW5nbGUuIFRoZSBtZXRob2Qgd2lsbCB3b3JrIHdpdGggdmFsdWVzIDAsIDkwLCAxODAsIDI3MCBkZWdyZWVzLgogICAgICovCiAgICB0aGlzLmFuZ2xlID0gc2V0dGVyKGZ1bmN0aW9uKGRlZykgewogICAgICAgICAgICB2YXIgcHJldlN3YXAgPSB0aGlzLl9zd2FwRGltZW5zaW9uczsKCiAgICAgICAgICAgIHRoaXMuX2FuZ2xlID0gZGVnOwogICAgICAgICAgICB0aGlzLl9zd2FwRGltZW5zaW9ucyA9IGRlZyAlIDE4MCAhPT0gMDsKCiAgICAgICAgICAgIGlmIChwcmV2U3dhcCAhPT0gdGhpcy5fc3dhcERpbWVuc2lvbnMpIHsKICAgICAgICAgICAgICAgIHZhciB2ZXJ0aWNhbE1vZCA9IHRoaXMuX3N3YXBEaW1lbnNpb25zID8gLTEgOiAxOwogICAgICAgICAgICAgICAgdGhpcy54KHRoaXMueCgpIC0gdmVydGljYWxNb2QgKiB0aGlzLmRpc3BsYXlfZGlmZigpIC8gMiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB0aGlzLnkodGhpcy55KCkgKyB2ZXJ0aWNhbE1vZCAqIHRoaXMuZGlzcGxheV9kaWZmKCkgLyAyLCB0cnVlKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHZhciBjc3NWYWwgPSAncm90YXRlKCcgKyBkZWcgKyAnZGVnKScsCiAgICAgICAgICAgICAgICBpbWcgPSB0aGlzLl9pbWc7CgogICAgICAgICAgICBqUXVlcnkuZWFjaChbJycsICctd2Via2l0LScsICctbW96LScsICctby0nLCAnLW1zLSddLCBmdW5jdGlvbihpLCBwcmVmaXgpIHsKICAgICAgICAgICAgICAgIGltZy5jc3MocHJlZml4ICsgJ3RyYW5zZm9ybScsIGNzc1ZhbCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKHVzZUllVHJhbnNmb3JtcykgewogICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goWyctbXMtJywgJyddLCBmdW5jdGlvbihpLCBwcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICBpbWcuY3NzKHByZWZpeCArICdmaWx0ZXInLCBpZVRyYW5zZm9ybXNbZGVnXS5maWx0ZXIpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgaW1nLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogaWVUcmFuc2Zvcm1zW2RlZ10ubWFyZ2luTGVmdCAqIHRoaXMuZGlzcGxheV9kaWZmKCkgLyAyLAogICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogaWVUcmFuc2Zvcm1zW2RlZ10ubWFyZ2luVG9wICogdGhpcy5kaXNwbGF5X2RpZmYoKSAvIDIKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fYW5nbGU7IH0pOwoKICAgIC8qKgogICAgICogTWFwIHBvaW50IGluIHRoZSBjb250YWluZXIgY29vcmRpbmF0ZXMgdG8gdGhlIHBvaW50IGluIGltYWdlIGNvb3JkaW5hdGVzLgogICAgICogICAgIFlvdSB3aWxsIGdldCBjb29yZGluYXRlcyBvZiBwb2ludCBvbiBpbWFnZSB3aXRoIHJlc3BlY3QgdG8gcm90YXRpb24sCiAgICAgKiAgICAgYnV0IHdpbGwgYmUgc2V0IGFzIGlmIGltYWdlIHdhcyBub3Qgcm90YXRlZC4KICAgICAqICAgICBTbywgaWYgaW1hZ2Ugd2FzIHJvdGF0ZWQgOTAgZGVncmVlcywgaXQncyAoMCwwKSBwb2ludCB3aWxsIGJlIG9uIHRoZQogICAgICogICAgIHRvcCByaWdodCBjb3JuZXIuCiAgICAgKgogICAgICogQHBhcmFtIHt7eDogbnVtYmVyLCB5OiBudW1iZXJ9fSBwb2ludCBQb2ludCBpbiBjb250YWluZXIgY29vcmRpbmF0ZXMuCiAgICAgKiBAcmV0dXJuICB7e3g6IG51bWJlciwgeTogbnVtYmVyfX0KICAgICAqLwogICAgdGhpcy50b09yaWdpbmFsQ29vcmRzID0gZnVuY3Rpb24ocG9pbnQpIHsKICAgICAgICBzd2l0Y2ggKHRoaXMuYW5nbGUoKSkgewogICAgICAgICAgICBjYXNlIDA6IHJldHVybiB7IHg6IHBvaW50LngsIHk6IHBvaW50LnkgfQogICAgICAgICAgICBjYXNlIDkwOiByZXR1cm4geyB4OiBwb2ludC55LCB5OiB0aGlzLmRpc3BsYXlfd2lkdGgoKSAtIHBvaW50LnggfQogICAgICAgICAgICBjYXNlIDE4MDogcmV0dXJuIHsgeDogdGhpcy5kaXNwbGF5X3dpZHRoKCkgLSBwb2ludC54LCB5OiB0aGlzLmRpc3BsYXlfaGVpZ2h0KCkgLSBwb2ludC55IH0KICAgICAgICAgICAgY2FzZSAyNzA6IHJldHVybiB7IHg6IHRoaXMuZGlzcGxheV9oZWlnaHQoKSAtIHBvaW50LnksIHk6IHBvaW50LnggfQogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBNYXAgcG9pbnQgaW4gdGhlIGltYWdlIGNvb3JkaW5hdGVzIHRvIHRoZSBwb2ludCBpbiBjb250YWluZXIgY29vcmRpbmF0ZXMuCiAgICAgKiAgICAgWW91IHdpbGwgZ2V0IGNvb3JkaW5hdGVzIG9mIHBvaW50IG9uIGNvbnRhaW5lciB3aXRoIHJlc3BlY3QgdG8gcm90YXRpb24uCiAgICAgKiAgICAgTm90ZSwgaWYgaW1hZ2Ugd2FzIHJvdGF0ZWQgOTAgZGVncmVlcywgaXQncyAoMCwwKSBwb2ludCB3aWxsIGJlIG9uIHRoZQogICAgICogICAgIHRvcCByaWdodCBjb3JuZXIuCiAgICAgKgogICAgICogQHBhcmFtIHt7eDogbnVtYmVyLCB5OiBudW1iZXJ9fSBwb2ludCBQb2ludCBpbiBjb250YWluZXIgY29vcmRpbmF0ZXMuCiAgICAgKiBAcmV0dXJuICB7e3g6IG51bWJlciwgeTogbnVtYmVyfX0KICAgICAqLwogICAgdGhpcy50b1JlYWxDb29yZHMgPSBmdW5jdGlvbihwb2ludCkgewogICAgICAgIHN3aXRjaCAodGhpcy5hbmdsZSgpKSB7CiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIHsgeDogdGhpcy54KCkgKyBwb2ludC54LCB5OiB0aGlzLnkoKSArIHBvaW50LnkgfQogICAgICAgICAgICBjYXNlIDkwOiByZXR1cm4geyB4OiB0aGlzLngoKSArIHRoaXMuZGlzcGxheV93aWR0aCgpIC0gcG9pbnQueSwgeTogdGhpcy55KCkgKyBwb2ludC54fQogICAgICAgICAgICBjYXNlIDE4MDogcmV0dXJuIHsgeDogdGhpcy54KCkgKyB0aGlzLmRpc3BsYXlfd2lkdGgoKSAtIHBvaW50LngsIHk6IHRoaXMueSgpICsgdGhpcy5kaXNwbGF5X2hlaWdodCgpIC0gcG9pbnQueX0KICAgICAgICAgICAgY2FzZSAyNzA6IHJldHVybiB7IHg6IHRoaXMueCgpICsgcG9pbnQueSwgeTogdGhpcy55KCkgKyB0aGlzLmRpc3BsYXlfaGVpZ2h0KCkgLSBwb2ludC54fQogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHtqUXVlcnl9IFJldHVybiBpbWFnZSBub2RlLiB0aGlzIGlzIG5lZWRlZCB0byBhZGQgZXZlbnQgaGFuZGxlcnMuCiAgICAgKi8KICAgIHRoaXMub2JqZWN0ID0gc2V0dGVyKGpRdWVyeS5ub29wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuX2ltZzsgfSk7CgogICAgLyoqCiAgICAgKiBDaGFuZ2UgaW1hZ2UgcHJvcGVydGllcy4KICAgICAqCiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGlzcF93IERpc3BsYXkgd2lkdGg7CiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGlzcF9oIERpc3BsYXkgaGVpZ2h0OwogICAgICogQHBhcmFtIHtudW1iZXJ9IHgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNraXBfYW5pbWF0aW9uIElmIHRydWUsIHRoZSBhbmltYXRpb24gd2lsbCBiZSBza2lwZWQgZGVzcGl0ZSB0aGUKICAgICAqICAgICB2YWx1ZSBzZXQgaW4gY29uc3RydWN0b3IuCiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9uPX0gY29tcGxldGUgQ2FsbCBiYWNrIHdpbGwgYmUgZmlyZWQgd2hlbiB6b29tIHdpbGwgYmUgY29tcGxldGUuCiAgICAgKi8KICAgIHRoaXMuc2V0SW1hZ2VQcm9wcyA9IGZ1bmN0aW9uKGRpc3BfdywgZGlzcF9oLCB4LCB5LCBza2lwX2FuaW1hdGlvbiwgY29tcGxldGUpIHsKICAgICAgICBjb21wbGV0ZSA9IGNvbXBsZXRlIHx8IGpRdWVyeS5ub29wOwoKICAgICAgICB0aGlzLmRpc3BsYXlfd2lkdGgoZGlzcF93KTsKICAgICAgICB0aGlzLmRpc3BsYXlfaGVpZ2h0KGRpc3BfaCk7CiAgICAgICAgdGhpcy54KHgsIHRydWUpOwogICAgICAgIHRoaXMueSh5LCB0cnVlKTsKCiAgICAgICAgdmFyIHcgPSB0aGlzLl9zd2FwRGltZW5zaW9ucyA/IGRpc3BfaCA6IGRpc3BfdzsKICAgICAgICB2YXIgaCA9IHRoaXMuX3N3YXBEaW1lbnNpb25zID8gZGlzcF93IDogZGlzcF9oOwoKICAgICAgICB2YXIgcGFyYW1zID0gewogICAgICAgICAgICB3aWR0aDogdywKICAgICAgICAgICAgaGVpZ2h0OiBoLAogICAgICAgICAgICB0b3A6IHkgLSAodGhpcy5fc3dhcERpbWVuc2lvbnMgPyB0aGlzLmRpc3BsYXlfZGlmZigpIC8gMiA6IDApICsgInB4IiwKICAgICAgICAgICAgbGVmdDogeCArICh0aGlzLl9zd2FwRGltZW5zaW9ucyA/IHRoaXMuZGlzcGxheV9kaWZmKCkgLyAyIDogMCkgKyAicHgiCiAgICAgICAgfTsKCiAgICAgICAgaWYgKHVzZUllVHJhbnNmb3JtcykgewogICAgICAgICAgICBqUXVlcnkuZXh0ZW5kKHBhcmFtcywgewogICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogaWVUcmFuc2Zvcm1zW3RoaXMuYW5nbGUoKV0ubWFyZ2luTGVmdCAqIHRoaXMuZGlzcGxheV9kaWZmKCkgLyAyLAogICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBpZVRyYW5zZm9ybXNbdGhpcy5hbmdsZSgpXS5tYXJnaW5Ub3AgKiB0aGlzLmRpc3BsYXlfZGlmZigpIC8gMgogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIHZhciBzd2FwRGltcyA9IHRoaXMuX3N3YXBEaW1lbnNpb25zLAogICAgICAgICAgICBpbWcgPSB0aGlzLl9pbWc7CgogICAgICAgIC8vaGVyZSB3ZSBjb21lOiBhbm90aGVyIElFIG9kZG5lc3MuIElmIGltYWdlIGlzIHJvdGF0ZWQgOTAgZGVncmVlcyB3aXRoIGEgZmlsdGVyLCB0aGFuCiAgICAgICAgLy93aWR0aCBhbmQgaGVpZ2h0IGdldHRlcnMgcmV0dXJuIHJlYWwgd2lkdGggYW5kIGhlaWdodCBvZiByb3RhdGVkIGltYWdlLiBUaGUgYmFkIG5ld3MKICAgICAgICAvL2lzIHRoYXQgdG8gc2V0IGhlaWdodCB5b3UgbmVlZCB0byBzZXQgYSB3aWR0aCBhbmQgdmljZSB2ZXJzYS4gRnVjayBJRS4KICAgICAgICAvL1NvLCBpbiB0aGlzIGNhc2Ugd2UgaGF2ZSB0byBhbmltYXRlIHdpZHRoIGFuZCBoZWlnaHQgbWFudWFsbHkuCiAgICAgICAgaWYodXNlSWVUcmFuc2Zvcm1zICYmIHN3YXBEaW1zKSB7CiAgICAgICAgICAgIHZhciBpZWggPSB0aGlzLl9pbWcud2lkdGgoKSwKICAgICAgICAgICAgICAgIGlldyA9IHRoaXMuX2ltZy5oZWlnaHQoKSwKICAgICAgICAgICAgICAgIGllZGggPSBwYXJhbXMuaGVpZ2h0IC0gaWVoOwogICAgICAgICAgICAgICAgaWVkdyA9IHBhcmFtcy53aWR0aCAtIGlldzsKCiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMud2lkdGg7CiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuaGVpZ2h0OwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX2RvX2FuaW0gJiYgIXNraXBfYW5pbWF0aW9uKSB7CiAgICAgICAgICAgIHRoaXMuX2ltZy5zdG9wKHRydWUpCiAgICAgICAgICAgICAgICAuYW5pbWF0ZShwYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwLAogICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZSwKICAgICAgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbihub3csIGZ4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVzZUllVHJhbnNmb3JtcyAmJiBzd2FwRGltcyAmJiAoZngucHJvcCA9PT0gJ3RvcCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IChub3cgLSBmeC5zdGFydCkgLyAoZnguZW5kIC0gZnguc3RhcnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5oZWlnaHQoaWVoICsgaWVkaCAqIHBlcmNlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLndpZHRoKGlldyArIGllZHcgKiBwZXJjZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5jc3MoJ3RvcCcsIG5vdyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLl9pbWcuY3NzKHBhcmFtcyk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoY29tcGxldGUsIDApOyAvL2JvdGggaWYgYnJhbmNoZXMgc2hvdWxkIGJlaGF2ZSBlcXVhbGx5LgogICAgICAgIH0KICAgIH07CgogICAgLy9pZiB3ZSBzZXQgaW1hZ2UgY29vcmRpbmF0ZXMgd2UgbmVlZCB0byBiZSBzdXJlIHRoYXQgbm8gYW5pbWF0aW9uIGlzIGFjdGl2ZSBhdG0KICAgIHRoaXMuX2ZpbmlzaEFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9pbWcuc3RvcCh0cnVlLCB0cnVlKTsKICAgIH0KCn0pLmFwcGx5KCQudWkuaXZpZXdlci5JbWFnZU9iamVjdC5wcm90b3R5cGUpOwoKCgp2YXIgdXRpbCA9IHsKICAgIHNjYWxlVmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCB0b1pvb20pCiAgICB7CiAgICAgICAgcmV0dXJuIHZhbHVlICogdG9ab29tIC8gMTAwOwogICAgfSwKCiAgICBkZXNjYWxlVmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBmcm9tWm9vbSkKICAgIHsKICAgICAgICByZXR1cm4gdmFsdWUgKiAxMDAgLyBmcm9tWm9vbTsKICAgIH0KfTsKCiB9ICkoIGpRdWVyeSwgdW5kZWZpbmVkICk7Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/js/jquery.iviewer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogaXZpZXdlciBXaWRnZXQgZm9yIGpRdWVyeSBVSQogKiBodHRwczovL2dpdGh1Yi5jb20vY2FuM3AvaXZpZXdlcgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEyIERtaXRyeSBQZXRyb3YKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMuCiAqICAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqICAtIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbAogKgogKiBBdXRob3I6IERtaXRyeSBQZXRyb3YKICogVmVyc2lvbjogMC43LjcKICovCihmdW5jdGlvbigkLHVuZGVmaW5lZCl7dmFyIG1vdXNlRXZlbnRzPXt0b3VjaHN0YXJ0OiJtb3VzZWRvd24iLHRvdWNobW92ZToibW91c2Vtb3ZlIix0b3VjaGVuZDoibW91c2V1cCJ9LGdlc3R1cmVzU3VwcG9ydD0ib25nZXN0dXJlc3RhcnQiaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZnVuY3Rpb24gbWFrZU1vdXNlRXZlbnQoZXZlbnQpe3ZhciB0b3VjaD1ldmVudC5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO3JldHVybiAkLmV4dGVuZChldmVudCx7dHlwZTptb3VzZUV2ZW50c1tldmVudC50eXBlXSx3aGljaDoxLHBhZ2VYOnRvdWNoLnBhZ2VYLHBhZ2VZOnRvdWNoLnBhZ2VZLHNjcmVlblg6dG91Y2guc2NyZWVuWCxzY3JlZW5ZOnRvdWNoLnNjcmVlblksY2xpZW50WDp0b3VjaC5jbGllbnRYLGNsaWVudFk6dG91Y2guY2xpZW50WSxpc1RvdWNoRXZlbnQ6dHJ1ZX0pfXZhciBtb3VzZVByb3RvPSQudWkubW91c2UucHJvdG90eXBlLF9tb3VzZUluaXQ9JC51aS5tb3VzZS5wcm90b3R5cGUuX21vdXNlSW5pdDsKbW91c2VQcm90by5fbW91c2VJbml0PWZ1bmN0aW9uKCl7dmFyIHNlbGY9dGhpcztzZWxmLl90b3VjaEFjdGl2ZT1mYWxzZTt0aGlzLmVsZW1lbnQuYmluZCgidG91Y2hzdGFydC4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihldmVudCl7aWYoZ2VzdHVyZXNTdXBwb3J0JiZldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMubGVuZ3RoPjEpcmV0dXJuO3NlbGYuX3RvdWNoQWN0aXZlPXRydWU7cmV0dXJuIHNlbGYuX21vdXNlRG93bihtYWtlTW91c2VFdmVudChldmVudCkpfSk7dmFyIHNlbGY9dGhpczt0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihldmVudCl7aWYoZ2VzdHVyZXNTdXBwb3J0JiZldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMmJmV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGg+MSlyZXR1cm47aWYoc2VsZi5fdG91Y2hBY3RpdmUpcmV0dXJuIHNlbGYuX21vdXNlTW92ZShtYWtlTW91c2VFdmVudChldmVudCkpfTt0aGlzLl9tb3VzZVVwRGVsZWdhdGU9CmZ1bmN0aW9uKGV2ZW50KXtpZihzZWxmLl90b3VjaEFjdGl2ZSl7c2VsZi5fdG91Y2hBY3RpdmU9ZmFsc2U7cmV0dXJuIHNlbGYuX21vdXNlVXAobWFrZU1vdXNlRXZlbnQoZXZlbnQpKX19OyQoZG9jdW1lbnQpLmJpbmQoInRvdWNobW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkuYmluZCgidG91Y2hlbmQuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKTtfbW91c2VJbml0LmFwcGx5KHRoaXMpfTt2YXIgc2V0dGVyPWZ1bmN0aW9uKHNldHRlcixnZXR0ZXIpe3JldHVybiBmdW5jdGlvbih2YWwpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiBnZXR0ZXIuYXBwbHkodGhpcyk7ZWxzZSBzZXR0ZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07dmFyIGllVHJhbnNmb3Jtcz17IjAiOnttYXJnaW5MZWZ0OjAsbWFyZ2luVG9wOjAsZmlsdGVyOidwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4KE0xMT0xLCBNMTI9MCwgTTIxPTAsIE0yMj0xLCBTaXppbmdNZXRob2Q9ImF1dG8gZXhwYW5kIiknfSwKOTA6e21hcmdpbkxlZnQ6LTEsbWFyZ2luVG9wOjEsZmlsdGVyOidwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4KE0xMT0wLCBNMTI9LTEsIE0yMT0xLCBNMjI9MCwgU2l6aW5nTWV0aG9kPSJhdXRvIGV4cGFuZCIpJ30sMTgwOnttYXJnaW5MZWZ0OjAsbWFyZ2luVG9wOjAsZmlsdGVyOidwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuTWF0cml4KE0xMT0tMSwgTTEyPTAsIE0yMT0wLCBNMjI9LTEsIFNpemluZ01ldGhvZD0iYXV0byBleHBhbmQiKSd9LDI3MDp7bWFyZ2luTGVmdDotMSxtYXJnaW5Ub3A6MSxmaWx0ZXI6J3Byb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5NYXRyaXgoTTExPTAsIE0xMj0xLCBNMjE9LTEsIE0yMj0wLCBTaXppbmdNZXRob2Q9ImF1dG8gZXhwYW5kIiknfX0sdXNlSWVUcmFuc2Zvcm1zPWZ1bmN0aW9uKCl7dmFyIGVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2VsLnN0eWxlLmNzc1RleHQ9WyItbXMtIiwKIiIsIiJdLmpvaW4oImZpbHRlcjpibHVyKDJweCk7ICIpO3JldHVybiEhZWwuc3R5bGUuY3NzVGV4dCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPDl9KCk7JC53aWRnZXQoInVpLml2aWV3ZXIiLCQudWkubW91c2Use3dpZGdldEV2ZW50UHJlZml4OiJpdmlld2VyIixvcHRpb25zOnt6b29tOiJmaXQiLHpvb21fYmFzZToxMDAsem9vbV9tYXg6ODAwLHpvb21fbWluOjI1LHpvb21fZGVsdGE6MS40LHpvb21fYW5pbWF0aW9uOnRydWUsdWlfZGlzYWJsZWQ6ZmFsc2UsbW91c2V3aGVlbDp0cnVlLHVwZGF0ZV9vbl9yZXNpemU6dHJ1ZSxvblpvb206alF1ZXJ5Lm5vb3Asb25BZnRlclpvb206alF1ZXJ5Lm5vb3Asb25TdGFydERyYWc6alF1ZXJ5Lm5vb3Asb25EcmFnOmpRdWVyeS5ub29wLG9uU3RvcERyYWc6alF1ZXJ5Lm5vb3Asb25Nb3VzZU1vdmU6alF1ZXJ5Lm5vb3Asb25DbGljazpqUXVlcnkubm9vcCxvblN0YXJ0TG9hZDpudWxsLG9uRmluaXNoTG9hZDpudWxsLG9uRXJyb3JMb2FkOm51bGx9LApfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIG1lPXRoaXM7dGhpcy5keD0wO3RoaXMuZHk9MDt0aGlzLmltZ19vYmplY3Q9e307dGhpcy56b29tX29iamVjdD17fTt0aGlzLl9hbmdsZT0wO3RoaXMuY3VycmVudF96b29tPXRoaXMub3B0aW9ucy56b29tO2lmKHRoaXMub3B0aW9ucy5zcmM9PT1udWxsKXJldHVybjt0aGlzLmNvbnRhaW5lcj10aGlzLmVsZW1lbnQ7dGhpcy5fdXBkYXRlQ29udGFpbmVySW5mbygpO3RoaXMuY29udGFpbmVyLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKTtpZih0aGlzLm9wdGlvbnMudXBkYXRlX29uX3Jlc2l6ZT09dHJ1ZSkkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7bWUudXBkYXRlKCl9KTt0aGlzLmltZ19vYmplY3Q9bmV3ICQudWkuaXZpZXdlci5JbWFnZU9iamVjdCh0aGlzLm9wdGlvbnMuem9vbV9hbmltYXRpb24pO2lmKHRoaXMub3B0aW9ucy5tb3VzZXdoZWVsKXt0aGlzLmNvbnRhaW5lci5iaW5kKCJtb3VzZXdoZWVsLml2aWV3ZXIiLGZ1bmN0aW9uKGV2LApkZWx0YSl7dmFyIHpvb209ZGVsdGE+MD8xOi0xLGNvbnRhaW5lcl9vZmZzZXQ9bWUuY29udGFpbmVyLm9mZnNldCgpLG1vdXNlX3Bvcz17eDpldi5wYWdlWC1jb250YWluZXJfb2Zmc2V0LmxlZnQseTpldi5wYWdlWS1jb250YWluZXJfb2Zmc2V0LnRvcH07bWUuem9vbV9ieSh6b29tLG1vdXNlX3Bvcyk7cmV0dXJuIGZhbHNlfSk7aWYoZ2VzdHVyZXNTdXBwb3J0KXt2YXIgZ2VzdHVyZVRocm90dGxlPStuZXcgRGF0ZTt2YXIgb3JpZ2luYWxTY2FsZSxvcmlnaW5hbENlbnRlcjt0aGlzLmltZ19vYmplY3Qub2JqZWN0KCkuYmluZCgidG91Y2hzdGFydCIsZnVuY3Rpb24oZXYpe29yaWdpbmFsU2NhbGU9bWUuY3VycmVudF96b29tO3ZhciB0b3VjaGVzPWV2Lm9yaWdpbmFsRXZlbnQudG91Y2hlcyxjb250YWluZXJfb2Zmc2V0O2lmKHRvdWNoZXMubGVuZ3RoPT0yKXtjb250YWluZXJfb2Zmc2V0PW1lLmNvbnRhaW5lci5vZmZzZXQoKTtvcmlnaW5hbENlbnRlcj17eDoodG91Y2hlc1swXS5wYWdlWCsKdG91Y2hlc1sxXS5wYWdlWCkvMi1jb250YWluZXJfb2Zmc2V0LmxlZnQseToodG91Y2hlc1swXS5wYWdlWSt0b3VjaGVzWzFdLnBhZ2VZKS8yLWNvbnRhaW5lcl9vZmZzZXQudG9wfX1lbHNlIG9yaWdpbmFsQ2VudGVyPW51bGx9KS5iaW5kKCJnZXN0dXJlY2hhbmdlIixmdW5jdGlvbihldil7dmFyIGQ9K25ldyBEYXRlO2lmKGQtZ2VzdHVyZVRocm90dGxlPDUwKXJldHVybjtnZXN0dXJlVGhyb3R0bGU9ZDt2YXIgem9vbT1vcmlnaW5hbFNjYWxlKmV2Lm9yaWdpbmFsRXZlbnQuc2NhbGU7bWUuc2V0X3pvb20oem9vbSxvcmlnaW5hbENlbnRlcik7ZXYucHJldmVudERlZmF1bHQoKX0pLmJpbmQoImdlc3R1cmVlbmQiLGZ1bmN0aW9uKGV2KXtvcmlnaW5hbENlbnRlcj1udWxsfSl9fXRoaXMuaW1nX29iamVjdC5vYmplY3QoKS5jbGljayhmdW5jdGlvbihlKXtyZXR1cm4gbWUuX2NsaWNrKGUpfSkucHJlcGVuZFRvKHRoaXMuY29udGFpbmVyKTt0aGlzLmNvbnRhaW5lci5iaW5kKCJtb3VzZW1vdmUiLApmdW5jdGlvbihldil7bWUuX2hhbmRsZU1vdXNlTW92ZShldil9KTt0aGlzLmxvYWRJbWFnZSh0aGlzLm9wdGlvbnMuc3JjKTtpZighdGhpcy5vcHRpb25zLnVpX2Rpc2FibGVkKXRoaXMuY3JlYXRldWkoKTt0aGlzLl9tb3VzZUluaXQoKX0sZGVzdHJveTpmdW5jdGlvbigpeyQuV2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7dGhpcy5fbW91c2VEZXN0cm95KCk7dGhpcy5pbWdfb2JqZWN0Lm9iamVjdCgpLnJlbW92ZSgpO3RoaXMuY29udGFpbmVyLm9mZigiLml2aWV3ZXIiKTt0aGlzLmNvbnRhaW5lci5jc3MoIm92ZXJmbG93IiwiIil9LF91cGRhdGVDb250YWluZXJJbmZvOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmhlaWdodD10aGlzLmNvbnRhaW5lci5oZWlnaHQoKTt0aGlzLm9wdGlvbnMud2lkdGg9dGhpcy5jb250YWluZXIud2lkdGgoKX0sdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQ29udGFpbmVySW5mbygpO3RoaXMuc2V0Q29vcmRzKHRoaXMuaW1nX29iamVjdC54KCksCnRoaXMuaW1nX29iamVjdC55KCkpfSxsb2FkSW1hZ2U6ZnVuY3Rpb24oc3JjKXt0aGlzLmN1cnJlbnRfem9vbT10aGlzLm9wdGlvbnMuem9vbTt2YXIgbWU9dGhpczt0aGlzLl90cmlnZ2VyKCJvblN0YXJ0TG9hZCIsMCxzcmMpO3RoaXMuY29udGFpbmVyLmFkZENsYXNzKCJpdmlld2VyX2xvYWRpbmciKTt0aGlzLmltZ19vYmplY3QubG9hZChzcmMsZnVuY3Rpb24oKXttZS5faW1hZ2VMb2FkZWQoc3JjKX0sZnVuY3Rpb24oKXttZS5fdHJpZ2dlcigib25FcnJvckxvYWQiLDAsc3JjKX0pfSxfaW1hZ2VMb2FkZWQ6ZnVuY3Rpb24oc3JjKXt0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygiaXZpZXdlcl9sb2FkaW5nIik7dGhpcy5jb250YWluZXIuYWRkQ2xhc3MoIml2aWV3ZXJfY3Vyc29yIik7aWYodGhpcy5vcHRpb25zLnpvb209PSJmaXQiKXRoaXMuZml0KHRydWUpO2Vsc2UgdGhpcy5zZXRfem9vbSh0aGlzLm9wdGlvbnMuem9vbSx0cnVlKTt0aGlzLl90cmlnZ2VyKCJvbkZpbmlzaExvYWQiLAowLHNyYyl9LGZpdDpmdW5jdGlvbihza2lwX2FuaW1hdGlvbil7dmFyIGFzcGVjdF9yYXRpbz10aGlzLmltZ19vYmplY3Qub3JpZ193aWR0aCgpL3RoaXMuaW1nX29iamVjdC5vcmlnX2hlaWdodCgpO3ZhciB3aW5kb3dfcmF0aW89dGhpcy5vcHRpb25zLndpZHRoL3RoaXMub3B0aW9ucy5oZWlnaHQ7dmFyIGNob29zZV9sZWZ0PWFzcGVjdF9yYXRpbz53aW5kb3dfcmF0aW87dmFyIG5ld196b29tPTA7aWYoY2hvb3NlX2xlZnQpbmV3X3pvb209dGhpcy5vcHRpb25zLndpZHRoL3RoaXMuaW1nX29iamVjdC5vcmlnX3dpZHRoKCkqMTAwO2Vsc2UgbmV3X3pvb209dGhpcy5vcHRpb25zLmhlaWdodC90aGlzLmltZ19vYmplY3Qub3JpZ19oZWlnaHQoKSoxMDA7dGhpcy5zZXRfem9vbShuZXdfem9vbSxza2lwX2FuaW1hdGlvbil9LGNlbnRlcjpmdW5jdGlvbigpe3RoaXMuc2V0Q29vcmRzKC1NYXRoLnJvdW5kKCh0aGlzLmltZ19vYmplY3QuZGlzcGxheV93aWR0aCgpLXRoaXMub3B0aW9ucy53aWR0aCkvCjIpLC1NYXRoLnJvdW5kKCh0aGlzLmltZ19vYmplY3QuZGlzcGxheV9oZWlnaHQoKS10aGlzLm9wdGlvbnMuaGVpZ2h0KS8yKSl9LG1vdmVUbzpmdW5jdGlvbih4LHkpe3ZhciBkeD14LU1hdGgucm91bmQodGhpcy5vcHRpb25zLndpZHRoLzIpO3ZhciBkeT15LU1hdGgucm91bmQodGhpcy5vcHRpb25zLmhlaWdodC8yKTt2YXIgbmV3X3g9dGhpcy5pbWdfb2JqZWN0LngoKS1keDt2YXIgbmV3X3k9dGhpcy5pbWdfb2JqZWN0LnkoKS1keTt0aGlzLnNldENvb3JkcyhuZXdfeCxuZXdfeSl9LGdldENvbnRhaW5lck9mZnNldDpmdW5jdGlvbigpe3JldHVybiBqUXVlcnkuZXh0ZW5kKHt9LHRoaXMuY29udGFpbmVyLm9mZnNldCgpKX0sc2V0Q29vcmRzOmZ1bmN0aW9uKHgseSl7aWYoIXRoaXMuaW1nX29iamVjdC5sb2FkZWQoKSlyZXR1cm47dmFyIGNvb3Jkcz10aGlzLl9jb3JyZWN0Q29vcmRzKHgseSk7dGhpcy5pbWdfb2JqZWN0LngoY29vcmRzLngpO3RoaXMuaW1nX29iamVjdC55KGNvb3Jkcy55KX0sCl9jb3JyZWN0Q29vcmRzOmZ1bmN0aW9uKHgseSl7eD1wYXJzZUludCh4LDEwKTt5PXBhcnNlSW50KHksMTApO2lmKHk+MCl5PTA7aWYoeD4wKXg9MDtpZih5K3RoaXMuaW1nX29iamVjdC5kaXNwbGF5X2hlaWdodCgpPHRoaXMub3B0aW9ucy5oZWlnaHQpeT10aGlzLm9wdGlvbnMuaGVpZ2h0LXRoaXMuaW1nX29iamVjdC5kaXNwbGF5X2hlaWdodCgpO2lmKHgrdGhpcy5pbWdfb2JqZWN0LmRpc3BsYXlfd2lkdGgoKTx0aGlzLm9wdGlvbnMud2lkdGgpeD10aGlzLm9wdGlvbnMud2lkdGgtdGhpcy5pbWdfb2JqZWN0LmRpc3BsYXlfd2lkdGgoKTtpZih0aGlzLmltZ19vYmplY3QuZGlzcGxheV93aWR0aCgpPD10aGlzLm9wdGlvbnMud2lkdGgpeD0tKHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X3dpZHRoKCktdGhpcy5vcHRpb25zLndpZHRoKS8yO2lmKHRoaXMuaW1nX29iamVjdC5kaXNwbGF5X2hlaWdodCgpPD10aGlzLm9wdGlvbnMuaGVpZ2h0KXk9LSh0aGlzLmltZ19vYmplY3QuZGlzcGxheV9oZWlnaHQoKS0KdGhpcy5vcHRpb25zLmhlaWdodCkvMjtyZXR1cm57eDp4LHk6eX19LGNvbnRhaW5lclRvSW1hZ2U6ZnVuY3Rpb24oeCx5KXt2YXIgY29vcmRzPXt4OngtdGhpcy5pbWdfb2JqZWN0LngoKSx5OnktdGhpcy5pbWdfb2JqZWN0LnkoKX07Y29vcmRzPXRoaXMuaW1nX29iamVjdC50b09yaWdpbmFsQ29vcmRzKGNvb3Jkcyk7cmV0dXJue3g6dXRpbC5kZXNjYWxlVmFsdWUoY29vcmRzLngsdGhpcy5jdXJyZW50X3pvb20pLHk6dXRpbC5kZXNjYWxlVmFsdWUoY29vcmRzLnksdGhpcy5jdXJyZW50X3pvb20pfX0saW1hZ2VUb0NvbnRhaW5lcjpmdW5jdGlvbih4LHkpe3ZhciBjb29yZHM9e3g6dXRpbC5zY2FsZVZhbHVlKHgsdGhpcy5jdXJyZW50X3pvb20pLHk6dXRpbC5zY2FsZVZhbHVlKHksdGhpcy5jdXJyZW50X3pvb20pfTtyZXR1cm4gdGhpcy5pbWdfb2JqZWN0LnRvUmVhbENvb3Jkcyhjb29yZHMpfSxfZ2V0TW91c2VDb29yZHM6ZnVuY3Rpb24oZSl7dmFyIGNvbnRhaW5lck9mZnNldD10aGlzLmNvbnRhaW5lci5vZmZzZXQoKTsKY29vcmRzPXRoaXMuY29udGFpbmVyVG9JbWFnZShlLnBhZ2VYLWNvbnRhaW5lck9mZnNldC5sZWZ0LGUucGFnZVktY29udGFpbmVyT2Zmc2V0LnRvcCk7cmV0dXJuIGNvb3Jkc30sc2V0X3pvb206ZnVuY3Rpb24obmV3X3pvb20sc2tpcF9hbmltYXRpb24sem9vbV9jZW50ZXIpe2lmKHRoaXMuX3RyaWdnZXIoIm9uWm9vbSIsMCxuZXdfem9vbSk9PWZhbHNlKXJldHVybjtpZighdGhpcy5pbWdfb2JqZWN0LmxvYWRlZCgpKXJldHVybjt6b29tX2NlbnRlcj16b29tX2NlbnRlcnx8e3g6TWF0aC5yb3VuZCh0aGlzLm9wdGlvbnMud2lkdGgvMikseTpNYXRoLnJvdW5kKHRoaXMub3B0aW9ucy5oZWlnaHQvMil9O2lmKG5ld196b29tPHRoaXMub3B0aW9ucy56b29tX21pbiluZXdfem9vbT10aGlzLm9wdGlvbnMuem9vbV9taW47ZWxzZSBpZihuZXdfem9vbT50aGlzLm9wdGlvbnMuem9vbV9tYXgpbmV3X3pvb209dGhpcy5vcHRpb25zLnpvb21fbWF4O2lmKHRoaXMuY3VycmVudF96b29tPT0iZml0Iil7dmFyIG9sZF94PQp6b29tX2NlbnRlci54K01hdGgucm91bmQodGhpcy5pbWdfb2JqZWN0Lm9yaWdfd2lkdGgoKS8yKTt2YXIgb2xkX3k9em9vbV9jZW50ZXIueStNYXRoLnJvdW5kKHRoaXMuaW1nX29iamVjdC5vcmlnX2hlaWdodCgpLzIpO3RoaXMuY3VycmVudF96b29tPTEwMH1lbHNle3ZhciBvbGRfeD0tdGhpcy5pbWdfb2JqZWN0LngoKSt6b29tX2NlbnRlci54O3ZhciBvbGRfeT0tdGhpcy5pbWdfb2JqZWN0LnkoKSt6b29tX2NlbnRlci55fXZhciBuZXdfd2lkdGg9dXRpbC5zY2FsZVZhbHVlKHRoaXMuaW1nX29iamVjdC5vcmlnX3dpZHRoKCksbmV3X3pvb20pO3ZhciBuZXdfaGVpZ2h0PXV0aWwuc2NhbGVWYWx1ZSh0aGlzLmltZ19vYmplY3Qub3JpZ19oZWlnaHQoKSxuZXdfem9vbSk7dmFyIG5ld194PXV0aWwuc2NhbGVWYWx1ZSh1dGlsLmRlc2NhbGVWYWx1ZShvbGRfeCx0aGlzLmN1cnJlbnRfem9vbSksbmV3X3pvb20pO3ZhciBuZXdfeT11dGlsLnNjYWxlVmFsdWUodXRpbC5kZXNjYWxlVmFsdWUob2xkX3ksCnRoaXMuY3VycmVudF96b29tKSxuZXdfem9vbSk7bmV3X3g9em9vbV9jZW50ZXIueC1uZXdfeDtuZXdfeT16b29tX2NlbnRlci55LW5ld195O25ld193aWR0aD1NYXRoLmZsb29yKG5ld193aWR0aCk7bmV3X2hlaWdodD1NYXRoLmZsb29yKG5ld19oZWlnaHQpO25ld194PU1hdGguZmxvb3IobmV3X3gpO25ld195PU1hdGguZmxvb3IobmV3X3kpO3RoaXMuaW1nX29iamVjdC5kaXNwbGF5X3dpZHRoKG5ld193aWR0aCk7dGhpcy5pbWdfb2JqZWN0LmRpc3BsYXlfaGVpZ2h0KG5ld19oZWlnaHQpO3ZhciBjb29yZHM9dGhpcy5fY29ycmVjdENvb3JkcyhuZXdfeCxuZXdfeSksc2VsZj10aGlzO3RoaXMuaW1nX29iamVjdC5zZXRJbWFnZVByb3BzKG5ld193aWR0aCxuZXdfaGVpZ2h0LGNvb3Jkcy54LGNvb3Jkcy55LHNraXBfYW5pbWF0aW9uLGZ1bmN0aW9uKCl7c2VsZi5fdHJpZ2dlcigib25BZnRlclpvb20iLDAsbmV3X3pvb20pfSk7dGhpcy5jdXJyZW50X3pvb209bmV3X3pvb207dGhpcy51cGRhdGVfc3RhdHVzKCl9LAp6b29tX2J5OmZ1bmN0aW9uKGRlbHRhLHpvb21fY2VudGVyKXt2YXIgY2xvc2VzdF9yYXRlPXRoaXMuZmluZF9jbG9zZXN0X3pvb21fcmF0ZSh0aGlzLmN1cnJlbnRfem9vbSk7dmFyIG5leHRfcmF0ZT1jbG9zZXN0X3JhdGUrZGVsdGE7dmFyIG5leHRfem9vbT10aGlzLm9wdGlvbnMuem9vbV9iYXNlKk1hdGgucG93KHRoaXMub3B0aW9ucy56b29tX2RlbHRhLG5leHRfcmF0ZSk7aWYoZGVsdGE+MCYmbmV4dF96b29tPHRoaXMuY3VycmVudF96b29tKW5leHRfem9vbSo9dGhpcy5vcHRpb25zLnpvb21fZGVsdGE7aWYoZGVsdGE8MCYmbmV4dF96b29tPnRoaXMuY3VycmVudF96b29tKW5leHRfem9vbS89dGhpcy5vcHRpb25zLnpvb21fZGVsdGE7dGhpcy5zZXRfem9vbShuZXh0X3pvb20sdW5kZWZpbmVkLHpvb21fY2VudGVyKX0sYW5nbGU6ZnVuY3Rpb24oZGVnLGFicyl7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApcmV0dXJuIHRoaXMuaW1nX29iamVjdC5hbmdsZSgpO2lmKGRlZzwtMjcwfHwKZGVnPjI3MHx8ZGVnJTkwIT09MClyZXR1cm47aWYoIWFicylkZWcrPXRoaXMuaW1nX29iamVjdC5hbmdsZSgpO2lmKGRlZzwwKWRlZys9MzYwO2lmKGRlZz49MzYwKWRlZy09MzYwO2lmKGRlZz09PXRoaXMuaW1nX29iamVjdC5hbmdsZSgpKXJldHVybjt0aGlzLmltZ19vYmplY3QuYW5nbGUoZGVnKTt0aGlzLmNlbnRlcigpO3RoaXMuX3RyaWdnZXIoImFuZ2xlIiwwLHthbmdsZTp0aGlzLmltZ19vYmplY3QuYW5nbGUoKX0pfSxmaW5kX2Nsb3Nlc3Rfem9vbV9yYXRlOmZ1bmN0aW9uKHZhbHVlKXtpZih2YWx1ZT09dGhpcy5vcHRpb25zLnpvb21fYmFzZSlyZXR1cm4gMDtmdW5jdGlvbiBkaXYodmFsMSx2YWwyKXtyZXR1cm4gdmFsMS92YWwyfWZ1bmN0aW9uIG11bCh2YWwxLHZhbDIpe3JldHVybiB2YWwxKnZhbDJ9dmFyIGZ1bmM9dmFsdWU+dGhpcy5vcHRpb25zLnpvb21fYmFzZT9tdWw6ZGl2O3ZhciBzZ249dmFsdWU+dGhpcy5vcHRpb25zLnpvb21fYmFzZT8xOi0xO3ZhciBtbHRwbHI9CnRoaXMub3B0aW9ucy56b29tX2RlbHRhO3ZhciByYXRlPTE7d2hpbGUoTWF0aC5hYnMoZnVuYyh0aGlzLm9wdGlvbnMuem9vbV9iYXNlLE1hdGgucG93KG1sdHBscixyYXRlKSktdmFsdWUpPk1hdGguYWJzKGZ1bmModGhpcy5vcHRpb25zLnpvb21fYmFzZSxNYXRoLnBvdyhtbHRwbHIscmF0ZSsxKSktdmFsdWUpKXJhdGUrKztyZXR1cm4gc2duKnJhdGV9LHVwZGF0ZV9zdGF0dXM6ZnVuY3Rpb24oKXtpZighdGhpcy5vcHRpb25zLnVpX2Rpc2FibGVkKXt2YXIgcGVyY2VudD1NYXRoLnJvdW5kKDEwMCp0aGlzLmltZ19vYmplY3QuZGlzcGxheV9oZWlnaHQoKS90aGlzLmltZ19vYmplY3Qub3JpZ19oZWlnaHQoKSk7aWYocGVyY2VudCl0aGlzLnpvb21fb2JqZWN0Lmh0bWwocGVyY2VudCsiJSIpfX0saW5mbzpmdW5jdGlvbihwYXJhbSx3aXRob3V0Um90YXRpb24pe2lmKCFwYXJhbSlyZXR1cm47c3dpdGNoKHBhcmFtKXtjYXNlICJvcmlnX3dpZHRoIjpjYXNlICJvcmlnX2hlaWdodCI6aWYod2l0aG91dFJvdGF0aW9uKXJldHVybiB0aGlzLmltZ19vYmplY3QuYW5nbGUoKSUKMTgwPT09MD90aGlzLmltZ19vYmplY3RbcGFyYW1dKCk6cGFyYW09PT0ib3JpZ193aWR0aCI/dGhpcy5pbWdfb2JqZWN0Lm9yaWdfaGVpZ2h0KCk6dGhpcy5pbWdfb2JqZWN0Lm9yaWdfd2lkdGgoKTtlbHNlIHJldHVybiB0aGlzLmltZ19vYmplY3RbcGFyYW1dKCk7Y2FzZSAiZGlzcGxheV93aWR0aCI6Y2FzZSAiZGlzcGxheV9oZWlnaHQiOmNhc2UgImFuZ2xlIjpyZXR1cm4gdGhpcy5pbWdfb2JqZWN0W3BhcmFtXSgpO2Nhc2UgInpvb20iOnJldHVybiB0aGlzLmN1cnJlbnRfem9vbTtjYXNlICJzcmMiOnJldHVybiB0aGlzLmltZ19vYmplY3Qub2JqZWN0KCkuYXR0cigic3JjIik7Y2FzZSAiY29vcmRzIjpyZXR1cm57eDp0aGlzLmltZ19vYmplY3QueCgpLHk6dGhpcy5pbWdfb2JqZWN0LnkoKX19fSxfbW91c2VTdGFydDpmdW5jdGlvbihlKXskLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VTdGFydC5jYWxsKHRoaXMsZSk7aWYodGhpcy5fdHJpZ2dlcigib25TdGFydERyYWciLDAsCnRoaXMuX2dldE1vdXNlQ29vcmRzKGUpKT09PWZhbHNlKXJldHVybiBmYWxzZTt0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygiaXZpZXdlcl9kcmFnX2N1cnNvciIpO3RoaXMuX2RyYWdJbml0aWFsaXplZD0hKGUub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlcyYmZS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09MSk7dGhpcy5keD1lLnBhZ2VYLXRoaXMuaW1nX29iamVjdC54KCk7dGhpcy5keT1lLnBhZ2VZLXRoaXMuaW1nX29iamVjdC55KCk7cmV0dXJuIHRydWV9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRydWV9LF9oYW5kbGVNb3VzZU1vdmU6ZnVuY3Rpb24oZSl7dGhpcy5fdHJpZ2dlcigib25Nb3VzZU1vdmUiLGUsdGhpcy5fZ2V0TW91c2VDb29yZHMoZSkpfSxfbW91c2VEcmFnOmZ1bmN0aW9uKGUpeyQudWkubW91c2UucHJvdG90eXBlLl9tb3VzZURyYWcuY2FsbCh0aGlzLGUpO2lmKCF0aGlzLl9kcmFnSW5pdGlhbGl6ZWQpe3RoaXMuZHg9CmUucGFnZVgtdGhpcy5pbWdfb2JqZWN0LngoKTt0aGlzLmR5PWUucGFnZVktdGhpcy5pbWdfb2JqZWN0LnkoKTt0aGlzLl9kcmFnSW5pdGlhbGl6ZWQ9dHJ1ZX12YXIgbHRvcD1lLnBhZ2VZLXRoaXMuZHk7dmFyIGxsZWZ0PWUucGFnZVgtdGhpcy5keDt0aGlzLnNldENvb3JkcyhsbGVmdCxsdG9wKTt0aGlzLl90cmlnZ2VyKCJvbkRyYWciLGUsdGhpcy5fZ2V0TW91c2VDb29yZHMoZSkpO3JldHVybiBmYWxzZX0sX21vdXNlU3RvcDpmdW5jdGlvbihlKXskLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VTdG9wLmNhbGwodGhpcyxlKTt0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygiaXZpZXdlcl9kcmFnX2N1cnNvciIpO3RoaXMuX3RyaWdnZXIoIm9uU3RvcERyYWciLDAsdGhpcy5fZ2V0TW91c2VDb29yZHMoZSkpfSxfY2xpY2s6ZnVuY3Rpb24oZSl7dGhpcy5fdHJpZ2dlcigib25DbGljayIsMCx0aGlzLl9nZXRNb3VzZUNvb3JkcyhlKSl9LGNyZWF0ZXVpOmZ1bmN0aW9uKCl7dmFyIG1lPQp0aGlzOyQoIjxkaXY+Iix7ImNsYXNzIjoiaXZpZXdlcl96b29tX2luIGl2aWV3ZXJfY29tbW9uIGl2aWV3ZXJfYnV0dG9uIn0pLmJpbmQoIm1vdXNlZG93biB0b3VjaHN0YXJ0IixmdW5jdGlvbigpe21lLnpvb21fYnkoMSk7cmV0dXJuIGZhbHNlfSkuYXBwZW5kVG8odGhpcy5jb250YWluZXIpOyQoIjxkaXY+Iix7ImNsYXNzIjoiaXZpZXdlcl96b29tX291dCBpdmlld2VyX2NvbW1vbiBpdmlld2VyX2J1dHRvbiJ9KS5iaW5kKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsZnVuY3Rpb24oKXttZS56b29tX2J5KC0xKTtyZXR1cm4gZmFsc2V9KS5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7JCgiPGRpdj4iLHsiY2xhc3MiOiJpdmlld2VyX3pvb21femVybyBpdmlld2VyX2NvbW1vbiBpdmlld2VyX2J1dHRvbiJ9KS5iaW5kKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsZnVuY3Rpb24oKXttZS5zZXRfem9vbSgxMDApO3JldHVybiBmYWxzZX0pLmFwcGVuZFRvKHRoaXMuY29udGFpbmVyKTskKCI8ZGl2PiIsCnsiY2xhc3MiOiJpdmlld2VyX3pvb21fZml0IGl2aWV3ZXJfY29tbW9uIGl2aWV3ZXJfYnV0dG9uIn0pLmJpbmQoIm1vdXNlZG93biB0b3VjaHN0YXJ0IixmdW5jdGlvbigpe21lLmZpdCh0aGlzKTtyZXR1cm4gZmFsc2V9KS5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7dGhpcy56b29tX29iamVjdD0kKCI8ZGl2PiIpLmFkZENsYXNzKCJpdmlld2VyX3pvb21fc3RhdHVzIGl2aWV3ZXJfY29tbW9uIikuYXBwZW5kVG8odGhpcy5jb250YWluZXIpOyQoIjxkaXY+Iix7ImNsYXNzIjoiaXZpZXdlcl9yb3RhdGVfbGVmdCBpdmlld2VyX2NvbW1vbiBpdmlld2VyX2J1dHRvbiJ9KS5iaW5kKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsZnVuY3Rpb24oKXttZS5hbmdsZSgtOTApO3JldHVybiBmYWxzZX0pLmFwcGVuZFRvKHRoaXMuY29udGFpbmVyKTskKCI8ZGl2PiIseyJjbGFzcyI6Iml2aWV3ZXJfcm90YXRlX3JpZ2h0IGl2aWV3ZXJfY29tbW9uIGl2aWV3ZXJfYnV0dG9uIn0pLmJpbmQoIm1vdXNlZG93biB0b3VjaHN0YXJ0IiwKZnVuY3Rpb24oKXttZS5hbmdsZSg5MCk7cmV0dXJuIGZhbHNlfSkuYXBwZW5kVG8odGhpcy5jb250YWluZXIpO3RoaXMudXBkYXRlX3N0YXR1cygpfX0pOyQudWkuaXZpZXdlci5JbWFnZU9iamVjdD1mdW5jdGlvbihkb19hbmltKXt0aGlzLl9pbWc9JCgiPGltZz4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiIwcHgiLGxlZnQ6IjBweCJ9KTt0aGlzLl9sb2FkZWQ9ZmFsc2U7dGhpcy5fc3dhcERpbWVuc2lvbnM9ZmFsc2U7dGhpcy5fZG9fYW5pbT1kb19hbmltfHxmYWxzZTt0aGlzLngoMCx0cnVlKTt0aGlzLnkoMCx0cnVlKTt0aGlzLmFuZ2xlKDApfTsoZnVuY3Rpb24oKXt0aGlzLl9yZXNldD1mdW5jdGlvbih3LGgpe3RoaXMuX2FuZ2xlPTA7dGhpcy5fc3dhcERpbWVuc2lvbnM9ZmFsc2U7dGhpcy54KDApO3RoaXMueSgwKTt0aGlzLm9yaWdfd2lkdGgodyk7dGhpcy5vcmlnX2hlaWdodChoKTt0aGlzLmRpc3BsYXlfd2lkdGgodyk7dGhpcy5kaXNwbGF5X2hlaWdodChoKX07CnRoaXMubG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xvYWRlZH07dGhpcy5sb2FkPWZ1bmN0aW9uKHNyYyxsb2FkZWQsZXJyb3Ipe3ZhciBzZWxmPXRoaXM7bG9hZGVkPWxvYWRlZHx8alF1ZXJ5Lm5vb3A7dGhpcy5fbG9hZGVkPWZhbHNlO3ZhciBpbWc9bmV3IEltYWdlO2ltZy5vbmxvYWQ9ZnVuY3Rpb24oKXtzZWxmLl9sb2FkZWQ9dHJ1ZTtzZWxmLl9yZXNldCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtzZWxmLl9pbWcucmVtb3ZlQXR0cigid2lkdGgiKS5yZW1vdmVBdHRyKCJoZWlnaHQiKS5yZW1vdmVBdHRyKCJzdHlsZSIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6IjBweCIsbGVmdDoiMHB4IixtYXhXaWR0aDoibm9uZSJ9KTtzZWxmLl9pbWdbMF0uc3JjPXNyYztsb2FkZWQoKX07aW1nLm9uZXJyb3I9ZXJyb3I7c2V0VGltZW91dChmdW5jdGlvbigpe2ltZy5zcmM9c3JjfSwwKTt0aGlzLmFuZ2xlKDApfTt0aGlzLl9kaW1lbnNpb249ZnVuY3Rpb24ocHJlZml4LApuYW1lKXt2YXIgaG9yaXo9Il8iK3ByZWZpeCsiXyIrbmFtZSx2ZXJ0PSJfIitwcmVmaXgrIl8iKyhuYW1lPT09ImhlaWdodCI/IndpZHRoIjoiaGVpZ2h0Iik7cmV0dXJuIHNldHRlcihmdW5jdGlvbih2YWwpe3RoaXNbdGhpcy5fc3dhcERpbWVuc2lvbnM/aG9yaXo6dmVydF09dmFsfSxmdW5jdGlvbigpe3JldHVybiB0aGlzW3RoaXMuX3N3YXBEaW1lbnNpb25zP2hvcml6OnZlcnRdfSl9O3RoaXMuZGlzcGxheV93aWR0aD10aGlzLl9kaW1lbnNpb24oImRpc3BsYXkiLCJ3aWR0aCIpLHRoaXMuZGlzcGxheV9oZWlnaHQ9dGhpcy5fZGltZW5zaW9uKCJkaXNwbGF5IiwiaGVpZ2h0IiksdGhpcy5kaXNwbGF5X2RpZmY9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLmRpc3BsYXlfd2lkdGgoKS10aGlzLmRpc3BsYXlfaGVpZ2h0KCkpfTt0aGlzLm9yaWdfd2lkdGg9dGhpcy5fZGltZW5zaW9uKCJvcmlnIiwid2lkdGgiKSx0aGlzLm9yaWdfaGVpZ2h0PXRoaXMuX2RpbWVuc2lvbigib3JpZyIsCiJoZWlnaHQiKSx0aGlzLng9c2V0dGVyKGZ1bmN0aW9uKHZhbCxza2lwQ3NzKXt0aGlzLl94PXZhbDtpZighc2tpcENzcyl7dGhpcy5fZmluaXNoQW5pbWF0aW9uKCk7dGhpcy5faW1nLmNzcygibGVmdCIsdGhpcy5feCsodGhpcy5fc3dhcERpbWVuc2lvbnM/dGhpcy5kaXNwbGF5X2RpZmYoKS8yOjApKyJweCIpfX0sZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feH0pO3RoaXMueT1zZXR0ZXIoZnVuY3Rpb24odmFsLHNraXBDc3Mpe3RoaXMuX3k9dmFsO2lmKCFza2lwQ3NzKXt0aGlzLl9maW5pc2hBbmltYXRpb24oKTt0aGlzLl9pbWcuY3NzKCJ0b3AiLHRoaXMuX3ktKHRoaXMuX3N3YXBEaW1lbnNpb25zP3RoaXMuZGlzcGxheV9kaWZmKCkvMjowKSsicHgiKX19LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3l9KTt0aGlzLmFuZ2xlPXNldHRlcihmdW5jdGlvbihkZWcpe3ZhciBwcmV2U3dhcD10aGlzLl9zd2FwRGltZW5zaW9uczt0aGlzLl9hbmdsZT1kZWc7dGhpcy5fc3dhcERpbWVuc2lvbnM9CmRlZyUxODAhPT0wO2lmKHByZXZTd2FwIT09dGhpcy5fc3dhcERpbWVuc2lvbnMpe3ZhciB2ZXJ0aWNhbE1vZD10aGlzLl9zd2FwRGltZW5zaW9ucz8tMToxO3RoaXMueCh0aGlzLngoKS12ZXJ0aWNhbE1vZCp0aGlzLmRpc3BsYXlfZGlmZigpLzIsdHJ1ZSk7dGhpcy55KHRoaXMueSgpK3ZlcnRpY2FsTW9kKnRoaXMuZGlzcGxheV9kaWZmKCkvMix0cnVlKX12YXIgY3NzVmFsPSJyb3RhdGUoIitkZWcrImRlZykiLGltZz10aGlzLl9pbWc7alF1ZXJ5LmVhY2goWyIiLCItd2Via2l0LSIsIi1tb3otIiwiLW8tIiwiLW1zLSJdLGZ1bmN0aW9uKGkscHJlZml4KXtpbWcuY3NzKHByZWZpeCsidHJhbnNmb3JtIixjc3NWYWwpfSk7aWYodXNlSWVUcmFuc2Zvcm1zKXtqUXVlcnkuZWFjaChbIi1tcy0iLCIiXSxmdW5jdGlvbihpLHByZWZpeCl7aW1nLmNzcyhwcmVmaXgrImZpbHRlciIsaWVUcmFuc2Zvcm1zW2RlZ10uZmlsdGVyKX0pO2ltZy5jc3Moe21hcmdpbkxlZnQ6aWVUcmFuc2Zvcm1zW2RlZ10ubWFyZ2luTGVmdCoKdGhpcy5kaXNwbGF5X2RpZmYoKS8yLG1hcmdpblRvcDppZVRyYW5zZm9ybXNbZGVnXS5tYXJnaW5Ub3AqdGhpcy5kaXNwbGF5X2RpZmYoKS8yfSl9fSxmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbmdsZX0pO3RoaXMudG9PcmlnaW5hbENvb3Jkcz1mdW5jdGlvbihwb2ludCl7c3dpdGNoKHRoaXMuYW5nbGUoKSl7Y2FzZSAwOnJldHVybnt4OnBvaW50LngseTpwb2ludC55fTtjYXNlIDkwOnJldHVybnt4OnBvaW50LnkseTp0aGlzLmRpc3BsYXlfd2lkdGgoKS1wb2ludC54fTtjYXNlIDE4MDpyZXR1cm57eDp0aGlzLmRpc3BsYXlfd2lkdGgoKS1wb2ludC54LHk6dGhpcy5kaXNwbGF5X2hlaWdodCgpLXBvaW50Lnl9O2Nhc2UgMjcwOnJldHVybnt4OnRoaXMuZGlzcGxheV9oZWlnaHQoKS1wb2ludC55LHk6cG9pbnQueH19fTt0aGlzLnRvUmVhbENvb3Jkcz1mdW5jdGlvbihwb2ludCl7c3dpdGNoKHRoaXMuYW5nbGUoKSl7Y2FzZSAwOnJldHVybnt4OnRoaXMueCgpK3BvaW50LngseTp0aGlzLnkoKSsKcG9pbnQueX07Y2FzZSA5MDpyZXR1cm57eDp0aGlzLngoKSt0aGlzLmRpc3BsYXlfd2lkdGgoKS1wb2ludC55LHk6dGhpcy55KCkrcG9pbnQueH07Y2FzZSAxODA6cmV0dXJue3g6dGhpcy54KCkrdGhpcy5kaXNwbGF5X3dpZHRoKCktcG9pbnQueCx5OnRoaXMueSgpK3RoaXMuZGlzcGxheV9oZWlnaHQoKS1wb2ludC55fTtjYXNlIDI3MDpyZXR1cm57eDp0aGlzLngoKStwb2ludC55LHk6dGhpcy55KCkrdGhpcy5kaXNwbGF5X2hlaWdodCgpLXBvaW50Lnh9fX07dGhpcy5vYmplY3Q9c2V0dGVyKGpRdWVyeS5ub29wLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ltZ30pO3RoaXMuc2V0SW1hZ2VQcm9wcz1mdW5jdGlvbihkaXNwX3csZGlzcF9oLHgseSxza2lwX2FuaW1hdGlvbixjb21wbGV0ZSl7Y29tcGxldGU9Y29tcGxldGV8fGpRdWVyeS5ub29wO3RoaXMuZGlzcGxheV93aWR0aChkaXNwX3cpO3RoaXMuZGlzcGxheV9oZWlnaHQoZGlzcF9oKTt0aGlzLngoeCx0cnVlKTt0aGlzLnkoeSwKdHJ1ZSk7dmFyIHc9dGhpcy5fc3dhcERpbWVuc2lvbnM/ZGlzcF9oOmRpc3Bfdzt2YXIgaD10aGlzLl9zd2FwRGltZW5zaW9ucz9kaXNwX3c6ZGlzcF9oO3ZhciBwYXJhbXM9e3dpZHRoOncsaGVpZ2h0OmgsdG9wOnktKHRoaXMuX3N3YXBEaW1lbnNpb25zP3RoaXMuZGlzcGxheV9kaWZmKCkvMjowKSsicHgiLGxlZnQ6eCsodGhpcy5fc3dhcERpbWVuc2lvbnM/dGhpcy5kaXNwbGF5X2RpZmYoKS8yOjApKyJweCJ9O2lmKHVzZUllVHJhbnNmb3JtcylqUXVlcnkuZXh0ZW5kKHBhcmFtcyx7bWFyZ2luTGVmdDppZVRyYW5zZm9ybXNbdGhpcy5hbmdsZSgpXS5tYXJnaW5MZWZ0KnRoaXMuZGlzcGxheV9kaWZmKCkvMixtYXJnaW5Ub3A6aWVUcmFuc2Zvcm1zW3RoaXMuYW5nbGUoKV0ubWFyZ2luVG9wKnRoaXMuZGlzcGxheV9kaWZmKCkvMn0pO3ZhciBzd2FwRGltcz10aGlzLl9zd2FwRGltZW5zaW9ucyxpbWc9dGhpcy5faW1nO2lmKHVzZUllVHJhbnNmb3JtcyYmc3dhcERpbXMpe3ZhciBpZWg9CnRoaXMuX2ltZy53aWR0aCgpLGlldz10aGlzLl9pbWcuaGVpZ2h0KCksaWVkaD1wYXJhbXMuaGVpZ2h0LWllaDtpZWR3PXBhcmFtcy53aWR0aC1pZXc7ZGVsZXRlIHBhcmFtcy53aWR0aDtkZWxldGUgcGFyYW1zLmhlaWdodH1pZih0aGlzLl9kb19hbmltJiYhc2tpcF9hbmltYXRpb24pdGhpcy5faW1nLnN0b3AodHJ1ZSkuYW5pbWF0ZShwYXJhbXMse2R1cmF0aW9uOjIwMCxjb21wbGV0ZTpjb21wbGV0ZSxzdGVwOmZ1bmN0aW9uKG5vdyxmeCl7aWYodXNlSWVUcmFuc2Zvcm1zJiZzd2FwRGltcyYmZngucHJvcD09PSJ0b3AiKXt2YXIgcGVyY2VudD0obm93LWZ4LnN0YXJ0KS8oZnguZW5kLWZ4LnN0YXJ0KTtpbWcuaGVpZ2h0KGllaCtpZWRoKnBlcmNlbnQpO2ltZy53aWR0aChpZXcraWVkdypwZXJjZW50KTtpbWcuY3NzKCJ0b3AiLG5vdyl9fX0pO2Vsc2V7dGhpcy5faW1nLmNzcyhwYXJhbXMpO3NldFRpbWVvdXQoY29tcGxldGUsMCl9fTt0aGlzLl9maW5pc2hBbmltYXRpb249ZnVuY3Rpb24oKXt0aGlzLl9pbWcuc3RvcCh0cnVlLAp0cnVlKX19KS5hcHBseSgkLnVpLml2aWV3ZXIuSW1hZ2VPYmplY3QucHJvdG90eXBlKTt2YXIgdXRpbD17c2NhbGVWYWx1ZTpmdW5jdGlvbih2YWx1ZSx0b1pvb20pe3JldHVybiB2YWx1ZSp0b1pvb20vMTAwfSxkZXNjYWxlVmFsdWU6ZnVuY3Rpb24odmFsdWUsZnJvbVpvb20pe3JldHVybiB2YWx1ZSoxMDAvZnJvbVpvb219fX0pKGpRdWVyeSx1bmRlZmluZWQpOwo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/js/jquery.smooth-scroll.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBmaWx0ZXJQYXRoKHN0cmluZykgewogICAgICAgIHJldHVybiBzdHJpbmcKICAgICAgICAgICAgLnJlcGxhY2UoL15cLy8sJycpCiAgICAgICAgICAgIC5yZXBsYWNlKC8oaW5kZXh8ZGVmYXVsdCkuW2EtekEtWl17Myw0fSQvLCcnKQogICAgICAgICAgICAucmVwbGFjZSgvXC8kLywnJyk7CiAgICB9CiAgICB2YXIgbG9jYXRpb25QYXRoID0gZmlsdGVyUGF0aChsb2NhdGlvbi5wYXRobmFtZSk7CgogICAgJCgnYVtocmVmKj0jXScpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHRoaXNQYXRoID0gZmlsdGVyUGF0aCh0aGlzLnBhdGhuYW1lKSB8fCBsb2NhdGlvblBhdGg7CiAgICAgICAgaWYgKCAgbG9jYXRpb25QYXRoID09IHRoaXNQYXRoCiAgICAgICAgICAgICYmIChsb2NhdGlvbi5ob3N0bmFtZSA9PSB0aGlzLmhvc3RuYW1lIHx8ICF0aGlzLmhvc3RuYW1lKQogICAgICAgICAgICAmJiB0aGlzLmhhc2gucmVwbGFjZSgvIy8sJycpICkgewogICAgICAgICAgICB2YXIgJHRhcmdldCA9ICQodGhpcy5oYXNoKSwgdGFyZ2V0ID0gdGhpcy5oYXNoOwogICAgICAgICAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMuaGFzaCkub2Zmc2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9ICQodGhpcy5oYXNoKS5vZmZzZXQoKS50b3A7CgogICAgICAgICAgICAgICAgICAgICQoJ2h0bWwsYm9keScpLmFuaW1hdGUoe3Njcm9sbFRvcDogcG9zaXRpb259LCA0MDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5oYXNoID0gdGFyZ2V0OwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKfSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/js/prism.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFByaXNtOiBMaWdodHdlaWdodCwgcm9idXN0LCBlbGVnYW50IHN5bnRheCBoaWdobGlnaHRpbmcKICogTUlUIGxpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAvCiAqIEBhdXRob3IgTGVhIFZlcm91IGh0dHA6Ly9sZWEudmVyb3UubWUKICovKGZ1bmN0aW9uKCl7dmFyIGU9L1xibGFuZyg/OnVhZ2UpPy0oPyFcKikoXHcrKVxiL2ksdD1zZWxmLlByaXNtPXt1dGlsOnt0eXBlOmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkubWF0Y2goL1xbb2JqZWN0IChcdyspXF0vKVsxXX0sY2xvbmU6ZnVuY3Rpb24oZSl7dmFyIG49dC51dGlsLnR5cGUoZSk7c3dpdGNoKG4pe2Nhc2UiT2JqZWN0Ijp2YXIgcj17fTtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiYocltpXT10LnV0aWwuY2xvbmUoZVtpXSkpO3JldHVybiByO2Nhc2UiQXJyYXkiOnJldHVybiBlLnNsaWNlKCl9cmV0dXJuIGV9fSxsYW5ndWFnZXM6e2V4dGVuZDpmdW5jdGlvbihlLG4pe3ZhciByPXQudXRpbC5jbG9uZSh0Lmxhbmd1YWdlc1tlXSk7Zm9yKHZhciBpIGluIG4pcltpXT1uW2ldO3JldHVybiByfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oZSxuLHIsaSl7aT1pfHx0Lmxhbmd1YWdlczt2YXIgcz1pW2VdLG89e307Zm9yKHZhciB1IGluIHMpaWYocy5oYXNPd25Qcm9wZXJ0eSh1KSl7aWYodT09bilmb3IodmFyIGEgaW4gcilyLmhhc093blByb3BlcnR5KGEpJiYob1thXT1yW2FdKTtvW3VdPXNbdV19cmV0dXJuIGlbZV09b30sREZTOmZ1bmN0aW9uKGUsbil7Zm9yKHZhciByIGluIGUpe24uY2FsbChlLHIsZVtyXSk7dC51dGlsLnR5cGUoZSk9PT0iT2JqZWN0IiYmdC5sYW5ndWFnZXMuREZTKGVbcl0sbil9fX0saGlnaGxpZ2h0QWxsOmZ1bmN0aW9uKGUsbil7dmFyIHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnY29kZVtjbGFzcyo9Imxhbmd1YWdlLSJdLCBbY2xhc3MqPSJsYW5ndWFnZS0iXSBjb2RlLCBjb2RlW2NsYXNzKj0ibGFuZy0iXSwgW2NsYXNzKj0ibGFuZy0iXSBjb2RlJyk7Zm9yKHZhciBpPTAscztzPXJbaSsrXTspdC5oaWdobGlnaHRFbGVtZW50KHMsZT09PSEwLG4pfSxoaWdobGlnaHRFbGVtZW50OmZ1bmN0aW9uKHIsaSxzKXt2YXIgbyx1LGE9cjt3aGlsZShhJiYhZS50ZXN0KGEuY2xhc3NOYW1lKSlhPWEucGFyZW50Tm9kZTtpZihhKXtvPShhLmNsYXNzTmFtZS5tYXRjaChlKXx8WywiIl0pWzFdO3U9dC5sYW5ndWFnZXNbb119aWYoIXUpcmV0dXJuO3IuY2xhc3NOYW1lPXIuY2xhc3NOYW1lLnJlcGxhY2UoZSwiIikucmVwbGFjZSgvXHMrL2csIiAiKSsiIGxhbmd1YWdlLSIrbzthPXIucGFyZW50Tm9kZTsvcHJlL2kudGVzdChhLm5vZGVOYW1lKSYmKGEuY2xhc3NOYW1lPWEuY2xhc3NOYW1lLnJlcGxhY2UoZSwiIikucmVwbGFjZSgvXHMrL2csIiAiKSsiIGxhbmd1YWdlLSIrbyk7dmFyIGY9ci50ZXh0Q29udGVudDtpZighZilyZXR1cm47Zj1mLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC9cdTAwYTAvZywiICIpO3ZhciBsPXtlbGVtZW50OnIsbGFuZ3VhZ2U6byxncmFtbWFyOnUsY29kZTpmfTt0Lmhvb2tzLnJ1bigiYmVmb3JlLWhpZ2hsaWdodCIsbCk7aWYoaSYmc2VsZi5Xb3JrZXIpe3ZhciBjPW5ldyBXb3JrZXIodC5maWxlbmFtZSk7Yy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7bC5oaWdobGlnaHRlZENvZGU9bi5zdHJpbmdpZnkoSlNPTi5wYXJzZShlLmRhdGEpLG8pO3QuaG9va3MucnVuKCJiZWZvcmUtaW5zZXJ0IixsKTtsLmVsZW1lbnQuaW5uZXJIVE1MPWwuaGlnaGxpZ2h0ZWRDb2RlO3MmJnMuY2FsbChsLmVsZW1lbnQpO3QuaG9va3MucnVuKCJhZnRlci1oaWdobGlnaHQiLGwpfTtjLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtsYW5ndWFnZTpsLmxhbmd1YWdlLGNvZGU6bC5jb2RlfSkpfWVsc2V7bC5oaWdobGlnaHRlZENvZGU9dC5oaWdobGlnaHQobC5jb2RlLGwuZ3JhbW1hcixsLmxhbmd1YWdlKTt0Lmhvb2tzLnJ1bigiYmVmb3JlLWluc2VydCIsbCk7bC5lbGVtZW50LmlubmVySFRNTD1sLmhpZ2hsaWdodGVkQ29kZTtzJiZzLmNhbGwocik7dC5ob29rcy5ydW4oImFmdGVyLWhpZ2hsaWdodCIsbCl9fSxoaWdobGlnaHQ6ZnVuY3Rpb24oZSxyLGkpe3JldHVybiBuLnN0cmluZ2lmeSh0LnRva2VuaXplKGUsciksaSl9LHRva2VuaXplOmZ1bmN0aW9uKGUsbixyKXt2YXIgaT10LlRva2VuLHM9W2VdLG89bi5yZXN0O2lmKG8pe2Zvcih2YXIgdSBpbiBvKW5bdV09b1t1XTtkZWxldGUgbi5yZXN0fWU6Zm9yKHZhciB1IGluIG4pe2lmKCFuLmhhc093blByb3BlcnR5KHUpfHwhblt1XSljb250aW51ZTt2YXIgYT1uW3VdLGY9YS5pbnNpZGUsbD0hIWEubG9va2JlaGluZCxjPTA7YT1hLnBhdHRlcm58fGE7Zm9yKHZhciBoPTA7aDxzLmxlbmd0aDtoKyspe3ZhciBwPXNbaF07aWYocy5sZW5ndGg+ZS5sZW5ndGgpYnJlYWsgZTtpZihwIGluc3RhbmNlb2YgaSljb250aW51ZTthLmxhc3RJbmRleD0wO3ZhciBkPWEuZXhlYyhwKTtpZihkKXtsJiYoYz1kWzFdLmxlbmd0aCk7dmFyIHY9ZC5pbmRleC0xK2MsZD1kWzBdLnNsaWNlKGMpLG09ZC5sZW5ndGgsZz12K20seT1wLnNsaWNlKDAsdisxKSxiPXAuc2xpY2UoZysxKSx3PVtoLDFdO3kmJncucHVzaCh5KTt2YXIgRT1uZXcgaSh1LGY/dC50b2tlbml6ZShkLGYpOmQpO3cucHVzaChFKTtiJiZ3LnB1c2goYik7QXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShzLHcpfX19cmV0dXJuIHN9LGhvb2tzOnthbGw6e30sYWRkOmZ1bmN0aW9uKGUsbil7dmFyIHI9dC5ob29rcy5hbGw7cltlXT1yW2VdfHxbXTtyW2VdLnB1c2gobil9LHJ1bjpmdW5jdGlvbihlLG4pe3ZhciByPXQuaG9va3MuYWxsW2VdO2lmKCFyfHwhci5sZW5ndGgpcmV0dXJuO2Zvcih2YXIgaT0wLHM7cz1yW2krK107KXMobil9fX0sbj10LlRva2VuPWZ1bmN0aW9uKGUsdCl7dGhpcy50eXBlPWU7dGhpcy5jb250ZW50PXR9O24uc3RyaW5naWZ5PWZ1bmN0aW9uKGUscixpKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT0iW29iamVjdCBBcnJheV0iKXJldHVybiBlLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbi5zdHJpbmdpZnkodCxyLGUpfSkuam9pbigiIik7dmFyIHM9e3R5cGU6ZS50eXBlLGNvbnRlbnQ6bi5zdHJpbmdpZnkoZS5jb250ZW50LHIsaSksdGFnOiJzcGFuIixjbGFzc2VzOlsidG9rZW4iLGUudHlwZV0sYXR0cmlidXRlczp7fSxsYW5ndWFnZTpyLHBhcmVudDppfTtzLnR5cGU9PSJjb21tZW50IiYmKHMuYXR0cmlidXRlcy5zcGVsbGNoZWNrPSJ0cnVlIik7dC5ob29rcy5ydW4oIndyYXAiLHMpO3ZhciBvPSIiO2Zvcih2YXIgdSBpbiBzLmF0dHJpYnV0ZXMpbys9dSsnPSInKyhzLmF0dHJpYnV0ZXNbdV18fCIiKSsnIic7cmV0dXJuIjwiK3MudGFnKycgY2xhc3M9Iicrcy5jbGFzc2VzLmpvaW4oIiAiKSsnIiAnK28rIj4iK3MuY29udGVudCsiPC8iK3MudGFnKyI+In07aWYoIXNlbGYuZG9jdW1lbnQpe3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24oZSl7dmFyIG49SlNPTi5wYXJzZShlLmRhdGEpLHI9bi5sYW5ndWFnZSxpPW4uY29kZTtzZWxmLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHQudG9rZW5pemUoaSx0Lmxhbmd1YWdlc1tyXSkpKTtzZWxmLmNsb3NlKCl9LCExKTtyZXR1cm59dmFyIHI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3I9cltyLmxlbmd0aC0xXTtpZihyKXt0LmZpbGVuYW1lPXIuc3JjO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXImJiFyLmhhc0F0dHJpYnV0ZSgiZGF0YS1tYW51YWwiKSYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdC5oaWdobGlnaHRBbGwpfX0pKCk7OwpQcmlzbS5sYW5ndWFnZXMubWFya3VwPXtjb21tZW50Oi8mbHQ7IS0tW1x3XFddKj8tLT4vZyxwcm9sb2c6LyZsdDtcPy4rP1w/Pi8sZG9jdHlwZTovJmx0OyFET0NUWVBFLis/Pi8sY2RhdGE6LyZsdDshXFtDREFUQVxbW1x3XFddKj9dXT4vaSx0YWc6e3BhdHRlcm46LyZsdDtcLz9bXHc6LV0rXHMqKD86XHMrW1x3Oi1dKyg/Oj0oPzooInwnKShcXD9bXHdcV10pKj9cMXxcdyspKT9ccyopKlwvPz4vZ2ksaW5zaWRlOnt0YWc6e3BhdHRlcm46L14mbHQ7XC8/W1x3Oi1dKy9pLGluc2lkZTp7cHVuY3R1YXRpb246L14mbHQ7XC8/LyxuYW1lc3BhY2U6L15bXHctXSs/Oi99fSwiYXR0ci12YWx1ZSI6e3BhdHRlcm46Lz0oPzooJ3wiKVtcd1xXXSo/KFwxKXxbXlxzPl0rKS9naSxpbnNpZGU6e3B1bmN0dWF0aW9uOi89fD58Ii9nfX0scHVuY3R1YXRpb246L1wvPz4vZywiYXR0ci1uYW1lIjp7cGF0dGVybjovW1x3Oi1dKy9nLGluc2lkZTp7bmFtZXNwYWNlOi9eW1x3LV0rPzovfX19fSxlbnRpdHk6LyZhbXA7Iz9bXGRhLXpdezEsOH07L2dpfTtQcmlzbS5ob29rcy5hZGQoIndyYXAiLGZ1bmN0aW9uKGUpe2UudHlwZT09PSJlbnRpdHkiJiYoZS5hdHRyaWJ1dGVzLnRpdGxlPWUuY29udGVudC5yZXBsYWNlKC8mYW1wOy8sIiYiKSl9KTs7ClByaXNtLmxhbmd1YWdlcy5jc3M9e2NvbW1lbnQ6L1wvXCpbXHdcV10qP1wqXC8vZyxhdHJ1bGU6e3BhdHRlcm46L0BbXHctXSs/Lio/KDt8KD89XHMqeykpL2dpLGluc2lkZTp7cHVuY3R1YXRpb246L1s7Ol0vZ319LHVybDovdXJsXCgoWyInXT8pLio/XDFcKS9naSxzZWxlY3RvcjovW15ce1x9XHNdW15ce1x9O10qKD89XHMqXHspL2cscHJvcGVydHk6LyhcYnxcQilbXHctXSsoPz1ccyo6KS9pZyxzdHJpbmc6LygifCcpKFxcPy4pKj9cMS9nLGltcG9ydGFudDovXEIhaW1wb3J0YW50XGIvZ2ksaWdub3JlOi8mKGx0fGd0fGFtcCk7L2dpLHB1bmN0dWF0aW9uOi9bXHtcfTs6XS9nfTtQcmlzbS5sYW5ndWFnZXMubWFya3VwJiZQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJtYXJrdXAiLCJ0YWciLHtzdHlsZTp7cGF0dGVybjovKCZsdDt8PClzdHlsZVtcd1xXXSo/KD58Jmd0OylbXHdcV10qPygmbHQ7fDwpXC9zdHlsZSg+fCZndDspL2lnLGluc2lkZTp7dGFnOntwYXR0ZXJuOi8oJmx0O3w8KXN0eWxlW1x3XFddKj8oPnwmZ3Q7KXwoJmx0O3w8KVwvc3R5bGUoPnwmZ3Q7KS9pZyxpbnNpZGU6UHJpc20ubGFuZ3VhZ2VzLm1hcmt1cC50YWcuaW5zaWRlfSxyZXN0OlByaXNtLmxhbmd1YWdlcy5jc3N9fX0pOzsKUHJpc20ubGFuZ3VhZ2VzLmNzcy5zZWxlY3Rvcj17cGF0dGVybjovW15ce1x9XHNdW15ce1x9XSooPz1ccypceykvZyxpbnNpZGU6eyJwc2V1ZG8tZWxlbWVudCI6LzooPzphZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8c2VsZWN0aW9uKXw6OlstXHddKy9nLCJwc2V1ZG8tY2xhc3MiOi86Wy1cd10rKD86XCguKlwpKT8vZywiY2xhc3MiOi9cLlstOlwuXHddKy9nLGlkOi8jWy06XC5cd10rL2d9fTtQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJjc3MiLCJpZ25vcmUiLHtoZXhjb2RlOi8jW1xkYS1mXXszLDZ9L2dpLGVudGl0eTovXFxbXGRhLWZdezEsOH0vZ2ksbnVtYmVyOi9bXGQlXC5dKy9nLCJmdW5jdGlvbiI6LyhhdHRyfGNhbGN8Y3Jvc3MtZmFkZXxjeWNsZXxlbGVtZW50fGhzbGE/fGltYWdlfGxhbmd8bGluZWFyLWdyYWRpZW50fG1hdHJpeDNkfG1hdHJpeHxwZXJzcGVjdGl2ZXxyYWRpYWwtZ3JhZGllbnR8cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudHxyZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50fHJnYmE/fHJvdGF0ZXh8cm90YXRleXxyb3RhdGV6fHJvdGF0ZTNkfHJvdGF0ZXxzY2FsZXh8c2NhbGV5fHNjYWxlenxzY2FsZTNkfHNjYWxlfHNrZXd4fHNrZXd5fHNrZXd8c3RlcHN8dHJhbnNsYXRleHx0cmFuc2xhdGV5fHRyYW5zbGF0ZXp8dHJhbnNsYXRlM2R8dHJhbnNsYXRlfHVybHx2YXIpL2lnfSk7OwpQcmlzbS5sYW5ndWFnZXMuY2xpa2U9e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxdKShcL1wqW1x3XFddKj9cKlwvfChefFteOl0pXC9cLy4qPyhccj9cbnwkKSkvZyxsb29rYmVoaW5kOiEwfSxzdHJpbmc6LygifCcpKFxcPy4pKj9cMS9nLCJjbGFzcy1uYW1lIjp7cGF0dGVybjovKCg/Oig/OmNsYXNzfGludGVyZmFjZXxleHRlbmRzfGltcGxlbWVudHN8dHJhaXR8aW5zdGFuY2VvZnxuZXcpXHMrKXwoPzpjYXRjaFxzK1woKSlbYS16MC05X1wuXFxdKy9pZyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246LyhcLnxcXCkvfX0sa2V5d29yZDovXGIoaWZ8ZWxzZXx3aGlsZXxkb3xmb3J8cmV0dXJufGlufGluc3RhbmNlb2Z8ZnVuY3Rpb258bmV3fHRyeXxjYXRjaHxmaW5hbGx5fG51bGx8YnJlYWt8Y29udGludWUpXGIvZywiYm9vbGVhbiI6L1xiKHRydWV8ZmFsc2UpXGIvZywiZnVuY3Rpb24iOntwYXR0ZXJuOi9bYS16MC05X10rXCgvaWcsaW5zaWRlOntwdW5jdHVhdGlvbjovXCgvfX0sIG51bWJlcjovXGItPygweFtcZEEtRmEtZl0rfFxkKlwuP1xkKyhbRWVdLT9cZCspPylcYi9nLG9wZXJhdG9yOi9bLStdezEsMn18IXwmbHQ7PT98Pj0/fD17MSwzfXwoJmFtcDspezEsMn18XHw/XHx8XD98XCp8XC98XH58XF58XCUvZyxpZ25vcmU6LyYobHR8Z3R8YW1wKTsvZ2kscHVuY3R1YXRpb246L1t7fVtcXTsoKSwuOl0vZ307OwpQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdD1QcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCJjbGlrZSIse2tleXdvcmQ6L1xiKHZhcnxsZXR8aWZ8ZWxzZXx3aGlsZXxkb3xmb3J8cmV0dXJufGlufGluc3RhbmNlb2Z8ZnVuY3Rpb258bmV3fHdpdGh8dHlwZW9mfHRyeXxjYXRjaHxmaW5hbGx5fG51bGx8YnJlYWt8Y29udGludWUpXGIvZyxudW1iZXI6L1xiLT8oMHhbXGRBLUZhLWZdK3xcZCpcLj9cZCsoW0VlXS0/XGQrKT98TmFOfC0/SW5maW5pdHkpXGIvZ30pO1ByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoImphdmFzY3JpcHQiLCJrZXl3b3JkIix7cmVnZXg6e3BhdHRlcm46LyhefFteL10pXC8oPyFcLykoXFsuKz9dfFxcLnxbXi9cclxuXSkrXC9bZ2ltXXswLDN9KD89XHMqKCR8W1xyXG4sLjt9KV0pKS9nLGxvb2tiZWhpbmQ6ITB9fSk7UHJpc20ubGFuZ3VhZ2VzLm1hcmt1cCYmUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgibWFya3VwIiwidGFnIix7c2NyaXB0OntwYXR0ZXJuOi8oJmx0O3w8KXNjcmlwdFtcd1xXXSo/KD58Jmd0OylbXHdcV10qPygmbHQ7fDwpXC9zY3JpcHQoPnwmZ3Q7KS9pZyxpbnNpZGU6e3RhZzp7cGF0dGVybjovKCZsdDt8PClzY3JpcHRbXHdcV10qPyg+fCZndDspfCgmbHQ7fDwpXC9zY3JpcHQoPnwmZ3Q7KS9pZyxpbnNpZGU6UHJpc20ubGFuZ3VhZ2VzLm1hcmt1cC50YWcuaW5zaWRlfSxyZXN0OlByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0fX19KTs7ClByaXNtLmxhbmd1YWdlcy5waHA9UHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgiY2xpa2UiLHtrZXl3b3JkOi9cYihhbmR8b3J8eG9yfGFycmF5fGFzfGJyZWFrfGNhc2V8Y2Z1bmN0aW9ufGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlY2xhcmV8ZGVmYXVsdHxkaWV8ZG98ZWxzZXxlbHNlaWZ8ZW5kZGVjbGFyZXxlbmRmb3J8ZW5kZm9yZWFjaHxlbmRpZnxlbmRzd2l0Y2h8ZW5kd2hpbGV8ZXh0ZW5kc3xmb3J8Zm9yZWFjaHxmdW5jdGlvbnxpbmNsdWRlfGluY2x1ZGVfb25jZXxnbG9iYWx8aWZ8bmV3fHJldHVybnxzdGF0aWN8c3dpdGNofHVzZXxyZXF1aXJlfHJlcXVpcmVfb25jZXx2YXJ8d2hpbGV8YWJzdHJhY3R8aW50ZXJmYWNlfHB1YmxpY3xpbXBsZW1lbnRzfGV4dGVuZHN8cHJpdmF0ZXxwcm90ZWN0ZWR8cGFyZW50fHN0YXRpY3x0aHJvd3xudWxsfGVjaG98cHJpbnR8dHJhaXR8bmFtZXNwYWNlfHVzZXxmaW5hbHx5aWVsZHxnb3RvfGluc3RhbmNlb2Z8ZmluYWxseXx0cnl8Y2F0Y2gpXGIvaWcsIGNvbnN0YW50Oi9cYltBLVowLTlfXXsyLH1cYi9nfSk7UHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgicGhwIiwia2V5d29yZCIse2RlbGltaXRlcjovKFw/PnwmbHQ7XD9waHB8Jmx0O1w/KS9pZyx2YXJpYWJsZTovKFwkXHcrKVxiL2lnLCJwYWNrYWdlIjp7cGF0dGVybjovKFxcfG5hbWVzcGFjZVxzK3x1c2VccyspW1x3XFxdKy9nLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovXFwvfX19KTtQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJwaHAiLCJvcGVyYXRvciIse3Byb3BlcnR5OntwYXR0ZXJuOi8oLT4pW1x3XSsvZyxsb29rYmVoaW5kOiEwfX0pOyBQcmlzbS5sYW5ndWFnZXMubWFya3VwJiYoUHJpc20uaG9va3MuYWRkKCJiZWZvcmUtaGlnaGxpZ2h0IixmdW5jdGlvbihhKXsicGhwIj09PWEubGFuZ3VhZ2UmJihhLnRva2VuU3RhY2s9W10sYS5jb2RlPWEuY29kZS5yZXBsYWNlKC8oPzombHQ7XD9waHB8Jmx0O1w/fDxcP3BocHw8XD8pW1x3XFddKj8oPzpcPyZndDt8XD8+KS9pZyxmdW5jdGlvbihiKXthLnRva2VuU3RhY2sucHVzaChiKTtyZXR1cm4ie3t7UEhQIithLnRva2VuU3RhY2subGVuZ3RoKyJ9fX0ifSkpfSksUHJpc20uaG9va3MuYWRkKCJhZnRlci1oaWdobGlnaHQiLGZ1bmN0aW9uKGEpe2lmKCJwaHAiPT09YS5sYW5ndWFnZSl7Zm9yKHZhciBiPTAsYztjPWEudG9rZW5TdGFja1tiXTtiKyspYS5oaWdobGlnaHRlZENvZGU9YS5oaWdobGlnaHRlZENvZGUucmVwbGFjZSgie3t7UEhQIisoYisxKSsifX19IixQcmlzbS5oaWdobGlnaHQoYyxhLmdyYW1tYXIsInBocCIpKTthLmVsZW1lbnQuaW5uZXJIVE1MPWEuaGlnaGxpZ2h0ZWRDb2RlfX0pLCBQcmlzbS5ob29rcy5hZGQoIndyYXAiLGZ1bmN0aW9uKGEpeyJwaHAiPT09YS5sYW5ndWFnZSYmIm1hcmt1cCI9PT1hLnR5cGUmJihhLmNvbnRlbnQ9YS5jb250ZW50LnJlcGxhY2UoLyhce1x7XHtQSFBbMC05XStcfVx9XH0pL2csJzxzcGFuIGNsYXNzPSJ0b2tlbiBwaHAiPiQxPC9zcGFuPicpKX0pLFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoInBocCIsImNvbW1lbnQiLHttYXJrdXA6e3BhdHRlcm46LygmbHQ7fDwpW14/XVwvPyguKj8pKD58Jmd0OykvZyxpbnNpZGU6UHJpc20ubGFuZ3VhZ2VzLm1hcmt1cH0scGhwOi9ce1x7XHtQSFBbMC05XStcfVx9XH0vZ30pKTs7ClByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoInBocCIsInZhcmlhYmxlIix7InRoaXMiOi9cJHRoaXMvZyxnbG9iYWw6L1wkXz8oR0xPQkFMU3xTRVJWRVJ8R0VUfFBPU1R8RklMRVN8UkVRVUVTVHxTRVNTSU9OfEVOVnxDT09LSUV8SFRUUF9SQVdfUE9TVF9EQVRBfGFyZ2N8YXJndnxwaHBfZXJyb3Jtc2d8aHR0cF9yZXNwb25zZV9oZWFkZXIpL2csc2NvcGU6e3BhdHRlcm46L1xiW1x3XFxdKzo6L2csaW5zaWRlOntrZXl3b3JkOi8oc3RhdGljfHNlbGZ8cGFyZW50KS8scHVuY3R1YXRpb246Lyg6OnxcXCkvfX19KTs7CihmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoKHR8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKGUpKX1mdW5jdGlvbiBuKGUsdCxuKXt2YXIgcj10LnJlcGxhY2UoL1xzKy9nLCIiKS5zcGxpdCgiLCIpLGk9K2UuZ2V0QXR0cmlidXRlKCJkYXRhLWxpbmUtb2Zmc2V0Iil8fDAscz1wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZSkubGluZUhlaWdodCk7Zm9yKHZhciBvPTAsdTt1PXJbbysrXTspe3U9dS5zcGxpdCgiLSIpO3ZhciBhPSt1WzBdLGY9K3VbMV18fGEsbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLnRleHRDb250ZW50PUFycmF5KGYtYSsyKS5qb2luKCIgXHJcbiIpO2wuY2xhc3NOYW1lPShufHwiIikrIiBsaW5lLWhpZ2hsaWdodCI7bC5zZXRBdHRyaWJ1dGUoImRhdGEtc3RhcnQiLGEpO2Y+YSYmbC5zZXRBdHRyaWJ1dGUoImRhdGEtZW5kIixmKTtsLnN0eWxlLnRvcD0oYS1pLTEpKnMrInB4IjsoZS5xdWVyeVNlbGVjdG9yKCJjb2RlIil8fGUpLmFwcGVuZENoaWxkKGwpfX1mdW5jdGlvbiByKCl7dmFyIHQ9bG9jYXRpb24uaGFzaC5zbGljZSgxKTtlKCIudGVtcG9yYXJ5LmxpbmUtaGlnaGxpZ2h0IikuZm9yRWFjaChmdW5jdGlvbihlKXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9KTt2YXIgcj0odC5tYXRjaCgvXC4oW1xkLC1dKykkLyl8fFssIiJdKVsxXTtpZighcnx8ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCkpcmV0dXJuO3ZhciBpPXQuc2xpY2UoMCx0Lmxhc3RJbmRleE9mKCIuIikpLHM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaSk7aWYoIXMpcmV0dXJuO3MuaGFzQXR0cmlidXRlKCJkYXRhLWxpbmUiKXx8cy5zZXRBdHRyaWJ1dGUoImRhdGEtbGluZSIsIiIpO24ocyxyLCJ0ZW1wb3JhcnkgIik7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnRlbXBvcmFyeS5saW5lLWhpZ2hsaWdodCIpLnNjcm9sbEludG9WaWV3KCl9aWYoIXdpbmRvdy5QcmlzbSlyZXR1cm47dmFyIHQ9Y3JsZj0vXHI/XG58XHIvZyxpPTA7UHJpc20uaG9va3MuYWRkKCJhZnRlci1oaWdobGlnaHQiLGZ1bmN0aW9uKHQpe3ZhciBzPXQuZWxlbWVudC5wYXJlbnROb2RlLG89cyYmcy5nZXRBdHRyaWJ1dGUoImRhdGEtbGluZSIpO2lmKCFzfHwhb3x8IS9wcmUvaS50ZXN0KHMubm9kZU5hbWUpKXJldHVybjtjbGVhclRpbWVvdXQoaSk7ZSgiLmxpbmUtaGlnaGxpZ2h0IixzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pO24ocyxvKTtpPXNldFRpbWVvdXQociwxKX0pO2FkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHIpfSkoKTs7ClByaXNtLmhvb2tzLmFkZCgiYWZ0ZXItaGlnaGxpZ2h0IixmdW5jdGlvbihlKXt2YXIgdD1lLmVsZW1lbnQucGFyZW50Tm9kZTtpZighdHx8IS9wcmUvaS50ZXN0KHQubm9kZU5hbWUpfHx0LmNsYXNzTmFtZS5pbmRleE9mKCJsaW5lLW51bWJlcnMiKT09PS0xKXtyZXR1cm59dmFyIG49MStlLmNvZGUuc3BsaXQoIlxuIikubGVuZ3RoO3ZhciByO2xpbmVzPW5ldyBBcnJheShuKTtsaW5lcz1saW5lcy5qb2luKCI8c3Bhbj48L3NwYW4+Iik7cj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ci5jbGFzc05hbWU9ImxpbmUtbnVtYmVycy1yb3dzIjtyLmlubmVySFRNTD1saW5lcztpZih0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1zdGFydCIpKXt0LnN0eWxlLmNvdW50ZXJSZXNldD0ibGluZW51bWJlciAiKyhwYXJzZUludCh0LmdldEF0dHJpYnV0ZSgiZGF0YS1zdGFydCIpLDEwKS0xKX1lLmVsZW1lbnQuYXBwZW5kQ2hpbGQocil9KQo7CihmdW5jdGlvbigpe2lmKCFzZWxmLlByaXNtfHwhc2VsZi5kb2N1bWVudHx8IWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpcmV0dXJuO3ZhciBlPXtqczoiamF2YXNjcmlwdCIsaHRtbDoibWFya3VwIixzdmc6Im1hcmt1cCJ9O0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInByZVtkYXRhLXNyY10iKSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10LmdldEF0dHJpYnV0ZSgiZGF0YS1zcmMiKSxyPShuLm1hdGNoKC9cLihcdyspJC8pfHxbLCIiXSlbMV0saT1lW3JdfHxyLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY29kZSIpO3MuY2xhc3NOYW1lPSJsYW5ndWFnZS0iK2k7dC50ZXh0Q29udGVudD0iIjtzLnRleHRDb250ZW50PSJMb2FkaW5n4oCmIjt0LmFwcGVuZENoaWxkKHMpO3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtvLm9wZW4oIkdFVCIsbiwhMCk7by5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZihvLnJlYWR5U3RhdGU9PTQpaWYoby5zdGF0dXM8NDAwJiZvLnJlc3BvbnNlVGV4dCl7cy50ZXh0Q29udGVudD1vLnJlc3BvbnNlVGV4dDtQcmlzbS5oaWdobGlnaHRFbGVtZW50KHMpfWVsc2Ugby5zdGF0dXM+PTQwMD9zLnRleHRDb250ZW50PSLinJYgRXJyb3IgIitvLnN0YXR1cysiIHdoaWxlIGZldGNoaW5nIGZpbGU6ICIrby5zdGF0dXNUZXh0OnMudGV4dENvbnRlbnQ9IuKcliBFcnJvcjogRmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBlbXB0eSJ9O28uc2VuZChudWxsKX0pfSkoKTs7Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/namespaces/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/namespaces/CGContacts.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTIwMTkxOTU3MDAiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMjAxOTE5NTcwMCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTY1NTUxMDAyMSI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xNjU1NTEwMDIxIiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgbmFtZXNwYWNlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCI+XDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPlw8L3NtYWxsPkNHQ29udGFjdHM8L2gxPgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5DbGFzc2VzPC9oMj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfYWRkcmVzcy5odG1sIj5jb250YWN0X2FkZHJlc3M8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyBkZWZpbmVzIGEgcGh5c2ljYWwgYWRkcmVzcy48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3N1Yi5odG1sIj5jb250YWN0X3N1YjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BbiBhYnN0cmFjdCBjbGFzcyB0byBkZXNjcmliZSBhIGJhc2ljIG9iamVjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BIGNsYXNzIHRvIHJlcHJlc2VudCBhIFVSTCBvYmplY3Qgd2l0aGluIGEgY29udGFjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NpbXBsZV92YWx1ZS5odG1sIj5jb250YWN0X3NpbXBsZV92YWx1ZTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5UaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgZGVmaW5lcyBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIHZhbHVlLjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2luZ2xlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2luZ2xlX3ZhbHVlPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPlRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdCBkZWZpbmVzIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIG9ubHkgYSBzaW5nbGUgdmFsdWUsIGFuZCBjYW4gb25seSBoYXZlIG9uZSBvZiB0aGlzIHR5cGUuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zbWFydHkuaHRtbCI+Y29udGFjdF9zbWFydHk8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSB1dGlsaXR5IGNsYXNzIGNvbnRhaW5pbmcgc21hcnR5IHBsdWdpbnMuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jcmVhdG9yLmh0bWwiPmNvbnRhY3RfY3JlYXRvcjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBhc3NvY2lhdGluZyBhIGNyZWF0b3IgcHJvZXBydHkgd2l0aCBhIGNvbnRhY3QuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdC5odG1sIj5jb250YWN0PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPkEgY29udGFjdCBoYXMgbnVtZXJvdXMgcHJvcGVydGllcyAoZnVsbCBuYW1lLCBuaWNrbmFtZSwgdGl0bGUsIGNvbXBhbnksIGRpdmlzaW9uLCByb2xlCmNhbiBiZWxvbmcgdG8gemVybyBvciBtb3JlIGNhdGVnb3JpZXMgKHdoaWNoIGNhbiBiZSBuZXN0ZWQpCmFuZCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBvYmplY3RzCiAgIHNvbWUgb2JqZWN0cyAobmFtZSkgY2FuIG9ubHkgZXhpc3Qgb25jZQogICBvdGhlciBvYmplY3RzIGNhbiBleGlzdCBtdWx0aXBsZSB0aW1lcwogICAgIHRoZXNlIG9iamVjdHMgZWFjaCBoYXZlIGEgbGFiZWwKICAgICBhbmQgY2FuIGJlIHByZWZlcnJlZApuYW1lczoKICBpZiBhIGZ1bGxuYW1lIGlzIHNldCwgaXQgaXMgdXNlZCBhcyB0aGUgZGlzcGxheSBuYW1lLjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2NvcmUwMS5odG1sIj5jb250YWN0X3Njb3JlMDE8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBzaW1wbGUgY2xhc3MgdG8gYWxsb3cgc3RvcmluZyBhIGRhaWx5IHdhZ2UgKGEgbnVtYmVyKSB3aXRoIGEgY29udGFjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2Nvb3Jkcy5odG1sIj5jb250YWN0X2Nvb3JkczwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5BIGNsYXNzIHRvIHJlcHJlc2VudCBhIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgcGFpci48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5UaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYSBxdWVyeSBmcm9tIGNvbnRhY3RfcXVlcnkuPC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9kYWlseXdhZ2UuaHRtbCI+Y29udGFjdF9kYWlseXdhZ2U8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBzaW1wbGUgY2xhc3MgdG8gYWxsb3cgc3RvcmluZyBhIGRhaWx5IHdhZ2UgKGEgbnVtYmVyKSB3aXRoIGEgY29udGFjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3BhZ2luYXRpb24uaHRtbCI+Y29udGFjdF9wYWdpbmF0aW9uPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPlRoaXMgY2xhc3MgbWFrZXMgaXQgZWFzeSB0byBnZW5lcmF0ZSBhIHBhZ2luYXRpb24gdXNlciBpbnRlcmZhY2UgdG8gc2Nyb2xsIHRocm91Z2ggcGFnZXMgb2YgcmVzdWx0cyBtYXRjaGluZyB0aGUgc3BlY2lmaWVkIHF1ZXJ5LjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNpbXBsZSBzdHJpbmcgcHJvcGVydHkgZm9yIGEgY29udGFjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Bob25lLmh0bWwiPmNvbnRhY3RfcGhvbmU8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBwaG9uZSBudW1iZXIgaGFzIGEgdHlwZSwgYXMgd2VsbCBhcyBhIGxhYmVsIGFuZCB2YWx1ZS48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy51dGlscy5odG1sIj51dGlsczwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxlbT5UaGlzIGNsYXNzIHByb3ZpZGVzIHZhcmlvdXMgc3RhdGljIGFwcGxpY2F0aW9uIGxldmVsIHV0aWxpdGllcy48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+QSBjbGFzcyB0byByZXByZXNudCBhbiBlbWFpbCBvYmplY3Qgd2l0aGluIGEgY29udGFjdC48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyBjb250YWlucyBhbGwgb2YgdGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgdG8gY29sbGVjdCBhIHNlcmllcyBvZiBjb250YWN0cyBtYXRjaGluZyBhIGNyaXRlcmlhLjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGF0ZS5odG1sIj5jb250YWN0X2RhdGU8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48ZW0+VGhpcyBjbGFzcyByZXByZXNlbnRzIGEgZGF0ZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LjwvZW0+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNhdGVnb3J5Lmh0bWwiPmNhdGVnb3J5PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPkEgY2xhc3MgdG8gcmVwcmVzZW50IGEgY2F0ZWdvcnkgd2l0aGluIHRoZSBDR0NvbnRhY3RzIG1vZHVsZS48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtPkEgY2xhc3MgdG8gcmVwcmVzZW50IGEgbmFtZS48L2VtPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pk5hbWVzcGFjZSBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvZGVmYXVsdC5odG1sIj5cPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZXNwYWNlLXdyYXBwZXIiPlxDR0NvbnRhY3RzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/namespaces/default.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT5DR0NvbnRhY3RzIDEuMy4xPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iIi8+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIi8+CgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9jc3MvYm9vdHN0cmFwLWNvbWJpbmVkLm5vLWljb25zLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS8zLjIuMS9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CiAgICA8bGluayBocmVmPSIuLi9jc3MvcHJpc20uY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy90ZW1wbGF0ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgCiAgICA8IS0tW2lmIGx0IElFIDldPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHRtbDVzaGltLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9odG1sNS5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDwhW2VuZGlmXS0tPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEwLjIubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL3VpLzEuMTAuMy9qcXVlcnktdWkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvanF1ZXJ5LnNtb290aC1zY3JvbGwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3ByaXNtLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRPRE86IEFkZCBodHRwOi8vanNjcm9sbHBhbmUua2VsdmlubHVjay5jb20vIHRvIHN0eWxlIHRoZSBzY3JvbGxiYXJzIGZvciBicm93c2VycyBub3QgdXNpbmcgd2Via2l0LS0+CiAgICAKICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNzJ4NzIiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iMTE0eDExNCIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTE0eDExNC5wbmciLz4KPC9oZWFkPgo8Ym9keT4KCjxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZml4ZWQtdG9wIj4KICAgIDxkaXYgY2xhc3M9Im5hdmJhci1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tbmF2YmFyIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIubmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWVsbGlwc2lzLXZlcnRpY2FsIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9ImJyYW5kIiBocmVmPSIuLi9pbmRleC5odG1sIj5DR0NvbnRhY3RzIDEuMy4xPC9hPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2LWNvbGxhcHNlIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IHB1bGwtcmlnaHQiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9pbmRleC5odG1sIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIERvY3VtZW50YXRpb24gPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9ImNoYXJ0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJ0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtDbGFzcyBoaWVyYXJjaHkgZGlhZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0icmVwb3J0cy1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtFcnJvcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tbGlzdC1hbHQiPjwvaT4mIzE2MDtNYXJrZXJzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwhLS08ZGl2IGNsYXNzPSJnb190b190b3AiPi0tPgogICAgPCEtLTxhIGhyZWY9IiNfX18iIHN0eWxlPSJjb2xvcjogaW5oZXJpdCI+QmFjayB0byB0b3AmIzE2MDsmIzE2MDs8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPjwvYT4tLT4KICAgIDwhLS08L2Rpdj4tLT4KPC9kaXY+Cgo8ZGl2IGlkPSJfX18iIGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIHNpZGViYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbiIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAiPgogICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1ncm91cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFjY29yZGlvbi10b2dnbGUgIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjbmFtZXNwYWNlLTIwNzMzNDY2MzgiPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9uYW1lc3BhY2VzL2RlZmF1bHQuaHRtbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyBwYWRkaW5nLWxlZnQ6IDAiPlw8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJuYW1lc3BhY2UtMjA3MzM0NjYzOCIgY2xhc3M9ImFjY29yZGlvbi1ib2R5IGNvbGxhcHNlIGluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+CiAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWNjb3JkaW9uLWhlYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYWNjb3JkaW9uLXRvZ2dsZSBjb2xsYXBzZWQiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYW1lc3BhY2UtMTA1NTQ1OTY2OCI+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDMwcHg7IHBhZGRpbmctbGVmdDogMCI+Q0dDb250YWN0czwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9Im5hbWVzcGFjZS0xMDU1NDU5NjY4IiBjbGFzcz0iYWNjb3JkaW9uLWJvZHkgY29sbGFwc2UgIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjY29yZGlvbi1pbm5lciI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2FkZHJlc3MuaHRtbCI+Y29udGFjdF9hZGRyZXNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zdWIuaHRtbCI+Y29udGFjdF9zdWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3VybC5odG1sIj5jb250YWN0X3VybDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc2ltcGxlX3ZhbHVlLmh0bWwiPmNvbnRhY3Rfc2ltcGxlX3ZhbHVlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9zaW5nbGVfdmFsdWUuaHRtbCI+Y29udGFjdF9zaW5nbGVfdmFsdWU8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3NtYXJ0eS5odG1sIj5jb250YWN0X3NtYXJ0eTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfY3JlYXRvci5odG1sIj5jb250YWN0X2NyZWF0b3I8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0Lmh0bWwiPmNvbnRhY3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Njb3JlMDEuaHRtbCI+Y29udGFjdF9zY29yZTAxPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9jb29yZHMuaHRtbCI+Y29udGFjdF9jb29yZHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3Jlc3VsdHNldC5odG1sIj5jb250YWN0X3Jlc3VsdHNldDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3RfZGFpbHl3YWdlLmh0bWwiPmNvbnRhY3RfZGFpbHl3YWdlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9wYWdpbmF0aW9uLmh0bWwiPmNvbnRhY3RfcGFnaW5hdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjbGFzcyI+PGEgaHJlZj0iLi4vY2xhc3Nlcy9DR0NvbnRhY3RzLmNvbnRhY3Rfc3RyaW5nLmh0bWwiPmNvbnRhY3Rfc3RyaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY29udGFjdF9waG9uZS5odG1sIj5jb250YWN0X3Bob25lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMudXRpbHMuaHRtbCI+dXRpbHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2VtYWlsLmh0bWwiPmNvbnRhY3RfZW1haWw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X3F1ZXJ5Lmh0bWwiPmNvbnRhY3RfcXVlcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X2RhdGUuaHRtbCI+Y29udGFjdF9kYXRlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImNsYXNzIj48YSBocmVmPSIuLi9jbGFzc2VzL0NHQ29udGFjdHMuY2F0ZWdvcnkuaHRtbCI+Y2F0ZWdvcnk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iY2xhc3MiPjxhIGhyZWY9Ii4uL2NsYXNzZXMvQ0dDb250YWN0cy5jb250YWN0X25hbWUuaHRtbCI+Y29udGFjdF9uYW1lPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxkaXYgY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW44IGNvbnRlbnQgbmFtZXNwYWNlIj4KICAgICAgICAgICAgICAgICAgICA8bmF2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgICAgICA8aDE+PHNtYWxsPjwvc21hbGw+XDwvaDE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPk5hbWVzcGFjZXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtaG92ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+Q0dDb250YWN0czwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YXNpZGUgY2xhc3M9InNwYW40IGRldGFpbHNiYXIiPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pk5hbWVzcGFjZSBoaWVyYXJjaHk8L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9ImhpZXJhcmNoeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWVzcGFjZS13cmFwcGVyIj5cPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICAgIDwvYXNpZGU+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/reports/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/apidoc/reports/deprecated.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT4gICAgICZyYXF1bzsgRGVwcmVjYXRlZCBlbGVtZW50cwo8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIiLz4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiLz4KCiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL3R3aXR0ZXItYm9vdHN0cmFwLzIuMy4yL2Nzcy9ib290c3RyYXAtY29tYmluZWQubm8taWNvbnMubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzMuMi4xL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy9wcmlzbS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgPGxpbmsgaHJlZj0iLi4vY3NzL3RlbXBsYXRlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIi8+CiAgICAKICAgIDwhLS1baWYgbHQgSUUgOV0+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9odG1sNXNoaW0uZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2h0bWw1LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPCFbZW5kaWZdLS0+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTEuMTAuMi5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vdWkvMS4xMC4zL2pxdWVyeS11aS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9qcXVlcnkuc21vb3RoLXNjcm9sbC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvcHJpc20ubWluLmpzIj48L3NjcmlwdD4KICAgIDwhLS0gVE9ETzogQWRkIGh0dHA6Ly9qc2Nyb2xscGFuZS5rZWx2aW5sdWNrLmNvbS8gdG8gc3R5bGUgdGhlIHNjcm9sbGJhcnMgZm9yIGJyb3dzZXJzIG5vdCB1c2luZyB3ZWJraXQtLT4KICAgIAogICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24ucG5nIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSI3Mng3MiIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tNzJ4NzIucG5nIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxMTR4MTE0IiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi0xMTR4MTE0LnBuZyIvPgo8L2hlYWQ+Cjxib2R5PgoKPGRpdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1maXhlZC10b3AiPgogICAgPGRpdiBjbGFzcz0ibmF2YmFyLWlubmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1uYXZiYXIiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXYtY29sbGFwc2UiPgogICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tZWxsaXBzaXMtdmVydGljYWwiPjwvaT4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0iYnJhbmQiIGhyZWY9Ii4uL2luZGV4Lmh0bWwiPkNHQ29udGFjdHMgMS4zLjE8L2E+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtY29sbGFwc2UiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJuYXYgcHVsbC1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2luZGV4Lmh0bWwiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgRG9jdW1lbnRhdGlvbiA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0iY2hhcnRzLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO0NsYXNzIGhpZXJhcmNoeSBkaWFncmFtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJyZXBvcnRzLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO0Vycm9ycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4xPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO01hcmtlcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPCEtLTxkaXYgY2xhc3M9ImdvX3RvX3RvcCI+LS0+CiAgICA8IS0tPGEgaHJlZj0iI19fXyIgc3R5bGU9ImNvbG9yOiBpbmhlcml0Ij5CYWNrIHRvIHRvcCYjMTYwOyYjMTYwOzxpIGNsYXNzPSJpY29uLXVwbG9hZCBpY29uLXdoaXRlIj48L2k+PC9hPi0tPgogICAgPCEtLTwvZGl2Pi0tPgo8L2Rpdj4KCjxkaXYgaWQ9Il9fXyIgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjIgc2lkZWJhciI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0ic2lkZS1uYXYgbmF2IG5hdi1saXN0Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LWhlYWRlciI+TmF2aWdhdGlvbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vIj48aSBjbGFzcz0iaWNvbi1zdG9wIj48L2k+PC9hPjxzcGFuIGNsYXNzPSJkaXZpZGVyIj5cPC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+RGVwcmVjYXRlZCBlbGVtZW50czwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8ZGl2IGlkPSJtYXJrZXItYWNjb3JkaW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+Tm8gZGVwcmVjYXRlZCBlbGVtZW50cyBoYXZlIGJlZW4gZm91bmQgaW4gdGhpcyBwcm9qZWN0LjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8Zm9vdGVyIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1zZWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWNvZGUiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vbmFtZXNwYWNlcy9DR0NvbnRhY3RzLmh0bWwiPlxDR0NvbnRhY3RzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLWJhci1jaGFydCI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL2dyYXBocy9jbGFzcy5odG1sIj5DbGFzcyBIaWVyYXJjaHkgRGlhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1wdXNocGluIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+RXJyb3JzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+TWFya2VyczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPGhyIC8+CiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiBpcyBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwZG9jLm9yZy8iPnBocERvY3VtZW50b3IgPC9hPiBhbmQgYXV0aG9yZWQKICAgICAgICAgICAgICAgICAgICBvbiBKYW51YXJ5IDE2dGgsIDIwMTYgYXQgMTI6MzEuCiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICA8L3NlY3Rpb24+CiAgICA8L2Zvb3Rlcj4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/reports/errors.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT4gICAgICZyYXF1bzsgQ29tcGlsYXRpb24gZXJyb3JzCjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IiIvPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiIvPgoKICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vdHdpdHRlci1ib290c3RyYXAvMi4zLjIvY3NzL2Jvb3RzdHJhcC1jb21iaW5lZC5uby1pY29ucy5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvMy4yLjEvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiPgogICAgPGxpbmsgaHJlZj0iLi4vY3NzL3ByaXNtLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIi8+CiAgICA8bGluayBocmVmPSIuLi9jc3MvdGVtcGxhdGUuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiLz4KICAgIAogICAgPCEtLVtpZiBsdCBJRSA5XT4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2h0bWw1c2hpbS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvaHRtbDUuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8IVtlbmRpZl0tLT4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMS4xMC4yLm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NvZGUuanF1ZXJ5LmNvbS91aS8xLjEwLjMvanF1ZXJ5LXVpLm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL3R3aXR0ZXItYm9vdHN0cmFwLzIuMy4yL2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uL2pzL2pxdWVyeS5zbW9vdGgtc2Nyb2xsLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9wcmlzbS5taW4uanMiPjwvc2NyaXB0PgogICAgPCEtLSBUT0RPOiBBZGQgaHR0cDovL2pzY3JvbGxwYW5lLmtlbHZpbmx1Y2suY29tLyB0byBzdHlsZSB0aGUgc2Nyb2xsYmFycyBmb3IgYnJvd3NlcnMgbm90IHVzaW5nIHdlYmtpdC0tPgogICAgCiAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIvPgogICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi03Mng3Mi5wbmciLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjExNHgxMTQiIGhyZWY9Ii4uL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIi8+CjwvaGVhZD4KPGJvZHk+Cgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1lbGxpcHNpcy12ZXJ0aWNhbCI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLi4vaW5kZXguaHRtbCI+Q0dDb250YWN0cyAxLjMuMTwvYT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBwdWxsLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vaW5kZXguaHRtbCIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSSBEb2N1bWVudGF0aW9uIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJjaGFydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFydHMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7Q2xhc3MgaGllcmFyY2h5IGRpYWdyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biIgaWQ9InJlcG9ydHMtbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9lcnJvcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7RXJyb3JzIDxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbmZvIHB1bGwtcmlnaHQiPjE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9yZXBvcnRzL21hcmtlcnMuaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWxpc3QtYWx0Ij48L2k+JiMxNjA7TWFya2VycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4wPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8IS0tPGRpdiBjbGFzcz0iZ29fdG9fdG9wIj4tLT4KICAgIDwhLS08YSBocmVmPSIjX19fIiBzdHlsZT0iY29sb3I6IGluaGVyaXQiPkJhY2sgdG8gdG9wJiMxNjA7JiMxNjA7PGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT48L2E+LS0+CiAgICA8IS0tPC9kaXY+LS0+CjwvZGl2PgoKPGRpdiBpZD0iX19fIiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMiBzaWRlYmFyIj4KCiAgICAgICAgICAgIDx1bCBjbGFzcz0ic2lkZS1uYXYgbmF2IG5hdi1saXN0Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LWhlYWRlciI+TmF2aWdhdGlvbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiNjbGFzcy5jb250YWN0X3Njb3JlMDEucGhwIj48aSBjbGFzcz0iaWNvbi1maWxlIj48L2k+IGNsYXNzLmNvbnRhY3Rfc2NvcmUwMS5waHA8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuMTAgb2Zmc2V0MiI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vIj48aSBjbGFzcz0iaWNvbi1yZW1vdmUtc2lnbiI+PC9pPjwvYT48c3BhbiBjbGFzcz0iZGl2aWRlciI+XDwvc3Bhbj48L2xpPgogICAgICAgICAgICAgICAgPGxpPkNvbXBpbGF0aW9uIEVycm9yczwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhY2thZ2UtY29udGVudHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9ImNsYXNzLmNvbnRhY3Rfc2NvcmUwMS5waHAiIGlkPSJjbGFzcy5jb250YWN0X3Njb3JlMDEucGhwIj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWZpbGUiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzLmNvbnRhY3Rfc2NvcmUwMS5waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0iZmxvYXQ6IHJpZ2h0O3BhZGRpbmctcmlnaHQ6IDEwcHg7Ij4xPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgbWFya2VycyB0YWJsZS1ib3JkZXJlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlR5cGU8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TGluZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ZXJyb3I8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjE5PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5ObyBzdW1tYXJ5IGZvciBtZXRob2QgdmFsaWRhdGUoKTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWNrYWdlLWNvbnRlbnRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPGZvb3RlciBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0icm93LWZsdWlkIj4KICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuMTAgb2Zmc2V0MSI+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCBmb290ZXItc2VjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1jb2RlIj48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL25hbWVzcGFjZXMvQ0dDb250YWN0cy5odG1sIj5cQ0dDb250YWN0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMT48aSBjbGFzcz0iaWNvbi1iYXItY2hhcnQiPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9ncmFwaHMvY2xhc3MuaHRtbCI+Q2xhc3MgSGllcmFyY2h5IERpYWdyYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tcHVzaHBpbiI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPkVycm9yczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPk1hcmtlcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxociAvPgogICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaXMgcG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBocGRvYy5vcmcvIj5waHBEb2N1bWVudG9yIDwvYT4gYW5kIGF1dGhvcmVkCiAgICAgICAgICAgICAgICAgICAgb24gSmFudWFyeSAxNnRoLCAyMDE2IGF0IDEyOjMxLgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9mb290ZXI+CjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/apidoc/reports/markers.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9MCIvPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDx0aXRsZT4gICAgICZyYXF1bzsgTWFya2Vycwo8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIiLz4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiLz4KCiAgICA8bGluayBocmVmPSJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL3R3aXR0ZXItYm9vdHN0cmFwLzIuMy4yL2Nzcy9ib290c3RyYXAtY29tYmluZWQubm8taWNvbnMubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzMuMi4xL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIDxsaW5rIGhyZWY9Ii4uL2Nzcy9wcmlzbS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIvPgogICAgPGxpbmsgaHJlZj0iLi4vY3NzL3RlbXBsYXRlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIi8+CiAgICAKICAgIDwhLS1baWYgbHQgSUUgOV0+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9odG1sNXNoaW0uZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2h0bWw1LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPCFbZW5kaWZdLS0+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTEuMTAuMi5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vdWkvMS4xMC4zL2pxdWVyeS11aS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS90d2l0dGVyLWJvb3RzdHJhcC8yLjMuMi9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9qcXVlcnkuc21vb3RoLXNjcm9sbC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vanMvcHJpc20ubWluLmpzIj48L3NjcmlwdD4KICAgIDwhLS0gVE9ETzogQWRkIGh0dHA6Ly9qc2Nyb2xscGFuZS5rZWx2aW5sdWNrLmNvbS8gdG8gc3R5bGUgdGhlIHNjcm9sbGJhcnMgZm9yIGJyb3dzZXJzIG5vdCB1c2luZyB3ZWJraXQtLT4KICAgIAogICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24ucG5nIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSI3Mng3MiIgaHJlZj0iLi4vaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tNzJ4NzIucG5nIi8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxMTR4MTE0IiBocmVmPSIuLi9pbWFnZXMvYXBwbGUtdG91Y2gtaWNvbi0xMTR4MTE0LnBuZyIvPgo8L2hlYWQ+Cjxib2R5PgoKPGRpdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1maXhlZC10b3AiPgogICAgPGRpdiBjbGFzcz0ibmF2YmFyLWlubmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1uYXZiYXIiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXYtY29sbGFwc2UiPgogICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tZWxsaXBzaXMtdmVydGljYWwiPjwvaT4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0iYnJhbmQiIGhyZWY9Ii4uL2luZGV4Lmh0bWwiPkNHQ29udGFjdHMgMS4zLjE8L2E+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtY29sbGFwc2UiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJuYXYgcHVsbC1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2luZGV4Lmh0bWwiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkgRG9jdW1lbnRhdGlvbiA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIiBpZD0iY2hhcnRzLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcnRzIDxiIGNsYXNzPSJjYXJldCI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO0NsYXNzIGhpZXJhcmNoeSBkaWFncmFtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iIGlkPSJyZXBvcnRzLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyA8YiBjbGFzcz0iY2FyZXQiPjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3JlcG9ydHMvZXJyb3JzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO0Vycm9ycyA8c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW5mbyBwdWxsLXJpZ2h0Ij4xPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vcmVwb3J0cy9tYXJrZXJzLmh0bWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1saXN0LWFsdCI+PC9pPiYjMTYwO01hcmtlcnMgPHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWluZm8gcHVsbC1yaWdodCI+MDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPCEtLTxkaXYgY2xhc3M9ImdvX3RvX3RvcCI+LS0+CiAgICA8IS0tPGEgaHJlZj0iI19fXyIgc3R5bGU9ImNvbG9yOiBpbmhlcml0Ij5CYWNrIHRvIHRvcCYjMTYwOyYjMTYwOzxpIGNsYXNzPSJpY29uLXVwbG9hZCBpY29uLXdoaXRlIj48L2k+PC9hPi0tPgogICAgPCEtLTwvZGl2Pi0tPgo8L2Rpdj4KCjxkaXYgaWQ9Il9fXyIgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjIgc2lkZWJhciI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0ic2lkZS1uYXYgbmF2IG5hdi1saXN0Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ibmF2LWhlYWRlciI+TmF2aWdhdGlvbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic3BhbjEwIG9mZnNldDIiPgoKICAgICAgICAgICAgPHVsIGNsYXNzPSJicmVhZGNydW1iIj4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi8iPjxpIGNsYXNzPSJpY29uLW1hcC1tYXJrZXIiPjwvaT48L2E+PHNwYW4gY2xhc3M9ImRpdmlkZXIiPlw8L3NwYW4+PC9saT4KICAgICAgICAgICAgICAgIDxsaT5NYXJrZXJzPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj5ObyBtYXJrZXJzIGhhdmUgYmVlbiBmb3VuZCBpbiB0aGlzIHByb2plY3QuPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGlkPSJtYXJrZXItYWNjb3JkaW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxmb290ZXIgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQyIj4KICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic3BhbjEwIG9mZnNldDEiPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQgZm9vdGVyLXNlY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tY29kZSI+PC9pPjwvaDE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9uYW1lc3BhY2VzL0NHQ29udGFjdHMuaHRtbCI+XENHQ29udGFjdHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW40Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+PGkgY2xhc3M9Imljb24tYmFyLWNoYXJ0Ij48L2k+PC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLi4vZ3JhcGhzL2NsYXNzLmh0bWwiPkNsYXNzIEhpZXJhcmNoeSBEaWFncmFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzcGFuNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxPjxpIGNsYXNzPSJpY29uLXB1c2hwaW4iPjwvaT48L2gxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIuLi9yZXBvcnRzL2Vycm9ycy5odG1sIj5FcnJvcnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii4uL3JlcG9ydHMvbWFya2Vycy5odG1sIj5NYXJrZXJzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJyb3ctZmx1aWQiPgogICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNwYW4xMCBvZmZzZXQxIj4KICAgICAgICAgICAgICAgICAgICA8aHIgLz4KICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHBvd2VyZWQgYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5waHBkb2Mub3JnLyI+cGhwRG9jdW1lbnRvciA8L2E+IGFuZCBhdXRob3JlZAogICAgICAgICAgICAgICAgICAgIG9uIEphbnVhcnkgMTZ0aCwgMjAxNiBhdCAxMjozMS4KICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZm9vdGVyPgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgo8bGk+VmVyc2lvbiAxLjMKCTx1bD4KICAgICAgICA8bGk+QWRkcyBwZXJtaXNzaW9uIHRvIG1hbmFnZSBjYXRlZ29yaWVzLjwvbGk+Cgk8bGk+T24gc2F2ZSBlbnN1cmUgdGhhdCBhIGZ1bGwgbmFtZSBpcyBnZW5lcmF0ZWQuPC9saT4KCTxsaT5DaGFuZ2UgZGVmYXVsdCBzb3J0aW5nIG9yZGVyIHRvIGZ1bGxuYW1lLjwvbGk+Cgk8bGk+QWRkcyB0aGUgY29udGFjdF9zY29yZTAxIGNsYXNzIChhIHNjb3JlIGJldHdlZW4gMCBhbmQgMSkuICBPbmx5IG9uZSBvYmplY3Qgb2YgdGhpcyB0eXBlIGlzIGFsbG93ZWQuPC9saT4KCTxsaT5BZGRzIHRoZSBjZ2NvbnRhY3RzX2V4dHJhIGNvbmZpZyBlbnRyeSwgYW5kIGNvZGUgdG8gdXNlIGl0LiAgTm93IG9ubHkgZW1haWwscGhvbmUsYWRkcmVzcyx1cmwsIGFuZCBjcmVhdG9yIGZpZWxkcyBhcmUgc3RhbmRhcmQuPC9saT4KCTwvdWw+CjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgaXMgYSBtb2R1bGUgZm9yIG1hbmFnaW5nIGNvbnRhY3RzLiAgSXQgbWFuYWdlcyBhIHBob3RvLCBuYW1lcywgbmlja25hbWVzLCBjb21wYW55IG5hbWVzLCBtdWx0aXBsZSBwaHlzaWNhbCBhZGRyZXNzZXMsIGVtYWlsIGFkZHJlc3NlcyBhbmQgcGhvbmUgbnVtYmVycyBmb3IgZWFjaCBjb250YWN0LjwvcD4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgY2hlY2sgZm9yIGR1cGxpY2F0ZSBuYW1lcywgb3IgZHVwbGljYXRlIGVtYWlsIGFkZHJlc3Nlcy4gSXQgaXMgZW50aXJlbHkgcG9zc2libGUgdG8gaGF2ZSAyMCBjb250YWN0cyB3aXRoIHRoZSBzYW1lIGVtYWlsIGFkZHJlc3MgYW5kIHBoeXNpY2FsIGFkZHJlc3MuPC9wPgoKPGgzPkZlYXR1cmVzOjwvaDM+Cjx1bD4KICA8bGk+dmNhcmQgaW1wb3J0IChpbmNsdWRpbmcgYSB2Y2YgZmlsZSBjb250YWluaW5nIG11bHRpcGxlIHZjYXJkcykuPC9saT4KICA8bGk+dmNhcmQgZXhwb3J0PC9saT4KICA8bGk+QWxsb3dzIHR5aW5nIGEgY29udGFjdCB0byBhbiBGRVUgdXNlciBhY2NvdW50LjwvbGk+CiAgPGxpPkEganF1ZXJ5IHBsdWdpbiBmb3IgcXVpY2tseSBzZWxlY3RpbmcgYSBjb250YWN0IGZvciB1c2UgaW4gb3RoZXIgYXBwcy48L2xpPgogIDxsaT5FeHBvcnQgY29udGFjdHMgdG8gUERGIDxlbT4ocmVxdWlyZXMgdGhlIENHSFRNTDJQREYgbW9kdWxlKTwvZW0+PC9saT4KICA8bGk+bW9yZS4uLjwvbGk+CjwvdWw+Cgo8aDM+SG93IGRvIEkgdXNlIGl0OjwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgcHJpbWFyaWx5IGJ5IG1vZHVsZSBkZXZlbG9wZXJzIGFuZCBzb2x1dGlvbiBwcm92aWRlcnMgd2hlbiBidWlsZGluZyBhcHBsaWNhdGlvbnMgZm9yIHRoZWlyIGN1c3RvbWVycy4gIFRoaXMgbW9kdWxlIGhhcyBubyBmcm9udGVuZCBpbnRlcmZhY2UuPC9wPgo8cD5UaGlzIG1vZHVsZSBjb21lcyB3aXRoIGEgY29tcGxldGVseSBkb2N1bWVudGVkIEFQSSBmb3IgdXNlIGJ5IG1vZHVsZSBkZXZlbG9wZXJzIGFuZCBzb2x1dGlvbiBwcm92aWRlcnMuPC9wPgoKPGgzPkNvbmZpZyBFbnRyaWVzOjwvaDM+CjxwPlRoaXMgbW9kdWxlIHdpbGwgcmVhZCBmcm9tIGEgc3BlY2lhbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGluIHRoZSBDTVNNUyBjb25maWcucGhwIHRvIGZpbmQgZXh0cmEgY2xhc3NlcyB0aGF0IHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiBlZGl0aW5nIGEgY29udGFjdC4gIFRoaXMgdmFyaWFibGUgY29udGFpbnMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhYnNvbHV0ZSBjbGFzcyBuYW1lcyB0aGF0IGVpdGhlciBtdXN0IGJlIGxvYWRlZCwgb3IgbXVzdCBiZSBhdXRvLWxvYWRhYmxlLjwvcD4KPHA+aS5lOiA8Y29kZT4kY29uZmlnWydjZ2NvbnRhY3RzX2V4dHJhJ10gPSAnXENHQ29udGFjdHNcY29udGFjdF9kYWlseXdhZ2UsXENHQ29udGFjdHNcY29udGFjdF9zY29yZTAxJzs8L2NvZGU+PC9wPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGUgbW9kdWxlIGF1dGhvciBpcyBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiAgSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkEgYnVnIHRyYWNraW5nIGFuZCBmZWF0dXJlIHJlcXVlc3Qgc3lzdGVtIGhhcyBiZWVuIGNyZWF0ZWQgZm9yIHRoaXMgbW9kdWxlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY2djb250YWN0cyI+aGVyZTwvYT4uICBQbGVhc2UgYmUgdmVyYm9zZSBhbmQgZGVzY3JpcHRpdmUgd2hlbiBzdWJtaXR0aW5nIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzLCBhbmQgZm9yIGJ1ZyByZXBvcnRzIGVuc3VyZSB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBpc3N1ZS48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LiAgV2hlbiBkZXNjcmliaW5nIGFuIGlzc3VlIHBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byBwcm92aWRlIGFsbCByZWxhdmFudCBpbmZvcm1hdGlvbiwgYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0IG9yIHlvdXIgZGlzY3Vzc2lvbiBtYXkgYmUgaWdub3JlZC48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LiAgSG93ZXZlciwgcGxlYXNlIHVzZSB0aGlzIGFzIGEgbGFzdCByZXNvcnQsIGFuZCBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBmb2xsb3dlZCBhbGwgYXBwbGljYWJsZSBpbnN0cnVjdGlvbnMgb24gdGhlIGZvcmdlLCBpbiB0aGUgZm9ydW1zLCBldGMuPC9saT4KPC91bD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgpzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_categories_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6Q0FUU19QRVJNKSApIHJldHVybjsKCiRjYXRlZ29yaWVzID0gXENHQ29udGFjdHNcY2F0ZWdvcnk6OmdldF9hbGwoKTsKJHNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yaWVzJywkY2F0ZWdvcmllcyk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fY2F0ZWdvcmllc190YWIudHBsJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_contacts_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oQ0dDb250YWN0czo6UEVSTSkgKSByZXR1cm47CgovLyBnZXQgdGhlIGNvbnRhY3RzCi8vIHRvZG86IGFkZCBmaWx0ZXJpbmcgYW5kIHBhZ2luYXRpb24KJG9yaWdfZmlsdGVyID0gbmV3IFxDR0NvbnRhY3RzXGNvbnRhY3RfcXVlcnkoKTsKJG9yaWdfZmlsdGVyWydsaW1pdCddID0gMjU7IC8vIHRvZG8KJG9yaWdfZmlsdGVyWydjYXRjaGlsZHJlbiddID0gdHJ1ZTsKJGZpbHRlciA9ICRvcmlnX2ZpbHRlcjsKCiR0bXAgPSAkdGhpcy0+c2Vzc2lvbl9nZXQoJ2NvbnRhY3RfZmlsdGVyJyk7CmlmKCAkdG1wICkgJGZpbHRlciA9IHVuc2VyaWFsaXplKCR0bXApOwokb2Zmc2V0ID0gKGludCkkdGhpcy0+c2Vzc2lvbl9nZXQoJ2NvbnRhY3Rfb2Zmc2V0Jyk7CmlmKCBpc3NldCgkcGFyYW1zWydvZmZzZXQnXSkgKSB7CiAgICAkb2Zmc2V0ID0gbWF4KDAsKGludCkkcGFyYW1zWydvZmZzZXQnXSk7CiAgICAkdGhpcy0+c2Vzc2lvbl9wdXQoJ2NvbnRhY3Rfb2Zmc2V0Jywkb2Zmc2V0KTsKfQokZmlsdGVyWydvZmZzZXQnXSA9ICRvZmZzZXQ7CgppZiggaXNzZXQoJHBhcmFtc1snZmlsdGVyX3N1Ym1pdCddKSApIHsKICAgIC8vIHJlc2V0IHRoZSBvZmZzZXQKICAgICR0aGlzLT5zZXNzaW9uX3B1dCgnY29udGFjdF9vZmZzZXQnLDApOwogICAgJGZpbHRlclsnb2Zmc2V0J10gPSAwOwoKICAgIC8vIGFkanVzdCBhbmQgc2F2ZSB0aGUgZmlsdGVyCiAgICAkZmlsdGVyID0gJG9yaWdfZmlsdGVyOwogICAgJGZpbHRlclsnbGltaXQnXSA9IChpbnQpIGNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2ZpbHRlcl9wYWdlbGltaXQnKTsKICAgICRmaWx0ZXJbJ2NhdGVnb3J5J10gPSBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdmaWx0ZXJfY2F0ZWdvcnknKTsKICAgICRmaWx0ZXJbJ21vZGlmaWVkX3NpbmNlJ10gPSBzdHJ0b3RpbWUoY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZmlsdGVyX21vZGlmaWVkX3NpbmNlJykpOwogICAgJHRoaXMtPnNlc3Npb25fcHV0KCdjb250YWN0X2ZpbHRlcicsc2VyaWFsaXplKCRmaWx0ZXIpKTsKICAgICRvZmZzZXQgPSAkZmlsdGVyWydvZmZzZXQnXSA9IDA7Cn0KCiRycyA9ICRmaWx0ZXItPmV4ZWN1dGUoKTsKaWYoICRycy0+VG90YWxNYXRjaGVzKCkgPCAkZmlsdGVyWydvZmZzZXQnXSApIHsKICAgIC8vIGhhbmRsZXMgd2hlcmUgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIvb2Zmc2V0IGRvZXMgbm90IG1hdGNoIHRoZSBhbW91bnQgb2YgcmVjb3JkcyBpbiB0aGUgcXVlcnkuCiAgICAkb2Zmc2V0ID0gJGZpbHRlclsnb2Zmc2V0J10gPSAwOwogICAgJHRoaXMtPnNlc3Npb25fcHV0KCdjb250YWN0X29mZnNldCcsJG9mZnNldCk7CiAgICAkcnMgPSAkZmlsdGVyLT5leGVjdXRlKCk7Cn0KJHBhZ2luYXRpb24gPSAkcnMtPmdldF9wYWdpbmF0aW9uKCk7Cgokb3V0ID0gYXJyYXkoKTsKd2hpbGUoICEkcnMtPkVPRigpICkgewogICAgJG91dFtdID0gJHJzLT5nZXRfY29udGFjdCgpOwogICAgJHJzLT5Nb3ZlTmV4dCgpOwp9CmlmKCBjb3VudCgkb3V0KSApIHsKICAgICRzbWFydHktPmFzc2lnbignY29udGFjdHMnLCRvdXQpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdidWxrZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9idWxrY29udGFjdHMnLCRyZXR1cm5pZCkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdidWxrZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICBpZiggJHBhZ2luYXRpb25bJ3BhZ2Vjb3VudCddID4gMSApICRzbWFydHktPmFzc2lnbigncGFnaW5hdG9yJywkcGFnaW5hdGlvbik7Cn0KJHNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJfZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCxhcnJheSgnZmlsdGVyX3N1Ym1pdCc9PjEpKSk7CiRzbWFydHktPmFzc2lnbignZmlsdGVyX2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ2ZpbHRlcicsJGZpbHRlcik7CiRjYXRlZ29yaWVzID0gXENHQ29udGFjdHNcY2F0ZWdvcnk6OmdldF9hbGwoKTsKJGNhdF9saXN0ID0gYXJyYXkoJyc9PiR0aGlzLT5MYW5nKCdhbnknKSk7CmZvcmVhY2goICRjYXRlZ29yaWVzIGFzICRjYXQgKSB7CiAgICAkY2F0X2xpc3RbJGNhdFsnaWQnXV0gPSBzdHJfcmVwZWF0KCcmbmJzcDsmbmJzcDsnLCRjYXRbJ2RlcHRoJ10pLiRjYXRbJ25hbWUnXTsKfQokc21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5X2xpc3QnLCRjYXRfbGlzdCk7CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcmllcycsJGNhdGVnb3JpZXMpOwokcGFnZWxpbWl0cyA9IGFycmF5KDU9PjUsMjU9PjI1LDUwPT41MCwxMDA9PjEwMCw1MDA9PjUwMCk7CiRzbWFydHktPmFzc2lnbigncGFnZWxpbWl0cycsJHBhZ2VsaW1pdHMpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2NvbnRhY3RzX3RhYi50cGwnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_settings_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmVjaG8gX19GSUxFX187Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/email.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAITSURBVBgZpcHLThNhGIDh9/vn7/RApwc5VCmFWBPi1mvwAlx7BW69Afeu3bozcSE7E02ILjCRhRrds8AEbKVS2gIdSjvTmf+TYqLu+zyiqszDMCf75PnnnVwhuNcLpwsXk8Q4BYeSOsWpkqrinJI6JXVK6lSRdDq9PO+19vb37XK13Hj0YLMUTVVyWY//Cf8IVwQEGEeJN47S1YdPo4npDpNmnDh5udOh1YsZRcph39EaONpnjs65oxsqvZEyTaHdj3n2psPpKDLBcuOOGUWpZDOG+q0S7751ObuYUisJGQ98T/Ct4Fuo5IX+MGZr95jKjRKLlSxXxFxOEmaaN4us1Upsf+1yGk5ZKhp8C74H5ZwwCGO2drssLZZo1ouIcs2MJikz1oPmapHlaoFXH1oMwphyTghyQj+MefG+RblcoLlaJG/5y4zGCTMikEwTctaxXq/w9kuXdm9Cuzfh9acujXqFwE8xmuBb/hCwl1GKAnGccDwIadQCfD9DZ5Dj494QA2w2qtQW84wmMZ1eyFI1QBVQwV5GiaZOpdsPaSwH5HMZULi9UmB9pYAAouBQbMHHrgQcnQwZV/KgTu1o8PMgipONu2t5KeaNiEkxgAiICDMCCFeEK5aNauAOfoXx8KR9ZOOLk8P7j7er2WBhwWY9sdbDeIJnwBjBWBBAhGsCmiZxPD4/7Z98b/0QVWUehjkZ5vQb/Un5e/DIsVsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQAA5APAAAE+5SAAAACH5BAEAAAEALAAAAABAADkAAAL0jI8Jy5APTWOx2jDzVbnt32lg6H0VKVroZEJr6r5lK8lsbFM0lutP72sBg7WhQ2g8IpLKkfGXpDGbvKhpusRemVnu9smxOnMb8FjWDQKl5GInvWKj3aSDbTevvuihnb7PF/f35ic4ZFfnF7iwuDdIVEholahI6UUpJ3mJgsT52OZ4MaeVF3H3eXpqOrpZCudJqvoK2+qKSnhr2DOre9gI+As4uRac6JsrDOY7rNyGPAX83AR9LO1D7SyGHaplrQ2N6JzZrdiJXW6+jX6mvn6yfeOOAw8pTw8jX0yef4/L3x/vH8B66AbOEGiQyrqEBCsxVAihAAA7]]></data>
	</file>
	<file>
	  <filename>/images/newobject.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODdhEAAQAN0AAP///87f7+bu99fl8e70+bTN5eXl5evx+ODr9Yytzr7S5kHnUn6buq3H4d3o9CurQCmcPK/J4yq0QabC3u3t7fb29pa00LG8x0uFWJ+92qPA3CmVOlW/bcDJ0UOsZIeivCuCNSKeOSqkPEGhYZmqulO3alXrZhrfKyziPWTuddDd6VOuaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAEAAQAAAGj0CAcEgsCgWKgnLJVAiEigFhSq0OFMIC4cDtegmFLEFALpvBwsjBzBYcImkBYj4f2O0OOKAhRzgGAYEcEhwDDUJ8f4GLEikShkITCICLJQ8PJpcekQ6LgSILoaEhQhqUiysQECiqI0IZp54bJxsDGaVRdwMqFxggGCQWABQdFgnHyAzKDB8XFBUG0dLT0xVBADs=]]></data>
	</file>
	<file>
	  <filename>/images/NoPicture.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhYABgAMQAAM3Q2Nzh7enr8PH0+NXX3eTn7tnc3/X3+u7w99/l8Obm99vd4fj5/NDT2d3f5P///9fc5uDj6Ojs9dDU3c7O3uPk6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAABgAGAAAAX/4COOTGmaR6qu6XAMcCzDCDLUeI5LCC/9wKBQ8CtIjAVFYVlINJuJxGAkOlkZrOzrNZPZvrqcr9fzCc/G40+ZbCsSymhzWr2etCyXvhsDh8NjP2VnQkYJRUpvEk6McnR2d3gre3w0Nzd/ZGRmg4RFQYeHS3FvUG8DkJGSLVuVfZeZmoGeZwoCaUqLo06lUVKpJauTXK5fmLE1s7RAaUiLz6FQT1GoqcIqesSVxsibg520zoZHpeVyv5DX2NrFx3+B3sufaoYCoaSmUQjp6q2uln6QKZPHTIKCZ0tCMYLia9+Vfqz+vRKYbJMZec0MImGTBM40fVYgtmLXhVu3ihcJ/5Kjl4tXo4UJHGIR6e+fSYoD5Qk4qEbUInwvQdIcKRGgu0zKwBHKeDBax46+oCAYmq3oTaTxLKp0Fgpar48xaVYlWRJWjgIODERAqZRgxq4wdflqKLKqVUwVCggQUGGBAQIGAi9wsMRi2yE8uR5x85Fh2H5jJdrYG7iyZcsEMi8gcpgQEcXR3vQ6pw9yTZsDKlxeHRhw5cwG0mz9VM8l2Dd0hUW2WoC179atM0eI4FZNz51tns6dO3WV3bsIfq8G7PrvX+E6eXZt02ia48dadt/tLf0ygQXUrWcmQNyTOIRPEnVfDj7Pack3IpTHbF79dQKE8ARELoxFQQp99RFFVv870e3XGnr+UQdbZg6cQQSB8IkGVlDgiVcUQH45eF56JE64HgFEzKPYKEx4x2FYMBD14UQCnLffiH9BKOF/J0IQxFsI3ePSkMw9NyNANaR1I3o6qlfiiQBKsBNtCNnCSBxwIBgTJUciOYAEDgKHY4lOnmiAlMaNw51c39FnQ5cT1XCDkku69iSPULJn0CeisAHUiw3BOdEl5JVnZ5MmSpgnARWqqYt8ymkZKJx+YBKidHZGyCOeeTpTZULKbbjcmzOCYVaDmF5KopOcLopIT27IgRugW35YaUCGQqipmYvmOYFH0PzUBJa06gMdLEfRydqIiJKpaK8UgrYITEQiSCr/H29ycxSqyzK5qqKtQhtBIi0O66KkxpZl6lU11Ogbs9+WGW6vTpATjUfVanntVaeGoVq3Y0a43ry9TlABubvE0aa+yObQcCxgTuftrtcRvOgEBATAhHz2DEuapH88fJLEAT/5LLQnYjxBbBpSi64vAcSkLbux6Pcaf/EmijKUKhPAEW4eFwvzzCeFUUCmFD9r8cUEYAwgvgp/rGXMAcgZUNE4VECdrjlXvDPTKhtg20tQoRsz1t08mOm3A3/Nc9NwNwDBgfguTB/VaL/Tg65i7nqy23D3vEvZZZudQNV5A4LA0X2b/LfbPTcNdSOzGo534hVVZN3NdwL+ttMYh1r5/8tRUI041mPEw7jXeC7tK9yZqewxlnbfffjhqOsATwQTbvq457EHHp/UL1N9+0k87JDVD/rt6DjgPTvdNMYKMVT7XKYHcLrummSeFPNtCwz86xNg/NWs19+evRjde1PG8j/UyPb4gdcvOL6kw6y+9ognrzw83zND+OgXPNAFrnw+8wXQSGc8/smMLcszDCHKRL/ISQ+BE2iAxoS2nAbyT3veg58gRgiEQfBOZwQ0YPnK54CgpE99h9NeDCUYQZVIAD0prN8Bp+eAqL2wdPv7IFtG2JbOBIGA5Jte+aSRr6ntL4Znm0U8UqISBwAverCLXuiy9EMYflCIQTCiDYvgOf/pfU5lDWhh/rD3xC9WjYRwHOMZILceLK5QiQ0gnqQaCEU3gkOMY7QiHe2oskIyMX98dGMU5TjGo0ErcnWcnhKbJjcOsjF7inwjI20oAAOYMZKR1CIGKdlEJ3owk4DcZDNep8MDilJuXfRiJsG4SVqkSA0BaAAozahF++lyjUA8ZR8dmMripEkNWjNgAZX4SggAM5GzpGUt41eQnthLlyqU5CgL2YAIPDOIMoxmMZeyBuMcYk9IuKD9trnCDMaMgbKMpjTHeMs0JaYpuiCkNpm5wm4iEpzylGExU+SMKdHDmkgowDYnWch2lk+D8DxlQEGokwHdEkMIrVICsMnMdTr/NINq3GM8J0pRch6UoAfFEFyOsFGGuvKjD3WmKQFK0jdm5Jg/OKcRDrJTR/XpEBHAICFhGlORYvKo0YzJQabE1HtSqafBuscTINDOlxK1ARn8FYKgWVMhpugzKkppsBJaLmjYkZ8wbQBWIdrBkXYVhBi9qbTG4RFF3GuoRO1nVrEaUq6+lZY6VUMixgqNW/jpKUe7Y0PzmsG17hUAE/ArUicaE73w1Jo+6VNy4iAsJ1BVlIx9qGNH2wAAZIymf4UrXRESVRZ1xIcOeChaGavWvdp2rRQwbWpnuTjWapZc5MqSPawUW46G1qGjvW1jAaBWAOh2t1/sAVzsQY6Ngcoc/wWAAFYXe9zGKje5kGWueJ87zJpWtlz4QBikmuBJ43Z3r8mNb3NLS9/xTgAC0EXAYRFmm1IUIAJU3e5saavW+N62vggWb2mde99wkhQBUs1SZ+MAAUoK+L3tNLB8SzuB8Hb4wx4eL2QjO9nobtY7BQjAX7IqVAz3U8MH5nCIQUxjBTvXuVjFL1IrWzePBIDFinUxi2FM2gQb2cYJ7vCCcYzKRshFu0IdcGgLTGT4yvjK4cWykrPM5foSYJgQJlaKsSnkj1aZtOKtsZpnzOYal1bH/Fvc2LZb5hd/97vz5fKW95zmPmvZzwD4YEzm4wA6u3i7Z4bvlo/MaCQ7+sgZi4fzchIr5LUm2tLNXbOm28xpNwMAinKehqGn3NjaXjrPjU71o1ddXyESadRm9u6lrczqWqv61gDQ8aCxB+sizxrTi7a1sHGdYDhDeC6Ffqis73zmAg/72cR29JdBuBwo/5rZzo62tqEt3khXrdqwrrO4x13pX53NVMoKk7rXzW52A8YBODhACAAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/sort_down.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAN08AP///7XW8VSZ1Wez70CAvDl3s0GGwmGs6G+785Pf/Vif25fj/zyX1szMzD17t3+z4O7u7rrc90yPy1uk4F6o5DuR0bjZ9XvH9XCgzeXl5TVwrDSc3EiKxmSv60vA9lp/o3an1Lnb9ii//z+Y12uaxzdzrx68/5nl/2ay7lGz6Tqa2kua11Wj4Huv3Ba5/2Gu30mRzVCV0XzJ743Z+1aw5FDC9nC88t3d3TLD/0GNy9fX12K56gAAAAAAAAAAAAAAACH5BAEHAAAALAEAAAANABAAAAaBQMCt8dF8GpqGLgMBACCZkqvkrFoBpIKWBChcqw6T4+vEEM5nzNeAM4jchi+oUslxOKCvpLbxwDwSXzEpGyojIy1VDwKMOwyPNIwCDwEKCRc2BywrCi8yCgEAARMJA6amMxOhTgEUCwiwCRSrVRYHCxcLBxZkIR0nHSFkThEoEVdBADs=]]></data>
	</file>
	<file>
	  <filename>/images/sort_up.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAN0AAP///7XW8VSZ1Wez70CAvDl3s0GGwmGs6G+785Pf/Vif25fj/zyX1szMzD17t3+z4O7u7rrc90yPy1uk4F6o5DuR0bjZ9XvH9XCgzeXl5TVwrDSc3EiKxmSv60vA9lp/o3an1Lnb9ii//z+Y12uaxzdzrx68/5nl/2ay7lGz6Tqa2kua11Wj4Huv3Ba5/2Gu30mRzVCV0XzJ743Z+1aw5FDC9nC88t3d3TLD/0GNy9fX12K56gAAAAAAAAAAAAAAACH5BAEHAAAALAEAAAANABAAAAaAQIBQGEFFhkhhqHPqhJJCy2FxWRwsyQBlgegmKIFhYJIYmM2zSTigSFxsB9ZK8ZIpAg+Bfsfo0/QCD0MxKRsqIyMtUBI1Gx4wHhJQIBUVORwcIFAGOAYingZQGASkpBhQQg4mDqgAJAWwJAAFSBAZJS4lrTcNHxofDRoNOhkQAEEAOw==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/admin_contact.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIENvbnRhY3QgPSBmdW5jdGlvbigpCnsKICAgIHZhciBfZGF0YSA9IHsKCW9iamVjdHMgPSBbXTsKCWZ1bGxuYW1lID0gbnVsbDsKCWltYWdlID0gbnVsbDsKCWNhdGVnb3JpZXMgPSBbXTsKICAgIH0KCiAgICB0aGlzLm9iamVjdHMgPSBmdW5jdGlvbigpIHsKCXJldHVybiBfZGF0YS5vYmplY3RzOwogICAgfQoKICAgIHRoaXMuY2xlYXJfb2JqZWN0cyA9IGZ1bmN0aW9uKCkgewoJX2RhdGEub2JqZWN0cyA9IFtdOwogICAgfQoKICAgIHRoaXMuYWRkX29iamVjdCA9IGZ1bmN0aW9uKG9iaikgewoJLy8gdmFsaWRhdGUgdGhlIG9iamVjdAoJX2RhdGEub2JqZWN0cy5wdXNoKG9iaik7CiAgICB9CgogICAgdGhpcy5kZWxldGVfb2JqZWN0ID0gZnVuY3Rpb24oaWR4KSB7CglpZiggTnVtYmVyKGlkeCkgIT09IGlkeCB8fCBpZHggJSAxICE9IDAgKSByZXR1cm47CglpZiggaWR4IDwgMCB8fCBpZHggPiBfZGF0YS5vYmplY3RzLmxlbmd0aCApIHJldHVybjsKCV9kYXRhLm9iamVjdHMuc3BsaWNlKGlkeCwxKTsKICAgIH0KCiAgICB0aGlzLmZ1bGxuYW1lID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gX2RhdGEuZnVsbG5hbWU7CiAgICB9CgogICAgdGhpcy5zZXRfZnVsbG5hbWUgPSBmdW5jdGlvbihzdHIpIHsKCiAgICB9CgogICAgdGhpcy5nZXRfZm9ybWF0dGVkX25hbWUgPSBmdW5jdGlvbigpIHsKCiAgICB9CgogICAgdGhpcy5nZXRfZGlzcGxheV9uYW1lID0gZnVuY3Rpb24oKQogICAgewoKICAgIH0KCiAgICB0aGlzLmdldF9hZGRyZXNzX2FzX3N0cmluZyA9IGZ1bmN0aW9uKCkgIHsKCiAgICB9CgogICAgdGhpcy5jYXRlZ29yaWVzID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gX2RhdGEuY2F0ZWdvcmllczsKICAgIH0KCiAgICB0aGlzLmNsZWFyX2NhdGVnb3JpZXMgPSBmdW5jdGlvbigpIHsKCiAgICB9CgogICAgdGhpcy5hZGRfY2F0ZWdvcnkgPSBmdW5jdGlvbihjYXRfaWQpIHsKCiAgICB9CgogICAgdGhpcy5kZWxldGVfY2F0ZWdvcnkgPSBmdW5jdGlvbihjYXRfaWQpIHsKCiAgICB9CgogICAgdGhpcy52YWxpZGF0ZSA9IGZ1bmN0aW9uKCkgewoKICAgIH0KCiAgICB0aGlzLnRvSlNPTiA9IGZ1bmN0aW9uKCkKICAgIHsKCXJldHVybiBfZGF0YTsKICAgIH0KCiAgICB0aGlzLmZyb21KU09OID0gZnVuY3Rpb24ob2JqKQogICAgewoJLy8gY2hlY2sgdGhlIGRhdGEKCV9kYXRhID0gb2JqOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/js/admin_edit_contact.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIGVkaXRDb250YWN0SGFuZGxlciA9IGZ1bmN0aW9uKGNpZCkKewogICAgLy8KICAgIC8vIHByaXZhdGUgbWVtYmVycwogICAgLy8KICAgIHZhciBfb3B0aW9ucyA9IHsKCXVybDogbnVsbCwKCWxhbmc6IG51bGwsCglub2ltYWdlOiBudWxsLAoJZGVsZXRlX2ltZzogbnVsbCwKCWNsYXNzZXM6IG51bGwsCiAgICB9OwogICAgdmFyIF9jaWQ7CiAgICB2YXIgX2NvbnRhY3Q7CgogICAgLy8KICAgIC8vIHByaXZhdGUgbWV0aG9kcwogICAgLy8KICAgIGZ1bmN0aW9uIF92YWxpZGF0ZSgpCiAgICB7CgogICAgfQoKICAgIGZ1bmN0aW9uIF9zZXR1cF9oYW5kbGVycygpCiAgICB7CgkvLyB0b2RvOiBjaGVjayB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgb2YgdGhlIGVsZW1lbnRzIHdlIG5lZWQKICAgIH0KCiAgICBmdW5jdGlvbiBfcHVzaF9jb250YWN0KCkKICAgIHsKCS8vIHRvZG86IHNldCBpbWFnZSBpZiB3ZSBoYXZlIG9uZSwgb3Igc2V0IG5vaW1hZ2UKICAgIH0KCiAgICBmdW5jdGlvbiBfcHVsbF9jb250YWN0KCkKICAgIHsKCiAgICB9CgogICAgZnVuY3Rpb24gX2xhbmcoa2V5KQogICAgewoJaWYoIHR5cGVvZiBfb3B0aW9ucy5sYW5nW2tleV0gIT09ICd1bmRlZmluZWQnICkgcmV0dXJuIF9vcHRpb25zLmxhbmdba2V5XTsKCXJldHVybiAnTWlzc2luZyBMYW5nIFN0cmluZyAnK2tleTsKICAgIH0KCiAgICAvLwogICAgLy8gcHVibGljIG1ldGhvZHMKICAgIC8vCiAgICB0aGlzLmdldF9jb250YWN0ID0gZnVuY3Rpb24oKQogICAgewoJLy8gdGhyb3cgZXhjZXB0aW9uIGlmIG5vdCBsb2FkZWQgeWV0CiAgICB9CgogICAgdGhpcy5zZXRfY29udGFjdCA9IGZ1bmN0aW9uKGNvbnRhY3QpCiAgICB7CgogICAgfQoKICAgIHRoaXMuc2V0ID0gZnVuY3Rpb24oa2V5LHZhbCkKICAgIHsKCWlmKCB0eXBlb2Yga2V5ID09ICdzdHJpbmcnICkgewoJICAgIGlmKCB0eXBlb2YgX29wdGlvbnNba2V5XSA9PSAndW5kZWZpbmVkJyApIHRocm93ICdBdHRlbXB0IHRvIHNldCBpbnZhbGlkIHByb3BlcnR5ICcra2V5OwoJICAgIHN3aXRjaCgga2V5ICkgewoJICAgIGNhc2UgJ3VybCc6CgkJaWYoIHR5cGVvZiB2YWwgIT0gJ3N0cmluZycgKSB0aHJvdyAnSW52YWxpZCB2YWx1ZSBmb3IgdXJsIHByb3BlcnR5JzsKCQlfb3B0aW9ucy51cmwgPSB2YWw7CgkJYnJlYWs7CgoJICAgIGNhc2UgJ2xhbmcnOgoJCWlmKCB0eXBlb2YgdmFsICE9ICdvYmplY3QnICkgdGhyb3cgJ0ludmFsaWQgdmFsdWUgZm9yIGxhbmcgcHJvcGVydHknOwoJCV9vcHRpb25zLmxhbmcgPSB2YWw7CgkJYnJlYWs7CgkgICAgfQoJfQoJZWxzZSBpZiggdHlwZW9mIGtleSAhPSAnb2JqZWN0JyApIHRocm93ICdJbnZhbGlkIGFyZ3VtZW50cyBwYXNzZWQgdG8gc2V0IG1ldGhvZCc7CgoJLy8gaXQncyBhbiBvYmplY3QsIHNvIGRvIHNvbWUgcmVjdXJzaW9uLi4uIG9uZSBsZXZlbC4KCWZvciggdmFyIF9rIGluIGtleSApIHsKCSAgICB2YXIgX3YgPSBrZXlbX2tdOwoJICAgIHRoaXMuc2V0KF9rLF92KTsKCX0KICAgIH0KCiAgICB0aGlzLmdldF9mb3JtYXR0ZWRfbmFtZSA9IGZ1bmN0aW9uKCkKICAgIHsKCiAgICB9OwoKICAgIHRoaXMudXBkYXRlX2Rpc3BsYXlfbmFtZSA9IGZ1bmN0aW9uKCkKICAgIHsKCiAgICB9OwoKICAgIHRoaXMuZ2V0X2Rpc3BsYXlfbmFtZSA9IGZ1bmN0aW9uKCkKICAgIHsKCiAgICB9OwoKICAgIHRoaXMubG9hZCA9IGZ1bmN0aW9uKGNpZCkKICAgIHsKCS8vIHRlc3QgZm9yIHVybAoJYWxlcnQoJ0lOIExPQUQnKTsKCS8vX3B1c2hfY29udGFjdCgpOwogICAgfTsKCiAgICB0aGlzLnNhdmUgPSBmdW5jdGlvbigpCiAgICB7CglhbGVydCgnSU4gU0FWRScpOwogICAgfQoKICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKGNpZCkKICAgIHsKCS8vIHRvZG86IGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGFsbCB0aGUgZGF0YQoJX3NldHVwX2hhbmRsZXJzKCk7CglpZiggdHlwZW9mIGNpZCAhPSAndW5kZWZpbmVkJyAmJiBjaWQgPiAwICkgewoJICAgIHRoaXMubG9hZChjaWQpOwoJfQogICAgfQoKICAgIC8vCiAgICAvLyBjb25zdHJ1Y3RvcgogICAgLy8KfTsKCi8qCnZhciBvYmogPSBuZXcgbXljbGFzczsKb2JqLnNldCgndXJsJywneyR1cmx9Jyk7Cm9iai5zZXQoJ2xhbmcnLGxhbmdzdHJpbmdzX29iaik7Cm9iai5pbml0KHskY2lkfSk7CnZhciBjb250YWN0X2Zvcm0gPSB7CiAgICBjb250YWN0OiB7fSwKCiAgICAvLyBsb2FkIHRoZSBkYXRhLgogICAgbG9hZDogZnVuY3Rpb24oKSB7CglhbGVydCgnbG9hZCcpOwogICAgfSwKCn07CiovCg==]]></data>
	</file>
	<file>
	  <filename>/js/jquery.auto_input_size.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKCQpewogLy8gdG9kbzogcHV0IHRoaXMgaW50byBjZy5jbXNtcwpTdHJpbmcucHJvdG90eXBlLnVjd29yZHMgPSBmdW5jdGlvbigpIHsKICAgIHN0ciA9IHRoaXMudG9Mb3dlckNhc2UoKTsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvKF4oW2EtekEtWlxwe019XSkpfChbIC1dW2EtekEtWlxwe019XSkvZywKICAgICAgICBmdW5jdGlvbigkMSl7CiAgICAgICAgICAgIHJldHVybiAkMS50b1VwcGVyQ2FzZSgpOwogICAgICAgIH0pOwp9CgogICAgJC53aWRnZXQoJ2NnLmF1dG9faW5wdXRfc2l6ZScsIHsKCW9wdGlvbnM6IHsKCSAgICBtaW5TaXplOiAyMCwKCSAgICBtYXhTaXplOiA0MAoJfSwKCgkvLy8vIG1ldGhvZHMKCiAgICAgICAgX2NyZWF0ZTogZnVuY3Rpb24oKSB7CgkgICAgaWYoICEgdGhpcy5lbGVtZW50LmlzKCdpbnB1dDp0ZXh0JykgKSByZXR1cm47CgkgICAgdGhpcy5fb24oewoJCWtleXVwOiBmdW5jdGlvbihldikgewoJCSAgICB0aGlzLl9yZWZyZXNoKCk7CgkJfSwKCQljaGFuZ2U6IGZ1bmN0aW9uKGV2KSB7CgkJICAgIHRoaXMuX3JlZnJlc2goKTsKCQl9CgkgICAgfSk7CgkgICAgdGhpcy5fcmVmcmVzaCgpOwoJfSwKCglfcmVmcmVzaDogZnVuY3Rpb24oKSB7CgkgICAgaWYoIHRoaXMuZWxlbWVudC5pcygnaW5wdXQ6dGV4dCcpICkgewogIAkJdmFyIG8gPSBzID0gdGhpcy5lbGVtZW50LnZhbCgpLmxlbmd0aDsKCQl2YXIgbWkgPSB0aGlzLmVsZW1lbnQuZGF0YSgnbWluLXNpemUnKTsKICAgICAgICAgICAgICAgIGlmKCBpc05hTihtaSkgKSBtaSA9IHRoaXMub3B0aW9ucy5taW5TaXplOwoKCQl2YXIgbWEgPSB0aGlzLmVsZW1lbnQuZGF0YSgnbWF4LXNpemUnKTsKICAgICAgICAgICAgICAgIGlmKCBpc05hTihtYSkgKSBtYSA9IHRoaXMub3B0aW9ucy5tYXhTaXplOwoKIAkJcyA9IE1hdGgubWluKHMsbWEpOwoJCXMgPSBNYXRoLm1heChzLG1pKTsKCQl0aGlzLmVsZW1lbnQuYXR0cignc2l6ZScscyk7CgkgICAgfQoJfSwKCglfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKCSAgICBpZiAoIGtleSA9PT0gInZhbHVlIiApIHZhbHVlID0gdGhpcy5fY29uc3RyYWluKCB2YWx1ZSApOwogICAgICAgICAgICB0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApOwoJfSwKCglfc2V0T3B0aW9uczogZnVuY3Rpb24oIG9wdGlvbnMgKSB7CiAgICAgICAgICAgIHRoaXMuX3N1cGVyKCBvcHRpb25zICk7CiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpOwoJfSwKCglfZGVzdHJveTogZnVuY3Rpb24oKSB7Cgl9LAoKCS8vLy8gaW50ZXJuYWxzCgoJLy8vLyBlbmQKCglfbm9vcDogZnVuY3Rpb24oKSB7fQogICAgfSk7Cn0pKGpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/js/jquery.tagit.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBqUXVlcnkgVUkgVGFnLWl0IQoqCiogQHZlcnNpb24gdjIuMCAoMDYvMjAxMSkKKgoqIENvcHlyaWdodCAyMDExLCBMZXZ5IENhcm5laXJvIEpyLgoqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KKiBodHRwOi8vYWVobGtlLmdpdGh1Yi5jb20vdGFnLWl0L0xJQ0VOU0UKKgoqIEhvbWVwYWdlOgoqICAgaHR0cDovL2FlaGxrZS5naXRodWIuY29tL3RhZy1pdC8KKgoqIEF1dGhvcnM6CiogICBMZXZ5IENhcm5laXJvIEpyLgoqICAgTWFydGluIFJlaGZlbGQKKiAgIFRvYmlhcyBTY2htaWR0CiogICBTa3lsYXIgQ2hhbGxhbmQKKiAgIEFsZXggRWhsa2UKKgoqIE1haW50YWluZXI6CiogICBBbGV4IEVobGtlIC0gVHdpdHRlcjogQGFlaGxrZQoqCiogRGVwZW5kZW5jaWVzOgoqICAgalF1ZXJ5IHYxLjQrCiogICBqUXVlcnkgVUkgdjEuOCsKKi8KKGZ1bmN0aW9uKCQpIHsKCiAgICAkLndpZGdldCgndWkudGFnaXQnLCB7CiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICBhbGxvd0R1cGxpY2F0ZXMgICA6IGZhbHNlLAogICAgICAgICAgICBjYXNlU2Vuc2l0aXZlICAgICA6IHRydWUsCiAgICAgICAgICAgIGZpZWxkTmFtZSAgICAgICAgIDogJ3RhZ3MnLAogICAgICAgICAgICBwbGFjZWhvbGRlclRleHQgICA6IG51bGwsICAgLy8gU2V0cyBgcGxhY2Vob2xkZXJgIGF0dHIgb24gaW5wdXQgZmllbGQuCiAgICAgICAgICAgIHJlYWRPbmx5ICAgICAgICAgIDogZmFsc2UsICAvLyBEaXNhYmxlcyBlZGl0aW5nLgogICAgICAgICAgICByZW1vdmVDb25maXJtYXRpb246IGZhbHNlLCAgLy8gUmVxdWlyZSBjb25maXJtYXRpb24gdG8gcmVtb3ZlIHRhZ3MuCiAgICAgICAgICAgIHRhZ0xpbWl0ICAgICAgICAgIDogbnVsbCwgICAvLyBNYXggbnVtYmVyIG9mIHRhZ3MgYWxsb3dlZCAobnVsbCBmb3IgdW5saW1pdGVkKS4KCiAgICAgICAgICAgIC8vIFVzZWQgZm9yIGF1dG9jb21wbGV0ZSwgdW5sZXNzIHlvdSBvdmVycmlkZSBgYXV0b2NvbXBsZXRlLnNvdXJjZWAuCiAgICAgICAgICAgIGF2YWlsYWJsZVRhZ3MgICAgIDogW10sCgogICAgICAgICAgICAvLyBVc2UgdG8gb3ZlcnJpZGUgb3IgYWRkIGFueSBvcHRpb25zIHRvIHRoZSBhdXRvY29tcGxldGUgd2lkZ2V0LgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBhdXRvY29tcGxldGUuc291cmNlIHdpbGwgbWFwIHRvIGF2YWlsYWJsZVRhZ3MsCiAgICAgICAgICAgIC8vIHVubGVzcyBvdmVycmlkZGVuLgogICAgICAgICAgICBhdXRvY29tcGxldGU6IHt9LAoKICAgICAgICAgICAgLy8gU2hvd3MgYXV0b2NvbXBsZXRlIGJlZm9yZSB0aGUgdXNlciBldmVuIHR5cGVzIGFueXRoaW5nLgogICAgICAgICAgICBzaG93QXV0b2NvbXBsZXRlT25Gb2N1czogZmFsc2UsCgogICAgICAgICAgICAvLyBXaGVuIGVuYWJsZWQsIHF1b3RlcyBhcmUgdW5uZWNjZXNhcnkgZm9yIGlucHV0dGluZyBtdWx0aS13b3JkIHRhZ3MuCiAgICAgICAgICAgIGFsbG93U3BhY2VzOiBmYWxzZSwKCiAgICAgICAgICAgIC8vIFRoZSBiZWxvdyBvcHRpb25zIGFyZSBmb3IgdXNpbmcgYSBzaW5nbGUgZmllbGQgaW5zdGVhZCBvZiBzZXZlcmFsCiAgICAgICAgICAgIC8vIGZvciBvdXIgZm9ybSB2YWx1ZXMuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIFdoZW4gZW5hYmxlZCwgd2lsbCB1c2UgYSBzaW5nbGUgaGlkZGVuIGZpZWxkIGZvciB0aGUgZm9ybSwKICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gb25lIHBlciB0YWcuIEl0IHdpbGwgZGVsaW1pdCB0YWdzIGluIHRoZSBmaWVsZAogICAgICAgICAgICAvLyB3aXRoIHNpbmdsZUZpZWxkRGVsaW1pdGVyLgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBUaGUgZWFzaWVzdCB3YXkgdG8gdXNlIHNpbmdsZUZpZWxkIGlzIHRvIGp1c3QgaW5zdGFudGlhdGUgdGFnLWl0CiAgICAgICAgICAgIC8vIG9uIGFuIElOUFVUIGVsZW1lbnQsIGluIHdoaWNoIGNhc2Ugc2luZ2xlRmllbGQgaXMgYXV0b21hdGljYWxseQogICAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSwgYW5kIHNpbmdsZUZpZWxkTm9kZSBpcyBzZXQgdG8gdGhhdCBlbGVtZW50LiBUaGlzCiAgICAgICAgICAgIC8vIHdheSwgeW91IGRvbid0IG5lZWQgdG8gZmlkZGxlIHdpdGggdGhlc2Ugb3B0aW9ucy4KICAgICAgICAgICAgc2luZ2xlRmllbGQ6IGZhbHNlLAoKICAgICAgICAgICAgLy8gVGhpcyBpcyBqdXN0IHVzZWQgd2hlbiBwcmVsb2FkaW5nIGRhdGEgZnJvbSB0aGUgZmllbGQsIGFuZCBmb3IKICAgICAgICAgICAgLy8gcG9wdWxhdGluZyB0aGUgZmllbGQgd2l0aCBkZWxpbWl0ZWQgdGFncyBhcyB0aGUgdXNlciBhZGRzIHRoZW0uCiAgICAgICAgICAgIHNpbmdsZUZpZWxkRGVsaW1pdGVyOiAnLCcsCgogICAgICAgICAgICAvLyBTZXQgdGhpcyB0byBhbiBpbnB1dCBET00gbm9kZSB0byB1c2UgYW4gZXhpc3RpbmcgZm9ybSBmaWVsZC4KICAgICAgICAgICAgLy8gQW55IHRleHQgaW4gaXQgd2lsbCBiZSBlcmFzZWQgb24gaW5pdC4gQnV0IGl0IHdpbGwgYmUKICAgICAgICAgICAgLy8gcG9wdWxhdGVkIHdpdGggdGhlIHRleHQgb2YgdGFncyBhcyB0aGV5IGFyZSBjcmVhdGVkLAogICAgICAgICAgICAvLyBkZWxpbWl0ZWQgYnkgc2luZ2xlRmllbGREZWxpbWl0ZXIuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IHNldCwgd2UgY3JlYXRlIGFuIGlucHV0IG5vZGUgZm9yIGl0LAogICAgICAgICAgICAvLyB3aXRoIHRoZSBuYW1lIGdpdmVuIGluIHNldHRpbmdzLmZpZWxkTmFtZS4KICAgICAgICAgICAgc2luZ2xlRmllbGROb2RlOiBudWxsLAoKICAgICAgICAgICAgLy8gV2hldGhlciB0byBhbmltYXRlIHRhZyByZW1vdmFscyBvciBub3QuCiAgICAgICAgICAgIGFuaW1hdGU6IHRydWUsCgogICAgICAgICAgICAvLyBPcHRpb25hbGx5IHNldCBhIHRhYmluZGV4IGF0dHJpYnV0ZSBvbiB0aGUgaW5wdXQgdGhhdCBnZXRzCiAgICAgICAgICAgIC8vIGNyZWF0ZWQgZm9yIHRhZy1pdC4KICAgICAgICAgICAgdGFiSW5kZXg6IG51bGwsCgogICAgICAgICAgICAvLyBFdmVudCBjYWxsYmFja3MuCiAgICAgICAgICAgIGJlZm9yZVRhZ0FkZGVkICAgICAgOiBudWxsLAogICAgICAgICAgICBhZnRlclRhZ0FkZGVkICAgICAgIDogbnVsbCwKCiAgICAgICAgICAgIGJlZm9yZVRhZ1JlbW92ZWQgICAgOiBudWxsLAogICAgICAgICAgICBhZnRlclRhZ1JlbW92ZWQgICAgIDogbnVsbCwKCiAgICAgICAgICAgIG9uVGFnQ2xpY2tlZCAgICAgICAgOiBudWxsLAogICAgICAgICAgICBvblRhZ0xpbWl0RXhjZWVkZWQgIDogbnVsbCwKCgogICAgICAgICAgICAvLyBERVBSRUNBVEVEOgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAvIVwgVGhlc2UgZXZlbnQgY2FsbGJhY2tzIGFyZSBkZXByZWNhdGVkIGFuZCBXSUxMIEJFIFJFTU9WRUQgYXQgc29tZQogICAgICAgICAgICAvLyBwb2ludCBpbiB0aGUgZnV0dXJlLiBUaGV5J3JlIGhlcmUgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LgogICAgICAgICAgICAvLyBVc2UgdGhlIGFib3ZlIGJlZm9yZS9hZnRlciBldmVudCBjYWxsYmFja3MgaW5zdGVhZC4KICAgICAgICAgICAgb25UYWdBZGRlZCAgOiBudWxsLAogICAgICAgICAgICBvblRhZ1JlbW92ZWQ6IG51bGwsCiAgICAgICAgICAgIC8vIGBhdXRvY29tcGxldGUuc291cmNlYCBpcyB0aGUgcmVwbGFjZW1lbnQgZm9yIHRhZ1NvdXJjZS4KICAgICAgICAgICAgdGFnU291cmNlOiBudWxsCiAgICAgICAgICAgIC8vIERvIG5vdCB1c2UgdGhlIGFib3ZlIGRlcHJlY2F0ZWQgb3B0aW9ucy4KICAgICAgICB9LAoKICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gZm9yIGhhbmRsaW5nIHN0YXRpYyBzY29waW5nIGluc2lkZSBjYWxsYmFja3MKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgICAgICAgLy8gVGhlcmUgYXJlIDIga2luZHMgb2YgRE9NIG5vZGVzIHRoaXMgd2lkZ2V0IGNhbiBiZSBpbnN0YW50aWF0ZWQgb246CiAgICAgICAgICAgIC8vICAgICAxLiBVTCwgT0wsIG9yIHNvbWUgZWxlbWVudCBjb250YWluaW5nIGVpdGhlciBvZiB0aGVzZS4KICAgICAgICAgICAgLy8gICAgIDIuIElOUFVULCBpbiB3aGljaCBjYXNlICdzaW5nbGVGaWVsZCcgaXMgb3ZlcnJpZGRlbiB0byB0cnVlLAogICAgICAgICAgICAvLyAgICAgICAgYSBVTCBpcyBjcmVhdGVkIGFuZCB0aGUgSU5QVVQgaXMgaGlkZGVuLgogICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50LmlzKCdpbnB1dCcpKSB7CiAgICAgICAgICAgICAgICB0aGlzLnRhZ0xpc3QgPSAkKCc8dWw+PC91bD4nKS5pbnNlcnRBZnRlcih0aGlzLmVsZW1lbnQpOwogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaW5nbGVGaWVsZE5vZGUgPSB0aGlzLmVsZW1lbnQ7CiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoJ3RhZ2l0LWhpZGRlbi1maWVsZCcpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy50YWdMaXN0ID0gdGhpcy5lbGVtZW50LmZpbmQoJ3VsLCBvbCcpLmFuZFNlbGYoKS5sYXN0KCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMudGFnSW5wdXQgPSAkKCc8aW5wdXQgdHlwZT0idGV4dCIgLz4nKS5hZGRDbGFzcygndWktd2lkZ2V0LWNvbnRlbnQnKTsKCiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVhZE9ubHkpIHRoaXMudGFnSW5wdXQuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTsKCiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGFiSW5kZXgpIHsKICAgICAgICAgICAgICAgIHRoaXMudGFnSW5wdXQuYXR0cigndGFiaW5kZXgnLCB0aGlzLm9wdGlvbnMudGFiSW5kZXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyVGV4dCkgewogICAgICAgICAgICAgICAgdGhpcy50YWdJbnB1dC5hdHRyKCdwbGFjZWhvbGRlcicsIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlclRleHQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUuc291cmNlKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b2NvbXBsZXRlLnNvdXJjZSA9IGZ1bmN0aW9uKHNlYXJjaCwgc2hvd0Nob2ljZXMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyID0gc2VhcmNoLnRlcm0udG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2hvaWNlcyA9ICQuZ3JlcCh0aGlzLm9wdGlvbnMuYXZhaWxhYmxlVGFncywgZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IG1hdGNoIGF1dG9jb21wbGV0ZSBvcHRpb25zIHRoYXQgYmVnaW4gd2l0aCB0aGUgc2VhcmNoIHRlcm0uCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIChDYXNlIGluc2Vuc2l0aXZlLikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlbGVtZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID09PSAwKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5hbGxvd0R1cGxpY2F0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcyA9IHRoaXMuX3N1YnRyYWN0QXJyYXkoY2hvaWNlcywgdGhpcy5hc3NpZ25lZFRhZ3MoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHNob3dDaG9pY2VzKGNob2ljZXMpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93QXV0b2NvbXBsZXRlT25Gb2N1cykgewogICAgICAgICAgICAgICAgdGhpcy50YWdJbnB1dC5mb2N1cyhmdW5jdGlvbihldmVudCwgdWkpIHsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zaG93QXV0b2NvbXBsZXRlKCk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUubWluTGVuZ3RoID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUubWluTGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQmluZCBhdXRvY29tcGxldGUuc291cmNlIGNhbGxiYWNrIGZ1bmN0aW9ucyB0byB0aGlzIGNvbnRleHQuCiAgICAgICAgICAgIGlmICgkLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZS5zb3VyY2UpKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYXV0b2NvbXBsZXRlLnNvdXJjZSA9ICQucHJveHkodGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZS5zb3VyY2UsIHRoaXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBERVBSRUNBVEVELgogICAgICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy50YWdTb3VyY2UpKSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudGFnU291cmNlID0gJC5wcm94eSh0aGlzLm9wdGlvbnMudGFnU291cmNlLCB0aGlzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy50YWdMaXN0CiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3RhZ2l0JykKICAgICAgICAgICAgICAgIC5hZGRDbGFzcygndWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwnKQogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbnB1dCBmaWVsZC4KICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGxpIGNsYXNzPSJ0YWdpdC1uZXciPjwvbGk+JykuYXBwZW5kKHRoaXMudGFnSW5wdXQpKQogICAgICAgICAgICAgICAgLmNsaWNrKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJChlLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC5oYXNDbGFzcygndGFnaXQtbGFiZWwnKSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFnID0gdGFyZ2V0LmNsb3Nlc3QoJy50YWdpdC1jaG9pY2UnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YWcuaGFzQ2xhc3MoJ3JlbW92ZWQnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignb25UYWdDbGlja2VkJywgZSwge3RhZzogdGFnLCB0YWdMYWJlbDogdGhhdC50YWdMYWJlbCh0YWcpfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXRzIHRoZSBmb2N1cygpIHRvIHRoZSBpbnB1dCBmaWVsZCwgaWYgdGhlIHVzZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tzIGFueXdoZXJlIGluc2lkZSB0aGUgVUwuIFRoaXMgaXMgbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIGlucHV0IGZpZWxkIG5lZWRzIHRvIGJlIG9mIGEgc21hbGwgc2l6ZS4KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50YWdJbnB1dC5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gU2luZ2xlIGZpZWxkIHN1cHBvcnQuCiAgICAgICAgICAgIHZhciBhZGRlZEV4aXN0aW5nRnJvbVNpbmdsZUZpZWxkTm9kZSA9IGZhbHNlOwogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkTm9kZSkgewogICAgICAgICAgICAgICAgICAgIC8vIEFkZCBleGlzdGluZyB0YWdzIGZyb20gdGhlIGlucHV0IGZpZWxkLgogICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gJCh0aGlzLm9wdGlvbnMuc2luZ2xlRmllbGROb2RlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdGFncyA9IG5vZGUudmFsKCkuc3BsaXQodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkRGVsaW1pdGVyKTsKICAgICAgICAgICAgICAgICAgICBub2RlLnZhbCgnJyk7CiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKHRhZ3MsIGZ1bmN0aW9uKGluZGV4LCB0YWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jcmVhdGVUYWcodGFnLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWRFeGlzdGluZ0Zyb21TaW5nbGVGaWVsZE5vZGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgb3VyIHNpbmdsZSBmaWVsZCBpbnB1dCBhZnRlciBvdXIgbGlzdC4KICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2luZ2xlRmllbGROb2RlID0gJCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIHZhbHVlPSIiIG5hbWU9IicgKyB0aGlzLm9wdGlvbnMuZmllbGROYW1lICsgJyIgLz4nKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRhZ0xpc3QuYWZ0ZXIodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkTm9kZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEFkZCBleGlzdGluZyB0YWdzIGZyb20gdGhlIGxpc3QsIGlmIGFueS4KICAgICAgICAgICAgaWYgKCFhZGRlZEV4aXN0aW5nRnJvbVNpbmdsZUZpZWxkTm9kZSkgewogICAgICAgICAgICAgICAgdGhpcy50YWdMaXN0LmNoaWxkcmVuKCdsaScpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmhhc0NsYXNzKCd0YWdpdC1uZXcnKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNyZWF0ZVRhZygkKHRoaXMpLnRleHQoKSwgJCh0aGlzKS5hdHRyKCdjbGFzcycpLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRXZlbnRzLgogICAgICAgICAgICB0aGlzLnRhZ0lucHV0CiAgICAgICAgICAgICAgICAua2V5ZG93bihmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAgICAgIC8vIEJhY2tzcGFjZSBpcyBub3QgZGV0ZWN0ZWQgd2l0aGluIGEga2V5cHJlc3MsIHNvIGl0IG11c3QgdXNlIGtleWRvd24uCiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LndoaWNoID09ICQudWkua2V5Q29kZS5CQUNLU1BBQ0UgJiYgdGhhdC50YWdJbnB1dC52YWwoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRhZyA9IHRoYXQuX2xhc3RUYWcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0Lm9wdGlvbnMucmVtb3ZlQ29uZmlybWF0aW9uIHx8IHRhZy5oYXNDbGFzcygncmVtb3ZlJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gYmFja3NwYWNlIGlzIHByZXNzZWQsIHRoZSBsYXN0IHRhZyBpcyBkZWxldGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5yZW1vdmVUYWcodGFnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGF0Lm9wdGlvbnMucmVtb3ZlQ29uZmlybWF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcuYWRkQ2xhc3MoJ3JlbW92ZSB1aS1zdGF0ZS1oaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhhdC5vcHRpb25zLnJlbW92ZUNvbmZpcm1hdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9sYXN0VGFnKCkucmVtb3ZlQ2xhc3MoJ3JlbW92ZSB1aS1zdGF0ZS1oaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIENvbW1hL1NwYWNlL0VudGVyIGFyZSBhbGwgdmFsaWQgZGVsaW1pdGVycyBmb3IgbmV3IHRhZ3MsCiAgICAgICAgICAgICAgICAgICAgLy8gZXhjZXB0IHdoZW4gdGhlcmUgaXMgYW4gb3BlbiBxdW90ZSBvciBpZiBzZXR0aW5nIGFsbG93U3BhY2VzID0gdHJ1ZS4KICAgICAgICAgICAgICAgICAgICAvLyBUYWIgd2lsbCBhbHNvIGNyZWF0ZSBhIHRhZywgdW5sZXNzIHRoZSB0YWcgaW5wdXQgaXMgZW1wdHksCiAgICAgICAgICAgICAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBpdCBpc24ndCBjYXVnaHQuCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQud2hpY2ggPT09ICQudWkua2V5Q29kZS5DT01NQSAmJiBldmVudC5zaGlmdEtleSA9PT0gZmFsc2UpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LndoaWNoID09PSAkLnVpLmtleUNvZGUuRU5URVIgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQud2hpY2ggPT0gJC51aS5rZXlDb2RlLlRBQiAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50YWdJbnB1dC52YWwoKSAhPT0gJycKICAgICAgICAgICAgICAgICAgICAgICAgKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC53aGljaCA9PSAkLnVpLmtleUNvZGUuU1BBQ0UgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5hbGxvd1NwYWNlcyAhPT0gdHJ1ZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQudHJpbSh0aGF0LnRhZ0lucHV0LnZhbCgpKS5yZXBsYWNlKCAvXnMqLywgJycgKS5jaGFyQXQoMCkgIT0gJyInIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLnRyaW0odGhhdC50YWdJbnB1dC52YWwoKSkuY2hhckF0KDApID09ICciJyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLnRyaW0odGhhdC50YWdJbnB1dC52YWwoKSkuY2hhckF0KCQudHJpbSh0aGF0LnRhZ0lucHV0LnZhbCgpKS5sZW5ndGggLSAxKSA9PSAnIicgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC50cmltKHRoYXQudGFnSW5wdXQudmFsKCkpLmxlbmd0aCAtIDEgIT09IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW50ZXIgc3VibWl0cyB0aGUgZm9ybSBpZiB0aGVyZSdzIG5vIHRleHQgaW4gdGhlIGlucHV0LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShldmVudC53aGljaCA9PT0gJC51aS5rZXlDb2RlLkVOVEVSICYmIHRoYXQudGFnSW5wdXQudmFsKCkgPT09ICcnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXV0b2NvbXBsZXRlIHdpbGwgY3JlYXRlIGl0cyBvd24gdGFnIGZyb20gYSBzZWxlY3Rpb24gYW5kIGNsb3NlIGF1dG9tYXRpY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHRoYXQub3B0aW9ucy5hdXRvY29tcGxldGUuYXV0b0ZvY3VzICYmIHRoYXQudGFnSW5wdXQuZGF0YSgnYXV0b2NvbXBsZXRlLW9wZW4nKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudGFnSW5wdXQuYXV0b2NvbXBsZXRlKCdjbG9zZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jcmVhdGVUYWcodGhhdC5fY2xlYW5lZElucHV0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkuYmx1cihmdW5jdGlvbihlKXsKICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSB0YWcgd2hlbiB0aGUgZWxlbWVudCBsb3NlcyBmb2N1cy4KICAgICAgICAgICAgICAgICAgICAvLyBJZiBhdXRvY29tcGxldGUgaXMgZW5hYmxlZCBhbmQgc3VnZ2VzdGlvbiB3YXMgY2xpY2tlZCwgZG9uJ3QgYWRkIGl0LgogICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC50YWdJbnB1dC5kYXRhKCdhdXRvY29tcGxldGUtb3BlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY3JlYXRlVGFnKHRoYXQuX2NsZWFuZWRJbnB1dCgpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIEF1dG9jb21wbGV0ZS4KICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hdmFpbGFibGVUYWdzIHx8IHRoaXMub3B0aW9ucy50YWdTb3VyY2UgfHwgdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZS5zb3VyY2UpIHsKICAgICAgICAgICAgICAgIHZhciBhdXRvY29tcGxldGVPcHRpb25zID0gewogICAgICAgICAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24oZXZlbnQsIHVpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY3JlYXRlVGFnKHVpLml0ZW0udmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50aW5nIHRoZSB0YWcgaW5wdXQgdG8gYmUgdXBkYXRlZCB3aXRoIHRoZSBjaG9zZW4gdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJC5leHRlbmQoYXV0b2NvbXBsZXRlT3B0aW9ucywgdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZSk7CgogICAgICAgICAgICAgICAgLy8gdGFnU291cmNlIGlzIGRlcHJlY2F0ZWQsIGJ1dCB0YWtlcyBwcmVjZWRlbmNlIGhlcmUgc2luY2UgYXV0b2NvbXBsZXRlLnNvdXJjZSBpcyBzZXQgYnkgZGVmYXVsdCwKICAgICAgICAgICAgICAgIC8vIHdoaWxlIHRhZ1NvdXJjZSBpcyBsZWZ0IG51bGwgYnkgZGVmYXVsdC4KICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnMuc291cmNlID0gdGhpcy5vcHRpb25zLnRhZ1NvdXJjZSB8fCBhdXRvY29tcGxldGVPcHRpb25zLnNvdXJjZTsKCiAgICAgICAgICAgICAgICB0aGlzLnRhZ0lucHV0LmF1dG9jb21wbGV0ZShhdXRvY29tcGxldGVPcHRpb25zKS5iaW5kKCdhdXRvY29tcGxldGVvcGVuLnRhZ2l0JywgZnVuY3Rpb24oZXZlbnQsIHVpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhhdC50YWdJbnB1dC5kYXRhKCdhdXRvY29tcGxldGUtb3BlbicsIHRydWUpOwogICAgICAgICAgICAgICAgfSkuYmluZCgnYXV0b2NvbXBsZXRlY2xvc2UudGFnaXQnLCBmdW5jdGlvbihldmVudCwgdWkpIHsKICAgICAgICAgICAgICAgICAgICB0aGF0LnRhZ0lucHV0LmRhdGEoJ2F1dG9jb21wbGV0ZS1vcGVuJywgZmFsc2UpCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB0aGlzLnRhZ0lucHV0LmF1dG9jb21wbGV0ZSgnd2lkZ2V0JykuYWRkQ2xhc3MoJ3RhZ2l0LWF1dG9jb21wbGV0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQuV2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7CgogICAgICAgICAgICB0aGlzLmVsZW1lbnQudW5iaW5kKCcudGFnaXQnKTsKICAgICAgICAgICAgdGhpcy50YWdMaXN0LnVuYmluZCgnLnRhZ2l0Jyk7CgogICAgICAgICAgICB0aGlzLnRhZ0lucHV0LnJlbW92ZURhdGEoJ2F1dG9jb21wbGV0ZS1vcGVuJyk7CgogICAgICAgICAgICB0aGlzLnRhZ0xpc3QucmVtb3ZlQ2xhc3MoWwogICAgICAgICAgICAgICAgJ3RhZ2l0JywKICAgICAgICAgICAgICAgICd1aS13aWRnZXQnLAogICAgICAgICAgICAgICAgJ3VpLXdpZGdldC1jb250ZW50JywKICAgICAgICAgICAgICAgICd1aS1jb3JuZXItYWxsJywKICAgICAgICAgICAgICAgICd0YWdpdC1oaWRkZW4tZmllbGQnCiAgICAgICAgICAgIF0uam9pbignICcpKTsKCiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaXMoJ2lucHV0JykpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygndGFnaXQtaGlkZGVuLWZpZWxkJyk7CiAgICAgICAgICAgICAgICB0aGlzLnRhZ0xpc3QucmVtb3ZlKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2hpbGRyZW4oJ2xpJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygndGFnaXQtbmV3JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YWdpdC1jaG9pY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VpLXdpZGdldC1jb250ZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1aS1zdGF0ZS1kZWZhdWx0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1aS1zdGF0ZS1oaWdobGlnaHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VpLWNvcm5lci1hbGwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbW92ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFnaXQtY2hvaWNlLWVkaXRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YWdpdC1jaG9pY2UtcmVhZC1vbmx5JwogICAgICAgICAgICAgICAgICAgICAgICBdLmpvaW4oJyAnKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnRleHQoJCh0aGlzKS5jaGlsZHJlbignLnRhZ2l0LWxhYmVsJykudGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaW5nbGVGaWVsZE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZUZpZWxkTm9kZS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfSwKCiAgICAgICAgX2NsZWFuZWRJbnB1dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFJldHVybnMgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWcgaW5wdXQsIGNsZWFuZWQgYW5kIHJlYWR5IHRvIGJlIHBhc3NlZCB0byBjcmVhdGVUYWcKICAgICAgICAgICAgcmV0dXJuICQudHJpbSh0aGlzLnRhZ0lucHV0LnZhbCgpLnJlcGxhY2UoL14iKC4qKSIkLywgJyQxJykpOwogICAgICAgIH0sCgogICAgICAgIF9sYXN0VGFnOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFnTGlzdC5maW5kKCcudGFnaXQtY2hvaWNlOmxhc3Q6bm90KC5yZW1vdmVkKScpOwogICAgICAgIH0sCgogICAgICAgIF90YWdzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFnTGlzdC5maW5kKCcudGFnaXQtY2hvaWNlOm5vdCgucmVtb3ZlZCknKTsKICAgICAgICB9LAoKICAgICAgICBhc3NpZ25lZFRhZ3M6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyBSZXR1cm5zIGFuIGFycmF5IG9mIHRhZyBzdHJpbmcgdmFsdWVzCiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgICAgICAgdmFyIHRhZ3MgPSBbXTsKICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaW5nbGVGaWVsZCkgewogICAgICAgICAgICAgICAgdGFncyA9ICQodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkTm9kZSkudmFsKCkuc3BsaXQodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkRGVsaW1pdGVyKTsKICAgICAgICAgICAgICAgIGlmICh0YWdzWzBdID09PSAnJykgewogICAgICAgICAgICAgICAgICAgIHRhZ3MgPSBbXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RhZ3MoKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRhZ3MucHVzaCh0aGF0LnRhZ0xhYmVsKHRoaXMpKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0YWdzOwogICAgICAgIH0sCgogICAgICAgIF91cGRhdGVTaW5nbGVUYWdzRmllbGQ6IGZ1bmN0aW9uKHRhZ3MpIHsKICAgICAgICAgICAgLy8gVGFrZXMgYSBsaXN0IG9mIHRhZyBzdHJpbmcgdmFsdWVzLCB1cGRhdGVzIHRoaXMub3B0aW9ucy5zaW5nbGVGaWVsZE5vZGUudmFsIHRvIHRoZSB0YWdzIGRlbGltaXRlZCBieSB0aGlzLm9wdGlvbnMuc2luZ2xlRmllbGREZWxpbWl0ZXIKICAgICAgICAgICAgJCh0aGlzLm9wdGlvbnMuc2luZ2xlRmllbGROb2RlKS52YWwodGFncy5qb2luKHRoaXMub3B0aW9ucy5zaW5nbGVGaWVsZERlbGltaXRlcikpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgIH0sCgogICAgICAgIF9zdWJ0cmFjdEFycmF5OiBmdW5jdGlvbihhMSwgYTIpIHsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGExLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoJC5pbkFycmF5KGExW2ldLCBhMikgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChhMVtpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9LAoKICAgICAgICB0YWdMYWJlbDogZnVuY3Rpb24odGFnKSB7CiAgICAgICAgICAgIC8vIFJldHVybnMgdGhlIHRhZydzIHN0cmluZyBsYWJlbC4KICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaW5nbGVGaWVsZCkgewogICAgICAgICAgICAgICAgcmV0dXJuICQodGFnKS5maW5kKCcudGFnaXQtbGFiZWw6Zmlyc3QnKS50ZXh0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJCh0YWcpLmZpbmQoJ2lucHV0OmZpcnN0JykudmFsKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfc2hvd0F1dG9jb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRoaXMudGFnSW5wdXQuYXV0b2NvbXBsZXRlKCdzZWFyY2gnLCAnJyk7CiAgICAgICAgfSwKCiAgICAgICAgX2ZpbmRUYWdCeUxhYmVsOiBmdW5jdGlvbihuYW1lKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgICAgICAgdmFyIHRhZyA9IG51bGw7CiAgICAgICAgICAgIHRoaXMuX3RhZ3MoKS5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9mb3JtYXRTdHIobmFtZSkgPT0gdGhhdC5fZm9ybWF0U3RyKHRoYXQudGFnTGFiZWwodGhpcykpKSB7CiAgICAgICAgICAgICAgICAgICAgdGFnID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gdGFnOwogICAgICAgIH0sCgogICAgICAgIF9pc05ldzogZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICByZXR1cm4gIXRoaXMuX2ZpbmRUYWdCeUxhYmVsKG5hbWUpOwogICAgICAgIH0sCgogICAgICAgIF9mb3JtYXRTdHI6IGZ1bmN0aW9uKHN0cikgewogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNhc2VTZW5zaXRpdmUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICQudHJpbShzdHIudG9Mb3dlckNhc2UoKSk7CiAgICAgICAgfSwKCiAgICAgICAgX2VmZmVjdEV4aXN0czogZnVuY3Rpb24obmFtZSkgewogICAgICAgICAgICByZXR1cm4gQm9vbGVhbigkLmVmZmVjdHMgJiYgKCQuZWZmZWN0c1tuYW1lXSB8fCAoJC5lZmZlY3RzLmVmZmVjdCAmJiAkLmVmZmVjdHMuZWZmZWN0W25hbWVdKSkpOwogICAgICAgIH0sCgogICAgICAgIGNyZWF0ZVRhZzogZnVuY3Rpb24odmFsdWUsIGFkZGl0aW9uYWxDbGFzcywgZHVyaW5nSW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgICAgICAgdmFsdWUgPSAkLnRyaW0odmFsdWUpOwoKICAgICAgICAgICAgaWYodGhpcy5vcHRpb25zLnByZXByb2Nlc3NUYWcpIHsKICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5vcHRpb25zLnByZXByb2Nlc3NUYWcodmFsdWUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLmFsbG93RHVwbGljYXRlcyAmJiAhdGhpcy5faXNOZXcodmFsdWUpKSB7CiAgICAgICAgICAgICAgICB2YXIgZXhpc3RpbmdUYWcgPSB0aGlzLl9maW5kVGFnQnlMYWJlbCh2YWx1ZSk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJpZ2dlcignb25UYWdFeGlzdHMnLCBudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdUYWc6IGV4aXN0aW5nVGFnLAogICAgICAgICAgICAgICAgICAgIGR1cmluZ0luaXRpYWxpemF0aW9uOiBkdXJpbmdJbml0aWFsaXphdGlvbgogICAgICAgICAgICAgICAgfSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2VmZmVjdEV4aXN0cygnaGlnaGxpZ2h0JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdUYWcuZWZmZWN0KCdoaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGFnTGltaXQgJiYgdGhpcy5fdGFncygpLmxlbmd0aCA+PSB0aGlzLm9wdGlvbnMudGFnTGltaXQpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ29uVGFnTGltaXRFeGNlZWRlZCcsIG51bGwsIHtkdXJpbmdJbml0aWFsaXphdGlvbjogZHVyaW5nSW5pdGlhbGl6YXRpb259KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGxhYmVsID0gJCh0aGlzLm9wdGlvbnMub25UYWdDbGlja2VkID8gJzxhIGNsYXNzPSJ0YWdpdC1sYWJlbCI+PC9hPicgOiAnPHNwYW4gY2xhc3M9InRhZ2l0LWxhYmVsIj48L3NwYW4+JykudGV4dCh2YWx1ZSk7CgogICAgICAgICAgICAvLyBDcmVhdGUgdGFnLgogICAgICAgICAgICB2YXIgdGFnID0gJCgnPGxpPjwvbGk+JykKICAgICAgICAgICAgICAgIC5hZGRDbGFzcygndGFnaXQtY2hvaWNlIHVpLXdpZGdldC1jb250ZW50IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCcpCiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoYWRkaXRpb25hbENsYXNzKQogICAgICAgICAgICAgICAgLmFwcGVuZChsYWJlbCk7CgogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5KXsKICAgICAgICAgICAgICAgIHRhZy5hZGRDbGFzcygndGFnaXQtY2hvaWNlLXJlYWQtb25seScpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGFnLmFkZENsYXNzKCd0YWdpdC1jaG9pY2UtZWRpdGFibGUnKTsKICAgICAgICAgICAgICAgIC8vIEJ1dHRvbiBmb3IgcmVtb3ZpbmcgdGhlIHRhZy4KICAgICAgICAgICAgICAgIHZhciByZW1vdmVUYWdJY29uID0gJCgnPHNwYW4+PC9zcGFuPicpCiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCd1aS1pY29uIHVpLWljb24tY2xvc2UnKTsKICAgICAgICAgICAgICAgIHZhciByZW1vdmVUYWcgPSAkKCc8YT48c3BhbiBjbGFzcz0idGV4dC1pY29uIj5ceGQ3PC9zcGFuPjwvYT4nKSAvLyBceGQ3IGlzIGFuIFgKICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3RhZ2l0LWNsb3NlJykKICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKHJlbW92ZVRhZ0ljb24pCiAgICAgICAgICAgICAgICAgICAgLmNsaWNrKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlcyBhIHRhZyB3aGVuIHRoZSBsaXR0bGUgJ3gnIGlzIGNsaWNrZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQucmVtb3ZlVGFnKHRhZyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0YWcuYXBwZW5kKHJlbW92ZVRhZyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFVubGVzcyBvcHRpb25zLnNpbmdsZUZpZWxkIGlzIHNldCwgZWFjaCB0YWcgaGFzIGEgaGlkZGVuIGlucHV0IGZpZWxkIGlubGluZS4KICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc2luZ2xlRmllbGQpIHsKICAgICAgICAgICAgICAgIHZhciBlc2NhcGVkVmFsdWUgPSBsYWJlbC5odG1sKCk7CiAgICAgICAgICAgICAgICB0YWcuYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJyArIGVzY2FwZWRWYWx1ZSArICciIG5hbWU9IicgKyB0aGlzLm9wdGlvbnMuZmllbGROYW1lICsgJyIgY2xhc3M9InRhZ2l0LWhpZGRlbi1maWVsZCIgLz4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHRoaXMuX3RyaWdnZXIoJ2JlZm9yZVRhZ0FkZGVkJywgbnVsbCwgewogICAgICAgICAgICAgICAgdGFnOiB0YWcsCiAgICAgICAgICAgICAgICB0YWdMYWJlbDogdGhpcy50YWdMYWJlbCh0YWcpLAogICAgICAgICAgICAgICAgZHVyaW5nSW5pdGlhbGl6YXRpb246IGR1cmluZ0luaXRpYWxpemF0aW9uCiAgICAgICAgICAgIH0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFncyA9IHRoaXMuYXNzaWduZWRUYWdzKCk7CiAgICAgICAgICAgICAgICB0YWdzLnB1c2godmFsdWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2luZ2xlVGFnc0ZpZWxkKHRhZ3MpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBERVBSRUNBVEVELgogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdvblRhZ0FkZGVkJywgbnVsbCwgdGFnKTsKCiAgICAgICAgICAgIHRoaXMudGFnSW5wdXQudmFsKCcnKTsKCiAgICAgICAgICAgIC8vIEluc2VydCB0YWcuCiAgICAgICAgICAgIHRoaXMudGFnSW5wdXQucGFyZW50KCkuYmVmb3JlKHRhZyk7CgogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdhZnRlclRhZ0FkZGVkJywgbnVsbCwgewogICAgICAgICAgICAgICAgdGFnOiB0YWcsCiAgICAgICAgICAgICAgICB0YWdMYWJlbDogdGhpcy50YWdMYWJlbCh0YWcpLAogICAgICAgICAgICAgICAgZHVyaW5nSW5pdGlhbGl6YXRpb246IGR1cmluZ0luaXRpYWxpemF0aW9uCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93QXV0b2NvbXBsZXRlT25Gb2N1cyAmJiAhZHVyaW5nSW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0aGF0Ll9zaG93QXV0b2NvbXBsZXRlKCk7IH0sIDApOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgcmVtb3ZlVGFnOiBmdW5jdGlvbih0YWcsIGFuaW1hdGUpIHsKICAgICAgICAgICAgYW5pbWF0ZSA9IHR5cGVvZiBhbmltYXRlID09PSAndW5kZWZpbmVkJyA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogYW5pbWF0ZTsKCiAgICAgICAgICAgIHRhZyA9ICQodGFnKTsKCiAgICAgICAgICAgIC8vIERFUFJFQ0FURUQuCiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ29uVGFnUmVtb3ZlZCcsIG51bGwsIHRhZyk7CgogICAgICAgICAgICBpZiAodGhpcy5fdHJpZ2dlcignYmVmb3JlVGFnUmVtb3ZlZCcsIG51bGwsIHt0YWc6IHRhZywgdGFnTGFiZWw6IHRoaXMudGFnTGFiZWwodGFnKX0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNpbmdsZUZpZWxkKSB7CiAgICAgICAgICAgICAgICB2YXIgdGFncyA9IHRoaXMuYXNzaWduZWRUYWdzKCk7CiAgICAgICAgICAgICAgICB2YXIgcmVtb3ZlZFRhZ0xhYmVsID0gdGhpcy50YWdMYWJlbCh0YWcpOwogICAgICAgICAgICAgICAgdGFncyA9ICQuZ3JlcCh0YWdzLCBmdW5jdGlvbihlbCl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsICE9IHJlbW92ZWRUYWdMYWJlbDsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2luZ2xlVGFnc0ZpZWxkKHRhZ3MpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoYW5pbWF0ZSkgewogICAgICAgICAgICAgICAgdGFnLmFkZENsYXNzKCdyZW1vdmVkJyk7IC8vIEV4Y2x1ZGVzIHRoaXMgdGFnIGZyb20gX3RhZ3MuCiAgICAgICAgICAgICAgICB2YXIgaGlkZV9hcmdzID0gdGhpcy5fZWZmZWN0RXhpc3RzKCdibGluZCcpID8gWydibGluZCcsIHtkaXJlY3Rpb246ICdob3Jpem9udGFsJ30sICdmYXN0J10gOiBbJ2Zhc3QnXTsKCiAgICAgICAgICAgICAgICB2YXIgdGhpc1RhZyA9IHRoaXM7CiAgICAgICAgICAgICAgICBoaWRlX2FyZ3MucHVzaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB0YWcucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpc1RhZy5fdHJpZ2dlcignYWZ0ZXJUYWdSZW1vdmVkJywgbnVsbCwge3RhZzogdGFnLCB0YWdMYWJlbDogdGhpc1RhZy50YWdMYWJlbCh0YWcpfSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB0YWcuZmFkZU91dCgnZmFzdCcpLmhpZGUuYXBwbHkodGFnLCBoaWRlX2FyZ3MpLmRlcXVldWUoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRhZy5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2FmdGVyVGFnUmVtb3ZlZCcsIG51bGwsIHt0YWc6IHRhZywgdGFnTGFiZWw6IHRoaXMudGFnTGFiZWwodGFnKX0pOwogICAgICAgICAgICB9CgogICAgICAgIH0sCgogICAgICAgIHJlbW92ZVRhZ0J5TGFiZWw6IGZ1bmN0aW9uKHRhZ0xhYmVsLCBhbmltYXRlKSB7CiAgICAgICAgICAgIHZhciB0b1JlbW92ZSA9IHRoaXMuX2ZpbmRUYWdCeUxhYmVsKHRhZ0xhYmVsKTsKICAgICAgICAgICAgaWYgKCF0b1JlbW92ZSkgewogICAgICAgICAgICAgICAgdGhyb3cgIk5vIHN1Y2ggdGFnIGV4aXN0cyB3aXRoIHRoZSBuYW1lICciICsgdGFnTGFiZWwgKyAiJyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5yZW1vdmVUYWcodG9SZW1vdmUsIGFuaW1hdGUpOwogICAgICAgIH0sCgogICAgICAgIHJlbW92ZUFsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIFJlbW92ZXMgYWxsIHRhZ3MuCiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgICAgICAgdGhpcy5fdGFncygpLmVhY2goZnVuY3Rpb24oaW5kZXgsIHRhZykgewogICAgICAgICAgICAgICAgdGhhdC5yZW1vdmVUYWcodGFnLCBmYWxzZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICB9KTsKfSkoalF1ZXJ5KTsKCg==]]></data>
	</file>
	<file>
	  <filename>/js/jsviews.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/LyohIGpzdmlld3MuanMgdjEuMC4wLWFscGhhIHNpbmdsZS1maWxlIHZlcnNpb246CmluY2x1ZGVzIEpzUmVuZGVyLCBKc09ic2VydmFibGUgYW5kIEpzVmlld3MgIGh0dHA6Ly9naXRodWIuY29tL0JvcmlzTW9vcmUvanNyZW5kZXIgYW5kIGh0dHA6Ly9qc3ZpZXdzLmNvbS9qc3ZpZXdzCmluZm9ybWFsIHByZSBWMS4wIGNvbW1pdCBjb3VudGVyOiA1MyAoQmV0YSBDYW5kaWRhdGUpICovCihmdW5jdGlvbihuLHQsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGt0KG4pe3JldHVybiBufWZ1bmN0aW9uIGtpKG4pe3JldHVybiBufWZ1bmN0aW9uIGR0KG4pe2UuX2RiZ01vZGU9bjt5dD1uPyJVbmF2YWlsYWJsZSAobmVzdGVkIHZpZXcpOiB1c2UgI2dldEluZGV4KCkiOiIiO2QoImRiZyIsb2kuZGJnPWx0LmRiZz1uP2tpOmt0KX1mdW5jdGlvbiBndChuKXtyZXR1cm57Z2V0VGd0Om4sbWFwOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscjtpLnNyYyE9PXQmJihpLnNyYyYmaS51bm1hcCgpLHR5cGVvZiB0PT0ib2JqZWN0IiYmKHI9bi5hcHBseShpLGFyZ3VtZW50cyksaS5zcmM9dCxpLnRndD1yKSl9fX1mdW5jdGlvbiBmdChuLHQpe3QmJnQub25FcnJvciYmdC5vbkVycm9yKG4pPT09ITF8fCh0aGlzLm5hbWU9KHUubGluaz8iSnNWaWV3cyI6IkpzUmVuZGVyIikrIiBFcnJvciIsdGhpcy5tZXNzYWdlPW58fHRoaXMubmFtZSl9ZnVuY3Rpb24gZihuLHQpe3ZhciBpO249bnx8e307Zm9yKGkgaW4gdCluW2ldPXRbaV07cmV0dXJuIG59ZnVuY3Rpb24gbmkobix0LGkpe3JldHVybighaC5yVGFnfHxuKSYmKHA9bj9uLmNoYXJBdCgwKTpwLHc9bj9uLmNoYXJBdCgxKTp3LG89dD90LmNoYXJBdCgwKTpvLGE9dD90LmNoYXJBdCgxKTphLGc9aXx8ZyxuPSJcXCIrcCsiKFxcIitnKyIpP1xcIit3LHQ9IlxcIitvKyJcXCIrYSx5PSIoPzooPzooXFx3Kyg/PVtcXC9cXHNcXCIrbysiXSkpfCg/OihcXHcrKT8oOil8KD4pfCEtLSgoPzpbXi1dfC0oPyEtKSkqKS0tfChcXCopKSlcXHMqKCg/OlteXFwiK28rIl18XFwiK28rIig/IVxcIithKyIpKSo/KSIsaC5yVGFnPXkrIikiLHk9bmV3IFJlZ0V4cChuK3krIihcXC8pP3woPzpcXC8oXFx3KykpKSIrdCwiZyIpLHZ0PW5ldyBSZWdFeHAoIjwuKj58KFteXFxcXF18Xilbe31dfCIrbisiLioiK3QpKSxbcCx3LG8sYSxnXX1mdW5jdGlvbiBkaShuLHQpe3R8fCh0PW4sbj1pKTt2YXIgZSxmLG8sdSxyPXRoaXMscz0hdHx8dD09PSJyb290IjtpZihuKXtpZih1PXIudHlwZT09PXQ/cjppLCF1KWlmKGU9ci52aWV3cyxyLl8udXNlS2V5KXtmb3IoZiBpbiBlKWlmKHU9ZVtmXS5nZXQobix0KSlicmVha31lbHNlIGZvcihmPTAsbz1lLmxlbmd0aDshdSYmZjxvO2YrKyl1PWVbZl0uZ2V0KG4sdCl9ZWxzZSBpZihzKXdoaWxlKHIucGFyZW50LnBhcmVudCl1PXI9ci5wYXJlbnQ7ZWxzZSB3aGlsZShyJiYhdSl1PXIudHlwZT09PXQ/cjppLHI9ci5wYXJlbnQ7cmV0dXJuIHV9ZnVuY3Rpb24gdGkoKXt2YXIgbj10aGlzLmdldCgiaXRlbSIpO3JldHVybiBuP24uaW5kZXg6aX1mdW5jdGlvbiBpaSgpe3JldHVybiB0aGlzLmluZGV4fWZ1bmN0aW9uIGdpKHQpe3ZhciB1LGU9dGhpcyxvPWUubGlua0N0eCxyPShlLmN0eHx8e30pW3RdO3JldHVybiByPT09aSYmbyYmby5jdHgmJihyPW8uY3R4W3RdKSxyPT09aSYmKHI9b2lbdF0pLHImJmF0KHIpJiYhci5fd3JwJiYodT1mdW5jdGlvbigpe3JldHVybiByLmFwcGx5KCF0aGlzfHx0aGlzPT09bj9lOnRoaXMsYXJndW1lbnRzKX0sdS5fd3JwPTEsZih1LHIpKSx1fHxyfWZ1bmN0aW9uIG5yKG4sdCx1KXt2YXIgZixlLGgsbz0rdT09PXUmJnUscz10LmxpbmtDdHg7aWYobyYmKHU9KG89dC50bXBsLmJuZHNbby0xXSkodC5kYXRhLHQscikpLGU9dS5hcmdzWzBdLG58fG8pe2Y9cyYmcy50YWd8fHtfOntpbmxpbmU6IXMsYm5kOm99LHRhZ05hbWU6bisiOiIsZmxvdzohMCxfaXM6InRhZyJ9O2ZvcihoIGluIHUucHJvcHMpcnQudGVzdChoKSYmKGZbaF09dS5wcm9wc1toXSk7cyYmKHMudGFnPWYsZi5saW5rQ3R4PWYubGlua0N0eHx8cyx1LmN0eD1sKHUuY3R4LHMudmlldy5jdHgpKTtmLnRhZ0N0eD11O3Uudmlldz10O2YuY3R4PXUuY3R4fHx7fTtkZWxldGUgdS5jdHg7dC5fLnRhZz1mO2U9ZXQoZixmLmNvbnZlcnR8fG4hPT0idHJ1ZSImJm4pWzBdO2U9ZSE9aT9lOiIiO2U9byYmdC5fLm9uUmVuZGVyP3QuXy5vblJlbmRlcihlLHQsbyk6ZTt0Ll8udGFnPWl9cmV0dXJuIGV9ZnVuY3Rpb24gZXQobix0KXt2YXIgcj1uLnRhZ0N0eCx1PXIudmlldyxpPXIuYXJncztyZXR1cm4gdD10JiYoIiIrdD09PXQ/dS5nZXRSc2MoImNvbnZlcnRlcnMiLHQpfHx2KCJVbmtub3duIGNvbnZlcnRlcjogJyIrdCsiJyIpOnQpLGk9IWkubGVuZ3RoJiYhci5pbmRleCYmbi5hdXRvQmluZD9bdS5kYXRhXTp0P2kuc2xpY2UoKTppLHQmJih0LmRlcGVuZHMmJihuLmRlcGVuZHM9aC5nZXREZXBzKG4uZGVwZW5kcyxuLHQuZGVwZW5kcyx0KSksaVswXT10LmFwcGx5KG4saSkpLGl9ZnVuY3Rpb24gdHIobix0KXtmb3IodmFyIGYsZSx1PXRoaXM7Zj09PWkmJnU7KWU9dS50bXBsW25dLGY9ZSYmZVt0XSx1PXUucGFyZW50O3JldHVybiBmfHxyW25dW3RdfWZ1bmN0aW9uIGlyKG4sdCx1LGUsbyl7dmFyIGN0LGgsd3QsYXQsdXQsYSx2dCx3LGMsZnQsdHQsYnQsayx5dCxwdCxudCx5LHN0LGQsa3QsZz0iIixodD0rZT09PWUmJmUscD10LmxpbmtDdHh8fDAsaXQ9dC5jdHgsZHQ9dXx8dC50bXBsO2ZvcihuLl9pcz09PSJ0YWciJiYoaD1uLG49aC50YWdOYW1lKSxoPWh8fHAudGFnLGh0JiYoZT0oYnQ9ZHQuYm5kc1todC0xXSkodC5kYXRhLHQscikpLHZ0PWUubGVuZ3RoLGE9MDthPHZ0O2ErKyl7aWYoYz1lW2FdLGQ9Yy5wcm9wcyx0dD1jLnRtcGwsdHQ9Yy5jb250ZW50PXR0JiZkdC50bXBsc1t0dC0xXSx1PWMucHJvcHMudG1wbCxhfHx1JiZofHwoaz10LmdldFJzYygidGFncyIsbil8fHYoIlVua25vd24gdGFnOiB7eyIrbisifX0iKSksdT11fHwoaD9oOmspLnRlbXBsYXRlfHx0dCx1PSIiK3U9PT11P3QuZ2V0UnNjKCJ0ZW1wbGF0ZXMiLHUpfHxzKHUpOnUsZihjLHt0bXBsOnUscmVuZGVyOm90LGluZGV4OmEsdmlldzp0LGN0eDpsKGMuY3R4LGl0KX0pLCFoKXtrLl9jdHI/KGg9bmV3IGsuX2N0cix5dD0hIWguaW5pdCxoLmF0dHI9aC5hdHRyfHxrLmF0dHJ8fGkpOmg9e3JlbmRlcjprLnJlbmRlcn07aC5fPXtpbmxpbmU6IXB9O3AmJihwLmF0dHI9aC5hdHRyPXAuYXR0cnx8aC5hdHRyLHAudGFnPWgsaC5saW5rQ3R4PXApOyhoLl8uYm5kPWJ0fHxwLmZuKT9oLl8uYXJyVndzPXt9OmguZGF0YUJvdW5kT25seSYmdigie157IituKyJ9fSB0YWcgbXVzdCBiZSBkYXRhLWJvdW5kIik7aC50YWdOYW1lPW47aC5wYXJlbnQ9dXQ9aXQmJml0LnRhZztoLl9pcz0idGFnIjtoLl9kZWY9aztmb3Ioc3QgaW4gZD1jLnByb3BzKXJ0LnRlc3Qoc3QpJiYoaFtzdF09ZFtzdF0pfWMudGFnPWg7aC5tYXAmJmgudGFnQ3R4cyYmKGMubWFwPWgudGFnQ3R4c1thXS5tYXApO2guZmxvd3x8KGZ0PWMuY3R4PWMuY3R4fHx7fSx3dD1oLnBhcmVudHM9ZnQucGFyZW50VGFncz1pdCYmbChmdC5wYXJlbnRUYWdzLGl0LnBhcmVudFRhZ3MpfHx7fSx1dCYmKHd0W3V0LnRhZ05hbWVdPXV0KSxmdC50YWc9aCl9Zm9yKGgudGFnQ3R4cz1lLHQuXy50YWc9aCxoLnJlbmRlcmluZz17fSxhPTA7YTx2dDthKyspYz1oLnRhZ0N0eD1lW2FdLGQ9Yy5wcm9wcyx5PWV0KGgsaC5jb252ZXJ0KSwocHQ9ZC5tYXB8fGgpLm1hcCYmKHkubGVuZ3RofHxkLm1hcCkmJihudD1jLm1hcD1mKGMubWFwfHx7dW5tYXA6cHQudW5tYXB9LGQpLG50LnNyYyE9PXlbMF0mJihudC5zcmMmJm50LnVubWFwKCkscHQubWFwLmFwcGx5KG50LHkpKSx5PVtudC50Z3RdKSxoLmN0eD1jLmN0eCwhYSYmeXQmJihrdD1oLnRlbXBsYXRlLGguaW5pdChjLHAsaC5jdHgpLHl0PWksaC50ZW1wbGF0ZSE9PWt0JiYoaC5fLnRtcGw9aC50ZW1wbGF0ZSkpLHc9aSxjdD1oLnJlbmRlciwoY3Q9aC5yZW5kZXIpJiYodz1jdC5hcHBseShoLHkpKSx5PXkubGVuZ3RoP3k6W3RdLHc9dyE9PWk/dzpjLnJlbmRlcih5WzBdLCEwKXx8KG8/aToiIiksZz1nP2crKHd8fCIiKTp3O3JldHVybiBkZWxldGUgaC5yZW5kZXJpbmcsaC50YWdDdHg9aC50YWdDdHhzWzBdLGguY3R4PWgudGFnQ3R4LmN0eCxoLl8uaW5saW5lJiYoYXQ9aC5hdHRyKSYmYXQhPT1iJiYoZz1hdD09PSJ0ZXh0Ij9sdC5odG1sKGcpOiIiKSxodCYmdC5fLm9uUmVuZGVyP3QuXy5vblJlbmRlcihnLHQsaHQpOmd9ZnVuY3Rpb24gbnQobix0LGkscix1LGYsZSxvKXt2YXIgYSxoLGMsdj10PT09ImFycmF5IixsPXtrZXk6MCx1c2VLZXk6dj8wOjEsaWQ6IiIrYmkrKyxvblJlbmRlcjpvLGJuZHM6e319LHM9e2RhdGE6cix0bXBsOnUsY29udGVudDplLHZpZXdzOnY/W106e30scGFyZW50OmksdHlwZTp0LGdldDpkaSxnZXRJbmRleDppaSxnZXRSc2M6dHIsaGxwOmdpLF86bCxfaXM6InZpZXcifTtyZXR1cm4gaT8oYT1pLnZpZXdzLGg9aS5fLGgudXNlS2V5PyhhW2wua2V5PSJfIitoLnVzZUtleSsrXT1zLHMuaW5kZXg9eXQscy5nZXRJbmRleD10aSxjPWgudGFnLGwuYm5kPXYmJighY3x8ISFjLl8uYm5kJiZjKSk6YS5zcGxpY2UobC5rZXk9cy5pbmRleD1mLDAscykscy5jdHg9bnx8aS5jdHgpOnMuY3R4PW4sc31mdW5jdGlvbiBycihuKXt2YXIgdCxpLHIsdSxmO2Zvcih0IGluIGspaWYodT1rW3RdLChmPXUuY29tcGlsZSkmJihpPW5bdCsicyJdKSlmb3IociBpbiBpKWlbcl09ZihyLGlbcl0sbix0LHUpfWZ1bmN0aW9uIHVyKG4sdCxpKXt2YXIgdSxyO3JldHVybiBhdCh0KT90PXtkZXBlbmRzOnQuZGVwZW5kcyxyZW5kZXI6dH06KChyPXQudGVtcGxhdGUpJiYodC50ZW1wbGF0ZT0iIityPT09cj9zW3JdfHxzKHIpOnIpLHQuaW5pdCE9PSExJiYodT10Ll9jdHI9ZnVuY3Rpb24oKXt9LCh1LnByb3RvdHlwZT10KS5jb25zdHJ1Y3Rvcj11KSksaSYmKHQuX3BhcmVudFRtcGw9aSksdH1mdW5jdGlvbiByaShyLHUsZixlLG8saCl7ZnVuY3Rpb24gdihpKXtpZigiIitpPT09aXx8aS5ub2RlVHlwZT4wKXt0cnl7YT1pLm5vZGVUeXBlPjA/aTohdnQudGVzdChpKSYmdCYmdChuLmRvY3VtZW50KS5maW5kKGkpWzBdfWNhdGNoKHUpe31yZXR1cm4gYSYmKGk9YS5nZXRBdHRyaWJ1dGUoYnQpLHI9cnx8aSxpPXNbaV0saXx8KHI9cnx8Il8iK3dpKyssYS5zZXRBdHRyaWJ1dGUoYnQsciksaT1zW3JdPXJpKHIsYS5pbm5lckhUTUwsZixlLG8saCkpLGE9bnVsbCksaX19dmFyIGMsYTtyZXR1cm4gdT11fHwiIixjPXYodSksaD1ofHwodS5tYXJrdXA/dTp7fSksaC50bXBsTmFtZT1yLGYmJihoLl9wYXJlbnRUbXBsPWYpLCFjJiZ1Lm1hcmt1cCYmKGM9dih1Lm1hcmt1cCkpJiZjLmZuJiYoYy5kZWJ1ZyE9PXUuZGVidWd8fGMuYWxsb3dDb2RlIT09dS5hbGxvd0NvZGUpJiYoYz1jLm1hcmt1cCksYyE9PWk/KHImJiFmJiYodXRbcl09ZnVuY3Rpb24oKXtyZXR1cm4gdS5yZW5kZXIuYXBwbHkodSxhcmd1bWVudHMpfSksYy5mbnx8dS5mbj9jLmZuJiYodT1yJiZyIT09Yy50bXBsTmFtZT9sKGgsYyk6Yyk6KHU9dWkoYyxoKSxzdChjLnJlcGxhY2UobGksIlxcJCYiKSx1KSkscnIoaCksdSk6dm9pZCAwfWZ1bmN0aW9uIHVpKG4sdCl7dmFyIGksbz1lLndyYXBNYXB8fHt9LHI9Zih7bWFya3VwOm4sdG1wbHM6W10sbGlua3M6e30sdGFnczp7fSxibmRzOltdLF9pczoidGVtcGxhdGUiLHJlbmRlcjpvdH0sdCk7cmV0dXJuIHQuaHRtbFRhZ3x8KGk9eWkuZXhlYyhuKSxyLmh0bWxUYWc9aT9pWzFdLnRvTG93ZXJDYXNlKCk6IiIpLGk9b1tyLmh0bWxUYWddLGkmJmkhPT1vLmRpdiYmKHIubWFya3VwPXUudHJpbShyLm1hcmt1cCkpLHJ9ZnVuY3Rpb24gZnIobix0KXtmdW5jdGlvbiB1KGUsbyxzKXt2YXIgYSxjLHYsbDtpZihlJiYiIitlIT09ZSYmIWUubm9kZVR5cGUmJiFlLm1hcmt1cCl7Zm9yKHYgaW4gZSl1KHYsZVt2XSxvKTtyZXR1cm4gcn1yZXR1cm4gbz09PWkmJihvPWUsZT1pKSxlJiYiIitlIT09ZSYmKHM9byxvPWUsZT1pKSxsPXM/c1tmXT1zW2ZdfHx7fTp1LGM9dC5jb21waWxlLChhPWgub25CZWZvcmVTdG9yZUl0ZW0pJiYoYz1hKGwsZSxvLGMpfHxjKSxlP289PT1udWxsP2RlbGV0ZSBsW2VdOmxbZV09Yz9vPWMoZSxvLHMsbix0KTpvOm89YyhpLG8pLGMmJm8mJihvLl9pcz1uKSwoYT1oLm9uU3RvcmVJdGVtKSYmYShsLGUsbyxjKSxvfXZhciBmPW4rInMiO3JbZl09dTtrW25dPXR9ZnVuY3Rpb24gb3Qobix0LGYsZSxvLGgpe3ZhciB3LGV0LHR0LHksaXQscnQsdXQsayxwLGZ0LGQsb3QsYyxhPXRoaXMsc3Q9IWEuYXR0cnx8YS5hdHRyPT09YixnPSIiO2lmKCEhdD09PXQmJihmPXQsdD1pKSxvPT09ITAmJih1dD0hMCxvPTApLGEudGFnPyhrPWEsYT1hLnRhZyxmdD1hLl8sb3Q9YS50YWdOYW1lLGM9ZnQudG1wbHx8ay50bXBsLHQ9bCh0LGEuY3R4KSxwPWsuY29udGVudCxrLnByb3BzLmxpbms9PT0hMSYmKHQ9dHx8e30sdC5saW5rPSExKSxlPWV8fGsudmlldyxuPWFyZ3VtZW50cy5sZW5ndGg/bjplKTpjPWEuanF1ZXJ5JiYoYVswXXx8dignVW5rbm93biB0ZW1wbGF0ZTogIicrYS5zZWxlY3RvcisnIicpKXx8YSxjJiYoIWUmJm4mJm4uX2lzPT09InZpZXciJiYoZT1uKSxlJiYocD1wfHxlLmNvbnRlbnQsaD1ofHxlLl8ub25SZW5kZXIsbj09PWUmJihuPWUuZGF0YSksdD1sKHQsZS5jdHgpKSxlJiZlLmRhdGEhPT1pfHwoKHQ9dHx8e30pLnJvb3Q9biksYy5mbnx8KGM9c1tjXXx8cyhjKSksYykpe2lmKGg9KHQmJnQubGluaykhPT0hMSYmc3QmJmgsZD1oLGg9PT0hMCYmKGQ9aSxoPWUuXy5vblJlbmRlciksdD1jLmhlbHBlcnM/bChjLmhlbHBlcnMsdCk6dCx1LmlzQXJyYXkobikmJiFmKWZvcih5PXV0P2U6byE9PWkmJmV8fG50KHQsImFycmF5IixlLG4sYyxvLHAsaCksdz0wLGV0PW4ubGVuZ3RoO3c8ZXQ7dysrKXR0PW5bd10saXQ9bnQodCwiaXRlbSIseSx0dCxjLChvfHwwKSt3LHAsaCkscnQ9Yy5mbih0dCxpdCxyKSxnKz15Ll8ub25SZW5kZXI/eS5fLm9uUmVuZGVyKHJ0LGl0KTpydDtlbHNlIHk9dXQ/ZTpudCh0LG90fHwiZGF0YSIsZSxuLGMsbyxwLGgpLGZ0JiYhYS5mbG93JiYoeS50YWc9YSksZys9Yy5mbihuLHkscik7cmV0dXJuIGQ/ZChnLHkpOmd9cmV0dXJuIiJ9ZnVuY3Rpb24gdihuKXt0aHJvdyBuZXcgaC5FcnIobik7fWZ1bmN0aW9uIGMobil7digiU3ludGF4IGVycm9yXG4iK24pfWZ1bmN0aW9uIHN0KG4sdCxpLHIpe2Z1bmN0aW9uIHYodCl7dC09Zjt0JiZzLnB1c2gobi5zdWJzdHIoZix0KS5yZXBsYWNlKGl0LCJcXG4iKSl9ZnVuY3Rpb24gaCh0KXt0JiZjKCdVbm1hdGNoZWQgb3IgbWlzc2luZyB0YWc6ICJ7ey8nK3QrJ319IiBpbiB0ZW1wbGF0ZTpcbicrbil9ZnVuY3Rpb24gcChlLHkscCxrLGQsZyxudCx0dCx1dCxmdCxldCxvdCl7ZyYmKGQ9IjoiLGs9Yik7ZnQ9ZnR8fGk7dmFyIHB0LGx0LGF0PXkmJltdLGN0PSIiLHN0PSIiLHZ0PSIiLHl0PSFmdCYmIWQmJiFudDtwPXB8fCh1dD11dHx8IiNkYXRhIixkKTt2KG90KTtmPW90K2UubGVuZ3RoO3R0P3cmJnMucHVzaChbIioiLCJcbiIrdXQucmVwbGFjZShjaSwiJDEiKSsiXG4iXSk6cD8ocD09PSJlbHNlIiYmKHZpLnRlc3QodXQpJiZjKCdmb3IgInt7ZWxzZSBpZiBleHByfX0iIHVzZSAie3tlbHNlIGV4cHJ9fSInKSxhdD11WzZdLHVbN109bi5zdWJzdHJpbmcodVs3XSxvdCksdT1vLnBvcCgpLHM9dVszXSx5dD0hMCksdXQmJih1dD11dC5yZXBsYWNlKGl0LCIgIiksY3Q9aHQodXQsYXQsdCkucmVwbGFjZShhaSxmdW5jdGlvbihuLHQsaSl7cmV0dXJuIHQ/dnQrPWkrIiwiOnN0Kz1pKyIsIixhPWF8fHJ0LnRlc3QoaS5zcGxpdCgiOiIpWzBdKSwiIn0pKSxzdD1zdC5zbGljZSgwLC0xKSxjdD1jdC5zbGljZSgwLC0xKSxwdD1zdCYmc3QuaW5kZXhPZigibm9lcnJvcjp0cnVlIikrMSYmc3R8fCIiLGw9W3Asa3x8ISFyfHxhfHwiIixjdCx5dCYmW10sJ1xuXHRwYXJhbXM6IicrdXQrJyIsXG5cdHByb3BzOnsnK3N0KyJ9IisodnQ/IixjdHg6eyIrdnQuc2xpY2UoMCwtMSkrIn0iOiIiKSxwdCxhdHx8MF0scy5wdXNoKGwpLHl0JiYoby5wdXNoKHUpLHU9bCx1WzddPWYpKTpldCYmKGx0PXVbMF0saChldCE9PWx0JiZsdCE9PSJlbHNlIiYmZXQpLHVbN109bi5zdWJzdHJpbmcodVs3XSxvdCksdT1vLnBvcCgpKTtoKCF1JiZldCk7cz11WzNdfXZhciBsLGEsdz10JiZ0LmFsbG93Q29kZSxlPVtdLGY9MCxvPVtdLHM9ZSx1PVssLCxlXTtyZXR1cm4gaChvWzBdJiZvWzBdWzNdLnBvcCgpWzBdKSxuLnJlcGxhY2UoeSxwKSx2KG4ubGVuZ3RoKSwoZj1lW2UubGVuZ3RoLTFdKSYmaCgiIitmIT09ZiYmK2ZbN109PT1mWzddJiZmWzBdKSxmaShlLGk/bjp0LGkpfWZ1bmN0aW9uIGZpKG4saSxyKXt2YXIgYSxmLG8sbCx2LHAsaHQsY3QsbHQsYXQsZXQsdyxzLG90LHksdHQsayxydCx2dCxkLHl0LHB0LHN0LHV0LGcsaD0wLHU9IiIsbnQ9IiIsZnQ9e30sd3Q9bi5sZW5ndGg7Zm9yKCIiK2k9PT1pPyh5PXI/J2RhdGEtbGluaz0iJytpLnJlcGxhY2UoaXQsIiAiKS5zbGljZSgxLC0xKSsnIic6aSxpPTApOih5PWkudG1wbE5hbWV8fCJ1bm5hbWVkIixpLmFsbG93Q29kZSYmKGZ0LmFsbG93Q29kZT0hMCksaS5kZWJ1ZyYmKGZ0LmRlYnVnPSEwKSx3PWkuYm5kcyxvdD1pLnRtcGxzKSxhPTA7YTx3dDthKyspaWYoZj1uW2FdLCIiK2Y9PT1mKXUrPSdcbnJldCs9IicrZisnIjsnO2Vsc2UgaWYobz1mWzBdLG89PT0iKiIpdSs9IiIrZlsxXTtlbHNle2lmKGw9ZlsxXSx2PWZbMl0scnQ9ZlszXSxwPWZbNF0sbnQ9Zls1XSx2dD1mWzddLChwdD1vPT09ImVsc2UiKXx8KGg9MCx3JiYocz1mWzZdKSYmKGg9dy5wdXNoKHMpKSksKHN0PW89PT0iOiIpPyhsJiYobz1sPT09Yj8iPiI6bCtvKSxudCYmKHV0PSJwcm0iK2EsbnQ9InRyeXt2YXIgIit1dCsiPVsiK3YrIl1bMF07fWNhdGNoKGUpeyIrdXQrJz0iIjt9XG4nLHY9dXQpKToocnQmJih0dD11aSh2dCxmdCksdHQudG1wbE5hbWU9eSsiLyIrbyxmaShydCx0dCksb3QucHVzaCh0dCkpLHB0fHwoaz1vLHl0PXUsdT0iIiksZD1uW2ErMV0sZD1kJiZkWzBdPT09ImVsc2UiKSxwKz0iLFxuXHRhcmdzOlsiK3YrIl19IixzdCYmKHN8fGwmJmwhPT1iKSl7aWYoZz1uZXcgRnVuY3Rpb24oImRhdGEsdmlldyxqLHUiLCIgLy8gIit5KyIgIitoKyIgIitvKyJcbiIrbnQrInJldHVybiB7IitwKyI7IiksZy5wYXRocz1zLGcuX2N0eHM9byxyKXJldHVybiBnO2V0PTF9aWYodSs9c3Q/IlxuIisocz8iIjpudCkrKHI/InJldHVybiAiOiJyZXQrPSIpKyhldD8oZXQ9MCxhdD0hMCwnYygiJytsKyciLHZpZXcsJysocz8od1toLTFdPWcsaCk6InsiK3ApKyIpOyIpOm89PT0iPiI/KGN0PSEwLCJoKCIrdisiKTsiKToobHQ9ITAsIih2PSIrdisiKSE9Iisocj8iPSI6IiIpKyd1P3Y6IiI7JykpOihodD0hMCwie3ZpZXc6dmlldyx0bXBsOiIrKHJ0P290Lmxlbmd0aDoiMCIpKyIsIitwKyIsIiksayYmIWQpe2lmKHU9IlsiK3Uuc2xpY2UoMCwtMSkrIl0iLChyfHxzKSYmKHU9bmV3IEZ1bmN0aW9uKCJkYXRhLHZpZXcsaix1IiwiIC8vICIreSsiICIraCsiICIraysiXG5yZXR1cm4gIit1KyI7IikscyYmKCh3W2gtMV09dSkucGF0aHM9cyksdS5fY3R4cz1vLHIpKXJldHVybiB1O3U9eXQrJ1xucmV0Kz10KCInK2srJyIsdmlldyx0aGlzLCcrKGh8fHUpKyIpOyI7cz0wO2s9MH19dT0iLy8gIit5KyJcbnZhciBqPWp8fCIrKHQ/ImpRdWVyeS4iOiJqcyIpKyJ2aWV3cyIrKGx0PyIsdiI6IiIpKyhodD8iLHQ9ai5fdGFnIjoiIikrKGF0PyIsYz1qLl9jbnZ0IjoiIikrKGN0PyIsaD1qLmNvbnZlcnRlcnMuaHRtbCI6IiIpKyhyPyI7XG4iOicscmV0PSIiO1xuJykrKGUudHJ5Q2F0Y2g/InRyeXtcbiI6IiIpKyhmdC5kZWJ1Zz8iZGVidWdnZXI7IjoiIikrdSsocj8iXG4iOiJcbnJldHVybiByZXQ7XG4iKSsoZS50cnlDYXRjaD8iXG59Y2F0Y2goZSl7cmV0dXJuIGouX2VycihlKTt9IjoiIik7dHJ5e3U9bmV3IEZ1bmN0aW9uKCJkYXRhLHZpZXcsaix1Iix1KX1jYXRjaChidCl7YygiQ29tcGlsZWQgdGVtcGxhdGUgY29kZTpcblxuIit1LGJ0KX1yZXR1cm4gaSYmKGkuZm49dSksdX1mdW5jdGlvbiBodChuLHQsaSl7ZnVuY3Rpb24gYihiLGssZCxnLG50LHR0LGl0LHJ0LHV0LGZ0LGV0LG90LGN0LGx0LGF0LHZ0LHl0LHB0LHd0LGJ0KXtmdW5jdGlvbiBkdChuLGkscixmLGUsbyxjLGwpe2lmKHImJih0JiYodT09PSJsaW5rVG8iJiYocz10Ll9qc3Z0bz10Ll9qc3Z0b3x8W10scy5wdXNoKG50KSksKCF1fHxoKSYmdC5wdXNoKG50LnNsaWNlKGkubGVuZ3RoKSkpLHIhPT0iLiIpKXt2YXIgYT0oZj8ndmlldy5obHAoIicrZisnIiknOmU/InZpZXciOiJkYXRhIikrKGw/KG8/Ii4iK286Zj8iIjplPyIiOiIuIityKSsoY3x8IiIpOihsPWY/IiI6ZT9vfHwiIjpyLCIiKSk7cmV0dXJuIGE9YSsobD8iLiIrbDoiIiksaSsoYS5zbGljZSgwLDkpPT09InZpZXcuZGF0YSI/YS5zbGljZSg1KTphKX1yZXR1cm4gbn12YXIga3Q7aWYodHQ9dHR8fCIiLGQ9ZHx8a3x8b3QsbnQ9bnR8fHV0LGZ0PWZ0fHx5dHx8IiIsIWl0fHxlfHxmKXJldHVybiB0JiZ2dCYmIWUmJiFmJiYoIXV8fGh8fHMpJiYoa3Q9dltyXSxidC5sZW5ndGgtMT53dC1rdCYmKGt0PWJ0LnNsaWNlKGt0LHd0KzEpLHZ0PXcrIjoiK2t0K28sdnQ9eVt2dF09eVt2dF18fHN0KHArdnQrYSxpLCEwKSx2dC5wYXRoc3x8aHQoa3QsdnQucGF0aHM9W10saSksKHN8fHQpLnB1c2goe19qc3ZPYjp2dH0pKSksZT8oZT0hY3QsZT9iOiciJyk6Zj8oZj0hbHQsZj9iOiciJyk6KGQ/KHIrKyx2W3JdPXd0KyssZCk6IiIpKyhwdD9yPyIiOnU/KHU9aD1zPSExLCJcYiIpOiIsIjpydD8ociYmYyhuKSx1PW50LGg9ZywiXGIiK250KyI6Iik6bnQ/bnQuc3BsaXQoIl4iKS5qb2luKCIuIikucmVwbGFjZShzaSxkdCkrKGZ0PyhsWysrcl09ITAsbnQuY2hhckF0KDApIT09Ii4iJiYodltyXT13dCksZnQpOnR0KTp0dD90dDphdD8obFtyLS1dPSExLGF0KSsoZnQ/KGxbKytyXT0hMCxmdCk6IiIpOmV0PyhsW3JdfHxjKG4pLCIsIik6az8iIjooZT1jdCxmPWx0LCciJykpO2Mobil9dmFyIHUscyxoLHk9aS5saW5rcyxsPXt9LHY9ezA6LTF9LHI9MCxmPSExLGU9ITE7cmV0dXJuKG4rIiAiKS5yZXBsYWNlKC9cKVxeL2csIikuIikucmVwbGFjZShoaSxiKX1mdW5jdGlvbiBsKG4sdCl7cmV0dXJuIG4mJm4hPT10P3Q/ZihmKHt9LHQpLG4pOm46dCYmZih7fSx0KX1mdW5jdGlvbiBlaShuKXtyZXR1cm4gd3Rbbl18fCh3dFtuXT0iJiMiK24uY2hhckNvZGVBdCgwKSsiOyIpfWZ1bmN0aW9uIGVyKG4pe3ZhciBpLHQscj1bXTtpZih0eXBlb2Ygbj09Im9iamVjdCIpZm9yKGkgaW4gbil0PW5baV0sdCYmdC50b0pTT04mJiF0LnRvSlNPTigpfHxhdCh0KXx8ci5wdXNoKHtrZXk6aSxwcm9wOm5baV19KTtyZXR1cm4gcn1pZigoIXR8fCF0LnZpZXdzKSYmIW4uanN2aWV3cyl7dmFyIHUsdHQseSx2dCx5dCxwPSJ7Iix3PSJ7IixvPSJ9IixhPSJ9IixnPSJeIixzaT0vXighKj8pKD86bnVsbHx0cnVlfGZhbHNlfFxkW1xkLl0qfChbXHckXSt8XC58fihbXHckXSspfCModmlld3woW1x3JF0rKSk/KShbXHckLl5dKj8pKD86Wy5bXl0oW1x3JF0rKVxdPyk/KSQvZyxoaT0vKFwoKSg/PVxzKlwoKXwoPzooWyhbXSlccyopPyg/OihcXj8pKCEqP1sjfl0/W1x3JC5eXSspP1xzKigoXCtcK3wtLSl8XCt8LXwmJnxcfFx8fD09PXwhPT18PT18IT18PD18Pj18Wzw+JSo6P1wvXXwoPSkpXHMqfCghKj9bI35dP1tcdyQuXl0rKShbKFtdKT8pfCgsXHMqKXwoXCg/KVxcPyg/OignKXwoIikpfCg/OlxzKigoWylcXV0pKD89XHMqXC58XHMqXF58XHMqJCl8WylcXV0pKFsoW10/KSl8KFxzKykvZyxpdD0vWyBcdF0qKFxyXG58XG58XHIpL2csY2k9L1xcKFsnIl0pL2csbGk9L1snIlxcXS9nLGFpPS9ceDA4KH4pPyhbXlx4MDhdKylceDA4L2csdmk9L15pZlxzLyx5aT0vPChcdyspWz5cc10vLHB0PS9bXHgwMGA+PCInJl0vZyxydD0vXm9uW0EtWl18XmNvbnZlcnQoQmFjayk/JC8scGk9cHQsd2k9MCxiaT0wLHd0PXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsIlx4MDAiOiImIzA7IiwiJyI6IiYjMzk7IiwnIic6IiYjMzQ7IiwiYCI6IiYjOTY7In0sYj0iaHRtbCIsYnQ9ImRhdGEtanN2LXRtcGwiLHV0PXt9LGs9e3RlbXBsYXRlOntjb21waWxlOnJpfSx0YWc6e2NvbXBpbGU6dXJ9LGhlbHBlcjp7fSxjb252ZXJ0ZXI6e319LHI9e2pzdmlld3M6InYxLjAuMC1iZXRhIixyZW5kZXI6dXQsc2V0dGluZ3M6ZnVuY3Rpb24obil7ZihlLG4pO2R0KGUuX2RiZ01vZGUpO2UuanN2JiZlLmpzdigpfSxzdWI6e1ZpZXc6bnQsRXJyOmZ0LHRtcGxGbjpzdCxjdnQ6ZXQscGFyc2U6aHQsZXh0ZW5kOmYsZXJyOnYsc3ludGF4RXJyOmMsaXNGbjpmdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiJ9LERhdGFNYXA6Z3R9LF9jbnZ0Om5yLF90YWc6aXIsX2VycjpmdW5jdGlvbihuKXtyZXR1cm4gZS5fZGJnTW9kZT8iRXJyb3I6ICIrKG4ubWVzc2FnZXx8bikrIi4gIjoiIn19OyhmdC5wcm90b3R5cGU9bmV3IEVycm9yKS5jb25zdHJ1Y3Rvcj1mdDt0aS5kZXBlbmRzPWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuZ2V0KCJpdGVtIiksImluZGV4Il19O2lpLmRlcGVuZHM9ZnVuY3Rpb24oKXtyZXR1cm5bImluZGV4Il19O2Zvcih0dCBpbiBrKWZyKHR0LGtbdHRdKTt2YXIgY3Qscz1yLnRlbXBsYXRlcyxsdD1yLmNvbnZlcnRlcnMsb2k9ci5oZWxwZXJzLGQ9ci50YWdzLGg9ci5zdWIsYXQ9aC5pc0ZuLGU9ci5zZXR0aW5nczt0Pyh1PXQsdS5mbi5yZW5kZXI9b3QsKGN0PXUub2JzZXJ2YWJsZSkmJihmKGgsY3Quc3ViKSxkZWxldGUgY3Quc3ViKSk6KHU9bi5qc3ZpZXdzPXt9LHUuaXNBcnJheT1BcnJheSYmQXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKT09PSJbb2JqZWN0IEFycmF5XSJ9KTt1LnJlbmRlcj11dDt1LnZpZXdzPXI7dS50ZW1wbGF0ZXM9cz1yLnRlbXBsYXRlcztlKHtkZWJ1Z01vZGU6ZHQsZGVsaW1pdGVyczpuaSxfZGJnTW9kZTohMCx0cnlDYXRjaDohMH0pO2QoeyJlbHNlIjpmdW5jdGlvbigpe30sImlmIjp7cmVuZGVyOmZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIHQucmVuZGVyaW5nLmRvbmV8fCFuJiYoYXJndW1lbnRzLmxlbmd0aHx8IXQudGFnQ3R4LmluZGV4KT8iIjoodC5yZW5kZXJpbmcuZG9uZT0hMCx0LnNlbGVjdGVkPXQudGFnQ3R4LmluZGV4LHQudGFnQ3R4LnJlbmRlcih0LnRhZ0N0eC52aWV3LCEwKSl9LG9uVXBkYXRlOmZ1bmN0aW9uKG4sdCxpKXtmb3IodmFyIHIsZix1PTA7KHI9dGhpcy50YWdDdHhzW3VdKSYmci5hcmdzLmxlbmd0aDt1KyspaWYocj1yLmFyZ3NbMF0sZj0hciE9IWlbdV0uYXJnc1swXSwhdGhpcy5jb252ZXJ0JiYhIXJ8fGYpcmV0dXJuIGY7cmV0dXJuITF9LGZsb3c6ITB9LCJmb3IiOntyZW5kZXI6ZnVuY3Rpb24obil7dmFyIGYsdD10aGlzLHI9dC50YWdDdHgsZT0iIixvPTA7cmV0dXJuIHQucmVuZGVyaW5nLmRvbmV8fCgoZj0hYXJndW1lbnRzLmxlbmd0aCkmJihuPXIudmlldy5kYXRhKSxuIT09aSYmKGUrPXIucmVuZGVyKG4sZiksbys9dS5pc0FycmF5KG4pP24ubGVuZ3RoOjEpLCh0LnJlbmRlcmluZy5kb25lPW8pJiYodC5zZWxlY3RlZD1yLmluZGV4KSksZX0sZmxvdzohMCxhdXRvQmluZDohMH0saW5jbHVkZTp7ZmxvdzohMCxhdXRvQmluZDohMH0sIioiOntyZW5kZXI6a3QsZmxvdzohMH19KTtkKHtwcm9wczpmKGYoe30sZFsiZm9yIl0pLGd0KGVyKSl9KTtkLnByb3BzLmF1dG9CaW5kPSEwO2x0KHtodG1sOmZ1bmN0aW9uKG4pe3JldHVybiBuIT1pP1N0cmluZyhuKS5yZXBsYWNlKHBpLGVpKToiIn0sYXR0cjpmdW5jdGlvbihuKXtyZXR1cm4gbiE9aT9TdHJpbmcobikucmVwbGFjZShwdCxlaSk6bj09PW51bGw/bjoiIn0sdXJsOmZ1bmN0aW9uKG4pe3JldHVybiBuIT1pP2VuY29kZVVSSShTdHJpbmcobikpOm49PT1udWxsP246IiJ9fSk7bmkoKX19KSh0aGlzLHRoaXMualF1ZXJ5KSxmdW5jdGlvbihuLHQsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGYobil7cmV0dXJuIHIobik/bmV3IGsobik6bmV3IGIobil9ZnVuY3Rpb24gYihuKXtyZXR1cm4gdGhpcy5fZGF0YT1uLHRoaXN9ZnVuY3Rpb24gayhuKXtyZXR1cm4gdGhpcy5fZGF0YT1uLHRoaXN9ZnVuY3Rpb24gY3Qobil7cmV0dXJuIHIobik/W25dOm59ZnVuY3Rpb24gcnQobix0KXtuPXIobik/bjpbbl07Zm9yKHZhciBpLGU9dCxvPWUsaD1uLmxlbmd0aCxmPVtdLHM9MDtzPGg7cysrKXtpZihpPW5bc10sdShpKSl7Zj1mLmNvbmNhdChydChpLmNhbGwodCx0KSx0KSk7Y29udGludWV9ZWxzZSBpZigiIitpIT09aSl7dD1vPWk7byE9PWUmJmYucHVzaChlPW8pO2NvbnRpbnVlfW8hPT1lJiZmLnB1c2goZT1vKTtmLnB1c2goaSl9cmV0dXJuIGZ9ZnVuY3Rpb24gdXQobix0KXt2YXIgcixpO2ZvcihyIGluIG4pe2k9ITA7YnJlYWt9aXx8ZGVsZXRlIHlbdF19ZnVuY3Rpb24gZChuLHQpe2lmKCEobi5kYXRhJiZuLmRhdGEub2ZmKSl7dmFyIHYseSxwLGY9dC5vbGRWYWx1ZSxvPXQudmFsdWUsdT1uLmRhdGEsaD11Lm9ic2VydmVBbGwsYz0hdS5jYi5ub0FycmF5LGE9dS5wYXRocztuLnR5cGU9PT1sPyh1LmNiLmFycmF5fHx1LmNiKS5jYWxsKHUsbix0KToodS5wcm9wPT09dC5wYXRofHx1LnByb3A9PT0iKiIpJiYoZj10eXBlb2YgZj09PXMmJihhWzBdfHxjJiZyKGYpKSYmZixvPXR5cGVvZihvPXQudmFsdWUpPT09cyYmKGFbMF18fGMmJnIobykpJiZvLGg/KHY9aC5fcGF0aCsiLiIrdC5wYXRoLHk9aC5maWx0ZXIscD1baC5wYXJlbnRzKCkuc2xpY2UoKV0sZiYmZShjLGgubnMsW2ZdLGEsdS5jYiwhMCx5LHAsdiksbyYmZShjLGgubnMsW29dLGEsdS5jYixpLHkscCx2KSk6KGYmJmUoYyxbZl0sYSx1LmNiLCEwKSxvJiZlKGMsW29dLGEsdS5jYikpLHUuY2Iobix0KSl9fWZ1bmN0aW9uIGEoKXtmdW5jdGlvbiBkdChpLHIsdSxmKXt2YXIgcyxlLHk9aXQobikscD1jdChuKTtpZihpPWF0P2krIi4iK2F0OmksZ3x8Zil5JiZ0KHApLm9mZihpLGQpO2Vsc2V7aWYobz15JiZ0Ll9kYXRhKG4pKWZvcihvPW8mJm8uZXZlbnRzLG89byYmb1t1P2w6Y10sa3Q9byYmby5sZW5ndGg7a3QtLTspaWYoKG50PW9ba3RdLmRhdGEpJiZudC5jYi5fY0lkPT09aC5fY0lkJiZudC5ucz09PWF0KXtpZih1KXJldHVybjsocj09PSIqIiYmbnQucHJvcCE9PXJ8fG50LnByb3A9PT12KSYmdChuKS5vZmYoaSxkKX1lPXU/e306e2Z1bGxQYXRoOmEscGF0aHM6cj9bcl06W10scHJvcDp2fTtlLm5zPWF0O2UuY2I9aDtsdCYmKGUub2JzZXJ2ZUFsbD17X3BhdGg6bHQscGF0aDpmdW5jdGlvbigpe3JldHVybiBzPWlpLmxlbmd0aCxsdC5yZXBsYWNlKC9bWy5dL2csZnVuY3Rpb24obil7cmV0dXJuIHMtLSxuPT09IlsiPyJbIit0LmluQXJyYXkoaWlbcy0xXSxpaVtzXSk6Ii4ifSl9LHBhcmVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gaWl9LGZpbHRlcjplaSxuczphdH0pO3QocCkub24oaSxudWxsLGUsZCk7bmkmJihuaVt0LmRhdGEobiwib2JJZCIpfHx0LmRhdGEobiwib2JJZCIsaHQrKyldPW4pfX1mdW5jdGlvbiB2aShuLHQpe24uX29iPXl0KG4sZnQpO3ZhciBpPWZ0O3JldHVybiBmdW5jdGlvbih1LGYpe3ZhciBvPW4uX29iLGM9dC5sZW5ndGg7dHlwZW9mIG89PT1zJiYoZ3QobywhMCksKGN8fHZ0JiZyKG8pKSYmZSh2dCxbb10sdCxoLHl0LCEwKSk7bz1uLl9vYj15dChuLGkpO3R5cGVvZiBvPT09cyYmKGd0KG8pLChjfHx2dCYmcihvKSkmJmUodnQsW29dLHQsaCx5dCxbaV0pKTtoKHUsZil9fWZ1bmN0aW9uIGd0KHQsdSxlLG8pe2lmKHZ0KXt2YXIgcz1uLGM9bHQ7bj10O28mJihuPXRbb10sbHQrPSIuIitvLGVpJiYobj1mLl9mbHRyKG8sdCxsdCxlaSkpKTtuJiYoZXx8cihuKSkmJmR0KGwrIi5vYnNlcnZlIisoaD8iLm9icyIrKGJ0PWguX2NJZD1oLl9jSWR8fHcrKyk6IiIpLGksITAsdSk7bj1zO2x0PWN9fXZhciB3dCx1aSxvaSxldCx2LGEsZmksZyxoLGJ0LGt0LG50LG8seXQsc2ksbmksdGksaGksaWksbHQsZWksYXQsY2ksbGksdnQ9dGhpcyE9ITEsYWk9MSxyaT1zdCxiPUFycmF5LmFwcGx5KDAsYXJndW1lbnRzKSxrPWIucG9wKCksZnQ9Yi5zaGlmdCgpLHB0PWZ0LG49cHQsdHQ9Yi5sZW5ndGg7Zm9yKGZ0KyIiPT09ZnQmJnZ0JiYoYXQ9ZnQsZnQ9bj1wdD1iLnNoaWZ0KCksdHQtLSksdShrKT9oPWs6KGsrIiI9PT1rJiYobHQ9ayxpaT1iLnBvcCgpLGVpPWIucG9wKCksaz1iLnBvcCgpLHR0PXR0LTMpLGs9PT0hMD9nPWs6ayYmKGZ0PWssYWk9MCksaz1iW3R0LTFdLCh0dCYmaz09PWl8fHUoaykpJiYoaD1iLnBvcCgpLHR0LS0pKSx0dCYmdShiW3R0LTFdKSYmKHl0PWgsaD1iLnBvcCgpLHR0LS0pLHJpKz1nP2g/Ii5vYnMiK2guX2NJZDoiIjoiLm9icyIrKGJ0PWguX2NJZD1oLl9jSWR8fHcrKyksZ3x8KG5pPXlbYnRdPXlbYnRdfHx7fSksY2k9YXQmJmF0Lm1hdGNoKG90KXx8WyIiXSxsaT1jaS5sZW5ndGg7bGktLTspZm9yKGF0PWNpW2xpXSxyKHB0KT9ndChwdCxnLCEwKTpnJiZ0dD09PTAmJnB0JiZkdChyaSwiIiksdGk9MCx3dD0wO3d0PHR0O3d0KyspaWYoYT1iW3d0XSxhIT09IiIpe2lmKG49cHQsIiIrYT09PWEpe2lmKGV0PWEuc3BsaXQoIl4iKSxldFsxXSYmKHRpPWV0WzBdLnNwbGl0KCIuIikubGVuZ3RoLGE9ZXQuam9pbigiLiIpLHRpPWEuc3BsaXQoIi4iKS5sZW5ndGgtdGkpLHl0JiYoc2k9eXQoYSxwdCkpKXt0dCs9c2kubGVuZ3RoLTE7cC5hcHBseShiLFt3dC0tLDFdLmNvbmNhdChzaSkpO2NvbnRpbnVlfWV0PWEuc3BsaXQoIi4iKX1lbHNlIGFpJiYhdShhKSYmKGEuX2pzdk9iJiYoYS5fY2I9aGk9dmkoYSxiLnNsaWNlKHd0KzEpKSxoaS5ub0FycmF5PXZ0PT09ITEsaGkuX2NJZD1oLl9jSWQsZSh2dCxbZnRdLGIuc2xpY2UoMCx3dCksYS5fY2IseXQpLGE9YS5fb2IpLG49YSkscHQ9YSxldD1bcHRdO3doaWxlKG4mJih2PWV0LnNoaWZ0KCkpIT09aSlpZih0eXBlb2Ygbj09PXMpe2lmKCIiK3Y9PT12KXtpZih2PT09IiIpY29udGludWU7aWYoZXQubGVuZ3RoPHRpKzEmJiFuLm5vZGVUeXBlKXtpZighZyYmKG89aXQobikmJnQuX2RhdGEobikpKXtmb3Iobz1vLmV2ZW50cyxvPW8mJm9bY10sa3Q9byYmby5sZW5ndGgsb2k9MDtrdC0tOyludD1vW2t0XS5kYXRhLG50JiZudC5jYj09PWgmJm50Lm5zPT09YXQmJihudC5wcm9wPT09dnx8bnQucHJvcD09PSIqIikmJigodWk9ZXQuam9pbigiLiIpKSYmbnQucGF0aHMucHVzaCh1aSksb2krKyk7aWYob2kpe249blt2XTtjb250aW51ZX19aWYodj09PSIqIil7IWcmJm8mJm8ubGVuZ3RoJiZkdChyaSwiIiwhMSwhMCk7dShuKT8oZmk9bi5kZXBlbmRzKSYmZSh2dCxbZmldLGgsZ3x8ZnQpOmR0KHJpLCIiKTtmb3IodWkgaW4gbilndChuLGcsaSx1aSk7YnJlYWt9ZWxzZSB2JiZkdChyaSsiLiIrdixldC5qb2luKCIuIikpfWx0JiYobHQrPSIuIit2KTt2PW5bdl19aWYodSh2KSl7KGZpPXYuZGVwZW5kcykmJmUodnQsW25dLHJ0KGZpLG4pLGgseXQsZ3x8W2Z0XSk7YnJlYWt9bj12fWd0KG4sZyl9cmV0dXJuIGJ0JiZ1dChuaSxidCkse2NiSWQ6YnQsYm5kOm5pLGxlYWY6bn19ZnVuY3Rpb24gbHQoKXtyZXR1cm5bXS5wdXNoLmNhbGwoYXJndW1lbnRzLCEwKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBlKCl7dmFyIG49W10uY29uY2F0LmFwcGx5KFtdLGFyZ3VtZW50cyk7cmV0dXJuIGEuYXBwbHkobi5zaGlmdCgpLG4pfWZ1bmN0aW9uIGZ0KG4sdCxpKXtyZXR1cm4gaS5pbmRleE9mKCIuIik8MCYmaS5pbmRleE9mKCJbIik8MCYmdFtuXX1mdW5jdGlvbiBhdChuLHIsdSxmLGUpe3JldHVybiBmPWZ8fGZ0LGU9ZXx8ZnQse2dldFRndDpuLG9ic1NyYzpyLG9ic1RndDp1LG1hcDpmdW5jdGlvbihpKXt2YXIgbz10aGlzLGgsYztyZXR1cm4gby5zcmMhPT1pJiYoby5zcmMmJm8udW5tYXAoKSx0eXBlb2YgaT09PXMmJihjPW4uYXBwbHkobyxhcmd1bWVudHMpLHQub2JzZXJ2YWJsZSYmKHQub2JzZXJ2YWJsZShpKS5vYnNlcnZlQWxsKG8ub2JzPWZ1bmN0aW9uKG4sdCl7IWgmJnImJihoPSEwLHIuY2FsbChvLGksYyxuLHQpLGg9ITEpfSxmKSx0Lm9ic2VydmFibGUoYykub2JzZXJ2ZUFsbChvLm9idD1mdW5jdGlvbihuLHQpeyFoJiZ1JiYoaD0hMCx1LmNhbGwobyxpLGMsbix0KSxoPSExKX0sZSkpLG8uc3JjPWksby50Z3Q9YykpLG99LHVubWFwOmZ1bmN0aW9uKCl7aWYodC5vYnNlcnZhYmxlKXt2YXIgbj10aGlzO24uc3JjJiYodC5vYnNlcnZhYmxlKG4uc3JjKS51bm9ic2VydmVBbGwobi5vYnMsZiksdC5vYnNlcnZhYmxlKG4udGd0KS51bm9ic2VydmVBbGwobi5vYnQsZSksbi5zcmM9bi50Z3Q9aSl9fX19ZnVuY3Rpb24gZyhuLHQsaSxyKXtuKyIiIT09biYmKGk9dCx0PW4sbj0iIik7dihuLHRoaXMuX2RhdGEsdCxpLFtdLCJyb290IixyKX1mdW5jdGlvbiBldChuLHQsaSl7Zy5jYWxsKHRoaXMsbix0LGksITApfWZ1bmN0aW9uIHYobix0LHUsZSxvLGgsYyl7ZnVuY3Rpb24gcCh0LGkpe2Zvcih5PXQubGVuZ3RoLGw9aCsiW10iO3ktLTspKGs9Zi5fZmx0cih5LHQsbCxlKSkmJnYobixrLHUsZXx8IiIsby5zbGljZSgpLGwsaSl9ZnVuY3Rpb24gZCh0LGkpe2g9dC5kYXRhLm9ic2VydmVBbGwuX3BhdGg7dmFyIHI9bztvWzBdIT09dC50YXJnZXQmJihvPW8uc2xpY2UoKSxvLnVuc2hpZnQodC50YXJnZXQpKTtzd2l0Y2goaS5jaGFuZ2Upe2Nhc2UiaW5zZXJ0IjpwKGkuaXRlbXMpO2JyZWFrO2Nhc2UicmVtb3ZlIjpwKGkuaXRlbXMsITApO2JyZWFrO2Nhc2UicmVmcmVzaCI6cChpLm9sZEl0ZW1zLCEwKTtwKHQudGFyZ2V0KTticmVhaztjYXNlInNldCI6bD1oKyIuIitpLnBhdGg7dihuLGkub2xkVmFsdWUsdSwwLG8uc2xpY2UoKSxsLCEwKTt2KG4saS52YWx1ZSx1LDAsby5zbGljZSgpLGwpfXUuYXBwbHkodGhpcyxhcmd1bWVudHMpO289cn12YXIgeSxiLGwsaztpZih0eXBlb2YgdD09PXMpaWYoYj1yKHQpPyIiOiIqIixvLnVuc2hpZnQodCksdT8oYnx8ZSE9PTApJiYoZC5fY0lkPXUuX2NJZD11Ll9jSWR8fHcrKyxhKG4sdCxiLGQsYyxlLG8uc2xpY2UoKSxoKSk6YShuLHQsYixpLGMsZSxvLnNsaWNlKCksaCksYilmb3IoeSBpbiB0KXkuY2hhckF0KDApIT09Il8iJiZ5IT09dHQmJihsPWgrIi4iK3ksKGs9Zi5fZmx0cih5LHQsbCxlKSkmJnYobixrLHUsZXx8MCxvLnNsaWNlKCksbCxjKSk7ZWxzZSBwKHQsYyl9aWYoIXQpdGhyb3cianNWaWV3cy9qc09ic2VydmFibGUgcmVxdWlyZSBqUXVlcnkiO2lmKCF0Lm9ic2VydmFibGUpe3ZhciBudD10LmV2ZW50LnNwZWNpYWwsbz10LnZpZXdzP3Qudmlld3Muc3ViOmYuc3ViPXt9LHA9W10uc3BsaWNlLHI9dC5pc0FycmF5LHR0PXQuZXhwYW5kbyxzPSJvYmplY3QiLGg9cGFyc2VJbnQsb3Q9L1xTKy9nLGM9by5wcm9wQ2huZz1vLnByb3BDaG5nfHwicHJvcGVydHlDaGFuZ2UiLGw9by5hcnJDaG5nPW8uYXJyQ2huZ3x8ImFycmF5Q2hhbmdlIix5PW8uX2NiQm5kcz1vLl9jYkJuZHN8fHt9LHN0PWMrIi5vYnNlcnZlIix1PW8uaXNGbixodD0xLHc9MSxpdD10Lmhhc0RhdGE7by5nZXREZXBzPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgaSx0LHI9W10sZj1uLmxlbmd0aDtmLS07KWk9bltmLS1dLHQ9bltmXSx0JiYocj1yLmNvbmNhdCh1KHQpP3QoaSxpKTp0KSk7cmV0dXJuIHJ9fTtvLkRhdGFNYXA9YXQ7dC5vYnNlcnZhYmxlPWY7Zi5fZmx0cj1mdW5jdGlvbihuLHQsaSxyKXt2YXIgZj1yJiZ1KHIpP3Iobix0LGkpOnRbbl07cmV0dXJuIGYmJihmPXUoZik/Zi5zZXQmJmYuY2FsbCh0KTpmKSx0eXBlb2YgZj09PXMmJmZ9O2YuT2JqZWN0PWI7Zi5BcnJheT1rO3Qub2JzZXJ2ZT1mLm9ic2VydmU9YTt0LnVub2JzZXJ2ZT1mLnVub2JzZXJ2ZT1sdDtmLl9hcHBseT1lO2IucHJvdG90eXBlPXtfZGF0YTpudWxsLG9ic2VydmVBbGw6Zyx1bm9ic2VydmVBbGw6ZXQsZGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfSxzZXRQcm9wZXJ0eTpmdW5jdGlvbihuLHQsdSl7dmFyIGYsaCxzLGU9dGhpcyxvPWUuX2RhdGE7aWYobj1ufHwiIixvKWlmKHIobikpZm9yKGY9bi5sZW5ndGg7Zi0tOyloPW5bZl0sZS5zZXRQcm9wZXJ0eShoLm5hbWUsaC52YWx1ZSx1PT09aXx8dSk7ZWxzZSBpZigiIituIT09bilmb3IoZiBpbiBuKWUuc2V0UHJvcGVydHkoZixuW2ZdLHQpO2Vsc2UgaWYobiE9PXR0KXtmb3Iocz1uLnNwbGl0KCIuIik7byYmcy5sZW5ndGg+MTspbz1vW3Muc2hpZnQoKV07ZS5fc2V0UHJvcGVydHkobyxzLmpvaW4oIi4iKSx0LHUpfXJldHVybiBlfSxfc2V0UHJvcGVydHk6ZnVuY3Rpb24obix0LGkscil7dmFyIGUsbyxmPXQ/blt0XTpuO3UoZikmJmYuc2V0JiYobz1mLGU9Zi5zZXQ9PT0hMD9mOmYuc2V0LGY9Zi5jYWxsKG4pKTsoZiE9PWl8fHImJmYhPWkpJiYoIShmIGluc3RhbmNlb2YgRGF0ZSl8fGY+aXx8ZjxpKSYmKGU/KGUuY2FsbChuLGkpLGk9by5jYWxsKG4pKTp0JiYoblt0XT1pKSx0aGlzLl90cmlnZ2VyKG4se2NoYW5nZToic2V0IixwYXRoOnQsdmFsdWU6aSxvbGRWYWx1ZTpmfSkpfSxfdHJpZ2dlcjpmdW5jdGlvbihuLGkpe3QobikudHJpZ2dlckhhbmRsZXIoYyxpKX19O2sucHJvdG90eXBlPXtfZGF0YTpudWxsLG9ic2VydmVBbGw6Zyx1bm9ic2VydmVBbGw6ZXQsZGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfSxpbnNlcnQ6ZnVuY3Rpb24obix0KXt2YXIgaT10aGlzLl9kYXRhO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MSYmKHQ9bixuPWkubGVuZ3RoKSxuPWgobiksbj4tMSYmbjw9aS5sZW5ndGgmJih0PXIodCk/dDpbdF0sdC5sZW5ndGgmJnRoaXMuX2luc2VydChuLHQpKSx0aGlzfSxfaW5zZXJ0OmZ1bmN0aW9uKG4sdCl7dmFyIGk9dGhpcy5fZGF0YSxyPWkubGVuZ3RoO3AuYXBwbHkoaSxbbiwwXS5jb25jYXQodCkpO3RoaXMuX3RyaWdnZXIoe2NoYW5nZToiaW5zZXJ0IixpbmRleDpuLGl0ZW1zOnR9LHIpfSxyZW1vdmU6ZnVuY3Rpb24obix0KXt2YXIgcix1PXRoaXMuX2RhdGE7cmV0dXJuIG49PT1pJiYobj11Lmxlbmd0aC0xKSxuPWgobiksdD10P2godCk6dD09PTA/MDoxLHQ+LTEmJm4+LTEmJihyPXUuc2xpY2UobixuK3QpLHQ9ci5sZW5ndGgsdCYmdGhpcy5fcmVtb3ZlKG4sdCxyKSksdGhpc30sX3JlbW92ZTpmdW5jdGlvbihuLHQsaSl7dmFyIHI9dGhpcy5fZGF0YSx1PXIubGVuZ3RoO3Iuc3BsaWNlKG4sdCk7dGhpcy5fdHJpZ2dlcih7Y2hhbmdlOiJyZW1vdmUiLGluZGV4Om4saXRlbXM6aX0sdSl9LG1vdmU6ZnVuY3Rpb24obix0LGkpe2lmKGk9aT9oKGkpOmk9PT0wPzA6MSxuPWgobiksdD1oKHQpLGk+MCYmbj4tMSYmdD4tMSYmbiE9PXQpe3ZhciByPXRoaXMuX2RhdGEuc2xpY2UobixuK2kpO2k9ci5sZW5ndGg7aSYmdGhpcy5fbW92ZShuLHQsaSxyKX1yZXR1cm4gdGhpc30sX21vdmU6ZnVuY3Rpb24obix0LGkscil7dmFyIHU9dGhpcy5fZGF0YSxmPXUubGVuZ3RoO3Uuc3BsaWNlKG4saSk7dS5zcGxpY2UuYXBwbHkodSxbdCwwXS5jb25jYXQocikpO3RoaXMuX3RyaWdnZXIoe2NoYW5nZToibW92ZSIsb2xkSW5kZXg6bixpbmRleDp0LGl0ZW1zOnJ9LGYpfSxyZWZyZXNoOmZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuX2RhdGEuc2xpY2UoKTtyZXR1cm4gdGhpcy5fcmVmcmVzaCh0LG4pLHRoaXN9LF9yZWZyZXNoOmZ1bmN0aW9uKG4sdCl7dmFyIGk9dGhpcy5fZGF0YSxyPWkubGVuZ3RoO3AuYXBwbHkoaSxbMCxpLmxlbmd0aF0uY29uY2F0KHQpKTt0aGlzLl90cmlnZ2VyKHtjaGFuZ2U6InJlZnJlc2giLG9sZEl0ZW1zOm59LHIpfSxfdHJpZ2dlcjpmdW5jdGlvbihuLGkpe3ZhciByPXRoaXMuX2RhdGEsdT1yLmxlbmd0aCxmPXQoW3JdKTtmLnRyaWdnZXJIYW5kbGVyKGwsbik7dSE9PWkmJmYudHJpZ2dlckhhbmRsZXIoYyx7Y2hhbmdlOiJzZXQiLHBhdGg6Imxlbmd0aCIsdmFsdWU6dSxvbGRWYWx1ZTppfSl9fTtudFtjXT1udFtsXT17cmVtb3ZlOmZ1bmN0aW9uKG4pe3ZhciByLHUsZixlLG8saT1uLmRhdGE7aWYoaSYmKGkub2ZmPTEsaT1pLmNiKSYmKHI9eVtpLl9jSWRdKSl7Zm9yKGY9dC5fZGF0YSh0aGlzKS5ldmVudHNbbi50eXBlXSxlPWYubGVuZ3RoO2UtLSYmIXU7KXU9KG89ZltlXS5kYXRhKSYmby5jYj09PWk7dXx8KGRlbGV0ZSByW3QuZGF0YSh0aGlzLCJvYklkIildLHV0KHIsaS5fY0lkKSl9fX19fSh0aGlzLHRoaXMualF1ZXJ5KSxmdW5jdGlvbihuLHQsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHNyKG4pe3ZhciB0PXRoaXMubGlua2VkRWxlbTt0JiZldCh7dGFyZ2V0OnRbMF19LG4pfWZ1bmN0aW9uIGV0KG4scil7dmFyIHAsbnQsaCxmLHcsbCxlLGIsbyxhLHR0LGssZyx1LHMsdix5PW4udGFyZ2V0LGl0PXkuX2pzdkJuZCx1dD0vJihcZCspXCs/L2c7aWYoaXQpd2hpbGUoYT11dC5leGVjKGl0KSlpZigoYT1jW2FbMV1dKSYmKHM9YS50bykpe2lmKGY9YS5saW5rQ3R4LG89Zi52aWV3LHU9Zi50YWcsYj10KHkpLGs9by5obHAod3QpLGc9by5obHAoYnQpLGg9b3QoeSkscD1ndFtoXSxyPT09aSYmKHI9cnQoaCk/aCh5KTpwP2JbcF0oKTpiLmF0dHIoaCkpLGw9c1sxXSxzPXNbMF0sbCYmKHc9cnQobCk/bDpvLmdldFJzYygiY29udmVydGVycyIsbCkpLHcmJihyPXcuY2FsbCh1LHIpKSx0dD1vLmxpbmtDdHgsby5saW5rQ3R4PWYsdj17Y2hhbmdlOiJjaGFuZ2UiLG9sZFZhbHVlOmYuX3ZhbCx2YWx1ZTpyfSwoIWt8fCEobnQ9ay5jYWxsKGYsbix2KT09PSExKSkmJighdXx8IXUub25CZWZvcmVDaGFuZ2V8fCEobnQ9dS5vbkJlZm9yZUNoYW5nZShuLHYpPT09ITEpKSYmciE9PWkmJihlPXNbMF0sciE9PWkmJmUpKXtpZihlPWUuX2pzdk9iP2UuX29iOmUsdSYmKHUuXy5jaGdpbmc9ITApLGQoZSkuc2V0UHJvcGVydHkoc1syXXx8c1sxXSxyKSxnJiZnLmNhbGwoZixuLHYpLHUpe2lmKHUub25BZnRlckNoYW5nZSl1Lm9uQWZ0ZXJDaGFuZ2Uobix2KTtkZWxldGUgdS5fLmNoZ2luZ31mLl92YWw9cn1vLmxpbmtDdHg9dHR9fWZ1bmN0aW9uIHl1KG4sdCx1KXt2YXIgYyxzLGYsZT10aGlzLHk9ZS5kYXRhLGE9ZS5lbGVtLGw9ZS5jb252ZXJ0LHA9YS5wYXJlbnROb2RlLGI9cCxvPWUudmlldyxrPW8uY3R4LHc9by5saW5rQ3R4LHY9by5obHAod3QpO2lmKG8ubGlua0N0eD1lLHAmJighdnx8ISh0JiZ2LmNhbGwoZSxuLHQpPT09ITEpKSYmISh0JiZuLmRhdGEucHJvcCE9PSIqIiYmbi5kYXRhLnByb3AhPT10LnBhdGgpKXtpZih0JiYoZS5ldmVudEFyZ3M9dCksdHx8ZS5faW5pdFZhbCl7aWYoZGVsZXRlIGUuX2luaXRWYWwscz11LmNhbGwoby50bXBsLHksbyxyKSxjPXB1KHMsZSxmLGUuYXR0cnx8b3QoYSwhMCxsIT09aSkpLGY9ZS50YWcpe2lmKHQmJmYub25VcGRhdGUmJmYub25VcGRhdGUobix0LHM9c1swXT9zOltzXSk9PT0hMXx8Yz09PSJub25lIil7Zi50YWdDdHhzPXM7Zi50YWdDdHg9c1swXTtjPT09aCYmZi5vbkJlZm9yZUxpbmsmJmYub25CZWZvcmVMaW5rKCk7Y3QoZixmLnRhZ0N0eCk7b2koZSx5LGEpO28ubGlua0N0eD13O3JldHVybn1pZihmLl8uY2hnaW5nKXJldHVybjtzPWYudGFnTmFtZS5zbGljZSgtMSk9PT0iOiI/ci5fY252dChmLnRhZ05hbWUuc2xpY2UoMCwtMSksbyxzKTpyLl90YWcoZixvLG8udG1wbCxzLCEwKX1lbHNlIHUuX2N0eHMmJihsPWw9PT0iIj8idHJ1ZSI6bCxzPWw/ci5fY252dChsLG8scyk6ci5fdGFnKHUuX2N0eHMsbyxvLnRtcGwscywhMCksZj1vLl8udGFnLGM9ZS5hdHRyfHxjKTtocihzLGUsYyxmKSYmdCYmKHY9by5obHAoYnQpKSYmdi5jYWxsKGUsbix0KX1mJiYoZi5jb250ZW50cz1jaSxmLm5vZGVzPWxpLGYuY2hpbGRUYWdzPWFpLGYuY3VycmVudEN0eHM9d3IsZi51cGRhdGU9c3IsZi5yZWZyZXNoPWtyLGN0KGYsZi50YWdDdHgpKTtvaShlLHksYSk7by5saW5rQ3R4PXd9fWZ1bmN0aW9uIHB1KG4scix1LGYpe3ZhciBlLGgsYyxvLHM9dSYmdS5wYXJlbnRFbGVtfHxyLmVsZW07aWYobiE9PWkpe2lmKG89dChzKSxmPXUmJnUuYXR0cnx8ZixydChuKSYmaXQoci5leHByKyI6IG1pc3NpbmcgcGFyZW5zIiksZj09PSJ2aXNpYmxlIiYmKGY9ImNzcy1kaXNwbGF5IiksYz0vXmNzcy0vLnRlc3QoZikmJmYuc2xpY2UoNCkpZT10LnN0eWxlKHMsYyksK249PT1uJiYoZT1wYXJzZUludChlKSksZT10LnN0eWxlKHMsYyk7ZWxzZSBpZihmIT09ImxpbmsiKXtpZihmPT09InZhbHVlIilzLnR5cGU9PT1rdCYmKGU9by5wcm9wKGY9cCkpO2Vsc2UgaWYoZj09PWZ0KWlmKHMudmFsdWU9PT0iIituKWU9by5wcm9wKHApO2Vsc2UgcmV0dXJuIGY7ZT09PWkmJihoPWd0W2ZdLGU9aD9vW2hdKCk6by5hdHRyKGYpKX1yLl92YWw9ZX1yZXR1cm4gZn1mdW5jdGlvbiBocihuLHIsdSxmKXt2YXIgdHQsbyxjLGssaXQsdyxhLGIsdix5LGQ9biE9PWkscnQ9ci5kYXRhLGU9ZiYmZi5wYXJlbnRFbGVtfHxyLmVsZW0sZz10KGUpLHM9ci52aWV3LG50PXIuX3ZhbCx1dD1zLmN0eCxldD1zLmxpbmtDdHgsbD1mfHx1PT09aDtpZihmJiYoZi5wYXJlbnRFbGVtPWYucGFyZW50RWxlbXx8ci5leHByfHxmLl9lbENudD9lOmUucGFyZW50Tm9kZSxvPWYuX3BydixjPWYuX254dCksIWQpe3U9PT1oJiZmJiZmLm9uQmVmb3JlTGluayYmZi5vbkJlZm9yZUxpbmsoKTtyZXR1cm59aWYoL15jc3MtLy50ZXN0KHUpKXIuYXR0cj09PSJ2aXNpYmxlIiYmKG49bj93dShlKToibm9uZSIpLChsPWx8fG50IT09bikmJnQuc3R5bGUoZSx1LnNsaWNlKDQpLG4pO2Vsc2UgaWYodSE9PSJsaW5rIil7aWYodT09PXApdz0xLG49biYmbiE9PSJmYWxzZSI7ZWxzZSBpZih1PT09ZnQpaWYoZS52YWx1ZT09PSIiK24pbj0hMCx3PTEsdT1wO2Vsc2V7b2kocixydCxlKTtyZXR1cm59ZWxzZSh1PT09InNlbGVjdGVkInx8dT09PSJkaXNhYmxlZCJ8fHU9PT0ibXVsdGlwbGUifHx1PT09InJlYWRvbmx5IikmJihuPW4mJm4hPT0iZmFsc2UiP3U6bnVsbCk7KHR0PWd0W3VdKT91PT09aD8ocy5saW5rQ3R4PXIscy5jdHg9ci5jdHgsZiYmZi5fLmlubGluZT8oaXQ9Zi5ub2RlcyghMCksZi5fZWxDbnQmJihvJiZvIT09Yz9waShvLGMsZSxmLl90Z0lkLCJeIiwhMCk6KGE9ZS5fZGZyKSYmKGI9Zi5fdGdJZCsiXiIsdj1hLmluZGV4T2YoIiMiK2IpKzEseT1hLmluZGV4T2YoIi8iK2IpLHYmJnk+MCYmKHYrPWIubGVuZ3RoLHk+diYmKGUuX2Rmcj1hLnNsaWNlKDAsdikrYS5zbGljZSh5KSxncihhLnNsaWNlKHYseSkpKSkpLG89bz9vLnByZXZpb3VzU2libGluZzpjP2MucHJldmlvdXNTaWJsaW5nOmUubGFzdENoaWxkKSx0KGl0KS5yZW1vdmUoKSxmJiZmLm9uQmVmb3JlTGluayYmZi5vbkJlZm9yZUxpbmsoKSxrPXMubGluayhzLmRhdGEsZSxvLGMsbixmJiZ7dGFnOmYuX3RnSWQsbGF6eUxpbms6Zi50YWdDdHgucHJvcHMubGF6eUxpbmt9KSk6KGQmJmcuZW1wdHkoKSxmJiZmLm9uQmVmb3JlTGluayYmZi5vbkJlZm9yZUxpbmsoKSxkJiYoaz1zLmxpbmsocnQsZSxvLGMsbixmJiZ7dGFnOmYuX3RnSWR9KSkpLHMubGlua0N0eD1ldCxzLmN0eD11dCk6KGw9bHx8bnQhPT1uKSYmKHU9PT0idGV4dCImJmUuY2hpbGRyZW4mJiFlLmNoaWxkcmVuWzBdP2UudGV4dENvbnRlbnQhPT1pP2UudGV4dENvbnRlbnQ9bjplLmlubmVyVGV4dD1uPT09bnVsbD8iIjpuOmdbdHRdKG4pKToobD1sfHxudCE9PW4pJiZnW3c/InByb3AiOiJhdHRyIl0odSxuPT09aSYmIXc/bnVsbDpuKTtyLl92YWw9bn1yZXR1cm4ga3x8bH1mdW5jdGlvbiBjcihuLHQpe3ZhciBpPXRoaXMscj1pLmhscCh3dCksdT1pLmhscChidCk7aWYoIXJ8fHIuY2FsbCh0aGlzLG4sdCkhPT0hMSl7aWYodCl7dmFyIG89dC5jaGFuZ2UsZj10LmluZGV4LGU9dC5pdGVtcztzd2l0Y2gobyl7Y2FzZSJpbnNlcnQiOmkuYWRkVmlld3MoZixlKTticmVhaztjYXNlInJlbW92ZSI6aS5yZW1vdmVWaWV3cyhmLGUubGVuZ3RoKTticmVhaztjYXNlIm1vdmUiOmkucmVmcmVzaCgpO2JyZWFrO2Nhc2UicmVmcmVzaCI6aS5yZWZyZXNoKCl9fXUmJnUuY2FsbCh0aGlzLG4sdCl9fWZ1bmN0aW9uIHd1KHQpe3ZhciBpLHUsZj1uLmdldENvbXB1dGVkU3R5bGUscj0odC5jdXJyZW50U3R5bGV8fGYuY2FsbChuLHQsIiIpKS5kaXNwbGF5O3JldHVybiByIT09Im5vbmUifHwocj1mclt1PXQubm9kZU5hbWVdKXx8KGk9ZS5jcmVhdGVFbGVtZW50KHUpLGUuYm9keS5hcHBlbmRDaGlsZChpKSxyPShmP2YuY2FsbChuLGksIiIpOmkuY3VycmVudFN0eWxlKS5kaXNwbGF5LGZyW3VdPXIsZS5ib2R5LnJlbW92ZUNoaWxkKGkpKSxyfWZ1bmN0aW9uIGZpKG4pe3ZhciBmLGUsdT1uLmRhdGEscj1uLl8uYm5kO2lmKCFuLl8udXNlS2V5JiZyKWlmKChlPW4uXy5ibmRBcnIpJiYodChbZVsxXV0pLm9mZihwdCxlWzBdKSxuLl8uYm5kQXJyPWkpLHIhPT0hIXImJnIuXy5pbmxpbmUpdT9yLl8uYXJyVndzW24uXy5pZF09bjpkZWxldGUgci5fLmFyclZ3c1tuLl8uaWRdO2Vsc2UgaWYodSl7Zj1mdW5jdGlvbih0KXt0LmRhdGEmJnQuZGF0YS5vZmZ8fGNyLmFwcGx5KG4sYXJndW1lbnRzKX07dChbdV0pLm9uKHB0LGYpO24uXy5ibmRBcnI9W2YsdV19fWZ1bmN0aW9uIG90KG4sdCxpKXt2YXIgdT1uLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscj1mLm1lcmdlW3VdfHxuLmNvbnRlbnRFZGl0YWJsZT09PSJ0cnVlIiYme3RvOmgsZnJvbTpofTtyZXR1cm4gcj90P3U9PT0iaW5wdXQiJiZuLnR5cGU9PT1mdD9mdDpyLnRvOnIuZnJvbTp0P2k/InRleHQiOmg6IiJ9ZnVuY3Rpb24gbHIobixyLHUsZixlLG8scyl7dmFyIHAsYyx2LHcsYixsPW4ucGFyZW50RWxlbSxoPW4uX3BydixhPW4uX254dCx5PW4uX2VsQ250O2lmKGgmJmgucGFyZW50Tm9kZSE9PWwmJml0KCJNaXNzaW5nIHBhcmVudE5vZGUiKSxzKXt3PW4ubm9kZXMoKTt5JiZoJiZoIT09YSYmcGkoaCxhLGwsbi5fLmlkLCJfIiwhMCk7bi5yZW1vdmVWaWV3cyhpLGksITApO2M9YTt5JiYoaD1oP2gucHJldmlvdXNTaWJsaW5nOmE/YS5wcmV2aW91c1NpYmxpbmc6bC5sYXN0Q2hpbGQpO3QodykucmVtb3ZlKCk7Zm9yKGIgaW4gbi5fLmJuZHMpbHQoYil9ZWxzZXtpZihyKXtpZih2PWZbci0xXSwhdilyZXR1cm4hMTtoPXYuX254dH15PyhjPWgsaD1jP2MucHJldmlvdXNTaWJsaW5nOmwubGFzdENoaWxkKTpjPWgubmV4dFNpYmxpbmd9cD11LnJlbmRlcihlLG8sbi5fLnVzZUtleSYmcyxuLHN8fHIsITApO24ubGluayhlLGwsaCxjLHAsdil9ZnVuY3Rpb24gZWkobix0LHIpe3ZhciB1LGYsZTtyZXR1cm4gcj8oZT0iXmAiLGY9dC5fLnRhZ3x8e186e2lubGluZTohMCxibmQ6cn0sdGFnQ3R4Ont2aWV3OnR9LGZsb3c6ITB9LHU9Zi5fdGdJZCx1fHwoY1t1PWVyKytdPWYsZi5fdGdJZD0iIit1KSk6KGU9Il9gIix5W3U9dC5fLmlkXT10KSwiIyIrdStlKyhuPT09aT8iIjpuKSsiLyIrdStlfWZ1bmN0aW9uIG9pKG4sdCxyKXt2YXIgZSxsLGYsdT1uLnRhZyxhPW4uY29udmVydEJhY2ssbz1bXSxoPW4uX2JuZElkfHwiIitlcisrLHY9bi5faGRscjtpZihkZWxldGUgbi5fYm5kSWQsdSYmKG89dS5kZXBlbmRzfHxvLG89cnQobyk/dS5kZXBlbmRzKHUpOm8sZj11LmxpbmtlZEVsZW0pLCghbi5fZGVwZW5kc3x8IiIrbi5fZGVwZW5kcyE9IiIrbykmJihuLl9kZXBlbmRzJiZkLl9hcHBseSghMSxbdF0sbi5fZGVwZW5kcyx2LCEwKSxlPWQuX2FwcGx5KCExLFt0XSxuLmZuLnBhdGhzLG8sdixuLl9jdHhDYiksZS5lbGVtPXIsZS5saW5rQ3R4PW4sZS5fdGdJZD1oLHIuX2pzdkJuZD1yLl9qc3ZCbmR8fCIiLHIuX2pzdkJuZCs9IiYiK2gsbi5fZGVwZW5kcz1vLG4udmlldy5fLmJuZHNbaF09aCxjW2hdPWUsZiYmKGUudG89W1tdLGFdKSwoZnx8YSE9PWkpJiZicihlLHUmJnUuY29udmVydEJhY2t8fGEpLHUpKXtpZih1Lm9uQWZ0ZXJCaW5kKXUub25BZnRlckJpbmQoZSk7dS5mbG93fHx1Ll8uaW5saW5lfHwoci5zZXRBdHRyaWJ1dGUocywoci5nZXRBdHRyaWJ1dGUocyl8fCIiKSsiIyIraCsiXi8iK2grIl4iKSx1Ll90Z0lkPSIiK2gpfWlmKGYmJmZbMF0pZm9yKHUuXy5yYWRpbyYmKGY9Zi5jaGlsZHJlbigiaW5wdXRbdHlwZT1yYWRpb10iKSksbD1mLmxlbmd0aDtsLS07KWZbbF0uX2pzdkJuZD1mW2xdLl9qc3ZCbmR8fHIuX2pzdkJuZCsiKyIsZltsXS5fanN2TG5rZEVsPXV9ZnVuY3Rpb24gYXIobix0LGkscix1LGYsZSl7cmV0dXJuIHNpKHRoaXMsbix0LGkscix1LGYsZSl9ZnVuY3Rpb24gc2kobixyLHUsbyxzLGgsYyxhKXtpZihuJiZyKXtpZihyPXIuanF1ZXJ5P3I6dChyKSwhdyl7dz1lLmJvZHk7dCh3KS5vbihucixldCkub24oImJsdXIiLCJbY29udGVudGVkaXRhYmxlXSIsZnVuY3Rpb24obil7dmFyIHQ9Zi5ub1ZhbGlkYXRlO2Yubm9WYWxpZGF0ZT0hMDtldChuKTtmLm5vVmFsaWRhdGU9dH0pfWZvcih2YXIgayxudCx0dCxnLHAsZCx2LGl0LHJ0PWVpLGZ0PW8mJm8udGFyZ2V0PT09InJlcGxhY2UiLHV0PXIubGVuZ3RoO3V0LS07KWlmKHY9clt1dF0sIiIrbj09PW4pcD1iKHYpLGl0PXAuY3R4LHAuY3R4PW8sc3Qobix2LHAsdSkscC5jdHg9aXQ7ZWxzZXtpZihoPWh8fGIodiksbi5tYXJrdXAhPT1pKWgubGluaz09PSExJiYobz1vfHx7fSxvLmxpbms9cnQ9ITEpLGZ0JiYoZD12LnBhcmVudE5vZGUpLHR0PW4ucmVuZGVyKHUsbyxzLGgsaSxydCksZD8oYz12LnByZXZpb3VzU2libGluZyxhPXYubmV4dFNpYmxpbmcsdC5jbGVhbkRhdGEoW3ZdLCEwKSxkLnJlbW92ZUNoaWxkKHYpLHY9ZCk6KGM9YT1pLHQodikuZW1wdHkoKSk7ZWxzZSBpZihuIT09ITApYnJlYWs7aWYodi5fZGZyJiYhYSl7Zm9yKGc9bCh2Ll9kZnIsMSxvciksaz0wLG50PWcubGVuZ3RoO2s8bnQ7aysrKXA9Z1trXSwocD15W3AuaWRdKSYmcC5kYXRhIT09aSYmcC5wYXJlbnQucmVtb3ZlVmlld3MocC5fLmtleSxpLCEwKTt2Ll9kZnI9IiJ9aC5saW5rKHUsdixjLGEsdHQsaSxvKX19cmV0dXJuIHJ9ZnVuY3Rpb24gYnUobixyLHUsaCx2LHAsdyxkKXtmdW5jdGlvbiB5dShuLHQscix1LGUsbyxoLGMsbCxhLHkscCx3KXt2YXIgYixrPSIiO3JldHVybiB3PyhoaT0wLG4pOihnPWN8fGx8fCIiLHU9dXx8YSxyPXJ8fHAscGkmJiFyJiYodXx8Z3x8bykmJihwaT1pLHV0PWd0LnNoaWZ0KCkpLHU9dXx8cix1JiYoaGk9MCxwaT1pLGYubm9WYWxpZGF0ZXx8KHJ8fHA/dWlbdXRdfHwoYj0iJzwiK3V0KyIuLi4vIik6dWlbdV0/Yj0iJzxcLyIrdTpndC5sZW5ndGgmJnU9PT11dHx8KGI9Ik1pc21hdGNoOiAnPFwvIit1KSxiJiZ0aShiKyI+JyBpbjpcbiIrdikpLGVyPWZ0LHV0PWd0LnNoaWZ0KCksZnQ9cmlbdXRdLGE9YT8iPFwvIithKyI+IjoiIixlciYmKGF0Kz1wdCxwdD0iIixmdD9hdCs9Ii0iOihrPWEraXIrIkAiK2F0K3RyKyh5fHwiIiksYXQ9bHUuc2hpZnQoKSkpKSxmdD8obz9wdCs9bzp0PWF8fHB8fCIiLGcmJih0Kz1nLHB0JiYodCs9IiAiK3MrJz0iJytwdCsnIicscHQ9IiIpKSk6dD1vP3QraytlK2lyK28rdHIraCtnOmt8fG4saGkmJm8mJnRpKCIgTm8ge157IHRhZ3Mgd2l0aGluIGVsZW0gbWFya3VwICgiK2hpKycgKS4gVXNlIGRhdGEtbGluaz0iLi4uIicpLGcmJihoaT1nLGd0LnVuc2hpZnQodXQpLHV0PWcuc2xpY2UoMSksZ3RbMF0mJmd0WzBdPT09b3VbdXRdJiZpdCgiUGFyZW50IG9mIDx0cj4gbXVzdCBiZSA8dGJvZHk+IikscGk9dWlbdXRdLChmdD1yaVt1dF0pJiYhZXImJihsdS51bnNoaWZ0KGF0KSxhdD0iIiksZXI9ZnQsYXQmJmZ0JiYoYXQrPSIrIikpLHQpfWZ1bmN0aW9uIGJpKG4sdCl7dmFyIG8sbCx1LGUsZixhLHMsaD1bXTtpZihuKXtmb3Iobi5fdGtucy5jaGFyQXQoMCk9PT0iQCImJih0PW50LnByZXZpb3VzU2libGluZyxudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG50KSxudD1udWxsKSxidD1uLmxlbmd0aDtidC0tOyl7aWYob3Q9bltidF0sdT1vdC5jaCxvPW90LnBhdGgpZm9yKGV0PW8ubGVuZ3RoLTE7bD1vLmNoYXJBdChldC0tKTspbD09PSIrIj9vLmNoYXJBdChldCk9PT0iLSI/KGV0LS0sdD10LnByZXZpb3VzU2libGluZyk6dD10LnBhcmVudE5vZGU6dD10Lmxhc3RDaGlsZDt1PT09Il4iPyhnPWNbZj1vdC5pZF0pJiYocz10JiYoIW50fHxudC5wYXJlbnROb2RlIT09dCksKCFudHx8cykmJihnLnBhcmVudEVsZW09dCksb3QuZWxDbnQmJnMmJih0Ll9kZnI9KG90Lm9wZW4/IiMiOiIvIikrZit1Kyh0Ll9kZnJ8fCIiKSksaC5wdXNoKFtzP251bGw6bnQsb3RdKSk6KHJ0PXlbZj1vdC5pZF0pJiYocnQubGlua3x8KHJ0LnBhcmVudEVsZW09dHx8bnQmJm50LnBhcmVudE5vZGV8fHIsayhydCx2dCkscnQuXy5vblJlbmRlcj1laSxydC5fLm9uQXJyYXlDaGFuZ2U9Y3IsZmkocnQpKSxlPXJ0LnBhcmVudEVsZW0sb3Qub3Blbj8ocnQuX2VsQ250PW90LmVsQ250LHQ/dC5fZGZyPSIjIitmK3UrKHQuX2Rmcnx8IiIpOihydC5fcHJ2fHwoZS5fZGZyPWh0KGUuX2RmciwiIyIrZit1KSkscnQuX3Bydj1udCkpOih0JiYoIW50fHxudC5wYXJlbnROb2RlIT09dCk/KHQuX2Rmcj0iLyIrZit1Kyh0Ll9kZnJ8fCIiKSxydC5fbnh0PWkpOm50JiYocnQuX254dHx8KGUuX2Rmcj1odChlLl9kZnIsIi8iK2YrdSkpLHJ0Ll9ueHQ9bnQpLHZpPXJ0LmxpbmtDdHgsKGE9cnQuY3R4JiZydC5jdHgub25BZnRlckNyZWF0ZXx8d3UpJiZhLmNhbGwodmkscnQpKSl9Zm9yKGJ0PWgubGVuZ3RoO2J0LS07KWhyLnB1c2goaFtidF0pfXJldHVybiFufHxuLmVsQ250fWZ1bmN0aW9uIHB1KG4pe3ZhciB0LGk7aWYobilmb3IoYnQ9bi5sZW5ndGgsZXQ9MDtldDxidDtldCsrKWlmKG90PW5bZXRdLHl0LmlkKXl0LmlkPXl0LmlkIT09b3QuaWQmJnl0LmlkO2Vsc2UgaWYoaT1nPWNbb3QuaWRdLmxpbmtDdHgudGFnLCFnLmZsb3cpe2lmKCFicil7Zm9yKHQ9MTtpPWkucGFyZW50Oyl0Kys7cnI9cnJ8fHR9KGJyfHx0PT09cnIpJiYoIWRyfHxnLnRhZ05hbWU9PT1kcikmJnZyLnB1c2goZyl9fWZ1bmN0aW9uIHJ1KCl7Zm9yKGxyPWlpP3IucXVlcnlTZWxlY3RvckFsbCh0dCk6dCh0dCxyKS5nZXQoKSxuaT1sci5sZW5ndGgsdSYmdS5pbm5lckhUTUwmJihraT1paT91LnF1ZXJ5U2VsZWN0b3JBbGwodHQpOnQodHQsdSkuZ2V0KCksdT1raS5sZW5ndGg/a2lba2kubGVuZ3RoLTFdOnUpLHJyPTAsd3Q9MDt3dDxuaTt3dCsrKWlmKG50PWxyW3d0XSx1JiYhc3Upc3U9bnQ9PT11O2Vsc2UgaWYoaCYmbnQ9PT1oKWJyZWFrO2Vsc2UgbnQucGFyZW50Tm9kZSYmdnUobChudCxpLHZyJiZhdSkpJiYheXQmJm50LmdldEF0dHJpYnV0ZShhKSYmaHIucHVzaChbbnRdKTtpZih5cih1LGZ0KSx5cihoLGZ0KSx5dCl7a3QmJmt0LnJlc29sdmUoKTtyZXR1cm59Zm9yKGZ0JiZhdCtwdCYmKG50PWgsYXQmJihoP2JpKGwoYXQrIisiLDEpLGgpOmJpKGwoYXQsMSkscikpLGJpKGwocHQsMSksciksaCYmKGx0PWguZ2V0QXR0cmlidXRlKHMpLChuaT1sdC5pbmRleE9mKG9yKSsxKSYmKGx0PWx0LnNsaWNlKG5pK29yLmxlbmd0aC0xKSksaC5zZXRBdHRyaWJ1dGUocyxwdCtsdCkpKSxuaT1oci5sZW5ndGgsd3Q9MDt3dDxuaTt3dCsrKW50PWhyW3d0XSxkdD1udFsxXSxudD1udFswXSxkdD8oZz1jW2R0LmlkXSkmJigodmk9Zy5saW5rQ3R4KSYmKGc9dmkudGFnLGcubGlua0N0eD12aSksZHQub3Blbj8obnQmJihnLnBhcmVudEVsZW09bnQucGFyZW50Tm9kZSxnLl9wcnY9bnQpLGcuX2VsQ250PWR0LmVsQ250LCFnfHxnLm9uQmVmb3JlTGluayYmZy5vbkJlZm9yZUxpbmsoKT09PSExfHxnLl8uYm91bmR8fChnLl8uYm91bmQ9ITAscnQ9Zy50YWdDdHgudmlldyxzdChpLGcuX3BydixydCxuLGR0LmlkKSksZy5fLmxpbmtpbmc9ITApOihnLl9ueHQ9bnQsZy5fLmxpbmtpbmcmJihncj1nLnRhZ0N0eCxydD1nci52aWV3LGcuY29udGVudHM9Y2ksZy5ub2Rlcz1saSxnLmNoaWxkVGFncz1haSxnLmN1cnJlbnRDdHhzPXdyLGcudXBkYXRlPXNyLGcucmVmcmVzaD1rcixkZWxldGUgZy5fLmxpbmtpbmcsZy5fLmJvdW5kfHwoZy5fLmJvdW5kPSEwLHN0KGksZy5fcHJ2LHJ0LG4sZHQuaWQpKSxjdChnLGdyKSkpKToocnQ9YihudCksc3QobnQuZ2V0QXR0cmlidXRlKGEpLG50LHJ0LG4saSx3KSk7a3QmJmt0LnJlc29sdmUoKX12YXIgaGksdmksZyx3dCxuaSxldCxidCxscixudCxydCxvdCxkdCxraSxnaSxhcixucixvaSx2cixicixkcixncixycix5dCx1dSxudSxldSx5aSx1dCxwaSx3aSxmcixsdCxmdCxlcixzaSxwdCxvcixzdSxrdCx0dT10aGlzLGN1PXR1Ll8uaWQrIl8iLGF0PSIiLGhyPVtdLGd0PVtdLGx1PVtdLHd1PXR1LmhscChpdSksdnU9Ymk7aWYocCYmKGt0PXAubGF6eUxpbmsmJnQuRGVmZXJyZWQoKSxwLnRtcGw/YXI9Ii8iK3AuXy5pZCsiXyI6KHl0PXAuZ2V0LHAudGFnJiYoY3U9cC50YWcrIl4iLHA9ITApKSxwPXA9PT0hMCkseXQmJih2dT1wdSx2cj15dC50YWdzLGJyPXl0LmRlZXAsZHI9eXQubmFtZSkscj1yPyIiK3I9PT1yP3QocilbMF06ci5qcXVlcnk/clswXTpyOnR1LnBhcmVudEVsZW18fGUuYm9keSx1dD1yLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxmdD0hIXJpW3V0XSx1PXUmJnByKHUsZnQpLGg9aCYmcHIoaCxmdCl8fG51bGwsdiE9PWkpe2lmKGZyPWUuY3JlYXRlRWxlbWVudCgiZGl2Iiksd2k9ZnIsb3I9cHQ9IiIsc2k9ci5uYW1lc3BhY2VVUkk9PT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPyJzdmdfbnMiOih5aT1mdS5leGVjKHYpKSYmeWlbMV18fCIiLGRpJiZ5aSYmeWlbMl0mJml0KCJVbnN1cHBvcnRlZDogIit5aVsyXSksZnQpe2ZvcihvaT1oO29pJiYhKG5yPWwob2kpKTspb2k9b2kubmV4dFNpYmxpbmc7KGx0PW5yP25yLl90a25zOnIuX2RmcikmJihnaT1hcnx8IiIsKHB8fCFhcikmJihnaSs9IiMiK2N1KSxldD1sdC5pbmRleE9mKGdpKSxldCsxJiYoZXQrPWdpLmxlbmd0aCxvcj1wdD1sdC5zbGljZSgwLGV0KSxsdD1sdC5zbGljZShldCksbnI/b2kuc2V0QXR0cmlidXRlKHMsbHQpOnIuX2Rmcj1sdCkpfWlmKHBpPWksdj0oIiIrdikucmVwbGFjZShodSx5dSksIWYubm9WYWxpZGF0ZSYmZ3QubGVuZ3RoJiZ0aSgiTWlzbWF0Y2hlZCAnPCIrdXQrIi4uLj4nIGluOlxuIit2KSxkKXJldHVybjtmb3IodXIuYXBwZW5kQ2hpbGQoZnIpLHNpPW9bc2ldfHxvLmRpdix1dT1zaVswXSx3aS5pbm5lckhUTUw9c2lbMV0rditzaVsyXTt1dS0tOyl3aT13aS5sYXN0Q2hpbGQ7Zm9yKHVyLnJlbW92ZUNoaWxkKGZyKSxudT1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtldT13aS5maXJzdENoaWxkOyludS5hcHBlbmRDaGlsZChldSk7ci5pbnNlcnRCZWZvcmUobnUsaCl9cmV0dXJuIGt0P3NldFRpbWVvdXQocnUsMCk6cnUoKSxrdCYma3QucHJvbWlzZSgpfWZ1bmN0aW9uIHN0KG4sdCxyLGYsZSxvKXt2YXIgdyx2LGIsbCxrLGQseSxwLGEscyx0dDtpZihmPXIuZGF0YT09PWk/Znx8e306ci5kYXRhLGUpcz1jW2VdLHM9cy5saW5rQ3R4P3MubGlua0N0eC50YWc6cyxhPXMubGlua0N0eHx8e2RhdGE6ZixlbGVtOnMuX2VsQ250P3MucGFyZW50RWxlbTp0LHZpZXc6cixjdHg6ci5jdHgsYXR0cjpoLGZuOnMuXy5ibmQsdGFnOnMsX2JuZElkOmV9LHZyKGEsYS5mbik7ZWxzZSBpZihuJiZ0KWZvcih3PXIudG1wbCxuPWt1KG4sb3QodCkpLGcubGFzdEluZGV4PTA7dj1nLmV4ZWMobik7KXR0PWcubGFzdEluZGV4LGI9ZT9oOnZbMV0seT12WzNdLGs9dlsxMF0sbD1pLGE9e2RhdGE6ZixlbGVtOnMmJnMuX2VsQ250P3MucGFyZW50RWxlbTp0LHZpZXc6cixjdHg6b3x8ci5jdHgsYXR0cjpiLF9pbml0VmFsOiF2WzJdfSx2WzZdJiYoIWImJihsPS86KFtcdyRdKikkLy5leGVjKGspKSYmKGw9bFsxXSxsIT09aSYmKGQ9LWwubGVuZ3RoLTEseT15LnNsaWNlKDAsZC0xKStudCxrPWsuc2xpY2UoMCxkKSkpLGw9PT1udWxsJiYobD1pKSxhLmNvbnZlcnQ9dls1XXx8IiIpLGEuZXhwcj1iK3kscD13LmxpbmtzW3ldLHB8fCh3LmxpbmtzW3ldPXA9dS50bXBsRm4od2kreStiaSx3LCEwLGwpLHUucGFyc2UoayxwLnBhdGhzPVtdLHcpKSxhLmZuPXAsYnx8bD09PWl8fChhLmNvbnZlcnRCYWNrPWwpLHZyKGEscCksZy5sYXN0SW5kZXg9dHR9ZnVuY3Rpb24gdnIobix0KXtmdW5jdGlvbiBpKGkscil7eXUuY2FsbChuLGkscix0KX1pLm5vQXJyYXk9ITA7bi5fY3R4Q2I9ZHUobi52aWV3KTtuLl9oZGxyPWk7aSghMCl9ZnVuY3Rpb24gaHQobix0KXt2YXIgaTtyZXR1cm4gbj8oaT1uLmluZGV4T2YodCksaSsxP24uc2xpY2UoMCxpKStuLnNsaWNlKGkrdC5sZW5ndGgpOm4pOiIifWZ1bmN0aW9uIGhpKG4pe3JldHVybiBuJiYoIiIrbj09PW4/bjpuLnRhZ05hbWU9PT0iU0NSSVBUIj9uLnR5cGUuc2xpY2UoMyk6bi5ub2RlVHlwZT09PTEmJm4uZ2V0QXR0cmlidXRlKHMpfHwiIil9ZnVuY3Rpb24gbChuLHQsaSl7ZnVuY3Rpb24gZShuLHQsaSxyLGUsbyl7dS5wdXNoKHtlbENudDpmLGlkOnIsY2g6ZSxvcGVuOnQsY2xvc2U6aSxwYXRoOm8sdG9rZW46bn0pfXZhciBmLHIsdT1bXTtpZihyPXQ/bjpoaShuKSlyZXR1cm4gdS5lbENudD0hbi50eXBlLGY9ci5jaGFyQXQoMCk9PT0iQCJ8fCFuLnR5cGUsdS5fdGtucz1yLHIucmVwbGFjZShpfHx2dSxlKSx1fWZ1bmN0aW9uIHlyKG4sdCl7biYmKG4udHlwZT09PSJqc3YiP24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKTp0JiZuLmdldEF0dHJpYnV0ZShhKT09PSIiJiZuLnJlbW92ZUF0dHJpYnV0ZShhKSl9ZnVuY3Rpb24gcHIobix0KXtmb3IodmFyIGk9bjt0JiZpJiZpLm5vZGVUeXBlIT09MTspaT1pLnByZXZpb3VzU2libGluZztyZXR1cm4gaSYmKGkubm9kZVR5cGUhPT0xPyhpPWUuY3JlYXRlRWxlbWVudCgiU0NSSVBUIiksaS50eXBlPSJqc3YiLG4ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxuKSk6aGkoaSl8fGkuZ2V0QXR0cmlidXRlKGEpfHxpLnNldEF0dHJpYnV0ZShhLCIiKSksaX1mdW5jdGlvbiBrdShuLGkpe3JldHVybiBuPXQudHJpbShuKS5yZXBsYWNlKGV1LCJcXCQmIiksbi5zbGljZSgtMSkhPT1udD9uPXl0KyI6IituKyhpPyI6IjoiIikrbnQ6bn1mdW5jdGlvbiBjaShuLHIpe24hPT0hIW4mJihyPW4sbj1pKTt2YXIgZix1PXQodGhpcy5ub2RlcygpKTtyZXR1cm4gdVswXSYmKGY9cj91LmZpbHRlcihyKTp1LHU9biYmcj9mLmFkZCh1LmZpbmQocikpOmYpLHV9ZnVuY3Rpb24gbGkobix0LGkpe3ZhciByLHU9dGhpcyxmPXUuX2VsQ250LG89IXQmJmYsZT1bXTtmb3IodD10fHx1Ll9wcnYsaT1pfHx1Ll9ueHQscj1vP3Q9PT11Ll9ueHQ/dS5wYXJlbnRFbGVtLmxhc3RTaWJsaW5nOnQ6dS5fLmlubGluZT09PSExP3R8fHUubGlua0N0eC5lbGVtLmZpcnN0Q2hpbGQ6dCYmdC5uZXh0U2libGluZztyJiYoIWl8fHIhPT1pKTspKG58fGZ8fHIudGFnTmFtZSE9PSJTQ1JJUFQiKSYmZS5wdXNoKHIpLHI9ci5uZXh0U2libGluZztyZXR1cm4gZX1mdW5jdGlvbiBhaShuLHQpe24hPT0hIW4mJih0PW4sbj1pKTt2YXIgcj10aGlzLG89ci5saW5rP3I6ci50YWdDdHgudmlldyx1PXIuX3BydixmPXIuX2VsQ250LGU9W107cmV0dXJuIHUmJm8ubGluayhpLHIucGFyZW50RWxlbSxmP3UucHJldmlvdXNTaWJsaW5nOnUsci5fbnh0LGkse2dldDp7dGFnczplLGRlZXA6bixuYW1lOnQsaWQ6ZiYmci5fdGdJZH19KSxlfWZ1bmN0aW9uIHdyKCl7dmFyIG49dGhpcy50YWdDdHgudmlldztyZXR1cm4gdGhpcy5fLmJuZC5jYWxsKG4udG1wbCxuLmRhdGEsbixyKX1mdW5jdGlvbiBjdChuLHQpe3ZhciBmLHIscyxlLG8sYSx2LGwseT10LnZpZXcsaD1uLmxpbmtDdHg9bi5saW5rQ3R4fHx7dGFnOm4sZGF0YTp5LmRhdGEsdmlldzp5LGN0eDp5LmN0eH07aWYobi5vbkFmdGVyTGluayluLm9uQWZ0ZXJMaW5rKHQsaCk7aWYoZj1uLnRhcmdldFRhZz9uLnRhcmdldFRhZy5saW5rZWRFbGVtOm4ubGlua2VkRWxlbSxmJiYocj1mWzBdKSYmKChzPW4uXy5yYWRpbykmJihmPWYuY2hpbGRyZW4oImlucHV0W3R5cGU9cmFkaW9dIikpLHN8fCFuLl8uY2hnaW5nKSl7aWYoZT11LmN2dChuLG4uY29udmVydClbMF0sc3x8ciE9PWguZWxlbSl7Zm9yKHY9Zi5sZW5ndGg7di0tOyl7aWYocj1mW3ZdLGw9ci5fanN2TG5rZEVsLG4uXy5pbmxpbmUmJighbHx8bCE9PW4mJmwudGFyZ2V0VGFnIT09bikpZm9yKHIuX2pzdkxua2RFbD1uLG89aC5lbGVtP2guZWxlbS5fanN2Qm5kOm4uX3Bydi5fanN2Qm5kLHIuX2pzdkJuZD1vKyIrIixvPW8uc2xpY2UoMSkuc3BsaXQoIiYiKSxhPW8ubGVuZ3RoO2EtLTspYnIoY1tvW2FdXSxuLmNvbnZlcnRCYWNrKTtzJiYocltwXT1lPT09ci52YWx1ZSl9aC5fdmFsPWV9c3x8ci52YWx1ZT09PWl8fGU9PT1pfHwoci50eXBlPT09a3Q/cltwXT1lJiZlIT09ImZhbHNlIjpmLnZhbChlKSl9fWZ1bmN0aW9uIGJyKG4sdCl7dmFyIGUsZixzLGksbyxyPW4ubGlua0N0eCxoPXIuZGF0YSx1PXIuZm4ucGF0aHM7aWYobil7Zm9yKChlPXUuX2pzdnRvKSYmKHU9ZSksZj11Lmxlbmd0aDtmJiYiIisoaT11Wy0tZl0pIT09aTspO2kmJighci50YWd8fHIudGFnLnRhZ0N0eC5hcmdzLmxlbmd0aCk/KGk9aS5zcGxpdCgiXiIpLmpvaW4oIi4iKSxuLnRvPWkuY2hhckF0KDApPT09Ii4iP1tbbz11W2YtMV0saS5zbGljZSgxKV0sdF06W3IuX2N0eENiKHM9Zj91WzBdLnNwbGl0KCJeIikuam9pbigiLiIpOmkpfHxbaCxzXSx0XSxlJiZvJiYobi50b1swXVswXT1yLl9jdHhDYihvLGgpKSk6bi50bz1bW10sdF19fWZ1bmN0aW9uIGtyKG4pe3ZhciB1LGYsdD10aGlzLGU9dC5saW5rQ3R4LG89dC50YWdDdHgudmlldztyZXR1cm4gdC5kaXNwb3NlZCYmaXQoIlJlbW92ZWQgdGFnIiksbj09PWkmJihuPXIuX3RhZyh0LG8sby50bXBsLHQuY3VycmVudEN0eHM/dC5jdXJyZW50Q3R4cygpOnQudGFnQ3R4cywhMCkpLG4rIiI9PT1uJiYoZj10Ll8uaW5saW5lP2g6ZS5hdHRyfHxvdCh0LnBhcmVudEVsZW0sITApLHU9aHIobixlLGYsdCkpLGN0KHQsdC50YWdDdHgpLHV8fHR9ZnVuY3Rpb24gdmkobil7Zm9yKHZhciB1LHQsaSxmPVtdLGU9bi5sZW5ndGgscj1lO3ItLTspZi5wdXNoKG5bcl0pO2ZvcihyPWU7ci0tOylpZih0PWZbcl0sdC5wYXJlbnROb2RlKXtpZihpPXQuX2pzdkJuZClmb3IoaT1pLnNsaWNlKDEpLnNwbGl0KCImIiksdC5fanN2Qm5kPSIiLHU9aS5sZW5ndGg7dS0tOylsdChpW3VdLHQuX2pzdkxua2RFbCx0KTtncihoaSh0KSsodC5fZGZyfHwiIikpfX1mdW5jdGlvbiBsdChuLGkscil7dmFyIGgsbCxmLG8scyxhLHYseSxlPWNbbl07aWYoaSlyPT09aS5saW5rZWRFbGVtWzBdJiYoZGVsZXRlIHIuX2pzdkxua2RFbCxkZWxldGUgaS5saW5rZWRFbGVtKTtlbHNlIGlmKGUpe2ZvcihoIGluIGUuYm5kKW89ZS5ibmRbaF0scz0iLm9icyIrZS5jYklkLHQuaXNBcnJheShvKT90KFtvXSkub2ZmKHB0K3MpLm9mZihnaStzKTp0KG8pLm9mZihnaStzKSxkZWxldGUgZS5ibmRbaF07aWYobD1lLmxpbmtDdHgpe2lmKGY9bC50YWcpe2lmKGE9Zi50YWdDdHhzKWZvcih2PWEubGVuZ3RoO3YtLTspKHk9YVt2XS5tYXApJiZ5LnVubWFwKCk7Zi5vbkRpc3Bvc2UmJmYub25EaXNwb3NlKCk7Zi5fZWxDbnR8fChmLl9wcnYmJmYuX3Bydi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYuX3BydiksZi5fbnh0JiZmLl9ueHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmLl9ueHQpKTtmLmRpc3Bvc2VkPSEwfWRlbGV0ZSBsLnZpZXcuXy5ibmRzW25dfWRlbGV0ZSBjW25dO2RlbGV0ZSB1Ll9jYkJuZHNbZS5jYklkXX19ZnVuY3Rpb24geWkobixyKXtyZXR1cm4gbj09PWk/KHcmJih0KHcpLm9mZihucixldCksdz1pKSxuPSEwLHYucmVtb3ZlVmlld3MoKSx2aShlLmJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSkpOnImJihyPXIuanF1ZXJ5P3I6dChyKSxuPT09ITAmJnIuZWFjaChmdW5jdGlvbigpe2Zvcih2YXIgbjsobj1iKHRoaXMsITApKSYmbi5wYXJlbnQ7KW4ucGFyZW50LnJlbW92ZVZpZXdzKG4uXy5rZXksaSwhMCk7dmkodGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKX0pKSxyfWZ1bmN0aW9uIGRyKG4sdCl7cmV0dXJuIHlpKHRoaXMsbix0KX1mdW5jdGlvbiBkdShuKXtyZXR1cm4gbj1ufHx0LnZpZXcoKSxmdW5jdGlvbih0LGkpe3ZhciBmLHUsZT1baV07aWYobiYmdCl7aWYodC5fanN2T2IpcmV0dXJuIHQuX2pzdk9iLmNhbGwobi50bXBsLGksbixyKTtpZih0LmNoYXJBdCgwKT09PSJ+IilyZXR1cm4gdC5zbGljZSgwLDQpPT09In50YWciJiYodT1uLmN0eCx0LmNoYXJBdCg0KT09PSIuIiYmKGY9dC5zbGljZSg1KS5zcGxpdCgiLiIpLHU9dS50YWcpLGYpP3U/W3UsZi5qb2luKCIuIiksaV06W106KHQ9dC5zbGljZSgxKS5zcGxpdCgiLiIpLChpPW4uaGxwKHQuc2hpZnQoKSkpJiYodC5sZW5ndGgmJmUudW5zaGlmdCh0LmpvaW4oIi4iKSksZS51bnNoaWZ0KGkpKSxpP2U6W10pO2lmKHQuY2hhckF0KDApPT09IiMiKXJldHVybiB0PT09IiNkYXRhIj9bXTpbbix0LnJlcGxhY2Uoc3UsIiIpLGldfX19ZnVuY3Rpb24gZ3Uobil7cmV0dXJuIG4udHlwZT09PWt0P25bcF06bi52YWx1ZX1mdW5jdGlvbiBwaShuLHQsaSxyLHUsZil7dmFyIHYsaCxwLG8sYixhLGUsdz0wLGs9bj09PXQ7aWYobil7Zm9yKHA9bChuKXx8W10sdj0wLGg9cC5sZW5ndGg7djxoO3YrKyl7aWYobz1wW3ZdLGE9by5pZCxhPT09ciYmby5jaD09PXUpaWYoZiloPTA7ZWxzZSBicmVhaztrfHwoYj1vLmNoPT09Il8iP3lbYV06Y1thXS5saW5rQ3R4LnRhZyxvLm9wZW4/Yi5fcHJ2PXQ6by5jbG9zZSYmKGIuX254dD10KSk7dys9YS5sZW5ndGgrMn13JiZuLnNldEF0dHJpYnV0ZShzLG4uZ2V0QXR0cmlidXRlKHMpLnNsaWNlKHcpKTtlPXQ/dC5nZXRBdHRyaWJ1dGUocyk6aS5fZGZyOyhoPWUuaW5kZXhPZigiLyIrcit1KSsxKSYmKGU9cC5fdGtucy5zbGljZSgwLHcpK2Uuc2xpY2UoaCsoZj8tMTpyLmxlbmd0aCsxKSkpO2UmJih0P3Quc2V0QXR0cmlidXRlKHMsZSk6aS5fZGZyPWUpfWVsc2UgaS5fZGZyPWh0KGkuX2RmciwiIyIrcit1KSxmfHx0fHwoaS5fZGZyPWh0KGkuX2RmciwiLyIrcit1KSl9ZnVuY3Rpb24gZ3Iobil7dmFyIHIsZix0LHU7aWYodT1sKG4sMSxjdSkpZm9yKHI9MCxmPXUubGVuZ3RoO3I8ZjtyKyspdD11W3JdLHQuY2g9PT0iXyI/KHQ9eVt0LmlkXSkmJnQuZGF0YSE9PWkmJnQucGFyZW50LnJlbW92ZVZpZXdzKHQuXy5rZXksaSwhMCk6bHQodC5pZCl9ZnVuY3Rpb24gbmYobixpLHIsdSl7c3dpdGNoKHUuY2hhbmdlKXtjYXNlInNldCI6Zm9yKHZhciBmPWkubGVuZ3RoO2YtLTspaWYoaVtmXS5rZXk9PT11LnBhdGgpYnJlYWs7Zj09PS0xP3UucGF0aCYmdC5vYnNlcnZhYmxlKGkpLmluc2VydCh7a2V5OnUucGF0aCxwcm9wOnUudmFsdWV9KTp1LnZhbHVlPT09bnVsbD8oZGVsZXRlIG5bdS5wYXRoXSx0Lm9ic2VydmFibGUoaSkucmVtb3ZlKGYpKTp0Lm9ic2VydmFibGUoaVtmXSkuc2V0UHJvcGVydHkoInByb3AiLHUudmFsdWUpfX1mdW5jdGlvbiB0ZihuLGkscix1KXt2YXIgZjtzd2l0Y2godS5jaGFuZ2Upe2Nhc2Uic2V0Ijp1LnBhdGg9PT0icHJvcCI/dC5vYnNlcnZhYmxlKG4pLnNldFByb3BlcnR5KHIudGFyZ2V0LmtleSx1LnZhbHVlKToodC5vYnNlcnZhYmxlKG4pLnNldFByb3BlcnR5KHUub2xkVmFsdWUsbnVsbCksZGVsZXRlIG5bdS5vbGRWYWx1ZV0sdC5vYnNlcnZhYmxlKG4pLnNldFByb3BlcnR5KHUudmFsdWUsci50YXJnZXQucHJvcCkpO2JyZWFrO2Nhc2UicmVtb3ZlIjpmPXUuaXRlbXNbMF07dC5vYnNlcnZhYmxlKG4pLnNldFByb3BlcnR5KGYua2V5LG51bGwpO2RlbGV0ZSBuW2Yua2V5XTticmVhaztjYXNlImluc2VydCI6Zj11Lml0ZW1zWzBdO2Yua2V5JiZ0Lm9ic2VydmFibGUobikuc2V0UHJvcGVydHkoZi5rZXksZi5wcm9wKX19ZnVuY3Rpb24gcmYobix0LGkpe3JldHVybiBpLmluZGV4T2YoIi4iKTwwJiZ0W25dfXZhciBhdD0iSnNWaWV3cyByZXF1aXJlcyAiLHZ0LHcsYixnLHdpLHl0LG50LGJpLGtpLGRpLGEsdHQsbyxlPW4uZG9jdW1lbnQscj10LnZpZXdzLHU9ci5zdWIsZj1yLnNldHRpbmdzLGs9dS5leHRlbmQsdj11LlZpZXcoaSwidG9wIikscnQ9dS5pc0ZuLG51PXIudGVtcGxhdGVzLHR1PXIuY29udmVydGVycyxkPXQub2JzZXJ2YWJsZSx1dD1kLm9ic2VydmUscz0iZGF0YS1qc3YiLGdpPXUucHJvcENobmc9dS5wcm9wQ2huZ3x8InByb3BlcnR5Q2hhbmdlIixwdD11LmFyckNobmc9dS5hcnJDaG5nfHwiYXJyYXlDaGFuZ2UiLHVmPXUuX2NiQm5kcz11Ll9jYkJuZHN8fHt9LG5yPSJjaGFuZ2UuanN2Iix3dD0ib25CZWZvcmVDaGFuZ2UiLGJ0PSJvbkFmdGVyQ2hhbmdlIixpdT0ib25BZnRlckNyZWF0ZSIscD0iY2hlY2tlZCIsa3Q9ImNoZWNrYm94IixmdD0icmFkaW8iLHRyPSciPjxcL3NjcmlwdD4nLGlyPSc8c2NyaXB0IHR5cGU9ImpzdicsZHQ9InNjcmlwdCxbIitzKyJdIixoPSJodG1sIixndD17dmFsdWU6InZhbCIsaW5wdXQ6InZhbCIsaHRtbDpoLHRleHQ6InRleHQifSxycj17ZnJvbToidmFsdWUiLHRvOiJ2YWx1ZSJ9LG5pPTAscnU9dC5jbGVhbkRhdGEsdXU9Zi5kZWxpbWl0ZXJzLGl0PXUuZXJyLHRpPXUuc3ludGF4RXJyLGZ1PS88KD8hc2NyaXB0KShcdyspKD86W14+XSoob25cdyspXHMqPSk/W14+XSo+LyxldT0vWyciXFxdL2csdXI9ZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksaWk9ZS5xdWVyeVNlbGVjdG9yLHJpPXtvbDoxLHVsOjEsdGFibGU6MSx0Ym9keToxLHRoZWFkOjEsdGZvb3Q6MSx0cjoxLGNvbGdyb3VwOjEsZGw6MSxzZWxlY3Q6MSxvcHRncm91cDoxLHN2ZzoxLHN2Z19uczoxfSxvdT17dHI6InRhYmxlIn0sdWk9e2JyOjEsaW1nOjEsaW5wdXQ6MSxocjoxLGFyZWE6MSxiYXNlOjEsY29sOjEsbGluazoxLG1ldGE6MSxjb21tYW5kOjEsZW1iZWQ6MSxrZXlnZW46MSxwYXJhbToxLHNvdXJjZToxLHRyYWNrOjEsd2JyOjF9LGZyPXt9LHk9ezA6dn0sYz17fSxlcj0xLHN1PS9eIyh2aWV3XC4/KT8vLGh1PS8oXnwoXC8+KXw8XC8oXHcrKT58KShccyopKFsjXC9dXGQrW19eXSlgKFxzKikoPFx3Kyg/PVtcc1wvPl0pKT98XHMqKD86KDxcdysoPz1bXHNcLz5dKSl8PFwvKFx3Kyk+KFxzKil8KFwvPilccyp8KD4pKS9nLG9yPS8oIykoKShcZCspKF8pL2csY3U9LygjKSgpKFxkKykoW19eXSkvZyxsdT0vKD86KCMpfChcLykpKFxkKykoXykvZyxhdT0vKCMpKCkoXGQrKShcXikvZyx2dT0vKD86KCMpfChcLykpKFxkKykoW19eXSkoWy0rQFxkXSspPy9nO2lmKCF0KXRocm93IGF0KyJqUXVlcnkiO2lmKCF0LnZpZXdzKXRocm93IGF0KyJKc1JlbmRlciI7aWYoIXQub2JzZXJ2YWJsZSl0aHJvdyBhdCsianF1ZXJ5Lm9ic2VydmFibGUiO3QubGlua3x8KHUub25TdG9yZUl0ZW09ZnVuY3Rpb24obixpLHIpe3ImJm49PT1udSYmKHIubGluaz1hcixyLnVubGluaz1kcixpJiYodC5saW5rW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIGFyLmFwcGx5KHIsYXJndW1lbnRzKX0sdC51bmxpbmtbaV09ZnVuY3Rpb24oKXtyZXR1cm4gZHIuYXBwbHkocixhcmd1bWVudHMpfSkpfSwoZi5kZWxpbWl0ZXJzPWZ1bmN0aW9uKCl7dmFyIG49dXUuYXBwbHkocixhcmd1bWVudHMpO3JldHVybiB3aT1uWzBdLHl0PW5bMV0sbnQ9blsyXSxiaT1uWzNdLGtpPW5bNF0sZz1uZXcgUmVnRXhwKCIoPzpefFxccyopKFtcXHctXSopKFxcIitraSsiKT8oXFwiK3l0K3UuclRhZysiXFwiK250KyIpIiwiZyIpLHRoaXN9KSgpLHUudmlld0luZm9zPWwsdnQ9e2FkZFZpZXdzOmZ1bmN0aW9uKG4sdCxpKXt2YXIgdSxvLHI9dGhpcyxmPXQubGVuZ3RoLGU9ci52aWV3cztpZighci5fLnVzZUtleSYmZiYmKGk9ci50bXBsKSYmKG89ZS5sZW5ndGgrZixscihyLG4saSxlLHQsci5jdHgpIT09ITEpKWZvcih1PW4rZjt1PG87dSsrKWQoZVt1XSkuc2V0UHJvcGVydHkoImluZGV4Iix1KTtyZXR1cm4gcn0scmVtb3ZlVmlld3M6ZnVuY3Rpb24obixyLHUpe2Z1bmN0aW9uIG8obil7dmFyIHMsaCxjLGUsbyxsLHI9ZltuXTtpZihyJiZyLmxpbmspe2lmKHM9ci5fLmlkLHV8fChsPXIubm9kZXMoKSksci5yZW1vdmVWaWV3cyhpLGksITApLHIuZGF0YT1pLGU9ci5fcHJ2LG89ci5fbnh0LGM9ci5wYXJlbnRFbGVtLHV8fChyLl9lbENudCYmcGkoZSxvLGMscywiXyIpLHQobCkucmVtb3ZlKCkpLCFyLl9lbENudCl0cnl7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpO28ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1jYXRjaChhKXt9Zmkocik7Zm9yKGggaW4gci5fLmJuZHMpbHQoaCk7ZGVsZXRlIHlbc119fXZhciBlLGwscyxoPXRoaXMsYz0haC5fLnVzZUtleSxmPWgudmlld3M7aWYoYyYmKHM9Zi5sZW5ndGgpLG49PT1pKWlmKGMpe2ZvcihlPXM7ZS0tOylvKGUpO2gudmlld3M9W119ZWxzZXtmb3IobCBpbiBmKW8obCk7aC52aWV3cz17fX1lbHNlIGlmKHI9PT1pJiYoYz9yPTE6KG8obiksZGVsZXRlIGZbbl0pKSxjJiZyKXtmb3IoZT1uK3I7ZS0tPm47KW8oZSk7aWYoZi5zcGxpY2UobixyKSxzPWYubGVuZ3RoKXdoaWxlKG48cylkKGZbbl0pLnNldFByb3BlcnR5KCJpbmRleCIsbisrKX1yZXR1cm4gdGhpc30scmVmcmVzaDpmdW5jdGlvbihuKXt2YXIgdD10aGlzLGk9dC5wYXJlbnQ7cmV0dXJuIGkmJihscih0LHQuaW5kZXgsdC50bXBsLGkudmlld3MsdC5kYXRhLG4sITApLGZpKHQpKSx0fSxub2RlczpsaSxjb250ZW50czpjaSxjaGlsZFRhZ3M6YWksbGluazpidX0sdHUubWVyZ2U9ZnVuY3Rpb24obil7dmFyIHQsaT10aGlzLmxpbmtDdHguX3ZhbHx8IiIscj10aGlzLnRhZ0N0eC5wcm9wcy50b2dnbGU7cmV0dXJuIHImJih0PXIucmVwbGFjZSgvW1xcXiQufD8qKygpW3tdL2csIlxcJCYiKSx0PSIoXFxzKD89Iit0KyIkKXwoXFxzKXxeKSgiK3QrIihcXHN8JCkpIixpPWkucmVwbGFjZShuZXcgUmVnRXhwKHQpLCIkMiIpLG49aSsobj8oaSYmIiAiKStyOiIiKSksbn0sci50YWdzKCJvbiIse2F0dHI6Im5vbmUiLG9uQWZ0ZXJMaW5rOmZ1bmN0aW9uKG4scil7dmFyIG89dGhpcyxzPXQoci5lbGVtKSxmPW4uYXJncyx1PW4ucHJvcHMuZGF0YSxlPWYucG9wKCksaD1mWzFdfHxudWxsLGM9bi5wcm9wcy5jb250ZXh0O2lmKHU9dSE9PWk/dTpudWxsLGUmJmUuY2FsbClzLm9uKGZbMF18fCJjbGljayIsaCx1LGZ1bmN0aW9uKG4pe2UuY2FsbChjfHxvLmxlYWYsbix7Y2hhbmdlOm4udHlwZSx2aWV3OnIudmlldyxsaW5rQ3R4OnJ9KX0pfSxvbkFmdGVyQmluZDpmdW5jdGlvbihuKXt0aGlzLmxlYWY9bi5sZWFmfSxmbG93OiEwfSksayhyLnRhZ3NbImZvciJdLHtvbkFycmF5Q2hhbmdlOmZ1bmN0aW9uKG4sdCl7dmFyIGkscj10aGlzLHU9dC5jaGFuZ2U7aWYoci50YWdDdHhzWzFdJiYodT09PSJpbnNlcnQiJiZuLnRhcmdldC5sZW5ndGg9PT10Lml0ZW1zLmxlbmd0aHx8dT09PSJyZW1vdmUiJiYhbi50YXJnZXQubGVuZ3RofHx1PT09InJlZnJlc2giJiYhdC5vbGRJdGVtcy5sZW5ndGghPSFuLnRhcmdldC5sZW5ndGgpKXIucmVmcmVzaCgpO2Vsc2UgZm9yKGkgaW4gci5fLmFyclZ3cylpPXIuXy5hcnJWd3NbaV0saS5kYXRhPT09bi50YXJnZXQmJmkuXy5vbkFycmF5Q2hhbmdlLmFwcGx5KGksYXJndW1lbnRzKTtuLmRvbmU9ITB9LG9uQWZ0ZXJMaW5rOmZ1bmN0aW9uKCl7Zm9yKHZhciB1LG8saSxmLGU9dGhpcyxyPWUuX2Fyc3x8e30scz1lLnRhZ0N0eHMsYz1zLmxlbmd0aCxoPWUuc2VsZWN0ZWR8fDAsbj0wO248PWg7bisrKXU9c1tuXSxmPXUubWFwP3UubWFwLnRndDp1LmFyZ3MubGVuZ3RoP3UuYXJnc1swXTp1LnZpZXcuZGF0YSwoaT1yW25dKSYmZiE9PWlbMF0mJih1dChpWzBdLGlbMV0sITApLGRlbGV0ZSByW25dKSwhcltuXSYmdC5pc0FycmF5KGYpJiYodXQoZixvPWZ1bmN0aW9uKG4sdCl7ZS5vbkFycmF5Q2hhbmdlKG4sdCl9KSxyW25dPVtmLG9dKTtmb3Iobj1oKzE7bjxjO24rKykoaT1yW25dKSYmKHV0KGlbMF0saVsxXSwhMCksZGVsZXRlIHJbbl0pO2UuX2Fycz1yfSxvbkRpc3Bvc2U6ZnVuY3Rpb24oKXt2YXIgbix0PXRoaXM7Zm9yKG4gaW4gdC5fYXJzKXV0KHQuX2Fyc1tuXVswXSx0Ll9hcnNbbl1bMV0sITApfX0pLHIudGFncyh7cHJvcHM6dC5leHRlbmQoe30sci50YWdzWyJmb3IiXSx1LkRhdGFNYXAoci50YWdzLnByb3BzLmdldFRndCxuZix0ZixpLHJmKSl9KSxrKHQse3ZpZXc6ci52aWV3PWI9ZnVuY3Rpb24obixyLHUpe3IhPT0hIXImJih1PXIscj1pKTt2YXIgZixvLGgsYyx3LHMsYixhLHA9MCxrPWUuYm9keTtpZihuJiZuIT09ayYmdi5fLnVzZUtleT4xJiYobj0iIituPT09bj90KG4pWzBdOm4uanF1ZXJ5P25bMF06bixuKSlpZihyKXtmb3IoYT1paT9uLnF1ZXJ5U2VsZWN0b3JBbGwoZHQpOnQoZHQsbikuZ2V0KCkscz1hLmxlbmd0aCxoPTA7aDxzO2grKylmb3IoYj1hW2hdLG89bChiLGksb3IpLGM9MCx3PW8ubGVuZ3RoO2M8dztjKyspaWYoZj1vW2NdLChmPXlbZi5pZF0pJiYoZj1mJiZ1P2YuZ2V0KCEwLHUpOmYsZikpcmV0dXJuIGZ9ZWxzZSB3aGlsZShuKXtpZihvPWwobixpLGx1KSlmb3Iocz1vLmxlbmd0aDtzLS07KWlmKGY9b1tzXSxmLm9wZW4pe2lmKHA8MSlyZXR1cm4gZj15W2YuaWRdLGYmJnU/Zi5nZXQodSk6Znx8djtwLS19ZWxzZSBwKys7bj1uLnByZXZpb3VzU2libGluZ3x8bi5wYXJlbnROb2RlfXJldHVybiByP2k6dn0sbGluazpyLmxpbms9c2ksdW5saW5rOnIudW5saW5rPXlpLGNsZWFuRGF0YTpmdW5jdGlvbihuKXtuLmxlbmd0aCYmbmkmJnZpKG4pO3J1LmFwcGx5KHQsYXJndW1lbnRzKX19KSxyLnV0aWxpdHk9e3ZhbGlkYXRlOmZ1bmN0aW9uKG4pe3RyeXt2LmxpbmsoaSxlLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGksaSxuLGksaSwxKX1jYXRjaCh0KXtyZXR1cm4gdC5tZXNzYWdlfX19LGsodC5mbix7bGluazpmdW5jdGlvbihuLHQsaSxyLHUsZixlKXtyZXR1cm4gc2kobix0aGlzLHQsaSxyLHUsZixlKX0sdW5saW5rOmZ1bmN0aW9uKG4pe3JldHVybiB5aShuLHRoaXMpfSx2aWV3OmZ1bmN0aW9uKG4pe3JldHVybiBiKHRoaXNbMF0sbil9fSksdC5lYWNoKFtoLCJyZXBsYWNlV2l0aCIsImVtcHR5IiwicmVtb3ZlIl0sZnVuY3Rpb24obixpKXt2YXIgcix1PXQuZm5baV07dC5mbltpXT1mdW5jdGlvbigpe25pPTE7dHJ5e3I9dS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtuaT0wfXJldHVybiByfX0pLGsodix7dG1wbDp7bGlua3M6e30sdGFnczp7fX19KSxrKHYsdnQpLHYuXy5vblJlbmRlcj1laSxmKHt3cmFwTWFwOm89e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjxcL3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8XC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjxcL21hcD4iXSxwYXJhbTpbMSwiPG9iamVjdD4iLCI8XC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8XC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8XC90Ym9keT48XC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPFwvdHI+PFwvdGJvZHk+PFwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjxcL3Rib2R5Pjxjb2xncm91cD4iLCI8XC9jb2xncm91cD48XC90YWJsZT4iXSxzdmdfbnM6WzEsIjxzdmc+IiwiPFwvc3ZnPiJdLGRpdjpqUXVlcnkuc3VwcG9ydC5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPFwvZGl2PiJdfSxsaW5rQXR0cjphPSJkYXRhLWxpbmsiLG1lcmdlOntpbnB1dDp7ZnJvbTpndSx0bzoidmFsdWUifSx0ZXh0YXJlYTpycixzZWxlY3Q6cnIsb3B0Z3JvdXA6e3RvOiJsYWJlbCJ9fSxqc3JEYmdNb2RlOmYuZGVidWdNb2RlLGRlYnVnTW9kZTpmdW5jdGlvbih0KXtmLmpzckRiZ01vZGUodCk7dD9uLl9qc3Y9e3ZpZXdzOnksYmluZGluZ3M6Y306ZGVsZXRlIG4uX2pzdn0sanN2OmZ1bmN0aW9uKCl7Zi5kZWJ1Z01vZGUoZi5fZGJnTW9kZSk7YT1mLmxpbmtBdHRyO3R0PWR0KyIsWyIrYSsiXSI7ZGk9Zi5ub0RvbUxldmVsMDtvLm9wdGdyb3VwPW8ub3B0aW9uO28udGJvZHk9by50Zm9vdD1vLmNvbGdyb3VwPW8uY2FwdGlvbj1vLnRoZWFkO28udGg9by50ZH19KSl9KHRoaXMsdGhpcy5qUXVlcnkpOwovKgovLyMgc291cmNlTWFwcGluZ1VSTD1qc3ZpZXdzLm1pbi5qcy5tYXAKKi8=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMjIEEKJGxhbmdbJ2FkZCddID0gJ0FkZCc7CiRsYW5nWydhZGRyX2NpdHknXSA9ICdDaXR5JzsKJGxhbmdbJ2FkZF9jb250YWN0J10gPSAnUXVpY2tseSBhZGQgYSBuZXcgY29udGFjdCc7CiRsYW5nWydhZGRyX2NvdW50cnknXSA9ICdDb3VudHJ5JzsKJGxhbmdbJ2FkZHJfcG9ib3gnXSA9ICdQLk8uIEJveCc7CiRsYW5nWydhZGRyX3N0YXRlJ10gPSAnU3RhdGUnOwokbGFuZ1snYWRkcl9zdHJlZXQnXSA9ICdTdHJlZXQnOwokbGFuZ1snYWRkcl96aXAnXSA9ICdaaXAnOwokbGFuZ1snYW55J10gPSAnQW55JzsKCiMjIEIKCiMjIEMKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydjYXRlZ29yeSddID0gJ0NhdGVnb3J5JzsKJGxhbmdbJ2NvbmZpcm1fYnVsa2RlbGV0ZSddID0gJ0FyZSB5b3UgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZXNlIGl0ZW1zP1xuTm90ZTogU29tZSBjb250YWN0cyBtYXkgbm90IGJlIGRlbGV0ZWQgZG8gdG8gZGVwZW5kZW5jaWVzIGluIG90aGVyIG1vZHVsZXMnOwokbGFuZ1snY29uZmlybV9kZWxldGVfY29udGFjdCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBjb250YWN0Pyc7CiRsYW5nWydjb250YWN0X3JlcG9ydF90aXRsZSddID0gJ0NvbnRhY3QgUmVwb3J0JzsKJGxhbmdbJ2NvbnRhY3RfcmVwb3J0X2Rlc2NyaXB0aW9uJ10gPSAnQWxsIGNvbnRhY3RzIGN1cnJlbnRseSBzdG9yZWQgd2l0aGluIENHQ29udGFjdHMnOwoKIyMgRAokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZCddID0gJ0RlbGV0ZSBTZWxlY3RlZCc7CgojIyBFCiRsYW5nWydlZGl0J10gPSAnRWRpdCc7CiRsYW5nWydlZGl0X2FkZHJlc3MnXSA9ICdFZGl0IEFkZHJlc3MnOwokbGFuZ1snZWRpdF9uYW1lJ10gPSAnRWRpdCBOYW1lJzsKJGxhbmdbJ2VkaXRfdGhpc19jb250YWN0J10gPSAnRWRpdCB0aGlzIENvbnRhY3QnOwokbGFuZ1snZW1haWxfdGhpc19jb250YWN0J10gPSAnRW1haWwgdGhpcyBjb250YWN0JzsKJGxhbmdbJ2Vycm9yX2FqYXgnXSA9ICdBSkFYIEVycm9yJzsKJGxhbmdbJ2Vycm9yX2RlbGV0ZV9jb250YWN0J10gPSAnUHJvYmxlbSBkZWxldGluZyBjb250YWN0Li4uIHBlcmhhcHMgc29tZXRoaW5nIGVsc2UgZGVwZW5kcyBvbiBpdCc7CiRsYW5nWydlcnJvcl9pbXBvcnQnXSA9ICdBIHByb2JsZW0gb2NjdXJyZWQgaW1wb3J0aW5nIHNvbWUgb2YgdGhlIGRhdGEnOwokbGFuZ1snZXJyb3JfbWlzc2luZ19wYXJhbSddID0gJ09uZSBvciBtb3JlIHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIG1pc3NpbmcsIG9yIGludmFsaWQnOwokbGFuZ1snZXJyb3JfbmFtZXJlcXVpcmVkJ10gPSAnQ291bGQgbm90IGZpbmQgYW55IG5hbWUgZm9yIHRoaXMgY29udGFjdCc7CiRsYW5nWydlcnJvcl9ub2ZpbGV1cGxvYWRlZCddID0gJ05vIGZpbGUgd2FzIHVwbG9hZGVkLic7CiRsYW5nWydlcnJvcl9ub29iamVjdHMnXSA9ICdDb3VsZCBub3QgZmluZCBhbnkgdmFsaWQgcHJpbWFyeSBvYmplY3RzIGZvciB0aGlzIGNvbnRhY3QuXG5cblRyeSBhZGRpbmcgYSBwaG9uZSBudW1iZXIsIFVSTCBvciBlbWFpbCBhZGRyZXNzLic7CiRsYW5nWydlcnJvcl9ub3ZhbHVlJ10gPSAnT25lIG9yIG1vcmUgcmVxdWlyZWQgZmllbGRzIGFyZSBlbXB0eSc7CiRsYW5nWydlcnJvcl9zYXZlY29udGFjdCddID0gJ0EgcHJvYmxlbSBvY2N1cnJlZCBzYXZpbmcgdGhpcyBjb250YWN0IChtYXliZSBhbiBBSkFYIGlzc3VlKSc7CiRsYW5nWydlcnJvcl91cGxvYWRmaWxldHlwZSddID0gJ1RoZSBmaWxlIHVwbG9hZGVkIHdhcyBub3Qgb2YgdGhlIGNvcnJlY3QgbWltZSB0eXBlLiAgRXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7CiRsYW5nWydlcnJvcl91cGxvYWRwcm9ibGVtJ10gPSAnU29tZSBwcm9ibGVtIG9jY3VycmVkIHdpdGggdGhlIHVwbG9hZC4gIFBlcmhhcHMgaXQgd2FzIHRvbyBiaWc/JzsKJGxhbmdbJ2V4cG9ydF9zZWxlY3RlZCddID0gJ0V4cG9ydCBTZWxlY3RlZCc7CgojIyBGCiRsYW5nWydmZXVfYWNjb3VudCddID0gJ0Zyb250RW5kVXNlcnMgQWNjb3VudCc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDb250YWN0IE1hbmFnZXInOwoKIyMgRwokbGFuZ1snZ28nXSA9ICdHbyc7CgojIyBICgojIyBJCiRsYW5nWydpbmZvX2ltcG9ydCddID0gJ1RoaXMgYWN0aW9uIHdpbGwgYXR0ZW1wdCB0byBwYXJzZSBhIHZjZiBmaWxlIGFuZCB0byBpbXBvcnQgb25lIG9yIG1vcmUgY29udGFjdHMuICA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgZnVuY3Rpb24gbWFrZXMgYWJzb2x1dGVseSBubyBjaGVja3MgZm9yIGR1cGxpY2F0ZSBpbmZvcm1hdGlvbi4nOwoKIyMgSgoKIyMgSwoKIyMgTAokbGFuZ1snbGFiZWwnXSA9ICdMYWJlbCc7CiRsYW5nWydsZWdlbmRfaW5wdXQnXSA9ICdJbnB1dCBGaWxlJzsKJGxhbmdbJ2xlZ2VuZF91cGRhdGluZyddID0gJ1VwZGF0aW5nJzsKJGxhbmdbJ2xibF9hZGRyZXNzJ10gPSAnQWRkcmVzcyc7CiRsYW5nWydsYmxfY29udGFjdF9kYWlseXdhZ2UnXSA9ICdEYWlseSBXYWdlJzsKJGxhbmdbJ2xibF9jb250YWN0X3Njb3JlMDEnXSA9ICdTY29yZSAoYmV0d2VlbiAwIGFuZCAxKSc7CiRsYW5nWydsYmxfY3JlYXRvciddID0gJ0NyZWF0b3InOwokbGFuZ1snbGJsX2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snbGJsX2VtYWlsJ10gPSAnRW1haWwnOwokbGFuZ1snbGJsX2hvbWUnXSA9ICdIb21lJzsKJGxhbmdbJ2xibF9uYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydsYmxfcGFyZW50J10gPSAnUGFyZW50JzsKJGxhbmdbJ2xibF9waG9uZSddID0gJ1Bob25lJzsKJGxhbmdbJ2xibF91cmwnXSA9ICdVUkwnOwokbGFuZ1snbGJsX3dvcmsnXSA9ICdXb3JrJzsKCiMjIE0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBjb250YWN0IG1hbmFnZXIgZm9yIENNU01TIG1vZHVsZXMuJzsKJGxhbmdbJ21vZGlmaWVkX3NpbmNlJ10gPSAnTW9kaWZpZWQgU2luY2UnOwokbGFuZ1snbXNnX2NhdGVnb3J5X2RlbGV0ZWQnXSA9ICdDYXRlZ29yeSBkZWxldGVkJzsKJGxhbmdbJ21zZ19jYXRlZ29yeV9zYXZlZCddID0gJ0NhdGVnb3J5IHNhdmVkJzsKJGxhbmdbJ21zZ19uaW1wb3J0ZWQnXSA9ICclZCByZWNvcmRzIHdlcmUgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkLic7CiRsYW5nWydtc2dfbmRlbGV0ZWQnXSA9ICclZCBjb250YWN0cyBzdWNjZXNzZnVsbHkgZGVsZXRlZC4nOwoKIyMgTgokbGFuZ1snbmFtZV9maXJzdCddID0gJ0ZpcnN0JzsKJGxhbmdbJ25hbWVfbGFzdCddID0gJ0xhc3QnOwokbGFuZ1snbmFtZV9taWRkbGUnXSA9ICdNaWRkbGUnOwokbGFuZ1snbmFtZV9wcmVmaXgnXSA9ICdQcmVmaXgnOwokbGFuZ1snbmFtZV9zdWZmaXgnXSA9ICdTdWZmaXgnOwokbGFuZ1snbm9uZSddID0gJ05vbmUnOwoKIyMgTwoKIyMgUAokbGFuZ1sncGFnZXRpdGxlX2FkZF9jYXQnXSA9ICdBZGQgQ2F0ZWdvcnknOwokbGFuZ1sncGFnZXRpdGxlX2VkaXRfY2F0J10gPSAnRWRpdCBDYXRlZ29yeSc7CiRsYW5nWydwYWdlX2xpbWl0J10gPSAnUGFnZSBMaW1pdCc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBDR0NvbnRhY3RzIG1vZHVsZSBpcyBpbnN0YWxsZWQnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1RoZSBDR0NvbnRhY3RzIG1vZHVsZSBhbmQgYWxsIGFzc29jaWF0ZWQgZGF0YSBkZWxldGVkJzsKJGxhbmdbJ3BoX2FkZG5hbWUnXSA9ICdBZGQgbmFtZSc7CiRsYW5nWydwaF9hZGRyZXNzJ10gPSAnTm8gYWRkcmVzcyBlbnRlcmVkJzsKJGxhbmdbJ3BoX2NvbXBhbnknXSA9ICdDb21wYW55IC8gT3JnYW5pemF0aW9uJzsKJGxhbmdbJ3BoX2NvbnRhY3RuYW1lJ10gPSAnQ29udGFjdCBuYW1lJzsKJGxhbmdbJ3BoX2NvbnRhY3R2YWx1ZSddID0gJ0VudGVyIGEgdmFsdWUnOwokbGFuZ1sncGhfZmV1X3VzZXInXSA9ICdGcm9udEVuZFVzZXIgQWNjb3VudCc7CiRsYW5nWydwaF9mdWxsbmFtZSddID0gJ0Z1bGwgTmFtZSc7CiRsYW5nWydwaF9ub3RlJ10gPSAnQWRkIGEgbm90ZSc7CiRsYW5nWydwaF90aXRsZSddID0gJ1RpdGxlIC8gUG9zaXRpb24nOwokbGFuZ1sncGhfdmFsdWUnXSA9ICdFbnRlciBhIHZhbHVlJzsKJGxhbmdbJ3Bob25lX2ZheCddID0gJ0ZheCc7CiRsYW5nWydwaG9uZV9tb2JpbGUnXSA9ICdNb2JpbGUnOwokbGFuZ1sncGhvbmVfbXNnJ10gPSAnTWVzc2FnZSBTZXJ2aWNlJzsKJGxhbmdbJ3Bob25lX3BhZ2VyJ10gPSAnUGFnZXInOwokbGFuZ1sncGhvbmVfc2F0J10gPSAnU2F0ZWxsaXRlJzsKJGxhbmdbJ3Bob25lX3ZpZGVvJ10gPSAnVmlkZW8nOwokbGFuZ1sncGhvbmVfdm9pY2UnXSA9ICdWb2ljZSc7CiRsYW5nWydwaG9uZV90aGlzX2NvbnRhY3QnXSA9ICdUZWxlcGhvbmUgdGhpcyBjb250YWN0JzsKJGxhbmdbJ3Byb21wdF9hZGRfY2F0J10gPSAnQWRkIGEgbmV3IENhdGVnb3J5JzsKJGxhbmdbJ3Byb21wdF9hZGRfY29udGFjdCddID0gJ0FkZCBhIG5ldyBDb250YWN0JzsKJGxhbmdbJ3Byb21wdF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmllcyc7CiRsYW5nWydwcm9tcHRfZGVsZXRlX2NhdCddID0gJ0RlbGV0ZSB0aGlzIGNhdGVnb3J5JzsKJGxhbmdbJ3Byb21wdF9lZGl0X2NhdCddID0gJ0VkaXQgdGhpcyBjYXRlZ29yeSc7CiRsYW5nWydwcm9tcHRfZXhwb3J0X3BkZiddID0gJ0V4cG9ydCB0byBQREYnOwokbGFuZ1sncHJvbXB0X2ZpbmRfY29udGFjdCddID0gJ0ZpbmQgQ29udGFjdC4uLic7CiRsYW5nWydwcm9tcHRfZmlsZSddID0gJ0ltcG9ydCBGaWxlJzsKJGxhbmdbJ3Byb21wdF9maWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1sncHJvbXB0X2ltcG9ydF92Y2FyZCddID0gJ0ltcG9ydCBDb250YWN0cyBmcm9tIHZDYXJkJzsKJGxhbmdbJ3Byb21wdF9vcHRpb25zJ10gPSAnT3B0aW9ucyc7CiRsYW5nWydwcm9tcHRfcGFnZSddID0gJ1BhZ2UnOwokbGFuZ1sncHJvbXB0X3F1aWNrX2FkZF9jb250YWN0J10gPSAnUXVpY2sgY3JlYXRlIGNvbnRhY3QnOwokbGFuZ1sncHJvbXB0X3NlbGVjdF9hbGwnXSA9ICdTZWxlY3Qgb3IgRGUtc2VsZWN0IGFsbCB2aXNpYmxlIGNvbnRhY3RzJzsKJGxhbmdbJ3Byb21wdF91cGRhdGVfY2hlY2tyZXYnXSA9ICdDaGVjayBSZXZpc2lvbiBEYXRlJzsKCiMjIFEKCiMjIFIKCiMjIFMKJGxhbmdbJ3NlbGVjdF9jb250YWN0J10gPSAnU2VsZWN0IGFub3RoZXIgQ29udGFjdCc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwoKIyMgVAokbGFuZ1sndGFiX2NhdGVnb3JpZXMnXSA9ICdDYXRlZ29yaWVzJzsKJGxhbmdbJ3RhYl9jb250YWN0cyddID0gJ0NvbnRhY3RzJzsKJGxhbmdbJ3RhYl9zZXR0aW5ncyddID0gJ1NldHRpbmdzJzsKJGxhbmdbJ3RpdGxlX2ZldV91aWQnXSA9ICdTZWxlY3QgYW4gRkVVIHVzZXIgdG8gY29ubmVjdCB0aGlzIGNvbnRhY3QgdG8nOwokbGFuZ1sndGl0bGVfZmluZF9jb250YWN0J10gPSAnRW50ZXIgYSBwb3J0aW9uIG9mIGEgY29udGFjdCBuYW1lJzsKJGxhbmdbJ3RpdGxlX2NvbXBhbnknXSA9ICdDb21wYW55IG5hbWUgb3Igb3JnYW5pemF0aW9uJzsKJGxhbmdbJ3RpdGxlX2Z1bGxuYW1lJ10gPSAnRW50ZXIgdGhlIGZ1bGwgbmFtZSBmb3IgdGhpcyBjb250YWN0LiAgVGhpcyB3aWxsIGJlIHVzZWQgYXMgdGhlIGRpc3BsYXkgbmFtZS4gIElmIG5vbmUgaXMgZW50ZXJlZCwgYSBmb3JtYXR0ZWQgdmVyc2lvbiBvZiB0aGUgZm9ybWFsIG5hbWUgd2lsbCBiZSB1c2VkLic7CiRsYW5nWyd0aXRsZV9uYW1lJ10gPSAnVGhlIGRpc3BsYXkgbmFtZSBmb3IgdGhpcyBjb250YWN0JzsKJGxhbmdbJ3RpdGxlX29yZyddID0gJ0NvbnRhY3RzIHRpdGxlIG9yIHBvc2l0aW9uJzsKJGxhbmdbJ3RpdGxlX3NlbmRtYWlsJ10gPSAnU2VuZCB0aGlzIHVzZXIgYW4gZW1haWwnOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwoKIyMgVQoKIyMgVgokbGFuZ1sndmlld19jb250YWN0J10gPSAnVmlldyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNvbnRhY3QnOwoKIyMgVwoKIyMgWAoKIyMgWQoKIyMgWgoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3QgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY2xhc3MgdG8gcmVwcmVzZW50IGEgY2F0ZWdvcnkgd2l0aGluIHRoZSBDR0NvbnRhY3RzIG1vZHVsZS4KICoKICogQHByb3BlcnR5IGludCAkaWQgVGhlIGNhdGVnb3J5IGlkLgogKiBAcHJvcGVydHkgc3RyaW5nICRuYW1lIFRoZSBjYXRlZ29yeSBuYW1lLgogKiBAcHJvcGVydHkgc3RyaW5nICRkZXNjcmlwdGlvbiBUaGUgY2F0ZWdvcnkgZGVzY3JpcHRpb24KICogQHByb3BlcnR5IGludCAkcGFyZW50X2lkIFRoZSBpZCBvZiB0aGlzIG9iamVjdHMnIHBhcmVudC4gIG9yIC0xCiAqIEBwcm9wZXJ0eSBpbnQgJGl0ZW1fb3JkZXIgVGhlIG9yZGVyIG9mIHRoaXMgb2JqZWN0IGFtb25nc3QgaXQncyBwZWVycy4KICogQHByb3BlcnR5IHN0cmluZyAkaGllcmFyY2h5IChyZWFkIG9ubHkpIFRoZSBoaWVyYXJjaHkgb2YgdGhpcyBvYmplY3QgKHBhdGggdG8gdGhlIHJvb3QpIGV4cHJlc3NlZCBpbiBjYXRlZ29yeSBpZHMuCiAqIEBwcm9wZXJ0eSBzdHJpbmcgJGxvbmdfbmFtZSAocmVhZCBvbmx5KSBUaGUgaGllcmFyY2h5IG9mIHRoaXMgb2JqZWN0IChwYXRoIHRvIHRoZSByb290KSBleHByZXNzZWQgaW4gdGVybXMgb2YgY2F0ZWdvcnkgbmFtZXMuCiAqLwpjbGFzcyBjYXRlZ29yeSBpbXBsZW1lbnRzIFxBcnJheUFjY2Vzcwp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgnaWQnPT5udWxsLCduYW1lJz0+bnVsbCwnZGVzY3JpcHRpb24nPT5udWxsLCdwYXJlbnRfaWQnPT5udWxsLCdpdGVtX29yZGVyJz0+bnVsbCwnaGllcmFyY2h5Jz0+bnVsbCwnbG9uZ19uYW1lJz0+bnVsbCwnY2hpbGRyZW4nPT5udWxsKTsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RpcnR5OwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfb2xkX3BhcmVudDsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX29sZF9vcmRlcjsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJF9jYWNoZWRfY2F0ZWdvcmllczsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCgka2V5KQogICAgewogICAgICAgICRrZXkgPSBzdHJ0b2xvd2VyKHRyaW0oJGtleSkpOwogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgY2FzZSAncGFyZW50X2lkJzoKICAgICAgICBjYXNlICdpdGVtX29yZGVyJzoKICAgICAgICBjYXNlICdoaWVyYXJjaHknOgogICAgICAgIGNhc2UgJ2xvbmdfbmFtZSc6CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ2Rlc2MnOgogICAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsnZGVzY3JpcHRpb24nXTsKCiAgICAgICAgY2FzZSAnZGVwdGgnOgogICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydkZXB0aCddKSApIHJldHVybiAkdGhpcy0+X2RhdGFbJ2RlcHRoJ107CiAgICAgICAgICAgIHJldHVybiBjb3VudChleHBsb2RlKCd8JywkdGhpc1snbG9uZ19uYW1lJ10pKS0xOwoKICAgICAgICBjYXNlICdjaGlsZHJlbic6CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2NoaWxkcmVuJ10pICkgcmV0dXJuICR0aGlzLT5fZGF0YVsnY2hpbGRyZW4nXTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG9mIGEgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRTZXQoJGtleSwkdmFsKSB7CiAgICAgICAgJGtleSA9IHN0cnRvbG93ZXIodHJpbSgka2V5KSk7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICBjYXNlICdoaWVyYXJjaHknOgogICAgICAgIGNhc2UgJ2xvbmdfbmFtZSc6CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJGtleS4nIGNhbm5vdCBiZSBkaXJlY3RseSBtb2RpZmllZCBpbiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CgogICAgICAgIGNhc2UgJ2l0ZW1fb3JkZXInOgogICAgICAgICAgICAkdmFsID0gKGludCkkdmFsOwogICAgICAgICAgICBpZiggJHZhbCA8IDEgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdpdGVtIG9yZGVyIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9vbGRfb3JkZXIgKSAkdGhpcy0+X29sZF9vcmRlciA9ICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IFRSVUU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdwYXJlbnRfaWQnOgogICAgICAgICAgICAkdmFsID0gKGludCkkdmFsOwogICAgICAgICAgICBpZiggJHZhbCA9PSAwIHx8ICR2YWwgPCAtMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ3BhcmVudF9pZCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgb3IgLTEnKTsKICAgICAgICAgICAgLy8gaWYgdGhlIG5ldyBwYXJlbnQgaXMgYSBjaGlsZCBvZiB0aGUgY3VycmVudCBpdGVtLCBkaXNhbGxvdyBpdC4KICAgICAgICAgICAgLy9pZiggc2VsZjo6aXNfY2hpbGRfb2YoJHZhbCwkdGhpc1snaWQnXSkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdjYW5ub3QgbW92ZSBhbiBpdGVtIHRvIGJlIGEgZGVzY2VuZGFudCBvZiBpdHNlbGYnKTsKICAgICAgICAgICAgaWYoICEkdGhpcy0+X29sZF9vcmRlciApICR0aGlzLT5fb2xkX29yZGVyID0gJHRoaXMtPl9kYXRhWydpdGVtX29yZGVyJ107CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9vbGRfcGFyZW50ICkgJHRoaXMtPl9vbGRfcGFyZW50ID0gJHRoaXMtPl9kYXRhWydwYXJlbnRfaWQnXTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydoaWVyYXJjaHknXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnbG9uZ19uYW1lJ10gPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2l0ZW1fb3JkZXInXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSBUUlVFOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZGVwdGgnOgogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSBtYXgoMCwoaW50KSR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnY2hpbGRyZW4nOgogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgJiYgY291bnQoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICBpZiggaXNfb2JqZWN0KCR2YWxbMF0pICkgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZGVzYyc6CiAgICAgICAgICAgICRrZXkgPSAnZGVzY3JpcHRpb24nOwogICAgICAgIGNhc2UgJ2Rlc2NyaXB0aW9uJzoKICAgICAgICBjYXNlICduYW1lJzoKICAgICAgICAgICAgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSBUUlVFOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbigka2V5LicgaXMgbm90IGEgdmFsaWQgcHJvcGVydHkgb2YgYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEV4aXN0cygka2V5KQogICAgewogICAgICAgICRrZXkgPSBzdHJ0b2xvd2VyKHRyaW0oJGtleSkpOwogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnaGllcmFyY2h5JzoKICAgICAgICBjYXNlICdsb25nX25hbWUnOgogICAgICAgIGNhc2UgJ2l0ZW1fb3JkZXInOgogICAgICAgIGNhc2UgJ3BhcmVudF9pZCc6CiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgY2FzZSAnZGVzYyc6CiAgICAgICAgY2FzZSAnZGVzY3JpcHRpb24nOgogICAgICAgIGNhc2UgJ2NoaWxkcmVuJzoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG9mIGEgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRVbnNldCgka2V5KQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF92YWxpZGF0ZV91cGRhdGUoKQogICAgewogICAgICAgIGlmKCAkdGhpc1snbmFtZSddID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTmFtZSBjYW5ub3QgYmUgZW1wdHkgaW4gYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgcGFyZW50X2lkCiAgICAgICAgaWYoICR0aGlzWydwYXJlbnRfaWQnXSA9PSAnJyB8fCAkdGhpc1sncGFyZW50X2lkJ10gPT0gMCB8fCAkdGhpc1sncGFyZW50X2lkJ10gPCAtMSApICR0aGlzWydwYXJlbnRfaWQnXSA9IC0xOwoKICAgICAgICAvLyB2YWxpZGF0ZSBuYW1lIGZvciB0aGUgc2FtZSBwYXJlbnQKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGlkIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgV0hFUkUgbmFtZSA9ID8gQU5EIHBhcmVudF9pZCA9ID8gQU5EIGlkICE9ID8nOwogICAgICAgICR0bXAgPSAoaW50KSAkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSwkdGhpc1sncGFyZW50X2lkJ10sJHRoaXNbJ2lkJ10pKTsKICAgICAgICBpZiggJHRtcCA+IDAgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBIGNhdGVnb3J5IHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgc2FtZSBwYXJlbnQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF91cGRhdGUoKQogICAgewogICAgICAgIGlmKCAhJHRoaXMtPl9kaXJ0eSApIHJldHVybjsKICAgICAgICAkdGhpcy0+X3ZhbGlkYXRlX3VwZGF0ZSgpOwogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwoKICAgICAgICAvLyBpZiB3ZSd2ZSBjaGFuZ2VkIHRoZSBwYXJlbnQgaWQKICAgICAgICAvLyB3ZSBoYXZlIHRvIHJlLW9yZGVyIGFsbCBvZiB0aGUgaXRlbXMgdGhhdAogICAgICAgIC8vIHVzZWQgdG8gYmUgYWZ0ZXIgdGhpcyBpdGVtIHdpdGggdGhlIHNhbWUgcGFyZW50CiAgICAgICAgLy8gc2ltaWxhciB0byBhIGRlbGV0ZSArIGFkZAoKICAgICAgICAvLyBpZiB3ZSBoYXZlIG5vIGl0ZW0gb3JkZXIsIHdlIGNhbiBjcmVhdGUgb25lCiAgICAgICAgaWYoICR0aGlzWydpdGVtX29yZGVyJ10gPCAxICkgewogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIENPQUxFU0NFKE1BWChpdGVtX29yZGVyKSwwKSArIDEgRlJPTSAnLkNHQ09OVEFDVFNfQ0FUU19UQkwuJyBXSEVSRSBwYXJlbnRfaWQgPSA/JzsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpdGVtX29yZGVyJ10gPSAoaW50KSRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkdGhpc1sncGFyZW50X2lkJ10pKTsKICAgICAgICB9CgogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgU0VUIG5hbWUgPSA/LCBkZXNjcmlwdGlvbiA9ID8sIHBhcmVudF9pZCA9ID8sIGl0ZW1fb3JkZXIgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSwkdGhpc1snZGVzY3JpcHRpb24nXSwoaW50KSR0aGlzWydwYXJlbnRfaWQnXSwoaW50KSR0aGlzWydpdGVtX29yZGVyJ10sKGludCkkdGhpc1snaWQnXSkpOwogICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRVJST1IgJy4kZGItPkVycm9yTXNnKCkuJyAtLSAnLiRkYi0+c3FsKTsKICAgICAgICAkdGhpcy0+X2RpcnR5ID0gRkFMU0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfdmFsaWRhdGVfaW5zZXJ0KCkKICAgIHsKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgbmFtZQogICAgICAgIGlmKCAkdGhpc1snbmFtZSddID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTmFtZSBjYW5ub3QgYmUgZW1wdHkgaW4gYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgcGFyZW50X2lkCiAgICAgICAgaWYoICR0aGlzWydwYXJlbnRfaWQnXSA9PSAnJyB8fCAkdGhpc1sncGFyZW50X2lkJ10gPT0gMCB8fCAkdGhpc1sncGFyZW50X2lkJ10gPCAtMSApICR0aGlzWydwYXJlbnRfaWQnXSA9IC0xOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgbmFtZSBmb3IgdGhlIHNhbWUgcGFyZW50CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCBGUk9NICcuQ0dDT05UQUNUU19DQVRTX1RCTC4nIFdIRVJFIG5hbWUgPSA/IEFORCBwYXJlbnRfaWQgPSA/JzsKICAgICAgICAkdG1wID0gKGludCkgJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCR0aGlzWyduYW1lJ10sJHRoaXNbJ3BhcmVudF9pZCddKSk7CiAgICAgICAgaWYoICR0bXAgPiAwICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignQSBjYXRlZ29yeSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIHNhbWUgcGFyZW50Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfaW5zZXJ0KCkKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5fZGlydHkgKSByZXR1cm47CiAgICAgICAgJHRoaXMtPl92YWxpZGF0ZV9pbnNlcnQoKTsKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgLy8gaWYgd2UgaGF2ZSBubyBpdGVtIG9yZGVyLCB3ZSBjYW4gY3JlYXRlIG9uZQogICAgICAgIGlmKCAkdGhpc1snaXRlbV9vcmRlciddIDwgMSApIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBDT0FMRVNDRShNQVgoaXRlbV9vcmRlciksMCkgKyAxIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgV0hFUkUgcGFyZW50X2lkID0gPyc7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaXRlbV9vcmRlciddID0gKGludCkkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHRoaXNbJ3BhcmVudF9pZCddKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBpbnNlcnQgdGhlIHJlY29yZAogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNHQ09OVEFDVFNfQ0FUU19UQkwuJyAobmFtZSxkZXNjcmlwdGlvbixwYXJlbnRfaWQsaXRlbV9vcmRlcikgVkFMVUVTKD8sPyw/LD8pJzsKICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpc1snbmFtZSddLCR0aGlzWydkZXNjJ10sKGludCkkdGhpc1sncGFyZW50X2lkJ10sKGludCkkdGhpc1snaXRlbV9vcmRlciddKSk7CiAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFUlJPUiAnLiRkYi0+RXJyb3JNc2coKS4nIC0tICcuJGRiLT5zcWwpOwoKICAgICAgICAvLyBnZXQgdGhlIG5ldyBpZAogICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9ICRkYi0+SW5zZXJ0X0lEKCk7CgogICAgICAgIC8vIG1hcmsgbm90IGRpcnR5CiAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IEZBTFNFOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBpZiBjYXRlZ29yeSBBIGlzIGEgY2hpbGQgb2YgY2F0ZWdvcnkgQgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGEgVGhlIGZpcnN0IGNhdGVnb3J5IGlkLgogICAgICogQHBhcmFtIGludCAkYiBUaGUgc2Vjb25kIGNhdGVnb3J5IGlkLgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfY2hpbGRfb2YoJGEsICRiKQogICAgewogICAgICAgIC8vIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgaXMgYSBjaGlsZCBvZiBiCiAgICAgICAgLy8gaWYgYiBpcyAtMSB0aGUgcmVzdWx0IGlzIGFsd2F5cyB0cnVlCiAgICAgICAgLy8gdGVzdCBpZiBCIGlzIGEgY2hpbGQgb2YgQQogICAgICAgIGlmKCAkYSA8IDEgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgaWYoICRiIDwgMSApIHJldHVybiBUUlVFOyAvLyBldmVyeXRoaW5nIGlzIGEgY2hpbGQgb2YgdGhlIHJvb3Qgc29tZWhvdy4KICAgICAgICAkY2F0cyA9IHNlbGY6OmdldF9hbGwoKTsKCiAgICAgICAgaWYoICFpc3NldCgkY2F0c1skYV0pICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ0NvdWxkIG5vdCBmaW5kIGNhdGVnb3J5IHdpdGggaWQgJy4kYSk7CiAgICAgICAgJGNhdCA9ICRjYXRzWyRhXTsKICAgICAgICBpZiggJGNhdFsncGFyZW50X2lkJ10gPT0gJGIgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gc2VsZjo6aXNfY2hpbGRfb2YoJGNhdFsncGFyZW50X2lkJ10sJGIpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZSB0aGlzIGNvbnRlbnQgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBib29sICR1cGRhdGVfcG9zaXRpb25zIEEgZmxhZyBpbmRpY2F0aW5nIHdldGhlciBvciBub3QgdG8gdXBkYXRlIGhpZXJhcmNoeSBwb3NpdGlvbnMgYWNyb3NzIGFsbCBjYXRlZ29yaWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgkdXBkYXRlX3Bvc2l0aW9ucyA9IFRSVUUpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fZGF0YVsnaWQnXSA+IDAgKSB7CiAgICAgICAgICAgICR0aGlzLT5fdXBkYXRlKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+X2luc2VydCgpOwogICAgICAgIH0KCiAgICAgICAgaWYoICR1cGRhdGVfcG9zaXRpb25zICkgc2VsZjo6Y2FsY3VsYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIERlbGV0ZSB0aGlzIGNhdGVnb3J5LgogICAgICoKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fZGF0YVsnaWQnXSA8IDEgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgZGVsZXRlIGEgY2F0ZWdvcnkgdGhhdCBoYXMgbm90IGJlZW4gc2F2ZWQnKTsKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLkNHQ09OVEFDVFNfQURSX0NBVFNfVEJMLicgV0hFUkUgY2F0X2lkID0gPyc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCR0aGlzLT5fZGF0YVsnaWQnXSkpOwoKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLkNHQ09OVEFDVFNfQ0FUU19UQkwuJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkdGhpcy0+X2RhdGFbJ2lkJ10pKTsKCiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IHRydWU7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uICZfZnJvbV9kYXRhKCRyb3cpCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBzZWxmKCk7CiAgICAgICAgJG9iai0+X2RhdGEgPSAkcm93OwogICAgICAgIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXNbJG9ialsnaWQnXV0gPSAkb2JqOwogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9fZGF0YSgpCiAgICB7CiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9kYXRhIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgaWYoICRrZXkgPT0gJ2NoaWxkcmVuJyApIHsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSApIHsKICAgICAgICAgICAgICAgICAgICAkY2hpbGRyZW4gPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2goICR2YWwgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkb25lLT50b19kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRvdXRbJGtleV0gPSAkY2hpbGRyZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dFska2V5XSA9ICR2YWw7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogTG9hZCB0aGUgc3BlY2lmaWVkIGNhdGVnb3J5IG9iamVjdCwgZ2l2ZW4gaXQncyBpZC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRpZAogICAgICogQHJldHVybiBjYXRlZ29yeQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZsb2FkKCRpZCkKICAgIHsKICAgICAgICAkaWQgPSAoaW50KSRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oIkludmFsaWQgaWQgcGFzc2VkIHRvICIuX19NRVRIT0RfXyk7CgogICAgICAgICRjYXRzID0gc2VsZjo6Z2V0X2FsbCgpOwogICAgICAgIGlmKCBpc3NldCgkY2F0c1skaWRdKSApIHJldHVybiAkY2F0c1skaWRdOwoKICAgICAgICAvLyBjb3VsZG4ndCBmaW5kIGl0CiAgICAgICAgJG9iaiA9IG51bGw7CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2FkIGFsbCBjYXRlZ29yaWVzIGFzIGEgZmxhdCBhcnJheS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2FsbCgpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXMpICkgcmV0dXJuIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXM7CgogICAgICAgIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXMgPSBhcnJheSgpOwogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuQ0dDT05UQUNUU19DQVRTX1RCTC4nIE9SREVSIEJZIGhpZXJhcmNoeSc7CiAgICAgICAgJHRtcCA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJHJvdyApIHsKICAgICAgICAgICAgICAgIHNlbGY6Ol9mcm9tX2RhdGEoJHJvdyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjYXRlZ29yaWVzIGFzIGEgbGlzdAogICAgICogc3VpdGFibGUgZm9yIHVzZSBpbiBhIGRyb3Bkb3duLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbGlzdCgpCiAgICB7CiAgICAgICAgJHRyZWUgPSBzZWxmOjpnZXRfdHJlZSgpOwogICAgICAgIGlmKCAhY291bnQoJHRyZWUpICkgcmV0dXJuOwogICAgICAgICRsaXN0ID0gYXJyYXkoKTsKCiAgICAgICAgJGZsYXR0ZW4gPSBmdW5jdGlvbigkdHJlZSwmJGxpc3QsJGRlcHRoID0gMCkgdXNlICgmJGZsYXR0ZW4pIHsKICAgICAgICAgICAgZm9yZWFjaCggJHRyZWUgYXMgJG5vZGUgKSB7CiAgICAgICAgICAgICAgICAkbGlzdFskbm9kZVsnaWQnXV0gPSBzdHJfcmVwZWF0KCcmbmJzcDsmbmJzcDsnLCRkZXB0aCkuJG5vZGVbJ25hbWUnXTsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkbm9kZVsnY2hpbGRyZW4nXSkgJiYgY291bnQoJG5vZGVbJ2NoaWxkcmVuJ10pICkgewogICAgICAgICAgICAgICAgICAgICRmbGF0dGVuKCRub2RlWydjaGlsZHJlbiddLCRsaXN0LCRkZXB0aCsxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgoKICAgICAgICAkZmxhdHRlbigkdHJlZSwkbGlzdCk7CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjYXRlZ29yaWVzIGFzIGEgdHJlZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3RyZWUoKQogICAgewogICAgICAgICRsaXN0ID0gc2VsZjo6Z2V0X2FsbCgpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGxpc3QpIHx8IGNvdW50KCRsaXN0KSA9PSAwICkgcmV0dXJuOwoKICAgICAgICAvLyBjb252ZXJ0IHRoZSBmbGF0IGxpc3QgaW50byBhIHRyZWUuCiAgICAgICAgLy8gYXNzdW1lIGl0J3Mgc29ydGVkIGJ5IGhpZXJhcmNoeS4KCiAgICAgICAgJGdldF90cmVlID0gZnVuY3Rpb24oJHBhcmVudF9pZCA9IC0xLCAkZGVwdGggPSAwKSB1c2UgKCRsaXN0LCYkZGF0YSwmJGdldF90cmVlKSB7CiAgICAgICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkbGlzdCBhcyAkb25lICkgewogICAgICAgICAgICAgICAgaWYoICRvbmVbJ3BhcmVudF9pZCddICE9ICRwYXJlbnRfaWQgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkdG1wID0gJGdldF90cmVlKCRvbmVbJ2lkJ10sJGRlcHRoKzEpOwogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0bXApICYmIGNvdW50KCR0bXApICkgJG9uZVsnY2hpbGRyZW4nXSA9ICR0bXA7CiAgICAgICAgICAgICAgICAkb25lWydkZXB0aCddID0gJGRlcHRoOyAvLyB3aWxsIHByb2xseSBmYWlsLgogICAgICAgICAgICAgICAgJG91dFtdID0gJG9uZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJG91dDsKICAgICAgICB9OwoKICAgICAgICAkdHJlZSA9ICRnZXRfdHJlZSgpOwogICAgICAgIHJldHVybiAkdHJlZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdpdmVuIGEgY2F0ZWdvcnkgbmFtZSwgYXR0ZW1wdCB0byBmaW5kIGFuIGlkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfY2F0ZWdvcnlfaWQoJHN0cikKICAgIHsKICAgICAgICAkY2F0cyA9IHNlbGY6OmdldF9hbGwoKTsKICAgICAgICBpZiggIWlzX2FycmF5KCRjYXRzKSB8fCBjb3VudCgkY2F0cykgPT0gMCApIHJldHVybjsKCiAgICAgICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICAgICAgaWYoIChpbnQpICRzdHIgPiAwICkgewogICAgICAgICAgICAvLyBpdCdzIGFscmVhZHkgYW4gaW50CiAgICAgICAgICAgICRpZCA9IChpbnQpJHN0cjsKICAgICAgICAgICAgaWYoIGlzc2V0KCRjYXRzWyRpZF0pICkgcmV0dXJuICRpZDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzdHIgPSB0cmltKCRzdHIpOwogICAgICAgICAgICBmb3JlYWNoKCAkY2F0cyBhcyAkY2F0aWQgPT4gJGNhdCApIHsKICAgICAgICAgICAgICAgIGlmKCBzdHJwb3MoJGNhdFsnbG9uZ19uYW1lJ10sJHN0cikgIT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2F0WydpZCddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2l2ZW4gYSBjYXRlZ29yeSBpZCwgZ2V0IGl0J3MgbmFtZQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3J5X25hbWUoJGlkKQogICAgewogICAgICAgICRjYXRzID0gc2VsZjo6Z2V0X2FsbCgpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGNhdHMpIHx8IGNvdW50KCRjYXRzKSA9PSAwICkgcmV0dXJuOwogICAgICAgICRpZCA9IChpbnQpICRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCggJGNhdHMgYXMgJGNhdGlkID0+ICRjYXQgKSB7CiAgICAgICAgICAgIGlmKCAkY2F0WydpZCddID09ICRpZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkY2F0WyduYW1lJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjdWxhdGVfaGllcmFyY2h5X3Bvc2l0aW9ucygpCiAgICB7CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CgogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgaWQsIGl0ZW1fb3JkZXIsIG5hbWUgRlJPTSAiLkNHQ09OVEFDVFNfQ0FUU19UQkw7CiAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAgICAgaWYoICEkZGJyZXN1bHQgKSB0aHJvdyBuZXcgXENtc0V4Y2VwdGlvbignU1FMIEVycm9yOiAnLiRkYi0+c3FsLicgLS0gJy4kZGItPkVycm9yTXNnKCkpOwogICAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSAiIjsKICAgICAgICAgICAgJGN1cnJlbnRfbG9uZ19uYW1lID0gIiI7CiAgICAgICAgICAgICRjb250ZW50X2lkID0gJHJvd1snaWQnXTsKICAgICAgICAgICAgJGN1cnJlbnRfcGFyZW50X2lkID0gJHJvd1snaWQnXTsKICAgICAgICAgICAgJGNvdW50ID0gMDsKCiAgICAgICAgICAgIHdoaWxlICgkY3VycmVudF9wYXJlbnRfaWQgPiAwKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIGlkLCBpdGVtX29yZGVyLCBuYW1lLCBwYXJlbnRfaWQgRlJPTSAiLkNHQ09OVEFDVFNfQ0FUU19UQkwuIiBXSEVSRSBpZCA9ID8iOwogICAgICAgICAgICAgICAgJHJvdzIgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRjdXJyZW50X3BhcmVudF9pZCkpOwogICAgICAgICAgICAgICAgaWYgKCRyb3cyKSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uID0gc3RyX3BhZCgkcm93MlsnaXRlbV9vcmRlciddLCA1LCAnMCcsIFNUUl9QQURfTEVGVCkgLiAiLiIgLiAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbG9uZ19uYW1lID0gJHJvdzJbJ25hbWUnXSAuICcgfCAnIC4gJGN1cnJlbnRfbG9uZ19uYW1lOwogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9ICRyb3cyWydwYXJlbnRfaWQnXTsKICAgICAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9IC0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbikgPiAwKSB7CiAgICAgICAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSBzdWJzdHIoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAwLCBzdHJsZW4oJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uKSAtIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RybGVuKCRjdXJyZW50X2xvbmdfbmFtZSkgPiAwKSAkY3VycmVudF9sb25nX25hbWUgPSBzdWJzdHIoJGN1cnJlbnRfbG9uZ19uYW1lLCAwLCBzdHJsZW4oJGN1cnJlbnRfbG9uZ19uYW1lKSAtIDMpOwoKICAgICAgICAgICAgJHF1ZXJ5ID0gIlVQREFURSAiLkNHQ09OVEFDVFNfQ0FUU19UQkwuIiBTRVQgaGllcmFyY2h5ID0gPywgbG9uZ19uYW1lID0gPyBXSEVSRSBpZCA9ID8iOwogICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAkY3VycmVudF9sb25nX25hbWUsICRjb250ZW50X2lkKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIGRpZSgkZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHBhbmQgYSBjYXRlZ29yeSBpZCBpbnRvIGl0IGFuZCBpdHMgY2hpbGRyZW4uCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhwYW5kX2NhdGVnb3J5KCRjYXRpZCkKICAgIHsKICAgICAgICAkY2F0aWQgPSAoaW50KSAkY2F0aWQ7CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgaWYoICRjYXRpZCA8IDEgKSB7CiAgICAgICAgICAgIC8vIGFsbCBjYXRlZ29yaWVzCiAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGlkIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgT1JERVIgQlkgaGllcmFyY2h5JzsKICAgICAgICAgICAgJG91dCA9ICRkYi0+R2V0Q29sKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkY2F0ID0gc2VsZjo6bG9hZCgkY2F0aWQpOwogICAgICAgICAgICBpZiggJGNhdCApIHsKICAgICAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGlkIEZST00gJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgV0hFUkUgaGllcmFyY2h5IExJS0UgPyc7CiAgICAgICAgICAgICAgICAkb3V0ID0gJGRiLT5HZXRDb2woJHNxbCxhcnJheSgkY2F0WydoaWVyYXJjaHknXS4nJScpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3QgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY29udGFjdCBoYXMgbnVtZXJvdXMgcHJvcGVydGllcyAoZnVsbCBuYW1lLCBuaWNrbmFtZSwgdGl0bGUsIGNvbXBhbnksIGRpdmlzaW9uLCByb2xlCiAqIGNhbiBiZWxvbmcgdG8gemVybyBvciBtb3JlIGNhdGVnb3JpZXMgKHdoaWNoIGNhbiBiZSBuZXN0ZWQpCiAqIGFuZCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBvYmplY3RzCiAqICAgIHNvbWUgb2JqZWN0cyAobmFtZSkgY2FuIG9ubHkgZXhpc3Qgb25jZQogKiAgICBvdGhlciBvYmplY3RzIGNhbiBleGlzdCBtdWx0aXBsZSB0aW1lcwogKiAgICAgIHRoZXNlIG9iamVjdHMgZWFjaCBoYXZlIGEgbGFiZWwKICogICAgICBhbmQgY2FuIGJlIHByZWZlcnJlZAogKiBuYW1lczoKICogICBpZiBhIGZ1bGxuYW1lIGlzIHNldCwgaXQgaXMgdXNlZCBhcyB0aGUgZGlzcGxheSBuYW1lLgogKiAgIGVsc2UgaWYgbmlja25hbWUgaXMgc2V0LCBpdCBpcyB1c2VkIGFzIHRoZSBkaXNwbGF5IG5hbWUKICogICBlbHNlIGlmIGEgbmFtZSBvYmplY3QgZXhpc3RzLCBpdCBpcyBmb3JtYXR0ZWQgYW5kIHVzZWQgYXMgdGhlIGRpc3BsYXkgbmFtZQogKiBwcmVmZXJyZWQ6CiAqICAgaWYgbm8gb2JqZWN0IG9mIGEgY2VydGFpbiB0eXBlIGlzIHNldCBhcyAncHJlZmVycmVkJyB0aGVuIHRoZSBmaXJzdCBvYmplY3QKICogICBvZiB0aGF0IHR5cGUgaXMgcmV0dXJuZWQuICBNdWx0aXBsZSBvYmplY3RzIG9mIGEgY2VydGFpbiB0eXBlIGNhbiBiZSBwcmVmZXJyZWQKICogICBidXQgb25seSB0aGUgZmlyc3Qgb25lIHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBhc2tpbmcgZm9yIHRoZSBwcmVmZXJyZWQgb2JqZWN0IG9mIGEgdHlwZS4KICogbGFiZWxzCiAqICAgdXNlciBkZWZpZW5kLCBidXQgc3lzdGVtIG1heSBjcmVhdGUgbnVtZXJvdXMgc3RhbmRhcmQgbGFiZWxzIChpLmU6IGhvbWUvd29yaykKICogICBsYWJlbHMgY2Fubm90IGJlIGVtcHR5LgogKgogKiBOb3RlOiBUaGlzIGNsYXNzIChhbmQgaXQncyBkZXBlbmRlbnQgY2xhc3NlcykgdXNlIGhlYXZ5IHVzZSBvZiBleGNlcHRpb25zLgogKi8KY2xhc3MgY29udGFjdAp7CiAgICBjb25zdCBMQUJFTF9OQU1FID0gJ25hbWUnOwogICAgY29uc3QgU1RBVFVTX0RJU0FCTEVEID0gJ2Rpc2FibGVkJzsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgnaWQnPT5udWxsLCdzdGF0dXMnPT5udWxsLCdndWlkJz0+bnVsbCwnZmV1X3VpZCc9Pm51bGwsJ2Z1bGxuYW1lJz0+bnVsbCwnbmlja25hbWUnPT5udWxsLCdjb21wYW55Jz0+bnVsbCwndGl0bGUnPT5udWxsLCdyb2xlJz0+bnVsbCwnbm90ZSc9Pm51bGwsJ2ltYWdlJz0+bnVsbCwnbG9nbyc9Pm51bGwpOwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfb2JqZWN0cyA9IGFycmF5KCk7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9jYXRlZ29yaWVzID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9IG51bGw7CiAgICAgICAgJHRoaXMtPl9kYXRhWydndWlkJ10gPSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIG9iamVjdCB0byB0aGUgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0X3N1YiAkb2JqZWN0IFRoZSBvYmplY3QgdG8gYWRkIChtdXN0IGJlIGEgdmFsaWQgb2JqZWN0KQogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfb2JqZWN0KGNvbnRhY3Rfc3ViICRvYmplY3QpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGNsYXNzID0gZ2V0X2NsYXNzKCRvYmplY3QpOwogICAgICAgICAgICAkb2JqZWN0LT52YWxpZGF0ZSgpOwoKICAgICAgICAgICAgLy8gYWxsb3cgb25seSBvbmUgbmFtZSBvYmplY3QKICAgICAgICAgICAgaWYoICEkb2JqZWN0LT5hbGxvd3NfbXVsdGlwbGUoKSAmJiAkdGhpcy0+Y291bnRfb2JqZWN0cygkY2xhc3MpID4gMCApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdDYW5ub3QgYWRkIGEgc2Vjb25kIG9iamVjdCBvZiB0eXBlICcuJGNsYXNzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICRvYmplY3QtPmlzX3ByZWZlcnJlZCgpICkgewogICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIHByZWZlcnJlZCBvYmplY3QsIHNldCBhbGwgdGhlIG90aGVyIG9iamVjdHMgb2YgdGhpcyBjbGFzcyB0byBiZSBub24gcHJlZmVycmVkLgogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fb2JqZWN0cykgJiYgY291bnQoJHRoaXMtPl9vYmplY3RzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X29iamVjdHMgYXMgJG9iaiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoICRvYmplY3QtPmdldF9jbGFzcygpID09ICRjbGFzcyApICRvYmotPnNldF9wcmVmZXJyZWQoRkFMU0UpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPl9vYmplY3RzW10gPSAkb2JqZWN0OwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ291bnQgdGhlIG51bWJlciBvZiBvYmplY3RzIG9mIGEgY2VydGFpbiBjbGFzcwogICAgICoKICAgICAqIEBhY2Nlc3MgcHJvdGVjdGVkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc19uYW1lCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRfb2JqZWN0cygkY2xhc3NfbmFtZSkKICAgIHsKICAgICAgICAkY2xhc3NfbmFtZSA9IHRyaW0oKHN0cmluZykkY2xhc3NfbmFtZSk7CiAgICAgICAgaWYoICEkY2xhc3NfbmFtZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0NsYXNzIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJG91dCA9IDA7CgogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAkb2JqICkgewogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF9jbGFzcygpID09ICRjbGFzc19uYW1lICkgJG91dCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbiBvYmplY3Qgb2YgYSBzcGVjaWZpYyBjbGFzcyB3aXRoIGEgc3BlY2lmaWMgbGFiZWwKICAgICAqCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NfbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9vYmplY3QoJGNsYXNzX25hbWUsJGxhYmVsKQogICAgewogICAgICAgICRjbGFzc19uYW1lID0gdHJpbSgoc3RyaW5nKSRjbGFzc19uYW1lKTsKICAgICAgICBpZiggISRjbGFzc19uYW1lICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignQ2xhc3MgbmFtZSBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fb2JqZWN0cykgJiYgY291bnQoJHRoaXMtPl9vYmplY3RzKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmogKSB7CiAgICAgICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgJiYgJG9iai0+Z2V0X2xhYmVsKCkgPT0gJGxhYmVsICkgcmV0dXJuICRvYmo7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gdG9kbzogdGhyb3cgZXhjZXB0aW9uID8/CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBhbGwgb2YgdGhlIG9iamVjdHMgb2YgYSBjZXJ0YWluIHR5cGUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc19uYW1lCiAgICAgKiBAcmV0dXJuIGNvbnRhY3Rfc3ViW10KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9vYmplY3RzX2J5X3R5cGUoJGNsYXNzX25hbWUpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fb2JqZWN0cykgJiYgY291bnQoJHRoaXMtPl9vYmplY3RzKSApIHsKICAgICAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAkb2JqICkgewogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF9jbGFzcygpID09ICRjbGFzc19uYW1lICkgJG91dFtdID0gJG9iajsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggY291bnQoJG91dCkgKSByZXR1cm4gJG91dDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmUgYW4gb2JqZWN0IGZyb20gdGhlIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc19uYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfb2JqZWN0KCRjbGFzc19uYW1lLCRsYWJlbCkKICAgIHsKICAgICAgICAkY2xhc3NfbmFtZSA9IHRyaW0oKHN0cmluZykkY2xhc3NfbmFtZSk7CiAgICAgICAgaWYoICEkY2xhc3NfbmFtZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0NsYXNzIG5hbWUgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgIC8vIGRpc2FsbG93IHJlbW92aW5nIGEgJ25hbWUnIG9iamVjdCBpZiB3ZSBoYXZlIG9uZQogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fb2JqZWN0cyk7ICRpKysgKSB7CiAgICAgICAgICAgICRvYmogPSAkdGhpcy0+X29iamVjdHNbJGldOwogICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgJiYgJG9iai0+Z2V0X2xhYmVsKCkgPT0gJGxhYmVsICkgYXJyYXlfc3BsaWNlKCR0aGlzLT5fb2JqZWN0cywkaSwxKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHByZWZlcnJlZCBvYmplY3Qgb2YgYSBjZXJ0YWluIGNsYXNzCiAgICAgKgogICAgICogTXVsdGlwbGUgb2JqZWN0cyBvZiBhIGNsYXNzIGNhbiBiZSBwcmVmZXJyZWQuICBPciBub25lLgogICAgICogSWYgbm8gb2JqZWN0cyBvZiB0aGUgc3BlY2lmaWVkIGNsYXNzIGFyZSBwcmVmZXJyZWQsIHRoZSBmaXJzdCBvYmplY3Qgb2YgdGhlIHNwZWNpZmllZAogICAgICogY2xhc3Mgd2lsbCBiZSByZXR1cm5lZC4KICAgICAqCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NfbmFtZQogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9vYmplY3QoJGNsYXNzX25hbWUpCiAgICB7CiAgICAgICAgJGNsYXNzX25hbWUgPSB0cmltKChzdHJpbmcpJGNsYXNzX25hbWUpOwogICAgICAgIGlmKCAhJGNsYXNzX25hbWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdDbGFzcyBuYW1lIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAvLyBnZXQgdGhlIHByZWZlcnJlZCBvYmplY3Qgb2YgYSBzcGVjaWZpYyB0eXBlCiAgICAgICAgLy8gd2UgcmVtZW1iZXIgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiB0aGUgc3BlY2lmaWVkIGNsYXNzCiAgICAgICAgLy8gaWYgbm8gb2JqZWN0cyBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMgcHJlZmVycmVkCiAgICAgICAgLy8gdGhlbiB3ZSByZXR1cm4gdGhlIGZpcnN0IG9iamVjdCBvZiB0aGF0IGNsYXNzIHRoYXQgd2UgZmluZC4KICAgICAgICAkaWR4X2ZpcnN0ID0gLTE7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9vYmplY3RzKTsgJGkrKyApIHsKICAgICAgICAgICAgJG9iaiA9ICR0aGlzLT5fb2JqZWN0c1skaV07CiAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfY2xhc3MoKSA9PSAkY2xhc3NfbmFtZSApIHsKICAgICAgICAgICAgICAgIGlmKCAkaWR4X2ZpcnN0IDwgMCApICRpZHhfZmlyc3QgPSAkaTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5pc19wcmVmZXJyZWQoKSApIHJldHVybiAkb2JqOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAkaWR4X2ZpcnN0ID4gLTEgKSByZXR1cm4gJHRoaXMtPl9vYmplY3RzWyRpZHhfZmlyc3RdOwogICAgICAgIC8vIHRvZG86IHRocm93IGV4Y2VwdGlvbiA/PwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwcmVmZXJyZWQgZmxhZyBvbiBhbiBvYmplY3QgKGlkZW50aWZpZWQgYnkgY2xhc3MgYW5kIGxhYmVsKSB0byB0cnVlCiAgICAgKiBhdXRvbWF0aWNhbGx5IHNldHMgYWxsIG90aGVyIG9iamVjdHMgb2YgdGhhdCBjbGFzcyB0byBiZSBub24tcHJlZmVycmVkCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NfbmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ByZWZlcnJlZCgkY2xhc3NfbmFtZSwkbGFiZWwpCiAgICB7CiAgICAgICAgJGNsYXNzX25hbWUgPSB0cmltKChzdHJpbmcpJGNsYXNzX25hbWUpOwogICAgICAgIGlmKCAhJGNsYXNzX25hbWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdDbGFzcyBuYW1lIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAvLyBzZXQgYWxsIHRoZSBvYmplY3RzIHdpdGggdGhpcyBjbGFzcyB0byBiZSBub3QgcHJlZmVycmVkCiAgICAgICAgJGNsYXNzX25hbWUgPSB0cmltKChzdHJpbmcpJGNsYXNzX25hbWUpOwogICAgICAgICRkb25lID0gRkFMU0U7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9vYmplY3RzKTsgJGkrKyApIHsKICAgICAgICAgICAgJG9iaiA9JiAkdGhpcy0+X29iamVjdHNbJGldOwogICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgKSB7CiAgICAgICAgICAgICAgICAkb2JqLT5zZXRfcHJlZmVycmVkKEZBTFNFKTsKICAgICAgICAgICAgICAgIGlmKCAhJGRvbmUgJiYgJG9iai0+Z2V0X2xhYmVsKCkgPT0gJGxhYmVsICkgewogICAgICAgICAgICAgICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoVFJVRSk7CiAgICAgICAgICAgICAgICAgICAgJGRvbmUgPSBUUlVFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9vYmplY3QoJGNsYXNzX25hbWUsJGxhYmVsKTsKICAgICAgICBpZiggJG9iaiApICRvYmotPnNldF9wcmVmZXJyZWQoKTsKICAgIH0KCiAgICAvLwogICAgLy8gYmFzaWMgZGlyZWN0IGFjY2Vzc29ycy9zZXR0ZXJzCiAgICAvLwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBpZCBvZiB0aHNpIGNvbnRhY3QKICAgICAqIFRoZSBpZCBvZiBhIG5ldyAodW5zYXZlZCkgb2JqZWN0IGlzIG51bGwKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2lkKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnaWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgRkVVIHVpZCBhdHRhY2hlZCB0byB0aGlzIGNvbnRhY3QgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2ZldV91aWQoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdmZXVfdWlkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NvY2lhdGUgYW4gRkVVIHVpZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqIEEgMCBvciBuZWdhdGl2ZSB2YWx1ZSB3aWxsIHJlbW92ZSB0aGUgYXNzb2NpYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkdWlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZmV1X3VpZCgkdWlkKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgIGlmKCAkdWlkIDwgMSApICR1aWQgPSBudWxsOwogICAgICAgICR0aGlzLT5fZGF0YVsnZmV1X3VpZCddID0gJHVpZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZ3VpZCBmb3IgdGhpcyBjb250YWN0CiAgICAgKiBUaGUgZ3VpZCBpcyBhIHVuaXF1ZSwgcmFuZG9tbHkgZ2VuZXJhdGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBjb250YWN0LgogICAgICogVHlwaWNhbGx5IHRoZSBndWlkIGlzIHVzZWQgaW4gZXhwb3J0IGZvcm1hdHMgbGlrZSB2Y2FyZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZ3VpZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2d1aWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgR1VJRCBmb3IgdGhpcyBjb250YWN0LgogICAgICogVGhlIEdVSUQgbXVzdCBiZSB1bmlxdWUgdG8gYWxsIHVzZXJzLiAgSWYgbm9uZSBpcyBzcGVjaWZpZWQsIG9uIHNhdmUKICAgICAqIGEgdW5pcWUgR1VJRCB3aWxsIGJlIGdlbmVyYXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9ndWlkKCRzdHIpCiAgICB7CiAgICAgICAgJHN0ciA9IHRyaW0oJHN0cik7CiAgICAgICAgJHRoaXMtPl9kYXRhWydndWlkJ10gPSAkc3RyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBmdWxsIG5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICogVGhlIGZ1bGwgbmFtZSBtYXkgbm90IGJlIHNldC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Z1bGxuYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnZnVsbG5hbWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZnVsbCBuYW1lIGZvciB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2Z1bGxuYW1lKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydmdWxsbmFtZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaW1hZ2UgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICogVGhlIGltYWdlIGlzIHN0b3JlZCBhcyBhIGRhdGEgdXJpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9pbWFnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2ltYWdlJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGltYWdlIGZvciB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwgQSBkYXRhIHVyaSB0byBhbiBpbWFnZS4uLiB0aGUgZGF0YSB1cmkgbXVzdCBmaXQgd2l0aGluIDY0awogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfaW1hZ2UoJHZhbCkKICAgIHsKICAgICAgICAkdmFsID0gdHJpbSgkdmFsKTsKICAgICAgICBpZiggISR2YWwgKSB7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaW1hZ2UnXSA9ICR2YWw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0ZXN0ID0gc3Vic3RyKCR2YWwsMCwxMCk7CiAgICAgICAgaWYoICR0ZXN0ICE9ICdkYXRhOmltYWdlJyApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ltYWdlIHZhbHVlIHNwZWNpZmllZCBpcyBub3QgYSBkYXRhIFVSSTogJy4kdGVzdCk7CiAgICAgICAgaWYoIHN0cmxlbigkdmFsKSA+IDY1NTM1ICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignSW1hZ2UgdmFsdWUgc3BlY2lmaWVkIGlzIHRvbyBsYXJnZScpOwogICAgICAgICR0aGlzLT5fZGF0YVsnaW1hZ2UnXSA9ICR2YWw7CiAgICB9CgoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb2dvIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqIFRoZSBpbWFnZSBpcyBzdG9yZWQgYXMgYSBkYXRhIHVyaS4uIG1heGltdW0gNjRrCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb2dvKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnbG9nbycpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb2dvIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqIFRoZSBsb2dvIGlzIHN0b3JlZCBhcyBhIGRhdGEgdXJpLi4gbWF4aW11bSA2NGsKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9sb2dvKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgaWYoICEkdmFsICkgewogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2xvZ28nXSA9ICR2YWw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmKCAhc3RhcnRzd2l0aCgkdmFsLCdkYXRhOicpICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTG9nbyB2YWx1ZSBzcGVjaWZpZWQgaXMgbm90IGEgZGF0YSBVUkk6ICcuJHZhbCk7CiAgICAgICAgaWYoIHN0cmxlbigkdmFsKSA+IDY1NTM1ICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTG9nbyB2YWx1ZSBzcGVjaWZpZWQgaXMgdG9vIGxhcmdlJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydsb2dvJ10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuaWNrbmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9uaWNrbmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ25pY2tuYW1lJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG5pY2tuYW1lIChvciBlcmFzZSBpdCkgZm9yIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbmlja25hbWUoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ25pY2tuYW1lJ10gPSB0cmltKChzdHJpbmcpICR2YWwpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBjb21wYW55IG5hbWUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29tcGFueSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2NvbXBhbnknKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCAob3IgZXJhc2UpIHRoZSBjb21wYW55IG5hbWUgZm9yIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfY29tcGFueSgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnY29tcGFueSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgdGl0bGUgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdGl0bGUoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCd0aXRsZScpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IChvciBlcmFzZSkgdGhlIHRpdGxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3RpdGxlKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd0aXRsZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcm9sZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9yb2xlKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwncm9sZScpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IChvciBlcmFzZSkgdGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3JvbGUoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3JvbGUnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHByZWZpeCBUaGUgcHJlZml4IChpLmU6IE1yLCBNcnMuIERyLCBldGMpCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaXJzdCAgVGhlIGZpcnN0IG5hbWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1pZGRsZSBUaGUgbWlkZGxlIG5hbWUgKG9wdGlvbmFsKQogICAgICogQHBhcmFtIHN0cmluZyAkbGFzdCAgIFRoZSBzdXJuYW1lIChvcHRpb25hbCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN1ZmZpeCBUaGUgc3VmZml4IChpLmU6IFBIRCwgQi5TLiwgUC5HZW8pCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9uYW1lKCRwcmVmaXgsJGZpcnN0LCRtaWRkbGUsJGxhc3QsJHN1ZmZpeCkKICAgIHsKICAgICAgICAkYWRkaW5nID0gZmFsc2U7CiAgICAgICAgJHRtcCA9ICR0aGlzLT5nZXRfb2JqZWN0c19ieV90eXBlKCdjb250YWN0X25hbWUnKTsKICAgICAgICAkbmFtZSA9IG51bGw7CiAgICAgICAgaWYoIGNvdW50KCR0bXApICkgewogICAgICAgICAgICAkbmFtZSA9ICR0bXBbMF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkbmFtZSA9IG5ldyBjb250YWN0X25hbWUoJHRoaXMpOwogICAgICAgICAgICAkYWRkaW5nID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJG5hbWUtPnNldF9wcmVmaXgoJHByZWZpeCk7CiAgICAgICAgJG5hbWUtPnNldF9maXJzdCgkZmlyc3QpOwogICAgICAgICRuYW1lLT5zZXRfbWlkZGxlKCRtaWRkbGUpOwogICAgICAgICRuYW1lLT5zZXRfbGFzdCgkbGFzdCk7CiAgICAgICAgJG5hbWUtPnNldF9zdWZmaXgoJHN1ZmZpeCk7CiAgICAgICAgJG5hbWUtPnNldF9wcmVmZXJyZWQoVFJVRSk7CiAgICAgICAgJG5hbWUtPnNldF9sYWJlbChzZWxmOjpMQUJFTF9OQU1FKTsKICAgICAgICBpZiggJGFkZGluZyApICR0aGlzLT5hZGRfb2JqZWN0KCRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbmFtZSBvYmplY3QgKGlmIGFueSkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9uYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9wcmVmZXJyZWRfb2JqZWN0KCdjb250YWN0X25hbWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEVyYXNlIHRoZSBuYW1lIG9iamVjdCAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250YWN0CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfbmFtZSgpCiAgICB7CiAgICAgICAgJGNsYXNzX25hbWUgPSAnY29udGFjdF9uYW1lJzsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkdGhpcy0+X29iamVjdHMpOyAkaSsrICkgewogICAgICAgICAgICBpZiggJHRoaXMtPl9vYmplY3RzWyRpXS0+Z2V0X2NsYXNzKCkgPT0gJGNsYXNzX25hbWUgKSB1bnNldCgkdGhpcy0+X29iamVjdHNbJGldKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBkaXNwbGF5YWJsZSBuYW1lCiAgICAgKiBJZiBhIG5hbWUgb2JqZWN0IGV4aXN0cywgaXQncyBmb3JtYXR0ZWQgdmFsdWUgaXMgcmV0dXJuZWQKICAgICAqIG90aGVyd2lzZSwgdGhlIGZ1bGwgbmFtZSwgb3Igbmlja25hbWUgaXMgcmV0dXJuZWQgd2hpY2hldmVyIG9jY3VycmVkIGZpcnN0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9kaXNwbGF5X25hbWUoKQogICAgewogICAgICAgICRmbiA9ICR0aGlzLT5nZXRfZnVsbG5hbWUoKTsKICAgICAgICBpZiggJGZuICkgcmV0dXJuICRmbjsKICAgICAgICAkbm4gPSAkdGhpcy0+Z2V0X25pY2tuYW1lKCk7CiAgICAgICAgaWYoICRubiApIHJldHVybiAkbm47CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfbmFtZSgpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF9mb3JtYXR0ZWQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIGFsaWFzIGZvciBnZXRfZ3VpZCgpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF91dWlkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9ndWlkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHN0YXR1cyAoaWYgYW55KSBmb3IgdGhpcyBjb250YWN0CiAgICAgKiBhIG5vbiBlbXB0eSBzdGF0dXMgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbnRhY3QgaXMgZGlzYWJsZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3N0YXR1cygpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ3N0YXR1cycpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0cyB0aGlzIGNvbnRhY3QgdG8gZGlzYWJsZWQuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXNhYmxlKCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gc2VsZjo6U1RBVFVTX0RJU0FCTEVEOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBpZiB0aGUgY29udGFjdCBpcyBkaXNhYmxlZAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNfZW5hYmxlZCgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfc3RhdHVzKCkgIT0gc2VsZjo6U1RBVFVTX0RJU0FCTEVEICkgcmV0dXJuIFRSVUU7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IChvciBlcmFzZSkgdGhlIG5vdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdAogICAgICogTWF4aW11bSBzaXplIGlzIDY0awogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbm90ZSgkdmFsKQogICAgewogICAgICAgICR2YWwgPSB0cmltKChzdHJpbmcpJHZhbCk7CiAgICAgICAgaWYoIHN0cmxlbigkdmFsKSA+IDY1NTM1ICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignVGhlIG1heGltdW0gc2l6ZSBvZiBhIG5vdGUgaXMgNjRrJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydub3RlJ10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBub3RlIChpZiBhbnkpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25vdGUoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdub3RlJyk7CiAgICB9CgogICAgLy8gZW1haWwgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGFuIGVtYWlsIGFkZHJlc3MgdG8gdGhpcyBjb250YWN0CiAgICAgKgogICAgICogTXVsdGlwbGUgZW1haWwgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGxhYmVsIGFyZSBwZXJtaXR0ZWQuCiAgICAgKiBhbmQgbXVsdGlwbGUgcHJlZmVycmVkIGFyZSBwZXJtaXR0ZWQgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGVtYWlsIFRoZSBlbWFpbCBhZGRyZXNzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbCBUaGUgbGFiZWwKICAgICAqIEBwYXJhbSBib29sICRwcmVmZXJyZWQgV2V0aGVyIHRoaXMgaXMgdGhlIHByZWZlcnJlZCBlbWFpbCBhZGRyZXNzCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZF9lbWFpbCgkZW1haWwsJGxhYmVsLCRwcmVmZXJyZWQgPSBGQUxTRSkKICAgIHsKICAgICAgICAkZW1haWwgPSB0cmltKChzdHJpbmcpJGVtYWlsKTsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRlbWFpbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0VtYWlsIGFkZHJlc3MgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X2VtYWlsKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfdmFsdWUoJGVtYWlsKTsKICAgICAgICAkb2JqLT5zZXRfbGFiZWwoJGxhYmVsKTsKICAgICAgICAkb2JqLT5zZXRfcHJlZmVycmVkKChib29sKSRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IGFuIGVtYWlsIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWRlIGxhYmVsLgogICAgICogVGhpcyBtZXRob2Qgd2lsbCBmaXJzdCBzZWFyY2ggZW1haWwgb2JqZWN0cyBmb3IgdGhlIHNhbWUgbGFiZWwuCiAgICAgKiBpZiBhIG1hdGNoIGlzIGZvdW5kLCBpdCdzIHZhbHVlIGFuZCBwcmVmZXJyZWQgZmxhZyBhcmUgdXBkYXRlZC4KICAgICAqIGlmIG5vIG1hdGNoIGlzIGZvdW5kLCBhIG5ldyBvYmplY3QgaXMgY3JlYXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICRwcmVmZXJyZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGluc2VydF9hZGRfZW1haWwoJHZhbHVlLCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICAkdmFsdWUgPSB0cmltKChzdHJpbmcpJHZhbHVlKTsKICAgICAgICBpZiggISR2YWx1ZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ1ZhbHVlIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAkY2xhc3NfbmFtZSA9ICdjb250YWN0X2VtYWlsJzsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9vYmplY3RzKSAmJiBjb3VudCgkdGhpcy0+X29iamVjdHMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X29iamVjdHMgYXMgJiRvYmogKSB7CiAgICAgICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgIT0gJGNsYXNzX25hbWUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfbGFiZWwoKSAhPSAkbGFiZWwgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgbWF0Y2gKICAgICAgICAgICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIG5vIG1hdGNoZXMgZm91bmQKICAgICAgICAkdGhpcy0+YWRkX2VtYWlsKCR2YWx1ZSwkbGFiZWwsJHByZWZlcnJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gZW1haWwgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9lbWFpbCgkbGFiZWwpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfZW1haWwnLCRsYWJlbCk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X2FkZHJlc3MoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgcHJlZmVycmVkIGVtYWlsIG9iamVjdCAoaWYgYW55KQogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9lbWFpbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9lbWFpbF9vYmooKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9vYmplY3QoJ2NvbnRhY3RfZW1haWwnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgcHJlZmVycmVkIGVtYWlsIGFkZHJlc3MgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9lbWFpbCgpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9lbWFpbCcpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFsbCBvZiB0aGUgZW1haWwgb2JqZWN0cyAoaWYgYW55KQogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9lbWFpbFtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZW1haWxfb2JqZWN0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfb2JqZWN0c19ieV90eXBlKCdjb250YWN0X2VtYWlsJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmUgYWxsIHRoZSBlbWFpbCBhZGRyZXNzZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX2VtYWlsKCRsYWJlbCkKICAgIHsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X2VtYWlsJywkbGFiZWwpOwogICAgfQoKICAgIC8vIHVybCBtZXRob2RzCgogICAgLyoqCiAgICAgKiBBZGQgYSB1cmwgdG8gdGhlIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1cmwKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZmVycmVkCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZF91cmwoJHVybCwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICR1cmwgPSB0cmltKChzdHJpbmcpJHVybCk7CiAgICAgICAgaWYoICEkdXJsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignVVJMIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X3VybCgkdGhpcyk7CiAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR1cmwpOwogICAgICAgICRvYmotPnNldF9sYWJlbCgkbGFiZWwpOwogICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBmaXJzdCBVUkwgb2JqZWN0IGluIHRoZSBsaXN0IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCiAgICAgKiBJZiBubyBVUkwgb2JqZWN0cyBhcmUgZm91bmQsIGluc2VydCBvbmUgYXMgYSBwcmVmZXJyZWQgVVJMLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGluc2VydF9zZXRfdXJsKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSB0cmltKChzdHJpbmcpICR2YWx1ZSk7CiAgICAgICAgaWYoICEkdmFsdWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdWYWx1ZSBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGNsYXNzX25hbWUgPSAnY29udGFjdF91cmwnOwogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAmJG9iaiApIHsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfY2xhc3MoKSAhPSAkY2xhc3NfbmFtZSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5hZGRfdXJsKCR2YWx1ZSwndW5rbm93bicsMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0IHVybCB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF91cmwoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfb2JqZWN0KCdjb250YWN0X3VybCcsJGxhYmVsKTsKICAgICAgICBpZiggJG9iaiApIHJldHVybiAkb2JqLT5nZXRfdmFsdWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcHJlZmVycmVkIHVybCAoaWYgYW55KSB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF91cmwoKQogICAgewogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9vYmplY3QoJ2NvbnRhY3RfdXJsJyk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X3ZhbHVlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVSTCBvYmplY3RzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfdXJsW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF91cmxfb2JqZWN0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfb2JqZWN0c19ieV90eXBlKCdjb250YWN0X3VybCcpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFsbCBvZiB0aGUgdXJsIG9iamVjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX3VybCgkbGFiZWwpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW92ZV9vYmplY3QoJ2NvbnRhY3RfdXJsJywkbGFiZWwpOwogICAgfQoKICAgIC8vIGltIG1ldGhvZHMKCiAgICAvKioKICAgICAqIEFkZCBhbiBJTSBvYmplY3QgdG8gdGhlIGNvbnRhY3QKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbSAodGhlIElNIHZhbHVlIChpLmU6IGZhY2Vib29rIHVzZXJuYW1lKSkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAgICRwcmVmZXJyZWQKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkX2ltKCRpbSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICRpbSA9IHRyaW0oKHN0cmluZykkaW0pOwogICAgICAgIGlmKCAhJGltICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignSU0gdmFsdWUgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X2ltKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfY29udGFjdCgkaW0pOwogICAgICAgICRvYmotPnNldF9sYWJlbCgkbGFiZWwpOwogICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSAoZmlyc3QpIElNIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbCAoaWYgYW55KQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2ltKCRsYWJlbCkKICAgIHsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwoKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfaW0nLCRsYWJlbCk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X3ZhbHVlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHByZWZlcnJlZCBJTSBvYmplY3QgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9pbSgpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9pbScpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFsbCBJTSBvYmplY3RzIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZV9pbSgkbGFiZWwpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW92ZV9vYmplY3QoJ2NvbnRhY3RfaW0nLCRsYWJlbCk7CiAgICB9CgogICAgLy8gcGhvbmUgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGEgcGhvbmUgbnVtYmVyIG9iamVjdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIFRoZSB0eXBlIChvbmUgb2Ygdm9pY2UsbXNnLGZheCxtb2JpbGUscGFnZXIsdmlkZW8sc2F0ZWxsaXRlKQogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZmVycmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfcGhvbmUoJHR5cGUsJHZhbHVlLCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJHR5cGUgPSB0cmltKChzdHJpbmcpJHR5cGUpOwogICAgICAgIGlmKCAhJHR5cGUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdQaG9uZSB0eXBlIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CiAgICAgICAgJHZhbHVlID0gdHJpbSgoc3RyaW5nKSR2YWx1ZSk7CiAgICAgICAgaWYoICEkdmFsdWUgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdWYWx1ZSBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X3Bob25lKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfdHlwZSgkdHlwZSk7CiAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgJG9iai0+c2V0X2xhYmVsKCRsYWJlbCk7CiAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgoYm9vbCkgJHByZWZlcnJlZCk7CiAgICAgICAgJHRoaXMtPmFkZF9vYmplY3QoJG9iaik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgYSBwaG9uZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkZSBsYWJlbCBhbmQgdHlwZS4KICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgZmlyc3Qgc2VhcmNoIHBob25lIG9iamVjdHMgZm9yIHRoZSBzYW1lIGxhYmVsIGFuZCB0eXBlCiAgICAgKiBpZiBhIG1hdGNoIGlzIGZvdW5kLCBpdCdzIHZhbHVlIGFuZCBwcmVmZXJyZWQgZmxhZyBhcmUgdXBkYXRlZC4KICAgICAqIGlmIG5vIG1hdGNoIGlzIGZvdW5kLCBhIG5ldyBvYmplY3QgaXMgY3JlYXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlIFRoZSB0eXBlIChvbmUgb2Ygdm9pY2UsbXNnLGZheCxtb2JpbGUscGFnZXIsdmlkZW8sc2F0ZWxsaXRlKQogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZmVycmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbnNlcnRfYWRkX3Bob25lKCR0eXBlLCR2YWx1ZSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICR0eXBlID0gdHJpbSgoc3RyaW5nKSR0eXBlKTsKICAgICAgICBpZiggISR0eXBlICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignUGhvbmUgdHlwZSBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICAkbGFiZWwgPSB0cmltKChzdHJpbmcpJGxhYmVsKTsKICAgICAgICBpZiggISRsYWJlbCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0xhYmVsIGNhbm5vdCBiZSBlbXB0eScpOwogICAgICAgICR2YWx1ZSA9IHRyaW0oKHN0cmluZykkdmFsdWUpOwogICAgICAgIGlmKCAhJHZhbHVlICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignVmFsdWUgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRjbGFzc19uYW1lID0gJ2NvbnRhY3RfcGhvbmUnOwogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAmJG9iaiApIHsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfY2xhc3MoKSAhPSAkY2xhc3NfbmFtZSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF90eXBlKCkgIT0gJHR5cGUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfbGFiZWwoKSAhPSAkbGFiZWwgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgbWF0Y2gKICAgICAgICAgICAgICAgICRvYmotPnNldF9wcmVmZXJyZWQoKGJvb2wpICRwcmVmZXJyZWQpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIG5vIG1hdGNoZXMgZm91bmQKICAgICAgICAkdGhpcy0+YWRkX3Bob25lKCR0eXBlLCR2YWx1ZSwkbGFiZWwsJHByZWZlcnJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0IHBob25lIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Bob25lX29iamVjdCgkbGFiZWwpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfcGhvbmUnLCRsYWJlbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgZmlyc3QgcGhvbmUgb2JqZWN0IG9mIHRoZSBzcGVjaWZpZWQgdHlwZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9waG9uZV9vYmplY3RfYnlfdHlwZSgkdHlwZSkKICAgIHsKICAgICAgICAkdHlwZSA9IHRyaW0oKHN0cmluZykkdHlwZSk7CiAgICAgICAgaWYoICEkdHlwZSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ1R5cGUgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRjbGFzc19uYW1lID0gJ2NvbnRhY3RfcGhvbmUnOwogICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fb2JqZWN0cyBhcyAkb2JqICkgewogICAgICAgICAgICAgICAgaWYoICRvYmotPmdldF9jbGFzcygpID09ICRjbGFzc19uYW1lICYmICRvYmotPmdldF90eXBlKCkgPT0gJHR5cGUgKSByZXR1cm4gJG9iajsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZmlyc3QgcGhvbmUgbnVtYmVyIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbAogICAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGdldHRpbmcgYSBudW1iZXIsIG5vdGUgdGhlIHR5cGUgaXMgbm90IHJldHVybmVkCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcGhvbmUoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3Bob25lX29iamVjdCgkbGFiZWwpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKCiAgICAvKioKICAgICAqIEdldCB0aGUgZmlyc3QgcGhvbmUgbnVtYmVyIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Bob25lX2J5X3R5cGUoJHR5cGUpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfcGhvbmVfb2JqZWN0X2J5X3R5cGUoJHR5cGUpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBwaG9uZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Bob25lX3R5cGUoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3Bob25lX29iamVjdCgkbGFiZWwpOwogICAgICAgIGlmKCAkb2JqICkgcmV0dXJuICRvYmotPmdldF90eXBlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0IHByZWZlcnJlZCBwaG9uZSBvYmplY3QgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3Rfc3ViCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJlZmVycmVkX3Bob25lX29iaigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9waG9uZScpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwcmVmZXJyZWQgcGhvbmUgbnVtYmVyIChpZiBhbnkpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wcmVmZXJyZWRfcGhvbmUoKQogICAgewogICAgICAgICRvYmogPSAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9waG9uZV9vYmooKTsKICAgICAgICBpZiggJG9iaiApIHJldHVybiAkb2JqLT5nZXRfdmFsdWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbGwgb2YgdGhlIHBob25lIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9waG9uZV9vYmplY3RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3RzX2J5X3R5cGUoJ2NvbnRhY3RfcGhvbmUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlbW92ZSBhbGwgcGhvbmUgbnVtYmVycyB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfcGhvbmUoJGxhYmVsKQogICAgewogICAgICAgICRsYWJlbCA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgICAgIGlmKCAhJGxhYmVsICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTGFiZWwgY2Fubm90IGJlIGVtcHR5Jyk7CgogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X3Bob25lJywkbGFiZWwpOwogICAgfQoKICAgIC8vIGFkZHJlc3MgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGFuIGFkZHJlc3Mgb2JqZWN0IG1hbnVhbGx5LgogICAgICogQW55IG9mIHRoZSB2YWx1ZXMgbWF5IGJlIGVtcHR5IChleGNlcHQgbGFiZWwpLiAgSG93ZXZlciwgYXQgbGVhc3Qgb25lIHZhbHVlIG11c3QKICAgICAqIGJlIHNwZWNpZmllZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJlZXQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvYm94CiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaXR5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdGF0ZQogICAgICogQHBhcmFtIHN0cmluZyAkemlwCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb3VudHJ5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHBhcmFtIGJvb2wgICAkcHJlZmVycmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfYWRkcmVzcygkc3RyZWV0LCRwb2JveCwkY2l0eSwkc3RhdGUsJHppcCwkY291bnRyeSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICRvYmogPSBuZXcgY29udGFjdF9hZGRyZXNzKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfc3RyZWV0KCRzdHJlZXQpOwogICAgICAgICRvYmotPnNldF9wb2JveCgkcG9ib3gpOwogICAgICAgICRvYmotPnNldF9jaXR5KCRjaXR5KTsKICAgICAgICAkb2JqLT5zZXRfc3RhdGUoJHN0YXRlKTsKICAgICAgICAkb2JqLT5zZXRfemlwKCR6aXApOwogICAgICAgICRvYmotPnNldF9jb3VudHJ5KCRjb3VudHJ5KTsKICAgICAgICAkb2JqLT5zZXRfbGFiZWwoJGxhYmVsKTsKICAgICAgICAkb2JqLT5zZXRfcHJlZmVycmVkKCRwcmVmZXJyZWQpOwogICAgICAgICR0aGlzLT5hZGRfb2JqZWN0KCRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogVXBkYXRlIGFuIGFkZHJlc3Mgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbC4KICAgICAqIElmIG5vIGFkZHJlc3Mgb2JqZWN0IHdpdGggdGhhdCBsYWJlbCBleGlzdHMsIGNyZWF0ZSBhIG5ldyBhZGRyZXNzIHJlY29yZC4KICAgICAqCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyZWV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb2JveAogICAgICogQHBhcmFtIHN0cmluZyAkY2l0eQogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHppcAogICAgICogQHBhcmFtIHN0cmluZyAkY291bnRyeQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICAgJHByZWZlcnJlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5zZXJ0X2FkZF9hZGRyZXNzKCRzdHJlZXQsJHBvYm94LCRjaXR5LCRzdGF0ZSwkemlwLCRjb3VudHJ5LCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJGxhYmVsID0gdHJpbSgoc3RyaW5nKSRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdMYWJlbCBjYW5ub3QgYmUgZW1wdHknKTsKCiAgICAgICAgJGNsYXNzX25hbWUgPSAnY29udGFjdF9hZGRyZXNzJzsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9vYmplY3RzKSAmJiBjb3VudCgkdGhpcy0+X29iamVjdHMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X29iamVjdHMgYXMgJiRvYmogKSB7CiAgICAgICAgICAgICAgICBpZiggJG9iai0+Z2V0X2NsYXNzKCkgIT0gJGNsYXNzX25hbWUgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAkb2JqLT5nZXRfbGFiZWwoKSAhPSAkbGFiZWwgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgbWF0Y2gKICAgICAgICAgICAgICAgICRvYmotPnNldF9zdHJlZXQoJHN0cmVldCk7CiAgICAgICAgICAgICAgICAkb2JqLT5zZXRfcG9ib3goJHBvYm94KTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9jaXR5KCRjaXR5KTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9zdGF0ZSgkc3RhdGUpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ppcCgkemlwKTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9jb3VudHJ5KCRjb3VudHJ5KTsKICAgICAgICAgICAgICAgICRvYmotPnNldF9sYWJlbCgkbGFiZWwpOwogICAgICAgICAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgkcHJlZmVycmVkKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbm8gbWF0Y2hlcyBmb3VuZAogICAgICAgICR0aGlzLT5hZGRfYWRkcmVzcygkc3RyZWV0LCRwb2JveCwkY2l0eSwkc3RhdGUsJHppcCwkY291bnRyeSwkbGFiZWwsJHByZWZlcnJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gYWRkcmVzcyB3aXRoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2FkZHJlc3MoJGxhYmVsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X29iamVjdCgnY29udGFjdF9hZGRyZXNzJywkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBwcmVmZXJyZWQgYWRkcmVzcwogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9zdWIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wcmVmZXJyZWRfYWRkcmVzcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfcHJlZmVycmVkX29iamVjdCgnY29udGFjdF9hZGRyZXNzJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYWxsIG9mIHRoZSBhZGRyZXNzIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfYWRkcmVzc1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfYWRkcmVzc19vYmplY3RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3RzX2J5X3R5cGUoJ2NvbnRhY3RfYWRkcmVzcycpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFsbCBhZGRyZXNzZXMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX2FkZHJlc3MoJGxhYmVsKQogICAgewogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X2FkZHJlc3MnLCRsYWJlbCk7CiAgICB9CgogICAgLy8gY29vcmRpbmF0ZSBtZXRob2RzCgogICAgLyoqCiAgICAgKiBBZGQgYSBjb29yZGluYXRlIHNldCB0byB0aGUgY29udGFjdCBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0gZmxvYXQgJGxhdCAgTGF0aXR1ZGUgKG11c3QgYmUgYmV0d2VlbiAtMTgwIGFuZCAxODApCiAgICAgKiBAcGFyYW0gZmxvYXQgJGxvbmcgTG9uZ2l0dWRlIChtdXN0IGJlIGJldHdlZW4gLTE4MCBhbmQgMTgwKQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICRwcmVmZXJyZWQKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkX2Nvb3JkcygkbGF0LCRsb25nLCRsYWJlbCwkcHJlZmVycmVkID0gRkFMU0UpCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBjb250YWN0X2Nvb3JkcygkdGhpcyk7CiAgICAgICAgJG9iai0+c2V0X2xhdCgkbGF0KTsKICAgICAgICAkb2JqLT5zZXRfbG9uZygkbG9uZyk7CiAgICAgICAgJG9iai0+c2V0X2xhYmVsKCRsYWJlbCk7CiAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgoYm9vbCkgJHByZWZlcnJlZCk7CiAgICAgICAgJHRoaXMtPmFkZF9vYmplY3QoJG9iaik7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNvb3JkaW5hdGVzIHdpdGggdGhlIHNwZWNpZmllZCBsYWJlbCAoaWYgYW55KQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxhYmVsCiAgICAgKiBAcmV0dXJuIGNvbnRhY3Rfc3ViCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29vcmRzKCRsYWJlbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3QoJ2NvbnRhY3RfY29vcmRzJywkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwcmVmZXJyZWQgY29vcmRpbmF0ZXMgb2JqZWN0IChpZiBhbnkpCiAgICAgKgogICAgICogQHJldHVybiBjb250YWN0X3N1YgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9jb29yZHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9vYmplY3QoJ2NvbnRhY3RfY29vcmRzJywkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFueSBjb29yZGluYXRlIG9iamVjdHMgd3RoIHRoZSBzcGVjaWZpZWQgbGFiZWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVfY29vcmRzKCRsYWJlbCkKICAgIHsKICAgICAgICAkdGhpcy0+cmVtb3ZlX2Nvb3JkcygnY29udGFjdF9hZGRyZXNzJywkbGFiZWwpOwogICAgfQoKICAgIC8vIGRhdGUgbWV0aG9kcwoKICAgIC8qKgogICAgICogQWRkIGEgZGF0ZSBvYmplY3QgKGJpcnRoZGF5LCBvciBhbm5pdmVyc2FyeSkgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0ZQogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEBwYXJhbSBib29sICAgJHByZWZlcnJlZAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRfZGF0ZSgkZGF0ZSwkbGFiZWwsJHByZWZlcnJlZCA9IEZBTFNFKQogICAgewogICAgICAgICRvYmogPSBuZXcgY29udGFjdF9kYXRlKCR0aGlzKTsKICAgICAgICAkb2JqLT5zZXRfZGF0ZSgkZGF0ZSk7CiAgICAgICAgJG9iai0+c2V0X2xhYmVsKCRsYWJlbCk7CiAgICAgICAgJG9iai0+c2V0X3ByZWZlcnJlZCgoYm9vbCkgJHByZWZlcnJlZCk7CiAgICAgICAgJHRoaXMtPmFkZF9vYmplY3QoJG9iaik7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGRhdGUgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsIChpZiBhbnkpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGF0ZSgkbGFiZWwpCiAgICB7CiAgICAgICAgJG9iaiA9ICR0aGlzLT5nZXRfb2JqZWN0KCdjb250YWN0X2RhdGUnLCRsYWJlbCk7CiAgICAgICAgaWYoICRvYmogKSByZXR1cm4gJG9iai0+Z2V0X3QoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcHJlZmVycmVkIGRhdGUgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ByZWZlcnJlZF9kYXRlKCkKICAgIHsKICAgICAgICAkb2JqID0gJHRoaXMtPmdldF9wcmVmZXJyZWRfb2JqZWN0KCdjb250YWN0X2RhdGUnKTsKICAgICAgICBpZiggJG9iaiApIHJldHVybiAkb2JqLT5nZXRfdmFsdWUoKTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBHZXQgYWxsIG9mIHRoZSBkYXRlIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGFjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfZGF0ZVtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGF0ZV9vYmplY3RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF9vYmplY3RzX2J5X3R5cGUoJ2NvbnRhY3RfZGF0ZScpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGFueSBkYXRlIG9iamVjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIGxhYmVsCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbGFiZWwKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlX2RhdGUoJGxhYmVsKQogICAgewogICAgICAgICR0aGlzLT5yZW1vdmVfb2JqZWN0KCdjb250YWN0X2RhdGUnLCRsYWJlbCk7CiAgICB9CgogICAgLy8gY2F0ZWdvcnkgbWV0aG9kcwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRfY2F0ZWdvcnlfaWQoJGNhdCkKICAgIHsKICAgICAgICAkaWQgPSBudWxsOwogICAgICAgIGlmKCBpc19hKCRjYXQsJ1xDR0NvbnRhY3RzXGNhdGVnb3J5JykgKSB7CiAgICAgICAgICAgICRpZCA9ICRjYXRbJ2lkJ107CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoIChpbnQpJGNhdCA+IDAgKSB7CiAgICAgICAgICAgIC8vIGlmIGl0J3MgYSB2YWxpZCBjYXRlZ29yeSwgYWRkIGl0CiAgICAgICAgICAgICRjYXQgPSBjYXRlZ29yeTo6bG9hZCgkY2F0KTsKICAgICAgICAgICAgJGlkID0gJGNhdFsnaWQnXTsKICAgICAgICB9CgogICAgICAgIGlmKCAkaWQgPCAxICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignQ291bGQgbm90IGZpbmQgdGhlIHNwZWNpZmllZCBjYXRlZ29yeScpOwogICAgICAgIHJldHVybiAkaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgdGhlIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkgdG8gdGhlIGNvbnRhY3Qgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRjYXQgKEVpdGhlciBhbiBpbnRlZ2VyIGNhdGVnb3J5IGlkLCBvciBcQ0dDb250YWN0c1xjYXRlb2dyeSBvYmplY3QpCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZF9jYXRlZ29yeSgkY2F0KQogICAgewogICAgICAgICRpZCA9ICR0aGlzLT5fZ2V0X2NhdGVnb3J5X2lkKCRjYXQpOwogICAgICAgIGlmKCAkaWQgPiAwICYmICFpbl9hcnJheSgkaWQsICR0aGlzLT5fY2F0ZWdvcmllcykgKSAkdGhpcy0+X2NhdGVnb3JpZXNbXSA9ICRpZDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbGlzdCBvZiBjYXRlZ29yeSBpZHMgdGhhdCB0aGlzIGNvbnRhY3QgYmVsb25ncyB0byAoaWYgYW55KQogICAgICoKICAgICAqIEByZXR1cm4gaW50W10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXRlZ29yaWVzKCkKICAgIHsKICAgICAgICBpZiggY291bnQoJHRoaXMtPl9jYXRlZ29yaWVzKSApIHJldHVybiAkdGhpcy0+X2NhdGVnb3JpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2YgY2F0ZWdvcnkgb2JqZWN0cyB0aGF0IHRoaXMgY29udGFjdCBiZWxvbmdzIHRvIChpZiBhbnkpCiAgICAgKgogICAgICogQHJldHVybiBcQ0dDb250YWN0c1xjb250YWN0W10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXRlZ29yaWVzX2Z1bGwoKQogICAgewogICAgICAgIGlmKCAhY291bnQoJHRoaXMtPl9jYXRlZ29yaWVzKSApIHJldHVybjsKCiAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRpZCApIHsKICAgICAgICAgICAgJG91dFtdID0gY2F0ZWdvcnk6OmxvYWQoJGlkKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZS1hc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBjYXRlZ29yeSBmcm9tIHRoZSBjb250YWN0CiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRjYXQgKEVpdGhlciBhbiBpbnRlZ2VyIGNhdGVnb3J5IGlkLCBvciBcQ0dDb250YWN0c1xjYXRlb2dyeSBvYmplY3QpCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZV9jYXRlZ29yeSgkY2F0KQogICAgewogICAgICAgICRpZCA9ICR0aGlzLT5fZ2V0X2NhdGVnb3J5X2lkKCRjYXQpOwogICAgICAgIGlmKCAkaWQgJiYgaW5fYXJyYXkoJGlkLCAkdGhpcy0+X2NhdGVnb3JpZXMpICkgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRjYXRpZCApIHsKICAgICAgICAgICAgICAgIGlmKCAkaWQgIT0gJGNhdGlkICkgJHRtcFtdID0gJGNhdGlkOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5fY2F0ZWdvcmllcyA9ICR0bXA7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSB0aW1lc3RhbXAgb2YgdGhlIHRpbWUgdGhpcyBjb250YWN0IHdhcyBsYXN0IG1vZGlmaWVkLgogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbW9kaWZpZWQoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+Z2V0X2lkKCkgPiAwICkgcmV0dXJuICR0aGlzLT5fZGF0YVsnbW9kaWZpZWQnXTsKICAgIH0KICAgIC8vCiAgICAvLyBqcyBkYXRhCiAgICAvLwoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgY29udGFjdCBvYmplY3QgdG8gYW4gYXJyYXkgc3VpdGFibGUgZm9yIGNvbnZlcnNpb24gdG8ganNvbiBmb3JtYXQKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvX2RhdGEoKQogICAgewogICAgICAgICRvdXQgPSAkdGhpcy0+X2RhdGE7CiAgICAgICAgJG91dFsnY2F0ZWdvcmllcyddID0gJHRoaXMtPl9jYXRlZ29yaWVzOwogICAgICAgICRvdXRbJ29iamVjdHMnXSA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmplY3QgKSB7CiAgICAgICAgICAgICRvdXRbJ29iamVjdHMnXVtdID0gJG9iamVjdC0+dG9fZGF0YSgpOwogICAgICAgIH0KCiAgICAgICAgLy8gbWV0YSBjb250YWlucyBtZXRhIGluZm9ybWF0aW9uLgogICAgICAgICRvdXRbJ21ldGEnXSA9IGFycmF5KCk7CiAgICAgICAgJG91dFsnbWV0YSddWydkaXNwbGF5X25hbWUnXSA9ICR0aGlzLT5nZXRfZGlzcGxheV9uYW1lKCk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQb3B1bGF0ZSB0aGlzIGNvbnRhY3Qgb2JqZWN0IGdpdmVuIGFuIGFycmF5CiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZyb21fZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2lkJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2lkJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydzdGF0dXMnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnc3RhdHVzJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydndWlkJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2d1aWQnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2ZldV91aWQnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnZmV1X3VpZCcpOwogICAgICAgICR0aGlzLT5fZGF0YVsnZnVsbG5hbWUnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnZnVsbG5hbWUnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ25pY2tuYW1lJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ25pY2tuYW1lJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydjb21wYW55J10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2NvbXBhbnknKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3RpdGxlJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ3RpdGxlJyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydyb2xlJ10gPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ3JvbGUnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ25vdGUnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbm90ZScpOwogICAgICAgICR0aGlzLT5fZGF0YVsnbW9kaWZpZWQnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbW9kaWZpZWQnKTsKICAgICAgICAkdGhpcy0+c2V0X2ltYWdlKFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnaW1hZ2UnKSk7CiAgICAgICAgJHRoaXMtPnNldF9sb2dvKFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbG9nbycpKTsKCiAgICAgICAgJHRoaXMtPl9jYXRlZ29yaWVzID0gYXJyYXkoKTsKICAgICAgICBpZiggaXNzZXQoJGRhdGFbJ2NhdGVnb3JpZXMnXSkgKSAkdGhpcy0+X2NhdGVnb3JpZXMgPSAkZGF0YVsnY2F0ZWdvcmllcyddOwoKICAgICAgICAkdGhpcy0+X29iamVjdHMgPSBhcnJheSgpOwogICAgICAgIGlmKCBpc3NldCgkZGF0YVsnb2JqZWN0cyddKSAmJiBpc19hcnJheSgkZGF0YVsnb2JqZWN0cyddKSAmJiBjb3VudCgkZGF0YVsnb2JqZWN0cyddKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGRhdGFbJ29iamVjdHMnXSBhcyAkb2JqX3JvdyApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJG9ial9yb3dbJ2NsYXNzJ10pICkgY29udGludWU7CiAgICAgICAgICAgICAgICAkY2xhc3NuYW1lID0gIkNHQ29udGFjdHNcXCIuJG9ial9yb3dbJ2NsYXNzJ107CiAgICAgICAgICAgICAgICAkb2JqID0gbnVsbDsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgJG9iaiA9IG5ldyAkY2xhc3NuYW1lKCR0aGlzKTsKICAgICAgICAgICAgICAgICAgICAkb2JqLT5zZXRfZGF0YSgkb2JqX3Jvdyk7CiAgICAgICAgICAgICAgICAgICAgJG9iai0+dmFsaWRhdGUoKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YWRkX29iamVjdCgkb2JqKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhdGNoKCBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24gJGUgKXsKICAgICAgICAgICAgICAgICAgICBpZiggJG9ial9yb3dbJ2NsYXNzJ10gPT0gJ2NvbnRhY3RfbmFtZScgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLwogICAgLy8gYmVnaW4gZGF0YWJhc2UgbWV0aG9kcwogICAgLy8KCiAgICAvKioKICAgICAqIExvYWQgdGhlIHNwZWNpZmllZCBjb250YWN0IG9iamVjdC4KICAgICAqIFRoZSBsb2FkZWQgb2JqZWN0IGlzIGNhY2hlZCBzbyB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdHMgZm9yIHRoYXQgY29udGFjdCB3aWxsIG5vdCBoaXQgdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogQHBhcmFtIGludCAkaWQgVGhlIGNvbnRhY3QgaWQKICAgICAqIEByZXR1cm4gXENHY29udGFjdHNcY29udGFjdAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uICZsb2FkKCRpZCkKICAgIHsKICAgICAgICAkaWQgPSAoaW50KSRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ludmFsaWQgY29udGFjdCBpZCBzcGVjaWZpZWQnKTsKCiAgICAgICAgaWYoIGlzc2V0KHNlbGY6OiRfY29udGFjdF9jYWNoZVskaWRdKSApIHJldHVybiBzZWxmOjokX2NvbnRhY3RfY2FjaGVbJGlkXTsKCiAgICAgICAgLy8gZ2V0IHRoZSBtYXN0ZXIgcm93CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCxzdGF0dXMsZ3VpZCxmZXVfdWlkLGZ1bGxuYW1lLG5pY2tuYW1lLGNvbXBhbnksdGl0bGUscm9sZSxub3RlLGltYWdlLGxvZ28sbW9kaWZpZWQgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgV0hFUkUgaWQgPSA/JzsKICAgICAgICAkcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LGFycmF5KCRpZCkpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJHJvdykgKSB0aHJvdyBuZXcgXENtc05vdEZvdW5kRXhjZXB0aW9uKCdDb250YWN0IHdpdGggaWQgJy4kaWQuJyBub3QgZm91bmQnKTsKCiAgICAgICAgLy8gZ2V0IHRoZSBvYmplY3RzCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjb250YWN0X2lkLGNsYXNzLGxhYmVsLHByZWZlcnJlZCx2YWx1ZSBGUk9NICcuQ0dDT05UQUNUU19TVUJfVEJMLicgV0hFUkUgY29udGFjdF9pZCA9ID8gT1JERVIgQlkgY2xhc3MsbGFiZWwnOwogICAgICAgICRyb3dbJ29iamVjdHMnXSA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LGFycmF5KCRpZCkpOwoKICAgICAgICAvLyBnZXQgdGhlIGNhdGVnb3JpZXMKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIERJU1RJTkNUIGNhdF9pZCBGUk9NICcuQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyBXSEVSRSBjb250YWN0X2lkID0gPyc7CiAgICAgICAgJHJvd1snY2F0ZWdvcmllcyddID0gJGRiLT5HZXRDb2woJHF1ZXJ5LGFycmF5KCRpZCkpOwoKICAgICAgICAvLyBwdXQgaXQgYWxsIHRvZ2V0aGVyCiAgICAgICAgJGNvbnRhY3QgPSBuZXcgc2VsZigpOwogICAgICAgICRjb250YWN0LT5mcm9tX2RhdGEoJHJvdyk7CiAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlWyRpZF0gPSAkY29udGFjdDsKICAgICAgICByZXR1cm4gJGNvbnRhY3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2FkIHRoZSBzcGVjaWZpZWQgY29udGVudCBvYmplY3QgKGJ5IHVuaXF1ZSBpZCkKICAgICAqCiAgICAgKiBUaGUgbG9hZGVkIG9iamVjdCBpcyBjYWNoZWQgc28gdGhhdCBzdWJzZXF1ZW50IHJlcXVlc3RzIGZvciB0aGF0IGNvbnRhY3Qgd2lsbCBub3QgaGl0IHRoZSBkYXRhYmFzZQogICAgICogQHBhcmFtIHN0cmluZyAkdWlkIFRoZSBjb250YWN0IHVpZAogICAgICogQHJldHVybiBcQ0dDb250YWN0c1xjb250YWN0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJmxvYWRfYnlfZ3VpZCgkdWlkKQogICAgewogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgV0hFUkUgZ3VpZCA9ID8nOwogICAgICAgICRpZCA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkdWlkKSk7CiAgICAgICAgaWYoICRpZCApIHJldHVybiBzZWxmOjpsb2FkKCRpZCk7CgogICAgICAgIHRocm93IG5ldyBcQ21zTm90Rm91bmRFeGNlcHRpb24oJ0NvbnRhY3Qgd2l0biBndWlkICcuJGlkLicgbm90IGZvdW5kJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBIHF1aWNrIChsaWdodHdlaWdodCkgY29udmVuaWVuY2UgbWV0aG9kIHRvIHRlc3QgaWYgYSBjb250YWN0IHdpdGggdGhlIHNwZWNpZmllZCBpZCBleGlzdHMKICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBmaXJzdCBjaGVja3MgdGhlIGNhY2hlIHRvIHNlZSBpZiB0aGUgb2JqZWN0IGV4aXN0cywgb3RoZXJ3aXNlIGl0IGRvZXMgYSBzaW1sZQogICAgICogcXVlcnkgdG8gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhpc3RzKCRpZCkKICAgIHsKICAgICAgICAkaWQgPSAoaW50KSRpZDsKICAgICAgICBpZiggJGlkIDwgMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ludmFsaWQgY29udGFjdCBpZCBzcGVjaWZpZWQnKTsKCiAgICAgICAgLy8gaWYgaXQncyBub3QgaW4gb3VyIGNhY2hlLi4uIGRvIGEgcXVpY2sgcXVlcnkKICAgICAgICBpZiggaXNzZXQoc2VsZjo6JF9jb250YWN0X2NhY2hlWyRpZF0pICkgcmV0dXJuIFRSVUU7CgogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgV0hFUkUgaWQgPSA/JzsKICAgICAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCRpZCkpOwogICAgICAgIGlmKCAkdG1wID09ICRpZCApIHJldHVybiBUUlVFOwogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgbWV0aG9kIHRvIHNhdmUgYW4gZXhpc3RpbmcgY29udGFjdCBvYmplY3QgdG8gdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogQGFjY2VzcyBwcm90ZWN0ZWQKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3VwZGF0ZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfaWQoKSA8IDEgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQ2Fubm90IGNhbGwgJy5fX01FVEhPRF9fLicgd2l0aG91dCBhIHZhbGlkIGNvbnRhY3QgaWQnKTsKICAgICAgICBpZiggJHRoaXMtPmdldF9ndWlkKCkgPT0gJycgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQ2Fubm90IGNhbGwgJy5fX01FVEhPRF9fLicgd2l0aG91dCBhIHZhbGlkIGd1aWQnKTsKCiAgICAgICAgJHRoaXMtPl9kYXRhWydtb2RpZmllZCddID0gdGltZSgpOwogICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKCiAgICAgICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5DR0NPTlRBQ1RTX1RCTC4nIFNFVCBzdGF0dXMgPSA/LCBmZXVfdWlkID0gPywgZnVsbG5hbWUgPSA/LCBuaWNrbmFtZSA9ID8sIGNvbXBhbnkgPSA/LCB0aXRsZSA9ID8sCiAgICAgICAgICAgICAgICAgICAgICByb2xlID0gPywgbm90ZSA9ID8sIGltYWdlID0gPywgbG9nbyA9ID8sIG1vZGlmaWVkID0gPyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpcy0+X2RhdGFbJ3N0YXR1cyddLCR0aGlzLT5fZGF0YVsnZmV1X3VpZCddLCR0aGlzLT5fZGF0YVsnZnVsbG5hbWUnXSwkdGhpcy0+X2RhdGFbJ25pY2tuYW1lJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnY29tcGFueSddLCR0aGlzLT5fZGF0YVsndGl0bGUnXSwkdGhpcy0+X2RhdGFbJ3JvbGUnXSwkdGhpcy0+X2RhdGFbJ25vdGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpbWFnZSddLCR0aGlzLT5fZGF0YVsnbG9nbyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ21vZGlmaWVkJ10sJHRoaXMtPl9kYXRhWydpZCddKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRVJST1I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CgogICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJy5DR0NPTlRBQ1RTX0FEUl9DQVRTX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoKGludCkkdGhpcy0+X2RhdGFbJ2lkJ10pKTsKICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKCiAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLkNHQ09OVEFDVFNfU1VCX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoKGludCkkdGhpcy0+X2RhdGFbJ2lkJ10pKTsKICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKCiAgICAgICAgICAgIC8vIHNhdmUgY2F0ZWdvcmllcwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9jYXRlZ29yaWVzKSAmJiBjb3VudCgkdGhpcy0+X2NhdGVnb3JpZXMpICkgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyAoY29udGFjdF9pZCwgY2F0X2lkKSBWQUxVRVMgKD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRjYXRpZCApIHsKICAgICAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpcy0+X2RhdGFbJ2lkJ10sJGNhdGlkKSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2F2ZSBvYmplY3RzCiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5DR0NPTlRBQ1RTX1NVQl9UQkwuJyAoY29udGFjdF9pZCwgY2xhc3MsIGxhYmVsLCBwcmVmZXJyZWQsIHZhbHVlKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmplY3QgKSB7CiAgICAgICAgICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXMtPl9kYXRhWydpZCddLCRvYmplY3QtPmdldF9jbGFzcygpLCRvYmplY3QtPmdldF9sYWJlbCgpLCRvYmplY3QtPmlzX3ByZWZlcnJlZCgpLCRvYmplY3QtPmdldF9yYXdfdmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRXJyb3I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRkYi0+Q29tcGxldGVUcmFucygpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQSBtZXRob2QgdG8gc2F2ZSBhIG5ldyBjb250YWN0IG9iamVjdCB0byB0aGUgZGF0YWJhc2UKICAgICAqCiAgICAgKiBAYWNjZXNzIHByb3RlY3RlZAogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfaW5zZXJ0KCkKICAgIHsKICAgICAgICBpZiggJHRoaXMtPmdldF9pZCgpID4gMCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdDYW5ub3QgY2FsbCAnLl9fTUVUSE9EX18uJyB3aXRoIGEgdmFsaWQgY29udGFjdCBpZCcpOwoKICAgICAgICBpZiggJHRoaXMtPmdldF9ndWlkKCkgPT0gJycgKSAkdGhpcy0+X2RhdGFbJ2d1aWQnXSA9IHV0aWxzOjpjYWxjX2d1aWQoKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ21vZGlmaWVkJ10gPSB0aW1lKCk7CiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwoKICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuQ0dDT05UQUNUU19UQkwuJyAoc3RhdHVzLGd1aWQsZmV1X3VpZCxmdWxsbmFtZSxuaWNrbmFtZSxjb21wYW55LHRpdGxlLHJvbGUsbm90ZSxpbWFnZSxsb2dvLG1vZGlmaWVkKSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/KSc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCR0aGlzLT5fZGF0YVsnc3RhdHVzJ10sJHRoaXMtPl9kYXRhWydndWlkJ10sJHRoaXMtPl9kYXRhWydmZXVfdWlkJ10sJHRoaXMtPl9kYXRhWydmdWxsbmFtZSddLCR0aGlzLT5fZGF0YVsnbmlja25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydjb21wYW55J10sJHRoaXMtPl9kYXRhWyd0aXRsZSddLCR0aGlzLT5fZGF0YVsncm9sZSddLCR0aGlzLT5fZGF0YVsnbm90ZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2ltYWdlJ10sJHRoaXMtPl9kYXRhWydsb2dvJ10sJHRoaXMtPl9kYXRhWydtb2RpZmllZCddKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRVJST1I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9ICRkYi0+SW5zZXJ0X0lEKCk7CgogICAgICAgICAgICAvLyBzYXZlIGNhdGVnb3JpZXMKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fY2F0ZWdvcmllcykgJiYgY291bnQoJHRoaXMtPl9jYXRlZ29yaWVzKSApIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLkNHQ09OVEFDVFNfQURSX0NBVFNfVEJMLicgKGNvbnRhY3RfaWQsIGNhdF9pZCkgVkFMVUVTKD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9jYXRlZ29yaWVzIGFzICRjYXRpZCApIHsKICAgICAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdGhpcy0+X2RhdGFbJ2lkJ10sJGNhdGlkKSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2F2ZSBvYmplY3RzCiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdGhpcy0+X29iamVjdHMpICYmIGNvdW50KCR0aGlzLT5fb2JqZWN0cykgKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5DR0NPTlRBQ1RTX1NVQl9UQkwuJyAoY29udGFjdF9pZCwgY2xhc3MsIGxhYmVsLCBwcmVmZXJyZWQsIHZhbHVlKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9vYmplY3RzIGFzICRvYmplY3QgKSB7CiAgICAgICAgICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXMtPl9kYXRhWydpZCddLCRvYmplY3QtPmdldF9jbGFzcygpLCRvYmplY3QtPmdldF9sYWJlbCgpLCRvYmplY3QtPmlzX3ByZWZlcnJlZCgpLCRvYmplY3QtPmdldF9yYXdfdmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRXJyb3I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRkYi0+Q29tcGxldGVUcmFucygpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQSBtZXRob2QgdG8gdmFsaWRhdGUgdGhlIGNvbnRhY3Qgb2JqZWN0ICh0eXBpY2FsbHkgdXNlZCBiZWZvcmUgc2F2aW5nIHRoZSBvYmplY3QgdG8gdGhlIGRhdGFiYXNlKQogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHZhbGlkYXRlcyB0aGF0IHRoZXJlIGlzIHNvbWUgc29ydCBvZiBkaXNwbGF5YWJsZSBuYW1lLCBhbmQgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsaWQgb2JqZWN0CiAgICAgKiBleGNlcHRpb25zIGFyZSB0aHJvd24gb24gZXJyb3JzCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgLy8gd2UgbmVlZCBzb21lIHNvcnQgb2YgbmFtZSwgYW5kIHNvbWUgc29ydCBvZiBlbWFpbCwgdXJsLCBhZGRyZXNzLCBvciBwaG9uZSBudW1iZXIKICAgICAgICBpZiggJHRoaXMtPmdldF9kaXNwbGF5X25hbWUoKSA9PSAnJykgdGhyb3cgbmV3IFxFeGNlcHRpb24oX19DTEFTU19fLicgb2JqZWN0IGlzIGludmFsaWQgKG5vIG5hbWUgZm91bmQpJyk7CgogICAgICAgIGlmKCBjb3VudCgkdGhpcy0+X29iamVjdHMpID09IDAgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbihfX0NMQVNTX18uJyBvYmplY3QgaXMgaW52YWxpZCAobm8gb2JqZWN0cyBmb3VuZCknKTsKCiAgICAgICAgJHNpbmdsZXMgPSBhcnJheSgpOwogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fb2JqZWN0cyk7ICRpKysgKSB7CiAgICAgICAgICAgICRvYmogPSAkdGhpcy0+X29iamVjdHNbJGldOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJG9iai0+dmFsaWRhdGUoKTsKICAgICAgICAgICAgICAgIGlmKCAhJG9iai0+YWxsb3dzX211bHRpcGxlKCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNsYXNzbmFtZSA9IGdldF9jbGFzcygkb2JqKTsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRzaW5nbGVzWyRjbGFzc25hbWVdKSApICRzaW5nbGVzWyRjbGFzc25hbWVdID0gMDsKICAgICAgICAgICAgICAgICAgICAkc2luZ2xlc1skY2xhc3NuYW1lXSsrOwogICAgICAgICAgICAgICAgICAgIGlmKCAkc2luZ2xlc1skY2xhc3NuYW1lXSA+IDEgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQSBjb250YWN0IGNhbiBvbmx5IGhhdmUgb25lIGluc3RhbmNlIG9mIGEgJy4kY2xhc3NuYW1lLicgb2JqZWN0Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgIGlmKCBnZXRfY2xhc3MoJG9iaikgIT0gJ1xcQ0dDb250YWN0c1xcY29udGFjdF9uYW1lJyApIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNhdmUgdGhpcyBvYmplY3QgdG8gdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogRmlyc3QgYSB2YWxpZGF0aW9uIGNoZWNrIGlzIHBlcmZvcm1lZCwgdGhlbiBkZXBlbmRpbmcgdXBvbiBpZiB0aGVyZSBpcyBhIHZhbGlkIGNvbnRhY3QgaWQKICAgICAqIGVpdGhlciBhbiB1cGRhdGUsIG9yIGFuIGluc2VydCBpcyBwZXJmb3JtZWQuICBBbGwgc3RhdGljIGNvbnRhY3QgY2FjaGVzIGFyZSBjbGVhcmVkCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCkKICAgIHsKICAgICAgICAvLyBpZiB3ZSBoYXZlIG5vIGZ1bGxuYW1lLi4uIHdlIGNhbGN1bGF0ZSBvbmUKICAgICAgICAkdGhpcy0+dmFsaWRhdGUoKTsKICAgICAgICBpZiggISR0aGlzLT5nZXRfZnVsbG5hbWUoKSApICR0aGlzLT5zZXRfZnVsbG5hbWUoJHRoaXMtPmdldF9kaXNwbGF5X25hbWUoKSk7CgogICAgICAgIGlmKCAkdGhpcy0+Z2V0X2lkKCkgPiAwICkgewogICAgICAgICAgICAkdGhpcy0+X3VwZGF0ZSgpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPl9pbnNlcnQoKTsKICAgICAgICB9CiAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIERlbGV0ZSB0aGlzIGNvbnRhY3Qgb2JqZWN0IGZyb20gdGhlIGRhdGFiYXNlCiAgICAgKgogICAgICogVGhlIGNvbnRhY3Qgb2JqZWN0IGlzIGNvbXBsZXRlbHkgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSBjb250YWN0IGlkCiAgICAgKiBpcyBlcmFzZWQsIHNvIHRoYXQgYSBzdWJzZXF1ZW50IHNhdmUgd2lsbCByZXN1bHQgaW4gYSBuZXcgaW5zZXJ0CiAgICAgKiBBZGRpdGlvbmFsbHksIGFsbCBjYWNoZXMgYXJlIGNsZWFyZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpCiAgICB7CiAgICAgICAgJGNpZCA9IChpbnQpJHRoaXMtPmdldF9pZCgpOwogICAgICAgIGlmKCAkY2lkIDwgMSApIHJldHVybjsKCiAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKCiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwoKICAgICAgICAgICAgJHEgPSAnREVMRVRFIEZST00gJy5DR0NPTlRBQ1RTX0FEUl9DQVRTX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgPSA/JzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcSwgYXJyYXkoJGNpZCkpOwogICAgICAgICAgICBpZiggISRkYnIgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbignU1FMIEVycm9yOiAnLiRkYi0+c3FsLicgLS0gJy4kZGItPkVycm9yTXNnKCkpOwoKICAgICAgICAgICAgJHEgPSAnREVMRVRFIEZST00gJy5DR0NPTlRBQ1RTX1NVQl9UQkwuJyBXSEVSRSBjb250YWN0X2lkID0gPyc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHEsIGFycmF5KCRjaWQpKTsKICAgICAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1NRTCBFcnJvcjogJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKCiAgICAgICAgICAgICRxID0gJ0RFTEVURSBGUk9NICcuQ0dDT05UQUNUU19UQkwuJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxLCBhcnJheSgkY2lkKSk7CiAgICAgICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTUUwgRXJyb3I6ICcuJGRiLT5zcWwuJyAtLSAnLiRkYi0+RXJyb3JNc2coKSk7CgogICAgICAgICAgICAkZGItPkNvbXBsZXRlVHJhbnMoKTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZCddID0gbnVsbDsKICAgICAgICAgICAgc2VsZjo6JF9jb250YWN0X2NhY2hlID0gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSBmcm9tIHRoZSBjb250YWN0IGludG8gYSBjZ2VfYWRkcmVzcyBvYmplY3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGNnZV9hZGRyZXNzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2dlX2FkZHJlc3MoKQogICAgewogICAgICAgICRvdXQgPSBuZXcgXGNnZV9hZGRyZXNzOwogICAgICAgICRvdXQtPnNldF9jb21wYW55KCR0aGlzLT5nZXRfY29tcGFueSgpKTsKICAgICAgICAkb3V0LT5zZXRfZW1haWwoJHRoaXMtPmdldF9wcmVmZXJyZWRfZW1haWwoKSk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Z2V0X25hbWUoKTsKICAgICAgICBpZiggaXNfb2JqZWN0KCRuYW1lKSApIHsKICAgICAgICAgICAgJG91dC0+c2V0X2ZpcnN0bmFtZSgkbmFtZS0+Z2V0X2ZpcnN0KCkpOwogICAgICAgICAgICAkb3V0LT5zZXRfbGFzdG5hbWUoJG5hbWUtPmdldF9sYXN0KCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPmdldF9kaXNwbGF5X25hbWUoKTsKICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnICcsJG5hbWUsMyk7CiAgICAgICAgICAgICRvdXQtPnNldF9maXJzdG5hbWUoJHBhcnRzWzBdKTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJ0c1sxXSkgKSAkb3V0LT5zZXRfbGFzdG5hbWUoJHBhcnRzWzFdKTsKICAgICAgICB9CiAgICAgICAgJGFkZHJlc3MgPSAkdGhpcy0+Z2V0X3ByZWZlcnJlZF9hZGRyZXNzKCk7CiAgICAgICAgaWYoIGlzX29iamVjdCgkYWRkcmVzcykgKSB7CiAgICAgICAgICAgICRvdXQtPnNldF9hZGRyZXNzMSgkYWRkcmVzcy0+Z2V0X3N0cmVldCgpKTsKICAgICAgICAgICAgJHBvYm94ID0gJGFkZHJlc3MtPmdldF9wb2JveCgpOwogICAgICAgICAgICBpZiggJHBvYm94ICkgJG91dC0+c2V0X2FkZHJlc3MyKCRwb2JveCAuPSAnUC5PLiBCb3ggJy4kcG9ib3gpOwogICAgICAgICAgICAkb3V0LT5zZXRfY2l0eSgkYWRkcmVzcy0+Z2V0X2NpdHkoKSk7CiAgICAgICAgICAgICRvdXQtPnNldF9jb3VudHJ5KCRhZGRyZXNzLT5nZXRfY291bnRyeSgpKTsKICAgICAgICAgICAgJG91dC0+c2V0X3N0YXRlKCRhZGRyZXNzLT5nZXRfc3RhdGUoKSk7CiAgICAgICAgICAgICRvdXQtPnNldF9wb3N0YWwoJGFkZHJlc3MtPmdldF96aXAoKSk7CiAgICAgICAgfQogICAgICAgICRvdXQtPnNldF9waG9uZSgkdGhpcy0+Z2V0X3ByZWZlcnJlZF9waG9uZSgpKTsKICAgICAgICAkb3V0LT5zZXRfZmF4KCR0aGlzLT5nZXRfcGhvbmVfYnlfdHlwZSgnZmF4JykpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_address.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfYWRkcmVzcyBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dDb250YWN0cwogKiBAY2F0ZWdvcnkgUHJvZHVjdGl2aXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgcGh5c2ljYWwgYWRkcmVzcy4KICogTXVsdGlwbGUgcGh5c2ljYWwgYWRkcmVzc2VzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LgogKi8KY2xhc3MgY29udGFjdF9hZGRyZXNzIGV4dGVuZHMgY29udGFjdF9zdWIKewogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9kYXRhOwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b3N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtYXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvcm1hdCB0aGUgYWRkcmVzcyBhcyBhIHNpbmdsZSBzdHJpbmcuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZvcm1hdCgpCiAgICB7CiAgICAgICAgJHRtcCA9IGFycmF5X3ZhbHVlcygkdGhpcy0+X2RhdGEpOwogICAgICAgIHJldHVybiBpbXBsb2RlKCJcbiIsJHRtcCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHN0cmVldCBhZGRyZXNzIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9zdHJlZXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWV0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBzdHJpbmcgYWRkcmVzcyBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3N0cmVldCgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnc3RyZWV0J10gPSB0cmltKChzdHJpbmcpICR2YWwpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwb3N0IG9mZmljZSBib3ggcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3BvYm94KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvYm94OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwb3N0IG9mZmljZSBib3ggcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9wb2JveCgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsncG9ib3gnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNpdHkgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NpdHkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2l0eTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgY2l0eSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2NpdHkoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2NpdHknXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHppcC9wb3N0YWwgY29kZSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfemlwKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnppcDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgemlwL3Bvc3RhbCBjb2RlIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfemlwKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd6aXAnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHN0YXRlL3Byb3ZpbmNlIGNvZGUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3N0YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXRlOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBzdGF0ZS9wcm92aW5jZSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3N0YXRlKCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydzdGF0ZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY291bnRyeSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY291bnRyeSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb3VudHJ5OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjb3VudHJ5IHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfY291bnRyeSgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnY291bnRyeSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgJGtleSA9IHRyaW0oKHN0cmluZykgJGtleSk7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3N0cmVldCc6CiAgICAgICAgY2FzZSAncG9ib3gnOgogICAgICAgIGNhc2UgJ2NpdHknOgogICAgICAgIGNhc2UgJ3N0YXRlJzoKICAgICAgICBjYXNlICd6aXAnOgogICAgICAgIGNhc2UgJ2NvdW50cnknOgogICAgICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwka2V5KTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgb2JqZWN0IHRvIGEgZmxhdCBhcnJheS4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvX2RhdGEoKQogICAgewogICAgICAgICRvdXQgPSBwYXJlbnQ6OnRvX2RhdGEoKTsKICAgICAgICAkb3V0ID0gYXJyYXlfbWVyZ2UoJG91dCwkdGhpcy0+X2RhdGEpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogVmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QgcHJpb3IgdG8gc2F2aW5nLgogICAgICogQWx0aG91Z2ggdGhlIGZvcm1hdCBvZiBhbiBhZGRyZXNzIGlzIGxvb3NlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIGZpZWxkcyBtdXN0IGJlIHNwZWNpZmllZC4KICAgICAqIFRoaXMgbWV0aG9kIHRocm93cyBhbiBleGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgcGFyZW50Ojp2YWxpZGF0ZSgpOwogICAgICAgICRmbmQgPSAwOwogICAgICAgIGZvcmVhY2goICR0aGlzLT5fZGF0YSBhcyAka2V5ID0+ICR2YWx1ZSApIHsKICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICBjYXNlICdzdHJlZXQnOgogICAgICAgICAgICBjYXNlICdwb2JveCc6CiAgICAgICAgICAgIGNhc2UgJ2NpdHknOgogICAgICAgICAgICBjYXNlICdzdGF0ZSc6CiAgICAgICAgICAgIGNhc2UgJ3ppcCc6CiAgICAgICAgICAgIGNhc2UgJ2NvdW50cnknOgogICAgICAgICAgICAgICAgaWYoICR2YWx1ZSAhPSAnJyApICRmbmQrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAkZm5kID09IDAgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBdCBsZWFzdCBzb21lIGRhdGEgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIGFuIGFkZHJlc3Mgb2JqZWN0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJhdyBjb250ZW50IG9mIHRoaXMgb2JqZWN0IHN1aXRhYmxlIGZvciBzYXZpbmcuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9yYXdfdmFsdWUoKQogICAgewogICAgICAgIHJldHVybiBzZXJpYWxpemUoJHRoaXMtPl9kYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdpdmVuIGFuIGFycmF5IG9mIGRhdGEsIGZpbGwgdGhlIG9iamVjdC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgIGlmKCBpc3NldCgkZGF0YVsndmFsdWUnXSkgKSB7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YSA9IHVuc2VyaWFsaXplKCRkYXRhWyd2YWx1ZSddKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBmb3JlYWNoKCAkZGF0YSBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICAgIGNhc2UgJ3N0cmVldCc6CiAgICAgICAgICAgICAgY2FzZSAncG9ib3gnOgogICAgICAgICAgICAgIGNhc2UgJ2NpdHknOgogICAgICAgICAgICAgIGNhc2UgJ3N0YXRlJzoKICAgICAgICAgICAgICBjYXNlICd6aXAnOgogICAgICAgICAgICAgIGNhc2UgJ2NvdW50cnknOgogICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_coords.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfY29vcmRzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIGNsYXNzIHRvIHJlcHJlc2VudCBhIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgcGFpci4KICovCmNsYXNzIGNvbnRhY3RfY29vcmRzIGV4dGVuZHMgY29udGFjdF9zdWIKewogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9kYXRhOwoKICAgIC8qKgogICAgICogR2V0IHRoZSBsYXRpdHVkZSBvZiB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGZsb2F0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbGF0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxhdDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbG9uZ2l0dWRlIG9mIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb25nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxvbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGxhdGl0dWRlIG9mIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBmbG9hdCAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbGF0KCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IChmbG9hdCkkdmFsOwogICAgICAgIGlmKCAkdmFsIDwgLTE4MC4wIHx8ICR2YWwgPiAxODAuMCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGxhdGl0dWRlIHZhbHVlIGZvciAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgICR0aGlzLT5fZGF0YVsnbGF0J10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBsb25naXR1ZGUgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIGZsb2F0ICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9sb25nKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IChmbG9hdCkkdmFsOwogICAgICAgIGlmKCAkdmFsIDwgLTE4MC4wIHx8ICR2YWwgPiAxODAuMCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGxvbmdpdHVkZSB2YWx1ZSBmb3IgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2xvbmcnXSA9ICR2YWw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgka2V5KQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdsYXQnOgogICAgICAgICAgICByZXR1cm4gY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdsYXQnKTsKCiAgICAgICAgY2FzZSAnbG9uZyc6CiAgICAgICAgICAgIHJldHVybiBjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ2xvbmcnKTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICR0aGlzLT5sYXQgPT0gJycgfHwgJHRoaXMtPmxvbmcgPT0gJycgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdJbnZhbGlkIGNvb3JkaW5hdGVzIHNwZWNpZmllZCcpOwogICAgfQoKICAgIC8qKgogICAgICogRmlsbCB0aGlzIG9iamVjdCBmcm9tIGFuIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICBwYXJlbnQ6OnNldF9kYXRhKCRkYXRhKTsKICAgICAgICAkdGhpcy0+X2RhdGEgPSB1bnNlcmlhbGl6ZSgkZGF0YVsndmFsdWUnXSk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_creator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEZWZpbml0aW9uIGZvciB0aGUgY29udGFjdF9jcmVhdG9yIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBhc3NvY2lhdGluZyBhIGNyZWF0b3IgcHJvZXBydHkgd2l0aCBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X2NyZWF0b3IgZXh0ZW5kcyBcQ0dDb250YWN0c1xjb250YWN0X3NpbXBsZV92YWx1ZSB7fQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_dailywage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBzdG9yaW5nIGEgZGFpbHkgd2FnZSAoYSBudW1iZXIpIHdpdGggYSBjb250YWN0LgogKi8KY2xhc3MgY29udGFjdF9kYWlseXdhZ2UgZXh0ZW5kcyBcQ0dDb250YWN0c1xjb250YWN0X3NpbmdsZV92YWx1ZSB7fQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_date.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfZGF0ZSBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dDb250YWN0cwogKiBAY2F0ZWdvcnkgUHJvZHVjdGl2aXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgZGF0ZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LgogKiBUaGUgY29udGFjdCBjYW4gbWFuYWdlIG11bHRpcGxlIGRhdGVzLgogKgogKiBUaGlzIGNsYXNzIGlzIHN1YmplY3QgdG8gY2hhbmdlIGFzIENHQ29udGFjdHMgYmVnaW5zIHRvIHN1cHBvcnQgZGF0ZXMuCiAqLwpjbGFzcyBjb250YWN0X2RhdGUgZXh0ZW5kcyBjb250YWN0X3NpbXBsZV92YWx1ZQp7CiAgICAvKioKICAgICAqIEdldCB0aGUgZGF0ZSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RhdGUoKQogICAgewogICAgICAgIHJldHVybiBwYXJlbnQ6OmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkYXRlIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2RhdGUoJHZhbCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnNldF92YWx1ZSgkdmFsKTsKICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_email.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfZW1haWwgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY2xhc3MgdG8gcmVwcmVzbnQgYW4gZW1haWwgb2JqZWN0IHdpdGhpbiBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X2VtYWlsIGV4dGVuZHMgY29udGFjdF9zaW1wbGVfdmFsdWUKewogICAgLyoqCiAgICAgKiBHZXQgdGhlIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmplY3QuCiAgICAgKiBUaGlzIGlzIGFuIGFsaWFzIGZvciB0aGUgZ2V0X3ZhbHVlKCkgbWV0aG9kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfYWRkcmVzcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIG9iamVjdC4KICAgICAqIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHRoZSBzZXRfdmFsdWUoKSBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfYWRkcmVzcygkdmFsKQogICAgewogICAgICAgICR0aGlzLT5zZXRfdmFsdWUoJHZhbCk7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_name.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcGhvbmVfdmFsdWUgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgY2xhc3MgdG8gcmVwcmVzZW50IGEgbmFtZS4KICogQSBuYW1lIGNvbnNpc3RzIG9mIGEgcHJlZml4LCBhIGZpcnN0LCBtaWRkbGUsIGFuZCBsYXN0IHBhcnQsIGFuZCBhIHN1ZmZpeC4KICogT25seSBvbmUgbmFtZSBvYmplY3QgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X25hbWUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGE7CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHByZWZpeCBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJlZml4KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByZWZpeDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgcHJlZml4IHBvcnRpb24gb2YgdGhlIG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfcHJlZml4KCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydwcmVmaXgnXSA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZpcnN0bmFtZSBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZmlyc3QoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Zmlyc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGZpcnN0bmFtZSBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2ZpcnN0KCR2YWwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYXRhWydmaXJzdCddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlkZGxlIHBvcnRpb24gb2YgdGhlIG5hbWUuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9taWRkbGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bWlkZGxlOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBtaWRkbGUgcG9ydGlvbiBvZiB0aGUgbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9taWRkbGUoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ21pZGRsZSddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBuYW1lLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbGFzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXN0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBsYXN0IHBvcnRpb24gb2YgdGhlIG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfbGFzdCgkdmFsKQogICAgewogICAgICAgICR0aGlzLT5fZGF0YVsnbGFzdCddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbmFtZSBzdWZmaXguCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9zdWZmaXgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3VmZml4OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBuYW1lIHN1ZmZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9zdWZmaXgoJHZhbCkKICAgIHsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3N1ZmZpeCddID0gdHJpbSgoc3RyaW5nKSAkdmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbmFtZSBmb3JtYXR0ZWQgaW4gYSBkaXNwbGF5YWJsZSBmb3JtYXQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9mb3JtYXR0ZWQoKQogICAgewogICAgICAgICRkYXRhID0gJHRoaXMtPl9kYXRhOwogICAgICAgIGlmKCAkZGF0YVsnbWlkZGxlJ10gJiYgIWVuZHN3aXRoKCRkYXRhWydtaWRkbGUnXSwnLicpICkgICRkYXRhWydtaWRkbGUnXSAuPSAnLic7CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJyAnLCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgJGtleSA9IHRyaW0oKHN0cmluZykka2V5KTsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAncHJlZml4JzoKICAgICAgICBjYXNlICdmaXJzdCc6CiAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICBjYXNlICdsYXN0JzoKICAgICAgICBjYXNlICdzdWZmaXgnOgogICAgICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwka2V5KTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X19nZXQoJGtleSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsb3dzX211bHRpcGxlKCkKICAgIHsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXByZXNlbnQgdGhpcyBvYmplY3QgYXMgYW4gYXJyYXkuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9fZGF0YSgpCiAgICB7CiAgICAgICAgJG91dCA9IHBhcmVudDo6dG9fZGF0YSgpOwogICAgICAgICRvdXQgPSBhcnJheV9tZXJnZSgkb3V0LCR0aGlzLT5fZGF0YSk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBWYWxpZGF0ZSB0aGlzIG9iamVjdC4KICAgICAqIFVwb24gZXJyb3IsIHRoaXMgbWV0aG9kIHRocm93cyBleGNlcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGUoKQogICAgewogICAgICAgIHBhcmVudDo6dmFsaWRhdGUoKTsKCiAgICAgICAgJGZuZCA9IDA7CiAgICAgICAgZm9yZWFjaCggJHRoaXMtPl9kYXRhIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICBjYXNlICdwcmVmaXgnOgogICAgICAgICAgICBjYXNlICdmaXJzdCc6CiAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6CiAgICAgICAgICAgIGNhc2UgJ2xhc3QnOgogICAgICAgICAgICBjYXNlICdzdWZmaXgnOgogICAgICAgICAgICAgICAgaWYoICR2YWwgIT0gJycgKSAkZm5kKys7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiggJGZuZCA9PSAwICkgewogICAgICAgICAgICBkZWJ1Z190b19sb2coJ25vIHZhbGlkIG5hbWUgYXQgJy5fX01FVEhPRF9fKTsKICAgICAgICAgICAgZGVidWdfYnRfdG9fbG9nKCk7CiAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0F0IGxlYXN0IHNvbWUgZGF0YSBtdXN0IGJlIHNwZWNpZmllZCBmb3IgYSBuYW1lIG9iamVjdCcpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgdmFsdWUgb2YgdGhpcyBvYmplY3QgaW4gYSBmb3JtIHRoYXQgY2FuIGJlIHNhdmVkIHRvIHRoZSBkYXRhYmFzZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Jhd192YWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZSgkdGhpcy0+X2RhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogRmlsbCB0aGlzIG9iamVjdCBmcm9tIGFuIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2RhdGEoJGRhdGEpCiAgICB7CiAgICAgICAgcGFyZW50OjpzZXRfZGF0YSgkZGF0YSk7CiAgICAgICAgaWYoIGlzc2V0KCRkYXRhWyd2YWx1ZSddKSApIHsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhID0gdW5zZXJpYWxpemUoJGRhdGFbJ3ZhbHVlJ10pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZm9yZWFjaCggJGRhdGEgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICAgICAgY2FzZSAncHJlZml4JzoKICAgICAgICAgICAgICAgIGNhc2UgJ2ZpcnN0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6CiAgICAgICAgICAgICAgICBjYXNlICdsYXN0JzoKICAgICAgICAgICAgICAgIGNhc2UgJ3N1ZmZpeCc6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_pagination.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcGFnaW5hdGlvbiBjbGFzcy4KICoKICogQHBhY2thZ2UgQ0dDb250YWN0cwogKiBAY2F0ZWdvcnkgVXRpbGl0aWVzCiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyBtYWtlcyBpdCBlYXN5IHRvIGdlbmVyYXRlIGEgcGFnaW5hdGlvbiB1c2VyIGludGVyZmFjZSB0byBzY3JvbGwgdGhyb3VnaCBwYWdlcyBvZiByZXN1bHRzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcXVlcnkuCiAqLwpmaW5hbCBjbGFzcyBjb250YWN0X3BhZ2luYXRpb24gZXh0ZW5kcyBcQ0dFeHRlbnNpb25zXHF1ZXJ5XHBhZ2luYXRpb24KewogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RvcgogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0X3Jlc3VsdHNldCAkcnMgVGhlIHJlc3VsdHNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNvbnRhY3RfcmVzdWx0c2V0ICYkcnMpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkcnMpOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_phone.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcGhvbmVfdmFsdWUgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEEgcGhvbmUgbnVtYmVyIGhhcyBhIHR5cGUsIGFzIHdlbGwgYXMgYSBsYWJlbCBhbmQgdmFsdWUuCiAqIFRoZSB0eXBlIGlzIGJhc2VkIG9uIFZDQVJEIDMuMCBzcGVjaWZpY2F0aW9ucy4KICovCmNsYXNzIGNvbnRhY3RfcGhvbmUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICBjb25zdCBUWVBFX1ZPSUNFICA9ICd2b2ljZSc7CiAgICBjb25zdCBUWVBFX01TRyAgICA9ICdtc2cnOwogICAgY29uc3QgVFlQRV9GQVggICAgPSAnZmF4JzsKICAgIGNvbnN0IFRZUEVfTU9CSUxFID0gJ21vYmlsZSc7CiAgICBjb25zdCBUWVBFX1BBR0VSICA9ICdwYWdlcic7CiAgICBjb25zdCBUWVBFX1ZJREVPICA9ICd2aWRlbyc7CiAgICBjb25zdCBUWVBFX1NBVCAgICA9ICdzYXRlbGxpdGUnOwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfZGF0YSA9IGFycmF5KCk7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Rvc3RyaW5nKCkKICAgIHsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDb250YWN0cycpOwogICAgICAgICRrZXkgPSAncGhvbmVfJy4kdGhpcy0+Z2V0X3R5cGUoKTsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF92YWx1ZSgpLicgKCcuJG1vZC0+TGFuZygka2V5KS4nKSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RvcgogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0ICRwYXJlbnQgVGhlIGNvbnRhY3QgdGhhdCB0aGlzIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdpdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChjb250YWN0ICYkcGFyZW50KSB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkcGFyZW50KTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3R5cGUnXSA9IHNlbGY6OlRZUEVfVk9JQ0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhpcyBwaG9uZSBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF90eXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwndHlwZScpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSB0eXBlIG9mIHRoaXMgcGhvbmUgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3R5cGUoJHZhbCkKICAgIHsKICAgICAgICAkdmFsID0gdHJpbSgoc3RyaW5nKSR2YWwpOwogICAgICAgIGlmKCAhJHZhbCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdpbnZhbGlkIHR5cGUgZm9yICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd0eXBlJ10gPSAkdmFsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSAocGhvbmUgbnVtYmVyKSBmb3IgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF92YWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkdGhpcy0+X2RhdGEsJ3ZhbHVlJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHZhbHVlIChwaG9uZSBudW1iZXIpIGZvciB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF92YWx1ZSgkdmFsKQogICAgewogICAgICAgICR2YWwgPSB0cmltKChzdHJpbmcpJHZhbCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJHZhbDsKICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogSWYgYW4gZXJyb3Igb2NjdXJzLCB0aGlzIG1ldGhvZCB0aHJvd3MgZXhjZXB0aW9ucy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfdHlwZSgpID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignTm8gdHlwZSBmb3IgcGhvbmUgb2JqZWN0Jyk7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfdmFsdWUoKSA9PSAnJyApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ05vIHZhbHVlIGZvciBwaG9uZSBvYmplY3QnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcmF3IHZhbHVlIG9mIHRoaXMgb2JqZWN0IHN1aXRhYmxlIGZvciBzYXZpbmcgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmF3X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VyaWFsaXplKCR0aGlzLT5fZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhpcyBvYmplY3QgcmVwcmVzZW50YWQgYXMgYW4gYXJyYXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b19kYXRhKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50Ojp0b19kYXRhKCk7CiAgICAgICAgJG91dFsndmFsdWUnXSA9ICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgICAgICAkb3V0Wyd0eXBlJ10gPSAkdGhpcy0+Z2V0X3R5cGUoKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbGwgdGhpcyBvYmplY3QgZnJvbSBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgIGlmKCBpc3NldCgkZGF0YVsndmFsdWUnXSkgKSB7CiAgICAgICAgICAgICR0bXAgPSBAdW5zZXJpYWxpemUoJGRhdGFbJ3ZhbHVlJ10pOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGEgPSAkdG1wOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJGRhdGFbJ3ZhbHVlJ107CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ3R5cGUnXSA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwndHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcXVlcnkgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFV0aWxpdGllcwogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIFRoaXMgY2xhc3MgY29udGFpbnMgYWxsIG9mIHRoZSBwYXJhbWV0ZXJzIHJlcXVpcmVkIHRvIGNvbGxlY3QgYSBzZXJpZXMgb2YgY29udGFjdHMgbWF0Y2hpbmcgYSBjcml0ZXJpYS4KICoKICogQHByb3BlcnR5IGludFtdICRpZGxpc3QgQXJyYXkgb2YgaW50ZWdlciBpZHMgdG8gcmV0dXJuLiAgSWYgc2V0LCB0aGUgbmFtZSwgZnVsbG5hbWUsIGNhdGVnb3J5LCBhbmQgY2F0Y2hpbGRyZW4gcHJvcGVydGllcyBhcmUgcmVzZXQuCiAqIEBwcm9wZXJ0eSBpbnQgJGxpbWl0IFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWNvcmRzIHRvIHJldHVybi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUwMC4KICogQHByb3BlcnR5IGludCAkb2Zmc2V0IFRoZSBzdGFydCBwb3NpdGlvbiB3aXRoaW4gdGhlIG1hdGNoZWQgdmFsdWVzIHRvIHJldHVybi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAKICogQHByb3BlcnR5IHN0cmluZyAkc29ydGJ5IFRoZSBjb2x1bW4gdG8gc29ydCBvbi4gIFBvc3NpYmxlIHZhbHVlcyBhcmU6IG1vZGlmaWVkLGZ1bGxuYW1lLG5pY2tuYW1lLGRpc3BsYXlfbmFtZSx0aXRsZSxjb21wYW55LHJvbGUuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBtb2RpZmllZC4KICogQHByb3BlcnR5IHN0cmluZyAkc29ydG9yZGVyIFRoZSBzb3J0IG9yZGVyLiAgUG9zc2libGUgdmFsdWVzIGFyZSBBU0MgYW5kIERFU0MuICBEZWZhdWx0IHZhbHVlIGlzICdBU0MnOwogKiBAcHJvZXBydHkgc3RyaW5nICRuYW1lIFNlYXJjaCBvbiBuYW1lIChvciBwYXJ0cyBvZiBhIG5hbWUpLiAgV2lsZGNhcmQgY2hhcmFjdGVycyBhcmUgYWNjZXB0ZWQuICBJZiBzZXQsIHRoZSBpZGxpc3QgYW5kIGZ1bGxuYW1lIHByb3BlcnRpZXMgYXJlIHJlc2V0LgogKiBAcHJvcGVydHkgc3RyaW5nICRjYXRlZ29yeSBBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzLCBvciBpZHMgdG8gZmlsdGVyIHVwb24uCiAqIEBwcm9wZXJ0eSBpbnQgJG1vZGlmaWVkX3NpbmNlIEZpbHRlciBhbGwgY29udGFjdHMgdGhhdCB3ZXJlIGxhc3QgbW9kaWZpZWQgYWZ0ZXIgdGhpcyB1bml4IHRpbWVzdGFtcC4KICogQHByb3BlcnR5IHN0cmluZyBwcm9wY2xhc3NbMC05XQogKiBAcHJvcGVydHkgc3RyaW5nIHByb3B2YWxbMC05XQogKiBAcHJvcGVydHkgYm9vbCAkY2F0Y2hpbGRyZW4gT3B0aW9uYWxseSBpbmNsdWRlLCBvciBleGNsdWRlIHRoZSBjaGlsZHJlbiBjYXRlZ29yaWVzIG9mIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcmllcyBmcm9tIHRoZSByZXN1bHRzLiAgRGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS4KICovCmZpbmFsIGNsYXNzIGNvbnRhY3RfcXVlcnkgZXh0ZW5kcyBcQ0dFeHRlbnNpb25zXHF1ZXJ5XHF1ZXJ5CnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfZGF0YSA9IGFycmF5KCdtb2RpZmllZF9zaW5jZSc9Pm51bGwsJ2lkbGlzdCc9Pm51bGwsJ2xpbWl0Jz0+NTAwLCdvZmZzZXQnPT4wLCdzb3J0YnknPT4nZnVsbG5hbWUnLCdzb3J0b3JkZXInPT4nYXNjJywnY2F0ZWdvcnknPT5udWxsLCdjYXRjaGlsZHJlbic9Pm51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdmZXVfdWlkJz0+bnVsbCwnbmFtZSc9Pm51bGwsJ2Z1bGxuYW1lJz0+bnVsbCwncHJvcHMnPT5hcnJheSgpLCd1c2VsaWtlJz0+ZmFsc2UpOwoKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJtcyBBbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRwYXJtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgZm9yZWFjaCggJHBhcm1zIGFzICRrZXkgPT4gJHZhbCApIHsKICAgICAgICAgICAgaWYoICFpbl9hcnJheSgka2V5LGFycmF5X2tleXMoJHRoaXMtPl9kYXRhKSkgKSBjb250aW51ZTsgLy8gaWdub3JlIHVua25vd25zCiAgICAgICAgICAgICR0aGlzWyRrZXldID0gJHZhbDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRHZXQoJGtleSkKICAgIHsKICAgICAgICBpZiggYXJyYXlfa2V5X2V4aXN0cygka2V5LCR0aGlzLT5fZGF0YSkgKSByZXR1cm4gJHRoaXMtPl9kYXRhWyRrZXldOwogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0U2V0KCRrZXksJHZhbHVlKQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZGxpc3QnOgogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbHVlKSAmJiBjb3VudCgkdmFsdWUpICkgewogICAgICAgICAgICAgICAgLy8gY2xlYW4gdXAgdGhlIGlkbGlzdAogICAgICAgICAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdmFsdWUgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICAkb25lID0gKGludCkgJG9uZTsKICAgICAgICAgICAgICAgICAgICAkdG1wW10gPSAkb25lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRtcCA9IGFycmF5X3VuaXF1ZSgkdG1wKTsKICAgICAgICAgICAgICAgIGlmKCBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVska2V5XSA9ICR0bXA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyduYW1lJ10gPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2NhdGVnb3J5J10gPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2NhdGNoaWxkcmVuJ10gPSBudWxsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAndXNlbGlrZSc6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IGNtc190b19ib29sKCR2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdtb2RpZmllZF9zaW5jZSc6CiAgICAgICAgICAgIGlmKCAhJHZhbHVlICkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gc3RydG90aW1lKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZnVsbG5hbWUnOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKCR2YWx1ZSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnbmFtZSddID0gbnVsbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ25hbWUnOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKCR2YWx1ZSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVsnZnVsbG5hbWUnXSA9IG51bGw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdmZXVfdWlkJzoKICAgICAgICAgICAgJHZhbHVlID0gKGludCkgJHZhbHVlOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdjYXRlZ29yeSc6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdjYXRjaGlsZHJlbic6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IFxjZ2VfdXRpbHM6OnRvX2Jvb2woJHZhbHVlKTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydpZGxpc3QnXSA9IG51bGw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdsaW1pdCc6CiAgICAgICAgICAgICR2YWx1ZSA9IG1heCgxLG1pbigxMDAwLChpbnQpJHZhbHVlKSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ29mZnNldCc6CiAgICAgICAgICAgICR2YWwgPSBtYXgoMCxtaW4oOTAwMDAwMCwoaW50KSR2YWx1ZSkpOwogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdzb3J0YnknOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKHN0cnRvbG93ZXIoJHZhbHVlKSk7CiAgICAgICAgICAgIHN3aXRjaCggJHZhbHVlICkgewogICAgICAgICAgICBjYXNlICdtb2RpZmllZCc6CiAgICAgICAgICAgIGNhc2UgJ2Z1bGxuYW1lJzoKICAgICAgICAgICAgY2FzZSAnbmlja25hbWUnOgogICAgICAgICAgICBjYXNlICdkaXNwbGF5X25hbWUnOiAvLyBzcGVjaWFsIHZhbHVlCiAgICAgICAgICAgIGNhc2UgJ3RpdGxlJzoKICAgICAgICAgICAgY2FzZSAnY29tcGFueSc6CiAgICAgICAgICAgIGNhc2UgJ3JvbGUnOgogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignSW52YWxpZCBzb3J0YnkgdmFsdWUgJy4kdmFsdWUuJyBmb3IgJy5fX0NMQVNTX18pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdzb3J0b3JkZXInOgogICAgICAgICAgICAkdmFsdWUgPSB0cmltKHN0cnRvdXBwZXIoJHZhbHVlKSk7CiAgICAgICAgICAgIHN3aXRjaCggJHZhbHVlICkgewogICAgICAgICAgICBjYXNlICdBU0MnOgogICAgICAgICAgICBjYXNlICdERVNDJzoKICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0ludmFsaWQgc29ydG9yZGVyIHZhbHVlICcuJHZhbHVlLicgZm9yICcuX19DTEFTU19fKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgaWYoIHN0YXJ0c3dpdGgoJGtleSwncHJvcGNsYXNzJykgfHwgc3RhcnRzd2l0aCgka2V5LCdwcm9wdmFsJykgfHwgc3RhcnRzd2l0aCgka2V5LCdwcm9wbGFiZWwnKSApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fZGF0YVsncHJvcHMnXVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCRrZXkuJyBpcyBub3QgYSB2YWxpZCBwcm9wZXJ0eSBmb3IgYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCRrZXkpCiAgICB7CiAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRVbnNldCgka2V5KQogICAgewogICAgICAgIC8vIGRvIG5vdGhpbmcKICAgIH0KCiAgICAvKioKICAgICAqIEV4ZWN1dGUgdGhlIHF1ZXJ5LgogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9yZXN1bHRzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uICZleGVjdXRlKCkKICAgIHsKICAgICAgICAkcnMgPSBuZXcgY29udGFjdF9yZXN1bHRzZXQoJHRoaXMpOwogICAgICAgIHJldHVybiAkcnM7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_resultset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfcmVzdWx0c2V0IGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBVdGlsaXRpZXMKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYSBxdWVyeSBmcm9tIGNvbnRhY3RfcXVlcnkuCiAqLwpmaW5hbCBjbGFzcyBjb250YWN0X3Jlc3VsdHNldCBleHRlbmRzIFxDR0V4dGVuc2lvbnNccXVlcnlccmVzdWx0c2V0CnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlICRfcHJlbG9hZGVkX2NhdHM7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9wcmVsb2FkZWRfb2JqZWN0czsKCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX3ByZWxvYWRlZF9jb250YWN0czsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBjb250YWN0X3F1ZXJ5ICRxdWVyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY29udGFjdF9xdWVyeSAkcXVlcnkpCiAgICB7CiAgICAgICAgJHRoaXMtPl9maWx0ZXIgPSAkcXVlcnk7CiAgICAgICAgJHRoaXMtPl9xdWVyeSgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBxdWVyeSB1c2VkIHRvIGNvbnN0cnVjdCB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNvbnRhY3RfcXVlcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uICZnZXRfcXVlcnkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2ZpbHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9xdWVyeSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm47CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgU1FMX0NBTENfRk9VTkRfUk9XUyAlY29scyUgRlJPTSAnLkNHQ09OVEFDVFNfVEJMLicgQyAnOwogICAgICAgICRjb2xzID0gYXJyYXkoJ0MuaWQnKTsKICAgICAgICAkd2hlcmUgPSBhcnJheSgpOwogICAgICAgICRqb2lucyA9IGFycmF5KCk7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgICAkdXNlbGlrZSA9IFxjZ2VfcGFyYW06OmdldF9ib29sKCR0aGlzLT5fZmlsdGVyLCd1c2VybGlrZScpOwoKICAgICAgICBpZiggKCRpZGxpc3QgPSAkdGhpcy0+X2ZpbHRlclsnaWRsaXN0J10pICkgewogICAgICAgICAgICAkc3RyID0gJygnLmltcGxvZGUoJywnLCRpZGxpc3QpLicpJzsKICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5pZCBJTiAnLiRzdHI7CiAgICAgICAgfQoKICAgICAgICBpZiggJHRoaXMtPl9maWx0ZXJbJ25hbWUnXSApIHsKICAgICAgICAgICAgLy8gbmFtZSBhdXRvbWF0aWNhbGx5IHVzZXMgbGlrZQogICAgICAgICAgICAkc3RyID0gdHJpbSgkdGhpcy0+X2ZpbHRlclsnbmFtZSddKTsKICAgICAgICAgICAgaWYoIHN0cmxlbigkc3RyKSA+IDEgKSB7CiAgICAgICAgICAgICAgICAvLyBtaW5pbXVtIDIgY2hhcmFjdGVycywgY2FuIG5vdyB1c2UgbGlrZSBleHByZXNzaW9uLgogICAgICAgICAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkc3RyID0gIiV7JHN0cn0lIjsKICAgICAgICAgICAgICAgICR0bXBbXSA9ICdDLmZ1bGxuYW1lIExJS0UgPyc7CiAgICAgICAgICAgICAgICAkdG1wW10gPSAnQy5uaWNrbmFtZSBMSUtFID8nOwogICAgICAgICAgICAgICAgJGpvaW5zWyduYW1lJ10gPSBDR0NPTlRBQ1RTX1NVQl9UQkwuJyBTVSBPTiBDLmlkID0gU1UuY29udGFjdF9pZCBBTkQgU1UuY2xhc3MgPSBcJ2NvbnRhY3RfbmFtZVwnJzsKICAgICAgICAgICAgICAgICR0bXBbXSA9ICdTVS52YWx1ZSBsaWtlID8nOwogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnKCcuaW1wbG9kZSgnIE9SICcsJHRtcCkuJyknOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkc3RyOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkc3RyOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkc3RyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiggKCR2YWwgPSAkdGhpcy0+X2ZpbHRlclsnZmV1X3VpZCddKSApIHsKICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5mZXVfdWlkID0gPyc7CiAgICAgICAgICAgICRwYXJtc1tdID0gJHZhbDsKICAgICAgICB9CgogICAgICAgIGlmKCAoJHZhbCA9ICR0aGlzLT5fZmlsdGVyWydmdWxsbmFtZSddKSApIHsKICAgICAgICAgICAgaWYoICR1c2VsaWtlICkgewogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5mdWxsbmFtZSBMSUtFID8nOwogICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkdGhpcy0+d2lsZGNhcmQoJHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICdDLmZ1bGxuYW1lID0gPyc7CiAgICAgICAgICAgICAgICAkcGFybXNbXSA9ICR2YWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAoJHZhbCA9ICR0aGlzLT5fZmlsdGVyWydtb2RpZmllZF9zaW5jZSddKSApIHsKICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5tb2RpZmllZCA+PSA/JzsKICAgICAgICAgICAgJHBhcm1zW10gPSAkdmFsOwogICAgICAgIH0KCiAgICAgICAgaWYoICR0aGlzLT5fZmlsdGVyWydjYXRlZ29yeSddICkgewogICAgICAgICAgICAkY2F0ZWdvcnlfaWRfbGlzdCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjYXRlZ29yeSA9ICR0aGlzLT5fZmlsdGVyWydjYXRlZ29yeSddOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCRjYXRlZ29yeSkgKSAkY2F0ZWdvcnkgPSBleHBsb2RlKCcsJywkY2F0ZWdvcnkpOwoKICAgICAgICAgICAgZm9yZWFjaCggJGNhdGVnb3J5IGFzICRvbmVjYXQgKSB7CiAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gYSBjYXRlZ29yeSBpZC4KICAgICAgICAgICAgICAgICRpZCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiggaXNfbnVtZXJpYygkb25lY2F0KSAmJiAoaW50KSAkb25lY2F0ID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaWQgPSAkb25lY2F0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGlkID0gY2F0ZWdvcnk6OmdldF9jYXRlZ29yeV9pZCgkb25lY2F0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCAhJGlkICkgY29udGludWU7CgogICAgICAgICAgICAgICAgaWYoICEkdGhpcy0+X2ZpbHRlclsnY2F0Y2hpbGRyZW4nXSApIHsKICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcnlfaWRfbGlzdFtdID0gJGlkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9IGNhdGVnb3J5OjpleHBhbmRfY2F0ZWdvcnkoJGlkKTsKICAgICAgICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSAkY2F0ZWdvcnlfaWRfbGlzdCA9IGFycmF5X21lcmdlKCRjYXRlZ29yeV9pZF9saXN0LCR0bXApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpZiB3ZSBzcGVjaWZpZWQgY2F0ZWdvcmllcywgYnV0IGNvdWxkbid0IGZpbmQgYW55IGNhdGVnb3J5IGlkcwogICAgICAgICAgICAvLyB0aGVuIHdlIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXRlbSB3aWxsIG1hdGNoIG5vIGNhdGVnb3JpZXMKICAgICAgICAgICAgaWYoICFjb3VudCgkY2F0ZWdvcnlfaWRfbGlzdCkgKSAkY2F0ZWdvcnlfaWRfbGlzdFtdID0gLTk5OTsKICAgICAgICAgICAgJGNvbHNbXSA9ICdBQy5jYXRfaWQgQVMgY2F0X2lkJzsKICAgICAgICAgICAgJGpvaW5zWydhZHJfY2F0cyddID0gQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyBBQyBPTiBDLmlkID0gQUMuY29udGFjdF9pZCc7CiAgICAgICAgICAgICR3aGVyZVtdID0gJ0FDLmNhdF9pZCBJTiAoJy5pbXBsb2RlKCcsJywkY2F0ZWdvcnlfaWRfbGlzdCkuJyknOwogICAgICAgIH0KCiAgICAgICAgaWYoIGNvdW50KCR0aGlzLT5fZmlsdGVyWydwcm9wcyddKSApIHsKICAgICAgICAgICAgJHByb3BzID0gJHRoaXMtPl9maWx0ZXJbJ3Byb3BzJ107CiAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8IDUwOyAkaSsrICkgewogICAgICAgICAgICAgICAgJGtleTEgPSAncHJvcGNsYXNzJy4kaTsKICAgICAgICAgICAgICAgICRrZXkyID0gJ3Byb3B2YWwnLiRpOwogICAgICAgICAgICAgICAgJGtleTMgPSAncHJvcGxhYmVsJy4kaTsKICAgICAgICAgICAgICAgICRrZXkgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwcm9wcywka2V5MSk7CiAgICAgICAgICAgICAgICAkdmFsID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcHJvcHMsJGtleTIpOwogICAgICAgICAgICAgICAgJGxibCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHByb3BzLCRrZXkzKTsKICAgICAgICAgICAgICAgIGlmKCAhJGtleSAmJiAhJHZhbCApIGJyZWFrOwoKICAgICAgICAgICAgICAgICRra2V5ID0gJ3Byb3BzJy4kaTsKICAgICAgICAgICAgICAgICRqb2luc1ska2tleV0gPSBDR0NPTlRBQ1RTX1NVQl9UQkwuIiAka2tleSBPTiBDLmlkID0gJGtrZXkuY29udGFjdF9pZCI7CiAgICAgICAgICAgICAgICBpZiggJGxibCApIHsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICIka2tleS5sYWJlbCA9ID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJGxibDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCAkdXNlbGlrZSApIHsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICIka2tleS52YWx1ZSBMSUtFID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJHRoaXMtPndpbGRjYXJkKCR2YWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAiJGtrZXkudmFsdWUgPSA/IjsKICAgICAgICAgICAgICAgICAgICAkcGFybXNbXSA9ICR2YWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vCiAgICAgICAgLy8gQlVJTEQgVEhJUyBRVUVSWQogICAgICAgIC8vCgogICAgICAgIGlmKCBjb3VudCgkam9pbnMpICkgewogICAgICAgICAgICAkcXVlcnkgLj0gJyBMRUZUIEpPSU4gJy5pbXBsb2RlKCcgTEVGVCBKT0lOICcsJGpvaW5zKTsKICAgICAgICB9CiAgICAgICAgaWYoIGNvdW50KCR3aGVyZSkgKSB7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIFdIRVJFICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CiAgICAgICAgfQoKICAgICAgICAkcXVlcnkgLj0gJyBHUk9VUCBCWSBDLmlkJzsKCiAgICAgICAgc3dpdGNoKCAkdGhpcy0+X2ZpbHRlclsnc29ydGJ5J10gKSB7CiAgICAgICAgY2FzZSAnbW9kaWZpZWQnOgogICAgICAgIGNhc2UgJ2Z1bGxuYW1lJzoKICAgICAgICBjYXNlICduaWNrbmFtZSc6CiAgICAgICAgY2FzZSAndGl0bGUnOgogICAgICAgIGNhc2UgJ2NvbXBhbnknOgogICAgICAgIGNhc2UgJ3JvbGUnOgogICAgICAgICAgICAkcXVlcnkgLj0gJyBPUkRFUiBCWSAnLiR0aGlzLT5fZmlsdGVyWydzb3J0YnknXTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2Rpc3BsYXlfbmFtZSc6IC8vIHNwZWNpYWwgdmFsdWUKICAgICAgICAgICAgZGllKCdub3QgZG9uZSAnLl9fRklMRV9fLic6OicuX19MSU5FX18pOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoKCAkdGhpcy0+X2ZpbHRlclsnc29ydG9yZGVyJ10gKSB7CiAgICAgICAgY2FzZSAnQVNDJzoKICAgICAgICBjYXNlICdERVNDJzoKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgJy4kdGhpcy0+X2ZpbHRlclsnc29ydG9yZGVyJ107CiAgICAgICAgfQogICAgICAgICRxdWVyeSA9IHN0cl9yZXBsYWNlKCclY29scyUnLGltcGxvZGUoJywnLCRjb2xzKSwkcXVlcnkpOwoKICAgICAgICAvLyBjYWxjdWxhdGUgaW5kZXhlcwoKICAgICAgICAvLyBub3cgZXhlY3V0ZSB0aGUgdGhpbmcKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICAkdGhpcy0+X3JzID0gJGRiLT5TZWxlY3RMaW1pdCgkcXVlcnksJHRoaXMtPl9maWx0ZXJbJ2xpbWl0J10sJHRoaXMtPl9maWx0ZXJbJ29mZnNldCddLCRwYXJtcyk7CiAgICAgICAgaWYoICEkdGhpcy0+X3JzICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ0lOVEVSTkFMIEVSUk9SOiBRdWVyeSBmYWlsZWQgLSAnLiRkYi0+c3FsLicgLS0gJy4kZGItPkVycm9yTXNnKCkpOwogICAgICAgICR0aGlzLT5fdG90YWxtYXRjaGluZyA9IChpbnQpICRkYi0+R2V0T25lKCdTRUxFQ1QgRk9VTkRfUk9XUygpJyk7CgogICAgICAgICR0aGlzLT5fcHJlbG9hZCgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXIgb2YgcmVjb3JkcyByZXR1cm5lZCBpbiB0aGlzIHJlc3VsdHNldC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gUmVjb3JkQ291bnQoKQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkoKTsKICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5SZWNvcmRDb3VudCgpOwogICAgfQoKICAgIC8qKgogICAgICogTW92ZSB0byB0aGUgbmV4dCByZWNvcmQgaW4gdGhlIHJlc3VsdHNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIE1vdmVOZXh0KCkKICAgIHsKICAgICAgICAkdGhpcy0+X3F1ZXJ5KCk7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+TW92ZU5leHQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1vdmUgdG8gdGhlIGZpcnN0IHJlY29yZCBpbiB0aGUgcmVzdWx0c2V0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gTW92ZUZpcnN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+X3F1ZXJ5KCk7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+TW92ZUZpcnN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNb3ZlIHRvIHRoZSBmaXJzdCByZWNvcmQgaW4gdGhlIHJlc3VsdHNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFJld2luZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5Nb3ZlRmlyc3QoKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1vdmUgdG8gdGhlIGxhc3QgcmVjb3JkIGluIHRoZSByZXN1bHRzZXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBNb3ZlTGFzdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPl9xdWVyeSgpOwogICAgICAgIGlmKCAkdGhpcy0+X3JzICkgcmV0dXJuICR0aGlzLT5fcnMtPk1vdmVMYXN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSByZXN1bHRzZXQuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBFT0YoKQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkoKTsKICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5FT0YoKTsKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICAvKioKICAgICAqIENsb3NlIHRoZSByZXN1bHRzZXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBDbG9zZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+Q2xvc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIHJlY29yZHMgdGhhdCBtYXRjaCB0aGUgcXVlcnkgKG5vdCBvbmx5IGluIHRoaXMgcmVjb3Jkc2V0KS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gVG90YWxNYXRjaGVzKCkKICAgIHsKICAgICAgICAkdGhpcy0+X3F1ZXJ5KCk7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fdG90YWxtYXRjaGluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9wcmVsb2FkKCkKICAgIHsKICAgICAgICBpZiggISR0aGlzLT5fcnMgKSByZXR1cm47CgogICAgICAgICRpZGxpc3QgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT5fcnMtPk1vdmVGaXJzdCgpOwogICAgICAgIHdoaWxlKCAhJHRoaXMtPkVPRigpICkgewogICAgICAgICAgICAkaWRsaXN0W10gPSAoaW50KSR0aGlzLT5maWVsZHNbJ2lkJ107CiAgICAgICAgICAgICR0aGlzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+X3JzLT5Nb3ZlRmlyc3QoKTsKICAgICAgICAkaWRsaXN0ID0gYXJyYXlfdW5pcXVlKCRpZGxpc3QpOwoKICAgICAgICBpZiggIWNvdW50KCRpZGxpc3QpICkgcmV0dXJuOyAvLyBub3RoaW5nIHRvIGRvLgoKICAgICAgICAkZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKCiAgICAgICAgLy8gcHJlbG9hZCB0aGUgY29udGFjdCBvYmplY3RzCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCxzdGF0dXMsZ3VpZCxpbWFnZSxsb2dvLGZ1bGxuYW1lLG5pY2tuYW1lLGNvbXBhbnksdGl0bGUscm9sZSxub3RlLG1vZGlmaWVkIEZST00gJy5DR0NPTlRBQ1RTX1RCTC4nIFdIRVJFIGlkIElOKCcuaW1wbG9kZSgnLCcsJGlkbGlzdCkuJykgT1JERVIgQlkgaWQnOwogICAgICAgICRjb250YWN0cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICBpZiggIWlzX2FycmF5KCRjb250YWN0cykgfHwgY291bnQoJGNvbnRhY3RzKSA9PSAwICkgcmV0dXJuOyAvLyB0aGlzIGlzIHdlaXJkCiAgICAgICAgJHRoaXMtPl9wcmVsb2FkZWRfY29udGFjdHMgPSBcY2dlX2FycmF5Ojp0b19oYXNoKCRjb250YWN0cywnaWQnKTsKCiAgICAgICAgLy8gcHJlbG9hZCB0aGUgb2JqZWN0cwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY29udGFjdF9pZCxwcmVmZXJyZWQsY2xhc3MsbGFiZWwsdmFsdWUgRlJPTSAnLkNHQ09OVEFDVFNfU1VCX1RCTC4nIFdIRVJFIGNvbnRhY3RfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJGlkbGlzdCkuJykgT1JERVIgQlkgY29udGFjdF9pZCwgcHJlZmVycmVkLCBjbGFzcywgbGFiZWwnOwogICAgICAgICRvYmplY3RzID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgIGlmKCBpc19hcnJheSgkb2JqZWN0cykgJiYgY291bnQoJG9iamVjdHMpICkgJHRoaXMtPl9wcmVsb2FkZWRfb2JqZWN0cyA9ICRvYmplY3RzOwoKICAgICAgICAvLyBwcmVsb2FkIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjb250YWN0X2lkLGNhdF9pZCBGUk9NICcuQ0dDT05UQUNUU19BRFJfQ0FUU19UQkwuJyBXSEVSRSBjb250YWN0X2lkIElOICgnLmltcGxvZGUoJywnLCRpZGxpc3QpLicpIE9SREVSIEJZIGNvbnRhY3RfaWQnOwogICAgICAgICRjYXRlZ29yaWVzID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgICAgIGlmKCBpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgY291bnQoJGNhdGVnb3JpZXMpKSAkdGhpcy0+X3ByZWxvYWRlZF9jYXRzID0gJGNhdGVnb3JpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNvbnRhY3Qgb2JqZWN0IGZvciB0aGUgY3VycmVudCByZWNvcmQuCiAgICAgKgogICAgICogQHJldHVybiBjb250YWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0X29iamVjdCgpCiAgICB7CiAgICAgICAgJHJldCA9IG51bGw7CiAgICAgICAgaWYoICEkdGhpcy0+X3JzICkgcmV0dXJuICRyZXQ7CgogICAgICAgICRjb250YWN0X2lkID0gJHRoaXMtPmZpZWxkc1snaWQnXTsKICAgICAgICBpZiggIWlzc2V0KCR0aGlzLT5fcHJlbG9hZGVkX2NvbnRhY3RzWyRjb250YWN0X2lkXSkgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnRlcm5hbCBlcnJvcjogc29tZWhvdyB0aGUgY29udGFjdCBpbmZvIGZvciB0aGlzIGNvbnRhY3Qgd2FzIG5vdCBwcmVsb2FkZWQnKTsKICAgICAgICB9CgogICAgICAgICRjb250YWN0ID0gJHRoaXMtPl9wcmVsb2FkZWRfY29udGFjdHNbJGNvbnRhY3RfaWRdOwoKICAgICAgICAvLyBtZXJnZSBpbiB0aGUgb2JqZWN0cywgaWYgYW55CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPl9wcmVsb2FkZWRfb2JqZWN0cyk7ICRpKysgKSB7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+X3ByZWxvYWRlZF9vYmplY3RzWyRpXVsnY29udGFjdF9pZCddICE9ICRjb250YWN0X2lkICkgY29udGludWU7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJGNvbnRhY3RbJ29iamVjdHMnXSkgKSAkY29udGFjdFsnb2JqZWN0cyddID0gYXJyYXkoKTsKCiAgICAgICAgICAgICRjb250YWN0WydvYmplY3RzJ11bXSA9ICR0aGlzLT5fcHJlbG9hZGVkX29iamVjdHNbJGldOwogICAgICAgIH0KCiAgICAgICAgLy8gbWVyZ2UgaW4gdGhlIGNhdGVnb3JpZXMsIGlmIGFueQogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fcHJlbG9hZGVkX2NhdHMpOyAkaSsrICkgewogICAgICAgICAgICBpZiggJHRoaXMtPl9wcmVsb2FkZWRfY2F0c1skaV1bJ2NvbnRhY3RfaWQnXSAhPSAkY29udGFjdF9pZCApIGNvbnRpbnVlOwogICAgICAgICAgICBpZiggIWlzc2V0KCRjb250YWN0WydjYXRlZ29yaWVzJ10pICkgJGNvbnRhY3RbJ2NhdGVnb3JpZXMnXSA9IGFycmF5KCk7CgogICAgICAgICAgICAkY29udGFjdFsnY2F0ZWdvcmllcyddW10gPSAkdGhpcy0+X3ByZWxvYWRlZF9jYXRzWyRpXTsKICAgICAgICB9CgogICAgICAgICRvYmogPSBuZXcgY29udGFjdDsKICAgICAgICAkb2JqLT5mcm9tX2RhdGEoJGNvbnRhY3QpOwogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb250YWN0IG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVjb3JkLgogICAgICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIGdldF9vYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBjb250YWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0X2NvbnRhY3QoKQogICAgewogICAgICAgICR0bXAgPSAkdGhpcy0+Z2V0X29iamVjdCgpOwogICAgICAgIHJldHVybiAkdG1wOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIG9iamVjdCB0byBhaWRlIGluIHNjcm9sbGluZyB0aHJvdWdoIHRoZSBkaWZmZXJlbnQgcGFnZXMgb2Ygb2JqZWN0cwogICAgICogdGhhdCBtYXRjaCB0aGlzIHF1ZXJ5LgogICAgICoKICAgICAqIEByZXR1cm4gY29udGFjdF9wYWdpbmF0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0X3BhZ2luYXRpb24oKQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkoKTsKICAgICAgICAkb2JqID0gbmV3IGNvbnRhY3RfcGFnaW5hdGlvbigkdGhpcyk7CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_score01.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBIGRlZmluaXRpb24gZm9yIGEgc2ltcGxlIGNsYXNzIHRoYXQgYWNjZXB0cyBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMQogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIHNpbXBsZSBjbGFzcyB0byBhbGxvdyBzdG9yaW5nIGEgZGFpbHkgd2FnZSAoYSBudW1iZXIpIHdpdGggYSBjb250YWN0LgogKi8KY2xhc3MgY29udGFjdF9zY29yZTAxIGV4dGVuZHMgXENHQ29udGFjdHNcY29udGFjdF9zaW5nbGVfdmFsdWUKewogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgJHZhbCA9IChmbG9hdCkgJHRoaXMtPmdldF92YWx1ZSgpOwogICAgICAgIGlmKCAkdmFsIDwgMCB8fCAkdmFsID4gMSApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ1RoZSB2YWx1ZSBmb3IgdGhlIHNjb3JlIGlzIGludmFsaWQnKTsKICAgIH0KfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_simple_value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3Rfc2ltcGxlX3ZhbHVlIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgZGVmaW5lcyBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIHZhbHVlLgogKi8KYWJzdHJhY3QgY2xhc3MgY29udGFjdF9zaW1wbGVfdmFsdWUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwndmFsdWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ZhbHVlKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJHZhbDsKICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBleGNlcHRpb25zIG9uIGFuIGVycm9yLgogICAgICoKICAgICAqIEBhYnN0cmFjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICEkdGhpcy0+Z2V0X3ZhbHVlKCkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBlYWNoIHNhdmVkIGNvbnRhY3Qgb2JqZWN0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJhdyB2YWx1ZSBvZiB0aGlzIG9iamVjdCwgc3VpdGFibGUgZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmF3X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgb2JqZWN0IGludG8gYW4gYXJyYXkuCiAgICAgKgogICAgICogQGluZ2VybmFsCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b19kYXRhKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50Ojp0b19kYXRhKCk7CiAgICAgICAgJG91dFsndmFsdWUnXSA9ICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbGwgdGhpcyBvYmplY3QgZnJvbSBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgICR0aGlzLT5fZGF0YVsndmFsdWUnXSA9ICRkYXRhWyd2YWx1ZSddOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_single_value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3Rfc2luZ2xlX3ZhbHVlIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgZGVmaW5lcyBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIHZhbHVlLCBhbmQgY2FuIG9ubHkgaGF2ZSBvbmUgb2YgdGhpcyB0eXBlLgogKi8KYWJzdHJhY3QgY2xhc3MgY29udGFjdF9zaW5nbGVfdmFsdWUgZXh0ZW5kcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IKICAgICAqCiAgICAgKiBAcGFyYW0gY29udGFjdCAkcGFyZW50IEEgcmVmZXJlbmNlIHRvIHRoZSBjb250YWN0IG9iamVjdCB0aGF0IHdpbGwgb3duIHRoaXMgb2JqZWN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY29udGFjdCAmJHBhcmVudCkgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHBhcmVudCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWydwcmVmZXJyZWQnXSA9IFRSVUU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdmFsdWUoKQogICAgewogICAgICAgIHJldHVybiBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCd2YWx1ZScpOwogICAgfQoKCiAgICAvKioKICAgICAqIFRlc3QgaWYgdGhpcyBvYmplY3QgaXMgYSBwcmVmZXJyZWQgb2JqZWN0IG9mIGl0cyB0eXBlIGZvciB0aGlzIGNvbnRhY3QuCiAgICAgKiBGb3IgdGhlIGNvbnRhY3Rfc2luZ2xlX3ZhbHVlIG9iamVjdHMsIHRoaXMgaXMgYWx3YXlzIHRydWUuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc19wcmVmZXJyZWQoKQogICAgewogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwcmVmZXJyZWQgZmxhZyBmb3IgdGhpcyBvYmplY3QuCiAgICAgKiBmb3IgY29udGFjdF9zaW5nbGVfdmFsdWUgb2JqZWN0cywgdGhlIHByZWZlcnJlZCBzdGF0dXMgY2Fubm90IGJlIHVuc2V0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkZmxhZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ByZWZlcnJlZCgkZmxhZyA9IFRSVUUpCiAgICB7CiAgICAgICAgJGZsYWcgPSB0cnVlOwogICAgICAgICR0aGlzLT5fZGF0YVsncHJlZmVycmVkJ10gPSAkZmxhZzsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlcmUgY2FuIGJlIG11bHRpcGxlIG9iamVjdHMgb2YgdGhpcyB0eXBlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBhbGxvd3NfbXVsdGlwbGUoKQogICAgewogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3ZhbHVlKCR2YWwpCiAgICB7CiAgICAgICAgJHZhbCA9IHRyaW0oKHN0cmluZykgJHZhbCk7CiAgICAgICAgJHRoaXMtPl9kYXRhWyd2YWx1ZSddID0gJHZhbDsKICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlIHRoaXMgb2JqZWN0LgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBleGNlcHRpb25zIG9uIGFuIGVycm9yLgogICAgICoKICAgICAqIEBhYnN0cmFjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OnZhbGlkYXRlKCk7CiAgICAgICAgaWYoICEkdGhpcy0+Z2V0X3ZhbHVlKCkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdBIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBlYWNoIHNhdmVkIGNvbnRhY3Qgb2JqZWN0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHJhdyB2YWx1ZSBvZiB0aGlzIG9iamVjdCwgc3VpdGFibGUgZm9yIHN0b3JpbmcgaW4gdGhlIGRhdGFiYXNlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmF3X3ZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldF92YWx1ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCB0aGUgb2JqZWN0IGludG8gYW4gYXJyYXkuCiAgICAgKgogICAgICogQGluZ2VybmFsCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b19kYXRhKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50Ojp0b19kYXRhKCk7CiAgICAgICAgJG91dFsndmFsdWUnXSA9ICR0aGlzLT5nZXRfdmFsdWUoKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbGwgdGhpcyBvYmplY3QgZnJvbSBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldF9kYXRhKCRkYXRhKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X2RhdGEoJGRhdGEpOwogICAgICAgICR0aGlzLT5fZGF0YVsndmFsdWUnXSA9ICRkYXRhWyd2YWx1ZSddOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_smarty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBVdGlsaXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogQSB1dGlsaXR5IGNsYXNzIGNvbnRhaW5pbmcgc21hcnR5IHBsdWdpbnMuCiAqCiAqIEBpZ25vcmUKICovCmZpbmFsIGNsYXNzIGNvbnRhY3Rfc21hcnR5CnsKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkaXNwbGF5bmFtZSgkcGFyYW1zLCYkdHBsKQogICAgewogICAgICAgICRjb250YWN0X2lkID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdpZCcpOwogICAgICAgICRjb250YWN0X2lkID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdjb250YWN0X2lkJywkY29udGFjdF9pZCk7CiAgICAgICAgJGFzc2lnbiA9IHRyaW0oXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdhc3NpZ24nKSk7CgogICAgICAgICRvdXQgPSBudWxsOwogICAgICAgIGlmKCAkY29udGFjdF9pZCA+IDAgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkY29udGFjdCA9IGNvbnRhY3Q6OmxvYWQoJGNvbnRhY3RfaWQpOwogICAgICAgICAgICAgICAgJG91dCA9ICRjb250YWN0LT5nZXRfZGlzcGxheV9uYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoICRhc3NpZ24gKSB7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbigkYXNzaWduLCRvdXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkb3V0OwogICAgICAgIH0KICAgIH0KfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_string.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHNpbXBsZSBzdHJpbmcgcHJvcGVydHkgZm9yIGEgY29udGFjdC4KICovCmNsYXNzIGNvbnRhY3Rfc3RyaW5nIGV4dGVuZHMgXENHQ29udGFjdHNcY29udGFjdF9zaW1wbGVfdmFsdWUge30KCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_sub.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3QgY2xhc3MuCiAqCiAqIEBwYWNrYWdlIENHQ29udGFjdHMKICogQGNhdGVnb3J5IFByb2R1Y3Rpdml0eQogKiBAYXV0aG9yICBjYWxndXkxMDAwIDxjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnPgogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAogKi8KCm5hbWVzcGFjZSBDR0NvbnRhY3RzOwoKLyoqCiAqIEFuIGFic3RyYWN0IGNsYXNzIHRvIGRlc2NyaWJlIGEgYmFzaWMgb2JqZWN0LgogKiBBIGNvbnRhY3QgY2FuIGNvbnNpc3Qgb2YgbXVsdGlwbGUgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMuCiAqLwphYnN0cmFjdCBjbGFzcyBjb250YWN0X3N1Ygp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX2NvbnRhY3Q7CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHByaXZhdGUgJF9kYXRhID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKgogICAgICogQHBhcmFtIGNvbnRhY3QgJHBhcmVudCBBIHJlZmVyZW5jZSB0byB0aGUgY29udGFjdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGlzIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNvbnRhY3QgJiRwYXJlbnQpIHsKICAgICAgICAkdGhpcy0+X2NvbnRhY3QgPSAkcGFyZW50OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBpZCBvZiB0aGUgcGFyZW50IGNvbnRhY3Qgb2JqZWN0LgogICAgICogSWYgdGhlIGNvbnRhY3Qgb2JqZWN0IGlzIG5ldyBhbmQgaGFzIG5vdCBiZWVuIHNhdmVkLCBpdCBtYXkgbm90IGhhdmUgYW4gaWQuCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jb250YWN0X2lkKCkKICAgIHsKICAgICAgICAkaWQgPSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdjb250YWN0X2lkJyk7CiAgICAgICAgaWYoICEkaWQgKSByZXR1cm4gJHRoaXMtPl9wYXJlbnQtPmdldF9pZCgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjbGFzcyAodHlwZSkgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jbGFzcygpIHsKICAgICAgICAkY2xhc3MgPSBnZXRfY2xhc3MoJHRoaXMpOwogICAgICAgICRjbGFzcyA9IHN0cl9yZXBsYWNlKCdcXCcsJy8nLCRjbGFzcyk7CiAgICAgICAgcmV0dXJuIGJhc2VuYW1lKCRjbGFzcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxhYmVsLCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2xhYmVsKCkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCR0aGlzLT5fZGF0YSwnbGFiZWwnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBhIGxhYmVsIGZvciB0aGlzIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYWJlbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2xhYmVsKCRsYWJlbCkKICAgIHsKICAgICAgICAkbGFiZWwgPSB0cmltKCRsYWJlbCk7CiAgICAgICAgaWYoICEkbGFiZWwgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCdsYWJlbCBjYW5ub3QgYmUgZW1wdHkgaW4gYSAnLiR0aGlzLT5nZXRfY2xhc3MoKS4nIG9iamVjdCcpOwogICAgICAgICR0aGlzLT5fZGF0YVsnbGFiZWwnXSA9IHRyaW0oKHN0cmluZykkbGFiZWwpOwogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBpZiB0aGlzIG9iamVjdCBpcyBhIHByZWZlcnJlZCBvYmplY3Qgb2YgaXRzIHR5cGUgZm9yIHRoaXMgY29udGFjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzX3ByZWZlcnJlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChib29sKSBcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHRoaXMtPl9kYXRhLCdwcmVmZXJyZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgcHJlZmVycmVkIGZsYWcgZm9yIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYXR0ZW1wdCB0byBpbnRlcnByZXQgdGhlIHBhc3NlZCB2YWx1ZSBhcyBhIGJvb2xlYW4gaW4gYW55IHdheSBpdCBjYW4uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRmbGFnCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfcHJlZmVycmVkKCRmbGFnID0gVFJVRSkKICAgIHsKICAgICAgICAkZmxhZyA9IChib29sKSBcY2dlX3V0aWxzOjp0b19ib29sKCRmbGFnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ3ByZWZlcnJlZCddID0gJGZsYWc7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBvYmplY3RzIG9mIHRoaXMgdHlwZSBhc3NvY2lhdGVkIHdpdGggYSBjb250YWN0LgogICAgICoKICAgICAqIEBhYnN0cmFjdAogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbGxvd3NfbXVsdGlwbGUoKQogICAgewogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIC8qKgogICAgICogVmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuICBUaHJvdyBhbiBleGNlcHRpb24gaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuCiAgICAgKgogICAgICogQGFic3RyYWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5nZXRfY2xhc3MoKSA9PSAnJyApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJ0VhY2ggY29udGFjdCBvYmplY3QgbXVzdCBoYXZlIGEgY2xhc3MnKTsKICAgICAgICBpZiggJHRoaXMtPmdldF9sYWJlbCgpID09ICcnICkgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignRWFjaCBjb250YWN0IG9iamVjdCBtdXN0IGhhdmUgYSBsYWJlbCcpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSByYXcgdmFsdWUgKGZvciBzdG9yaW5nIGluIHRoZSBkYXRhYmFzZSkgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldF9yYXdfdmFsdWUoKTsKCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBvYmplY3QgdG8gYSBkYXRhIGFycmF5LgogICAgICoKICAgICAqIEBhYnN0cmFjdAogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9fZGF0YSgpCiAgICB7CiAgICAgICAgJG91dCA9ICR0aGlzLT5fZGF0YTsKICAgICAgICAkb3V0WydjbGFzcyddID0gJHRoaXMtPmdldF9jbGFzcygpOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogRmlsbCB0aGlzIG9iamVjdCBmcm9tIGEgZGF0YSBhcnJheS4KICAgICAqCiAgICAgKiBAYWJzdGFjdAogICAgICogQHBhcmFtIGFycmF5ICRkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICAvLyB2YWxpZGF0ZSB0aHMgZGF0YQogICAgICAgICRjb250YWN0X2lkID0gKGludClcY2dlX3V0aWxzOjpnZXRfcGFyYW0oJGRhdGEsJ2NvbnRhY3RfaWQnKTsKICAgICAgICAkbGFiZWwgPSB0cmltKFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkZGF0YSwnbGFiZWwnKSk7CiAgICAgICAgJHByZWZlcnJlZCA9IFxjZ2VfdXRpbHM6OnRvX2Jvb2woXGNnZV91dGlsczo6Z2V0X3BhcmFtKCRkYXRhLCdwcmVmZXJyZWQnKSk7CiAgICAgICAgaWYoICRsYWJlbCA9PSAnJykgdGhyb3cgbmV3IFxDbXNJbnZhbGlkRGF0YUV4Y2VwdGlvbignZGF0YSBzdXBwbGllZCB0byAnLl9fTUVUSE9EX18uJyBpcyBpbnZhbGlkJyk7CgogICAgICAgIGlmKCAkY29udGFjdF9pZCA+IDAgKSAgJHRoaXMtPl9kYXRhWydjb250YWN0X2lkJ10gPSAkY29udGFjdF9pZDsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2xhYmVsJ10gPSAkbGFiZWw7CiAgICAgICAgJHRoaXMtPl9kYXRhWydwcmVmZXJyZWQnXSA9ICRwcmVmZXJyZWQ7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.contact_url.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGNvbnRhY3RfdXJsIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBQcm9kdWN0aXZpdHkKICogQGF1dGhvciAgY2FsZ3V5MTAwMCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKICovCgpuYW1lc3BhY2UgQ0dDb250YWN0czsKCi8qKgogKiBBIGNsYXNzIHRvIHJlcHJlc2VudCBhIFVSTCBvYmplY3Qgd2l0aGluIGEgY29udGFjdC4KICogTXVsdGlwbGUgVVJMIG9iamVjdHMgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRhY3QuCiAqLwpjbGFzcyBjb250YWN0X3VybCBleHRlbmRzIGNvbnRhY3Rfc2ltcGxlX3ZhbHVlCnsKICAgIC8qKgogICAgICogR2V0IHRoZSBVUkwgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfYWRkcmVzcygpCiAgICB7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6Z2V0X3ZhbHVlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVSTCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfYWRkcmVzcygkdmFsKQogICAgewogICAgICAgIHBhcmVudDo6c2V0X3ZhbHVlKCR2YWwpOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBVdGlsaXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogVGhpcyBjbGFzcyBwcm92aWRlcyB2YXJpb3VzIHN0YXRpYyBhcHBsaWNhdGlvbiBsZXZlbCB1dGlsaXRpZXMuCiAqLwpmaW5hbCBjbGFzcyB1dGlscwp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZF9qcygkcGx1Z2luX25hbWUpCiAgICB7CiAgICAgICAgJF9nQ21zID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ09OVEFDVFMpOwoKICAgICAgICBzd2l0Y2goICRwbHVnaW5fbmFtZSApIHsKICAgICAgICBjYXNlICdjZ2NvbnRhY3RzX2FkZCc6CiAgICAgICAgICAgICR0cGwgPSAkbW9kLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnanF1ZXJ5LmNnY29udGFjdHNfYWRkLnRwbCcsbnVsbCwnY2EnLnRpbWUoKSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignbW9kJywkbW9kKTsKICAgICAgICAgICAgJG9iaiA9IG5ldyBcU3RkQ2xhc3M7CiAgICAgICAgICAgICRvYmotPmNvZGUgPSAkdHBsLT5mZXRjaCgpOwogICAgICAgICAgICByZXR1cm4gJG9iajsKCiAgICAgICAgY2FzZSAnY2djb250YWN0c19zZWwnOgogICAgICAgICAgICAkdHBsID0gJG1vZC0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2pxdWVyeS5jZ2NvbnRhY3RzX3NlbC50cGwnLG51bGwsJ2NzJy50aW1lKCkpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ21vZCcsJG1vZCk7CiAgICAgICAgICAgICRvYmogPSBuZXcgXFN0ZENsYXNzOwogICAgICAgICAgICAkb2JqLT5jb2RlID0gJHRwbC0+ZmV0Y2goKTsKICAgICAgICAgICAgJHRwbCA9ICRtb2QtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCdqcXVlcnkuY2djb250YWN0c19zZWwuY3NzLnRwbCcpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ21vZCcsJG1vZCk7CiAgICAgICAgICAgICRvYmotPnN0eWxlcyA9ICR0cGwtPmZldGNoKCk7CiAgICAgICAgICAgIHJldHVybiAkb2JqOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBzdGFja190cmFjZSgpOwogICAgICAgICAgICBkaWUoJ3Vua25vd24gcGx1Z2luICcuJHBsdWdpbl9uYW1lKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxjdWxhdGUgYSB1bmlxdWUgR1VJRC4KICAgICAqIFRoaXMgbWV0aG9kIHVzZXMgdGhlIGZ1bmN0aW9uIGNvbV9jcmVhdGVfZ3VpZCBpZiBpdCBjYW4gYmUgZm91bmQsIG90aGVyd2lzZQogICAgICogaXQgZ2VuZXJhdGVzIGEgc2VyaWVzIG9mIHJhbmRvbSB2YWx1ZXMuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjX2d1aWQoKQogICAgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2NvbV9jcmVhdGVfZ3VpZCcpID09PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybiB0cmltKGNvbV9jcmVhdGVfZ3VpZCgpLCAne30nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzcHJpbnRmKCclMDRYJTA0WC0lMDRYLSUwNFgtJTA0WC0lMDRYJTA0WCUwNFgnLCBtdF9yYW5kKDAsIDY1NTM1KSwgbXRfcmFuZCgwLCA2NTUzNSksIG10X3JhbmQoMCwgNjU1MzUpLCBtdF9yYW5kKDE2Mzg0LCAyMDQ3OSksIG10X3JhbmQoMzI3NjgsIDQ5MTUxKSwgbXRfcmFuZCgwLCA2NTUzNSksIG10X3JhbmQoMCwgNjU1MzUpLCBtdF9yYW5kKDAsIDY1NTM1KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2ZldV9saXN0KCkKICAgIHsKICAgICAgICBzdGF0aWMgJGxpc3Q7CiAgICAgICAgaWYoICFpc19hcnJheSgkbGlzdCkgKSB7CiAgICAgICAgICAgICRsaXN0ID0gYXJyYXkoKTsKCiAgICAgICAgICAgIC8vIG5vdyBhZGQgaW4gZmV1IHVzZXJzCgkgICAgJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKICAgICAgICAgICAgaWYoIGlzX29iamVjdCgkZmV1KSApIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9IG5ldyBcZmV1X3VzZXJfcXVlcnk7CiAgICAgICAgICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxmZXVfdXNlcl9xdWVyeV9PUFQ6Ok1BVENIX05PVEVYUElSRUQpOwogICAgICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxmZXVfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRSk7CiAgICAgICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXGZldV91c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgICAgICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgICAgICAgICAkbGlzdFskcnMtPmZpZWxkc1snaWQnXV0gPSAkcnMtPmZpZWxkc1sndXNlcm5hbWUnXTsKICAgICAgICAgICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGUgYSB2Y2FyZCBmb3IgdGhlIHByb3ZpZGVkIGNvbnRhY3QuCiAgICAgKgogICAgICogQHBhcmFtIGNvbnRhY3QgJGNvbnRhY3QKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3ZjYXJkKGNvbnRhY3QgJGNvbnRhY3QpCiAgICB7CiAgICAgICAgJHZjYXJkID0gbmV3IHZjYXJkX2dlbmVyYXRvcjsKCiAgICAgICAgLy8gdWlkCiAgICAgICAgaWYoICgkdWlkID0gJGNvbnRhY3QtPmdldF91dWlkKCkpICkgJHZjYXJkLT5zZXRVSUQoJHVpZCk7CiAgICAgICAgLy8gZnVsbG5hbWUKICAgICAgICBpZiggKCRkbiA9ICRjb250YWN0LT5nZXRfZGlzcGxheV9uYW1lKCkpICkgJHZjYXJkLT5zZXRGdWxsbmFtZSgkZG4pOwogICAgICAgIC8vIG5pY2tuYW1lCiAgICAgICAgaWYoICgkbm4gPSAkY29udGFjdC0+Z2V0X25pY2tuYW1lKCkpICkgJHZjYXJkLT5zZXROaWNrbmFtZSgpOwogICAgICAgIC8vIGNvbXBhbnkKICAgICAgICBpZiggJGNvbnRhY3QtPmdldF9jb21wYW55KCkgKSAkdmNhcmQtPmFkZENvbXBhbnkoJGNvbnRhY3QtPmdldF9jb21wYW55KCkpOwogICAgICAgIC8vIHRpdGxlcwogICAgICAgIGlmKCAkY29udGFjdC0+Z2V0X3RpdGxlKCkgKSAkdmNhcmQtPnNldEpvYlRpdGxlKCRjb250YWN0LT5nZXRfdGl0bGUoKSk7CiAgICAgICAgLy8gcm9sZQogICAgICAgIGlmKCAkY29udGFjdC0+Z2V0X3JvbGUoKSApICR2Y2FyZC0+c2V0UHJvcGVydHkoJ1JPTEUnLCRjb250YWN0LT5nZXRfcm9sZSgpKTsKICAgICAgICAvLyBuYW1lcwogICAgICAgICRuYW1lID0gJGNvbnRhY3QtPmdldF9uYW1lKCk7CiAgICAgICAgaWYoIGlzX29iamVjdCgkbmFtZSkgKSB7CiAgICAgICAgICAgICR2Y2FyZC0+c2V0TmFtZSgkbmFtZS0+Z2V0X2xhc3QoKSwkbmFtZS0+Z2V0X2ZpcnN0KCksJG5hbWUtPmdldF9taWRkbGUoKSwkbmFtZS0+Z2V0X3ByZWZpeCgpLCRuYW1lLT5nZXRfc3VmZml4KCkpOwogICAgICAgIH0KCiAgICAgICAgLy8gYWRkcmVzc2VzCiAgICAgICAgJGFkZHJlc3NlcyA9ICRjb250YWN0LT5nZXRfYWRkcmVzc19vYmplY3RzKCk7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGFkZHJlc3Nlcyk7ICRpKysgKSB7CiAgICAgICAgICAgICRhZHIgPSAkYWRkcmVzc2VzWyRpXTsKICAgICAgICAgICAgJHZjYXJkLT5hZGRBZGRyZXNzKCRhZHItPmdldF9wb2JveCgpLCRhZHItPmdldF9zdHJlZXQoKSwkYWRyLT5nZXRfY2l0eSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFkci0+Z2V0X3N0YXRlKCksICRhZHItPmdldF96aXAoKSwgJGFkci0+Z2V0X2NvdW50cnkoKSwkYWRyLT5nZXRfbGFiZWwoKSwkYWRyLT5pc19wcmVmZXJyZWQoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBlbWFpbHMKICAgICAgICAkZW1haWxzID0gJGNvbnRhY3QtPmdldF9lbWFpbF9vYmplY3RzKCk7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGVtYWlscyk7ICRpKysgKSB7CiAgICAgICAgICAgICRvYmogPSAkZW1haWxzWyRpXTsKICAgICAgICAgICAgJHZjYXJkLT5hZGRFbWFpbCgkb2JqLT5nZXRfYWRkcmVzcygpLCRvYmotPmdldF9sYWJlbCgpLCRvYmotPmlzX3ByZWZlcnJlZCgpKTsKICAgICAgICB9CgogICAgICAgIC8vIHBob25lCiAgICAgICAgJHBob25lcyA9ICRjb250YWN0LT5nZXRfcGhvbmVfb2JqZWN0cygpOwogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRwaG9uZXMpOyAkaSsrICkgewogICAgICAgICAgICAkb2JqID0gJHBob25lc1skaV07CiAgICAgICAgICAgICR0eXBlcyA9IGFycmF5KCRvYmotPmdldF90eXBlKCksJG9iai0+Z2V0X2xhYmVsKCkpOwogICAgICAgICAgICAkdmNhcmQtPmFkZFBob25lKCRvYmotPmdldF92YWx1ZSgpLCR0eXBlcywkb2JqLT5pc19wcmVmZXJyZWQoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBub3RlCiAgICAgICAgaWYoICgkbm90ZSA9ICRjb250YWN0LT5nZXRfbm90ZSgpKSApICR2Y2FyZC0+YWRkTm90ZSgkbm90ZSk7CgogICAgICAgIC8vIHVybAogICAgICAgICR1cmwgPSAkY29udGFjdC0+Z2V0X3ByZWZlcnJlZF91cmwoKTsKICAgICAgICBpZiggJHVybCApICR2Y2FyZC0+YWRkVVJMKCR1cmwpOwoKICAgICAgICAvLyBjYXRlZ29yaWVzCiAgICAgICAgJGNhdGVnb3JpZXMgPSAkY29udGFjdC0+Z2V0X2NhdGVnb3JpZXMoKTsKICAgICAgICBpZiggaXNfYXJyYXkoJGNhdGVnb3JpZXMpICYmIGNvdW50KCRjYXRlZ29yaWVzKSApIHsKICAgICAgICAgICAgJG5hbWVzID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJGNhdGVnb3JpZXMgYXMgJHJlYyApIHsKICAgICAgICAgICAgICAgICRjYXRfaWQgPSAkcmVjWydjYXRfaWQnXTsKICAgICAgICAgICAgICAgICRuYW1lc1tdID0gY2F0ZWdvcnk6OmdldF9jYXRlZ29yeV9uYW1lKCRjYXRfaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR2Y2FyZC0+c2V0Q2F0ZWdvcmllcygkbmFtZXMpOwogICAgICAgIH0KCiAgICAgICAgLy8gYmlydGhkYXkgKHRvZG8pCgogICAgICAgIC8vIHBob3RvIC8gbG9nbwogICAgICAgIGlmKCAoJGltYWdlID0gJGNvbnRhY3QtPmdldF9pbWFnZSgpKSApICR2Y2FyZC0+YWRkUGhvdG8oJGltYWdlKTsKICAgICAgICBpZiggKCRsb2dvID0gJGNvbnRhY3QtPmdldF9sb2dvKCkpICkgJHZjYXJkLT5hZGRMb2dvKCRpbWFnZSk7CgogICAgICAgIHJldHVybiAkdmNhcmQtPmdldCgpOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.vcard_generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHV0aWxzIGNsYXNzLgogKgogKiBAcGFja2FnZSBDR0NvbnRhY3RzCiAqIEBjYXRlZ29yeSBVdGlsaXR5CiAqIEBhdXRob3IgIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmc+CiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMTQgYnkgUm9iZXJ0IENhbXBiZWxsCiAqLwoKbmFtZXNwYWNlIENHQ29udGFjdHM7CgovKioKICogQSBzaW1wbGUgdXRpbGl0eSBjbGFzcyB0byBnZW5lcmF0ZSBhIHZjYXJkIGZyb20gYW4gYWRkcmVzcy4KICovCmNsYXNzIHZjYXJkX2dlbmVyYXRvcgp7CiAgICAvKioKICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSAkX3Byb3BlcnRpZXMgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQGlnbm9yZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGVuY29kZSgkdmFsdWUpCiAgICB7CiAgICAgICAgLy8gbm90ZTogfCBjaGFyYWN0ZXJzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBhICwgdG8gaW5kaWNhdGUgbXVsdGlwbGUgdmFsdWVzCiAgICAgICAgJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoKHN0cmluZykgJHZhbHVlLCBFTlRfUVVPVEVTKTsKICAgICAgICAkdmFsdWUgPSBzdHJfcmVwbGFjZSgnLCcsJ1wsJywkdmFsdWUpOwogICAgICAgICR2YWx1ZSA9IHN0cl9yZXBsYWNlKCd8JywnLCcsJHZhbHVlKTsKICAgICAgICAkdmFsdWUgPSBzdHJfcmVwbGFjZSgiXHJcbiIsJ1xuJywkdmFsdWUpOwogICAgICAgICR2YWx1ZSA9IHN0cl9yZXBsYWNlKCJcbiIsJ1xuJywkdmFsdWUpOwogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCBvYmplY3QuCiAgICAgKiBEb2VzIG5vdCBjaGVjayBmb3IgdW5pcXVlbmVzcyBvZiB0aGUga2V5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkgZm9yIHRoZSBwcm9wZXJ0eQogICAgICogQHBhcmFtIHN0cmluZyAkdmFsIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGVzIEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdHlwZXMuCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZiBJZiB0aGlzIGlzIGEgcHJlZmVycmVkIHByb3BlcnR5LgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWRkUHJvcGVydHkoJGtleSwkdmFsLCR0eXBlcyA9IG51bGwsJHByZWYgPSAwKQogICAgewogICAgICAgICRrZXkgPSB0cmltKChzdHJpbmcpICRrZXkpOwogICAgICAgICR2YWwgPSAoc3RyaW5nKSAkdmFsOwogICAgICAgICRwcmVmID0gXGNnZV91dGlsczo6dG9fYm9vbCgkcHJlZik7CiAgICAgICAgJHRoaXMtPl9wcm9wZXJ0aWVzW10gPSBhcnJheSgna2V5Jz0+JGtleSwndHlwZSc9PiR0eXBlcywndmFsdWUnPT4kdmFsLCdwcmVmJz0+JHByZWYpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcHJvcGVydHkgdG8gdGhlIGN1cnJlbnQgb2JqZWN0LgogICAgICogQ2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIG9iamVjdCB3aXRoIHRoaXMga2V5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkgZm9yIHRoZSBwcm9wZXJ0eQogICAgICogQHBhcmFtIHN0cmluZyAkdmFsIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGVzIEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdHlwZXMuCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZiBJZiB0aGlzIGlzIGEgcHJlZmVycmVkIHByb3BlcnR5LgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0UHJvcGVydHkoJGtleSwkdmFsLCR0eXBlcyA9IG51bGwsJHByZWYgPSAwKQogICAgewogICAgICAgICRrZXkgPSB0cmltKCRrZXkpOwogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fcHJvcGVydGllcyk7ICRpKysgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X3Byb3BlcnRpZXNbJGldKSApIHsKICAgICAgICAgICAgICAgICRyZWMgPSAkdGhpcy0+X3Byb3BlcnRpZXNbJGldOwogICAgICAgICAgICAgICAgaWYoICRyZWNbJ2tleSddID09ICRrZXkgKSB1bnNldCgkdGhpcy0+X3Byb3BlcnRpZXNbJGldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+YWRkUHJvcGVydHkoJGtleSwkdmFsLCR0eXBlcywkcHJlZik7CiAgICB9CgogICAgLyoqCiAgICAgKiBHaXZlbiB0aGUgZGF0YSBpbiB0aGUgb2JqZWN0LCBidWlsZCB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGRWQ2FyZCgpCiAgICB7CiAgICAgICAgJGZpeF90eXBlcyA9IGZ1bmN0aW9uKCR0eXBlcywkcHJlZikgewogICAgICAgICAgICBpZiggISR0eXBlcyApIHJldHVybjsKICAgICAgICAgICAgaWYoIGlzX3N0cmluZygkdHlwZXMpICkgJHR5cGVzID0gYXJyYXkoJHR5cGVzKTsKCiAgICAgICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkdHlwZXMgYXMgJHJvdyApIHsKICAgICAgICAgICAgICAgIC8vIGNsZWFuIHVwIHRoZSByb3cKICAgICAgICAgICAgICAgICR0bXAgPSBleHBsb2RlKCcsJywkcm93KTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICAkb25lID0gc3RydG9sb3dlcih0cmltKCRvbmUpKTsKICAgICAgICAgICAgICAgICAgICBpZiggJG9uZSApICRvdXRbXSA9ICRvbmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICRwcmVmICkgJG91dFtdID0gJ3ByZWYnOwogICAgICAgICAgICBpZiggIWNvdW50KCRvdXQpICkgcmV0dXJuOwogICAgICAgICAgICAkb3V0ID0gYXJyYXlfdW5pcXVlKCRvdXQpOwogICAgICAgICAgICAkb3V0ID0gJ1RZUEU9Jy5pbXBsb2RlKCcsJywkb3V0KTsKICAgICAgICAgICAgcmV0dXJuICRvdXQ7CiAgICAgICAgfTsKCgogICAgICAgICRzdHJpbmcgPSAiQkVHSU46VkNBUkRcclxuIjsKICAgICAgICAkc3RyaW5nIC49ICJWRVJTSU9OOjMuMFxyXG4iOwogICAgICAgICRzdHJpbmcgLj0gIlBST0ZJTEU6VkNBUkRcclxuIjsKICAgICAgICAkc3RyaW5nIC49ICJSRVY6IiAuIGRhdGUoIlktbS1kIikgLiAiVCIgLiBkYXRlKCJIOmk6cyIpIC4gIlpcclxuIjsKICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X3Byb3BlcnRpZXMgYXMgJHJlYyApIHsKICAgICAgICAgICAgJGtleSA9IGFycmF5KCRyZWNbJ2tleSddKTsKICAgICAgICAgICAgJHR5cGUgPSAkZml4X3R5cGVzKCRyZWNbJ3R5cGUnXSwkcmVjWydwcmVmJ10pOwogICAgICAgICAgICBpZiggJHR5cGUgKSAka2V5W10gPSAkdHlwZTsKICAgICAgICAgICAgJHN0cmluZyAuPSBpbXBsb2RlKCc7Jywka2V5KS4nOicuJHRoaXMtPmVuY29kZSgkcmVjWyd2YWx1ZSddKS4iXHJcbiI7CiAgICAgICAgfQogICAgICAgICRzdHJpbmcgLj0gIkVORDpWQ0FSRFxyXG4iOwogICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgfQoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICAgLyoqCiAgICAgKiBHaXZlbiBhbiBhZGRyZXNzLCBhZGQgaXQgdG8gdGhlIHZjYXJkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvYm94CiAgICAgKiBAcGFyYW0gc3RyaW5nICRleHRlbmRlZAogICAgICogQHBhcmFtIHN0cmluZyAkY2l0eQogICAgICogQHBhcmFtIHN0cmluZyAkcmVnaW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICR6aXAKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEBwYXJhbSBib29sICRwcmVmIEluZGljYXRlcyBpZiB0aGlzIHRoZSBwcmVmZXJyZWQgYWRkcmVzcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEFkZHJlc3MoJHBvYm94LCRleHRlbmRlZCwkY2l0eSwkcmVnaW9uLCR6aXAsJGNvdW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9IG51bGwsJHByZWYgPSAwKQogICAgewogICAgICAgIGlmKCAhJHR5cGUgKSAkdHlwZSA9ICd3b3JrJzsKICAgICAgICAkc3RyID0gaW1wbG9kZSgnOycsYXJyYXkoJHBvYm94LCRleHRlbmRlZCwkY2l0eSwkcmVnaW9uLCR6aXAsJGNvdW50cnkpKTsKICAgICAgICAkdGhpcy0+YWRkUHJvcGVydHkoJ0FEUicsJHN0ciwkdHlwZSwkcHJlZik7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBiaXJ0aGRheSB0byB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQmlydGhkYXkoJGRhdGUpCiAgICB7CiAgICAgICAgLy8gdG9kbzogdmFsaWRhdGUgZGF0ZQogICAgICAgICR0aGlzLT5zZXRQcm9wZXJ0eSgnQkRBWScsJGRhdGUpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYXRlZ29yaWVzIGZvciB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdfHN0cmluZyAkZGF0YSBDYXRlZ29yeSBuYW1lcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldENhdGVnb3JpZXMoJGRhdGEpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkZGF0YSkgKSAkZGF0YSA9IGFycmF5KCRkYXRhKTsKCiAgICAgICAgLy8gY2xlYW4gdXAgdGhlIGFycmF5CiAgICAgICAgZm9yZWFjaCggJGRhdGEgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgICAgICAkdmFsID0gdHJpbSgkdmFsKTsKICAgICAgICAgICAgaWYoICEkdmFsICkgdW5zZXQoJGRhdGFbJGtleV0pOwogICAgICAgIH0KICAgICAgICAkZGF0YSA9IGFycmF5X3VuaXF1ZSgkZGF0YSk7CiAgICAgICAgJHRoaXMtPnNldFByb3BlcnR5KCdDQVRFR09SSUVTJyxpbXBsb2RlKCd8JywkZGF0YSkpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgY29tcGFueSB0byB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY29tcGFueQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tcGFueSgkY29tcGFueSkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0UHJvcGVydHkoJ09SRycsJGNvbXBhbnkpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIGVtYWlsIGFkZHJlc3MgdG8gdGhlIHZjYXJkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFkZHJlc3MKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGVzCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZiBJbmRpY2F0ZXMgaWYgdGhpcyB0aGUgcHJlZmVycmVkIGFkZHJlc3MuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRFbWFpbCgkYWRkcmVzcywkdHlwZXMsJHByZWYgPSAwKQogICAgewogICAgICAgICR0eXBlID0gJ2ludGVybmV0JzsKICAgICAgICBpZiggIWlzX2FycmF5KCR0eXBlcykgKSAkdHlwZXMgPSBhcnJheSgkdHlwZXMpOwogICAgICAgIGlmKCAkcHJlZiApICR0eXBlc1tdIC49ICdwcmVmJzsKICAgICAgICAkdGhpcy0+c2V0UHJvcGVydHkoJ0VNQUlMJywkYWRkcmVzcywkdHlwZXMpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBmdWxsIG5hbWUgZm9yIHRoZSB2Y2FyZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEZ1bGxuYW1lKCRzdHIpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldFByb3BlcnR5KCdGTicsJHN0cik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGpvYiB0aXRsZSBmb3IgdGhlIHZjYXJkCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkam9idGl0bGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEpvYlRpdGxlKCRqb2J0aXRsZSkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0VGl0bGUoJGpvYnRpdGxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIGxvZ28gdG8gdGhlIHZjYXJkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVybCBUaGUgZnVsbCBVUkwgdG8gdGhlIGxvZ28gaW1hZ2UuCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZiBJbmRpY2F0ZXMgaWYgdGhpcyB0aGUgcHJlZmVycmVkIGFkZHJlc3MuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRMb2dvKCR1cmwsICR0eXBlID0gbnVsbCwgJHByZWYgPSAwKQogICAgewogICAgICAgIGlmKCAhJHR5cGUgKSAkdHlwZSA9ICd3b3JrJzsKICAgICAgICAkdGhpcy0+YWRkTWVkaWEoJ0xPR08nLCAkdXJsLCAkdHlwZSwgJHByZWYpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIG1lZGlhIHRvIHRoZSB2Y2FyZC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEBwYXJhbSBzdHJpbmcgJHByb3BlcnR5LiAgRWl0aGVyIExPR08sIFBIT1RPIG9yIFNPVU5ELgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YSAgRWl0aGVyIHRoZSBmdWxsIFVSTCB0byB0aGUgaXRlbSwgb3IgYSBiYXNlNjQgZW5jb2RlZCBkYXRhIFVSSS4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEBwYXJhbSBib29sICRwcmVmIEluZGljYXRlcyBpZiB0aGlzIHRoZSBwcmVmZXJyZWQgYWRkcmVzcy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRNZWRpYSgkcHJvcGVydHksICRkYXRhLCAkdHlwZSA9IG51bGwsICRwcmVmID0gMCkKICAgIHsKICAgICAgICBzd2l0Y2goICRwcm9wZXJ0eSApIHsKICAgICAgICBjYXNlICdMT0dPJzoKICAgICAgICBjYXNlICdQSE9UTyc6CiAgICAgICAgY2FzZSAnU09VTkQnOgogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkbWltZSA9IG51bGw7CiAgICAgICAgaWYoICFzdGFydHN3aXRoKCRkYXRhLCdkYXRhOicpICkgewogICAgICAgICAgICBpZiggZmlsZV9leGlzdHMoJGRhdGEpICkgewogICAgICAgICAgICAgICAgJG1pbWUgPSBcY2dlX3V0aWxzOjpnZXRfbWltZV90eXBlKCRkYXRhKTsKICAgICAgICAgICAgICAgIGlmKCAhc3RhcnRzd2l0aCgkZGF0YSwnaW1hZ2UvJykgKSByZXR1cm47CiAgICAgICAgICAgICAgICAkZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkYXRhKTsKICAgICAgICAgICAgICAgICRkYXRhID0gYmFzZTY0X2VuY29kZSgkZGF0YSk7CiAgICAgICAgICAgICAgICAkZGF0YSA9ICJkYXRhOnskbWltZX07YmFzZTY0LCIuJGRhdGE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHByZWZpeCA9ICdkYXRhOmltYWdlLyc7CiAgICAgICAgaWYoICFzdGFydHN3aXRoKCRkYXRhLCRwcmVmaXgpICkgcmV0dXJuOwogICAgICAgIGlmKCAhJG1pbWUgKSB7CiAgICAgICAgICAgICRwb3MgPSBzdHJwb3MoJGRhdGEsJzsnKTsKICAgICAgICAgICAgJG1pbWUgPSBzdWJzdHIoJGRhdGEsNSwkcG9zLTUpOwogICAgICAgIH0KICAgICAgICAkdHlwZSA9IHN0cnRvdXBwZXIoc3RyX3JlcGxhY2UoJ2ltYWdlLycsJycsJG1pbWUpKTsKICAgICAgICAkZGF0YSA9IHN1YnN0cigkZGF0YSxzdHJwb3MoJGRhdGEsJywnKSsxKTsKICAgICAgICAkcHJvcGVydHkgLj0gJztFTkNPRElORz1iO1RZUEU9Jy4kdHlwZTsKICAgICAgICAkdGhpcy0+c2V0UHJvcGVydHkoJHByb3BlcnR5LCRkYXRhLCcnLCAkcHJlZik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG5hbWUgZm9yIHRoZSB2Y2FyZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsYXN0bmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkZmlyc3RuYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhZGRpdGlvbmFsCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwcmVmaXgKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN1ZmZpeAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TmFtZSgkbGFzdG5hbWUgPSAnJywgJGZpcnN0bmFtZSA9ICcnLCAkYWRkaXRpb25hbCA9ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByZWZpeCA9ICcnLCAkc3VmZml4ID0gJycpCiAgICB7CiAgICAgICAgJHN0ciA9IGltcGxvZGUoJzsnLGFycmF5KCRsYXN0bmFtZSwkZmlyc3RuYW1lLCRhZGRpdGlvbmFsLCRwcmVmaXgsJHN1ZmZpeCkpOwogICAgICAgICR0aGlzLT5zZXRQcm9wZXJ0eSgnTicsJHN0cik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgYSBuaWNrbmFtZSBmb3IgdGhlIHZjYXJkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZQogICAgICogQHBhcmFtIGJvb2wgJHByZWYgSW5kaWNhdGVzIGlmIHRoaXMgdGhlIHByZWZlcnJlZCBhZGRyZXNzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Tmlja25hbWUoJHN0ciwgJHR5cGUgPSBudWxsLCAkcHJlZiA9IDApCiAgICB7CiAgICAgICAgaWYoICEkdHlwZSApICR0eXBlID0gJ2hvbWUnOwogICAgICAgICR0aGlzLT5zZXRQcm9wZXJ0eSgnTklDS05BTUUnLCRzdHIsICR0eXBlLCAkcHJlZik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgYSBub3RlIGZvciB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbm90ZQogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZQogICAgICogQHBhcmFtIGJvb2wgJHByZWYgSW5kaWNhdGVzIGlmIHRoaXMgdGhlIHByZWZlcnJlZCBhZGRyZXNzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkTm90ZSgkbm90ZSwgJHR5cGUgPSBudWxsLCAkcHJlZiA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPnNldFByb3BlcnR5KCdOT1RFJywkbm90ZSwgJHR5cGUsICRwcmVmKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIHBob25lIG51bWJlciB0byB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0eXBlCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlZiBJbmRpY2F0ZXMgaWYgdGhpcyB0aGUgcHJlZmVycmVkIGFkZHJlc3MuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRQaG9uZSgkbnVtYmVyLCAkdHlwZSA9IG51bGwsICRwcmVmID0gMCkKICAgIHsKICAgICAgICBpZiggISR0eXBlICkgJHR5cGUgPSAndm9pY2UnOwogICAgICAgICR0aGlzLT5hZGRQcm9wZXJ0eSgnVEVMJywkbnVtYmVyLCAkdHlwZSwgJHByZWYpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGhvdG8gdG8gdGhlIHZjYXJkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVybCBUaGUgYWJzb2x1dGUgVVJMIHRvIHRoZSBwaG90by4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEBwYXJhbSBib29sICRwcmVmIEluZGljYXRlcyBpZiB0aGlzIHRoZSBwcmVmZXJyZWQgYWRkcmVzcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFBob3RvKCR1cmwsICR0eXBlID0gbnVsbCwgJHByZWYgPSAwKQogICAgewogICAgICAgICR0aGlzLT5hZGRNZWRpYSgnUEhPVE8nLCAkdXJsLCAkdHlwZSwgJHByZWYpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSByb2xlIGZvciB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcm9sZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Um9sZSgkcm9sZSkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0UHJvcGVydHkoJ1JPTEUnLCRyb2xlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBhIGpvYnRpdGxlIGZvciB0aGUgdmNhcmQuCiAgICAgKgogICAgICogQHNlZSBzZXRKb2JUaXRsZQogICAgICogQHBhcmFtIHN0cmluZyAkdGl0bGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFRpdGxlKCR0aXRsZSkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0UHJvcGVydHkoJ1RJVExFJywkdGl0bGUpOwogICAgfQoKICAgIC8qCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkVVJMKCR1cmwsJHR5cGUgPSBudWxsLCAkcHJlZiA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPmFkZFByb3BlcnR5KCdVUkwnLCR1cmwsJHR5cGUsJHByZWYpOwogICAgfQogICAgKi8KCiAgICAvKioKICAgICAqIFNldCBhIFVSTCBmb3IgdGhlIHZjYXJkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVybAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkVVJMKCR1cmwpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldFByb3BlcnR5KCdVUkwnLCR1cmwpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IGEgdW5pcXVlIFVJRCBmb3IgdGhlIHZjYXJkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVpZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VUlEKCR1aWQpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldFByb3BlcnR5KCdVSUQnLCR1aWQpOwogICAgfQoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIC8vIEkvTyBmdW5jdGlvbnMKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICAvKioKICAgICAqIEJ1aWxkIHRoZSB2Y2FyZCBnaXZlbiBhbGwgb2YgdGhlIGN1cnJlbnRseSBzZXQgZGF0YS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmJ1aWxkVkNhcmQoKTsKICAgIH0KCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/contact_form.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRleHRfcmlnaHQgewogICAgcGFkZGluZy10b3A6IDhweDsKICAgIHRleHQtYWxpZ246IHJpZ2h0Owp9CgpkaXYuaW5saW5lLWVkaXQgdGV4dGFyZWEgewogICAgd2lkdGg6IGF1dG87CiAgICBoZWlnaHQ6IGF1dG87Cn0KCmRpdi5pbmxpbmUtZWRpdCBpbnB1dCx0ZXh0YXJlYSB7CiAgICBvdXRsaW5lOiBub25lOwogICAgYmFja2dyb3VuZDogbm9uZTsKICAgIGJvcmRlcjogbm9uZTsKfQoKZGl2LmlubGluZS1lZGl0IGlucHV0OmhvdmVyLHRleHRhcmVhOmhvdmVyIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7CiAgICBvdXRsaW5lOiBub25lOwogICAgYmFja2dyb3VuZDogI2ZmZjsKfQpkaXYuaW5saW5lLWVkaXQgaW5wdXQ6Zm9jdXMsdGV4dGFyZWE6Zm9jdXMgewogICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsKICAgIG91dGxpbmU6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgpkaXYuaW5saW5lLWVkaXQgdGV4dGFyZWEuY29udGFjdF9hZGRyZXNzIHsKICAgIGhlaWdodDogMWVtOwogICAgd2lkdGg6IDE1ZW07CiAgICByZXNpemU6IG5vbmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgpkaXYuaW5saW5lLWVkaXQgdGV4dGFyZWEuY29udGFjdF9hZGRyZXNzOmZvY3VzIHsKICAgIGhlaWdodDogMmVtOwp9CgouY3VzdG9tLWNvbWJvYm94LWlucHV0IHsKICAgIGhlaWdodDogMTZweDsKICAgIG1hcmdpbi1yaWdodDogMDsKICAgIGJhY2tncm91bmQ6ICNmMGYwZjAgIWltcG9ydGFudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYWE7Cn0KCi5jdXN0b20tY29tYm9ib3gtaW5wdXQ6aG92ZXIgewogICAgYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50Owp9CgouY3VzdG9tLWNvbWJvYm94LWlucHV0OmZvY3VzIHsKICAgIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDsKfQoKLmN1c3RvbS1jb21ib2JveC10b2dnbGUgewogICAgaGVpZ2h0OiAyMnB4Owp9CgpkaXYuaW5saW5lLWVkaXQgLmZpZWxkIC5idG5fZGVsb2JqIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCmRpdi5pbmxpbmUtZWRpdCAuZG90ZG90IHsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDRweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZGlzcGxheTogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKZGl2LmlubGluZS1lZGl0IC5maWVsZDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2VjOwp9CgpkaXYuaW5saW5lLWVkaXQgLmZpZWxkOmhvdmVyIC5kb3Rkb3QgewogICAgZGlzcGxheTogaW5saW5lOwp9CgoKZGl2LmlubGluZS1lZGl0IC5maWVsZDpob3ZlciAuYnRuX2RlbG9iaiB7CiAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICBjdXJzb3I6ICBwb2ludGVyOwp9CgojZmlsZV9pbWFnZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IC0xMDAwcHg7CiAgICBsZWZ0OiAtMTAwMHB4OwogICAgei1pbmRleDogLTEwMDA7Cn0KCiNwcmV2aWV3X2lhbWdlIHsKICAgIG1hcmdpbjogNHB4OwogICAgcGFkZGluZzogNXB4Owp9CgojcHJldmlld19pbWFnZTpob3ZlciB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoudWktbWVudSB7CiAgICB6LWluZGV4OiA5OTk5Owp9CgouYmlnICogewogICAgZm9udC1zaXplOiAxOHB4Owp9CgojY2F0ZWdvcnlfbGlzdCB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgcGFkZGluZzogNXB4OwogICAgbWluLXdpZHRoOiAxMGVtOwogICAgbWF4LWhlaWdodDogMTVlbTsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgei1pbmRleDogOTk5OTsKfQojY2F0ZWdvcnlfbGlzdCB1bCB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CiNjYXRlZ29yeV9saXN0IHVsIHVsIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4Owp9CiNjYXRlZ29yeV9saXN0IHVsIGxpIHsKICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/defaultadmin.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRkYiA9IGNnZV91dGlsczo6Z2V0X2RiKCk7IC8vIG91ciBzcGVjaWFsIGRiIG9iamVjdCAobW9kaWZpZWQgdG8gdGhyb3cgZXhjZXB0aW9ucykKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsaScgPT4gJ0VOR0lORT1Jbm5vREInKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKdHJ5IHsKICAgICRkYi0+QmVnaW5UcmFucygpOwoKICAgICRmbGRzID0gJ2lkIEkgS0VZIEFVVE8gTk9UTlVMTCwKICAgICAgICAgICAgIHN0YXR1cyBDKDEwKSwKICAgICAgICAgICAgIGd1aWQgICBDKDI1KSwKICAgICAgICAgICAgIGZldV91aWQgSSwKICAgICAgICAgICAgIGltYWdlIFgyLAogICAgICAgICAgICAgbG9nbyAgWDIsCiAgICAgICAgICAgICBmdWxsbmFtZSBDKDI1NSksCiAgICAgICAgICAgICBuaWNrbmFtZSBDKDI1NSksCiAgICAgICAgICAgICBjb21wYW55IEMoMjU1KSwKICAgICAgICAgICAgIHRpdGxlIEMoMjU1KSwKICAgICAgICAgICAgIHJvbGUgQygyNTUpLAogICAgICAgICAgICAgbm90ZSBYLAogICAgICAgICAgICAgbW9kaWZpZWQgSQogICAgICc7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoQ0dDT05UQUNUU19UQkwsICRmbGRzLCAkdGFib3B0YXJyYXkpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKENHQ09OVEFDVFNfVEJMLidpMScsQ0dDT05UQUNUU19UQkwsJ2d1aWQnLGFycmF5KCdVTklRVUUnKSk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgogICAgJGZsZHMgPSAiY29udGFjdF9pZCBJLAogICAgICAgICBjbGFzcyAgICAgIEMoMjUpLAogICAgICAgICBsYWJlbCAgICAgIEMoMjUpLAogICAgICAgICBwcmVmZXJyZWQgIEkxLAogICAgICAgICB2YWx1ZSAgICAgIFgiOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKENHQ09OVEFDVFNfU1VCX1RCTCwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiAgICAkZGItPkV4ZWN1dGUoJ0FMVEVSIFRBQkxFICcuQ0dDT05UQUNUU19TVUJfVEJMLicgQUREIEZPUkVJR04gS0VZIChjb250YWN0X2lkKSBSRUZFUkVOQ0VTICcuQ0dDT05UQUNUU19UQkwuJyAoaWQpJyk7CgogICAgJGZsZHMgPSAiaWQgICAgICAgICBJIEtFWSBBVVRPLAogICAgICAgICBuYW1lICAgICAgIEMoMTAwKSBOT1QgTlVMTCwKICAgICAgICAgZGVzY3JpcHRpb24gWCwKICAgICAgICAgcGFyZW50X2lkICBJIE5PVCBOVUxMLAogICAgICAgICBpdGVtX29yZGVyIEkgTk9UIE5VTEwsCiAgICAgICAgIGhpZXJhcmNoeSAgQygyNTUpIE5PVCBOVUxMLAogICAgICAgICBsb25nX25hbWUgIEMoMjU1KSBOT1QgTlVMTCI7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoQ0dDT05UQUNUU19DQVRTX1RCTCwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgogICAgJGZsZHMgPSAiY29udGFjdF9pZCBJIEtFWSBOT1QgTlVMTCwKICAgICAgICAgICAgIGNhdF9pZCAgICAgSSBLRVkgTk9UIE5VTEwiOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKENHQ09OVEFDVFNfQURSX0NBVFNfVEJMLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRkYi0+RXhlY3V0ZSgnQUxURVIgVEFCTEUgJy5DR0NPTlRBQ1RTX0FEUl9DQVRTX1RCTC4nIEFERCBGT1JFSUdOIEtFWSAoY29udGFjdF9pZCkgUkVGRVJFTkNFUyAnLkNHQ09OVEFDVFNfVEJMLicgKGlkKScpOwogICAgJGRiLT5FeGVjdXRlKCdBTFRFUiBUQUJMRSAnLkNHQ09OVEFDVFNfQURSX0NBVFNfVEJMLicgQUREIEZPUkVJR04gS0VZIChjYXRfaWQpIFJFRkVSRU5DRVMgJy5DR0NPTlRBQ1RTX0NBVFNfVEJMLicgKGlkKScpOwoKICAgIC8vIGNyZWF0ZSBhIGNvdXBsZSBvZiBjYXRlZ29yaWVzCiAgICAkYnVzaW5lc3MgPSBuZXcgXENHQ29udGFjdHNcY2F0ZWdvcnkoKTsKICAgICRidXNpbmVzc1snbmFtZSddID0gJ0J1c2luZXNzJzsKICAgICRidXNpbmVzcy0+c2F2ZShGQUxTRSk7CgogICAgJGVtcGxveWVlcyA9IG5ldyBcQ0dDb250YWN0c1xjYXRlZ29yeSgpOwogICAgJGVtcGxveWVlc1snbmFtZSddID0gJ0VtcGxveWVlcyc7CiAgICAkZW1wbG95ZWVzWydwYXJlbnRfaWQnXSA9ICRidXNpbmVzc1snaWQnXTsKICAgICRlbXBsb3llZXMtPnNhdmUoRkFMU0UpOwoKICAgICRzdXBwbGllcnMgPSBuZXcgXENHQ29udGFjdHNcY2F0ZWdvcnkoKTsKICAgICRzdXBwbGllcnNbJ25hbWUnXSA9ICdTdXBwbGllcnMnOwogICAgJHN1cHBsaWVyc1sncGFyZW50X2lkJ10gPSAkYnVzaW5lc3NbJ2lkJ107CiAgICAkc3VwcGxpZXJzLT5zYXZlKEZBTFNFKTsKCiAgICAkY3VzdG9tZXJzID0gbmV3IFxDR0NvbnRhY3RzXGNhdGVnb3J5KCk7CiAgICAkY3VzdG9tZXJzWyduYW1lJ10gPSAnQ3VzdG9tZXJzJzsKICAgICRjdXN0b21lcnNbJ3BhcmVudF9pZCddID0gJGJ1c2luZXNzWydpZCddOwogICAgJGN1c3RvbWVycy0+c2F2ZShGQUxTRSk7CgogICAgJHBlcnNvbmFsID0gbmV3IFxDR0NvbnRhY3RzXGNhdGVnb3J5KCk7CiAgICAkcGVyc29uYWxbJ25hbWUnXSA9ICdQZXJzb25hbCc7CiAgICAkcGVyc29uYWwtPnNhdmUoRkFMU0UpOwoKICAgICRmcmllbmRzID0gbmV3IFxDR0NvbnRhY3RzXGNhdGVnb3J5KCk7CiAgICAkZnJpZW5kc1snbmFtZSddID0gJ0ZyaWVuZHMnOwogICAgJGZyaWVuZHNbJ3BhcmVudF9pZCddID0gJHBlcnNvbmFsWydpZCddOwogICAgJGZyaWVuZHMtPnNhdmUoRkFMU0UpOwoKICAgICRmYW1pbHkgPSBuZXcgXENHQ29udGFjdHNcY2F0ZWdvcnkoKTsKICAgICRmYW1pbHlbJ25hbWUnXSA9ICdGYW1pbHknOwogICAgJGZhbWlseVsncGFyZW50X2lkJ10gPSAkcGVyc29uYWxbJ2lkJ107CiAgICAkZmFtaWx5LT5zYXZlKEZBTFNFKTsKCiAgICBcQ0dDb250YWN0c1xjYXRlZ29yeTo6Y2FsY3VsYXRlX2hpZXJhcmNoeV9wb3NpdGlvbnMoKTsKCiAgICAvLyByZWdpc3RlciBvdXIganF1ZXJ5IHBsdWdpbnMKICAgICRsb2FkZXIgPSBuZXcgXENHRXh0ZW5zaW9uc1xqc2xvYWRlclxsaWJkZWZuKCdjZ2NvbnRhY3RzX2FkZCcpOwogICAgJGxvYWRlci0+Y2FsbGJhY2sgPSBhcnJheSgnXENHQ29udGFjdHNcdXRpbHMnLCdsb2FkX2pzJyk7CiAgICAkbG9hZGVyLT5kZXBlbmRzID0gJ2NnX2Ntc21zJzsKICAgIFxDR0V4dGVuc2lvbnNcanNsb2FkZXJcanNsb2FkZXI6OnJlZ2lzdGVyKCRsb2FkZXIpOwogICAgJGxvYWRlciA9IG5ldyBcQ0dFeHRlbnNpb25zXGpzbG9hZGVyXGxpYmRlZm4oJ2NnY29udGFjdHNfc2VsJyk7CiAgICAkbG9hZGVyLT5jYWxsYmFjayA9IGFycmF5KCdcQ0dDb250YWN0c1x1dGlscycsJ2xvYWRfanMnKTsKICAgICRsb2FkZXItPmRlcGVuZHMgPSAnY2dfY21zbXMnOwogICAgXENHRXh0ZW5zaW9uc1xqc2xvYWRlclxqc2xvYWRlcjo6cmVnaXN0ZXIoJGxvYWRlcik7CgogICAgLy8gYSBuZXcgcGVybWlzc2lvbgogICAgJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oQ0dDb250YWN0czo6UEVSTSxDR0NvbnRhY3RzOjpQRVJNKTsKICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKENHQ29udGFjdHM6OkNBVFNfUEVSTSxDR0NvbnRhY3RzOjpDQVRTX1BFUk0pOwoKICAgIC8vIGEgbmV3IHBsdWdpbgogICAgJHRoaXMtPlJlZ2lzdGVyU21hcnR5UGx1Z2luKCdjZ2NfZGlzcGxheW5hbWUnLCdmdW5jdGlvbicsICdcQ0dDb250YWN0c1xjb250YWN0X3NtYXJ0eTo6ZGlzcGxheW5hbWUnKTsKCiAgICAkZGItPkNvbW1pdFRyYW5zKCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgIGRlYnVnX3RvX2xvZygkdGhpcy0+R2V0TmFtZSgpLicgaW5zdGFsbGF0aW9uIGZhaWxlZDogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGwgRmFpbGVkICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICByZXR1cm4gJGUtPkdldG1lc3NhZ2UoKTsKfQoKCgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGRiID0gY2dlX3V0aWxzOjpnZXRfZGIoKTsgLy8gb3VyIHNwZWNpYWwgZGIgb2JqZWN0IChtb2RpZmllZCB0byB0aHJvdyBleGNlcHRpb25zKQoKdHJ5IHsKICAgICRkYi0+QmVnaW5UcmFucygpOwoKICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChDR0NPTlRBQ1RTX0FEUl9DQVRTX1RCTCk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChDR0NPTlRBQ1RTX0NBVFNfVEJMKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKENHQ09OVEFDVFNfU1VCX1RCTCk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChDR0NPTlRBQ1RTX1RCTCk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgogICAgJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oQ0dDb250YWN0czo6UEVSTSk7CiAgICAkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbihDR0NvbnRhY3RzOjpDQVRTX1BFUk0pOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKICAgICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKICAgIFxDR0V4dGVuc2lvbnNcanNsb2FkZXJcanNsb2FkZXI6OnVucmVnaXN0ZXJfYnlfbW9kdWxlKCR0aGlzLT5HZXROYW1lKCkpOwoKICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgZGVidWdfdG9fbG9nKCR0aGlzLT5HZXROYW1lKCkuJyB1bmluc3RhbGwgZmFpbGVkOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwndW5pbnN0YWxsIEZhaWxlZCAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgcmV0dXJuICRlLT5HZXRtZXNzYWdlKCk7Cn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIHJlZ2lzdGVyIG91ciBqcXVlcnkgcGx1Z2lucwokbG9hZGVyID0gbmV3IFxDR0V4dGVuc2lvbnNcanNsb2FkZXJcbGliZGVmbignY2djb250YWN0c19hZGQnKTsKJGxvYWRlci0+Y2FsbGJhY2sgPSBhcnJheSgnXENHQ29udGFjdHNcdXRpbHMnLCdsb2FkX2pzJyk7CiRsb2FkZXItPmRlcGVuZHMgPSAnY2dfY21zbXMnOwpcQ0dFeHRlbnNpb25zXGpzbG9hZGVyXGpzbG9hZGVyOjpyZWdpc3RlcigkbG9hZGVyKTsKJGxvYWRlciA9IG5ldyBcQ0dFeHRlbnNpb25zXGpzbG9hZGVyXGxpYmRlZm4oJ2NnY29udGFjdHNfc2VsJyk7CiRsb2FkZXItPmNhbGxiYWNrID0gYXJyYXkoJ1xDR0NvbnRhY3RzXHV0aWxzJywnbG9hZF9qcycpOwokbG9hZGVyLT5kZXBlbmRzID0gJ2NnX2Ntc21zJzsKXENHRXh0ZW5zaW9uc1xqc2xvYWRlclxqc2xvYWRlcjo6cmVnaXN0ZXIoJGxvYWRlcik7CgovLyByZWdpc3RlciBvdXIgc21hcnR5IHBsdWdpbnMKJHRoaXMtPlJlZ2lzdGVyU21hcnR5UGx1Z2luKCdjZ2NfZGlzcGxheW5hbWUnLCdmdW5jdGlvbicsICdcQ0dDb250YWN0c1xjb250YWN0X3NtYXJ0eTo6ZGlzcGxheW5hbWUnKTsKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzEuMC4yJykgPCAwICkgewogICAgJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChDR0NPTlRBQ1RTX1RCTCwgImZldV91aWQgSSIpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwp9CmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzEuMC4zJykgPCAwICkgewogICAgJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKENHQ09OVEFDVFNfVEJMLidpMScsQ0dDT05UQUNUU19UQkwsJ2d1aWQnLGFycmF5KCdVTklRVUUnKSk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cn0KaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4yLjUnKSA8IDAgKSB7CiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbihDR0NvbnRhY3RzOjpDQVRTX1BFUk0sQ0dDb250YWN0czo6Q0FUU19QRVJNKTsKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/phpdoc.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+CjxwaHBkb2M+CiAgPHRpdGxlPjwhW0NEQVRBW0NHQ29udGFjdHMgYnkgY2FsZ3V5MTAwMF1dPjwvdGl0bGU+CiAgPHBhcnNlcj4KICAgIDx0YXJnZXQ+L3RtcC9DR0NvbnRhY3RzL2FwaWRvYzwvdGFyZ2V0PgogIDwvcGFyc2VyPgogIDx0cmFuc2Zvcm1lcj4KICAgIDx0YXJnZXQ+ZG9jL2FwaWRvYzwvdGFyZ2V0PgogIDwvdHJhbnNmb3JtZXI+CiAgPGZpbGVzPgogICAgPGRpcmVjdG9yeT5saWI8L2RpcmVjdG9yeT4KICAgIDxpZ25vcmU+bGliLypjc3M8L2lnbm9yZT4KICAgIDxpZ25vcmU+bGliL2NsYXNzLnZjYXJkX2dlbmVyYXRvci5waHA8L2lnbm9yZT4KICA8L2ZpbGVzPgo8L3BocGRvYz4K]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_categories_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgogIDxhIGhyZWY9Inttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9lZGl0X2NhdCcgdXJsb25seT0xfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJyBjbGFzcz0nc3lzdGVtaWNvbicgYWx0PSRtb2QtPkxhbmcoJ3Byb21wdF9hZGRfY2F0Jyl9IHskbW9kLT5MYW5nKCdwcm9tcHRfYWRkX2NhdCcpfTwvYT4KPC9kaXY+Cgp7aWYgY291bnQoJGNhdGVnb3JpZXMpfQo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSIgaWQ9ImNhdGxpc3QiPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdsYmxfbmFtZScpfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPjwvdGg+eyogZWRpdCAqfQogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPnsqIGRlbGV0ZSAqfQogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICB7Zm9yZWFjaCAkY2F0ZWdvcmllcyBhcyAkY2F0ZWdvcnl9CiAgICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQogICAge21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249J2FkbWluX2VkaXRfY2F0JyBjYXRpZD0kY2F0ZWdvcnkuaWQgdXJsb25seT0xIGFzc2lnbj0nZWRpdF91cmwnfQogICAge21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249J2FkbWluX2RlbGV0ZV9jYXQnIGNhdGlkPSRjYXRlZ29yeS5pZCB1cmxvbmx5PTEgYXNzaWduPSdkZWxfdXJsJ30KICAgIDx0ciBpZD0iZmxkX3skY2F0ZWdvcnkuaWR9IiBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+CiAgICAgIDx0ZD48YSBjbGFzcz0iZWRpdF9jYXQiIGhyZWY9InskZWRpdF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3Byb21wdF9lZGl0X2NhdCcpfSI+e3JlcGVhdCBzdHJpbmc9JyAmcmFxdW87ICcgdGltZXM9JGNhdGVnb3J5LmRlcHRofXskY2F0ZWdvcnkubmFtZX08L2E+PC90ZD4KICAgICAgPHRkPjxhIGNsYXNzPSJlZGl0X2NhdCAiaHJlZj0ieyRlZGl0X3VybH0iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vZWRpdC5naWYnIGNsYXNzPSdzeXN0ZW1pY29uJyBhbHQ9JG1vZC0+TGFuZygncHJvbXB0X2VkaXRfY2F0Jyl9PC9hPjwvdGQ+CiAgICAgIDx0ZD48YSBjbGFzcz0iZGVsX2NhdCIgaHJlZj0ieyRkZWxfdXJsfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJyBjbGFzcz0nc3lzdGVtaWNvbicgYWx0PSRtb2QtPkxhbmcoJ3Byb21wdF9kZWxldGVfY2F0Jyl9PC9hPjwvdGQ+CiAgICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_contacts_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBsaWI9J2NnY29udGFjdHNfYWRkJ317KiBsb2FkcyB0aGUgY2djb250YWN0c19hZGQgdWkgcGx1Z2luICp9CntjZ2pzX3JlcXVpcmUgbGliPSdjZ2NvbnRhY3RzX3NlbCd9eyogbG9hZHMgdGhlIGNnY29udGFjdHNfc2VsIHVpIHBsdWdpbiAqfQp7Y2dqc19yZXF1aXJlIGxpYj0nY2dfZGF0ZXBpY2tlcid9eyogbG9hZHMgdGhlIGRhdGVwaWNrZXIgcGx1Z2luICp9Cgp7KiBhZGQgc29tZSBzdHlsZXMgdGhhdCBhcmUgb25seSB1c2VkIGZvciB0aGlzIHRlbXBsYXRlICp9CntjZ2Nzc19hZGR9CiNxdWlja19hZGQsI2ZpbmRfY29udGFjdCB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CiNvcHRpb24tbWVudSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CnVsI29wdGlvbi1tZW51IHsKICBtYXJnaW46IDA7CiAgYm9yZGVyOiBub25lOwp9CnVsI29wdGlvbi1tZW51ID4gbGkgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogYXV0bzsKICBtYXJnaW46IDA7CiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTsKfQovKgojb3B0aW9uLW1lbnUgbGkgdWwgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAtOTk5ZW07CiAgdG9wOiAwOwogIG1hcmdpbjogMDsKfQojb3B0aW9uLW1lbnUgbGkucGFyZW50OmhvdmVyIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KI29wdGlvbi1tZW51IGxpOmhvdmVyIHVsIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CglsZWZ0OiAtNTBweDsKCXRvcDogMzJweDsKfQojb3B0aW9uLW1lbnUgbGkgbGkgewoJZGlzcGxheTogYmxvY2s7CgljdXJzb3I6IHBvaW50ZXI7Cn0KKi8KCnVsLnVpLWF1dG9jb21wbGV0ZSB7CiAgei1pbmRleDogMTEwMDsKfQoKey9jZ2Nzc19hZGR9Cgp7KiBhZGQgc29tZSBqcyB0aHQgaXMgb25seSBuZWVkZWQgZm9yIHRoaXMgdGVtcGxhdGUgKn0Keyogc2luY2UgdGhlIGNnY29udGFjdHMgcGx1Z2lucyBhcmUgdWkgYmFzZWQsIHdlIGNhbiBhc3N1bWUgdGhhdCBqcXVlcnksIGFuZCBqcXVlcnkgdWkgYXJlIGVuYWJsZWQgdG9vICp9CntjZ2pzX2FkZH0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAvLyBoYW5kbGUgdGhlIHF1aWNrIGFkZCBidXR0b24gd2hpY2ggdXNlcyB0aGUgY2djb250YWN0c19hZGQgYnV0dG9uCiAgJCgnI3F1aWNrX2FkZCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKHRoaXMpLmNnY29udGFjdHNfYWRkKHsKICAgICAgYWZ0ZXJBZGQ6IGZ1bmN0aW9uKGUsZGF0YSkgewogICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAne21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249ZGVmYXVsdGFkbWluIGZvcmpzPTF9JzsKICAgICAgfQogICAgfSk7CiAgfSk7CgogICQoJyNvcHRpb24tbWVudScpLm1lbnUoewogICAgcG9zaXRpb246IHsgbXk6ICdsZWZ0IHRvcCcsIGF0OiAnbGVmdCBib3R0b20nIH0KICB9KTsKCiAgLy8gdXNlIGNnY29udGFjdHNfc2VsIG9uIHRoZSBmaW5kX3VzZXIgdGhpbmd5CiAgJCgnI2ZpbmRfdXNlcicpLmNnY29udGFjdHNfc2VsKCk7CgogIC8vIHVzZSBkYXRlcGlja2VyIG9uIHRoZSBmaWx0ZXJfbW9kX3NpbmNlIGlucHV0CiAgJCgnI2ZpbHRlcl9tb2Rfc2luY2UnKS5kYXRlcGlja2VyKCk7CgogICQoJ2EuZGVsX2NvbnRhY3QnKS5jbGljayhmdW5jdGlvbihlKXsKICAgIHZhciB2ID0gY29uZmlybSgneyRtb2QtPkxhbmcoJ2NvbmZpcm1fZGVsZXRlX2NvbnRhY3QnKX0nKTsKICAgIGlmKCAhdiApIGUucHJldmVudERlZmF1bHQoKTsKICB9KTsKCiAgJCgnI2ZpbmRfY29udGFjdCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmluZF9kbGcnKS5kaWFsb2coewogICAgICAgdGl0bGU6ICd7JG1vZC0+TGFuZygncHJvbXB0X2ZpbmRfY29udGFjdCcpfScsCiAgICAgICB3aWR0aDogJ2F1dG8nLAogICAgICAgbW9kYWw6IHRydWUsCiAgICB9KQogIH0pOwogICQoJyNmaWx0ZXJfYnRuJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNmaWx0ZXJfZGxnJykuZGlhbG9nKHsKICAgICAgIHdpZHRoOiAnYXV0bycsCiAgICAgICBtb2RhbDogdHJ1ZSwKICAgICAgIGJ1dHRvbnM6IFsKICAgICAgICAgewoJICAgdGV4dDogJ3skbW9kLT5MYW5nKCdzdWJtaXQnKX0nLAoJICAgY2xpY2s6IGZ1bmN0aW9uKCl7CgkgICAgICQodGhpcykuZGlhbG9nKCdjbG9zZScpOwoJICAgICAkKCdmb3JtJyx0aGlzKS5zdWJtaXQoKTsKCSAgIH0KCSB9LAoJIHsKCSAgIHRleHQ6ICd7JG1vZC0+TGFuZygnY2FuY2VsJyl9JywKCSAgIGNsaWNrOiBmdW5jdGlvbigpewoJICAgICAkKHRoaXMpLmRpYWxvZygnY2xvc2UnKTsKCSAgIH0KCSB9CiAgICAgICBdCiAgICB9KTsKICB9KTsKCiAgJCgnLmNfYnVsa2FjdGlvbicpLmF0dHIoJ2Rpc2FibGVkJywnZGlzYWJsZWQnKTsKCiAgJCgnI2Nfc2VsYWxsJykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciB2ID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7CiAgICBpZiggdiApIHsKICAgICAgJCgnLmNfc2VsJykuYXR0cignY2hlY2tlZCcsJ2NoZWNrZWQnKTsKICAgIH0gZWxzZSB7CiAgICAgICQoJy5jX3NlbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgIH0KICAgICQoJy5jX3NlbDpmaXJzdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogIH0pOwoKICAkKCcuY19zZWwnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2Nfc2VsYWxsJykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogIH0pOwoKICAkKCcuY19zZWwnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgIGlmKCAkKCcuY19zZWw6Y2hlY2tlZCcpLmxlbmd0aCA+IDAgKSB7CiAgICAgICQoJy5jX2J1bGthY3Rpb24nKS5idXR0b24oJ29wdGlvbicsJ2Rpc2FibGVkJyxmYWxzZSk7CiAgICB9IGVsc2UgewogICAgICAkKCcuY19idWxrYWN0aW9uJykuYnV0dG9uKCdvcHRpb24nLCdkaXNhYmxlZCcsdHJ1ZSk7CiAgICB9CiAgfSk7CgogICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJyNjX2V4cHNlbCcsZnVuY3Rpb24oZSl7CiAgICAgdmFyIHRtcCA9IFtdOwogICAgICQoJy5jX3NlbDpjaGVja2VkJykuZWFjaChmdW5jdGlvbigpewogICAgICAgdG1wLnB1c2goJCh0aGlzKS52YWwoKSk7CiAgICAgfSk7CiAgICAgJCgnI2Nfc2VsZWN0ZWQnKS52YWwodG1wLmpvaW4oKSk7CiAgfSk7CgogICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJyNjX2RlbHNlbCcsZnVuY3Rpb24oZSl7CiAgICAgaWYoICFjb25maXJtKCd7JG1vZC0+TGFuZygnY29uZmlybV9idWxrZGVsZXRlJyl9JykgKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgIH0gZWxzZSB7CiAgICAgICB2YXIgdG1wID0gW107CiAgICAgICAkKCcuY19zZWw6Y2hlY2tlZCcpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgdG1wLnB1c2goJCh0aGlzKS52YWwoKSk7CiAgICAgICB9KTsKICAgICAgICQoJyNjX3NlbGVjdGVkJykudmFsKHRtcC5qb2luKCkpOwogICAgIH0KICB9KTsKfSk7CnsvY2dqc19hZGR9Cgo8ZGl2IGlkPSJmaW5kX2RsZyIgdGl0bGU9InskbW9kLT5MYW5nKCdwcm9tcHRfZmluZF9jb250YWN0Jyl9IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogIDxpbnB1dCBpZD0iZmluZF91c2VyIiBzaXplPSIzMCIvPgo8L2Rpdj4KCjxkaXYgaWQ9ImZpbHRlcl9kbGciIHRpdGxlPSJ7JG1vZC0+TGFuZygncHJvbXB0X2ZpbHRlcicpfSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICB7JGZpbHRlcl9mb3Jtc3RhcnR9CiAgeyogY2F0ZWdvcnkgKn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij57JG1vZC0+TGFuZygnY2F0ZWdvcnknKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgIDxzZWxlY3QgaWQ9ImZpbHRlcl9jYXRlZ29yeSIgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXJfY2F0ZWdvcnkiPgogICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kY2F0ZWdvcnlfbGlzdCBzZWxlY3RlZD0kZmlsdGVyLmNhdGVnb3J5fGRlZmF1bHQ6Jyd9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KCiAgeyogbW9kaWZpZWQgc2luY2UgKn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij57JG1vZC0+TGFuZygnbW9kaWZpZWRfc2luY2UnKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZmlsdGVyX21vZF9zaW5jZSIgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXJfbW9kaWZpZWRfc2luY2UiIHZhbHVlPSJ7JGZpbHRlci5tb2RpZmllZF9zaW5jZXxkYXRlX2Zvcm1hdDonJW0vJWQvJVknfGRlZmF1bHQ6Jyd9Ii8+CiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgoKICB7KiBwYWdlbGltaXQgKn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij57JG1vZC0+TGFuZygncGFnZV9saW1pdCcpfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9wYWdlbGltaXQiPgogICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kcGFnZWxpbWl0cyBzZWxlY3RlZD0kZmlsdGVyLmxpbWl0fQogICAgICA8L3NlbGVjdD4KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CiAgeyRmaWx0ZXJfZm9ybWVuZH0KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9InBhZGRpbmctYm90dG9tOiAxZW07IHBhZGRpbmctcmlnaHQ6IDVweDsiPgogIDxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0OyI+CiAgICA8dWwgaWQ9Im9wdGlvbi1tZW51Ij4KICAgICAgPGxpIGlkPSJmaW5kX2NvbnRhY3QiPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vdmlldy5naWYnIGFsdD0kbW9kLT5MYW5nKCdwcm9tcHRfZmluZF9jb250YWN0JykgY2xhc3M9InN5c3RlbWljb24ifSB7JG1vZC0+TGFuZygncHJvbXB0X2ZpbmRfY29udGFjdCcpfTwvbGk+CiAgICAgIDxsaT57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL3J1bi5naWYnIGNsYXNzPSJzeXN0ZW1pY29uIn0mbmJzcDt7JG1vZC0+TGFuZygncHJvbXB0X29wdGlvbnMnKX0KICAgICAgICA8dWw+CgkgIDxsaT4KCSAgICA8YSBpZD0icXVpY2tfYWRkIj57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnIGNsYXNzPSdzeXN0ZW1pY29uJyBhbHQ9JG1vZC0+TGFuZygncHJvbXB0X3F1aWNrX2FkZF9jb250YWN0Jyl9IHskbW9kLT5MYW5nKCdwcm9tcHRfcXVpY2tfYWRkX2NvbnRhY3QnKX0uLi48L2E+CgkgIDwvbGk+CgkgIDxsaT4KICAgICAgICAgICAgPGEgaHJlZj0ie21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249YWRtaW5fZWRpdF9jb250YWN0IHVybG9ubHk9MX0iPgogICAgICAgICAgICB7Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnIGNsYXNzPSdzeXN0ZW1pY29uJyBhbHQ9JG1vZC0+TGFuZygncHJvbXB0X2FkZF9jb250YWN0Jyl9IHskbW9kLT5MYW5nKCdwcm9tcHRfYWRkX2NvbnRhY3QnKX0uLi4KICAgICAgICAgICAgPC9hPgoJICA8L2xpPgoJICA8bGk+CiAgICAgICAgICAgIDxhIGlkPSJmaWx0ZXJfYnRuIj57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL3ZpZXcuZ2lmJyBjbGFzcz0nc3lzdGVtaWNvbicgYWx0PSRtb2QtPkxhbmcoJ3Byb21wdF9maWx0ZXInKX0geyRtb2QtPkxhbmcoJ3Byb21wdF9maWx0ZXInKX0uLi48L2E+CgkgIDwvbGk+CgkgIDxsaT4KCSAgICA8YSBocmVmPSJ7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9leHBvcnRfcGRmIHVybG9ubHk9MX0iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vZXhwb3J0LmdpZicgY2xhc3M9J3N5c3RlbWljb24nIGFsdD0kbW9kLT5MYW5nKCdwcm9tcHRfZXhwb3J0X3BkZicpfSB7JG1vZC0+TGFuZygncHJvbXB0X2V4cG9ydF9wZGYnKX08L2E+CgkgIDwvbGk+CgkgIDxsaT4KCSAgICA8YSBocmVmPSJ7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9pbXBvcnRfdmNhcmQgdXJsb25seT0xfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJyBjbGFzcz0nc3lzdGVtaWNvbicgYWx0PSRtb2QtPkxhbmcoJ3Byb21wdF9pbXBvcnRfdmNhcmQnKX0geyRtb2QtPkxhbmcoJ3Byb21wdF9pbXBvcnRfdmNhcmQnKX08L2E+CgkgIDwvbGk+Cgk8L3VsPgogICAgICA8L2xpPgogIDwvZGl2PgoKICB7aWYgaXNzZXQoJHBhZ2luYXRvcil9CiAgPGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB0ZXh0LWFsaWduOiByaWdodDsiPgogIHskZm9ybXN0YXJ0fQogIHskbW9kLT5MYW5nKCdwcm9tcHRfcGFnZScpfToKICA8c2VsZWN0IGlkPSJwYWdlbnVtYmVyIiBuYW1lPSJ7JGFjdGlvbmlkfW9mZnNldCI+CiAge2ZvciAkaWR4PTAgdG8gJHBhZ2luYXRvci5wYWdlY291bnQgLSAxfQogICAgPG9wdGlvbiB2YWx1ZT0ieyRpZHgqJHBhZ2luYXRvci5wYWdlbGltaXR9IiB7aWYgJHBhZ2luYXRvci5wYWdlIC0gMSA9PSAkaWR4fXNlbGVjdGVkPSJzZWxlY3RlZCJ7L2lmfT57JGlkeCsxfTwvb3B0aW9uPgogIHsvZm9yfQogIDwvc2VsZWN0PgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9cGFnZSIgdmFsdWU9InskbW9kLT5MYW5nKCdnbycpfSIvPgogIHskZm9ybWVuZH0KICA8L2Rpdj4KICB7L2lmfQo8L2Rpdj4KCntpZiBpc3NldCgkY29udGFjdHMpfQo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2xibF9uYW1lJyl9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdsYmxfcGhvbmUnKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2xibF9lbWFpbCcpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnbGJsX2FkZHJlc3MnKX08L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4KICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY19zZWxhbGwiIHZhbHVlPSIxIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3Byb21wdF9zZWxlY3RfYWxsJyl9Ii8+CiAgICAgIDwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogIHtmb3JlYWNoICRjb250YWN0cyBhcyAkY29udGFjdH0KICAgIHttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWFkbWluX2VkaXRfY29udGFjdCBjaWQ9JGNvbnRhY3QtPmdldF9pZCgpIHVybG9ubHk9MSBhc3NpZ249J2VkaXRfdXJsJ30KICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9CiAgICA8dHIgaWQ9ImZsZF97JGNvbnRhY3QtPmdldF9pZCgpfSIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgogICAgICA8dGQ+PGEgaHJlZj0ieyRlZGl0X3VybH0iIHRpdGxlPSJ7JG1vZC0+TGFuZygnZWRpdCcpfSI+eyRjb250YWN0LT5nZXRfZGlzcGxheV9uYW1lKCl9PC9hPjwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICAgeyRvYmo9JGNvbnRhY3QtPmdldF9wcmVmZXJyZWRfcGhvbmVfb2JqKCl9Cgkge2lmICRvYmp9CiAJICAgeyR0bXAxPSdwaG9uZV8nfGNhdDokb2JqLT5nZXRfdHlwZSgpfQogIAkgICB7JG9iai0+Z2V0X3ZhbHVlKCl9IDxlbT4oeyRvYmotPmdldF9sYWJlbCgpfSB7JG1vZC0+TGFuZygkdG1wMSl9KTwvZW0+Cgkgey9pZn0KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgICB7JG9iaj0kY29udGFjdC0+Z2V0X3ByZWZlcnJlZF9lbWFpbF9vYmooKX0KCSB7aWYgJG9ian0KICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWFpbCIgdGl0bGU9InskbW9kLT5MYW5nKCd0aXRsZV9zZW5kbWFpbCcpfSI+e21haWx0byBhZGRyZXNzPSRvYmotPmdldF92YWx1ZSgpIGVuY29kZT1oZXh9PC9zcGFuPgogIAkgICA8ZW0+KHskb2JqLT5nZXRfbGFiZWwoKX0pPC9lbT4KCSB7L2lmfQogICAgICA8L3RkPgogICAgICA8dGQ+eyRjb250YWN0LT5nZXRfcHJlZmVycmVkX2FkZHJlc3MoKX08L3RkPgogICAgICA8dGQ+PGEgaHJlZj0ieyRlZGl0X3VybH0iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vZWRpdC5naWYnIGFsdD0kbW9kLT5MYW5nKCdlZGl0Jyl9PC9hPjwvdGQ+CiAgICAgIDx0ZD48YSBjbGFzcz0iZGVsX2NvbnRhY3QiIGhyZWY9Inttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWFkbWluX2RlbF9jb250YWN0IGNpZD0kY29udGFjdC0+Z2V0X2lkKCkgdXJsb25seT0xfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnZGVsZXRlJyl9PC9hPjwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJjX3NlbCIgdmFsdWU9InskY29udGFjdC0+Z2V0X2lkKCl9Ii8+CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIHskYnVsa2Zvcm1zdGFydH0KICA8cCBjbGFzcz0iZ3JpZF8xMiB0ZXh0LXJpZ2h0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJjX2V4cHNlbCIgY2xhc3M9ImNfYnVsa2FjdGlvbiIgbmFtZT0ieyRhY3Rpb25pZH1leHBvcnQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnZXhwb3J0X3NlbGVjdGVkJyl9Ii8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iY19kZWxzZWwiIGNsYXNzPSJjX2J1bGthY3Rpb24iIG5hbWU9InskYWN0aW9uaWR9ZGVsZXRlIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2RlbGV0ZV9zZWxlY3RlZCcpfSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImNfc2VsZWN0ZWQiIG5hbWU9InskYWN0aW9uaWR9c2VsZWN0ZWQiLz4KICA8L3A+CiAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICB7JGJ1bGtmb3JtZW5kfQo8L2Rpdj4Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_edit_cat.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJyNjYW5jZWwnLGZ1bmN0aW9uKCl7CiAgICAkKCc6aW5wdXQnKS5yZW1vdmVBdHRyKCdyZXF1aXJlZCcpOwogIH0pOwp9KQo8L3NjcmlwdD4KCntpZiAkY2F0ZWdvcnkuaWQgPiAwfQo8aDM+eyRtb2QtPkxhbmcoJ3BhZ2V0aXRsZV9lZGl0X2NhdCcpfTwvaDM+CntlbHNlfQo8aDM+eyRtb2QtPkxhbmcoJ3BhZ2V0aXRsZV9hZGRfY2F0Jyl9PC9oMz4Key9pZn0KCnskZm9ybXN0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICA8aW5wdXQgaWQ9ImNhbmNlbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+KnskbW9kLT5MYW5nKCdsYmxfbmFtZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1uYW1lIiB2YWx1ZT0ieyRjYXRlZ29yeS5uYW1lfSIgc2l6ZT0iODAiIHJlcXVpcmVkPSJyZXF1aXJlZCIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRtb2QtPkxhbmcoJ2xibF9wYXJlbnQnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfXBhcmVudF9pZCI+CiAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGNhdGVnb3J5X2xpc3Qgc2VsZWN0ZWQ9JGNhdGVnb3J5LnBhcmVudF9pZH0KICAgIDwvc2VsZWN0PgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnbGJsX2Rlc2NyaXB0aW9uJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIHtjZ2VfdGV4dGFyZWEgcHJlZml4PSRhY3Rpb25pZCBuYW1lPWRlc2NyaXB0aW9uIHd5c2l3eWc9MCB2YWx1ZT0kY2F0ZWdvcnkuZGVzY3JpcHRpb24gcm93cz0zfQogIDwvcD4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_edit_contact.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBsaWI9J2NnX2Ntc21zJ30Ke2NnanNfcmVxdWlyZSBsaWI9J2pzdmlld3MnfQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nanMvanF1ZXJ5LmF1dG9faW5wdXRfc2l6ZS5qcyd9Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAvLyBOb3RlOiBiZWNhdXNlIHdlIG1peCBpbiBzbWFydHkgaW50byB0aGlzIGpzLi4uIGl0IG11c3QgYmUgZGlyZWN0bHkgaW4gdGhlIHRlbXBsYXRlCiAgICAvLyBhbmQgbm90IGNhY2hlZCB3aXRoIHRoZSBjZ2pzIHN0dWZmCiAgICB2YXIgYXBwID0ge307CgogICAgLy8gdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGpzcmVuZGVyCiAgICAkLnZpZXdzLmNvbnZlcnRlcnMoJ2NsYXNzTGFiZWwnLGZ1bmN0aW9uKHZhbCl7CglyZXR1cm4gYXBwLmNsYXNzZXNbdmFsXTsKICAgIH0pOwogICAgJC52aWV3cy5jb252ZXJ0ZXJzKCdwaG9uZVR5cGVMYWJlbCcsZnVuY3Rpb24odmFsKXsKICAgICAgICByZXR1cm4gYXBwLnBob25lX3R5cGVzW3ZhbF07CiAgICB9KTsKICAgICQudmlld3MuY29udmVydGVycyh7CiAgICAgICAgZGlzcGxheUFkZHJlc3M6IGZ1bmN0aW9uKHZhbCl7CgkgICAgaWYoIHR5cGVvZiB2YWwgPT0gJ29iamVjdCcgKSByZXR1cm4gX2dldEFkZHJlc3NTdHJpbmcodmFsKTsKICAgICAgICB9CiAgICB9KTsKICAgICQudmlld3MuaGVscGVycyh7CglsYW5nOiBmdW5jdGlvbihrZXkpIHsKCSAgICByZXR1cm4gYXBwLmxhbmdba2V5XTsKCX0sCiAgICB9KTsKCiAgICAvLwogICAgLy8gdXRpbGl0eSBmdW5jdGlvbnMKICAgIC8vCgogICAgZnVuY3Rpb24gX2dldEZvcm1hdHRlZE5hbWUoKSB7CiAgICAgICAgZm9yKCB2YXIgaWR4IGluIGFwcC5jb250YWN0Lm9iamVjdHMgKSB7CgkgICAgdmFyIG9iID0gYXBwLmNvbnRhY3Qub2JqZWN0c1tpZHhdOwogIAkgICAgaWYoIG9iLmNsYXNzID09ICdjb250YWN0X25hbWUnICkgewoJICAgICAgICB2YXIgdCA9IFtdOwoJCS8vaWYoIG9iLnByZWZpeC5sZW5ndGggPiAwICkgdC5wdXNoKG9iLnByZWZpeCk7CgkJaWYoIG9iLmZpcnN0Lmxlbmd0aCA+IDAgKSB0LnB1c2gob2IuZmlyc3QpOwoJCWlmKCBvYi5taWRkbGUubGVuZ3RoID4gMCApIHsKCQkgIGlmKCB0Lmxlbmd0aCA9PSAxICkgewoJCSAgICB0LnB1c2gob2IubWlkZGxlLmNoYXJBdCgwKSArICcuJyk7CgkJICB9CgkJICBlbHNlIHsKCQkgICAgdC5wdXNoKG9iLm1pZGRsZSk7CgkJICB9CgkJfQoJCWlmKCBvYi5sYXN0Lmxlbmd0aCA+IDAgKSB0LnB1c2gob2IubGFzdCk7CgkJLy9pZiggb2Iuc3VmZml4Lmxlbmd0aCA+IDAgKSB0LnB1c2gob2Iuc3VmZml4KTsKCQlpZiggdC5sZW5ndGggPiAwICkgewoJCSAgICB2YXIgdDIgPSB0LmpvaW4oJyAnKTsKCQkgICAgcmV0dXJuIHQyOwoJCX0KCSAgICB9Cgl9CiAgICB9CgogICAgZnVuY3Rpb24gX2dldERpc3BsYXlOYW1lKCkgewogICAgICAgIGlmKCBhcHAuY29udGFjdC5mdWxsbmFtZSAhPSBudWxsICYmIGFwcC5jb250YWN0LmZ1bGxuYW1lLmxlbmd0aCA+IDAgKSByZXR1cm4gYXBwLmNvbnRhY3QuZnVsbG5hbWU7CglyZXR1cm4gX2dldEZvcm1hdHRlZE5hbWUoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfdXBkYXRlRGlzcGxheU5hbWUoZm9yY2UpIHsKICAgICAgICAvLyBzZXQgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBmdWxsbmFtZSBmaWVsZCB0byB0aGUKCS8vIGZvcm1hdHRlZCBuYW1lLCBpZiB0aGUgZnVsbCBuYW1lIGlzIGVtcHR5LgogICAgICAgIGlmKCBhcHAuY29udGFjdC5mdWxsbmFtZSA9PSBudWxsIHx8IGFwcC5jb250YWN0LmZ1bGxuYW1lLmxlbmd0aCA9PSAwICkgewogICAgICAgICAgICB2YXIgbm9tID0gX2dldEZvcm1hdHRlZE5hbWUoKTsKCSAgICBpZiggbm9tID09IG51bGwgfHwgbm9tLmxlbmd0aCA9PSAwICkgbm9tID0gYXBwLmxhbmcucGhfYWRkbmFtZTsKICAgICAgICAgICAgJCgnI2NvbnRhY3RfZnVsbG5hbWUnKS5hdHRyKCdwbGFjZWhvbGRlcicsbm9tKTsKCX0KICAgIH0KCiAgICBmdW5jdGlvbiBfZ2V0QWRkcmVzc1N0cmluZyh2YWwpIHsKICAgICAgICB2YXIgdCA9IFtdOwoJaWYoIHR5cGVvZiB2YWwuc3RyZWV0ICE9ICd1bmRlZmluZWQnICYmIHZhbC5zdHJlZXQgIT0gJycgKSB0LnB1c2godmFsLnN0cmVldCk7CglpZiggdHlwZW9mIHZhbC5wb2JveCAhPSAndW5kZWZpbmVkJyAmJiB2YWwucG9ib3ggIT0gJycgKSB0LnB1c2godmFsLnBvYm94KTsKCgl2YXIgdDIgPSBbXTsKCWlmKCB0eXBlb2YgdmFsLmNpdHkgIT0gJ3VuZGVmaW5lZCcgJiYgdmFsLmNpdHkgIT0gJycgKSB0Mi5wdXNoKHZhbC5jaXR5KTsKCWlmKCB0eXBlb2YgdmFsLnN0YXRlICE9ICd1bmRlZmluZWQnICYmIHZhbC5zdGF0ZSAhPSAnJyApIHQyLnB1c2godmFsLnN0YXRlKTsKCWlmKCB0eXBlb2YgdmFsLnppcCAhPSAndW5kZWZpbmVkJyAmJiB2YWwuemlwICE9ICcnICkgdDIucHVzaCh2YWwuemlwKTsKCWlmKCB0Mi5sZW5ndGggPiAwICkgdC5wdXNoKHQyLmpvaW4oJyAnKSk7CgoJaWYoIHR5cGVvZiB2YWwuY291bnRyeSAhPSAndW5kZWZpbmVkJyAmJiB2YWwuY291bnRyeSAhPSAnJyApIHQucHVzaCh2YWwuY291bnRyeSk7Cgl2YXIgb3V0ID0gdC5qb2luKCdcbicpOwoJcmV0dXJuIG91dDsKICAgIH0KCiAgICBmdW5jdGlvbiBfdmFsaWRhdGVDb250YWN0KCkKICAgIHsKCS8vIGNvbnRhY3QgbXVzdCBoYXZlIHNvbWUgc29ydCBvZiBkaXNwbGF5IG5hbWUuCgl2YXIgZG4gPSBfZ2V0RGlzcGxheU5hbWUoKTsKCWlmKCAhZG4gKSB0aHJvdyBhcHAubGFuZy5lcnJvcl9uYW1lcmVxdWlyZWQ7CgoJLy8gY29udGFjdCBtdXN0IGhhdmUgc29tZSBzb3J0IG9mIGFkZHJlc3MsIHVybCxwaG9uZSwgb3IgZW1haWwgYWRkcmVzcwoJdmFyIGZuZCA9IDA7Cglmb3IoIGkgaW4gYXBwLmNvbnRhY3Qub2JqZWN0cyApIHsKCSAgIGlmKCBmbmQgPT0gMSApIGJyZWFrOwoJICAgdmFyIG9iID0gYXBwLmNvbnRhY3Qub2JqZWN0c1tpXTsKCgkgICBzd2l0Y2goIG9iLmNsYXNzICkgewoJICAgICBjYXNlICdjb250YWN0X3Bob25lJzoKCSAgICAgCSAgaWYoIHR5cGVvZiBvYi52YWx1ZSA9PSAndW5kZWZpbmVkJyB8fCBvYi52YWx1ZSA9PSBudWxsIHx8IG9iLnZhbHVlID09ICcnICkgY29udGludWU7CgkgICAgIAkgIGlmKCB0eXBlb2Ygb2IudHlwZSA9PSAndW5kZWZpbmVkJyB8fCBvYi50eXBlID09IG51bGwgfHwgb2IudHlwZSA9PSAnJyApIGNvbnRpbnVlOwoJCSAgZm5kID0gMTsKCQkgIGJyZWFrOwoKCSAgICAgY2FzZSAnY29udGFjdF9lbWFpbCc6CgkgICAgIGNhc2UgJ2NvbnRhY3RfdXJsJzoKCSAgICAgCSAgaWYoIHR5cGVvZiBvYi52YWx1ZSA9PSAndW5kZWZpbmVkJyB8fCBvYi52YWx1ZSA9PSBudWxsIHx8IG9iLnZhbHVlID09ICcnICkgY29udGludWU7CgkJICBmbmQgPSAxOwoJCSAgYnJlYWs7CgoJICAgICBjYXNlICdjb250YWN0X2FkZHJlc3MnOgoJICAgICAgICAgIHZhciBmbmQyID0gMDsKCSAgICAgICAgICBmb3IoIGogaW4gb2IgKSB7CgkJICAgIHN3aXRjaCggaiApIHsKCQkgICAgICAgY2FzZSAnY2xhc3MnOgoJCSAgICAgICBjYXNlICdsYWJlbCc6CgkJICAgICAgICAgYnJlYWs7CgkJICAgICAgIGRlZmF1bHQ6CgkJICAgICAgICAgaWYoIHR5cGVvZiBvYltqXSA9PSAndW5kZWZpbmVkJyB8fCBvYltqXSA9PSBudWxsIHx8IG9iW2pdICE9ICcnICkgZm5kMiA9IDE7CgkJICAgICAgICAgYnJlYWs7CgkJICAgIH0KCQkgIH0KCQkgIGlmKCBmbmQyICkgZm5kID0gMTsKCSAgICAgICAgICBicmVhazsKCSAgIH0KCX0KCWlmKCAhZm5kICkgdGhyb3cgYXBwLmxhbmcuZXJyb3Jfbm9vYmplY3RzCiAgICB9CgogICAgZnVuY3Rpb24gX3NhdmVDb250YWN0KCkKICAgIHsKICAgICAgICBfdmFsaWRhdGVDb250YWN0KCk7CiAgICAgICAgdmFyIGNfZGF0YSA9IEpTT04uc3RyaW5naWZ5KGFwcC5jb250YWN0KTsKCXZhciByX2RhdGEgPSB7fTsKCXJfZGF0YVthcHAuYWN0aW9uaWQrJ2FqYXgnXSA9IDE7CglyX2RhdGFbYXBwLmFjdGlvbmlkKydjaWQnXSA9IGFwcC5jaWQ7CglyX2RhdGFbYXBwLmFjdGlvbmlkKydjb250YWN0J10gPSBjX2RhdGE7CgoJJC5hamF4KHsKCSAgdHlwZTogJ1BPU1QnLAoJICBkYXRhVHlwZTogJ2pzb24nLAoJICBhc3luYzogZmFsc2UsCgkgIHVybDogJ3ttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9lZGl0X2NvbnRhY3QnIGZvcmFqYXg9MX0nLAoJICBkYXRhOiByX2RhdGEsCgkgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewoJICAgICBpZiggdHlwZW9mIHJlcyA9PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgcmVzLnN0YXR1cyA9PSAndW5kZWZpbmVkJyB8fCByZXMuc3RhdHVzICE9ICdPSycgKSB7CgkgICAgICAgIHZhciBtc2cgPSBhcHAubGFuZy5lcnJvcl9zYXZlY29udGFjdDsKCQlpZiggdHlwZW9mIHJlcy5tc2cgIT0gJ3VuZGVmaW5lZCcgJiYgcmVzLm1zZyAhPSBudWxsICYmIHJlcy5tc2cgIT0gJycgKSBtc2cgPSByZXMubXNnOwoJICAgICAgICB0aHJvdyBtc2c7CgkgICAgIH0KCSAgfQoJfSkKICAgIH0KCiAgLy8KICAvLyBzZXR1cCB0aGUgZGF0YSBmb3IgdGhpcyBmb3JtLgogIC8vCgogIHZhciBfaW1hZ2VzID0gewogICAgZGVsZXRlOiAne2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnZGVsZXRlJyl9JywKICAgIG5vaW1hZ2U6ICd7JG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpfS9pbWFnZXMvTm9QaWN0dXJlLmdpZicsCiAgfTsKCiAgdmFyIGxhbmcgPSB7CiAgICBhZGRyX3N0cmVldDogJ3skbW9kLT5MYW5nKCdhZGRyX3N0cmVldCcpfScsCiAgICBhZGRyX3BvYm94OiAneyRtb2QtPkxhbmcoJ2FkZHJfcG9ib3gnKX0nLAogICAgYWRkcl9jaXR5OiAneyRtb2QtPkxhbmcoJ2FkZHJfY2l0eScpfScsCiAgICBhZGRyX3N0YXRlOiAneyRtb2QtPkxhbmcoJ2FkZHJfc3RhdGUnKX0nLAogICAgYWRkcl96aXA6ICd7JG1vZC0+TGFuZygnYWRkcl96aXAnKX0nLAogICAgYWRkcl9jb3VudHJ5OiAneyRtb2QtPkxhbmcoJ2FkZHJfY291bnRyeScpfScsCiAgICBidG5fYWRkOiAneyRtb2QtPkxhbmcoJ2FkZCcpfScsCiAgICBjYW5jZWw6ICd7JG1vZC0+TGFuZygnY2FuY2VsJyl9JywKICAgIGVkaXQ6ICd7JG1vZC0+TGFuZygnZWRpdCcpfScsCiAgICBlZGl0X25hbWU6ICd7JG1vZC0+TGFuZygnZWRpdF9uYW1lJyl9JywKICAgIGVycm9yX25hbWVyZXF1aXJlZDogJ3skbW9kLT5MYW5nKCdlcnJvcl9uYW1lcmVxdWlyZWQnKX0nLAogICAgZXJyb3Jfbm9vYmplY3RzOiAneyRtb2QtPkxhbmcoJ2Vycm9yX25vb2JqZWN0cycpfScsCiAgICBlcnJvcl9zYXZlY29udGFjdDogJ3skbW9kLT5MYW5nKCdlcnJvcl9zYXZlY29udGFjdCcpfScsCiAgICBsYmxfZmV1X3VpZDogJ3skbW9kLT5MYW5nKCdmZXVfYWNjb3VudCcpfScsCiAgICBsZWdlbmRfd29yazogJ3skbW9kLT5MYW5nKCd3b3JrJyl9JywKICAgIGxlZ2VuZF9ob21lOiAneyRtb2QtPkxhbmcoJ2hvbWUnKX0nLAogICAgbmFtZV9wcmVmaXg6ICd7JG1vZC0+TGFuZygnbmFtZV9wcmVmaXgnKX0nLAogICAgbmFtZV9maXJzdDogJ3skbW9kLT5MYW5nKCduYW1lX2ZpcnN0Jyl9JywKICAgIG5hbWVfbWlkZGxlOiAneyRtb2QtPkxhbmcoJ25hbWVfbWlkZGxlJyl9JywKICAgIG5hbWVfbGFzdDogJ3skbW9kLT5MYW5nKCduYW1lX2xhc3QnKX0nLAogICAgbmFtZV9zdWZmaXg6ICd7JG1vZC0+TGFuZygnbmFtZV9zdWZmaXgnKX0nLAogICAgcGhfYWRkbmFtZTogJ3skbW9kLT5MYW5nKCdwaF9hZGRuYW1lJyl9JywKICAgIHBoX2FkZHJlc3M6ICd7JG1vZC0+TGFuZygncGhfYWRkcmVzcycpfScsCiAgICBwaF9jb21wYW55OiAneyRtb2QtPkxhbmcoJ3BoX2NvbXBhbnknKX0nLAogICAgcGhfZnVsbG5hbWU6ICd7JG1vZC0+TGFuZygncGhfZnVsbG5hbWUnKX0nLAogICAgcGhfdGl0bGU6ICd7JG1vZC0+TGFuZygncGhfdGl0bGUnKX0nLAogICAgcGhfbm90ZTogICd7JG1vZC0+TGFuZygncGhfbm90ZScpfScsCiAgICBwaF92YWx1ZTogJ3skbW9kLT5MYW5nKCdwaF92YWx1ZScpfScsCiAgICBwaF9mZXU6ICd7JG1vZC0+TGFuZygncGhfZmV1X3VzZXInKX0nLAogICAgcHJvbXB0X2NhdGVnb3JpZXM6ICd7JG1vZC0+TGFuZygncHJvbXB0X2NhdGVnb3JpZXMnKX0nLAogICAgc3VibWl0OiAneyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfScsCiAgICB0aF90eXBlOiAneyRtb2QtPkxhbmcoJ3R5cGUnKX0nLAogICAgdGhfbGFiZWw6ICd7JG1vZC0+TGFuZygnbGFiZWwnKX0nLAogICAgdGl0bGVfZnVsbG5hbWU6ICd7JG1vZC0+TGFuZygndGl0bGVfZnVsbG5hbWUnKX0nLAogICAgdGl0bGVfbmFtZTogJ3skbW9kLT5MYW5nKCd0aXRsZV9uYW1lJyl9JywKICAgIHRpdGxlX3RpdGxlOiAneyRtb2QtPkxhbmcoJ3RpdGxlX29yZycpfScsCiAgICB0aXRsZV9jb21wYW55OiAneyRtb2QtPkxhbmcoJ3RpdGxlX2NvbXBhbnknKX0nLAogICAgdGl0bGVfZmV1X3VpZDogJ3skbW9kLT5MYW5nKCd0aXRsZV9mZXVfdWlkJyl9JywKICB9OwoKICBmdW5jdGlvbiBfYnVpbGRBcHBEYXRhKCkgewogICAgdmFyIF9waG9uZV90eXBlcyA9IHsKICAgICAgdm9pY2U6ICd7JG1vZC0+TGFuZygncGhvbmVfdm9pY2UnKX0nLAogICAgICBtc2c6ICd7JG1vZC0+TGFuZygncGhvbmVfbXNnJyl9JywKICAgICAgZmF4OiAneyRtb2QtPkxhbmcoJ3Bob25lX2ZheCcpfScsCiAgICAgIG1vYmlsZTogJ3skbW9kLT5MYW5nKCdwaG9uZV9tb2JpbGUnKX0nLAogICAgICBwYWdlcjogJ3skbW9kLT5MYW5nKCdwaG9uZV9wYWdlcicpfScsCiAgICAgIHZpZGVvOiAneyRtb2QtPkxhbmcoJ3Bob25lX3ZpZGVvJyl9JywKICAgICAgc2F0OiAneyRtb2QtPkxhbmcoJ3Bob25lX3NhdCcpfScsCiAgICB9OwoKICAgIHZhciBuYW1lID0gbnVsbDsKICAgIHZhciBjb250YWN0ID0geyRjb250YWN0fTsKICAgIC8vIGNyZWF0ZSBhICduYW1lJyBvYmplY3QgaWYgd2UgZG9udCcgaGF2ZSBvbmUuCiAgICBjb250YWN0Lm9iamVjdHMuZm9yRWFjaChmdW5jdGlvbihlbCxpZHgpewogICAgICBpZiggbmFtZSA9PSBudWxsICYmIGVsLmNsYXNzID09ICdjb250YWN0X25hbWUnICkgbmFtZSA9IGVsOwogICAgfSk7CiAgICBpZiggbmFtZSA9PSBudWxsICkgewogICAgICAvLyBubyBuYW1lIGZvdW5kLCBnb3R0YSBjcmVhdGUgaXQuCiAgICAgIG5hbWUgPSB7CiAgICAgICAgY2xhc3M6ICdjb250YWN0X25hbWUnLAogICAgICAgIGxhYmVsOiAnd29yaycsCiAgICAgICAgcHJlZml4OiAnJywKICAgICAgICBmaXJzdDogJycsCiAgICAgICAgbWlkZGxlOiAnJywKICAgICAgICBsYXN0OiAnJywKICAgICAgICBzdWZmaXg6ICcnLAogICAgICB9OwogICAgICBjb250YWN0Lm9iamVjdHMucHVzaChuYW1lKTsKICAgIH0KCiAgICAvLyBidWlsZCBhIGxpc3Qgb2YgbGFiZWxzCiAgICB2YXIgX2xhYmVscyA9IFsKICAgICAgewogICAgICAgIGlkOiAnd29yaycsCiAgICAgICAgdmFsOiAnV29yaycsCiAgICAgIH0sCiAgICAgIHsKICAgICAgICBpZDogJ2hvbWUnLAogICAgICAgIHZhbDogJ0hvbWUnCiAgICAgIH0KICAgIF07CgogICAgY29udGFjdC5vYmplY3RzLmZvckVhY2goZnVuY3Rpb24oIGl0ZW0gKSB7CiAgICAgIHZhciBpZCA9IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKTsKICAgICAgdmFyIHZhbCA9IGl0ZW0ubGFiZWwudWN3b3JkcygpOwogICAgICBpdGVtLmxhYmVsID0gaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpOwoKICAgICAgdmFyIGZuZCA9IDA7CiAgICAgIGZvciggaSBpbiBfbGFiZWxzICkgewogICAgICAgIGlmKCBfbGFiZWxzW2ldLmlkID09IGlkICkgewogICAgICAgICAgZm5kID0gMTsKICAJICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYoICFmbmQgKSB7CiAgICAgICAgdmFyIG8gPSB7IGlkOiBpZCwgdmFsOiB2YWwgfTsKICAgICAgIF9sYWJlbHMucHVzaChvKTsKICAgICAgfQogICAgfSk7CgogICAgLy8gYnVpbGQgdGhlIG9iamVjdCB3ZSB3aWxsIGdpdmUgdG8ganN2aWV3cwogICAgYXBwID0gewogICAgICBjaWQ6IHskY2lkfSwKICAgICAgYWN0aW9uaWQ6ICd7JGFjdGlvbmlkfScsCiAgICAgIGNvbnRhY3Q6IGNvbnRhY3QsCiAgICAgIGxhbmc6IGxhbmcsCiAgICAgIGxhYmVsczogX2xhYmVscywKICAgICAgZmV1X3VzZXJzOiB7JGZldV91c2Vyc3xkZWZhdWx0OidudWxsJ30sCiAgICAgIGNsYXNzZXM6IHskY2xhc3Nlc30sCiAgICAgIHBob25lX3R5cGVzOiBfcGhvbmVfdHlwZXMsCiAgICAgIHVybHM6IHsKICAgICAgICBkZWZhdWx0YWRtaW46ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1kZWZhdWx0YWRtaW4ganNmcmllbmRseT0xfScsCiAgICAgICAgc2F2ZTogJ3ttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9hamF4X3NhdmVjb250ZW50JyBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCiAgICAgIH0sCiAgICAgIGltYWdlczogX2ltYWdlcywKICAgICAgY3VycmVudF9pbmRleDogLTEsCiAgICB9OwoKICAgIC8vIHJlbmRlciB0aGUgaW5pdGlhbCB0ZW1wbGF0ZSwgc2V0dXAgZGF0YSBiaW5kaW5nIGFuZCBldmVudCBoYW5kbGVycy4KICAgIHZhciBfdHBsID0gJC50ZW1wbGF0ZXMoJyNhZG1pbl9lZGl0X2NvbnRhY3RfdHBsJyk7CiAgICBfdHBsLmxpbmsoJyNhZG1pbl9lZGl0X2NvbnRhY3QnLGFwcCk7CiAgICAvLyQoJyNhZG1pbl9lZGl0X2NvbnRhY3QnKS5saW5rKF90cGwsYXBwKTsKICB9CiAgX2J1aWxkQXBwRGF0YSgpOwoKICAvLyBzZXR1cCB0aGUgaW5pdGlhbCBpbWFnZSAoaWYgYW55KQogIGlmKCBhcHAuY29udGFjdC5pbWFnZSA9PSBudWxsIHx8IGFwcC5jb250YWN0LmltYWdlID09ICcnICkgJCgnI3ByZXZpZXdfaW1hZ2UnKS5hdHRyKCdzcmMnLF9pbWFnZXMubm9pbWFnZSk7CgogIGZ1bmN0aW9uIHByb3BjaGFuZ2VfY2IoZXYsZXZlbnRBcmdzKSB7CiAgICBpZiggZXZlbnRBcmdzLnBhdGggPT0gJ2Z1bGxuYW1lJyApIHsKICAgICAgX3VwZGF0ZURpc3BsYXlOYW1lKCk7CiAgICB9CiAgfQogICQoYXBwLmNvbnRhY3QpLm9uKCdwcm9wZXJ0eUNoYW5nZScscHJvcGNoYW5nZV9jYik7CgogIC8vIGNoZWNrIHRoZSBpbml0aWFsIGNhdGVnb3JpZXMuCiAgJCgnI2NhdGVnb3J5X2xpc3QgaW5wdXQ6Y2hlY2tib3gnKS5lYWNoKGZ1bmN0aW9uKGlkeCkgewogICAgdmFyIHYgPSAkKHRoaXMpLnZhbCgpOwogICAgdmFyIHQgPSBhcHAuY29udGFjdC5jYXRlZ29yaWVzLmluZGV4T2Yodik7CiAgICBpZiggdCAhPT0gLTEgKSAkKHRoaXMpLnByb3AoJ2NoZWNrZWQnLHRydWUpOwogIH0pCgogIC8vIGhhbmRsZSBjbGlja2luZyB0byBkYXRhLWJpbmQgdG8gdGhlIGFwcC5jb250YWN0LmNhdGVnb3JpZXMgbGlzdAogICQoJyNjYXRlZ29yeV9saXN0IGlucHV0OmNoZWNrYm94JykuY2hhbmdlKGZ1bmN0aW9uKCl7CiAgICB2YXIgdiA9ICQodGhpcykudmFsKCk7CiAgICBpZiggJCh0aGlzKS5pcygnOmNoZWNrZWQnKSApIHsKICAgICAgdmFyIGkgPSBhcHAuY29udGFjdC5jYXRlZ29yaWVzLmluZGV4T2Yodik7CiAgICAgIGlmKCBpID09IC0xICkgYXBwLmNvbnRhY3QuY2F0ZWdvcmllcy5wdXNoKHYpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIGkgPSBhcHAuY29udGFjdC5jYXRlZ29yaWVzLmluZGV4T2Yodik7CiAgICAgIGlmKCBpID4gLTEgKSBhcHAuY29udGFjdC5jYXRlZ29yaWVzLnNwbGljZShpLDEpOwogICAgfQogIH0pOwoKICAkKCcjcG9wdXBfY2F0ZWdvcmllcycpLmJ1dHRvbih7CiAgICBpY29uczogewogICAgICBwcmltYXJ5OiAndWktaWNvbi1mbGFnJwogICAgfSwKICAgIGxhYmVsOiBsYW5nLnByb21wdF9jYXRlZ29yaWVzCiAgfSkKCiAgLy8gcGx1Z2lucyBvbiB0aGUgcmVuZGVyZWQgc3R1ZmYKICAkKCcjY2dfd3JhcHBlciBpbnB1dDp0ZXh0JykuYXV0b19pbnB1dF9zaXplKCk7CiAgX3VwZGF0ZURpc3BsYXlOYW1lKCk7CgogICQoJ3VsLm9wdGlvbi1tZW51JykubWVudSh7CiAgICBwb3NpdGlvbjogewogICAgICBteTogJ2xlZnQgdG9wJywKICAgICAgYXQ6ICdsZWZ0IGJvdHRvbScKICAgIH0sCiAgICBzZWxlY3Q6IGZ1bmN0aW9uKGUsdWkpIHsKICAgICAgdmFyIGNsID0gdWkuaXRlbS5jaGlsZHJlbigpLmRhdGEoJ2NsYXNzJyk7CiAgICAgIGlmKCAhY2wgKSBjbCA9ICdjb250YWN0X3Bob25lJzsKICAgICAgJC5vYnNlcnZhYmxlKGFwcC5jb250YWN0Lm9iamVjdHMpLmluc2VydCh7CiAgICAgICAgbGFiZWw6ICdXb3JrJywKCWNsYXNzOiBjbAogICAgICB9KTsKICAgIH0KICB9KTsKCiAgLy8gZXZlbnQgZnVuY3Rpb25hbGl0eS4KICAkKCcjZWRpdF9uYW1lJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICAvLyBwb3B1cCBkaWFsb2cgdG8gYWRkL2VkaXQgdGhlIG5hbWUKICAgICB2YXIgZWRpdF9uYW1lX3RwbCA9ICQudGVtcGxhdGVzKCcjYWRtaW5fZWRpdF9uYW1lX3RwbCcpOwogICAgIC8vIGZpbmQgYSBuYW1lIG9iamVjdCBpbiB0aGUgY29udGFjdAogICAgIHZhciBpID0gMCwgZm5kID0gLTE7CiAgICAgZm9yKCBpID0gMDsgaSA8IGFwcC5jb250YWN0Lm9iamVjdHMubGVuZ3RoOyBpKysgKSB7CiAgICAgICBpZiggYXBwLmNvbnRhY3Qub2JqZWN0c1tpXS5jbGFzcyA9PSAnY29udGFjdF9uYW1lJyApICB7CiAgICAgICAgICBmbmQgPSBpOwoJICBicmVhazsKICAgICAgIH0KICAgICB9CiAgICAgdmFyIG5hbWVfb2JqID0gYXBwLmNvbnRhY3Qub2JqZWN0c1tmbmRdOwogICAgIHZhciBzYXZlZCA9IGZhbHNlOwogICAgIC8vIGlmIHdlIGRvbid0IGZpbmQgb25lLCBjcmVhdGUgb25lLgogICAgICQoJyNhZG1pbl9lZGl0X25hbWUnKS5saW5rKGVkaXRfbmFtZV90cGwsbmFtZV9vYmopOwogICAgICQoJyNhZG1pbl9lZGl0X25hbWUnKS5kaWFsb2coewogICAgICAgdGl0bGU6IGxhbmcuZWRpdF9uYW1lLAogICAgICAgbW9kYWw6IHRydWUsCiAgICAgICB3aWR0aDogMjUwLAogICAgICAgY2xvc2U6IGZ1bmN0aW9uKGUsdWkpIHsKCSBpZiggIXNhdmVkICkgYXBwLmNvbnRhY3Qub2JqZWN0c1tmbmRdID0gbmFtZV9vYmo7CiAgICAgICB9LAogICAgICAgYnV0dG9uczogWwogICAgICAgICB7CgkgICB0ZXh0OiBsYW5nLnN1Ym1pdCwKCSAgIGNsaWNrOiBmdW5jdGlvbigpIHsKCSAgICAgbmFtZV9vYmpbJ3ByZWZpeCddID0gJCgnI25hbWVfcHJlZml4JykudmFsKCk7CgkgICAgIG5hbWVfb2JqWydmaXJzdCddID0gJCgnI25hbWVfZmlyc3QnKS52YWwoKTsKCSAgICAgbmFtZV9vYmpbJ21pZGRsZSddID0gJCgnI25hbWVfbWlkZGxlJykudmFsKCk7CgkgICAgIG5hbWVfb2JqWydsYXN0J10gPSAkKCcjbmFtZV9sYXN0JykudmFsKCk7CgkgICAgIG5hbWVfb2JqWydzdWZmaXgnXSA9ICQoJyNuYW1lX3N1ZmZpeCcpLnZhbCgpOwoJICAgICBzYXZlZCA9IDE7CgkgICAgIGFwcC5jb250YWN0Lm9iamVjdHNbZm5kXSA9IG5hbWVfb2JqOwoJICAgICBfdXBkYXRlRGlzcGxheU5hbWUoKTsKCSAgICAgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgkgICB9CgkgfQogICAgICAgXQogICAgIH0pCiAgfSkKICAkKGRvY3VtZW50KS5vbignY2xpY2snLCcuYnRuX2RlbG9iaicsZnVuY3Rpb24oZSl7CiAgICAvLyBkZWxldGUgYSByb3cKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIHZhciB0YiA9ICQodGhpcykuY2xvc2VzdCgndGJvZHknKTsKICAgIHZhciBpZHggPSAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykuZGF0YSgnaW5kZXgnKTsKICAgICQub2JzZXJ2YWJsZShhcHAuY29udGFjdC5vYmplY3RzKS5yZW1vdmUoaWR4KTsKICAgIC8vIGRlY3JlbWVudCBhbGwgdGhlIGluZGV4ZXMgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gdGhpcyBvbmUuCiAgICAkKCd0cicsdGIpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgIHZhciB0ID0gJCh0aGlzKS5kYXRhKCdpbmRleCcpOwogICAgICAgaWYoIHQgPj0gaWR4ICkgewogICAgICAgICB0ID0gdCAtIDE7CiAgICAgICAgICQodGhpcykuZGF0YSgnaW5kZXgnLHQpOwogICAgICAgfQogICAgfSk7CiAgfSk7CiAgJCgnI3ByZXZpZXdfaW1hZ2UnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbGVfaW1hZ2UnKS5jbGljaygpOwogIH0pOwogICQoJyNmaWxlX2ltYWdlJykuY2hhbmdlKGZ1bmN0aW9uKCl7CiAgICBpZiggdGhpcy5maWxlcyAmJiB0aGlzLmZpbGVzWzBdICkgewogICAgICAgZmlsZSA9IHRoaXMuZmlsZXNbMF07CiAgICAgICBpZiggIWZpbGUudHlwZS5tYXRjaCgnaW1hZ2UuKicpICkgewogICAgICAgICBjb25zb2xlLmxvZygnbm9uIGltYWdlIGZpbGUgdXBsb2FkZWQnKTsKCSByZXR1cm47CiAgICAgICB9CiAgICAgICB2YXIgcmVhZGVyICA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24oZSkgewoJIHZhciB0ZW1wSW1nID0gbmV3IEltYWdlKCk7CgkgdGVtcEltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7CgkgdGVtcEltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKCSAgICB2YXIgTUFYX1dJRFRIID0gMjAwOwoJICAgIHZhciBNQVhfSEVJR0hUID0gMjAwOwoJICAgIHZhciB0ZW1wVyA9IHRlbXBJbWcud2lkdGg7CgkgICAgdmFyIHRlbXBIID0gdGVtcEltZy5oZWlnaHQ7CgkgICAgaWYgKHRlbXBXID4gdGVtcEgpIHsKCSAgICAgICBpZiAodGVtcFcgPiBNQVhfV0lEVEgpIHsKCSAgICAgICAJICB0ZW1wSCAqPSBNQVhfV0lEVEggLyB0ZW1wVzsKCQkgIHRlbXBXID0gTUFYX1dJRFRIOwoJICAgICAgIH0KCSAgIH0KCSAgIGVsc2UgewoJICAgICAgIGlmICh0ZW1wSCA+IE1BWF9IRUlHSFQpIHsKCSAgICAgICAJICB0ZW1wVyAqPSBNQVhfSEVJR0hUIC8gdGVtcEg7CgkJICB0ZW1wSCA9IE1BWF9IRUlHSFQ7CgkgICAgICAgfQoJICAgfQoKCSAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FudmFzJyk7CgkgICBjYW52YXMud2lkdGggPSB0ZW1wVzsKCSAgIGNhbnZhcy5oZWlnaHQgPSB0ZW1wSDsKCSAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKCSAgIGN0eC5kcmF3SW1hZ2UodGhpcywgMCwgMCwgdGVtcFcsIHRlbXBIKTsKCSAgIGFwcC5jb250YWN0LmltYWdlID0gY2FudmFzLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIpOwoJICAgJCgnI3ByZXZpZXdfaW1hZ2UnKS5hdHRyKCdzcmMnLGFwcC5jb250YWN0LmltYWdlKS53aWR0aCg5NikuaGVpZ2h0KDk2KTsKCSB9CiAgICAgICB9OwogICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlc1swXSk7CiAgICB9CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywndGFibGUjY29udGFjdF9vYmplY3RzIHNwYW4uZG90ZG90JywgZnVuY3Rpb24oZSl7CiAgICB2YXIgdGEgPSAkKHRoaXMpLnByZXYoJ3RleHRhcmVhJylbMF07CiAgICAvLyBnb3R0YSBmaW5kICd0aGlzJyBhZGRyZXNzIGVsZW1lbnQgaW4gdGhlIGxpc3Qgb2Ygb2JqZWN0cwogICAgdmFyIGlkeCA9ICQodGhpcykuY2xvc2VzdCgndHInKS5kYXRhKCdpbmRleCcpOwogICAgdmFyIGFkZHJlc3Nfb2JqID0gYXBwLmNvbnRhY3Qub2JqZWN0c1tpZHhdOwogICAgdmFyIGVkaXRfYWRkcmVzc190cGwgPSAkLnRlbXBsYXRlcygnI2FkbWluX2VkaXRfYWRkcmVzc190cGwnKTsKICAgICQoJyNhZG1pbl9lZGl0X2FkZHJlc3MnKS5saW5rKGVkaXRfYWRkcmVzc190cGwsYWRkcmVzc19vYmopOwogICAgJCgnI2FkbWluX2VkaXRfYWRkcmVzcycpLmRpYWxvZyh7CiAgICAgICB0aXRsZTogbGFuZy5lZGl0X2FkZHJlc3MsCiAgICAgICBtb2RhbDogdHJ1ZSwKICAgICAgIGJ1dHRvbnM6IFsKICAgICAgICAgewoJICAgdGV4dDogbGFuZy5zdWJtaXQsCgkgICBjbGljazogZnVuY3Rpb24oZSkgewoJICAgICAgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgkgICAgICAkLm9ic2VydmFibGUoYXBwKS5zZXRQcm9wZXJ0eSgnY29udGFjdC5vYmplY3RzWycgKyBpZHggKyAnXScsYWRkcmVzc19vYmopOwoJICAgICAgJCh0YSkudmFsKF9nZXRBZGRyZXNzU3RyaW5nKGFkZHJlc3Nfb2JqKSk7CgkgICB9CgkgfQogICAgICAgXQogICAgfSkKICB9KTsKICAkKCcjcG9wdXBfY2F0ZWdvcmllcycpLmhvdmVyKGZ1bmN0aW9uKCl7CiAgICB2YXIgbyA9ICQoJyNwb3B1cF9jYXRlZ29yaWVzJykub2Zmc2V0KCk7CiAgICB2YXIgdCA9IG8udG9wKyQodGhpcykuaGVpZ2h0KCkrJ3B4JzsKICAgICQoJyNjYXRlZ29yeV9saXN0JykuY3NzKHsKICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsCiAgICAgIHRvcDogdCwKICAgICAgbGVmdDogby5sZWZ0LAogICAgfSkuc2hvdygzMDApOwogIH0pOwogICQoJyNjYXRlZ29yeV9saXN0JykubW91c2VsZWF2ZShmdW5jdGlvbigpewogICAgICQodGhpcykuaGlkZSgzMDApOwogIH0pCgogICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJyNzdWJtaXQnLGZ1bmN0aW9uKCl7CiAgICAvLyBzYXZlIHRoaXMgdGhpbmcKICAgIHRyeSB7CiAgICAgIF9zYXZlQ29udGFjdCgpOwogICAgICB3aW5kb3cubG9jYXRpb24gPSAne21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249ZGVmYXVsdGFkbWluIGpzZnJpZW5kbHk9MX0nOwogICAgfQogICAgY2F0Y2goIGVyciApIHsKICAgICAgY29uc29sZS5sb2coZXJyKTsKICAgICAgYWxlcnQoJ0Vycm9yOiAnK2Vycik7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9KTsKICAkKGRvY3VtZW50KS5vbignY2xpY2snLCcjY2FuY2VsJyxmdW5jdGlvbigpewogICAgd2luZG93LmxvY2F0aW9uID0gJ3ttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWRlZmF1bHRhZG1pbiBqc2ZyaWVuZGx5PTF9JzsKICB9KTsKfSkKPC9zY3JpcHQ+Cgo8ZGl2IGlkPSJjZ193cmFwcGVyIj4KICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4KICAgIDxpbnB1dCBpZD0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCBpZD0iY2FuY2VsIiB0eXBlPSJzdWJtaXQiIG5hbWU9ImNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICAgIDxoci8+CiAgPC9kaXY+CiAgPGRpdiBpZD0iYWRtaW5fZWRpdF9jb250YWN0IiBjbGFzcz0iaW5saW5lLWVkaXQiPjwvZGl2Pgo8L2Rpdj4KCgo8c2NyaXB0IHR5cGU9InRleHQveC1qc3JlbmRlciIgaWQ9ImFkbWluX2VkaXRfY29udGFjdF90cGwiPntsaXRlcmFsfQo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxkaXYgY2xhc3M9ImdyaWRfMiI+CiAgICA8aW5wdXQgaWQ9ImZpbGVfaW1hZ2UiIHR5cGU9ImZpbGUiIG5hbWU9Int7OmFjdGlvbmlkfX1pbWFnZSIvPgogICAgPGltZyBpZD0icHJldmlld19pbWFnZSIgc3JjPSJ7ezpjb250YWN0LmltYWdlfX0iIGFsdD0iSW1hZ2UiIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIvPgogICAgPGNhbnZhcyBpZD0iY2FudmFzIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjwvY2FudmFzPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWRfNSI+CiAgICA8ZGl2IGNsYXNzPSJiaWcgcG9wdXAgZmllbGQiPgogICAgICA8aW5wdXQgaWQ9ImNvbnRhY3RfZnVsbG5hbWUiIHR5cGU9InRleHQiIGRhdGEtbGluaz0iY29udGFjdC5mdWxsbmFtZSB0cmlnZ2VyPXRydWUiIHRpdGxlPSJ7ezpsYW5nLnRpdGxlX2Z1bGxuYW1lfX0iIHBsYWNlaG9sZGVyPSJ7ezpsYW5nLnBoX2Z1bGxuYW1lfX0iLz4KICAgICAgPHNwYW4gaWQ9ImVkaXRfbmFtZSIgY2xhc3M9ImRvdGRvdCIgdGl0bGU9Int7OmxhbmcuZWRpdF9uYW1lfX0iPi4uLjwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ic21hbGwgZmllbGQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgZGF0YS1saW5rPSJjb250YWN0LnRpdGxlIiB0aXRsZT0ie3s6bGFuZy50aXRsZV90aXRsZX19IiBwbGFjZWhvbGRlcj0ie3s6bGFuZy5waF90aXRsZX19Ii8+LAogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgZGF0YS1saW5rPSJjb250YWN0LmNvbXBhbnkiIHRpdGxlPSJ7ezpsYW5nLnRpdGxlX2NvbXBhbnl9fSIgcGxhY2Vob2xkZXI9Int7OmxhbmcucGhfY29tcGFueX19Ii8+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InNtYWxsIGZpZWxkIj4KICAgICAgPHNlbGVjdCBkYXRhLWxpbms9ImNvbnRhY3QuZmV1X3VpZCIgdGl0bGU9Int7OmxhbmcudGl0bGVfZmV1X3VpZH19Ij4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIiIGRpc2FibGVkIHNlbGVjdGVkPnt7OmxhbmcucGhfZmV1fX08L29wdGlvbj4KICAgICAge157Zm9yIGZldV91c2Vyc319CiAgICAgIDxvcHRpb24gdmFsdWU9Int7PmlkfX0iPnt7PnZhbH19PC9vcHRpb24+CiAgICAgIHt7L2Zvcn19CiAgICAgIDwvc2VsZWN0PgogICAgPC9kaXY+CgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWRfNSI+CiAgICAgIDxidXR0b24gaWQ9InBvcHVwX2NhdGVnb3JpZXMiPnt7OmxhbmcucHJvbXB0X2NhdGVnb3JpZXN9fTwvYnV0dG9uPgogIDwvZGl2PgogIDxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+PC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY19mdWxsIiBzdHlsZT0ibWFyZ2luLXRvcDogMWVtIj4KICA8dWwgY2xhc3M9Im9wdGlvbi1tZW51IiBzdHlsZT0id2lkdGg6IDVlbTsiPgogICAgPGxpPnt7OmxhbmcuYnRuX2FkZH19CiAgICAgIDx1bD4KICAgICAgICB7e3Byb3BzIGNsYXNzZXN9fQoJPGxpPjxhIGNsYXNzPSJhZGRfaXRlbSIgZGF0YS1jbGFzcz0ie3s+a2V5fX0iPnt7PnByb3B9fTwvYT48L2xpPgoJe3svcHJvcHN9fQogICAgICA8L3VsPgogICAgPC9saT4KICA8L3VsPgoKICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogMTAwJTsiIGlkPSJjb250YWN0X29iamVjdHMiPgogICAgPHRoZWFkPgogICAgICA8dHI+CiAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDogMjAlOyI+e3s6bGFuZy50aF90eXBlfX08L3RoPgogICAgICAgIDx0aD57ezpsYW5nLnRoX2xhYmVsfX08L3RoPgogICAgICAgIDx0aD57ezpsYW5nLnRoX3ZhbHVlfX08L3RoPgogICAgICA8L3RyPgogICAgPC90aGVhZD4KICAgIDx0Ym9keT4KICAgIHtee2ZvciBjb250YWN0Lm9iamVjdHMgfmxhbmc9bGFuZyB+bGFiZWxzPWxhYmVscyB+Y2xhc3Nlcz1jbGFzc2VzIH5pbWFnZXM9aW1hZ2VzIH5waG9uZV90eXBlcz1waG9uZV90eXBlc319CiAgICAgIHt7aWYgY2xhc3MgIT0gJ2NvbnRhY3RfbmFtZSd9fQogICAgICA8dHIgY2xhc3M9ImZpZWxkIiBkYXRhLWluZGV4PSJ7ezojZ2V0KCdpdGVtJykuaW5kZXh9fSI+CiAgICAgICAgIDx0ZD4KCSAgIHt7Y2xhc3NMYWJlbDpjbGFzc319CgkgPC90ZD4KCSA8dGQ+CgkgICA8c2VsZWN0IGNsYXNzPSJsYWJlbC1jb21ibyIgZGF0YS1saW5rPSJsYWJlbCI+CgkgICB7Xntmb3IgfmxhYmVsc319CgkgICAgIDxvcHRpb24gdmFsdWU9Int7PmlkfX0iPnt7PnZhbH19PC9vcHRpb24+CgkgICB7ey9mb3J9fQoJICAgPC9zZWxlY3Q+CgkgPC90ZD4KCSA8dGQ+CgkgICB7e2lmIGNsYXNzID09ICdjb250YWN0X3Bob25lJ319CgkgICAgIDxzZWxlY3QgZGF0YS1saW5rPSJ0eXBlIj4KCSAgICAge3twcm9wcyB+cGhvbmVfdHlwZXN9fQoJICAgICAgIDxvcHRpb24gdmFsdWU9Int7OmtleX19Ij57ezpwcm9wfX08L29wdGlvbj4KCSAgICAge3svcHJvcHN9fQoJICAgPC9zZWxlY3Q+CgkgICB7ey9pZn19CgkgICB7e2lmIGNsYXNzID09ICdjb250YWN0X2FkZHJlc3MnfX0KCSAgICAgPHRleHRhcmVhIHJvd3M9IjMiIGNvbHM9IjIwIiBjbGFzcz0iY29udGFjdF9hZGRyZXNzIiBkYXRhLWxpbms9IntkaXNwbGF5QWRkcmVzczojdmlldy5kYXRhfSIgcGxhY2Vob2xkZXI9Int7On5sYW5nLnBoX2FkZHJlc3N9fSI+PC90ZXh0YXJlYT4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3Rkb3QiIHRpdGxlPSJ7ezp+bGFuZy5lZGl0fX0iPi4uLjwvc3Bhbj4KCSAgIHt7ZWxzZX19CiAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Int7OmNsYXNzfX0iICBkYXRhLXZhbGlkYXRlPSJ7ezpjbGFzc319IiBkYXRhLWxpbms9InZhbHVlIiBwbGFjZWhvbGRlcj0ie3s6fmxhbmcucGhfdmFsdWV9fSIvPgogICAgICAgICAgIHt7L2lmfX0KCSAgIDxzcGFuIGNsYXNzPSJidG5fZGVsb2JqIj57ezp+aW1hZ2VzLmRlbGV0ZX19PC9zcGFuPgoJIDwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIHt7L2lmfX0KICAgIHt7L2Zvcn19CiAgICA8L3Rib2R5PgogICAgPC90YWJsZT4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZ3JpZF80Ij4KICAgIDx0ZXh0YXJlYSBkYXRhLWxpbms9ImNvbnRhY3Qubm90ZSIgcGxhY2Vob2xkZXI9Int7PmxhbmcucGhfbm90ZX19IiBjb2xzPSI1MCIgcm93cz0iOCI+PC90ZXh0YXJlYT4KICA8L2Rpdj4KICA8ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsiPjwvZGl2Pgo8L2Rpdj4Key9saXRlcmFsfTwvc2NyaXB0PgoKeyogY2F0ZWdvcnkgbGlzdCAgcG9wdXAgKn0KPGRpdiBpZD0iY2F0ZWdvcnlfbGlzdCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4Ke2Z1bmN0aW9uIGRvX2NhdGVnb3JpZXN9Cjx1bD4KICB7Zm9yZWFjaCAkaW4gYXMgJG9uZX0KICA8bGk+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfWNhdGVnb3JpZXNbXSIgdmFsdWU9Inskb25lLmlkfSI+IHskb25lLm5hbWV9CiAgICB7aWYgaXNzZXQoJG9uZS5jaGlsZHJlbil9CiAgICB7ZG9fY2F0ZWdvcmllcyBpbj0kb25lLmNoaWxkcmVufQogICAgey9pZn0KICA8L2xpPgogIHsvZm9yZWFjaH0KPC91bD4Key9mdW5jdGlvbn0Ke2RvX2NhdGVnb3JpZXMgaW49JGNhdGVnb3JpZXN9CjwvZGl2PgoKeyogbGFiZWwgZm9ybSBwb3B1cCAqfQo8ZGl2IGlkPSJsYWJlbF9saXN0IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgp7KiB0b2RvOiBidWlsZCB0aGlzIGR5bmFtaWNhbGx5Li4uIGFsbG93IGZvciBkZWxldGluZyBsYWJlbHMgKn0KPGRpdj4KPC9kaXY+CjxpbnB1dCBpZD0iYWRkX2xhYmVsIi8+CjwvZGl2PgoKeyogZWRpdCBuYW1lIGRpYWxvZyAqfQo8ZGl2IGlkPSJhZG1pbl9lZGl0X25hbWUiIHRpdGxlPSJ7JG1vZC0+TGFuZygnZWRpdF9uYW1lJyl9IiBzdHlsZT0iZGlzcGxheTogbm9uZSIvPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQveC1qc3JlbmRlciIgaWQ9ImFkbWluX2VkaXRfbmFtZV90cGwiPntsaXRlcmFsfQo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ25hbWVfcHJlZml4Jyl9fTo8L3A+CiAgPHAgY2xhc3M9ImdyaWRfOSI+CiAgICA8aW5wdXQgaWQ9Im5hbWVfcHJlZml4IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ie3s6cHJlZml4fX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ25hbWVfZmlyc3QnKX19OjwvcD4KICA8cCBjbGFzcz0iZ3JpZF85Ij4KICAgIDxpbnB1dCBpZD0ibmFtZV9maXJzdCIgdHlwZT0idGV4dCIgdmFsdWU9Int7OmZpcnN0fX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ25hbWVfbWlkZGxlJyl9fTo8L3A+CiAgPHAgY2xhc3M9ImdyaWRfOSI+CiAgICA8aW5wdXQgaWQ9Im5hbWVfbWlkZGxlIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ie3s6bWlkZGxlfX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ25hbWVfbGFzdCcpfX06PC9wPgogIDxwIGNsYXNzPSJncmlkXzkiPgogICAgPGlucHV0IGlkPSJuYW1lX2xhc3QiIHR5cGU9InRleHQiIHZhbHVlPSJ7ezpsYXN0fX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ25hbWVfc3VmZml4Jyl9fTo8L3A+CiAgPHAgY2xhc3M9ImdyaWRfOSI+CiAgICA8aW5wdXQgaWQ9Im5hbWVfc3VmZml4IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ie3s6c3VmZml4fX0iLz4KICA8L3A+CjwvZGl2Pgp7L2xpdGVyYWx9PC9zY3JpcHQ+Cgp7KiBlZGl0IGFkZHJlc3MgZGlhbG9nICp9CjxkaXYgaWQ9ImFkbWluX2VkaXRfYWRkcmVzcyIgdGl0bGU9InskbW9kLT5MYW5nKCdlZGl0X2FkZHJlc3MnKX0iIHN0eWxlPSJkaXNwbGF5OiBub25lIi8+PC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC94LWpzcmVuZGVyIiBpZD0iYWRtaW5fZWRpdF9hZGRyZXNzX3RwbCI+e2xpdGVyYWx9CjxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgPHAgY2xhc3M9ImdyaWRfMyB0ZXh0X3JpZ2h0Ij57ezp+bGFuZygnYWRkcl9zdHJlZXQnKX19OjwvcD4KICA8cCBjbGFzcz0iZ3JpZF85Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBkYXRhLWxpbms9InN0cmVldCIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgPHAgY2xhc3M9ImdyaWRfMyB0ZXh0X3JpZ2h0Ij57ezp+bGFuZygnYWRkcl9wb2JveCcpfX06PC9wPgogIDxwIGNsYXNzPSJncmlkXzkiPgogICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtbGluaz0icG9ib3giLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ2FkZHJfY2l0eScpfX06PC9wPgogIDxwIGNsYXNzPSJncmlkXzkiPgogICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtbGluaz0iY2l0eSIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgPHAgY2xhc3M9ImdyaWRfMyB0ZXh0X3JpZ2h0Ij57ezp+bGFuZygnYWRkcl9zdGF0ZScpfX06PC9wPgogIDxwIGNsYXNzPSJncmlkXzkiPgogICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtbGluaz0ic3RhdGUiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ2FkZHJfemlwJyl9fTo8L3A+CiAgPHAgY2xhc3M9ImdyaWRfOSI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgZGF0YS1saW5rPSJ6aXAiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCI+e3s6fmxhbmcoJ2FkZHJfY291bnRyeScpfX06PC9wPgogIDxwIGNsYXNzPSJncmlkXzkiPgogICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtbGluaz0iY291bnRyeSIvPgogIDwvcD4KPC9kaXY+CnsvbGl0ZXJhbH08L3NjcmlwdD4K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_edit_field.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRmaWVsZC5pZCA+IDB9CjxoMz57JG1vZC0+TGFuZygncGFnZXRpdGxlX2VkaXRfZmllbGQnKX08L2gzPgp7ZWxzZX0KPGgzPnskbW9kLT5MYW5nKCdwYWdldGl0bGVfYWRkX2ZpZWxkJyl9PC9oMz4Key9pZn0KCnskZm9ybXN0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+KnskbW9kLT5MYW5nKCdsYmxfbmFtZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1uYW1lIiB2YWx1ZT0ieyRmaWVsZC5uYW1lfSIgc2l6ZT0iODAiIHJlcXVpcmVkPSJyZXF1aXJlZCIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRtb2QtPkxhbmcoJ2xibF90eXBlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH10eXBlIj4KICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSR0eXBlcyBzZWxlY3RlZD0kZmllbGQudHlwZX0KICAgIDwvc2VsZWN0PgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnbGJsX2Rlc2NyaXB0aW9uJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIHtjZ2VfdGV4dGFyZWEgcHJlZml4PSRhY3Rpb25pZCBuYW1lPWRlc2NyaXB0aW9uIHd5c2l3eWc9MCB2YWx1ZT0kZmllbGQuZGVzY3JpcHRpb24gcm93cz0zfQogIDwvcD4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_import_vcard.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfaW1wb3J0X3ZjYXJkJyl9PC9oMz4KPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX2ltcG9ydCcpfTwvZGl2PgoKeyRmb3Jtc3RhcnR9CjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdsZWdlbmRfaW5wdXQnKX06PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgIDxwIGNsYXNzPSJncmlkXzQgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9maWxlJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0ieyRhY3Rpb25pZH1maWxlIi8+CiAgICA8L3A+CiAgPC9kaXY+CjwvZmllbGRzZXQ+CjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdsZWdlbmRfdXBkYXRpbmcnKX06PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgIDxwIGNsYXNzPSJncmlkXzQgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF91cGRhdGVfY2hlY2tyZXYnKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgIHtjZ2VfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9dXBkYXRlX2NoZWNrcmV2fQogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxwIGNsYXNzPSJncmlkXzQiPjwvcD4KICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgPC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/ajax_getcontact.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQp7KiBhIHNpbXBsZSB0ZW1wbGF0ZSB1c2VkIHRvIGRpc3BsYXkgYSBjb250YWN0IGluIHRoZSBjZ2NvbnRhY3Rfc2VsIHVpIHdpZGdldCB9CnsqIHRoaXMgdGVtcGxhdGUgZGlzcGxheXMgYSB0ZWw6IGxpbmsgd2hlbiByZW5kZXJlZCB2aWEgYSBtb2JpbGUgcGhvbmUsIGFuZCBhIHBob25lIG51bWJlciBleGlzdHMgKn0KeyogZGlmZmVyIGNsYXNzZXMgYSBiaXQgYmV0d2VlbiBmcm9udGVuZCBhbmQgYWRtaW4gcmVxdWVzdHMgKn0KeyogZm9yIGFkbWluIHJlcXVlc3RzLCBhbmQgaWYgaGF2ZSBhY2Nlc3MsIGFsc28gZGlzcGxheSBhIGxpbmsgdG8gZWRpdCB0aGUgY29udGFjdCAqfQp7Y2dlX2lzX3NtYXJ0cGhvbmUgYXNzaWduPW1vYmlsZX0Ke2lmICRmcm9udGVuZH0KICB7JHJvd2NsYXNzPSdyb3cnfQogIHskcHJvbXB0Y2xhc3M9J2NvbC1tZC0zJ30KICB7JHZhbGNsYXNzPSdjb2wtbWQtOSd9CntlbHNlfQogIHskcm93Y2xhc3M9J2NfZnVsbCd9CiAgeyRwcm9tcHRjbGFzcz0nZ3JpZF8zJ30KICB7JHZhbGNsYXNzPSdncmlkXzknfQp7L2lmfQoKe2NhcHR1cmUgYXNzaWduPSdjb250YWN0X2RhdGEnfXtzdHJpcH0KICA8ZGl2IGNsYXNzPSJ7JHJvd2NsYXNzfSI+CiAgICA8c3BhbiBjbGFzcz0ieyR2YWxjbGFzc30gYmlnIj4KICAgICAge2lmICEkZnJvbnRlbmQgJiYgJGNhbl9lZGl0fQogICAgICAgIHttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9lZGl0X2NvbnRhY3QnIGNpZD0kY29udGFjdC0+Z2V0X2lkKCkgdXJsb25seT0xIGFzc2lnbj0nZWRpdF91cmwnfQogICAgICAgIDxhIHRpdGxlPSJ7JG1vZC0+TGFuZygnZWRpdF90aGlzX2NvbnRhY3QnKX0iIGhyZWY9InskZWRpdF91cmx9Ij57JGNvbnRhY3QtPmdldF9kaXNwbGF5X25hbWUoKX08L2E+CiAgICAgIHtlbHNlfQogICAgICAgIHskY29udGFjdC0+Z2V0X2Rpc3BsYXlfbmFtZSgpfQogICAgICB7L2lmfQogICAgPC9zcGFuPgogIDwvZGl2PgoKICB7JHBob25lPSRjb250YWN0LT5nZXRfcHJlZmVycmVkX3Bob25lX29iaigpfQogIHtpZiAkcGhvbmV9CiAgICA8ZGl2IGNsYXNzPSJ7JHJvd2NsYXNzfSI+CiAgICAgIDxzcGFuIGNsYXNzPSJ7JHZhbGNsYXNzfSI+CiAgICAgIHtpZiAkbW9iaWxlfQogICAgICAgICA8YSB0aXRsZT0ieyRtb2QtPkxhbmcoJ3Bob25lX3RoaXNfY29udGFjdCcpfSIgaHJlZj0idGVsOnskcGhvbmUtPmdldF92YWx1ZSgpfSI+eyRwaG9uZS0+Z2V0X3ZhbHVlfSA8ZW0+KHskcGhvbmUtPmdldF9sYWJlbCgpfHVjd29yZHN9KTwvZW0+PC9hPgogICAgICB7ZWxzZX0KICAgICAgICAgeyRwaG9uZS0+Z2V0X3ZhbHVlKCl9IDxlbT57JHBob25lLT5nZXRfbGFiZWwoKX08L2VtPgogICAgICB7L2lmfQogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICB7L2lmfQoKICB7JGVtYWlsPSRjb250YWN0LT5nZXRfcHJlZmVycmVkX2VtYWlsX29iaigpfQogIHtpZiAkZW1haWx9CiAgICA8ZGl2IGNsYXNzPSJ7JHJvd2NsYXNzfSI+CiAgICAgIDxzcGFuIGNsYXNzPSJ7JHZhbGNsYXNzfSI+CiAgICAgICAgPGEgdGl0bGU9InskbW9kLT5MYW5nKCdlbWFpbF90aGlzX2NvbnRhY3QnKX0iIGhyZWY9Im1haWx0bzp7JGVtYWlsLT5nZXRfdmFsdWUoKX0iPnskZW1haWwtPmdldF92YWx1ZSgpfSA8ZW0+KHskZW1haWwtPmdldF9sYWJlbCgpfHVjd29yZHN9KTwvZW0+PC9hPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICB7L2lmfQoKICB7JGFkZHI9JGNvbnRhY3QtPmdldF9wcmVmZXJyZWRfYWRkcmVzcygpfQogIHtpZiAkYWRkcn0KICAgIDxkaXYgY2xhc3M9Inskcm93Y2xhc3N9Ij4KICAgICAgPHNwYW4gY2xhc3M9InskcHJvbXB0Y2xhc3N9IHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdsYmxfYWRkcmVzcycpfTo8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJ7JHZhbGNsYXNzfSI+CiAgICAgICAgeyRhZGRyLT5mb3JtYXQoKXx0cnVuY2F0ZTo0MH0KICAgICAgPC9zcGFuPgogICAgPC9kaXY+CiAgey9pZn0Key9zdHJpcH17L2NhcHR1cmV9Cgo8ZGl2IGNsYXNzPSJjZ2NvbnRhY3QiPgogIHtpZiAkY29udGFjdC0+Z2V0X2ltYWdlKCl9CiAgICA8ZGl2IGNsYXNzPSJ7JHJvd2NsYXNzfSI+CiAgICAgIDxzcGFuIGNsYXNzPSJ7JHByb21wdGNsYXNzfSIgc3R5bGU9Im1pbi13aWR0aDogMTAwcHg7Ij4KICAgICAgICA8aW1nIHNyYz0ieyRjb250YWN0LT5nZXRfaW1hZ2UoKX0iIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgYWx0PSIiLz4KICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ieyR2YWxjbGFzc30iPgogICAgICAgIHskY29udGFjdF9kYXRhfQogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICB7ZWxzZX0KICAgIHskY29udGFjdF9kYXRhfQogIHsvaWZ9CjwvZGl2Pgp7L3N0cmlwfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/contact_report.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+CiAgPGhlYWQ+CiAgICB7Y2dqc19yZXF1aXJlIGNzc25hbWU9J3BkZl9yZXBvcnQnfQogICAge2NnanNfcmVuZGVyfQogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxkaXYgY2xhc3M9InJlcG9ydCI+CiAgICAgIDxoMT57JHJlcG9ydC50aXRsZX08L2gxPgogICAgICA8cCBjbGFzcz0iZGVzY3JpcHRpb24iPnskcmVwb3J0LmRlc2NyaXB0aW9ufTwvcD4KICAgICAgPGRpdiBjbGFzcz0icmVwb3J0X2RhdGEiPntzdHJpcH0KICAgICAgICB7Zm9yZWFjaCAkcmVwb3J0Lml0ZW1zIGFzICRpdGVtfQogICAgICAgICAgeyRpdGVtfQogICAgICAgIHsvZm9yZWFjaH0KICAgICAgey9zdHJpcH08L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPg==]]></data>
	</file>
	<file>
	  <filename>/templates/contact_report_defn.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdGhpcyB0ZW1wbGF0ZSB1cyB1c2VkIGZyb20gdGhlIGh0bWwgYW5kIHBkZiBleHBvcnQuLi4gaXQgb3V0cHV0cyBvbmUgY29udGFjdCAqfQo8ZGl2IGNsYXNzPSJjb250YWN0Ij57c3RyaXB9CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgICB7JGltZz0kaXRlbS0+Z2V0X2ltYWdlKCl9CiAgICAge2lmICRpbWd9CiAgICAgICA8aW1nIHNyYz0ieyRpbWd9IiBhbHQ9IiIgd2lkdGg9IjMwMCIvPgogICAgICAgPGgzIGNsYXNzPSJpbmxpbmUiPnskaXRlbS0+Z2V0X2Z1bGxuYW1lKCl9PC9oMz4KICAgICB7ZWxzZX0KICAgICAgIDxoMz57JGl0ZW0tPmdldF9mdWxsbmFtZSgpfTwvaDM+CiAgICAgey9pZn0KICA8L2Rpdj4KCiAge2lmICRpdGVtLT5nZXRfbmlja25hbWUoKX0KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHNwYW4gY2xhc3M9InByb21wdCI+Tmlja25hbWU6PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InZhbHVlIj57JGl0ZW0tPmdldF9uaWNrbmFtZSgpfTwvc3Bhbj4KICA8L2Rpdj4KICB7L2lmfQoKICB7aWYgJGl0ZW0tPmdldF9jb21wYW55KCl9CiAgICAge2lmICRpdGVtLT5nZXRfdGl0bGUoKX0KICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgPHNwYW4gY2xhc3M9InZhbHVlIj5UaXRsZTo8L3NwYW4+CiAgICAgICA8c3BhbiBjbGFzcz0idmFsdWUiPnskaXRlbS0+Z2V0X3RpdGxlKCl9PC9zcGFuPgogICAgIDwvZGl2PgogICAgIHsvaWZ9CiAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgIDxzcGFuIGNsYXNzPSJ2YWx1ZSI+Q29tcGFueTwvc3Bhbj4KICAgICAgIDxzcGFuIGNsYXNzPSJ2YWx1ZSI+eyRpdGVtLT5nZXRfY29tcGFueSgpfTwvc3Bhbj4KICAgICA8L2Rpdj4KICB7L2lmfQoKICB7JGVtYWlsPSRpdGVtLT5nZXRfcHJlZmVycmVkX2VtYWlsKCl9CiAge2lmICRlbWFpbH0KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgIDxzcGFuIGNsYXNzPSJwcm9tcHQiPkVtYWlsOjwvc3Bhbj4KICAgICA8c3BhbiBjbGFzcz0idmFsdWUiPnskZW1haWx9PC9zcGFuPgogIDwvZGl2PgogIHsvaWZ9CgogIHskcGhvbmU9JGl0ZW0tPmdldF9wcmVmZXJyZWRfcGhvbmUoKX0KICB7aWYgJHBob25lfQogIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgPHNwYW4gY2xhc3M9InByb21wdCI+UGhvbmU6PC9zcGFuPgogICAgIDxzcGFuIGNsYXNzPSJ2YWx1ZSI+eyRwaG9uZX08L3NwYW4+CiAgPC9kaXY+CiAgey9pZn0Key9zdHJpcH08L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/jquery.cgcontacts_add.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAgKiBBIGpxdWVyeSB3aWRnZXQgdGhhdCBjcmVhdGVzIGEgVUkgZGlhbG9nIGZvciBxdWlja2x5IGFkZGluZyBhIG5ldyBjb250YWN0IHRvIHRoZSBDR0NvbnRhY3RzIGxpYnJhcnkKICAqIHdvcmtzIG9ubHkgaW4gdGhlIENNU01TIGFkbWluIGNvbnNvbGUsIHVzZXIgbXVzdCBoYXZlIHRoZSBDR0NvbnRhY3RzOjpQRVJNIHBlcm1pc3Npb24uCiAgKiB1c2FnZTogJCgnI3NvbWVfZWxlbWVudCcpLmNsaWNrKGZ1bmN0aW9uKCl7ICQodGhpcykuY2djb250YWN0c19hZGQoKTsgfSk7CiAgKi8KKGZ1bmN0aW9uKCQpewogICAgJC53aWRnZXQoJ2NnLmNnY29udGFjdHNfYWRkJywgJC51aS5hdXRvY29tcGxldGUsIHsKCW9wdGlvbnM6IHsKCSAgICBxdWlja0FkZDogdHJ1ZSwKCX0sCgoJLy8vLyBpbnRlcm5hbCBkYXRhCglfZGF0YTogewoJICBwb3N0X3VybDogJ3ttb2R1bGVfYWN0aW9uX2xpbmsgbW9kdWxlPUNHQ29udGFjdHMgYWN0aW9uPWFkbWluX2FqYXhfc2F2ZWNvbnRhY3QgZm9yYWpheD0xfScsCgkgIGRlc3RfdXJsOiAne21vZHVsZV9hY3Rpb25fbGluayBtb2R1bGU9Q0dDb250YWN0cyBhY3Rpb249YWRtaW5fZWRpdF9jb250YWN0IGNpZD1YWFgganNmcmllbmRseT0xfScsCgkgIGxhbmc6IHsKCQl0aXRsZTogJ3skQ0dDb250YWN0cy0+TGFuZygncHJvbXB0X2FkZF9jb250YWN0Jyl9JywKCQlidXR0b25UeHQ6ICd7JENHQ29udGFjdHMtPkxhbmcoJ2FkZCcpfScsCgkJd2Fybk5vVmFsdWU6ICd7JENHQ29udGFjdHMtPkxhbmcoJ2Vycm9yX25vdmFsdWUnKX0nLAoJCXBsYWNlSG9sZGVyX25hbWU6ICd7JENHQ29udGFjdHMtPkxhbmcoJ3BoX2NvbnRhY3RuYW1lJyl9JywKCQlwbGFjZUhvbGRlcl92YWx1ZTogJ3skQ0dDb250YWN0cy0+TGFuZygncGhfY29udGFjdHZhbHVlJyl9JywKCQllcnJvcl9ub19wb3N0dXJsOiAnRXJyb3I6IFRoZSBwb3N0X3VybCBpcyBub3Qgc2V0JywKCQllcnJvcl9ub19kZXN0dXJsOiAnRXJyb3IsIHRoZSBkZXN0X3VybCBpcyBub3Qgc2V0JywKCQlob21lOiAneyRDR0NvbnRhY3RzLT5MYW5nKCdsYmxfaG9tZScpfScsCgkJd29yazogJ3skQ0dDb250YWN0cy0+TGFuZygnbGJsX3dvcmsnKX0nLAoJICB9LAogICAgICAgICAgdHlwZXM6IHsKICAJICAgIGNvbnRhY3RfZW1haWw6ICd7JENHQ29udGFjdHMtPkxhbmcoJ2xibF9lbWFpbCcpfScsCgkgICAgY29udGFjdF9waG9uZTogJ3skQ0dDb250YWN0cy0+TGFuZygnbGJsX3Bob25lJyl9JywKCSAgICBjb250YWN0X3VybDogICAneyRDR0NvbnRhY3RzLT5MYW5nKCdsYmxfdXJsJyl9JywKCSAgfQoJfSwKCgkvLy8vIG1ldGhvZHMKCV9pbml0OiBmdW5jdGlvbigpIHsKCSAgIHRoaXMuX2RhdGEuZGxnLmRpYWxvZygnb3BlbicpOwoJfSwKCiAgICAgICAgX2NyZWF0ZTogZnVuY3Rpb24oKSB7CgkgICAgLy8gY29weSBvcHRpb25zIHRvIGRhdGEgKHByZXZlbnRzIG1vZGlmaWNhdGlvbiBhZnRlciBjcmVhdGlvbikKCSAgICAkLmV4dGVuZCggdGhpcy5fZGF0YSwgdGhpcy5vcHRpb25zICk7CgoJICAgIC8vIGNoZWNrIGZvciBvdXIgVVJMUwoJICAgIGlmKCAhdGhpcy5fZGF0YS5oYXNPd25Qcm9wZXJ0eSgncG9zdF91cmwnKSB8fCB0aGlzLl9kYXRhLnBvc3RfdXJsLmxlbmd0aCA9PSAwICkgewoJCWFsZXJ0KHRoaXMuX2RhdGEubGFuZy5lcnJvcl9ub19wb3N0dXJsKTsKCSAgICB9CgoJICAgIGlmKCB0aGlzLl9kYXRhLnF1aWNrQWRkICYmICF0aGlzLl9kYXRhLmhhc093blByb3BlcnR5KCdkZXN0X3VybCcpIHx8IHRoaXMuX2RhdGEuZGVzdF91cmwubGVuZ3RoID09IDAgKSB7CgkgICAgICAgIGFsZXJ0KHRoaXMuX2RhdGEubGFuZy5lcnJvcl9ub19kZXN0dXJsKTsKCSAgICB9CgoJICAgIC8vIGNyZWF0ZSBhIGRpYWxvZwoJICAgIHZhciBzZWxmID0gdGhpczsKCSAgICB2YXIgZGxnID0gJCgnPHAgY2xhc3M9InBhZ2VpbnB1dCIvPicpOwoJICAgIGRsZy5hcHBlbmQoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjX25hbWUiIHBsYWNlaG9sZGVyPSInK3RoaXMuX2RhdGEubGFuZy5wbGFjZUhvbGRlcl9uYW1lKyciIHNpemU9IjMwIi8+Jyk7CgoJICAgIHZhciBzZWwgPSAkKCc8c2VsZWN0IG5hbWU9ImNfb190eXBlIi8+Jyk7CgkgICAgZm9yKCB2YXIgcCBpbiB0aGlzLl9kYXRhLnR5cGVzICkgewoJCWlmKCAhdGhpcy5fZGF0YS50eXBlcy5oYXNPd25Qcm9wZXJ0eShwKSApIGNvbnRpbnVlOwoJCXNlbC5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrcCsnIj4nK3RoaXMuX2RhdGEudHlwZXNbcF0rJzwvb3B0aW9uJyk7CgkgICAgfQoKCSAgICB2YXIgcm93ID0gJCgnPHAgY2xhc3M9InBhZ2VpbnB1dCIvPicpLmFwcGVuZChzZWwpOwoJICAgIHJvdy5hcHBlbmQoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjX29fdmFsIiBzaXplPSIyMCIgcGxhY2Vob2xkZXI9IicrdGhpcy5fZGF0YS5sYW5nLnBsYWNlSG9sZGVyX3ZhbHVlKyciIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ii8+Jyk7CgkgICAgZGxnLmFwcGVuZChyb3cpOwoKICAgICAgICAgICAgdmFyIHJvdyA9ICQoJzxwIGNsYXNzPSJwYWdlaW5wdXQiLz4nKTsKCSAgICByb3cuYXBwZW5kKCc8bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjX29fbGJsIiB2YWx1ZT0id29yayIgY2hlY2tlZD0iY2hlY2tlZCIvPiAnK3RoaXMuX2RhdGEubGFuZy53b3JrKyc8L2xhYmVsPicpOwoJICAgIHJvdy5hcHBlbmQoJyZuYnNwOyZuYnNwOycpOwoJICAgIHJvdy5hcHBlbmQoJzxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNfb19sYmwiIHZhbHVlPSJob21lIi8+ICcrdGhpcy5fZGF0YS5sYW5nLmhvbWUrJzwvbGFiZWw+Jyk7CgkgICAgZGxnLmFwcGVuZChyb3cpOwoKCSAgICB2YXIgYnRuVHh0ID0gdGhpcy5fZGF0YS5sYW5nLmJ1dHRvblR4dDsKCSAgICBpZiggIXRoaXMuX2RhdGEucXVpY2tBZGQgKSBidG5UeHQgKz0gJy4uLic7CgkgICAgdGhpcy5fZGF0YS5kbGcgPSBkbGc7CgkgICAgZGxnLmRpYWxvZyh7CgkJd2lkdGg6ICdhdXRvJywKCQl0aXRsZTogdGhpcy5fZGF0YS5sYW5nLnRpdGxlLAoJCWJ1dHRvbnM6IFsKCQkgICAgewoJCQl0ZXh0OiBidG5UeHQsCgkJCWNsaWNrOiBmdW5jdGlvbihldmVudCkgewoJCQkgICAgdmFyIGlfbmFtZSA9ICQoJzppbnB1dFtuYW1lPSJjX25hbWUiXScsdGhpcykudmFsKCk7CgkJCSAgICB2YXIgaV90eXBlID0gJCgnOmlucHV0W25hbWU9ImNfb190eXBlIl0nLHRoaXMpLnZhbCgpOwoJCQkgICAgdmFyIGlfdmFsICA9ICQoJzppbnB1dFtuYW1lPSJjX29fdmFsIl0nLHRoaXMpLnZhbCgpOwoJCQkgICAgdmFyIGlfbGJsICA9ICQoJ2lucHV0OnJhZGlvW25hbWU9ImNfb19sYmwiXTpjaGVja2VkJyx0aGlzKS52YWwoKTsKCQkJICAgIGlmKCBpX25hbWUgPT0gJycgfHwgaV92YWwgPT0gJycgKSB7CgkJCQlhbGVydChzZWxmLl9kYXRhLmxhbmcud2Fybk5vVmFsdWUpOwoJCQkgICAgfSBlbHNlIHsKCQkJICAgICAgICAvLyBidWlsZCBhIGNvbnRhY3Qgb2JqZWN0CgkJCSAgICAgICAgdmFyIGNvbnRhY3QgPSB7fTsKCQkJCWNvbnRhY3QuZnVsbG5hbWUgPSBpX25hbWU7CgkJCQljb250YWN0Lm9iamVjdHMgPSBbXTsKCQkJCXZhciBvID0gewoJCQkJICBsYWJlbDogaV9sYmwsCgkJCQkgIGNsYXNzOiBpX3R5cGUsCgkJCQkgIHZhbHVlOiBpX3ZhbAoJCQkJfTsKCQkJCWlmKCBpX3R5cGUgPT0gJ2NvbnRhY3RfcGhvbmUnICkgewoJCQkJICBvLnR5cGUgPSAndm9pY2UnOwoJCQkJfQoJCQkJY29udGFjdC5vYmplY3RzLnB1c2gobyk7CgoJCQkJLy8gcG9zdCB0aGUgZGF0YQoJCQkgICAgICAgICQuYWpheCh7CgkJCQkgIHR5cGU6ICdQT1NUJywKCQkJCSAgZGF0YTogewoJCQkJICAgIGNvbnRhY3Q6IEpTT04uc3RyaW5naWZ5KGNvbnRhY3QpCgkJCQkgIH0sCgkJCQkgIGFzeW5jOiBmYWxzZSwKCQkJCSAgdXJsOiAgc2VsZi5fZGF0YS5wb3N0X3VybCwKCQkJCSAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgewoJCQkJICAgICBpZiggdHlwZW9mIGRhdGEuc3RhdHVzID09ICd1bmRlZmluZWQnIHx8IGRhdGEuc3RhdHVzICE9ICdPSycgKSB7CgkJCQkgICAgICAgYWxlcnQoJ0Vycm9yOiAnICsgZGF0YS5tc2cpOwoJCQkJICAgICAgIHJldHVybjsKCQkJCSAgICAgfQoKCQkJCSAgICAgLy8gaXQgd29ya2VkISEhCgkJCQkgICAgIC8vIHNlbmQgYW4gZXZlbnQKCQkJCSAgICAgY29udGFjdC5pZCA9IGRhdGEuY29udGFjdF9pZDsKCQkJCSAgICAgc2VsZi5fdHJpZ2dlcignYWZ0ZXJBZGQnLGV2ZW50LHsgY29udGFjdDogY29udGFjdCB9KTsKCgkJCQkgICAgIC8vIGl0IHdvcmtlZC4uLiBub3cgaWYgd2UncmUgaW4gcXVpY2sgYWRkIG1vZGUKCQkJCSAgICAgLy8gd2UganVzdCBjbG9zZQoJCQkJICAgICBpZiggc2VsZi5vcHRpb25zLnF1aWNrQWRkICkgewoJCQkJICAgICAgIAkgc2VsZi5fZGF0YS5kbGcuZGlhbG9nKCdjbG9zZScpOwoJCQkJICAgICB9IGVsc2UgewoJCQkJICAgICAgICAgdmFyIHVybCA9IHNlbGYuX2RhdGEuZGVzdF91cmwucmVwbGFjZSgnWFhYJyxkYXRhLmRhdGEpOwoJCQkJICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCQkJICAgICB9CgkJCQkgIH0sCgkJCQkgIGVycm9yOiBmdW5jdGlvbihkYXRhKSB7CgkJCQkgICAgYWxlcnQoc2VsZi5fZGF0YS5sYW5nLmVycm9yX2FqYXgpCgkJCQkgIH0KCQkJCX0pCgkJCSAgICB9CgkJCX0KCQkgICAgfQoJCV0KCSAgICB9KQoJfSwKCglfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKCSAgICBpZiAoIGtleSA9PT0gInZhbHVlIiApIHZhbHVlID0gdGhpcy5fY29uc3RyYWluKCB2YWx1ZSApOwogICAgICAgICAgICB0aGlzLl9zdXBlcigga2V5LCB2YWx1ZSApOwoJfSwKCglfc2V0T3B0aW9uczogZnVuY3Rpb24oIG9wdGlvbnMgKSB7CiAgICAgICAgICAgIHRoaXMuX3N1cGVyKCBvcHRpb25zICk7Cgl9LAoKCV9kZXN0cm95OiBmdW5jdGlvbigpIHsKCSAgICBhbGVydCgnZGVzdHJveScpOwoJfSwKCgkvLy8vIGludGVybmFscwoKCS8vLy8gZW5kCgoJX25vb3A6IGZ1bmN0aW9uKCkge30KICAgIH0pOwp9KShqUXVlcnkpOwo=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery.cgcontacts_sel.css.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNnY29udGFjdC1hZGRpbWcgewogICAgY29udGVudDp1cmwoJ3skbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCl9L2ltYWdlcy9uZXdvYmplY3QuZ2lmJyk7CiAgICB3aWR0aDogMTZweDsKICAgIG1pbi13aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIG1pbi1oZWlnaHQ6IDE2cHg7CiAgICBtYXJnaW4tbGVmdDogMnB4Owp9Ci5jZ2NvbnRhY3QtdXBpbWcgewogICAgY29udGVudDp1cmwoJ3skbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCl9L2ltYWdlcy9zb3J0X3VwLmdpZicpOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiBub25lOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDE2cHg7CiAgICBtaW4td2lkdGg6IDE2cHg7CiAgICBoZWlnaHQ6IDE2cHg7Cn19Ci5jZ2NvbnRhY3QtZG93bmltZyB7CiAgICBjb250ZW50OnVybCgneyRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKX0vaW1hZ2VzL3NvcnRfZG93bi5naWYnKTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlcjogbm9uZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDE2cHg7CiAgICBtaW4td2lkdGg6IDE2cHg7CiAgICBoZWlnaHQ6IDE2cHg7Cn0=]]></data>
	</file>
	<file>
	  <filename>/templates/jquery.cgcontacts_sel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAgKiBBIGpxdWVyeSB3aWRnZXQgdGhhdCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0bzoKICAqICAgYTogdXNlIGF1dG9jb21wbGV0ZSB0byBxdWlja2x5IHNlbGVjdCBhbiBleGlzdGluZyBjb250YWN0CiAgKiAgIGI6IGRpc3BsYXkgY29udGFjdCBpbmZvcm1hdGlvbiBvbiBob3ZlciAodmlhIGFqYXgpCiAgKiAgIGM6IHF1aWNrbHkgYWRkIGEgY29udGFjdCAodmlhIGFqYXgpCiAgKiBvcHRpb25zOgogICogICBxdWlja0FkZDogKGJvb2w9dHJ1ZSkgLSBkaXNhYmxlIHF1aWNrIGFkZAogICogICBjYXRlZ29yeTogKHN0cmluZykgLSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBwYXRocy9pZHMKICAqICAgICAtIG5ldyBpdGVtcyB3aWxsIGJlIGFkZGVkIGludG8gdGhlIGNhdGVnb3JpZXMKICAqICAgdGVtcGxhdGU6IChzdHJpbmcpIC0gbmFtZSBvZiB0ZW1wbGF0ZSB0byB1c2UgZm9yIGRpc3BsYXlpbmcgY29udGFjdCBpbiBob3ZlciBtb2RlCiAgKi8KKGZ1bmN0aW9uKCQpewogICAgJC53aWRnZXQoJ2NnLmNnY29udGFjdHNfc2VsJywgJC51aS5hdXRvY29tcGxldGUsIHsKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIHF1aWNrQWRkOiB0cnVlLAogICAgCSAgICBjYXRlZ29yeTogbnVsbCwKIAkgICAgdGVtcGxhdGU6IG51bGwsCgkgICAgY29udGFjdF9pZDogbnVsbCwKCSAgICBhZGRfaW1nOiAne2NnaW1hZ2UgaW1hZ2U9Imljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmIiBjbGFzcz0iY2djb250YWN0LWFkZGltZyIgYWx0PSJ7JG1vZC0+TGFuZygnYWRkX2NvbnRhY3QnKX0ifScsCgkgICAgbGFuZzogewoJICAgICAgICB0aXRsZTogJ3skbW9kLT5MYW5nKCd0aXRsZV9maW5kX2NvbnRhY3QnKX0nLAoJICAgICAgICBwaF9sb29rdXA6ICd7JG1vZC0+TGFuZygncHJvbXB0X2ZpbmRfY29udGFjdCcpfScKCSAgICB9CiAgICAgICAgfSwKCglfY3JlYXRlOiBmdW5jdGlvbigpIHsKCSAgICB2YXIgc2VsZiA9IHRoaXM7CgkgICAgLy8gb3ZlcnJpZGUgc29tZSBzdHVmZi4KCSAgICB0aGlzLm9wdGlvbnMubWluTGVuZ3RoID0gMjsKCSAgICB0aGlzLm9wdGlvbnMuc291cmNlID0gdGhpcy5fbXlzb3VyY2U7CgkgICAgdGhpcy5vcHRpb25zLnNlbGVjdCA9IHRoaXMuX215c2VsZWN0OwoJICAgIHRoaXMuZWxlbWVudC5hdHRyKCd0aXRsZScsdGhpcy5vcHRpb25zLmxhbmcudGl0bGUpOwoJICAgIHRoaXMuZWxlbWVudC5hdHRyKCdwbGFjZWhvbGRlcicsdGhpcy5vcHRpb25zLmxhbmcucGhfbG9va3VwKTsKCSAgICB0aGlzLmVsZW1lbnQud3JhcCgnPGRpdi8+Jyk7CgoJICAgIHZhciBwYXIgPSB0aGlzLmVsZW1lbnQucGFyZW50KCk7CgkgICAgLy8gdG9kbzogY29udmVydCBidXR0b24gdG8gdWkgYnV0dG9uCgkgICAgdmFyIGRvd25fYnRuID0gJCgnPGltZy8+Jyx7IGNsYXNzOiAnY2djb250YWN0LWRvd25pbWcnIH0pOwoJICAgIHBhci5wcmVwZW5kKGRvd25fYnRuKTsKCgkgICAgaWYoICQuZm4uY2djb250YWN0c19hZGQgJiYgdGhpcy5vcHRpb25zLnF1aWNrQWRkICkgewoJCXZhciBzZWxmID0gdGhpczsKCQl0aGlzLl9kYXRhLmFkZF9idG4gPSAkKHRoaXMub3B0aW9ucy5hZGRfaW1nKS5jc3MoJ2N1cnNvcicsJ3BvaW50ZXInKTsKCQl0aGlzLl9kYXRhLmFkZF9idG4uY2xpY2soZnVuY3Rpb24oKXsKCQkgICAgc2VsZi5fZGF0YS5hZGRfYnRuLmNnY29udGFjdHNfYWRkKHsKCQkJYWZ0ZXJBZGQ6IGZ1bmN0aW9uKGV2ZW50LHVpKSB7CgkJCSAgICBpZiggdHlwZW9mIHVpLmNvbnRhY3QuaWQgIT0gJ3VuZGVmaW5lZCcgJiYgdWkuY29udGFjdC5pZCA+IDAgKSB7CgkJCQlzZWxmLl9nZXRjb250YWN0KHVpLmNvbnRhY3QuaWQpOwoJCQkgICAgfQoJCQl9CgkJICAgIH0pOwoJCX0pOwoJCXBhci5hcHBlbmQodGhpcy5fZGF0YS5hZGRfYnRuKTsKCSAgICB9CgoJICAgIHBhci53cmFwKCc8ZGl2IGNsYXNzPSJ1aS13aWRnZXQiLz4nKTsKCSAgICB2YXIgX3dyYXBwZXIgPSBwYXIucGFyZW50KCk7CgkgICAgdmFyIGN3ID0gJCgnPGRpdiBjbGFzcz0idWktd2lkZ2V0LWNvbnRlbnQiPicpOwoJICAgIHZhciB1cF9idG4gPSAkKCc8aW1nLz4nLHsgY2xhc3M6ICdjZ2NvbnRhY3QtdXBpbWcnIH0pLmNzcygndmVydGljYWwtYWxpZ24nLCd0b3AnKTsKCSAgICB2YXIgYzIgPSAkKCc8ZGl2IGNsYXNzPSJjZ2NvbnRhY3QtY29udGFjdCIvPicpLmNzcygnZGlzcGxheScsJ2lubGluZS1ibG9jaycpLmNzcygnbWluLXdpZHRoJywnNDAlJyk7CgkgICAgY3cuYXBwZW5kKHVwX2J0bikuYXBwZW5kKGMyKTsKCSAgICBfd3JhcHBlci5hcHBlbmQoY3cpOwoKCSAgICAvLyBpZiB3ZSBoYXZlIGEgdmFsdWUgKGVpdGhlciBpbiBvcHRpb25zIG9yIHRoZSBlbGVtZW50KQoJICAgIC8vIHRvZ2dsZSB0aGUgbW9kZSB0byB2aWV3LCBhbmQgZ2V0IHRoZSBkYXRhLgoJICAgIHZhciBjaWQgPSBwYXJzZUludCh0aGlzLmVsZW1lbnQudmFsKCkpOwoJICAgIGlmKCBjaWQgPCAxICYmIHRoaXMub3B0aW9ucy5jb250YWN0X2lkID4gMCApIGNpZCA9IHRoaXMub3B0aW9ucy5jb250YWN0X2lkOwoJICAgIGlmKCBjaWQgPiAwICkgewoJCXRoaXMuX2dldGNvbnRhY3QoY2lkLHRydWUpOwoJICAgIH0KCSAgICBlbHNlIHsKCQl0aGlzLnNldF9tb2RlKCdzZWxlY3QnKTsKCSAgICB9CgoJICAgIF93cmFwcGVyLm9uKCdjbGljaycsJy5jZ2NvbnRhY3QtZG93bmltZycsZnVuY3Rpb24oZXYpewoJCS8vIGNsaWNraW5nIHRoZSBkb3duIGltYWdlIHRvZ2dsZXMgdmlldyBtb2RlCgkJY29uc29sZS5kZWJ1ZygnY2xpY2sgZG93bicpOwoJCWV2LnByZXZlbnREZWZhdWx0KCk7CgkJc2VsZi5zZXRfbW9kZSgndmlldycpOwoJICAgIH0pOwoJICAgICQoX3dyYXBwZXIpLm9uKCdjbGljaycsJy5jZ2NvbnRhY3QtdXBpbWcnLGZ1bmN0aW9uKGV2KXsKCQkvLyBjbGlja2luZyB0aGUgdXAgaW1hZ2UgdG9nZ2xlcyBzZWxlY3QgbW9kZQoJCWNvbnNvbGUuZGVidWcoJ2NsaWNrIHVwJyk7CgkJZXYucHJldmVudERlZmF1bHQoKTsKCQlzZWxmLnNldF9tb2RlKCdzZWxlY3QnKTsKCSAgICB9KTsKCgkgICAgLy8gbm93LCBjYWxsIHRoZSBiYXNlIG1ldGhvZAoJICAgIHRoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKTsKCX0sCgoJX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkgewoJICAgIGFsZXJ0KCd0b2RvOiBwcm9wZXIgZGVzdHJveScpOwoJfSwKCglfdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGV2ZW50LCBkYXRhICkgewoJICAgIGlmKCB0eXBlID09ICdzZWxlY3QnKSBkYXRhLm15d2lkZ2V0ID0gdGhpczsKCSAgICB0aGlzLl9zdXBlckFwcGx5KGFyZ3VtZW50cyk7Cgl9LAoKCS8vIHByaXZhdGUsIGludGVybmFsIGRhdGEKCV9kYXRhOiB7CgkgICAgc2VhcmNoX3VybDogJ3ttb2R1bGVfYWN0aW9uX2xpbmsgbW9kdWxlPUNHQ29udGFjdHMgYWN0aW9uPWFqYXhfZmluZGNvbnRhY3QgZm9yYWpheD0xfScsCgkgICAgZ2V0X3VybDogJ3ttb2R1bGVfYWN0aW9uX2xpbmsgbW9kdWxlPUNHQ29udGFjdHMgYWN0aW9uPWFqYXhfZ2V0Y29udGFjdCBmb3JhamF4PTF9JywKCSAgICBjb250YWN0X3VybDogJ3ttb2R1bGVfYWN0aW9uX2xpbmsgbW9kdWxlPUNHQ29udGFjdHMgYWN0aW9uPWFqYXhfY29udGFjdGluZm8gZm9yYWpheD0xfScsCgkgICAgdXBfaW1nOiAnaHR0cDovL2NhbGd1eTEwMDAuZHludS5jb20vc2lib2xhL21vZHVsZXMvQ0dDb250YWN0cy9pbWFnZXMvc29ydF91cC5naWYnCgl9LAoKCV9teXNlbGVjdDogZnVuY3Rpb24oZXYsdWkpIHsKCSAgICB2YXIgc2VsZiA9IHVpLm15d2lkZ2V0OwoJICAgIHNlbGYuX2dldGNvbnRhY3QodWkuaXRlbS52YWx1ZSk7CgkgICAgc2VsZi5zZXRfbW9kZSgndmlldycpOwoJfSwKCgkvLyBwcml2YXRlLCBpbnRlcm5hbCBtZXRob2RzCiAgICAgICAgX2dldGNvbnRhY3Q6IGZ1bmN0aW9uKGNvbnRhY3RfaWQsIG9uY3JlYXRlKSB7CiAgICAgICAgICAgIC8vIGFqYXggY2FsbCB0byBnZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSB1aS13aWRnZXQtY29udGVudAoJICAgIHZhciBzZWxmID0gdGhpczsKCSAgICB2YXIgcmVxZGF0YSA9IHt9OwoJICAgIHJlcWRhdGEuY29udGFjdF9pZCA9IGNvbnRhY3RfaWQ7CgkgICAgcmVxZGF0YS50ZW1wbGF0ZSA9IHRoaXMub3B0aW9ucy50ZW1wbGF0ZTsKCSAgICAkLmFqYXgoewoJCWRhdGFUeXBlOiAnanNvbicsCgkJdXJsOiBzZWxmLl9kYXRhLmdldF91cmwsCgkJZGF0YTogcmVxZGF0YSwKCQlzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CgkJICAgIHZhciBfd3JhcHBlciA9IHNlbGYuZWxlbWVudC5jbG9zZXN0KCcudWktd2lkZ2V0Jyk7CgkJICAgICQoJ2Rpdi5jZ2NvbnRhY3QtY29udGFjdCcsX3dyYXBwZXIpLmh0bWwoZGF0YSkuc2hvdygpOwoJCSAgICBzZWxmLm9wdGlvbnMuY29udGFjdF9pZCA9IGNvbnRhY3RfaWQ7CgkJICAgIHNlbGYuc2V0X21vZGUoJ3ZpZXcnKTsKCQkgICAgaWYoIHR5cGVvZiBvbmNyZWF0ZSA9PSAndW5kZWZpbmVkJyApIHNlbGYuZWxlbWVudC50cmlnZ2VyKCdnZXRjb250YWN0Jyk7CgkJfQoJICAgIH0pOwoJfSwKCglfbXlzb3VyY2U6IGZ1bmN0aW9uKHJlcXVlc3QscmVzcG9uc2UpIHsKCSAgICB2YXIgc2VsZiA9IHRoaXM7CgkgICAgcmVxZGF0YSA9IHsKCQljYXRlZ29yeTogJycsCgkgICAgfTsKCSAgICByZXFkYXRhLm5hbWUgPSByZXF1ZXN0LnRlcm07CiAgICAgICAgICAgICQuYWpheCh7CgkJdXJsOiBzZWxmLl9kYXRhLnNlYXJjaF91cmwsCgkJZGF0YVR5cGU6ICdqc29uJywKCQlkYXRhOiByZXFkYXRhLAoJCXN1Y2Nlc3M6IGZ1bmN0aW9uKCBkYXRhICkgewoJCSAgICB2YXIgcmVzID0gW107CgkJICAgIGlmKCB0eXBlb2YgZGF0YS5zdGF0dXMgPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIGRhdGEucmVzdWx0cyA9PSAndW5kZWZpbmVkJyB8fCBkYXRhLnN0YXR1cyA9PSBudWxsIHx8IGRhdGEuc3RhdHVzID09ICdFUlJPUicgKSAgewoJCQl2YXIgbXNnID0gJ3skbW9kLT5MYW5nKCdlcnJvcl9hamF4Jyl9JzsKCQkJaWYoIHR5cGVvZihkYXRhLm1zZykgIT0gdW5kZWZpbmVkICkgbXNnID0gZGF0YS5tc2c7CgkJCWNvbnNvbGUubG9nKG1zZyk7CgkJCWFsZXJ0KG1zZyk7CgkJICAgIH0KCQkgICAgaWYoIHR5cGVvZiBkYXRhLnJlc3VsdHMgIT0gJ3VuZGVmaW5lZCcgKSB7CgkJCWZvciggaXRlbSBpbiBkYXRhLnJlc3VsdHMgKSB7CgkJCSAgICByZXMucHVzaCggeyBsYWJlbDogZGF0YS5yZXN1bHRzW2l0ZW1dLm5hbWUsIHZhbHVlOiBkYXRhLnJlc3VsdHNbaXRlbV0uaWQgfSApOwoJCQl9CgkJICAgIH0KCQkgICAgcmVzcG9uc2UoIHJlcyApOwoJCX0KCSAgICB9KQoJfSwKCgkvLyBwdWJsaWMgbWV0aG9kcwoKCXNldF9tb2RlOiBmdW5jdGlvbihtb2RlKSB7CgkgICAgdmFyIG5vX2lkID0gKCB0aGlzLm9wdGlvbnMuY29udGFjdF9pZCA9PSBudWxsIHx8IHRoaXMub3B0aW9ucy5jb250YWN0X2lkIDwgMSApID8gMSA6IDA7CgkgICAgdmFyIF93cmFwcGVyID0gdGhpcy5lbGVtZW50LmNsb3Nlc3QoJy51aS13aWRnZXQnKTsKCSAgICBpZiggbm9faWQgKSB7CgkgICAgICAgICQoJy5jZ2NvbnRhY3QtZG93bmltZycsX3dyYXBwZXIpLmhpZGUoKTsKCSAgICB9IGVsc2UgewoJICAgICAgICAkKCcuY2djb250YWN0LWRvd25pbWcnLF93cmFwcGVyKS5zaG93KCk7CgkgICAgfQoJICAgIHN3aXRjaCggbW9kZSApIHsKCSAgICBjYXNlICdzZWxlY3QnOgoJICAgICAgICB0aGlzLmVsZW1lbnQudmFsKCcnKTsKCQkkKCcudWktd2lkZ2V0LWNvbnRlbnQnLF93cmFwcGVyKS5oaWRlKCk7CgkJJCgnZGl2OmZpcnN0Jyxfd3JhcHBlcikuc2hvdygpOwoJCSQoJy5jZ2NvbnRhY3QtdXBpbWcnLF93cmFwcGVyKS5oaWRlKCk7CgkJYnJlYWs7CgkgICAgY2FzZSAndmlldyc6CgkgICAgICAgIHRoaXMuZWxlbWVudC52YWwodGhpcy5vcHRpb25zLmNvbnRhY3RfaWQpOwoJCSQoJ2RpdjpmaXJzdCcsX3dyYXBwZXIpLmhpZGUoKTsKCQkkKCcuY2djb250YWN0LXVwaW1nJyxfd3JhcHBlcikuc2hvdygpOwoJCSQoJy51aS13aWRnZXQtY29udGVudCcsX3dyYXBwZXIpLnNob3coKTsKCSAgICB9Cgl9LAoKCWdldF9hZGRyZXNzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoJICAgIHZhciByZXQgPSBudWxsOwoJICAgIGlmKCBzZWxmLm9wdGlvbnMuY29udGFjdF9pZCA8IDEgKSByZXR1cm47CgkgICAgLy8gZG8gYW4gYWpheCBjYWxsIHRvIGdldCB0aGUgZGF0YSBmb3IgdGhpcyBjb250YWN0CgkgICAgdmFyIHJlcWRhdGEgPSB7fTsKCSAgICByZXFkYXRhLmNvbnRhY3RfaWQgPSBzZWxmLm9wdGlvbnMuY29udGFjdF9pZDsKCSAgICAkLmFqYXgoewoJICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAoJICAgICAgICB1cmw6IHNlbGYuX2RhdGEuY29udGFjdF91cmwsCgkJZGF0YTogcmVxZGF0YSwKCQlhc3luYzogZmFsc2UsCgkJc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CgkJICAgIGlmKCB0eXBlb2YgcmVzLnN0YXR1cyAhPSAndW5kZWZpbmVkJyAmJiByZXMuc3RhdHVzID09ICdPSycgKSB7CgkJICAgICAgICByZXQgPSByZXMuZGF0YTsKCQkgICAgfQoJCX0KCSAgICB9KQoJICAgIHJldHVybiByZXQ7Cgl9LAoKICAgICAgCV9ub29wOiBmdW5jdGlvbigpIHt9CiAgICB9KTsKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/TODO</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MS4gUmVvcmRlciBjYXRzCjIuIFNpbXBsZSBBZGRyZXNzZXMgVGFiCjMuIEFkZHJlc3MgY2xhc3MKNC4gQWRkL0VkaXQgYWRkcmVzcwo1LiBEZWxldGUgQWRkcmVzcwo2LiBqcXVlcnkgcGx1Z2luCiAgICAgKGZvciBvdGhlciBtb2R1bGVzKQogICAgICQoJyNzb21lZmllbGQnKS5jZ0FkZHJlc3MoewogICAgICAgY2F0ZWdvcnk6ICdzb21lIHBhdGggb3IgaWQgb3Igc29tZSBzdHJpbmcnCiAgICAgICBmb3JtYXQ6ICAgJ3NvbWVfdGVtcGxhdGVfbmFtZScsCiAgICAgICBlZGl0YWJsZTogZmFsc2UsCiAgICAgICBjYW5fYWRkOiAgZmFsc2UKICAgICB9KQogICAgIC8vIGhhcyBidXR0b24gZm9yIGFkZAogICAgICAgIChwb3B1cCBqcXVlcnkgdWkgZGlhbG9nIHdpdGggcXVpY2sgYWRkL2VkaXQgZm9ybSkKICAgICAvLyB1c2VzIGF1dG8gY29tcGxldGUKICAgICAvLyBjYWxscyBhamF4IHRvIGZvcm1hdCB0aGUgZGlzcGxheQogICAgICAgIC8vIHNlYXJjaCBidXR0b24gdG8gc2VsZWN0IGRpZmZlcmVudCBhZGRyZXNzCiAgICAgICAgLy8gZG93bmxvYWQgdmNhcmQ/CgkvLyBtYWlsdG8gbGluawoJLy8gcGhvbmUgbGluayAoZm9yIG1vYmlsZSkKCS8vIGRpc2FibGVkIGNhbm5vdCBiZSBlZGl0ZWQgPz8KCglbZmllbGRdIFsrXQoKICAgICBbP11bZV0gR2VvcmdlLCBKb25lcyBbLV08IS0tIHZjYXJkIGRvd25sb2FkCiAgICAgMTIzLCBBbnl3aGVyZSBTdHJlZXQuCiAgICAgU29tZXdoZXJlLCBCQyBWMEIxTTAKICAgICBQaDogIDEyMyBTb21ld2hlcmUgU3QuCiAgICAgZW1haWw6IGpvbmVzLmdlb3JnZUBkb21haW4uY29tCg==]]></data>
	</file>
	<file>
	  <filename>/todo.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MS4gIFBhZ2luYXRpb24KMi4gIHN0eWxpbmcgZm9yIGNnY29udGFjdHNfc2VsCjMuICBEb2N1bWVudGF0aW9uCiAgICBqcXVlcnkuY2djb250YWN0c19zZWwKICAgIGpxdWVyeS5jZ2NvbnRhY3RzX2FkZAogICAgbGliL2NsYXNzLioucGhwCjQuICBGcm9udEVuZCBlZGl0IGZvcm0gKG5vdCBpbiBwcm9qZWN0IHNjb3BlKS4KNS4gIHZjYXJkIGV4cG9ydCAobm90IGluIHByb2plY3Qgc2NvcGUpCjYuICBhZG1pbiBxdWljayBmaW5kCjcuICBhZG1pbiBmaWx0ZXJpbmcK]]></data>
	</file>
	<file>
	  <filename>/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/Example.vcf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QkVHSU46VkNBUkQKVkVSU0lPTjozLjAKTjpEb2U7Sm9objtRLixQdWJsaWMKRk47Q0hBUlNFVD1VVEYtODpKb2huIERvZQpURUw7VFlQRT1XT1JLLFZPSUNFOigxMTEpIDU1NS0xMjEyClRFTDtUWVBFPUhPTUUsVk9JQ0U6KDQwNCkgNTU1LTEyMTIKVEVMO1RZUEU9SE9NRSxUWVBFPVZPSUNFOig0MDQpIDU1NS0xMjEzCkVNQUlMO1RZUEU9UFJFRixJTlRFUk5FVDpmb3JyZXN0Z3VtcEBleGFtcGxlLmNvbQpFTUFJTDtUWVBFPUlOVEVSTkVUOmV4YW1wbGVAZXhhbXBsZS5jb20KQURSO1RZUEU9SE9NRTo7OzQyIFBsYW50YXRpb24gU3QuO0JheXRvd247TEE7MzAzMTQ7VW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhClVSTDpodHRwczovL3d3dy5nb29nbGUuY29tLwpQSE9UTztWQUxVRT1VUkw7VFlQRT1QTkc6aHR0cDovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2EvYTUvRXhhbXBsZV9zdmcuc3ZnLzIwMHB4LUV4YW1wbGVfc3ZnLnN2Zy5wbmcKQUdFTlQ6QkVHSU46VkNBUkQKIFZFUlNJT046My4wCiBOOkRvZTtKb2huO1EuLFB1YmxpYwogRk46Sm9obiBEb2UKIFRFTDtUWVBFPVdPUkssVk9JQ0U6KDExMSkgNTU1LTEyMTIKIFRFTDtUWVBFPUhPTUUsVk9JQ0U6KDQwNCkgNTU1LTEyMTIKIFRFTDtUWVBFPUhPTUUsVFlQRT1WT0lDRTooNDA0KSA1NTUtMTIxMwogRU1BSUw7VFlQRT1QUkVGLElOVEVSTkVUOmZvcnJlc3RndW1wQGV4YW1wbGUuY29tCiBFTUFJTDtUWVBFPUlOVEVSTkVUOmV4YW1wbGVAZXhhbXBsZS5jb20KIFBIT1RPO1ZBTFVFPVVSTDtUWVBFPVBORzpodHRwOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYS9hNS9FeGFtcGxlX3N2Zy5zdmcvMjAwcHgtRXhhbXBsZV9zdmcuc3ZnLnBuZwogRU5EOlZDQVJECkVORDpWQ0FSRA==]]></data>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/Example2.1.vcf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QkVHSU46VkNBUkQKVkVSU0lPTjoyLjEKTjpHdW1wO0ZvcnJlc3QKRk46Rm9ycmVzdCBHdW1wCk9SRzpCdWJiYSBHdW1wIFNocmltcCBDby4KVElUTEU6U2hyaW1wIE1hbgpURUw7V09SSztWT0lDRTooMTExKSA1NTUtMTIxMgpURUw7SE9NRTtWT0lDRTooNDA0KSA1NTUtMTIxMgpBRFI7V09SSzo7OzEwMCBXYXRlcnMgRWRnZTtCYXl0b3duO0xBOzMwMzE0O1VuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYQpMQUJFTDtXT1JLO0VOQ09ESU5HPVFVT1RFRC1QUklOVEFCTEU6MTAwIFdhdGVycyBFZGdlPTBEPTBBQmF5dG93biwgTEEgMzAzMTQ9MEQ9MEFVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EKQURSO0hPTUU6Ozs0MiBQbGFudGF0aW9uIFN0LjtCYXl0b3duO0xBOzMwMzE0O1VuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYQpMQUJFTDtIT01FO0VOQ09ESU5HPVFVT1RFRC1QUklOVEFCTEU6NDIgUGxhbnRhdGlvbiBTdC49MEQ9MEFCYXl0b3duLCBMQSAzMDMxND0wRD0wQVVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYQpFTUFJTDtQUkVGO0lOVEVSTkVUO0hPTUU6Zm9ycmVzdGd1bXBAZXhhbXBsZS5jb20KUkVWOjIwMDgwNDI0VDE5NTI0M1oKRU5EOlZDQVJE]]></data>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/Example3.0.vcf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QkVHSU46VkNBUkQKVkVSU0lPTjozLjAKTjpHdW1wO0ZvcnJlc3QKRk46Rm9ycmVzdCBHdW1wCk9SRzpCdWJiYSBHdW1wIFNocmltcCBDby4KVElUTEU6U2hyaW1wIE1hbgpQSE9UTztWQUxVRT1VUkw7VFlQRT1HSUY6aHR0cDovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2EvYTUvRXhhbXBsZV9zdmcuc3ZnLzIwMHB4LUV4YW1wbGVfc3ZnLnN2Zy5wbmcKVEVMO1RZUEU9V09SSyxWT0lDRTooMTExKSA1NTUtMTIxMgpURUw7VFlQRT1IT01FLFZPSUNFOig0MDQpIDU1NS0xMjEyClRFTDtUWVBFPUhPTUUsVFlQRT1WT0lDRTooNDA0KSA1NTUtMTIxMwpBRFI7VFlQRT1XT1JLOjs7MTAwIFdhdGVycyBFZGdlO0JheXRvd247TEE7MzAzMTQ7VW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhCkxBQkVMO1RZUEU9V09SSzoxMDAgV2F0ZXJzIEVkZ2VcbkJheXRvd24sIExBIDMwMzE0XG5Vbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EKQURSO1RZUEU9SE9NRTo7OzQyIFBsYW50YXRpb24gU3QuO0JheXRvd247TEE7MzAzMTQ7VW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhCkxBQkVMO1RZUEU9SE9NRTo0MiBQbGFudGF0aW9uIFN0LlxuQmF5dG93biwgTEEgMzAzMTRcblVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYQpFTUFJTDtUWVBFPVBSRUYsSU5URVJORVQ6Zm9ycmVzdGd1bXBAZXhhbXBsZS5jb20KQUdFTlQ7VkFMVUU9dXJpOgogQ0lEOkpRUFVCTElDLnBhcnQzLjk2MDEyOVQwODMwMjAueHl6TWFpbEBob3N0My5jb20KQUdFTlQ6QkVHSU46VkNBUkQKIFZFUlNJT046My4wCiBOOkd1bXA7Rm9ycmVzdAogRk46Rm9ycmVzdCBHdW1wCiBPUkc6QnViYmEgR3VtcCBTaHJpbXAgQ28uCiBUSVRMRTpTaHJpbXAgTWFuCiBQSE9UTztWQUxVRT1VUkw7VFlQRT1HSUY6aHR0cDovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2EvYTUvRXhhbXBsZV9zdmcuc3ZnLzIwMHB4LUV4YW1wbGVfc3ZnLnN2Zy5wbmcKIFRFTDtUWVBFPVdPUkssVk9JQ0U6KDExMSkgNTU1LTEyMTIKIFRFTDtUWVBFPUhPTUUsVk9JQ0U6KDQwNCkgNTU1LTEyMTIKIFRFTDtUWVBFPUhPTUUsVFlQRT1WT0lDRTooNDA0KSA1NTUtMTIxMwogQURSO1RZUEU9V09SSzo7OzEwMCBXYXRlcnMgRWRnZTtCYXl0b3duO0xBOzMwMzE0O1VuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYQogTEFCRUw7VFlQRT1XT1JLOjEwMCBXYXRlcnMgRWRnZVxuQmF5dG93biwgTEEgMzAzMTRcblVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYQogQURSO1RZUEU9SE9NRTo7OzQyIFBsYW50YXRpb24gU3QuO0JheXRvd247TEE7MzAzMTQ7VW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhCiBMQUJFTDtUWVBFPUhPTUU6NDIgUGxhbnRhdGlvbiBTdC5cbkJheXRvd24sIExBIDMwMzE0XG5Vbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EKIEVNQUlMO1RZUEU9UFJFRixJTlRFUk5FVDpmb3JyZXN0Z3VtcEBleGFtcGxlLmNvbQogUkVWOjIwMDgwNDI0VDE5NTI0M1oKIEVORDpWQ0FSRApSRVY6MjAwODA0MjRUMTk1MjQzWgpFTkQ6VkNBUkQ=]]></data>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlCgpDb3B5cmlnaHQgKEMpIDIwMTIgTnVvdm8KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YKdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bwp1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZgp0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sCnN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUwpGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IKQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSCklOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCkNPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu]]></data>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TnVvdm8vTm91dmVhdSB2Q2FyZC1wYXJzZXIgaXMgYSBzaW1wbGUgdkNhcmQgZmlsZSBwYXJzZXIgd2l0aCB0aGUgZm9jdXMgb24gZWFzZSBvZiB1c2UuCgpUaGUgcGFyc2VyIHdhcyB3cml0dGVuIG1vc3RseSBiZWNhdXNlIEkgY291bGRuJ3QgZmluZCBvbmUgdGhhdCBJIHdhcyBzYXRpc2ZpZWQgd2l0aCAtIGFsbCB0aG9zZSB0aGF0IEkgdHJpZWQgZWl0aGVyIGZhaWxlZCB3aXRoIHJlYWwgd29ybGQgZGF0YSBvciB3ZXJlIHRvbyB1bndpZWxkeSBvciBpbmNvbnZlbmllbnQsIGhlbmNlIHRoaXMgcGFyc2VyLgoKVGhlIHBhcnNlciBjYW4gcmVhZCBib3RoIHNpbmdsZSBhbmQgbXVsdGlwbGUgdkNhcmRzIGZyb20gYSBzaW5nbGUgZmlsZSBhbmQgd2l0aCB0aGUgaGVscCBvZiBQSFAncyBtYWdpYyBtZXRob2RzIGFuZCBpbnRlcmZhY2VzIGl0IGNhbiBiZSB3cml0dGVuIGNvbmNpc2VseS4gRm9yIGV4YW1wbGU6CgogICAgaW5jbHVkZSgndkNhcmQucGhwJyk7CiAgICAkdkNhcmQgPSBuZXcgdkNhcmQoJ0V4YW1wbGUzLjAudmNmJyk7CgpHZXQgdGhlIG51bWJlciBvZiB2Q2FyZHMgaW4gdGhlIGZpbGUKCiAgICBlY2hvIGNvdW50KCR2Q2FyZCk7CgpJbiB0aGUgc2luZ2xlLXZDYXJkIG1vZGUgZXZlcnkgZWxlbWVudCBpcyBhY2Nlc3NpYmxlIGRpcmVjdGx5LgoKICAgIGlmIChjb3VudCgkdkNhcmQpID09IDEpCiAgICB7CiAgICAgICAgcHJpbnRfcigkdkNhcmQgLT4gbik7CiAgICAgICAgcHJpbnRfcigkdkNhcmQgLT4gdGVsKTsKICAgIH0KCkluIHRoZSBtdWx0aXBsZS12Q2FyZCBtb2RlIHRoZSBvYmplY3QgY2FuIGJlIHVzZWQgYXMgYW4gYXJyYXkgdG8gcmV0cmlldmUgc2VwYXJhdGUgdkNhcmQgb2JqZWN0cyBmb3IgZWFjaCB2Q2FyZCBpbiB0aGUgZmlsZS4KCiAgICBlbHNlCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHZDYXJkIGFzICR2Q2FyZFBhcnQpCiAgICAgICAgewogICAgICAgICAgICBwcmludF9yKCR2Q2FyZFBhcnQgLT4gbik7CiAgICAgICAgICAgIHByaW50X3IoJHZDYXJkUGFydCAtPiB0ZWwpOwogICAgICAgIH0KICAgIH0KCkV2ZXJ5IHZDYXJkIGVsZW1lbnQgaXMgYWNjZXNzaWJsZSBhcyBhbiBvYmplY3QgbWVtYmVyIGJ5IHRoZSB2Q2FyZCBlbGVtZW50IG5hbWUuIEV2ZXJ5IGVsZW1lbnQgaXMgYW4gYXJyYXkgd2l0aCB0aGUgZGF0YSBwYXJzZWQgb3V0IG9mIHRoZSBmaWxlLgpJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGFuIG9wdGlvbiB0byB0aGUgdkNhcmQgY29uc3RydWN0b3IgdGhhdCB3aWxsIGxldCB5b3UgYWNjZXNzIGV2ZXJ5IGVsZW1lbnQgYXMgYSBzaW5nbGUgdmFsdWUgaW4gY2FzZXMgd2hlcmUgdGhlcmUgaXMganVzdCBvbmUgdmFsdWUsIGUuZy46CgogICAgJHZDYXJkID0gbmV3IHZDYXJkKCdFeGFtcGxlMy4wLnZjZicsIGZhbHNlLCBhcnJheSgnQ29sbGFwc2UnID0+IHRydWUpKTsKCk1vcmUgb24gdXNhZ2UgaW4gW3RoZSB3aWtpXShodHRwczovL2dpdGh1Yi5jb20vbnVvdm8vdkNhcmQtcGFyc2VyL3dpa2kpCgpTZWUgYWxzbzoKKiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNDI1IC0gQSBNSU1FIENvbnRlbnQtVHlwZSBmb3IgRGlyZWN0b3J5IEluZm9ybWF0aW9uCiogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjQyNiAtIHZDYXJkIE1JTUUgZGlyZWN0b3J5IHByb2ZpbGUKKiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0NzcwIC0gdkNhcmQgRXh0ZW5zaW9ucyBmb3IgSW5zdGFudCBNZXNzYWdpbmcgKElNKQoKVE9ET3MgcGxhbm5lZDoKKiBBZGQgc3VwcG9ydCBmb3Igbm9uLXN0YW5kYXJkICgiWC0uLi4iKSBlbGVtZW50czsKCmh0dHA6Ly93d3cubnVvdm8ubHY=]]></data>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+ICAgCjxodG1sPgo8aGVhZD4KCTxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgoJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCWJvZHkKCXsKCQlmb250LWZhbWlseTogQ29yYmVsLCBBcmlhbCwgc2Fucy1zZXJpZjsKCQlwYWRkaW5nOiAyMHB4IDUwcHg7Cgl9CglkaXYuQWdlbnQKCXsKCQlwYWRkaW5nOiAyMHB4OwoJCWJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CgkJYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTsKCX0KCWltZwoJewoJCWZsb2F0OiByaWdodDsKCQltYXJnaW46IDEwcHg7CgkJcGFkZGluZzogMTBweDsKCQlib3JkZXI6IDFweCBzb2xpZCAjZGRkOwoJfQoJPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCjw/cGhwCglyZXF1aXJlX29uY2UoJ3ZDYXJkLnBocCcpOwoKCS8qKgoJICogVGVzdCBmdW5jdGlvbiBmb3IgdkNhcmQgY29udGVudCBvdXRwdXQKCSAqIEBwYXJhbSB2Q2FyZCB2Q2FyZCBvYmplY3QKCSAqLwoJZnVuY3Rpb24gT3V0cHV0dkNhcmQodkNhcmQgJHZDYXJkKQoJewoJCWVjaG8gJzxoMj4nLiR2Q2FyZCAtPiBGTlswXS4nPC9oMj4nOwoKCQlpZiAoJHZDYXJkIC0+IFBIT1RPKQoJCXsKCQkJZm9yZWFjaCAoJHZDYXJkIC0+IFBIT1RPIGFzICRQaG90bykKCQkJewoJCQkJaWYgKCRQaG90b1snRW5jb2RpbmcnXSA9PSAnYicpCgkJCQl7CgkJCQkJZWNobyAnPGltZyBzcmM9ImRhdGE6aW1hZ2UvJy4kUGhvdG9bJ1R5cGUnXVswXS4nO2Jhc2U2NCwnLiRQaG90b1snVmFsdWUnXS4nIiAvPjxiciAvPic7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJZWNobyAnPGltZyBzcmM9IicuJFBob3RvWydWYWx1ZSddLiciIC8+PGJyIC8+JzsKCQkJCX0KCgkJCQkvKgoJCQkJLy8gSXQgY2FuIGFsc28gYmUgc2F2ZWQgdG8gYSBmaWxlCgkJCQl0cnkKCQkJCXsKCQkJCQkkdkNhcmQgLT4gU2F2ZUZpbGUoJ3Bob3RvJywgMCwgJ3Rlc3RfaW1hZ2UuanBnJyk7CgkJCQkJLy8gVGhlIHBhcmFtZXRlcnMgYXJlOgoJCQkJCS8vCS0gbmFtZSBvZiB0aGUgZmlsZSB3ZSB3YW50IHRvIHNhdmUgKHBob3RvLCBsb2dvIG9yIHNvdW5kKQoJCQkJCS8vCS0gaW5kZXggb2YgdGhlIGZpbGUgaW4gY2FzZSBvZiBtdWx0aXBsZSBmaWxlcyAoZGVmYXVsdHMgdG8gMCkKCQkJCQkvLwktIHRhcmdldCBwYXRoIHRvIHNhdmUgdG8sIGluY2x1ZGluZyB0aGUgZmlsZW5hbQoJCQkJfQoJCQkJY2F0Y2ggKEV4Y2VwdGlvbiAkRSkKCQkJCXsKCQkJCQkvLyBUYXJnZXQgcGF0aCBub3Qgd3JpdGFibGUKCQkJCX0KCQkJCSovCgkJCX0KCQl9CgoJCWZvcmVhY2ggKCR2Q2FyZCAtPiBOIGFzICROYW1lKQoJCXsKCQkJZWNobyAnPGgzPk5hbWU6ICcuJE5hbWVbJ0ZpcnN0TmFtZSddLicgJy4kTmFtZVsnTGFzdE5hbWUnXS4nPC9oMz4nOwoJCX0KCgkJZm9yZWFjaCAoJHZDYXJkIC0+IE9SRyBhcyAkT3JnYW5pemF0aW9uKQoJCXsKCQkJZWNobyAnPGgzPk9yZ2FuaXphdGlvbjogJy4kT3JnYW5pemF0aW9uWydOYW1lJ10uCgkJCQkoJE9yZ2FuaXphdGlvblsnVW5pdDEnXSB8fCAkT3JnYW5pemF0aW9uWydVbml0MiddID8KCQkJCQknICgnLmltcGxvZGUoJywgJywgYXJyYXkoJE9yZ2FuaXphdGlvblsnVW5pdDEnXSwgJE9yZ2FuaXphdGlvblsnVW5pdDInXSkpLicpJyA6CgkJCQkJJycKCQkJCSkuJzwvaDM+JzsKCQl9CgoJCWlmICgkdkNhcmQgLT4gVEVMKQoJCXsKCQkJZWNobyAnPHA+PGg0PlBob25lPC9oND4nOwoJCQlmb3JlYWNoICgkdkNhcmQgLT4gVEVMIGFzICRUZWwpCgkJCXsKCQkJCWlmIChpc19zY2FsYXIoJFRlbCkpCgkJCQl7CgkJCQkJZWNobyAkVGVsLic8YnIgLz4nOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJFRlbFsnVmFsdWUnXS4nICgnLmltcGxvZGUoJywgJywgJFRlbFsnVHlwZSddKS4nKTxiciAvPic7CgkJCQl9CgkJCX0KCQkJZWNobyAnPC9wPic7CgkJfQoKCQlpZiAoJHZDYXJkIC0+IEVNQUlMKQoJCXsKCQkJZWNobyAnPHA+PGg0PkVtYWlsPC9oND4nOwoJCQlmb3JlYWNoICgkdkNhcmQgLT4gRU1BSUwgYXMgJEVtYWlsKQoJCQl7CgkJCQlpZiAoaXNfc2NhbGFyKCRFbWFpbCkpCgkJCQl7CgkJCQkJZWNobyAkRW1haWw7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJZWNobyAkRW1haWxbJ1ZhbHVlJ10uJyAoJy5pbXBsb2RlKCcsICcsICRFbWFpbFsnVHlwZSddKS4nKTxiciAvPic7CgkJCQl9CgkJCX0KCQkJZWNobyAnPC9wPic7CgkJfQoKCQlpZiAoJHZDYXJkIC0+IFVSTCkKCQl7CgkJCWVjaG8gJzxwPjxoND5VUkw8L2g0Pic7CgkJCWZvcmVhY2ggKCR2Q2FyZCAtPiBVUkwgYXMgJFVSTCkKCQkJewoJCQkJaWYgKGlzX3NjYWxhcigkVVJMKSkKCQkJCXsKCQkJCQllY2hvICRVUkwuJzxiciAvPic7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJZWNobyAkVVJMWydWYWx1ZSddLic8YnIgLz4nOwoJCQkJfQoJCQl9CgkJCWVjaG8gJzwvcD4nOwoJCX0KCgkJaWYgKCR2Q2FyZCAtPiBJTVBQKQoJCXsKCQkJZWNobyAnPHA+PGg0Pkluc3RhbnQgbWVzc2FnaW5nPC9oND4nOwoJCQlmb3JlYWNoICgkdkNhcmQgLT4gSU1QUCBhcyAkSU1QUCkKCQkJewoJCQkJaWYgKGlzX3NjYWxhcigkSU1QUCkpCgkJCQl7CgkJCQkJZWNobyAkSU1QUC4nPGJyIC8+JzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICRJTVBQWydWYWx1ZSddLic8YnIvID4nOwoJCQkJfQoJCQl9CgkJCWVjaG8gJzwvcD4nOwoJCX0KCgkJaWYgKCR2Q2FyZCAtPiBBRFIpCgkJewoJCQlmb3JlYWNoICgkdkNhcmQgLT4gQURSIGFzICRBZGRyZXNzKQoJCQl7CgkJCQllY2hvICc8cD48aDQ+QWRkcmVzcyAoJy5pbXBsb2RlKCcsICcsICRBZGRyZXNzWydUeXBlJ10pLicpPC9oND4nOwoJCQkJZWNobyAnU3RyZWV0IGFkZHJlc3M6IDxzdHJvbmc+Jy4oJEFkZHJlc3NbJ1N0cmVldEFkZHJlc3MnXSA/ICRBZGRyZXNzWydTdHJlZXRBZGRyZXNzJ10gOiAnLScpLic8L3N0cm9uZz48YnIgLz4nLgoJCQkJCSdQTyBCb3g6IDxzdHJvbmc+Jy4oJEFkZHJlc3NbJ1BPQm94J10gPyAkQWRkcmVzc1snUE9Cb3gnXSA6ICctJykuJzwvc3Ryb25nPjxiciAvPicuCgkJCQkJJ0V4dGVuZGVkIGFkZHJlc3M6IDxzdHJvbmc+Jy4oJEFkZHJlc3NbJ0V4dGVuZGVkQWRkcmVzcyddID8gJEFkZHJlc3NbJ0V4dGVuZGVkQWRkcmVzcyddIDogJy0nKS4nPC9zdHJvbmc+PGJyIC8+Jy4KCQkJCQknTG9jYWxpdHk6IDxzdHJvbmc+Jy4oJEFkZHJlc3NbJ0xvY2FsaXR5J10gPyAkQWRkcmVzc1snTG9jYWxpdHknXSA6ICctJykuJzwvc3Ryb25nPjxiciAvPicuCgkJCQkJJ1JlZ2lvbjogPHN0cm9uZz4nLigkQWRkcmVzc1snUmVnaW9uJ10gPyAkQWRkcmVzc1snUmVnaW9uJ10gOiAnLScpLic8L3N0cm9uZz48YnIgLz4nLgoJCQkJCSdaSVAvUG9zdCBjb2RlOiA8c3Ryb25nPicuKCRBZGRyZXNzWydQb3N0YWxDb2RlJ10gPyAkQWRkcmVzc1snUG9zdGFsQ29kZSddIDogJy0nKS4nPC9zdHJvbmc+PGJyIC8+Jy4KCQkJCQknQ291bnRyeTogPHN0cm9uZz4nLigkQWRkcmVzc1snQ291bnRyeSddID8gJEFkZHJlc3NbJ0NvdW50cnknXSA6ICctJykuJzwvc3Ryb25nPic7CgkJCX0KCQkJZWNobyAnPC9wPic7CgkJfQoKCQlpZiAoJHZDYXJkIC0+IEFHRU5UKQoJCXsKCQkJZWNobyAnPGg0PkFnZW50czwvaDQ+JzsKCQkJZm9yZWFjaCAoJHZDYXJkIC0+IEFHRU5UIGFzICRBZ2VudCkKCQkJewoJCQkJaWYgKGlzX3NjYWxhcigkQWdlbnQpKQoJCQkJewoJCQkJCWVjaG8gJzxkaXYgY2xhc3M9IkFnZW50Ij4nLiRBZ2VudC4nPC9kaXY+JzsKCQkJCX0KCQkJCWVsc2VpZiAoaXNfYSgkQWdlbnQsICd2Q2FyZCcpKQoJCQkJewoJCQkJCWVjaG8gJzxkaXYgY2xhc3M9IkFnZW50Ij4nOwoJCQkJCU91dHB1dHZDYXJkKCRBZ2VudCk7CgkJCQkJZWNobyAnPC9kaXY+JzsKCQkJCX0KCQkJfQoJCX0KCX0KCgkkdkNhcmQgPSBuZXcgdkNhcmQoCgkJJ0V4YW1wbGUzLjAudmNmJywgLy8gUGF0aCB0byB2Q2FyZCBmaWxlCgkJZmFsc2UsIC8vIFJhdyB2Q2FyZCB0ZXh0LCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIGEgZmlsZQoJCWFycmF5KCAvLyBPcHRpb24gYXJyYXkKCQkJLy8gVGhpcyBsZXRzIHlvdSBnZXQgc2luZ2xlIHZhbHVlcyBmb3IgZWxlbWVudHMgdGhhdCBjb3VsZCBjb250YWluIG11bHRpcGxlIHZhbHVlcyBidXQgaGF2ZSBvbmx5IG9uZSB2YWx1ZS4KCQkJLy8JVGhpcyBkZWZhdWx0cyB0byBmYWxzZSBzbyBldmVyeSB2YWx1ZSB0aGF0IGNvdWxkIGhhdmUgbXVsdGlwbGUgdmFsdWVzIGlzIHJldHVybmVkIGFzIGFycmF5LgoJCQknQ29sbGFwc2UnID0+IGZhbHNlCgkJKQoJKTsKCglpZiAoY291bnQoJHZDYXJkKSA9PSAwKQoJewoJCXRocm93IG5ldyBFeGNlcHRpb24oJ3ZDYXJkIHRlc3Q6IGVtcHR5IHZDYXJkIScpOwoJfQoJLy8gaWYgdGhlIGZpbGUgY29udGFpbnMgYSBzaW5nbGUgdkNhcmQsIGl0IGlzIGFjY2Vzc2libGUgZGlyZWN0bHkuCgllbHNlaWYgKGNvdW50KCR2Q2FyZCkgPT0gMSkKCXsKCQlPdXRwdXR2Q2FyZCgkdkNhcmQpOwoJfQoJLy8gaWYgdGhlIGZpbGUgY29udGFpbnMgbXVsdGlwbGUgdkNhcmRzLCB0aGV5IGFyZSBhY2Nlc3NpYmxlIGFzIGVsZW1lbnRzIG9mIGFuIGFycmF5CgllbHNlCgl7CgkJZm9yZWFjaCAoJHZDYXJkIGFzICRJbmRleCA9PiAkdkNhcmRQYXJ0KQoJCXsKCQkJT3V0cHV0dkNhcmQoJHZDYXJkUGFydCk7CgkJfQoJfQo/Pgo8L2JvZHk+CjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/vCard.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIHZDYXJkIGNsYXNzIGZvciBwYXJzaW5nIGEgdkNhcmQgYW5kL29yIGNyZWF0aW5nIG9uZQogKgogKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vbnVvdm8vdkNhcmQtcGFyc2VyCiAqIEBhdXRob3IgTWFydGlucyBQaWxzZXRuaWVrcywgUm9iZXJ0cyBCcnV2ZXJpcwogKiBAc2VlIFJGQyAyNDI2LCBSRkMgMjQyNQogKiBAdmVyc2lvbiAwLjQuOAoqLwoJY2xhc3MgdkNhcmQgaW1wbGVtZW50cyBDb3VudGFibGUsIEl0ZXJhdG9yCgl7CgkJY29uc3QgTU9ERV9FUlJPUiA9ICdlcnJvcic7CgkJY29uc3QgTU9ERV9TSU5HTEUgPSAnc2luZ2xlJzsKCQljb25zdCBNT0RFX01VTFRJUExFID0gJ211bHRpcGxlJzsKCgkJY29uc3QgZW5kbCA9ICJcbiI7CgoJCS8qKgoJCSAqIEB2YXIgc3RyaW5nIEN1cnJlbnQgb2JqZWN0IG1vZGUgLSBlcnJvciwgc2luZ2xlIG9yIG11bHRpcGxlIChmb3IgYSBzaW5nbGUgdkNhcmQgd2l0aGluIGEgZmlsZSBhbmQgbXVsdGlwbGUgY29tYmluZWQgdkNhcmRzKQoJCSAqLwoJCXByaXZhdGUgJE1vZGU7ICAvL3NpbmdsZSwgbXVsdGlwbGUsIGVycm9yCgoJCXByaXZhdGUgJFBhdGggPSAnJzsKCQlwcml2YXRlICRSYXdEYXRhID0gJyc7CgoJCS8qKgoJCSAqIEB2YXIgYXJyYXkgSW50ZXJuYWwgb3B0aW9ucyBjb250YWluZXIuIE9wdGlvbnM6CgkJICoJYm9vbCBDb2xsYXBzZTogSWYgdHJ1ZSwgZWxlbWVudHMgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZSB2YWx1ZXMgYnV0IGhhdmUgb25seSBhIHNpbmdsZSB2YWx1ZSBhcmUgcmV0dXJuZWQgYXMgdGhhdCB2YWx1ZSBpbnN0ZWFkIG9mIGFuIGFycmF5CgkJICoJCUlmIGZhbHNlLCBhbiBhcnJheSBpcyByZXR1cm5lZCBldmVuIGlmIGl0IGhhcyBvbmx5IG9uZSB2YWx1ZS4KCQkgKi8KCQlwcml2YXRlICRPcHRpb25zID0gYXJyYXkoCgkJCSdDb2xsYXBzZScgPT4gZmFsc2UKCQkpOwoKCQkvKioKCQkgKiBAdmFyIGFycmF5IEludGVybmFsIGRhdGEgY29udGFpbmVyLiBDb250YWlucyB2Q2FyZCBvYmplY3RzIGZvciBtdWx0aXBsZSB2Q2FyZHMgYW5kIGp1c3QgdGhlIGRhdGEgZm9yIHNpbmdsZSB2Q2FyZHMuCgkJICovCgkJcHJpdmF0ZSAkRGF0YSA9IGFycmF5KCk7CgoJCS8qKgoJCSAqIEBzdGF0aWMgUGFydHMgb2Ygc3RydWN0dXJlZCBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCgkJICovCgkJcHJpdmF0ZSBzdGF0aWMgJFNwZWNfU3RydWN0dXJlZEVsZW1lbnRzID0gYXJyYXkoCgkJCSduJyA9PiBhcnJheSgnTGFzdE5hbWUnLCAnRmlyc3ROYW1lJywgJ0FkZGl0aW9uYWxOYW1lcycsICdQcmVmaXhlcycsICdTdWZmaXhlcycpLAoJCQknYWRyJyA9PiBhcnJheSgnUE9Cb3gnLCAnRXh0ZW5kZWRBZGRyZXNzJywgJ1N0cmVldEFkZHJlc3MnLCAnTG9jYWxpdHknLCAnUmVnaW9uJywgJ1Bvc3RhbENvZGUnLCAnQ291bnRyeScpLAoJCQknZ2VvJyA9PiBhcnJheSgnTGF0aXR1ZGUnLCAnTG9uZ2l0dWRlJyksCgkJCSdvcmcnID0+IGFycmF5KCdOYW1lJywgJ1VuaXQxJywgJ1VuaXQyJykKCQkpOwoJCXByaXZhdGUgc3RhdGljICRTcGVjX011bHRpcGxlVmFsdWVFbGVtZW50cyA9IGFycmF5KCduaWNrbmFtZScsICdjYXRlZ29yaWVzJyk7CgoJCXByaXZhdGUgc3RhdGljICRTcGVjX0VsZW1lbnRUeXBlcyA9IGFycmF5KAoJCQknZW1haWwnID0+IGFycmF5KCdpbnRlcm5ldCcsICd4NDAwJywgJ3ByZWYnLCAnaG9tZScsICd3b3JrJyksCgkJCSdhZHInID0+IGFycmF5KCdkb20nLCAnaW50bCcsICdwb3N0YWwnLCAncGFyY2VsJywgJ2hvbWUnLCAnd29yaycsICdwcmVmJyksCgkJCSdsYWJlbCcgPT4gYXJyYXkoJ2RvbScsICdpbnRsJywgJ3Bvc3RhbCcsICdwYXJjZWwnLCAnaG9tZScsICd3b3JrJywgJ3ByZWYnKSwKCQkJJ3RlbCcgPT4gYXJyYXkoJ2hvbWUnLCAnbXNnJywgJ3dvcmsnLCAncHJlZicsICd2b2ljZScsICdmYXgnLCAnY2VsbCcsICd2aWRlbycsICdwYWdlcicsICdiYnMnLCAnbW9kZW0nLCAnY2FyJywgJ2lzZG4nLCAncGNzJyksCgkJCSdpbXBwJyA9PiBhcnJheSgncGVyc29uYWwnLCAnYnVzaW5lc3MnLCAnaG9tZScsICd3b3JrJywgJ21vYmlsZScsICdwcmVmJykKCQkpOwoKCQlwcml2YXRlIHN0YXRpYyAkU3BlY19GaWxlRWxlbWVudHMgPSBhcnJheSgncGhvdG8nLCAnbG9nbycsICdzb3VuZCcpOwoKCQkvKioKCQkgKiB2Q2FyZCBjb25zdHJ1Y3RvcgoJCSAqCgkJICogQHBhcmFtIHN0cmluZyBQYXRoIHRvIGZpbGUsIG9wdGlvbmFsLgoJCSAqIEBwYXJhbSBzdHJpbmcgUmF3IGRhdGEsIG9wdGlvbmFsLgoJCSAqIEBwYXJhbSBhcnJheSBBZGRpdGlvbmFsIG9wdGlvbnMsIG9wdGlvbmFsLiBDdXJyZW50bHkgc3VwcG9ydGVkIG9wdGlvbnM6CgkJICoJYm9vbCBDb2xsYXBzZTogSWYgdHJ1ZSwgZWxlbWVudHMgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZSB2YWx1ZXMgYnV0IGhhdmUgb25seSBhIHNpbmdsZSB2YWx1ZSBhcmUgcmV0dXJuZWQgYXMgdGhhdCB2YWx1ZSBpbnN0ZWFkIG9mIGFuIGFycmF5CgkJICoJCUlmIGZhbHNlLCBhbiBhcnJheSBpcyByZXR1cm5lZCBldmVuIGlmIGl0IGhhcyBvbmx5IG9uZSB2YWx1ZS4KCQkgKgoJCSAqIE9uZSBvZiB0aGVzZSBwYXJhbWV0ZXJzIG11c3QgYmUgcHJvdmlkZWQsIG90aGVyd2lzZSBhbiBleGNlcHRpb24gaXMgdGhyb3duLgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkUGF0aCA9IGZhbHNlLCAkUmF3RGF0YSA9IGZhbHNlLCBhcnJheSAkT3B0aW9ucyA9IG51bGwpCgkJewoJCQkvLyBDaGVja2luZyBwcmVjb25kaXRpb25zIGZvciB0aGUgcGFyc2VyLgoJCQkvLyBJZiBwYXRoIGlzIGdpdmVuLCB0aGUgZmlsZSBzaG91bGQgYmUgYWNjZXNzaWJsZS4KCQkJLy8gSWYgcmF3IGRhdGEgaXMgZ2l2ZW4sIGl0IGlzIHRha2VuIGFzIGl0IGlzLgoJCQkvLyBJbiBib3RoIGNhc2VzIHRoZSByZWFsIGNvbnRlbnQgaXMgcHV0IGluICR0aGlzIC0+IFJhd0RhdGEKCQkJaWYgKCRQYXRoKQoJCQl7CgkJCQlpZiAoIWlzX3JlYWRhYmxlKCRQYXRoKSkKCQkJCXsKCQkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCd2Q2FyZDogUGF0aCBub3QgYWNjZXNzaWJsZSAoJy4kUGF0aC4nKScpOwoJCQkJfQoKCQkJCSR0aGlzIC0+IFBhdGggPSAkUGF0aDsKCQkJCSR0aGlzIC0+IFJhd0RhdGEgPSBmaWxlX2dldF9jb250ZW50cygkdGhpcyAtPiBQYXRoKTsKCQkJfQoJCQllbHNlaWYgKCRSYXdEYXRhKQoJCQl7CgkJCQkkdGhpcyAtPiBSYXdEYXRhID0gJFJhd0RhdGE7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkvL3Rocm93IG5ldyBFeGNlcHRpb24oJ3ZDYXJkOiBObyBjb250ZW50IHByb3ZpZGVkJyk7CgkJCQkvLyBOb3QgbmVjZXNzYXJ5IGFueW1vcmUgYXMgcG9zc2liaWxpdHkgdG8gY3JlYXRlIHZDYXJkcyBpcyBhZGRlZAoJCQl9CgoJCQlpZiAoISR0aGlzIC0+IFBhdGggJiYgISR0aGlzIC0+IFJhd0RhdGEpCgkJCXsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgoJCQlpZiAoJE9wdGlvbnMpCgkJCXsKCQkJCSR0aGlzIC0+IE9wdGlvbnMgPSBhcnJheV9tZXJnZSgkdGhpcyAtPiBPcHRpb25zLCAkT3B0aW9ucyk7CgkJCX0KCgkJCS8vIENvdW50aW5nIHRoZSBiZWdpbi9lbmQgc2VwYXJhdG9ycy4gSWYgdGhlcmUgYXJlbid0IGFueSBvciB0aGUgY291bnQgZG9lc24ndCBtYXRjaCwgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGZpbGUuCgkJCS8vIElmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGlzIGlzIGEgc2luZ2xlIHZDYXJkLCBpZiBtb3JlLCBtdWx0aXBsZSB2Q2FyZHMgYXJlIGNvbWJpbmVkLgoJCQkkTWF0Y2hlcyA9IGFycmF5KCk7CgkJCSR2Q2FyZEJlZ2luQ291bnQgPSBwcmVnX21hdGNoX2FsbCgne15CRUdJTlw6VkNBUkR9bWlTJywgJHRoaXMgLT4gUmF3RGF0YSwgJE1hdGNoZXMpOwoJCQkkdkNhcmRFbmRDb3VudCA9IHByZWdfbWF0Y2hfYWxsKCd7XkVORFw6VkNBUkR9bWlTJywgJHRoaXMgLT4gUmF3RGF0YSwgJE1hdGNoZXMpOwoKCQkJaWYgKCgkdkNhcmRCZWdpbkNvdW50ICE9ICR2Q2FyZEVuZENvdW50KSB8fCAhJHZDYXJkQmVnaW5Db3VudCkKCQkJewoJCQkJJHRoaXMgLT4gTW9kZSA9IHZDYXJkOjpNT0RFX0VSUk9SOwoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigndkNhcmQ6IGludmFsaWQgdkNhcmQnKTsKCQkJfQoKCQkJJHRoaXMgLT4gTW9kZSA9ICR2Q2FyZEJlZ2luQ291bnQgPT0gMSA/IHZDYXJkOjpNT0RFX1NJTkdMRSA6IHZDYXJkOjpNT0RFX01VTFRJUExFOwoKCQkJLy8gUmVtb3ZpbmcvY2hhbmdpbmcgaW5hcHByb3ByaWF0ZSBuZXdsaW5lcywgaS5lLiwgYWxsIENScyBvciBtdWx0aXBsZSBuZXdsaW5lcyBhcmUgY2hhbmdlZCB0byBhIHNpbmdsZSBuZXdsaW5lCgkJCSR0aGlzIC0+IFJhd0RhdGEgPSBzdHJfcmVwbGFjZSgiXHIiLCAiXG4iLCAkdGhpcyAtPiBSYXdEYXRhKTsKCQkJJHRoaXMgLT4gUmF3RGF0YSA9IHByZWdfcmVwbGFjZSgneyhcbispfScsICJcbiIsICR0aGlzIC0+IFJhd0RhdGEpOwoKCQkJLy8gSW4gbXVsdGlwbGUgY2FyZCBtb2RlIHRoZSByYXcgdGV4dCBpcyBzcGxpdCBhdCBjYXJkIGJlZ2lubmluZyBtYXJrZXJzIGFuZCBlYWNoCgkJCS8vCWZyYWdtZW50IGlzIHBhcnNlZCBpbiBhIHNlcGFyYXRlIHZDYXJkIG9iamVjdC4KCQkJaWYgKCR0aGlzIC0+IE1vZGUgPT0gc2VsZjo6TU9ERV9NVUxUSVBMRSkKCQkJewoJCQkJJHRoaXMgLT4gUmF3RGF0YSA9IGV4cGxvZGUoJ0JFR0lOOlZDQVJEJywgJHRoaXMgLT4gUmF3RGF0YSk7CgkJCQkkdGhpcyAtPiBSYXdEYXRhID0gYXJyYXlfZmlsdGVyKCR0aGlzIC0+IFJhd0RhdGEpOwoKCQkJCWZvcmVhY2ggKCR0aGlzIC0+IFJhd0RhdGEgYXMgJFNpbmdsZXZDYXJkUmF3RGF0YSkKCQkJCXsKCQkJCQkvLyBQcmVwZW5kaW5nICJCRUdJTjpWQ0FSRCIgdG8gdGhlIHJhdyBzdHJpbmcgYmVjYXVzZSB3ZSBleHBsb2RlZCBvbiB0aGF0IG9uZS4KCQkJCQkvLyBJZiB0aGVyZSB3b24ndCBiZSB0aGUgQkVHSU4gbWFya2VyIGluIHRoZSBuZXcgb2JqZWN0LCBpdCB3aWxsIGZhaWwuCgkJCQkJJFNpbmdsZXZDYXJkUmF3RGF0YSA9ICdCRUdJTjpWQ0FSRCcuIlxuIi4kU2luZ2xldkNhcmRSYXdEYXRhOwoKCQkJCQkkQ2xhc3NOYW1lID0gZ2V0X2NsYXNzKCR0aGlzKTsKCQkJCQkkdGhpcyAtPiBEYXRhW10gPSBuZXcgJENsYXNzTmFtZShmYWxzZSwgJFNpbmdsZXZDYXJkUmF3RGF0YSk7CgkJCQl9CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkvLyBQcm90ZWN0IHRoZSBCQVNFNjQgZmluYWwgPSBzaWduIChkZXRlY3RlZCBieSB0aGUgbGluZSBiZWdpbm5pbmcgd2l0aCB3aGl0ZXNwYWNlKSwgb3RoZXJ3aXNlIHRoZSBuZXh0IHJlcGxhY2Ugd2lsbCBnZXQgcmlkIG9mIGl0CgkJCQkkdGhpcyAtPiBSYXdEYXRhID0gcHJlZ19yZXBsYWNlKCd7KFxuXHMuKyk9KFxuKX0nLCAnJDEtYmFzZTY0PS0kMicsICR0aGlzIC0+IFJhd0RhdGEpOwoKCQkJCS8vIEpvaW5pbmcgbXVsdGlwbGUgbGluZXMgdGhhdCBhcmUgc3BsaXQgd2l0aCBhIGhhcmQgd3JhcCBhbmQgaW5kaWNhdGVkIGJ5IGFuIGVxdWFscyBzaWduIGF0IHRoZSBlbmQgb2YgbGluZQoJCQkJLy8gKHF1b3RlZC1wcmludGFibGUtZW5jb2RlZCB2YWx1ZXMgaW4gdjIuMSB2Q2FyZHMpCgkJCQkkdGhpcyAtPiBSYXdEYXRhID0gc3RyX3JlcGxhY2UoIj1cbiIsICcnLCAkdGhpcyAtPiBSYXdEYXRhKTsKCgkJCQkvLyBKb2luaW5nIG11bHRpcGxlIGxpbmVzIHRoYXQgYXJlIHNwbGl0IHdpdGggYSBzb2Z0IHdyYXAgKHNwYWNlIG9yIHRhYiBvbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUKCQkJCSR0aGlzIC0+IFJhd0RhdGEgPSBzdHJfcmVwbGFjZShhcnJheSgiXG4gIiwgIlxuXHQiKSwgJy13cmFwLScsICR0aGlzIC0+IFJhd0RhdGEpOwoKCQkJCS8vIFJlc3RvcmluZyB0aGUgQkFTRTY0IGZpbmFsIGVxdWFscyBzaWduIChzZWUgYSBmZXcgbGluZXMgYWJvdmUpCgkJCQkkdGhpcyAtPiBSYXdEYXRhID0gc3RyX3JlcGxhY2UoIi1iYXNlNjQ9LVxuIiwgIj1cbiIsICR0aGlzIC0+IFJhd0RhdGEpOwoKCQkJCSRMaW5lcyA9IGV4cGxvZGUoIlxuIiwgJHRoaXMgLT4gUmF3RGF0YSk7CgoJCQkJZm9yZWFjaCAoJExpbmVzIGFzICRMaW5lKQoJCQkJewoJCQkJCS8vIExpbmVzIHdpdGhvdXQgY29sb25zIGFyZSBza2lwcGVkIGJlY2F1c2UsIG1vc3QgbGlrZWx5LCB0aGV5IGNvbnRhaW4gbm8gZGF0YS4KCQkJCQlpZiAoc3RycG9zKCRMaW5lLCAnOicpID09PSBmYWxzZSkKCQkJCQl7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCgkJCQkJLy8gRWFjaCBsaW5lIGlzIHNwbGl0IGludG8gdHdvIHBhcnRzLiBUaGUga2V5IGNvbnRhaW5zIHRoZSBlbGVtZW50IG5hbWUgYW5kIGFkZGl0aW9uYWwgcGFyYW1ldGVycywgaWYgcHJlc2VudCwKCQkJCQkvLwl2YWx1ZSBpcyBqdXN0IHRoZSB2YWx1ZQoJCQkJCWxpc3QoJEtleSwgJFZhbHVlKSA9IGV4cGxvZGUoJzonLCAkTGluZSwgMik7CgoJCQkJCS8vIEtleSBpcyB0cmFuc2Zvcm1lZCB0byBsb3dlcmNhc2UgYmVjYXVzZSwgZXZlbiB0aG91Z2ggdGhlIGVsZW1lbnQgYW5kIHBhcmFtZXRlciBuYW1lcyBhcmUgd3JpdHRlbiBpbiB1cHBlcmNhc2UsCgkJCQkJLy8JaXQgaXMgcXVpdGUgcG9zc2libGUgdGhhdCB0aGV5IHdpbGwgYmUgaW4gbG93ZXItIG9yIG1peGVkIGNhc2UuCgkJCQkJLy8gVGhlIGtleSBpcyB0cmltbWVkIHRvIGFsbG93IGZvciBub24tc2lnbmlmaWNhbnQgV1NQIGNoYXJhY3RlcnMgYXMgYWxsb3dlZCBieSB2Mi4xCgkJCQkJJEtleSA9IHN0cnRvbG93ZXIodHJpbShzZWxmOjpVbmVzY2FwZSgkS2V5KSkpOwoKCQkJCQkvLyBUaGVzZSB0d28gbGluZXMgY2FuIGJlIHNraXBwZWQgYXMgdGhleSBhcmVuJ3QgbmVjZXNzYXJ5IGF0IGFsbC4KCQkJCQlpZiAoJEtleSA9PSAnYmVnaW4nIHx8ICRLZXkgPT0gJ2VuZCcpCgkJCQkJewoJCQkJCQljb250aW51ZTsKCQkJCQl9CgoJCQkJCWlmICgoc3RycG9zKCRLZXksICdhZ2VudCcpID09PSAwKSAmJiAoc3RyaXBvcygkVmFsdWUsICdiZWdpbjp2Y2FyZCcpICE9PSBmYWxzZSkpCgkJCQkJewoJCQkJCQkkQ2xhc3NOYW1lID0gZ2V0X2NsYXNzKCR0aGlzKTsKCQkJCQkJJFZhbHVlID0gbmV3ICRDbGFzc05hbWUoZmFsc2UsIHN0cl9yZXBsYWNlKCctd3JhcC0nLCAiXG4iLCAkVmFsdWUpKTsKCQkJCQkJaWYgKCFpc3NldCgkdGhpcyAtPiBEYXRhWyRLZXldKSkKCQkJCQkJewoJCQkJCQkJJHRoaXMgLT4gRGF0YVskS2V5XSA9IGFycmF5KCk7CgkJCQkJCX0KCQkJCQkJJHRoaXMgLT4gRGF0YVskS2V5XVtdID0gJFZhbHVlOwoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJFZhbHVlID0gc3RyX3JlcGxhY2UoJy13cmFwLScsICcnLCAkVmFsdWUpOwoJCQkJCX0KCgkJCQkJJFZhbHVlID0gdHJpbShzZWxmOjpVbmVzY2FwZSgkVmFsdWUpKTsKCQkJCQkkVHlwZSA9IGFycmF5KCk7CgoJCQkJCS8vIEhlcmUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFyZSBwYXJzZWQKCQkJCQkkS2V5UGFydHMgPSBleHBsb2RlKCc7JywgJEtleSk7CgkJCQkJJEtleSA9ICRLZXlQYXJ0c1swXTsKCQkJCQkkRW5jb2RpbmcgPSBmYWxzZTsKCgkJCQkJaWYgKHN0cnBvcygkS2V5LCAnaXRlbScpID09PSAwKQoJCQkJCXsKCQkJCQkJJFRtcEtleSA9IGV4cGxvZGUoJy4nLCAkS2V5LCAyKTsKCQkJCQkJJEtleSA9ICRUbXBLZXlbMV07CgkJCQkJCSRJdGVtSW5kZXggPSAoaW50KXN0cl9pcmVwbGFjZSgnaXRlbScsICcnLCAkVG1wS2V5WzBdKTsKCQkJCQl9CgoJCQkJCWlmIChjb3VudCgkS2V5UGFydHMpID4gMSkKCQkJCQl7CgkJCQkJCSRQYXJhbWV0ZXJzID0gc2VsZjo6UGFyc2VQYXJhbWV0ZXJzKCRLZXksIGFycmF5X3NsaWNlKCRLZXlQYXJ0cywgMSkpOwoKCQkJCQkJZm9yZWFjaCAoJFBhcmFtZXRlcnMgYXMgJFBhcmFtS2V5ID0+ICRQYXJhbVZhbHVlKQoJCQkJCQl7CgkJCQkJCQlzd2l0Y2ggKCRQYXJhbUtleSkKCQkJCQkJCXsKCQkJCQkJCQljYXNlICdlbmNvZGluZyc6CgkJCQkJCQkJCSRFbmNvZGluZyA9ICRQYXJhbVZhbHVlOwoJCQkJCQkJCQlpZiAoaW5fYXJyYXkoJFBhcmFtVmFsdWUsIGFycmF5KCdiJywgJ2Jhc2U2NCcpKSkKCQkJCQkJCQkJewoJCQkJCQkJCQkJLy8kVmFsdWUgPSBiYXNlNjRfZGVjb2RlKCRWYWx1ZSk7CgkJCQkJCQkJCX0KCQkJCQkJCQkJZWxzZWlmICgkUGFyYW1WYWx1ZSA9PSAncXVvdGVkLXByaW50YWJsZScpIC8vIHYyLjEKCQkJCQkJCQkJewoJCQkJCQkJCQkJJFZhbHVlID0gcXVvdGVkX3ByaW50YWJsZV9kZWNvZGUoJFZhbHVlKTsKCQkJCQkJCQkJfQoJCQkJCQkJCQlicmVhazsKCQkJCQkJCQljYXNlICdjaGFyc2V0JzogLy8gdjIuMQoJCQkJCQkJCQlpZiAoJFBhcmFtVmFsdWUgIT0gJ3V0Zi04JyAmJiAkUGFyYW1WYWx1ZSAhPSAndXRmOCcpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSRWYWx1ZSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJFZhbHVlLCAnVVRGLTgnLCAkUGFyYW1WYWx1ZSk7CgkJCQkJCQkJCX0KCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJY2FzZSAndHlwZSc6CgkJCQkJCQkJCSRUeXBlID0gJFBhcmFtVmFsdWU7CgkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoKCQkJCQkvLyBDaGVja2luZyBmaWxlcyBmb3IgY29sb24tc2VwYXJhdGVkIGFkZGl0aW9uYWwgcGFyYW1ldGVycyAoQXBwbGUncyBBZGRyZXNzIEJvb2sgZG9lcyB0aGlzKSwgZm9yIGV4YW1wbGUsICJYLUFCQ1JPUC1SRUNUQU5HTEUiIGZvciBwaG90b3MKCQkJCQlpZiAoaW5fYXJyYXkoJEtleSwgc2VsZjo6JFNwZWNfRmlsZUVsZW1lbnRzKSAmJiBpc3NldCgkUGFyYW1ldGVyc1snZW5jb2RpbmcnXSkgJiYgaW5fYXJyYXkoJFBhcmFtZXRlcnNbJ2VuY29kaW5nJ10sIGFycmF5KCdiJywgJ2Jhc2U2NCcpKSkKCQkJCQl7CgkJCQkJCS8vIElmIGNvbG9uIGlzIHByZXNlbnQgaW4gdGhlIHZhbHVlLCBpdCBtdXN0IGNvbnRhaW4gQWRkcmVzcyBCb29rIHBhcmFtZXRlcnMKCQkJCQkJLy8JKGNvbG9uIGlzIGFuIGludmFsaWQgY2hhcmFjdGVyIGZvciBiYXNlNjQgc28gaXQgc2hvdWxkbid0IGFwcGVhciBpbiB2YWxpZCBmaWxlcykKCQkJCQkJaWYgKHN0cnBvcygkVmFsdWUsICc6JykgIT09IGZhbHNlKQoJCQkJCQl7CgkJCQkJCQkkVmFsdWUgPSBleHBsb2RlKCc6JywgJFZhbHVlKTsKCQkJCQkJCSRWYWx1ZSA9IGFycmF5X3BvcCgkVmFsdWUpOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQkvLyBWYWx1ZXMgYXJlIHBhcnNlZCBhY2NvcmRpbmcgdG8gdGhlaXIgdHlwZQoJCQkJCWlmIChpc3NldChzZWxmOjokU3BlY19TdHJ1Y3R1cmVkRWxlbWVudHNbJEtleV0pKQoJCQkJCXsKCQkJCQkJJFZhbHVlID0gc2VsZjo6UGFyc2VTdHJ1Y3R1cmVkVmFsdWUoJFZhbHVlLCAkS2V5KTsKCQkJCQkJaWYgKCRUeXBlKQoJCQkJCQl7CgkJCQkJCQkkVmFsdWVbJ1R5cGUnXSA9ICRUeXBlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWlmIChpbl9hcnJheSgkS2V5LCBzZWxmOjokU3BlY19NdWx0aXBsZVZhbHVlRWxlbWVudHMpKQoJCQkJCQl7CgkJCQkJCQkkVmFsdWUgPSBzZWxmOjpQYXJzZU11bHRpcGxlVGV4dFZhbHVlKCRWYWx1ZSwgJEtleSk7CgkJCQkJCX0KCgkJCQkJCWlmICgkVHlwZSkKCQkJCQkJewoJCQkJCQkJJFZhbHVlID0gYXJyYXkoCgkJCQkJCQkJJ1ZhbHVlJyA9PiAkVmFsdWUsCgkJCQkJCQkJJ1R5cGUnID0+ICRUeXBlCgkJCQkJCQkpOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQlpZiAoaXNfYXJyYXkoJFZhbHVlKSAmJiAkRW5jb2RpbmcpCgkJCQkJewoJCQkJCQkkVmFsdWVbJ0VuY29kaW5nJ10gPSAkRW5jb2Rpbmc7CgkJCQkJfQoKCQkJCQlpZiAoIWlzc2V0KCR0aGlzIC0+IERhdGFbJEtleV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMgLT4gRGF0YVskS2V5XSA9IGFycmF5KCk7CgkJCQkJfQoKCQkJCQkkdGhpcyAtPiBEYXRhWyRLZXldW10gPSAkVmFsdWU7CgkJCQl9CgkJCX0KCQl9CgoJCS8qKgoJCSAqIE1hZ2ljIG1ldGhvZCB0byBnZXQgdGhlIHZhcmlvdXMgdkNhcmQgdmFsdWVzIGFzIG9iamVjdCBtZW1iZXJzLCBlLmcuCgkJICoJYSBjYWxsIHRvICR2Q2FyZCAtPiBOIGdldHMgdGhlICJOIiB2YWx1ZQoJCSAqCgkJICogQHBhcmFtIHN0cmluZyBLZXkKCQkgKgoJCSAqIEByZXR1cm4gbWl4ZWQgVmFsdWUKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gX19nZXQoJEtleSkKCQl7CgkJCSRLZXkgPSBzdHJ0b2xvd2VyKCRLZXkpOwoJCQlpZiAoaXNzZXQoJHRoaXMgLT4gRGF0YVskS2V5XSkpCgkJCXsKCQkJCWlmICgkS2V5ID09ICdhZ2VudCcpCgkJCQl7CgkJCQkJcmV0dXJuICR0aGlzIC0+IERhdGFbJEtleV07CgkJCQl9CgkJCQllbHNlaWYgKGluX2FycmF5KCRLZXksIHNlbGY6OiRTcGVjX0ZpbGVFbGVtZW50cykpCgkJCQl7CgkJCQkJJFZhbHVlID0gJHRoaXMgLT4gRGF0YVskS2V5XTsKCQkJCQlmb3JlYWNoICgkVmFsdWUgYXMgJEsgPT4gJFYpCgkJCQkJewoJCQkJCQlpZiAoc3RyaXBvcygkVlsnVmFsdWUnXSwgJ3VyaTonKSA9PT0gMCkKCQkJCQkJewoJCQkJCQkJJFZhbHVlWyRLXVsnVmFsdWUnXSA9IHN1YnN0cigkViwgNCk7CgkJCQkJCQkkVmFsdWVbJEtdWydFbmNvZGluZyddID0gJ3VyaSc7CgkJCQkJCX0KCQkJCQl9CgkJCQkJcmV0dXJuICRWYWx1ZTsKCQkJCX0KCgkJCQlpZiAoJHRoaXMgLT4gT3B0aW9uc1snQ29sbGFwc2UnXSAmJiBpc19hcnJheSgkdGhpcyAtPiBEYXRhWyRLZXldKSAmJiAoY291bnQoJHRoaXMgLT4gRGF0YVskS2V5XSkgPT0gMSkpCgkJCQl7CgkJCQkJcmV0dXJuICR0aGlzIC0+IERhdGFbJEtleV1bMF07CgkJCQl9CgkJCQlyZXR1cm4gJHRoaXMgLT4gRGF0YVskS2V5XTsKCQkJfQoJCQllbHNlaWYgKCRLZXkgPT0gJ01vZGUnKQoJCQl7CgkJCQlyZXR1cm4gJHRoaXMgLT4gTW9kZTsKCQkJfQoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9CgoJCS8qKgoJCSAqIFNhdmVzIGFuIGVtYmVkZGVkIGZpbGUKCQkgKgoJCSAqIEBwYXJhbSBzdHJpbmcgS2V5CgkJICogQHBhcmFtIGludCBJbmRleCBvZiB0aGUgZmlsZSwgZGVmYXVsdHMgdG8gMAoJCSAqIEBwYXJhbSBzdHJpbmcgVGFyZ2V0IHBhdGggd2hlcmUgdGhlIGZpbGUgc2hvdWxkIGJlIHNhdmVkLCBpbmNsdWRpbmcgdGhlIGZpbGVuYW1lCgkJICoKCQkgKiBAcmV0dXJuIGJvb2wgT3BlcmF0aW9uIHN0YXR1cwoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBTYXZlRmlsZSgkS2V5LCAkSW5kZXggPSAwLCAkVGFyZ2V0UGF0aCA9ICcnKQoJCXsKCQkJaWYgKCFpc3NldCgkdGhpcyAtPiBEYXRhWyRLZXldKSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCWlmICghaXNzZXQoJHRoaXMgLT4gRGF0YVskS2V5XVskSW5kZXhdKSkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgoJCQkvLyBSZXR1cmluZyBmYWxzZSBpZiBpdCBpcyBhbiBpbWFnZSBVUkwKCQkJaWYgKHN0cmlwb3MoJHRoaXMgLT4gRGF0YVskS2V5XVskSW5kZXhdWydWYWx1ZSddLCAndXJpOicpID09PSAwKQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCWlmIChpc193cml0YWJsZSgkVGFyZ2V0UGF0aCkgfHwgKCFmaWxlX2V4aXN0cygkVGFyZ2V0UGF0aCkgJiYgaXNfd3JpdGFibGUoZGlybmFtZSgkVGFyZ2V0UGF0aCkpKSkKCQkJewoJCQkJJFJhd0NvbnRlbnQgPSAkdGhpcyAtPiBEYXRhWyRLZXldWyRJbmRleF1bJ1ZhbHVlJ107CgkJCQlpZiAoaXNzZXQoJHRoaXMgLT4gRGF0YVskS2V5XVskSW5kZXhdWydFbmNvZGluZyddKSAmJiAkdGhpcyAtPiBEYXRhWyRLZXldWyRJbmRleF1bJ0VuY29kaW5nJ10gPT0gJ2InKQoJCQkJewoJCQkJCSRSYXdDb250ZW50ID0gYmFzZTY0X2RlY29kZSgkUmF3Q29udGVudCk7CgkJCQl9CgkJCQkkU3RhdHVzID0gZmlsZV9wdXRfY29udGVudHMoJFRhcmdldFBhdGgsICRSYXdDb250ZW50KTsKCQkJCXJldHVybiAoYm9vbCkkU3RhdHVzOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigndkNhcmQ6IENhbm5vdCBzYXZlIGZpbGUgKCcuJEtleS4nKSwgdGFyZ2V0IHBhdGggbm90IHdyaXRhYmxlICgnLiRUYXJnZXRQYXRoLicpJyk7CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLyoqCgkJICogTWFnaWMgbWV0aG9kIGZvciBhZGRpbmcgZGF0YSB0byB0aGUgdkNhcmQKCQkgKgoJCSAqIEBwYXJhbSBzdHJpbmcgS2V5CgkJICogQHBhcmFtIHN0cmluZyBNZXRob2QgY2FsbCBhcmd1bWVudHMuIEZpcnN0IGVsZW1lbnQgaXMgdmFsdWUuCgkJICoKCQkgKiBAcmV0dXJuIHZDYXJkIEN1cnJlbnQgb2JqZWN0IGZvciBtZXRob2QgY2hhaW5pbmcKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCRLZXksICRBcmd1bWVudHMpCgkJewoJCQkkS2V5ID0gc3RydG9sb3dlcigkS2V5KTsKCgkJCWlmICghaXNzZXQoJHRoaXMgLT4gRGF0YVskS2V5XSkpCgkJCXsKCQkJCSR0aGlzIC0+IERhdGFbJEtleV0gPSBhcnJheSgpOwoJCQl9CgoJCQkkVmFsdWUgPSBpc3NldCgkQXJndW1lbnRzWzBdKSA/ICRBcmd1bWVudHNbMF0gOiBmYWxzZTsKCgkJCWlmIChjb3VudCgkQXJndW1lbnRzKSA+IDEpCgkJCXsKCQkJCSRUeXBlcyA9IGFycmF5X3ZhbHVlcyhhcnJheV9zbGljZSgkQXJndW1lbnRzLCAxKSk7CgoJCQkJaWYgKGlzc2V0KHNlbGY6OiRTcGVjX1N0cnVjdHVyZWRFbGVtZW50c1skS2V5XSkgJiYKCQkJCQlpbl9hcnJheSgkQXJndW1lbnRzWzFdLCBzZWxmOjokU3BlY19TdHJ1Y3R1cmVkRWxlbWVudHNbJEtleV0pCgkJCQkpCgkJCQl7CgkJCQkJJExhc3RFbGVtZW50SW5kZXggPSAwOwoKCQkJCQlpZiAoY291bnQoJHRoaXMgLT4gRGF0YVskS2V5XSkpCgkJCQkJewoJCQkJCQkkTGFzdEVsZW1lbnRJbmRleCA9IGNvdW50KCR0aGlzIC0+IERhdGFbJEtleV0pIC0gMTsKCQkJCQl9CgoJCQkJCWlmIChpc3NldCgkdGhpcyAtPiBEYXRhWyRLZXldWyRMYXN0RWxlbWVudEluZGV4XSkpCgkJCQkJewoJCQkJCQlpZiAoZW1wdHkoJHRoaXMgLT4gRGF0YVskS2V5XVskTGFzdEVsZW1lbnRJbmRleF1bJFR5cGVzWzBdXSkpCgkJCQkJCXsKCQkJCQkJCSR0aGlzIC0+IERhdGFbJEtleV1bJExhc3RFbGVtZW50SW5kZXhdWyRUeXBlc1swXV0gPSAkVmFsdWU7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkTGFzdEVsZW1lbnRJbmRleCsrOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQlpZiAoIWlzc2V0KCR0aGlzIC0+IERhdGFbJEtleV1bJExhc3RFbGVtZW50SW5kZXhdKSkKCQkJCQl7CgkJCQkJCSR0aGlzIC0+IERhdGFbJEtleV1bJExhc3RFbGVtZW50SW5kZXhdID0gYXJyYXkoCgkJCQkJCQkkVHlwZXNbMF0gPT4gJFZhbHVlCgkJCQkJCSk7CgkJCQkJfQoJCQkJfQoJCQkJZWxzZWlmIChpc3NldChzZWxmOjokU3BlY19FbGVtZW50VHlwZXNbJEtleV0pKQoJCQkJewoJCQkJCSR0aGlzIC0+IERhdGFbJEtleV1bXSA9IGFycmF5KAoJCQkJCQknVmFsdWUnID0+ICRWYWx1ZSwKCQkJCQkJJ1R5cGUnID0+ICRUeXBlcwoJCQkJCSk7CgkJCQl9CgkJCX0KCQkJZWxzZWlmICgkVmFsdWUpCgkJCXsKCQkJCSR0aGlzIC0+IERhdGFbJEtleV1bXSA9ICRWYWx1ZTsKCQkJfQoKCQkJcmV0dXJuICR0aGlzOwoJCX0KCgkJLyoqCgkJICogTWFnaWMgbWV0aG9kIGZvciBnZXR0aW5nIHZDYXJkIGNvbnRlbnQgb3V0CgkJICoKCQkgKiBAcmV0dXJuIHN0cmluZyBSYXcgdkNhcmQgY29udGVudAoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKCQl7CgkJCSRUZXh0ID0gJ0JFR0lOOlZDQVJEJy5zZWxmOjplbmRsOwoJCQkkVGV4dCAuPSAnVkVSU0lPTjozLjAnLnNlbGY6OmVuZGw7CgoJCQlmb3JlYWNoICgkdGhpcyAtPiBEYXRhIGFzICRLZXkgPT4gJFZhbHVlcykKCQkJewoJCQkJJEtleVVDID0gc3RydG91cHBlcigkS2V5KTsKCQkJCSRLZXkgPSBzdHJ0b2xvd2VyKCRLZXkpOwoKCQkJCWlmIChpbl9hcnJheSgkS2V5VUMsIGFycmF5KCdQSE9UTycsICdWRVJTSU9OJykpKQoJCQkJewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCWZvcmVhY2ggKCRWYWx1ZXMgYXMgJEluZGV4ID0+ICRWYWx1ZSkKCQkJCXsKCQkJCQkkVGV4dCAuPSAkS2V5VUM7CgkJCQkJaWYgKGlzX2FycmF5KCRWYWx1ZSkgJiYgaXNzZXQoJFZhbHVlWydUeXBlJ10pKQoJCQkJCXsKCQkJCQkJJFRleHQgLj0gJztUWVBFPScuc2VsZjo6UHJlcGFyZVR5cGVTdHJGb3JPdXRwdXQoJFZhbHVlWydUeXBlJ10pOwoJCQkJCX0KCQkJCQkkVGV4dCAuPSAnOic7CgoJCQkJCWlmIChpc3NldChzZWxmOjokU3BlY19TdHJ1Y3R1cmVkRWxlbWVudHNbJEtleV0pKQoJCQkJCXsKCQkJCQkJJFBhcnRBcnJheSA9IGFycmF5KCk7CgkJCQkJCWZvcmVhY2ggKHNlbGY6OiRTcGVjX1N0cnVjdHVyZWRFbGVtZW50c1skS2V5XSBhcyAkUGFydCkKCQkJCQkJewoJCQkJCQkJJFBhcnRBcnJheVtdID0gaXNzZXQoJFZhbHVlWyRQYXJ0XSkgPyAkVmFsdWVbJFBhcnRdIDogJyc7CgkJCQkJCX0KCQkJCQkJJFRleHQgLj0gaW1wbG9kZSgnOycsICRQYXJ0QXJyYXkpOwoJCQkJCX0KCQkJCQllbHNlaWYgKGlzX2FycmF5KCRWYWx1ZSkgJiYgaXNzZXQoc2VsZjo6JFNwZWNfRWxlbWVudFR5cGVzWyRLZXldKSkKCQkJCQl7CgkJCQkJCSRUZXh0IC49ICRWYWx1ZVsnVmFsdWUnXTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJFRleHQgLj0gJFZhbHVlOwoJCQkJCX0KCgkJCQkJJFRleHQgLj0gc2VsZjo6ZW5kbDsKCQkJCX0KCQkJfQoKCQkJJFRleHQgLj0gJ0VORDpWQ0FSRCcuc2VsZjo6ZW5kbDsKCQkJcmV0dXJuICRUZXh0OwoJCX0KCgkJLy8gIUhlbHBlciBtZXRob2RzCgoJCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIFByZXBhcmVUeXBlU3RyRm9yT3V0cHV0KCRUeXBlKQoJCXsKCQkJcmV0dXJuIGltcGxvZGUoJywnLCBhcnJheV9tYXAoJ3N0cnRvdXBwZXInLCAkVHlwZSkpOwoJCX0KCgkgCS8qKgoJCSAqIFJlbW92ZXMgdGhlIGVzY2FwaW5nIHNsYXNoZXMgZnJvbSB0aGUgdGV4dC4KCQkgKgoJCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJCSAqCgkJICogQHBhcmFtIHN0cmluZyBUZXh0IHRvIHByZXBhcmUuCgkJICoKCQkgKiBAcmV0dXJuIHN0cmluZyBSZXN1bHRpbmcgdGV4dC4KCQkgKi8KCQlwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBVbmVzY2FwZSgkVGV4dCkKCQl7CgkJCSRhZnRlciA9IHN0cl9yZXBsYWNlKGFycmF5KCdcOicsICdcOycsICdcLCcsICdcbicpLCBhcnJheSgnOicsICc7JywgJywnLCAiXG4iKSwgJFRleHQpOwogICAgICAgICAgICByZXR1cm4gJGFmdGVyOwoJCX0KCgkJLyoqCgkJICogU2VwYXJhdGVzIHRoZSB2YXJpb3VzIHBhcnRzIG9mIGEgc3RydWN0dXJlZCB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCgkJICoKCQkgKiBAYWNjZXNzIHByaXZhdGUKCQkgKgoJCSAqIEBwYXJhbSBzdHJpbmcgUmF3IHRleHQgc3RyaW5nCgkJICogQHBhcmFtIHN0cmluZyBLZXkgKGUuZy4sIE4sIEFEUiwgT1JHLCBldGMuKQoJCSAqCgkJICogQHJldHVybiBhcnJheSBQYXJ0cyBpbiBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KCQkgKi8KCQlwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBQYXJzZVN0cnVjdHVyZWRWYWx1ZSgkVGV4dCwgJEtleSkKCQl7CgkJCSRUZXh0ID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnOycsICRUZXh0KSk7CgoJCQkkUmVzdWx0ID0gYXJyYXkoKTsKCQkJJEN0ciA9IDA7CgoJCQlmb3JlYWNoIChzZWxmOjokU3BlY19TdHJ1Y3R1cmVkRWxlbWVudHNbJEtleV0gYXMgJEluZGV4ID0+ICRTdHJ1Y3R1cmVQYXJ0KQoJCQl7CgkJCQkkUmVzdWx0WyRTdHJ1Y3R1cmVQYXJ0XSA9IGlzc2V0KCRUZXh0WyRJbmRleF0pID8gJFRleHRbJEluZGV4XSA6IG51bGw7CgkJCX0KCQkJcmV0dXJuICRSZXN1bHQ7CgkJfQoKCQkvKioKCQkgKiBAYWNjZXNzIHByaXZhdGUKCQkgKi8KCQlwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBQYXJzZU11bHRpcGxlVGV4dFZhbHVlKCRUZXh0KQoJCXsKCQkJcmV0dXJuIGV4cGxvZGUoJywnLCAkVGV4dCk7CgkJfQoKCQkvKioKCQkgKiBAYWNjZXNzIHByaXZhdGUKCQkgKi8KCQlwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBQYXJzZVBhcmFtZXRlcnMoJEtleSwgYXJyYXkgJFJhd1BhcmFtcyA9IG51bGwpCgkJewoJCQlpZiAoISRSYXdQYXJhbXMpCgkJCXsKCQkJCXJldHVybiBhcnJheSgpOwoJCQl9CgoJCQkvLyBQYXJhbWV0ZXJzIGFyZSBzcGxpdCBpbnRvIChrZXksIHZhbHVlKSBwYWlycwoJCQkkUGFyYW1ldGVycyA9IGFycmF5KCk7CgkJCWZvcmVhY2ggKCRSYXdQYXJhbXMgYXMgJEl0ZW0pCgkJCXsKCQkJCSRQYXJhbWV0ZXJzW10gPSBleHBsb2RlKCc9Jywgc3RydG9sb3dlcigkSXRlbSkpOwoJCQl9CgoJCQkkVHlwZSA9IGFycmF5KCk7CgkJCSRSZXN1bHQgPSBhcnJheSgpOwoKCQkJLy8gQW5kIGVhY2ggcGFyYW1ldGVyIGlzIGNoZWNrZWQgd2hldGhlciBhbnl0aGluZyBjYW4vc2hvdWxkIGJlIGRvbmUgYmVjYXVzZSBvZiBpdAoJCQlmb3JlYWNoICgkUGFyYW1ldGVycyBhcyAkSW5kZXggPT4gJFBhcmFtZXRlcikKCQkJewoJCQkJLy8gU2tpcHBpbmcgZW1wdHkgZWxlbWVudHMKCQkJCWlmICghJFBhcmFtZXRlcikKCQkJCXsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkvLyBIYW5kbGluZyB0eXBlIHBhcmFtZXRlcnMgd2l0aG91dCB0aGUgZXhwbGljaXQgVFlQRSBwYXJhbWV0ZXIgbmFtZSAoMi4xIHZhbGlkKQoJCQkJaWYgKGNvdW50KCRQYXJhbWV0ZXIpID09IDEpCgkJCQl7CgkJCQkJLy8gQ2hlY2tzIGlmIHRoZSB0eXBlIHZhbHVlIGlzIGFsbG93ZWQgZm9yIHRoZSBzcGVjaWZpYyBlbGVtZW50CgkJCQkJLy8gVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBtZWFucyB0aGF0IGVtYWlsIGVsZW1lbnRzIGNhbiBoYXZlIG5vbi1zdGFuZGFyZCB0eXBlcyAoc2VlIHRoZSBzcGVjKQoJCQkJCWlmICgKCQkJCQkJKGlzc2V0KHNlbGY6OiRTcGVjX0VsZW1lbnRUeXBlc1skS2V5XSkgJiYgaW5fYXJyYXkoJFBhcmFtZXRlclswXSwgc2VsZjo6JFNwZWNfRWxlbWVudFR5cGVzWyRLZXldKSkgfHwKCQkJCQkJKCRLZXkgPT0gJ2VtYWlsJyAmJiBpc19zY2FsYXIoJFBhcmFtZXRlclswXSkpCgkJCQkJKQoJCQkJCXsKCQkJCQkJJFR5cGVbXSA9ICRQYXJhbWV0ZXJbMF07CgkJCQkJfQoJCQkJfQoJCQkJZWxzZWlmIChjb3VudCgkUGFyYW1ldGVyKSA+IDIpCgkJCQl7CgkJCQkJaWYoY291bnQoZXhwbG9kZSgnLCcsICRSYXdQYXJhbXNbJEluZGV4XSwgLTEpKSA+IDApCgkJCQkJewoJCQkJCQkkVGVtcFR5cGVQYXJhbXMgPSBzZWxmOjpQYXJzZVBhcmFtZXRlcnMoJEtleSwgZXhwbG9kZSgnLCcsICRSYXdQYXJhbXNbJEluZGV4XSkpOwoJCQkJCQlpZiAoJFRlbXBUeXBlUGFyYW1zWyd0eXBlJ10pCgkJCQkJCXsKCQkJCQkJCSRUeXBlID0gYXJyYXlfbWVyZ2UoJFR5cGUsICRUZW1wVHlwZVBhcmFtc1sndHlwZSddKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlzd2l0Y2ggKCRQYXJhbWV0ZXJbMF0pCgkJCQkJewoJCQkJCQljYXNlICdlbmNvZGluZyc6CgkJCQkJCQlpZiAoaW5fYXJyYXkoJFBhcmFtZXRlclsxXSwgYXJyYXkoJ3F1b3RlZC1wcmludGFibGUnLCAnYicsICdiYXNlNjQnKSkpCgkJCQkJCQl7CgkJCQkJCQkJJFJlc3VsdFsnZW5jb2RpbmcnXSA9ICRQYXJhbWV0ZXJbMV0gPT0gJ2Jhc2U2NCcgPyAnYicgOiAkUGFyYW1ldGVyWzFdOwoJCQkJCQkJfQoJCQkJCQkJYnJlYWs7CgkJCQkJCWNhc2UgJ2NoYXJzZXQnOgoJCQkJCQkJJFJlc3VsdFsnY2hhcnNldCddID0gJFBhcmFtZXRlclsxXTsKCQkJCQkJCWJyZWFrOwoJCQkJCQljYXNlICd0eXBlJzoKCQkJCQkJCSRUeXBlID0gYXJyYXlfbWVyZ2UoJFR5cGUsIGV4cGxvZGUoJywnLCAkUGFyYW1ldGVyWzFdKSk7CgkJCQkJCQlicmVhazsKCQkJCQkJY2FzZSAndmFsdWUnOgoJCQkJCQkJaWYgKHN0cnRvbG93ZXIoJFBhcmFtZXRlclsxXSkgPT0gJ3VybCcpCgkJCQkJCQl7CgkJCQkJCQkJJFJlc3VsdFsnZW5jb2RpbmcnXSA9ICd1cmknOwoJCQkJCQkJfQoJCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkkUmVzdWx0Wyd0eXBlJ10gPSAkVHlwZTsKCgkJCXJldHVybiAkUmVzdWx0OwoJCX0KCgkJLy8gIUludGVyZmFjZSBtZXRob2RzCgoJCS8vIENvdW50YWJsZSBpbnRlcmZhY2UKCQlwdWJsaWMgZnVuY3Rpb24gY291bnQoKQoJCXsKCQkJc3dpdGNoICgkdGhpcyAtPiBNb2RlKQoJCQl7CgkJCQljYXNlIHNlbGY6Ok1PREVfRVJST1I6CgkJCQkJcmV0dXJuIDA7CgkJCQkJYnJlYWs7CgkJCQljYXNlIHNlbGY6Ok1PREVfU0lOR0xFOgoJCQkJCXJldHVybiAxOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSBzZWxmOjpNT0RFX01VTFRJUExFOgoJCQkJCXJldHVybiBjb3VudCgkdGhpcyAtPiBEYXRhKTsKCQkJCQlicmVhazsKCQkJfQoJCQlyZXR1cm4gMDsKCQl9CgoJCS8vIEl0ZXJhdG9yIGludGVyZmFjZQoJCXB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQoJCXsKCQkJcmVzZXQoJHRoaXMgLT4gRGF0YSk7CgkJfQoKCQlwdWJsaWMgZnVuY3Rpb24gY3VycmVudCgpCgkJewoJCQlyZXR1cm4gY3VycmVudCgkdGhpcyAtPiBEYXRhKTsKCQl9CgoJCXB1YmxpYyBmdW5jdGlvbiBuZXh0KCkKCQl7CgkJCXJldHVybiBuZXh0KCR0aGlzIC0+IERhdGEpOwoJCX0KCgkJcHVibGljIGZ1bmN0aW9uIHZhbGlkKCkKCQl7CgkJCXJldHVybiAoJHRoaXMgLT4gY3VycmVudCgpICE9PSBmYWxzZSk7CgkJfQoKCQlwdWJsaWMgZnVuY3Rpb24ga2V5KCkKCQl7CgkJCXJldHVybiBrZXkoJHRoaXMgLT4gRGF0YSk7CgkJfQoJfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/vCard-parser/write-test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCXJlcXVpcmVfb25jZSgndkNhcmQucGhwJyk7CgoJJHZDYXJkID0gbmV3IHZDYXJkOwoJJHZDYXJkIC0+IG4oJ0pvaG4nLCAnRmlyc3ROYW1lJyk7CgkkdkNhcmQgLT4gbignRG9lJywgJ0xhc3ROYW1lJyk7CgkkdkNhcmQgLT4gdGVsKCc1NTUtMTExMScpOwoJJHZDYXJkIC0+IHRlbCgnNTU1LTEyMzQnLCAnV29yaycpOwoJJHZDYXJkIC0+IGFkcignJywgJ1BPQm94Jyk7CgkkdkNhcmQgLT4gYWRyKCcnLCAnRXh0ZW5kZWRBZGRyZXNzJyk7CgkkdkNhcmQgLT4gYWRyKCc0MiBQbGFudGF0aW9uIFN0LicsICdTdHJlZXRBZGRyZXNzJyk7CgkkdkNhcmQgLT4gYWRyKCdCYXl0b3duJywgJ0xvY2FsaXR5Jyk7CgkkdkNhcmQgLT4gYWRyKCdMQScsICdSZWdpb24nKTsKCSR2Q2FyZCAtPiBhZHIoJzMwMzE0JywgJ1Bvc3RhbENvZGUnKTsKCSR2Q2FyZCAtPiBhZHIoJ1VTQScsICdDb3VudHJ5Jyk7CgoJLy8kdkNhcmQgPSBuZXcgdkNhcmQoJ0V4YW1wbGUzLjAudmNmJyk7CgoJZWNobyAnPHByZT4nLiR2Q2FyZC4nPC9wcmU+JzsKPz4=]]></data>
	</file>
</module>
