<?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>DocumentSearch</name>
	<version>1.4.6</version>
    <mincmsversion>1.11</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGFsbG93cyBmb3IgdGhlIHVwbG9hZGluZyBvZiBQREYsIERPQyBhbmQgRE9DWCBmaWxlcyB3aXRoIHRoZSBpbnRlbnRpb24gb2YgaGF2aW5nIHRoZSBkb2N1bWVudHMgY29udGVudCBleHRyYWN0ZWQgYW5kIGFkZGVkIHRvIHRoZSBkYXRhYmFzZSBtYWtpbmcgdGhlIGNvbnRlbnQgc2VhcmNoYWJsZSB2aWEgQ01TTVMgc2VhcmNoIG1vZHVsZS4gVGhlIHVwbG9hZGVkIGZpbGVzIGNhbiBhbHNvIGJlIGxpc3RlZCBvbiB0aGUgZnJvbnQgZW5kLjwvcD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPlNpbXBseSBwbGFjZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvciB0ZW1wbGF0ZSB1c2luZyB0aGUgc21hcnR5IHRhZyA8Y29kZT57RG9jdW1lbnRTZWFyY2h9PC9jb2RlPjwvcD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIE1vZHVsZSBGb3JnZQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2RvY3VtZW50c2VhcmNoLyI+RG9jdW1lbnQgU2VhcmNoIFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIG9saXZlcnNlZGRvbiwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+CjwvdWw+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEzLCBPbGl2ZXIgU2VkZG9uIDxhIGhyZWY9Im1haWx0bzpvbGl2ZXJAdGhyZWVmb2xkLmNvLnVrIj4mbHQ7b2xpdmVyQHRocmVlZm9sZC5jby51ayZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+CjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gY2F0ZWdvcnk9IkdlbmVyYWwiIC0gV2hpY2ggY2F0ZWdvcnkgdG8gZGlzcGxheSBkb2N1bWVudHMgZnJvbS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNvcnRieT0iZGF0ZSIgLSBGaWVsZCB0byBzb3J0IGJ5LiBPcHRpb25zIGFyZTogImRhdGUiLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc29ydGRlc2M9InRydWUiIC0gU29ydCBuZXdzIGl0ZW1zIGluIGRlc2NlbmRpbmcgZGF0ZSBvcmRlciByYXRoZXIgdGhhbiBhc2NlbmRpbmcuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBvbGl2ZXJzZWRkb24gJmx0O29saXZlckB0aHJlZWZvbGQuY28udWsmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS40LjY8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CjxsaT5WZXJzaW9uIDEuMCAzMCBKYW51YXJ5IDIwMTMuIEluaXRpYWwgUmVsZWFzZS48L2xpPgo8bGk+VmVyc2lvbiAxLjEgMzAgSmFudWFyeSAyMDEzLiBGaXggZm9yIGJ1ZyAjODg3NS48L2xpPgo8bGk+VmVyc2lvbiAxLjIgMzAgSmFudWFyeSAyMDEzLiBGaXggdG8gc2VhcmNoIHJlc3VsdHMgVVJMLCBtaXNzaW5nIGRvY3VtZW50c2VhcmNoIGRpcmVjdG9yeS48L2xpPgo8bGk+VmVyc2lvbiAxLjMgMzEgSmFudWFyeSAyMDEzLiBBZGRlZCBzb3J0YnkgYW5kIHNvcnRkZXNjIHBhcmFtZXRlcnMgcGx1cyB0d2Vha2VkIHRlbXBsYXRlLjwvbGk+CjxsaT5WZXJzaW9uIDEuMy4xIDcgRmVicnVhcnkgMjAxMy4gQnVnIGZpeCAjODkxMSBhbmQgYWRkZWQgZmlsZSBpY29ucyB0byBmcm9udCBlbmQgdGVtcGxhdGUuPC9saT4KPGxpPlZlcnNpb24gMS40IDI0IEZlYnJ1YXJ5IDIwMTMuIEFkZGVkIHRlbXBsYXRlIHRhYiB0byBlbmFibGUgZWRpdGluZyBvZiBvdXRwdXQgYW5kIGlmIG5vIG5hbWUgaXMgc3BlY2lmaWVkIHRoZSBkb2N1bWVudHMgZmlsZSBuYW1lIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LCBtaW51cyBleHRlbnNpb24gYW5kIGFueSBfIHJlcGxhY2VkIGJ5IHNwYWNlcyBhbmQgcGVyIGZlYXR1cmUgcmVxdWVzdHMgIzg5NDEgYW5kICM4OTQyLiBNYWRlIGNhdGVnb3J5IG5hbWUgYXBwZWFyIGluIGFkbWluIHRhYmxlIHJhdGhlciB0aGFuIElELjwvbGk+CjxsaT5WZXJzaW9uIDEuNC4xIDI1IEZlYnJ1YXJ5IDIwMTMuIFVzaW5nIHdoYXQgYXBwZWFycyB0byBiZSBhIG1vcmUgcmVsaWFibGUgcGRmMnRleHQgY2xhc3MuPC9saT4KPGxpPlZlcnNpb24gMS40LjIgMjYgRmVicnVhcnkgMjAxMy4gQnVnIGZpeGVzIGFuZCBhIGhhbmRmdWwgb2YgbmV3IGZlYXR1cmVzLjwvbGk+CjxsaT5WZXJzaW9uIDEuNC4zIDI4IEZlYnJ1YXJ5IDIwMTMuIEJldHRlciBjb252ZXJzaW9uIG9mIG5vbiBzdGFuZGFyZCBjaGFyYWN0ZXJzLjwvbGk+CjxsaT5WZXJzaW9uIDEuNC40IDI4IEp1bmUgMjAxMy4gQnVnIGZpeGVzIGFuZCByZW1vdmVkIFN0YXR1cyBkcm9wZG93biBhbmQgYWRkZWQgc3VwcG9ydCBmb3IgUlRGIGFuZCBUWFQgZG9jcy48L2xpPgo8bGk+VmVyc2lvbiAxLjQuNSAxNyBGZWJydWFyeSAyMDE0LiBCdWcgZml4ICM5NzUxIGNvbXBhdGFiaWxpdHkgd2l0aCBQSFAgNS40PC9saT4KPGxpPlZlcnNpb24gMS40LjYgMTggTWF5IDIwMjEuIE1vZGlmaWVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQ01TTVMgMi4wLiBUaGUgY29udGVudCBzZWFyY2ggd2FzIGZpeGVkIGZvciBwZGYsIFJURiwgYW5kIGRvYyBmaWxlcy4gRm9yIGRvYyBmaWxlcywgeW91IGhhdmUgdG8gaW5zdGFsbCBhbnRpd29yZCBvbiB5b3VyIExpbnV4IHNlcnZlci48L2xpPgo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[This module extracts the contents of PDF, DOC, DOCX, RTF and TXT files and adds the content to the database making the documents content searchable, with a link reference to the original document for downloading/viewing.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgRG9jdW1lbnQgU2VhcmNoJykpIHJldHVybjsKCiRwYXJlbnQgPSAtMTsKaWYoIGlzc2V0KCRwYXJhbXNbJ3BhcmVudCddKSkKICB7CiAgICAkcGFyZW50ID0gKGludCkkcGFyYW1zWydwYXJlbnQnXTsKICB9CmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkKTsKfQoKJG5hbWUgPSAnJzsKaWYgKGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkpCnsKICAkbmFtZSA9IHRyaW0oJHBhcmFtc1snbmFtZSddKTsKICBpZiAoJG5hbWUgIT0gJycpCiAgICB7CiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgV0hFUkUgcGFyZW50X2lkID0gPyBBTkQgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSA9ID8nOwogICAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCRwYXJlbnQsJG5hbWUpKTsKICAgICAgaWYoICR0bXAgKQoJewoJICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9kdXBsaWNhdGVuYW1lJykpOwoJfQogICAgICBlbHNlCgl7CgkgICRjYXRpZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllc19zZXEiKTsKCSAgJHRpbWUgPSAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSk7CgkgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgKGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkLCBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lLCBwYXJlbnRfaWQsIGNyZWF0ZV9kYXRlLCBtb2RpZmllZF9kYXRlKSBWQUxVRVMgKD8sPyw/LCcuJHRpbWUuJywnLiR0aW1lLicpJzsKCSAgJHBhcm1zID0gYXJyYXkoJGNhdGlkLCRuYW1lLCRwYXJlbnQpOwoJICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcGFybXMpOwoJICBkb2N1bWVudHNlYXJjaF9hZG1pbl9vcHM6OlVwZGF0ZUhpZXJhcmNoeVBvc2l0aW9ucygpOwoJICBAJHRoaXMtPlNlbmRFdmVudCgnRG9jdW1lbnRTZWFyY2hDYXRlZ29yeUFkZGVkJywgYXJyYXkoJ2NhdGVnb3J5X2lkJyA9PiAkY2F0aWQsICduYW1lJyA9PiAkbmFtZSkpOwoJICAvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKCSAgYXVkaXQoJGNhdGlkLCAnRG9jdW1lbnQgU2VhcmNoIGNhdGVnb3J5OiAnLiRjYXRpZCwgJyBDYXRlZ29yeSBhZGRlZCcpOwoJICAKCSAgJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnY2F0ZWdvcnlhZGRlZCcsICdhY3RpdmVfdGFiJyA9PiAnY2F0ZWdvcmllcycpOwoJICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCX0KICAgIH0KICBlbHNlCiAgICB7CiAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vbmFtZWdpdmVuJykpOwogICAgfQp9CgojRGlzcGxheSB0ZW1wbGF0ZQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnYWRkY2F0ZWdvcnknLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignbmFtZXRleHQnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dG5hbWUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25hbWUnLCAkbmFtZSwgMjAsIDI1NSkpOwokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICcnKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0Y2F0ZWdvcnkudHBsJyk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.add_edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQ0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Cg0KLy8gZ2V0IG91ciByZWNvcmRzIGZyb20gdGhlIGRhdGFiYXNlDQokZGIgPSAkZ0Ntcy0+R2V0RGIoKTsNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ10pKSB7DQoJJHF1ZXJ5ID0gJ1NFTEVDVCBkb2N1bWVudHNlYXJjaF9pZCwgbmFtZSwgY29udGVudCwgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQsIGxvY2F0aW9uLCBhdXRob3IsIGRvY3VtZW50X2RhdGUgZnJvbSAnLmNtc19kYl9wcmVmaXgoKS4NCiAgICAJJ21vZHVsZV9kb2N1bWVudHNlYXJjaCB3aGVyZSBkb2N1bWVudHNlYXJjaF9pZCA9ID8nOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ10pKTsNCg0KCWlmICgkcmVzdWx0ICE9PSBmYWxzZSkgew0KCQkvLyBsb2FkIGluIHRoZSByZWNvcmQgaWYgdGhlcmUgd2FzIG5vIGVycm9yDQogICAgCSRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKTsNCiAgICAJJHNpZCA9ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2lkJ107IC8vIHN0dXBpZCAtLSB3ZSdyZSBwYXNzaW5nIHRoZSBwYXJhbSwgYW5kIHRoZW4gdXNpbmcgdGhlIGRhdGFiYXNlIHZlcnNpb24uDQogICAgCSRuYW1lID0gJHJvd1snbmFtZSddOw0KICAgIAkkY2F0ZWdvcnkgPSAkcm93Wydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCddOwoNCgkJLy8gd2UgZGVjb2RlIHRoaXMgbmV4dCBvbmUsIGJlY2F1c2UgaXQgZ2V0cyBzdG9yZWQgZW5jb2RlZCwgYW5kIHRoZSBDcmVhdGVUZXh0QXJlYSBBUEkgZW5jb2RlcyBhcyB3ZWxsLCBzbw0KCQkvLyBpZiB3ZSBkaWRuJ3QgZGVjb2RlIGl0LCB3ZSdkIGdldCBkb3VibGUgZW5jb2RpbmcuDQogICAgCSRjb250ZW50ID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRyb3dbJ2NvbnRlbnQnXSk7IA0KICAgIAkkbG9jYXRpb24gPSAkcm93Wydsb2NhdGlvbiddOw0KICAgIAkkYXV0aG9yID0gJHJvd1snYXV0aG9yJ107DQogICAgCSRwb3N0ZGF0ZSA9ICRyb3dbJ2RvY3VtZW50X2RhdGUnXTsKCgkJJHVzZWRjYXRlZ29yeSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2NhdGVnb3J5JywgJycpOwoJCWlmIChpc3NldCgkY2F0ZWdvcnkpKQl7CgkJCSR1c2VkY2F0ZWdvcnkgPSAkY2F0ZWdvcnk7CgkJfQoNCiAgICB9IGVsc2Ugew0KICAgIAkvLyB5ZWFoLCB0aGF0J3MgZ3JhY2VmdWwgOigNCiAgICAJZWNobyAiRGF0YWJhc2UgZXJyb3IhIjsNCiAgICAJZXhpdDsNCiAgICB9DQp9IGVsc2Ugew0KCS8vIGlmIHdlIGRpZG4ndCByZXRyaWV2ZSBhIHJlY29yZCwgc2V0IHNvbWUgZGVmYXVsdCB2YWx1ZXMNCgkkc2lkID0gLTE7DQoJJG5hbWUgPSAnJzsNCgkkY29udGVudCA9ICcnOw0KCSRsb2NhdGlvbiA9ICcnOw0KCSRhdXRob3IgPSAnJzsNCgkkdXNlZGNhdGVnb3J5ID0gJyc7CgkkcG9zdGRhdGUgPSB0aW1lKCk7DQp9CgokY2F0ZWdvcnlsaXN0ID0gYXJyYXkoKTsKJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIE9SREVSIEJZIGhpZXJhcmNoeSI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgCndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewoJJGNhdGVnb3J5bGlzdFskcm93Wydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lJ11dID0gJHJvd1snZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnXTsKfQoKCiRvbmNoYW5nZXRleHQ9J29uY2hhbmdlPSJkb2N1bWVudCcuJGlkLidtb2R1bGVmb3JtXzEuc3VibWl0KCkiJzsKDQovLyBzZXQgdXAgZm9ybSBmb3IgU21hcnR5DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdzYXZlX3JlY29yZCcsJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsZmFsc2UsJycsJHBhcmFtcykpOwoNCi8vIGdpdmUgU21hcnR5IHRyYW5zbGF0ZWQgZmllbGQgdGl0bGVzIA0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9uYW1lJywkdGhpcy0+TGFuZygndGl0bGVfbmFtZScpKTsNCiRzbWFydHktPmFzc2lnbigndGl0bGVfYXV0aG9yJywkdGhpcy0+TGFuZygndGl0bGVfYXV0aG9yJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9jb250ZW50JywkdGhpcy0+TGFuZygndGl0bGVfY29udGVudCcpKTsNCiRzbWFydHktPmFzc2lnbigndGl0bGVfbG9jYXRpb25maWxlJywkdGhpcy0+TGFuZygndGl0bGVfbG9jYXRpb24nKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2xvY2F0aW9uZmlsZWVkaXQnLCR0aGlzLT5MYW5nKCd0aXRsZV9sb2NhdGlvbmVkaXQnKSk7CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnl0ZXh0JywgJHRoaXMtPkxhbmcoJ2NhdGVnb3J5JykpOwokc21hcnR5LT5hc3NpZ24oJ3Bvc3RkYXRldGV4dCcsICR0aGlzLT5MYW5nKCdwb3N0ZGF0ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdwb3N0ZGF0ZXByZWZpeCcsICRpZC4ncG9zdGRhdGVfJyk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X25hbWUnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCduYW1lJywkbmFtZSwgMzApKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfYXV0aG9yJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnYXV0aG9yJywkYXV0aG9yLCAzMCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb250ZW50JywkdGhpcy0+Q3JlYXRlVGV4dEFyZWEodHJ1ZSwgJGlkLCAkY29udGVudCwgJ2NvbnRlbnQnLCAnJywgJycsICcnLCAnJywgNDAsIDUpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfbG9jYXRpb25maWxlJywkdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0KCRpZCwnbG9jYXRpb25maWxlJykpOwokc21hcnR5LT5hc3NpZ24oJ3Bvc3RkYXRlJywgJHBvc3RkYXRlKTsKJHNtYXJ0eS0+YXNzaWduKCdsb2NhdGlvbicsJGxvY2F0aW9uKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGNhdGVnb3J5JywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnY2F0ZWdvcnknLCAkY2F0ZWdvcnlsaXN0LCAtMSwgJHVzZWRjYXRlZ29yeSwgJG9uY2hhbmdldGV4dCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9sb2NhdGlvbicsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnbG9jYXRpb24nLCRsb2NhdGlvbikpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdkb2N1bWVudHNlYXJjaF9pZCcsJHNpZCkuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cg0KLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZF9lZGl0LnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gQkVHSU5fTElDRU5TRQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE1vZHVsZTogRG9jdW1lbnRTZWFyY2ggKGMpIDIwMTMgYnkgT2xpdmVyIFNlZGRvbgovLyAob2xpdmVyQHRocmVlZm9sZC5jby51aykKLy8gQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKLy8gY29udGVudCBzZWFyY2hhYmlsaXR5LgoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQovLyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLy8gKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCi8vIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAovLyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKLy8gaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwovLyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KLy8gc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAovLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgovLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi8vIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRU5EX0xJQ0VOU0UKZXJyb3JfbG9nKCJEb2N1bWVudCBzZWFyY2ggZGVmYXVsdCIpOwoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokaW4gPSAnJzsKZm9yZWFjaCAoJHBhcmFtcyBhcyAkZmZpZWxkID0+ICRmdmFsdWUpIHsKICAgICRpbiAuPSAiIFskZmZpZWxkXT0kZnZhbHVlLCAiOwp9CmVycm9yX2xvZygkaW4pOwovLyBnZXQgb3VyIHJlY29yZHMgZnJvbSB0aGUgZGF0YWJhc2UKJGRiID0gJGdDbXMtPkdldERiKCk7CiRkYi0+ZGVidWc9dHJ1ZTsKJHF1ZXJ5ID0gJ1NFTEVDVCBkb2N1bWVudHNlYXJjaF9pZCwgbmFtZSwgY29udGVudCwgbG9jYXRpb24sIGF1dGhvciwgZG9jdW1lbnRfZGF0ZSwgJyAuCgknKHNlbGVjdCBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lIGZyb20gJy4gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyBiIHdoZXJlIGEuZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQgPWIuZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQpIGFzIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUgJy4KCSAnZnJvbSAnLmNtc19kYl9wcmVmaXgoKSAuJ21vZHVsZV9kb2N1bWVudHNlYXJjaCBhICc7Cgokb3JkZXI9IiI7CgppZiAoaXNzZXQoJHBhcmFtc1snc29ydGJ5J10pKSB7CgoJc3dpdGNoICgkcGFyYW1zWydzb3J0YnknXSkgewoJCWNhc2UgJ2RhdGUnOgoJCQkkb3JkZXIgPSAiIE9SREVSIEJZIGRvY3VtZW50X2RhdGUgIjsKCQkJYnJlYWs7CgkJY2FzZSAncmFuZG9tJzoKCQkJJG9yZGVyID0gIiBPUkRFUiBCWSBSQU5EKCkgIjsKCQkJYnJlYWs7CgkgICAgY2FzZSAnbmFtZSc6CgkgICAgCSRvcmRlciA9ICIgT1JERVIgQlkgbmFtZSAiOwoJICAgIAlicmVhazsKCX0gLy8gc3dpdGNoCi8vIGRlc2NlbmRpbmcgb3JkZXIgb25seSB3aGVuICJzb3J0YnkiIGlzIHNldAoJaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnRkZXNjJ10pICYmCgkoc3RydG9sb3dlcigkcGFyYW1zWydzb3J0ZGVzYyddKSA9PSAndHJ1ZScpKSB7CgkJJG9yZGVyIC49JyBkZXNjICc7Cn0KfQppZiAoaXNzZXQoJHBhcmFtc1snZG9jdW1lbnRzZWFyY2hfaWQnXSkpIHsKICAgIC8vICpBTFdBWVMqIHVzZSBwYXJhbWV0ZXJpemVkIHF1ZXJpZXMgd2l0aCB1c2VyLXByb3ZpZGVkIGlucHV0CiAgICAvLyB0byBwcmV2ZW50IFNRTC1JbmplY3Rpb24gYXR0YWNrcyEKICAgICRxdWVyeSAuPSAnIHdoZXJlIGRvY3VtZW50c2VhcmNoX2lkID0gPyc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ10pKTsKICAgICRtb2RlID0gJ2RldGFpbCc7IC8vIHdlJ3JlIHZpZXdpbmcgYSBzaW5nbGUgcmVjb3JkCgp9ZWxzZWlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSkgewogICAgJGNhdF9pZCA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQgZnJvbSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIHdoZXJlIGxvd2VyKGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUpID0gbG93ZXIoPykgJywgYXJyYXkoJHBhcmFtc1snY2F0ZWdvcnknXSkpOwogICAgZXJyb3JfbG9nKCJjYXRlZ29yeV9pZCA9JGNhdF9pZCIpOwogICAgaWYgKCRjYXRfaWQpIHsKICAgICAgICAkcXVlcnkgLj0gIiB3aGVyZSBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCAgPSA/ICRvcmRlciI7CiAgICAgICAgZXJyb3JfbG9nKCJxdWVyeT0kcXVlcnkiKTsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0X2lkKSk7CiAgICB9CiAgICAkbW9kZSA9ICdzdW1tYXJ5JzsKfWVsc2UgewogICAgLy8gd2UncmUgbm90IGdldHRpbmcgYSBzcGVjaWZpYyByZWNvcmQsIHNvIHNob3cgJ2VtIGFsbC4gUHJvYmFibHkgc2hvdWxkIHBhZ2luYXRlLgoJJHF1ZXJ5IC49JG9yZGVyOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkbW9kZSA9ICdzdW1tYXJ5JzsgLy8gd2UncmUgdmlld2luZyBhIGxpc3Qgb2YgcmVjb3Jkcwp9Ci8vIGlmIGRldGFpbCAtIHNob3cgdGhlIGRvY3VtZW50CmlmICgkbW9kZSA9PSAnZGV0YWlsJykgewogICAgJGRlc3QgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAnZG9jdW1lbnRzZWFyY2gnLCAnaWQnIC4gJGRicmVzdWx0Wydkb2N1bWVudHNlYXJjaF9pZCddLCAkZGJyZXN1bHRbJ2xvY2F0aW9uJ10pOwogICAgJGZpbGVfcGFydHMgPSBwYXRoaW5mbygkZGVzdCk7CiAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkZXN0KTsKCiAgICAkbWltZSA9ICJ0ZXh0L3BsYWluIjsKICAgIHN3aXRjaCAoJGZpbGVfcGFydHNbJ2V4dGVuc2lvbiddKSB7CiAgICAgICAgY2FzZSAncGRmJyA6ICRtaW1lID0gImFwcGxpY2F0aW9uL3BkZiI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2dpZicgOiAkbWltZSA9ICJpbWFnZS9naWYiOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdwbmcnIDogJG1pbWUgPSAiaW1hZ2UvcG5nIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnanBnJyA6ICRtaW1lID0gImltYWdlL2pwZWciOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdqcGVnJyA6ICRtaW1lID0gImltYWdlL2pwZWciOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdydGYnIDogJG1pbWUgPSAidGV4dC9ydGYiOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd4bHMnIDoKICAgICAgICBjYXNlICd4bHN4JyA6JG1pbWUgPSAiYXBwbGljYXRpb24vbXNleGNlbCI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2RvYycgOgogICAgICAgIGNhc2UgJ2RvY3gnIDokbWltZSA9ICJhcHBsaWNhdGlvbi9tc3dvcmQiOwogICAgICAgICAgICBicmVhazsKICAgIH0KICAgIC8vIGtpbGwgYW55IG91dHB1dCB0aGF0IG1heSBoYXZlIGhhcHBlbmVkIGFscmVhZHkuCiAgICAkaGFuZGxlcnMgPSBvYl9saXN0X2hhbmRsZXJzKCk7CiAgICBmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgewogICAgICAgb2JfZW5kX2NsZWFuKCk7CiAgICB9CiAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogJyAuICRtaW1lKTsKICAgIGhlYWRlcignQ29udGVudC1kaXNwb3NpdGlvbjogaW5saW5lOyBmaWxlbmFtZT0iJyAuICRkYnJlc3VsdFsnbG9jYXRpb24nXSAuICciJyk7CiAgICBlY2hvICRjb250ZW50OwoKICAgIGV4aXQ7Cn0KCiRyZWNvcmRzID0gYXJyYXkoKTsKLyoqCndoaWxlICgkcmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKSkgewogICAgLy8gY3JlYXRlIGEgbmV3IG9iamVjdCBmb3IgZXZlcnkgcmVjb3JkIHRoYXQgd2UgcmV0cmlldmUKICAgICRyZWMgPSBuZXcgc3RkQ2xhc3MoKTsKICAgICRyZWMtPmlkID0gJHJvd1snZG9jdW1lbnRzZWFyY2hfaWQnXTsKICAgICRyZWMtPm5hbWUgPSAkcm93WyduYW1lJ107CiAgICAkcmVjLT5jb250ZW50ID0gJHJvd1snY29udGVudCddOwogICAgJHJlYy0+bG9jYXRpb24gPSAkcm93Wydsb2NhdGlvbiddOwogICAgJHJlYy0+YXV0aG9yID0gJHJvd1snYXV0aG9yJ107CiAgICAkcmVjLT5kb2N1bWVudGRhdGUgPSAkcm93Wydkb2N1bWVudF9kYXRlJ107CiAgICAvLyBjcmVhdGUgYXR0cmlidXRlcyBmb3IgcmVuZGVyaW5nICJ2aWV3IiBsaW5rcyBmb3IgdGhlIG9iamVjdC4KICAgIC8vICRpZCBhbmQgJHJldHVybmlkIGFyZSBwcmVkZWZpbmVkIGZvciB1cyBieSB0aGUgbW9kdWxlIEFQSQogICAgLy8gdGhhdCBsYXN0IHBhcmFtZXRlciBpcyB0aGUgUHJldHR5IFVSTCBsaW5rCiAgICAkcmVjLT52aWV3ID0gJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2RlZmF1bHQnLCAkdGhpcy0+TGFuZygnbGlua192aWV3JyksCiAgICAgICAgYXJyYXkoJ2RvY3VtZW50c2VhcmNoX2lkJyA9PiAkcmVjLT5pZCksICcnLCBmYWxzZSwgdHJ1ZSwgJycsIGZhbHNlLCAnZG9jdW1lbnRzZWFyY2gvdmlldy8nIC4gJHJlYy0+aWQgLiAnLycgLiAkcmV0dXJuaWQpOwogICAgJHJlYy0+ZWRpdCA9ICR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCAkcmV0dXJuaWQsICdhZGRfZWRpdCcsICR0aGlzLT5MYW5nKCdlZGl0JyksCiAgICAgICAgYXJyYXkoJ2RvY3VtZW50c2VhcmNoX2lkJyA9PiAkcmVjLT5pZCksICcnLCBmYWxzZSwgdHJ1ZSwgJycsIGZhbHNlLCAnZG9jdW1lbnRzZWFyY2gvZWRpdC8nIC4gJHJlYy0+aWQgLiAnLycgLiAkcmV0dXJuaWQpOwogICAgYXJyYXlfcHVzaCgkcmVjb3JkcywgJHJlYyk7CgogICAgJGZpbGVuYW1lID0gJHJlYy0+bG9jYXRpb247CiAgICAkZXh0ID0gc3Vic3RyKHN0cnJjaHIoJGZpbGVuYW1lLCAnLicpLCAxKTsKICAgICRleHQgPSBzdHJ0b3VwcGVyKCRleHQpOwogICAgJG1vZHVsZVBhdGggPSAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpOwogICAgJGljb25wYXRoID0gJG1vZHVsZVBhdGggLiAnL2ltYWdlcy9hcHBpY29ucy8nIC4gJGV4dCAuICdpY29uLmdpZic7CiAgICAkaWNvbmZpbGUgPSAnPGltZyBzcmM9IicgLiAkaWNvbnBhdGggLiAnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFsdD0iJyAuICRmaWxlbmFtZSAuICciIC8+JzsKICAgIC8vICRzbWFydHktPmFzc2lnbignaWNvbmZpbGUnLCAkaWNvbmZpbGUpOwogICAgJHJlYy0+ZG9jdW1lbnRpY29uID0gJGljb25maWxlOwp9CgokZW50cnlhcnJheSA9IGFycmF5KCk7CiRxdWVyeTEgPSAiCiAgICAgICAgICAgIFNFTEVDVAogICAgICAgICAgICAgICAgbWQuKiwKICAgICAgICAgICAgICAgIG1kYy5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lLAogICAgICAgICAgICAgICAgbWRjLmxvbmdfbmFtZQogICAgICAgICAgICBGUk9NICIgLgpjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2RvY3VtZW50c2VhcmNoIG1kCiAgICAgICAgICAgIExFRlQgT1VURVIgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIG1kYwogICAgICAgICAgICBPTiBtZGMuZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQgPSBtZC5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZAogICAgICAgICI7CgokcXVlcnkyID0gIgogICAgICAgICAgICBTRUxFQ1QgY291bnQobWQuZG9jdW1lbnRzZWFyY2hfaWQpIGFzIGNvdW50CiAgICAgICAgICAgIEZST00gIiAuCmNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfZG9jdW1lbnRzZWFyY2ggbWQKICAgICAgICAgICAgTEVGVCBPVVRFUiBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgbWRjCiAgICAgICAgICAgIE9OIG1kYy5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCA9IG1kLmRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkCiAgICAgICAgIjsKCmlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeV9pZCddKSkgewogICAgJHF1ZXJ5MSAuPSAiQU5EICggbWRjLmRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkID0gJyIgLiAoaW50KSRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10gLiAiJyApIEFORCAiOwogICAgJHF1ZXJ5MiAuPSAiQU5EICggbWRjLmRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkID0gJyIgLiAoaW50KSRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10gLiAiJyApIEFORCAiOwp9ZWxzZSBpZiAoaXNzZXQoJHBhcmFtc1siY2F0ZWdvcnkiXSkgJiYgJHBhcmFtc1siY2F0ZWdvcnkiXSAhPSAnJyAmJiAkcGFyYW1zWyJjYXRlZ29yeSJdICE9ICdub25lJykgewogICAgJGNhdGVnb3J5ID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh0cmltKCRwYXJhbXNbJ2NhdGVnb3J5J10pKTsKICAgICRjYXRlZ29yaWVzID0gZXhwbG9kZSgnLCcsICRjYXRlZ29yeSk7CiAgICAkcXVlcnkxIC49ICJBTkQgKCI7CiAgICAkcXVlcnkyIC49ICJBTkQgKCI7CiAgICAkY291bnQgPSAwOwogICAgZm9yZWFjaCAoJGNhdGVnb3JpZXMgYXMgJG9uZWNhdCkgewogICAgICAgIGlmICgkY291bnQgPiAwKSB7CiAgICAgICAgICAgICRxdWVyeTEgLj0gJyBPUiAnOwogICAgICAgICAgICAkcXVlcnkyIC49ICcgT1IgJzsKICAgICAgICB9CiAgICAgICAgaWYgKHN0cnBvcygkb25lY2F0LCAnfCcpICE9PSBmYWxzZSB8fCBzdHJwb3MoJG9uZWNhdCwgJyonKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHRtcCA9ICRkYi0+cXN0cih0cmltKHN0cl9yZXBsYWNlKCcqJywgJyUnLCBzdHJfcmVwbGFjZSgiJyIsICdfJywgJG9uZWNhdCkpKSk7CiAgICAgICAgICAgICRxdWVyeTEgLj0gInVwcGVyKG1kYy5sb25nX25hbWUpIGxpa2UgdXBwZXIoeyR0bXB9KSI7CiAgICAgICAgICAgICRxdWVyeTIgLj0gInVwcGVyKG1kYy5sb25nX25hbWUpIGxpa2UgdXBwZXIoeyR0bXB9KSI7CiAgICAgICAgfWVsc2UgewogICAgICAgICAgICAkdG1wID0gJGRiLT5xc3RyKHRyaW0oc3RyX3JlcGxhY2UoIiciLCAnXycsICRvbmVjYXQpKSk7CiAgICAgICAgICAgICRxdWVyeTEgLj0gIm1kYy5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lID0geyR0bXB9IjsKICAgICAgICAgICAgJHF1ZXJ5MiAuPSAibWRjLmRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUgPSB7JHRtcH0iOwogICAgICAgIH0KICAgICAgICAkY291bnQrKzsKICAgIH0KICAgICRxdWVyeTEgLj0gIikgIjsKICAgICRxdWVyeTIgLj0gIikgIjsKfQoKJHNvcnRyYW5kb20gPSBmYWxzZTsKaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnRieSddKSkgewogICAgaWYgKCRwYXJhbXNbJ3NvcnRieSddID09ICdkYXRlJykgewogICAgICAgICRxdWVyeTEgLj0gIk9SREVSIEJZIGRvY3VtZW50X2RhdGUgIjsKICAgIH1lbHNlIGlmICgkcGFyYW1zWydzb3J0YnknXSA9PSAncmFuZG9tJykgewogICAgICAgICRxdWVyeTEgLj0gIk9SREVSIEJZIFJBTkQoKSAiOwogICAgICAgICRzb3J0cmFuZG9tID0gdHJ1ZTsKICAgIH1lbHNlIHsKICAgICAgICAkcXVlcnkxIC49ICJPUkRFUiBCWSBtZC4iIC4gc3RyX3JlcGxhY2UoIiciLCAnJywgc3RyX3JlcGxhY2UoJzsnLCAnJywgJGRiLT5xc3RyKCRwYXJhbXNbJ3NvcnRieSddKSkpIC4gIiAiOwogICAgfQp9ZWxzZSB7CiAgICAkcXVlcnkxIC49ICJPUkRFUiBCWSBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCAiOwp9CmlmICgkc29ydHJhbmRvbSA9PSBmYWxzZSkgewogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3NvcnRkZXNjJ10pICYmCiAgICAgICAgICAgIChzdHJ0b2xvd2VyKCRwYXJhbXNbJ3NvcnRkZXNjJ10pID09ICd0cnVlJykpIHsKICAgICAgICAkcXVlcnkxIC49ICJkZXNjIjsKICAgIH1lbHNlIHsKICAgICAgICAkcXVlcnkxIC49ICJhc2MiOwogICAgfQp9CiovCi8vJGRicmVzdWx0ID0gJyc7Ci8vJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEpOwoKLy8kZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKd2hpbGUgKCRkYnJlc3VsdCAmJiAhJGRicmVzdWx0LT5FT0YpIHsKICAgICRyb3cgPSAkZGJyZXN1bHQtPmZpZWxkczsKICAgICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsKCiAgICAkb25lcm93LT5pZCA9ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2lkJ107CiAgICAkb25lcm93LT50aXRsZSA9ICRyb3dbJ25hbWUnXTsKICAgICRvbmVyb3ctPnN1bW1hcnkgPSAodHJpbSgkcm93Wydjb250ZW50J10pICE9ICc8YnIvPic/JHJvd1snY29udGVudCddOicnKTsKICAgICRvbmVyb3ctPmxvY2F0aW9uID0gJHJvd1snbG9jYXRpb24nXTsKICAgICRvbmVyb3ctPmNhdGVnb3J5ID0gJHJvd1snZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSddOwogICAgJG9uZXJvdy0+YXV0aG9yID0gJHJvd1snYXV0aG9yJ107CiAgICAkb25lcm93LT5kb2N1bWVudGRhdGUgPSAkcm93Wydkb2N1bWVudF9kYXRlJ107CgogICAgJGZpbGVuYW1lID0gJG9uZXJvdy0+bG9jYXRpb247CiAgICAkZXh0ID0gc3Vic3RyKHN0cnJjaHIoJGZpbGVuYW1lLCAnLicpLCAxKTsKICAgICRleHQgPSBzdHJ0b3VwcGVyKCRleHQpOwogICAgJG1vZHVsZVBhdGggPSAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpOwogICAgJGljb25wYXRoID0gJG1vZHVsZVBhdGggLiAnL2ltYWdlcy9hcHBpY29ucy8nIC4gJGV4dCAuICdpY29uLmdpZic7CiAgICAkaWNvbmZpbGUgPSAnPGltZyBzcmM9IicgLiAkaWNvbnBhdGggLiAnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFsdD0iJyAuICRmaWxlbmFtZSAuICciIC8+JzsKICAgICRzbWFydHktPmFzc2lnbignaWNvbmZpbGUnLCAkaWNvbmZpbGUpOwogICAgJG9uZXJvdy0+ZG9jdW1lbnRpY29uID0gJGljb25maWxlOwoKICAgICRzZW5kdG9kZXRhaWwgPSBhcnJheSgnZG9jdW1lbnRzZWFyY2hpZCcgPT4gJHJvd1snZG9jdW1lbnRzZWFyY2hfaWQnXSk7CiAgICBpZiAoaXNzZXQoJHBhcmFtc1snc2hvd2FsbCddKSkgewogICAgICAgICRzZW5kdG9kZXRhaWxbJ3Nob3dhbGwnXSA9ICRwYXJhbXNbJ3Nob3dhbGwnXTsKICAgIH0KICAgIGlmIChpc3NldCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pKSB7CiAgICAgICAgJHNlbmR0b2RldGFpbFsnb3JpZ2lkJ10gPSAkcmV0dXJuaWQ7CiAgICB9CiAgICBpZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkpIHsKICAgICAgICAkc2VuZHRvZGV0YWlsWydkZXRhaWx0ZW1wbGF0ZSddID0gJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXTsKICAgIH0KCiAgICAkcHJldHR5dXJsID0gJHJvd1snbG9jYXRpb24nXTsKICAgIGlmICgkcHJldHR5dXJsID09ICcnKSB7CiAgICAgICAgJGFsaWFzZWRfdGl0bGUgPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCRyb3dbJ25hbWUnXSk7CiAgICAgICAgJHByZXR0eXVybCA9ICdkb2N1bWVudHNlYXJjaC8nIC4gJHJvd1snZG9jdW1lbnRzZWFyY2hfaWQnXSAuICcvJyAuICgkZGV0YWlscGFnZSAhPSAnJz8kZGV0YWlscGFnZTokcmV0dXJuaWQpIC4gIi8kYWxpYXNlZF90aXRsZSI7CiAgICAgICAgaWYgKGlzc2V0KCRzZW5kdG9kZXRhaWxbJ2RldGFpbHRlbXBsYXRlJ10pKSB7CiAgICAgICAgICAgICRwcmV0dHl1cmwgLj0gJy9kLCcgLiAkc2VuZHRvZGV0YWlsWydkZXRhaWx0ZW1wbGF0ZSddOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snbGFuZyddKSkgewogICAgICAgICRzZW5kdG9kZXRhaWxbJ2xhbmcnXSA9ICRwYXJhbXNbJ2xhbmcnXTsKICAgIH0KCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpIHsKICAgICAgICAkc2VuZHRvZGV0YWlsWydjYXRlZ29yeV9pZCddID0gJHBhcmFtc1snY2F0ZWdvcnlfaWQnXTsKICAgIH0KCiAgICBpZiAoaXNzZXQoJHBhcmFtc1sncGFnZWxpbWl0J10pKSB7CiAgICAgICAgJHNlbmR0b2RldGFpbFsncGFnZWxpbWl0J10gPSAkcGFyYW1zWydwYWdlbGltaXQnXTsKICAgIH0KCiAgICAkb25lcm93LT5saW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGV0YWlsJywgJGRldGFpbHBhZ2UgIT0gJyc/JGRldGFpbHBhZ2U6JHJldHVybmlkLCAnJywgJHNlbmR0b2RldGFpbCwgJycsIHRydWUsIGZhbHNlLCAnJywgdHJ1ZSwgJHByZXR0eXVybCk7CiAgICAkb25lcm93LT50aXRsZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZXRhaWwnLCAkZGV0YWlscGFnZSAhPSAnJz8kZGV0YWlscGFnZTokcmV0dXJuaWQsICRyb3dbJ25hbWUnXSwgJHNlbmR0b2RldGFpbCwgJycsIGZhbHNlLCBmYWxzZSwgJycsIHRydWUsICRwcmV0dHl1cmwpOwogICAgJG9uZXJvdy0+bW9yZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZXRhaWwnLCAkZGV0YWlscGFnZSAhPSAnJz8kZGV0YWlscGFnZTokcmV0dXJuaWQsICRtb3JldGV4dCwgJHNlbmR0b2RldGFpbCwgJycsIGZhbHNlLCBmYWxzZSwgJycsIHRydWUsICRwcmV0dHl1cmwpOwogICAgJG9uZXJvdy0+bW9yZXVybCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RldGFpbCcsICRkZXRhaWxwYWdlICE9ICcnPyRkZXRhaWxwYWdlOiRyZXR1cm5pZCwgJG1vcmV0ZXh0LCAkc2VuZHRvZGV0YWlsLCAnJywgdHJ1ZSwgZmFsc2UsICcnLCB0cnVlLCAkcHJldHR5dXJsKTsKICAgICRvbmVyb3ctPnBvc3RkYXRlID0gJHJvd1snZG9jdW1lbnRfZGF0ZSddOwoKICAgICRlbnRyeWFycmF5W10gPSAkb25lcm93OwogICAgJGRicmVzdWx0LT5Nb3ZlTmV4dCgpOwp9CgokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiRzbWFydHktPmFzc2lnbigncm9vdF9wYXRoJywgJGNvbmZpZ1sncm9vdF9wYXRoJ10pOwokc21hcnR5LT5hc3NpZ24oJ3Jvb3RfdXJsJywgJGNvbmZpZ1sncm9vdF91cmwnXSk7CiRzbWFydHktPmFzc2lnbigndXBsb2Fkc19wYXRoJywgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10pOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkZW50cnlhcnJheSk7CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnlfbGFiZWwnLCAkdGhpcy0+TGFuZygnY2F0ZWdvcnlfbGFiZWwnKSk7CiRzbWFydHktPmFzc2lnbignYXV0aG9yX2xhYmVsJywgJHRoaXMtPkxhbmcoJ2F1dGhvcl9sYWJlbCcpKTsKCiRjYXROYW1lID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSkgewogICAgJGNhdE5hbWUgPSAkcGFyYW1zWydjYXRlZ29yeSddOwp9ZWxzZSBpZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpIHsKICAgICRjYXROYW1lID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyB3aGVyZSBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZD0/JywgYXJyYXkoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpOwp9CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnlfbmFtZScsICRjYXROYW1lKTsKCnVuc2V0KCRwYXJhbXNbJ3BhZ2VudW1iZXInXSk7CiRpdGVtcyA9IGRvY3VtZW50c2VhcmNoX29wczo6Z2V0X2NhdGVnb3JpZXMoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwokc21hcnR5LT5hc3NpZ24oJ2NvdW50JywgY291bnQoJGl0ZW1zKSk7CiRzbWFydHktPmFzc2lnbignY2F0cycsICRpdGVtcyk7Ci8vIEV4cG9zZSB0aGUgbGlzdCB0byBzbWFydHkuCiR0aGlzLT5zbWFydHktPmFzc2lnbigncmVjb3JkcycsICRyZWNvcmRzKTsKLy8gVGVsbCBTbWFydHkgd2hpY2ggbW9kZSB3ZSdyZSBpbgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZGUnLCAkbW9kZSk7Ci8vIGFuZCBhIGNvdW50IG9mIHJlY29yZHMKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9udW1fcmVjb3JkcycsICR0aGlzLT5MYW5nKCd0aXRsZV9udW1fcmVjb3JkcycsIGFycmF5KGNvdW50KCRyZWNvcmRzKSkpKTsKCiRjYXROYW1lID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSkgewogICAgJGNhdE5hbWUgPSAkcGFyYW1zWydjYXRlZ29yeSddOwp9IGVsc2UgaWYgKGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pKSB7CiAgICAkY2F0TmFtZSA9ICRkYi0+R2V0T25lKCdTRUxFQ1QgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgd2hlcmUgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQ9PycsIGFycmF5KCRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pKTsKfQokc21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5X25hbWUnLCAkY2F0TmFtZSk7CgppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSkpIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCAkcGFyYW1zWydtb2R1bGVfbWVzc2FnZSddKTsKfWVsc2UgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbWVzc2FnZScsICcnKTsKfQovLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKLy8gZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCRkZXRhaWxTYW1wbGUpOwovLyBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkZGV0YWlsU2FtcGxlKTsKJGNhY2hlX2lkID0gJ3xjZ2InIC4gbWQ1KHNlcmlhbGl6ZSgkcGFyYW1zKSAuICRzaG93ZHJhZnQpOwokY29tcGlsZV9pZCA9ICcnOwokdGVtcGxhdGUgPSAnZGV0YWlsU2FtcGxlJzsKZWNobyAkc21hcnR5LT5mZXRjaCgkdGhpcy0+R2V0RGF0YWJhc2VSZXNvdXJjZSgkdGVtcGxhdGUpLCAkY2FjaGVfaWQsICRjb21waWxlX2lkKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBEb2N1bWVudCBTZWFyY2gnKSkgewogIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYgKEZBTFNFID09IGVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpCiAgewogICAgJHRhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKICB9IGVsc2UgewogICR0YWIgPSAnJzsKIH0KCmlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgRG9jdW1lbnQgU2VhcmNoJykpCiAgIHsKICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdkb2N1bWVudCcsJHRoaXMtPkxhbmcoJ3RhYl9kb2N1bWVudCcpLCAoJ2RvY3VtZW50JyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjYXRlZ29yaWVzJywkdGhpcy0+TGFuZygndGFiX2NhdGVnb3JpZXMnKSwgKCdjYXRlZ29yaWVzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCd0ZW1wbGF0ZXMnLCR0aGlzLT5MYW5nKCd0YWJfdGVtcGxhdGVzJyksICgndGVtcGxhdGVzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKICAgfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgRG9jdW1lbnQgU2VhcmNoJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdkb2N1bWVudCcsICRwYXJhbXMpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX2RvY3VtZW50dGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYignY2F0ZWdvcmllcycsICRwYXJhbXMpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX2NhdGVnb3JpZXN0YWIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCd0ZW1wbGF0ZXMnLCAkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl90ZW1wbGF0ZXRhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwogIH0KCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.deletecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgRG9jdW1lbnQgU2VhcmNoJykpIHJldHVybjsKCgkkY2F0aWQgPSAnJzsKCWlmIChpc3NldCgkcGFyYW1zWydjYXRpZCddKSkKCXsKCQkkY2F0aWQgPSAkcGFyYW1zWydjYXRpZCddOwoJfQoKLy8gR2V0IHRoZSBjYXRlZ29yeSBkZXRhaWxzCiRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcwogICAgICAgICAgIFdIRVJFIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkID0gPyc7CiRyb3cgPSAkZGItPkdldFJvdyggJHF1ZXJ5LCBhcnJheSggJGNhdGlkICkgKTsKCgkvL05vdyByZW1vdmUgdGhlIGNhdGVnb3J5CgkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIFdIRVJFIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkID0gPyI7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0aWQpKTsKCi8vQW5kIHJlbW92ZSBpdCBmcm9tIGFueSBhcnRpY2xlcwokcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2ggU0VUIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkID0gLTEgV0hFUkUgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQgPSA/IjsKCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjYXRpZCkpOwoJCkAkdGhpcy0+U2VuZEV2ZW50KCdDYXRlZ29yeURlbGV0ZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRpZCwgJ25hbWUnID0+ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUnXSkpOwoJICAvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKCSAgYXVkaXQoJGNhdGlkLCAnQ2F0ZWdvcnk6ICcuJGNhdGlkLCAnIENhdGVnb3J5IGRlbGV0ZWQnKTsKCmRvY3VtZW50c2VhcmNoX2FkbWluX29wczo6VXBkYXRlSGllcmFyY2h5UG9zaXRpb25zKCk7CgoJJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnY2F0ZWdvcnlkZWxldGVkJywgJ2FjdGl2ZV90YWInID0+ICdjYXRlZ29yaWVzJyk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.deletedocument.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIERvY3VtZW50IFNlYXJjaCcpKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJywgYXJyYXkoJ1VzZSBEb2N1bWVudCBTZWFyY2gnKSkpOwogICAgcmV0dXJuOwogIH0KCiRkb2N1bWVudGlkID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydkb2N1bWVudHNlYXJjaF9pZCddKSkKICB7CiAgICAkZG9jdW1lbnRpZCA9ICRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ107CiAgfQoKZG9jdW1lbnRzZWFyY2hfYWRtaW5fb3BzOjpkZWxldGVfZG9jdW1lbnQoJGRvY3VtZW50aWQpOwoKJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnZG9jdW1lbnRkZWxldGVkJywgJ2FjdGl2ZV90YWInID0+ICdnZW5lcmFsJyk7CiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.editcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgRG9jdW1lbnQgU2VhcmNoJykpIHJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCiAgewogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7CiAgfQoKJGNhdGlkID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydjYXRpZCddKSkKICB7CiAgICAkY2F0aWQgPSAkcGFyYW1zWydjYXRpZCddOwogIH0KCgokcGFyZW50aWQgPSAnLTEnOwppZiAoaXNzZXQoJHBhcmFtc1sncGFyZW50J10pKQogIHsKICAgICRwYXJlbnRpZCA9IChpbnQpJHBhcmFtc1sncGFyZW50J107CiAgfQoKJG9yaWduYW1lID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWydvcmlnbmFtZSddKSkKICB7CiAgICAkb3JpZ25hbWUgPSAkcGFyYW1zWydvcmlnbmFtZSddOwogIH0KCiRuYW1lID0gJyc7CmlmIChpc3NldCgkcGFyYW1zWyduYW1lJ10pKQogIHsKICAgICRuYW1lID0gdHJpbSgkcGFyYW1zWyduYW1lJ10pOwogICAgaWYgKCRuYW1lICE9ICcnKQogICAgICB7CgkkcXVlcnkgPSAnU0VMRUNUIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIFdIRVJFIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUgPSA/IEFORCBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCAhPSA/JzsKCSR0bXAgPSAkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHBhcmVudGlkLCRuYW1lLCRjYXRpZCkpOwoJaWYoICR0bXAgKQoJICB7CgkgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnZXJyb3JfZHVwbGljYXRlbmFtZScpKTsKCSAgfQoJZWxzZQoJICB7CgkgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgU0VUIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUgPSA/LCBwYXJlbnRfaWQgPSA/LCBtb2RpZmllZF9kYXRlID0gJy4kZGItPkRCVGltZVN0YW1wKHRpbWUoKSkuJyBXSEVSRSBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCA9ID8nOwoJICAgICRwYXJtcyA9IGFycmF5KCRuYW1lLCRwYXJlbnRpZCk7CgkgICAgJHBhcm1zW10gPSAkY2F0aWQ7CgkgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsKCSAgICBkb2N1bWVudHNlYXJjaF9hZG1pbl9vcHM6OlVwZGF0ZUhpZXJhcmNoeVBvc2l0aW9ucygpOwoJICAgIEAkdGhpcy0+U2VuZEV2ZW50KCdOZXdzQ2F0ZWdvcnlFZGl0ZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRpZCwgJ25hbWUnID0+ICRuYW1lLCAnb3JpZ25hbWUnID0+ICRvcmlnbmFtZSkpOwoJCQkgIC8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwoJICBhdWRpdCgkY2F0aWQsICdOZXdzIGNhdGVnb3J5OiAnLiRjYXRpZCwgJyBDYXRlZ29yeSBlZGl0ZWQnKTsKCSAgICAkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdjYXRlZ29yeXVwZGF0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ2NhdGVnb3JpZXMnKTsKCSAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsJCQoJICB9CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vbmFtZWdpdmVuJykpOwogICAgICB9CiAgfQogZWxzZQogICB7CiAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIFdIRVJFIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkID0gPyc7CiAgICAgJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7CgogICAgIGlmICgkcm93KQogICAgICAgewoJICRuYW1lID0gJHJvd1snZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSddOwoJICRwYXJlbnRpZCA9IChpbnQpJHJvd1sncGFyZW50X2lkJ107CiAgICAgICB9CiAgIH0KCgojRGlzcGxheSB0ZW1wbGF0ZQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZWRpdGNhdGVnb3J5JywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ25hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRuYW1lJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICduYW1lJywgJG5hbWUsIDIwLCAyNTUpKTsKJHNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAKCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnY2F0aWQnLCAkY2F0aWQpLgoJCSAgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ29yaWduYW1lJywkbmFtZSkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRjYXRlZ29yeS50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.save_record.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24KIyAgICAgICAgIChvbGl2ZXJAdGhyZWVmb2xkLmNvLnVrKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIFBERiBhbmQgV29yZCBkb2N1bWVudAojICBjb250ZW50IHNlYXJjaGFiaWxpdHkuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9saWIvYXV0b2xvYWQucGhwJyk7CmluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9saWIvcnRmMnRleHQucGhwJyk7CgovLyBnZXQgb3VyIHJlY29yZHMgZnJvbSB0aGUgZGF0YWJhc2UKJGRiID0gJGdDbXMtPkdldERiKCk7CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkKTsKfQoKaWYgKGlzc2V0KCRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ10pICYmICRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ10gIT0gLTEpIHsKCgkvLyB3ZSByZWNlaXZlZCBhIGRvY3VtZW50c2VhcmNoX2lkIHRoYXQgd2FzIG5vdCAtMSwgd2hpY2ggbWVhbnMgd2UncmUgdXBkYXRpbmcgYW4KCS8vIGV4aXN0aW5nIHJlY29yZC4gU28gd2UgaXNzdWUgYSBTUUwgVXBkYXRlCgoJaWYgKCAhaXNzZXQoJF9GSUxFU1skaWQgLidsb2NhdGlvbmZpbGUnXVsnbmFtZSddKSB8fCAkX0ZJTEVTWyRpZCAuJ2xvY2F0aW9uZmlsZSddWyduYW1lJ10gPT0gJycgKSB7CgoJCSRwb3N0ZGF0ZSA9IHRpbWUoKTsKCQlpZiAoaXNzZXQoJHBhcmFtc1sncG9zdGRhdGVfTW9udGgnXSkpIHsKCQkJJHBvc3RkYXRlID0gbWt0aW1lKCRwYXJhbXNbJ3Bvc3RkYXRlX0hvdXInXSwgJHBhcmFtc1sncG9zdGRhdGVfTWludXRlJ10sICRwYXJhbXNbJ3Bvc3RkYXRlX1NlY29uZCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9Nb250aCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9EYXknXSwgJHBhcmFtc1sncG9zdGRhdGVfWWVhciddKTsKCQl9CgoJCS8vSWYgbm8gbmFtZSBpcyBnaXZlIG1ha2UgZmlsZSBuYW1lIHRoZSBkZWZhdWx0IG5hbWUKCQlpZiAoJHBhcmFtc1snbmFtZSddID09ICcnKSB7CgkJCSR0bXBuYW1lID0gJHBhcmFtc1snbG9jYXRpb24nXTsKICAgIAkJCSRleHQgPSBzdWJzdHIoc3RycmNocigkdG1wbmFtZSwgJy4nKSwgMSk7CgkJCSR0bXBleHQgPSAnLicgLiAkZXh0OwoJCQkkY2xlYW5uYW1lID0gc3RyX3JlcGxhY2UoJ18nLCAiICIsICR0bXBuYW1lKTsKCQkJJGNsZWFubmFtZSA9IHN0cl9yZXBsYWNlKCR0bXBleHQsICIiLCAkY2xlYW5uYW1lKTsKCQkJJHBhcmFtc1snbmFtZSddID0gJGNsZWFubmFtZTsKCQl9CgogICAgCQkkZG9jdW1lbnRpZCA9ICRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ107CgkJJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4KICAgIAkJJ21vZHVsZV9kb2N1bWVudHNlYXJjaCBzZXQgbmFtZT0/LCBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZD0/LCBhdXRob3I9PywgZG9jdW1lbnRfZGF0ZT0/IHdoZXJlIGRvY3VtZW50c2VhcmNoX2lkID0gPyc7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHBhcmFtc1snbmFtZSddLCRwYXJhbXNbJ2NhdGVnb3J5J10sJHBhcmFtc1snYXV0aG9yJ10sdHJpbSgkZGItPkRCVGltZVN0YW1wKCRwb3N0ZGF0ZSksICInIiksJHBhcmFtc1snZG9jdW1lbnRzZWFyY2hfaWQnXSkpOwoKCX0gZWxzZSB7CgoJCSRwb3N0ZGF0ZSA9IHRpbWUoKTsKCQlpZiAoaXNzZXQoJHBhcmFtc1sncG9zdGRhdGVfTW9udGgnXSkpIHsKCQkJJHBvc3RkYXRlID0gbWt0aW1lKCRwYXJhbXNbJ3Bvc3RkYXRlX0hvdXInXSwgJHBhcmFtc1sncG9zdGRhdGVfTWludXRlJ10sICRwYXJhbXNbJ3Bvc3RkYXRlX1NlY29uZCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9Nb250aCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9EYXknXSwgJHBhcmFtc1sncG9zdGRhdGVfWWVhciddKTsKCQl9CgogICAgCSRkb2N1bWVudGlkID0gJHBhcmFtc1snZG9jdW1lbnRzZWFyY2hfaWQnXTsKCiAgICAJLy8gY2hlY2sgdG8gc2VlIGlmIGEgZmlsZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgIAkkZmllbGRuYW1lID0gJGlkIC4nbG9jYXRpb25maWxlJzsKICAgIAkkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdEb2N1bWVudFNlYXJjaCcpOwogICAgCSRwID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwnZG9jdW1lbnRzZWFyY2gnKTsKICAgIAlpZiAoIWlzX2RpcigkcCkpIHsKICAgICAgCQkkcmVzID0gQG1rZGlyKCRwKTsKICAgICAgCQlpZiggJHJlcyA9PT0gRkFMU0UgKSB7CgkJCQkkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCQkkdGhpcy0+TGFuZygnZXJyb3JfbWtkaXInKSk7CgkgICAgCQlyZXR1cm4gRkFMU0U7CiAgICAgIAkJfQogICAgCX0KCiAgICAJJHAgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCdkb2N1bWVudHNlYXJjaCcsJ2lkJy4kZG9jdW1lbnRpZCk7CiAgICAJaWYgKCFpc19kaXIoJHApKSB7CiAgICAgIAkJaWYoIEBta2RpcigkcCkgPT09IEZBTFNFICkgewoJCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkJJHRoaXMtPkxhbmcoJ2Vycm9yX21rZGlyJykpOwoJICAgIAkJcmV0dXJuIEZBTFNFOwogICAgICAJCX0KICAgIAl9CgogICAgCSRmaWxlbmFtZSA9IGJhc2VuYW1lKCRfRklMRVNbJGZpZWxkbmFtZV1bJ25hbWUnXSk7CiAgICAJJGRlc3QgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCdkb2N1bWVudHNlYXJjaCcsJ2lkJy4kZG9jdW1lbnRpZCwkZmlsZW5hbWUpOwogICAgCSRwYXJhbXNbJ2xvY2F0aW9uJ10gPSAkZmlsZW5hbWU7CgogICAgCS8vIEdldCB0aGUgZmlsZXMgZXh0ZW5zaW9uCiAgICAJJGV4dCA9IHN1YnN0cihzdHJyY2hyKCRmaWxlbmFtZSwgJy4nKSwgMSk7CgogICAgCS8vIGNvbXBhcmUgaXQgYWdhaW5zdCB0aGUgJ2FsbG93ZWQgZXh0ZW50aW9ucycKICAgIAkkZXh0cyA9IGV4cGxvZGUoJywnLCRtb2QtPkdldFByZWZlcmVuY2UoJ2FsbG93ZWRfdXBsb2FkX3R5cGVzJywnJykpOwogICAgCWlmKCAhaW5fYXJyYXkoICRleHQsICRleHRzICkgKSB7CgkJCSR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRmaWxldHlwZScpKTsKCQkJcmV0dXJuIEZBTFNFOwogICAgICAJfQoKICAgIAlpZiggQGNtc19tb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1skZmllbGRuYW1lXVsndG1wX25hbWUnXSwgJGRlc3QpID09PSBGQUxTRSApIHsKCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkkdGhpcy0+TGFuZygnZXJyb3JfbW92ZWZpbGUnKSk7CgkJCXJldHVybiBGQUxTRTsKICAgICAgCX0KICAgICAgICBpZiAoJGV4dCA9PSAncGRmJykgewoKICAgICAgICAkcGFyc2VyID0gbmV3IFxTbWFsb3RcUGRmUGFyc2VyXFBhcnNlcigpOwogICAgICAgICRwZGYgPSAkcGFyc2VyLT5wYXJzZUZpbGUoJGRlc3QpOwogICAgICAgICRwYXJhbXNbJ2NvbnRlbnQnXSA9ICRwZGYtPmdldFRleHQoKTsKCgkJfSBlbHNlaWYgKCRleHQgPT0gJ2RvY3gnKSB7CgkJCWZ1bmN0aW9uIGRvY3gydGV4dCgkZmlsZW5hbWVkb2N4KSB7CiAgICAJCQlyZXR1cm4gcmVhZFppcHBlZFhNTCgkZmlsZW5hbWVkb2N4LCAid29yZC9kb2N1bWVudC54bWwiKTsKCQkJfQoJCQlmdW5jdGlvbiByZWFkWmlwcGVkWE1MKCRhcmNoaXZlRmlsZSwgJGRhdGFGaWxlKSB7CiAgICAJCQkvLyBDcmVhdGUgbmV3IFpJUCBhcmNoaXZlCiAgICAJCQkkemlwID0gbmV3IFppcEFyY2hpdmU7CgogICAgCQkJLy8gT3BlbiByZWNlaXZlZCBhcmNoaXZlIGZpbGUKICAgIAkJCWlmICh0cnVlID09PSAkemlwLT5vcGVuKCRhcmNoaXZlRmlsZSkpIHsKICAgICAgICAJCQkvLyBJZiBkb25lLCBzZWFyY2ggZm9yIHRoZSBkYXRhIGZpbGUgaW4gdGhlIGFyY2hpdmUKICAgICAgICAJCQlpZiAoKCRpbmRleCA9ICR6aXAtPmxvY2F0ZU5hbWUoJGRhdGFGaWxlKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIAkJCS8vIElmIGZvdW5kLCByZWFkIGl0IHRvIHRoZSBzdHJpbmcKICAgICAgICAgICAgCQkJJGRhdGEgPSAkemlwLT5nZXRGcm9tSW5kZXgoJGluZGV4KTsKICAgICAgICAgICAgCQkJLy8gQ2xvc2UgYXJjaGl2ZSBmaWxlCiAgICAgICAgICAgIAkJCSR6aXAtPmNsb3NlKCk7CiAgICAgICAgICAgIAkJCS8vIExvYWQgWE1MIGZyb20gYSBzdHJpbmcKICAgICAgICAgICAgCQkJLy8gU2tpcCBlcnJvcnMgYW5kIHdhcm5pbmdzCiAgICAgICAgICAgIAkJCSR4bWwgPSBET01Eb2N1bWVudDo6bG9hZFhNTCgkZGF0YSwgTElCWE1MX05PRU5UIHwgTElCWE1MX1hJTkNMVURFIHwgTElCWE1MX05PRVJST1IgfCBMSUJYTUxfTk9XQVJOSU5HKTsKICAgICAgICAgICAgCQkJLy8gUmV0dXJuIGRhdGEgd2l0aG91dCBYTUwgZm9ybWF0dGluZyB0YWdzCiAgICAgICAgICAgIAkJCXJldHVybiBzdHJpcF90YWdzKCR4bWwtPnNhdmVYTUwoKSk7CiAgICAgICAgCQkJfQogICAgICAgIAkJCSR6aXAtPmNsb3NlKCk7CiAgICAJCQl9CiAgICAJCQkvLyBJbiBjYXNlIG9mIGZhaWx1cmUgcmV0dXJuIGVtcHR5IHN0cmluZwogICAgCQkJcmV0dXJuICIiOwoJCQl9CgkJCSRwYXJhbXNbJ2NvbnRlbnQnXSA9IGRvY3gydGV4dCgkZGVzdCk7CgoJCX0gZWxzZWlmICgkZXh0ID09ICdkb2MnKSB7CgkJCWZ1bmN0aW9uIHBhcnNlV29yZCgkdXNlckRvYykgewoJCQkJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoJCQkJc2V0bG9jYWxlKExDX0FMTCwkY29uZmlnWydsb2NhbGUnXSk7CgkJCQlwdXRlbnYoJ0xDX0FMTD0nLiRjb25maWdbJ2xvY2FsZSddKTsKCQkJCSRvdXR0ZXh0ID0gc2hlbGxfZXhlYygnYW50aXdvcmQgLXcgMCAnLiR1c2VyRG9jKTsKCQkJCXJldHVybiAkb3V0dGV4dDsKCQkJfQoJCQkkcGFyYW1zWydjb250ZW50J10gPSBwYXJzZVdvcmQoJGRlc3QpOwoKCQl9IGVsc2VpZiAoJGV4dCA9PSAncnRmJykgewoJCQlmdW5jdGlvbiBwYXJzZVdvcmQoJHVzZXJEb2MpIHsKCgkJCQkkb3V0dGV4dCA9IHJ0ZjJ0ZXh0KCR1c2VyRG9jKTsKCQkJCSRvdXR0ZXh0ID0gdHJpbShwcmVnX3JlcGxhY2UoJy9cc1xzKy8nLCAnICcsICRvdXR0ZXh0KSk7CgkJCQlyZXR1cm4gc3RyX3JlcGxhY2UoJz8nLCAnJywgJG91dHRleHQpOwoJCQl9CgkJCSRwYXJhbXNbJ2NvbnRlbnQnXSA9IHBhcnNlV29yZCgkZGVzdCk7CgkJfSBlbHNlaWYgKCRleHQgPT0gJ3R4dCcpIHsKCQkJJHBhcmFtc1snY29udGVudCddID0gZmlsZV9nZXRfY29udGVudHMoJGRlc3QpOwoJCX0KCiAgICAgICAgcHJpbnRfcigkcGFyYW1zWydjb250ZW50J10pOyBleGl0OwoKCQkkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLgogICAgCQknbW9kdWxlX2RvY3VtZW50c2VhcmNoIHNldCBuYW1lPT8sIGNvbnRlbnQ9PywgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQ9PywgbG9jYXRpb249PywgYXV0aG9yPT8sIGRvY3VtZW50X2RhdGU9PyB3aGVyZSBkb2N1bWVudHNlYXJjaF9pZCA9ID8nOwoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYXJhbXNbJ25hbWUnXSwkcGFyYW1zWydjb250ZW50J10sJHBhcmFtc1snY2F0ZWdvcnknXSwkcGFyYW1zWydsb2NhdGlvbiddLCRwYXJhbXNbJ2F1dGhvciddLCc5OTk5JywkcGFyYW1zWydkb2N1bWVudHNlYXJjaF9pZCddKSk7CgoJCS8vIE1ha2UgY29udGVudCBhY2Nlc3NpYmxlIHRvIHRoZSBzZWFyY2ggbW9kdWxlCgkJJHNlYXJjaCA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnU2VhcmNoJyk7CgkJJHNlYXJjaE5hbWUgPSAkcGFyYW1zWyduYW1lJ10gLiAkcGFyYW1zWydjb250ZW50J107CgkJaWYoICRzZWFyY2ggKSB7CgkJCSRzZWFyY2gtPkFkZFdvcmRzKCAkdGhpcy0+R2V0bmFtZSgpLCAkcGFyYW1zWydkb2N1bWVudHNlYXJjaF9pZCddLCAnZG9jdW1lbnRzZWFyY2gnLCAkc2VhcmNoTmFtZSwgTlVMTCk7CgkJfQoJfQoJJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAndXBkYXRlZF9yZWNvcmQnLCAnYWN0aXZlX3RhYicgPT4gJ2RvY3VtZW50Jyk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCn0gZWxzZSB7CgoJLy8gd2UgcmVjZWl2ZWQgbm8gZG9jdW1lbnRzZWFyY2hfaWQgb3Igb25lIHRoYXQgd2FzIC0xLCB3aGljaCBtZWFucyB3ZSdyZSBjcmVhdGluZwoJLy8gYSBuZXcgcmVjb3JkLiBTbyB3ZSBpc3N1ZSBhIFNRTCBJbnNlcnQuIEJ1dCBmaXJzdCwgd2UgdXNlIHRoZSBzZXF1ZW5jZSB0byBnZXQgYSBmcmVzaCBJRAoKCWlmICggIWlzc2V0KCRfRklMRVNbJGlkIC4nbG9jYXRpb25maWxlJ11bJ25hbWUnXSkgfHwgJF9GSUxFU1skaWQgLidsb2NhdGlvbmZpbGUnXVsnbmFtZSddID09ICcnICkgewoKCQllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybl9pZCwgJHRoaXMtPkxhbmcoJ3VwbG9hZGVycm9yJykpOwoKCX0gZWxzZSB7CgoJCSRwb3N0ZGF0ZSA9IHRpbWUoKTsKCQlpZiAoaXNzZXQoJHBhcmFtc1sncG9zdGRhdGVfTW9udGgnXSkpIHsKCQkJJHBvc3RkYXRlID0gbWt0aW1lKCRwYXJhbXNbJ3Bvc3RkYXRlX0hvdXInXSwgJHBhcmFtc1sncG9zdGRhdGVfTWludXRlJ10sICRwYXJhbXNbJ3Bvc3RkYXRlX1NlY29uZCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9Nb250aCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9EYXknXSwgJHBhcmFtc1sncG9zdGRhdGVfWWVhciddKTsKCQl9CgogICAgCSRzaWQgPSAkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoX3NlcScpOwogICAgCSRkb2N1bWVudGlkID0gJHBhcmFtc1snZG9jdW1lbnRzZWFyY2hfaWQnXTsKCiAgICAJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoJCSRmaWVsZG5hbWUgPSAkaWQgLidsb2NhdGlvbmZpbGUnOwogICAgCSRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0RvY3VtZW50U2VhcmNoJyk7CiAgICAJJHAgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCdkb2N1bWVudHNlYXJjaCcpOwogICAgCWlmICghaXNfZGlyKCRwKSkgewogICAgICAJCSRyZXMgPSBAbWtkaXIoJHApOwogICAgICAJCQlpZiggJHJlcyA9PT0gRkFMU0UgKSB7CgkJCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAJCSR0aGlzLT5MYW5nKCdlcnJvcl9ta2RpcicpKTsKCSAgICAJCQlyZXR1cm4gRkFMU0U7CiAgICAgIAkJCX0KICAgIAl9CgogICAgCSRwID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSwnZG9jdW1lbnRzZWFyY2gnLCdpZCcuJHNpZCk7CiAgICAJaWYgKCFpc19kaXIoJHApKSB7CiAgICAgIAkJaWYoIEBta2RpcigkcCkgPT09IEZBTFNFICkgewoJCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAJJHRoaXMtPkxhbmcoJ2Vycm9yX21rZGlyJykpOwoJICAgIAkJcmV0dXJuIEZBTFNFOwogICAgICAJCX0KICAgIAl9CgogICAgCSRmaWxlbmFtZSA9IGJhc2VuYW1lKCRfRklMRVNbJGZpZWxkbmFtZV1bJ25hbWUnXSk7CiAgICAJJGRlc3QgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCdkb2N1bWVudHNlYXJjaCcsJ2lkJy4kc2lkLCRmaWxlbmFtZSk7CiAgICAJJHBhcmFtc1snbG9jYXRpb24nXSA9ICRmaWxlbmFtZTsKCiAgICAJLy8gR2V0IHRoZSBmaWxlcyBleHRlbnNpb24KICAgIAkkZXh0ID0gc3Vic3RyKHN0cnJjaHIoJGZpbGVuYW1lLCAnLicpLCAxKTsKCiAgICAJLy8gY29tcGFyZSBpdCBhZ2FpbnN0IHRoZSAnYWxsb3dlZCBleHRlbnRpb25zJwogICAgCSRleHRzID0gZXhwbG9kZSgnLCcsJG1vZC0+R2V0UHJlZmVyZW5jZSgnYWxsb3dlZF91cGxvYWRfdHlwZXMnLCcnKSk7CiAgICAJaWYoICFpbl9hcnJheSggJGV4dCwgJGV4dHMgKSApIHsKCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZGZpbGV0eXBlJykpOwoJCQlyZXR1cm4gRkFMU0U7CiAgICAgIAl9CgogICAgCWlmKCBAY21zX21vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyRmaWVsZG5hbWVdWyd0bXBfbmFtZSddLCAkZGVzdCkgPT09IEZBTFNFICkgewoJCQkkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSR0aGlzLT5MYW5nKCdlcnJvcl9tb3ZlZmlsZScpKTsKCQkJcmV0dXJuIEZBTFNFOwogICAgICAJfQogICAgICAgIGlmICgkZXh0ID09ICdwZGYnKSB7CgogICAgICAgIAkkcGFyc2VyID0gbmV3IFxTbWFsb3RcUGRmUGFyc2VyXFBhcnNlcigpOwogICAgICAgIAkkcGRmID0gJHBhcnNlci0+cGFyc2VGaWxlKCRkZXN0KTsKICAgICAgICAJJHBhcmFtc1snY29udGVudCddID0gJHBkZi0+Z2V0VGV4dCgpOwoKCQl9IGVsc2VpZiAoJGV4dCA9PSAnZG9jeCcpIHsKCQkJZnVuY3Rpb24gZG9jeDJ0ZXh0KCRmaWxlbmFtZWRvY3gpIHsKICAgIAkJCXJldHVybiByZWFkWmlwcGVkWE1MKCRmaWxlbmFtZWRvY3gsICJ3b3JkL2RvY3VtZW50LnhtbCIpOwoJCQl9CgkJCWZ1bmN0aW9uIHJlYWRaaXBwZWRYTUwoJGFyY2hpdmVGaWxlLCAkZGF0YUZpbGUpIHsKICAgIAkJCS8vIENyZWF0ZSBuZXcgWklQIGFyY2hpdmUKICAgIAkJCSR6aXAgPSBuZXcgWmlwQXJjaGl2ZTsKCiAgICAJCQkvLyBPcGVuIHJlY2VpdmVkIGFyY2hpdmUgZmlsZQogICAgCQkJaWYgKHRydWUgPT09ICR6aXAtPm9wZW4oJGFyY2hpdmVGaWxlKSkgewogICAgICAgIAkJCS8vIElmIGRvbmUsIHNlYXJjaCBmb3IgdGhlIGRhdGEgZmlsZSBpbiB0aGUgYXJjaGl2ZQogICAgICAgIAkJCWlmICgoJGluZGV4ID0gJHppcC0+bG9jYXRlTmFtZSgkZGF0YUZpbGUpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgCQkJLy8gSWYgZm91bmQsIHJlYWQgaXQgdG8gdGhlIHN0cmluZwogICAgICAgICAgICAJCQkkZGF0YSA9ICR6aXAtPmdldEZyb21JbmRleCgkaW5kZXgpOwogICAgICAgICAgICAJCQkvLyBDbG9zZSBhcmNoaXZlIGZpbGUKICAgICAgICAgICAgCQkJJHppcC0+Y2xvc2UoKTsKICAgICAgICAgICAgCQkJLy8gTG9hZCBYTUwgZnJvbSBhIHN0cmluZwogICAgICAgICAgICAJCQkvLyBTa2lwIGVycm9ycyBhbmQgd2FybmluZ3MKICAgICAgICAgICAgCQkJJHhtbCA9IERPTURvY3VtZW50Ojpsb2FkWE1MKCRkYXRhLCBMSUJYTUxfTk9FTlQgfCBMSUJYTUxfWElOQ0xVREUgfCBMSUJYTUxfTk9FUlJPUiB8IExJQlhNTF9OT1dBUk5JTkcpOwogICAgICAgICAgICAJCQkvLyBSZXR1cm4gZGF0YSB3aXRob3V0IFhNTCBmb3JtYXR0aW5nIHRhZ3MKICAgICAgICAgICAgCQkJcmV0dXJuIHN0cmlwX3RhZ3MoJHhtbC0+c2F2ZVhNTCgpKTsKICAgICAgICAJCQl9CiAgICAgICAgCQkJJHppcC0+Y2xvc2UoKTsKICAgIAkJCX0KICAgIAkJCS8vIEluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm4gZW1wdHkgc3RyaW5nCiAgICAJCQlyZXR1cm4gIiI7CgkJCX0KCQkJJHBhcmFtc1snY29udGVudCddID0gZG9jeDJ0ZXh0KCRkZXN0KTsKCQl9IGVsc2VpZiAoJGV4dCA9PSAnZG9jJykgewoJCQlmdW5jdGlvbiBwYXJzZVdvcmQoJHVzZXJEb2MpIHsKCQkJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCQkJCXNldGxvY2FsZShMQ19BTEwsJGNvbmZpZ1snbG9jYWxlJ10pOwoJCQkJcHV0ZW52KCdMQ19BTEw9Jy4kY29uZmlnWydsb2NhbGUnXSk7CgkJCQkkb3V0dGV4dCA9IEBzaGVsbF9leGVjKCdhbnRpd29yZCAtdyAwICcuJHVzZXJEb2MpOwoJCQkJcmV0dXJuICRvdXR0ZXh0OwoJCQl9CgkJCSRwYXJhbXNbJ2NvbnRlbnQnXSA9IHBhcnNlV29yZCgkZGVzdCk7CgkJfSBlbHNlaWYgKCRleHQgPT0gJ3J0ZicpIHsKCQkJZnVuY3Rpb24gcGFyc2VXb3JkKCR1c2VyRG9jKSB7CgoJCQkJJG91dHRleHQgPSBydGYydGV4dCgkdXNlckRvYyk7CgkJCQkkb3V0dGV4dCA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvXHNccysvJywgJyAnLCAkb3V0dGV4dCkpOwoJCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCc/JywgJycsICRvdXR0ZXh0KTsKCQkJfQoJCQkkcGFyYW1zWydjb250ZW50J10gPSBwYXJzZVdvcmQoJGRlc3QpOwoJCX0gZWxzZWlmICgkZXh0ID09ICd0eHQnKSB7CgkJCSRwYXJhbXNbJ2NvbnRlbnQnXSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkZXN0KTsKCQl9CgoJCWlmICgkcGFyYW1zWyduYW1lJ10gPT0gJycpIHsKCQkJJHRtcG5hbWUgPSAkcGFyYW1zWydsb2NhdGlvbiddOwoJCQkkdG1wZXh0ID0gJy4nIC4gJGV4dDsKCQkJJGNsZWFubmFtZSA9IHN0cl9yZXBsYWNlKCdfJywgIiAiLCAkdG1wbmFtZSk7CgkJCSRjbGVhbm5hbWUgPSBzdHJfcmVwbGFjZSgkdG1wZXh0LCAiIiwgJGNsZWFubmFtZSk7CgkJCSRwYXJhbXNbJ25hbWUnXSA9ICRjbGVhbm5hbWU7CgkJfQoKCQkkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuCiAgICAJCSdtb2R1bGVfZG9jdW1lbnRzZWFyY2ggKGRvY3VtZW50c2VhcmNoX2lkLCBuYW1lLCBjb250ZW50LCBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCwgbG9jYXRpb24sIGF1dGhvciwgZG9jdW1lbnRfZGF0ZSkgVkFMVUVTICg/LD8sPyw/LD8sPyw/KSc7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNpZCwkcGFyYW1zWyduYW1lJ10sJHBhcmFtc1snY29udGVudCddLCRwYXJhbXNbJ2NhdGVnb3J5J10sJHBhcmFtc1snbG9jYXRpb24nXSwkcGFyYW1zWydhdXRob3InXSx0cmltKCRkYi0+REJUaW1lU3RhbXAoJHBvc3RkYXRlKSwgIiciKSkpOwoKCQkvLyBNYWtlIGNvbnRlbnQgYWNjZXNzaWJsZSB0byB0aGUgc2VhcmNoIG1vZHVsZQoJCSRzZWFyY2ggPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ1NlYXJjaCcpOwoJCSRzZWFyY2hOYW1lID0gJHBhcmFtc1snbmFtZSddIC4gJHBhcmFtc1snY29udGVudCddOwoJCWlmKCAkc2VhcmNoICkgewoJCQkkc2VhcmNoLT5BZGRXb3JkcyggJHRoaXMtPkdldG5hbWUoKSwgJHNpZCwgJ2RvY3VtZW50c2VhcmNoJywgJHNlYXJjaE5hbWUsIE5VTEwpOwoJCX0KCQkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdhZGRlZF9yZWNvcmQnLCAnYWN0aXZlX3RhYicgPT4gJ2RvY3VtZW50Jyk7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7Cgl9Cn0KCmlmICgkcmVzdWx0ID09PSBmYWxzZSkgewoJLy8geWVhaCwgdGhhdCdzIGdyYWNlZnVsIDooCgllY2hvICJEYXRhYmFzZSBlcnJvciEiOwoJZXhpdDsKfQoKdW5zZXQoJHBhcmFtc1snZG9jdW1lbnRzZWFyY2hfaWQnXSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/DocumentSearch.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24KIyAgICAgICAgIChvbGl2ZXJAdGhyZWVmb2xkLmNvLnVrKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIFBERiBhbmQgV29yZCBkb2N1bWVudAojICBjb250ZW50IHNlYXJjaGFiaWxpdHkuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgRG9jdW1lbnRTZWFyY2ggZXh0ZW5kcyBDTVNNb2R1bGUKewoKICBmdW5jdGlvbiBHZXROYW1lKCkKICB7CiAgICByZXR1cm4gJ0RvY3VtZW50U2VhcmNoJzsKICB9CgogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKICB9CgogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS40LjYnOwogIH0KCiAgZnVuY3Rpb24gR2V0SGVscCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7CiAgfQoKICBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAnb2xpdmVyc2VkZG9uJzsKICB9CgogIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICB7CiAgICByZXR1cm4gJ29saXZlckB0aHJlZWZvbGQuY28udWsnOwogIH0KCiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwogIH0KCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKICB7CiAgICByZXR1cm4gJ2NvbnRlbnQnOwogIH0KCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KCiAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIERvY3VtZW50IFNlYXJjaCcpOwogIH0KCiAgZnVuY3Rpb24gR2V0RGFzaGJvYXJkT3V0cHV0KCkKICB7CgkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKCSRyY291bnQgPSAkZGItPkdldE9uZSgnc2VsZWN0IGNvdW50KCopIGZyb20gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9kb2N1bWVudHNlYXJjaCcpOwoKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZGFzaF9yZWNvcmRfY291bnQnLCRyY291bnQpOwogIH0KCiAgZnVuY3Rpb24gRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5faWQsICRtZXNzYWdlPScnKQogICAgewoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfZXJyb3InLCAkdGhpcy0+TGFuZygnZXJyb3InKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignbWVzc2FnZScsICRtZXNzYWdlKTsKCiAgICAgICAgLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCiAgICAgICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlcnJvci50cGwnKTsKICAgIH0KCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKICB7CiAgICByZXR1cm4gYXJyYXkoKTsKICB9CgogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gIjEuMTEiOwogIH0KCiAgZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS4xNSI7CiAgfQoKICBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQoJewoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjYXRlZ29yeScsICdHZW5lcmFsJywgJHRoaXMtPkxhbmcoJ2hlbHBfY2F0ZWdvcnknKSk7CgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3NvcnRieScsICdkYXRlJywgJHRoaXMtPkxhbmcoJ2hlbHBfc29ydGJ5JykpOwoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzb3J0ZGVzYycsICd0cnVlJywgJHRoaXMtPkxhbmcoJ2hlbHBfc29ydGRlc2MnKSk7Cgl9CgogIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgewogICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwoKCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvZG9jdW1lbnRzZWFyY2hcL3ZpZXdcLyg/UDxkb2N1bWVudHNlYXJjaF9pZD5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJyxhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnKSk7CgoJJGdDbXMgPSBjbXNtcygpOwoJJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCSRyZXR1cm5pZCA9ICRjb250ZW50b3BzLT5HZXREZWZhdWx0Q29udGVudCgpOwoJLy8gVGhlIHByZXZpb3VzIHRocmVlIGxpbmVzIGFyZSB0byBnZXQgYSByZXR1cm5pZDsgbWFueSBtb2R1bGVzLCBsaWtlIE5ld3MsIGhhdmUgYSBkZWZhdWx0CgkvLyBwYWdlIGluIHdoaWNoIHRvIGRpc3BsYXkgZGV0YWlsIHZpZXdzLiBJbiB0aGF0IGNhc2UsIHRoZSBwYWdlX2lkIHdvdWxkIGJlIHVzZWQgZm9yIHJldHVybmlkLgoKCS8vIFRoZSBuZXh0IHRocmVlIGxpbmVzIGFyZSB3aGVyZSB3ZSBtYXAgdGhlIFVSTCB0byBvdXIgZGV0YWlsIHBhZ2UuCgkkcGFybXMgPSBhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnLCdkb2N1bWVudHNlYXJjaF9pZCc9PjEsJ3JldHVybmlkJz0+JHJldHVybmlkKTsKCSRyb3V0ZSA9IG5ldyBDbXNSb3V0ZSgndGhpcy9pcy9pbnNhbmVseS9ncmVhdC9zdHVmZicsJHRoaXMtPkdldE5hbWUoKSwkcGFybXMsVFJVRSk7CgljbXNfcm91dGVfbWFuYWdlcjo6cmVnaXN0ZXIoJHJvdXRlKTsKCgogICAvLyBEb24ndCBhbGxvdyBwYXJhbWV0ZXJzIG90aGVyIHRoYW4gdGhlIG9uZXMgeW91J3ZlIGV4cGxpY2l0bHkgZGVmaW5lZAogICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgogICAvLyBzeW50YXggZm9yIGNyZWF0aW5nIGEgcGFyYW1ldGVyIGlzIHBhcmFtZXRlciBuYW1lLCBkZWZhdWx0IHZhbHVlLCBkZXNjcmlwdGlvbgogICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkb2N1bWVudHNlYXJjaF9pZCcsIC0xLCAkdGhpcy0+TGFuZygnaGVscF9kb2N1bWVudHNlYXJjaF9pZCcpKTsKCiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkb2N1bWVudHNlYXJjaF9pZCcsQ0xFQU5fSU5UKTsKCiAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ21vZHVsZV9tZXNzYWdlJywnJywkdGhpcy0+TGFuZygnaGVscF9tb2R1bGVfbWVzc2FnZScpKTsKICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vZHVsZV9tZXNzYWdlJyxDTEVBTl9TVFJJTkcpOwoKICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbmFtZScsJycsJHRoaXMtPkxhbmcoJ2hlbHBfZGVzY3JpcHRpb24nKSk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCduYW1lJyxDTEVBTl9TVFJJTkcpOwoKICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignY29udGVudCcsJycsJHRoaXMtPkxhbmcoJ2hlbHBfZXhwbGFuYXRpb24nKSk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb250ZW50JyxDTEVBTl9TVFJJTkcpOwoKICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbG9jYXRpb24nLCcnLCR0aGlzLT5MYW5nKCdoZWxwX2V4cGxhbmF0aW9uJykpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbG9jYXRpb24nLENMRUFOX1NUUklORyk7CgogICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhdXRob3InLCcnLCR0aGlzLT5MYW5nKCdoZWxwX2F1dGhvcicpKTsKICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2F1dGhvcicsQ0xFQU5fU1RSSU5HKTsKCiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYW5jZWwnLENMRUFOX1NUUklORyk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdleHRlbnNpb24nLENMRUFOX1NUUklORyk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpY29ucGF0aCcsQ0xFQU5fU1RSSU5HKTsKCiAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5JywgJ0dlbmVyYWwnLCAkdGhpcy0+bGFuZygnaGVscGNhdGVnb3J5dGV4dCcpKTsKICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhdGVnb3J5JyxDTEVBTl9TVFJJTkcpOwoKICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc29ydGJ5JywgJ2RvY3VtZW50X2RhdGUnLCAkdGhpcy0+bGFuZygnaGVscHNvcnRieScpKTsKICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NvcnRieScsQ0xFQU5fU1RSSU5HKTsKCiAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3NvcnRkZXNjJywgJ3RydWUnLCAkdGhpcy0+bGFuZygnaGVscHNvcnRkZXNjJykpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc29ydGRlc2MnLENMRUFOX1NUUklORyk7CgogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncG9zdGRhdGUnLENMRUFOX1NUUklORyk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwb3N0ZGF0ZV9Ib3VyJyxDTEVBTl9TVFJJTkcpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncG9zdGRhdGVfTWludXRlJyxDTEVBTl9TVFJJTkcpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncG9zdGRhdGVfU2Vjb25kJyxDTEVBTl9TVFJJTkcpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncG9zdGRhdGVfTW9udGgnLENMRUFOX1NUUklORyk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwb3N0ZGF0ZV9EYXknLENMRUFOX1NUUklORyk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwb3N0ZGF0ZV9ZZWFyJyxDTEVBTl9TVFJJTkcpOwoKCiAgfQoKICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uICggJGV2ZW50bmFtZSApCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9pbmZvXycuJGV2ZW50bmFtZSApOwogIH0KCiAgZnVuY3Rpb24gR2V0RXZlbnRIZWxwICggJGV2ZW50bmFtZSApCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9oZWxwXycuJGV2ZW50bmFtZSApOwogIH0KCiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7CiAgfQoKICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7CiAgfQoKICBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsKICB9CgoKCWZ1bmN0aW9uIFNlYXJjaFJlc3VsdCgkcmV0dXJuaWQsICRhcnRpY2xlaWQsICRhdHRyID0gJycpIHsKCQkkZG9jdW1lbnRpZCA9ICRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ107CgkJaWYgKCFlbXB0eSgkZG9jdW1lbnRpZCkpICRyZXR1cm5pZCA9ICRkb2N1bWVudGlkOwoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCWlmICgkYXR0ciA9PSAnZG9jdW1lbnRzZWFyY2gnKSB7CgkJCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwoJCQkkcSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2RvY3VtZW50c2VhcmNoIFdIRVJFIGRvY3VtZW50c2VhcmNoX2lkID0gPyc7CgkJCSRyb3cgPSAkZGItPkdldFJvdygkcSwgYXJyYXkoJGFydGljbGVpZCkgKTsKCQkJaWYgKCRyb3cpIHsKCQkJCSRyZXN1bHRbMF0gPSB1dGY4X2VuY29kZShodG1sX2VudGl0eV9kZWNvZGUoJHRoaXMtPkdldEZyaWVuZGx5TmFtZSgpKSk7CgkJCQkkcmVzdWx0WzFdID0gJHJvd1snbmFtZSddOwoJCQkJJHByZXR0eXVybCA9ICd1cGxvYWRzL2RvY3VtZW50c2VhcmNoL2lkJy4kcm93Wydkb2N1bWVudHNlYXJjaF9pZCddLicvJy4kcm93Wydsb2NhdGlvbiddOwoJCQkJJHJlc3VsdFsyXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCdjbnRudDAxJywgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICRyb3dbJ25hbWUnXSwKCQkJCSAgICAgICBhcnJheSgnZG9jdW1lbnRzZWFyY2hfaWQnID0+ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2lkJ10pLAoJCQkJICAgICAgICcnLCB0cnVlLCB0cnVlLCAnJywgdHJ1ZSwgJHByZXR0eXVybCk7CgkJCX0KCQl9CgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgoKCWZ1bmN0aW9uIFNlYXJjaFJlaW5kZXgoJG1vZHVsZSkgewoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgoJCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfZG9jdW1lbnRzZWFyY2ggT1JERVIgQlkgZG9jdW1lbnRzZWFyY2hfaWQnOwoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCgkJd2hpbGUgKCRyZXN1bHQgJiYgISRyZXN1bHQtPkVPRikgewoJCQkkbW9kdWxlLT5BZGRXb3JkcygkdGhpcy0+R2V0bmFtZSgpLCAkcmVzdWx0LT5maWVsZHNbJ2RvY3VtZW50c2VhcmNoX2lkJ10sICdkb2N1bWVudHNlYXJjaCcsICRyZXN1bHQtPmZpZWxkc1snY29udGVudCddLCBOVUxMKTsKCQkJJHJlc3VsdC0+TW92ZU5leHQoKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIERvQWN0aW9uICgkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5faWQgPSAtMSkgewoJCXN3aXRjaCAoJGFjdGlvbikgewoJCQljYXNlICd1cGRhdGV0ZW1wbGF0ZSc6IHsKCQkJCS8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkJCQlpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbiAoJ01vZGlmeSBUZW1wbGF0ZXMnKSkgewoJCQkJCWlmIChpc3NldCAoJHBhcmFtc1snZGVmYXVsdGJ1dHRvbiddKSkgewoJCQkJCQkkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9kb2N1bWVudHNlYXJjaF9saXN0LnRwbCc7CgkJCQkJCWlmKCBmaWxlX2V4aXN0cygkZm4pICkgewoJCQkJCQkJJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CgkJCQkJCQkkdGhpcy0+U2V0VGVtcGxhdGUoICdkZXRhaWxTYW1wbGUnLCAkdGVtcGxhdGUpOwoJCQkJCQl9CgkJCQkJfSBlbHNlIHsKCQkJCQkJJHRoaXMtPlNldFRlbXBsYXRlICgnZGV0YWlsU2FtcGxlJywgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10pOwoJCQkJCX0KCSAgCQkJCSRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ3RlbXBsYXRldXBkYXRlZCcsICdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJyk7CgkgIAkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsKCQkJCX0KCQkJfQoKCQkJZGVmYXVsdDoKCQkJCXBhcmVudDo6RG9BY3Rpb24oICRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybl9pZCApOwoJCQkJYnJlYWs7CgkJfQoJfQoKCgoKfSAvL2VuZCBjbGFzcwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_categoriestab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24KIyAgICAgICAgIChvbGl2ZXJAdGhyZWVmb2xkLmNvLnVrKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIFBERiBhbmQgV29yZCBkb2N1bWVudAojICBjb250ZW50IHNlYXJjaGFiaWxpdHkuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIERvY3VtZW50IFNlYXJjaCcpICkgcmV0dXJuOwoKICAgICR0aGVtZU9iamVjdCA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOwoKCSNQdXQgdG9nZXRoZXIgYSBsaXN0IG9mIGN1cnJlbnQgY2F0ZWdvcmllcy4uLgoJJGVudHJ5YXJyYXkgPSBhcnJheSgpOwoKCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHkiOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgoJJHJvd2NsYXNzID0gJ3JvdzEnOwoKCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCQkkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CgoJCSRkZXB0aCA9IGNvdW50KHByZWdfc3BsaXQoJy9cLi8nLCAkcm93WydoaWVyYXJjaHknXSkpOwoKCQkkb25lcm93LT5pZCA9ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ107CgkJJG9uZXJvdy0+bmFtZSA9IHN0cl9yZXBlYXQoJyZuYnNwOyZndDsmbmJzcDsnLCAkZGVwdGgtMSkuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCAkcm93Wydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lJ10sIGFycmF5KCdjYXRpZCc9PiRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ10pKTsKCgkJJG9uZXJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0Y2F0ZWdvcnknLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCdjYXRpZCc9PiRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ10pKTsKCQkkb25lcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlY2F0ZWdvcnknLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgnY2F0aWQnPT4kcm93Wydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCddKSwgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSk7CgoJCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwoKCQkkZW50cnlhcnJheVtdID0gJG9uZXJvdzsKCgkJKCRyb3djbGFzcz09InJvdzEiPyRyb3djbGFzcz0icm93MiI6JHJvd2NsYXNzPSJyb3cxIik7Cgl9CgoJJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7CgoJI1NldHVwIGxpbmtzCgkkc21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRjYXRlZ29yeScsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FkZGNhdGVnb3J5JyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICdjbGFzcz0icGFnZW9wdGlvbnMiJykpOwoJJHNtYXJ0eS0+YXNzaWduKCdhZGRsaW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkY2F0ZWdvcnknLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3Zm9sZGVyLmdpZicsICR0aGlzLT5MYW5nKCdhZGRjYXRlZ29yeScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICcnKSAuJyAnLiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRjYXRlZ29yeScsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FkZGNhdGVnb3J5JyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICdjbGFzcz0icGFnZW9wdGlvbnMiJykpOwoKCSRzbWFydHktPmFzc2lnbignY2F0ZWdvcnl0ZXh0JywgJHRoaXMtPkxhbmcoJ2NhdGVnb3J5JykpOwoKCSNEaXNwbGF5IHRlbXBsYXRlCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NhdGVnb3J5bGlzdC50cGwnKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_documenttab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24KIyAgICAgICAgIChvbGl2ZXJAdGhyZWVmb2xkLmNvLnVrKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIFBERiBhbmQgV29yZCBkb2N1bWVudAojICBjb250ZW50IHNlYXJjaGFiaWxpdHkuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgokdGhlbWVPYmplY3QgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsKCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQpKTsKCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfbWFzc2RlbGV0ZSddKSApIHsKCWlmKCBpc3NldCgkcGFyYW1zWydzZWwnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snc2VsJ10pICYmIGNvdW50KCRwYXJhbXNbJ3NlbCddKSA+IDAgKSB7CgkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGRvY3VtZW50c2VhcmNoX2RvY3VtZW50X2lkICkgewoJCQlkb2N1bWVudHNlYXJjaF9hZG1pbl9vcHM6OmRlbGV0ZV9kb2N1bWVudCggJGRvY3VtZW50c2VhcmNoX2RvY3VtZW50X2lkICk7CgkJCSRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ2RlbGV0ZV9tdWx0aXBsZScsICdhY3RpdmVfdGFiJyA9PiAnZG9jdW1lbnQnKTsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgkJfQoJfQp9CgokZGIgPSAkZ0Ntcy0+R2V0RGIoKTsKCiRxdWVyeSA9J1NFTEVDVCBhLmRvY3VtZW50c2VhcmNoX2lkLCBhLm5hbWUsIGNvbnRlbnQsIGIuZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSBhcyBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCwgbG9jYXRpb24gZnJvbSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoIGEsICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyBiJzsKJHF1ZXJ5IC49ICAnIHdoZXJlIGEuZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQ9Yi5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCc7CgppZiAoaXNzZXQoJHBhcmFtc1snZG9jdW1lbnRzZWFyY2hfaWQnXSkpIHsKICAgLy8gKkFMV0FZUyogdXNlIHBhcmFtZXRlcml6ZWQgcXVlcmllcyB3aXRoIHVzZXItcHJvdmlkZWQgaW5wdXQKICAgLy8gdG8gcHJldmVudCBTUUwtSW5qZWN0aW9uIGF0dGFja3MhCiAgICRxdWVyeSAuPSAnIGFuZCBhLmRvY3VtZW50c2VhcmNoX2lkID0gPyc7CiAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRwYXJhbXNbJ2RvY3VtZW50c2VhcmNoX2lkJ10pKTsKICAgJG1vZGUgPSAnZGV0YWlsJzsgLy8gd2UncmUgdmlld2luZyBhIHNpbmdsZSByZWNvcmQKfSBlbHNlIHsKICAgLy8gd2UncmUgbm90IGdldHRpbmcgYSBzcGVjaWZpYyByZWNvcmQsIHNvIHNob3cgJ2VtIGFsbC4gUHJvYmFibHkgc2hvdWxkIHBhZ2luYXRlLgogIGlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSAmJiAoJHBhcmFtc1snY2F0ZWdvcnknXSA+IDApKSB7CgkkcXVlcnkgLj0gJyBhbmQgYS5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCA9Pyc7CgkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWydjYXRlZ29yeSddKSk7CiAgfSBlbHNlIHsKCSRwYXJhbXNbJ2NhdGVnb3J5J109Jyc7CgkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgfQogICRtb2RlID0gJ3N1bW1hcnknOyAvLyB3ZSdyZSB2aWV3aW5nIGEgbGlzdCBvZiByZWNvcmRzCn0KCiRjYXRlZ29yeWxpc3QgPSBhcnJheSgpOwokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgT1JERVIgQlkgaGllcmFyY2h5IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7Cgp3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKCSRjYXRlZ29yeWxpc3RbJHJvd1snZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSddXSA9ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ107Cn0KCiR1c2VkY2F0ZWdvcnkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9jYXRlZ29yeScsICcnKTsKaWYgKGlzc2V0KCRjYXRlZ29yeSkpCXsKCSR1c2VkY2F0ZWdvcnkgPSAkY2F0ZWdvcnk7Cn0KCiRvbmNoYW5nZXRleHQ9J2lkPSJjYXRlZ29yeSInOwoKJHJvd2NsYXNzID0gJ3JvdzEnOwoKJHJlY29yZHMgPSBhcnJheSgpOwp3aGlsZSAoJHJlc3VsdCAhPT0gZmFsc2UgJiYgJHJvdz0kcmVzdWx0LT5GZXRjaFJvdygpKSB7CgkvLyBjcmVhdGUgYSBuZXcgb2JqZWN0IGZvciBldmVyeSByZWNvcmQgdGhhdCB3ZSByZXRyaWV2ZQoJJHJlYyA9IG5ldyBzdGRDbGFzcygpOwogICAgJHJlYy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgkkcmVjLT5pZCA9ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2lkJ107CgkkcmVjLT5uYW1lID0gJHJvd1snbmFtZSddOwoJJHJlYy0+Y29udGVudCA9ICRyb3dbJ2NvbnRlbnQnXTsKCSRyZWMtPmxvY2F0aW9uID0gJHJvd1snbG9jYXRpb24nXTsKCSRyZWMtPmNhdGVnb3J5ID0gJHJvd1snZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnXTsKCSRyZWMtPnNlbGVjdCA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnc2VsW10nLCRyb3dbJ2RvY3VtZW50c2VhcmNoX2lkJ10pOwoJJHJlYy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfZWRpdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksJycsJycsJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2RvY3VtZW50c2VhcmNoX2lkJz0+JHJlYy0+aWQpKTsKCSRyZWMtPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVkb2N1bWVudCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCdkb2N1bWVudHNlYXJjaF9pZCc9PiRyZWMtPmlkKSwgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSk7CglhcnJheV9wdXNoKCRyZWNvcmRzLCRyZWMpOwoKICAgICgkcm93Y2xhc3M9PSJyb3cxIj8kcm93Y2xhc3M9InJvdzIiOiRyb3djbGFzcz0icm93MSIpOwp9CgovLyBFeHBvc2UgdGhlIGxpc3QgdG8gc21hcnR5LgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlY29yZHMnLCRyZWNvcmRzKTsKJHNtYXJ0eS0+YXNzaWduKCdyZWNvcmRjb3VudCcsIGNvdW50KCRyZWNvcmRzKSk7CgovLyBUZWxsIFNtYXJ0eSB3aGljaCBtb2RlIHdlJ3JlIGluCiR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kZScsJG1vZGUpOwoKLy8gYW5kIGEgY291bnQgb2YgcmVjb3JkcwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX251bV9yZWNvcmRzJywkdGhpcy0+TGFuZygndGl0bGVfbnVtX3JlY29yZHMnLGFycmF5KGNvdW50KCRyZWNvcmRzKSkpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkJywgJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsICRyZXR1cm5pZCwgJ2FkZF9lZGl0JywgJHRoaXMtPkxhbmcoJ2FkZF9yZWNvcmQnKSwgYXJyYXkoKSwgJycsIGZhbHNlLHRydWUsICcnLCBmYWxzZSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yeScsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcERvd24oJGlkLCAnY2F0ZWdvcnknLCAkY2F0ZWdvcnlsaXN0LCAtMSwgJHVzZWRjYXRlZ29yeSwgJG9uY2hhbmdldGV4dCkpOwoKLy8gQ29udGVudCBkZWZpbmVzIGFuZCBGb3JtIHN0dWZmIGZvciB0aGUgYWRtaW4KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2RlbGV0ZScsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzZGVsZXRlJywkdGhpcy0+TGFuZygnZGVsZXRlX3NlbGVjdGVkJyksICcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2RlbGV0ZW11bHRpcGxlJykpKTsKCi8vIHRyYW5zbGF0ZWQgc3RyaW5ncwokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2FsbG93X2FkZCcsJHRoaXMtPkxhbmcoJ3RpdGxlX2FsbG93X2FkZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd3ZWxjb21ldGV4dCcsJHRoaXMtPkxhbmcoJ3dlbGNvbWV0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2lkdGV4dCcsJHRoaXMtPkxhbmcoJ2lkdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCduYW1ldGV4dCcsJHRoaXMtPkxhbmcoJ25hbWV0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2ZpbGV0ZXh0JywkdGhpcy0+TGFuZygnZmlsZXRleHQnKSk7CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnl0ZXh0JywkdGhpcy0+TGFuZygnY2F0ZWdvcnl0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ3NlbGVjdHRleHQnLCR0aGlzLT5MYW5nKCdzZWxlY3R0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2ZpbHRlcnRleHQnLCAkdGhpcy0+TGFuZygnZmlsdGVydGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJhbGx0ZXh0JywgJHRoaXMtPkxhbmcoJ2ZpbHRlcmFsbHRleHQnKSk7CgppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX21lc3NhZ2UnXSkpIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX21lc3NhZ2UnLCRwYXJhbXNbJ21vZHVsZV9tZXNzYWdlJ10pOwp9IGVsc2UgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbWVzc2FnZScsJycpOwp9Ci8vZWNobyAkc3VibWl0X21hc3NkZWxldGU7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucGFuZWwudHBsJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_templatetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAndXBkYXRldGVtcGxhdGUnKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignZGVmYXVsdF9kZXRhaWxfdGVtcGxhdGUnLAoJCSR0aGlzLT5DcmVhdGVUZXh0QXJlYSAoZmFsc2UsICRpZCwgJHRoaXMtPkdldFRlbXBsYXRlKCdkZXRhaWxTYW1wbGUnKSwKCQkJCSAgICAgICAndGVtcGxhdGVjb250ZW50JywnJykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXRidXR0b24nLCR0aGlzLT5MYW5nICgnc3VibWl0JykpKTsgCiRzbWFydHktPmFzc2lnbignZGVmYXVsdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdkZWZhdWx0YnV0dG9uJywgJHRoaXMtPkxhbmcgKCdkZWZhdWx0JyksICcnLCAnJywgCgkJCQkJCSAgICAgJHRoaXMtPkxhbmcoJ3Jlc3RvcmVkZWZhdWx0c2NvbmZpcm0nKSkpOwokc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRldGV4dCcsICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZXRleHQnKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXR0ZW1wbGF0ZXMudHBsJyk7CgojIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/appicons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/appicons/DOCicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AEyeCg+bTZKZDdLZQgviwU2ggg8iAZCmwlLsiFMmjpamDJbtipitzhhrjppuE1qp0BmtERquVVtpF11q2d+s0JuxEl0zFJ3ylV7zl99w1h+0XeKnGCBzWeK1XeR1XyX2Hij63ul6Hyk6ZOit5WkuZamu5movoOc2oCe5ouk3ZyrwJCu1p243p6434Cn54Gn54Sr5oWs5oml6Yit5Yqu5Iyv5I+x45Or5pGx4pWz4pW04pm24KW0yqa2y6i2zaq5z6G63aS73aW83Ku60a260K290q6+1K+836q+8bDA1rHB17LC2LrF1LfI9MnS4sfa+Mnb+crb+Mzd+M7e+M7e+dbc6tDg+dLh+tLi+tPi+tPi+9bk+tbk+9fl+tfl+9zi9Njl+tnm+9rm+9rn+9zo+93p+9/q++Hq++Hr++Ls++Hs/OLs/OTt/OXt/Obu/Ofv/Ojv/Ojw/enw/Onw/enx/e30/e/0/e/1/fb29vb29/f39/Dy+vL2/vP3/vT3/vP4/vT4/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAj1AAkJrEJlCpQnTZIgOWJkkMAgQXjISHGCRIgPFg79odFAEKEgi0KKDCkBESAXVjrykBLDxBcTaTjMkKAoUIsGOGWkiTEizYY0GUpIqFHDD5MlDVAsQrEhyoQZFLBESFSDDx0lDE4s8rChw4MKCxZFMFQDDxwbDEQs4kDhyoMHThZBAFTDzpsiDEAscnCh0AMNIR8QjcNmCAMMI0cq0FPHTRkgDCxImByhMoQHCoiiCeODgUBCMPb02ZPnjhw3Z8Z42eFZ4Is5dYjKrtFlS47WhFywabNGjRkyYLhoycICdwsxN4oQEfKjhw4cK1TgZkC9uvXqAQEAOw==]]></data>
	</file>
	<file>
	  <filename>/images/appicons/DOCXicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AEyeCg+bTZKZDdLZQgviwU2ggg8iAZCmwlLsiFMmjpamDJbtipitzhhrjppuE1qp0BmtERquVVtpF11q2d+s0JuxEl0zFJ3ylV7zl99w1h+0XeKnGCBzWeK1XeR1XyX2Hij63ul6Hyk6ZOit5WkuZamu5movoOc2oCe5ouk3ZyrwJCu1p243p6434Cn54Gn54Sr5oWs5oml6Yit5Yqu5Iyv5I+x45Or5pGx4pWz4pW04pm24KW0yqa2y6i2zaq5z6G63aS73aW83Ku60a260K290q6+1K+836q+8bDA1rHB17LC2LrF1LfI9MnS4sfa+Mnb+crb+Mzd+M7e+M7e+dbc6tDg+dLh+tLi+tPi+tPi+9bk+tbk+9fl+tfl+9zi9Njl+tnm+9rm+9rn+9zo+93p+9/q++Hq++Hr++Ls++Hs/OLs/OTt/OXt/Obu/Ofv/Ojv/Ojw/enw/Onw/enx/e30/e/0/e/1/fb29vb29/f39/Dy+vL2/vP3/vT3/vP4/vT4/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAj1AAkJrEJlCpQnTZIgOWJkkMAgQXjISHGCRIgPFg79odFAEKEgi0KKDCkBESAXVjrykBLDxBcTaTjMkKAoUIsGOGWkiTEizYY0GUpIqFHDD5MlDVAsQrEhyoQZFLBESFSDDx0lDE4s8rChw4MKCxZFMFQDDxwbDEQs4kDhyoMHThZBAFTDzpsiDEAscnCh0AMNIR8QjcNmCAMMI0cq0FPHTRkgDCxImByhMoQHCoiiCeODgUBCMPb02ZPnjhw3Z8Z42eFZ4Is5dYjKrtFlS47WhFywabNGjRkyYLhoycICdwsxN4oQEfKjhw4cK1TgZkC9uvXqAQEAOw==]]></data>
	</file>
	<file>
	  <filename>/images/appicons/PDFicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8B0dHSQkJD4+PnJydHNzdXV1eH9/gYEFB4sBA6sCBdsBBNcaHdsaHt08O+kBBe4BBPUBBPoBBP8BBf8FCf8HC/8MEP8NEv8TGP8WGv8bH/8iJf8oK/svM/8yNf83Ov84O/8+QN9PTtNSU9NlaedISOdJSulMTeNbW+1TU/9CRf9JTf9UV+JeYOFwceVxcep9fP9iZP9rbf91d/59gIGBhYiIjYqKjYyMjqmpqaqqqqiorKysrK2tra+vr7Gxsba2tre3t7KyuLu7u7y8vL29vb6+vr+/v7q6wLy8wr6+xtuEhti2ueWNj+aPkOianemqquqqq+q8vsDAwMHBwcXFxcbGxsfHx8PDy8jIyMvLy8zMzM3Nzc7OztDQ0NHR0dLS0tPT09TU1NXV1djY2NnZ2dra2tvb29zb29zc3N3d3d7e3t/f3+vT1ujb2+/a3ODg4OHh4eLi4uPi4+Tk5OXl5ebm5ufn5+/i5ejo6Onp6erq6uvr6+zs7O3t7e7u7uTt8Ont8e/w8vHx8fLy8vPz8/T09PX19fb29vf39/D///v7+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjxACUJXIPESBGDRYocySOwoaQnYaZIibKEyI86RuAI7LGjBo0ZKlKcMGHBB6U6QjTyQEFCBAgPHDRgmNCA0skifXSUGBHiQ4cNGShIAPLAAYQgaSpIWMp0aYQ/Y7wwEdOkYZc1ZM7QYREnT5s0YNwksZqHzZxHK/gY8gPHjB4kVvu8MXTnApZHiPysAVTEKiA9kHIouqIlkqA3g/oK7GKIkB0YWbK8cCGDCiPFkro0chRjC55FkxJVaUEIc5dANqw4KgTIT543ZeaYvoGDUR89ctqgOXNADWYolSQdIvRnT+40X9QMaeiEwYLn0J8rYKAkIAA7]]></data>
	</file>
	<file>
	  <filename>/images/appicons/UFOicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AgICFVVVQAAmQAA/wCAAAD//4AAAP8AAP/MM///AIaGhpmZmcvLy8zMzOfn1vf39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAh8ACkIHEiwQoaDBylgWMiQYYUFCDNQ0ECxYsUKGiAmtMjx4QKNEwmKVGABpAYKDCQwWMlSQcaNKFnKdGlyIkcNGGjC1DAhAMUGOHVKPKkhQAQNDR40yPlyqE2fGgQIYFqzYUOhExVo3cq1qc2bFkFeGEu27FiNH9OqXXswIAA7]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAPcAAGWJwtbZ65CGvVtlrK7G45612kev3UZirUpAl1ac0VI2kIWSxYuMwU08lEK14mOKxE2m10NXpo2+4D9PoUdFmkSz4G5iqVA4kTFgrovB42yJwkyo2Uaw3kBNoGGOxmqZzDVcq4G74U86k2GCv2V9uzNerF+RyHaq11yUy2KMxTRdrHyo1Lev01M1j3Z+urTM5WeGwShstlyTyvL2+vTz+F+FwTlXpzxSpFUyjS1msmiDvyVxui9lsZ2eyzdZqYSWyFYxjFguilmc0CpqtCZuuFwqh1Se0ViZzlabz1Oe0lWd0Vab0EVHnFOf00ZGm1Kh1ERInUJLn1Gh1E2n2EhDmVCj1VmXzVmYzlCk1j1Roz5Qoks/lklCmFCi1TtUpThYqEqq2kit3ViYzlqWzDpVplOg01eazz1So0+k1kms3FKg1E48lFGi1FQ0jjZaqkw+lkNJnUuq2k+k10NKnleazkw9lUhEmUqr206m10pBl0BOoUFMn1uVy0up2k47lDVbqk+l10qq21A5kk6l10yp2kJKnoiQxFcwi3u53y9jsFosiSlrtZq73VmYzYNUn0NJnkmt3CtptFmMxlUzjkWx4Ju53FSSyszJ4ixos0Z2umyTyXBfp57H5ZLB41aQyHu84efr9cLg8Ze/4P7+/nSUyHCQxq2+3WV2tlmZzmtxsmqCvtXT54GZymp+u93d7XGMwyhtt5fK52KUy157umKYzXam1L3U6Xql0uDj8HGw2oifzfT5/GGNxWGNxtvg72uf0J2v1rbD4Geo12+k0m+t2V2SyTpWppy/4Oby+lOGw3h4tX1+upScyqzR6tTm89nm89rq9VqQyFgvi1OTy8PF4FduszxTpJi935igzMvg8GeFwMTX68zZ7FqVzGBToczo9a7L5TZaqWCPx8vn9WiEv5fF5OLq9Zuy1zh3vForiGFfqClrtl5ZpWpjqoy/4pK94EVLn2qBvWd6uUBosUhrskxyt5mdylktiVktim+y3GWHwoa43TpxuIdaol8jg////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjRGNjJCMjA4NjAyNzExRTI5MkNFQ0E2QzFBRkVFMUJCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjRGNjJCMjA5NjAyNzExRTI5MkNFQ0E2QzFBRkVFMUJCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OEMxOERFN0Y2MDI2MTFFMjkyQ0VDQTZDMUFGRUUxQkIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OEMxOERFODA2MDI2MTFFMjkyQ0VDQTZDMUFGRUUxQkIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAAIAAgAAAI/wD7CRxIsKDBgwWNJGlS5omULlXQAMIzZcqGPmAC3UkTxoABDhwoVajgoKTAJQmUKGyi5gmbKljkDIJgkVAcMBshdfwocqTAI2aQLFGpsOFDmHIoWuxzc2OYjiApCbRyRcwRoSlXtnyIRSJNizcDpdHpUSCfbmOoHqGDVeVChy9jDqq4wSZOjgKLyUDBJ20jq0GzLjQKUaLSixkFmjChl29ftWxRumXpEiaamTUFihO3+IQECe7cZQiRSwhQoUSTEEZKUWAKXh7EifpHu/a/cYiqXpWs1WGXrgIfPEiR4prt4xnSXlnbVqsUNgIBSH/AiPa7X8P2QaM9itjjv6cFM/8UCAOGPgCVaDNK0cvDB2e0m+3lIyzEp3xCImcVqIOcNhgF0FbJcMStQBsytMhSjm3f5HbaEgLFo4oOOgT4TwHSATBcNrTVcsw/u3DSSSj/xIIKVVb144g8JLQIDG3njCBjDTXYQtsK2/wDjiSSRHOCJ55YIuQ0jviThTVekPEDbay48QcIKmDwAm3JEPDPMx+gM8QiMcBCBBE77OCPP3pokcUZC9D2wxc++ODGPObQlkkpM9A2AwG3aLlOl0SMGUUHekxgCG0LkGGMDV+8Qhs3JZSgQTC2vcBPJFvGMCYUc0SxBwO0GXIGktWAQpsuTqpQAj0amEKbJjlggkkkYzr/wQQUUHD6Tw8uuMAMLrT5csAXByxwAJSz0EZKIonwkMOYVNhBgRMCHFdbAKd4EQEL/6xiDzbU/BNAPRhggOyYCOTBBRXR2kbDJfYMYOYZA7BAQ22utAJlCeGOWccbW+ThzSYWBNwOO/AU8megZqqjzDKpRNBmOE+qMKYIfjTAb7nn2iHrrJnuAegEWnya5KFsujHmBRcI4sca+25RbrPPzgqHwR6DnMUNSJKB6JgtKKBAyhQ3sC/GMMsKxSOafmzmDUmOicMkbfT8syAisHyxuVTEDAUcHQP67pjSHALE0234DPTKLWPtrNGPGPzxmIrcE0TYZEt9tsUuq70xppqOHllEEekogk/YY0PdM8oqW5130TKP6fjjkEcueeQBAQA7]]></data>
	</file>
	<file>
	  <filename>/images/icon@2x.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQABAAPcAALaz1nuUyIi84ElCmEBNoC5lsUJKnkyo2WWJwuz1+8jI4czC3VKg1Gij00aw34Ko1ESy4E86kzFhrlguilp9vImbymF0tne13T9OoaSkzmOKxM3h8Fac0Ih9t93r9UdFmktAl008lFI2kEev3WGOxs7Z7Keo0KrU7F+QyIOEvZzE47XJ5DNerFA4kdHd702m11OGwjVcq0K14lhrsVGJxVyUy7jA3TlXp2aGwUJosYOx2XKk00Virdzl8p273VM1j8bN5aq73GmDv3uDvVyTyjxSpKXC4ePy+TdZqW6czsjL4zhYqGuAvbrd8CVxulYxjPP0+bvc756byHyr15vI5kRUpFUyjf7+/lsqhyhstmKMxZ2r00+Mx77K5PH4/KTO6ZnL6CpqtF6YzdfZ63ui0GSZzZq22k2OyIa53yZuuDpWpidtt9rt+GSDv0RZp8TO5l6h0l93uFosicrG4JLG5jJutmlmrFSe0UVHnFWd0Vab0FmYzlabz1Oe0liZzlOf002n2FKh1EZGmz5QokRInVmXzVCj1VCk1ks/lj1Ro1qWzEit3TtUpVuVy1eazleaz0qq2jpVpliYzkuq2lOg0zVbqlmYzUqr21Ci1Ums3ENJnlGi1FQ0jk6l10+k1kw+lkhDmT1So0+k10pBl0FMn048lENJnUw9lU6m10+l1047lEup2l2SyVqVzClrtStptDxTpEqq2zZaqjZaqWWHwmGNxlUzjjRdqytos0mt3GGNxWiEvy9jsGqCvl6SyVcwjFgvi2eFwH5Nm1+PyGCPxylrtixns8/g72iFwJqx18zk809XpXFvsXx2tcTG4FyXzIqPw5GNwVmd0U9dqVJ2uFB9veHg719ws8Lf8Ofs9aTJ5qrF410ohmKd0M7k8j5So0hwtm6KwnKNxdHZ69Lc7U9nr2x/vGd/vFqZzkeBwE+BwLHZ7rrT6a/M5pay2Lav05W+3/Dx+Mfi8j1Wpk9PoINvr4+228TX687T6GKVy2iRyDtfrT9erIdaol8jg////yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjRGNjJCMjBDNjAyNzExRTI5MkNFQ0E2QzFBRkVFMUJCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjRGNjJCMjBENjAyNzExRTI5MkNFQ0E2QzFBRkVFMUJCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NEY2MkIyMEE2MDI3MTFFMjkyQ0VDQTZDMUFGRUUxQkIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NEY2MkIyMEI2MDI3MTFFMjkyQ0VDQTZDMUFGRUUxQkIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAAQABAAAAI/wD7CRxIsKDBgwgTKlzIsKHDhwrv3OnT588fSgwCadyEyZChQ55EpeqE6gWgkwcOrFo1CRKkWJcuZcq0qOaImyMc6HQAoadPGUCDEuSQR+LEihg1bvR4CKTITiZPAkrJsuVLmZly1VyEc6dOnz+BEtTDgWhRiRUvZtzY8eOhpyWlUq16FatWrl13gu0pg+AjPnrImkWblpLSQBzdhhyJSupUlZOswpR5F29Or2AJ+nH0FzDZPGePqj3ctmlIklFRrozsMubMynm/QiC4R5KfzX8DlwVN2GJStkwXo5arkqXLyTO34rzsgGAhS3tq3+6sm6hRiqOVJjb9NPVjuldfK/+/2XygIkWFnke/zZkP4N2hC69FXBok49RzWSPPanMEwUaNtHJeetHZhptn8PV20WHbOXUfcasd59pdBNVQA4ABoqeedO0hyFtvv2lU32lxybWaZFgRxAoRRFgIoIAaQmdgh4J9iF129AUHF37FoUiQL6wEyeKFLw4InXR+UFfjdWnNlyN3I3lHFWsEoeDLlUK2SGQjA27IHnUJouXbfIkp9iBKxRE0DApsYpmlixlqWOCXCA4m2oLalSZciVMRRAwxw6xppZsrwplhekfaRuNn8SHl5IiiDAcIQbWQQMKfgqIARhScdtrEp5+eQMcF0shI53t23hhimQ6SRJAWWuj/Uimmwyjzz6245porG3TAkSh77lXXqEVONhjSq7DCWumlturq7K4XILregR7GN2aeTBGkwbbJxlqLN8+Ge+sVaHQ554HCnqUqmZgQhMC73Ca7gbjiXnHBoRsqqqSdooXo7rvwcjsvrt7sYPAUOmjjwbMJNFBkjEjSGOa6BOFACy0AwzvwrRvISkKgw+QDjxfOftEihjDmC2ydw1aMw8sYA3xMrhsku+yfUySgqxcNDLlll78uyi9BuyATzMsWYzwzrsdo0K3HJOjgrApBrthiAwJ8ccI6J4BxARwR51ZjHgQJIUTRRyO99K3HIBBvsrK2oys2VwIphgokO3sEGGBz/7hv2WafjTYOLuTadsBOJ7uDsw0Qg0IZG4fLRrSmUktQL5gHLnjhTMcM8LaJR/6PDmuys7M8eeN6Ajro/boZQUzEnnng5OTqAswZByx3rvDU8kCuR+jwjC/dCLDwP1SI0Qq+iRJkTuyyZ147ri6knXTuRuiqgi7b5GoPm1aicDcaPj+MqEDCCGPB+uvH4X4cJeRaAgVxUGD//feboasPMKyQaxIwCGAAaUDAAtKACwhE4BkWmD5/+CMRoYAFLBjBiEhEQg1vyNUbkCCLSlQiBjG4xS1YQMLf5eoBvPBBroxQB1y84hVhcIUripGFLKxhDWnIoRN2uEMHOnAQg4BgEf8kSEEgaHAJSEDCLDr4QRGyQH+5IoMEyKCrezwABi2EYQxnaEMc5jANPfQhBoAYRCHCwoi4esMNloDEJC7xgzHwX670IQFwxONZHjACGdLxwjDEkIZd/KIP/UEADBiSjBBUQq6AcMEbrLGNSwSHs6rBAgmIg17/MAIMXOhHGQISh4M0ACkIUMhDDkKRuAJCBS+oBkciURYV0FUPJEBCFoQjG5hMgjFcqEUZ1jCUBhDlKEupgFwpgYirbOUNeNADXSUDhE7MQQBsUC91GGOXvNziIAmhiWAGkxSjLCaulGDGCVbwBltwVhuYGMIRsiAHOKhAEKCgK3cU4J7XxAUnB4n/B0IQwhTd/OYccqUAICbCjPOIpa66kEQldhCa7pQANcaRqxXw4p4YxeYgBYGHjvrTFMEcKK4UYMpBfOMa1HTWOR6ZRB7ww4PQJGE4ctUFCfDiphgtgDEG+YEPCIKjHjWFSG8VjwyY4KgmcEa4tsBKR1pgDAq4xhubqNBbBUECWLXpRe85SFCAoqc+5SghFoDJZwHBDRSMhBuikasMDGEG5bgGNK6QK3FUMqta5cUgBzAAr341rGQta65sMI0iDBEWbgCAYP+Bj33U8q5ZHSQIRjEKvnq1p4EVrDWgUQWDCrEKUijrGMoB0VpG1oeIQAQIJltZr2ZWXFAAQAqWQcqS/x60CMx4ba6ukIFyTDWmtRzkKT7xidSydgD16IByl8vcZtiBHt4UZW1NedBB2CEaGXjHO0wghRRMY40N/a0TB1mKEJxiuMVdLWVb+9ewevSfARXmdBGZiG8g04JqaCUbwwvTGAwyAqpQRXnRa9zJWvay7n1vfOVryDEaNBSHTWt+XQnJDg6yBRHIsIDNS2D1Vrav7f3pewHqTXBO18EHhbA58avfNiLhwi2IsYY3fN7iqva4fgUrUPsJ3xIP07aJiHAyKTxIERg5xhiecSlqbOPjgvivIg7qgn9M3XIms5WD/MEPjCwCJCcZwAPusJMRnOCPxtfEpaSvitMaiUHagv8TnNgyl72sZPMSt8AfznGCeTzlUTYYkSqe4CCtYAVbvFnLXO6yjDUc5jurlrIH1jFQzezjE3sWwoP8xROeUOg3x1nOil50gBuNZ/aGuKM8JvE3qYzIQQIDGL/QNKENDWdQhzrDABYwk40L6Sf3NMr9VPU3LT3ICRgb1prmdKFrDWo6M5rDd/ZwpH896R6vuraDlIO2j41sZdP603NGcp0JfOM8IxjY/uzzILGABW3LwdgTeHWyZ31oW4t7xtBucq/JHGVKB3OQ3GB3u93N7VhvutPMDreoaTzcUvv616g2M8C5EXCBE7zgskZ4nBN971wvmdzqPTCUd0yIQZr85CgPT7nKV87ylrv85TCPeUAAADs=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0RvY3VtZW50IFNlYXJjaCc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0JlIHN1cmUgdG8gc2V0ICJVc2UgRG9jdW1lbnQgU2VhcmNoIiBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdTb3JyeSwgaXRcJ3Mgbm90IHlvdSwgaXRcJ3MgbWUuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IFlvdVwncmUgc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBzdXBlciBmaW5lIG1vZHVsZT8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlIHByZWZlcmVuY2VzIHVwZGF0ZWQuJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NhdmUnOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdSZXN0b3JlIGRlZmF1bHQgdGVtcGxhdGUnOwokbGFuZ1sncmVzdG9yZWRlZmF1bHRzY29uZmlybSddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byByZXN0b3JlIHRoZSBkZWZhdWx0IHRlbXBsYXRlPyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1snZXJyb3JfZHVwbGljYXRlbmFtZSddID0gJ1RoaXMgY2F0ZWdvcnkgbmFtZSBhbHJlYWR5IGV4aXN0cyEnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGV0eXBlJ10gPSAnVGhpcyBmaWxlIHR5cGUgaXMgbm90IGFsbG93ZWQhIE9ubHkgUERGLCBET0MgYW5kIERPQ1ggZmlsZXMgY2FuIGJlIHVwbG9hZGVkLic7CiRsYW5nWydlcnJvcl9ta2RpciddID0gJ0Vycm9yIG1ha2luZyB0aGUgZGlyZWN0b3J5LCBjaGVjayB5b3VyIHBlcm1pc3Npb25zIGFuZCB0cnkgYWdhaW4uISc7CiRsYW5nWydlcnJvcl9tb3ZlZmlsZSddID0gJ0Vycm9yIG1vdmluZyB0aGUgZmlsZSwgY2hlY2sgeW91ciBwZXJtaXNzaW9ucyBhbmQgdHJ5IGFnYWluLiEnOwokbGFuZ1snbGlua192aWV3J10gPSAnVmlldyc7CiRsYW5nWydlZGl0J10gPSAnRWRpdCc7CiRsYW5nWydpZHRleHQnXSA9ICdJRCc7CiRsYW5nWyduYW1ldGV4dCddID0gJ05hbWUnOwokbGFuZ1sndGVtcGxhdGV0ZXh0J10gPSAnRGV0YWlsIHRlbXBsYXRlJzsKJGxhbmdbJ2ZpbGV0ZXh0J10gPSAnRmlsZSc7CiRsYW5nWyd0aXRsZV9hdXRob3InXSA9ICdBdXRob3InOwokbGFuZ1sncG9zdGRhdGUnXSA9ICdEb2N1bWVudCBkYXRlJzsKJGxhbmdbJ2NhdGVnb3J5dGV4dCddID0gJ0NhdGVnb3J5JzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnQ2F0ZWdvcnknOwokbGFuZ1snbmFtZSddID0gJ0NhdGVnb3J5IG5hbWUnOwokbGFuZ1snc2VsZWN0dGV4dCddID0gJ1NlbGVjdCc7CiRsYW5nWyd0aXRsZV9udW1fcmVjb3JkcyddID0gJyVzIGRvY3VtZW50cyBmb3VuZC4nOwokbGFuZ1snYWRkX3JlY29yZCddID0gJ0FkZCBhIGRvY3VtZW50JzsKJGxhbmdbJ2FkZGVkX3JlY29yZCddID0gJ0RvY3VtZW50IGFkZGVkJzsKJGxhbmdbJ2FkZGNhdGVnb3J5J10gPSAnQWRkIGEgY2F0ZWdvcnknOwokbGFuZ1sndXBsb2FkZXJyb3InXSA9ICdBIGRvY3VtZW50IG11c3QgYmUgc2VsZWN0ZWQhJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3J5IHVwZGF0ZWQnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0NhdGVnb3J5IGFkZGVkJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0NhdGVnb3J5IGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnRGVsZXRlIHNlbGVjdGVkIGRvY3VtZW50cyc7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZW11bHRpcGxlJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBhbGwgb2YgdGhlc2UgZG9jdW1lbnRzP1xuVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSEnOwokbGFuZ1snZGVsZXRlX211bHRpcGxlJ10gPSAnRG9jdW1lbnRzIGRlbGV0ZWQnOwokbGFuZ1sndXBkYXRlZF9yZWNvcmQnXSA9ICdEb2N1bWVudCB1cGRhdGVkJzsKJGxhbmdbJ2ZpbHRlcnRleHQnXSA9ICdGaWx0ZXIgYnk6JzsKJGxhbmdbJ2ZpbHRlcmFsbHRleHQnXSA9ICdTaG93IGFsbCc7CiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICdUZW1wbGF0ZSB1cGRhdGVkJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3RpdGxlX2dlbmVyYWwnXSA9ICdEb2N1bWVudCBsaXN0JzsKJGxhbmdbJ3RpdGxlX2FsbG93X2FkZCddID0gJ1VzZXJzIG1heSBhZGQgcmVjb3Jkcz8nOwokbGFuZ1sndGl0bGVfYWxsb3dfYWRkX2hlbHAnXSA9ICdDbGljayBoZXJlIHRvIGFsbG93IHVzZXJzIHRvIGFkZCByZWNvcmRzLic7CiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWyd0aXRsZV9tb2RfYWRtaW4nXSA9ICdBZG1pbiBQYW5lbCc7CiRsYW5nWyd0aXRsZV9uYW1lJ10gPSAnRmlsZSBuYW1lJzsKJGxhbmdbJ3RpdGxlX2xvY2F0aW9uJ10gPSAnU2VsZWN0IGRvY3VtZW50JzsKJGxhbmdbJ3RpdGxlX2xvY2F0aW9uZWRpdCddID0gJ1JlcGxhY2UgY3VycmVudCBkb2N1bWVudCc7CiRsYW5nWyd0YWJfZG9jdW1lbnQnXSA9ICdEb2N1bWVudHMnOwokbGFuZ1sndGFiX2NhdGVnb3JpZXMnXSA9ICdDYXRlZ29yaWVzJzsKJGxhbmdbJ3RhYl90ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGU/JzsKJGxhbmdbJ2Rhc2hfcmVjb3JkX2NvdW50J10gPSAnVGhpcyBtb2R1bGUgaGFuZGxlcyAlcyBkb2N1bWVudHMnOwokbGFuZ1snYWxlcnRfbm9fcmVjb3JkcyddID0gJ1RoZXJlIGhhdmUgbm90IGJlZW4gYW55IGRvY3VtZW50cyBhZGRlZCBpbiB0aGUgRG9jdW1lbnQgU2VhcmNoIG1vZHVsZSEnOwokbGFuZ1snaGVscF9kb2N1bWVudHNlYXJjaF9pZCddID0gJ0ludGVybmFsbHkgaWRlbnRpZmllciBmb3Igc2VsZWN0aW5nIGRvY3VtZW50cyc7CiRsYW5nWydoZWxwX2Rlc2NyaXB0aW9uJ10gPSAnSW50ZXJuYWwgcGFyYW1ldGVyIHVzZWQgdG8gcGFzcyBkZXNjcmlwdGlvbiBpbmZvIHdoZW4gY3JlYXRpbmcgb3IgZWRpdGluZyBhIGRvY3VtZW50JzsKJGxhbmdbJ2hlbHBfZXhwbGFuYXRpb24nXSA9ICdJbnRlcm5hbCBwYXJhbWV0ZXIgdXNlZCB0byBwYXNzIGV4cGxhbmF0aW9uIGluZm8gd2hlbiBjcmVhdGluZyBvciBlZGl0aW5nIGEgZG9jdW1lbnQnOwokbGFuZ1snaGVscF9tb2R1bGVfbWVzc2FnZSddID0gJ0ludGVybmFsbHkgdXNlZCBwYXJhbWV0ZXIgZm9yIHBhc3NpbmcgbWVzc2FnZXMgdG8gdXNlcic7CiRsYW5nWydoZWxwX2NhdGVnb3J5J10gPSAnV2hpY2ggY2F0ZWdvcnkgdG8gZGlzcGxheSBkb2N1bWVudHMgZnJvbS4nOwokbGFuZ1snaGVscF9zb3J0YnknXSA9ICdGaWVsZCB0byBzb3J0IGJ5LiBPcHRpb25zIGFyZTogImRhdGUiLic7CiRsYW5nWydoZWxwX3NvcnRkZXNjJ10gPSAnU29ydCBuZXdzIGl0ZW1zIGluIGRlc2NlbmRpbmcgZGF0ZSBvcmRlciByYXRoZXIgdGhhbiBhc2NlbmRpbmcuJzsKCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1RoaXMgbW9kdWxlIGV4dHJhY3RzIHRoZSBjb250ZW50cyBvZiBQREYsIERPQywgRE9DWCwgUlRGIGFuZCBUWFQgZmlsZXMgYW5kIGFkZHMgdGhlIGNvbnRlbnQgdG8gdGhlIGRhdGFiYXNlIG1ha2luZyB0aGUgZG9jdW1lbnRzIGNvbnRlbnQgc2VhcmNoYWJsZSwgd2l0aCBhIGxpbmsgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBkb2N1bWVudCBmb3IgZG93bmxvYWRpbmcvdmlld2luZy4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+VmVyc2lvbiAxLjAgMzAgSmFudWFyeSAyMDEzLiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPGxpPlZlcnNpb24gMS4xIDMwIEphbnVhcnkgMjAxMy4gRml4IGZvciBidWcgIzg4NzUuPC9saT4KPGxpPlZlcnNpb24gMS4yIDMwIEphbnVhcnkgMjAxMy4gRml4IHRvIHNlYXJjaCByZXN1bHRzIFVSTCwgbWlzc2luZyBkb2N1bWVudHNlYXJjaCBkaXJlY3RvcnkuPC9saT4KPGxpPlZlcnNpb24gMS4zIDMxIEphbnVhcnkgMjAxMy4gQWRkZWQgc29ydGJ5IGFuZCBzb3J0ZGVzYyBwYXJhbWV0ZXJzIHBsdXMgdHdlYWtlZCB0ZW1wbGF0ZS48L2xpPgo8bGk+VmVyc2lvbiAxLjMuMSA3IEZlYnJ1YXJ5IDIwMTMuIEJ1ZyBmaXggIzg5MTEgYW5kIGFkZGVkIGZpbGUgaWNvbnMgdG8gZnJvbnQgZW5kIHRlbXBsYXRlLjwvbGk+CjxsaT5WZXJzaW9uIDEuNCAyNCBGZWJydWFyeSAyMDEzLiBBZGRlZCB0ZW1wbGF0ZSB0YWIgdG8gZW5hYmxlIGVkaXRpbmcgb2Ygb3V0cHV0IGFuZCBpZiBubyBuYW1lIGlzIHNwZWNpZmllZCB0aGUgZG9jdW1lbnRzIGZpbGUgbmFtZSB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdCwgbWludXMgZXh0ZW5zaW9uIGFuZCBhbnkgXyByZXBsYWNlZCBieSBzcGFjZXMgYW5kIHBlciBmZWF0dXJlIHJlcXVlc3RzICM4OTQxIGFuZCAjODk0Mi4gTWFkZSBjYXRlZ29yeSBuYW1lIGFwcGVhciBpbiBhZG1pbiB0YWJsZSByYXRoZXIgdGhhbiBJRC48L2xpPgo8bGk+VmVyc2lvbiAxLjQuMSAyNSBGZWJydWFyeSAyMDEzLiBVc2luZyB3aGF0IGFwcGVhcnMgdG8gYmUgYSBtb3JlIHJlbGlhYmxlIHBkZjJ0ZXh0IGNsYXNzLjwvbGk+CjxsaT5WZXJzaW9uIDEuNC4yIDI2IEZlYnJ1YXJ5IDIwMTMuIEJ1ZyBmaXhlcyBhbmQgYSBoYW5kZnVsIG9mIG5ldyBmZWF0dXJlcy48L2xpPgo8bGk+VmVyc2lvbiAxLjQuMyAyOCBGZWJydWFyeSAyMDEzLiBCZXR0ZXIgY29udmVyc2lvbiBvZiBub24gc3RhbmRhcmQgY2hhcmFjdGVycy48L2xpPgo8bGk+VmVyc2lvbiAxLjQuNCAyOCBKdW5lIDIwMTMuIEJ1ZyBmaXhlcyBhbmQgcmVtb3ZlZCBTdGF0dXMgZHJvcGRvd24gYW5kIGFkZGVkIHN1cHBvcnQgZm9yIFJURiBhbmQgVFhUIGRvY3MuPC9saT4KPGxpPlZlcnNpb24gMS40LjUgMTcgRmVicnVhcnkgMjAxNC4gQnVnIGZpeCAjOTc1MSBjb21wYXRhYmlsaXR5IHdpdGggUEhQIDUuNDwvbGk+CjxsaT5WZXJzaW9uIDEuNC42IDE4IE1heSAyMDIxLiBNb2RpZmllZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENNU01TIDIuMC4gVGhlIGNvbnRlbnQgc2VhcmNoIHdhcyBmaXhlZCBmb3IgcGRmLCBSVEYsIGFuZCBkb2MgZmlsZXMuIEZvciBkb2MgZmlsZXMsIHlvdSBoYXZlIHRvIGluc3RhbGwgYW50aXdvcmQgb24geW91ciBMaW51eCBzZXJ2ZXIuPC9saT4KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5UaGlzIG1vZHVsZSBhbGxvd3MgZm9yIHRoZSB1cGxvYWRpbmcgb2YgUERGLCBET0MgYW5kIERPQ1ggZmlsZXMgd2l0aCB0aGUgaW50ZW50aW9uIG9mIGhhdmluZyB0aGUgZG9jdW1lbnRzIGNvbnRlbnQgZXh0cmFjdGVkIGFuZCBhZGRlZCB0byB0aGUgZGF0YWJhc2UgbWFraW5nIHRoZSBjb250ZW50IHNlYXJjaGFibGUgdmlhIENNU01TIHNlYXJjaCBtb2R1bGUuIFRoZSB1cGxvYWRlZCBmaWxlcyBjYW4gYWxzbyBiZSBsaXN0ZWQgb24gdGhlIGZyb250IGVuZC48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5TaW1wbHkgcGxhY2UgdGhlIG1vZHVsZSBpbiBhIHBhZ2Ugb3IgdGVtcGxhdGUgdXNpbmcgdGhlIHNtYXJ0eSB0YWcgPGNvZGU+e0RvY3VtZW50U2VhcmNofTwvY29kZT48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9kb2N1bWVudHNlYXJjaC8iPkRvY3VtZW50IFNlYXJjaCBQYWdlPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBvbGl2ZXJzZWRkb24sIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPgo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMywgT2xpdmVyIFNlZGRvbiA8YSBocmVmPSJtYWlsdG86b2xpdmVyQHRocmVlZm9sZC5jby51ayI+Jmx0O29saXZlckB0aHJlZWZvbGQuY28udWsmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ9CU0L7QutGD0LzQtdC90YLRiyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ9Cd0LUg0LfQsNCx0YPQtNGM0YLQtSDRg9GB0YLQsNC90L7QstC40YLRjCAi0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCf0L7QuNGB0Log0LTQvtC60YPQvNC10L3RgtC+0LIiINGA0LDQt9GA0LXRiNC10L3QuNGPINC90LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LUg0Y3RgtC+0LPQviDQvNC+0LTRg9C70Y8hJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICfQmiDRgdC+0LbQsNC70LXQvdC40Y4sINGN0YLQviDQvdC1INGC0YssINGN0YLQviDRjy4nOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ9CSINGB0LDQvNC+0Lwg0LTQtdC70LU/INCS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIg0LzQvtC00YPQu9GMPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ9Cc0L7QtNGD0LvRjCDRg9C00LDQu9C10L0uJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ9CS0LXRgNGB0LjRjyDQvNC+0LTRg9C70Y8gJXMg0YPRgdGC0LDQvdC+0LLQu9C10L3QsC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC40LfQvNC10L3QtdC90YsuJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ9Ch0L7RhdGA0LDQvdC40YLRjCc7CiRsYW5nWydjYW5jZWwnXSA9ICfQntGC0LzQtdC90LAnOwokbGFuZ1snZGVmYXVsdCddID0gJ9CS0L7RgdGC0LDQvdC+0LLQuNGC0Ywg0YjQsNCx0LvQvtC9INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOJzsKJGxhbmdbJ3Jlc3RvcmVkZWZhdWx0c2NvbmZpcm0nXSA9ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSwg0LLQvtGB0YHRgtCw0L3QvtCy0LjRgtGMINGI0LDQsdC70L7QvSDQv9C+INGD0LzQvtC70YfQsNC90LjRjj8nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAn0JTQvtGB0YLRg9C/INC30LDQutGA0YvRgi4g0J/QvtC20LDQu9GD0LnRgdGC0LAsINC/0YDQvtCy0LXRgNGM0YLQtSDQstCw0YjQuCDRgNCw0LfRgNC10YjQtdC90LjRjy4nOwokbGFuZ1snZXJyb3InXSA9ICfQntGI0LjQsdC60LAhJzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZW5hbWUnXSA9ICfQrdGC0L4g0L3QsNC30LLQsNC90LjQtSDQutCw0YLQtdCz0L7RgNC40Lgg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCISc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZXR5cGUnXSA9ICfQrdGC0L7RgiDRgtC40L8g0YTQsNC50LvQsCDQvdC1INC00L7Qv9GD0YHQutCw0LXRgtGB0Y8hINCi0L7Qu9GM0LrQviBQREYsIERPQyDQuCBET0NYINGE0LDQudC70Ysg0LzQvtCz0YPRgiDQsdGL0YLRjCDQt9Cw0LPRgNGD0LbQtdC90YsuJzsKJGxhbmdbJ2Vycm9yX21rZGlyJ10gPSAn0J7RiNC40LHQutCwINGB0L7Qt9C00LDQvdC40Y8g0LrQsNGC0LDQu9C+0LPQsCwg0L/RgNC+0LLQtdGA0YzRgtC1INGA0LDQt9GA0LXRiNC10L3QuNGPINC4INC/0L7QstGC0L7RgNC40YLQtSDQv9C+0L/Ri9GC0LrRgy4hJzsKJGxhbmdbJ2Vycm9yX21vdmVmaWxlJ10gPSAn0J7RiNC40LHQutCwINC/0LXRgNC10LzQtdGJ0LXQvdC40Y8g0YTQsNC50LvQsCwg0L/RgNC+0LLQtdGA0YzRgtC1INGA0LDQt9GA0LXRiNC10L3QuNGPINC4INC/0L7QstGC0L7RgNC40YLQtSDQv9C+0L/Ri9GC0LrRgy4hJzsKJGxhbmdbJ2xpbmtfdmlldyddID0gJ9Ch0LzQvtGC0YDQtdGC0YwnOwokbGFuZ1snZWRpdCddID0gJ9Cg0LXQtC4nOwokbGFuZ1snaWR0ZXh0J10gPSAnSUQnOwokbGFuZ1snbmFtZXRleHQnXSA9ICfQmNC80Y8nOwokbGFuZ1sndGVtcGxhdGV0ZXh0J10gPSAn0J/QvtC00YDQvtCx0L3Ri9C5INGI0LDQsdC70L7QvSc7CiRsYW5nWydmaWxldGV4dCddID0gJ9Ck0LDQudC7JzsKJGxhbmdbJ3RpdGxlX2F1dGhvciddID0gJ9CQ0LLRgtC+0YAnOwokbGFuZ1sncG9zdGRhdGUnXSA9ICfQlNCw0YLQsCc7CiRsYW5nWydjYXRlZ29yeXRleHQnXSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8nOwokbGFuZ1snY2F0ZWdvcnknXSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8nOwokbGFuZ1snbmFtZSddID0gJ9CY0LzRjyDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1snc2VsZWN0dGV4dCddID0gJ9CS0YvQsdGA0LDRgtGMJzsKJGxhbmdbJ3RpdGxlX251bV9yZWNvcmRzJ10gPSAnJXMg0LTQvtC60YPQvNC10L3RgtC+0LIg0L3QsNC50LTQtdC90L4uJzsKJGxhbmdbJ2FkZF9yZWNvcmQnXSA9ICfQlNC+0LHQsNCy0LjRgtGMINC00L7QutGD0LzQtdC90YInOwokbGFuZ1snYWRkZWRfcmVjb3JkJ10gPSAn0JTQvtC60YPQvNC10L3RgiDQtNC+0LHQsNCy0LvQtdC9JzsKJGxhbmdbJ2FkZGNhdGVnb3J5J10gPSAn0JTQvtCx0LDRgtGMINC60LDRgtC10LPQvtGA0LjRjic7CiRsYW5nWyd1cGxvYWRlcnJvciddID0gJ0EgZG9jdW1lbnQgbXVzdCBiZSBzZWxlY3RlZCEnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnQ2F0ZWdvcnkgdXBkYXRlZCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC00L7QsdCw0LLQu9C10L3QsCc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8g0YPQtNCw0LvQtdC90LAnOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAn0KPQtNCw0LvQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C1INC00L7QutGD0LzQtdC90YLRiyc7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZW11bHRpcGxlJ10gPSAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDQstGB0LUg0Y3RgtC4INC00L7QutGD0LzQtdC90YLRiz8gblzQrdGC0L4g0LTQtdC50YHRgtCy0LjQtSDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L7RgtC80LXQvdC10L3QviEnOwokbGFuZ1snZGVsZXRlX211bHRpcGxlJ10gPSAn0JTQvtC60YPQvNC10L3RgtGLINGD0LTQsNC70LXQvdGLJzsKJGxhbmdbJ3VwZGF0ZWRfcmVjb3JkJ10gPSAn0JTQvtC60YPQvNC10L3RgtGLINC+0LHQvdC+0LLQu9C10L3Riyc7CiRsYW5nWydmaWx0ZXJ0ZXh0J10gPSAn0KTQuNC70YzRgtGAOic7CiRsYW5nWydmaWx0ZXJhbGx0ZXh0J10gPSAn0J/QvtC60LDQt9Cw0YLRjCDQstGB0LUnOwokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAn0KjQsNCx0LvQvtC9INC+0LHQvdC+0LLQu9C10L0nOwokbGFuZ1sndXBncmFkZWQnXSA9ICfQnNC+0LTRg9C70Ywg0L7QsdC90L7QstC70LXQvSDQtNC+INCy0LXRgNGB0LjQuCAlcy4nOwokbGFuZ1sndGl0bGVfZ2VuZXJhbCddID0gJ0RvY3VtZW50IGxpc3QnOwokbGFuZ1sndGl0bGVfYWxsb3dfYWRkJ10gPSAnVXNlcnMgbWF5IGFkZCByZWNvcmRzPyc7CiRsYW5nWyd0aXRsZV9hbGxvd19hZGRfaGVscCddID0gJ0NsaWNrIGhlcmUgdG8gYWxsb3cgdXNlcnMgdG8gYWRkIHJlY29yZHMuJzsKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCc7CiRsYW5nWyd0aXRsZV9tb2RfYWRtaW4nXSA9ICdBZG1pbiBQYW5lbCc7CiRsYW5nWyd0aXRsZV9uYW1lJ10gPSAn0JjQvNGPINGE0LDQudC70LAnOwokbGFuZ1sndGl0bGVfbG9jYXRpb24nXSA9ICfQktGL0LHRgNCw0YLRjCDQtNC+0LrRg9C80LXQvdGCJzsKJGxhbmdbJ3RpdGxlX2xvY2F0aW9uZWRpdCddID0gJ9Cf0LXRgNC10LzQtdGB0YLQuNGC0Ywg0YLQtdC60YPRidC40Lkg0LTQvtC60YPQvNC10L3Rgic7CiRsYW5nWyd0YWJfZG9jdW1lbnQnXSA9ICfQlNC+0LrRg9C80LXQvdGC0YsnOwokbGFuZ1sndGFiX2NhdGVnb3JpZXMnXSA9ICfQmtCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1sndGFiX3RlbXBsYXRlcyddID0gJ9Co0LDQsdC70L7QvdGLJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlPyc7CiRsYW5nWydkYXNoX3JlY29yZF9jb3VudCddID0gJ1RoaXMgbW9kdWxlIGhhbmRsZXMgJXMgZG9jdW1lbnRzJzsKJGxhbmdbJ2FsZXJ0X25vX3JlY29yZHMnXSA9ICdUaGVyZSBoYXZlIG5vdCBiZWVuIGFueSBkb2N1bWVudHMgYWRkZWQgaW4gdGhlIERvY3VtZW50IFNlYXJjaCBtb2R1bGUhJzsKJGxhbmdbJ2hlbHBfZG9jdW1lbnRzZWFyY2hfaWQnXSA9ICdJbnRlcm5hbGx5IGlkZW50aWZpZXIgZm9yIHNlbGVjdGluZyBkb2N1bWVudHMnOwokbGFuZ1snaGVscF9kZXNjcmlwdGlvbiddID0gJ0ludGVybmFsIHBhcmFtZXRlciB1c2VkIHRvIHBhc3MgZGVzY3JpcHRpb24gaW5mbyB3aGVuIGNyZWF0aW5nIG9yIGVkaXRpbmcgYSBkb2N1bWVudCc7CiRsYW5nWydoZWxwX2V4cGxhbmF0aW9uJ10gPSAnSW50ZXJuYWwgcGFyYW1ldGVyIHVzZWQgdG8gcGFzcyBleHBsYW5hdGlvbiBpbmZvIHdoZW4gY3JlYXRpbmcgb3IgZWRpdGluZyBhIGRvY3VtZW50JzsKJGxhbmdbJ2hlbHBfbW9kdWxlX21lc3NhZ2UnXSA9ICdJbnRlcm5hbGx5IHVzZWQgcGFyYW1ldGVyIGZvciBwYXNzaW5nIG1lc3NhZ2VzIHRvIHVzZXInOwokbGFuZ1snaGVscF9jYXRlZ29yeSddID0gJ1doaWNoIGNhdGVnb3J5IHRvIGRpc3BsYXkgZG9jdW1lbnRzIGZyb20uJzsKJGxhbmdbJ2hlbHBfc29ydGJ5J10gPSAnRmllbGQgdG8gc29ydCBieS4gT3B0aW9ucyBhcmU6ICJkYXRlIi4nOwokbGFuZ1snaGVscF9zb3J0ZGVzYyddID0gJ1NvcnQgbmV3cyBpdGVtcyBpbiBkZXNjZW5kaW5nIGRhdGUgb3JkZXIgcmF0aGVyIHRoYW4gYXNjZW5kaW5nLic7CgokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdUaGlzIG1vZHVsZSBleHRyYWN0cyB0aGUgY29udGVudHMgb2YgUERGLCBET0MsIERPQ1gsIFJURiBhbmQgVFhUIGZpbGVzIGFuZCBhZGRzIHRoZSBjb250ZW50IHRvIHRoZSBkYXRhYmFzZSBtYWtpbmcgdGhlIGRvY3VtZW50cyBjb250ZW50IHNlYXJjaGFibGUsIHdpdGggYSBsaW5rIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgZG9jdW1lbnQgZm9yIGRvd25sb2FkaW5nL3ZpZXdpbmcuJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4wIDMwIEphbnVhcnkgMjAxMy4gSW5pdGlhbCBSZWxlYXNlLjwvbGk+CjxsaT5WZXJzaW9uIDEuMSAzMCBKYW51YXJ5IDIwMTMuIEZpeCBmb3IgYnVnICM4ODc1LjwvbGk+CjxsaT5WZXJzaW9uIDEuMiAzMCBKYW51YXJ5IDIwMTMuIEZpeCB0byBzZWFyY2ggcmVzdWx0cyBVUkwsIG1pc3NpbmcgZG9jdW1lbnRzZWFyY2ggZGlyZWN0b3J5LjwvbGk+CjxsaT5WZXJzaW9uIDEuMyAzMSBKYW51YXJ5IDIwMTMuIEFkZGVkIHNvcnRieSBhbmQgc29ydGRlc2MgcGFyYW1ldGVycyBwbHVzIHR3ZWFrZWQgdGVtcGxhdGUuPC9saT4KPGxpPlZlcnNpb24gMS4zLjEgNyBGZWJydWFyeSAyMDEzLiBCdWcgZml4ICM4OTExIGFuZCBhZGRlZCBmaWxlIGljb25zIHRvIGZyb250IGVuZCB0ZW1wbGF0ZS48L2xpPgo8bGk+VmVyc2lvbiAxLjQgMjQgRmVicnVhcnkgMjAxMy4gQWRkZWQgdGVtcGxhdGUgdGFiIHRvIGVuYWJsZSBlZGl0aW5nIG9mIG91dHB1dCBhbmQgaWYgbm8gbmFtZSBpcyBzcGVjaWZpZWQgdGhlIGRvY3VtZW50cyBmaWxlIG5hbWUgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQsIG1pbnVzIGV4dGVuc2lvbiBhbmQgYW55IF8gcmVwbGFjZWQgYnkgc3BhY2VzIGFuZCBwZXIgZmVhdHVyZSByZXF1ZXN0cyAjODk0MSBhbmQgIzg5NDIuIE1hZGUgY2F0ZWdvcnkgbmFtZSBhcHBlYXIgaW4gYWRtaW4gdGFibGUgcmF0aGVyIHRoYW4gSUQuPC9saT4KPGxpPlZlcnNpb24gMS40LjEgMjUgRmVicnVhcnkgMjAxMy4gVXNpbmcgd2hhdCBhcHBlYXJzIHRvIGJlIGEgbW9yZSByZWxpYWJsZSBwZGYydGV4dCBjbGFzcy48L2xpPgo8bGk+VmVyc2lvbiAxLjQuMiAyNiBGZWJydWFyeSAyMDEzLiBCdWcgZml4ZXMgYW5kIGEgaGFuZGZ1bCBvZiBuZXcgZmVhdHVyZXMuPC9saT4KPGxpPlZlcnNpb24gMS40LjMgMjggRmVicnVhcnkgMjAxMy4gQmV0dGVyIGNvbnZlcnNpb24gb2Ygbm9uIHN0YW5kYXJkIGNoYXJhY3RlcnMuPC9saT4KPGxpPlZlcnNpb24gMS40LjQgMjggSnVuZSAyMDEzLiBCdWcgZml4ZXMgYW5kIHJlbW92ZWQgU3RhdHVzIGRyb3Bkb3duIGFuZCBhZGRlZCBzdXBwb3J0IGZvciBSVEYgYW5kIFRYVCBkb2NzLjwvbGk+CjxsaT5WZXJzaW9uIDEuNC41IDE3IEZlYnJ1YXJ5IDIwMTQuIEJ1ZyBmaXggIzk3NTEgY29tcGF0YWJpbGl0eSB3aXRoIFBIUCA1LjQ8L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGFsbG93cyBmb3IgdGhlIHVwbG9hZGluZyBvZiBQREYsIERPQyBhbmQgRE9DWCBmaWxlcyB3aXRoIHRoZSBpbnRlbnRpb24gb2YgaGF2aW5nIHRoZSBkb2N1bWVudHMgY29udGVudCBleHRyYWN0ZWQgYW5kIGFkZGVkIHRvIHRoZSBkYXRhYmFzZSBtYWtpbmcgdGhlIGNvbnRlbnQgc2VhcmNoYWJsZSB2aWEgQ01TTVMgc2VhcmNoIG1vZHVsZS4gVGhlIHVwbG9hZGVkIGZpbGVzIGNhbiBhbHNvIGJlIGxpc3RlZCBvbiB0aGUgZnJvbnQgZW5kLjwvcD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPlNpbXBseSBwbGFjZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvciB0ZW1wbGF0ZSB1c2luZyB0aGUgc21hcnR5IHRhZyA8Y29kZT57RG9jdW1lbnRTZWFyY2h9PC9jb2RlPjwvcD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIE1vZHVsZSBGb3JnZQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2RvY3VtZW50c2VhcmNoLyI+RG9jdW1lbnQgU2VhcmNoIFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIG9saXZlcnNlZGRvbiwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTMsIE9saXZlciBTZWRkb24gPGEgaHJlZj0ibWFpbHRvOm9saXZlckB0aHJlZWZvbGQuY28udWsiPiZsdDtvbGl2ZXJAdGhyZWVmb2xkLmNvLnVrJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KJzsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/autoload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZSBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIEtvbnJhZCBBYmljaHQgPGsuYWJpY2h0QGdtYWlsLmNvbT4KICogQGRhdGUgICAgMjAyMS0wMi0wOQogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqIEFib3V0OgogKiBUaGlzIGZpbGUgcHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIENvbXBvc2VyLWFwcHJvYWNoLgogKiBJbmNsdWRlIGl0IGludG8geW91ciBwcm9qZWN0IGFuZCBhbGwgcmVxdWlyZWQgZmlsZXMgb2YgUERGUGFyc2VyIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuCiAqIFBsZWFzZSB1c2UgaXQgb25seSwgaWYgQ29tcG9zZXIgaXMgbm90IGF2YWlsYWJsZS4KICoKICogSG93IHRvIHVzZToKICogMS4gaW5jbHVkZSB0aGlzIGZpbGUgYXMgaXQgaXMgT1IgY29weSBhbmQgcmVuYW1lIGl0IGFzIHlvdSBsaWtlIChhbmQgdGhlbiBpbmNsdWRlIGl0KQogKiAyLiBhZnRlcndhcmRzIHlvdSBjYW4gdXNlIFBERlBhcnNlciBjbGFzc2VzCiAqIERvbmUuCiAqLwoKLyoqCiAqIExvYWRzIGFsbCBmaWxlcyBmb3VuZCBpbiBhIGdpdmVuIGZvbGRlci4KICogQ2FsbHMgaXRzZWxmIHJlY3Vyc2l2ZWx5IGZvciBhbGwgc3ViIGZvbGRlcnMuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGRpcgogKi8KZnVuY3Rpb24gcmVxdWlyZUZpbGVzT2ZGb2xkZXIoJGRpcikKewogICAgZm9yZWFjaCAobmV3IERpcmVjdG9yeUl0ZXJhdG9yKCRkaXIpIGFzICRmaWxlSW5mbykgewogICAgICAgIGlmICghJGZpbGVJbmZvLT5pc0RvdCgpKSB7CiAgICAgICAgICAgIGlmICgkZmlsZUluZm8tPmlzRGlyKCkpIHsKICAgICAgICAgICAgICAgIHJlcXVpcmVGaWxlc09mRm9sZGVyKCRmaWxlSW5mby0+Z2V0UGF0aG5hbWUoKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXF1aXJlX29uY2UgJGZpbGVJbmZvLT5nZXRQYXRobmFtZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cgokcm9vdEZvbGRlciA9IF9fRElSX18uJy9zcmMvU21hbG90L1BkZlBhcnNlcic7CgovLyBNYW51YWxseSByZXF1aXJlIGZpbGVzLCB3aGljaCBjYW4ndCBiZSBsb2FkZWQgYXV0b21hdGljYWxseSB0aGF0IGVhc2lseS4KcmVxdWlyZV9vbmNlICRyb290Rm9sZGVyLicvRWxlbWVudC5waHAnOwpyZXF1aXJlX29uY2UgJHJvb3RGb2xkZXIuJy9QREZPYmplY3QucGhwJzsKcmVxdWlyZV9vbmNlICRyb290Rm9sZGVyLicvRm9udC5waHAnOwpyZXF1aXJlX29uY2UgJHJvb3RGb2xkZXIuJy9QYWdlLnBocCc7CnJlcXVpcmVfb25jZSAkcm9vdEZvbGRlci4nL0VsZW1lbnQvRWxlbWVudFN0cmluZy5waHAnOwoKLyoKICogTG9hZCB0aGUgcmVzdCBvZiBQREZQYXJzZXIgZmlsZXMgZnJvbSAvc3JjL1NtYWxvdC9QREZQYXJzZXIKICogRG9udCB3b3JyeSwgaXQgd29udCBsb2FkIGZpbGVzIG11bHRpcGxlIHRpbWVzLgogKi8KcmVxdWlyZUZpbGVzT2ZGb2xkZXIoJHJvb3RGb2xkZXIpOwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.documentsearch_admin_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgZG9jdW1lbnRzZWFyY2hfYWRtaW5fb3BzIHsKCglwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlX2RvY3VtZW50KCRkb2N1bWVudGlkKSB7CiAgICAJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgCQkvL05vdyByZW1vdmUgdGhlIGRvY3VtZW50CiAgICAJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2RvY3VtZW50c2VhcmNoIFdIRVJFIGRvY3VtZW50c2VhcmNoX2lkID0gPyI7CiAgICAJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRkb2N1bWVudGlkKSk7CgkgICAgIAkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzX2xpbmsgV0hFUkUgZG9jdW1lbnRzZWFyY2hfaWQgPSA/IjsKCQkgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGRvY3VtZW50aWQpKTsKCiAgICAJCS8vIGRlbGV0ZSBhbnkgZmlsZXMuLi4KICAgIAkJLy8kY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnOwogICAgCQkkbXlkaXJlY3RvcnkgPSAnLi4vdXBsb2Fkcy9kb2N1bWVudHNlYXJjaC9pZCcuJGRvY3VtZW50aWQ7CgogICAgCQlkb2N1bWVudHNlYXJjaF9hZG1pbl9vcHM6OnJlY3Vyc2l2ZV9yZW1vdmVfZGlyZWN0b3J5KCRteWRpcmVjdG9yeSk7CiAgICAKICAgIAkJZG9jdW1lbnRzZWFyY2hfYWRtaW5fb3BzOjpkZWxldGVfc3RhdGljX3JvdXRlKCRkb2N1bWVudGlkKTsKICAgIAogICAgCQkvL1VwZGF0ZSBzZWFyY2ggaW5kZXgKICAgIAkJJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRG9jdW1lbnRTZWFyY2gnKTsKICAgIAkJJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnU2VhcmNoJyk7CiAgICAJCWlmICgkbW9kdWxlICE9IEZBTFNFKSB7CgkJCSRtb2R1bGUtPkRlbGV0ZVdvcmRzKCRtb2QtPkdldE5hbWUoKSwgJGRvY3VtZW50aWQsICdkb2N1bWVudHNlYXJjaCcpOwogICAgICAJfQogICAgCiAgICAJCUAkbW9kLT5TZW5kRXZlbnQoJ1NlYXJjaERvY3VtZW50RGVsZXRlZCcsIGFycmF5KCdkb2N1bWVudHNlYXJjaF9pZCcgPT4gJGRvY3VtZW50aWQpKTsKCQkvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKCQlhdWRpdCgkZG9jdW1lbnRpZCwgJ0RvY3VtZW50IFNlYXJjaDogJy4kZG9jdW1lbnRpZCwgJ0RvY3VtZW50IGRlbGV0ZWQnKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlY3Vyc2l2ZV9yZW1vdmVfZGlyZWN0b3J5KCRkaXJlY3RvcnksICRlbXB0eT1GQUxTRSkgewogICAgCS8vIGlmIHRoZSBwYXRoIGhhcyBhIHNsYXNoIGF0IHRoZSBlbmQgd2UgcmVtb3ZlIGl0IGhlcmUKICAgIAlpZihzdWJzdHIoJGRpcmVjdG9yeSwtMSkgPT0gJy8nKSB7CiAgICAgICAgCSRkaXJlY3RvcnkgPSBzdWJzdHIoJGRpcmVjdG9yeSwwLC0xKTsKICAgIAl9CgogICAgCS8vIGlmIHRoZSBwYXRoIGlzIG5vdCB2YWxpZCBvciBpcyBub3QgYSBkaXJlY3RvcnkgLi4uCiAgICAJaWYoIWZpbGVfZXhpc3RzKCRkaXJlY3RvcnkpIHx8ICFpc19kaXIoJGRpcmVjdG9yeSkpIHsKICAgICAgICAJLy8gLi4uIHdlIHJldHVybiBmYWxzZSBhbmQgZXhpdCB0aGUgZnVuY3Rpb24KICAgICAgICAJcmV0dXJuIEZBTFNFOwoKICAgIAkvLyAuLi4gaWYgdGhlIHBhdGggaXMgbm90IHJlYWRhYmxlCiAgICAJfSBlbHNlaWYoIWlzX3JlYWRhYmxlKCRkaXJlY3RvcnkpKSB7CiAgICAgICAgCS8vIC4uLiB3ZSByZXR1cm4gZmFsc2UgYW5kIGV4aXQgdGhlIGZ1bmN0aW9uCiAgICAgICAgCXJldHVybiBGQUxTRTsKCiAgICAJLy8gLi4uIGVsc2UgaWYgdGhlIHBhdGggaXMgcmVhZGFibGUKICAgIAl9IGVsc2UgewoKICAgICAgICAJLy8gd2Ugb3BlbiB0aGUgZGlyZWN0b3J5CiAgICAgICAgCSRoYW5kbGUgPSBvcGVuZGlyKCRkaXJlY3RvcnkpOwoKICAgICAgICAJLy8gYW5kIHNjYW4gdGhyb3VnaCB0aGUgaXRlbXMgaW5zaWRlCiAgICAgICAgCXdoaWxlIChGQUxTRSAhPT0gKCRpdGVtID0gcmVhZGRpcigkaGFuZGxlKSkpIHsKICAgICAgICAgICAgCS8vIGlmIHRoZSBmaWxlcG9pbnRlciBpcyBub3QgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICAgIAkvLyBvciB0aGUgcGFyZW50IGRpcmVjdG9yeQogICAgICAgICAgICAJaWYoJGl0ZW0gIT0gJy4nICYmICRpdGVtICE9ICcuLicpIHsKICAgICAgICAgICAgICAgIAkvLyB3ZSBidWlsZCB0aGUgbmV3IHBhdGggdG8gZGVsZXRlCiAgICAgICAgICAgICAgICAJJHBhdGggPSAkZGlyZWN0b3J5LicvJy4kaXRlbTsKCiAgICAgICAgICAgICAgICAJLy8gaWYgdGhlIG5ldyBwYXRoIGlzIGEgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICAJaWYoaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICAgICAgICAgIAkvLyB3ZSBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgbmV3IHBhdGgKICAgICAgICAgICAgICAgICAgICAJcmVjdXJzaXZlX3JlbW92ZV9kaXJlY3RvcnkoJHBhdGgpOwoKICAgICAgICAgICAgICAgIAkvLyBpZiB0aGUgbmV3IHBhdGggaXMgYSBmaWxlCiAgICAgICAgICAgICAgICAJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAJLy8gd2UgcmVtb3ZlIHRoZSBmaWxlCiAgICAgICAgICAgICAgICAgICAgCXVubGluaygkcGF0aCk7CiAgICAgICAgICAgICAgICAJfQogICAgICAgICAgICAJfQogICAgICAgIAl9CiAgICAgICAgCS8vIGNsb3NlIHRoZSBkaXJlY3RvcnkKICAgICAgICAJY2xvc2VkaXIoJGhhbmRsZSk7CgogICAgICAgIAkvLyBpZiB0aGUgb3B0aW9uIHRvIGVtcHR5IGlzIG5vdCBzZXQgdG8gdHJ1ZQogICAgICAgIAlpZigkZW1wdHkgPT0gRkFMU0UpIHsKICAgICAgICAgICAgCS8vIHRyeSB0byBkZWxldGUgdGhlIG5vdyBlbXB0eSBkaXJlY3RvcnkKICAgICAgICAgICAgCWlmKCFybWRpcigkZGlyZWN0b3J5KSkgewogICAgICAgICAgICAgICAgCS8vIHJldHVybiBmYWxzZSBpZiBub3QgcG9zc2libGUKICAgICAgICAgICAgICAgIAlyZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIAl9CiAgICAgICAgCX0KICAgICAgICAJLy8gcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAJcmV0dXJuIFRSVUU7CiAgICAJfQoJfQoKCXN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gVXBkYXRlSGllcmFyY2h5UG9zaXRpb25zKCkgewogICAgCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgCSRxdWVyeSA9ICJTRUxFQ1QgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQsIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMiOwogICAgCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewoJCQkkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSAiIjsKCQkJJGN1cnJlbnRfbG9uZ19uYW1lID0gJHJvd1snZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSddOwoJCQkkY29udGVudF9pZCA9ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ107CgkJCSRjdXJyZW50X3BhcmVudF9pZCA9ICRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ107CgkJCSRjb3VudCA9IDA7CgkgIAoJCQl3aGlsZSAoJGN1cnJlbnRfcGFyZW50X2lkID4gLTEpIHsKCSAgICAJCSRxdWVyeSA9ICJTRUxFQ1QgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQsIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUsIHBhcmVudF9pZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyBXSEVSRSBkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCA9ID8iOwoJICAgIAkJJHJvdzIgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRjdXJyZW50X3BhcmVudF9pZCkpOwoJICAgIAkJaWYgKCRyb3cyKSB7CgkJCQkJJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uID0gc3RyX3BhZCgkcm93MlsnZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnXSwgNSwgJzAnLCBTVFJfUEFEX0xFRlQpIC4gIi4iIC4gJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uOwoJCQkJCSRjdXJyZW50X2xvbmdfbmFtZSA9ICRyb3cyWydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lJ107CgkJCQkJJGN1cnJlbnRfcGFyZW50X2lkID0gJHJvdzJbJ3BhcmVudF9pZCddOwoJCQkJCSRjb3VudCsrOwoJICAgICAgCQl9IGVsc2UgewoJCQkJCSRjdXJyZW50X3BhcmVudF9pZCA9IDA7CgkgICAgICAJCX0KCSAgCQl9CgkgIAoJCQlpZiAoc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbikgPiAwKSB7CgkgICAgCQkkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSBzdWJzdHIoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAwLCBzdHJsZW4oJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uKSAtIDEpOwoJICAJCX0KCSAgCgkJCWlmIChzdHJsZW4oJGN1cnJlbnRfbG9uZ19uYW1lKSA+IDApIHsKCSAgICAJCSRjdXJyZW50X2xvbmdfbmFtZSA9IHN1YnN0cigkY3VycmVudF9sb25nX25hbWUsIDAsIHN0cmxlbigkY3VycmVudF9sb25nX25hbWUpIC0gMyk7CgkgIAkJfQoJICAKCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgU0VUIGhpZXJhcmNoeSA9ID8sIGxvbmdfbmFtZSA9ID8gV0hFUkUgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQgPSA/IjsKCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAkY3VycmVudF9sb25nX25hbWUsICRjb250ZW50X2lkKSk7CiAgICAgIAl9Cgl9CgoJc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBkZWxldGVfc3RhdGljX3JvdXRlKCRkb2N1bWVudHNlYXJjaF9kb2N1bWVudF9pZCkgewogICAgCXJldHVybiBjbXNfcm91dGVfbWFuYWdlcjo6ZGVsX3N0YXRpYygnJywnRG9jdW1lbnRTZWFyY2gnLCRkb2N1bWVudHNlYXJjaF9kb2N1bWVudF9pZCk7CiAgCX0KCiAgCXN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJfc3RhdGljX3JvdXRlKCRkb2N1bWVudHNlYXJjaF91cmwsJGRvY3VtZW50c2VhcmNoX2RvY3VtZW50X2lkLCRkZXRhaWxwYWdlID0gJycpIHsKICAgIAlpZiggJGRldGFpbHBhZ2UgPD0gMCApIHsKCQkJJGdDbXMgPSBjbXNtcygpOwoJCQkkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdEb2N1bWVudFNlYXJjaCcpOwoJCQkkZGV0YWlscGFnZSA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2RldGFpbF9yZXR1cm5pZCcsLTEpOwoJCQlpZiggJGRldGFpbHBhZ2UgPT0gLTEgKSB7CgkgICAgCQkkZGV0YWlscGFnZSA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0Q29udGVudCgpOwoJICAJCX0KICAgICAgCX0KICAgIAkkcGFybXMgPSBhcnJheSgnYWN0aW9uJz0+J2RldGFpbCcsJ3JldHVybmlkJz0+JGRldGFpbHBhZ2UsCgkJCSdkb2N1bWVudGlkJz0+JGRvY3VtZW50c2VhcmNoX2RvY3VtZW50X2lkKTsKCiAgICAJJHJvdXRlID0gQ21zUm91dGU6Om5ld19idWlsZGVyKCRkb2N1bWVudHNlYXJjaF91cmwsJ0RvY3VtZW50U2VhcmNoJywkZG9jdW1lbnRzZWFyY2hfZG9jdW1lbnRfaWQsJHBhcm1zLFRSVUUpOwogICAgCXJldHVybiBjbXNfcm91dGVfbWFuYWdlcjo6YWRkX3N0YXRpYygkcm91dGUpOwogIAl9Cgp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.documentsearch_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgZG9jdW1lbnRzZWFyY2hfb3BzIHsKCglwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKCXByaXZhdGUgc3RhdGljICRfY2F0ZWdvcmllc19sb2FkZWQ7Cglwcml2YXRlIHN0YXRpYyAkX2NhY2hlZF9jYXRlZ29yaWVzOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3JpZXMoJGlkLCRwYXJhbXMsJHJldHVybmlkPS0xKSB7CiAgICAJJHRtcCA9IHNlbGY6OmdldF9hbGxfY2F0ZWdvcmllcygpOwogICAgCWlmKCAhY291bnQoJHRtcCkgKSByZXR1cm47CgogICAgCSRjYXRpbmZvID0gYXJyYXkoKTsKICAgIAlpZiggIWlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5J10pIHx8ICRwYXJhbXNbJ2NhdGVnb3J5J10gPT0gJycgKSB7CgkgIAkJJGNhdGluZm8gPSAkdG1wOwogICAgCX0gZWxzZSB7CgkgIAkJJGNhdGVnb3JpZXMgPSBleHBsb2RlKCcsJywgJHBhcmFtc1snY2F0ZWdvcnknXSk7CgkgIAkJZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRtcCk7ICRpKysgKSB7CgkgICAgCWlmKCAhY291bnQoJGNhdGVnb3JpZXMpIHx8IGluX2FycmF5KCR0bXBbJGldWydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lJ10sJGNhdGVnb3JpZXMpICkgewoJCSAgCQkkY2F0aW5mb1tdID0gJHRtcFskaV07CgkgICAgCX0KCSAgCX0KICAgIH0KCiAgICB1bnNldCgkdG1wKTsKICAgIGlmKCAhY291bnQoJGNhdGluZm8pICkgcmV0dXJuOwoKICAgICRjYXRfaWRzID0gYXJyYXkoKTsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRjYXRpbmZvKTsgJGkrKyApIHsKCSAgJGNhdF9pZHNbXSA9ICRjYXRpbmZvWyRpXVsnZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnXTsKICAgIH0KICAgIHNvcnQoJGNhdF9pZHMpOwogICAgJGNhdF9pZHMgPSBhcnJheV91bmlxdWUoJGNhdF9pZHMpOwoKICAgIC8vIGdldCBjb3VudHMuCiAgICAkZGVwdGggPSAxOwogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICRjb3VudHMgPSBhcnJheSgpOyAgewogICAgICAkcTIgPSAnU0VMRUNUIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkLENPVU5UKGRvY3VtZW50c2VhcmNoX2lkKSBBUyBjbnQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoIFdIRVJFIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkIElOICgnOwogICAgICAkcTIgLj0gaW1wbG9kZSgnLCcsJGNhdF9pZHMpLicpJzsKICAgICAgJHEyIC49ICcgR1JPVVAgQlkgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnOwogICAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcTIpOwogICAgICBpZiggY291bnQoJHRtcCkgKQl7CgkgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRtcCk7ICRpKysgKSB7CgkgICAgICAkY291bnRzWyR0bXBbJGldWydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCddXSA9ICR0bXBbJGldWydjbnQnXTsKCSAgICB9CgkgIH0KICAgIH0KCiAgICAkcm93Y291bnRlcj0wOwogICAgJGl0ZW1zID0gYXJyYXkoKTsKICAgICRkZXB0aCA9IDE7CiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY2F0aW5mbyk7ICRpKysgKSB7CgkgICRyb3cgPSYgJGNhdGluZm9bJGldOwoJICAkcm93WydpbmRleCddID0gJHJvd2NvdW50ZXIrKzsKCSAgJHJvd1snY291bnQnXSA9IChpc3NldCgkY291bnRzWyRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ11dKSk/JGNvdW50c1skcm93Wydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCddXTowOwoJICAkcm93WydwcmV2ZGVwdGgnXSA9ICRkZXB0aDsKCSAgJGRlcHRoID0gY291bnQoZXhwbG9kZSgnLicsICRyb3dbJ2hpZXJhcmNoeSddKSk7CgkgICRyb3dbJ2RlcHRoJ109JGRlcHRoOwoKCSAgLy8gY2hhbmdlcyBzbyB0aGF0IHBhcmFtZXRlcnMgc3VwcGxpZWQgdG8gdGhlIHRhZwoJICAvLyBnZXRzIGNhcnJpZWQgZG93biB0aHJvdWdoIHRoZSBsaW5rcwoJICAvLyBzY3JldyBwcmV0dHkgdXJscwoJICAkcGFybXMgPSAkcGFyYW1zOwoJICB1bnNldCgkcGFybXNbJ2Jyb3dzZWNhdCddKTsKCSAgdW5zZXQoJHBhcm1zWydjYXRlZ29yeSddKTsKCSAgJHBhcm1zWydjYXRlZ29yeV9pZCddID0gJHJvd1snZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnXTsKCgkgICRwYWdlaWQgPSAoaXNzZXQoJHBhcmFtc1snZGV0YWlscGFnZSddKSAmJiAkcGFyYW1zWydkZXRhaWxwYWdlJ10hPScnKT8kcGFyYW1zWydkZXRhaWxwYWdlJ106JHJldHVybmlkOwoJICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdEb2N1bWVudFNlYXJjaCcpOwoJICAkcm93Wyd1cmwnXSA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCdzdW1tYXJ5JywkcGFnZWlkLCRyb3dbJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUnXSwkcGFybXMsJycsdHJ1ZSk7CgkgICRpdGVtc1tdID0gJHJvdzsKICAgIH0KICAgIHJldHVybiAkaXRlbXM7CiAgfQoKCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9hbGxfY2F0ZWdvcmllcygpIHsKICAgIAlpZiggIXNlbGY6OiRfY2F0ZWdvcmllc19sb2FkZWQgKSB7CgkJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHkiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CgkJCWlmKCAkZGJyZXN1bHQgKSB7CgkgICAgCQlzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzID0gJGRicmVzdWx0OwoJICAJCX0KCQkJc2VsZjo6JF9jYXRlZ29yaWVzX2xvYWRlZCA9IFRSVUU7CiAgICAgIAl9CiAgICAJcmV0dXJuIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXM7Cgl9CgoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3J5X2xpc3QoKSB7CiAgICAJc2VsZjo6Z2V0X2FsbF9jYXRlZ29yaWVzKCk7CiAgICAJJGNhdGVnb3J5bGlzdCA9IGFycmF5KCk7CiAgICAJZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoc2VsZjo6JF9jYWNoZWRfY2F0ZWdvcmllcyk7ICRpKysgKSB7CgkJCSRyb3cgPSBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzWyRpXTsKCQkJJGNhdGVnb3J5bGlzdFskcm93Wydsb25nX25hbWUnXV0gPSAkcm93Wydkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCddOwogICAgICAJfQoKICAgIAlyZXR1cm4gJGNhdGVnb3J5bGlzdDsKICAJfQoKCiAgCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3J5X25hbWVzX2J5X2lkKCkgewogICAgCXNlbGY6OmdldF9hbGxfY2F0ZWdvcmllcygpOwogICAgCSRsaXN0ID0gYXJyYXkoKTsKICAgIAlmb3IoICRpID0gMDsgJGkgPCBjb3VudChzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzKTsgJGkrKyApIHsKCQkJJGxpc3Rbc2VsZjo6JF9jYWNoZWRfY2F0ZWdvcmllc1skaV1bJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkJ11dID0gc2VsZjo6JF9jYWNoZWRfY2F0ZWdvcmllc1skaV1bJ2RvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUnXTsKICAgICAgCX0KICAgIAlyZXR1cm4gJGxpc3Q7CiAgCX0KCiAgCiAgCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3J5X25hbWVfZnJvbV9pZCgkaWQpIHsKICAgIAlzZWxmOjpnZXRfYWxsX2NhdGVnb3JpZXMoKTsKICAgIAlmb3IoICRpID0gMDsgJGkgPCBjb3VudChzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzKTsgJGkrKyApIHsKCQkJaWYoICRpZCA9PSBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzWyRpXVsnZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnXSApIHsKCSAgICAJCXJldHVybiBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzWyRpXVsnZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSddOwoJICAJCX0KICAgICAgCX0KICAJfQoKCglzdGF0aWMgcHJpdmF0ZSBmdW5jdGlvbiAmZ2V0X2FydGljbGVfZnJvbV9yb3coJHJvdywkZ2V0X2ZpZWxkcyA9ICdQVUJMSUMnKSB7CiAgICAJaWYoICFpc19hcnJheSgkcm93KSApIHJldHVybjsKICAgIAkkYXJ0aWNsZSA9IG5ldyBkb2N1bWVudHNlYXJjaF9hcnRpY2xlOwogICAgCWZvcmVhY2goICRyb3cgYXMgJGtleSA9PiAkdmFsdWUgKSB7CgkJCXN3aXRjaCggJGtleSApIHsKCSAgCQljYXNlICdkb2N1bWVudHNlYXJjaF9pZCc6CgkgICAgCQkkYXJ0aWNsZS0+aWQgPSAkdmFsdWU7CgkgICAgCQlicmVhazsKCgkgIAkJY2FzZSAnZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQnOgoJICAgIAkJJGFydGljbGUtPmNhdGVnb3J5X2lkID0gJHZhbHVlOwoJICAgIAkJYnJlYWs7CgoJICAJCWNhc2UgJ2RvY3VtZW50c2VhcmNoX3RpdGxlJzoKCSAgICAJCSRhcnRpY2xlLT50aXRsZSA9ICR2YWx1ZTsKCSAgICAJCWJyZWFrOwoKCSAgCQljYXNlICdkb2N1bWVudHNlYXJjaF9kYXRhJzoKCSAgICAJCSRhcnRpY2xlLT5jb250ZW50ID0gJHZhbHVlOwoJICAgIAkJYnJlYWs7CgoJICAJCWNhc2UgJ2RvY3VtZW50c2VhcmNoX2RhdGUnOgoJICAgIAkJJGFydGljbGUtPnBvc3RkYXRlID0gJHZhbHVlOwoJICAgIAkJYnJlYWs7CgoJICAJCWNhc2UgJ3N1bW1hcnknOgoJICAgIAkJJGFydGljbGUtPnN1bW1hcnkgPSAkdmFsdWU7CgoJICAJCWNhc2UgJ3N0YXJ0X3RpbWUnOgoJICAgIAkJJGFydGljbGUtPnN0YXJ0ZGF0ZSA9ICR2YWx1ZTsKCSAgICAJCWJyZWFrOwoKCSAgCQljYXNlICdlbmRfdGltZSc6CgkgICAgCQkkYXJ0aWNsZS0+ZW5kZGF0ZSA9ICR2YWx1ZTsKCSAgICAJCWJyZWFrOwoKCSAgCQljYXNlICdjcmVhdGVfZGF0ZSc6CgkgICAgCQkkYXJ0aWNsZS0+Y3JlYXRlX2RhdGUgPSAkdmFsdWU7CgkgICAgCQlicmVhazsKCgkgIAkJY2FzZSAnbW9kaWZpZWRfZGF0ZSc6CgkgICAgCQkkYXJ0aWNsZS0+bW9kaWZpZWRfZGF0ZSA9ICR2YWx1ZTsKCSAgICAJCWJyZWFrOwoKCSAgCQljYXNlICdhdXRob3JfaWQnOgoJICAgIAkJJGFydGljbGUtPmF1dGhvcl9pZCA9ICR2YWx1ZTsKCSAgICAJCWJyZWFrOwoKCSAgCQljYXNlICdkb2N1bWVudHNlYXJjaF9leHRyYSc6CgkgICAgCQkkYXJ0aWNsZS0+ZXh0cmEgPSAkdmFsdWU7CgkgICAgCQlicmVhazsKCgkgIAkJY2FzZSAnZG9jdW1lbnRzZWFyY2hfdXJsJzoKCSAgICAJCSRhcnRpY2xlLT5kb2N1bWVudHNlYXJjaF91cmwgPSAkdmFsdWU7CgkgICAgCQlicmVhazsKCgkgIAkJY2FzZSAncG9zdGRhdGVfTW9udGgnOgoJICAgIAkJJG5ld3MtPnBvc3RkYXRlID0gbWt0aW1lKCRwYXJhbXNbJ3Bvc3RkYXRlX0hvdXInXSwgJHBhcmFtc1sncG9zdGRhdGVfTWludXRlJ10sICRwYXJhbXNbJ3Bvc3RkYXRlX1NlY29uZCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9Nb250aCddLCAkcGFyYW1zWydwb3N0ZGF0ZV9EYXknXSwgJHBhcmFtc1sncG9zdGRhdGVfWWVhciddKTsKCSAgICAJCWJyZWFrOwoJICAJCX0KCQl9CgogICAgCWlmKCAkZ2V0X2ZpZWxkcyAmJiAkZ2V0X2ZpZWxkcyAhPSAnTk9ORScgJiYgJGFydGljbGUtPmlkICkgewoJCQlzZWxmOjpwcmVsb2FkRmllbGREYXRhKCRhcnRpY2xlLT5pZCk7CgkJCSRmaWVsZHMgPSBzZWxmOjpnZXRfZmllbGRzKCRhcnRpY2xlLT5pZCk7CgkJCWlmKCBjb3VudCgkZmllbGRzKSApIHsKCSAgICAJCWZvcmVhY2goICRmaWVsZHMgYXMgJGZpZWxkICkgewoJCQkJCSRhcnRpY2xlLT5zZXRfZmllbGQoJGZpZWxkKTsKCSAgICAgIAkJfQoJICAJCX0KCQl9CgogICAgCXJldHVybiAkYXJ0aWNsZTsKCX0KCglzdGF0aWMgcHVibGljIGZ1bmN0aW9uICZnZXRfbGF0ZXN0X2FydGljbGUoJGZvcl9kaXNwbGF5ID0gVFJVRSkgewogICAgCSRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAJJG5vdyA9ICRkYi0+RGJUaW1lU3RhbXAodGltZSgpKTsKICAgIAkkcXVlcnkgPSAiU0VMRUNUIG1uLiosIG1kYy5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaCBtZCBMRUZUIE9VVEVSIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIG1kYyBPTiBtZGMuZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfaWQgPSBtZC5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCBXSEVSRSAiOwogICAgCSRxdWVyeSAuPSAiKCIuJGRiLT5JZk51bGwoJ3N0YXJ0X3RpbWUnLCRkYi0+REJUaW1lU3RhbXAoMSkpLiIgPCAkbm93KSBBTkQgIjsKICAgIAkkcXVlcnkgLj0gIigoIi4kZGItPklmTnVsbCgnZW5kX3RpbWUnLCRkYi0+REJUaW1lU3RhbXAoMSkpLiIgPSAiLiRkYi0+REJUaW1lU3RhbXAoMSkuIikgT1IgKGVuZF90aW1lID4gJG5vdykpICI7CiAgICAJJHF1ZXJ5IC49ICdPUkRFUiBCWSBkb2N1bWVudHNlYXJjaF9kYXRlIERFU0MgTElNSVQgMSc7CiAgICAJJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSk7CgogICAgCXJldHVybiBzZWxmOjpnZXRfYXJ0aWNsZV9mcm9tX3Jvdygkcm93LCgkZm9yX2Rpc3BsYXkpPydQVUJMSUMnOidBTEwnKTsgICAgCgl9CgoKCXN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gJmdldF9hcnRpY2xlX2J5X2lkKCRhcnRpY2xlX2lkLCRmb3JfZGlzcGxheSA9IFRSVUUsJGFsbG93X2V4cGlyZWQgPSBGQUxTRSkgewogICAgCSRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAJJHF1ZXJ5ID0gJ1NFTEVDVCBtbi4qLCBtZGMuZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfZG9jdW1lbnRzZWFyY2ggbWQgCiAgICAgICAgCUxFRlQgT1VURVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoX2NhdGVnb3JpZXMgbWRjIE9OIG1kYy5kb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCA9IG1kLmRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkIAogICAgICAgICAgICBXSEVSRSBkb2N1bWVudHNlYXJjaF9pZCA9ID8KICAgICAgICAgICAgQU5EICgnLiRkYi0+aWZOdWxsKCdzdGFydF90aW1lJywkZGItPkRiVGltZVN0YW1wKDEpKS4nIDwgTk9XKCkpJzsKICAgIAlpZiggISRhbGxvd19leHBpcmVkICkgewogICAgICAJCSRxdWVyeSAuPSAnQU5EICgoJy4kZGItPmlmTnVsbCgnZW5kX3RpbWUnLCRkYi0+RGJUaW1lU3RhbXAoMSkpLicgPSAnLiRkYi0+RGJUaW1lU3RhbXAoMSkuJykgT1IgKGVuZF90aW1lID4gTk9XKCkpKSc7CiAgICAJfQogICAgCSRyb3cgPSAkZGItPkdldFJvdygkcXVlcnksIGFycmF5KCRhcnRpY2xlX2lkKSk7CgogICAgCSRyZXMgPSBudWxsOwogICAgCWlmKCAhJHJvdyApIHJldHVybiAkcmVzOwogICAgCiAgICAJcmV0dXJuIHNlbGY6OmdldF9hcnRpY2xlX2Zyb21fcm93KCRyb3csKCRmb3JfZGlzcGxheSk/J1BVQkxJQyc6J0FMTCcpOyAgICAKICAJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJlbG9hZEZpZWxkRGF0YSgkaWRzKSB7CiAgICAJaWYoICFpc19hcnJheSgkaWRzKSAmJiBpc19udW1lcmljKCRpZHMpICkgewoJCQkkaWRzID0gYXJyYXkoJGlkcyk7CiAgICAgIAl9CgogICAgCSR0bXAgPSBhcnJheSgpOwogICAgCWZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRpZHMpOyAkaSsrICkgewoJCQkkbiA9IChpbnQpJGlkc1skaV07CgkJCWlmKCAkbiA8IDAgKSBjb250aW51ZTsKCQkJaWYoIGlzX2FycmF5KHNlbGY6OiRfY2FjaGVkX2ZpZWxkdmFscykgJiYgaXNzZXQoc2VsZjo6JF9jYWNoZWRfZmllbGR2YWxzWyRuXSkgKSBjb250aW51ZTsgCgkJCSR0bXBbXSA9ICRuOwogICAgICAJfQogICAgCWlmKCAhaXNfYXJyYXkoJHRtcCkgfHwgIWNvdW50KCR0bXApICkgcmV0dXJuOwogICAgCXNvcnQoJHRtcCk7CiAgICAJJGlkbGlzdCA9IGFycmF5X3VuaXF1ZSgkdG1wKTsKCiAgICAJJGZpZWxkZGVmcyA9IHNlbGY6OmdldF9maWVsZGRlZnMoKTsKICAgIAlpZiggIWNvdW50KCRmaWVsZGRlZnMpICkgcmV0dXJuOwoKICAgIAkkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgCSRxdWVyeSA9ICdTRUxFQ1QgQS5kb2N1bWVudHNlYXJjaF9pZCxBLmZpZWxkZGVmX2lkLEEudmFsdWUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoX2ZpZWxkdmFscyBBCiAgICAgICAgCUlOTkVSIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9kb2N1bWVudHNlYXJjaF9maWVsZGRlZnMgQgogICAgICAgICAgICBPTiBBLmZpZWxkZGVmX2lkID0gQi5pZAogICAgICAgICAgICBXSEVSRSBkb2N1bWVudHNlYXJjaF9pZCBJTiAoJy5pbXBsb2RlKCcsJywkaWRsaXN0KS4nKSAKICAgICAgICAgICAgT1JERVIgQlkgQS5kb2N1bWVudHNlYXJjaF9pZCxCLml0ZW1fb3JkZXInOwogICAgCSRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAJaWYoICEkZGJyICkgcmV0dXJuOwoKICAgIAkvLyBpbml0aWFsaXphdGlvbi4KICAgIAlpZiggIWlzX2FycmF5KHNlbGY6OiRfY2FjaGVkX2ZpZWxkdmFscykgKSBzZWxmOjokX2NhY2hlZF9maWVsZHZhbHMgPSBhcnJheSgpOwogICAgCWZvcmVhY2goICRpZGxpc3QgYXMgJGRvY3VtZW50c2VhcmNoX2lkICkgewoJCQlpZiggaXNzZXQoc2VsZjo6JF9jYWNoZWRfZmllbGR2YWxzWyRkb2N1bWVudHNlYXJjaF9pZF0pICkgY29udGludWU7CgogCQkJc2VsZjo6JF9jYWNoZWRfZmllbGR2YWxzWyRkb2N1bWVudHNlYXJjaF9pZF0gPSBhcnJheSgpOwogCQkJZm9yZWFjaCggJGZpZWxkZGVmcyBhcyAkZmllbGQgKSB7CiAJICAgIAkJJG9iaiA9IG5ldyBkb2N1bWVudHNlYXJjaF9maWVsZDsKIAkgICAgCQlmb3JlYWNoKCAkZmllbGQgYXMgJGsgPT4gJHYgKSB7CgkJCQkJJG9iai0+JGsgPSAkdjsKCSAgICAgIAkJfQogCSAgICAJCXNlbGY6OiRfY2FjaGVkX2ZpZWxkdmFsc1skZG9jdW1lbnRzZWFyY2hfaWRdWyRmaWVsZFsnaWQnXV0gPSAkb2JqOwogCSAgCQl9CiAgICAgIAl9CgogICAgCS8vIGZpbGwgd2l0aCB2YWx1ZXMuCiAgICAJZm9yZWFjaCggJGRiciBhcyAkcm93ICkgewoJCQkkZG9jdW1lbnRzZWFyY2hfaWQgPSAkcm93Wydkb2N1bWVudHNlYXJjaF9pZCddOwoJCQkkZmxkZGVmX2lkID0gJHJvd1snZmllbGRkZWZfaWQnXTsKCQkJJHZhbHVlID0gJHJvd1sndmFsdWUnXTsKCgkJCWlmKCAhaXNzZXQoc2VsZjo6JF9jYWNoZWRfZmllbGR2YWxzWyRkb2N1bWVudHNlYXJjaF9pZF1bJGZsZGRlZl9pZF0pICkgY29udGludWU7CgkJCXNlbGY6OiRfY2FjaGVkX2ZpZWxkdmFsc1skZG9jdW1lbnRzZWFyY2hfaWRdWyRmbGRkZWZfaWRdLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgCX0KICAJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2ZpZWxkcygkZG9jdW1lbnRzZWFyY2hfaWQsJHB1YmxpY19vbmx5ID0gdHJ1ZSwkZmlsbGVkX29ubHkgPSBGQUxTRSkgewogICAgCWlmKCAkZG9jdW1lbnRzZWFyY2hfaWQgPD0gMCApIHJldHVybjsKICAgIAlpZiggIWlzc2V0KHNlbGY6OiRfY2FjaGVkX2ZpZWxkdmFsc1skZG9jdW1lbnRzZWFyY2hfaWRdKSApIHJldHVybjsKCiAgICAJJHJlc3VsdHMgPSBhcnJheSgpOwogICAgCWZvcmVhY2goIHNlbGY6OiRfY2FjaGVkX2ZpZWxkdmFsc1skZG9jdW1lbnRzZWFyY2hfaWRdIGFzICRmaWQgPT4gJGRhdGEgKSB7CgkJCWlmKCAhJHB1YmxpY19vbmx5IHx8ICRkYXRhLT5wdWJsaWMgKSB7CgkgICAgCQlpZiggISRmaWxsZWRfb25seSB8fCAoaXNzZXQoJGRhdGEtPnZhbHVlKSAmJiAkZGF0YS0+dmFsdWUgIT0gJycpICkgewoJICAgICAgCQkJJHJlc3VsdHNbJGRhdGEtPm5hbWVdID0gJGRhdGE7CgkgICAgCQl9CgkgIAkJfQogICAgICAJfQogICAgCXJldHVybiAkcmVzdWx0czsKICAJfQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.pdf2text.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogQ29weXJpZ2h0IDIwMDksIFRob21hcyBDaGVzdGVyDQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCiAqDQogKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogKg0KICogQHBhY2thZ2UgUGRmMlRleHQNCiAqIEBhdXRob3IgVGhvbWFzIENoZXN0ZXINCiAqIEBsaW5rIGh0dHBzOi8vbGF1bmNocGFkLm5ldC9wZGYydGV4dCBQZGYyVGV4dCBQcm9qZWN0DQogKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDA5LCBUaG9tYXMgQ2hlc3Rlcg0KICogQGxpY2Vuc2UgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMA0KICogQHZlcnNpb24gMS4xLjANCiAqLw0KDQovKioNCiAqIEludGVyZmFjZSBkZXNjcmliaW5nIHRoZSB0eXBlcyBvZiBkYXRhIGFuZCBtZXRhZGF0YSB0aGF0DQogKiBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIHBkZjJ0ZXh0IG9iamVjdC4NCiAqIEBhY2Nlc3MgcHVibGljDQogKiBAcGFja2FnZSBQZGYyVGV4dA0KICogQGF1dGhvciBUaG9tYXMgQ2hlc3Rlcg0KICovDQppbnRlcmZhY2UgVENoZXN0ZXJfaVBERkluZm8NCnsNCiAgICAvKioNCiAgICAgKiBUaGUgZG9jdW1lbnQncyB0aXRsZS4NCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFRpdGxlKCk7DQoNCiAgICAvKioNCiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcGVyc29uIHdobyBjcmVhdGVkIHRoZSBkb2N1bWVudC4NCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGhvcigpOw0KDQogICAgLyoqDQogICAgICogVGhlIHN1YmplY3Qgb2YgdGhlIGRvY3VtZW50Lg0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3ViamVjdCgpOw0KDQogICAgLyoqDQogICAgICogS2V5d29yZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkb2N1bWVudC4NCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEtleXdvcmRzKCk7DQoNCiAgICAvKioNCiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhlIGRvY3VtZW50DQogICAgICogYmVmb3JlIGl0IHdhcyBjb252ZXJ0ZWQgdG8gUERGIGZvcm1hdC4NCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldENyZWF0b3IoKTsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGNvbnZlcnRlZCB0aGUgb3JpZ2luYWwgZG9jdW1lbnQNCiAgICAgKiBpbnRvIFBERiBmb3JtYXQuDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcm9kdWNlcigpOw0KDQogICAgLyoqDQogICAgICogVGhlIGh1bWFuLXJlYWRhYmxlIGRhdGUgYW5kIHRpbWUgd2hlbiB0aGUgUERGIHdhcyBjcmVhdGVkLg0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q3JlYXRpb25EYXRlKCk7DQoNCiAgICAvKioNCiAgICAgKiBUaGUgaHVtYW4tcmVhZGFibGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgbW9zdCByZWNlbnQgbW9kaWZpY2F0aW9uLg0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kRGF0ZSgpOw0KDQogICAgLyoqDQogICAgICogVGhlIHRleHR1YWwgY29udGVudHMgb2YgdGhlIFBERiBmaWxlLg0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKTsNCn0NCg0KLyoqDQogKiBJbnRlcmZhY2UgZGVzY3JpYmluZyB0aGUgdHlwZXMgb2Ygc3RydWN0dXJhbCBkYXRhIHRoYXQNCiAqIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBwZGYydGV4dCBvYmplY3QuDQogKiBAYWNjZXNzIHB1YmxpYw0KICogQHBhY2thZ2UgUGRmMlRleHQNCiAqIEBhdXRob3IgVGhvbWFzIENoZXN0ZXINCiAqLw0KaW50ZXJmYWNlIFRDaGVzdGVyX2lQREZTdHJ1Y3R1cmUNCnsNCiAgICAvKioNCiAgICAgKiBSZXRyaWV2ZXMgdGhlIHBhcnNlZCBIZWFkZXIgc2VjdGlvbiBvZiB0aGUgUERGIGZpbGUuDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXIoKTsNCg0KICAgIC8qKg0KICAgICAqIFJldHJpZXZlcyB0aGUgcGFyc2VkIFRyYWlsZXIgc2VjdGlvbiBvZiB0aGUgUERGIGZpbGUuDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUcmFpbGVyKCk7DQoNCiAgICAvKioNCiAgICAgKiBSZXRyaWV2ZXMgdGhlIHBhcnNlZCBCb2R5IHNlY3Rpb24gb2YgdGhlIFBERiBmaWxlLg0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Qm9keSgpOw0KDQogICAgLyoqDQogICAgICogUmV0cmlldmVzIHRoZSBwYXJzZWQgQ3Jvc3MtUmVmZXJlbmNlIHNlY3Rpb24gb2YgdGhlIFBERiBmaWxlLg0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0WHJlZigpOw0KfQ0KDQovKioNCiAqIENsYXNzIHdyYXBwZXIgYXJvdW5kIGFuIGFycmF5IG9mIGtleS92YWx1ZSBwYWlycw0KICogSGVyZSBpcyBhbiBleGFtcGxlOg0KICogPGNvZGU+DQogKiA8P3BocA0KICogICAgICRiYWcgPSBuZXcgVENoZXN0ZXJfU3RydWN0dXJlQmFnKCk7IC8vIENyZWF0ZXMgbmV3IGJhZw0KICogICAgICRiYWctPnRpdGxlID0gIk15IFRpdGxlIjsgICAgICAgICAgIC8vIEtleS92YWx1ZSAidGl0bGUiID09PiAiTXkgVGl0bGUiDQogKiAgICAgJHRpdGxlID0gJGJhZy0+dGl0bGU7ICAgICAgICAgICAgICAgLy8gR2V0ICJNeSBUaXRsZSIgdXNpbmcgInRpdGxlIiBrZXkNCiAqICAgICAkbmFtZSA9ICRiYWctPm5hbWU7ICAgICAgICAgICAgICAgICAvLyBFcnJvciAtIGtleSBkb2VzIG5vdCBleGlzdA0KICogPz4NCiAqIDwvY29kZT4NCiAqIEBhY2Nlc3MgcHVibGljDQogKiBAcGFja2FnZSBQZGYyVGV4dA0KICogQGF1dGhvciBUaG9tYXMgQ2hlc3Rlcg0KICovDQpjbGFzcyBUQ2hlc3Rlcl9TdHJ1Y3R1cmVCYWcNCnsNCiAgICAvKioNCiAgICAgKiBJbnRlcm5hbCBzdG9yZWQgaXMgaW1wbGVtZW50ZWQgYXMga2V5L3ZhbHVlIHBhaXJzDQogICAgICogQHZhciBhcnJheQ0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9kYXRhID0gYXJyYXkoKTsNCiAgICANCiAgICAvKioNCiAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQ0KICAgIHsNCiAgICAgICAgLy8gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuDQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIEFkZCBhIGtleS92YWx1ZSBwYWlyIHRvIHRoZSBjb2xsZWN0aW9uLCBpZiB0aGUNCiAgICAgKiBrZXkgYWxyZWFkeSBleGlzdHMsIGl0cyB2YWx1ZSB3aWxsIGJlIG92ZXJ3cml0dGVuLg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgS2V5IHRvIGFzc29jaWF0ZSB3aXRoIHZhbHVlDQogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBWYWx1ZSB0byBzdG9yZQ0KICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRuYW1lLCAkdmFsdWUpDQogICAgew0KICAgICAgICAkdGhpcy0+X2RhdGFbJG5hbWVdID0gJHZhbHVlOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgYSBzcGVjaWZpZWQga2V5LCBpZiB0aGUga2V5DQogICAgICogZG9lcyBub3QgZXhpc3QgYW4gZXJyb3Igd2lsbCBiZSB0cmlnZ2VyZWQuDQogICAgICogQHBhcmFtICRuYW1lIEtleSB0byByZXRyaWV2ZSB2YWx1ZSBmb3INCiAgICAgKiBAcmV0dXJuIG1peGVkIFZhbHVlIGFzc29jaWF0ZWQgd2l0aCBrZXkgb3IgbnVsbCBpZiBlcnJvciBvY2N1cnJlZA0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRuYW1lKQ0KICAgIHsNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJG5hbWUsICR0aGlzLT5fZGF0YSkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJG5hbWVdOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBBbiB1bmRlZmluZWQgYXJyYXkga2V5IHdpbGwgdHJpZ2dlciBhbiBlcnJvcg0KICAgICAgICAkdHJhY2UgPSBkZWJ1Z19iYWNrdHJhY2UoKTsNCiAgICAgICAgdHJpZ2dlcl9lcnJvcigNCiAgICAgICAgICAgICJVbmRlZmluZWQgcHJvcGVydHkgdmlhIF9fZ2V0KCk6ICIgLiAkbmFtZSAuDQogICAgICAgICAgICAiIGluICIgLiAkdHJhY2VbMF1bJ2ZpbGUnXSAuICIgb24gbGluZSAiIC4NCiAgICAgICAgICAgICR0cmFjZVswXVsnbGluZSddLA0KICAgICAgICAgICAgRV9VU0VSX05PVElDRQ0KICAgICAgICApOw0KICAgICAgICANCiAgICAgICAgcmV0dXJuIG51bGw7DQogICAgfQ0KICAgIA0KfQ0KDQovKioNCiAqIENsYXNzIHRvIGV4dHJhY3QgdGV4dCBjb250ZW50cyBhbmQgbWV0YWRhdGEgb3V0IG9mIGEgZG9jdW1lbnQgdGhhdCB3YXMNCiAqIGNyZWF0ZWQgdXNpbmcgdGhlIEFkb2JlIFBvcnRhYmxlIERvY3VtZW50IEZvcm1hdC4NCiAqDQogKiBXQVJOSU5HOiBUaGUgUERGIDEuNCBzcGVjaWZpY2F0aW9uIGFsbG93cyBpbmNyZW1lbnRhbCB1cGRhdGVzDQogKiB0byB0aGUgUERGIHdoaWNoIGNvdWxkIHJlc3VsdCBpbiBhcHBlYXJhbmNlIG9mIG11bHRpcGxlIGJvZHksIGNyb3NzLQ0KICogcmVmZXJlbmNlLCBhbmQgdHJhaWxlciBzZWN0aW9ucy4gVGhpcyBjbGFzcyBoYXMgbm90IGJlZW4gdGVzdGVkIHVzaW5nDQogKiBzdWNoIGEgUERGIGZpbGUgYW5kIHRoZSBvdXRwdXQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2VzIGlzIHVua25vd24uIEl0DQogKiBpcyBhc3N1bWVkIHRoaXMgaW5jcmVtZW50YWwgdXBkYXRpbmcgaXMgdGhlIGV4Y2VwdGlvbg0KICogcmF0aGVyIHRoYW4gdGhlIG5vcm0uDQogKiANCiAqIE5PVEU6IEVuY3J5cHRpb24gb2YgUERGJ3MgaXMgbm90IHN1cHBvcnRlZCwgY29udGVudCBhbmQgbWV0YWRhdGEgd2lsbA0KICogbm90IGJlIGF2YWlsYWJsZS4NCiAqDQogKiBIZXJlIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZ2V0IHRoZSBjb250ZW50cyBhbmQgbWV0YWRhdGE6DQogKiA8Y29kZT4NCiAqICAgICRvYmplY3QgICA9IG5ldyBUQ2hlc3Rlcl9QZGYyVGV4dCgiZG9jdW1lbnQxLnBkZiIpOw0KICogICAgaWYgKCR0cmFpbGVyLT5lbmNyeXB0ID09PSBmYWxzZSkgew0KICogICAgICAgICRjb250ZW50cyA9ICRvYmplY3QtPmdldENvbnRlbnQoKTsNCiAqICAgICAgICAkdGl0bGUgICAgPSAkb2JqZWN0LT5nZXRUaXRsZSgpOw0KICogICAgICAgICRhdXRob3IgICA9ICRvYmplY3QtPmdldEF1dGhvcigpOw0KICogICAgICAgICRzdWJqZWN0ICA9ICRvYmplY3QtPmdldFN1YmplY3QoKTsNCiAqICAgICAgICAka2V5d29yZHMgPSAkb2JqZWN0LT5nZXRLZXl3b3JkcygpOw0KICogICAgICAgICRjcmVhdG9yICA9ICRvYmplY3QtPmdldENyZWF0b3IoKTsNCiAqICAgICAgICAkcHJvZHVjZXIgPSAkb2JqZWN0LT5nZXRQcm9kdWNlcigpOw0KICogICAgICAgICRjcmVhdGVkICA9ICRvYmplY3QtPmdldENyZWF0aW9uRGF0ZSgpOw0KICogICAgICAgICRtb2RpZmllZCA9ICRvYmplY3QtPmdldE1vZERhdGUoKTsNCiAqICAgIH0NCiAqIDwvY29kZT4gDQogKiBAbGluayBodHRwOi8vd3d3LmFkb2JlLmNvbS9kZXZuZXQvcGRmL3BkZl9yZWZlcmVuY2UuaHRtbCBQREYgUmVmZXJlbmNlDQogKiBAYWNjZXNzIHB1YmxpYw0KICogQHBhY2thZ2UgUGRmMlRleHQNCiAqIEBhdXRob3IgVGhvbWFzIENoZXN0ZXINCiAqLw0KY2xhc3MgVENoZXN0ZXJfUGRmMlRleHQgaW1wbGVtZW50cyBUQ2hlc3Rlcl9pUERGSW5mbywgVENoZXN0ZXJfaVBERlN0cnVjdHVyZQ0Kew0KICAgIC8qKg0KICAgICAqIFRoZSBQREYgdGl0bGUgZnJvbSB0aGUgbWV0YWRhdGENCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF90aXRsZSAgICAgICAgPSAiIjsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBQREYgYXV0aG9yIGZyb20gdGhlIG1ldGFkYXRhDQogICAgICogQHZhciBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlICRfYXV0aG9yICAgICAgID0gIiI7DQoNCiAgICAvKioNCiAgICAgKiBUaGUgUERGIHN1YmplY3QgZnJvbSB0aGUgbWV0YWRhdGENCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9zdWJqZWN0ICAgICAgPSAiIjsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBQREYga2V5d29yZHMgZnJvbSB0aGUgbWV0YWRhdGENCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9rZXl3b3JkcyAgICAgPSAiIjsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBQREYga2V5d29yZHMgZnJvbSB0aGUgbWV0YWRhdGEgb2YgQXBwbGUgZ2VuZXJhdGVkIFBERidzDQogICAgICogQHZhciBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlICRfYWFwbEtleXdvcmRzID0gIiI7DQoNCiAgICAvKioNCiAgICAgKiBUaGUgUERGIGNyZWF0b3IgZnJvbSB0aGUgbWV0YWRhdGENCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9jcmVhdG9yICAgICAgPSAiIjsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBQREYgcHJvZHVjZXIgZnJvbSB0aGUgbWV0YWRhdGENCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9wcm9kdWNlciAgICAgPSAiIjsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBQREYgY3JlYXRpb24gZGF0ZSBmcm9tIHRoZSBtZXRhZGF0YQ0KICAgICAqIEB2YXIgc3RyaW5nDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSAkX2NyZWF0aW9uRGF0ZSA9ICIiOw0KDQogICAgLyoqDQogICAgICogVGhlIFBERiBsYXN0IG1vZGlmaWNhdGlvbiBkYXRlIHRpdGxlIGZyb20gdGhlIG1ldGFkYXRhDQogICAgICogQHZhciBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlICRfbW9kRGF0ZSAgICAgID0gIiI7DQoNCiAgICAvKioNCiAgICAgKiBUaGUgUERGIHRleHQgY29udGVudCBmcm9tIHRoZSBib2R5IHNlY3Rpb24NCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9jb250ZW50cyAgICAgPSAiIjsNCiAgICANCiAgICAvKioNCiAgICAgKiBUaGUgY29udGVudHMgb2YgdGhlIFBERiBoZWFkZXIgc2VjdGlvbg0KICAgICAqIEB2YXIgVENoZXN0ZXJfU3RydWN0dXJlQmFnDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSAkX2JhZ0hlYWRlciAgICA9ICIiOw0KDQogICAgLyoqDQogICAgICogVGhlIGNvbnRlbnRzIG9mIHRoZSBQREYgdHJhaWxlciBzZWN0aW9uDQogICAgICogQHZhciBUQ2hlc3Rlcl9TdHJ1Y3R1cmVCYWcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlICRfYmFnVHJhaWxlciAgID0gIiI7DQoNCiAgICAvKioNCiAgICAgKiBUaGUgY29udGVudHMgb2YgdGhlIFBERiBib2R5IHNlY3Rpb24NCiAgICAgKiBAdmFyIFRDaGVzdGVyX1N0cnVjdHVyZUJhZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9iYWdCb2R5ICAgICAgPSAiIjsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBjb250ZW50cyBvZiB0aGUgUERGIGNyb3NzIHJlZmVyZW5jZSBzZWN0aW9uDQogICAgICogQHZhciBUQ2hlc3Rlcl9TdHJ1Y3R1cmVCYWcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlICRfYmFnWHJlZiAgICAgID0gIiI7DQoNCiAgICAvKioNCiAgICAgKiBBcnJheSBvZiBwYXJzZWQgb2JqZWN0cyBmcm9tIHRoZSBQREYgYm9keS4gRWFjaCBvYmplY3QgaXMgYW4NCiAgICAgKiBhcnJheSB3aXRoIHRoZSBmb2xsb3dpbmcga2V5czogJ2tleScsICdkaWN0aW9uYXJ5JywgJ3N0cmVhbScNCiAgICAgKiAnY29udGVudHMnLCAncHJvYmFibGVUZXh0Jy4NCiAgICAgKiBAdmFyIGFycmF5DQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSAkX2FyeU9iamVjdHMgICA9IG51bGw7DQoNCiAgICAvKioNCiAgICAgKiBBcnJheSBvZiBwYXJzZWQgaW5mbyBvYmplY3RzIGZyb20gdGhlIFBERiB0cmFpbGVyLiBUaGUgUERGDQogICAgICogc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgYXMga2V5czogJ1NpemUnLCAnUHJldicsDQogICAgICogJ1Jvb3QnLCAnRW5jcnlwdCcsICdJbmZvJywgJ0lEJy4gJ0lEJyBpcyBhY3R1YWxseSB0cmVhdGVkIGFzDQogICAgICogJ0lEMScgYW5kICdJRDInIGluIHRoZSBjb2RlLg0KICAgICAqIEB2YXIgYXJyYXkNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlICRfYXJ5SW5mb0tleXMgID0gbnVsbDsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBQREYgZmlsZSBiZWluZyBwYXJzZWQNCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9maWxlTmFtZSAgICAgPSAiIjsNCg0KICAgIC8qKg0KICAgICAqIFRoZSBjdXJyZW50IGxpbmUgcmVhZCBmcm9tIHRoZSBQREYgZmlsZQ0KICAgICAqIEB2YXIgaW50ZWdlcg0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9maWxlTGluZSAgICAgPSAwOw0KDQogICAgLyoqDQogICAgICogQ29udGFpbnMgdGhlIGN1cnJlbnQgbGluZSByZWFkIGZyb20gdGhlIGlucHV0DQogICAgICogQHZhciBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKiBAdXNlcyBfcmVhZExpbmUoKSBwb3B1bGF0ZWQgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uDQogICAgICovDQogICAgcHJpdmF0ZSAkX2ZpbGVCdWZmZXIgICA9ICIiOw0KDQogICAgLyoqDQogICAgICogRmlsZSBoYW5kbGUgdXNlZCBieSBQSFAgZmlsZSBwcm9jZXNzaW5nIGZ1bmN0aW9ucw0KICAgICAqIEB2YXIgaW50ZWdlcg0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgJF9maWxlSGFuZGxlICAgPSAwOw0KDQogICAgLyoqDQogICAgICogQ2xhc3MgY29uc3RydWN0b3INCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBOYW1lIGFuZCBwYXRoIG9mIFBERiBmaWxlDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZpbGVuYW1lKQ0KICAgIHsNCiAgICAgICAgLy8gV2l0aG91dCB0aGlzIHNldHRpbmcsIHRyeWluZyB0byBwYXJzZSBXaW5kb3dzIGNyZWF0ZWQgUERGJ3Mgb24gTWFjL1VuaXgNCiAgICAgICAgLy8gb3IgdmljZSB2ZXJzYSB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4NCiAgICAgICAgaW5pX3NldCgnYXV0b19kZXRlY3RfbGluZV9lbmRpbmdzJywgdHJ1ZSk7DQoNCiAgICAgICAgLy8gV2UgYXJlIGdvaW5nIHRvIHN1cHByZXNzIGVycm9ycyB3aGlsZSBleGVjdXRpbmcgY2VydGFpbiBjb2RlIHN0YXRlbWVudHMNCiAgICAgICAgLy8gYnV0IHdlIHN0aWxsIHdhbnQgdG8gcHJlc2VydmUgYW55IGVycm9ycyBmb3Igb3V0cHV0Lg0KICAgICAgICBpbmlfc2V0KCd0cmFja19lcnJvcnMnLCB0cnVlKTsNCg0KICAgICAgICAkdGhpcy0+X2JhZ0hlYWRlciAgPSBuZXcgVENoZXN0ZXJfU3RydWN0dXJlQmFnKCk7DQogICAgICAgICR0aGlzLT5fYmFnVHJhaWxlciA9IG5ldyBUQ2hlc3Rlcl9TdHJ1Y3R1cmVCYWcoKTsNCiAgICAgICAgJHRoaXMtPl9iYWdCb2R5ICAgID0gbmV3IFRDaGVzdGVyX1N0cnVjdHVyZUJhZygpOw0KICAgICAgICAkdGhpcy0+X2JhZ1hyZWYgICAgPSBuZXcgVENoZXN0ZXJfU3RydWN0dXJlQmFnKCk7DQogICAgICAgIA0KICAgICAgICAkdGhpcy0+X2JhZ0hlYWRlci0+dHlwZSAgICA9ICJoZWFkZXIiOw0KICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPnR5cGUgICA9ICJ0cmFpbGVyIjsNCiAgICAgICAgJHRoaXMtPl9iYWdCb2R5LT50eXBlICAgICAgPSAiYm9keSI7DQogICAgICAgICR0aGlzLT5fYmFnWHJlZi0+dHlwZSAgICAgID0gInhyZWYiOw0KICAgICAgICANCiAgICAgICAgJHRoaXMtPl9hcnlPYmplY3RzICAgPSBhcnJheSgpOw0KICAgICAgICAkdGhpcy0+X2FyeUluZm9LZXlzICA9IGFycmF5KCk7DQogICAgICAgIA0KICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPnNpemUgICAgICA9IDA7DQogICAgICAgICR0aGlzLT5fYmFnVHJhaWxlci0+cHJldiAgICAgID0gMDsNCiAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5yb290ICAgICAgPSAiIjsNCiAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5lbmNyeXB0ICAgPSAiIjsNCiAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5pbmZvICAgICAgPSAiIjsNCiAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5pZDEgICAgICAgPSAiIjsNCiAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5pZDIgICAgICAgPSAiIjsNCiAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5zdGFydFhyZWYgPSAwOw0KICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPmVuY3J5cHRlZCA9IGZhbHNlOw0KICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPmVvZiAgICAgICA9ICIlJUVPRiI7DQogICAgICAgIA0KICAgICAgICAkcGF0dGVybkhlYWRlciAgPSAiL14lUERGLShcZCtcLlxkKykkLyI7DQogICAgICAgICRwYXR0ZXJuT2JqZWN0ICA9ICIvXihcZCsgXGQrKSBvYmpccyooPDwuKj4+KSooc3RyZWFtKSovIjsNCiAgICAgICAgJHBhdHRlcm5UcmFpbGVyID0gIi9eKHRyYWlsZXIpJC8iOw0KICAgICAgICAkcGF0dGVyblhyZWYgICAgPSAiL14oeHJlZikkLyI7DQogICAgDQogICAgICAgICR0aGlzLT5fc2VlbkhlYWRlciAgPSBmYWxzZTsNCiAgICAgICAgJHRoaXMtPl9zZWVuVHJhaWxlciA9IGZhbHNlOw0KICAgIA0KICAgICAgICAkdGhpcy0+X2ZpbGVOYW1lICAgPSAkZmlsZW5hbWU7DQogICAgICAgICR0aGlzLT5fZmlsZUxpbmUgICA9IDA7DQogICAgICAgICR0aGlzLT5fZmlsZUJ1ZmZlciA9ICIiOw0KICAgIA0KICAgICAgICAkdGhpcy0+X2ZpbGVIYW5kbGUgPSBAZm9wZW4oJGZpbGVuYW1lLCAiciIpOw0KICAgICAgICBpZiAoJHRoaXMtPl9maWxlSGFuZGxlKSB7DQogICAgICAgICAgICB3aGlsZSAoIWZlb2YoJHRoaXMtPl9maWxlSGFuZGxlKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fcmVhZExpbmUoKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuSGVhZGVyLCB0cmltKCR0aGlzLT5fZmlsZUJ1ZmZlciksICRtYXRjaGVzKSANCiAgICAgICAgICAgICAgICAgICAgJiYgISR0aGlzLT5fc2VlbkhlYWRlcikNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9wcm9jZXNzUERGSGVhZGVyKCRtYXRjaGVzKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuT2JqZWN0LCB0cmltKCR0aGlzLT5fZmlsZUJ1ZmZlciksICRtYXRjaGVzKSkgICAgDQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5fcHJvY2Vzc1BERkJvZHkoJG1hdGNoZXMpOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmICgxID09IHByZWdfbWF0Y2goJHBhdHRlcm5YcmVmLCB0cmltKCR0aGlzLT5fZmlsZUJ1ZmZlciksICRtYXRjaGVzKSkgICAgDQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5fcHJvY2Vzc1BERlhyZWYoJG1hdGNoZXMpOw0KDQogICAgICAgICAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVyblRyYWlsZXIsIHRyaW0oJHRoaXMtPl9maWxlQnVmZmVyKSwgJG1hdGNoZXMpIA0KICAgICAgICAgICAgICAgICAgICAmJiAhJHRoaXMtPl9zZWVuVHJhaWxlcikNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9wcm9jZXNzUERGVHJhaWxlcigkbWF0Y2hlcyk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICB9DQogICAgICAgICAgICBmY2xvc2UoJHRoaXMtPl9maWxlSGFuZGxlKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJHRoaXMtPl9wcm9jZXNzUERGSW5mb0Jsb2NrKCk7DQogICAgICAgICAgICAkdGhpcy0+X3Byb2Nlc3NDb250ZW50cygpOw0KICAgICAgICB9DQogICAgfSANCg0KICAgIC8qKg0KICAgICAqIFN1cHBvcnRzIHRoZSBpUERGSW5mbyBpbnRlcmZhY2UNCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBzZWUgVENoZXN0ZXJfaVBERkluZm86OmdldFRpdGxlKCkNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXRsZSgpICAgICAgICANCiAgICB7IA0KICAgICAgICByZXR1cm4gJHRoaXMtPl90aXRsZTsgICAgICAgIA0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBTdXBwb3J0cyB0aGUgaVBERkluZm8gaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZJbmZvOjpnZXRBdXRob3IoKQ0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGhvcigpICAgICAgIA0KICAgIHsgDQogICAgICAgIHJldHVybiAkdGhpcy0+X2F1dGhvcjsgICAgICAgDQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIFN1cHBvcnRzIHRoZSBpUERGSW5mbyBpbnRlcmZhY2UNCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBzZWUgVENoZXN0ZXJfaVBERkluZm86OmdldFN1YmplY3QoKQ0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1YmplY3QoKSAgICAgIA0KICAgIHsgDQogICAgICAgIHJldHVybiAkdGhpcy0+X3N1YmplY3Q7ICAgICAgDQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIFN1cHBvcnRzIHRoZSBpUERGSW5mbyBpbnRlcmZhY2UNCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBzZWUgVENoZXN0ZXJfaVBERkluZm86OmdldEtleXdvcmRzKCkNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXl3b3JkcygpICAgICANCiAgICB7IA0KICAgICAgICByZXR1cm4gJHRoaXMtPl9rZXl3b3JkczsgICAgIA0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBTdXBwb3J0cyB0aGUgaVBERkluZm8gaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZJbmZvOjpnZXRDcmVhdG9yKCkNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDcmVhdG9yKCkgICAgICANCiAgICB7IA0KICAgICAgICByZXR1cm4gJHRoaXMtPl9jcmVhdG9yOyAgICAgIA0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBTdXBwb3J0cyB0aGUgaVBERkluZm8gaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZJbmZvOjpnZXRQcm9kdWNlcigpDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvZHVjZXIoKSAgICAgDQogICAgeyANCiAgICAgICAgcmV0dXJuICR0aGlzLT5fcHJvZHVjZXI7ICAgICANCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogU3VwcG9ydHMgdGhlIGlQREZJbmZvIGludGVyZmFjZQ0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQHNlZSBUQ2hlc3Rlcl9pUERGSW5mbzo6Z2V0Q3JlYXRpb25EYXRlKCkNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDcmVhdGlvbkRhdGUoKSANCiAgICB7IA0KICAgICAgICByZXR1cm4gJHRoaXMtPl9jcmVhdGlvbkRhdGU7IA0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBTdXBwb3J0cyB0aGUgaVBERkluZm8gaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZJbmZvOjpnZXRNb2REYXRlKCkNCiAgICAgKiBAYWNjZXNzIHB1YmxpYw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2REYXRlKCkgICAgICANCiAgICB7IA0KICAgICAgICByZXR1cm4gJHRoaXMtPl9tb2REYXRlOyAgICAgIA0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBTdXBwb3J0cyB0aGUgaVBERkluZm8gaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZJbmZvOjpnZXRDb250ZW50cygpDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKSAgICAgDQogICAgeyANCiAgICAgICAgcmV0dXJuICR0aGlzLT5fY29udGVudHM7ICAgICANCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogU3VwcG9ydHMgdGhlIGlQREZTdHJ1Y3R1cmUgaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZTdHJ1Y3R1cmU6OmdldEhlYWRlcigpDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKCkgICAgICAgDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPl9iYWdIZWFkZXI7ICAgIA0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBTdXBwb3J0cyB0aGUgaVBERlN0cnVjdHVyZSBpbnRlcmZhY2UNCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqIEBzZWUgVENoZXN0ZXJfaVBERlN0cnVjdHVyZTo6Z2V0VHJhaWxlcigpDQogICAgICogQGFjY2VzcyBwdWJsaWMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHJhaWxlcigpICAgICAgDQogICAgeyANCiAgICAgICAgcmV0dXJuICR0aGlzLT5fYmFnVHJhaWxlcjsgICANCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogU3VwcG9ydHMgdGhlIGlQREZTdHJ1Y3R1cmUgaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZTdHJ1Y3R1cmU6OmdldEJvZHkoKQ0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvZHkoKSAgICAgDQogICAgeyANCiAgICAgICAgcmV0dXJuICR0aGlzLT5fYmFnQm9keTsgICAgICANCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogU3VwcG9ydHMgdGhlIGlQREZTdHJ1Y3R1cmUgaW50ZXJmYWNlDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAc2VlIFRDaGVzdGVyX2lQREZTdHJ1Y3R1cmU6OmdldFhyZWYoKQ0KICAgICAqIEBhY2Nlc3MgcHVibGljDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFhyZWYoKSAgICAgICAgIA0KICAgIHsgDQogICAgICAgIHJldHVybiAkdGhpcy0+X2JhZ1hyZWY7ICAgICAgDQogICAgfQ0KDQogICAgLyoqDQogICAgICogUHJvY2Vzc2VzIHRoZSBQREYgZmlsZSBoZWFkZXIsIHdoaWNoIGNvbnNpc3RzIG9mIGEgc2luZ2xlDQogICAgICogbGluZSB3aXRoIGEgZm9ybWF0IGxpa2U6ICVQREY/Iy4jDQogICAgICogQHJldHVybiB2b2lkDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcHJvY2Vzc1BERkhlYWRlcigkbWF0Y2hlcykNCiAgICB7DQogICAgICAgIC8vZWNobyAiXG5QREYgSGVhZGVyXG4iOw0KICAgICAgICAkdGhpcy0+X2JhZ0hlYWRlci0+aGVhZGVyICA9ICRtYXRjaGVzWzBdOyAvLyBtYXRjaGVkIGxpbmUNCiAgICAgICAgJHRoaXMtPl9iYWdIZWFkZXItPnZlcnNpb24gPSAkbWF0Y2hlc1sxXTsgLy8gdmVyc2lvbiBwYXJ0IG9ubHkNCiAgICAgICAgJHRoaXMtPl9zZWVuSGVhZGVyID0gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBQcm9jZXNzZXMgdGhlIFBERiBmaWxlIGJvZHksIHdoaWNoIGNvbnNpc3RzIG9mIGEgc2VyaWVzDQogICAgICogb2Ygb2JqZWN0IGJsb2NrcyBsaWtlOiBvYmogLi4uIGVuZG9iai4gVGhlICdvYmonIHRhZyBtYXkNCiAgICAgKiBjb250YWluIG1ldGFkYXRhIGNvbnRhaW5lZCBiZXR3ZWVuICc8PCcgYW5kICc+PicgZGVsaW1pdGVycy4NCiAgICAgKiBBbHNvIHRoZSBvYmplY3QgbWF5IGNvbnRhaW4gYW4gZW1iZWRkZWQgc3RyZWFtIG9iamVjdA0KICAgICAqIHdoaWNoIHdpbGwgYmUgZGVsaW1pdGVkIGJ5ICdzdHJlYW0nIGFuZCAnZW5kc3RyZWFtJyB0YWdzLg0KICAgICAqIEByZXR1cm4gdm9pZA0KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3Byb2Nlc3NQREZCb2R5KCRtYXRjaGVzKQ0KICAgIHsNCiAgICAgICAgLy9lY2hvICJcblBERiBCb2R5XG4iOw0KDQogICAgICAgICRrZXkgICAgICAgICAgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgJGRpY3Rpb25hcnkgICA9ICIiOw0KICAgICAgICAkc3RyZWFtICAgICAgID0gIiI7DQogICAgICAgICRjb250ZW50cyAgICAgPSAiIjsNCiAgICAgICAgJHByb2JhYmxlVGV4dCA9IGZhbHNlOw0KICAgICAgICANCiAgICAgICAgJGNvbnRlbnRzID0gJHRoaXMtPl9yZWFkVG9FbmRPZkJsb2NrKCIvXmVuZG9iaiQvIik7DQogICAgICAgIA0KICAgICAgICAvL2VjaG8gImNvbnRlbnRzOjogIiAuIGh0bWxlbnRpdGllcygkY29udGVudHMpIC4gIlxuIjsNCiAgICAgICAgDQogICAgICAgICRzdGFydElkeCA9IHN0cnBvcygkY29udGVudHMsICI8PCIsIDApOw0KICAgICAgICAkc3RvcElkeCAgPSBzdHJwb3MoJGNvbnRlbnRzLCAiPj4iLCAkc3RhcnRJZHgpICsgMjsNCiAgICAgIA0KICAgICAgICAvLyBQYXJzZSBvdXQgb2JqZWN0IG1ldGFkYXRhLCBpZiBpdCBleGlzdHMgIA0KICAgICAgICBpZiAoJHN0YXJ0SWR4ICE9PSBmYWxzZSAmJiAkc3RvcElkeCAhPT0gZmFsc2UpDQogICAgICAgICAgICAkZGljdGlvbmFyeSA9IHN1YnN0cigkY29udGVudHMsICRzdGFydElkeCwgJHN0b3BJZHggLSAkc3RhcnRJZHgpOw0KICAgICAgICANCiAgICAgICAgJHN0YXJ0SWR4ID0gc3RycG9zKCRjb250ZW50cywgInN0cmVhbSIsIDApICsgc3RybGVuKCJzdHJlYW0iKTsNCiAgICAgICAgJHN0b3BJZHggID0gc3RycG9zKCRjb250ZW50cywgImVuZHN0cmVhbSIsIDApOw0KICAgICAgICANCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBvYmplY3QgY29udGFpbnMgYW4gZW1iZWRkZWQgc3RyZWFtIG9iamVjdA0KICAgICAgICBpZiAoJHN0YXJ0SWR4ICE9PSBmYWxzZSAmJiAkc3RvcElkeCAhPT0gZmFsc2UpDQogICAgICAgICAgICAkc3RyZWFtID0gc3Vic3RyKCRjb250ZW50cywgJHN0YXJ0SWR4LCAkc3RvcElkeCAtICRzdGFydElkeCk7DQoNCiAgICAgICAgLy8gT2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gZW1iZWRkZWQgc3RyZWFtIG9iamVjdCAgICAgICAgDQogICAgICAgIGlmICgkc3RyZWFtICE9ICIiKSB7DQogICAgICAgICAgICAkY29udGVudHMgICA9ICR0aGlzLT5fZ2V0U3RyZWFtRGF0YSgkZGljdGlvbmFyeSwgJHN0cmVhbSk7DQoNCiAgICAgICAgICAgIC8vIFRoaXMgaGV1cmlzdGljIGFzc3VtZXMgdGhhdCBpZiB0aGUgZGVjb2RlZCBjb250ZW50cyBhcmUgcmVndWxhcg0KICAgICAgICAgICAgLy8gcmVhZGFibGUgdGV4dCB0aGVuIHdpdGhpbiB0aGUgZmlyc3QgMjYgY2hhcmFjdGVycyB3ZSB3b3VsZCBleHBlY3QNCiAgICAgICAgICAgIC8vIHRvIHNlZSBhdCBsZWFzdCBvbmUgc3BhY2UgY2hhcmFjdGVyLg0KICAgICAgICAgICAgaWYgKCRjb250ZW50cyAhPSAiIiAmJiANCiAgICAgICAgICAgICAgICBzdHJwb3Moc3Vic3RyKCRjb250ZW50cywgMCwgMjYpLCAiICIpICE9PSBmYWxzZSkNCiAgICAgICAgICAgICAgJHByb2JhYmxlVGV4dCA9IHRydWU7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICRwcm9iYWJsZVRleHQgPSBmYWxzZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIC8vIE9iamVjdCBjb250YWlucyBhbiBlbWJlZGRlZCBzdHJlYW0gb2JqZWN0IHNvIHdlIHdhbnQgdG8gZWxpbWluYXRlDQogICAgICAgICAgICAvLyBhbnkgbm9uLXRleHQgY29udGFpbmluZyBvYmplY3RzIHN1Y2ggYXMgaW1hZ2VzDQogICAgICAgICAgICAkY29udGVudHMgPSAkdGhpcy0+X2dldFN0cmVhbUVtYmVkZGVkRGF0YSgNCiAgICAgICAgICAgICAgICBzdWJzdHIoJGNvbnRlbnRzLCBzdHJsZW4oJGRpY3Rpb25hcnkpKSwgZmFsc2UNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICAkcHJvYmFibGVUZXh0ID0gISgkY29udGVudHMgPT09IGZhbHNlICYmICR0aGlzLT5fYmFnVHJhaWxlci0+ZW5jcnlwdCA9PT0gZmFsc2UpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkdGhpcy0+X2FyeU9iamVjdHNbXSA9IGFycmF5KA0KICAgICAgICAgICAgImtleSIgICAgICAgICAgPT4gJGtleSwgDQogICAgICAgICAgICAiZGljdGlvbmFyeSIgICA9PiAkZGljdGlvbmFyeSwgDQogICAgICAgICAgICAic3RyZWFtIiAgICAgICA9PiAkc3RyZWFtLA0KICAgICAgICAgICAgImNvbnRlbnRzIiAgICAgPT4gJGNvbnRlbnRzLA0KICAgICAgICAgICAgInByb2JhYmxlVGV4dCIgPT4gJHByb2JhYmxlVGV4dA0KICAgICAgICApOw0KICAgIA0KICAgICAgICAkdGhpcy0+X2JhZ0JvZHktPm9iamVjdHMgPSAkdGhpcy0+X2FyeU9iamVjdHM7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUHJvY2Vzc2VzIHRoZSBQREYgY3Jvc3MgcmVmZXJlbmNlIHNlY3Rpb24sIHdob3NlIHN0YXJ0IGlzDQogICAgICogaWRlbnRpZmllZCBieSBhIGxpbmUgY29udGFpbmluZyBvbmx5IHRoZSB0YWc6IHhyZWYuDQogICAgICogQHJldHVybiB2b2lkDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcHJvY2Vzc1BERlhyZWYoJG1hdGNoZXMpDQogICAgew0KICAgICAgICAvL2VjaG8gIlxuUERGIFhyZWZcbiI7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUHJvY2Vzc2VzIHRoZSBQREYgdHJhaWxlciBzZWN0aW9uLCB3aG9zZSBzdGFydCBpcw0KICAgICAqIGlkZW50aWZpZWQgYnkgYSBsaW5lIGNvbnRhaW5pbmcgb25seSB0aGUgdGFnOiAndHJhaWxlcicNCiAgICAgKiBhbmQgZ29lcyB1bnRpbCB0aGUgJyUlRU9GJyB0YWcuDQogICAgICogQHJldHVybiB2b2lkDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcHJvY2Vzc1BERlRyYWlsZXIoJG1hdGNoZXMpDQogICAgew0KICAgICAgICAvL2VjaG8gIlxuUERGIFRyYWlsZXJcbiI7DQogICAgICAgIA0KICAgICAgICAkY29udGVudHMgPSAkdGhpcy0+X3JlYWRUb0VuZE9mQmxvY2soIi9eKCUlRU9GKSQvIik7DQogICAgICAgIA0KICAgICAgICAkc3RhcnRJZHggPSBzdHJwb3MoJGNvbnRlbnRzLCAiPDwiLCAwKTsNCiAgICAgICAgJHN0b3BJZHggID0gc3RycG9zKCRjb250ZW50cywgIj4+IiwgMCkgKyBzdHJsZW4oIj4+Iik7DQogICAgICAgIA0KICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPmRpY3Rpb25hcnkgPSBzdWJzdHIoDQogICAgICAgICAgICAkY29udGVudHMsICRzdGFydElkeCwgJHN0b3BJZHggLSAkc3RhcnRJZHgNCiAgICAgICAgKTsNCiAgICANCiAgICAgICAgJHBhdHRlcm5JZCA9ICIvXC9JRFxzezAsMX1cW1xzezAsMX08KFxkfFx3Kyk+XHN7MCwxfTwoXGR8XHcrKT5cc3swLDF9XF0vIjsNCiAgICANCiAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVybklkLCAkdGhpcy0+X2JhZ1RyYWlsZXItPmRpY3Rpb25hcnksICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5pZDEgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgICR0aGlzLT5fYmFnVHJhaWxlci0+aWQyID0gJG1hdGNoZXNbMl07DQogICAgICAgIH0NCiAgICANCiAgICAgICAgJHBhdHRlcm5Sb290ICAgPSAiL1wvUm9vdFxzezAsMX0oXGQrXHN7MCwxfVxkKylcc3swLDF9Ui8iOw0KICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuUm9vdCwgJHRoaXMtPl9iYWdUcmFpbGVyLT5kaWN0aW9uYXJ5LCAkbWF0Y2hlcykpDQogICAgICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPnJvb3QgPSAkbWF0Y2hlc1sxXTsNCiAgICANCiAgICAgICAgJHBhdHRlcm5JbmZvICAgPSAiL1wvSW5mb1xzezAsMX0oXGQrXHN7MCwxfVxkKylcc3swLDF9Ui8iOw0KICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuSW5mbywgJHRoaXMtPl9iYWdUcmFpbGVyLT5kaWN0aW9uYXJ5LCAkbWF0Y2hlcykpDQogICAgICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPmluZm8gPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgDQogICAgICAgICRwYXR0ZXJuU2l6ZSAgID0gIi9cL1NpemVcc3swLDF9KFxkKylcc3swLDF9LyI7DQogICAgICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuU2l6ZSwgJHRoaXMtPl9iYWdUcmFpbGVyLT5kaWN0aW9uYXJ5LCAkbWF0Y2hlcykpDQogICAgICAgICAgICAkdGhpcy0+X2JhZ1RyYWlsZXItPnNpemUgPSAkbWF0Y2hlc1sxXTsNCg0KICAgICAgICAkcGF0dGVyblByZXYgICA9ICIvXC9QcmV2XHN7MCwxfShcZCspXHN7MCwxfS8iOw0KICAgICAgICANCiAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVyblByZXYsICR0aGlzLT5fYmFnVHJhaWxlci0+ZGljdGlvbmFyeSwgJG1hdGNoZXMpKQ0KICAgICAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5wcmV2ID0gJG1hdGNoZXNbMV07DQoNCiAgICAgICAgJHBhdHRlcm5FbmNyeXB0ID0gIi9cL0VuY3J5cHQvIjsNCiAgICAgICAgDQogICAgICAgIGlmICgxID09IHByZWdfbWF0Y2goJHBhdHRlcm5FbmNyeXB0LCAkY29udGVudHMsICRtYXRjaGVzKSkNCiAgICAgICAgICAgICR0aGlzLT5fYmFnVHJhaWxlci0+ZW5jcnlwdCA9IHRydWU7DQoNCiAgICAgICAgJHBhdHRlcm5TdGFydFhyZWYgPSAiL3N0YXJ0eHJlZlxzKihcZCspXHMqJSVFT0YvIjsNCiAgICAgICAgDQogICAgICAgIGlmICgxID09IHByZWdfbWF0Y2goJHBhdHRlcm5TdGFydFhyZWYsICRjb250ZW50cywgJG1hdGNoZXMpKQ0KICAgICAgICAgICAgJHRoaXMtPl9iYWdUcmFpbGVyLT5zdGFydFhyZWYgPSAkbWF0Y2hlc1sxXTsNCg0KICAgICAgICAkdGhpcy0+X3NlZW5UcmFpbGVyID0gdHJ1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBQYXJzZXMgb3V0IHRoZSBQREYgbWV0YWRhdGEgc2VjdGlvbi4gVGhlIGluZm8gYmxvY2tzIGNhbg0KICAgICAqIGVpdGhlciBiZSBzdG9yZWQgaW5saW5lIG9yIGNvbnRhaW4gYW4gaW5kaXJlY3Qgb2JqZWN0DQogICAgICogcmVmZXJlbmNlLiBJbiBpbmRpcmVjdCByZWZlcmVuY2Ugd2lsbCBiZSB1c2VkIGFzIGEga2V5DQogICAgICogaW50byB0aGUgb2JqZWN0IGFycmF5IHRvIGdldCB0aGUgY29udGVudHMsIG90aGVyd2lzZSB0aGUNCiAgICAgKiBpbmxpbmUgY29udGVudCB3aWxsIGJlIHBhcnNlZCBvdXQuDQogICAgICogQHJldHVybiB2b2lkDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcHJvY2Vzc1BERkluZm9CbG9jaygpDQogICAgew0KICAgICAgICAkaW5mbyA9ICR0aGlzLT5fYmFnVHJhaWxlci0+aW5mbzsNCiAgICAgICAgDQogICAgICAgIGlmICgkaW5mbyA9PSAiIikNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgDQogICAgICAgICRkYXRhID0gJHRoaXMtPl9nZXRDb250ZW50QmxvY2tCeUlkKCRpbmZvLCBmYWxzZSk7DQogICAgICAgIA0KICAgICAgICAkZGF0YSA9IHN0cl9yZXBsYWNlKCJcKCIsICJbIiwgJGRhdGEpOw0KICAgICAgICAkZGF0YSA9IHN0cl9yZXBsYWNlKCJcKSIsICJdIiwgJGRhdGEpOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAkcGF0dGVyblRpdGxlID0gIi9cL1RpdGxlXHN7MCwxfShcZCtcc3swLDF9XGQrKVxzezAsMX1SLyI7DQogICAgICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuVGl0bGUsICRkYXRhLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICR0aGlzLT5fYXJ5SW5mb0tleXNbXSA9ICRtYXRjaGVzWzFdOw0KICAgICAgICAgICAgJHRoaXMtPl90aXRsZSA9ICR0aGlzLT5fZ2V0Q29udGVudEJsb2NrQnlJZCgkbWF0Y2hlc1sxXSwgdHJ1ZSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcGF0dGVyblRpdGxlID0gIi9cL1RpdGxlXCgoW14pXSspXCkvIjsNCiAgICAgICAgICAgIGlmICgxID09IHByZWdfbWF0Y2goJHBhdHRlcm5UaXRsZSwgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fYXJ5SW5mb0tleXNbXSA9ICRpbmZvOw0KICAgICAgICAgICAgICAgICR0aGlzLT5fdGl0bGUgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICRwYXR0ZXJuQXV0aG9yID0gIi9cL0F1dGhvclxzezAsMX0oXGQrXHN7MCwxfVxkKylcc3swLDF9Ui8iOw0KICAgICAgICANCiAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVybkF1dGhvciwgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9hcnlJbmZvS2V5c1tdID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICAkdGhpcy0+X2F1dGhvciA9ICR0aGlzLT5fZ2V0Q29udGVudEJsb2NrQnlJZCgkbWF0Y2hlc1sxXSwgdHJ1ZSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcGF0dGVybkF1dGhvciA9ICIvXC9BdXRob3JcKChbXildKylcKS8iOw0KICAgICAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVybkF1dGhvciwgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fYXJ5SW5mb0tleXNbXSA9ICRpbmZvOw0KICAgICAgICAgICAgICAgICR0aGlzLT5fYXV0aG9yID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICB9ICAgICAgICAgICAgDQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRwYXR0ZXJuU3ViamVjdCA9ICIvXC9TdWJqZWN0XHN7MCwxfShcZCtcc3swLDF9XGQrKVxzezAsMX1SLyI7DQogICAgICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuU3ViamVjdCwgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9hcnlJbmZvS2V5c1tdID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICAkdGhpcy0+X3N1YmplY3QgPSAkdGhpcy0+X2dldENvbnRlbnRCbG9ja0J5SWQoJG1hdGNoZXNbMV0sIHRydWUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHBhdHRlcm5TdWJqZWN0ID0gIi9cL1N1YmplY3RcKChbXildKylcKS8iOw0KICAgICAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVyblN1YmplY3QsICRkYXRhLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X2FyeUluZm9LZXlzW10gPSAkaW5mbzsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3N1YmplY3QgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJHBhdHRlcm5Qcm9kdWNlciA9ICIvXC9Qcm9kdWNlclxzezAsMX0oXGQrXHN7MCwxfVxkKylcc3swLDF9Ui8iOw0KICAgICAgICANCiAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVyblByb2R1Y2VyLCAkZGF0YSwgJG1hdGNoZXMpKSB7DQogICAgICAgICAgICAkdGhpcy0+X2FyeUluZm9LZXlzW10gPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgICR0aGlzLT5fcHJvZHVjZXIgPSAkdGhpcy0+X2dldENvbnRlbnRCbG9ja0J5SWQoJG1hdGNoZXNbMV0sIHRydWUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHBhdHRlcm5Qcm9kdWNlciA9ICIvXC9Qcm9kdWNlclwoKFteKV0rKVwpLyI7DQogICAgICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuUHJvZHVjZXIsICRkYXRhLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X2FyeUluZm9LZXlzW10gPSAkaW5mbzsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3Byb2R1Y2VyID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRwYXR0ZXJuQ3JlYXRvciA9ICIvXC9DcmVhdG9yXHN7MCwxfShcZCtcc3swLDF9XGQrKVxzezAsMX1SLyI7DQogICAgICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuQ3JlYXRvciwgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9hcnlJbmZvS2V5c1tdID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICAkdGhpcy0+X2NyZWF0b3IgPSAkdGhpcy0+X2dldENvbnRlbnRCbG9ja0J5SWQoJG1hdGNoZXNbMV0sIHRydWUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHBhdHRlcm5DcmVhdG9yID0gIi9cL0NyZWF0b3JcKChbXildKylcKS8iOw0KICAgICAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVybkNyZWF0b3IsICRkYXRhLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X2FyeUluZm9LZXlzW10gPSAkaW5mbzsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X2NyZWF0b3IgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLy8gQ3JlYXRpb24gZGF0ZSBsb29rcyBsaWtlOiAiKEQ6MjAwOTA5MjIxOTEyMDVaMDAnMDAnKSINCiAgICAgICAgJHBhdHRlcm5DcmVhdGlvbkRhdGUgPSAiL1wvQ3JlYXRpb25EYXRlXHN7MCwxfShcZCtcc3swLDF9XGQrKVxzezAsMX1SLyI7DQogICAgICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuQ3JlYXRpb25EYXRlLCAkZGF0YSwgJG1hdGNoZXMpKSB7DQogICAgICAgICAgICAkdGhpcy0+X2FyeUluZm9LZXlzW10gPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgICR0aGlzLT5fY3JlYXRpb25EYXRlID0gJHRoaXMtPl9nZXRDb250ZW50QmxvY2tCeUlkKCRtYXRjaGVzWzFdLCB0cnVlKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRwYXR0ZXJuQ3JlYXRpb25EYXRlID0gIi9cL0NyZWF0aW9uRGF0ZVwoKFteKV0rKVwpLyI7DQogICAgICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuQ3JlYXRpb25EYXRlLCAkZGF0YSwgJG1hdGNoZXMpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9hcnlJbmZvS2V5c1tdID0gJGluZm87DQogICAgICAgICAgICAgICAgJHRoaXMtPl9jcmVhdGlvbkRhdGUgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLy8gTW9kaWZpY2F0aW9uIGRhdGUgbG9va3MgbGlrZTogIihEOjIwMDkwOTIyMTkxMjA1WjAwJzAwJykiDQogICAgICAgICRwYXR0ZXJuTW9kRGF0ZSA9ICIvXC9Nb2REYXRlXHN7MCwxfShcZCtcc3swLDF9XGQrKVxzezAsMX1SLyI7DQogICAgICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuTW9kRGF0ZSwgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9hcnlJbmZvS2V5c1tdID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICAkdGhpcy0+X21vZERhdGUgPSAkdGhpcy0+X2dldENvbnRlbnRCbG9ja0J5SWQoJG1hdGNoZXNbMV0sIHRydWUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHBhdHRlcm5Nb2REYXRlID0gIi9cL01vZERhdGVcKChbXildKylcKS8iOw0KICAgICAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVybk1vZERhdGUsICRkYXRhLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X2FyeUluZm9LZXlzW10gPSAkaW5mbzsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X21vZERhdGUgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLy8gS2V5d29yZHMgbG9vayBsaWtlOiAiKGtleXdvcmQxLCBrZXl3b3JkMiwga2V5d29yZDMpIg0KICAgICAgICAkcGF0dGVybktleXdvcmRzID0gIi9cL0tleXdvcmRzXHN7MCwxfShcZCtcc3swLDF9XGQrKVxzezAsMX1SLyI7DQogICAgICAgIA0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCRwYXR0ZXJuS2V5d29yZHMsICRkYXRhLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgICR0aGlzLT5fYXJ5SW5mb0tleXNbXSA9ICRtYXRjaGVzWzFdOw0KICAgICAgICAgICAgJHRoaXMtPl9rZXl3b3JkcyA9ICR0aGlzLT5fZ2V0Q29udGVudEJsb2NrQnlJZCgkbWF0Y2hlc1sxXSwgdHJ1ZSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcGF0dGVybktleXdvcmRzID0gIi9cL0tleXdvcmRzXCgoW14pXSspXCkvIjsNCiAgICAgICAgICAgIGlmICgxID09IHByZWdfbWF0Y2goJHBhdHRlcm5LZXl3b3JkcywgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fYXJ5SW5mb0tleXNbXSA9ICRpbmZvOw0KICAgICAgICAgICAgICAgICR0aGlzLT5fa2V5d29yZHMgPSAkbWF0Y2hlc1sxXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEFBUEwga2V5d29yZHMgbG9vayBsaWtlOiAiWyAoa2V5d29yZDEpIChrZXl3b3JkMikgKGtleXdvcmQzKSBdIg0KICAgICAgICAkcGF0dGVybkFhcGxLZXl3b3JkcyA9ICIvXC9BQVBMXDpLZXl3b3Jkc1xzezAsMX0oXGQrXHN7MCwxfVxkKylcc3swLDF9Ui8iOw0KICAgICAgICANCiAgICAgICAgaWYgKDEgPT0gcHJlZ19tYXRjaCgkcGF0dGVybkFhcGxLZXl3b3JkcywgJGRhdGEsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9hcnlJbmZvS2V5c1tdID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICAkdGhpcy0+X2FhcGxLZXl3b3JkcyA9ICR0aGlzLT5fZ2V0Q29udGVudEJsb2NrQnlJZCgkbWF0Y2hlc1sxXSwgdHJ1ZSk7DQogICAgICAgIH0NCg0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIExvb3BzIHRocm91Z2ggdGhlIGludGVybmFsIGFycmF5IG9mIG9iamVjdHMgYW5kIGlmDQogICAgICogb2JqZWN0IGlzIGlkZW50aWZpZWQgYXMgcHJvYmFibHkgY29udGFpbmluZyB0ZXh0IHRoZW4NCiAgICAgKiBpdHMgdmFsdWUgaXMgYWRkZWQgdG8gdGhlIHBhcnNlZCBjb250ZW50cyB2YXJpYWJsZS4gQXQNCiAgICAgKiB0aGUgZW5kIG9mIHRoaXMgcm91dGluZSwgdGhlIFBERiBjb250ZW50cyB3aWxsIGhhdmUgYWxsDQogICAgICogYmVlbiBjb25zb2xpZGF0ZWQgdG8gdGhlIGZpbmFsIG91dHB1dCB2YXJpYWJsZXMuDQogICAgICogQHJldHVybiB2b2lkDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcHJvY2Vzc0NvbnRlbnRzKCkNCiAgICB7DQogICAgICAgICRjb250ZW50cyAgPSAiIjsNCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPl9iYWdCb2R5LT5vYmplY3RzIGFzICRvYmopIHsNCiAgICAgICAgICAgICRpc0luZm9LZXkgPSBmYWxzZTsNCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5fYXJ5SW5mb0tleXMgYXMgJGluZm9LZXkpDQogICAgICAgICAgICAgICAgaWYgKCRpbmZvS2V5ID09ICRvYmpbJ2tleSddKQ0KICAgICAgICAgICAgICAgICAgICAkaXNJbmZvS2V5ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoJG9ialsncHJvYmFibGVUZXh0J10gPT0gdHJ1ZSAmJiAhJGlzSW5mb0tleSkNCiAgICAgICAgICAgICAgICAkY29udGVudHMgLj0gJG9ialsnY29udGVudHMnXTsNCiAgICAgICAgfSAgICAgICAgDQogICAgICAgICR0aGlzLT5fY29udGVudHMgPSAkY29udGVudHM7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2VhcmNoZXMgdGhlIGludGVybmFsIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSBzcGVjaWZpZWQNCiAgICAgKiBpZCBhbmQgcmV0dXJucyBlaXRoZXIgdGhlIGNvbnRlbnQgb3IgZGljdGlvbmFyeSB2YWx1ZXMNCiAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhhdCBvYmplY3QuDQogICAgICogQHBhcmFtICRpZCBJZCBvZiBvYmplY3QgdG8gZ2V0IHZhbHVlcyBmb3INCiAgICAgKiBAcGFyYW0gJHdhbnRDb250ZW50IFRydWUsIHJldHVybnMgY29udGVudHMsIGVsc2UgcmV0dXJucyBkaWN0aW9uYXJ5DQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRDb250ZW50QmxvY2tCeUlkKCRpZCwgJHdhbnRDb250ZW50KQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPl9iYWdCb2R5LT5vYmplY3RzIGFzICRvYmopDQogICAgICAgICAgICBpZiAoJG9ialsna2V5J10gPT0gJGlkKQ0KICAgICAgICAgICAgICAgIGlmICgkd2FudENvbnRlbnQpDQogICAgICAgICAgICAgICAgICAgIHJldHVybiAkb2JqWydjb250ZW50cyddOw0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRvYmpbJ2RpY3Rpb25hcnknXTsNCiAgICAgICAgcmV0dXJuICIiOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFByb2Nlc3NlcyBhIHN0cmVhbSBjb250YWluZWQgd2l0aGluIGFuIG9iamVjdA0KICAgICAqIEBwYXJhbSAkaGVhZGVyIEVuY2xvc2luZyBvYmplY3QncyBtZXRhZGF0YQ0KICAgICAqIEBwYXJhbSAkZGF0YSBTdHJlYW0gb2JqZWN0IHRvIHBhcnNlDQogICAgICogQHJldHVybiBtaXhlZCBGYWxzZSBpZiBzdHJlYW0gZm9ybWF0IG5vdCBoYW5kbGVkIG90aGVyd2lzZSBjb250ZW50cyBvZiBzdHJlYW0NCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRTdHJlYW1EYXRhKCRoZWFkZXIsICRkYXRhKQ0KICAgIHsNCiAgICAgICAgLy8gTm9uLXRleHQgc3RyZWFtIG9iamVjdHMgc3VjaCBhcyBpbWFnZXMNCiAgICAgICAgaWYgKHN0cnBvcygkaGVhZGVyLCAiL0RldmljZSIsIDApICE9PSBmYWxzZSB8fA0KICAgICAgICAgICAgc3RycG9zKCRoZWFkZXIsICIvSW1hZ2UiLCAwKSAhPT0gZmFsc2UgfHwNCiAgICAgICAgICAgIHN0cnBvcygkaGVhZGVyLCAiL01ldGFkYXRhIiwgMCkgIT09IGZhbHNlIHx8DQogICAgICAgICAgICBzdHJwb3MoJGhlYWRlciwgIi9Db2xvclNwYWNlIiwgMCkgIT09IGZhbHNlKSANCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gIioqIERldmljZXxJbWFnZXxNZXRhZGF0YSAqKiINCg0KICAgICAgICAvLyBFbmNvZGluZ3Mgd2UgYXJlIG5vdCBhYmxlIHRvIHBhcnNlIHlldAkNCiAgICAgICAgaWYgKHN0cnBvcygkaGVhZGVyLCAiL0FTQ0lJSGV4RGVjb2RlIiwgMCkgIT09IGZhbHNlIHx8DQogICAgICAgICAgICBzdHJwb3MoJGhlYWRlciwgIi9BU0NJSTg1RGVjb2RlIiwgMCkgIT09IGZhbHNlIHx8DQogICAgICAgICAgICBzdHJwb3MoJGhlYWRlciwgIi9MWldEZWNvZGUiLCAwKSAhPT0gZmFsc2UgfHwNCiAgICAgICAgICAgIHN0cnBvcygkaGVhZGVyLCAiL1J1bkxlbmd0aERlY29kZSIsIDApICE9PSBmYWxzZSB8fA0KICAgICAgICAgICAgc3RycG9zKCRoZWFkZXIsICIvQ0NJVFRGYXhEZWNvZGUiLCAwKSAhPT0gZmFsc2UgfHwNCiAgICAgICAgICAgIHN0cnBvcygkaGVhZGVyLCAiL0RDVERlY29kZSIsIDApICE9PSBmYWxzZSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gIioqIFVuaGFuZGxlZCBFbmNvZGluZyAqKiINCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAvLyBGaWx0ZXIgb3V0IFBERiBoaW50IHRhYmxlcw0KICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCIvXC9bTFNdXHN7MCwxfVxkKy8iLCAkaGVhZGVyLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8iKiogSElOVCBUQUJMRSAqKiI7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIEZpbHRlciBvdXQgZm9udCBwcm9ncmFtIGluZm9ybWF0aW9uDQogICAgICAgIGlmICgxID09IHByZWdfbWF0Y2goIi9cL0xlbmd0aFsxMjNdXHN7MCwxfVxkKy8iLCAkaGVhZGVyLCAkbWF0Y2hlcykgfHwNCiAgICAgICAgICAgIDEgPT0gcHJlZ19tYXRjaCgiL1wvU3VidHlwZVwvVHlwZTFDLyIsICRoZWFkZXIsICRtYXRjaGVzKSB8fA0KICAgICAgICAgICAgMSA9PSBwcmVnX21hdGNoKCIvXC9TdWJ0eXBlXC9DSURGb250VHlwZTBDLyIsICRoZWFkZXIsICRtYXRjaGVzKSkNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8iKiogRk9OVCBQUk9HUkFNICoqIjsgIA0KDQogICAgICAgIC8vIFBERiBpcyBlbmNyeXB0ZWQNCiAgICAgICAgaWYgKCR0aGlzLT5fYmFnVHJhaWxlci0+ZW5jcnlwdCA9PSB0cnVlKQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyIqKiBFTkNSWVBURUQgKioiOw0KDQogICAgICAgIGlmIChzdHJwb3MoJGhlYWRlciwgIi9GbGF0ZURlY29kZSIsIDApID09PSBmYWxzZSkgew0KICAgICAgICAgICAgLy8gU3RyZWFtIGlzIHBsYWluIHRleHQNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2dldFN0cmVhbUVtYmVkZGVkRGF0YSgkZGF0YSwgZmFsc2UpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy8gU3RyZWFtIGlzIGNvbXByZXNzZWQgdGV4dCB1c2luZyB6bGliIChpLmUuIEZsYXRlRGVjb2RlKSANCiAgICAgICAgICAgICRzdGFydFBvcyA9IDE7ICAvLyBBc3N1bWUgb25lIGxpbmUgc3RyZWFtIHRhZyBzZXBhcmF0b3INCiAgICAgICAgICAgICRlbmRQb3MgPSAxOyAgICAvLyBBc3N1bWUgb25lIGxpbmUgZW5kc3RyZWFtIHRhZyBzZXBhcmF0b3INCiAgICAgICAgICAgICRsZW5ndGggPSAwOw0KDQogICAgICAgICAgICAvLyBDaGVjayBmb3IgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSBGZWVkIGFmdGVyIHN0cmVhbSB0YWcNCiAgICAgICAgICAgIGlmIChzdWJzdHIoJGRhdGEsIDAsIDEpID09ICJcciIgJiYgc3Vic3RyKCRkYXRhLCAxLCAxKSA9PSAiXG4iKQ0KICAgICAgICAgICAgICAgICRzdGFydFBvcyA9IDI7DQoNCiAgICAgICAgICAgIC8vIENoZWNrIGZvciBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lIEZlZWQgYmVmb3JlIGVuZHN0cmVhbSB0YWcNCiAgICAgICAgICAgIGlmIChzdWJzdHIoJGRhdGEsIC0yLCAxKSA9PSAiXHIiICYmIHN1YnN0cigkZGF0YSwgLTEsIDEpID09ICJcbiIpDQogICAgICAgICAgICAgICAgJGVuZFBvcyA9IDI7ICAgIA0KDQogICAgICAgICAgICAvLyBJZiB0aGUgbGVuZ3RoIGlzIGFuIGluZGlyZWN0IG9iamVjdCByZWZlcmVuY2UgdGhhdCBoYXMgYSBmb3JtYXQNCiAgICAgICAgICAgIC8vIGxpa2UgIi9MZW5ndGggIyAjIFIiIHdoZXJlICMgIyBpcyB0aGUga2V5IG9mIHRoZSByZWZlcmVuY2VkDQogICAgICAgICAgICAvLyBvYmplY3Qgd2hvc2UgY29udGVudHMgY29udGFpbiB0aGUgc3RyZWFtIGxlbmd0aCB2YWx1ZS4gSW4gdGhpcyANCiAgICAgICAgICAgIC8vIGNhc2Ugd2Ugd2lsbCBqdXN0IHRha2UgdGhlIHNob3J0Y3V0IGV2YWx1YXRpb24gb2YgdGhlIGxlbmd0aCB1c2luZw0KICAgICAgICAgICAgLy8gc3RyZWFtL2VuZHN0cmVhbSBwb3NpdGlvbnMgYW5kIHJlbW92aW5nIHRoZSBsZWFkaW5nIHNlcGFyYXRvcnMuIE5PVEU6DQogICAgICAgICAgICAvLyB0aGVyZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgdHJhaWxpbmcgc2VwYXJhdG9ycyB1c2VkIGhlcmUgc28gd2UgYXJlDQogICAgICAgICAgICAvLyBpZ25vcmluZyB0aGUgZW5kcG9zIGNhbGN1bGF0aW9uIGluIHRoZSBsZW5ndGguDQogICAgICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCIvXC9MZW5ndGhcc3swLDF9XGQrXHN7MCwxfVxkK1xzezAsMX1SLyIsICRoZWFkZXIsICRtYXRjaGVzKSkgew0KICAgICAgICAgICAgICAgICRsZW5ndGggPSBzdHJsZW4oJGRhdGEpIC0gJHN0YXJ0UG9zOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBBIGRpcmVjdCBsZW5ndGggdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBoZWFkZXIgYW5kIGhhcyBhIGZvcm1hdA0KICAgICAgICAgICAgICAgIC8vIGxpa2U6ICIvTGVuZ3RoICMiDQogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgiL1wvTGVuZ3RoXHN7MCwxfShcZCspLyIsICRoZWFkZXIsICRtYXRjaGVzKTsNCiAgICAgICAgICAgICAgICAkbGVuZ3RoID0gJG1hdGNoZXNbMV07DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICRwaHBfZXJyb3Jtc2cgPSAiIjsNCiAgICAgICAgICAgICRjb250ZW50cyA9IEBnenVuY29tcHJlc3Moc3Vic3RyKCRkYXRhLCAkc3RhcnRQb3MsICRsZW5ndGgpKTsNCg0KICAgICAgICAgICAgaWYgKCRwaHBfZXJyb3Jtc2cgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICBlY2hvICJXYXJuaW5nOiAiIC4gaHRtbGVudGl0aWVzKCRwaHBfZXJyb3Jtc2cpIC4gIiBpbiAiIA0KICAgICAgICAgICAgICAgICAgICAuIGh0bWxlbnRpdGllcyhfX0ZJTEVfXykgLiAiIG5lYXIgbGluZSAiIA0KICAgICAgICAgICAgICAgICAgICAuIGh0bWxlbnRpdGllcyhfX0xJTkVfXykgLiAiXG4iOw0KICAgICAgICAgICAgICAgIC8vZWNobyAiREVCVUc6IEhlYWRlciAgOiAiIC4gaHRtbGVudGl0aWVzKCRoZWFkZXIpIC4gIlxuIjsNCiAgICAgICAgICAgICAgICAvL2VjaG8gIkRFQlVHOiBMZW5ndGggIDogIiAuIGh0bWxlbnRpdGllcygkbGVuZ3RoKSAuICJcbiI7DQogICAgICAgICAgICAgICAgLy9lY2hvICJERUJVRzogU3RhcnRQb3M6ICIgLiBodG1sZW50aXRpZXMoJHN0YXJ0UG9zKSAuICJcbiI7DQogICAgICAgICAgICAgICAgLy9lY2hvICJERUJVRzogRW5kUG9zICA6ICIgLiBodG1sZW50aXRpZXMoJGVuZFBvcykgLiAiXG4iOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvL2VjaG8gIkRFQlVHOlVuY29tcHJlc3NlZCBDb250ZW50czogIiAuIGh0bWxlbnRpdGllcygkY29udGVudHMpIC4gIlxuXG4iOw0KDQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9nZXRTdHJlYW1FbWJlZGRlZERhdGEoJGNvbnRlbnRzLCB0cnVlKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFBhcnNlcyB0aGUgY29udGVudHMgb3V0IG9mIHN0cmVhbSBvYmplY3QuIElmIHN0cmVhbSBvYmplY3QgaXMNCiAgICAgKiBjb21wcmVzc2VkIHRoZW4gaXQgbXVzdCBiZSB1bmNvbXByZXNzZWQgZmlyc3QgYmVmb3JlIGNhbGxpbmcNCiAgICAgKiB0aGlzIGZ1bmN0aW9uLg0KICAgICAqIEBwYXJhbSAkZGF0YSBTdHJlYW0gZGF0YSB0byBwYXJzZQ0KICAgICAqIEBwYXJhbSAkd2FzQ29tcHJlc3NlZCBJbmRpY2F0ZXMgdGhhdCBzdHJlYW0gZGF0YSB3YXMgdW5jb21wcmVzc2VkDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKi8NCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRTdHJlYW1FbWJlZGRlZERhdGEoJGRhdGEsICR3YXNDb21wcmVzc2VkID0gdHJ1ZSkNCiAgICB7DQogICAgICAgICRjaGFyICAgICAgPSAiIjsNCiAgICAgICAgJHBhcmVuICAgICA9IGZhbHNlOw0KICAgICAgICAkcmVzdWx0cyAgID0gIiI7DQogICAgICAgICR0akZvbGxvd3MgPSBmYWxzZTsNCg0KICAgICAgICAvLyBQYXJlbnRoZXNlcyBhcmUgdXNlZCB0byBkZWxpbWl0IHRleHQgc3RyZWFtcywgYnV0IHRob3NlIHRleHQNCiAgICAgICAgLy8gc3RyZWFtcyBtYXkgYWxzbyBjb250YWluIGVtYmVkZGVkIHBhcmVudGhlc2VzLiBXZSB3YW50IHRvDQogICAgICAgIC8vIHJlcGxhY2UgdGhlIGVtYmVkZGVkIHBhcmVudGVzZXMgd2l0aCBicmFja2V0cyBzbyBvdXIgbWF0Y2gNCiAgICAgICAgLy8gZXhwcmVzc2lvbiBpcyBub3QgYWZmZWN0ZWQuDQogICAgICAgICRkYXRhID0gc3RyX3JlcGxhY2UoIlwoIiwgIlsiLCAkZGF0YSk7DQogICAgICAgICRkYXRhID0gc3RyX3JlcGxhY2UoIlwpIiwgIl0iLCAkZGF0YSk7DQoNCiAgICAgICAgLy9lY2hvICJERUJVRzogU3RyZWFtOiAiIC4gaHRtbGVudGl0aWVzKCRkYXRhKSAuICJcbiI7DQoNCiAgICAgICAgJHJlZyA9ICIvKFwoW14oKV0rXCkpL2ltIjsNCg0KICAgICAgICBpZiAoMCA8IHByZWdfbWF0Y2hfYWxsKCRyZWcsICRkYXRhLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzWzBdIGFzICRlbnRyeSkgew0KICAgICAgICAgICAgICAgIC8vZWNobyAiREVCVUc6IE1hdGNoOiAiIC4gaHRtbGVudGl0aWVzKCRlbnRyeSkgLiAiXG4iOw0KICAgICAgICAgICAgICAgICRyZXN1bHRzIC49IHN1YnN0cigkZW50cnksIDEsIC0xKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vZWNobyAiREVCVUc6U3RyZWFtIEVtYmVkZGVkIERhdGE6IHt7IiAuIGh0bWxlbnRpdGllcygkcmVzdWx0cykgLiAifX1cblxuIjsNCg0KICAgICAgICByZXR1cm4gJHJlc3VsdHM7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVhZHMgbGluZXMgaW50byBhIGJ1ZmZlciB1bnRpbCBhIGxpbmUgaXMgcmVhZCB0aGF0DQogICAgICogY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdG9wIHBhdHRlcm4uIFRoZSByZXR1cm5lZA0KICAgICAqIHJlc3VsdHMgd2lsbCBjb250YWluIHRoZSBzdG9wIHBhdHRlcm4gbWF0Y2hlZCB0ZXh0DQogICAgICogYXMgd2VsbC4NCiAgICAgKiBAcGFyYW0gJHBhdHRlcm5TdG9wIFJlZ2V4IHBhdHRlcm4gdGhhdCBpZGVudGlmaWVzIGVuZCBvZiBibG9jaw0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICogQGFjY2VzcyBwcml2YXRlDQogICAgICovDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfcmVhZFRvRW5kT2ZCbG9jaygkcGF0dGVyblN0b3ApDQogICAgew0KICAgICAgICAkYnVmZmVyID0gIiI7DQoNCiAgICAgICAgZG8gew0KICAgICAgICAgICAgJGJ1ZmZlciAuPSAkdGhpcy0+X2ZpbGVCdWZmZXI7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICgxID09IHByZWdfbWF0Y2goJHBhdHRlcm5TdG9wLCB0cmltKCR0aGlzLT5fZmlsZUJ1ZmZlciksICRtYXRjaGVzKSkNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIA0KICAgICAgICB9IHdoaWxlICgkdGhpcy0+X3JlYWRMaW5lKCkpOw0KICAgICAgICANCiAgICAgICAgcmV0dXJuICRidWZmZXI7DQogICAgICAgIA0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlYWRzIGEgc2luZ2xlIGxpbmUgb2YgaW5wdXQgaW50byBhbiBpbnRlcm5hbCBidWZmZXINCiAgICAgKiBAYWNjZXNzIHByaXZhdGUNCiAgICAgKiBAcmV0dXJuIGludGVnZXIgMSBpZiBhIGxpbmUgd2FzIHJlYWQsIDAgaWYgZW5kIG9mIGZpbGUNCiAgICAgKi8NCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9yZWFkTGluZSgpDQogICAgew0KICAgICAgICBpZiAoIWZlb2YoJHRoaXMtPl9maWxlSGFuZGxlKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9maWxlQnVmZmVyID0gZmdldHMoJHRoaXMtPl9maWxlSGFuZGxlKTsNCiAgICAgICAgICAgICR0aGlzLT5fZmlsZUxpbmUrKzsNCiAgICAgICAgICAgIC8vZWNobyBodG1sZW50aXRpZXMoJHRoaXMtPl9maWxlQnVmZmVyKTsNCiAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICByZXR1cm4gMDsNCiAgICB9DQogICAgDQp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/lib/rtf2text.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy8gRnVuY3Rpb24gdGhhdCBjaGVja3Mgd2hldGhlciB0aGUgZGF0YSBhcmUgdGhlIG9uLXNjcmVlbiB0ZXh0Lg0KLy8gSXQgd29ya3MgaW4gdGhlIGZvbGxvd2luZyB3YXk6DQovLyBhbiBhcnJheSBhcnJmYWlsQXQgc3RvcmVzIHRoZSBjb250cm9sIHdvcmRzIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3RhY2ssIHdoaWNoIHNob3cgdGhhdA0KLy8gaW5wdXQgZGF0YSBhcmUgc29tZXRoaW5nIGVsc2UgdGhhbiBwbGFpbiB0ZXh0Lg0KLy8gRm9yIGV4YW1wbGUsIHRoZXJlIG1heSBiZSBhIGRlc2NyaXB0aW9uIG9mIGZvbnQgb3IgY29sb3IgcGFsZXR0ZSBldGMuDQpmdW5jdGlvbiBydGZfaXNQbGFpblRleHQoJHMpIHsNCiAgICAkYXJyZmFpbEF0ID0gYXJyYXkoIioiLCAiZm9udHRibCIsICJjb2xvcnRibCIsICJkYXRhc3RvcmUiLCAidGhlbWVkYXRhIik7DQogICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJGFycmZhaWxBdCk7ICRpKyspDQogICAgICAgIGlmICghZW1wdHkoJHNbJGFycmZhaWxBdFskaV1dKSkgcmV0dXJuIGZhbHNlOw0KICAgIHJldHVybiB0cnVlOw0KfQ0KDQpmdW5jdGlvbiBydGYydGV4dCgkZmlsZW5hbWUpIHsNCiAgICAvLyBSZWFkIHRoZSBkYXRhIGZyb20gdGhlIGlucHV0IGZpbGUuDQogICAgJHRleHQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZW5hbWUpOw0KICAgIGlmICghc3RybGVuKCR0ZXh0KSkNCiAgICAgICAgcmV0dXJuICIiOw0KDQogICAgLy8gQ3JlYXRlIGVtcHR5IHN0YWNrIGFycmF5Lg0KICAgICRkb2N1bWVudCA9ICIiOw0KICAgICRzdGFjayA9IGFycmF5KCk7DQogICAgJGogPSAtMTsNCiAgICAvLyBSZWFkIHRoZSBkYXRhIGNoYXJhY3Rlci1ieS0gY2hhcmFjdGVy4oCmDQogICAgZm9yICgkaSA9IDAsICRsZW4gPSBzdHJsZW4oJHRleHQpOyAkaSA8ICRsZW47ICRpKyspIHsNCiAgICAgICAgJGMgPSAkdGV4dFskaV07DQoNCiAgICAgICAgLy8gRGVwZW5kaW5nIG9uIGN1cnJlbnQgY2hhcmFjdGVyIHNlbGVjdCB0aGUgZnVydGhlciBhY3Rpb25zLg0KICAgICAgICBzd2l0Y2ggKCRjKSB7DQogICAgICAgICAgICAvLyB0aGUgbW9zdCBpbXBvcnRhbnQga2V5IHdvcmQgYmFja3NsYXNoDQogICAgICAgICAgICBjYXNlICJcXCI6DQogICAgICAgICAgICAgICAgLy8gcmVhZCBuZXh0IGNoYXJhY3Rlcg0KICAgICAgICAgICAgICAgICRuYyA9ICR0ZXh0WyRpICsgMV07DQoNCiAgICAgICAgICAgICAgICAvLyBJZiBpdCBpcyBhbm90aGVyIGJhY2tzbGFzaCBvciBub25icmVha2luZyBzcGFjZSBvciBoeXBoZW4sDQogICAgICAgICAgICAgICAgLy8gdGhlbiB0aGUgY2hhcmFjdGVyIGlzIHBsYWluIHRleHQgYW5kIGFkZCBpdCB0byB0aGUgb3V0cHV0IHN0cmVhbS4NCiAgICAgICAgICAgICAgICBpZiAoJG5jID09ICdcXCcgJiYgcnRmX2lzUGxhaW5UZXh0KCRzdGFja1skal0pKSAkZG9jdW1lbnQgLj0gJ1xcJzsNCiAgICAgICAgICAgICAgICBlbHNlaWYgKCRuYyA9PSAnficgJiYgcnRmX2lzUGxhaW5UZXh0KCRzdGFja1skal0pKSAkZG9jdW1lbnQgLj0gJyAnOw0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJG5jID09ICdfJyAmJiBydGZfaXNQbGFpblRleHQoJHN0YWNrWyRqXSkpICRkb2N1bWVudCAuPSAnLSc7DQogICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYW4gYXN0ZXJpc2sgbWFyaywgYWRkIGl0IHRvIHRoZSBzdGFjay4NCiAgICAgICAgICAgICAgICBlbHNlaWYgKCRuYyA9PSAnKicpICRzdGFja1skal1bIioiXSA9IHRydWU7DQogICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSBzaW5nbGUgcXVvdGUsIHJlYWQgbmV4dCB0d28gY2hhcmFjdGVycyB0aGF0IGFyZSB0aGUgaGV4YWRlY2ltYWwgbm90YXRpb24NCiAgICAgICAgICAgICAgICAvLyBvZiBhIGNoYXJhY3RlciB3ZSBzaG91bGQgYWRkIHRvIHRoZSBvdXRwdXQgc3RyZWFtLg0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJG5jID09ICInIikgew0KICAgICAgICAgICAgICAgICAgICAkaGV4ID0gc3Vic3RyKCR0ZXh0LCAkaSArIDIsIDIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAocnRmX2lzUGxhaW5UZXh0KCRzdGFja1skal0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGRvY3VtZW50IC49IGh0bWxfZW50aXR5X2RlY29kZSgiJiMiLmhleGRlYygkaGV4KS4iOyIpOw0KICAgICAgICAgICAgICAgICAgICAvL1NoaWZ0IHRoZSBwb2ludGVyLg0KICAgICAgICAgICAgICAgICAgICAkaSArPSAyOw0KICAgICAgICAgICAgICAgIC8vIFNpbmNlLCB3ZeKAmXZlIGZvdW5kIHRoZSBhbHBoYWJldGljIGNoYXJhY3RlciwgdGhlIG5leHQgY2hhcmFjdGVycyBhcmUgY29udHJvbCB3b3JkDQogICAgICAgICAgICAgICAgLy8gYW5kLCBwb3NzaWJseSwgc29tZSBkaWdpdCBwYXJhbWV0ZXIuDQogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRuYyA+PSAnYScgJiYgJG5jIDw9ICd6JyB8fCAkbmMgPj0gJ0EnICYmICRuYyA8PSAnWicpIHsNCiAgICAgICAgICAgICAgICAgICAgJHdvcmQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgJHBhcmFtID0gbnVsbDsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCByZWFkaW5nIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGJhY2tzbGFzaC4NCiAgICAgICAgICAgICAgICAgICAgZm9yICgkayA9ICRpICsgMSwgJG0gPSAwOyAkayA8IHN0cmxlbigkdGV4dCk7ICRrKyssICRtKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRuYyA9ICR0ZXh0WyRrXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyBhIGxldHRlciBhbmQgdGhlcmUgd2VyZSBubyBkaWdpdHMgYmVmb3JlIGl0LA0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZeKAmXJlIHN0aWxsIHJlYWRpbmcgdGhlIGNvbnRyb2wgd29yZC4gSWYgdGhlcmUgd2VyZSBkaWdpdHMsIHdlIHNob3VsZCBzdG9wDQogICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5jZSB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBjb250cm9sIHdvcmQuDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5jID49ICdhJyAmJiAkbmMgPD0gJ3onIHx8ICRuYyA+PSAnQScgJiYgJG5jIDw9ICdaJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkcGFyYW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd29yZCAuPSAkbmM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIGEgZGlnaXQsIHN0b3JlIHRoZSBwYXJhbWV0ZXIuDQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJG5jID49ICcwJyAmJiAkbmMgPD0gJzknKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbSAuPSAkbmM7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBtaW51cyBzaWduIG1heSBvY2N1ciBvbmx5IGJlZm9yZSBhIGRpZ2l0IHBhcmFtZXRlciwgY2hlY2sgd2hldGhlcg0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHBhcmFtIGlzIGVtcHR5LiBPdGhlcndpc2UsIHdlIHJlYWNoIHRoZSBlbmQgb2YgdGhlIGNvbnRyb2wgd29yZC4NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZiAoJG5jID09ICctJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkcGFyYW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW0gLj0gJG5jOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAvLyBTaGlmdCB0aGUgcG9pbnRlciBvbiB0aGUgbnVtYmVyIG9mIHJlYWQgY2hhcmFjdGVycy4NCiAgICAgICAgICAgICAgICAgICAgJGkgKz0gJG0gLSAxOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGFuYWx5emluZyB3aGF0IHdl4oCZdmUgcmVhZC4gV2UgYXJlIGludGVyZXN0ZWQgbW9zdGx5IGluIGNvbnRyb2wgd29yZHMuDQogICAgICAgICAgICAgICAgICAgICR0b1RleHQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdHJ0b2xvd2VyKCR3b3JkKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNvbnRyb2wgd29yZCBpcyAidSIsIHRoZW4gaXRzIHBhcmFtZXRlciBpcyB0aGUgZGVjaW1hbCBub3RhdGlvbiBvZiB0aGUNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVuaWNvZGUgY2hhcmFjdGVyIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtLg0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBzdGFjayBjb250YWlucyBcdWNOIGNvbnRyb2wgd29yZC4gSWYgaXQgZG9lcywNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIHNob3VsZCByZW1vdmUgdGhlIE4gY2hhcmFjdGVycyBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidSI6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvVGV4dCAuPSBodG1sX2VudGl0eV9kZWNvZGUoIiYjeCIuZGVjaGV4KCRwYXJhbSkuIjsiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdWNEZWx0YSA9IEAkc3RhY2tbJGpdWyJ1YyJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdWNEZWx0YSA+IDApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpICs9ICR1Y0RlbHRhOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3QgbGluZSBmZWVkcywgc3BhY2VzIGFuZCB0YWJzLg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAicGFyIjogY2FzZSAicGFnZSI6IGNhc2UgImNvbHVtbiI6IGNhc2UgImxpbmUiOiBjYXNlICJsYnIiOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b1RleHQgLj0gIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW1zcGFjZSI6IGNhc2UgImVuc3BhY2UiOiBjYXNlICJxbXNwYWNlIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9UZXh0IC49ICIgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFiIjogJHRvVGV4dCAuPSAiXHQiOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBjdXJyZW50IGRhdGUgYW5kIHRpbWUgaW5zdGVhZCBvZiBjb3JyZXNwb25kaW5nIGxhYmVscy4NCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImNoZGF0ZSI6ICR0b1RleHQgLj0gZGF0ZSgibS5kLlkiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjaGRwbCI6ICR0b1RleHQgLj0gZGF0ZSgibCwgaiBGIFkiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjaGRwYSI6ICR0b1RleHQgLj0gZGF0ZSgiRCwgaiBNIFkiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjaHRpbWUiOiAkdG9UZXh0IC49IGRhdGUoIkg6aTpzIik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBzb21lIHJlc2VydmVkIGNoYXJhY3RlcnMgdG8gdGhlaXIgaHRtbCBhbmFsb2dzLg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZW1kYXNoIjogJHRvVGV4dCAuPSBodG1sX2VudGl0eV9kZWNvZGUoIiZtZGFzaDsiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmRhc2giOiAkdG9UZXh0IC49IGh0bWxfZW50aXR5X2RlY29kZSgiJm5kYXNoOyIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImJ1bGxldCI6ICR0b1RleHQgLj0gaHRtbF9lbnRpdHlfZGVjb2RlKCImIzE0OTsiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJscXVvdGUiOiAkdG9UZXh0IC49IGh0bWxfZW50aXR5X2RlY29kZSgiJmxzcXVvOyIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInJxdW90ZSI6ICR0b1RleHQgLj0gaHRtbF9lbnRpdHlfZGVjb2RlKCImcnNxdW87Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGRibHF1b3RlIjogJHRvVGV4dCAuPSBodG1sX2VudGl0eV9kZWNvZGUoIiZsYXF1bzsiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJyZGJscXVvdGUiOiAkdG9UZXh0IC49IGh0bWxfZW50aXR5X2RlY29kZSgiJnJhcXVvOyIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhbGwgb3RoZXIgdG8gdGhlIGNvbnRyb2wgd29yZHMgc3RhY2suIElmIGEgY29udHJvbCB3b3JkDQogICAgICAgICAgICAgICAgICAgICAgICAvLyBkb2VzIG5vdCBpbmNsdWRlIHBhcmFtZXRlcnMsIHNldCAmcGFyYW0gdG8gdHJ1ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrWyRqXVtzdHJ0b2xvd2VyKCR3b3JkKV0gPSBlbXB0eSgkcGFyYW0pID8gdHJ1ZSA6ICRwYXJhbTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIC8vIEFkZCBkYXRhIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGlmIHJlcXVpcmVkLg0KICAgICAgICAgICAgICAgICAgICBpZiAocnRmX2lzUGxhaW5UZXh0KCRzdGFja1skal0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGRvY3VtZW50IC49ICR0b1RleHQ7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgLy8gSWYgd2UgcmVhZCB0aGUgb3BlbmluZyBicmFjZSB7LCB0aGVuIG5ldyBzdWJncm91cCBzdGFydHMgYW5kIHdlIGFkZA0KICAgICAgICAgICAgLy8gbmV3IGFycmF5IHN0YWNrIGVsZW1lbnQgYW5kIHdyaXRlIHRoZSBkYXRhIGZyb20gcHJldmlvdXMgc3RhY2sgZWxlbWVudCB0byBpdC4NCiAgICAgICAgICAgIGNhc2UgInsiOg0KICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJHN0YWNrLCAkc3RhY2tbJGorK10pOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAvLyBJZiB3ZSByZWFkIHRoZSBjbG9zaW5nIGJyYWNlIH0sIHRoZW4gd2UgcmVhY2ggdGhlIGVuZCBvZiBzdWJncm91cCBhbmQgc2hvdWxkIHJlbW92ZQ0KICAgICAgICAgICAgLy8gdGhlIGxhc3Qgc3RhY2sgZWxlbWVudC4NCiAgICAgICAgICAgIGNhc2UgIn0iOg0KICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkc3RhY2spOw0KICAgICAgICAgICAgICAgICRqLS07DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIC8vIFNraXAg4oCcdHJhc2jigJ0uDQogICAgICAgICAgICBjYXNlICdcMCc6IGNhc2UgJ1xyJzogY2FzZSAnXGYnOiBjYXNlICdcbic6IGJyZWFrOw0KICAgICAgICAgICAgLy8gQWRkIG90aGVyIGRhdGEgdG8gdGhlIG91dHB1dCBzdHJlYW0gaWYgcmVxdWlyZWQuDQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIGlmIChydGZfaXNQbGFpblRleHQoJHN0YWNrWyRqXSkpDQogICAgICAgICAgICAgICAgICAgICRkb2N1bWVudCAuPSAkYzsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KICAgIC8vIFJldHVybiByZXN1bHQuDQogICAgcmV0dXJuICRkb2N1bWVudDsNCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Config.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIEtvbnJhZCBBYmljaHQgPGhpQGluc3Bpcml0by5kZT4KICogQGRhdGUgICAgMjAyMC0xMS0yMgogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7CgovKioKICogVGhpcyBjbGFzcyBjb250YWlucyBjb25maWd1cmF0aW9ucyB1c2VkIGluIHZhcmlvdXMgY2xhc3Nlcy4gWW91IGNhbiBvdmVycmlkZSB0aGVtCiAqIG1hbnVhbGx5LCBpbiBjYXNlIGRlZmF1bHQgdmFsdWVzIGFyZW4ndCB3b3JraW5nLgogKgogKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyL2lzc3Vlcy8zMDUKICovCmNsYXNzIENvbmZpZwp7CiAgICBwcml2YXRlICRmb250U3BhY2VMaW1pdCA9IC01MDsKCiAgICAvKioKICAgICAqIFJlcHJlc2VudHM6IChOVUwsIEhULCBMRiwgRkYsIENSLCBTUCkKICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRwZGZXaGl0ZXNwYWNlcyA9ICJcMFx0XG5cZlxyICI7CgogICAgLyoqCiAgICAgKiBSZXByZXNlbnRzOiAoTlVMLCBIVCwgTEYsIEZGLCBDUiwgU1ApCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkcGRmV2hpdGVzcGFjZXNSZWdleCA9ICdbXDBcdFxuXGZcciBdJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9udFNwYWNlTGltaXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Zm9udFNwYWNlTGltaXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEZvbnRTcGFjZUxpbWl0KCR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Zm9udFNwYWNlTGltaXQgPSAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBkZldoaXRlc3BhY2VzKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGRmV2hpdGVzcGFjZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFBkZldoaXRlc3BhY2VzKHN0cmluZyAkcGRmV2hpdGVzcGFjZXMpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnBkZldoaXRlc3BhY2VzID0gJHBkZldoaXRlc3BhY2VzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQZGZXaGl0ZXNwYWNlc1JlZ2V4KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGRmV2hpdGVzcGFjZXNSZWdleDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UGRmV2hpdGVzcGFjZXNSZWdleChzdHJpbmcgJHBkZldoaXRlc3BhY2VzUmVnZXgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnBkZldoaXRlc3BhY2VzUmVnZXggPSAkcGRmV2hpdGVzcGFjZXNSZWdleDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Document.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7CgovKioKICogVGVjaG5pY2FsIHJlZmVyZW5jZXMgOgogKiAtIGh0dHA6Ly93d3cubWFjdGVjaC5jb20vYXJ0aWNsZXMvbWFjdGVjaC9Wb2wuMTUvMTUuMDkvUERGSW50cm8vaW5kZXguaHRtbAogKiAtIGh0dHA6Ly9mcmFtZXdvcmsuemVuZC5jb20vaXNzdWVzL3NlY3VyZS9hdHRhY2htZW50LzEyNTEyL1BkZi5waHAKICogLSBodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL3JlZi5wZGYucGhwIzc0MjExCiAqIC0gaHR0cDovL2NwYW5zZWFyY2gucGVybC5vcmcvc3JjL0pWL1Bvc3RTY3JpcHQtRm9udC0xLjEwLjAyL2xpYi9Qb3N0U2NyaXB0L0lTT0xhdGluMUVuY29kaW5nLnBtCiAqIC0gaHR0cDovL2NwYW5zZWFyY2gucGVybC5vcmcvc3JjL0pWL1Bvc3RTY3JpcHQtRm9udC0xLjEwLjAyL2xpYi9Qb3N0U2NyaXB0L0lTT0xhdGluOUVuY29kaW5nLnBtCiAqIC0gaHR0cDovL2NwYW5zZWFyY2gucGVybC5vcmcvc3JjL0pWL1Bvc3RTY3JpcHQtRm9udC0xLjEwLjAyL2xpYi9Qb3N0U2NyaXB0L1N0YW5kYXJkRW5jb2RpbmcucG0KICogLSBodHRwOi8vY3BhbnNlYXJjaC5wZXJsLm9yZy9zcmMvSlYvUG9zdFNjcmlwdC1Gb250LTEuMTAuMDIvbGliL1Bvc3RTY3JpcHQvV2luQW5zaUVuY29kaW5nLnBtCiAqCiAqIENsYXNzIERvY3VtZW50CiAqLwpjbGFzcyBEb2N1bWVudAp7CiAgICAvKioKICAgICAqIEB2YXIgUERGT2JqZWN0W10KICAgICAqLwogICAgcHJvdGVjdGVkICRvYmplY3RzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAkZGljdGlvbmFyeSA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBIZWFkZXIKICAgICAqLwogICAgcHJvdGVjdGVkICR0cmFpbGVyID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRkZXRhaWxzID0gbnVsbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT50cmFpbGVyID0gbmV3IEhlYWRlcihbXSwgJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0KCkKICAgIHsKICAgICAgICAkdGhpcy0+YnVpbGREaWN0aW9uYXJ5KCk7CgogICAgICAgICR0aGlzLT5idWlsZERldGFpbHMoKTsKCiAgICAgICAgLy8gUHJvcGFnYXRlIGluaXQgdG8gb2JqZWN0cy4KICAgICAgICBmb3JlYWNoICgkdGhpcy0+b2JqZWN0cyBhcyAkb2JqZWN0KSB7CiAgICAgICAgICAgICRvYmplY3QtPmdldEhlYWRlcigpLT5pbml0KCk7CiAgICAgICAgICAgICRvYmplY3QtPmluaXQoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBCdWlsZCBkaWN0aW9uYXJ5IGJhc2VkIG9uIHR5cGUgaGVhZGVyIGZpZWxkLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGREaWN0aW9uYXJ5KCkKICAgIHsKICAgICAgICAvLyBCdWlsZCBkaWN0aW9uYXJ5LgogICAgICAgICR0aGlzLT5kaWN0aW9uYXJ5ID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5vYmplY3RzIGFzICRpZCA9PiAkb2JqZWN0KSB7CiAgICAgICAgICAgICR0eXBlID0gJG9iamVjdC0+Z2V0SGVhZGVyKCktPmdldCgnVHlwZScpLT5nZXRDb250ZW50KCk7CgogICAgICAgICAgICBpZiAoIWVtcHR5KCR0eXBlKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmRpY3Rpb25hcnlbJHR5cGVdWyRpZF0gPSAkaWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBCdWlsZCBkZXRhaWxzIGFycmF5LgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGREZXRhaWxzKCkKICAgIHsKICAgICAgICAvLyBCdWlsZCBkZXRhaWxzIGFycmF5LgogICAgICAgICRkZXRhaWxzID0gW107CgogICAgICAgIC8vIEV4dHJhY3QgZG9jdW1lbnQgaW5mbwogICAgICAgIGlmICgkdGhpcy0+dHJhaWxlci0+aGFzKCdJbmZvJykpIHsKICAgICAgICAgICAgLyoqIEB2YXIgUERGT2JqZWN0ICRpbmZvICovCiAgICAgICAgICAgICRpbmZvID0gJHRoaXMtPnRyYWlsZXItPmdldCgnSW5mbycpOwogICAgICAgICAgICAvLyBUaGlzIGNvdWxkIGJlIGFuIEVsZW1lbnRNaXNzaW5nIG9iamVjdCwgc28gd2UgbmVlZCB0byBjaGVjayBmb3IKICAgICAgICAgICAgLy8gdGhlIGdldEhlYWRlciBtZXRob2QgZmlyc3QuCiAgICAgICAgICAgIGlmIChudWxsICE9PSAkaW5mbyAmJiBtZXRob2RfZXhpc3RzKCRpbmZvLCAnZ2V0SGVhZGVyJykpIHsKICAgICAgICAgICAgICAgICRkZXRhaWxzID0gJGluZm8tPmdldEhlYWRlcigpLT5nZXREZXRhaWxzKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFJldHJpZXZlIHRoZSBwYWdlIGNvdW50CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHBhZ2VzID0gJHRoaXMtPmdldFBhZ2VzKCk7CiAgICAgICAgICAgICRkZXRhaWxzWydQYWdlcyddID0gXGNvdW50KCRwYWdlcyk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkZGV0YWlsc1snUGFnZXMnXSA9IDA7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGV0YWlscyA9ICRkZXRhaWxzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGljdGlvbmFyeSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kaWN0aW9uYXJ5OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFBERk9iamVjdFtdICRvYmplY3RzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRPYmplY3RzKCRvYmplY3RzID0gW10pCiAgICB7CiAgICAgICAgJHRoaXMtPm9iamVjdHMgPSAoYXJyYXkpICRvYmplY3RzOwoKICAgICAgICAkdGhpcy0+aW5pdCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBQREZPYmplY3RbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T2JqZWN0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vYmplY3RzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIFBERk9iamVjdHxGb250fFBhZ2V8RWxlbWVudHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPYmplY3RCeUlkKCRpZCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPm9iamVjdHNbJGlkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5vYmplY3RzWyRpZF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN1YnR5cGUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPYmplY3RzQnlUeXBlKCR0eXBlLCAkc3VidHlwZSA9IG51bGwpCiAgICB7CiAgICAgICAgJG9iamVjdHMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm9iamVjdHMgYXMgJGlkID0+ICRvYmplY3QpIHsKICAgICAgICAgICAgaWYgKCRvYmplY3QtPmdldEhlYWRlcigpLT5nZXQoJ1R5cGUnKSA9PSAkdHlwZSAmJgogICAgICAgICAgICAgICAgKG51bGwgPT09ICRzdWJ0eXBlIHx8ICRvYmplY3QtPmdldEhlYWRlcigpLT5nZXQoJ1N1YnR5cGUnKSA9PSAkc3VidHlwZSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkb2JqZWN0c1skaWRdID0gJG9iamVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvYmplY3RzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBQREZPYmplY3RbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9udHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0T2JqZWN0c0J5VHlwZSgnRm9udCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBQYWdlW10KICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhZ2VzKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmRpY3Rpb25hcnlbJ0NhdGFsb2cnXSkpIHsKICAgICAgICAgICAgLy8gU2VhcmNoIGZvciBjYXRhbG9nIHRvIGxpc3QgcGFnZXMuCiAgICAgICAgICAgICRpZCA9IHJlc2V0KCR0aGlzLT5kaWN0aW9uYXJ5WydDYXRhbG9nJ10pOwoKICAgICAgICAgICAgLyoqIEB2YXIgUGFnZXMgJG9iamVjdCAqLwogICAgICAgICAgICAkb2JqZWN0ID0gJHRoaXMtPm9iamVjdHNbJGlkXS0+Z2V0KCdQYWdlcycpOwogICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkb2JqZWN0LCAnZ2V0UGFnZXMnKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvYmplY3QtPmdldFBhZ2VzKHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmRpY3Rpb25hcnlbJ1BhZ2VzJ10pKSB7CiAgICAgICAgICAgIC8vIFNlYXJjaCBmb3IgcGFnZXMgdG8gbGlzdCBraWRzLgogICAgICAgICAgICAkcGFnZXMgPSBbXTsKCiAgICAgICAgICAgIC8qKiBAdmFyIFBhZ2VzW10gJG9iamVjdHMgKi8KICAgICAgICAgICAgJG9iamVjdHMgPSAkdGhpcy0+Z2V0T2JqZWN0c0J5VHlwZSgnUGFnZXMnKTsKICAgICAgICAgICAgZm9yZWFjaCAoJG9iamVjdHMgYXMgJG9iamVjdCkgewogICAgICAgICAgICAgICAgJHBhZ2VzID0gYXJyYXlfbWVyZ2UoJHBhZ2VzLCAkb2JqZWN0LT5nZXRQYWdlcyh0cnVlKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkcGFnZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmRpY3Rpb25hcnlbJ1BhZ2UnXSkpIHsKICAgICAgICAgICAgLy8gU2VhcmNoIGZvciAncGFnZScgKHVub3JkZXJlZCBwYWdlcykuCiAgICAgICAgICAgICRwYWdlcyA9ICR0aGlzLT5nZXRPYmplY3RzQnlUeXBlKCdQYWdlJyk7CgogICAgICAgICAgICByZXR1cm4gYXJyYXlfdmFsdWVzKCRwYWdlcyk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignTWlzc2luZyBjYXRhbG9nLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFBhZ2UgJHBhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dChQYWdlICRwYWdlID0gbnVsbCkKICAgIHsKICAgICAgICAkdGV4dHMgPSBbXTsKICAgICAgICAkcGFnZXMgPSAkdGhpcy0+Z2V0UGFnZXMoKTsKCiAgICAgICAgZm9yZWFjaCAoJHBhZ2VzIGFzICRpbmRleCA9PiAkcGFnZSkgewogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogSW4gc29tZSBjYXNlcywgdGhlICRwYWdlIHZhcmlhYmxlIG1heSBiZSBudWxsLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgaWYgKG51bGwgPT09ICRwYWdlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHRleHQgPSB0cmltKCRwYWdlLT5nZXRUZXh0KCkpKSB7CiAgICAgICAgICAgICAgICAkdGV4dHNbXSA9ICR0ZXh0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgiXG5cbiIsICR0ZXh0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEhlYWRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHJhaWxlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50cmFpbGVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRUcmFpbGVyKEhlYWRlciAkdHJhaWxlcikKICAgIHsKICAgICAgICAkdGhpcy0+dHJhaWxlciA9ICR0cmFpbGVyOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGV0YWlscygkZGVlcCA9IHRydWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kZXRhaWxzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7Cgp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnRBcnJheTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50Qm9vbGVhbjsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50RGF0ZTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50SGV4YTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TmFtZTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TnVsbDsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TnVtZXJpYzsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50U3RyaW5nOwp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnRTdHJ1Y3Q7CnVzZSBTbWFsb3RcUGRmUGFyc2VyXEVsZW1lbnRcRWxlbWVudFhSZWY7CgovKioKICogQ2xhc3MgRWxlbWVudAogKi8KY2xhc3MgRWxlbWVudAp7CiAgICAvKioKICAgICAqIEB2YXIgRG9jdW1lbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRkb2N1bWVudCA9IG51bGw7CgogICAgcHJvdGVjdGVkICR2YWx1ZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUsIERvY3VtZW50ICRkb2N1bWVudCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5kb2N1bWVudCA9ICRkb2N1bWVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdCgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscygkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSA9PSAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbnRhaW5zKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoXGlzX2FycmF5KCR0aGlzLT52YWx1ZSkpIHsKICAgICAgICAgICAgLyoqIEB2YXIgRWxlbWVudCAkdmFsICovCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT52YWx1ZSBhcyAkdmFsKSB7CiAgICAgICAgICAgICAgICBpZiAoJHZhbC0+ZXF1YWxzKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5lcXVhbHMoJHZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gKHN0cmluZykgKCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGNvbnRlbnQKICAgICAqIEBwYXJhbSBEb2N1bWVudCAkZG9jdW1lbnQKICAgICAqIEBwYXJhbSBpbnQgICAgICAkcG9zaXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoJGNvbnRlbnQsIERvY3VtZW50ICRkb2N1bWVudCA9IG51bGwsICYkcG9zaXRpb24gPSAwKQogICAgewogICAgICAgICRhcmdzID0gXGZ1bmNfZ2V0X2FyZ3MoKTsKICAgICAgICAkb25seV92YWx1ZXMgPSBpc3NldCgkYXJnc1szXSkgPyAkYXJnc1szXSA6IGZhbHNlOwogICAgICAgICRjb250ZW50ID0gdHJpbSgkY29udGVudCk7CiAgICAgICAgJHZhbHVlcyA9IFtdOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICRvbGRfcG9zaXRpb24gPSAkcG9zaXRpb247CgogICAgICAgICAgICBpZiAoISRvbmx5X3ZhbHVlcykgewogICAgICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXlxzKig/UDxuYW1lPlwvW0EtWjAtOVwuX10rKSg/UDx2YWx1ZT4uKikvc2knLCBzdWJzdHIoJGNvbnRlbnQsICRwb3NpdGlvbiksICRtYXRjaCkpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBsdHJpbSgkbWF0Y2hbJ25hbWUnXSwgJy8nKTsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAkbWF0Y2hbJ3ZhbHVlJ107CiAgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9uID0gc3RycG9zKCRjb250ZW50LCAkdmFsdWUsICRwb3NpdGlvbiArIFxzdHJsZW4oJG1hdGNoWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuYW1lID0gXGNvdW50KCR2YWx1ZXMpOwogICAgICAgICAgICAgICAgJHZhbHVlID0gc3Vic3RyKCRjb250ZW50LCAkcG9zaXRpb24pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGVsZW1lbnQgPSBFbGVtZW50TmFtZTo6cGFyc2UoJHZhbHVlLCAkZG9jdW1lbnQsICRwb3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJG5hbWVdID0gJGVsZW1lbnQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZWxlbWVudCA9IEVsZW1lbnRYUmVmOjpwYXJzZSgkdmFsdWUsICRkb2N1bWVudCwgJHBvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgJHZhbHVlc1skbmFtZV0gPSAkZWxlbWVudDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRlbGVtZW50ID0gRWxlbWVudE51bWVyaWM6OnBhcnNlKCR2YWx1ZSwgJGRvY3VtZW50LCAkcG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRuYW1lXSA9ICRlbGVtZW50OwogICAgICAgICAgICB9IGVsc2VpZiAoJGVsZW1lbnQgPSBFbGVtZW50U3RydWN0OjpwYXJzZSgkdmFsdWUsICRkb2N1bWVudCwgJHBvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgJHZhbHVlc1skbmFtZV0gPSAkZWxlbWVudDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRlbGVtZW50ID0gRWxlbWVudEJvb2xlYW46OnBhcnNlKCR2YWx1ZSwgJGRvY3VtZW50LCAkcG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRuYW1lXSA9ICRlbGVtZW50OwogICAgICAgICAgICB9IGVsc2VpZiAoJGVsZW1lbnQgPSBFbGVtZW50TnVsbDo6cGFyc2UoJHZhbHVlLCAkZG9jdW1lbnQsICRwb3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJG5hbWVdID0gJGVsZW1lbnQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZWxlbWVudCA9IEVsZW1lbnREYXRlOjpwYXJzZSgkdmFsdWUsICRkb2N1bWVudCwgJHBvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgJHZhbHVlc1skbmFtZV0gPSAkZWxlbWVudDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRlbGVtZW50ID0gRWxlbWVudFN0cmluZzo6cGFyc2UoJHZhbHVlLCAkZG9jdW1lbnQsICRwb3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJG5hbWVdID0gJGVsZW1lbnQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZWxlbWVudCA9IEVsZW1lbnRIZXhhOjpwYXJzZSgkdmFsdWUsICRkb2N1bWVudCwgJHBvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgJHZhbHVlc1skbmFtZV0gPSAkZWxlbWVudDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRlbGVtZW50ID0gRWxlbWVudEFycmF5OjpwYXJzZSgkdmFsdWUsICRkb2N1bWVudCwgJHBvc2l0aW9uKSkgewogICAgICAgICAgICAgICAgJHZhbHVlc1skbmFtZV0gPSAkZWxlbWVudDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwb3NpdGlvbiA9ICRvbGRfcG9zaXRpb247CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0gd2hpbGUgKCRwb3NpdGlvbiA8IFxzdHJsZW4oJGNvbnRlbnQpKTsKCiAgICAgICAgcmV0dXJuICR2YWx1ZXM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementArray.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxIZWFkZXI7CnVzZSBTbWFsb3RcUGRmUGFyc2VyXFBERk9iamVjdDsKCi8qKgogKiBDbGFzcyBFbGVtZW50QXJyYXkKICovCmNsYXNzIEVsZW1lbnRBcnJheSBleHRlbmRzIEVsZW1lbnQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUsIERvY3VtZW50ICRkb2N1bWVudCA9IG51bGwpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkdmFsdWUsICRkb2N1bWVudCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT52YWx1ZSBhcyAkbmFtZSA9PiAkZWxlbWVudCkgewogICAgICAgICAgICAkdGhpcy0+cmVzb2x2ZVhSZWYoJG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHBhcmVudDo6Z2V0Q29udGVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmF3Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBib29sICRkZWVwCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGV0YWlscygkZGVlcCA9IHRydWUpCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IFtdOwogICAgICAgICRlbGVtZW50cyA9ICR0aGlzLT5nZXRDb250ZW50KCk7CgogICAgICAgIGZvcmVhY2ggKCRlbGVtZW50cyBhcyAka2V5ID0+ICRlbGVtZW50KSB7CiAgICAgICAgICAgIGlmICgkZWxlbWVudCBpbnN0YW5jZW9mIEhlYWRlciAmJiAkZGVlcCkgewogICAgICAgICAgICAgICAgJHZhbHVlc1ska2V5XSA9ICRlbGVtZW50LT5nZXREZXRhaWxzKCRkZWVwKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRlbGVtZW50IGluc3RhbmNlb2YgUERGT2JqZWN0ICYmICRkZWVwKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRrZXldID0gJGVsZW1lbnQtPmdldERldGFpbHMoZmFsc2UpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGVsZW1lbnQgaW5zdGFuY2VvZiBzZWxmKSB7CiAgICAgICAgICAgICAgICBpZiAoJGRlZXApIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWVzWyRrZXldID0gJGVsZW1lbnQtPmdldERldGFpbHMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCAmJiAhKCRlbGVtZW50IGluc3RhbmNlb2Ygc2VsZikpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJGtleV0gPSAkZWxlbWVudC0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLCcsICR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKgogICAgICogQHJldHVybiBFbGVtZW50fFBERk9iamVjdAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVzb2x2ZVhSZWYoJG5hbWUpCiAgICB7CiAgICAgICAgaWYgKCgkb2JqID0gJHRoaXMtPnZhbHVlWyRuYW1lXSkgaW5zdGFuY2VvZiBFbGVtZW50WFJlZikgewogICAgICAgICAgICAvKiogQHZhciBQREZPYmplY3QgJG9iaiAqLwogICAgICAgICAgICAkb2JqID0gJHRoaXMtPmRvY3VtZW50LT5nZXRPYmplY3RCeUlkKCRvYmotPmdldElkKCkpOwogICAgICAgICAgICAkdGhpcy0+dmFsdWVbJG5hbWVdID0gJG9iajsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVbJG5hbWVdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICRjb250ZW50CiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKiBAcGFyYW0gaW50ICAgICAgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxFbGVtZW50QXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudCwgRG9jdW1lbnQgJGRvY3VtZW50ID0gbnVsbCwgJiRvZmZzZXQgPSAwKQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxzKlxbKD9QPGFycmF5Pi4qKS9pcycsICRjb250ZW50LCAkbWF0Y2gpKSB7CiAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvKC4qPykoXFt8XF0pL3MnLCB0cmltKCRjb250ZW50KSwgJG1hdGNoZXMpOwoKICAgICAgICAgICAgJGxldmVsID0gMDsKICAgICAgICAgICAgJHN1YiA9ICcnOwogICAgICAgICAgICBmb3JlYWNoICgkbWF0Y2hlc1swXSBhcyAkcGFydCkgewogICAgICAgICAgICAgICAgJHN1YiAuPSAkcGFydDsKICAgICAgICAgICAgICAgICRsZXZlbCArPSAoZmFsc2UgIT09IHN0cnBvcygkcGFydCwgJ1snKSA/IDEgOiAtMSk7CiAgICAgICAgICAgICAgICBpZiAoJGxldmVsIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUmVtb3ZlcyAxIGxldmVsIFsgYW5kIF0uCiAgICAgICAgICAgICRzdWIgPSBzdWJzdHIodHJpbSgkc3ViKSwgMSwgLTEpOwogICAgICAgICAgICAkc3ViX29mZnNldCA9IDA7CiAgICAgICAgICAgICR2YWx1ZXMgPSBFbGVtZW50OjpwYXJzZSgkc3ViLCAkZG9jdW1lbnQsICRzdWJfb2Zmc2V0LCB0cnVlKTsKCiAgICAgICAgICAgICRvZmZzZXQgKz0gc3RycG9zKCRjb250ZW50LCAnWycpICsgMTsKICAgICAgICAgICAgLy8gRmluZCBuZXh0ICddJyBwb3NpdGlvbgogICAgICAgICAgICAkb2Zmc2V0ICs9IFxzdHJsZW4oJHN1YikgKyAxOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZXMsICRkb2N1bWVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementBoolean.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50OwoKLyoqCiAqIENsYXNzIEVsZW1lbnRCb29sZWFuCiAqLwpjbGFzcyBFbGVtZW50Qm9vbGVhbiBleHRlbmRzIEVsZW1lbnQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGJvb2wgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgoJ3RydWUnID09IHN0cnRvbG93ZXIoJHZhbHVlKSB8fCB0cnVlID09PSAkdmFsdWUpLCBudWxsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENvbnRlbnQoKSA9PT0gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICRjb250ZW50CiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKiBAcGFyYW0gaW50ICAgICAgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxFbGVtZW50Qm9vbGVhbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKCRjb250ZW50LCBEb2N1bWVudCAkZG9jdW1lbnQgPSBudWxsLCAmJG9mZnNldCA9IDApCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHMqKD9QPHZhbHVlPnRydWV8ZmFsc2UpL2lzJywgJGNvbnRlbnQsICRtYXRjaCkpIHsKICAgICAgICAgICAgJHZhbHVlID0gJG1hdGNoWyd2YWx1ZSddOwogICAgICAgICAgICAkb2Zmc2V0ICs9IHN0cnBvcygkY29udGVudCwgJHZhbHVlKSArIFxzdHJsZW4oJHZhbHVlKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementDate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFBpLCBleHRyYWN0aW9uIG9yaWVudGVkLgogKiAgQ29weXJpZ2h0IChDKSAyMDE3IC0gU8OpYmFzdGllbiBNQUxPVCA8c2ViYXN0aWVuQG1hbG90LmZyPgogKgogKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqICBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uCiAqICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5wZGZwYXJzZXIub3JnL3NpdGVzL2RlZmF1bHQvTElDRU5TRS50eHQ+LgogKi8KCm5hbWVzcGFjZSBTbWFsb3RcUGRmUGFyc2VyXEVsZW1lbnQ7Cgp1c2UgU21hbG90XFBkZlBhcnNlclxEb2N1bWVudDsKCi8qKgogKiBDbGFzcyBFbGVtZW50RGF0ZQogKi8KY2xhc3MgRWxlbWVudERhdGUgZXh0ZW5kcyBFbGVtZW50U3RyaW5nCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRmb3JtYXRzID0gWwogICAgICAgIDQgPT4gJ1knLAogICAgICAgIDYgPT4gJ1ltJywKICAgICAgICA4ID0+ICdZbWQnLAogICAgICAgIDEwID0+ICdZbWRIJywKICAgICAgICAxMiA9PiAnWW1kSGknLAogICAgICAgIDE0ID0+ICdZbWRIaXMnLAogICAgICAgIDE1ID0+ICdZbWRIaXNlJywKICAgICAgICAxNyA9PiAnWW1kSGlzTycsCiAgICAgICAgMTggPT4gJ1ltZEhpc08nLAogICAgICAgIDE5ID0+ICdZbWRIaXNPJywKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgJGZvcm1hdCA9ICdjJzsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcRGF0ZVRpbWUgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCEoJHZhbHVlIGluc3RhbmNlb2YgXERhdGVUaW1lKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignRGF0ZVRpbWUgcmVxdWlyZWQuJyk7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmb3JtYXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEZvcm1hdCgkZm9ybWF0KQogICAgewogICAgICAgICR0aGlzLT5mb3JtYXQgPSAkZm9ybWF0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMoJHZhbHVlKQogICAgewogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBcRGF0ZVRpbWUpIHsKICAgICAgICAgICAgJHRpbWVzdGFtcCA9ICR2YWx1ZS0+Z2V0VGltZVN0YW1wKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRpbWVzdGFtcCA9IHN0cnRvdGltZSgkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aW1lc3RhbXAgPT0gJHRoaXMtPnZhbHVlLT5nZXRUaW1lU3RhbXAoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gKHN0cmluZykgKCR0aGlzLT52YWx1ZS0+Zm9ybWF0KCR0aGlzLT5mb3JtYXQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkY29udGVudAogICAgICogQHBhcmFtIERvY3VtZW50ICRkb2N1bWVudAogICAgICogQHBhcmFtIGludCAgICAgICRvZmZzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2x8RWxlbWVudERhdGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudCwgRG9jdW1lbnQgJGRvY3VtZW50ID0gbnVsbCwgJiRvZmZzZXQgPSAwKQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxzKlwoRFw6KD9QPG5hbWU+Lio/KVwpL3MnLCAkY29udGVudCwgJG1hdGNoKSkgewogICAgICAgICAgICAkbmFtZSA9ICRtYXRjaFsnbmFtZSddOwogICAgICAgICAgICAkbmFtZSA9IHN0cl9yZXBsYWNlKCInIiwgJycsICRuYW1lKTsKICAgICAgICAgICAgJGRhdGUgPSBmYWxzZTsKCiAgICAgICAgICAgIC8vIFNtYWxsZXN0IGZvcm1hdCA6IFkKICAgICAgICAgICAgLy8gRnVsbCBmb3JtYXQgICAgIDogWW1kSGlzUAogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15cZHs0fShcZHsyfShcZHsyfShcZHsyfShcZHsyfShcZHsyfShaKFxkezIsNH0pP3xbXCstXT9cZHsyfShcZHsyfSk/KT8pPyk/KT8pPyk/JC8nLCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgIGlmICgkcG9zID0gc3RycG9zKCRuYW1lLCAnWicpKSB7CiAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBzdWJzdHIoJG5hbWUsIDAsICRwb3MgKyAxKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgxOCA9PSBcc3RybGVuKCRuYW1lKSAmJiBwcmVnX21hdGNoKCcvW15cKy1dMDAwMCQvJywgJG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBzdWJzdHIoJG5hbWUsIDAsIC00KS4nKzAwMDAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRmb3JtYXQgPSBzZWxmOjokZm9ybWF0c1tcc3RybGVuKCRuYW1lKV07CiAgICAgICAgICAgICAgICAkZGF0ZSA9IFxEYXRlVGltZTo6Y3JlYXRlRnJvbUZvcm1hdCgkZm9ybWF0LCAkbmFtZSwgbmV3IFxEYXRlVGltZVpvbmUoJ1VUQycpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZXMKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxkezEsMn0tXGR7MSwyfS1cZHs0fSw/XHMrXGR7Mn06XGR7Mn06XGR7Mn1bXCstXVxkezR9JC8nLCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAkbmFtZSA9IHN0cl9yZXBsYWNlKCcsJywgJycsICRuYW1lKTsKICAgICAgICAgICAgICAgICAgICAkZm9ybWF0ID0gJ24tai1ZIEg6aTpzTyc7CiAgICAgICAgICAgICAgICAgICAgJGRhdGUgPSBcRGF0ZVRpbWU6OmNyZWF0ZUZyb21Gb3JtYXQoJGZvcm1hdCwgJG5hbWUsIG5ldyBcRGF0ZVRpbWVab25lKCdVVEMnKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghJGRhdGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG9mZnNldCArPSBzdHJwb3MoJGNvbnRlbnQsICcoRDonKSArIFxzdHJsZW4oJG1hdGNoWyduYW1lJ10pICsgNDsgLy8gMSBmb3IgJyhEOicgYW5kICcpJwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRkYXRlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementHexa.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50OwoKLyoqCiAqIENsYXNzIEVsZW1lbnRIZXhhCiAqLwpjbGFzcyBFbGVtZW50SGV4YSBleHRlbmRzIEVsZW1lbnRTdHJpbmcKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGNvbnRlbnQKICAgICAqIEBwYXJhbSBEb2N1bWVudCAkZG9jdW1lbnQKICAgICAqIEBwYXJhbSBpbnQgICAgICAkb2Zmc2V0CiAgICAgKgogICAgICogQHJldHVybiBib29sfEVsZW1lbnRIZXhhfEVsZW1lbnREYXRlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoJGNvbnRlbnQsIERvY3VtZW50ICRkb2N1bWVudCA9IG51bGwsICYkb2Zmc2V0ID0gMCkKICAgIHsKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15ccypcPCg/UDxuYW1lPltBLUYwLTldKylcPi9pcycsICRjb250ZW50LCAkbWF0Y2gpKSB7CiAgICAgICAgICAgICRuYW1lID0gJG1hdGNoWyduYW1lJ107CiAgICAgICAgICAgICRvZmZzZXQgKz0gc3RycG9zKCRjb250ZW50LCAnPCcuJG5hbWUpICsgXHN0cmxlbigkbmFtZSkgKyAyOyAvLyAxIGZvciAnPicKICAgICAgICAgICAgLy8gcmVwYWNrYWdlIHN0cmluZyBhcyBzdGFuZGFyZAogICAgICAgICAgICAkbmFtZSA9ICcoJy5zZWxmOjpkZWNvZGUoJG5hbWUsICRkb2N1bWVudCkuJyknOwogICAgICAgICAgICAkZWxlbWVudCA9IGZhbHNlOwoKICAgICAgICAgICAgaWYgKCEoJGVsZW1lbnQgPSBFbGVtZW50RGF0ZTo6cGFyc2UoJG5hbWUsICRkb2N1bWVudCkpKSB7CiAgICAgICAgICAgICAgICAkZWxlbWVudCA9IEVsZW1lbnRTdHJpbmc6OnBhcnNlKCRuYW1lLCAkZG9jdW1lbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKCR2YWx1ZSwgRG9jdW1lbnQgJGRvY3VtZW50ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGV4dCA9ICcnOwogICAgICAgICRsZW5ndGggPSBcc3RybGVuKCR2YWx1ZSk7CgogICAgICAgIGlmICgnMDAnID09PSBzdWJzdHIoJHZhbHVlLCAwLCAyKSkgewogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSArPSA0KSB7CiAgICAgICAgICAgICAgICAkaGV4ID0gc3Vic3RyKCR2YWx1ZSwgJGksIDQpOwogICAgICAgICAgICAgICAgJHRleHQgLj0gJyYjJy5zdHJfcGFkKGhleGRlYygkaGV4KSwgNCwgJzAnLCBcU1RSX1BBRF9MRUZUKS4nOyc7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSArPSAyKSB7CiAgICAgICAgICAgICAgICAkaGV4ID0gc3Vic3RyKCR2YWx1ZSwgJGksIDIpOwogICAgICAgICAgICAgICAgJHRleHQgLj0gXGNocihoZXhkZWMoJGhleCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGV4dCA9IGh0bWxfZW50aXR5X2RlY29kZSgkdGV4dCwgXEVOVF9OT1FVT1RFUywgJ1VURi04Jyk7CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementMissing.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEVsZW1lbnQ7CgovKioKICogQ2xhc3MgRWxlbWVudE1pc3NpbmcKICovCmNsYXNzIEVsZW1lbnRNaXNzaW5nIGV4dGVuZHMgRWxlbWVudAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QobnVsbCwgbnVsbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscygkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb250YWlucygkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICcnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxGb250OwoKLyoqCiAqIENsYXNzIEVsZW1lbnROYW1lCiAqLwpjbGFzcyBFbGVtZW50TmFtZSBleHRlbmRzIEVsZW1lbnQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHZhbHVlLCBudWxsKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHZhbHVlID09ICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkY29udGVudAogICAgICogQHBhcmFtIERvY3VtZW50ICRkb2N1bWVudAogICAgICogQHBhcmFtIGludCAgICAgICRvZmZzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2x8RWxlbWVudE5hbWUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudCwgRG9jdW1lbnQgJGRvY3VtZW50ID0gbnVsbCwgJiRvZmZzZXQgPSAwKQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxzKlwvKFtBLVowLTlcLVwrLCNcLl0rKS9pcycsICRjb250ZW50LCAkbWF0Y2gpKSB7CiAgICAgICAgICAgICRuYW1lID0gJG1hdGNoWzFdOwogICAgICAgICAgICAkb2Zmc2V0ICs9IHN0cnBvcygkY29udGVudCwgJG5hbWUpICsgXHN0cmxlbigkbmFtZSk7CiAgICAgICAgICAgICRuYW1lID0gRm9udDo6ZGVjb2RlRW50aXRpZXMoJG5hbWUpOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRuYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementNull.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50OwoKLyoqCiAqIENsYXNzIEVsZW1lbnROdWxsCiAqLwpjbGFzcyBFbGVtZW50TnVsbCBleHRlbmRzIEVsZW1lbnQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KG51bGwsIG51bGwpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAnbnVsbCc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscygkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50KCkgPT09ICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkY29udGVudAogICAgICogQHBhcmFtIERvY3VtZW50ICRkb2N1bWVudAogICAgICogQHBhcmFtIGludCAgICAgICRvZmZzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2x8RWxlbWVudE51bGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudCwgRG9jdW1lbnQgJGRvY3VtZW50ID0gbnVsbCwgJiRvZmZzZXQgPSAwKQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxzKihudWxsKS9zJywgJGNvbnRlbnQsICRtYXRjaCkpIHsKICAgICAgICAgICAgJG9mZnNldCArPSBzdHJwb3MoJGNvbnRlbnQsICdudWxsJykgKyBcc3RybGVuKCdudWxsJyk7CgogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementNumeric.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50OwoKLyoqCiAqIENsYXNzIEVsZW1lbnROdW1lcmljCiAqLwpjbGFzcyBFbGVtZW50TnVtZXJpYyBleHRlbmRzIEVsZW1lbnQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKGZsb2F0KSAkdmFsdWUsIG51bGwpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICRjb250ZW50CiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKiBAcGFyYW0gaW50ICAgICAgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxFbGVtZW50TnVtZXJpYwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKCRjb250ZW50LCBEb2N1bWVudCAkZG9jdW1lbnQgPSBudWxsLCAmJG9mZnNldCA9IDApCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHMqKD9QPHZhbHVlPlwtP1swLTlcLl0rKS9zJywgJGNvbnRlbnQsICRtYXRjaCkpIHsKICAgICAgICAgICAgJHZhbHVlID0gJG1hdGNoWyd2YWx1ZSddOwogICAgICAgICAgICAkb2Zmc2V0ICs9IHN0cnBvcygkY29udGVudCwgJHZhbHVlKSArIFxzdHJsZW4oJHZhbHVlKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxGb250OwoKLyoqCiAqIENsYXNzIEVsZW1lbnRTdHJpbmcKICovCmNsYXNzIEVsZW1lbnRTdHJpbmcgZXh0ZW5kcyBFbGVtZW50CnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR2YWx1ZSwgbnVsbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscygkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZSA9PSAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGNvbnRlbnQKICAgICAqIEBwYXJhbSBEb2N1bWVudCAkZG9jdW1lbnQKICAgICAqIEBwYXJhbSBpbnQgICAgICAkb2Zmc2V0CiAgICAgKgogICAgICogQHJldHVybiBib29sfEVsZW1lbnRTdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudCwgRG9jdW1lbnQgJGRvY3VtZW50ID0gbnVsbCwgJiRvZmZzZXQgPSAwKQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxzKlwoKD9QPG5hbWU+LiopL3MnLCAkY29udGVudCwgJG1hdGNoKSkgewogICAgICAgICAgICAkbmFtZSA9ICRtYXRjaFsnbmFtZSddOwoKICAgICAgICAgICAgLy8gRmluZCBuZXh0ICcpJyBub3QgZXNjYXBlZC4KICAgICAgICAgICAgJGN1cl9zdGFydF90ZXh0ID0gJHN0YXJ0X3NlYXJjaF9lbmQgPSAwOwogICAgICAgICAgICB3aGlsZSAoZmFsc2UgIT09ICgkY3VyX3N0YXJ0X3BvcyA9IHN0cnBvcygkbmFtZSwgJyknLCAkc3RhcnRfc2VhcmNoX2VuZCkpKSB7CiAgICAgICAgICAgICAgICAkY3VyX2V4dHJhY3QgPSBzdWJzdHIoJG5hbWUsICRjdXJfc3RhcnRfdGV4dCwgJGN1cl9zdGFydF9wb3MgLSAkY3VyX3N0YXJ0X3RleHQpOwogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgnLyg/UDxlc2NhcGU+W1xcXF0qKSQvcycsICRjdXJfZXh0cmFjdCwgJG1hdGNoKTsKICAgICAgICAgICAgICAgIGlmICghKFxzdHJsZW4oJG1hdGNoWydlc2NhcGUnXSkgJSAyKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHN0YXJ0X3NlYXJjaF9lbmQgPSAkY3VyX3N0YXJ0X3BvcyArIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEV4dHJhY3Qgc3RyaW5nLgogICAgICAgICAgICAkbmFtZSA9IHN1YnN0cigkbmFtZSwgMCwgKGludCkgJGN1cl9zdGFydF9wb3MpOwogICAgICAgICAgICAkb2Zmc2V0ICs9IHN0cnBvcygkY29udGVudCwgJygnKSArICRjdXJfc3RhcnRfcG9zICsgMjsgLy8gMiBmb3IgJygnIGFuZCAnKScKICAgICAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgKICAgICAgICAgICAgICAgIFsnXFxcXCcsICdcXCAnLCAnXFwvJywgJ1woJywgJ1wpJywgJ1xuJywgJ1xyJywgJ1x0J10sCiAgICAgICAgICAgICAgICBbJ1xcJywgICAnICcsICAgJy8nLCAgICcoJywgICcpJywgICJcbiIsICJcciIsICJcdCJdLAogICAgICAgICAgICAgICAgJG5hbWUKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIC8vIERlY29kZSBzdHJpbmcuCiAgICAgICAgICAgICRuYW1lID0gRm9udDo6ZGVjb2RlT2N0YWwoJG5hbWUpOwogICAgICAgICAgICAkbmFtZSA9IEZvbnQ6OmRlY29kZUVudGl0aWVzKCRuYW1lKTsKICAgICAgICAgICAgJG5hbWUgPSBGb250OjpkZWNvZGVIZXhhZGVjaW1hbCgkbmFtZSwgZmFsc2UpOwogICAgICAgICAgICAkbmFtZSA9IEZvbnQ6OmRlY29kZVVuaWNvZGUoJG5hbWUpOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRuYW1lKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementStruct.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxIZWFkZXI7CgovKioKICogQ2xhc3MgRWxlbWVudFN0cnVjdAogKi8KY2xhc3MgRWxlbWVudFN0cnVjdCBleHRlbmRzIEVsZW1lbnQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGNvbnRlbnQKICAgICAqIEBwYXJhbSBEb2N1bWVudCAkZG9jdW1lbnQKICAgICAqIEBwYXJhbSBpbnQgICAgICAkb2Zmc2V0CiAgICAgKgogICAgICogQHJldHVybiBmYWxzZXxIZWFkZXIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudCwgRG9jdW1lbnQgJGRvY3VtZW50ID0gbnVsbCwgJiRvZmZzZXQgPSAwKQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxzKjw8KD9QPHN0cnVjdD4uKikvaXMnLCAkY29udGVudCkpIHsKICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy8oLio/KSg8PHw+PikvcycsIHRyaW0oJGNvbnRlbnQpLCAkbWF0Y2hlcyk7CgogICAgICAgICAgICAkbGV2ZWwgPSAwOwogICAgICAgICAgICAkc3ViID0gJyc7CiAgICAgICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzWzBdIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICAgICAkc3ViIC49ICRwYXJ0OwogICAgICAgICAgICAgICAgJGxldmVsICs9IChmYWxzZSAhPT0gc3RycG9zKCRwYXJ0LCAnPDwnKSA/IDEgOiAtMSk7CiAgICAgICAgICAgICAgICBpZiAoJGxldmVsIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG9mZnNldCArPSBzdHJwb3MoJGNvbnRlbnQsICc8PCcpICsgXHN0cmxlbihydHJpbSgkc3ViKSk7CgogICAgICAgICAgICAvLyBSZW1vdmVzICc8PCcgYW5kICc+PicuCiAgICAgICAgICAgICRzdWIgPSB0cmltKChzdHJpbmcpIHByZWdfcmVwbGFjZSgnL15ccyo8PCguKik+PlxzKiQvcycsICdcXDEnLCAkc3ViKSk7CgogICAgICAgICAgICAkcG9zaXRpb24gPSAwOwogICAgICAgICAgICAkZWxlbWVudHMgPSBFbGVtZW50OjpwYXJzZSgkc3ViLCAkZG9jdW1lbnQsICRwb3NpdGlvbik7CgogICAgICAgICAgICByZXR1cm4gbmV3IEhlYWRlcigkZWxlbWVudHMsICRkb2N1bWVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Element/ElementXRef.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXERvY3VtZW50Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50OwoKLyoqCiAqIENsYXNzIEVsZW1lbnRYUmVmCiAqLwpjbGFzcyBFbGVtZW50WFJlZiBleHRlbmRzIEVsZW1lbnQKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q29udGVudCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPYmplY3QoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZG9jdW1lbnQtPmdldE9iamVjdEJ5SWQoJHRoaXMtPmdldElkKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMoJHZhbHVlKQogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEluIGNhc2UgJHZhbHVlIGlzIGEgbnVtYmVyIGFuZCAkdGhpcy0+dmFsdWUgaXMgYSBzdHJpbmcgbGlrZSA1XzAKICAgICAgICAgKgogICAgICAgICAqIFdpdGhvdXQgdGhpcyBpZi1jbGF1c2UgY29kZSBsaWtlOgogICAgICAgICAqCiAgICAgICAgICogICAgICAkZWxlbWVudCA9IG5ldyBFbGVtZW50WFJlZignNV8wJyk7CiAgICAgICAgICogICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkZWxlbWVudC0+ZXF1YWxzKDUpKTsKICAgICAgICAgKgogICAgICAgICAqIHdvdWxkIGZhaWwgKD0gNV8wIGFuZCA1IGFyZSBub3QgZXF1YWwgaW4gUEhQIDguMCspLgogICAgICAgICAqLwogICAgICAgIGlmICgKICAgICAgICAgICAgdHJ1ZSA9PT0gaXNfbnVtZXJpYygkdmFsdWUpCiAgICAgICAgICAgICYmIHRydWUgPT09IFxpc19zdHJpbmcoJHRoaXMtPmdldENvbnRlbnQoKSkKICAgICAgICAgICAgJiYgMSA9PT0gcHJlZ19tYXRjaCgnL1swLTldK1xfWzAtOV0rLycsICR0aGlzLT5nZXRDb250ZW50KCksICRtYXRjaGVzKQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gKGZsb2F0KSAoJHRoaXMtPmdldENvbnRlbnQoKSkgPT0gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgJGlkID0gKCR2YWx1ZSBpbnN0YW5jZW9mIHNlbGYpID8gJHZhbHVlLT5nZXRJZCgpIDogJHZhbHVlOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldElkKCkgPT0gJGlkOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAnI09iaiMnLiR0aGlzLT5nZXRJZCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICRjb250ZW50CiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKiBAcGFyYW0gaW50ICAgICAgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxFbGVtZW50WFJlZgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKCRjb250ZW50LCBEb2N1bWVudCAkZG9jdW1lbnQgPSBudWxsLCAmJG9mZnNldCA9IDApCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHMqKD9QPGlkPlswLTldK1xzK1swLTldK1xzK1IpL3MnLCAkY29udGVudCwgJG1hdGNoKSkgewogICAgICAgICAgICAkaWQgPSAkbWF0Y2hbJ2lkJ107CiAgICAgICAgICAgICRvZmZzZXQgKz0gc3RycG9zKCRjb250ZW50LCAkaWQpICsgXHN0cmxlbigkaWQpOwogICAgICAgICAgICAkaWQgPSBzdHJfcmVwbGFjZSgnICcsICdfJywgcnRyaW0oJGlkLCAnIFInKSk7CgogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGlkLCAkZG9jdW1lbnQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnROdW1lcmljOwp1c2UgU21hbG90XFBkZlBhcnNlclxFbmNvZGluZ1xQb3N0U2NyaXB0R2x5cGhzOwoKLyoqCiAqIENsYXNzIEVuY29kaW5nCiAqLwpjbGFzcyBFbmNvZGluZyBleHRlbmRzIFBERk9iamVjdAp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRlbmNvZGluZzsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRkaWZmZXJlbmNlczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRtYXBwaW5nOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0KCkKICAgIHsKICAgICAgICAkdGhpcy0+bWFwcGluZyA9IFtdOwogICAgICAgICR0aGlzLT5kaWZmZXJlbmNlcyA9IFtdOwogICAgICAgICR0aGlzLT5lbmNvZGluZyA9IFtdOwoKICAgICAgICBpZiAoJHRoaXMtPmhhcygnQmFzZUVuY29kaW5nJykpIHsKICAgICAgICAgICAgJGNsYXNzTmFtZSA9ICR0aGlzLT5nZXRFbmNvZGluZ0NsYXNzKCk7CiAgICAgICAgICAgICRjbGFzcyA9IG5ldyAkY2xhc3NOYW1lKCk7CiAgICAgICAgICAgICR0aGlzLT5lbmNvZGluZyA9ICRjbGFzcy0+Z2V0VHJhbnNsYXRpb25zKCk7CgogICAgICAgICAgICAvLyBCdWlsZCB0YWJsZSBpbmNsdWRpbmcgZGlmZmVyZW5jZXMuCiAgICAgICAgICAgICRkaWZmZXJlbmNlcyA9ICR0aGlzLT5nZXQoJ0RpZmZlcmVuY2VzJyktPmdldENvbnRlbnQoKTsKICAgICAgICAgICAgJGNvZGUgPSAwOwoKICAgICAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGRpZmZlcmVuY2VzKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkZGlmZmVyZW5jZXMgYXMgJGRpZmZlcmVuY2UpIHsKICAgICAgICAgICAgICAgIC8qKiBAdmFyIEVsZW1lbnROdW1lcmljICRkaWZmZXJlbmNlICovCiAgICAgICAgICAgICAgICBpZiAoJGRpZmZlcmVuY2UgaW5zdGFuY2VvZiBFbGVtZW50TnVtZXJpYykgewogICAgICAgICAgICAgICAgICAgICRjb2RlID0gJGRpZmZlcmVuY2UtPmdldENvbnRlbnQoKTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBFbGVtZW50TmFtZQogICAgICAgICAgICAgICAgJHRoaXMtPmRpZmZlcmVuY2VzWyRjb2RlXSA9ICRkaWZmZXJlbmNlOwogICAgICAgICAgICAgICAgaWYgKFxpc19vYmplY3QoJGRpZmZlcmVuY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRpZmZlcmVuY2VzWyRjb2RlXSA9ICRkaWZmZXJlbmNlLT5nZXRDb250ZW50KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRm9yIHRoZSBuZXh0IGNoYXIuCiAgICAgICAgICAgICAgICArKyRjb2RlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+bWFwcGluZyA9ICR0aGlzLT5lbmNvZGluZzsKICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRpZmZlcmVuY2VzIGFzICRjb2RlID0+ICRkaWZmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAvKiBAdmFyIHN0cmluZyAkZGlmZmVyZW5jZSAqLwogICAgICAgICAgICAgICAgJHRoaXMtPm1hcHBpbmdbJGNvZGVdID0gJGRpZmZlcmVuY2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZXRhaWxzKCRkZWVwID0gdHJ1ZSkKICAgIHsKICAgICAgICAkZGV0YWlscyA9IFtdOwoKICAgICAgICAkZGV0YWlsc1snQmFzZUVuY29kaW5nJ10gPSAoJHRoaXMtPmhhcygnQmFzZUVuY29kaW5nJykgPyAoc3RyaW5nKSAkdGhpcy0+Z2V0KCdCYXNlRW5jb2RpbmcnKSA6ICdBbnNpJyk7CiAgICAgICAgJGRldGFpbHNbJ0RpZmZlcmVuY2VzJ10gPSAoJHRoaXMtPmhhcygnRGlmZmVyZW5jZXMnKSA/IChzdHJpbmcpICR0aGlzLT5nZXQoJ0RpZmZlcmVuY2VzJykgOiAnJyk7CgogICAgICAgICRkZXRhaWxzICs9IHBhcmVudDo6Z2V0RGV0YWlscygkZGVlcCk7CgogICAgICAgIHJldHVybiAkZGV0YWlsczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0cmFuc2xhdGVDaGFyKCRkZWMpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5tYXBwaW5nWyRkZWNdKSkgewogICAgICAgICAgICAkZGVjID0gJHRoaXMtPm1hcHBpbmdbJGRlY107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUG9zdFNjcmlwdEdseXBoczo6Z2V0Q29kZVBvaW50KCRkZWMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgY2xhc3MsIGlmIGF2YWlsYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIGVuY29kaW5nIGNsYXNzIG5hbWUgaWYgYXZhaWxhYmxlIG9yIGVtcHR5IHN0cmluZyAob25seSBwcmlvciBQSFAgNy40KS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gT24gUEhQIDcuNCsgYW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBlbmNvZGluZyBjbGFzcyBkb2Vzbid0IGV4aXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRFbmNvZGluZ0NsYXNzKCk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIC8vIHByaW9yIHRvIFBIUCA3LjQgdG9TdHJpbmcgaGFzIHRvIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoXFBIUF9WRVJTSU9OLCAnNy40LjAnLCAnPCcpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kaW5nQ2xhc3MoKQogICAgewogICAgICAgIC8vIExvYWQgcmVmZXJlbmNlIHRhYmxlIGNoYXJzZXQuCiAgICAgICAgJGJhc2VFbmNvZGluZyA9IHByZWdfcmVwbGFjZSgnL1teQS1aMC05XS9pcycsICcnLCAkdGhpcy0+Z2V0KCdCYXNlRW5jb2RpbmcnKS0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkY2xhc3NOYW1lID0gJ1xcU21hbG90XFxQZGZQYXJzZXJcXEVuY29kaW5nXFwnLiRiYXNlRW5jb2Rpbmc7CgogICAgICAgIGlmICghY2xhc3NfZXhpc3RzKCRjbGFzc05hbWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ01pc3NpbmcgZW5jb2RpbmcgZGF0YSBmb3I6ICInLiRiYXNlRW5jb2RpbmcuJyIuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNsYXNzTmFtZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding/ISOLatin1Encoding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKLy8gU291cmNlIDogaHR0cDovL2NwYW5zZWFyY2gucGVybC5vcmcvc3JjL0pWL1Bvc3RTY3JpcHQtRm9udC0xLjEwLjAyL2xpYi9Qb3N0U2NyaXB0L0lTT0xhdGluMUVuY29kaW5nLnBtCgpuYW1lc3BhY2UgU21hbG90XFBkZlBhcnNlclxFbmNvZGluZzsKCi8qKgogKiBDbGFzcyBJU09MYXRpbjFFbmNvZGluZwogKi8KY2xhc3MgSVNPTGF0aW4xRW5jb2RpbmcKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFRyYW5zbGF0aW9ucygpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICdzcGFjZSBleGNsYW0gcXVvdGVkYmwgbnVtYmVyc2lnbiBkb2xsYXIgcGVyY2VudCBhbXBlcnNhbmQgcXVvdGVyaWdodCAnLgogICAgICAgICAgJ3BhcmVubGVmdCBwYXJlbnJpZ2h0IGFzdGVyaXNrIHBsdXMgY29tbWEgbWludXMgcGVyaW9kIHNsYXNoIHplcm8gb25lICcuCiAgICAgICAgICAndHdvIHRocmVlIGZvdXIgZml2ZSBzaXggc2V2ZW4gZWlnaHQgbmluZSBjb2xvbiBzZW1pY29sb24gbGVzcyBlcXVhbCAnLgogICAgICAgICAgJ2dyZWF0ZXIgcXVlc3Rpb24gYXQgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggJy4KICAgICAgICAgICdZIFogYnJhY2tldGxlZnQgYmFja3NsYXNoIGJyYWNrZXRyaWdodCBhc2NpaWNpcmN1bSB1bmRlcnNjb3JlICcuCiAgICAgICAgICAncXVvdGVsZWZ0IGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiAnLgogICAgICAgICAgJ2JyYWNlbGVmdCBiYXIgYnJhY2VyaWdodCBhc2NpaXRpbGRlIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgZG90bGVzc2kgZ3JhdmUgYWN1dGUgJy4KICAgICAgICAgICdjaXJjdW1mbGV4IHRpbGRlIG1hY3JvbiBicmV2ZSBkb3RhY2NlbnQgZGllcmVzaXMgLm5vdGRlZiByaW5nICcuCiAgICAgICAgICAnY2VkaWxsYSAubm90ZGVmIGh1bmdhcnVtbGF1dCBvZ29uZWsgY2Fyb24gc3BhY2UgZXhjbGFtZG93biBjZW50ICcuCiAgICAgICAgICAnc3RlcmxpbmcgY3VycmVuY3kgeWVuIGJyb2tlbmJhciBzZWN0aW9uIGRpZXJlc2lzIGNvcHlyaWdodCAnLgogICAgICAgICAgJ29yZGZlbWluaW5lIGd1aWxsZW1vdGxlZnQgbG9naWNhbG5vdCBoeXBoZW4gcmVnaXN0ZXJlZCBtYWNyb24gZGVncmVlICcuCiAgICAgICAgICAncGx1c21pbnVzIHR3b3N1cGVyaW9yIHRocmVlc3VwZXJpb3IgYWN1dGUgbXUgcGFyYWdyYXBoICcuCiAgICAgICAgICAncGVyaW9kY2VudGVyZWQgY2VkaWxsYSBvbmVzdXBlcmlvciBvcmRtYXNjdWxpbmUgZ3VpbGxlbW90cmlnaHQgJy4KICAgICAgICAgICdvbmVxdWFydGVyIG9uZWhhbGYgdGhyZWVxdWFydGVycyBxdWVzdGlvbmRvd24gQWdyYXZlIEFhY3V0ZSAnLgogICAgICAgICAgJ0FjaXJjdW1mbGV4IEF0aWxkZSBBZGllcmVzaXMgQXJpbmcgQUUgQ2NlZGlsbGEgRWdyYXZlIEVhY3V0ZSAnLgogICAgICAgICAgJ0VjaXJjdW1mbGV4IEVkaWVyZXNpcyBJZ3JhdmUgSWFjdXRlIEljaXJjdW1mbGV4IElkaWVyZXNpcyBFdGggTnRpbGRlICcuCiAgICAgICAgICAnT2dyYXZlIE9hY3V0ZSBPY2lyY3VtZmxleCBPdGlsZGUgT2RpZXJlc2lzIG11bHRpcGx5IE9zbGFzaCBVZ3JhdmUgJy4KICAgICAgICAgICdVYWN1dGUgVWNpcmN1bWZsZXggVWRpZXJlc2lzIFlhY3V0ZSBUaG9ybiBnZXJtYW5kYmxzIGFncmF2ZSBhYWN1dGUgJy4KICAgICAgICAgICdhY2lyY3VtZmxleCBhdGlsZGUgYWRpZXJlc2lzIGFyaW5nIGFlIGNjZWRpbGxhIGVncmF2ZSBlYWN1dGUgJy4KICAgICAgICAgICdlY2lyY3VtZmxleCBlZGllcmVzaXMgaWdyYXZlIGlhY3V0ZSBpY2lyY3VtZmxleCBpZGllcmVzaXMgZXRoIG50aWxkZSAnLgogICAgICAgICAgJ29ncmF2ZSBvYWN1dGUgb2NpcmN1bWZsZXggb3RpbGRlIG9kaWVyZXNpcyBkaXZpZGUgb3NsYXNoIHVncmF2ZSAnLgogICAgICAgICAgJ3VhY3V0ZSB1Y2lyY3VtZmxleCB1ZGllcmVzaXMgeWFjdXRlIHRob3JuIHlkaWVyZXNpcyc7CgogICAgICAgIHJldHVybiBleHBsb2RlKCcgJywgJGVuY29kaW5nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding/ISOLatin9Encoding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKLy8gU291cmNlIDogaHR0cDovL2NwYW5zZWFyY2gucGVybC5vcmcvc3JjL0pWL1Bvc3RTY3JpcHQtRm9udC0xLjEwLjAyL2xpYi9Qb3N0U2NyaXB0L0lTT0xhdGluOUVuY29kaW5nLnBtCgpuYW1lc3BhY2UgU21hbG90XFBkZlBhcnNlclxFbmNvZGluZzsKCi8qKgogKiBDbGFzcyBJU09MYXRpbjlFbmNvZGluZwogKi8KY2xhc3MgSVNPTGF0aW45RW5jb2RpbmcKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFRyYW5zbGF0aW9ucygpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICdzcGFjZSBleGNsYW0gcXVvdGVkYmwgbnVtYmVyc2lnbiBkb2xsYXIgcGVyY2VudCBhbXBlcnNhbmQgcXVvdGVyaWdodCAnLgogICAgICAgICAgJ3BhcmVubGVmdCBwYXJlbnJpZ2h0IGFzdGVyaXNrIHBsdXMgY29tbWEgbWludXMgcGVyaW9kIHNsYXNoIHplcm8gb25lICcuCiAgICAgICAgICAndHdvIHRocmVlIGZvdXIgZml2ZSBzaXggc2V2ZW4gZWlnaHQgbmluZSBjb2xvbiBzZW1pY29sb24gbGVzcyBlcXVhbCAnLgogICAgICAgICAgJ2dyZWF0ZXIgcXVlc3Rpb24gYXQgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggJy4KICAgICAgICAgICdZIFogYnJhY2tldGxlZnQgYmFja3NsYXNoIGJyYWNrZXRyaWdodCBhc2NpaWNpcmN1bSB1bmRlcnNjb3JlICcuCiAgICAgICAgICAncXVvdGVsZWZ0IGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiAnLgogICAgICAgICAgJ2JyYWNlbGVmdCBiYXIgYnJhY2VyaWdodCBhc2NpaXRpbGRlIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgZG90bGVzc2kgZ3JhdmUgYWN1dGUgJy4KICAgICAgICAgICdjaXJjdW1mbGV4IHRpbGRlIG1hY3JvbiBicmV2ZSBkb3RhY2NlbnQgZGllcmVzaXMgLm5vdGRlZiByaW5nICcuCiAgICAgICAgICAnY2VkaWxsYSAubm90ZGVmIGh1bmdhcnVtbGF1dCBvZ29uZWsgY2Fyb24gc3BhY2UgZXhjbGFtZG93biBjZW50ICcuCiAgICAgICAgICAnc3RlcmxpbmcgRXVybyB5ZW4gU2Nhcm9uIHNlY3Rpb24gc2Nhcm9uIGNvcHlyaWdodCAnLgogICAgICAgICAgJ29yZGZlbWluaW5lIGd1aWxsZW1vdGxlZnQgbG9naWNhbG5vdCBoeXBoZW4gcmVnaXN0ZXJlZCBtYWNyb24gZGVncmVlICcuCiAgICAgICAgICAncGx1c21pbnVzIHR3b3N1cGVyaW9yIHRocmVlc3VwZXJpb3IgWmNhcm9uIG11IHBhcmFncmFwaCAnLgogICAgICAgICAgJ3BlcmlvZGNlbnRlcmVkIHpjYXJvbiBvbmVzdXBlcmlvciBvcmRtYXNjdWxpbmUgZ3VpbGxlbW90cmlnaHQgJy4KICAgICAgICAgICdPRSBvZSBZZGllcmVzaXMgcXVlc3Rpb25kb3duIEFncmF2ZSBBYWN1dGUgJy4KICAgICAgICAgICdBY2lyY3VtZmxleCBBdGlsZGUgQWRpZXJlc2lzIEFyaW5nIEFFIENjZWRpbGxhIEVncmF2ZSBFYWN1dGUgJy4KICAgICAgICAgICdFY2lyY3VtZmxleCBFZGllcmVzaXMgSWdyYXZlIElhY3V0ZSBJY2lyY3VtZmxleCBJZGllcmVzaXMgRXRoIE50aWxkZSAnLgogICAgICAgICAgJ09ncmF2ZSBPYWN1dGUgT2NpcmN1bWZsZXggT3RpbGRlIE9kaWVyZXNpcyBtdWx0aXBseSBPc2xhc2ggVWdyYXZlICcuCiAgICAgICAgICAnVWFjdXRlIFVjaXJjdW1mbGV4IFVkaWVyZXNpcyBZYWN1dGUgVGhvcm4gZ2VybWFuZGJscyBhZ3JhdmUgYWFjdXRlICcuCiAgICAgICAgICAnYWNpcmN1bWZsZXggYXRpbGRlIGFkaWVyZXNpcyBhcmluZyBhZSBjY2VkaWxsYSBlZ3JhdmUgZWFjdXRlICcuCiAgICAgICAgICAnZWNpcmN1bWZsZXggZWRpZXJlc2lzIGlncmF2ZSBpYWN1dGUgaWNpcmN1bWZsZXggaWRpZXJlc2lzIGV0aCBudGlsZGUgJy4KICAgICAgICAgICdvZ3JhdmUgb2FjdXRlIG9jaXJjdW1mbGV4IG90aWxkZSBvZGllcmVzaXMgZGl2aWRlIG9zbGFzaCB1Z3JhdmUgJy4KICAgICAgICAgICd1YWN1dGUgdWNpcmN1bWZsZXggdWRpZXJlc2lzIHlhY3V0ZSB0aG9ybiB5ZGllcmVzaXMnOwoKICAgICAgICByZXR1cm4gZXhwbG9kZSgnICcsICRlbmNvZGluZyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding/MacRomanEncoding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKLy8gU291cmNlIDogaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvdmltL3ZpbS0zNC92aW0vcnVudGltZS9wcmludC9tYWMtcm9tYW4ucHMKCm5hbWVzcGFjZSBTbWFsb3RcUGRmUGFyc2VyXEVuY29kaW5nOwoKLyoqCiAqIENsYXNzIE1hY1JvbWFuRW5jb2RpbmcKICovCmNsYXNzIE1hY1JvbWFuRW5jb2RpbmcKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFRyYW5zbGF0aW9ucygpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICdzcGFjZSBleGNsYW0gcXVvdGVkYmwgbnVtYmVyc2lnbiBkb2xsYXIgcGVyY2VudCBhbXBlcnNhbmQgcXVvdGVzaW5nbGUgJy4KICAgICAgICAgICdwYXJlbmxlZnQgcGFyZW5yaWdodCBhc3RlcmlzayBwbHVzIGNvbW1hIG1pbnVzIHBlcmlvZCBzbGFzaCAnLgogICAgICAgICAgJ3plcm8gb25lIHR3byB0aHJlZSBmb3VyIGZpdmUgc2l4IHNldmVuICcuCiAgICAgICAgICAnZWlnaHQgbmluZSBjb2xvbiBzZW1pY29sb24gbGVzcyBlcXVhbCBncmVhdGVyIHF1ZXN0aW9uICcuCiAgICAgICAgICAnYXQgQSBCIEMgRCBFIEYgRyAnLgogICAgICAgICAgJ0ggSSBKIEsgTCBNIE4gTyAnLgogICAgICAgICAgJ1AgUSBSIFMgVCBVIFYgVyAnLgogICAgICAgICAgJ1ggWSBaIGJyYWNrZXRsZWZ0IGJhY2tzbGFzaCBicmFja2V0cmlnaHQgYXNjaWljaXJjdW0gdW5kZXJzY29yZSAnLgogICAgICAgICAgJ2dyYXZlIGEgYiBjIGQgZSBmIGcgJy4KICAgICAgICAgICdoIGkgaiBrIGwgbSBuIG8gJy4KICAgICAgICAgICdwIHEgciBzIHQgdSB2IHcgJy4KICAgICAgICAgICd4IHkgeiBicmFjZWxlZnQgYmFyIGJyYWNlcmlnaHQgYXNjaWl0aWxkZSAubm90ZGVmICcuCiAgICAgICAgICAnQWRpZXJlc2lzIEFyaW5nIENjZWRpbGxhIEVhY3V0ZSBOdGlsZGUgT2RpZXJlc2lzIFVkaWVyZXNpcyBhYWN1dGUgJy4KICAgICAgICAgICdhZ3JhdmUgYWNpcmN1bWZsZXggYWRpZXJlc2lzIGF0aWxkZSBhcmluZyBjY2VkaWxsYSBlYWN1dGUgZWdyYXZlICcuCiAgICAgICAgICAnZWNpcmN1bWZsZXggZWRpZXJlc2lzIGlhY3V0ZSBpZ3JhdmUgaWNpcmN1bWZsZXggaWRpZXJlc2lzIG50aWxkZSBvYWN1dGUgJy4KICAgICAgICAgICdvZ3JhdmUgb2NpcmN1bWZsZXggb2RpZXJlc2lzIG90aWxkZSB1YWN1dGUgdWdyYXZlIHVjaXJjdW1mbGV4IHVkaWVyZXNpcyAnLgogICAgICAgICAgJ2RhZ2dlciBkZWdyZWUgY2VudCBzdGVybGluZyBzZWN0aW9uIGJ1bGxldCBwYXJhZ3JhcGggZ2VybWFuZGJscyAnLgogICAgICAgICAgJ3JlZ2lzdGVyZWQgY29weXJpZ2h0IHRyYWRlbWFyayBhY3V0ZSBkaWVyZXNpcyBub3RlcXVhbCBBRSBPc2xhc2ggJy4KICAgICAgICAgICdpbmZpbml0eSBwbHVzbWludXMgbGVzc2VxdWFsIGdyZWF0ZXJlcXVhbCB5ZW4gbXUgcGFydGlhbGRpZmYgc3VtbWF0aW9uICcuCiAgICAgICAgICAnUGkgcGkgaW50ZWdyYWwgb3JkZmVtaW5pbmUgb3JkbWFzY3VsaW5lIE9tZWdhIGFlIG9zbGFzaCAnLgogICAgICAgICAgJ3F1ZXN0aW9uZG93biBleGNsYW1kb3duIGxvZ2ljYWxub3QgcmFkaWNhbCBmbG9yaW4gYXBwcm94ZXF1YWwgZGVsdGEgZ3VpbGxlbW90bGVmdCAnLgogICAgICAgICAgJ2d1aWxsZW1vdHJpZ2h0IGVsbGlwc2lzIHNwYWNlIEFncmF2ZSBBdGlsZGUgT3RpbGRlIE9FIG9lICcuCiAgICAgICAgICAnZW5kYXNoIGVtZGFzaCBxdW90ZWRibGxlZnQgcXVvdGVkYmxyaWdodCBxdW90ZWxlZnQgcXVvdGVyaWdodCBkaXZpZGUgbG96ZW5nZSAnLgogICAgICAgICAgJ3lkaWVyZXNpcyBZZGllcmVzaXMgZnJhY3Rpb24gY3VycmVuY3kgZ3VpbHNpbmdsbGVmdCBndWlsc2luZ2xyaWdodCBmaSBmbCAnLgogICAgICAgICAgJ2RhZ2dlcmRibCBwZXJpb2RjZW50ZXJlZCBxdW90ZXNpbmdsYmFzZSBxdW90ZWRibGJhc2UgcGVydGhvdXNhbmQgQWNpcmN1bWZsZXggRWNpcmN1bWZsZXggQWFjdXRlICcuCiAgICAgICAgICAnRWRpZXJlc2lzIEVncmF2ZSBJYWN1dGUgSWNpcmN1bWZsZXggSWRpZXJlc2lzIElncmF2ZSBPYWN1dGUgT2NpcmN1bWZsZXggJy4KICAgICAgICAgICdoZWFydCBPZ3JhdmUgVWFjdXRlIFVjaXJjdW1mbGV4IFVncmF2ZSBkb3RsZXNzaSBjaXJjdW1mbGV4IHRpbGRlICcuCiAgICAgICAgICAnbWFjcm9uIGJyZXZlIGRvdGFjY2VudCByaW5nIGNlZGlsbGEgaHVuZ2FydW1sYXV0IG9nb25layBjYXJvbic7CgogICAgICAgIHJldHVybiBleHBsb2RlKCcgJywgJGVuY29kaW5nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding/PostScriptGlyphs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZSBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIETEgXZpcyBNb3PEgW5zIDxkYXZpcy5tb3NhbnNAaW50ZWxsaWdlbnRzeXN0ZW1zLmx2PgogKiBAZGF0ZSAgICAyMDE5LTA5LTE3CiAqCiAqIEBsaWNlbnNlIExHUEx2MwogKiBAdXJsICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3NtYWxvdC9wZGZwYXJzZXI+CiAqCiAqICBQZGZQYXJzZXIgaXMgYSBwZGYgbGlicmFyeSB3cml0dGVuIGluIFBIUCwgZXh0cmFjdGlvbiBvcmllbnRlZC4KICogIENvcHlyaWdodCAoQykgMjAxNyAtIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiAgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLgogKiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cucGRmcGFyc2VyLm9yZy9zaXRlcy9kZWZhdWx0L0xJQ0VOU0UudHh0Pi4KICovCgpuYW1lc3BhY2UgU21hbG90XFBkZlBhcnNlclxFbmNvZGluZzsKCi8qKgogKiBDbGFzcyBQb3N0U2NyaXB0R2x5cGhzCiAqLwpjbGFzcyBQb3N0U2NyaXB0R2x5cGhzCnsKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIFRoZSBtYXBwaW5nIHRhYmxlcyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL09wZW5QcmludGluZy9jdXBzLWZpbHRlcnMvYmxvYi9tYXN0ZXIvZm9udGVtYmVkL2FnbGZuMTMuYywKICAgICAqIHBhcnQgb2YgdGhlIE9wZW5QcmludGluZy9jdXBzLWZpbHRlcnMgcGFja2FnZSwgd2hpY2ggaXRzZWxmIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBhbmQgbGlzdHMgdGhpcyBzcGVjaWZpYyBjb2RlIHBhcnQgYXM6CiAgICAgKiBDb3B5cmlnaHQgMjAwOCwyMDEyIFRvYmlhcyBIb2ZmbWFubiB1bmRlciB0aGUgRXhwYXQgbGljZW5zZSAoaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlLWxpc3QuaHRtbCNFeHBhdCkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRHbHlwaHMoKQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdzcGFjZScgPT4gJzB4MDBhMCcsCiAgICAgICAgICAgICdleGNsYW0nID0+ICcweDAwMjEnLAogICAgICAgICAgICAncXVvdGVkYmwnID0+ICcweDAwMjInLAogICAgICAgICAgICAnbnVtYmVyc2lnbicgPT4gJzB4MDAyMycsCiAgICAgICAgICAgICdkb2xsYXInID0+ICcweDAwMjQnLAogICAgICAgICAgICAncGVyY2VudCcgPT4gJzB4MDAyNScsCiAgICAgICAgICAgICdhbXBlcnNhbmQnID0+ICcweDAwMjYnLAogICAgICAgICAgICAncXVvdGVzaW5nbGUnID0+ICcweDAwMjcnLAogICAgICAgICAgICAncGFyZW5sZWZ0JyA9PiAnMHgwMDI4JywKICAgICAgICAgICAgJ3BhcmVucmlnaHQnID0+ICcweDAwMjknLAogICAgICAgICAgICAnYXN0ZXJpc2snID0+ICcweDAwMmEnLAogICAgICAgICAgICAncGx1cycgPT4gJzB4MDAyYicsCiAgICAgICAgICAgICdjb21tYScgPT4gJzB4MDAyYycsCiAgICAgICAgICAgICdoeXBoZW4nID0+ICcweDAwMmQnLAogICAgICAgICAgICAncGVyaW9kJyA9PiAnMHgwMDJlJywKICAgICAgICAgICAgJ3NsYXNoJyA9PiAnMHgwMDJmJywKICAgICAgICAgICAgJ3plcm8nID0+ICcweDAwMzAnLAogICAgICAgICAgICAnb25lJyA9PiAnMHgwMDMxJywKICAgICAgICAgICAgJ3R3bycgPT4gJzB4MDAzMicsCiAgICAgICAgICAgICd0aHJlZScgPT4gJzB4MDAzMycsCiAgICAgICAgICAgICdmb3VyJyA9PiAnMHgwMDM0JywKICAgICAgICAgICAgJ2ZpdmUnID0+ICcweDAwMzUnLAogICAgICAgICAgICAnc2l4JyA9PiAnMHgwMDM2JywKICAgICAgICAgICAgJ3NldmVuJyA9PiAnMHgwMDM3JywKICAgICAgICAgICAgJ2VpZ2h0JyA9PiAnMHgwMDM4JywKICAgICAgICAgICAgJ25pbmUnID0+ICcweDAwMzknLAogICAgICAgICAgICAnY29sb24nID0+ICcweDAwM2EnLAogICAgICAgICAgICAnc2VtaWNvbG9uJyA9PiAnMHgwMDNiJywKICAgICAgICAgICAgJ2xlc3MnID0+ICcweDAwM2MnLAogICAgICAgICAgICAnZXF1YWwnID0+ICcweDAwM2QnLAogICAgICAgICAgICAnZ3JlYXRlcicgPT4gJzB4MDAzZScsCiAgICAgICAgICAgICdxdWVzdGlvbicgPT4gJzB4MDAzZicsCiAgICAgICAgICAgICdhdCcgPT4gJzB4MDA0MCcsCiAgICAgICAgICAgICdBJyA9PiAnMHgwMDQxJywKICAgICAgICAgICAgJ0InID0+ICcweDAwNDInLAogICAgICAgICAgICAnQycgPT4gJzB4MDA0MycsCiAgICAgICAgICAgICdEJyA9PiAnMHgwMDQ0JywKICAgICAgICAgICAgJ0UnID0+ICcweDAwNDUnLAogICAgICAgICAgICAnRicgPT4gJzB4MDA0NicsCiAgICAgICAgICAgICdHJyA9PiAnMHgwMDQ3JywKICAgICAgICAgICAgJ0gnID0+ICcweDAwNDgnLAogICAgICAgICAgICAnSScgPT4gJzB4MDA0OScsCiAgICAgICAgICAgICdKJyA9PiAnMHgwMDRhJywKICAgICAgICAgICAgJ0snID0+ICcweDAwNGInLAogICAgICAgICAgICAnTCcgPT4gJzB4MDA0YycsCiAgICAgICAgICAgICdNJyA9PiAnMHgwMDRkJywKICAgICAgICAgICAgJ04nID0+ICcweDAwNGUnLAogICAgICAgICAgICAnTycgPT4gJzB4MDA0ZicsCiAgICAgICAgICAgICdQJyA9PiAnMHgwMDUwJywKICAgICAgICAgICAgJ1EnID0+ICcweDAwNTEnLAogICAgICAgICAgICAnUicgPT4gJzB4MDA1MicsCiAgICAgICAgICAgICdTJyA9PiAnMHgwMDUzJywKICAgICAgICAgICAgJ1QnID0+ICcweDAwNTQnLAogICAgICAgICAgICAnVScgPT4gJzB4MDA1NScsCiAgICAgICAgICAgICdWJyA9PiAnMHgwMDU2JywKICAgICAgICAgICAgJ1cnID0+ICcweDAwNTcnLAogICAgICAgICAgICAnWCcgPT4gJzB4MDA1OCcsCiAgICAgICAgICAgICdZJyA9PiAnMHgwMDU5JywKICAgICAgICAgICAgJ1onID0+ICcweDAwNWEnLAogICAgICAgICAgICAnYnJhY2tldGxlZnQnID0+ICcweDAwNWInLAogICAgICAgICAgICAnYmFja3NsYXNoJyA9PiAnMHgwMDVjJywKICAgICAgICAgICAgJ2JyYWNrZXRyaWdodCcgPT4gJzB4MDA1ZCcsCiAgICAgICAgICAgICdhc2NpaWNpcmN1bScgPT4gJzB4MDA1ZScsCiAgICAgICAgICAgICd1bmRlcnNjb3JlJyA9PiAnMHgwMDVmJywKICAgICAgICAgICAgJ2dyYXZlJyA9PiAnMHgwMDYwJywKICAgICAgICAgICAgJ2EnID0+ICcweDAwNjEnLAogICAgICAgICAgICAnYicgPT4gJzB4MDA2MicsCiAgICAgICAgICAgICdjJyA9PiAnMHgwMDYzJywKICAgICAgICAgICAgJ2QnID0+ICcweDAwNjQnLAogICAgICAgICAgICAnZScgPT4gJzB4MDA2NScsCiAgICAgICAgICAgICdmJyA9PiAnMHgwMDY2JywKICAgICAgICAgICAgJ2cnID0+ICcweDAwNjcnLAogICAgICAgICAgICAnaCcgPT4gJzB4MDA2OCcsCiAgICAgICAgICAgICdpJyA9PiAnMHgwMDY5JywKICAgICAgICAgICAgJ2onID0+ICcweDAwNmEnLAogICAgICAgICAgICAnaycgPT4gJzB4MDA2YicsCiAgICAgICAgICAgICdsJyA9PiAnMHgwMDZjJywKICAgICAgICAgICAgJ20nID0+ICcweDAwNmQnLAogICAgICAgICAgICAnbicgPT4gJzB4MDA2ZScsCiAgICAgICAgICAgICdvJyA9PiAnMHgwMDZmJywKICAgICAgICAgICAgJ3AnID0+ICcweDAwNzAnLAogICAgICAgICAgICAncScgPT4gJzB4MDA3MScsCiAgICAgICAgICAgICdyJyA9PiAnMHgwMDcyJywKICAgICAgICAgICAgJ3MnID0+ICcweDAwNzMnLAogICAgICAgICAgICAndCcgPT4gJzB4MDA3NCcsCiAgICAgICAgICAgICd1JyA9PiAnMHgwMDc1JywKICAgICAgICAgICAgJ3YnID0+ICcweDAwNzYnLAogICAgICAgICAgICAndycgPT4gJzB4MDA3NycsCiAgICAgICAgICAgICd4JyA9PiAnMHgwMDc4JywKICAgICAgICAgICAgJ3knID0+ICcweDAwNzknLAogICAgICAgICAgICAneicgPT4gJzB4MDA3YScsCiAgICAgICAgICAgICdicmFjZWxlZnQnID0+ICcweDAwN2InLAogICAgICAgICAgICAnYmFyJyA9PiAnMHgwMDdjJywKICAgICAgICAgICAgJ2JyYWNlcmlnaHQnID0+ICcweDAwN2QnLAogICAgICAgICAgICAnYXNjaWl0aWxkZScgPT4gJzB4MDA3ZScsCiAgICAgICAgICAgICdleGNsYW1kb3duJyA9PiAnMHgwMGExJywKICAgICAgICAgICAgJ2NlbnQnID0+ICcweDAwYTInLAogICAgICAgICAgICAnc3RlcmxpbmcnID0+ICcweDAwYTMnLAogICAgICAgICAgICAnY3VycmVuY3knID0+ICcweDAwYTQnLAogICAgICAgICAgICAneWVuJyA9PiAnMHgwMGE1JywKICAgICAgICAgICAgJ2Jyb2tlbmJhcicgPT4gJzB4MDBhNicsCiAgICAgICAgICAgICdzZWN0aW9uJyA9PiAnMHgwMGE3JywKICAgICAgICAgICAgJ2RpZXJlc2lzJyA9PiAnMHgwMGE4JywKICAgICAgICAgICAgJ2NvcHlyaWdodCcgPT4gJzB4MDBhOScsCiAgICAgICAgICAgICdvcmRmZW1pbmluZScgPT4gJzB4MDBhYScsCiAgICAgICAgICAgICdndWlsbGVtb3RsZWZ0JyA9PiAnMHgwMGFiJywKICAgICAgICAgICAgJ2xvZ2ljYWxub3QnID0+ICcweDAwYWMnLAogICAgICAgICAgICAnbWludXMnID0+ICcweDIyMTInLAogICAgICAgICAgICAncmVnaXN0ZXJlZCcgPT4gJzB4MDBhZScsCiAgICAgICAgICAgICdtYWNyb24nID0+ICcweDAyYzknLAogICAgICAgICAgICAnZGVncmVlJyA9PiAnMHgwMGIwJywKICAgICAgICAgICAgJ3BsdXNtaW51cycgPT4gJzB4MDBiMScsCiAgICAgICAgICAgICd0d29zdXBlcmlvcicgPT4gJzB4MDBiMicsCiAgICAgICAgICAgICd0aHJlZXN1cGVyaW9yJyA9PiAnMHgwMGIzJywKICAgICAgICAgICAgJ2FjdXRlJyA9PiAnMHgwMGI0JywKICAgICAgICAgICAgJ211JyA9PiAnMHgwM2JjJywKICAgICAgICAgICAgJ3BhcmFncmFwaCcgPT4gJzB4MDBiNicsCiAgICAgICAgICAgICdwZXJpb2RjZW50ZXJlZCcgPT4gJzB4MjIxOScsCiAgICAgICAgICAgICdjZWRpbGxhJyA9PiAnMHgwMGI4JywKICAgICAgICAgICAgJ29uZXN1cGVyaW9yJyA9PiAnMHgwMGI5JywKICAgICAgICAgICAgJ29yZG1hc2N1bGluZScgPT4gJzB4MDBiYScsCiAgICAgICAgICAgICdndWlsbGVtb3RyaWdodCcgPT4gJzB4MDBiYicsCiAgICAgICAgICAgICdvbmVxdWFydGVyJyA9PiAnMHgwMGJjJywKICAgICAgICAgICAgJ29uZWhhbGYnID0+ICcweDAwYmQnLAogICAgICAgICAgICAndGhyZWVxdWFydGVycycgPT4gJzB4MDBiZScsCiAgICAgICAgICAgICdxdWVzdGlvbmRvd24nID0+ICcweDAwYmYnLAogICAgICAgICAgICAnQWdyYXZlJyA9PiAnMHgwMGMwJywKICAgICAgICAgICAgJ0FhY3V0ZScgPT4gJzB4MDBjMScsCiAgICAgICAgICAgICdBY2lyY3VtZmxleCcgPT4gJzB4MDBjMicsCiAgICAgICAgICAgICdBdGlsZGUnID0+ICcweDAwYzMnLAogICAgICAgICAgICAnQWRpZXJlc2lzJyA9PiAnMHgwMGM0JywKICAgICAgICAgICAgJ0FyaW5nJyA9PiAnMHgwMGM1JywKICAgICAgICAgICAgJ0FFJyA9PiAnMHgwMGM2JywKICAgICAgICAgICAgJ0NjZWRpbGxhJyA9PiAnMHgwMGM3JywKICAgICAgICAgICAgJ0VncmF2ZScgPT4gJzB4MDBjOCcsCiAgICAgICAgICAgICdFYWN1dGUnID0+ICcweDAwYzknLAogICAgICAgICAgICAnRWNpcmN1bWZsZXgnID0+ICcweDAwY2EnLAogICAgICAgICAgICAnRWRpZXJlc2lzJyA9PiAnMHgwMGNiJywKICAgICAgICAgICAgJ0lncmF2ZScgPT4gJzB4MDBjYycsCiAgICAgICAgICAgICdJYWN1dGUnID0+ICcweDAwY2QnLAogICAgICAgICAgICAnSWNpcmN1bWZsZXgnID0+ICcweDAwY2UnLAogICAgICAgICAgICAnSWRpZXJlc2lzJyA9PiAnMHgwMGNmJywKICAgICAgICAgICAgJ0V0aCcgPT4gJzB4MDBkMCcsCiAgICAgICAgICAgICdOdGlsZGUnID0+ICcweDAwZDEnLAogICAgICAgICAgICAnT2dyYXZlJyA9PiAnMHgwMGQyJywKICAgICAgICAgICAgJ09hY3V0ZScgPT4gJzB4MDBkMycsCiAgICAgICAgICAgICdPY2lyY3VtZmxleCcgPT4gJzB4MDBkNCcsCiAgICAgICAgICAgICdPdGlsZGUnID0+ICcweDAwZDUnLAogICAgICAgICAgICAnT2RpZXJlc2lzJyA9PiAnMHgwMGQ2JywKICAgICAgICAgICAgJ211bHRpcGx5JyA9PiAnMHgwMGQ3JywKICAgICAgICAgICAgJ09zbGFzaCcgPT4gJzB4MDBkOCcsCiAgICAgICAgICAgICdVZ3JhdmUnID0+ICcweDAwZDknLAogICAgICAgICAgICAnVWFjdXRlJyA9PiAnMHgwMGRhJywKICAgICAgICAgICAgJ1VjaXJjdW1mbGV4JyA9PiAnMHgwMGRiJywKICAgICAgICAgICAgJ1VkaWVyZXNpcycgPT4gJzB4MDBkYycsCiAgICAgICAgICAgICdZYWN1dGUnID0+ICcweDAwZGQnLAogICAgICAgICAgICAnVGhvcm4nID0+ICcweDAwZGUnLAogICAgICAgICAgICAnZ2VybWFuZGJscycgPT4gJzB4MDBkZicsCiAgICAgICAgICAgICdhZ3JhdmUnID0+ICcweDAwZTAnLAogICAgICAgICAgICAnYWFjdXRlJyA9PiAnMHgwMGUxJywKICAgICAgICAgICAgJ2FjaXJjdW1mbGV4JyA9PiAnMHgwMGUyJywKICAgICAgICAgICAgJ2F0aWxkZScgPT4gJzB4MDBlMycsCiAgICAgICAgICAgICdhZGllcmVzaXMnID0+ICcweDAwZTQnLAogICAgICAgICAgICAnYXJpbmcnID0+ICcweDAwZTUnLAogICAgICAgICAgICAnYWUnID0+ICcweDAwZTYnLAogICAgICAgICAgICAnY2NlZGlsbGEnID0+ICcweDAwZTcnLAogICAgICAgICAgICAnZWdyYXZlJyA9PiAnMHgwMGU4JywKICAgICAgICAgICAgJ2VhY3V0ZScgPT4gJzB4MDBlOScsCiAgICAgICAgICAgICdlY2lyY3VtZmxleCcgPT4gJzB4MDBlYScsCiAgICAgICAgICAgICdlZGllcmVzaXMnID0+ICcweDAwZWInLAogICAgICAgICAgICAnaWdyYXZlJyA9PiAnMHgwMGVjJywKICAgICAgICAgICAgJ2lhY3V0ZScgPT4gJzB4MDBlZCcsCiAgICAgICAgICAgICdpY2lyY3VtZmxleCcgPT4gJzB4MDBlZScsCiAgICAgICAgICAgICdpZGllcmVzaXMnID0+ICcweDAwZWYnLAogICAgICAgICAgICAnZXRoJyA9PiAnMHgwMGYwJywKICAgICAgICAgICAgJ250aWxkZScgPT4gJzB4MDBmMScsCiAgICAgICAgICAgICdvZ3JhdmUnID0+ICcweDAwZjInLAogICAgICAgICAgICAnb2FjdXRlJyA9PiAnMHgwMGYzJywKICAgICAgICAgICAgJ29jaXJjdW1mbGV4JyA9PiAnMHgwMGY0JywKICAgICAgICAgICAgJ290aWxkZScgPT4gJzB4MDBmNScsCiAgICAgICAgICAgICdvZGllcmVzaXMnID0+ICcweDAwZjYnLAogICAgICAgICAgICAnZGl2aWRlJyA9PiAnMHgwMGY3JywKICAgICAgICAgICAgJ29zbGFzaCcgPT4gJzB4MDBmOCcsCiAgICAgICAgICAgICd1Z3JhdmUnID0+ICcweDAwZjknLAogICAgICAgICAgICAndWFjdXRlJyA9PiAnMHgwMGZhJywKICAgICAgICAgICAgJ3VjaXJjdW1mbGV4JyA9PiAnMHgwMGZiJywKICAgICAgICAgICAgJ3VkaWVyZXNpcycgPT4gJzB4MDBmYycsCiAgICAgICAgICAgICd5YWN1dGUnID0+ICcweDAwZmQnLAogICAgICAgICAgICAndGhvcm4nID0+ICcweDAwZmUnLAogICAgICAgICAgICAneWRpZXJlc2lzJyA9PiAnMHgwMGZmJywKICAgICAgICAgICAgJ0FtYWNyb24nID0+ICcweDAxMDAnLAogICAgICAgICAgICAnYW1hY3JvbicgPT4gJzB4MDEwMScsCiAgICAgICAgICAgICdBYnJldmUnID0+ICcweDAxMDInLAogICAgICAgICAgICAnYWJyZXZlJyA9PiAnMHgwMTAzJywKICAgICAgICAgICAgJ0FvZ29uZWsnID0+ICcweDAxMDQnLAogICAgICAgICAgICAnYW9nb25laycgPT4gJzB4MDEwNScsCiAgICAgICAgICAgICdDYWN1dGUnID0+ICcweDAxMDYnLAogICAgICAgICAgICAnY2FjdXRlJyA9PiAnMHgwMTA3JywKICAgICAgICAgICAgJ0NjaXJjdW1mbGV4JyA9PiAnMHgwMTA4JywKICAgICAgICAgICAgJ2NjaXJjdW1mbGV4JyA9PiAnMHgwMTA5JywKICAgICAgICAgICAgJ0Nkb3RhY2NlbnQnID0+ICcweDAxMGEnLAogICAgICAgICAgICAnY2RvdGFjY2VudCcgPT4gJzB4MDEwYicsCiAgICAgICAgICAgICdDY2Fyb24nID0+ICcweDAxMGMnLAogICAgICAgICAgICAnY2Nhcm9uJyA9PiAnMHgwMTBkJywKICAgICAgICAgICAgJ0RjYXJvbicgPT4gJzB4MDEwZScsCiAgICAgICAgICAgICdkY2Fyb24nID0+ICcweDAxMGYnLAogICAgICAgICAgICAnRGNyb2F0JyA9PiAnMHgwMTEwJywKICAgICAgICAgICAgJ2Rjcm9hdCcgPT4gJzB4MDExMScsCiAgICAgICAgICAgICdFbWFjcm9uJyA9PiAnMHgwMTEyJywKICAgICAgICAgICAgJ2VtYWNyb24nID0+ICcweDAxMTMnLAogICAgICAgICAgICAnRWJyZXZlJyA9PiAnMHgwMTE0JywKICAgICAgICAgICAgJ2VicmV2ZScgPT4gJzB4MDExNScsCiAgICAgICAgICAgICdFZG90YWNjZW50JyA9PiAnMHgwMTE2JywKICAgICAgICAgICAgJ2Vkb3RhY2NlbnQnID0+ICcweDAxMTcnLAogICAgICAgICAgICAnRW9nb25laycgPT4gJzB4MDExOCcsCiAgICAgICAgICAgICdlb2dvbmVrJyA9PiAnMHgwMTE5JywKICAgICAgICAgICAgJ0VjYXJvbicgPT4gJzB4MDExYScsCiAgICAgICAgICAgICdlY2Fyb24nID0+ICcweDAxMWInLAogICAgICAgICAgICAnR2NpcmN1bWZsZXgnID0+ICcweDAxMWMnLAogICAgICAgICAgICAnZ2NpcmN1bWZsZXgnID0+ICcweDAxMWQnLAogICAgICAgICAgICAnR2JyZXZlJyA9PiAnMHgwMTFlJywKICAgICAgICAgICAgJ2dicmV2ZScgPT4gJzB4MDExZicsCiAgICAgICAgICAgICdHZG90YWNjZW50JyA9PiAnMHgwMTIwJywKICAgICAgICAgICAgJ2dkb3RhY2NlbnQnID0+ICcweDAxMjEnLAogICAgICAgICAgICAnR2NvbW1hYWNjZW50JyA9PiAnMHgwMTIyJywKICAgICAgICAgICAgJ2djb21tYWFjY2VudCcgPT4gJzB4MDEyMycsCiAgICAgICAgICAgICdIY2lyY3VtZmxleCcgPT4gJzB4MDEyNCcsCiAgICAgICAgICAgICdoY2lyY3VtZmxleCcgPT4gJzB4MDEyNScsCiAgICAgICAgICAgICdIYmFyJyA9PiAnMHgwMTI2JywKICAgICAgICAgICAgJ2hiYXInID0+ICcweDAxMjcnLAogICAgICAgICAgICAnSXRpbGRlJyA9PiAnMHgwMTI4JywKICAgICAgICAgICAgJ2l0aWxkZScgPT4gJzB4MDEyOScsCiAgICAgICAgICAgICdJbWFjcm9uJyA9PiAnMHgwMTJhJywKICAgICAgICAgICAgJ2ltYWNyb24nID0+ICcweDAxMmInLAogICAgICAgICAgICAnSWJyZXZlJyA9PiAnMHgwMTJjJywKICAgICAgICAgICAgJ2licmV2ZScgPT4gJzB4MDEyZCcsCiAgICAgICAgICAgICdJb2dvbmVrJyA9PiAnMHgwMTJlJywKICAgICAgICAgICAgJ2lvZ29uZWsnID0+ICcweDAxMmYnLAogICAgICAgICAgICAnSWRvdGFjY2VudCcgPT4gJzB4MDEzMCcsCiAgICAgICAgICAgICdkb3RsZXNzaScgPT4gJzB4MDEzMScsCiAgICAgICAgICAgICdJSicgPT4gJzB4MDEzMicsCiAgICAgICAgICAgICdpaicgPT4gJzB4MDEzMycsCiAgICAgICAgICAgICdKY2lyY3VtZmxleCcgPT4gJzB4MDEzNCcsCiAgICAgICAgICAgICdqY2lyY3VtZmxleCcgPT4gJzB4MDEzNScsCiAgICAgICAgICAgICdLY29tbWFhY2NlbnQnID0+ICcweDAxMzYnLAogICAgICAgICAgICAna2NvbW1hYWNjZW50JyA9PiAnMHgwMTM3JywKICAgICAgICAgICAgJ2tncmVlbmxhbmRpYycgPT4gJzB4MDEzOCcsCiAgICAgICAgICAgICdMYWN1dGUnID0+ICcweDAxMzknLAogICAgICAgICAgICAnbGFjdXRlJyA9PiAnMHgwMTNhJywKICAgICAgICAgICAgJ0xjb21tYWFjY2VudCcgPT4gJzB4MDEzYicsCiAgICAgICAgICAgICdsY29tbWFhY2NlbnQnID0+ICcweDAxM2MnLAogICAgICAgICAgICAnTGNhcm9uJyA9PiAnMHgwMTNkJywKICAgICAgICAgICAgJ2xjYXJvbicgPT4gJzB4MDEzZScsCiAgICAgICAgICAgICdMZG90JyA9PiAnMHgwMTNmJywKICAgICAgICAgICAgJ2xkb3QnID0+ICcweDAxNDAnLAogICAgICAgICAgICAnTHNsYXNoJyA9PiAnMHgwMTQxJywKICAgICAgICAgICAgJ2xzbGFzaCcgPT4gJzB4MDE0MicsCiAgICAgICAgICAgICdOYWN1dGUnID0+ICcweDAxNDMnLAogICAgICAgICAgICAnbmFjdXRlJyA9PiAnMHgwMTQ0JywKICAgICAgICAgICAgJ05jb21tYWFjY2VudCcgPT4gJzB4MDE0NScsCiAgICAgICAgICAgICduY29tbWFhY2NlbnQnID0+ICcweDAxNDYnLAogICAgICAgICAgICAnTmNhcm9uJyA9PiAnMHgwMTQ3JywKICAgICAgICAgICAgJ25jYXJvbicgPT4gJzB4MDE0OCcsCiAgICAgICAgICAgICduYXBvc3Ryb3BoZScgPT4gJzB4MDE0OScsCiAgICAgICAgICAgICdFbmcnID0+ICcweDAxNGEnLAogICAgICAgICAgICAnZW5nJyA9PiAnMHgwMTRiJywKICAgICAgICAgICAgJ09tYWNyb24nID0+ICcweDAxNGMnLAogICAgICAgICAgICAnb21hY3JvbicgPT4gJzB4MDE0ZCcsCiAgICAgICAgICAgICdPYnJldmUnID0+ICcweDAxNGUnLAogICAgICAgICAgICAnb2JyZXZlJyA9PiAnMHgwMTRmJywKICAgICAgICAgICAgJ09odW5nYXJ1bWxhdXQnID0+ICcweDAxNTAnLAogICAgICAgICAgICAnb2h1bmdhcnVtbGF1dCcgPT4gJzB4MDE1MScsCiAgICAgICAgICAgICdPRScgPT4gJzB4MDE1MicsCiAgICAgICAgICAgICdvZScgPT4gJzB4MDE1MycsCiAgICAgICAgICAgICdSYWN1dGUnID0+ICcweDAxNTQnLAogICAgICAgICAgICAncmFjdXRlJyA9PiAnMHgwMTU1JywKICAgICAgICAgICAgJ1Jjb21tYWFjY2VudCcgPT4gJzB4MDE1NicsCiAgICAgICAgICAgICdyY29tbWFhY2NlbnQnID0+ICcweDAxNTcnLAogICAgICAgICAgICAnUmNhcm9uJyA9PiAnMHgwMTU4JywKICAgICAgICAgICAgJ3JjYXJvbicgPT4gJzB4MDE1OScsCiAgICAgICAgICAgICdTYWN1dGUnID0+ICcweDAxNWEnLAogICAgICAgICAgICAnc2FjdXRlJyA9PiAnMHgwMTViJywKICAgICAgICAgICAgJ1NjaXJjdW1mbGV4JyA9PiAnMHgwMTVjJywKICAgICAgICAgICAgJ3NjaXJjdW1mbGV4JyA9PiAnMHgwMTVkJywKICAgICAgICAgICAgJ1NjZWRpbGxhJyA9PiAnMHhmNmMxJywKICAgICAgICAgICAgJ3NjZWRpbGxhJyA9PiAnMHhmNmMyJywKICAgICAgICAgICAgJ1NjYXJvbicgPT4gJzB4MDE2MCcsCiAgICAgICAgICAgICdzY2Fyb24nID0+ICcweDAxNjEnLAogICAgICAgICAgICAnVGNvbW1hYWNjZW50JyA9PiAnMHgwMjFhJywKICAgICAgICAgICAgJ3Rjb21tYWFjY2VudCcgPT4gJzB4MDIxYicsCiAgICAgICAgICAgICdUY2Fyb24nID0+ICcweDAxNjQnLAogICAgICAgICAgICAndGNhcm9uJyA9PiAnMHgwMTY1JywKICAgICAgICAgICAgJ1RiYXInID0+ICcweDAxNjYnLAogICAgICAgICAgICAndGJhcicgPT4gJzB4MDE2NycsCiAgICAgICAgICAgICdVdGlsZGUnID0+ICcweDAxNjgnLAogICAgICAgICAgICAndXRpbGRlJyA9PiAnMHgwMTY5JywKICAgICAgICAgICAgJ1VtYWNyb24nID0+ICcweDAxNmEnLAogICAgICAgICAgICAndW1hY3JvbicgPT4gJzB4MDE2YicsCiAgICAgICAgICAgICdVYnJldmUnID0+ICcweDAxNmMnLAogICAgICAgICAgICAndWJyZXZlJyA9PiAnMHgwMTZkJywKICAgICAgICAgICAgJ1VyaW5nJyA9PiAnMHgwMTZlJywKICAgICAgICAgICAgJ3VyaW5nJyA9PiAnMHgwMTZmJywKICAgICAgICAgICAgJ1VodW5nYXJ1bWxhdXQnID0+ICcweDAxNzAnLAogICAgICAgICAgICAndWh1bmdhcnVtbGF1dCcgPT4gJzB4MDE3MScsCiAgICAgICAgICAgICdVb2dvbmVrJyA9PiAnMHgwMTcyJywKICAgICAgICAgICAgJ3VvZ29uZWsnID0+ICcweDAxNzMnLAogICAgICAgICAgICAnV2NpcmN1bWZsZXgnID0+ICcweDAxNzQnLAogICAgICAgICAgICAnd2NpcmN1bWZsZXgnID0+ICcweDAxNzUnLAogICAgICAgICAgICAnWWNpcmN1bWZsZXgnID0+ICcweDAxNzYnLAogICAgICAgICAgICAneWNpcmN1bWZsZXgnID0+ICcweDAxNzcnLAogICAgICAgICAgICAnWWRpZXJlc2lzJyA9PiAnMHgwMTc4JywKICAgICAgICAgICAgJ1phY3V0ZScgPT4gJzB4MDE3OScsCiAgICAgICAgICAgICd6YWN1dGUnID0+ICcweDAxN2EnLAogICAgICAgICAgICAnWmRvdGFjY2VudCcgPT4gJzB4MDE3YicsCiAgICAgICAgICAgICd6ZG90YWNjZW50JyA9PiAnMHgwMTdjJywKICAgICAgICAgICAgJ1pjYXJvbicgPT4gJzB4MDE3ZCcsCiAgICAgICAgICAgICd6Y2Fyb24nID0+ICcweDAxN2UnLAogICAgICAgICAgICAnbG9uZ3MnID0+ICcweDAxN2YnLAogICAgICAgICAgICAnZmxvcmluJyA9PiAnMHgwMTkyJywKICAgICAgICAgICAgJ09ob3JuJyA9PiAnMHgwMWEwJywKICAgICAgICAgICAgJ29ob3JuJyA9PiAnMHgwMWExJywKICAgICAgICAgICAgJ1Vob3JuJyA9PiAnMHgwMWFmJywKICAgICAgICAgICAgJ3Vob3JuJyA9PiAnMHgwMWIwJywKICAgICAgICAgICAgJ0djYXJvbicgPT4gJzB4MDFlNicsCiAgICAgICAgICAgICdnY2Fyb24nID0+ICcweDAxZTcnLAogICAgICAgICAgICAnQXJpbmdhY3V0ZScgPT4gJzB4MDFmYScsCiAgICAgICAgICAgICdhcmluZ2FjdXRlJyA9PiAnMHgwMWZiJywKICAgICAgICAgICAgJ0FFYWN1dGUnID0+ICcweDAxZmMnLAogICAgICAgICAgICAnYWVhY3V0ZScgPT4gJzB4MDFmZCcsCiAgICAgICAgICAgICdPc2xhc2hhY3V0ZScgPT4gJzB4MDFmZScsCiAgICAgICAgICAgICdvc2xhc2hhY3V0ZScgPT4gJzB4MDFmZicsCiAgICAgICAgICAgICdTY29tbWFhY2NlbnQnID0+ICcweDAyMTgnLAogICAgICAgICAgICAnc2NvbW1hYWNjZW50JyA9PiAnMHgwMjE5JywKICAgICAgICAgICAgJ2FmaWk1NzkyOScgPT4gJzB4MDJiYycsCiAgICAgICAgICAgICdhZmlpNjQ5MzcnID0+ICcweDAyYmQnLAogICAgICAgICAgICAnY2lyY3VtZmxleCcgPT4gJzB4MDJjNicsCiAgICAgICAgICAgICdjYXJvbicgPT4gJzB4MDJjNycsCiAgICAgICAgICAgICdicmV2ZScgPT4gJzB4MDJkOCcsCiAgICAgICAgICAgICdkb3RhY2NlbnQnID0+ICcweDAyZDknLAogICAgICAgICAgICAncmluZycgPT4gJzB4MDJkYScsCiAgICAgICAgICAgICdvZ29uZWsnID0+ICcweDAyZGInLAogICAgICAgICAgICAndGlsZGUnID0+ICcweDAyZGMnLAogICAgICAgICAgICAnaHVuZ2FydW1sYXV0JyA9PiAnMHgwMmRkJywKICAgICAgICAgICAgJ2dyYXZlY29tYicgPT4gJzB4MDMwMCcsCiAgICAgICAgICAgICdhY3V0ZWNvbWInID0+ICcweDAzMDEnLAogICAgICAgICAgICAndGlsZGVjb21iJyA9PiAnMHgwMzAzJywKICAgICAgICAgICAgJ2hvb2thYm92ZWNvbWInID0+ICcweDAzMDknLAogICAgICAgICAgICAnZG90YmVsb3djb21iJyA9PiAnMHgwMzIzJywKICAgICAgICAgICAgJ3Rvbm9zJyA9PiAnMHgwMzg0JywKICAgICAgICAgICAgJ2RpZXJlc2lzdG9ub3MnID0+ICcweDAzODUnLAogICAgICAgICAgICAnQWxwaGF0b25vcycgPT4gJzB4MDM4NicsCiAgICAgICAgICAgICdhbm90ZWxlaWEnID0+ICcweDAzODcnLAogICAgICAgICAgICAnRXBzaWxvbnRvbm9zJyA9PiAnMHgwMzg4JywKICAgICAgICAgICAgJ0V0YXRvbm9zJyA9PiAnMHgwMzg5JywKICAgICAgICAgICAgJ0lvdGF0b25vcycgPT4gJzB4MDM4YScsCiAgICAgICAgICAgICdPbWljcm9udG9ub3MnID0+ICcweDAzOGMnLAogICAgICAgICAgICAnVXBzaWxvbnRvbm9zJyA9PiAnMHgwMzhlJywKICAgICAgICAgICAgJ09tZWdhdG9ub3MnID0+ICcweDAzOGYnLAogICAgICAgICAgICAnaW90YWRpZXJlc2lzdG9ub3MnID0+ICcweDAzOTAnLAogICAgICAgICAgICAnQWxwaGEnID0+ICcweDAzOTEnLAogICAgICAgICAgICAnQmV0YScgPT4gJzB4MDM5MicsCiAgICAgICAgICAgICdHYW1tYScgPT4gJzB4MDM5MycsCiAgICAgICAgICAgICdEZWx0YScgPT4gJzB4MjIwNicsCiAgICAgICAgICAgICdFcHNpbG9uJyA9PiAnMHgwMzk1JywKICAgICAgICAgICAgJ1pldGEnID0+ICcweDAzOTYnLAogICAgICAgICAgICAnRXRhJyA9PiAnMHgwMzk3JywKICAgICAgICAgICAgJ1RoZXRhJyA9PiAnMHgwMzk4JywKICAgICAgICAgICAgJ0lvdGEnID0+ICcweDAzOTknLAogICAgICAgICAgICAnS2FwcGEnID0+ICcweDAzOWEnLAogICAgICAgICAgICAnTGFtYmRhJyA9PiAnMHgwMzliJywKICAgICAgICAgICAgJ011JyA9PiAnMHgwMzljJywKICAgICAgICAgICAgJ051JyA9PiAnMHgwMzlkJywKICAgICAgICAgICAgJ1hpJyA9PiAnMHgwMzllJywKICAgICAgICAgICAgJ09taWNyb24nID0+ICcweDAzOWYnLAogICAgICAgICAgICAnUGknID0+ICcweDAzYTAnLAogICAgICAgICAgICAnUmhvJyA9PiAnMHgwM2ExJywKICAgICAgICAgICAgJ1NpZ21hJyA9PiAnMHgwM2EzJywKICAgICAgICAgICAgJ1RhdScgPT4gJzB4MDNhNCcsCiAgICAgICAgICAgICdVcHNpbG9uJyA9PiAnMHgwM2E1JywKICAgICAgICAgICAgJ1BoaScgPT4gJzB4MDNhNicsCiAgICAgICAgICAgICdDaGknID0+ICcweDAzYTcnLAogICAgICAgICAgICAnUHNpJyA9PiAnMHgwM2E4JywKICAgICAgICAgICAgJ09tZWdhJyA9PiAnMHgyMTI2JywKICAgICAgICAgICAgJ0lvdGFkaWVyZXNpcycgPT4gJzB4MDNhYScsCiAgICAgICAgICAgICdVcHNpbG9uZGllcmVzaXMnID0+ICcweDAzYWInLAogICAgICAgICAgICAnYWxwaGF0b25vcycgPT4gJzB4MDNhYycsCiAgICAgICAgICAgICdlcHNpbG9udG9ub3MnID0+ICcweDAzYWQnLAogICAgICAgICAgICAnZXRhdG9ub3MnID0+ICcweDAzYWUnLAogICAgICAgICAgICAnaW90YXRvbm9zJyA9PiAnMHgwM2FmJywKICAgICAgICAgICAgJ3Vwc2lsb25kaWVyZXNpc3Rvbm9zJyA9PiAnMHgwM2IwJywKICAgICAgICAgICAgJ2FscGhhJyA9PiAnMHgwM2IxJywKICAgICAgICAgICAgJ2JldGEnID0+ICcweDAzYjInLAogICAgICAgICAgICAnZ2FtbWEnID0+ICcweDAzYjMnLAogICAgICAgICAgICAnZGVsdGEnID0+ICcweDAzYjQnLAogICAgICAgICAgICAnZXBzaWxvbicgPT4gJzB4MDNiNScsCiAgICAgICAgICAgICd6ZXRhJyA9PiAnMHgwM2I2JywKICAgICAgICAgICAgJ2V0YScgPT4gJzB4MDNiNycsCiAgICAgICAgICAgICd0aGV0YScgPT4gJzB4MDNiOCcsCiAgICAgICAgICAgICdpb3RhJyA9PiAnMHgwM2I5JywKICAgICAgICAgICAgJ2thcHBhJyA9PiAnMHgwM2JhJywKICAgICAgICAgICAgJ2xhbWJkYScgPT4gJzB4MDNiYicsCiAgICAgICAgICAgICdudScgPT4gJzB4MDNiZCcsCiAgICAgICAgICAgICd4aScgPT4gJzB4MDNiZScsCiAgICAgICAgICAgICdvbWljcm9uJyA9PiAnMHgwM2JmJywKICAgICAgICAgICAgJ3BpJyA9PiAnMHgwM2MwJywKICAgICAgICAgICAgJ3JobycgPT4gJzB4MDNjMScsCiAgICAgICAgICAgICdzaWdtYTEnID0+ICcweDAzYzInLAogICAgICAgICAgICAnc2lnbWEnID0+ICcweDAzYzMnLAogICAgICAgICAgICAndGF1JyA9PiAnMHgwM2M0JywKICAgICAgICAgICAgJ3Vwc2lsb24nID0+ICcweDAzYzUnLAogICAgICAgICAgICAncGhpJyA9PiAnMHgwM2M2JywKICAgICAgICAgICAgJ2NoaScgPT4gJzB4MDNjNycsCiAgICAgICAgICAgICdwc2knID0+ICcweDAzYzgnLAogICAgICAgICAgICAnb21lZ2EnID0+ICcweDAzYzknLAogICAgICAgICAgICAnaW90YWRpZXJlc2lzJyA9PiAnMHgwM2NhJywKICAgICAgICAgICAgJ3Vwc2lsb25kaWVyZXNpcycgPT4gJzB4MDNjYicsCiAgICAgICAgICAgICdvbWljcm9udG9ub3MnID0+ICcweDAzY2MnLAogICAgICAgICAgICAndXBzaWxvbnRvbm9zJyA9PiAnMHgwM2NkJywKICAgICAgICAgICAgJ29tZWdhdG9ub3MnID0+ICcweDAzY2UnLAogICAgICAgICAgICAndGhldGExJyA9PiAnMHgwM2QxJywKICAgICAgICAgICAgJ1Vwc2lsb24xJyA9PiAnMHgwM2QyJywKICAgICAgICAgICAgJ3BoaTEnID0+ICcweDAzZDUnLAogICAgICAgICAgICAnb21lZ2ExJyA9PiAnMHgwM2Q2JywKICAgICAgICAgICAgJ2FmaWkxMDAyMycgPT4gJzB4MDQwMScsCiAgICAgICAgICAgICdhZmlpMTAwNTEnID0+ICcweDA0MDInLAogICAgICAgICAgICAnYWZpaTEwMDUyJyA9PiAnMHgwNDAzJywKICAgICAgICAgICAgJ2FmaWkxMDA1MycgPT4gJzB4MDQwNCcsCiAgICAgICAgICAgICdhZmlpMTAwNTQnID0+ICcweDA0MDUnLAogICAgICAgICAgICAnYWZpaTEwMDU1JyA9PiAnMHgwNDA2JywKICAgICAgICAgICAgJ2FmaWkxMDA1NicgPT4gJzB4MDQwNycsCiAgICAgICAgICAgICdhZmlpMTAwNTcnID0+ICcweDA0MDgnLAogICAgICAgICAgICAnYWZpaTEwMDU4JyA9PiAnMHgwNDA5JywKICAgICAgICAgICAgJ2FmaWkxMDA1OScgPT4gJzB4MDQwYScsCiAgICAgICAgICAgICdhZmlpMTAwNjAnID0+ICcweDA0MGInLAogICAgICAgICAgICAnYWZpaTEwMDYxJyA9PiAnMHgwNDBjJywKICAgICAgICAgICAgJ2FmaWkxMDA2MicgPT4gJzB4MDQwZScsCiAgICAgICAgICAgICdhZmlpMTAxNDUnID0+ICcweDA0MGYnLAogICAgICAgICAgICAnYWZpaTEwMDE3JyA9PiAnMHgwNDEwJywKICAgICAgICAgICAgJ2FmaWkxMDAxOCcgPT4gJzB4MDQxMScsCiAgICAgICAgICAgICdhZmlpMTAwMTknID0+ICcweDA0MTInLAogICAgICAgICAgICAnYWZpaTEwMDIwJyA9PiAnMHgwNDEzJywKICAgICAgICAgICAgJ2FmaWkxMDAyMScgPT4gJzB4MDQxNCcsCiAgICAgICAgICAgICdhZmlpMTAwMjInID0+ICcweDA0MTUnLAogICAgICAgICAgICAnYWZpaTEwMDI0JyA9PiAnMHgwNDE2JywKICAgICAgICAgICAgJ2FmaWkxMDAyNScgPT4gJzB4MDQxNycsCiAgICAgICAgICAgICdhZmlpMTAwMjYnID0+ICcweDA0MTgnLAogICAgICAgICAgICAnYWZpaTEwMDI3JyA9PiAnMHgwNDE5JywKICAgICAgICAgICAgJ2FmaWkxMDAyOCcgPT4gJzB4MDQxYScsCiAgICAgICAgICAgICdhZmlpMTAwMjknID0+ICcweDA0MWInLAogICAgICAgICAgICAnYWZpaTEwMDMwJyA9PiAnMHgwNDFjJywKICAgICAgICAgICAgJ2FmaWkxMDAzMScgPT4gJzB4MDQxZCcsCiAgICAgICAgICAgICdhZmlpMTAwMzInID0+ICcweDA0MWUnLAogICAgICAgICAgICAnYWZpaTEwMDMzJyA9PiAnMHgwNDFmJywKICAgICAgICAgICAgJ2FmaWkxMDAzNCcgPT4gJzB4MDQyMCcsCiAgICAgICAgICAgICdhZmlpMTAwMzUnID0+ICcweDA0MjEnLAogICAgICAgICAgICAnYWZpaTEwMDM2JyA9PiAnMHgwNDIyJywKICAgICAgICAgICAgJ2FmaWkxMDAzNycgPT4gJzB4MDQyMycsCiAgICAgICAgICAgICdhZmlpMTAwMzgnID0+ICcweDA0MjQnLAogICAgICAgICAgICAnYWZpaTEwMDM5JyA9PiAnMHgwNDI1JywKICAgICAgICAgICAgJ2FmaWkxMDA0MCcgPT4gJzB4MDQyNicsCiAgICAgICAgICAgICdhZmlpMTAwNDEnID0+ICcweDA0MjcnLAogICAgICAgICAgICAnYWZpaTEwMDQyJyA9PiAnMHgwNDI4JywKICAgICAgICAgICAgJ2FmaWkxMDA0MycgPT4gJzB4MDQyOScsCiAgICAgICAgICAgICdhZmlpMTAwNDQnID0+ICcweDA0MmEnLAogICAgICAgICAgICAnYWZpaTEwMDQ1JyA9PiAnMHgwNDJiJywKICAgICAgICAgICAgJ2FmaWkxMDA0NicgPT4gJzB4MDQyYycsCiAgICAgICAgICAgICdhZmlpMTAwNDcnID0+ICcweDA0MmQnLAogICAgICAgICAgICAnYWZpaTEwMDQ4JyA9PiAnMHgwNDJlJywKICAgICAgICAgICAgJ2FmaWkxMDA0OScgPT4gJzB4MDQyZicsCiAgICAgICAgICAgICdhZmlpMTAwNjUnID0+ICcweDA0MzAnLAogICAgICAgICAgICAnYWZpaTEwMDY2JyA9PiAnMHgwNDMxJywKICAgICAgICAgICAgJ2FmaWkxMDA2NycgPT4gJzB4MDQzMicsCiAgICAgICAgICAgICdhZmlpMTAwNjgnID0+ICcweDA0MzMnLAogICAgICAgICAgICAnYWZpaTEwMDY5JyA9PiAnMHgwNDM0JywKICAgICAgICAgICAgJ2FmaWkxMDA3MCcgPT4gJzB4MDQzNScsCiAgICAgICAgICAgICdhZmlpMTAwNzInID0+ICcweDA0MzYnLAogICAgICAgICAgICAnYWZpaTEwMDczJyA9PiAnMHgwNDM3JywKICAgICAgICAgICAgJ2FmaWkxMDA3NCcgPT4gJzB4MDQzOCcsCiAgICAgICAgICAgICdhZmlpMTAwNzUnID0+ICcweDA0MzknLAogICAgICAgICAgICAnYWZpaTEwMDc2JyA9PiAnMHgwNDNhJywKICAgICAgICAgICAgJ2FmaWkxMDA3NycgPT4gJzB4MDQzYicsCiAgICAgICAgICAgICdhZmlpMTAwNzgnID0+ICcweDA0M2MnLAogICAgICAgICAgICAnYWZpaTEwMDc5JyA9PiAnMHgwNDNkJywKICAgICAgICAgICAgJ2FmaWkxMDA4MCcgPT4gJzB4MDQzZScsCiAgICAgICAgICAgICdhZmlpMTAwODEnID0+ICcweDA0M2YnLAogICAgICAgICAgICAnYWZpaTEwMDgyJyA9PiAnMHgwNDQwJywKICAgICAgICAgICAgJ2FmaWkxMDA4MycgPT4gJzB4MDQ0MScsCiAgICAgICAgICAgICdhZmlpMTAwODQnID0+ICcweDA0NDInLAogICAgICAgICAgICAnYWZpaTEwMDg1JyA9PiAnMHgwNDQzJywKICAgICAgICAgICAgJ2FmaWkxMDA4NicgPT4gJzB4MDQ0NCcsCiAgICAgICAgICAgICdhZmlpMTAwODcnID0+ICcweDA0NDUnLAogICAgICAgICAgICAnYWZpaTEwMDg4JyA9PiAnMHgwNDQ2JywKICAgICAgICAgICAgJ2FmaWkxMDA4OScgPT4gJzB4MDQ0NycsCiAgICAgICAgICAgICdhZmlpMTAwOTAnID0+ICcweDA0NDgnLAogICAgICAgICAgICAnYWZpaTEwMDkxJyA9PiAnMHgwNDQ5JywKICAgICAgICAgICAgJ2FmaWkxMDA5MicgPT4gJzB4MDQ0YScsCiAgICAgICAgICAgICdhZmlpMTAwOTMnID0+ICcweDA0NGInLAogICAgICAgICAgICAnYWZpaTEwMDk0JyA9PiAnMHgwNDRjJywKICAgICAgICAgICAgJ2FmaWkxMDA5NScgPT4gJzB4MDQ0ZCcsCiAgICAgICAgICAgICdhZmlpMTAwOTYnID0+ICcweDA0NGUnLAogICAgICAgICAgICAnYWZpaTEwMDk3JyA9PiAnMHgwNDRmJywKICAgICAgICAgICAgJ2FmaWkxMDA3MScgPT4gJzB4MDQ1MScsCiAgICAgICAgICAgICdhZmlpMTAwOTknID0+ICcweDA0NTInLAogICAgICAgICAgICAnYWZpaTEwMTAwJyA9PiAnMHgwNDUzJywKICAgICAgICAgICAgJ2FmaWkxMDEwMScgPT4gJzB4MDQ1NCcsCiAgICAgICAgICAgICdhZmlpMTAxMDInID0+ICcweDA0NTUnLAogICAgICAgICAgICAnYWZpaTEwMTAzJyA9PiAnMHgwNDU2JywKICAgICAgICAgICAgJ2FmaWkxMDEwNCcgPT4gJzB4MDQ1NycsCiAgICAgICAgICAgICdhZmlpMTAxMDUnID0+ICcweDA0NTgnLAogICAgICAgICAgICAnYWZpaTEwMTA2JyA9PiAnMHgwNDU5JywKICAgICAgICAgICAgJ2FmaWkxMDEwNycgPT4gJzB4MDQ1YScsCiAgICAgICAgICAgICdhZmlpMTAxMDgnID0+ICcweDA0NWInLAogICAgICAgICAgICAnYWZpaTEwMTA5JyA9PiAnMHgwNDVjJywKICAgICAgICAgICAgJ2FmaWkxMDExMCcgPT4gJzB4MDQ1ZScsCiAgICAgICAgICAgICdhZmlpMTAxOTMnID0+ICcweDA0NWYnLAogICAgICAgICAgICAnYWZpaTEwMTQ2JyA9PiAnMHgwNDYyJywKICAgICAgICAgICAgJ2FmaWkxMDE5NCcgPT4gJzB4MDQ2MycsCiAgICAgICAgICAgICdhZmlpMTAxNDcnID0+ICcweDA0NzInLAogICAgICAgICAgICAnYWZpaTEwMTk1JyA9PiAnMHgwNDczJywKICAgICAgICAgICAgJ2FmaWkxMDE0OCcgPT4gJzB4MDQ3NCcsCiAgICAgICAgICAgICdhZmlpMTAxOTYnID0+ICcweDA0NzUnLAogICAgICAgICAgICAnYWZpaTEwMDUwJyA9PiAnMHgwNDkwJywKICAgICAgICAgICAgJ2FmaWkxMDA5OCcgPT4gJzB4MDQ5MScsCiAgICAgICAgICAgICdhZmlpMTA4NDYnID0+ICcweDA0ZDknLAogICAgICAgICAgICAnYWZpaTU3Nzk5JyA9PiAnMHgwNWIwJywKICAgICAgICAgICAgJ2FmaWk1NzgwMScgPT4gJzB4MDViMScsCiAgICAgICAgICAgICdhZmlpNTc4MDAnID0+ICcweDA1YjInLAogICAgICAgICAgICAnYWZpaTU3ODAyJyA9PiAnMHgwNWIzJywKICAgICAgICAgICAgJ2FmaWk1Nzc5MycgPT4gJzB4MDViNCcsCiAgICAgICAgICAgICdhZmlpNTc3OTQnID0+ICcweDA1YjUnLAogICAgICAgICAgICAnYWZpaTU3Nzk1JyA9PiAnMHgwNWI2JywKICAgICAgICAgICAgJ2FmaWk1Nzc5OCcgPT4gJzB4MDViNycsCiAgICAgICAgICAgICdhZmlpNTc3OTcnID0+ICcweDA1YjgnLAogICAgICAgICAgICAnYWZpaTU3ODA2JyA9PiAnMHgwNWI5JywKICAgICAgICAgICAgJ2FmaWk1Nzc5NicgPT4gJzB4MDViYicsCiAgICAgICAgICAgICdhZmlpNTc4MDcnID0+ICcweDA1YmMnLAogICAgICAgICAgICAnYWZpaTU3ODM5JyA9PiAnMHgwNWJkJywKICAgICAgICAgICAgJ2FmaWk1NzY0NScgPT4gJzB4MDViZScsCiAgICAgICAgICAgICdhZmlpNTc4NDEnID0+ICcweDA1YmYnLAogICAgICAgICAgICAnYWZpaTU3ODQyJyA9PiAnMHgwNWMwJywKICAgICAgICAgICAgJ2FmaWk1NzgwNCcgPT4gJzB4MDVjMScsCiAgICAgICAgICAgICdhZmlpNTc4MDMnID0+ICcweDA1YzInLAogICAgICAgICAgICAnYWZpaTU3NjU4JyA9PiAnMHgwNWMzJywKICAgICAgICAgICAgJ2FmaWk1NzY2NCcgPT4gJzB4MDVkMCcsCiAgICAgICAgICAgICdhZmlpNTc2NjUnID0+ICcweDA1ZDEnLAogICAgICAgICAgICAnYWZpaTU3NjY2JyA9PiAnMHgwNWQyJywKICAgICAgICAgICAgJ2FmaWk1NzY2NycgPT4gJzB4MDVkMycsCiAgICAgICAgICAgICdhZmlpNTc2NjgnID0+ICcweDA1ZDQnLAogICAgICAgICAgICAnYWZpaTU3NjY5JyA9PiAnMHgwNWQ1JywKICAgICAgICAgICAgJ2FmaWk1NzY3MCcgPT4gJzB4MDVkNicsCiAgICAgICAgICAgICdhZmlpNTc2NzEnID0+ICcweDA1ZDcnLAogICAgICAgICAgICAnYWZpaTU3NjcyJyA9PiAnMHgwNWQ4JywKICAgICAgICAgICAgJ2FmaWk1NzY3MycgPT4gJzB4MDVkOScsCiAgICAgICAgICAgICdhZmlpNTc2NzQnID0+ICcweDA1ZGEnLAogICAgICAgICAgICAnYWZpaTU3Njc1JyA9PiAnMHgwNWRiJywKICAgICAgICAgICAgJ2FmaWk1NzY3NicgPT4gJzB4MDVkYycsCiAgICAgICAgICAgICdhZmlpNTc2NzcnID0+ICcweDA1ZGQnLAogICAgICAgICAgICAnYWZpaTU3Njc4JyA9PiAnMHgwNWRlJywKICAgICAgICAgICAgJ2FmaWk1NzY3OScgPT4gJzB4MDVkZicsCiAgICAgICAgICAgICdhZmlpNTc2ODAnID0+ICcweDA1ZTAnLAogICAgICAgICAgICAnYWZpaTU3NjgxJyA9PiAnMHgwNWUxJywKICAgICAgICAgICAgJ2FmaWk1NzY4MicgPT4gJzB4MDVlMicsCiAgICAgICAgICAgICdhZmlpNTc2ODMnID0+ICcweDA1ZTMnLAogICAgICAgICAgICAnYWZpaTU3Njg0JyA9PiAnMHgwNWU0JywKICAgICAgICAgICAgJ2FmaWk1NzY4NScgPT4gJzB4MDVlNScsCiAgICAgICAgICAgICdhZmlpNTc2ODYnID0+ICcweDA1ZTYnLAogICAgICAgICAgICAnYWZpaTU3Njg3JyA9PiAnMHgwNWU3JywKICAgICAgICAgICAgJ2FmaWk1NzY4OCcgPT4gJzB4MDVlOCcsCiAgICAgICAgICAgICdhZmlpNTc2ODknID0+ICcweDA1ZTknLAogICAgICAgICAgICAnYWZpaTU3NjkwJyA9PiAnMHgwNWVhJywKICAgICAgICAgICAgJ2FmaWk1NzcxNicgPT4gJzB4MDVmMCcsCiAgICAgICAgICAgICdhZmlpNTc3MTcnID0+ICcweDA1ZjEnLAogICAgICAgICAgICAnYWZpaTU3NzE4JyA9PiAnMHgwNWYyJywKICAgICAgICAgICAgJ2FmaWk1NzM4OCcgPT4gJzB4MDYwYycsCiAgICAgICAgICAgICdhZmlpNTc0MDMnID0+ICcweDA2MWInLAogICAgICAgICAgICAnYWZpaTU3NDA3JyA9PiAnMHgwNjFmJywKICAgICAgICAgICAgJ2FmaWk1NzQwOScgPT4gJzB4MDYyMScsCiAgICAgICAgICAgICdhZmlpNTc0MTAnID0+ICcweDA2MjInLAogICAgICAgICAgICAnYWZpaTU3NDExJyA9PiAnMHgwNjIzJywKICAgICAgICAgICAgJ2FmaWk1NzQxMicgPT4gJzB4MDYyNCcsCiAgICAgICAgICAgICdhZmlpNTc0MTMnID0+ICcweDA2MjUnLAogICAgICAgICAgICAnYWZpaTU3NDE0JyA9PiAnMHgwNjI2JywKICAgICAgICAgICAgJ2FmaWk1NzQxNScgPT4gJzB4MDYyNycsCiAgICAgICAgICAgICdhZmlpNTc0MTYnID0+ICcweDA2MjgnLAogICAgICAgICAgICAnYWZpaTU3NDE3JyA9PiAnMHgwNjI5JywKICAgICAgICAgICAgJ2FmaWk1NzQxOCcgPT4gJzB4MDYyYScsCiAgICAgICAgICAgICdhZmlpNTc0MTknID0+ICcweDA2MmInLAogICAgICAgICAgICAnYWZpaTU3NDIwJyA9PiAnMHgwNjJjJywKICAgICAgICAgICAgJ2FmaWk1NzQyMScgPT4gJzB4MDYyZCcsCiAgICAgICAgICAgICdhZmlpNTc0MjInID0+ICcweDA2MmUnLAogICAgICAgICAgICAnYWZpaTU3NDIzJyA9PiAnMHgwNjJmJywKICAgICAgICAgICAgJ2FmaWk1NzQyNCcgPT4gJzB4MDYzMCcsCiAgICAgICAgICAgICdhZmlpNTc0MjUnID0+ICcweDA2MzEnLAogICAgICAgICAgICAnYWZpaTU3NDI2JyA9PiAnMHgwNjMyJywKICAgICAgICAgICAgJ2FmaWk1NzQyNycgPT4gJzB4MDYzMycsCiAgICAgICAgICAgICdhZmlpNTc0MjgnID0+ICcweDA2MzQnLAogICAgICAgICAgICAnYWZpaTU3NDI5JyA9PiAnMHgwNjM1JywKICAgICAgICAgICAgJ2FmaWk1NzQzMCcgPT4gJzB4MDYzNicsCiAgICAgICAgICAgICdhZmlpNTc0MzEnID0+ICcweDA2MzcnLAogICAgICAgICAgICAnYWZpaTU3NDMyJyA9PiAnMHgwNjM4JywKICAgICAgICAgICAgJ2FmaWk1NzQzMycgPT4gJzB4MDYzOScsCiAgICAgICAgICAgICdhZmlpNTc0MzQnID0+ICcweDA2M2EnLAogICAgICAgICAgICAnYWZpaTU3NDQwJyA9PiAnMHgwNjQwJywKICAgICAgICAgICAgJ2FmaWk1NzQ0MScgPT4gJzB4MDY0MScsCiAgICAgICAgICAgICdhZmlpNTc0NDInID0+ICcweDA2NDInLAogICAgICAgICAgICAnYWZpaTU3NDQzJyA9PiAnMHgwNjQzJywKICAgICAgICAgICAgJ2FmaWk1NzQ0NCcgPT4gJzB4MDY0NCcsCiAgICAgICAgICAgICdhZmlpNTc0NDUnID0+ICcweDA2NDUnLAogICAgICAgICAgICAnYWZpaTU3NDQ2JyA9PiAnMHgwNjQ2JywKICAgICAgICAgICAgJ2FmaWk1NzQ3MCcgPT4gJzB4MDY0NycsCiAgICAgICAgICAgICdhZmlpNTc0NDgnID0+ICcweDA2NDgnLAogICAgICAgICAgICAnYWZpaTU3NDQ5JyA9PiAnMHgwNjQ5JywKICAgICAgICAgICAgJ2FmaWk1NzQ1MCcgPT4gJzB4MDY0YScsCiAgICAgICAgICAgICdhZmlpNTc0NTEnID0+ICcweDA2NGInLAogICAgICAgICAgICAnYWZpaTU3NDUyJyA9PiAnMHgwNjRjJywKICAgICAgICAgICAgJ2FmaWk1NzQ1MycgPT4gJzB4MDY0ZCcsCiAgICAgICAgICAgICdhZmlpNTc0NTQnID0+ICcweDA2NGUnLAogICAgICAgICAgICAnYWZpaTU3NDU1JyA9PiAnMHgwNjRmJywKICAgICAgICAgICAgJ2FmaWk1NzQ1NicgPT4gJzB4MDY1MCcsCiAgICAgICAgICAgICdhZmlpNTc0NTcnID0+ICcweDA2NTEnLAogICAgICAgICAgICAnYWZpaTU3NDU4JyA9PiAnMHgwNjUyJywKICAgICAgICAgICAgJ2FmaWk1NzM5MicgPT4gJzB4MDY2MCcsCiAgICAgICAgICAgICdhZmlpNTczOTMnID0+ICcweDA2NjEnLAogICAgICAgICAgICAnYWZpaTU3Mzk0JyA9PiAnMHgwNjYyJywKICAgICAgICAgICAgJ2FmaWk1NzM5NScgPT4gJzB4MDY2MycsCiAgICAgICAgICAgICdhZmlpNTczOTYnID0+ICcweDA2NjQnLAogICAgICAgICAgICAnYWZpaTU3Mzk3JyA9PiAnMHgwNjY1JywKICAgICAgICAgICAgJ2FmaWk1NzM5OCcgPT4gJzB4MDY2NicsCiAgICAgICAgICAgICdhZmlpNTczOTknID0+ICcweDA2NjcnLAogICAgICAgICAgICAnYWZpaTU3NDAwJyA9PiAnMHgwNjY4JywKICAgICAgICAgICAgJ2FmaWk1NzQwMScgPT4gJzB4MDY2OScsCiAgICAgICAgICAgICdhZmlpNTczODEnID0+ICcweDA2NmEnLAogICAgICAgICAgICAnYWZpaTYzMTY3JyA9PiAnMHgwNjZkJywKICAgICAgICAgICAgJ2FmaWk1NzUxMScgPT4gJzB4MDY3OScsCiAgICAgICAgICAgICdhZmlpNTc1MDYnID0+ICcweDA2N2UnLAogICAgICAgICAgICAnYWZpaTU3NTA3JyA9PiAnMHgwNjg2JywKICAgICAgICAgICAgJ2FmaWk1NzUxMicgPT4gJzB4MDY4OCcsCiAgICAgICAgICAgICdhZmlpNTc1MTMnID0+ICcweDA2OTEnLAogICAgICAgICAgICAnYWZpaTU3NTA4JyA9PiAnMHgwNjk4JywKICAgICAgICAgICAgJ2FmaWk1NzUwNScgPT4gJzB4MDZhNCcsCiAgICAgICAgICAgICdhZmlpNTc1MDknID0+ICcweDA2YWYnLAogICAgICAgICAgICAnYWZpaTU3NTE0JyA9PiAnMHgwNmJhJywKICAgICAgICAgICAgJ2FmaWk1NzUxOScgPT4gJzB4MDZkMicsCiAgICAgICAgICAgICdhZmlpNTc1MzQnID0+ICcweDA2ZDUnLAogICAgICAgICAgICAnV2dyYXZlJyA9PiAnMHgxZTgwJywKICAgICAgICAgICAgJ3dncmF2ZScgPT4gJzB4MWU4MScsCiAgICAgICAgICAgICdXYWN1dGUnID0+ICcweDFlODInLAogICAgICAgICAgICAnd2FjdXRlJyA9PiAnMHgxZTgzJywKICAgICAgICAgICAgJ1dkaWVyZXNpcycgPT4gJzB4MWU4NCcsCiAgICAgICAgICAgICd3ZGllcmVzaXMnID0+ICcweDFlODUnLAogICAgICAgICAgICAnWWdyYXZlJyA9PiAnMHgxZWYyJywKICAgICAgICAgICAgJ3lncmF2ZScgPT4gJzB4MWVmMycsCiAgICAgICAgICAgICdhZmlpNjE2NjQnID0+ICcweDIwMGMnLAogICAgICAgICAgICAnYWZpaTMwMScgPT4gJzB4MjAwZCcsCiAgICAgICAgICAgICdhZmlpMjk5JyA9PiAnMHgyMDBlJywKICAgICAgICAgICAgJ2FmaWkzMDAnID0+ICcweDIwMGYnLAogICAgICAgICAgICAnZmlndXJlZGFzaCcgPT4gJzB4MjAxMicsCiAgICAgICAgICAgICdlbmRhc2gnID0+ICcweDIwMTMnLAogICAgICAgICAgICAnZW1kYXNoJyA9PiAnMHgyMDE0JywKICAgICAgICAgICAgJ2FmaWkwMDIwOCcgPT4gJzB4MjAxNScsCiAgICAgICAgICAgICd1bmRlcnNjb3JlZGJsJyA9PiAnMHgyMDE3JywKICAgICAgICAgICAgJ3F1b3RlbGVmdCcgPT4gJzB4MjAxOCcsCiAgICAgICAgICAgICdxdW90ZXJpZ2h0JyA9PiAnMHgyMDE5JywKICAgICAgICAgICAgJ3F1b3Rlc2luZ2xiYXNlJyA9PiAnMHgyMDFhJywKICAgICAgICAgICAgJ3F1b3RlcmV2ZXJzZWQnID0+ICcweDIwMWInLAogICAgICAgICAgICAncXVvdGVkYmxsZWZ0JyA9PiAnMHgyMDFjJywKICAgICAgICAgICAgJ3F1b3RlZGJscmlnaHQnID0+ICcweDIwMWQnLAogICAgICAgICAgICAncXVvdGVkYmxiYXNlJyA9PiAnMHgyMDFlJywKICAgICAgICAgICAgJ2RhZ2dlcicgPT4gJzB4MjAyMCcsCiAgICAgICAgICAgICdkYWdnZXJkYmwnID0+ICcweDIwMjEnLAogICAgICAgICAgICAnYnVsbGV0JyA9PiAnMHgyMDIyJywKICAgICAgICAgICAgJ29uZWRvdGVubGVhZGVyJyA9PiAnMHgyMDI0JywKICAgICAgICAgICAgJ3R3b2RvdGVubGVhZGVyJyA9PiAnMHgyMDI1JywKICAgICAgICAgICAgJ2VsbGlwc2lzJyA9PiAnMHgyMDI2JywKICAgICAgICAgICAgJ2FmaWk2MTU3MycgPT4gJzB4MjAyYycsCiAgICAgICAgICAgICdhZmlpNjE1NzQnID0+ICcweDIwMmQnLAogICAgICAgICAgICAnYWZpaTYxNTc1JyA9PiAnMHgyMDJlJywKICAgICAgICAgICAgJ3BlcnRob3VzYW5kJyA9PiAnMHgyMDMwJywKICAgICAgICAgICAgJ21pbnV0ZScgPT4gJzB4MjAzMicsCiAgICAgICAgICAgICdzZWNvbmQnID0+ICcweDIwMzMnLAogICAgICAgICAgICAnZ3VpbHNpbmdsbGVmdCcgPT4gJzB4MjAzOScsCiAgICAgICAgICAgICdndWlsc2luZ2xyaWdodCcgPT4gJzB4MjAzYScsCiAgICAgICAgICAgICdleGNsYW1kYmwnID0+ICcweDIwM2MnLAogICAgICAgICAgICAnZnJhY3Rpb24nID0+ICcweDIyMTUnLAogICAgICAgICAgICAnemVyb3N1cGVyaW9yJyA9PiAnMHgyMDcwJywKICAgICAgICAgICAgJ2ZvdXJzdXBlcmlvcicgPT4gJzB4MjA3NCcsCiAgICAgICAgICAgICdmaXZlc3VwZXJpb3InID0+ICcweDIwNzUnLAogICAgICAgICAgICAnc2l4c3VwZXJpb3InID0+ICcweDIwNzYnLAogICAgICAgICAgICAnc2V2ZW5zdXBlcmlvcicgPT4gJzB4MjA3NycsCiAgICAgICAgICAgICdlaWdodHN1cGVyaW9yJyA9PiAnMHgyMDc4JywKICAgICAgICAgICAgJ25pbmVzdXBlcmlvcicgPT4gJzB4MjA3OScsCiAgICAgICAgICAgICdwYXJlbmxlZnRzdXBlcmlvcicgPT4gJzB4MjA3ZCcsCiAgICAgICAgICAgICdwYXJlbnJpZ2h0c3VwZXJpb3InID0+ICcweDIwN2UnLAogICAgICAgICAgICAnbnN1cGVyaW9yJyA9PiAnMHgyMDdmJywKICAgICAgICAgICAgJ3plcm9pbmZlcmlvcicgPT4gJzB4MjA4MCcsCiAgICAgICAgICAgICdvbmVpbmZlcmlvcicgPT4gJzB4MjA4MScsCiAgICAgICAgICAgICd0d29pbmZlcmlvcicgPT4gJzB4MjA4MicsCiAgICAgICAgICAgICd0aHJlZWluZmVyaW9yJyA9PiAnMHgyMDgzJywKICAgICAgICAgICAgJ2ZvdXJpbmZlcmlvcicgPT4gJzB4MjA4NCcsCiAgICAgICAgICAgICdmaXZlaW5mZXJpb3InID0+ICcweDIwODUnLAogICAgICAgICAgICAnc2l4aW5mZXJpb3InID0+ICcweDIwODYnLAogICAgICAgICAgICAnc2V2ZW5pbmZlcmlvcicgPT4gJzB4MjA4NycsCiAgICAgICAgICAgICdlaWdodGluZmVyaW9yJyA9PiAnMHgyMDg4JywKICAgICAgICAgICAgJ25pbmVpbmZlcmlvcicgPT4gJzB4MjA4OScsCiAgICAgICAgICAgICdwYXJlbmxlZnRpbmZlcmlvcicgPT4gJzB4MjA4ZCcsCiAgICAgICAgICAgICdwYXJlbnJpZ2h0aW5mZXJpb3InID0+ICcweDIwOGUnLAogICAgICAgICAgICAnY29sb25tb25ldGFyeScgPT4gJzB4MjBhMScsCiAgICAgICAgICAgICdmcmFuYycgPT4gJzB4MjBhMycsCiAgICAgICAgICAgICdsaXJhJyA9PiAnMHgyMGE0JywKICAgICAgICAgICAgJ3Blc2V0YScgPT4gJzB4MjBhNycsCiAgICAgICAgICAgICdhZmlpNTc2MzYnID0+ICcweDIwYWEnLAogICAgICAgICAgICAnZG9uZycgPT4gJzB4MjBhYicsCiAgICAgICAgICAgICdFdXJvJyA9PiAnMHgyMGFjJywKICAgICAgICAgICAgJ2FmaWk2MTI0OCcgPT4gJzB4MjEwNScsCiAgICAgICAgICAgICdJZnJha3R1cicgPT4gJzB4MjExMScsCiAgICAgICAgICAgICdhZmlpNjEyODknID0+ICcweDIxMTMnLAogICAgICAgICAgICAnYWZpaTYxMzUyJyA9PiAnMHgyMTE2JywKICAgICAgICAgICAgJ3dlaWVyc3RyYXNzJyA9PiAnMHgyMTE4JywKICAgICAgICAgICAgJ1JmcmFrdHVyJyA9PiAnMHgyMTFjJywKICAgICAgICAgICAgJ3ByZXNjcmlwdGlvbicgPT4gJzB4MjExZScsCiAgICAgICAgICAgICd0cmFkZW1hcmsnID0+ICcweDIxMjInLAogICAgICAgICAgICAnZXN0aW1hdGVkJyA9PiAnMHgyMTJlJywKICAgICAgICAgICAgJ2FsZXBoJyA9PiAnMHgyMTM1JywKICAgICAgICAgICAgJ29uZXRoaXJkJyA9PiAnMHgyMTUzJywKICAgICAgICAgICAgJ3R3b3RoaXJkcycgPT4gJzB4MjE1NCcsCiAgICAgICAgICAgICdvbmVlaWdodGgnID0+ICcweDIxNWInLAogICAgICAgICAgICAndGhyZWVlaWdodGhzJyA9PiAnMHgyMTVjJywKICAgICAgICAgICAgJ2ZpdmVlaWdodGhzJyA9PiAnMHgyMTVkJywKICAgICAgICAgICAgJ3NldmVuZWlnaHRocycgPT4gJzB4MjE1ZScsCiAgICAgICAgICAgICdhcnJvd2xlZnQnID0+ICcweDIxOTAnLAogICAgICAgICAgICAnYXJyb3d1cCcgPT4gJzB4MjE5MScsCiAgICAgICAgICAgICdhcnJvd3JpZ2h0JyA9PiAnMHgyMTkyJywKICAgICAgICAgICAgJ2Fycm93ZG93bicgPT4gJzB4MjE5MycsCiAgICAgICAgICAgICdhcnJvd2JvdGgnID0+ICcweDIxOTQnLAogICAgICAgICAgICAnYXJyb3d1cGRuJyA9PiAnMHgyMTk1JywKICAgICAgICAgICAgJ2Fycm93dXBkbmJzZScgPT4gJzB4MjFhOCcsCiAgICAgICAgICAgICdjYXJyaWFnZXJldHVybicgPT4gJzB4MjFiNScsCiAgICAgICAgICAgICdhcnJvd2RibGxlZnQnID0+ICcweDIxZDAnLAogICAgICAgICAgICAnYXJyb3dkYmx1cCcgPT4gJzB4MjFkMScsCiAgICAgICAgICAgICdhcnJvd2RibHJpZ2h0JyA9PiAnMHgyMWQyJywKICAgICAgICAgICAgJ2Fycm93ZGJsZG93bicgPT4gJzB4MjFkMycsCiAgICAgICAgICAgICdhcnJvd2RibGJvdGgnID0+ICcweDIxZDQnLAogICAgICAgICAgICAndW5pdmVyc2FsJyA9PiAnMHgyMjAwJywKICAgICAgICAgICAgJ3BhcnRpYWxkaWZmJyA9PiAnMHgyMjAyJywKICAgICAgICAgICAgJ2V4aXN0ZW50aWFsJyA9PiAnMHgyMjAzJywKICAgICAgICAgICAgJ2VtcHR5c2V0JyA9PiAnMHgyMjA1JywKICAgICAgICAgICAgJ2dyYWRpZW50JyA9PiAnMHgyMjA3JywKICAgICAgICAgICAgJ2VsZW1lbnQnID0+ICcweDIyMDgnLAogICAgICAgICAgICAnbm90ZWxlbWVudCcgPT4gJzB4MjIwOScsCiAgICAgICAgICAgICdzdWNodGhhdCcgPT4gJzB4MjIwYicsCiAgICAgICAgICAgICdwcm9kdWN0JyA9PiAnMHgyMjBmJywKICAgICAgICAgICAgJ3N1bW1hdGlvbicgPT4gJzB4MjIxMScsCiAgICAgICAgICAgICdhc3Rlcmlza21hdGgnID0+ICcweDIyMTcnLAogICAgICAgICAgICAncmFkaWNhbCcgPT4gJzB4MjIxYScsCiAgICAgICAgICAgICdwcm9wb3J0aW9uYWwnID0+ICcweDIyMWQnLAogICAgICAgICAgICAnaW5maW5pdHknID0+ICcweDIyMWUnLAogICAgICAgICAgICAnb3J0aG9nb25hbCcgPT4gJzB4MjIxZicsCiAgICAgICAgICAgICdhbmdsZScgPT4gJzB4MjIyMCcsCiAgICAgICAgICAgICdsb2dpY2FsYW5kJyA9PiAnMHgyMjI3JywKICAgICAgICAgICAgJ2xvZ2ljYWxvcicgPT4gJzB4MjIyOCcsCiAgICAgICAgICAgICdpbnRlcnNlY3Rpb24nID0+ICcweDIyMjknLAogICAgICAgICAgICAndW5pb24nID0+ICcweDIyMmEnLAogICAgICAgICAgICAnaW50ZWdyYWwnID0+ICcweDIyMmInLAogICAgICAgICAgICAndGhlcmVmb3JlJyA9PiAnMHgyMjM0JywKICAgICAgICAgICAgJ3NpbWlsYXInID0+ICcweDIyM2MnLAogICAgICAgICAgICAnY29uZ3J1ZW50JyA9PiAnMHgyMjQ1JywKICAgICAgICAgICAgJ2FwcHJveGVxdWFsJyA9PiAnMHgyMjQ4JywKICAgICAgICAgICAgJ25vdGVxdWFsJyA9PiAnMHgyMjYwJywKICAgICAgICAgICAgJ2VxdWl2YWxlbmNlJyA9PiAnMHgyMjYxJywKICAgICAgICAgICAgJ2xlc3NlcXVhbCcgPT4gJzB4MjI2NCcsCiAgICAgICAgICAgICdncmVhdGVyZXF1YWwnID0+ICcweDIyNjUnLAogICAgICAgICAgICAncHJvcGVyc3Vic2V0JyA9PiAnMHgyMjgyJywKICAgICAgICAgICAgJ3Byb3BlcnN1cGVyc2V0JyA9PiAnMHgyMjgzJywKICAgICAgICAgICAgJ25vdHN1YnNldCcgPT4gJzB4MjI4NCcsCiAgICAgICAgICAgICdyZWZsZXhzdWJzZXQnID0+ICcweDIyODYnLAogICAgICAgICAgICAncmVmbGV4c3VwZXJzZXQnID0+ICcweDIyODcnLAogICAgICAgICAgICAnY2lyY2xlcGx1cycgPT4gJzB4MjI5NScsCiAgICAgICAgICAgICdjaXJjbGVtdWx0aXBseScgPT4gJzB4MjI5NycsCiAgICAgICAgICAgICdwZXJwZW5kaWN1bGFyJyA9PiAnMHgyMmE1JywKICAgICAgICAgICAgJ2RvdG1hdGgnID0+ICcweDIyYzUnLAogICAgICAgICAgICAnaG91c2UnID0+ICcweDIzMDInLAogICAgICAgICAgICAncmV2bG9naWNhbG5vdCcgPT4gJzB4MjMxMCcsCiAgICAgICAgICAgICdpbnRlZ3JhbHRwJyA9PiAnMHgyMzIwJywKICAgICAgICAgICAgJ2ludGVncmFsYnQnID0+ICcweDIzMjEnLAogICAgICAgICAgICAnYW5nbGVsZWZ0JyA9PiAnMHgyMzI5JywKICAgICAgICAgICAgJ2FuZ2xlcmlnaHQnID0+ICcweDIzMmEnLAogICAgICAgICAgICAnU0YxMDAwMDAnID0+ICcweDI1MDAnLAogICAgICAgICAgICAnU0YxMTAwMDAnID0+ICcweDI1MDInLAogICAgICAgICAgICAnU0YwMTAwMDAnID0+ICcweDI1MGMnLAogICAgICAgICAgICAnU0YwMzAwMDAnID0+ICcweDI1MTAnLAogICAgICAgICAgICAnU0YwMjAwMDAnID0+ICcweDI1MTQnLAogICAgICAgICAgICAnU0YwNDAwMDAnID0+ICcweDI1MTgnLAogICAgICAgICAgICAnU0YwODAwMDAnID0+ICcweDI1MWMnLAogICAgICAgICAgICAnU0YwOTAwMDAnID0+ICcweDI1MjQnLAogICAgICAgICAgICAnU0YwNjAwMDAnID0+ICcweDI1MmMnLAogICAgICAgICAgICAnU0YwNzAwMDAnID0+ICcweDI1MzQnLAogICAgICAgICAgICAnU0YwNTAwMDAnID0+ICcweDI1M2MnLAogICAgICAgICAgICAnU0Y0MzAwMDAnID0+ICcweDI1NTAnLAogICAgICAgICAgICAnU0YyNDAwMDAnID0+ICcweDI1NTEnLAogICAgICAgICAgICAnU0Y1MTAwMDAnID0+ICcweDI1NTInLAogICAgICAgICAgICAnU0Y1MjAwMDAnID0+ICcweDI1NTMnLAogICAgICAgICAgICAnU0YzOTAwMDAnID0+ICcweDI1NTQnLAogICAgICAgICAgICAnU0YyMjAwMDAnID0+ICcweDI1NTUnLAogICAgICAgICAgICAnU0YyMTAwMDAnID0+ICcweDI1NTYnLAogICAgICAgICAgICAnU0YyNTAwMDAnID0+ICcweDI1NTcnLAogICAgICAgICAgICAnU0Y1MDAwMDAnID0+ICcweDI1NTgnLAogICAgICAgICAgICAnU0Y0OTAwMDAnID0+ICcweDI1NTknLAogICAgICAgICAgICAnU0YzODAwMDAnID0+ICcweDI1NWEnLAogICAgICAgICAgICAnU0YyODAwMDAnID0+ICcweDI1NWInLAogICAgICAgICAgICAnU0YyNzAwMDAnID0+ICcweDI1NWMnLAogICAgICAgICAgICAnU0YyNjAwMDAnID0+ICcweDI1NWQnLAogICAgICAgICAgICAnU0YzNjAwMDAnID0+ICcweDI1NWUnLAogICAgICAgICAgICAnU0YzNzAwMDAnID0+ICcweDI1NWYnLAogICAgICAgICAgICAnU0Y0MjAwMDAnID0+ICcweDI1NjAnLAogICAgICAgICAgICAnU0YxOTAwMDAnID0+ICcweDI1NjEnLAogICAgICAgICAgICAnU0YyMDAwMDAnID0+ICcweDI1NjInLAogICAgICAgICAgICAnU0YyMzAwMDAnID0+ICcweDI1NjMnLAogICAgICAgICAgICAnU0Y0NzAwMDAnID0+ICcweDI1NjQnLAogICAgICAgICAgICAnU0Y0ODAwMDAnID0+ICcweDI1NjUnLAogICAgICAgICAgICAnU0Y0MTAwMDAnID0+ICcweDI1NjYnLAogICAgICAgICAgICAnU0Y0NTAwMDAnID0+ICcweDI1NjcnLAogICAgICAgICAgICAnU0Y0NjAwMDAnID0+ICcweDI1NjgnLAogICAgICAgICAgICAnU0Y0MDAwMDAnID0+ICcweDI1NjknLAogICAgICAgICAgICAnU0Y1NDAwMDAnID0+ICcweDI1NmEnLAogICAgICAgICAgICAnU0Y1MzAwMDAnID0+ICcweDI1NmInLAogICAgICAgICAgICAnU0Y0NDAwMDAnID0+ICcweDI1NmMnLAogICAgICAgICAgICAndXBibG9jaycgPT4gJzB4MjU4MCcsCiAgICAgICAgICAgICdkbmJsb2NrJyA9PiAnMHgyNTg0JywKICAgICAgICAgICAgJ2Jsb2NrJyA9PiAnMHgyNTg4JywKICAgICAgICAgICAgJ2xmYmxvY2snID0+ICcweDI1OGMnLAogICAgICAgICAgICAncnRibG9jaycgPT4gJzB4MjU5MCcsCiAgICAgICAgICAgICdsdHNoYWRlJyA9PiAnMHgyNTkxJywKICAgICAgICAgICAgJ3NoYWRlJyA9PiAnMHgyNTkyJywKICAgICAgICAgICAgJ2Rrc2hhZGUnID0+ICcweDI1OTMnLAogICAgICAgICAgICAnZmlsbGVkYm94JyA9PiAnMHgyNWEwJywKICAgICAgICAgICAgJ0gyMjA3MycgPT4gJzB4MjVhMScsCiAgICAgICAgICAgICdIMTg1NDMnID0+ICcweDI1YWEnLAogICAgICAgICAgICAnSDE4NTUxJyA9PiAnMHgyNWFiJywKICAgICAgICAgICAgJ2ZpbGxlZHJlY3QnID0+ICcweDI1YWMnLAogICAgICAgICAgICAndHJpYWd1cCcgPT4gJzB4MjViMicsCiAgICAgICAgICAgICd0cmlhZ3J0JyA9PiAnMHgyNWJhJywKICAgICAgICAgICAgJ3RyaWFnZG4nID0+ICcweDI1YmMnLAogICAgICAgICAgICAndHJpYWdsZicgPT4gJzB4MjVjNCcsCiAgICAgICAgICAgICdsb3plbmdlJyA9PiAnMHgyNWNhJywKICAgICAgICAgICAgJ2NpcmNsZScgPT4gJzB4MjVjYicsCiAgICAgICAgICAgICdIMTg1MzMnID0+ICcweDI1Y2YnLAogICAgICAgICAgICAnaW52YnVsbGV0JyA9PiAnMHgyNWQ4JywKICAgICAgICAgICAgJ2ludmNpcmNsZScgPT4gJzB4MjVkOScsCiAgICAgICAgICAgICdvcGVuYnVsbGV0JyA9PiAnMHgyNWU2JywKICAgICAgICAgICAgJ3NtaWxlZmFjZScgPT4gJzB4MjYzYScsCiAgICAgICAgICAgICdpbnZzbWlsZWZhY2UnID0+ICcweDI2M2InLAogICAgICAgICAgICAnc3VuJyA9PiAnMHgyNjNjJywKICAgICAgICAgICAgJ2ZlbWFsZScgPT4gJzB4MjY0MCcsCiAgICAgICAgICAgICdtYWxlJyA9PiAnMHgyNjQyJywKICAgICAgICAgICAgJ3NwYWRlJyA9PiAnMHgyNjYwJywKICAgICAgICAgICAgJ2NsdWInID0+ICcweDI2NjMnLAogICAgICAgICAgICAnaGVhcnQnID0+ICcweDI2NjUnLAogICAgICAgICAgICAnZGlhbW9uZCcgPT4gJzB4MjY2NicsCiAgICAgICAgICAgICdtdXNpY2Fsbm90ZScgPT4gJzB4MjY2YScsCiAgICAgICAgICAgICdtdXNpY2Fsbm90ZWRibCcgPT4gJzB4MjY2YicsCiAgICAgICAgICAgICdkb3RsZXNzaicgPT4gJzB4ZjZiZScsCiAgICAgICAgICAgICdMTCcgPT4gJzB4ZjZiZicsCiAgICAgICAgICAgICdsbCcgPT4gJzB4ZjZjMCcsCiAgICAgICAgICAgICdjb21tYWFjY2VudCcgPT4gJzB4ZjZjMycsCiAgICAgICAgICAgICdhZmlpMTAwNjMnID0+ICcweGY2YzQnLAogICAgICAgICAgICAnYWZpaTEwMDY0JyA9PiAnMHhmNmM1JywKICAgICAgICAgICAgJ2FmaWkxMDE5MicgPT4gJzB4ZjZjNicsCiAgICAgICAgICAgICdhZmlpMTA4MzEnID0+ICcweGY2YzcnLAogICAgICAgICAgICAnYWZpaTEwODMyJyA9PiAnMHhmNmM4JywKICAgICAgICAgICAgJ0FjdXRlJyA9PiAnMHhmNmM5JywKICAgICAgICAgICAgJ0Nhcm9uJyA9PiAnMHhmNmNhJywKICAgICAgICAgICAgJ0RpZXJlc2lzJyA9PiAnMHhmNmNiJywKICAgICAgICAgICAgJ0RpZXJlc2lzQWN1dGUnID0+ICcweGY2Y2MnLAogICAgICAgICAgICAnRGllcmVzaXNHcmF2ZScgPT4gJzB4ZjZjZCcsCiAgICAgICAgICAgICdHcmF2ZScgPT4gJzB4ZjZjZScsCiAgICAgICAgICAgICdIdW5nYXJ1bWxhdXQnID0+ICcweGY2Y2YnLAogICAgICAgICAgICAnTWFjcm9uJyA9PiAnMHhmNmQwJywKICAgICAgICAgICAgJ2N5ckJyZXZlJyA9PiAnMHhmNmQxJywKICAgICAgICAgICAgJ2N5ckZsZXgnID0+ICcweGY2ZDInLAogICAgICAgICAgICAnZGJsR3JhdmUnID0+ICcweGY2ZDMnLAogICAgICAgICAgICAnY3lyYnJldmUnID0+ICcweGY2ZDQnLAogICAgICAgICAgICAnY3lyZmxleCcgPT4gJzB4ZjZkNScsCiAgICAgICAgICAgICdkYmxncmF2ZScgPT4gJzB4ZjZkNicsCiAgICAgICAgICAgICdkaWVyZXNpc2FjdXRlJyA9PiAnMHhmNmQ3JywKICAgICAgICAgICAgJ2RpZXJlc2lzZ3JhdmUnID0+ICcweGY2ZDgnLAogICAgICAgICAgICAnY29weXJpZ2h0c2VyaWYnID0+ICcweGY2ZDknLAogICAgICAgICAgICAncmVnaXN0ZXJzZXJpZicgPT4gJzB4ZjZkYScsCiAgICAgICAgICAgICd0cmFkZW1hcmtzZXJpZicgPT4gJzB4ZjZkYicsCiAgICAgICAgICAgICdvbmVmaXR0ZWQnID0+ICcweGY2ZGMnLAogICAgICAgICAgICAncnVwaWFoJyA9PiAnMHhmNmRkJywKICAgICAgICAgICAgJ3RocmVlcXVhcnRlcnNlbWRhc2gnID0+ICcweGY2ZGUnLAogICAgICAgICAgICAnY2VudGluZmVyaW9yJyA9PiAnMHhmNmRmJywKICAgICAgICAgICAgJ2NlbnRzdXBlcmlvcicgPT4gJzB4ZjZlMCcsCiAgICAgICAgICAgICdjb21tYWluZmVyaW9yJyA9PiAnMHhmNmUxJywKICAgICAgICAgICAgJ2NvbW1hc3VwZXJpb3InID0+ICcweGY2ZTInLAogICAgICAgICAgICAnZG9sbGFyaW5mZXJpb3InID0+ICcweGY2ZTMnLAogICAgICAgICAgICAnZG9sbGFyc3VwZXJpb3InID0+ICcweGY2ZTQnLAogICAgICAgICAgICAnaHlwaGVuaW5mZXJpb3InID0+ICcweGY2ZTUnLAogICAgICAgICAgICAnaHlwaGVuc3VwZXJpb3InID0+ICcweGY2ZTYnLAogICAgICAgICAgICAncGVyaW9kaW5mZXJpb3InID0+ICcweGY2ZTcnLAogICAgICAgICAgICAncGVyaW9kc3VwZXJpb3InID0+ICcweGY2ZTgnLAogICAgICAgICAgICAnYXN1cGVyaW9yJyA9PiAnMHhmNmU5JywKICAgICAgICAgICAgJ2JzdXBlcmlvcicgPT4gJzB4ZjZlYScsCiAgICAgICAgICAgICdkc3VwZXJpb3InID0+ICcweGY2ZWInLAogICAgICAgICAgICAnZXN1cGVyaW9yJyA9PiAnMHhmNmVjJywKICAgICAgICAgICAgJ2lzdXBlcmlvcicgPT4gJzB4ZjZlZCcsCiAgICAgICAgICAgICdsc3VwZXJpb3InID0+ICcweGY2ZWUnLAogICAgICAgICAgICAnbXN1cGVyaW9yJyA9PiAnMHhmNmVmJywKICAgICAgICAgICAgJ29zdXBlcmlvcicgPT4gJzB4ZjZmMCcsCiAgICAgICAgICAgICdyc3VwZXJpb3InID0+ICcweGY2ZjEnLAogICAgICAgICAgICAnc3N1cGVyaW9yJyA9PiAnMHhmNmYyJywKICAgICAgICAgICAgJ3RzdXBlcmlvcicgPT4gJzB4ZjZmMycsCiAgICAgICAgICAgICdCcmV2ZXNtYWxsJyA9PiAnMHhmNmY0JywKICAgICAgICAgICAgJ0Nhcm9uc21hbGwnID0+ICcweGY2ZjUnLAogICAgICAgICAgICAnQ2lyY3VtZmxleHNtYWxsJyA9PiAnMHhmNmY2JywKICAgICAgICAgICAgJ0RvdGFjY2VudHNtYWxsJyA9PiAnMHhmNmY3JywKICAgICAgICAgICAgJ0h1bmdhcnVtbGF1dHNtYWxsJyA9PiAnMHhmNmY4JywKICAgICAgICAgICAgJ0xzbGFzaHNtYWxsJyA9PiAnMHhmNmY5JywKICAgICAgICAgICAgJ09Fc21hbGwnID0+ICcweGY2ZmEnLAogICAgICAgICAgICAnT2dvbmVrc21hbGwnID0+ICcweGY2ZmInLAogICAgICAgICAgICAnUmluZ3NtYWxsJyA9PiAnMHhmNmZjJywKICAgICAgICAgICAgJ1NjYXJvbnNtYWxsJyA9PiAnMHhmNmZkJywKICAgICAgICAgICAgJ1RpbGRlc21hbGwnID0+ICcweGY2ZmUnLAogICAgICAgICAgICAnWmNhcm9uc21hbGwnID0+ICcweGY2ZmYnLAogICAgICAgICAgICAnZXhjbGFtc21hbGwnID0+ICcweGY3MjEnLAogICAgICAgICAgICAnZG9sbGFyb2xkc3R5bGUnID0+ICcweGY3MjQnLAogICAgICAgICAgICAnYW1wZXJzYW5kc21hbGwnID0+ICcweGY3MjYnLAogICAgICAgICAgICAnemVyb29sZHN0eWxlJyA9PiAnMHhmNzMwJywKICAgICAgICAgICAgJ29uZW9sZHN0eWxlJyA9PiAnMHhmNzMxJywKICAgICAgICAgICAgJ3R3b29sZHN0eWxlJyA9PiAnMHhmNzMyJywKICAgICAgICAgICAgJ3RocmVlb2xkc3R5bGUnID0+ICcweGY3MzMnLAogICAgICAgICAgICAnZm91cm9sZHN0eWxlJyA9PiAnMHhmNzM0JywKICAgICAgICAgICAgJ2ZpdmVvbGRzdHlsZScgPT4gJzB4ZjczNScsCiAgICAgICAgICAgICdzaXhvbGRzdHlsZScgPT4gJzB4ZjczNicsCiAgICAgICAgICAgICdzZXZlbm9sZHN0eWxlJyA9PiAnMHhmNzM3JywKICAgICAgICAgICAgJ2VpZ2h0b2xkc3R5bGUnID0+ICcweGY3MzgnLAogICAgICAgICAgICAnbmluZW9sZHN0eWxlJyA9PiAnMHhmNzM5JywKICAgICAgICAgICAgJ3F1ZXN0aW9uc21hbGwnID0+ICcweGY3M2YnLAogICAgICAgICAgICAnR3JhdmVzbWFsbCcgPT4gJzB4Zjc2MCcsCiAgICAgICAgICAgICdBc21hbGwnID0+ICcweGY3NjEnLAogICAgICAgICAgICAnQnNtYWxsJyA9PiAnMHhmNzYyJywKICAgICAgICAgICAgJ0NzbWFsbCcgPT4gJzB4Zjc2MycsCiAgICAgICAgICAgICdEc21hbGwnID0+ICcweGY3NjQnLAogICAgICAgICAgICAnRXNtYWxsJyA9PiAnMHhmNzY1JywKICAgICAgICAgICAgJ0ZzbWFsbCcgPT4gJzB4Zjc2NicsCiAgICAgICAgICAgICdHc21hbGwnID0+ICcweGY3NjcnLAogICAgICAgICAgICAnSHNtYWxsJyA9PiAnMHhmNzY4JywKICAgICAgICAgICAgJ0lzbWFsbCcgPT4gJzB4Zjc2OScsCiAgICAgICAgICAgICdKc21hbGwnID0+ICcweGY3NmEnLAogICAgICAgICAgICAnS3NtYWxsJyA9PiAnMHhmNzZiJywKICAgICAgICAgICAgJ0xzbWFsbCcgPT4gJzB4Zjc2YycsCiAgICAgICAgICAgICdNc21hbGwnID0+ICcweGY3NmQnLAogICAgICAgICAgICAnTnNtYWxsJyA9PiAnMHhmNzZlJywKICAgICAgICAgICAgJ09zbWFsbCcgPT4gJzB4Zjc2ZicsCiAgICAgICAgICAgICdQc21hbGwnID0+ICcweGY3NzAnLAogICAgICAgICAgICAnUXNtYWxsJyA9PiAnMHhmNzcxJywKICAgICAgICAgICAgJ1JzbWFsbCcgPT4gJzB4Zjc3MicsCiAgICAgICAgICAgICdTc21hbGwnID0+ICcweGY3NzMnLAogICAgICAgICAgICAnVHNtYWxsJyA9PiAnMHhmNzc0JywKICAgICAgICAgICAgJ1VzbWFsbCcgPT4gJzB4Zjc3NScsCiAgICAgICAgICAgICdWc21hbGwnID0+ICcweGY3NzYnLAogICAgICAgICAgICAnV3NtYWxsJyA9PiAnMHhmNzc3JywKICAgICAgICAgICAgJ1hzbWFsbCcgPT4gJzB4Zjc3OCcsCiAgICAgICAgICAgICdZc21hbGwnID0+ICcweGY3NzknLAogICAgICAgICAgICAnWnNtYWxsJyA9PiAnMHhmNzdhJywKICAgICAgICAgICAgJ2V4Y2xhbWRvd25zbWFsbCcgPT4gJzB4ZjdhMScsCiAgICAgICAgICAgICdjZW50b2xkc3R5bGUnID0+ICcweGY3YTInLAogICAgICAgICAgICAnRGllcmVzaXNzbWFsbCcgPT4gJzB4ZjdhOCcsCiAgICAgICAgICAgICdNYWNyb25zbWFsbCcgPT4gJzB4ZjdhZicsCiAgICAgICAgICAgICdBY3V0ZXNtYWxsJyA9PiAnMHhmN2I0JywKICAgICAgICAgICAgJ0NlZGlsbGFzbWFsbCcgPT4gJzB4ZjdiOCcsCiAgICAgICAgICAgICdxdWVzdGlvbmRvd25zbWFsbCcgPT4gJzB4ZjdiZicsCiAgICAgICAgICAgICdBZ3JhdmVzbWFsbCcgPT4gJzB4ZjdlMCcsCiAgICAgICAgICAgICdBYWN1dGVzbWFsbCcgPT4gJzB4ZjdlMScsCiAgICAgICAgICAgICdBY2lyY3VtZmxleHNtYWxsJyA9PiAnMHhmN2UyJywKICAgICAgICAgICAgJ0F0aWxkZXNtYWxsJyA9PiAnMHhmN2UzJywKICAgICAgICAgICAgJ0FkaWVyZXNpc3NtYWxsJyA9PiAnMHhmN2U0JywKICAgICAgICAgICAgJ0FyaW5nc21hbGwnID0+ICcweGY3ZTUnLAogICAgICAgICAgICAnQUVzbWFsbCcgPT4gJzB4ZjdlNicsCiAgICAgICAgICAgICdDY2VkaWxsYXNtYWxsJyA9PiAnMHhmN2U3JywKICAgICAgICAgICAgJ0VncmF2ZXNtYWxsJyA9PiAnMHhmN2U4JywKICAgICAgICAgICAgJ0VhY3V0ZXNtYWxsJyA9PiAnMHhmN2U5JywKICAgICAgICAgICAgJ0VjaXJjdW1mbGV4c21hbGwnID0+ICcweGY3ZWEnLAogICAgICAgICAgICAnRWRpZXJlc2lzc21hbGwnID0+ICcweGY3ZWInLAogICAgICAgICAgICAnSWdyYXZlc21hbGwnID0+ICcweGY3ZWMnLAogICAgICAgICAgICAnSWFjdXRlc21hbGwnID0+ICcweGY3ZWQnLAogICAgICAgICAgICAnSWNpcmN1bWZsZXhzbWFsbCcgPT4gJzB4ZjdlZScsCiAgICAgICAgICAgICdJZGllcmVzaXNzbWFsbCcgPT4gJzB4ZjdlZicsCiAgICAgICAgICAgICdFdGhzbWFsbCcgPT4gJzB4ZjdmMCcsCiAgICAgICAgICAgICdOdGlsZGVzbWFsbCcgPT4gJzB4ZjdmMScsCiAgICAgICAgICAgICdPZ3JhdmVzbWFsbCcgPT4gJzB4ZjdmMicsCiAgICAgICAgICAgICdPYWN1dGVzbWFsbCcgPT4gJzB4ZjdmMycsCiAgICAgICAgICAgICdPY2lyY3VtZmxleHNtYWxsJyA9PiAnMHhmN2Y0JywKICAgICAgICAgICAgJ090aWxkZXNtYWxsJyA9PiAnMHhmN2Y1JywKICAgICAgICAgICAgJ09kaWVyZXNpc3NtYWxsJyA9PiAnMHhmN2Y2JywKICAgICAgICAgICAgJ09zbGFzaHNtYWxsJyA9PiAnMHhmN2Y4JywKICAgICAgICAgICAgJ1VncmF2ZXNtYWxsJyA9PiAnMHhmN2Y5JywKICAgICAgICAgICAgJ1VhY3V0ZXNtYWxsJyA9PiAnMHhmN2ZhJywKICAgICAgICAgICAgJ1VjaXJjdW1mbGV4c21hbGwnID0+ICcweGY3ZmInLAogICAgICAgICAgICAnVWRpZXJlc2lzc21hbGwnID0+ICcweGY3ZmMnLAogICAgICAgICAgICAnWWFjdXRlc21hbGwnID0+ICcweGY3ZmQnLAogICAgICAgICAgICAnVGhvcm5zbWFsbCcgPT4gJzB4ZjdmZScsCiAgICAgICAgICAgICdZZGllcmVzaXNzbWFsbCcgPT4gJzB4ZjdmZicsCiAgICAgICAgICAgICdyYWRpY2FsZXgnID0+ICcweGY4ZTUnLAogICAgICAgICAgICAnYXJyb3d2ZXJ0ZXgnID0+ICcweGY4ZTYnLAogICAgICAgICAgICAnYXJyb3dob3JpemV4JyA9PiAnMHhmOGU3JywKICAgICAgICAgICAgJ3JlZ2lzdGVyc2FucycgPT4gJzB4ZjhlOCcsCiAgICAgICAgICAgICdjb3B5cmlnaHRzYW5zJyA9PiAnMHhmOGU5JywKICAgICAgICAgICAgJ3RyYWRlbWFya3NhbnMnID0+ICcweGY4ZWEnLAogICAgICAgICAgICAncGFyZW5sZWZ0dHAnID0+ICcweGY4ZWInLAogICAgICAgICAgICAncGFyZW5sZWZ0ZXgnID0+ICcweGY4ZWMnLAogICAgICAgICAgICAncGFyZW5sZWZ0YnQnID0+ICcweGY4ZWQnLAogICAgICAgICAgICAnYnJhY2tldGxlZnR0cCcgPT4gJzB4ZjhlZScsCiAgICAgICAgICAgICdicmFja2V0bGVmdGV4JyA9PiAnMHhmOGVmJywKICAgICAgICAgICAgJ2JyYWNrZXRsZWZ0YnQnID0+ICcweGY4ZjAnLAogICAgICAgICAgICAnYnJhY2VsZWZ0dHAnID0+ICcweGY4ZjEnLAogICAgICAgICAgICAnYnJhY2VsZWZ0bWlkJyA9PiAnMHhmOGYyJywKICAgICAgICAgICAgJ2JyYWNlbGVmdGJ0JyA9PiAnMHhmOGYzJywKICAgICAgICAgICAgJ2JyYWNlZXgnID0+ICcweGY4ZjQnLAogICAgICAgICAgICAnaW50ZWdyYWxleCcgPT4gJzB4ZjhmNScsCiAgICAgICAgICAgICdwYXJlbnJpZ2h0dHAnID0+ICcweGY4ZjYnLAogICAgICAgICAgICAncGFyZW5yaWdodGV4JyA9PiAnMHhmOGY3JywKICAgICAgICAgICAgJ3BhcmVucmlnaHRidCcgPT4gJzB4ZjhmOCcsCiAgICAgICAgICAgICdicmFja2V0cmlnaHR0cCcgPT4gJzB4ZjhmOScsCiAgICAgICAgICAgICdicmFja2V0cmlnaHRleCcgPT4gJzB4ZjhmYScsCiAgICAgICAgICAgICdicmFja2V0cmlnaHRidCcgPT4gJzB4ZjhmYicsCiAgICAgICAgICAgICdicmFjZXJpZ2h0dHAnID0+ICcweGY4ZmMnLAogICAgICAgICAgICAnYnJhY2VyaWdodG1pZCcgPT4gJzB4ZjhmZCcsCiAgICAgICAgICAgICdicmFjZXJpZ2h0YnQnID0+ICcweGY4ZmUnLAogICAgICAgICAgICAnZmYnID0+ICcweGZiMDAnLAogICAgICAgICAgICAnZmknID0+ICcweGZiMDEnLAogICAgICAgICAgICAnZmwnID0+ICcweGZiMDInLAogICAgICAgICAgICAnZmZpJyA9PiAnMHhmYjAzJywKICAgICAgICAgICAgJ2ZmbCcgPT4gJzB4ZmIwNCcsCiAgICAgICAgICAgICdhZmlpNTc3MDUnID0+ICcweGZiMWYnLAogICAgICAgICAgICAnYWZpaTU3Njk0JyA9PiAnMHhmYjJhJywKICAgICAgICAgICAgJ2FmaWk1NzY5NScgPT4gJzB4ZmIyYicsCiAgICAgICAgICAgICdhZmlpNTc3MjMnID0+ICcweGZiMzUnLAogICAgICAgICAgICAnYWZpaTU3NzAwJyA9PiAnMHhmYjRiJywKICAgICAgICBdOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29kZVBvaW50KCRnbHlwaCkKICAgIHsKICAgICAgICAkZ2x5cGhzTWFwID0gc3RhdGljOjpnZXRHbHlwaHMoKTsKCiAgICAgICAgaWYgKGlzc2V0KCRnbHlwaHNNYXBbJGdseXBoXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGhleGRlYygkZ2x5cGhzTWFwWyRnbHlwaF0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRnbHlwaDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding/StandardEncoding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKLy8gU291cmNlIDogaHR0cDovL2NwYW5zZWFyY2gucGVybC5vcmcvc3JjL0pWL1Bvc3RTY3JpcHQtRm9udC0xLjEwLjAyL2xpYi9Qb3N0U2NyaXB0L1N0YW5kYXJkRW5jb2RpbmcucG0KCm5hbWVzcGFjZSBTbWFsb3RcUGRmUGFyc2VyXEVuY29kaW5nOwoKLyoqCiAqIENsYXNzIFN0YW5kYXJkRW5jb2RpbmcKICovCmNsYXNzIFN0YW5kYXJkRW5jb2RpbmcKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFRyYW5zbGF0aW9ucygpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICdzcGFjZSBleGNsYW0gcXVvdGVkYmwgbnVtYmVyc2lnbiBkb2xsYXIgcGVyY2VudCBhbXBlcnNhbmQgcXVvdGVyaWdodCAnLgogICAgICAgICAgJ3BhcmVubGVmdCBwYXJlbnJpZ2h0IGFzdGVyaXNrIHBsdXMgY29tbWEgaHlwaGVuIHBlcmlvZCBzbGFzaCB6ZXJvICcuCiAgICAgICAgICAnb25lIHR3byB0aHJlZSBmb3VyIGZpdmUgc2l4IHNldmVuIGVpZ2h0IG5pbmUgY29sb24gc2VtaWNvbG9uIGxlc3MgJy4KICAgICAgICAgICdlcXVhbCBncmVhdGVyIHF1ZXN0aW9uIGF0IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVICcuCiAgICAgICAgICAnViBXIFggWSBaIGJyYWNrZXRsZWZ0IGJhY2tzbGFzaCBicmFja2V0cmlnaHQgYXNjaWljaXJjdW0gdW5kZXJzY29yZSAnLgogICAgICAgICAgJ3F1b3RlbGVmdCBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogJy4KICAgICAgICAgICdicmFjZWxlZnQgYmFyIGJyYWNlcmlnaHQgYXNjaWl0aWxkZSAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmICcuCiAgICAgICAgICAnLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmICcuCiAgICAgICAgICAnLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmICcuCiAgICAgICAgICAnLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmICcuCiAgICAgICAgICAnLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgZXhjbGFtZG93biBjZW50ICcuCiAgICAgICAgICAnc3RlcmxpbmcgZnJhY3Rpb24geWVuIGZsb3JpbiBzZWN0aW9uIGN1cnJlbmN5IHF1b3Rlc2luZ2xlICcuCiAgICAgICAgICAncXVvdGVkYmxsZWZ0IGd1aWxsZW1vdGxlZnQgZ3VpbHNpbmdsbGVmdCBndWlsc2luZ2xyaWdodCBmaSBmbCAnLgogICAgICAgICAgJy5ub3RkZWYgZW5kYXNoIGRhZ2dlciBkYWdnZXJkYmwgcGVyaW9kY2VudGVyZWQgLm5vdGRlZiBwYXJhZ3JhcGggJy4KICAgICAgICAgICdidWxsZXQgcXVvdGVzaW5nbGJhc2UgcXVvdGVkYmxiYXNlIHF1b3RlZGJscmlnaHQgZ3VpbGxlbW90cmlnaHQgJy4KICAgICAgICAgICdlbGxpcHNpcyBwZXJ0aG91c2FuZCAubm90ZGVmIHF1ZXN0aW9uZG93biAubm90ZGVmIGdyYXZlIGFjdXRlICcuCiAgICAgICAgICAnY2lyY3VtZmxleCB0aWxkZSBtYWNyb24gYnJldmUgZG90YWNjZW50IGRpZXJlc2lzIC5ub3RkZWYgcmluZyAnLgogICAgICAgICAgJ2NlZGlsbGEgLm5vdGRlZiBodW5nYXJ1bWxhdXQgb2dvbmVrIGNhcm9uIGVtZGFzaCAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiBBRSAubm90ZGVmICcuCiAgICAgICAgICAnb3JkZmVtaW5pbmUgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiBMc2xhc2ggT3NsYXNoIE9FICcuCiAgICAgICAgICAnb3JkbWFzY3VsaW5lIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiBhZSAubm90ZGVmICcuCiAgICAgICAgICAnLm5vdGRlZiAubm90ZGVmIGRvdGxlc3NpIC5ub3RkZWYgLm5vdGRlZiBsc2xhc2ggb3NsYXNoIG9lIGdlcm1hbmRibHMgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmJzsKCiAgICAgICAgcmV0dXJuIGV4cGxvZGUoJyAnLCAkZW5jb2RpbmcpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Encoding/WinAnsiEncoding.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKLy8gU291cmNlIDogaHR0cDovL2NwYW5zZWFyY2gucGVybC5vcmcvc3JjL0pWL1Bvc3RTY3JpcHQtRm9udC0xLjEwLjAyL2xpYi9Qb3N0U2NyaXB0L1dpbkFOU0lFbmNvZGluZy5wbQoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRW5jb2Rpbmc7CgovKioKICogQ2xhc3MgV2luQW5zaUVuY29kaW5nCiAqLwpjbGFzcyBXaW5BbnNpRW5jb2RpbmcKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFRyYW5zbGF0aW9ucygpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICcubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgLm5vdGRlZiAubm90ZGVmIC5ub3RkZWYgJy4KICAgICAgICAgICdzcGFjZSBleGNsYW0gcXVvdGVkYmwgbnVtYmVyc2lnbiBkb2xsYXIgcGVyY2VudCBhbXBlcnNhbmQgcXVvdGVzaW5nbGUgJy4KICAgICAgICAgICdwYXJlbmxlZnQgcGFyZW5yaWdodCBhc3RlcmlzayBwbHVzIGNvbW1hIGh5cGhlbiBwZXJpb2Qgc2xhc2ggemVybyBvbmUgJy4KICAgICAgICAgICd0d28gdGhyZWUgZm91ciBmaXZlIHNpeCBzZXZlbiBlaWdodCBuaW5lIGNvbG9uIHNlbWljb2xvbiBsZXNzIGVxdWFsICcuCiAgICAgICAgICAnZ3JlYXRlciBxdWVzdGlvbiBhdCBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCAnLgogICAgICAgICAgJ1kgWiBicmFja2V0bGVmdCBiYWNrc2xhc2ggYnJhY2tldHJpZ2h0IGFzY2lpY2lyY3VtIHVuZGVyc2NvcmUgJy4KICAgICAgICAgICdncmF2ZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogJy4KICAgICAgICAgICdicmFjZWxlZnQgYmFyIGJyYWNlcmlnaHQgYXNjaWl0aWxkZSBidWxsZXQgRXVybyBidWxsZXQgcXVvdGVzaW5nbGJhc2UgJy4KICAgICAgICAgICdmbG9yaW4gcXVvdGVkYmxiYXNlIGVsbGlwc2lzIGRhZ2dlciBkYWdnZXJkYmwgY2lyY3VtZmxleCBwZXJ0aG91c2FuZCAnLgogICAgICAgICAgJ1NjYXJvbiBndWlsc2luZ2xsZWZ0IE9FIGJ1bGxldCBaY2Fyb24gYnVsbGV0IGJ1bGxldCBxdW90ZWxlZnQgcXVvdGVyaWdodCAnLgogICAgICAgICAgJ3F1b3RlZGJsbGVmdCBxdW90ZWRibHJpZ2h0IGJ1bGxldCBlbmRhc2ggZW1kYXNoIHRpbGRlIHRyYWRlbWFyayBzY2Fyb24gJy4KICAgICAgICAgICdndWlsc2luZ2xyaWdodCBvZSBidWxsZXQgemNhcm9uIFlkaWVyZXNpcyBzcGFjZSBleGNsYW1kb3duIGNlbnQgJy4KICAgICAgICAgICdzdGVybGluZyBjdXJyZW5jeSB5ZW4gYnJva2VuYmFyIHNlY3Rpb24gZGllcmVzaXMgY29weXJpZ2h0ICcuCiAgICAgICAgICAnb3JkZmVtaW5pbmUgZ3VpbGxlbW90bGVmdCBsb2dpY2Fsbm90IGh5cGhlbiByZWdpc3RlcmVkIG1hY3JvbiBkZWdyZWUgJy4KICAgICAgICAgICdwbHVzbWludXMgdHdvc3VwZXJpb3IgdGhyZWVzdXBlcmlvciBhY3V0ZSBtdSBwYXJhZ3JhcGggJy4KICAgICAgICAgICdwZXJpb2RjZW50ZXJlZCBjZWRpbGxhIG9uZXN1cGVyaW9yIG9yZG1hc2N1bGluZSBndWlsbGVtb3RyaWdodCAnLgogICAgICAgICAgJ29uZXF1YXJ0ZXIgb25laGFsZiB0aHJlZXF1YXJ0ZXJzIHF1ZXN0aW9uZG93biBBZ3JhdmUgQWFjdXRlICcuCiAgICAgICAgICAnQWNpcmN1bWZsZXggQXRpbGRlIEFkaWVyZXNpcyBBcmluZyBBRSBDY2VkaWxsYSBFZ3JhdmUgRWFjdXRlICcuCiAgICAgICAgICAnRWNpcmN1bWZsZXggRWRpZXJlc2lzIElncmF2ZSBJYWN1dGUgSWNpcmN1bWZsZXggSWRpZXJlc2lzIEV0aCBOdGlsZGUgJy4KICAgICAgICAgICdPZ3JhdmUgT2FjdXRlIE9jaXJjdW1mbGV4IE90aWxkZSBPZGllcmVzaXMgbXVsdGlwbHkgT3NsYXNoIFVncmF2ZSAnLgogICAgICAgICAgJ1VhY3V0ZSBVY2lyY3VtZmxleCBVZGllcmVzaXMgWWFjdXRlIFRob3JuIGdlcm1hbmRibHMgYWdyYXZlIGFhY3V0ZSAnLgogICAgICAgICAgJ2FjaXJjdW1mbGV4IGF0aWxkZSBhZGllcmVzaXMgYXJpbmcgYWUgY2NlZGlsbGEgZWdyYXZlIGVhY3V0ZSAnLgogICAgICAgICAgJ2VjaXJjdW1mbGV4IGVkaWVyZXNpcyBpZ3JhdmUgaWFjdXRlIGljaXJjdW1mbGV4IGlkaWVyZXNpcyBldGggbnRpbGRlICcuCiAgICAgICAgICAnb2dyYXZlIG9hY3V0ZSBvY2lyY3VtZmxleCBvdGlsZGUgb2RpZXJlc2lzIGRpdmlkZSBvc2xhc2ggdWdyYXZlICcuCiAgICAgICAgICAndWFjdXRlIHVjaXJjdW1mbGV4IHVkaWVyZXNpcyB5YWN1dGUgdGhvcm4geWRpZXJlc2lzJzsKCiAgICAgICAgcmV0dXJuIGV4cGxvZGUoJyAnLCAkZW5jb2RpbmcpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7Cgp1c2UgU21hbG90XFBkZlBhcnNlclxFbmNvZGluZ1xXaW5BbnNpRW5jb2Rpbmc7CgovKioKICogQ2xhc3MgRm9udAogKi8KY2xhc3MgRm9udCBleHRlbmRzIFBERk9iamVjdAp7CiAgICBjb25zdCBNSVNTSU5HID0gJz8nOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHRhYmxlID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICR0YWJsZVNpemVzID0gbnVsbDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdCgpCiAgICB7CiAgICAgICAgLy8gTG9hZCB0cmFuc2xhdGUgdGFibGUuCiAgICAgICAgJHRoaXMtPmxvYWRUcmFuc2xhdGVUYWJsZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGFzKCdCYXNlRm9udCcpID8gKHN0cmluZykgJHRoaXMtPmdldCgnQmFzZUZvbnQnKSA6ICdbVW5rbm93bl0nOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiAoc3RyaW5nKSAkdGhpcy0+aGVhZGVyLT5nZXQoJ1N1YnR5cGUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERldGFpbHMoJGRlZXAgPSB0cnVlKQogICAgewogICAgICAgICRkZXRhaWxzID0gW107CgogICAgICAgICRkZXRhaWxzWydOYW1lJ10gPSAkdGhpcy0+Z2V0TmFtZSgpOwogICAgICAgICRkZXRhaWxzWydUeXBlJ10gPSAkdGhpcy0+Z2V0VHlwZSgpOwogICAgICAgICRkZXRhaWxzWydFbmNvZGluZyddID0gKCR0aGlzLT5oYXMoJ0VuY29kaW5nJykgPyAoc3RyaW5nKSAkdGhpcy0+Z2V0KCdFbmNvZGluZycpIDogJ0Fuc2knKTsKCiAgICAgICAgJGRldGFpbHMgKz0gcGFyZW50OjpnZXREZXRhaWxzKCRkZWVwKTsKCiAgICAgICAgcmV0dXJuICRkZXRhaWxzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2hhcgogICAgICogQHBhcmFtIGJvb2wgICAkdXNlX2RlZmF1bHQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0cmFuc2xhdGVDaGFyKCRjaGFyLCAkdXNlX2RlZmF1bHQgPSB0cnVlKQogICAgewogICAgICAgICRkZWMgPSBoZXhkZWMoYmluMmhleCgkY2hhcikpOwoKICAgICAgICBpZiAoXGFycmF5X2tleV9leGlzdHMoJGRlYywgJHRoaXMtPnRhYmxlKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnRhYmxlWyRkZWNdOwogICAgICAgIH0KCiAgICAgICAgLy8gZmFsbGJhY2sgZm9yIGRlY29kaW5nIHNpbmdsZS1ieXRlIEFOU0kgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgaW4gdGhlIGxvb2t1cCB0YWJsZQogICAgICAgICRmYWxsYmFja0RlY29kZWQgPSAkY2hhcjsKICAgICAgICBpZiAoCiAgICAgICAgICAgIFxzdHJsZW4oJGNoYXIpIDwgMgogICAgICAgICAgICAmJiAkdGhpcy0+aGFzKCdFbmNvZGluZycpCiAgICAgICAgICAgICYmICR0aGlzLT5nZXQoJ0VuY29kaW5nJykgaW5zdGFuY2VvZiBFbmNvZGluZwogICAgICAgICAgICAmJiBXaW5BbnNpRW5jb2Rpbmc6OmNsYXNzID09PSAkdGhpcy0+Z2V0KCdFbmNvZGluZycpLT5fX3RvU3RyaW5nKCkKICAgICAgICApIHsKICAgICAgICAgICAgJGZhbGxiYWNrRGVjb2RlZCA9IHNlbGY6OnVjaHIoJGRlYyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVzZV9kZWZhdWx0ID8gc2VsZjo6TUlTU0lORyA6ICRmYWxsYmFja0RlY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRjb2RlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1Y2hyKCRjb2RlKQogICAgewogICAgICAgIC8vIGh0bWxfZW50aXR5X2RlY29kZSgpIHdpbGwgbm90IHdvcmsgd2l0aCBVVEYtMTYgb3IgVVRGLTMyIGNoYXIgZW50aXRpZXMsCiAgICAgICAgLy8gdGhlcmVmb3JlLCB3ZSB1c2UgbWJfY29udmVydF9lbmNvZGluZygpIGluc3RlYWQKICAgICAgICByZXR1cm4gbWJfY29udmVydF9lbmNvZGluZygnJiMnLigoaW50KSAkY29kZSkuJzsnLCAnVVRGLTgnLCAnSFRNTC1FTlRJVElFUycpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZFRyYW5zbGF0ZVRhYmxlKCkKICAgIHsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnRhYmxlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dGFibGU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dGFibGUgPSBbXTsKICAgICAgICAkdGhpcy0+dGFibGVTaXplcyA9IFsKICAgICAgICAgICAgJ2Zyb20nID0+IDEsCiAgICAgICAgICAgICd0bycgPT4gMSwKICAgICAgICBdOwoKICAgICAgICBpZiAoJHRoaXMtPmhhcygnVG9Vbmljb2RlJykpIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSAkdGhpcy0+Z2V0KCdUb1VuaWNvZGUnKS0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICAkbWF0Y2hlcyA9IFtdOwoKICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgbXVsdGlwbGUgc3BhY2VyYW5nZSBzZWN0aW9ucwogICAgICAgICAgICBpZiAocHJlZ19tYXRjaF9hbGwoJy9iZWdpbmNvZGVzcGFjZXJhbmdlKD9QPHNlY3Rpb25zPi4qPyllbmRjb2Rlc3BhY2VyYW5nZS9zJywgJGNvbnRlbnQsICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJG1hdGNoZXNbJ3NlY3Rpb25zJ10gYXMgJHNlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAkcmVnZXhwID0gJy88KD9QPGZyb20+WzAtOUEtRl0rKT4gKjwoP1A8dG8+WzAtOUEtRl0rKT5bIFxyXG5dKy9pcyc7CgogICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCRyZWdleHAsICRzZWN0aW9uLCAkbWF0Y2hlcyk7CgogICAgICAgICAgICAgICAgICAgICR0aGlzLT50YWJsZVNpemVzID0gWwogICAgICAgICAgICAgICAgICAgICAgICAnZnJvbScgPT4gbWF4KDEsIFxzdHJsZW4oY3VycmVudCgkbWF0Y2hlc1snZnJvbSddKSkgLyAyKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3RvJyA9PiBtYXgoMSwgXHN0cmxlbihjdXJyZW50KCRtYXRjaGVzWyd0byddKSkgLyAyKSwKICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgbXVsdGlwbGUgYmZjaGFyIHNlY3Rpb25zCiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoX2FsbCgnL2JlZ2luYmZjaGFyKD9QPHNlY3Rpb25zPi4qPyllbmRiZmNoYXIvcycsICRjb250ZW50LCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzWydzZWN0aW9ucyddIGFzICRzZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlZ2V4cCA9ICcvPCg/UDxmcm9tPlswLTlBLUZdKyk+ICs8KD9QPHRvPlswLTlBLUZdKyk+WyBcclxuXSsvaXMnOwoKICAgICAgICAgICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgkcmVnZXhwLCAkc2VjdGlvbiwgJG1hdGNoZXMpOwoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dGFibGVTaXplc1snZnJvbSddID0gbWF4KDEsIFxzdHJsZW4oY3VycmVudCgkbWF0Y2hlc1snZnJvbSddKSkgLyAyKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJG1hdGNoZXNbJ2Zyb20nXSBhcyAka2V5ID0+ICRmcm9tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0cyA9IHByZWdfc3BsaXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLyhbMC05QS1GXXs0fSkvaScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0Y2hlc1sndG8nXVska2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcUFJFR19TUExJVF9OT19FTVBUWSB8IFxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSBzZWxmOjp1Y2hyKGhleGRlYygkcGFydCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50YWJsZVtoZXhkZWMoJGZyb20pXSA9ICR0ZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgbXVsdGlwbGUgYmZyYW5nZSBzZWN0aW9ucwogICAgICAgICAgICBpZiAocHJlZ19tYXRjaF9hbGwoJy9iZWdpbmJmcmFuZ2UoP1A8c2VjdGlvbnM+Lio/KWVuZGJmcmFuZ2UvcycsICRjb250ZW50LCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzWydzZWN0aW9ucyddIGFzICRzZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgOiA8c3JjQ29kZTE+IDxzcmNDb2RlMj4gPGRzdFN0cmluZz4KICAgICAgICAgICAgICAgICAgICAkcmVnZXhwID0gJy88KD9QPGZyb20+WzAtOUEtRl0rKT4gKjwoP1A8dG8+WzAtOUEtRl0rKT4gKjwoP1A8b2Zmc2V0PlswLTlBLUZdKyk+WyBcclxuXSsvaXMnOwoKICAgICAgICAgICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgkcmVnZXhwLCAkc2VjdGlvbiwgJG1hdGNoZXMpOwoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkbWF0Y2hlc1snZnJvbSddIGFzICRrZXkgPT4gJGZyb20pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXJfZnJvbSA9IGhleGRlYygkZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyX3RvID0gaGV4ZGVjKCRtYXRjaGVzWyd0byddWyRrZXldKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCA9IGhleGRlYygkbWF0Y2hlc1snb2Zmc2V0J11bJGtleV0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkY2hhciA9ICRjaGFyX2Zyb207ICRjaGFyIDw9ICRjaGFyX3RvOyArKyRjaGFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dGFibGVbJGNoYXJdID0gc2VsZjo6dWNocigkY2hhciAtICRjaGFyX2Zyb20gKyAkb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgOiA8c3JjQ29kZTE+IDxzcmNDb2RlTj4gWzxkc3RTdHJpbmcxPiA8ZHN0U3RyaW5nMj4gLi4uIDxkc3RTdHJpbmdOPl0KICAgICAgICAgICAgICAgICAgICAvLyBTb21lIFBERiBmaWxlIGhhcyAyLWJ5dGUgVW5pY29kZSB2YWx1ZXMgb24gbmV3IGxpbmVzID4gYWRkZWQgXHJcbgogICAgICAgICAgICAgICAgICAgICRyZWdleHAgPSAnLzwoP1A8ZnJvbT5bMC05QS1GXSspPiAqPCg/UDx0bz5bMC05QS1GXSspPiAqXFsoP1A8c3RyaW5ncz5bXHJcbjw+MC05QS1GIF0rKVxdWyBcclxuXSsvaXMnOwoKICAgICAgICAgICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgkcmVnZXhwLCAkc2VjdGlvbiwgJG1hdGNoZXMpOwoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkbWF0Y2hlc1snZnJvbSddIGFzICRrZXkgPT4gJGZyb20pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXJfZnJvbSA9IGhleGRlYygkZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmdzID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgnLzwoP1A8c3RyaW5nPlswLTlBLUZdKyk+ICovaXMnLCAkbWF0Y2hlc1snc3RyaW5ncyddWyRrZXldLCAkc3RyaW5ncyk7CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3RyaW5nc1snc3RyaW5nJ10gYXMgJHBvc2l0aW9uID0+ICRzdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0cyA9IHByZWdfc3BsaXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8oWzAtOUEtRl17NH0pL2knLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcUFJFR19TUExJVF9OT19FTVBUWSB8IFxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGV4dCA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQgLj0gc2VsZjo6dWNocihoZXhkZWMoJHBhcnQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50YWJsZVskY2hhcl9mcm9tICsgJHBvc2l0aW9uXSA9ICR0ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnRhYmxlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR0YWJsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VGFibGUoJHRhYmxlKQogICAgewogICAgICAgICR0aGlzLT50YWJsZSA9ICR0YWJsZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGhleGEKICAgICAqIEBwYXJhbSBib29sICAgJGFkZF9icmFjZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29kZUhleGFkZWNpbWFsKCRoZXhhLCAkYWRkX2JyYWNlcyA9IGZhbHNlKQogICAgewogICAgICAgIC8vIFNwZWNpYWwgc2hvcnRjdXQgZm9yIFhNTCBjb250ZW50LgogICAgICAgIGlmIChmYWxzZSAhPT0gc3RyaXBvcygkaGV4YSwgJzw/eG1sJykpIHsKICAgICAgICAgICAgcmV0dXJuICRoZXhhOwogICAgICAgIH0KCiAgICAgICAgJHRleHQgPSAnJzsKICAgICAgICAkcGFydHMgPSBwcmVnX3NwbGl0KCcvKDxbYS1mMC05XSs+KS9zaScsICRoZXhhLCAtMSwgXFBSRUdfU1BMSVRfTk9fRU1QVFkgfCBcUFJFR19TUExJVF9ERUxJTV9DQVBUVVJFKTsKCiAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXjwuKj4kL3MnLCAkcGFydCkgJiYgZmFsc2UgPT09IHN0cmlwb3MoJHBhcnQsICc8P3htbCcpKSB7CiAgICAgICAgICAgICAgICAvLyBzdHJpcCBsaW5lIGJyZWFrcwogICAgICAgICAgICAgICAgJHBhcnQgPSBwcmVnX3JlcGxhY2UoIi9bXHJcbl0vIiwgJycsICRwYXJ0KTsKICAgICAgICAgICAgICAgICRwYXJ0ID0gdHJpbSgkcGFydCwgJzw+Jyk7CiAgICAgICAgICAgICAgICBpZiAoJGFkZF9icmFjZXMpIHsKICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSAnKCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBhcnQgPSBwYWNrKCdIKicsICRwYXJ0KTsKICAgICAgICAgICAgICAgICR0ZXh0IC49ICgkYWRkX2JyYWNlcyA/IHByZWdfcmVwbGFjZSgnL1xcXC9zJywgJ1xcXFxcXCcsICRwYXJ0KSA6ICRwYXJ0KTsKCiAgICAgICAgICAgICAgICBpZiAoJGFkZF9icmFjZXMpIHsKICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSAnKSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAkcGFydDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZXh0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdGV4dAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlT2N0YWwoJHRleHQpCiAgICB7CiAgICAgICAgJHBhcnRzID0gcHJlZ19zcGxpdCgnLyhcXFxcXGR7M30pL3MnLCAkdGV4dCwgLTEsIFxQUkVHX1NQTElUX05PX0VNUFRZIHwgXFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSk7CiAgICAgICAgJHRleHQgPSAnJzsKCiAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxcXFxcZHszfSQvJywgJHBhcnQpKSB7CiAgICAgICAgICAgICAgICAkdGV4dCAuPSBcY2hyKG9jdGRlYyh0cmltKCRwYXJ0LCAnXFwnKSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRleHQgLj0gJHBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHRleHQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29kZUVudGl0aWVzKCR0ZXh0KQogICAgewogICAgICAgICRwYXJ0cyA9IHByZWdfc3BsaXQoJy8oI1xkezJ9KS9zJywgJHRleHQsIC0xLCBcUFJFR19TUExJVF9OT19FTVBUWSB8IFxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOwogICAgICAgICR0ZXh0ID0gJyc7CgogICAgICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgewogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14jXGR7Mn0kLycsICRwYXJ0KSkgewogICAgICAgICAgICAgICAgJHRleHQgLj0gXGNocihoZXhkZWModHJpbSgkcGFydCwgJyMnKSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRleHQgLj0gJHBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHRleHQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29kZVVuaWNvZGUoJHRleHQpCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHhGRVx4RkYvaScsICR0ZXh0KSkgewogICAgICAgICAgICAvLyBTdHJpcCBVK0ZFRkYgYnl0ZSBvcmRlciBtYXJrZXIuCiAgICAgICAgICAgICRkZWNvZGUgPSBzdWJzdHIoJHRleHQsIDIpOwogICAgICAgICAgICAkdGV4dCA9ICcnOwogICAgICAgICAgICAkbGVuZ3RoID0gXHN0cmxlbigkZGVjb2RlKTsKCiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRsZW5ndGg7ICRpICs9IDIpIHsKICAgICAgICAgICAgICAgICR0ZXh0IC49IHNlbGY6OnVjaHIoaGV4ZGVjKGJpbjJoZXgoc3Vic3RyKCRkZWNvZGUsICRpLCAyKSkpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZXh0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqCiAgICAgKiBAdG9kbyBEZXByZWNhdGVkLCB1c2UgJHRoaXMtPmNvbmZpZy0+Z2V0Rm9udFNwYWNlTGltaXQoKSBpbnN0ZWFkLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Rm9udFNwYWNlTGltaXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29uZmlnLT5nZXRGb250U3BhY2VMaW1pdCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRjb21tYW5kcwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNvZGVUZXh0KCRjb21tYW5kcykKICAgIHsKICAgICAgICAkdGV4dCA9ICcnOwogICAgICAgICR3b3JkX3Bvc2l0aW9uID0gMDsKICAgICAgICAkd29yZHMgPSBbXTsKICAgICAgICAkdW5pY29kZSA9IGZhbHNlOwogICAgICAgICRmb250X3NwYWNlID0gJHRoaXMtPmdldEZvbnRTcGFjZUxpbWl0KCk7CgogICAgICAgIGZvcmVhY2ggKCRjb21tYW5kcyBhcyAkY29tbWFuZCkgewogICAgICAgICAgICBzd2l0Y2ggKCRjb21tYW5kW1BERk9iamVjdDo6VFlQRV0pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgICAgIGlmICgoZmxvYXQpICh0cmltKCRjb21tYW5kW1BERk9iamVjdDo6Q09NTUFORF0pKSA8ICRmb250X3NwYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3b3JkX3Bvc2l0aW9uID0gXGNvdW50KCR3b3Jkcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICBjYXNlICc8JzoKICAgICAgICAgICAgICAgICAgICAvLyBEZWNvZGUgaGV4YWRlY2ltYWwuCiAgICAgICAgICAgICAgICAgICAgJHRleHQgPSBzZWxmOjpkZWNvZGVIZXhhZGVjaW1hbCgnPCcuJGNvbW1hbmRbUERGT2JqZWN0OjpDT01NQU5EXS4nPicpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgLy8gRGVjb2RlIG9jdGFsIChpZiBuZWNlc3NhcnkpLgogICAgICAgICAgICAgICAgICAgICR0ZXh0ID0gc2VsZjo6ZGVjb2RlT2N0YWwoJGNvbW1hbmRbUERGT2JqZWN0OjpDT01NQU5EXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlcGxhY2UgZXNjYXBlZCBjaGFycwogICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKAogICAgICAgICAgICAgICAgWydcXFxcJywgJ1woJywgJ1wpJywgJ1xuJywgJ1xyJywgJ1x0JywgJ1xmJywgJ1wgJ10sCiAgICAgICAgICAgICAgICBbJ1xcJywgJygnLCAnKScsICJcbiIsICJcciIsICJcdCIsICJcZiIsICcgJ10sCiAgICAgICAgICAgICAgICAkdGV4dAogICAgICAgICAgICApOwoKICAgICAgICAgICAgLy8gYWRkIGNvbnRlbnQgdG8gcmVzdWx0IHN0cmluZwogICAgICAgICAgICBpZiAoaXNzZXQoJHdvcmRzWyR3b3JkX3Bvc2l0aW9uXSkpIHsKICAgICAgICAgICAgICAgICR3b3Jkc1skd29yZF9wb3NpdGlvbl0gLj0gJHRleHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkd29yZHNbJHdvcmRfcG9zaXRpb25dID0gJHRleHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR3b3JkcyBhcyAmJHdvcmQpIHsKICAgICAgICAgICAgJHdvcmQgPSAkdGhpcy0+ZGVjb2RlQ29udGVudCgkd29yZCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnICcsICR3b3Jkcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZXh0CiAgICAgKiBAcGFyYW0gYm9vbCAgICR1bmljb2RlIFRoaXMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIG1pZ2h0IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNvZGVDb250ZW50KCR0ZXh0LCAmJHVuaWNvZGUgPSBudWxsKQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzKCdUb1VuaWNvZGUnKSkgewogICAgICAgICAgICAkYnl0ZXMgPSAkdGhpcy0+dGFibGVTaXplc1snZnJvbSddOwoKICAgICAgICAgICAgaWYgKCRieXRlcykgewogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICcnOwogICAgICAgICAgICAgICAgJGxlbmd0aCA9IFxzdHJsZW4oJHRleHQpOwoKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRsZW5ndGg7ICRpICs9ICRieXRlcykgewogICAgICAgICAgICAgICAgICAgICRjaGFyID0gc3Vic3RyKCR0ZXh0LCAkaSwgJGJ5dGVzKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbHNlICE9PSAoJGRlY29kZWQgPSAkdGhpcy0+dHJhbnNsYXRlQ2hhcigkY2hhciwgZmFsc2UpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hhciA9ICRkZWNvZGVkOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+aGFzKCdEZXNjZW5kYW50Rm9udHMnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdldCgnRGVzY2VuZGFudEZvbnRzJykgaW5zdGFuY2VvZiBQREZPYmplY3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb250cyA9ICR0aGlzLT5nZXQoJ0Rlc2NlbmRhbnRGb250cycpLT5nZXRIZWFkZXIoKS0+Z2V0RWxlbWVudHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb250cyA9ICR0aGlzLT5nZXQoJ0Rlc2NlbmRhbnRGb250cycpLT5nZXRDb250ZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGRlY29kZWQgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmb250cyBhcyAkZm9udCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmb250IGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxzZSAhPT0gKCRkZWNvZGVkID0gJGZvbnQtPnRyYW5zbGF0ZUNoYXIoJGNoYXIsIGZhbHNlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlY29kZWQgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRkZWNvZGVkLCAnVVRGLTgnLCAnV2luZG93cy0xMjUyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbHNlICE9PSAkZGVjb2RlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXIgPSAkZGVjb2RlZDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyID0gbWJfY29udmVydF9lbmNvZGluZygkY2hhciwgJ1VURi04JywgJ1dpbmRvd3MtMTI1MicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXIgPSBzZWxmOjpNSVNTSU5HOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAkY2hhcjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGV4dCA9ICRyZXN1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPmhhcygnRW5jb2RpbmcnKSAmJiAkdGhpcy0+Z2V0KCdFbmNvZGluZycpIGluc3RhbmNlb2YgRW5jb2RpbmcpIHsKICAgICAgICAgICAgLyoqIEB2YXIgRW5jb2RpbmcgJGVuY29kaW5nICovCiAgICAgICAgICAgICRlbmNvZGluZyA9ICR0aGlzLT5nZXQoJ0VuY29kaW5nJyk7CiAgICAgICAgICAgICR1bmljb2RlID0gbWJfY2hlY2tfZW5jb2RpbmcoJHRleHQsICdVVEYtOCcpOwogICAgICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgICAgIGlmICgkdW5pY29kZSkgewogICAgICAgICAgICAgICAgJGNoYXJzID0gcHJlZ19zcGxpdCgKICAgICAgICAgICAgICAgICAgICAgICAgJy8vcycuKCR1bmljb2RlID8gJ3UnIDogJycpLAogICAgICAgICAgICAgICAgICAgICAgICAkdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgLTEsCiAgICAgICAgICAgICAgICAgICAgICAgIFxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUgfCBcUFJFR19TUExJVF9OT19FTVBUWQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2hhcnMgYXMgJGNoYXIpIHsKICAgICAgICAgICAgICAgICAgICAkZGVjX2F2ID0gaGV4ZGVjKGJpbjJoZXgoJGNoYXIpKTsKICAgICAgICAgICAgICAgICAgICAkZGVjX2FwID0gJGVuY29kaW5nLT50cmFuc2xhdGVDaGFyKCRkZWNfYXYpOwogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gc2VsZjo6dWNocigkZGVjX2FwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRsZW5ndGggPSBcc3RybGVuKCR0ZXh0KTsKCiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyArKyRpKSB7CiAgICAgICAgICAgICAgICAgICAgJGRlY19hdiA9IGhleGRlYyhiaW4yaGV4KCR0ZXh0WyRpXSkpOwogICAgICAgICAgICAgICAgICAgICRkZWNfYXAgPSAkZW5jb2RpbmctPnRyYW5zbGF0ZUNoYXIoJGRlY19hdik7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSBzZWxmOjp1Y2hyKCRkZWNfYXApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICR0ZXh0ID0gJHJlc3VsdDsKICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPmdldCgnRW5jb2RpbmcnKSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYKICAgICAgICAgICAgICAgICAgJHRoaXMtPmdldCgnRW5jb2RpbmcnKS0+ZXF1YWxzKCdNYWNSb21hbkVuY29kaW5nJykpIHsKICAgICAgICAgICAgLy8gbWJfY29udmVydF9lbmNvZGluZyBkb2VzIG5vdCBzdXBwb3J0IE1hY1JvbWFuL21hY2ludG9zaCwKICAgICAgICAgICAgLy8gc28gd2UgdXNlIGljb252KCkgaGVyZQogICAgICAgICAgICAkdGV4dCA9IGljb252KCdtYWNpbnRvc2gnLCAnVVRGLTgnLCAkdGV4dCk7CiAgICAgICAgfSBlbHNlaWYgKCFtYl9jaGVja19lbmNvZGluZygkdGV4dCwgJ1VURi04JykpIHsKICAgICAgICAgICAgLy8gZG9uJ3QgZG91YmxlLWVuY29kZSBzdHJpbmdzIGFscmVhZHkgaW4gVVRGLTgKICAgICAgICAgICAgJHRleHQgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCR0ZXh0LCAnVVRGLTgnLCAnV2luZG93cy0xMjUyJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRleHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font/FontCIDFontType0.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRm9udDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEZvbnQ7CgovKioKICogQ2xhc3MgRm9udENJREZvbnRUeXBlMAogKi8KY2xhc3MgRm9udENJREZvbnRUeXBlMCBleHRlbmRzIEZvbnQKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font/FontCIDFontType2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRm9udDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEZvbnQ7CgovKioKICogQ2xhc3MgRm9udENJREZvbnRUeXBlMgogKi8KY2xhc3MgRm9udENJREZvbnRUeXBlMiBleHRlbmRzIEZvbnQKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font/FontTrueType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRm9udDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEZvbnQ7CgovKioKICogQ2xhc3MgRm9udFRydWVUeXBlCiAqLwpjbGFzcyBGb250VHJ1ZVR5cGUgZXh0ZW5kcyBGb250CnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font/FontType0.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRm9udDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEZvbnQ7CgovKioKICogQ2xhc3MgRm9udFR5cGUwCiAqLwpjbGFzcyBGb250VHlwZTAgZXh0ZW5kcyBGb250CnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font/FontType1.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRm9udDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEZvbnQ7CgovKioKICogQ2xhc3MgRm9udFR5cGUxCiAqLwpjbGFzcyBGb250VHlwZTEgZXh0ZW5kcyBGb250CnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Font/FontType3.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcRm9udDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEZvbnQ7CgovKioKICogQ2xhc3MgRm9udFR5cGUzCiAqLwpjbGFzcyBGb250VHlwZTMgZXh0ZW5kcyBGb250CnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Header.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7Cgp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnRBcnJheTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TWlzc2luZzsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50U3RydWN0Owp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnRYUmVmOwoKLyoqCiAqIENsYXNzIEhlYWRlcgogKi8KY2xhc3MgSGVhZGVyCnsKICAgIC8qKgogICAgICogQHZhciBEb2N1bWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgJGRvY3VtZW50ID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgRWxlbWVudFtdCiAgICAgKi8KICAgIHByb3RlY3RlZCAkZWxlbWVudHMgPSBudWxsOwoKICAgIC8qKgogICAgICogQHBhcmFtIEVsZW1lbnRbXSAkZWxlbWVudHMgbGlzdCBvZiBlbGVtZW50cwogICAgICogQHBhcmFtIERvY3VtZW50ICAkZG9jdW1lbnQgZG9jdW1lbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRlbGVtZW50cyA9IFtdLCBEb2N1bWVudCAkZG9jdW1lbnQgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5lbGVtZW50cyA9ICRlbGVtZW50czsKICAgICAgICAkdGhpcy0+ZG9jdW1lbnQgPSAkZG9jdW1lbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGluaXQoKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5lbGVtZW50cyBhcyAkZWxlbWVudCkgewogICAgICAgICAgICBpZiAoJGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAkZWxlbWVudC0+aW5pdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbGwgZWxlbWVudHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbGVtZW50cygpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmVsZW1lbnRzIGFzICRuYW1lID0+ICRlbGVtZW50KSB7CiAgICAgICAgICAgICR0aGlzLT5yZXNvbHZlWFJlZigkbmFtZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmVsZW1lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogVXNlZCBvbmx5IGZvciBkZWJ1Zy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbGVtZW50VHlwZXMoKQogICAgewogICAgICAgICR0eXBlcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZWxlbWVudHMgYXMgJGtleSA9PiAkZWxlbWVudCkgewogICAgICAgICAgICAkdHlwZXNbJGtleV0gPSBcZ2V0X2NsYXNzKCRlbGVtZW50KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdHlwZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYm9vbCAkZGVlcAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERldGFpbHMoJGRlZXAgPSB0cnVlKQogICAgewogICAgICAgICR2YWx1ZXMgPSBbXTsKICAgICAgICAkZWxlbWVudHMgPSAkdGhpcy0+Z2V0RWxlbWVudHMoKTsKCiAgICAgICAgZm9yZWFjaCAoJGVsZW1lbnRzIGFzICRrZXkgPT4gJGVsZW1lbnQpIHsKICAgICAgICAgICAgaWYgKCRlbGVtZW50IGluc3RhbmNlb2Ygc2VsZiAmJiAkZGVlcCkgewogICAgICAgICAgICAgICAgJHZhbHVlc1ska2V5XSA9ICRlbGVtZW50LT5nZXREZXRhaWxzKCRkZWVwKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRlbGVtZW50IGluc3RhbmNlb2YgUERGT2JqZWN0ICYmICRkZWVwKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRrZXldID0gJGVsZW1lbnQtPmdldERldGFpbHMoZmFsc2UpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50QXJyYXkpIHsKICAgICAgICAgICAgICAgIGlmICgkZGVlcCkgewogICAgICAgICAgICAgICAgICAgICR2YWx1ZXNbJGtleV0gPSAkZWxlbWVudC0+Z2V0RGV0YWlscygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRrZXldID0gKHN0cmluZykgJGVsZW1lbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogSW5kaWNhdGUgaWYgYW4gZWxlbWVudCBuYW1lIGlzIGF2YWlsYWJsZSBpbiBoZWFkZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgbmFtZSBvZiB0aGUgZWxlbWVudAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKCRuYW1lKQogICAgewogICAgICAgIHJldHVybiBcYXJyYXlfa2V5X2V4aXN0cygkbmFtZSwgJHRoaXMtPmVsZW1lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIEVsZW1lbnR8UERGT2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoJG5hbWUpCiAgICB7CiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCRuYW1lLCAkdGhpcy0+ZWxlbWVudHMpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVzb2x2ZVhSZWYoJG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBFbGVtZW50TWlzc2luZygpOwogICAgfQoKICAgIC8qKgogICAgICogUmVzb2x2ZSBYUmVmIHRvIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKgogICAgICogQHJldHVybiBFbGVtZW50fFBERk9iamVjdAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcmVzb2x2ZVhSZWYoJG5hbWUpCiAgICB7CiAgICAgICAgaWYgKCgkb2JqID0gJHRoaXMtPmVsZW1lbnRzWyRuYW1lXSkgaW5zdGFuY2VvZiBFbGVtZW50WFJlZiAmJiBudWxsICE9PSAkdGhpcy0+ZG9jdW1lbnQpIHsKICAgICAgICAgICAgLyoqIEB2YXIgRWxlbWVudFhSZWYgJG9iaiAqLwogICAgICAgICAgICAkb2JqZWN0ID0gJHRoaXMtPmRvY3VtZW50LT5nZXRPYmplY3RCeUlkKCRvYmotPmdldElkKCkpOwoKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRvYmplY3QpIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRWxlbWVudE1pc3NpbmcoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gVXBkYXRlIGVsZW1lbnRzIGxpc3QgZm9yIGZ1dHVyZSBjYWxscy4KICAgICAgICAgICAgJHRoaXMtPmVsZW1lbnRzWyRuYW1lXSA9ICRvYmplY3Q7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmVsZW1lbnRzWyRuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkY29udGVudCAgVGhlIGNvbnRlbnQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSBEb2N1bWVudCAkZG9jdW1lbnQgVGhlIGRvY3VtZW50CiAgICAgKiBAcGFyYW0gaW50ICAgICAgJHBvc2l0aW9uIFRoZSBuZXcgcG9zaXRpb24gb2YgdGhlIGN1cnNvciBhZnRlciBwYXJzaW5nCiAgICAgKgogICAgICogQHJldHVybiBIZWFkZXIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkY29udGVudCwgRG9jdW1lbnQgJGRvY3VtZW50LCAmJHBvc2l0aW9uID0gMCkKICAgIHsKICAgICAgICAvKiBAdmFyIEhlYWRlciAkaGVhZGVyICovCiAgICAgICAgaWYgKCc8PCcgPT0gc3Vic3RyKHRyaW0oJGNvbnRlbnQpLCAwLCAyKSkgewogICAgICAgICAgICAkaGVhZGVyID0gRWxlbWVudFN0cnVjdDo6cGFyc2UoJGNvbnRlbnQsICRkb2N1bWVudCwgJHBvc2l0aW9uKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZWxlbWVudHMgPSBFbGVtZW50QXJyYXk6OnBhcnNlKCRjb250ZW50LCAkZG9jdW1lbnQsICRwb3NpdGlvbik7CiAgICAgICAgICAgICRoZWFkZXIgPSBuZXcgc2VsZihbXSwgJGRvY3VtZW50KTsKCiAgICAgICAgICAgIGlmICgkZWxlbWVudHMpIHsKICAgICAgICAgICAgICAgICRoZWFkZXIgPSBuZXcgc2VsZigkZWxlbWVudHMtPmdldFJhd0NvbnRlbnQoKSwgbnVsbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkaGVhZGVyKSB7CiAgICAgICAgICAgIHJldHVybiAkaGVhZGVyOwogICAgICAgIH0KCiAgICAgICAgLy8gQnVpbGQgYW4gZW1wdHkgaGVhZGVyLgogICAgICAgIHJldHVybiBuZXcgc2VsZihbXSwgJGRvY3VtZW50KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Page.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7Cgp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnRBcnJheTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TWlzc2luZzsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TnVsbDsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50WFJlZjsKCmNsYXNzIFBhZ2UgZXh0ZW5kcyBQREZPYmplY3QKewogICAgLyoqCiAgICAgKiBAdmFyIEZvbnRbXQogICAgICovCiAgICBwcm90ZWN0ZWQgJGZvbnRzID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgUERGT2JqZWN0W10KICAgICAqLwogICAgcHJvdGVjdGVkICR4b2JqZWN0cyA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAkZGF0YVRtID0gbnVsbDsKCiAgICAvKioKICAgICAqIEByZXR1cm4gRm9udFtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb250cygpCiAgICB7CiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5mb250cykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZvbnRzOwogICAgICAgIH0KCiAgICAgICAgJHJlc291cmNlcyA9ICR0aGlzLT5nZXQoJ1Jlc291cmNlcycpOwoKICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkcmVzb3VyY2VzLCAnaGFzJykgJiYgJHJlc291cmNlcy0+aGFzKCdGb250JykpIHsKICAgICAgICAgICAgaWYgKCRyZXNvdXJjZXMtPmdldCgnRm9udCcpIGluc3RhbmNlb2YgRWxlbWVudE1pc3NpbmcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRyZXNvdXJjZXMtPmdldCgnRm9udCcpIGluc3RhbmNlb2YgSGVhZGVyKSB7CiAgICAgICAgICAgICAgICAkZm9udHMgPSAkcmVzb3VyY2VzLT5nZXQoJ0ZvbnQnKS0+Z2V0RWxlbWVudHMoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRmb250cyA9ICRyZXNvdXJjZXMtPmdldCgnRm9udCcpLT5nZXRIZWFkZXIoKS0+Z2V0RWxlbWVudHMoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRhYmxlID0gW107CgogICAgICAgICAgICBmb3JlYWNoICgkZm9udHMgYXMgJGlkID0+ICRmb250KSB7CiAgICAgICAgICAgICAgICBpZiAoJGZvbnQgaW5zdGFuY2VvZiBGb250KSB7CiAgICAgICAgICAgICAgICAgICAgJHRhYmxlWyRpZF0gPSAkZm9udDsKCiAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdG9vIG9uIGNsZWFuZWQgaWQgdmFsdWUgKG9ubHkgbnVtZXJpYykKICAgICAgICAgICAgICAgICAgICAkaWQgPSBwcmVnX3JlcGxhY2UoJy9bXjAtOVwuXC1fXS8nLCAnJywgJGlkKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJycgIT0gJGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZVskaWRdID0gJGZvbnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZvbnRzID0gJHRhYmxlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIEZvbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9udCgkaWQpCiAgICB7CiAgICAgICAgJGZvbnRzID0gJHRoaXMtPmdldEZvbnRzKCk7CgogICAgICAgIGlmIChpc3NldCgkZm9udHNbJGlkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRmb250c1skaWRdOwogICAgICAgIH0KCiAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBQREYgc3BlY3MgKGh0dHBzOi8vd3d3LmFkb2JlLmNvbS9jb250ZW50L2RhbS9hY29tL2VuL2Rldm5ldC9wZGYvcGRmcy9QREYzMjAwMF8yMDA4LnBkZiwgcGFnZSAyMzgpCiAgICAgICAgLy8gIlRoZSBmb250IHJlc291cmNlIG5hbWUgcHJlc2VudGVkIHRvIHRoZSBUZiBvcGVyYXRvciBpcyBhcmJpdHJhcnksIGFzIGFyZSB0aGUgbmFtZXMgZm9yIGFsbCBraW5kcyBvZiByZXNvdXJjZXMiCiAgICAgICAgLy8gSW5zdGVhZCwgd2Ugc2VhcmNoIGZvciB0aGUgdW5maWx0ZXJlZCBuYW1lIGZpcnN0IGFuZCB0aGVuIGRvIHRoaXMgY2xlYW5pbmcgYXMgYSBmYWxsYmFjaywgc28gYWxsIHRlc3RzIHN0aWxsIHBhc3MuCgogICAgICAgIGlmIChpc3NldCgkZm9udHNbJGlkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRmb250c1skaWRdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpZCA9IHByZWdfcmVwbGFjZSgnL1teMC05XC5cLV9dLycsICcnLCAkaWQpOwogICAgICAgICAgICBpZiAoaXNzZXQoJGZvbnRzWyRpZF0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZvbnRzWyRpZF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogU3VwcG9ydCBmb3IgWE9iamVjdAogICAgICoKICAgICAqIEByZXR1cm4gUERGT2JqZWN0W10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFhPYmplY3RzKCkKICAgIHsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnhvYmplY3RzKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+eG9iamVjdHM7CiAgICAgICAgfQoKICAgICAgICAkcmVzb3VyY2VzID0gJHRoaXMtPmdldCgnUmVzb3VyY2VzJyk7CgogICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCRyZXNvdXJjZXMsICdoYXMnKSAmJiAkcmVzb3VyY2VzLT5oYXMoJ1hPYmplY3QnKSkgewogICAgICAgICAgICBpZiAoJHJlc291cmNlcy0+Z2V0KCdYT2JqZWN0JykgaW5zdGFuY2VvZiBIZWFkZXIpIHsKICAgICAgICAgICAgICAgICR4b2JqZWN0cyA9ICRyZXNvdXJjZXMtPmdldCgnWE9iamVjdCcpLT5nZXRFbGVtZW50cygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHhvYmplY3RzID0gJHJlc291cmNlcy0+Z2V0KCdYT2JqZWN0JyktPmdldEhlYWRlcigpLT5nZXRFbGVtZW50cygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGFibGUgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCR4b2JqZWN0cyBhcyAkaWQgPT4gJHhvYmplY3QpIHsKICAgICAgICAgICAgICAgICR0YWJsZVskaWRdID0gJHhvYmplY3Q7CgogICAgICAgICAgICAgICAgLy8gU3RvcmUgdG9vIG9uIGNsZWFuZWQgaWQgdmFsdWUgKG9ubHkgbnVtZXJpYykKICAgICAgICAgICAgICAgICRpZCA9IHByZWdfcmVwbGFjZSgnL1teMC05XC5cLV9dLycsICcnLCAkaWQpOwogICAgICAgICAgICAgICAgaWYgKCcnICE9ICRpZCkgewogICAgICAgICAgICAgICAgICAgICR0YWJsZVskaWRdID0gJHhvYmplY3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+eG9iamVjdHMgPSAkdGFibGU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpZAogICAgICoKICAgICAqIEByZXR1cm4gUERGT2JqZWN0fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFhPYmplY3QoJGlkKQogICAgewogICAgICAgICR4b2JqZWN0cyA9ICR0aGlzLT5nZXRYT2JqZWN0cygpOwoKICAgICAgICBpZiAoaXNzZXQoJHhvYmplY3RzWyRpZF0pKSB7CiAgICAgICAgICAgIHJldHVybiAkeG9iamVjdHNbJGlkXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgICAgIC8qJGlkID0gcHJlZ19yZXBsYWNlKCcvW14wLTlcLlwtX10vJywgJycsICRpZCk7CgogICAgICAgIGlmIChpc3NldCgkeG9iamVjdHNbJGlkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR4b2JqZWN0c1skaWRdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0qLwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFBhZ2UgJHBhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dChzZWxmICRwYWdlID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGNvbnRlbnRzID0gJHRoaXMtPmdldCgnQ29udGVudHMnKSkgewogICAgICAgICAgICBpZiAoJGNvbnRlbnRzIGluc3RhbmNlb2YgRWxlbWVudE1pc3NpbmcpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgfSBlbHNlaWYgKCRjb250ZW50cyBpbnN0YW5jZW9mIEVsZW1lbnROdWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0gZWxzZWlmICgkY29udGVudHMgaW5zdGFuY2VvZiBQREZPYmplY3QpIHsKICAgICAgICAgICAgICAgICRlbGVtZW50cyA9ICRjb250ZW50cy0+Z2V0SGVhZGVyKCktPmdldEVsZW1lbnRzKCk7CgogICAgICAgICAgICAgICAgaWYgKGlzX251bWVyaWMoa2V5KCRlbGVtZW50cykpKSB7CiAgICAgICAgICAgICAgICAgICAgJG5ld19jb250ZW50ID0gJyc7CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlbGVtZW50cyBhcyAkZWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50WFJlZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19jb250ZW50IC49ICRlbGVtZW50LT5nZXRPYmplY3QoKS0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19jb250ZW50IC49ICRlbGVtZW50LT5nZXRDb250ZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRoZWFkZXIgPSBuZXcgSGVhZGVyKFtdLCAkdGhpcy0+ZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgICRjb250ZW50cyA9IG5ldyBQREZPYmplY3QoJHRoaXMtPmRvY3VtZW50LCAkaGVhZGVyLCAkbmV3X2NvbnRlbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJGNvbnRlbnRzIGluc3RhbmNlb2YgRWxlbWVudEFycmF5KSB7CiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSB2aXJ0dWFsIGdsb2JhbCBjb250ZW50LgogICAgICAgICAgICAgICAgJG5ld19jb250ZW50ID0gJyc7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbnRlbnRzLT5nZXRDb250ZW50KCkgYXMgJGNvbnRlbnQpIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X2NvbnRlbnQgLj0gJGNvbnRlbnQtPmdldENvbnRlbnQoKS4iXG4iOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRoZWFkZXIgPSBuZXcgSGVhZGVyKFtdLCAkdGhpcy0+ZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgJGNvbnRlbnRzID0gbmV3IFBERk9iamVjdCgkdGhpcy0+ZG9jdW1lbnQsICRoZWFkZXIsICRuZXdfY29udGVudCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkY29udGVudHMtPmdldFRleHQoJHRoaXMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFBhZ2UgJHBhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0QXJyYXkoc2VsZiAkcGFnZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRjb250ZW50cyA9ICR0aGlzLT5nZXQoJ0NvbnRlbnRzJykpIHsKICAgICAgICAgICAgaWYgKCRjb250ZW50cyBpbnN0YW5jZW9mIEVsZW1lbnRNaXNzaW5nKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICAgIH0gZWxzZWlmICgkY29udGVudHMgaW5zdGFuY2VvZiBFbGVtZW50TnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICAgICB9IGVsc2VpZiAoJGNvbnRlbnRzIGluc3RhbmNlb2YgUERGT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAkZWxlbWVudHMgPSAkY29udGVudHMtPmdldEhlYWRlcigpLT5nZXRFbGVtZW50cygpOwoKICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKGtleSgkZWxlbWVudHMpKSkgewogICAgICAgICAgICAgICAgICAgICRuZXdfY29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAvKiogQHZhciBQREZPYmplY3QgJGVsZW1lbnQgKi8KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudFhSZWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdfY29udGVudCAuPSAkZWxlbWVudC0+Z2V0T2JqZWN0KCktPmdldENvbnRlbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdfY29udGVudCAuPSAkZWxlbWVudC0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyID0gbmV3IEhlYWRlcihbXSwgJHRoaXMtPmRvY3VtZW50KTsKICAgICAgICAgICAgICAgICAgICAkY29udGVudHMgPSBuZXcgUERGT2JqZWN0KCR0aGlzLT5kb2N1bWVudCwgJGhlYWRlciwgJG5ld19jb250ZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRjb250ZW50cyBpbnN0YW5jZW9mIEVsZW1lbnRBcnJheSkgewogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdmlydHVhbCBnbG9iYWwgY29udGVudC4KICAgICAgICAgICAgICAgICRuZXdfY29udGVudCA9ICcnOwoKICAgICAgICAgICAgICAgIC8qKiBAdmFyIFBERk9iamVjdCAkY29udGVudCAqLwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbnRlbnRzLT5nZXRDb250ZW50KCkgYXMgJGNvbnRlbnQpIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X2NvbnRlbnQgLj0gJGNvbnRlbnQtPmdldENvbnRlbnQoKS4iXG4iOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRoZWFkZXIgPSBuZXcgSGVhZGVyKFtdLCAkdGhpcy0+ZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgJGNvbnRlbnRzID0gbmV3IFBERk9iamVjdCgkdGhpcy0+ZG9jdW1lbnQsICRoZWFkZXIsICRuZXdfY29udGVudCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkY29udGVudHMtPmdldFRleHRBcnJheSgkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIGFsbCB0aGUgdGV4dCBkYXRhIHdpdGggaXRzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYWdlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQW4gYXJyYXkgd2l0aCB0aGUgZGF0YSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHRyYWN0UmF3RGF0YSgpCiAgICB7CiAgICAgICAgLyoKICAgICAgICAgKiBOb3cgeW91IGNhbiBnZXQgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb2YgdGhlIG9iamVjdCB3aXRoIHRoZSB0ZXh0IG9uIGl0CiAgICAgICAgICovCiAgICAgICAgJGV4dHJhY3RlZERhdGEgPSBbXTsKICAgICAgICAkY29udGVudCA9ICR0aGlzLT5nZXQoJ0NvbnRlbnRzJyk7CiAgICAgICAgJHZhbHVlcyA9ICRjb250ZW50LT5nZXRDb250ZW50KCk7CiAgICAgICAgaWYgKGlzc2V0KCR2YWx1ZXMpICYmIFxpc19hcnJheSgkdmFsdWVzKSkgewogICAgICAgICAgICAkdGV4dCA9ICcnOwogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICRzZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAkc2VjdGlvbi0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzZWN0aW9uc1RleHQgPSAkdGhpcy0+Z2V0U2VjdGlvbnNUZXh0KCR0ZXh0KTsKICAgICAgICAgICAgZm9yZWFjaCAoJHNlY3Rpb25zVGV4dCBhcyAkc2VjdGlvblRleHQpIHsKICAgICAgICAgICAgICAgICRjb21tYW5kc1RleHQgPSAkdGhpcy0+Z2V0Q29tbWFuZHNUZXh0KCRzZWN0aW9uVGV4dCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY29tbWFuZHNUZXh0IGFzICRjb21tYW5kKSB7CiAgICAgICAgICAgICAgICAgICAgJGV4dHJhY3RlZERhdGFbXSA9ICRjb21tYW5kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHNlY3Rpb25zVGV4dCA9ICRjb250ZW50LT5nZXRTZWN0aW9uc1RleHQoJGNvbnRlbnQtPmdldENvbnRlbnQoKSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRzZWN0aW9uc1RleHQgYXMgJHNlY3Rpb25UZXh0KSB7CiAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gWyd0JyA9PiAnJywgJ28nID0+ICdCVCcsICdjJyA9PiAnJ107CgogICAgICAgICAgICAgICAgJGNvbW1hbmRzVGV4dCA9ICRjb250ZW50LT5nZXRDb21tYW5kc1RleHQoJHNlY3Rpb25UZXh0KTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjb21tYW5kc1RleHQgYXMgJGNvbW1hbmQpIHsKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gJGNvbW1hbmQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZXh0cmFjdGVkRGF0YTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgYWxsIHRoZSBkZWNvZGVkIHRleHQgZGF0YSB3aXRoIGl0IGludGVybmFsIHJlcHJlc2VudGF0aW9uIGZyb20gYSBwYWdlLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkZXh0cmFjdGVkUmF3RGF0YSB0aGUgZXh0cmFjdGVkIGRhdGEgcmV0dXJuIGJ5IGV4dHJhY3RSYXdEYXRhIG9yCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCBpZiBleHRyYWN0UmF3RGF0YSBzaG91bGQgYmUgY2FsbGVkCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBBbiBhcnJheSB3aXRoIHRoZSBkYXRhIGFuZCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4dHJhY3REZWNvZGVkUmF3RGF0YSgkZXh0cmFjdGVkUmF3RGF0YSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkZXh0cmFjdGVkUmF3RGF0YSkgfHwgISRleHRyYWN0ZWRSYXdEYXRhKSB7CiAgICAgICAgICAgICRleHRyYWN0ZWRSYXdEYXRhID0gJHRoaXMtPmV4dHJhY3RSYXdEYXRhKCk7CiAgICAgICAgfQogICAgICAgICRjdXJyZW50Rm9udCA9IG51bGw7CiAgICAgICAgJGNsaXBwZWRGb250ID0gbnVsbDsKICAgICAgICBmb3JlYWNoICgkZXh0cmFjdGVkUmF3RGF0YSBhcyAmJGNvbW1hbmQpIHsKICAgICAgICAgICAgaWYgKCdUaicgPT0gJGNvbW1hbmRbJ28nXSB8fCAnVEonID09ICRjb21tYW5kWydvJ10pIHsKICAgICAgICAgICAgICAgICRkYXRhID0gJGNvbW1hbmRbJ2MnXTsKICAgICAgICAgICAgICAgIGlmICghXGlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICAgICAgICAgICR0bXBUZXh0ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRjdXJyZW50Rm9udCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcFRleHQgPSAkY3VycmVudEZvbnQtPmRlY29kZU9jdGFsKCRkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8kdG1wVGV4dCA9ICRjdXJyZW50Rm9udC0+ZGVjb2RlSGV4YWRlY2ltYWwoJHRtcFRleHQsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRtcFRleHQgPSBzdHJfcmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXFxcXCcsICdcKCcsICdcKScsICdcbicsICdccicsICdcdCcsICdcICddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWydcXCcsICcoJywgJyknLCAiXG4iLCAiXHIiLCAiXHQiLCAnICddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcFRleHQKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICR0bXBUZXh0ID0gdXRmOF9lbmNvZGUoJHRtcFRleHQpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY3VycmVudEZvbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXBUZXh0ID0gJGN1cnJlbnRGb250LT5kZWNvZGVDb250ZW50KCR0bXBUZXh0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGNvbW1hbmRbJ2MnXSA9ICR0bXBUZXh0OwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG51bVRleHQgPSBcY291bnQoJGRhdGEpOwogICAgICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG51bVRleHQ7ICsrJGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoMCAhPSAoJGkgJSAyKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHRtcFRleHQgPSAkZGF0YVskaV1bJ2MnXTsKICAgICAgICAgICAgICAgICAgICAkZGVjb2RlZFRleHQgPSAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGN1cnJlbnRGb250KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZGVjb2RlZFRleHQgPSAkY3VycmVudEZvbnQtPmRlY29kZU9jdGFsKCR0bXBUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8kdG1wVGV4dCA9ICRjdXJyZW50Rm9udC0+ZGVjb2RlSGV4YWRlY2ltYWwoJHRtcFRleHQsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGRlY29kZWRUZXh0ID0gc3RyX3JlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ1xcXFwnLCAnXCgnLCAnXCknLCAnXG4nLCAnXHInLCAnXHQnLCAnXCAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXFwnLCAnKCcsICcpJywgIlxuIiwgIlxyIiwgIlx0IiwgJyAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWNvZGVkVGV4dAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJGRlY29kZWRUZXh0ID0gdXRmOF9lbmNvZGUoJGRlY29kZWRUZXh0KTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGN1cnJlbnRGb250KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZGVjb2RlZFRleHQgPSAkY3VycmVudEZvbnQtPmRlY29kZUNvbnRlbnQoJGRlY29kZWRUZXh0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGNvbW1hbmRbJ2MnXVskaV1bJ2MnXSA9ICRkZWNvZGVkVGV4dDsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCdUZicgPT0gJGNvbW1hbmRbJ28nXSB8fCAnVEYnID09ICRjb21tYW5kWydvJ10pIHsKICAgICAgICAgICAgICAgICRmb250SWQgPSBleHBsb2RlKCcgJywgJGNvbW1hbmRbJ2MnXSlbMF07CiAgICAgICAgICAgICAgICAkY3VycmVudEZvbnQgPSAkdGhpcy0+Z2V0Rm9udCgkZm9udElkKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9IGVsc2VpZiAoJ1EnID09ICRjb21tYW5kWydvJ10pIHsKICAgICAgICAgICAgICAgICRjdXJyZW50Rm9udCA9ICRjbGlwcGVkRm9udDsKICAgICAgICAgICAgfSBlbHNlaWYgKCdxJyA9PSAkY29tbWFuZFsnbyddKSB7CiAgICAgICAgICAgICAgICAkY2xpcHBlZEZvbnQgPSAkY3VycmVudEZvbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZXh0cmFjdGVkUmF3RGF0YTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMganVzdCB0aGUgVGV4dCBjb21tYW5kcyB0aGF0IGFyZSBpbnZvbHZlZCBpbiB0ZXh0IHBvc2l0aW9ucyBhbmQKICAgICAqIFRleHQgTWF0cml4IChUbSkKICAgICAqCiAgICAgKiBJdCBleHRyYWN0IGp1c3QgdGhlIFBERiBjb21tYW5kcyB0aGF0IGFyZSBpbnZvbHZlZCB3aXRoIHRleHQgcG9zaXRpb25zLCBhbmQKICAgICAqIHRoZSBUZXh0IE1hdHJpeCAoVG0pLiBUaGVzZSBhcmU6IEJULCBFVCwgVEwsIFRkLCBURCwgVG0sIFQqLCBUaiwgJywgIiwgYW5kIFRKCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRleHRyYWN0ZWREZWNvZGVkUmF3RGF0YSBUaGUgZGF0YSBleHRyYWN0ZWQgYnkgZXh0cmFjdERlY29kZVJhd0RhdGEuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGl0IGlzIG51bGwsIHRoZSBtZXRob2QgZXh0cmFjdERlY29kZVJhd0RhdGEgaXMgY2FsbGVkLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQW4gYXJyYXkgd2l0aCB0aGUgdGV4dCBjb21tYW5kIG9mIHRoZSBwYWdlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREYXRhQ29tbWFuZHMoJGV4dHJhY3RlZERlY29kZWRSYXdEYXRhID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRleHRyYWN0ZWREZWNvZGVkUmF3RGF0YSkgfHwgISRleHRyYWN0ZWREZWNvZGVkUmF3RGF0YSkgewogICAgICAgICAgICAkZXh0cmFjdGVkRGVjb2RlZFJhd0RhdGEgPSAkdGhpcy0+ZXh0cmFjdERlY29kZWRSYXdEYXRhKCk7CiAgICAgICAgfQogICAgICAgICRleHRyYWN0ZWREYXRhID0gW107CiAgICAgICAgZm9yZWFjaCAoJGV4dHJhY3RlZERlY29kZWRSYXdEYXRhIGFzICRjb21tYW5kKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJGNvbW1hbmRbJ28nXSkgewogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIEJUCiAgICAgICAgICAgICAgICAgKiBCZWdpbiBhIHRleHQgb2JqZWN0LCBpbmljaWFsaXppbmQgdGhlIFRtIGFuZCBUbG0gdG8gaWRlbnRpdHkgbWF0cml4CiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ0JUJzoKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gJGNvbW1hbmQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIEVUCiAgICAgICAgICAgICAgICAgKiBFbmQgYSB0ZXh0IG9iamVjdCwgZGlzY2FyZGluZyB0aGUgdGV4dCBtYXRyaXgKICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY2FzZSAnRVQnOgogICAgICAgICAgICAgICAgICAgICRleHRyYWN0ZWREYXRhW10gPSAkY29tbWFuZDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogbGVhZGluZyBUTAogICAgICAgICAgICAgICAgICogU2V0IHRoZSB0ZXh0IGxlYWRpbmcsIFRsLCB0byBsZWFkaW5nLiBUbCBpcyB1c2VkIGJ5IHRoZSBUKiwgJyBhbmQgIiBvcGVyYXRvcnMuCiAgICAgICAgICAgICAgICAgKiBJbml0aWFsIHZhbHVlOiAwCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1RMJzoKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gJGNvbW1hbmQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIHR4IHR5IFRkCiAgICAgICAgICAgICAgICAgKiBNb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBsaW5lLCBvZmZzZXQgZm9ybSB0aGUgc3RhcnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgKiBjdXJyZW50IGxpbmUgYnkgdHgsIHR5LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBjYXNlICdUZCc6CiAgICAgICAgICAgICAgICAgICAgJGV4dHJhY3RlZERhdGFbXSA9ICRjb21tYW5kOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgKiB0eCB0eSBURAogICAgICAgICAgICAgICAgICogTW92ZSB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgbGluZSwgb2Zmc2V0IGZvcm0gdGhlIHN0YXJ0IG9mIHRoZQogICAgICAgICAgICAgICAgICogY3VycmVudCBsaW5lIGJ5IHR4LCB0eS4gQXMgYSBzaWRlIGVmZmVjdCwgdGhpcyBvcGVyYXRvciBzZXQgdGhlIGxlYWRpbmcKICAgICAgICAgICAgICAgICAqIHBhcmFtZXRlciBpbiB0aGUgdGV4dCBzdGF0ZS4gVGhpcyBvcGVyYXRvciBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZQogICAgICAgICAgICAgICAgICogY29kZToKICAgICAgICAgICAgICAgICAqIC10eSBUTAogICAgICAgICAgICAgICAgICogdHggdHkgVGQKICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY2FzZSAnVEQnOgogICAgICAgICAgICAgICAgICAgICRleHRyYWN0ZWREYXRhW10gPSAkY29tbWFuZDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogYSBiIGMgZCBlIGYgVG0KICAgICAgICAgICAgICAgICAqIFNldCB0aGUgdGV4dCBtYXRyaXgsIFRtLCBhbmQgdGhlIHRleHQgbGluZSBtYXRyaXgsIFRsbS4gVGhlIG9wZXJhbmRzIGFyZQogICAgICAgICAgICAgICAgICogYWxsIG51bWJlcnMsIGFuZCB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgVG0gYW5kIFRsbSBpcyB0aGUgaWRlbnRpdHkgbWF0cml4CiAgICAgICAgICAgICAgICAgKiBbMSAwIDAgMSAwIDBdCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1RtJzoKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gJGNvbW1hbmQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIFQqCiAgICAgICAgICAgICAgICAgKiBNb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBsaW5lLiBUaGlzIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBlZmZlY3QKICAgICAgICAgICAgICAgICAqIGFzIHRoZSBjb2RlOgogICAgICAgICAgICAgICAgICogMCBUbCBUZAogICAgICAgICAgICAgICAgICogV2hlcmUgVGwgaXMgdGhlIGN1cnJlbnQgbGVhZGluZyBwYXJhbWV0ZXIgaW4gdGhlIHRleHQgc3RhdGUuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1QqJzoKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gJGNvbW1hbmQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIHN0cmluZyBUagogICAgICAgICAgICAgICAgICogU2hvdyBhIFRleHQgU3RyaW5nCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1RqJzoKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gJGNvbW1hbmQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIHN0cmluZyAnCiAgICAgICAgICAgICAgICAgKiBNb3ZlIHRvIHRoZSBuZXh0IGxpbmUgYW5kIHNob3cgYSB0ZXh0IHN0cmluZy4gVGhpcyBvcGVyYXRvciBoYXMgdGhlCiAgICAgICAgICAgICAgICAgKiBzYW1lIGVmZmVjdCBhcyB0aGUgY29kZToKICAgICAgICAgICAgICAgICAqIFQqCiAgICAgICAgICAgICAgICAgKiBzdHJpbmcgVGoKICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY2FzZSAiJyI6CiAgICAgICAgICAgICAgICAgICAgJGV4dHJhY3RlZERhdGFbXSA9ICRjb21tYW5kOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgKiBhdyBhYyBzdHJpbmcgIgogICAgICAgICAgICAgICAgICogTW92ZSB0byB0aGUgbmV4dCBsa2luZSBhbmQgc2hvdyBhIHRleHQgc3RyaW5nLCB1c2luZyBhdyBhcyB0aGUgd29yZAogICAgICAgICAgICAgICAgICogc3BhY2luZyBhbmQgYWMgYXMgdGhlIGNoYXJhY3RlciBzcGFjaW5nLiBUaGlzIG9wZXJhdG9yIGhhcyB0aGUgc2FtZQogICAgICAgICAgICAgICAgICogZWZmZWN0IGFzIHRoZSBjb2RlOgogICAgICAgICAgICAgICAgICogYXcgVHcKICAgICAgICAgICAgICAgICAqIGFjIFRjCiAgICAgICAgICAgICAgICAgKiBzdHJpbmcgJwogICAgICAgICAgICAgICAgICogVHcgc2V0IHRoZSB3b3JkIHNwYWNpbmcsIFR3LCB0byB3b3JkU3BhY2UuCiAgICAgICAgICAgICAgICAgKiBUYyBTZXQgdGhlIGNoYXJhY3RlciBzcGFjaW5nLCBUYywgdG8gY2hhcnNTcGFjZS4KICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY2FzZSAnIic6CiAgICAgICAgICAgICAgICAgICAgJGV4dHJhY3RlZERhdGFbXSA9ICRjb21tYW5kOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgKiBhcnJheSBUSgogICAgICAgICAgICAgICAgICogU2hvdyBvbmUgb3IgbW9yZSB0ZXh0IHN0cmluZ3MgYWxsb3cgaW5kaXZpZHVhbCBnbHlwaCBwb3NpdGlvbmluZy4KICAgICAgICAgICAgICAgICAqIEVhY2ggbGVtZW50IG9mIGFycmF5IGNvbiBiZSBhIHN0cmluZyBvciBhIG51bWJlci4gSWYgdGhlIGVsZW1lbnQgaXMKICAgICAgICAgICAgICAgICAqIGEgc3RyaW5nLCB0aGlzIG9wZXJhdG9yIHNob3dzIHRoZSBzdHJpbmcuIElmIGl0IGlzIGEgbnVtYmVyLCB0aGUKICAgICAgICAgICAgICAgICAqIG9wZXJhdG9yIGFkanVzdCB0aGUgdGV4dCBwb3NpdGlvbiBieSB0aGF0IGFtb3VudDsgdGhhdCBpcywgaXQgdHJhbnNsYXRlcwogICAgICAgICAgICAgICAgICogdGhlIHRleHQgbWF0cml4LCBUbS4gVGhpcyBhbW91bnQgaXMgc3Vic3RyYWN0ZWQgZm9ybSB0aGUgY3VycmVudAogICAgICAgICAgICAgICAgICogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb29yZGluYXRlLCBkZXBlbmRpbmcgb24gdGhlIHdyaXRpbmcgbW9kZS4KICAgICAgICAgICAgICAgICAqIGluIHRoZSBkZWZhdWx0IGNvb3JkaW5hdGUgc3lzdGVtLCBhIHBvc2l0aXZlIGFkanVzdG1lbnQgaGFzIHRoZSBlZmZlY3QKICAgICAgICAgICAgICAgICAqIG9mIG1vdmluZyB0aGUgbmV4dCBnbHlwaCBwYWludGVkIGVpdGhlciB0byB0aGUgbGVmdCBvciBkb3duIGJ5IHRoZSBnaXZlbgogICAgICAgICAgICAgICAgICogYW1vdW50LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBjYXNlICdUSic6CiAgICAgICAgICAgICAgICAgICAgJGV4dHJhY3RlZERhdGFbXSA9ICRjb21tYW5kOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRleHRyYWN0ZWREYXRhOwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyB0aGUgVGV4dCBNYXRyaXggb2YgdGhlIHRleHQgaW4gdGhlIHBhZ2UKICAgICAqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgd2hlcmUgZXZlcnkgaXRlbSBpcyBhbiBhcnJheSB3aGVyZSB0aGUgZmlyc3QgaXRlbSBpcyB0aGUKICAgICAqIFRleHQgTWF0cml4IChUbSkgYW5kIHRoZSBzZWNvbmQgaXMgYSBzdHJpbmcgd2l0aCB0aGUgdGV4dCBkYXRhLiAgVGhlIFRleHQgbWF0cml4CiAgICAgKiBpcyBhbiBhcnJheSBvZiA2IG51bWJlcnMuIFRoZSBsYXN0IDIgbnVtYmVycyBhcmUgdGhlIGNvb3JkaW5hdGVzIFggYW5kIFkgb2YgdGhlCiAgICAgKiB0ZXh0LiBUaGUgZmlyc3QgNCBudW1iZXJzIGhhcyB0byBiZSB3aXRoIFNjYWxhdGlvbiwgUm90YXRpb24gYW5kIFNrZXcgb2YgdGhlIHRleHQuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRkYXRhQ29tbWFuZHMgdGhlIGRhdGEgZXh0cmFjdGVkIGJ5IGdldERhdGFDb21tYW5kcwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbnVsbCBnZXREYXRhQ29tbWFuZHMgaXMgY2FsbGVkCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBhbiBhcnJheSB3aXRoIHRoZSBkYXRhIG9mIHRoZSBwYWdlIGluY2x1ZGluZyB0aGUgVG0gaW5mb3JtYXRpb24KICAgICAqICAgICAgICAgICAgICAgb2YgYW55IHRleHQgaW4gdGhlIHBhZ2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERhdGFUbSgkZGF0YUNvbW1hbmRzID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRkYXRhQ29tbWFuZHMpIHx8ICEkZGF0YUNvbW1hbmRzKSB7CiAgICAgICAgICAgICRkYXRhQ29tbWFuZHMgPSAkdGhpcy0+Z2V0RGF0YUNvbW1hbmRzKCk7CiAgICAgICAgfQoKICAgICAgICAvKgogICAgICAgICAqIEF0IHRoZSBiZWdpbm5pbmcgb2YgYSB0ZXh0IG9iamVjdCBUbSBpcyB0aGUgaWRlbnRpdHkgbWF0cml4CiAgICAgICAgICovCiAgICAgICAgJGRlZmF1bHRUbSA9IFsnMScsICcwJywgJzAnLCAnMScsICcwJywgJzAnXTsKCiAgICAgICAgLyoKICAgICAgICAgKiAgU2V0IHRoZSB0ZXh0IGxlYWRpbmcgdXNlZCBieSBUKiwgJyBhbmQgIiBvcGVyYXRvcnMKICAgICAgICAgKi8KICAgICAgICAkZGVmYXVsdFRsID0gMDsKCiAgICAgICAgLyoKICAgICAgICAgKiBTZXR0aW5nIHdoZXJlIGFyZSB0aGUgWCBhbmQgWSBjb29yZGluYXRlcyBpbiB0aGUgbWF0cml4IChUbSkKICAgICAgICAgKi8KICAgICAgICAkeCA9IDQ7CiAgICAgICAgJHkgPSA1OwogICAgICAgICRUeCA9IDA7CiAgICAgICAgJFR5ID0gMDsKCiAgICAgICAgJFRtID0gJGRlZmF1bHRUbTsKICAgICAgICAkVGwgPSAkZGVmYXVsdFRsOwoKICAgICAgICAkZXh0cmFjdGVkVGV4dHMgPSAkdGhpcy0+Z2V0VGV4dEFycmF5KCk7CiAgICAgICAgJGV4dHJhY3RlZERhdGEgPSBbXTsKICAgICAgICBmb3JlYWNoICgkZGF0YUNvbW1hbmRzIGFzICRjb21tYW5kKSB7CiAgICAgICAgICAgICRjdXJyZW50VGV4dCA9ICRleHRyYWN0ZWRUZXh0c1tcY291bnQoJGV4dHJhY3RlZERhdGEpXTsKICAgICAgICAgICAgc3dpdGNoICgkY29tbWFuZFsnbyddKSB7CiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogQlQKICAgICAgICAgICAgICAgICAqIEJlZ2luIGEgdGV4dCBvYmplY3QsIGluaWNpYWxpemluZCB0aGUgVG0gYW5kIFRsbSB0byBpZGVudGl0eSBtYXRyaXgKICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY2FzZSAnQlQnOgogICAgICAgICAgICAgICAgICAgICRUbSA9ICRkZWZhdWx0VG07CiAgICAgICAgICAgICAgICAgICAgJFRsID0gJGRlZmF1bHRUbDsgLy9yZXZpZXcgdGhpcy4KICAgICAgICAgICAgICAgICAgICAkVHggPSAwOwogICAgICAgICAgICAgICAgICAgICRUeSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIEVUCiAgICAgICAgICAgICAgICAgKiBFbmQgYSB0ZXh0IG9iamVjdCwgZGlzY2FyZGluZyB0aGUgdGV4dCBtYXRyaXgKICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY2FzZSAnRVQnOgogICAgICAgICAgICAgICAgICAgICRUbSA9ICRkZWZhdWx0VG07CiAgICAgICAgICAgICAgICAgICAgJFRsID0gJGRlZmF1bHRUbDsgIC8vcmV2aWV3IHRoaXMKICAgICAgICAgICAgICAgICAgICAkVHggPSAwOwogICAgICAgICAgICAgICAgICAgICRUeSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIGxlYWRpbmcgVEwKICAgICAgICAgICAgICAgICAqIFNldCB0aGUgdGV4dCBsZWFkaW5nLCBUbCwgdG8gbGVhZGluZy4gVGwgaXMgdXNlZCBieSB0aGUgVCosICcgYW5kICIgb3BlcmF0b3JzLgogICAgICAgICAgICAgICAgICogSW5pdGlhbCB2YWx1ZTogMAogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBjYXNlICdUTCc6CiAgICAgICAgICAgICAgICAgICAgJFRsID0gKGZsb2F0KSAkY29tbWFuZFsnYyddOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgKiB0eCB0eSBUZAogICAgICAgICAgICAgICAgICogTW92ZSB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgbGluZSwgb2Zmc2V0IGZvcm0gdGhlIHN0YXJ0IG9mIHRoZQogICAgICAgICAgICAgICAgICogY3VycmVudCBsaW5lIGJ5IHR4LCB0eS4KICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgY2FzZSAnVGQnOgogICAgICAgICAgICAgICAgICAgICRjb29yZCA9IGV4cGxvZGUoJyAnLCAkY29tbWFuZFsnYyddKTsKICAgICAgICAgICAgICAgICAgICAkVHggKz0gKGZsb2F0KSAkY29vcmRbMF07CiAgICAgICAgICAgICAgICAgICAgJFR5ICs9IChmbG9hdCkgJGNvb3JkWzFdOwogICAgICAgICAgICAgICAgICAgICRUbVskeF0gPSAoc3RyaW5nKSAkVHg7CiAgICAgICAgICAgICAgICAgICAgJFRtWyR5XSA9IChzdHJpbmcpICRUeTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogdHggdHkgVEQKICAgICAgICAgICAgICAgICAqIE1vdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGxpbmUsIG9mZnNldCBmb3JtIHRoZSBzdGFydCBvZiB0aGUKICAgICAgICAgICAgICAgICAqIGN1cnJlbnQgbGluZSBieSB0eCwgdHkuIEFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgb3BlcmF0b3Igc2V0IHRoZSBsZWFkaW5nCiAgICAgICAgICAgICAgICAgKiBwYXJhbWV0ZXIgaW4gdGhlIHRleHQgc3RhdGUuIFRoaXMgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUKICAgICAgICAgICAgICAgICAqIGNvZGU6CiAgICAgICAgICAgICAgICAgKiAtdHkgVEwKICAgICAgICAgICAgICAgICAqIHR4IHR5IFRkCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1REJzoKICAgICAgICAgICAgICAgICAgICAkY29vcmQgPSBleHBsb2RlKCcgJywgJGNvbW1hbmRbJ2MnXSk7CiAgICAgICAgICAgICAgICAgICAgJFRsID0gKGZsb2F0KSAkY29vcmRbMV07CiAgICAgICAgICAgICAgICAgICAgJFR4ICs9IChmbG9hdCkgJGNvb3JkWzBdOwogICAgICAgICAgICAgICAgICAgICRUeSAtPSAoZmxvYXQpICRjb29yZFsxXTsKICAgICAgICAgICAgICAgICAgICAkVG1bJHhdID0gKHN0cmluZykgJFR4OwogICAgICAgICAgICAgICAgICAgICRUbVskeV0gPSAoc3RyaW5nKSAkVHk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIGEgYiBjIGQgZSBmIFRtCiAgICAgICAgICAgICAgICAgKiBTZXQgdGhlIHRleHQgbWF0cml4LCBUbSwgYW5kIHRoZSB0ZXh0IGxpbmUgbWF0cml4LCBUbG0uIFRoZSBvcGVyYW5kcyBhcmUKICAgICAgICAgICAgICAgICAqIGFsbCBudW1iZXJzLCBhbmQgdGhlIGluaXRpYWwgdmFsdWUgZm9yIFRtIGFuZCBUbG0gaXMgdGhlIGlkZW50aXR5IG1hdHJpeAogICAgICAgICAgICAgICAgICogWzEgMCAwIDEgMCAwXQogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBjYXNlICdUbSc6CiAgICAgICAgICAgICAgICAgICAgJFRtID0gZXhwbG9kZSgnICcsICRjb21tYW5kWydjJ10pOwogICAgICAgICAgICAgICAgICAgICRUeCA9IChmbG9hdCkgJFRtWyR4XTsKICAgICAgICAgICAgICAgICAgICAkVHkgPSAoZmxvYXQpICRUbVskeV07CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIFQqCiAgICAgICAgICAgICAgICAgKiBNb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBsaW5lLiBUaGlzIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBlZmZlY3QKICAgICAgICAgICAgICAgICAqIGFzIHRoZSBjb2RlOgogICAgICAgICAgICAgICAgICogMCBUbCBUZAogICAgICAgICAgICAgICAgICogV2hlcmUgVGwgaXMgdGhlIGN1cnJlbnQgbGVhZGluZyBwYXJhbWV0ZXIgaW4gdGhlIHRleHQgc3RhdGUuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1QqJzoKICAgICAgICAgICAgICAgICAgICAkVHkgLT0gJFRsOwogICAgICAgICAgICAgICAgICAgICRUbVskeV0gPSAoc3RyaW5nKSAkVHk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIHN0cmluZyBUagogICAgICAgICAgICAgICAgICogU2hvdyBhIFRleHQgU3RyaW5nCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1RqJzoKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gWyRUbSwgJGN1cnJlbnRUZXh0XTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogc3RyaW5nICcKICAgICAgICAgICAgICAgICAqIE1vdmUgdG8gdGhlIG5leHQgbGluZSBhbmQgc2hvdyBhIHRleHQgc3RyaW5nLiBUaGlzIG9wZXJhdG9yIGhhcyB0aGUKICAgICAgICAgICAgICAgICAqIHNhbWUgZWZmZWN0IGFzIHRoZSBjb2RlOgogICAgICAgICAgICAgICAgICogVCoKICAgICAgICAgICAgICAgICAqIHN0cmluZyBUagogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBjYXNlICInIjoKICAgICAgICAgICAgICAgICAgICAkVHkgLT0gJFRsOwogICAgICAgICAgICAgICAgICAgICRUbVskeV0gPSAoc3RyaW5nKSAkVHk7CiAgICAgICAgICAgICAgICAgICAgJGV4dHJhY3RlZERhdGFbXSA9IFskVG0sICRjdXJyZW50VGV4dF07CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIGF3IGFjIHN0cmluZyAiCiAgICAgICAgICAgICAgICAgKiBNb3ZlIHRvIHRoZSBuZXh0IGxpbmUgYW5kIHNob3cgYSB0ZXh0IHN0cmluZywgdXNpbmcgYXcgYXMgdGhlIHdvcmQKICAgICAgICAgICAgICAgICAqIHNwYWNpbmcgYW5kIGFjIGFzIHRoZSBjaGFyYWN0ZXIgc3BhY2luZy4gVGhpcyBvcGVyYXRvciBoYXMgdGhlIHNhbWUKICAgICAgICAgICAgICAgICAqIGVmZmVjdCBhcyB0aGUgY29kZToKICAgICAgICAgICAgICAgICAqIGF3IFR3CiAgICAgICAgICAgICAgICAgKiBhYyBUYwogICAgICAgICAgICAgICAgICogc3RyaW5nICcKICAgICAgICAgICAgICAgICAqIFR3IHNldCB0aGUgd29yZCBzcGFjaW5nLCBUdywgdG8gd29yZFNwYWNlLgogICAgICAgICAgICAgICAgICogVGMgU2V0IHRoZSBjaGFyYWN0ZXIgc3BhY2luZywgVGMsIHRvIGNoYXJzU3BhY2UuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJyInOgogICAgICAgICAgICAgICAgICAgICRkYXRhID0gZXhwbG9kZSgnICcsICRjdXJyZW50VGV4dCk7CiAgICAgICAgICAgICAgICAgICAgJFR5IC09ICRUbDsKICAgICAgICAgICAgICAgICAgICAkVG1bJHldID0gKHN0cmluZykgJFR5OwogICAgICAgICAgICAgICAgICAgICRleHRyYWN0ZWREYXRhW10gPSBbJFRtLCAkZGF0YVsyXV07IC8vVmVyaWZ5CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAqIGFycmF5IFRKCiAgICAgICAgICAgICAgICAgKiBTaG93IG9uZSBvciBtb3JlIHRleHQgc3RyaW5ncyBhbGxvdyBpbmRpdmlkdWFsIGdseXBoIHBvc2l0aW9uaW5nLgogICAgICAgICAgICAgICAgICogRWFjaCBsZW1lbnQgb2YgYXJyYXkgY29uIGJlIGEgc3RyaW5nIG9yIGEgbnVtYmVyLiBJZiB0aGUgZWxlbWVudCBpcwogICAgICAgICAgICAgICAgICogYSBzdHJpbmcsIHRoaXMgb3BlcmF0b3Igc2hvd3MgdGhlIHN0cmluZy4gSWYgaXQgaXMgYSBudW1iZXIsIHRoZQogICAgICAgICAgICAgICAgICogb3BlcmF0b3IgYWRqdXN0IHRoZSB0ZXh0IHBvc2l0aW9uIGJ5IHRoYXQgYW1vdW50OyB0aGF0IGlzLCBpdCB0cmFuc2xhdGVzCiAgICAgICAgICAgICAgICAgKiB0aGUgdGV4dCBtYXRyaXgsIFRtLiBUaGlzIGFtb3VudCBpcyBzdWJzdHJhY3RlZCBmb3JtIHRoZSBjdXJyZW50CiAgICAgICAgICAgICAgICAgKiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvb3JkaW5hdGUsIGRlcGVuZGluZyBvbiB0aGUgd3JpdGluZyBtb2RlLgogICAgICAgICAgICAgICAgICogaW4gdGhlIGRlZmF1bHQgY29vcmRpbmF0ZSBzeXN0ZW0sIGEgcG9zaXRpdmUgYWRqdXN0bWVudCBoYXMgdGhlIGVmZmVjdAogICAgICAgICAgICAgICAgICogb2YgbW92aW5nIHRoZSBuZXh0IGdseXBoIHBhaW50ZWQgZWl0aGVyIHRvIHRoZSBsZWZ0IG9yIGRvd24gYnkgdGhlIGdpdmVuCiAgICAgICAgICAgICAgICAgKiBhbW91bnQuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGNhc2UgJ1RKJzoKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gWyRUbSwgJGN1cnJlbnRUZXh0XTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRoaXMtPmRhdGFUbSA9ICRleHRyYWN0ZWREYXRhOwoKICAgICAgICByZXR1cm4gJGV4dHJhY3RlZERhdGE7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIHRleHQgZGF0YSB0aGF0IGFyZSBhcm91bmQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzIChYLFkpCiAgICAgKgogICAgICogSWYgdGhlIHRleHQgaXMgaW4gbmVhciB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMgKFgsWSkgKG9yIHRoZSBUTSBpbmZvKSwKICAgICAqIHRoZSB0ZXh0IGlzIHJldHVybmVkLiAgVGhlIGV4dHJhY3RlZERhdGEgcmV0dXJuIGJ5IGdldERhdGFUbSwgY291bGQgYmUgdXNlIHRvIHNlZQogICAgICogd2hlcmUgaXMgdGhlIGNvb3JkaW5hdGVzIG9mIGEgZ2l2ZW4gdGV4dCwgdXNpbmcgdGhlIFRNIGluZm8gZm9yIGl0LgogICAgICoKICAgICAqIEBwYXJhbSBmbG9hdCAkeCAgICAgIFRoZSBYIHZhbHVlIG9mIHRoZSBjb29yZGluYXRlIHRvIHNlYXJjaCBmb3IuIGlmIG51bGwKICAgICAqICAgICAgICAgICAgICAgICAgICAgIGp1c3QgdGhlIFkgdmFsdWUgaXMgY29uc2lkZXJlZCAoc2FtZSBSb3cpCiAgICAgKiBAcGFyYW0gZmxvYXQgJHkgICAgICBUaGUgWSB2YWx1ZSBvZiB0aGUgY29vcmRpbmF0ZSB0byBzZWFyY2ggZm9yCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBqdXN0IHRoZSBYIHZhbHVlIGlzIGNvbnNpZGVyZWQgKHNhbWUgY29sdW1uKQogICAgICogQHBhcmFtIGZsb2F0ICR4RXJyb3IgVGhlIHZhbHVlIGxlc3Mgb3IgbW9yZSB0byBjb25zaWRlciBhbiBYIHRvIGJlICJuZWFyIgogICAgICogQHBhcmFtIGZsb2F0ICR5RXJyb3IgVGhlIHZhbHVlIGxlc3Mgb3IgbW9yZSB0byBjb25zaWRlciBhbiBZIHRvIGJlICJuZWFyIgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQW4gYXJyYXkgb2YgdGV4dCB0aGF0IGFyZSBuZWFyIHRoZSBnaXZlbiBjb29yZGluYXRlcy4gSWYgbm8gdGV4dAogICAgICogICAgICAgICAgICAgICAibmVhciIgdGhlIHgseSBjb29yZGluYXRlLCBhbiBlbXB0eSBhcnJheSBpcyByZXR1cm5lZC4gSWYgQm90aCwgeAogICAgICogICAgICAgICAgICAgICBhbmQgeSBjb29yZGluYXRlcyBhcmUgbnVsbCwgbnVsbCBpcyByZXR1cm5lZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFRleHRYWSgkeCA9IG51bGwsICR5ID0gbnVsbCwgJHhFcnJvciA9IDAsICR5RXJyb3IgPSAwKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmRhdGFUbSkgfHwgISR0aGlzLT5kYXRhVG0pIHsKICAgICAgICAgICAgJHRoaXMtPmdldERhdGFUbSgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgIT09ICR4KSB7CiAgICAgICAgICAgICR4ID0gKGZsb2F0KSAkeDsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkeSkgewogICAgICAgICAgICAkeSA9IChmbG9hdCkgJHk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCA9PT0gJHggJiYgbnVsbCA9PT0gJHkpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgJHhFcnJvciA9IChmbG9hdCkgJHhFcnJvcjsKICAgICAgICAkeUVycm9yID0gKGZsb2F0KSAkeUVycm9yOwoKICAgICAgICAkZXh0cmFjdGVkRGF0YSA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kYXRhVG0gYXMgJGl0ZW0pIHsKICAgICAgICAgICAgJHRtID0gJGl0ZW1bMF07CiAgICAgICAgICAgICR4VG0gPSAoZmxvYXQpICR0bVs0XTsKICAgICAgICAgICAgJHlUbSA9IChmbG9hdCkgJHRtWzVdOwogICAgICAgICAgICAkdGV4dCA9ICRpdGVtWzFdOwogICAgICAgICAgICBpZiAobnVsbCA9PT0gJHkpIHsKICAgICAgICAgICAgICAgIGlmICgoJHhUbSA+PSAoJHggLSAkeEVycm9yKSkgJiYKICAgICAgICAgICAgICAgICAgICAoJHhUbSA8PSAoJHggKyAkeEVycm9yKSkpIHsKICAgICAgICAgICAgICAgICAgICAkZXh0cmFjdGVkRGF0YVtdID0gWyR0bSwgJHRleHRdOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChudWxsID09PSAkeCkgewogICAgICAgICAgICAgICAgaWYgKCgkeVRtID49ICgkeSAtICR5RXJyb3IpKSAmJgogICAgICAgICAgICAgICAgICAgICgkeVRtIDw9ICgkeSArICR5RXJyb3IpKSkgewogICAgICAgICAgICAgICAgICAgICRleHRyYWN0ZWREYXRhW10gPSBbJHRtLCAkdGV4dF07CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCgkeFRtID49ICgkeCAtICR4RXJyb3IpKSAmJgogICAgICAgICAgICAgICAgKCR4VG0gPD0gKCR4ICsgJHhFcnJvcikpICYmCiAgICAgICAgICAgICAgICAoJHlUbSA+PSAoJHkgLSAkeUVycm9yKSkgJiYKICAgICAgICAgICAgICAgICgkeVRtIDw9ICgkeSArICR5RXJyb3IpKSkgewogICAgICAgICAgICAgICAgJGV4dHJhY3RlZERhdGFbXSA9IFskdG0sICR0ZXh0XTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGV4dHJhY3RlZERhdGE7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Pages.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7CgovKioKICogQ2xhc3MgUGFnZXMKICovCmNsYXNzIFBhZ2VzIGV4dGVuZHMgUERGT2JqZWN0CnsKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJGRlZXAKICAgICAqCiAgICAgKiBAdG9kbyBPYmplY3RzIG90aGVyIHRoYW4gUGFnZXMgb3IgUGFnZSBtaWdodCBuZWVkIHRvIGJlIHRyZWF0ZWQgc3BlY2lmaWNhbGx5IGluIG9yZGVyIHRvIGdldCBQYWdlIG9iamVjdHMgb3V0IG9mIHRoZW0sCiAgICAgKiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3NtYWxvdC9wZGZwYXJzZXIvaXNzdWVzLzMzMQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhZ2VzKCRkZWVwID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+aGFzKCdLaWRzJykpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkZGVlcCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldCgnS2lkcycpLT5nZXRDb250ZW50KCk7CiAgICAgICAgfQoKICAgICAgICAka2lkcyA9ICR0aGlzLT5nZXQoJ0tpZHMnKS0+Z2V0Q29udGVudCgpOwogICAgICAgICRwYWdlcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgka2lkcyBhcyAka2lkKSB7CiAgICAgICAgICAgIGlmICgka2lkIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICAgICAgJHBhZ2VzID0gYXJyYXlfbWVyZ2UoJHBhZ2VzLCAka2lkLT5nZXRQYWdlcyh0cnVlKSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgka2lkIGluc3RhbmNlb2YgUGFnZSkgewogICAgICAgICAgICAgICAgJHBhZ2VzW10gPSAka2lkOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHBhZ2VzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7Cgp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnRBcnJheTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50Qm9vbGVhbjsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50RGF0ZTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50SGV4YTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TmFtZTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TnVsbDsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50TnVtZXJpYzsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcRWxlbWVudFxFbGVtZW50U3RyaW5nOwp1c2UgU21hbG90XFBkZlBhcnNlclxFbGVtZW50XEVsZW1lbnRYUmVmOwp1c2UgU21hbG90XFBkZlBhcnNlclxSYXdEYXRhXFJhd0RhdGFQYXJzZXI7CgovKioKICogQ2xhc3MgUGFyc2VyCiAqLwpjbGFzcyBQYXJzZXIKewogICAgLyoqCiAgICAgKiBAdmFyIENvbmZpZwogICAgICovCiAgICBwcml2YXRlICRjb25maWc7CgogICAgLyoqCiAgICAgKiBAdmFyIFBERk9iamVjdFtdCiAgICAgKi8KICAgIHByb3RlY3RlZCAkb2JqZWN0cyA9IFtdOwoKICAgIHByb3RlY3RlZCAkcmF3RGF0YVBhcnNlcjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNmZyA9IFtdLCBDb25maWcgJGNvbmZpZyA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbmZpZyA9ICRjb25maWcgPzogbmV3IENvbmZpZygpOwogICAgICAgICR0aGlzLT5yYXdEYXRhUGFyc2VyID0gbmV3IFJhd0RhdGFQYXJzZXIoJGNmZywgJHRoaXMtPmNvbmZpZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIENvbmZpZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29uZmlnKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbmZpZzsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKgogICAgICogQHJldHVybiBEb2N1bWVudAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VGaWxlKCRmaWxlbmFtZSkKICAgIHsKICAgICAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlbmFtZSk7CiAgICAgICAgLyoKICAgICAgICAgKiAyMDE4LzA2LzIwIEBkb2dhbm9vIGFzIG11bHRpcGxlIHRpbWVzIGEKICAgICAgICAgKiB1c2VycyBoYXZlIGNvbXBsYWluZWQgdGhhdCB0aGUgcGFyc2VGaWxlKCkKICAgICAgICAgKiBtZXRob2QgZGllcyBzaWxlbnRseSwgaXQgaXMgYW4gYmV0dGVyIG9wdGlvbgogICAgICAgICAqIHRvIHJlbW92ZSB0aGUgZXJyb3IgY29udHJvbCBvcGVyYXRvciAoQCkgYW5kCiAgICAgICAgICogbGV0IHRoZSB1c2VycyBrbm93IHRoYXQgdGhlIG1ldGhvZCB0aHJvd3MgYW4gZXhjZXB0aW9uCiAgICAgICAgICogYnkgYWRkaW5nIEB0aHJvd3MgdGFnIHRvIFBIUERvYy4KICAgICAgICAgKgogICAgICAgICAqIFNlZSBoZXJlIGZvciBhbiBleGFtcGxlOiBodHRwczovL2dpdGh1Yi5jb20vc21hbG90L3BkZnBhcnNlci9pc3N1ZXMvMjA0CiAgICAgICAgICovCiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZUNvbnRlbnQoJGNvbnRlbnQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY29udGVudCBQREYgY29udGVudCB0byBwYXJzZQogICAgICoKICAgICAqIEByZXR1cm4gRG9jdW1lbnQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gaWYgc2VjdXJlZCBQREYgZmlsZSB3YXMgZGV0ZWN0ZWQKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBpZiBubyBvYmplY3QgbGlzdCB3YXMgZm91bmQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlQ29udGVudCgkY29udGVudCkKICAgIHsKICAgICAgICAvLyBDcmVhdGUgc3RydWN0dXJlIGZyb20gcmF3IGRhdGEuCiAgICAgICAgbGlzdCgkeHJlZiwgJGRhdGEpID0gJHRoaXMtPnJhd0RhdGFQYXJzZXItPnBhcnNlRGF0YSgkY29udGVudCk7CgogICAgICAgIGlmIChpc3NldCgkeHJlZlsndHJhaWxlciddWydlbmNyeXB0J10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdTZWN1cmVkIHBkZiBmaWxlIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4nKTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkZGF0YSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ09iamVjdCBsaXN0IG5vdCBmb3VuZC4gUG9zc2libGUgc2VjdXJlZCBmaWxlLicpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ3JlYXRlIGRlc3RpbmF0aW9uIG9iamVjdC4KICAgICAgICAkZG9jdW1lbnQgPSBuZXcgRG9jdW1lbnQoKTsKICAgICAgICAkdGhpcy0+b2JqZWN0cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkZGF0YSBhcyAkaWQgPT4gJHN0cnVjdHVyZSkgewogICAgICAgICAgICAkdGhpcy0+cGFyc2VPYmplY3QoJGlkLCAkc3RydWN0dXJlLCAkZG9jdW1lbnQpOwogICAgICAgICAgICB1bnNldCgkZGF0YVskaWRdKTsKICAgICAgICB9CgogICAgICAgICRkb2N1bWVudC0+c2V0VHJhaWxlcigkdGhpcy0+cGFyc2VUcmFpbGVyKCR4cmVmWyd0cmFpbGVyJ10sICRkb2N1bWVudCkpOwogICAgICAgICRkb2N1bWVudC0+c2V0T2JqZWN0cygkdGhpcy0+b2JqZWN0cyk7CgogICAgICAgIHJldHVybiAkZG9jdW1lbnQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBhcnNlVHJhaWxlcigkc3RydWN0dXJlLCAkZG9jdW1lbnQpCiAgICB7CiAgICAgICAgJHRyYWlsZXIgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHN0cnVjdHVyZSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgICAgICAgICRuYW1lID0gdWNmaXJzdCgkbmFtZSk7CgogICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkdmFsdWVzKSkgewogICAgICAgICAgICAgICAgJHRyYWlsZXJbJG5hbWVdID0gbmV3IEVsZW1lbnROdW1lcmljKCR2YWx1ZXMpOwogICAgICAgICAgICB9IGVsc2VpZiAoXGlzX2FycmF5KCR2YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+cGFyc2VUcmFpbGVyKCR2YWx1ZXMsIG51bGwpOwogICAgICAgICAgICAgICAgJHRyYWlsZXJbJG5hbWVdID0gbmV3IEVsZW1lbnRBcnJheSgkdmFsdWUsIG51bGwpOwogICAgICAgICAgICB9IGVsc2VpZiAoZmFsc2UgIT09IHN0cnBvcygkdmFsdWVzLCAnXycpKSB7CiAgICAgICAgICAgICAgICAkdHJhaWxlclskbmFtZV0gPSBuZXcgRWxlbWVudFhSZWYoJHZhbHVlcywgJGRvY3VtZW50KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0cmFpbGVyWyRuYW1lXSA9ICR0aGlzLT5wYXJzZUhlYWRlckVsZW1lbnQoJygnLCAkdmFsdWVzLCAkZG9jdW1lbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEhlYWRlcigkdHJhaWxlciwgJGRvY3VtZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkaWQKICAgICAqIEBwYXJhbSBhcnJheSAgICAkc3RydWN0dXJlCiAgICAgKiBAcGFyYW0gRG9jdW1lbnQgJGRvY3VtZW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJzZU9iamVjdCgkaWQsICRzdHJ1Y3R1cmUsICRkb2N1bWVudCkKICAgIHsKICAgICAgICAkaGVhZGVyID0gbmV3IEhlYWRlcihbXSwgJGRvY3VtZW50KTsKICAgICAgICAkY29udGVudCA9ICcnOwoKICAgICAgICBmb3JlYWNoICgkc3RydWN0dXJlIGFzICRwb3NpdGlvbiA9PiAkcGFydCkgewogICAgICAgICAgICBpZiAoXGlzX2ludCgkcGFydCkpIHsKICAgICAgICAgICAgICAgICRwYXJ0ID0gW251bGwsIG51bGxdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN3aXRjaCAoJHBhcnRbMF0pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICAgICAgICAgICAgICRlbGVtZW50cyA9IFtdOwoKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFydFsxXSBhcyAkc3ViX2VsZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Yl90eXBlID0gJHN1Yl9lbGVtZW50WzBdOwogICAgICAgICAgICAgICAgICAgICAgICAkc3ViX3ZhbHVlID0gJHN1Yl9lbGVtZW50WzFdOwogICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudHNbXSA9ICR0aGlzLT5wYXJzZUhlYWRlckVsZW1lbnQoJHN1Yl90eXBlLCAkc3ViX3ZhbHVlLCAkZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGhlYWRlciA9IG5ldyBIZWFkZXIoJGVsZW1lbnRzLCAkZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJzw8JzoKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyID0gJHRoaXMtPnBhcnNlSGVhZGVyKCRwYXJ0WzFdLCAkZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmVhbSc6CiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBpc3NldCgkcGFydFszXVswXSkgPyAkcGFydFszXVswXSA6ICRwYXJ0WzFdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGhlYWRlci0+Z2V0KCdUeXBlJyktPmVxdWFscygnT2JqU3RtJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBTcGxpdCB4cmVmcyBhbmQgY29udGVudHMuCiAgICAgICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9eKChcZCtccytcZCtccyopKikoLiopJC9zJywgJGNvbnRlbnQsICRtYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJG1hdGNoWzNdOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXh0cmFjdCB4cmVmcy4KICAgICAgICAgICAgICAgICAgICAgICAgJHhyZWZzID0gcHJlZ19zcGxpdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvKFxkK1xzK1xkK1xzKikvcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICBcUFJFR19TUExJVF9OT19FTVBUWSB8IFxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmxlID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkeHJlZnMgYXMgJHhyZWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoJGlkLCAkcG9zaXRpb24pID0gcHJlZ19zcGxpdCgiL1xzKy8iLCB0cmltKCR4cmVmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFibGVbJHBvc2l0aW9uXSA9ICRpZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAga3NvcnQoJHRhYmxlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRpZHMgPSBhcnJheV92YWx1ZXMoJHRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBvc2l0aW9ucyA9IGFycmF5X2tleXMoJHRhYmxlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwb3NpdGlvbnMgYXMgJGluZGV4ID0+ICRwb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkID0gJGlkc1skaW5kZXhdLidfMCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV4dF9wb3NpdGlvbiA9IGlzc2V0KCRwb3NpdGlvbnNbJGluZGV4ICsgMV0pID8gJHBvc2l0aW9uc1skaW5kZXggKyAxXSA6IFxzdHJsZW4oJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN1Yl9jb250ZW50ID0gc3Vic3RyKCRjb250ZW50LCAkcG9zaXRpb24sIChpbnQpICRuZXh0X3Bvc2l0aW9uIC0gKGludCkgJHBvc2l0aW9uKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3ViX2hlYWRlciA9IEhlYWRlcjo6cGFyc2UoJHN1Yl9jb250ZW50LCAkZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9iamVjdCA9IFBERk9iamVjdDo6ZmFjdG9yeSgkZG9jdW1lbnQsICRzdWJfaGVhZGVyLCAnJywgJHRoaXMtPmNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+b2JqZWN0c1skaWRdID0gJG9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzdG9yZSB0aGlzIGNvbnRlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gJyc7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgKCdudWxsJyAhPSAkcGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudCA9ICR0aGlzLT5wYXJzZUhlYWRlckVsZW1lbnQoJHBhcnRbMF0sICRwYXJ0WzFdLCAkZG9jdW1lbnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRlbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyID0gbmV3IEhlYWRlcihbJGVsZW1lbnRdLCAkZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5vYmplY3RzWyRpZF0pKSB7CiAgICAgICAgICAgICR0aGlzLT5vYmplY3RzWyRpZF0gPSBQREZPYmplY3Q6OmZhY3RvcnkoJGRvY3VtZW50LCAkaGVhZGVyLCAkY29udGVudCwgJHRoaXMtPmNvbmZpZyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICAgICRzdHJ1Y3R1cmUKICAgICAqIEBwYXJhbSBEb2N1bWVudCAkZG9jdW1lbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIEhlYWRlcgogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGFyc2VIZWFkZXIoJHN0cnVjdHVyZSwgJGRvY3VtZW50KQogICAgewogICAgICAgICRlbGVtZW50cyA9IFtdOwogICAgICAgICRjb3VudCA9IFxjb3VudCgkc3RydWN0dXJlKTsKCiAgICAgICAgZm9yICgkcG9zaXRpb24gPSAwOyAkcG9zaXRpb24gPCAkY291bnQ7ICRwb3NpdGlvbiArPSAyKSB7CiAgICAgICAgICAgICRuYW1lID0gJHN0cnVjdHVyZVskcG9zaXRpb25dWzFdOwogICAgICAgICAgICAkdHlwZSA9ICRzdHJ1Y3R1cmVbJHBvc2l0aW9uICsgMV1bMF07CiAgICAgICAgICAgICR2YWx1ZSA9ICRzdHJ1Y3R1cmVbJHBvc2l0aW9uICsgMV1bMV07CgogICAgICAgICAgICAkZWxlbWVudHNbJG5hbWVdID0gJHRoaXMtPnBhcnNlSGVhZGVyRWxlbWVudCgkdHlwZSwgJHZhbHVlLCAkZG9jdW1lbnQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBIZWFkZXIoJGVsZW1lbnRzLCAkZG9jdW1lbnQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAkdHlwZQogICAgICogQHBhcmFtIHN0cmluZ3xhcnJheSAkdmFsdWUKICAgICAqIEBwYXJhbSBEb2N1bWVudCAgICAgJGRvY3VtZW50CiAgICAgKgogICAgICogQHJldHVybiBFbGVtZW50fEhlYWRlcnxudWxsCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJzZUhlYWRlckVsZW1lbnQoJHR5cGUsICR2YWx1ZSwgJGRvY3VtZW50KQogICAgewogICAgICAgIHN3aXRjaCAoJHR5cGUpIHsKICAgICAgICAgICAgY2FzZSAnPDwnOgogICAgICAgICAgICBjYXNlICc+Pic6CiAgICAgICAgICAgICAgICAkaGVhZGVyID0gJHRoaXMtPnBhcnNlSGVhZGVyKCR2YWx1ZSwgJGRvY3VtZW50KTsKICAgICAgICAgICAgICAgIFBERk9iamVjdDo6ZmFjdG9yeSgkZG9jdW1lbnQsICRoZWFkZXIsIG51bGwsICR0aGlzLT5jb25maWcpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkaGVhZGVyOwoKICAgICAgICAgICAgY2FzZSAnbnVtZXJpYyc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVsZW1lbnROdW1lcmljKCR2YWx1ZSk7CgogICAgICAgICAgICBjYXNlICdib29sZWFuJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRWxlbWVudEJvb2xlYW4oJHZhbHVlKTsKCiAgICAgICAgICAgIGNhc2UgJ251bGwnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFbGVtZW50TnVsbCgpOwoKICAgICAgICAgICAgY2FzZSAnKCc6CiAgICAgICAgICAgICAgICBpZiAoJGRhdGUgPSBFbGVtZW50RGF0ZTo6cGFyc2UoJygnLiR2YWx1ZS4nKScsICRkb2N1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGRhdGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIEVsZW1lbnRTdHJpbmc6OnBhcnNlKCcoJy4kdmFsdWUuJyknLCAkZG9jdW1lbnQpOwoKICAgICAgICAgICAgY2FzZSAnPCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnBhcnNlSGVhZGVyRWxlbWVudCgnKCcsIEVsZW1lbnRIZXhhOjpkZWNvZGUoJHZhbHVlLCAkZG9jdW1lbnQpLCAkZG9jdW1lbnQpOwoKICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgICAgICByZXR1cm4gRWxlbWVudE5hbWU6OnBhcnNlKCcvJy4kdmFsdWUsICRkb2N1bWVudCk7CgogICAgICAgICAgICBjYXNlICdvamJyZWYnOiAvLyBvbGQgbWlzdGFrZSBpbiB0Y3BkZiBwYXJzZXIKICAgICAgICAgICAgY2FzZSAnb2JqcmVmJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRWxlbWVudFhSZWYoJHZhbHVlLCAkZG9jdW1lbnQpOwoKICAgICAgICAgICAgY2FzZSAnWyc6CiAgICAgICAgICAgICAgICAkdmFsdWVzID0gW107CgogICAgICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICRzdWJfZWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3ViX3R5cGUgPSAkc3ViX2VsZW1lbnRbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICRzdWJfdmFsdWUgPSAkc3ViX2VsZW1lbnRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR0aGlzLT5wYXJzZUhlYWRlckVsZW1lbnQoJHN1Yl90eXBlLCAkc3ViX3ZhbHVlLCAkZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVsZW1lbnRBcnJheSgkdmFsdWVzLCAkZG9jdW1lbnQpOwoKICAgICAgICAgICAgY2FzZSAnZW5kc3RyZWFtJzoKICAgICAgICAgICAgY2FzZSAnb2JqJzogLy9JIGRvbid0IGtub3cgd2hhdCBpdCBtZWFucyBidXQgZ290IG15IHByb2plY3QgZml4ZWQuCiAgICAgICAgICAgIGNhc2UgJyc6CiAgICAgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIHdpdGguCiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignSW52YWxpZCB0eXBlOiAiJy4kdHlwZS4nIi4nKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/PDFObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXI7Cgp1c2UgU21hbG90XFBkZlBhcnNlclxYT2JqZWN0XEZvcm07CnVzZSBTbWFsb3RcUGRmUGFyc2VyXFhPYmplY3RcSW1hZ2U7CgovKioKICogQ2xhc3MgUERGT2JqZWN0CiAqLwpjbGFzcyBQREZPYmplY3QKewogICAgY29uc3QgVFlQRSA9ICd0JzsKCiAgICBjb25zdCBPUEVSQVRPUiA9ICdvJzsKCiAgICBjb25zdCBDT01NQU5EID0gJ2MnOwoKICAgIC8qKgogICAgICogVGhlIHJlY3Vyc2lvbiBzdGFjay4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgJHJlY3Vyc2lvblN0YWNrID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIERvY3VtZW50CiAgICAgKi8KICAgIHByb3RlY3RlZCAkZG9jdW1lbnQgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBIZWFkZXIKICAgICAqLwogICAgcHJvdGVjdGVkICRoZWFkZXIgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkICRjb250ZW50ID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgQ29uZmlnCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY29uZmlnOwoKICAgIC8qKgogICAgICogQHBhcmFtIEhlYWRlciAkaGVhZGVyCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50CiAgICAgKiBAcGFyYW0gQ29uZmlnICRjb25maWcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIERvY3VtZW50ICRkb2N1bWVudCwKICAgICAgICBIZWFkZXIgJGhlYWRlciA9IG51bGwsCiAgICAgICAgJGNvbnRlbnQgPSBudWxsLAogICAgICAgIENvbmZpZyAkY29uZmlnID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPmRvY3VtZW50ID0gJGRvY3VtZW50OwogICAgICAgICR0aGlzLT5oZWFkZXIgPSBudWxsICE9PSAkaGVhZGVyID8gJGhlYWRlciA6IG5ldyBIZWFkZXIoKTsKICAgICAgICAkdGhpcy0+Y29udGVudCA9ICRjb250ZW50OwogICAgICAgICR0aGlzLT5jb25maWcgPSAkY29uZmlnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0KCkKICAgIHsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gSGVhZGVyfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWFkZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKgogICAgICogQHJldHVybiBFbGVtZW50fFBERk9iamVjdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCRuYW1lKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyLT5nZXQoJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKCRuYW1lKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyLT5oYXMoJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJGRlZXAKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZXRhaWxzKCRkZWVwID0gdHJ1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmhlYWRlci0+Z2V0RGV0YWlscygkZGVlcCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhbkNvbnRlbnQoJGNvbnRlbnQsICRjaGFyID0gJ1gnKQogICAgewogICAgICAgICRjaGFyID0gJGNoYXJbMF07CiAgICAgICAgJGNvbnRlbnQgPSBzdHJfcmVwbGFjZShbJ1xcXFwnLCAnXFwpJywgJ1xcKCddLCAkY2hhci4kY2hhciwgJGNvbnRlbnQpOwoKICAgICAgICAvLyBSZW1vdmUgaW1hZ2UgYmxvYyB3aXRoIGJpbmFyeSBjb250ZW50CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJy9ccyhCSVxzLio/KFxzSURccykuKj8oXHNFSSkpXHMvcycsICRjb250ZW50LCAkbWF0Y2hlcywgXFBSRUdfT0ZGU0VUX0NBUFRVUkUpOwogICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzWzBdIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICRjb250ZW50ID0gc3Vic3RyX3JlcGxhY2UoJGNvbnRlbnQsIHN0cl9yZXBlYXQoJGNoYXIsIFxzdHJsZW4oJHBhcnRbMF0pKSwgJHBhcnRbMV0sIFxzdHJsZW4oJHBhcnRbMF0pKTsKICAgICAgICB9CgogICAgICAgIC8vIENsZWFuIGNvbnRlbnQgaW4gc3F1YXJlIGJyYWNrZXRzIFsuLi4uLl0KICAgICAgICBwcmVnX21hdGNoX2FsbCgnL1xbKChcKC4qP1wpfFswLTlcLlwtXHNdKikqKVxdL3MnLCAkY29udGVudCwgJG1hdGNoZXMsIFxQUkVHX09GRlNFVF9DQVBUVVJFKTsKICAgICAgICBmb3JlYWNoICgkbWF0Y2hlc1sxXSBhcyAkcGFydCkgewogICAgICAgICAgICAkY29udGVudCA9IHN1YnN0cl9yZXBsYWNlKCRjb250ZW50LCBzdHJfcmVwZWF0KCRjaGFyLCBcc3RybGVuKCRwYXJ0WzBdKSksICRwYXJ0WzFdLCBcc3RybGVuKCRwYXJ0WzBdKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhbiBjb250ZW50IGluIHJvdW5kIGJyYWNrZXRzICguLi4uLikKICAgICAgICBwcmVnX21hdGNoX2FsbCgnL1woKC4qPylcKS9zJywgJGNvbnRlbnQsICRtYXRjaGVzLCBcUFJFR19PRkZTRVRfQ0FQVFVSRSk7CiAgICAgICAgZm9yZWFjaCAoJG1hdGNoZXNbMV0gYXMgJHBhcnQpIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSBzdWJzdHJfcmVwbGFjZSgkY29udGVudCwgc3RyX3JlcGVhdCgkY2hhciwgXHN0cmxlbigkcGFydFswXSkpLCAkcGFydFsxXSwgXHN0cmxlbigkcGFydFswXSkpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2xlYW4gc3RydWN0dXJlCiAgICAgICAgaWYgKCRwYXJ0cyA9IHByZWdfc3BsaXQoJy8oPHw+KS9zJywgJGNvbnRlbnQsIC0xLCBcUFJFR19TUExJVF9OT19FTVBUWSB8IFxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpKSB7CiAgICAgICAgICAgICRjb250ZW50ID0gJyc7CiAgICAgICAgICAgICRsZXZlbCA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgewogICAgICAgICAgICAgICAgaWYgKCc8JyA9PSAkcGFydCkgewogICAgICAgICAgICAgICAgICAgICsrJGxldmVsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjb250ZW50IC49ICgwID09ICRsZXZlbCA/ICRwYXJ0IDogc3RyX3JlcGVhdCgkY2hhciwgXHN0cmxlbigkcGFydCkpKTsKCiAgICAgICAgICAgICAgICBpZiAoJz4nID09ICRwYXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgLS0kbGV2ZWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIENsZWFuIEJEQyBhbmQgRU1DIG1hcmt1cAogICAgICAgIHByZWdfbWF0Y2hfYWxsKAogICAgICAgICAgICAnLyhcL1tBLVphLXowLTlcX10qXHMqJy5wcmVnX3F1b3RlKCRjaGFyKS4nKkJEQykvcycsCiAgICAgICAgICAgICRjb250ZW50LAogICAgICAgICAgICAkbWF0Y2hlcywKICAgICAgICAgICAgXFBSRUdfT0ZGU0VUX0NBUFRVUkUKICAgICAgICApOwogICAgICAgIGZvcmVhY2ggKCRtYXRjaGVzWzFdIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICRjb250ZW50ID0gc3Vic3RyX3JlcGxhY2UoJGNvbnRlbnQsIHN0cl9yZXBlYXQoJGNoYXIsIFxzdHJsZW4oJHBhcnRbMF0pKSwgJHBhcnRbMV0sIFxzdHJsZW4oJHBhcnRbMF0pKTsKICAgICAgICB9CgogICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvXHMoRU1DKVxzL3MnLCAkY29udGVudCwgJG1hdGNoZXMsIFxQUkVHX09GRlNFVF9DQVBUVVJFKTsKICAgICAgICBmb3JlYWNoICgkbWF0Y2hlc1sxXSBhcyAkcGFydCkgewogICAgICAgICAgICAkY29udGVudCA9IHN1YnN0cl9yZXBsYWNlKCRjb250ZW50LCBzdHJfcmVwZWF0KCRjaGFyLCBcc3RybGVuKCRwYXJ0WzBdKSksICRwYXJ0WzFdLCBcc3RybGVuKCRwYXJ0WzBdKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VjdGlvbnNUZXh0KCRjb250ZW50KQogICAgewogICAgICAgICRzZWN0aW9ucyA9IFtdOwogICAgICAgICRjb250ZW50ID0gJyAnLiRjb250ZW50LicgJzsKICAgICAgICAkdGV4dENsZWFuZWQgPSAkdGhpcy0+Y2xlYW5Db250ZW50KCRjb250ZW50LCAnXycpOwoKICAgICAgICAvLyBFeHRyYWN0IHRleHQgYmxvY2tzLgogICAgICAgIGlmIChwcmVnX21hdGNoX2FsbCgnLyhcc1EpP1xzK0JUW1xzfFwofFxbXSsoLio/KVxzKkVUKFxzcSk/L3MnLCAkdGV4dENsZWFuZWQsICRtYXRjaGVzLCBcUFJFR19PRkZTRVRfQ0FQVFVSRSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJG1hdGNoZXNbMl0gYXMgJHBvcyA9PiAkcGFydCkgewogICAgICAgICAgICAgICAgJHRleHQgPSAkcGFydFswXTsKICAgICAgICAgICAgICAgIGlmICgnJyA9PT0gJHRleHQpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvZmZzZXQgPSAkcGFydFsxXTsKICAgICAgICAgICAgICAgICRzZWN0aW9uID0gc3Vic3RyKCRjb250ZW50LCAkb2Zmc2V0LCBcc3RybGVuKCR0ZXh0KSk7CgogICAgICAgICAgICAgICAgLy8gUmVtb3ZlcyBCREMgYW5kIEVNQyBtYXJrdXAuCiAgICAgICAgICAgICAgICAkc2VjdGlvbiA9IHByZWdfcmVwbGFjZSgnLyhcL1tBLVphLXowLTldK1xzKjw8Lio/KSg+PlxzKkJEQykoLio/KShFTUNccyspL3MnLCAnJHszfScsICRzZWN0aW9uLicgJyk7CgogICAgICAgICAgICAgICAgLy8gQWRkIFEgYW5kIHEgZmxhZ3MgaWYgZGV0ZWN0ZWQgYXJvdW5kIEJUL0VULgogICAgICAgICAgICAgICAgLy8gQHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3NtYWxvdC9wZGZwYXJzZXIvaXNzdWVzLzM4NwogICAgICAgICAgICAgICAgJHNlY3Rpb24gPSB0cmltKCghZW1wdHkoJG1hdGNoZXNbMV1bJHBvc11bMF0pID8gIlFcbiIgOiAnJykuJHNlY3Rpb24pLighZW1wdHkoJG1hdGNoZXNbM11bJHBvc11bMF0pID8gIlxucSIgOiAnJyk7CgogICAgICAgICAgICAgICAgJHNlY3Rpb25zW10gPSAkc2VjdGlvbjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gRXh0cmFjdCAnZG8nIGNvbW1hbmRzLgogICAgICAgIGlmIChwcmVnX21hdGNoX2FsbCgnLyhcL1tBLVphLXowLTlcLlwtX10rXHMrRG8pXHMvcycsICR0ZXh0Q2xlYW5lZCwgJG1hdGNoZXMsIFxQUkVHX09GRlNFVF9DQVBUVVJFKSkgewogICAgICAgICAgICBmb3JlYWNoICgkbWF0Y2hlc1sxXSBhcyAkcGFydCkgewogICAgICAgICAgICAgICAgJHRleHQgPSAkcGFydFswXTsKICAgICAgICAgICAgICAgICRvZmZzZXQgPSAkcGFydFsxXTsKICAgICAgICAgICAgICAgICRzZWN0aW9uID0gc3Vic3RyKCRjb250ZW50LCAkb2Zmc2V0LCBcc3RybGVuKCR0ZXh0KSk7CgogICAgICAgICAgICAgICAgJHNlY3Rpb25zW10gPSAkc2VjdGlvbjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzZWN0aW9uczsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldERlZmF1bHRGb250KFBhZ2UgJHBhZ2UgPSBudWxsKQogICAgewogICAgICAgICRmb250cyA9IFtdOwogICAgICAgIGlmIChudWxsICE9PSAkcGFnZSkgewogICAgICAgICAgICAkZm9udHMgPSAkcGFnZS0+Z2V0Rm9udHMoKTsKICAgICAgICB9CgogICAgICAgICRmb250cyA9IGFycmF5X21lcmdlKCRmb250cywgYXJyYXlfdmFsdWVzKCR0aGlzLT5kb2N1bWVudC0+Z2V0Rm9udHMoKSkpOwoKICAgICAgICBpZiAoXGNvdW50KCRmb250cykgPiAwKSB7CiAgICAgICAgICAgIHJldHVybiByZXNldCgkZm9udHMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBGb250KCR0aGlzLT5kb2N1bWVudCwgbnVsbCwgbnVsbCwgJHRoaXMtPmNvbmZpZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUGFnZSAkcGFnZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0KFBhZ2UgJHBhZ2UgPSBudWxsKQogICAgewogICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICAkc2VjdGlvbnMgPSAkdGhpcy0+Z2V0U2VjdGlvbnNUZXh0KCR0aGlzLT5jb250ZW50KTsKICAgICAgICAkY3VycmVudF9mb250ID0gJHRoaXMtPmdldERlZmF1bHRGb250KCRwYWdlKTsKICAgICAgICAkY2xpcHBlZF9mb250ID0gJGN1cnJlbnRfZm9udDsKCiAgICAgICAgJGN1cnJlbnRfcG9zaXRpb25fdGQgPSBbJ3gnID0+IGZhbHNlLCAneScgPT4gZmFsc2VdOwogICAgICAgICRjdXJyZW50X3Bvc2l0aW9uX3RtID0gWyd4JyA9PiBmYWxzZSwgJ3knID0+IGZhbHNlXTsKCiAgICAgICAgc2VsZjo6JHJlY3Vyc2lvblN0YWNrW10gPSAkdGhpcy0+Z2V0VW5pcXVlSWQoKTsKCiAgICAgICAgZm9yZWFjaCAoJHNlY3Rpb25zIGFzICRzZWN0aW9uKSB7CiAgICAgICAgICAgICRjb21tYW5kcyA9ICR0aGlzLT5nZXRDb21tYW5kc1RleHQoJHNlY3Rpb24pOwogICAgICAgICAgICAkcmV2ZXJzZV90ZXh0ID0gZmFsc2U7CiAgICAgICAgICAgICR0ZXh0ID0gJyc7CgogICAgICAgICAgICBmb3JlYWNoICgkY29tbWFuZHMgYXMgJGNvbW1hbmQpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJGNvbW1hbmRbc2VsZjo6T1BFUkFUT1JdKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQk1DJzoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdSZXZlcnNlZENoYXJzJyA9PSAkY29tbWFuZFtzZWxmOjpDT01NQU5EXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldmVyc2VfdGV4dCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIHNldCBjaGFyYWN0ZXIgc3BhY2luZwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RjJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgdGV4dCBjdXJyZW50IHBvaW50CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGQnOgogICAgICAgICAgICAgICAgICAgICAgICAkYXJncyA9IHByZWdfc3BsaXQoJy9ccy9zJywgJGNvbW1hbmRbc2VsZjo6Q09NTUFORF0pOwogICAgICAgICAgICAgICAgICAgICAgICAkeSA9IGFycmF5X3BvcCgkYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICR4ID0gYXJyYXlfcG9wKCRhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoZmxvYXQpICR4IDw9IDApIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UgIT09ICRjdXJyZW50X3Bvc2l0aW9uX3RkWyd5J10gJiYgKGZsb2F0KSAkeSA8IChmbG9hdCkgKCRjdXJyZW50X3Bvc2l0aW9uX3RkWyd5J10pKQogICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZlcnRpY2FsIG9mZnNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQgLj0gIlxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGZhbHNlICE9PSAkY3VycmVudF9wb3NpdGlvbl90ZFsneCddICYmIChmbG9hdCkgJHggPiAoZmxvYXQpICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9wb3NpdGlvbl90ZFsneCddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9yaXpvbnRhbCBvZmZzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0IC49ICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9wb3NpdGlvbl90ZCA9IFsneCcgPT4gJHgsICd5JyA9PiAkeV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIHRleHQgY3VycmVudCBwb2ludCBhbmQgc2V0IGxlYWRpbmcKICAgICAgICAgICAgICAgICAgICBjYXNlICdURCc6CiAgICAgICAgICAgICAgICAgICAgICAgICRhcmdzID0gcHJlZ19zcGxpdCgnL1xzL3MnLCAkY29tbWFuZFtzZWxmOjpDT01NQU5EXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR5ID0gYXJyYXlfcG9wKCRhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHggPSBhcnJheV9wb3AoJGFyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZsb2F0KSAkeSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0IC49ICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgoZmxvYXQpICR4IDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0IC49ICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGYnOgogICAgICAgICAgICAgICAgICAgICAgICBsaXN0KCRpZCkgPSBwcmVnX3NwbGl0KCcvXHMvcycsICRjb21tYW5kW3NlbGY6OkNPTU1BTkRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGlkID0gdHJpbSgkaWQsICcvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAkcGFnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19mb250ID0gJHBhZ2UtPmdldEZvbnQoJGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGFuIGludmFsaWQgZm9udCBJRCBpcyBnaXZlbiwgZG8gbm90IHVwZGF0ZSB0aGUgZm9udC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIHRoZW9yZXRpY2FsbHkgbmV2ZXIgaGFwcGVuLCBhcyB0aGUgUERGIHNwZWMgc3RhdGVzIGZvciB0aGUgVGYgb3BlcmF0b3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiVGhlIHNwZWNpZmllZCBmb250IHZhbHVlIHNoYWxsIG1hdGNoIGEgcmVzb3VyY2UgbmFtZSBpbiB0aGUgRm9udCBlbnRyeSBvZiB0aGUgZGVmYXVsdCByZXNvdXJjZSBkaWN0aW9uYXJ5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGh0dHBzOi8vd3d3LmFkb2JlLmNvbS9jb250ZW50L2RhbS9hY29tL2VuL2Rldm5ldC9wZGYvcGRmcy9QREYzMjAwMF8yMDA4LnBkZiwgcGFnZSA0MzUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXQgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBtYWxmb3JtZWQgUERGcyBkbyBub3Qgc2ltcGx5IGNyYXNoLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09ICRuZXdfZm9udCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X2ZvbnQgPSAkbmV3X2ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1EnOgogICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgY2xpcDogcmVzdG9yZSBmb250LgogICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9mb250ID0gJGNsaXBwZWRfZm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3EnOgogICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgY2xpcDogc2F2ZSBmb250LgogICAgICAgICAgICAgICAgICAgICAgICAkY2xpcHBlZF9mb250ID0gJGN1cnJlbnRfZm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgIiciOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RqJzoKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hbmRbc2VsZjo6Q09NTUFORF0gPSBbJGNvbW1hbmRdOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBubyBicmVhawogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RKJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Yl90ZXh0ID0gJGN1cnJlbnRfZm9udC0+ZGVjb2RlVGV4dCgkY29tbWFuZFtzZWxmOjpDT01NQU5EXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0IC49ICRzdWJfdGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIHNldCBsZWFkaW5nCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVEwnOgogICAgICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSAnICc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdUbSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRhcmdzID0gcHJlZ19zcGxpdCgnL1xzL3MnLCAkY29tbWFuZFtzZWxmOjpDT01NQU5EXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR5ID0gYXJyYXlfcG9wKCRhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHggPSBhcnJheV9wb3AoJGFyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsc2UgIT09ICRjdXJyZW50X3Bvc2l0aW9uX3RtWyd4J10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWx0YSA9IGFicygoZmxvYXQpICR4IC0gKGZsb2F0KSAoJGN1cnJlbnRfcG9zaXRpb25fdG1bJ3gnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWx0YSA+IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQgLj0gIlx0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsc2UgIT09ICRjdXJyZW50X3Bvc2l0aW9uX3RtWyd5J10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWx0YSA9IGFicygoZmxvYXQpICR5IC0gKGZsb2F0KSAoJGN1cnJlbnRfcG9zaXRpb25fdG1bJ3knXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWx0YSA+IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQgLj0gIlxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9wb3NpdGlvbl90bSA9IFsneCcgPT4gJHgsICd5JyA9PiAkeV07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAvLyBzZXQgc3VwZXIvc3Vic2NyaXB0aW5nIHRleHQgcmlzZQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RzJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIHNldCB3b3JkIHNwYWNpbmcKICAgICAgICAgICAgICAgICAgICBjYXNlICdUdyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAvLyBzZXQgaG9yaXpvbnRhbCBzY2FsaW5nCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVHonOgogICAgICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSAiXG4iOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSB0byBzdGFydCBvZiBuZXh0IGxpbmUKICAgICAgICAgICAgICAgICAgICBjYXNlICdUKic6CiAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0IC49ICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdEYSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdEbyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAkcGFnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyZ3MgPSBwcmVnX3NwbGl0KCcvXHMvcycsICRjb21tYW5kW3NlbGY6OkNPTU1BTkRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCA9IHRyaW0oYXJyYXlfcG9wKCRhcmdzKSwgJy8gJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeG9iamVjdCA9ICRwYWdlLT5nZXRYT2JqZWN0KCRpZCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRvZG8gJHhvYmplY3QgY291bGQgYmUgYSBFbGVtZW50WFJlZiBvYmplY3QsIHdoaWNoIHdvdWxkIHRoZW4gdGhyb3cgYW4gZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcaXNfb2JqZWN0KCR4b2JqZWN0KSAmJiAkeG9iamVjdCBpbnN0YW5jZW9mIHNlbGYgJiYgIVxpbl9hcnJheSgkeG9iamVjdC0+Z2V0VW5pcXVlSWQoKSwgc2VsZjo6JHJlY3Vyc2lvblN0YWNrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCBhIGNpcmN1bGFyIHJlZmVyZW5jZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSAkeG9iamVjdC0+Z2V0VGV4dCgkcGFnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JnJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdSRyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdjbyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdjcyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdncyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdlbic6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdzYyc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnU0MnOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnRyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdWJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZvJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdWbyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBGaXggSGVicmV3IGFuZCBvdGhlciByZXZlcnNlIHRleHQgb3JpZW50ZWQgbGFuZ3VhZ2VzLgogICAgICAgICAgICAvLyBAc2VlOiBodHRwczovL2dpdGh1Yi5jb20vc21hbG90L3BkZnBhcnNlci9pc3N1ZXMvMzk4CiAgICAgICAgICAgIGlmICgkcmV2ZXJzZV90ZXh0KSB7CiAgICAgICAgICAgICAgICAkY2hhcnMgPSBtYl9zdHJfc3BsaXQoJHRleHQsIDEsIG1iX2ludGVybmFsX2VuY29kaW5nKCkpOwogICAgICAgICAgICAgICAgJHRleHQgPSBpbXBsb2RlKCcnLCBhcnJheV9yZXZlcnNlKCRjaGFycykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0IC49ICR0ZXh0OwogICAgICAgIH0KCiAgICAgICAgYXJyYXlfcG9wKHNlbGY6OiRyZWN1cnNpb25TdGFjayk7CgogICAgICAgIHJldHVybiAkcmVzdWx0LicgJzsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQYWdlICRwYWdlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dEFycmF5KFBhZ2UgJHBhZ2UgPSBudWxsKQogICAgewogICAgICAgICR0ZXh0ID0gW107CiAgICAgICAgJHNlY3Rpb25zID0gJHRoaXMtPmdldFNlY3Rpb25zVGV4dCgkdGhpcy0+Y29udGVudCk7CiAgICAgICAgJGN1cnJlbnRfZm9udCA9IG5ldyBGb250KCR0aGlzLT5kb2N1bWVudCwgbnVsbCwgbnVsbCwgJHRoaXMtPmNvbmZpZyk7CgogICAgICAgIGZvcmVhY2ggKCRzZWN0aW9ucyBhcyAkc2VjdGlvbikgewogICAgICAgICAgICAkY29tbWFuZHMgPSAkdGhpcy0+Z2V0Q29tbWFuZHNUZXh0KCRzZWN0aW9uKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRjb21tYW5kcyBhcyAkY29tbWFuZCkgewogICAgICAgICAgICAgICAgc3dpdGNoICgkY29tbWFuZFtzZWxmOjpPUEVSQVRPUl0pIHsKICAgICAgICAgICAgICAgICAgICAvLyBzZXQgY2hhcmFjdGVyIHNwYWNpbmcKICAgICAgICAgICAgICAgICAgICBjYXNlICdUYyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAvLyBtb3ZlIHRleHQgY3VycmVudCBwb2ludAogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RkJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgdGV4dCBjdXJyZW50IHBvaW50IGFuZCBzZXQgbGVhZGluZwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1REJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RmJzoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT09ICRwYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KCRpZCkgPSBwcmVnX3NwbGl0KCcvXHMvcycsICRjb21tYW5kW3NlbGY6OkNPTU1BTkRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCA9IHRyaW0oJGlkLCAnLycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfZm9udCA9ICRwYWdlLT5nZXRGb250KCRpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgIiciOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RqJzoKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hbmRbc2VsZjo6Q09NTUFORF0gPSBbJGNvbW1hbmRdOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBubyBicmVhawogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RKJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHN1Yl90ZXh0ID0gJGN1cnJlbnRfZm9udC0+ZGVjb2RlVGV4dCgkY29tbWFuZFtzZWxmOjpDT01NQU5EXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0W10gPSAkc3ViX3RleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAvLyBzZXQgbGVhZGluZwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RMJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RtJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIHNldCBzdXBlci9zdWJzY3JpcHRpbmcgdGV4dCByaXNlCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVHMnOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHdvcmQgc3BhY2luZwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1R3JzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIHNldCBob3Jpem9udGFsIHNjYWxpbmcKICAgICAgICAgICAgICAgICAgICBjYXNlICdUeic6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vJHRleHQgLj0gIlxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgdG8gc3RhcnQgb2YgbmV4dCBsaW5lCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVConOgogICAgICAgICAgICAgICAgICAgICAgICAvLyR0ZXh0IC49ICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdEYSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdEbyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSAkcGFnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyZ3MgPSBwcmVnX3NwbGl0KCcvXHMvcycsICRjb21tYW5kW3NlbGY6OkNPTU1BTkRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCA9IHRyaW0oYXJyYXlfcG9wKCRhcmdzKSwgJy8gJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHhvYmplY3QgPSAkcGFnZS0+Z2V0WE9iamVjdCgkaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRleHRbXSA9ICR4b2JqZWN0LT5nZXRUZXh0KCRwYWdlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmcnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1JHJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NzJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dzJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdTQyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdHJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1YnOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAndm8nOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1ZvJzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHRleHRfcGFydAogICAgICogQHBhcmFtIGludCAgICAkb2Zmc2V0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tbWFuZHNUZXh0KCR0ZXh0X3BhcnQsICYkb2Zmc2V0ID0gMCkKICAgIHsKICAgICAgICAkY29tbWFuZHMgPSAkbWF0Y2hlcyA9IFtdOwoKICAgICAgICB3aGlsZSAoJG9mZnNldCA8IFxzdHJsZW4oJHRleHRfcGFydCkpIHsKICAgICAgICAgICAgJG9mZnNldCArPSBzdHJzcG4oJHRleHRfcGFydCwgIlx4MDBceDA5XHgwYVx4MGNceDBkXHgyMCIsICRvZmZzZXQpOwogICAgICAgICAgICAkY2hhciA9ICR0ZXh0X3BhcnRbJG9mZnNldF07CgogICAgICAgICAgICAkb3BlcmF0b3IgPSAnJzsKICAgICAgICAgICAgJHR5cGUgPSAnJzsKICAgICAgICAgICAgJGNvbW1hbmQgPSBmYWxzZTsKCiAgICAgICAgICAgIHN3aXRjaCAoJGNoYXIpIHsKICAgICAgICAgICAgICAgIGNhc2UgJy8nOgogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJGNoYXI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICcvXlwvKFtBLVowLTlcLl8sXCtdK1xzK1swLTkuXC1dKylccysoW0EtWl0rKVxzKi9zaScsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cigkdGV4dF9wYXJ0LCAkb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoZXMKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcGVyYXRvciA9ICRtYXRjaGVzWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFuZCA9ICRtYXRjaGVzWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9IFxzdHJsZW4oJG1hdGNoZXNbMF0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKAogICAgICAgICAgICAgICAgICAgICAgICAnL15cLyhbQS1aMC05XC5fLFwrXSspXHMrKFtBLVpdKylccyovc2knLAogICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHIoJHRleHRfcGFydCwgJG9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICRtYXRjaGVzCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3BlcmF0b3IgPSAkbWF0Y2hlc1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hbmQgPSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCArPSBcc3RybGVuKCRtYXRjaGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnWyc6CiAgICAgICAgICAgICAgICBjYXNlICddJzoKICAgICAgICAgICAgICAgICAgICAvLyBhcnJheSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICRjaGFyOwogICAgICAgICAgICAgICAgICAgIGlmICgnWycgPT0gJGNoYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKyskb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgZWxlbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hbmQgPSAkdGhpcy0+Z2V0Q29tbWFuZHNUZXh0KCR0ZXh0X3BhcnQsICRvZmZzZXQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHMqW0EtWl17MSwyfVxzKi9zaScsIHN1YnN0cigkdGV4dF9wYXJ0LCAkb2Zmc2V0KSwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3BlcmF0b3IgPSB0cmltKCRtYXRjaGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gXHN0cmxlbigkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICArKyRvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICc8JzoKICAgICAgICAgICAgICAgIGNhc2UgJz4nOgogICAgICAgICAgICAgICAgICAgIC8vIGFycmF5IG9iamVjdAogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJGNoYXI7CiAgICAgICAgICAgICAgICAgICAgKyskb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGlmICgnPCcgPT0gJGNoYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0cnBvcyA9IHN0cnBvcygkdGV4dF9wYXJ0LCAnPicsICRvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFuZCA9IHN1YnN0cigkdGV4dF9wYXJ0LCAkb2Zmc2V0LCAoJHN0cnBvcyAtICRvZmZzZXQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCA9ICRzdHJwb3MgKyAxOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHMqW0EtWl17MSwyfVxzKi9zaScsIHN1YnN0cigkdGV4dF9wYXJ0LCAkb2Zmc2V0KSwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcGVyYXRvciA9IHRyaW0oJG1hdGNoZXNbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9IFxzdHJsZW4oJG1hdGNoZXNbMF0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICcoJzoKICAgICAgICAgICAgICAgIGNhc2UgJyknOgogICAgICAgICAgICAgICAgICAgICsrJG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICRjaGFyOwogICAgICAgICAgICAgICAgICAgICRzdHJwb3MgPSAkb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGlmICgnKCcgPT0gJGNoYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wZW5fYnJhY2tldCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkb3Blbl9icmFja2V0ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkdGV4dF9wYXJ0WyRzdHJwb3NdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoID0gJHRleHRfcGFydFskc3RycG9zXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJGNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnXFwnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRVZFUlNFIFNPTElEVVMgKDVDaCkgKEJhY2tzbGFzaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBuZXh0IGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKyRzdHJwb3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcoJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTEVGVCBQQVJFTkhFU0lTICgyOGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrJG9wZW5fYnJhY2tldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyknOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSSUdIVCBQQVJFTlRIRVNJUyAoMjloKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSRvcGVuX2JyYWNrZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyskc3RycG9zOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tYW5kID0gc3Vic3RyKCR0ZXh0X3BhcnQsICRvZmZzZXQsICgkc3RycG9zIC0gJG9mZnNldCAtIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCA9ICRzdHJwb3M7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15ccyooW0EtWlwnXXsxLDJ9KVxzKi9zaScsIHN1YnN0cigkdGV4dF9wYXJ0LCAkb2Zmc2V0KSwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3BlcmF0b3IgPSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gXHN0cmxlbigkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoJ0VUJyA9PSBzdWJzdHIoJHRleHRfcGFydCwgJG9mZnNldCwgMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICcvXlxzKig/UDxkYXRhPihbMC05XC5cLV0rXHMqPykrKVxzKyg/UDxpZD5bQS1aXXsxLDN9KVxzKi9zaScsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cigkdGV4dF9wYXJ0LCAkb2Zmc2V0KSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoZXMKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcGVyYXRvciA9IHRyaW0oJG1hdGNoZXNbJ2lkJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFuZCA9IHRyaW0oJG1hdGNoZXNbJ2RhdGEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gXHN0cmxlbigkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9eXHMqKFswLTlcLlwtXStccyo/KStccyovc2knLCBzdWJzdHIoJHRleHRfcGFydCwgJG9mZnNldCksICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICduJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hbmQgPSB0cmltKCRtYXRjaGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCArPSBcc3RybGVuKCRtYXRjaGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL15ccyooW0EtWlwqXSspXHMqL3NpJywgc3Vic3RyKCR0ZXh0X3BhcnQsICRvZmZzZXQpLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wZXJhdG9yID0gJG1hdGNoZXNbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tYW5kID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gXHN0cmxlbigkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZmFsc2UgIT09ICRjb21tYW5kKSB7CiAgICAgICAgICAgICAgICAkY29tbWFuZHNbXSA9IFsKICAgICAgICAgICAgICAgICAgICBzZWxmOjpUWVBFID0+ICR0eXBlLAogICAgICAgICAgICAgICAgICAgIHNlbGY6Ok9QRVJBVE9SID0+ICRvcGVyYXRvciwKICAgICAgICAgICAgICAgICAgICBzZWxmOjpDT01NQU5EID0+ICRjb21tYW5kLAogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbW1hbmRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY29udGVudAogICAgICoKICAgICAqIEByZXR1cm4gUERGT2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmFjdG9yeSgKICAgICAgICBEb2N1bWVudCAkZG9jdW1lbnQsCiAgICAgICAgSGVhZGVyICRoZWFkZXIsCiAgICAgICAgJGNvbnRlbnQsCiAgICAgICAgQ29uZmlnICRjb25maWcgPSBudWxsCiAgICApIHsKICAgICAgICBzd2l0Y2ggKCRoZWFkZXItPmdldCgnVHlwZScpLT5nZXRDb250ZW50KCkpIHsKICAgICAgICAgICAgY2FzZSAnWE9iamVjdCc6CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCRoZWFkZXItPmdldCgnU3VidHlwZScpLT5nZXRDb250ZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdJbWFnZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW1hZ2UoJGRvY3VtZW50LCAkaGVhZGVyLCAkY29udGVudCwgJGNvbmZpZyk7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Zvcm0nOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm0oJGRvY3VtZW50LCAkaGVhZGVyLCAkY29udGVudCwgJGNvbmZpZyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRkb2N1bWVudCwgJGhlYWRlciwgJGNvbnRlbnQsICRjb25maWcpOwoKICAgICAgICAgICAgY2FzZSAnUGFnZXMnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQYWdlcygkZG9jdW1lbnQsICRoZWFkZXIsICRjb250ZW50LCAkY29uZmlnKTsKCiAgICAgICAgICAgIGNhc2UgJ1BhZ2UnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQYWdlKCRkb2N1bWVudCwgJGhlYWRlciwgJGNvbnRlbnQsICRjb25maWcpOwoKICAgICAgICAgICAgY2FzZSAnRW5jb2RpbmcnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFbmNvZGluZygkZG9jdW1lbnQsICRoZWFkZXIsICRjb250ZW50LCAkY29uZmlnKTsKCiAgICAgICAgICAgIGNhc2UgJ0ZvbnQnOgogICAgICAgICAgICAgICAgJHN1YnR5cGUgPSAkaGVhZGVyLT5nZXQoJ1N1YnR5cGUnKS0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICAgICAgJGNsYXNzbmFtZSA9ICdcU21hbG90XFBkZlBhcnNlclxGb250XEZvbnQnLiRzdWJ0eXBlOwoKICAgICAgICAgICAgICAgIGlmIChjbGFzc19leGlzdHMoJGNsYXNzbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICRjbGFzc25hbWUoJGRvY3VtZW50LCAkaGVhZGVyLCAkY29udGVudCwgJGNvbmZpZyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGb250KCRkb2N1bWVudCwgJGhlYWRlciwgJGNvbnRlbnQsICRjb25maWcpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgc2VsZigkZG9jdW1lbnQsICRoZWFkZXIsICRjb250ZW50LCAkY29uZmlnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHVuaXF1ZSBpZCBpZGVudGlmeWluZyB0aGUgb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRVbmlxdWVJZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNwbF9vYmplY3RfaGFzaCgkdGhpcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/RawData/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/RawData/FilterHelper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGlzIGZpbGUgaXMgYmFzZWQgb24gY29kZSBvZiB0ZWNuaWNrY29tL1RDUERGIFBERiBsaWJyYXJ5LgogKgogKiBPcmlnaW5hbCBhdXRob3IgTmljb2xhIEFzdW5pIChpbmZvQHRlY25pY2suY29tKSBhbmQKICogY29udHJpYnV0b3JzIChodHRwczovL2dpdGh1Yi5jb20vdGVjbmlja2NvbS9UQ1BERi9ncmFwaHMvY29udHJpYnV0b3JzKS4KICoKICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVjbmlja2NvbS9UQ1BERgogKgogKiBPcmlnaW5hbCBjb2RlIHdhcyBsaWNlbnNlZCBvbiB0aGUgdGVybXMgb2YgdGhlIExHUEwgdjMuCiAqCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKgogKiBAZmlsZSBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIEtvbnJhZCBBYmljaHQgPGsuYWJpY2h0QGdtYWlsLmNvbT4KICogQGRhdGUgICAgMjAyMC0wMS0wNgogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcUmF3RGF0YTsKCnVzZSBFeGNlcHRpb247CgpjbGFzcyBGaWx0ZXJIZWxwZXIKewogICAgcHJvdGVjdGVkICRhdmFpbGFibGVGaWx0ZXJzID0gWydBU0NJSUhleERlY29kZScsICdBU0NJSTg1RGVjb2RlJywgJ0xaV0RlY29kZScsICdGbGF0ZURlY29kZScsICdSdW5MZW5ndGhEZWNvZGUnXTsKCiAgICAvKioKICAgICAqIERlY29kZSBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsdGVyIHR5cGUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsdGVyIEZpbHRlciBuYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhICAgRGF0YSB0byBkZWNvZGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBEZWNvZGVkIGRhdGEgc3RyaW5nCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24gaWYgYSBjZXJ0YWluIGRlY29kZSBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgeWV0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNvZGVGaWx0ZXIoJGZpbHRlciwgJGRhdGEpCiAgICB7CiAgICAgICAgc3dpdGNoICgkZmlsdGVyKSB7CiAgICAgICAgICAgIGNhc2UgJ0FTQ0lJSGV4RGVjb2RlJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGVjb2RlRmlsdGVyQVNDSUlIZXhEZWNvZGUoJGRhdGEpOwoKICAgICAgICAgICAgY2FzZSAnQVNDSUk4NURlY29kZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmRlY29kZUZpbHRlckFTQ0lJODVEZWNvZGUoJGRhdGEpOwoKICAgICAgICAgICAgY2FzZSAnTFpXRGVjb2RlJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGVjb2RlRmlsdGVyTFpXRGVjb2RlKCRkYXRhKTsKCiAgICAgICAgICAgIGNhc2UgJ0ZsYXRlRGVjb2RlJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGVjb2RlRmlsdGVyRmxhdGVEZWNvZGUoJGRhdGEpOwoKICAgICAgICAgICAgY2FzZSAnUnVuTGVuZ3RoRGVjb2RlJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGVjb2RlRmlsdGVyUnVuTGVuZ3RoRGVjb2RlKCRkYXRhKTsKCiAgICAgICAgICAgIGNhc2UgJ0NDSVRURmF4RGVjb2RlJzoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0RlY29kZSBDQ0lUVEZheERlY29kZSBub3QgaW1wbGVtZW50ZWQgeWV0LicpOwogICAgICAgICAgICBjYXNlICdKQklHMkRlY29kZSc6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdEZWNvZGUgSkJJRzJEZWNvZGUgbm90IGltcGxlbWVudGVkIHlldC4nKTsKICAgICAgICAgICAgY2FzZSAnRENURGVjb2RlJzoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0RlY29kZSBEQ1REZWNvZGUgbm90IGltcGxlbWVudGVkIHlldC4nKTsKICAgICAgICAgICAgY2FzZSAnSlBYRGVjb2RlJzoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0RlY29kZSBKUFhEZWNvZGUgbm90IGltcGxlbWVudGVkIHlldC4nKTsKICAgICAgICAgICAgY2FzZSAnQ3J5cHQnOgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignRGVjb2RlIENyeXB0IG5vdCBpbXBsZW1lbnRlZCB5ZXQuJyk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJGRhdGE7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQVNDSUlIZXhEZWNvZGUKICAgICAqCiAgICAgKiBEZWNvZGVzIGRhdGEgZW5jb2RlZCBpbiBhbiBBU0NJSSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiwgcmVwcm9kdWNpbmcgdGhlIG9yaWdpbmFsIGJpbmFyeSBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgRGF0YSB0byBkZWNvZGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBkYXRhIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGVjb2RlRmlsdGVyQVNDSUlIZXhEZWNvZGUoJGRhdGEpCiAgICB7CiAgICAgICAgLy8gYWxsIHdoaXRlLXNwYWNlIGNoYXJhY3RlcnMgc2hhbGwgYmUgaWdub3JlZAogICAgICAgICRkYXRhID0gcHJlZ19yZXBsYWNlKCcvW1xzXS8nLCAnJywgJGRhdGEpOwogICAgICAgIC8vIGNoZWNrIGZvciBFT0QgY2hhcmFjdGVyOiBHUkVBVEVSLVRIQU4gU0lHTiAoM0VoKQogICAgICAgICRlb2QgPSBzdHJwb3MoJGRhdGEsICc+Jyk7CiAgICAgICAgaWYgKGZhbHNlICE9PSAkZW9kKSB7CiAgICAgICAgICAgIC8vIHJlbW92ZSBFT0QgYW5kIGV4dHJhIGRhdGEgKGlmIGFueSkKICAgICAgICAgICAgJGRhdGEgPSBzdWJzdHIoJGRhdGEsIDAsICRlb2QpOwogICAgICAgICAgICAkZW9kID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgLy8gZ2V0IGRhdGEgbGVuZ3RoCiAgICAgICAgJGRhdGFfbGVuZ3RoID0gXHN0cmxlbigkZGF0YSk7CiAgICAgICAgaWYgKDAgIT0gKCRkYXRhX2xlbmd0aCAlIDIpKSB7CiAgICAgICAgICAgIC8vIG9kZCBudW1iZXIgb2YgaGV4YWRlY2ltYWwgZGlnaXRzCiAgICAgICAgICAgIGlmICgkZW9kKSB7CiAgICAgICAgICAgICAgICAvLyBFT0Qgc2hhbGwgYmVoYXZlIGFzIGlmIGEgMCAoemVybykgZm9sbG93ZWQgdGhlIGxhc3QgZGlnaXQKICAgICAgICAgICAgICAgICRkYXRhID0gc3Vic3RyKCRkYXRhLCAwLCAtMSkuJzAnLnN1YnN0cigkZGF0YSwgLTEpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignZGVjb2RlRmlsdGVyQVNDSUlIZXhEZWNvZGU6IGludmFsaWQgY29kZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGNoZWNrIGZvciBpbnZhbGlkIGNoYXJhY3RlcnMKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1teYS1mQS1GXGRdLycsICRkYXRhKSA+IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignZGVjb2RlRmlsdGVyQVNDSUlIZXhEZWNvZGU6IGludmFsaWQgY29kZScpOwogICAgICAgIH0KICAgICAgICAvLyBnZXQgb25lIGJ5dGUgb2YgYmluYXJ5IGRhdGEgZm9yIGVhY2ggcGFpciBvZiBBU0NJSSBoZXhhZGVjaW1hbCBkaWdpdHMKICAgICAgICAkZGVjb2RlZCA9IHBhY2soJ0gqJywgJGRhdGEpOwoKICAgICAgICByZXR1cm4gJGRlY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBBU0NJSTg1RGVjb2RlCiAgICAgKgogICAgICogRGVjb2RlcyBkYXRhIGVuY29kZWQgaW4gYW4gQVNDSUkgYmFzZS04NSByZXByZXNlbnRhdGlvbiwgcmVwcm9kdWNpbmcgdGhlIG9yaWdpbmFsIGJpbmFyeSBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgRGF0YSB0byBkZWNvZGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBkYXRhIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGVjb2RlRmlsdGVyQVNDSUk4NURlY29kZSgkZGF0YSkKICAgIHsKICAgICAgICAvLyBpbml0aWFsaXplIHN0cmluZyB0byByZXR1cm4KICAgICAgICAkZGVjb2RlZCA9ICcnOwogICAgICAgIC8vIGFsbCB3aGl0ZS1zcGFjZSBjaGFyYWN0ZXJzIHNoYWxsIGJlIGlnbm9yZWQKICAgICAgICAkZGF0YSA9IHByZWdfcmVwbGFjZSgnL1tcc10vJywgJycsICRkYXRhKTsKICAgICAgICAvLyByZW1vdmUgc3RhcnQgc2VxdWVuY2UgMi1jaGFyYWN0ZXIgc2VxdWVuY2UgPH4gKDNDaCkoN0VoKQogICAgICAgIGlmIChmYWxzZSAhPT0gc3RycG9zKCRkYXRhLCAnPH4nKSkgewogICAgICAgICAgICAvLyByZW1vdmUgRU9EIGFuZCBleHRyYSBkYXRhIChpZiBhbnkpCiAgICAgICAgICAgICRkYXRhID0gc3Vic3RyKCRkYXRhLCAyKTsKICAgICAgICB9CiAgICAgICAgLy8gY2hlY2sgZm9yIEVPRDogMi1jaGFyYWN0ZXIgc2VxdWVuY2Ugfj4gKDdFaCkoM0VoKQogICAgICAgICRlb2QgPSBzdHJwb3MoJGRhdGEsICd+PicpOwogICAgICAgIGlmIChmYWxzZSAhPT0gJGVvZCkgewogICAgICAgICAgICAvLyByZW1vdmUgRU9EIGFuZCBleHRyYSBkYXRhIChpZiBhbnkpCiAgICAgICAgICAgICRkYXRhID0gc3Vic3RyKCRkYXRhLCAwLCAkZW9kKTsKICAgICAgICB9CiAgICAgICAgLy8gZGF0YSBsZW5ndGgKICAgICAgICAkZGF0YV9sZW5ndGggPSBcc3RybGVuKCRkYXRhKTsKICAgICAgICAvLyBjaGVjayBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzCiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9bXlx4MjEtXHg3NSxceDc0XS8nLCAkZGF0YSkgPiAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2RlY29kZUZpbHRlckFTQ0lJODVEZWNvZGU6IGludmFsaWQgY29kZScpOwogICAgICAgIH0KICAgICAgICAvLyB6IHNlcXVlbmNlCiAgICAgICAgJHpzZXEgPSBcY2hyKDApLlxjaHIoMCkuXGNocigwKS5cY2hyKDApOwogICAgICAgIC8vIHBvc2l0aW9uIGluc2lkZSBhIGdyb3VwIG9mIDQgYnl0ZXMgKDAtMykKICAgICAgICAkZ3JvdXBfcG9zID0gMDsKICAgICAgICAkdHVwbGUgPSAwOwogICAgICAgICRwb3c4NSA9IFsoODUgKiA4NSAqIDg1ICogODUpLCAoODUgKiA4NSAqIDg1KSwgKDg1ICogODUpLCA4NSwgMV07CgogICAgICAgIC8vIGZvciBlYWNoIGJ5dGUKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkZGF0YV9sZW5ndGg7ICsrJGkpIHsKICAgICAgICAgICAgLy8gZ2V0IGNoYXIgdmFsdWUKICAgICAgICAgICAgJGNoYXIgPSBcb3JkKCRkYXRhWyRpXSk7CiAgICAgICAgICAgIGlmICgxMjIgPT0gJGNoYXIpIHsgLy8gJ3onCiAgICAgICAgICAgICAgICBpZiAoMCA9PSAkZ3JvdXBfcG9zKSB7CiAgICAgICAgICAgICAgICAgICAgJGRlY29kZWQgLj0gJHpzZXE7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2RlY29kZUZpbHRlckFTQ0lJODVEZWNvZGU6IGludmFsaWQgY29kZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gdGhlIHZhbHVlIHJlcHJlc2VudGVkIGJ5IGEgZ3JvdXAgb2YgNSBjaGFyYWN0ZXJzIHNob3VsZCBuZXZlciBiZSBncmVhdGVyIHRoYW4gMl4zMiAtIDEKICAgICAgICAgICAgICAgICR0dXBsZSArPSAoKCRjaGFyIC0gMzMpICogJHBvdzg1WyRncm91cF9wb3NdKTsKICAgICAgICAgICAgICAgIGlmICg0ID09ICRncm91cF9wb3MpIHsKICAgICAgICAgICAgICAgICAgICAkZGVjb2RlZCAuPSBcY2hyKCR0dXBsZSA+PiAyNCkuXGNocigkdHVwbGUgPj4gMTYpLlxjaHIoJHR1cGxlID4+IDgpLlxjaHIoJHR1cGxlKTsKICAgICAgICAgICAgICAgICAgICAkdHVwbGUgPSAwOwogICAgICAgICAgICAgICAgICAgICRncm91cF9wb3MgPSAwOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICArKyRncm91cF9wb3M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRncm91cF9wb3MgPiAxKSB7CiAgICAgICAgICAgICR0dXBsZSArPSAkcG93ODVbKCRncm91cF9wb3MgLSAxKV07CiAgICAgICAgfQogICAgICAgIC8vIGxhc3QgdHVwbGUgKGlmIGFueSkKICAgICAgICBzd2l0Y2ggKCRncm91cF9wb3MpIHsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgJGRlY29kZWQgLj0gXGNocigkdHVwbGUgPj4gMjQpLlxjaHIoJHR1cGxlID4+IDE2KS5cY2hyKCR0dXBsZSA+PiA4KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgJGRlY29kZWQgLj0gXGNocigkdHVwbGUgPj4gMjQpLlxjaHIoJHR1cGxlID4+IDE2KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgJGRlY29kZWQgLj0gXGNocigkdHVwbGUgPj4gMjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdkZWNvZGVGaWx0ZXJBU0NJSTg1RGVjb2RlOiBpbnZhbGlkIGNvZGUnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGVjb2RlZDsKICAgIH0KCiAgICAvKioKICAgICAqIEZsYXRlRGVjb2RlCiAgICAgKgogICAgICogRGVjb21wcmVzc2VzIGRhdGEgZW5jb2RlZCB1c2luZyB0aGUgemxpYi9kZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCwgcmVwcm9kdWNpbmcgdGhlIG9yaWdpbmFsIHRleHQgb3IgYmluYXJ5IGRhdGEuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YSBEYXRhIHRvIGRlY29kZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIGRhdGEgc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBkZWNvZGVGaWx0ZXJGbGF0ZURlY29kZSgkZGF0YSkKICAgIHsKICAgICAgICAvKgogICAgICAgICAqIGd6dW5jb21wcmVzcyBtYXkgdGhyb3cgYSBub3QgY2F0Y2hhYmxlIEVfV0FSTklORyBpbiBjYXNlIG9mIGFuIGVycm9yIChsaWtlICRkYXRhIGlzIGVtcHR5KQogICAgICAgICAqIHRoZSBmb2xsb3dpbmcgc2V0X2Vycm9yX2hhbmRsZXIgY2hhbmdlcyBhbiBFX1dBUk5JTkcgdG8gYW4gRV9FUlJPUiwgd2hpY2ggaXMgY2F0Y2hhYmxlLgogICAgICAgICAqLwogICAgICAgIHNldF9lcnJvcl9oYW5kbGVyKGZ1bmN0aW9uICgkZXJyTm8sICRlcnJTdHIpIHsKICAgICAgICAgICAgaWYgKFxFX1dBUk5JTkcgPT09ICRlcnJObykgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkZXJyU3RyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGZhbGxiYWNrIHRvIGRlZmF1bHQgcGhwIGVycm9yIGhhbmRsZXIKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBpbml0aWFsaXplIHN0cmluZyB0byByZXR1cm4KICAgICAgICB0cnkgewogICAgICAgICAgICAkZGVjb2RlZCA9IGd6dW5jb21wcmVzcygkZGF0YSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJGRlY29kZWQpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2RlY29kZUZpbHRlckZsYXRlRGVjb2RlOiBpbnZhbGlkIGNvZGUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAvLyBSZXN0b3JlIG9sZCBoYW5kbGVyIGp1c3QgaW4gY2FzZSBpdCB3YXMgY3VzdG9taXplZCBvdXRzaWRlIG9mIFBERlBhcnNlci4KICAgICAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRlY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBMWldEZWNvZGUKICAgICAqCiAgICAgKiBEZWNvbXByZXNzZXMgZGF0YSBlbmNvZGVkIHVzaW5nIHRoZSBMWlcgKExlbXBlbC1aaXYtV2VsY2gpIGFkYXB0aXZlIGNvbXByZXNzaW9uIG1ldGhvZCwgcmVwcm9kdWNpbmcgdGhlIG9yaWdpbmFsIHRleHQgb3IgYmluYXJ5IGRhdGEuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YSBEYXRhIHRvIGRlY29kZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIERhdGEgc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBkZWNvZGVGaWx0ZXJMWldEZWNvZGUoJGRhdGEpCiAgICB7CiAgICAgICAgLy8gaW5pdGlhbGl6ZSBzdHJpbmcgdG8gcmV0dXJuCiAgICAgICAgJGRlY29kZWQgPSAnJzsKICAgICAgICAvLyBkYXRhIGxlbmd0aAogICAgICAgICRkYXRhX2xlbmd0aCA9IFxzdHJsZW4oJGRhdGEpOwogICAgICAgIC8vIGNvbnZlcnQgc3RyaW5nIHRvIGJpbmFyeSBzdHJpbmcKICAgICAgICAkYml0c3RyaW5nID0gJyc7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGRhdGFfbGVuZ3RoOyArKyRpKSB7CiAgICAgICAgICAgICRiaXRzdHJpbmcgLj0gc3ByaW50ZignJTA4YicsIFxvcmQoJGRhdGFbJGldKSk7CiAgICAgICAgfQogICAgICAgIC8vIGdldCB0aGUgbnVtYmVyIG9mIGJpdHMKICAgICAgICAkZGF0YV9sZW5ndGggPSBcc3RybGVuKCRiaXRzdHJpbmcpOwogICAgICAgIC8vIGluaXRpYWxpemUgY29kZSBsZW5ndGggaW4gYml0cwogICAgICAgICRiaXRsZW4gPSA5OwogICAgICAgIC8vIGluaXRpYWxpemUgZGljdGlvbmFyeSBpbmRleAogICAgICAgICRkaXggPSAyNTg7CiAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgZGljdGlvbmFyeSAod2l0aCB0aGUgZmlyc3QgMjU2IGVudHJpZXMpLgogICAgICAgICRkaWN0aW9uYXJ5ID0gW107CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgMjU2OyArKyRpKSB7CiAgICAgICAgICAgICRkaWN0aW9uYXJ5WyRpXSA9IFxjaHIoJGkpOwogICAgICAgIH0KICAgICAgICAvLyBwcmV2aW91cyB2YWwKICAgICAgICAkcHJldl9pbmRleCA9IDA7CiAgICAgICAgLy8gd2hpbGUgd2UgZW5jb3VudGVyIEVPRCBtYXJrZXIgKDI1NyksIHJlYWQgY29kZV9sZW5ndGggYml0cwogICAgICAgIHdoaWxlICgoJGRhdGFfbGVuZ3RoID4gMCkgJiYgKDI1NyAhPSAoJGluZGV4ID0gYmluZGVjKHN1YnN0cigkYml0c3RyaW5nLCAwLCAkYml0bGVuKSkpKSkgewogICAgICAgICAgICAvLyByZW1vdmUgcmVhZCBiaXRzIGZyb20gc3RyaW5nCiAgICAgICAgICAgICRiaXRzdHJpbmcgPSBzdWJzdHIoJGJpdHN0cmluZywgJGJpdGxlbik7CiAgICAgICAgICAgIC8vIHVwZGF0ZSBudW1iZXIgb2YgYml0cwogICAgICAgICAgICAkZGF0YV9sZW5ndGggLT0gJGJpdGxlbjsKICAgICAgICAgICAgaWYgKDI1NiA9PSAkaW5kZXgpIHsgLy8gY2xlYXItdGFibGUgbWFya2VyCiAgICAgICAgICAgICAgICAvLyByZXNldCBjb2RlIGxlbmd0aCBpbiBiaXRzCiAgICAgICAgICAgICAgICAkYml0bGVuID0gOTsKICAgICAgICAgICAgICAgIC8vIHJlc2V0IGRpY3Rpb25hcnkgaW5kZXgKICAgICAgICAgICAgICAgICRkaXggPSAyNTg7CiAgICAgICAgICAgICAgICAkcHJldl9pbmRleCA9IDI1NjsKICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBkaWN0aW9uYXJ5ICh3aXRoIHRoZSBmaXJzdCAyNTYgZW50cmllcykuCiAgICAgICAgICAgICAgICAkZGljdGlvbmFyeSA9IFtdOwogICAgICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgMjU2OyArKyRpKSB7CiAgICAgICAgICAgICAgICAgICAgJGRpY3Rpb25hcnlbJGldID0gXGNocigkaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgyNTYgPT0gJHByZXZfaW5kZXgpIHsKICAgICAgICAgICAgICAgIC8vIGZpcnN0IGVudHJ5CiAgICAgICAgICAgICAgICAkZGVjb2RlZCAuPSAkZGljdGlvbmFyeVskaW5kZXhdOwogICAgICAgICAgICAgICAgJHByZXZfaW5kZXggPSAkaW5kZXg7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBpbmRleCBleGlzdCBpbiB0aGUgZGljdGlvbmFyeQogICAgICAgICAgICAgICAgaWYgKCRpbmRleCA8ICRkaXgpIHsKICAgICAgICAgICAgICAgICAgICAvLyBpbmRleCBleGlzdCBvbiBkaWN0aW9uYXJ5CiAgICAgICAgICAgICAgICAgICAgJGRlY29kZWQgLj0gJGRpY3Rpb25hcnlbJGluZGV4XTsKICAgICAgICAgICAgICAgICAgICAkZGljX3ZhbCA9ICRkaWN0aW9uYXJ5WyRwcmV2X2luZGV4XS4kZGljdGlvbmFyeVskaW5kZXhdWzBdOwogICAgICAgICAgICAgICAgICAgIC8vIHN0b3JlIGN1cnJlbnQgaW5kZXgKICAgICAgICAgICAgICAgICAgICAkcHJldl9pbmRleCA9ICRpbmRleDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gaW5kZXggZG8gbm90IGV4aXN0IG9uIGRpY3Rpb25hcnkKICAgICAgICAgICAgICAgICAgICAkZGljX3ZhbCA9ICRkaWN0aW9uYXJ5WyRwcmV2X2luZGV4XS4kZGljdGlvbmFyeVskcHJldl9pbmRleF1bMF07CiAgICAgICAgICAgICAgICAgICAgJGRlY29kZWQgLj0gJGRpY192YWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgZGljdGlvbmFyeQogICAgICAgICAgICAgICAgJGRpY3Rpb25hcnlbJGRpeF0gPSAkZGljX3ZhbDsKICAgICAgICAgICAgICAgICsrJGRpeDsKICAgICAgICAgICAgICAgIC8vIGNoYW5nZSBiaXQgbGVuZ3RoIGJ5IGNhc2UKICAgICAgICAgICAgICAgIGlmICgyMDQ3ID09ICRkaXgpIHsKICAgICAgICAgICAgICAgICAgICAkYml0bGVuID0gMTI7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoMTAyMyA9PSAkZGl4KSB7CiAgICAgICAgICAgICAgICAgICAgJGJpdGxlbiA9IDExOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKDUxMSA9PSAkZGl4KSB7CiAgICAgICAgICAgICAgICAgICAgJGJpdGxlbiA9IDEwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRlY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5MZW5ndGhEZWNvZGUKICAgICAqCiAgICAgKiBEZWNvbXByZXNzZXMgZGF0YSBlbmNvZGVkIHVzaW5nIGEgYnl0ZS1vcmllbnRlZCBydW4tbGVuZ3RoIGVuY29kaW5nIGFsZ29yaXRobS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhIERhdGEgdG8gZGVjb2RlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRlY29kZUZpbHRlclJ1bkxlbmd0aERlY29kZSgkZGF0YSkKICAgIHsKICAgICAgICAvLyBpbml0aWFsaXplIHN0cmluZyB0byByZXR1cm4KICAgICAgICAkZGVjb2RlZCA9ICcnOwogICAgICAgIC8vIGRhdGEgbGVuZ3RoCiAgICAgICAgJGRhdGFfbGVuZ3RoID0gXHN0cmxlbigkZGF0YSk7CiAgICAgICAgJGkgPSAwOwogICAgICAgIHdoaWxlICgkaSA8ICRkYXRhX2xlbmd0aCkgewogICAgICAgICAgICAvLyBnZXQgY3VycmVudCBieXRlIHZhbHVlCiAgICAgICAgICAgICRieXRlID0gXG9yZCgkZGF0YVskaV0pOwogICAgICAgICAgICBpZiAoMTI4ID09ICRieXRlKSB7CiAgICAgICAgICAgICAgICAvLyBhIGxlbmd0aCB2YWx1ZSBvZiAxMjggZGVub3RlIEVPRAogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0gZWxzZWlmICgkYnl0ZSA8IDEyOCkgewogICAgICAgICAgICAgICAgLy8gaWYgdGhlIGxlbmd0aCBieXRlIGlzIGluIHRoZSByYW5nZSAwIHRvIDEyNwogICAgICAgICAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBsZW5ndGggKyAxICgxIHRvIDEyOCkgYnl0ZXMgc2hhbGwgYmUgY29waWVkIGxpdGVyYWxseSBkdXJpbmcgZGVjb21wcmVzc2lvbgogICAgICAgICAgICAgICAgJGRlY29kZWQgLj0gc3Vic3RyKCRkYXRhLCAoJGkgKyAxKSwgKCRieXRlICsgMSkpOwogICAgICAgICAgICAgICAgLy8gbW92ZSB0byBuZXh0IGJsb2NrCiAgICAgICAgICAgICAgICAkaSArPSAoJGJ5dGUgKyAyKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGlmIGxlbmd0aCBpcyBpbiB0aGUgcmFuZ2UgMTI5IHRvIDI1NSwKICAgICAgICAgICAgICAgIC8vIHRoZSBmb2xsb3dpbmcgc2luZ2xlIGJ5dGUgc2hhbGwgYmUgY29waWVkIDI1NyAtIGxlbmd0aCAoMiB0byAxMjgpIHRpbWVzIGR1cmluZyBkZWNvbXByZXNzaW9uCiAgICAgICAgICAgICAgICAkZGVjb2RlZCAuPSBzdHJfcmVwZWF0KCRkYXRhWygkaSArIDEpXSwgKDI1NyAtICRieXRlKSk7CiAgICAgICAgICAgICAgICAvLyBtb3ZlIHRvIG5leHQgYmxvY2sKICAgICAgICAgICAgICAgICRpICs9IDI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGVjb2RlZDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkgbGlzdCBvZiBhdmFpbGFibGUgZmlsdGVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRmlsdGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hdmFpbGFibGVGaWx0ZXJzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/RawData/RawDataParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUaGlzIGZpbGUgaXMgYmFzZWQgb24gY29kZSBvZiB0ZWNuaWNrY29tL1RDUERGIFBERiBsaWJyYXJ5LgogKgogKiBPcmlnaW5hbCBhdXRob3IgTmljb2xhIEFzdW5pIChpbmZvQHRlY25pY2suY29tKSBhbmQKICogY29udHJpYnV0b3JzIChodHRwczovL2dpdGh1Yi5jb20vdGVjbmlja2NvbS9UQ1BERi9ncmFwaHMvY29udHJpYnV0b3JzKS4KICoKICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVjbmlja2NvbS9UQ1BERgogKgogKiBPcmlnaW5hbCBjb2RlIHdhcyBsaWNlbnNlZCBvbiB0aGUgdGVybXMgb2YgdGhlIExHUEwgdjMuCiAqCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKgogKiBAZmlsZSBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIEtvbnJhZCBBYmljaHQgPGsuYWJpY2h0QGdtYWlsLmNvbT4KICogQGRhdGUgICAgMjAyMC0wMS0wNgogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcUmF3RGF0YTsKCnVzZSBFeGNlcHRpb247CnVzZSBTbWFsb3RcUGRmUGFyc2VyXENvbmZpZzsKCmNsYXNzIFJhd0RhdGFQYXJzZXIKewogICAgLyoqCiAgICAgKiBAdmFyIFxTbWFsb3RcUGRmUGFyc2VyXENvbmZpZwogICAgICovCiAgICBwcml2YXRlICRjb25maWc7CgogICAgLyoqCiAgICAgKiBDb25maWd1cmF0aW9uIGFycmF5LgogICAgICovCiAgICBwcm90ZWN0ZWQgJGNmZyA9IFsKICAgICAgICAvLyBpZiBgdHJ1ZWAgaWdub3JlIGZpbHRlciBkZWNvZGluZyBlcnJvcnMKICAgICAgICAnaWdub3JlX2ZpbHRlcl9kZWNvZGluZ19lcnJvcnMnID0+IHRydWUsCiAgICAgICAgLy8gaWYgYHRydWVgIGlnbm9yZSBtaXNzaW5nIGZpbHRlciBkZWNvZGluZyBlcnJvcnMKICAgICAgICAnaWdub3JlX21pc3NpbmdfZmlsdGVyX2RlY29kZXJzJyA9PiB0cnVlLAogICAgXTsKCiAgICBwcm90ZWN0ZWQgJGZpbHRlckhlbHBlcjsKICAgIHByb3RlY3RlZCAkb2JqZWN0czsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY2ZnIENvbmZpZ3VyYXRpb24gYXJyYXksIGRlZmF1bHQgaXMgW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjZmcgPSBbXSwgQ29uZmlnICRjb25maWcgPSBudWxsKQogICAgewogICAgICAgIC8vIG1lcmdlIGdpdmVuIGFycmF5IHdpdGggZGVmYXVsdCB2YWx1ZXMKICAgICAgICAkdGhpcy0+Y2ZnID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmNmZywgJGNmZyk7CgogICAgICAgICR0aGlzLT5maWx0ZXJIZWxwZXIgPSBuZXcgRmlsdGVySGVscGVyKCk7CiAgICAgICAgJHRoaXMtPmNvbmZpZyA9ICRjb25maWcgPzogbmV3IENvbmZpZygpOwogICAgfQoKICAgIC8qKgogICAgICogRGVjb2RlIHRoZSBzcGVjaWZpZWQgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBkZkRhdGEgUERGIGRhdGEKICAgICAqIEBwYXJhbSBhcnJheSAgJHhyZWYKICAgICAqIEBwYXJhbSBhcnJheSAgJHNkaWMgICAgU3RyZWFtJ3MgZGljdGlvbmFyeSBhcnJheQogICAgICogQHBhcmFtIHN0cmluZyAkc3RyZWFtICBTdHJlYW0gdG8gZGVjb2RlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBjb250YWluaW5nIGRlY29kZWQgc3RyZWFtIGRhdGEgYW5kIHJlbWFpbmluZyBmaWx0ZXJzCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBkZWNvZGVTdHJlYW0oJHBkZkRhdGEsICR4cmVmLCAkc2RpYywgJHN0cmVhbSkKICAgIHsKICAgICAgICAvLyBnZXQgc3RyZWFtIGxlbmd0aCBhbmQgZmlsdGVycwogICAgICAgICRzbGVuZ3RoID0gXHN0cmxlbigkc3RyZWFtKTsKICAgICAgICBpZiAoJHNsZW5ndGggPD0gMCkgewogICAgICAgICAgICByZXR1cm4gWycnLCBbXV07CiAgICAgICAgfQogICAgICAgICRmaWx0ZXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoJHNkaWMgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCcvJyA9PSAkdlswXSkgewogICAgICAgICAgICAgICAgaWYgKCgnTGVuZ3RoJyA9PSAkdlsxXSkgJiYgKGlzc2V0KCRzZGljWygkayArIDEpXSkpICYmICgnbnVtZXJpYycgPT0gJHNkaWNbKCRrICsgMSldWzBdKSkgewogICAgICAgICAgICAgICAgICAgIC8vIGdldCBkZWNsYXJlZCBzdHJlYW0gbGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgJGRlY2xlbmd0aCA9IChpbnQpICgkc2RpY1soJGsgKyAxKV1bMV0pOwogICAgICAgICAgICAgICAgICAgIGlmICgkZGVjbGVuZ3RoIDwgJHNsZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmVhbSA9IHN1YnN0cigkc3RyZWFtLCAwLCAkZGVjbGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHNsZW5ndGggPSAkZGVjbGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgoJ0ZpbHRlcicgPT0gJHZbMV0pICYmIChpc3NldCgkc2RpY1soJGsgKyAxKV0pKSkgewogICAgICAgICAgICAgICAgICAgIC8vIHJlc29sdmUgaW5kaXJlY3Qgb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgJG9ianZhbCA9ICR0aGlzLT5nZXRPYmplY3RWYWwoJHBkZkRhdGEsICR4cmVmLCAkc2RpY1soJGsgKyAxKV0pOwogICAgICAgICAgICAgICAgICAgIGlmICgnLycgPT0gJG9ianZhbFswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGUgZmlsdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWx0ZXJzW10gPSAkb2JqdmFsWzFdOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgnWycgPT0gJG9ianZhbFswXSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBhcnJheSBvZiBmaWx0ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRvYmp2YWxbMV0gYXMgJGZsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcvJyA9PSAkZmx0WzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbHRlcnNbXSA9ICRmbHRbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGRlY29kZSB0aGUgc3RyZWFtCiAgICAgICAgJHJlbWFpbmluZ19maWx0ZXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoJGZpbHRlcnMgYXMgJGZpbHRlcikgewogICAgICAgICAgICBpZiAoXGluX2FycmF5KCRmaWx0ZXIsICR0aGlzLT5maWx0ZXJIZWxwZXItPmdldEF2YWlsYWJsZUZpbHRlcnMoKSkpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgJHN0cmVhbSA9ICR0aGlzLT5maWx0ZXJIZWxwZXItPmRlY29kZUZpbHRlcigkZmlsdGVyLCAkc3RyZWFtKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICRlbXNnID0gJGUtPmdldE1lc3NhZ2UoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoKCgnficgPT0gJGVtc2dbMF0pICYmICEkdGhpcy0+Y2ZnWydpZ25vcmVfbWlzc2luZ19maWx0ZXJfZGVjb2RlcnMnXSkKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCgnficgIT0gJGVtc2dbMF0pICYmICEkdGhpcy0+Y2ZnWydpZ25vcmVfZmlsdGVyX2RlY29kaW5nX2Vycm9ycyddKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGFkZCBtaXNzaW5nIGZpbHRlciB0byBhcnJheQogICAgICAgICAgICAgICAgJHJlbWFpbmluZ19maWx0ZXJzW10gPSAkZmlsdGVyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRzdHJlYW0sICRyZW1haW5pbmdfZmlsdGVyc107CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNvZGUgdGhlIENyb3NzLVJlZmVyZW5jZSBzZWN0aW9uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGRmRGF0YSAgIFBERiBkYXRhCiAgICAgKiBAcGFyYW0gaW50ICAgICRzdGFydHhyZWYgT2Zmc2V0IGF0IHdoaWNoIHRoZSB4cmVmIHNlY3Rpb24gc3RhcnRzIChwb3NpdGlvbiBvZiB0aGUgJ3hyZWYnIGtleXdvcmQpCiAgICAgKiBAcGFyYW0gYXJyYXkgICR4cmVmICAgICAgUHJldmlvdXMgeHJlZiBhcnJheSAoaWYgYW55KQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgY29udGFpbmluZyB4cmVmIGFuZCB0cmFpbGVyIGRhdGEKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRlY29kZVhyZWYoJHBkZkRhdGEsICRzdGFydHhyZWYsICR4cmVmID0gW10pCiAgICB7CiAgICAgICAgJHN0YXJ0eHJlZiArPSA0OyAvLyA0IGlzIHRoZSBsZW5ndGggb2YgdGhlIHdvcmQgJ3hyZWYnCiAgICAgICAgLy8gc2tpcCBpbml0aWFsIHdoaXRlIHNwYWNlIGNoYXJzCiAgICAgICAgJG9mZnNldCA9ICRzdGFydHhyZWYgKyBzdHJzcG4oJHBkZkRhdGEsICR0aGlzLT5jb25maWctPmdldFBkZldoaXRlc3BhY2VzKCksICRzdGFydHhyZWYpOwogICAgICAgIC8vIGluaXRpYWxpemUgb2JqZWN0IG51bWJlcgogICAgICAgICRvYmpfbnVtID0gMDsKICAgICAgICAvLyBzZWFyY2ggZm9yIGNyb3NzLXJlZmVyZW5jZSBlbnRyaWVzIG9yIHN1YnNlY3Rpb24KICAgICAgICB3aGlsZSAocHJlZ19tYXRjaCgnLyhbMC05XSspW1x4MjBdKFswLTldKylbXHgyMF0/KFtuZl0/KShcclxufFtceDIwXT9bXHJcbl0pLycsICRwZGZEYXRhLCAkbWF0Y2hlcywgXFBSRUdfT0ZGU0VUX0NBUFRVUkUsICRvZmZzZXQpID4gMCkgewogICAgICAgICAgICBpZiAoJG1hdGNoZXNbMF1bMV0gIT0gJG9mZnNldCkgewogICAgICAgICAgICAgICAgLy8gd2UgYXJlIG9uIGFub3RoZXIgc2VjdGlvbgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9mZnNldCArPSBcc3RybGVuKCRtYXRjaGVzWzBdWzBdKTsKICAgICAgICAgICAgaWYgKCduJyA9PSAkbWF0Y2hlc1szXVswXSkgewogICAgICAgICAgICAgICAgLy8gY3JlYXRlIHVuaXF1ZSBvYmplY3QgaW5kZXg6IFtvYmplY3QgbnVtYmVyXV9bZ2VuZXJhdGlvbiBudW1iZXJdCiAgICAgICAgICAgICAgICAkaW5kZXggPSAkb2JqX251bS4nXycuKGludCkgKCRtYXRjaGVzWzJdWzBdKTsKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIG9iamVjdCBhbHJlYWR5IGV4aXN0CiAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCR4cmVmWyd4cmVmJ11bJGluZGV4XSkpIHsKICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZSBvYmplY3Qgb2Zmc2V0IHBvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgJHhyZWZbJ3hyZWYnXVskaW5kZXhdID0gKGludCkgKCRtYXRjaGVzWzFdWzBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICsrJG9ial9udW07CiAgICAgICAgICAgIH0gZWxzZWlmICgnZicgPT0gJG1hdGNoZXNbM11bMF0pIHsKICAgICAgICAgICAgICAgICsrJG9ial9udW07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBvYmplY3QgbnVtYmVyIChpbmRleCkKICAgICAgICAgICAgICAgICRvYmpfbnVtID0gKGludCkgKCRtYXRjaGVzWzFdWzBdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBnZXQgdHJhaWxlciBkYXRhCiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy90cmFpbGVyW1xzXSo8PCguKik+Pi9pc1UnLCAkcGRmRGF0YSwgJG1hdGNoZXMsIFxQUkVHX09GRlNFVF9DQVBUVVJFLCAkb2Zmc2V0KSA+IDApIHsKICAgICAgICAgICAgJHRyYWlsZXJfZGF0YSA9ICRtYXRjaGVzWzFdWzBdOwogICAgICAgICAgICBpZiAoIWlzc2V0KCR4cmVmWyd0cmFpbGVyJ10pIHx8IGVtcHR5KCR4cmVmWyd0cmFpbGVyJ10pKSB7CiAgICAgICAgICAgICAgICAvLyBnZXQgb25seSB0aGUgbGFzdCB1cGRhdGVkIHZlcnNpb24KICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ10gPSBbXTsKICAgICAgICAgICAgICAgIC8vIHBhcnNlIHRyYWlsZXJfZGF0YQogICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9TaXplW1xzXSsoWzAtOV0rKS9pJywgJHRyYWlsZXJfZGF0YSwgJG1hdGNoZXMpID4gMCkgewogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ3NpemUnXSA9IChpbnQpICgkbWF0Y2hlc1sxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1Jvb3RbXHNdKyhbMC05XSspW1xzXSsoWzAtOV0rKVtcc10rUi9pJywgJHRyYWlsZXJfZGF0YSwgJG1hdGNoZXMpID4gMCkgewogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ3Jvb3QnXSA9IChpbnQpICgkbWF0Y2hlc1sxXSkuJ18nLihpbnQpICgkbWF0Y2hlc1syXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL0VuY3J5cHRbXHNdKyhbMC05XSspW1xzXSsoWzAtOV0rKVtcc10rUi9pJywgJHRyYWlsZXJfZGF0YSwgJG1hdGNoZXMpID4gMCkgewogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ2VuY3J5cHQnXSA9IChpbnQpICgkbWF0Y2hlc1sxXSkuJ18nLihpbnQpICgkbWF0Y2hlc1syXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL0luZm9bXHNdKyhbMC05XSspW1xzXSsoWzAtOV0rKVtcc10rUi9pJywgJHRyYWlsZXJfZGF0YSwgJG1hdGNoZXMpID4gMCkgewogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ2luZm8nXSA9IChpbnQpICgkbWF0Y2hlc1sxXSkuJ18nLihpbnQpICgkbWF0Y2hlc1syXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL0lEW1xzXSpbXFtdW1xzXSpbPF0oW14+XSopWz5dW1xzXSpbPF0oW14+XSopWz5dL2knLCAkdHJhaWxlcl9kYXRhLCAkbWF0Y2hlcykgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHhyZWZbJ3RyYWlsZXInXVsnaWQnXSA9IFtdOwogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ2lkJ11bMF0gPSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgICAgICAgICAkeHJlZlsndHJhaWxlciddWydpZCddWzFdID0gJG1hdGNoZXNbMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9QcmV2W1xzXSsoWzAtOV0rKS9pJywgJHRyYWlsZXJfZGF0YSwgJG1hdGNoZXMpID4gMCkgewogICAgICAgICAgICAgICAgLy8gZ2V0IHByZXZpb3VzIHhyZWYKICAgICAgICAgICAgICAgICR4cmVmID0gJHRoaXMtPmdldFhyZWZEYXRhKCRwZGZEYXRhLCAoaW50KSAoJG1hdGNoZXNbMV0pLCAkeHJlZik7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmFibGUgdG8gZmluZCB0cmFpbGVyJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHhyZWY7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNvZGUgdGhlIENyb3NzLVJlZmVyZW5jZSBTdHJlYW0gc2VjdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBkZkRhdGEgICBQREYgZGF0YQogICAgICogQHBhcmFtIGludCAgICAkc3RhcnR4cmVmIE9mZnNldCBhdCB3aGljaCB0aGUgeHJlZiBzZWN0aW9uIHN0YXJ0cwogICAgICogQHBhcmFtIGFycmF5ICAkeHJlZiAgICAgIFByZXZpb3VzIHhyZWYgYXJyYXkgKGlmIGFueSkKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IGNvbnRhaW5pbmcgeHJlZiBhbmQgdHJhaWxlciBkYXRhCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24gaWYgdW5rbm93biBQTkcgcHJlZGljdG9yIGRldGVjdGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBkZWNvZGVYcmVmU3RyZWFtKCRwZGZEYXRhLCAkc3RhcnR4cmVmLCAkeHJlZiA9IFtdKQogICAgewogICAgICAgIC8vIHRyeSB0byByZWFkIENyb3NzLVJlZmVyZW5jZSBTdHJlYW0KICAgICAgICAkeHJlZm9iaiA9ICR0aGlzLT5nZXRSYXdPYmplY3QoJHBkZkRhdGEsICRzdGFydHhyZWYpOwogICAgICAgICR4cmVmY3JzID0gJHRoaXMtPmdldEluZGlyZWN0T2JqZWN0KCRwZGZEYXRhLCAkeHJlZiwgJHhyZWZvYmpbMV0sICRzdGFydHhyZWYsIHRydWUpOwogICAgICAgIGlmICghaXNzZXQoJHhyZWZbJ3RyYWlsZXInXSkgfHwgZW1wdHkoJHhyZWZbJ3RyYWlsZXInXSkpIHsKICAgICAgICAgICAgLy8gZ2V0IG9ubHkgdGhlIGxhc3QgdXBkYXRlZCB2ZXJzaW9uCiAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ10gPSBbXTsKICAgICAgICAgICAgJGZpbGx0cmFpbGVyID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZmlsbHRyYWlsZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc3NldCgkeHJlZlsneHJlZiddKSkgewogICAgICAgICAgICAkeHJlZlsneHJlZiddID0gW107CiAgICAgICAgfQogICAgICAgICR2YWxpZF9jcnMgPSBmYWxzZTsKICAgICAgICAkY29sdW1ucyA9IDA7CiAgICAgICAgJHByZWRpY3RvciA9IG51bGw7CiAgICAgICAgJHNhcnIgPSAkeHJlZmNyc1swXVsxXTsKICAgICAgICBpZiAoIVxpc19hcnJheSgkc2FycikpIHsKICAgICAgICAgICAgJHNhcnIgPSBbXTsKICAgICAgICB9CgogICAgICAgICR3YiA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkc2FyciBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoJy8nID09ICR2WzBdKQogICAgICAgICAgICAgICAgJiYgKCdUeXBlJyA9PSAkdlsxXSkKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICBpc3NldCgkc2FyclsoJGsgKyAxKV0pCiAgICAgICAgICAgICAgICAgICAgJiYgJy8nID09ICRzYXJyWygkayArIDEpXVswXQogICAgICAgICAgICAgICAgICAgICYmICdYUmVmJyA9PSAkc2FyclsoJGsgKyAxKV1bMV0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkdmFsaWRfY3JzID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlaWYgKCgnLycgPT0gJHZbMF0pICYmICgnSW5kZXgnID09ICR2WzFdKSAmJiAoaXNzZXQoJHNhcnJbKCRrICsgMSldKSkpIHsKICAgICAgICAgICAgICAgIC8vIGZpcnN0IG9iamVjdCBudW1iZXIgaW4gdGhlIHN1YnNlY3Rpb24KICAgICAgICAgICAgICAgICRpbmRleF9maXJzdCA9IChpbnQpICgkc2FyclsoJGsgKyAxKV1bMV1bMF1bMV0pOwogICAgICAgICAgICB9IGVsc2VpZiAoKCcvJyA9PSAkdlswXSkgJiYgKCdQcmV2JyA9PSAkdlsxXSkgJiYgKGlzc2V0KCRzYXJyWygkayArIDEpXSkgJiYgKCdudW1lcmljJyA9PSAkc2FyclsoJGsgKyAxKV1bMF0pKSkgewogICAgICAgICAgICAgICAgLy8gZ2V0IHByZXZpb3VzIHhyZWYgb2Zmc2V0CiAgICAgICAgICAgICAgICAkcHJldnhyZWYgPSAoaW50KSAoJHNhcnJbKCRrICsgMSldWzFdKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCgnLycgPT0gJHZbMF0pICYmICgnVycgPT0gJHZbMV0pICYmIChpc3NldCgkc2FyclsoJGsgKyAxKV0pKSkgewogICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGJ5dGVzIChpbiB0aGUgZGVjb2RlZCBzdHJlYW0pIG9mIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkCiAgICAgICAgICAgICAgICAkd2JbMF0gPSAoaW50KSAoJHNhcnJbKCRrICsgMSldWzFdWzBdWzFdKTsKICAgICAgICAgICAgICAgICR3YlsxXSA9IChpbnQpICgkc2FyclsoJGsgKyAxKV1bMV1bMV1bMV0pOwogICAgICAgICAgICAgICAgJHdiWzJdID0gKGludCkgKCRzYXJyWygkayArIDEpXVsxXVsyXVsxXSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgoJy8nID09ICR2WzBdKSAmJiAoJ0RlY29kZVBhcm1zJyA9PSAkdlsxXSkgJiYgKGlzc2V0KCRzYXJyWygkayArIDEpXVsxXSkpKSB7CiAgICAgICAgICAgICAgICAkZGVjcGFyID0gJHNhcnJbKCRrICsgMSldWzFdOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRlY3BhciBhcyAka2RjID0+ICR2ZGMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICcvJyA9PSAkdmRjWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICYmICdDb2x1bW5zJyA9PSAkdmRjWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2V0KCRkZWNwYXJbKCRrZGMgKyAxKV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAnbnVtZXJpYycgPT0gJGRlY3BhclsoJGtkYyArIDEpXVswXQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb2x1bW5zID0gKGludCkgKCRkZWNwYXJbKCRrZGMgKyAxKV1bMV0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJy8nID09ICR2ZGNbMF0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJ1ByZWRpY3RvcicgPT0gJHZkY1sxXQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3NldCgkZGVjcGFyWygka2RjICsgMSldKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJ251bWVyaWMnID09ICRkZWNwYXJbKCRrZGMgKyAxKV1bMF0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkcHJlZGljdG9yID0gKGludCkgKCRkZWNwYXJbKCRrZGMgKyAxKV1bMV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRmaWxsdHJhaWxlcikgewogICAgICAgICAgICAgICAgaWYgKCgnLycgPT0gJHZbMF0pICYmICgnU2l6ZScgPT0gJHZbMV0pICYmIChpc3NldCgkc2FyclsoJGsgKyAxKV0pICYmICgnbnVtZXJpYycgPT0gJHNhcnJbKCRrICsgMSldWzBdKSkpIHsKICAgICAgICAgICAgICAgICAgICAkeHJlZlsndHJhaWxlciddWydzaXplJ10gPSAkc2FyclsoJGsgKyAxKV1bMV07CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoKCcvJyA9PSAkdlswXSkgJiYgKCdSb290JyA9PSAkdlsxXSkgJiYgKGlzc2V0KCRzYXJyWygkayArIDEpXSkgJiYgKCdvYmpyZWYnID09ICRzYXJyWygkayArIDEpXVswXSkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHhyZWZbJ3RyYWlsZXInXVsncm9vdCddID0gJHNhcnJbKCRrICsgMSldWzFdOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCgnLycgPT0gJHZbMF0pICYmICgnSW5mbycgPT0gJHZbMV0pICYmIChpc3NldCgkc2FyclsoJGsgKyAxKV0pICYmICgnb2JqcmVmJyA9PSAkc2FyclsoJGsgKyAxKV1bMF0pKSkgewogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ2luZm8nXSA9ICRzYXJyWygkayArIDEpXVsxXTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgoJy8nID09ICR2WzBdKSAmJiAoJ0VuY3J5cHQnID09ICR2WzFdKSAmJiAoaXNzZXQoJHNhcnJbKCRrICsgMSldKSAmJiAoJ29ianJlZicgPT0gJHNhcnJbKCRrICsgMSldWzBdKSkpIHsKICAgICAgICAgICAgICAgICAgICAkeHJlZlsndHJhaWxlciddWydlbmNyeXB0J10gPSAkc2FyclsoJGsgKyAxKV1bMV07CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoKCcvJyA9PSAkdlswXSkgJiYgKCdJRCcgPT0gJHZbMV0pICYmIChpc3NldCgkc2FyclsoJGsgKyAxKV0pKSkgewogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ2lkJ10gPSBbXTsKICAgICAgICAgICAgICAgICAgICAkeHJlZlsndHJhaWxlciddWydpZCddWzBdID0gJHNhcnJbKCRrICsgMSldWzFdWzBdWzFdOwogICAgICAgICAgICAgICAgICAgICR4cmVmWyd0cmFpbGVyJ11bJ2lkJ11bMV0gPSAkc2FyclsoJGsgKyAxKV1bMV1bMV1bMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGRlY29kZSBkYXRhCiAgICAgICAgaWYgKCR2YWxpZF9jcnMgJiYgaXNzZXQoJHhyZWZjcnNbMV1bM11bMF0pKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAkcHJlZGljdG9yKSB7CiAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgYnl0ZXMgaW4gYSByb3cKICAgICAgICAgICAgICAgICRyb3dsZW4gPSAoJGNvbHVtbnMgKyAxKTsKICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgdGhlIHN0cmVhbSBpbnRvIGFuIGFycmF5IG9mIGludGVnZXJzCiAgICAgICAgICAgICAgICAkc2RhdGEgPSB1bnBhY2soJ0MqJywgJHhyZWZjcnNbMV1bM11bMF0pOwogICAgICAgICAgICAgICAgLy8gc3BsaXQgdGhlIHJvd3MKICAgICAgICAgICAgICAgICRzZGF0YSA9IGFycmF5X2NodW5rKCRzZGF0YSwgJHJvd2xlbik7CgogICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBkZWNvZGVkIGFycmF5CiAgICAgICAgICAgICAgICAkZGRhdGEgPSBbXTsKICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgZmlyc3Qgcm93IHdpdGggemVyb3MKICAgICAgICAgICAgICAgICRwcmV2X3JvdyA9IGFycmF5X2ZpbGwoMCwgJHJvd2xlbiwgMCk7CiAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCByb3cgYXBwbHkgUE5HIHVucHJlZGljdG9yCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2RhdGEgYXMgJGsgPT4gJHJvdykgewogICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgbmV3IHJvdwogICAgICAgICAgICAgICAgICAgICRkZGF0YVska10gPSBbXTsKICAgICAgICAgICAgICAgICAgICAvLyBnZXQgUE5HIHByZWRpY3RvciB2YWx1ZQogICAgICAgICAgICAgICAgICAgICRwcmVkaWN0b3IgPSAoMTAgKyAkcm93WzBdKTsKICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCBieXRlIG9uIHRoZSByb3cKICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMTsgJGkgPD0gJGNvbHVtbnM7ICsrJGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3IGluZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICRqID0gKCRpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRyb3dfdXAgPSAkcHJldl9yb3dbJGpdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PSAkaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvd19sZWZ0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dfdXBsZWZ0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dfbGVmdCA9ICRyb3dbKCRpIC0gMSldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvd191cGxlZnQgPSAkcHJldl9yb3dbKCRqIC0gMSldOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJHByZWRpY3RvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDogIC8vIFBORyBwcmVkaWN0aW9uIChvbiBlbmNvZGluZywgUE5HIE5vbmUgb24gYWxsIHJvd3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRkYXRhWyRrXVskal0gPSAkcm93WyRpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOiAgLy8gUE5HIHByZWRpY3Rpb24gKG9uIGVuY29kaW5nLCBQTkcgU3ViIG9uIGFsbCByb3dzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZGF0YVska11bJGpdID0gKCgkcm93WyRpXSArICRyb3dfbGVmdCkgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOiAgLy8gUE5HIHByZWRpY3Rpb24gKG9uIGVuY29kaW5nLCBQTkcgVXAgb24gYWxsIHJvd3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRkYXRhWyRrXVskal0gPSAoKCRyb3dbJGldICsgJHJvd191cCkgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOiAgLy8gUE5HIHByZWRpY3Rpb24gKG9uIGVuY29kaW5nLCBQTkcgQXZlcmFnZSBvbiBhbGwgcm93cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRhdGFbJGtdWyRqXSA9ICgoJHJvd1skaV0gKyAoKCRyb3dfbGVmdCArICRyb3dfdXApIC8gMikpICYgMHhmZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNDogIC8vIFBORyBwcmVkaWN0aW9uIChvbiBlbmNvZGluZywgUE5HIFBhZXRoIG9uIGFsbCByb3dzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWwgZXN0aW1hdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcCA9ICgkcm93X2xlZnQgKyAkcm93X3VwIC0gJHJvd191cGxlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc3RhbmNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYSA9IGFicygkcCAtICRyb3dfbGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBiID0gYWJzKCRwIC0gJHJvd191cCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBjID0gYWJzKCRwIC0gJHJvd191cGxlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwbWluID0gbWluKCRwYSwgJHBiLCAkcGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBtaW5pbXVtIGRpc3RhbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkcG1pbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRwYToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZGF0YVska11bJGpdID0gKCgkcm93WyRpXSArICRyb3dfbGVmdCkgJiAweGZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkcGI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRhdGFbJGtdWyRqXSA9ICgoJHJvd1skaV0gKyAkcm93X3VwKSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRwYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZGF0YVska11bJGpdID0gKCgkcm93WyRpXSArICRyb3dfdXBsZWZ0KSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvLyBQTkcgcHJlZGljdGlvbiAob24gZW5jb2RpbmcsIFBORyBvcHRpbXVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gUE5HIHByZWRpY3RvcjogJy4kcHJlZGljdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcHJldl9yb3cgPSAkZGRhdGFbJGtdOwogICAgICAgICAgICAgICAgfSAvLyBlbmQgZm9yIGVhY2ggcm93CiAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZSBkZWNvZGluZwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGJ5dGVzIGluIGEgcm93CiAgICAgICAgICAgICAgICAkcm93bGVuID0gYXJyYXlfc3VtKCR3Yik7CiAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRoZSBzdHJlYW0gaW50byBhbiBhcnJheSBvZiBpbnRlZ2VycwogICAgICAgICAgICAgICAgJHNkYXRhID0gdW5wYWNrKCdDKicsICR4cmVmY3JzWzFdWzNdWzBdKTsKICAgICAgICAgICAgICAgIC8vIHNwbGl0IHRoZSByb3dzCiAgICAgICAgICAgICAgICAkZGRhdGEgPSBhcnJheV9jaHVuaygkc2RhdGEsICRyb3dsZW4pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2RhdGEgPSBbXTsKCiAgICAgICAgICAgIC8vIGZvciBldmVyeSByb3cKICAgICAgICAgICAgZm9yZWFjaCAoJGRkYXRhIGFzICRrID0+ICRyb3cpIHsKICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgbmV3IHJvdwogICAgICAgICAgICAgICAgJHNkYXRhWyRrXSA9IFswLCAwLCAwXTsKICAgICAgICAgICAgICAgIGlmICgwID09ICR3YlswXSkgewogICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdHlwZSBmaWVsZAogICAgICAgICAgICAgICAgICAgICRzZGF0YVska11bMF0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGkgPSAwOyAvLyBjb3VudCBieXRlcyBpbiB0aGUgcm93CiAgICAgICAgICAgICAgICAvLyBmb3IgZXZlcnkgY29sdW1uCiAgICAgICAgICAgICAgICBmb3IgKCRjID0gMDsgJGMgPCAzOyArKyRjKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGV2ZXJ5IGJ5dGUgb24gdGhlIGNvbHVtbgogICAgICAgICAgICAgICAgICAgIGZvciAoJGIgPSAwOyAkYiA8ICR3YlskY107ICsrJGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRyb3dbJGldKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNkYXRhWyRrXVskY10gKz0gKCRyb3dbJGldIDw8ICgoJHdiWyRjXSAtIDEgLSAkYikgKiA4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKyskaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRkYXRhID0gW107CiAgICAgICAgICAgIC8vIGZpbGwgeHJlZgogICAgICAgICAgICBpZiAoaXNzZXQoJGluZGV4X2ZpcnN0KSkgewogICAgICAgICAgICAgICAgJG9ial9udW0gPSAkaW5kZXhfZmlyc3Q7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb2JqX251bSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yZWFjaCAoJHNkYXRhIGFzICRrID0+ICRyb3cpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJHJvd1swXSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMDogIC8vIChmKSBsaW5rZWQgbGlzdCBvZiBmcmVlIG9iamVjdHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6ICAvLyAobikgb2JqZWN0cyB0aGF0IGFyZSBpbiB1c2UgYnV0IGFyZSBub3QgY29tcHJlc3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIHVuaXF1ZSBvYmplY3QgaW5kZXg6IFtvYmplY3QgbnVtYmVyXV9bZ2VuZXJhdGlvbiBudW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5kZXggPSAkb2JqX251bS4nXycuJHJvd1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIG9iamVjdCBhbHJlYWR5IGV4aXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCR4cmVmWyd4cmVmJ11bJGluZGV4XSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZSBvYmplY3Qgb2Zmc2V0IHBvc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHhyZWZbJ3hyZWYnXVskaW5kZXhdID0gJHJvd1sxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIDI6ICAvLyBjb21wcmVzc2VkIG9iamVjdHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRyb3dbMV0gPSBvYmplY3QgbnVtYmVyIG9mIHRoZSBvYmplY3Qgc3RyZWFtIGluIHdoaWNoIHRoaXMgb2JqZWN0IGlzIHN0b3JlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJHJvd1syXSA9IGluZGV4IG9mIHRoaXMgb2JqZWN0IHdpdGhpbiB0aGUgb2JqZWN0IHN0cmVhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGV4ID0gJHJvd1sxXS4nXzBfJy4kcm93WzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHhyZWZbJ3hyZWYnXVskaW5kZXhdID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8vIG51bGwgb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICArKyRvYmpfbnVtOwogICAgICAgICAgICB9CiAgICAgICAgfSAvLyBlbmQgZGVjb2RpbmcgZGF0YQogICAgICAgIGlmIChpc3NldCgkcHJldnhyZWYpKSB7CiAgICAgICAgICAgIC8vIGdldCBwcmV2aW91cyB4cmVmCiAgICAgICAgICAgICR4cmVmID0gJHRoaXMtPmdldFhyZWZEYXRhKCRwZGZEYXRhLCAkcHJldnhyZWYsICR4cmVmKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkeHJlZjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0T2JqZWN0SGVhZGVyUGF0dGVybigkb2JqUmVmQXJyKTogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gY29uc2lkZXIgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVyIChQREYgc3BlY2lmaWNhdGlvbnMpCiAgICAgICAgcmV0dXJuICcvJy4kb2JqUmVmQXJyWzBdLiR0aGlzLT5jb25maWctPmdldFBkZldoaXRlc3BhY2VzUmVnZXgoKS4kb2JqUmVmQXJyWzFdLiR0aGlzLT5jb25maWctPmdldFBkZldoaXRlc3BhY2VzUmVnZXgoKS4nb2JqJy4nLyc7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldE9iamVjdEhlYWRlckxlbigkb2JqUmVmQXJyKTogaW50CiAgICB7CiAgICAgICAgLy8gIjQgMCBvYmoiCiAgICAgICAgLy8gMiB3aGl0ZXNwYWNlcyArIHN0cmxlbigib2JqIikgPSA1CiAgICAgICAgcmV0dXJuIDUgKyBcc3RybGVuKCRvYmpSZWZBcnJbMF0pICsgXHN0cmxlbigkb2JqUmVmQXJyWzFdKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBjb250ZW50IG9mIGluZGlyZWN0IG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwZGZEYXRhICBQREYgZGF0YQogICAgICogQHBhcmFtIGFycmF5ICAkeHJlZgogICAgICogQHBhcmFtIHN0cmluZyAkb2JqUmVmICAgT2JqZWN0IG51bWJlciBhbmQgZ2VuZXJhdGlvbiBudW1iZXIgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUgY2hhcmFjdGVyCiAgICAgKiBAcGFyYW0gaW50ICAgICRvZmZzZXQgICBPYmplY3Qgb2Zmc2V0CiAgICAgKiBAcGFyYW0gYm9vbCAgICRkZWNvZGluZyBJZiB0cnVlIGRlY29kZSBzdHJlYW1zCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBjb250YWluaW5nIG9iamVjdCBkYXRhCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24gaWYgaW52YWxpZCBvYmplY3QgcmVmZXJlbmNlIGZvdW5kCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRJbmRpcmVjdE9iamVjdCgkcGRmRGF0YSwgJHhyZWYsICRvYmpSZWYsICRvZmZzZXQgPSAwLCAkZGVjb2RpbmcgPSB0cnVlKQogICAgewogICAgICAgIC8qCiAgICAgICAgICogYnVpbGQgaW5kaXJlY3Qgb2JqZWN0IGhlYWRlcgogICAgICAgICAqLwogICAgICAgIC8vICRvYmpIZWFkZXIgPSAiW29iamVjdCBudW1iZXJdIFtnZW5lcmF0aW9uIG51bWJlcl0gb2JqIgogICAgICAgICRvYmpSZWZBcnIgPSBleHBsb2RlKCdfJywgJG9ialJlZik7CiAgICAgICAgaWYgKDIgIT09IFxjb3VudCgkb2JqUmVmQXJyKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJbnZhbGlkIG9iamVjdCByZWZlcmVuY2UgZm9yICRvYmouJyk7CiAgICAgICAgfQoKICAgICAgICAkb2JqSGVhZGVyTGVuID0gJHRoaXMtPmdldE9iamVjdEhlYWRlckxlbigkb2JqUmVmQXJyKTsKCiAgICAgICAgLyoKICAgICAgICAgKiBjaGVjayBpZiB3ZSBhcmUgaW4gcG9zaXRpb24KICAgICAgICAgKi8KICAgICAgICAvLyBpZ25vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGF0IG9mZnNldAogICAgICAgICRvZmZzZXQgKz0gc3Ryc3BuKCRwZGZEYXRhLCAkdGhpcy0+Y29uZmlnLT5nZXRQZGZXaGl0ZXNwYWNlcygpLCAkb2Zmc2V0KTsKICAgICAgICAvLyBpZ25vcmUgbGVhZGluZyB6ZXJvcyBmb3Igb2JqZWN0IG51bWJlcgogICAgICAgICRvZmZzZXQgKz0gc3Ryc3BuKCRwZGZEYXRhLCAnMCcsICRvZmZzZXQpOwogICAgICAgIGlmICgwID09IHByZWdfbWF0Y2goJHRoaXMtPmdldE9iamVjdEhlYWRlclBhdHRlcm4oJG9ialJlZkFyciksIHN1YnN0cigkcGRmRGF0YSwgJG9mZnNldCwgJG9iakhlYWRlckxlbikpKSB7CiAgICAgICAgICAgIC8vIGFuIGluZGlyZWN0IHJlZmVyZW5jZSB0byBhbiB1bmRlZmluZWQgb2JqZWN0IHNoYWxsIGJlIGNvbnNpZGVyZWQgYSByZWZlcmVuY2UgdG8gdGhlIG51bGwgb2JqZWN0CiAgICAgICAgICAgIHJldHVybiBbJ251bGwnLCAnbnVsbCcsICRvZmZzZXRdOwogICAgICAgIH0KCiAgICAgICAgLyoKICAgICAgICAgKiBnZXQgY29udGVudAogICAgICAgICAqLwogICAgICAgIC8vIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIG9iamVjdCBjb250ZW50CiAgICAgICAgJG9mZnNldCArPSAkb2JqSGVhZGVyTGVuOwogICAgICAgICRvYmpDb250ZW50QXJyID0gW107CiAgICAgICAgJGkgPSAwOyAvLyBvYmplY3QgbWFpbiBpbmRleAogICAgICAgIGRvIHsKICAgICAgICAgICAgJG9sZE9mZnNldCA9ICRvZmZzZXQ7CiAgICAgICAgICAgIC8vIGdldCBlbGVtZW50CiAgICAgICAgICAgICRlbGVtZW50ID0gJHRoaXMtPmdldFJhd09iamVjdCgkcGRmRGF0YSwgJG9mZnNldCk7CiAgICAgICAgICAgICRvZmZzZXQgPSAkZWxlbWVudFsyXTsKICAgICAgICAgICAgLy8gZGVjb2RlIHN0cmVhbSB1c2luZyBzdHJlYW0ncyBkaWN0aW9uYXJ5IGluZm9ybWF0aW9uCiAgICAgICAgICAgIGlmICgkZGVjb2RpbmcgJiYgKCdzdHJlYW0nID09PSAkZWxlbWVudFswXSkgJiYgKGlzc2V0KCRvYmpDb250ZW50QXJyWygkaSAtIDEpXVswXSkpICYmICgnPDwnID09PSAkb2JqQ29udGVudEFyclsoJGkgLSAxKV1bMF0pKSB7CiAgICAgICAgICAgICAgICAkZWxlbWVudFszXSA9ICR0aGlzLT5kZWNvZGVTdHJlYW0oJHBkZkRhdGEsICR4cmVmLCAkb2JqQ29udGVudEFyclsoJGkgLSAxKV1bMV0sICRlbGVtZW50WzFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb2JqQ29udGVudEFyclskaV0gPSAkZWxlbWVudDsKICAgICAgICAgICAgKyskaTsKICAgICAgICB9IHdoaWxlICgoJ2VuZG9iaicgIT09ICRlbGVtZW50WzBdKSAmJiAoJG9mZnNldCAhPT0gJG9sZE9mZnNldCkpOwogICAgICAgIC8vIHJlbW92ZSBjbG9zaW5nIGRlbGltaXRlcgogICAgICAgIGFycmF5X3BvcCgkb2JqQ29udGVudEFycik7CgogICAgICAgIC8qCiAgICAgICAgICogcmV0dXJuIHJhdyBvYmplY3QgY29udGVudAogICAgICAgICAqLwogICAgICAgIHJldHVybiAkb2JqQ29udGVudEFycjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY29udGVudCBvZiBvYmplY3QsIHJlc29sdmluZyBpbmRpcmVjdCBvYmplY3QgcmVmZXJlbmNlIGlmIG5lY2Vzc2FyeS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwZGZEYXRhIFBERiBkYXRhCiAgICAgKiBAcGFyYW0gYXJyYXkgICRvYmogICAgIE9iamVjdCB2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgY29udGFpbmluZyBvYmplY3QgZGF0YQogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRPYmplY3RWYWwoJHBkZkRhdGEsICR4cmVmLCAkb2JqKQogICAgewogICAgICAgIGlmICgnb2JqcmVmJyA9PSAkb2JqWzBdKSB7CiAgICAgICAgICAgIC8vIHJlZmVyZW5jZSB0byBpbmRpcmVjdCBvYmplY3QKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5vYmplY3RzWyRvYmpbMV1dKSkgewogICAgICAgICAgICAgICAgLy8gdGhpcyBvYmplY3QgaGFzIGJlZW4gYWxyZWFkeSBwYXJzZWQKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+b2JqZWN0c1skb2JqWzFdXTsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR4cmVmWyRvYmpbMV1dKSkgewogICAgICAgICAgICAgICAgLy8gcGFyc2UgbmV3IG9iamVjdAogICAgICAgICAgICAgICAgJHRoaXMtPm9iamVjdHNbJG9ialsxXV0gPSAkdGhpcy0+Z2V0SW5kaXJlY3RPYmplY3QoJHBkZkRhdGEsICR4cmVmLCAkb2JqWzFdLCAkeHJlZlskb2JqWzFdXSwgZmFsc2UpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+b2JqZWN0c1skb2JqWzFdXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgb2JqZWN0IHR5cGUsIHJhdyB2YWx1ZSBhbmQgb2Zmc2V0IHRvIG5leHQgb2JqZWN0CiAgICAgKgogICAgICogQHBhcmFtIGludCAkb2Zmc2V0IE9iamVjdCBvZmZzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IGNvbnRhaW5pbmcgb2JqZWN0IHR5cGUsIHJhdyB2YWx1ZSBhbmQgb2Zmc2V0IHRvIG5leHQgb2JqZWN0CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRSYXdPYmplY3QoJHBkZkRhdGEsICRvZmZzZXQgPSAwKQogICAgewogICAgICAgICRvYmp0eXBlID0gJyc7IC8vIG9iamVjdCB0eXBlIHRvIGJlIHJldHVybmVkCiAgICAgICAgJG9ianZhbCA9ICcnOyAvLyBvYmplY3QgdmFsdWUgdG8gYmUgcmV0dXJuZWQKCiAgICAgICAgLy8gc2tpcCBpbml0aWFsIHdoaXRlIHNwYWNlIGNoYXJzCiAgICAgICAgJG9mZnNldCArPSBzdHJzcG4oJHBkZkRhdGEsICR0aGlzLT5jb25maWctPmdldFBkZldoaXRlc3BhY2VzKCksICRvZmZzZXQpOwoKICAgICAgICAvLyBnZXQgZmlyc3QgY2hhcgogICAgICAgICRjaGFyID0gJHBkZkRhdGFbJG9mZnNldF07CiAgICAgICAgLy8gZ2V0IG9iamVjdCB0eXBlCiAgICAgICAgc3dpdGNoICgkY2hhcikgewogICAgICAgICAgICBjYXNlICclJzogIC8vIFx4MjUgUEVSQ0VOVCBTSUdOCiAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBjb21tZW50IGFuZCBzZWFyY2ggZm9yIG5leHQgdG9rZW4KICAgICAgICAgICAgICAgICAgICAkbmV4dCA9IHN0cmNzcG4oJHBkZkRhdGEsICJcclxuIiwgJG9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRuZXh0ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9ICRuZXh0OwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRSYXdPYmplY3QoJHBkZkRhdGEsICRvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJy8nOiAgLy8gXHgyRiBTT0xJRFVTCiAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAkb2JqdHlwZSA9ICRjaGFyOwogICAgICAgICAgICAgICAgICAgICsrJG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAkcHJlZ1Jlc3VsdCA9IHByZWdfbWF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICcvXihbXlx4MDBceDA5XHgwYVx4MGNceDBkXHgyMFxzXHgyOFx4MjlceDNjXHgzZVx4NWJceDVkXHg3Ylx4N2RceDJmXHgyNV0rKS8nLAogICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsIDI1NiksCiAgICAgICAgICAgICAgICAgICAgICAgICRtYXRjaGVzCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PSAkcHJlZ1Jlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAkb2JqdmFsID0gJG1hdGNoZXNbMV07IC8vIHVuZXNjYXBlZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9IFxzdHJsZW4oJG9ianZhbCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnKCc6ICAgLy8gXHgyOCBMRUZUIFBBUkVOVEhFU0lTCiAgICAgICAgICAgIGNhc2UgJyknOiAgLy8gXHgyOSBSSUdIVCBQQVJFTlRIRVNJUwogICAgICAgICAgICAgICAgICAgIC8vIGxpdGVyYWwgc3RyaW5nIG9iamVjdAogICAgICAgICAgICAgICAgICAgICRvYmp0eXBlID0gJGNoYXI7CiAgICAgICAgICAgICAgICAgICAgKyskb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICRzdHJwb3MgPSAkb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGlmICgnKCcgPT0gJGNoYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wZW5fYnJhY2tldCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkb3Blbl9icmFja2V0ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkcGRmRGF0YVskc3RycG9zXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaCA9ICRwZGZEYXRhWyRzdHJwb3NdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkY2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdcXCc6ICAvLyBSRVZFUlNFIFNPTElEVVMgKDVDaCkgKEJhY2tzbGFzaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgbmV4dCBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrJHN0cnBvczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcoJzogIC8vIExFRlQgUEFSRU5IRVNJUyAoMjhoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyskb3Blbl9icmFja2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyknOiAgLy8gUklHSFQgUEFSRU5USEVTSVMgKDI5aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tJG9wZW5fYnJhY2tldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyskc3RycG9zOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWwgPSBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsICgkc3RycG9zIC0gJG9mZnNldCAtIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCA9ICRzdHJwb3M7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnWyc6ICAgLy8gXHg1QiBMRUZUIFNRVUFSRSBCUkFDS0VUCiAgICAgICAgICAgIGNhc2UgJ10nOiAgLy8gXHg1RCBSSUdIVCBTUVVBUkUgQlJBQ0tFVAogICAgICAgICAgICAgICAgLy8gYXJyYXkgb2JqZWN0CiAgICAgICAgICAgICAgICAkb2JqdHlwZSA9ICRjaGFyOwogICAgICAgICAgICAgICAgKyskb2Zmc2V0OwogICAgICAgICAgICAgICAgaWYgKCdbJyA9PSAkY2hhcikgewogICAgICAgICAgICAgICAgICAgIC8vIGdldCBhcnJheSBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgJG9ianZhbCA9IFtdOwogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9sZE9mZnNldCA9ICRvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCBlbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50ID0gJHRoaXMtPmdldFJhd09iamVjdCgkcGRmRGF0YSwgJG9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgPSAkZWxlbWVudFsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9ianZhbFtdID0gJGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoKCddJyAhPSAkZWxlbWVudFswXSkgJiYgKCRvZmZzZXQgIT0gJG9sZE9mZnNldCkpOwogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBjbG9zaW5nIGRlbGltaXRlcgogICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkb2JqdmFsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnPCc6ICAvLyBceDNDIExFU1MtVEhBTiBTSUdOCiAgICAgICAgICAgIGNhc2UgJz4nOiAgLy8gXHgzRSBHUkVBVEVSLVRIQU4gU0lHTgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRwZGZEYXRhWygkb2Zmc2V0ICsgMSldKSAmJiAoJHBkZkRhdGFbKCRvZmZzZXQgKyAxKV0gPT0gJGNoYXIpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZGljdGlvbmFyeSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAkb2JqdHlwZSA9ICRjaGFyLiRjaGFyOwogICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gMjsKICAgICAgICAgICAgICAgICAgICBpZiAoJzwnID09ICRjaGFyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCBhcnJheSBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWwgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9sZE9mZnNldCA9ICRvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgZWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQgPSAkdGhpcy0+Z2V0UmF3T2JqZWN0KCRwZGZEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgPSAkZWxlbWVudFsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWxbXSA9ICRlbGVtZW50OwogICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgoJz4+JyAhPSAkZWxlbWVudFswXSkgJiYgKCRvZmZzZXQgIT0gJG9sZE9mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgY2xvc2luZyBkZWxpbWl0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRvYmp2YWwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gaGV4YWRlY2ltYWwgc3RyaW5nIG9iamVjdAogICAgICAgICAgICAgICAgICAgICRvYmp0eXBlID0gJGNoYXI7CiAgICAgICAgICAgICAgICAgICAgKyskb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICRwcmVnUmVzdWx0ID0gcHJlZ19tYXRjaCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvXihbMC05QS1GYS1mXHgwOVx4MGFceDBjXHgwZFx4MjBdKyk+L2lVJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cigkcGRmRGF0YSwgJG9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0Y2hlcwogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgoJzwnID09ICRjaGFyKSAmJiAxID09ICRwcmVnUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWwgPSBzdHJ0cigkbWF0Y2hlc1sxXSwgJHRoaXMtPmNvbmZpZy0+Z2V0UGRmV2hpdGVzcGFjZXMoKSwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9IFxzdHJsZW4oJG1hdGNoZXNbMF0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChmYWxzZSAhPT0gKCRlbmRwb3MgPSBzdHJwb3MoJHBkZkRhdGEsICc+JywgJG9mZnNldCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgPSAkZW5kcG9zICsgMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGlmICgnZW5kb2JqJyA9PSBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsIDYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGlyZWN0IG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAkb2JqdHlwZSA9ICdlbmRvYmonOwogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9IDY7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCdudWxsJyA9PSBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsIDQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bGwgb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp0eXBlID0gJ251bGwnOwogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWwgPSAnbnVsbCc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCd0cnVlJyA9PSBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsIDQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvb2xlYW4gdHJ1ZSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgJG9ianR5cGUgPSAnYm9vbGVhbic7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgJG9ianZhbCA9ICd0cnVlJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJ2ZhbHNlJyA9PSBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsIDUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvb2xlYW4gZmFsc2Ugb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp0eXBlID0gJ2Jvb2xlYW4nOwogICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9IDU7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWwgPSAnZmFsc2UnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgnc3RyZWFtJyA9PSBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsIDYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHN0cmVhbSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgJG9ianR5cGUgPSAnc3RyZWFtJzsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCArPSA2OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PSBwcmVnX21hdGNoKCcvXihbXHJdP1tcbl0pL2lzVScsIHN1YnN0cigkcGRmRGF0YSwgJG9mZnNldCksICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCArPSBcc3RybGVuKCRtYXRjaGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmVnUmVzdWx0ID0gcHJlZ19tYXRjaCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLyhlbmRzdHJlYW0pW1x4MDlceDBhXHgwY1x4MGRceDIwXS9pc1UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cigkcGRmRGF0YSwgJG9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFBSRUdfT0ZGU0VUX0NBUFRVUkUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA9PSAkcHJlZ1Jlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWwgPSBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsICRtYXRjaGVzWzBdWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2Zmc2V0ICs9ICRtYXRjaGVzWzFdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCdlbmRzdHJlYW0nID09IHN1YnN0cigkcGRmRGF0YSwgJG9mZnNldCwgOSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5kIHN0cmVhbSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgJG9ianR5cGUgPSAnZW5kc3RyZWFtJzsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCArPSA5OwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgxID09IHByZWdfbWF0Y2goJy9eKFswLTldKylbXHNdKyhbMC05XSspW1xzXStSL2lVJywgc3Vic3RyKCRwZGZEYXRhLCAkb2Zmc2V0LCAzMyksICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpcmVjdCBvYmplY3QgcmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp0eXBlID0gJ29ianJlZic7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gXHN0cmxlbigkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYmp2YWwgPSAoaW50KSAoJG1hdGNoZXNbMV0pLidfJy4oaW50KSAoJG1hdGNoZXNbMl0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgxID09IHByZWdfbWF0Y2goJy9eKFswLTldKylbXHNdKyhbMC05XSspW1xzXStvYmovaVUnLCBzdWJzdHIoJHBkZkRhdGEsICRvZmZzZXQsIDMzKSwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9iamVjdCBzdGFydAogICAgICAgICAgICAgICAgICAgICAgICAkb2JqdHlwZSA9ICdvYmonOwogICAgICAgICAgICAgICAgICAgICAgICAkb2JqdmFsID0gKGludCkgKCRtYXRjaGVzWzFdKS4nXycuKGludCkgKCRtYXRjaGVzWzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9mZnNldCArPSBcc3RybGVuKCRtYXRjaGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoKCRudW1sZW4gPSBzdHJzcG4oJHBkZkRhdGEsICcrLS4wMTIzNDU2Nzg5JywgJG9mZnNldCkpID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1lcmljIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAkb2JqdHlwZSA9ICdudW1lcmljJzsKICAgICAgICAgICAgICAgICAgICAgICAgJG9ianZhbCA9IHN1YnN0cigkcGRmRGF0YSwgJG9mZnNldCwgJG51bWxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgKz0gJG51bWxlbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRvYmp0eXBlLCAkb2JqdmFsLCAkb2Zmc2V0XTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBDcm9zcy1SZWZlcmVuY2UgKHhyZWYpIHRhYmxlIGFuZCB0cmFpbGVyIGRhdGEgZnJvbSBQREYgZG9jdW1lbnQgZGF0YS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwZGZEYXRhCiAgICAgKiBAcGFyYW0gaW50ICAgICRvZmZzZXQgIHhyZWYgb2Zmc2V0IChpZiBrbm93KQogICAgICogQHBhcmFtIGFycmF5ICAkeHJlZiAgICBwcmV2aW91cyB4cmVmIGFycmF5IChpZiBhbnkpCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBjb250YWluaW5nIHhyZWYgYW5kIHRyYWlsZXIgZGF0YQogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIGl0IHdhcyB1bmFibGUgdG8gZmluZCBzdGFydHhyZWYKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIGl0IHdhcyB1bmFibGUgdG8gZmluZCB4cmVmCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRYcmVmRGF0YSgkcGRmRGF0YSwgJG9mZnNldCA9IDAsICR4cmVmID0gW10pCiAgICB7CiAgICAgICAgJHN0YXJ0eHJlZlByZWcgPSBwcmVnX21hdGNoKAogICAgICAgICAgICAnL1tcclxuXXN0YXJ0eHJlZltcc10qW1xyXG5dKyhbMC05XSspW1xzXSpbXHJcbl0rJSVFT0YvaScsCiAgICAgICAgICAgICRwZGZEYXRhLAogICAgICAgICAgICAkbWF0Y2hlcywKICAgICAgICAgICAgXFBSRUdfT0ZGU0VUX0NBUFRVUkUsCiAgICAgICAgICAgICRvZmZzZXQKICAgICAgICApOwoKICAgICAgICBpZiAoMCA9PSAkb2Zmc2V0KSB7CiAgICAgICAgICAgIC8vIGZpbmQgbGFzdCBzdGFydHhyZWYKICAgICAgICAgICAgJHByZWdSZXN1bHQgPSBwcmVnX21hdGNoX2FsbCgKICAgICAgICAgICAgICAgICcvW1xyXG5dc3RhcnR4cmVmW1xzXSpbXHJcbl0rKFswLTldKylbXHNdKltcclxuXSslJUVPRi9pJywKICAgICAgICAgICAgICAgICRwZGZEYXRhLCAkbWF0Y2hlcywKICAgICAgICAgICAgICAgIFxQUkVHX1NFVF9PUkRFUiwKICAgICAgICAgICAgICAgICRvZmZzZXQKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKDAgPT0gJHByZWdSZXN1bHQpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1VuYWJsZSB0byBmaW5kIHN0YXJ0eHJlZicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtYXRjaGVzID0gYXJyYXlfcG9wKCRtYXRjaGVzKTsKICAgICAgICAgICAgJHN0YXJ0eHJlZiA9ICRtYXRjaGVzWzFdOwogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJHBkZkRhdGEsICd4cmVmJywgJG9mZnNldCkgPT0gJG9mZnNldCkgewogICAgICAgICAgICAvLyBBbHJlYWR5IHBvaW50aW5nIGF0IHRoZSB4cmVmIHRhYmxlCiAgICAgICAgICAgICRzdGFydHhyZWYgPSAkb2Zmc2V0OwogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvKFswLTldK1tcc11bMC05XStbXHNdb2JqKS9pJywgJHBkZkRhdGEsICRtYXRjaGVzLCBcUFJFR19PRkZTRVRfQ0FQVFVSRSwgJG9mZnNldCkpIHsKICAgICAgICAgICAgLy8gQ3Jvc3MtUmVmZXJlbmNlIFN0cmVhbSBvYmplY3QKICAgICAgICAgICAgJHN0YXJ0eHJlZiA9ICRvZmZzZXQ7CiAgICAgICAgfSBlbHNlaWYgKCRzdGFydHhyZWZQcmVnKSB7CiAgICAgICAgICAgIC8vIHN0YXJ0eHJlZiBmb3VuZAogICAgICAgICAgICAkc3RhcnR4cmVmID0gJG1hdGNoZXNbMV1bMF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5hYmxlIHRvIGZpbmQgc3RhcnR4cmVmJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHN0YXJ0eHJlZiA+IFxzdHJsZW4oJHBkZkRhdGEpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1VuYWJsZSB0byBmaW5kIHhyZWYgKFBERiBjb3JydXB0ZWQ/KScpOwogICAgICAgIH0KCiAgICAgICAgLy8gY2hlY2sgeHJlZiBwb3NpdGlvbgogICAgICAgIGlmIChzdHJwb3MoJHBkZkRhdGEsICd4cmVmJywgJHN0YXJ0eHJlZikgPT0gJHN0YXJ0eHJlZikgewogICAgICAgICAgICAvLyBDcm9zcy1SZWZlcmVuY2UKICAgICAgICAgICAgJHhyZWYgPSAkdGhpcy0+ZGVjb2RlWHJlZigkcGRmRGF0YSwgJHN0YXJ0eHJlZiwgJHhyZWYpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIENyb3NzLVJlZmVyZW5jZSBTdHJlYW0KICAgICAgICAgICAgJHhyZWYgPSAkdGhpcy0+ZGVjb2RlWHJlZlN0cmVhbSgkcGRmRGF0YSwgJHN0YXJ0eHJlZiwgJHhyZWYpOwogICAgICAgIH0KICAgICAgICBpZiAoZW1wdHkoJHhyZWYpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1VuYWJsZSB0byBmaW5kIHhyZWYnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkeHJlZjsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyBQREYgZGF0YSBhbmQgcmV0dXJucyBleHRyYWN0ZWQgZGF0YSBhcyBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhIFBERiBkYXRhIHRvIHBhcnNlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBhcnJheSBvZiBwYXJzZWQgUERGIGRvY3VtZW50IG9iamVjdHMKICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbiBpZiBlbXB0eSBQREYgZGF0YSBnaXZlbgogICAgICogQHRocm93cyBFeGNlcHRpb24gaWYgUERGIGRhdGEgbWlzc2luZyAlUERGIGhlYWRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VEYXRhKCRkYXRhKQogICAgewogICAgICAgIGlmIChlbXB0eSgkZGF0YSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignRW1wdHkgUERGIGRhdGEgZ2l2ZW4uJyk7CiAgICAgICAgfQogICAgICAgIC8vIGZpbmQgdGhlIHBkZiBoZWFkZXIgc3RhcnRpbmcgcG9zaXRpb24KICAgICAgICBpZiAoZmFsc2UgPT09ICgkdHJpbXBvcyA9IHN0cnBvcygkZGF0YSwgJyVQREYtJykpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgUERGIGRhdGE6IG1pc3NpbmcgJVBERiBoZWFkZXIuJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgUERGIGNvbnRlbnQgc3RyaW5nCiAgICAgICAgJHBkZkRhdGEgPSBzdWJzdHIoJGRhdGEsICR0cmltcG9zKTsKCiAgICAgICAgLy8gZ2V0IHhyZWYgYW5kIHRyYWlsZXIgZGF0YQogICAgICAgICR4cmVmID0gJHRoaXMtPmdldFhyZWZEYXRhKCRwZGZEYXRhKTsKCiAgICAgICAgLy8gcGFyc2UgYWxsIGRvY3VtZW50IG9iamVjdHMKICAgICAgICAkb2JqZWN0cyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR4cmVmWyd4cmVmJ10gYXMgJG9iaiA9PiAkb2Zmc2V0KSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJG9iamVjdHNbJG9ial0pICYmICgkb2Zmc2V0ID4gMCkpIHsKICAgICAgICAgICAgICAgIC8vIGRlY29kZSBvYmplY3RzIHdpdGggcG9zaXRpdmUgb2Zmc2V0CiAgICAgICAgICAgICAgICAkb2JqZWN0c1skb2JqXSA9ICR0aGlzLT5nZXRJbmRpcmVjdE9iamVjdCgkcGRmRGF0YSwgJHhyZWYsICRvYmosICRvZmZzZXQsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyR4cmVmLCAkb2JqZWN0c107CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/XObject/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/XObject/Form.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcWE9iamVjdDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXEhlYWRlcjsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcUGFnZTsKdXNlIFNtYWxvdFxQZGZQYXJzZXJcUERGT2JqZWN0OwoKLyoqCiAqIENsYXNzIEZvcm0KICovCmNsYXNzIEZvcm0gZXh0ZW5kcyBQYWdlCnsKICAgIC8qKgogICAgICogQHBhcmFtIFBhZ2UgJHBhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGV4dChQYWdlICRwYWdlID0gbnVsbCkKICAgIHsKICAgICAgICAkaGVhZGVyID0gbmV3IEhlYWRlcihbXSwgJHRoaXMtPmRvY3VtZW50KTsKICAgICAgICAkY29udGVudHMgPSBuZXcgUERGT2JqZWN0KCR0aGlzLT5kb2N1bWVudCwgJGhlYWRlciwgJHRoaXMtPmNvbnRlbnQsICR0aGlzLT5jb25maWcpOwoKICAgICAgICByZXR1cm4gJGNvbnRlbnRzLT5nZXRUZXh0KCR0aGlzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/src/Smalot/PdfParser/XObject/Image.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBAZmlsZQogKiAgICAgICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUGRmUGFyc2VyIGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgIFPDqWJhc3RpZW4gTUFMT1QgPHNlYmFzdGllbkBtYWxvdC5mcj4KICogQGRhdGUgICAgMjAxNy0wMS0wMwogKgogKiBAbGljZW5zZSBMR1BMdjMKICogQHVybCAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zbWFsb3QvcGRmcGFyc2VyPgogKgogKiAgUGRmUGFyc2VyIGlzIGEgcGRmIGxpYnJhcnkgd3JpdHRlbiBpbiBQSFAsIGV4dHJhY3Rpb24gb3JpZW50ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMTcgLSBTw6liYXN0aWVuIE1BTE9UIDxzZWJhc3RpZW5AbWFsb3QuZnI+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KICogIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LnBkZnBhcnNlci5vcmcvc2l0ZXMvZGVmYXVsdC9MSUNFTlNFLnR4dD4uCiAqLwoKbmFtZXNwYWNlIFNtYWxvdFxQZGZQYXJzZXJcWE9iamVjdDsKCnVzZSBTbWFsb3RcUGRmUGFyc2VyXFBhZ2U7CnVzZSBTbWFsb3RcUGRmUGFyc2VyXFBERk9iamVjdDsKCi8qKgogKiBDbGFzcyBJbWFnZQogKi8KY2xhc3MgSW1hZ2UgZXh0ZW5kcyBQREZPYmplY3QKewogICAgLyoqCiAgICAgKiBAcGFyYW0gUGFnZSAkcGFnZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUZXh0KFBhZ2UgJHBhZ2UgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRmbGRzID0gIgogICAgIGRvY3VtZW50c2VhcmNoX2lkIEkgS0VZLAoJIGRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X2lkIEksCgkgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSBDKDI1NSksCgkgbmFtZSBDKDI1NSksCgkgY29udGVudCBYLAoJIGxvY2F0aW9uIEMoMjU1KSwKCSBhdXRob3IgQygyNTUpLAoJIGRvY3VtZW50X2RhdGUgIiAuIENNU19BRE9EQl9EVCAuICIKIjsKCiR0YWJvcHRhcnJheSA9IGFycmF5KCAnbXlzcWwnID0+ICdUWVBFPU15SVNBTScgKTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaCIsCgkJCQkgICAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2RvY3VtZW50c2VhcmNoX3NlcSIpOwoKJGZsZHMgPSAiCglkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCBJIEtFWSwKCWRvY3VtZW50c2VhcmNoX2NhdGVnb3J5X25hbWUgQygyNTUpLAoJcGFyZW50X2lkIEksCgloaWVyYXJjaHkgQygyNTUpLAoJbG9uZ19uYW1lIFgsCgljcmVhdGVfZGF0ZSBULAoJbW9kaWZpZWRfZGF0ZSBUCiI7CgokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyIsIAoJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllc19zZXEiKTsKCi8vIGNyZWF0ZSBhIHBlcm1pc3Npb24KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1VzZSBEb2N1bWVudCBTZWFyY2gnLCAnVXNlIERvY3VtZW50IFNlYXJjaCcpOwoKLy8gY3JlYXRlIGEgcHJlZmVyZW5jZQokdGhpcy0+U2V0UHJlZmVyZW5jZSgiYWxsb3dfYWRkIiwgdHJ1ZSk7CgojIE90aGVyIHByZWZlcmVuY2VzCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd2VkX3VwbG9hZF90eXBlcycsJ3BkZixkb2MsZG9jeCxydGYsdHh0Jyk7CgojIFNldHVwIEdlbmVyYWwgY2F0ZWdvcnkKJGNhdGlkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzX3NlcSIpOwokcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9kb2N1bWVudHNlYXJjaF9jYXRlZ29yaWVzIChkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9pZCwgZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcnlfbmFtZSwgcGFyZW50X2lkLCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSkgVkFMVUVTICg/LD8sPywnLiRkYi0+REJUaW1lU3RhbXAodGltZSgpKS4nLCcuJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLicpJzsKJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGlkLCAnR2VuZXJhbCcsIC0xKSk7Cg0KIyBTZXR1cCBkZXRhaWwgdGVtcGxhdGUNCiRmbiA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuDQogICd0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2RvY3VtZW50c2VhcmNoX2xpc3QudHBsJzsNCmlmKCBmaWxlX2V4aXN0cyggJGZuICkgKSB7DQogICAgJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfZGV0YWlsX3RlbXBsYXRlX2NvbnRlbnRzJywkdGVtcGxhdGUpOw0KICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZGV0YWlsU2FtcGxlJywkdGVtcGxhdGUpOw0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjdXJyZW50X2RldGFpbF90ZW1wbGF0ZScsJ0RlZmF1bHQnKTsNCn0KCiMgSW5kZXhlcwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoY21zX2RiX3ByZWZpeCgpLidkb2N1bWVudF9wb3N0ZGF0ZScsIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2RvY3VtZW50c2VhcmNoJywgJ2RvY3VtZW50X2RhdGUnKTsKCi8vIHJlZ2lzdGVyIGFuIGV2ZW50IHRoYXQgdGhlIERvY3VtZW50IFNlYXJjaCB3aWxsIGlzc3VlLiBPdGhlciBtb2R1bGVzCi8vIG9yIHVzZXIgdGFncyB3aWxsIGJlIGFibGUgdG8gc3Vic2NyaWJlIHRvIHRoaXMgZXZlbnQsIGFuZCB0cmlnZ2VyCi8vIG90aGVyIGFjdGlvbnMgd2hlbiBpdCBnZXRzIGNhbGxlZC4KJHRoaXMtPkNyZWF0ZUV2ZW50KCAnT25Eb2N1bWVudFNlYXJjaFByZWZlcmVuY2VDaGFuZ2UnICk7CgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAKCSAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgCgkgICAgICAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkgKTsKCgkgICAgICAKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaCIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJG15ZGlyZWN0b3J5ID0gJy4uL3VwbG9hZHMvZG9jdW1lbnRzZWFyY2gnOwoKcmVjdXJzaXZlX3JlbW92ZV9kaXJlY3RvcnkoJG15ZGlyZWN0b3J5KTsKCgpmdW5jdGlvbiByZWN1cnNpdmVfcmVtb3ZlX2RpcmVjdG9yeSgkZGlyZWN0b3J5LCAkZW1wdHk9RkFMU0UpCnsKICAgIC8vIGlmIHRoZSBwYXRoIGhhcyBhIHNsYXNoIGF0IHRoZSBlbmQgd2UgcmVtb3ZlIGl0IGhlcmUKICAgIGlmKHN1YnN0cigkZGlyZWN0b3J5LC0xKSA9PSAnLycpCiAgICB7CiAgICAgICAgJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LDAsLTEpOwogICAgfQoKICAgIC8vIGlmIHRoZSBwYXRoIGlzIG5vdCB2YWxpZCBvciBpcyBub3QgYSBkaXJlY3RvcnkgLi4uCiAgICBpZighZmlsZV9leGlzdHMoJGRpcmVjdG9yeSkgfHwgIWlzX2RpcigkZGlyZWN0b3J5KSkKICAgIHsKICAgICAgICAvLyAuLi4gd2UgcmV0dXJuIGZhbHNlIGFuZCBleGl0IHRoZSBmdW5jdGlvbgogICAgICAgIHJldHVybiBGQUxTRTsKCiAgICAvLyAuLi4gaWYgdGhlIHBhdGggaXMgbm90IHJlYWRhYmxlCiAgICB9ZWxzZWlmKCFpc19yZWFkYWJsZSgkZGlyZWN0b3J5KSkKICAgIHsKICAgICAgICAvLyAuLi4gd2UgcmV0dXJuIGZhbHNlIGFuZCBleGl0IHRoZSBmdW5jdGlvbgogICAgICAgIHJldHVybiBGQUxTRTsKCiAgICAvLyAuLi4gZWxzZSBpZiB0aGUgcGF0aCBpcyByZWFkYWJsZQogICAgfWVsc2V7CgogICAgICAgIC8vIHdlIG9wZW4gdGhlIGRpcmVjdG9yeQogICAgICAgICRoYW5kbGUgPSBvcGVuZGlyKCRkaXJlY3RvcnkpOwoKICAgICAgICAvLyBhbmQgc2NhbiB0aHJvdWdoIHRoZSBpdGVtcyBpbnNpZGUKICAgICAgICB3aGlsZSAoRkFMU0UgIT09ICgkaXRlbSA9IHJlYWRkaXIoJGhhbmRsZSkpKQogICAgICAgIHsKICAgICAgICAgICAgLy8gaWYgdGhlIGZpbGVwb2ludGVyIGlzIG5vdCB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAgICAgICAgLy8gb3IgdGhlIHBhcmVudCBkaXJlY3RvcnkKICAgICAgICAgICAgaWYoJGl0ZW0gIT0gJy4nICYmICRpdGVtICE9ICcuLicpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIHdlIGJ1aWxkIHRoZSBuZXcgcGF0aCB0byBkZWxldGUKICAgICAgICAgICAgICAgICRwYXRoID0gJGRpcmVjdG9yeS4nLycuJGl0ZW07CgogICAgICAgICAgICAgICAgLy8gaWYgdGhlIG5ldyBwYXRoIGlzIGEgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICBpZihpc19kaXIoJHBhdGgpKSAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgbmV3IHBhdGgKICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmVfcmVtb3ZlX2RpcmVjdG9yeSgkcGF0aCk7CgogICAgICAgICAgICAgICAgLy8gaWYgdGhlIG5ldyBwYXRoIGlzIGEgZmlsZQogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgLy8gd2UgcmVtb3ZlIHRoZSBmaWxlCiAgICAgICAgICAgICAgICAgICAgdW5saW5rKCRwYXRoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBjbG9zZSB0aGUgZGlyZWN0b3J5CiAgICAgICAgY2xvc2VkaXIoJGhhbmRsZSk7CgogICAgICAgIC8vIGlmIHRoZSBvcHRpb24gdG8gZW1wdHkgaXMgbm90IHNldCB0byB0cnVlCiAgICAgICAgaWYoJGVtcHR5ID09IEZBTFNFKQogICAgICAgIHsKICAgICAgICAgICAgLy8gdHJ5IHRvIGRlbGV0ZSB0aGUgbm93IGVtcHR5IGRpcmVjdG9yeQogICAgICAgICAgICBpZighcm1kaXIoJGRpcmVjdG9yeSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIHJldHVybiBmYWxzZSBpZiBub3QgcG9zc2libGUKICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyByZXR1cm4gc3VjY2VzcwogICAgICAgIHJldHVybiBUUlVFOwogICAgfQp9CgovLyByZW1vdmUgdGhlIHNlcXVlbmNlcwokZGItPkRyb3BTZXF1ZW5jZSggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfc2VxIiApOwokZGItPkRyb3BTZXF1ZW5jZSggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfY2F0ZWdvcmllc19zZXEiICk7CgovLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdVc2UgRG9jdW1lbnQgU2VhcmNoJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdTZXQgRG9jdW1lbnQgU2VhcmNoIFByZWZzJyk7CgovLyByZW1vdmUgdGhlIHByZWZlcmVuY2UKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoImFsbG93X2FkZCIpOwoKLy8gcmVtb3ZlIHRoZSBldmVudAokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkRvY3VtZW50U2VhcmNoUHJlZmVyZW5jZUNoYW5nZScgKTsKCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IERvY3VtZW50U2VhcmNoIChjKSAyMDEzIGJ5IE9saXZlciBTZWRkb24gCiMgICAgICAgICAob2xpdmVyQHRocmVlZm9sZC5jby51aykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSBQREYgYW5kIFdvcmQgZG9jdW1lbnQKIyAgY29udGVudCBzZWFyY2hhYmlsaXR5LgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCnN3aXRjaCgkY3VycmVudF92ZXJzaW9uKSB7CiAgLy8gd2UgYXJlIG5vdyAxLjAgYW5kIHdhbnQgdG8gdXBncmFkZSB0byBsYXRlc3QKIGNhc2UgIjEuMCI6CiBjYXNlICIxLjEiOgogY2FzZSAiMS4yIjoKCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2giLCAiZG9jdW1lbnRfZGF0ZSAiIC4gQ01TX0FET0RCX0RUIC4iIik7CgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkkY3VycmVudF92ZXJzaW9uID0gIjEuMyI7CiBjYXNlICIxLjMiOgogY2FzZSAiMS4zLjEiOgoJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9kb2N1bWVudHNlYXJjaCIsICJkb2N1bWVudHNlYXJjaF9jYXRlZ29yeV9uYW1lIEMoMjU1KSIpOwoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCSRmbiA9IGRpcm5hbWUoX19GSUxFX18pLkRJUkVDVE9SWV9TRVBBUkFUT1IuDQogIAkndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidkb2N1bWVudHNlYXJjaF9saXN0LnRwbCc7DQoJaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApIHsNCiAgICAJJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQogICAgCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2RldGFpbF90ZW1wbGF0ZV9jb250ZW50cycsJHRlbXBsYXRlKTsNCiAgICAJJHRoaXMtPlNldFRlbXBsYXRlKCdkZXRhaWxTYW1wbGUnLCR0ZW1wbGF0ZSk7DQogICAgCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjdXJyZW50X2RldGFpbF90ZW1wbGF0ZScsJ0RlZmF1bHQnKTsNCgl9CgkkY3VycmVudF92ZXJzaW9uID0gIjEuNCI7CiBjYXNlICIxLjQiOgogY2FzZSAiMS40LjEiOgogY2FzZSAiMS40LjIiOgogY2FzZSAiMS40LjMiOgoJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZG9jdW1lbnRzZWFyY2hfc3RhdHVzIiApOwoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJJGRiLT5Ecm9wU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2RvY3VtZW50c2VhcmNoX3N0YXR1c19zZXEiICk7CgkkY3VycmVudF92ZXJzaW9uID0gIjEuNC40IjsKfQoKLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgCgkgICAgICAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksIAoJICAgICAgJHRoaXMtPkxhbmcoJ3VwZ3JhZGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKLy9ub3RlOiBtb2R1bGUgYXBpIGhhbmRsZXMgc2VuZGluZyBnZW5lcmljIGV2ZW50IG9mIG1vZHVsZSB1cGdyYWRlZCBoZXJlCj8+]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJEb2N1bWVudFNlYXJjaCIKdmVyc2lvbiA9ICIxLjQuNiIKYXV0aG9yID0gIm9saXZlcnNlZGRvbiIKYXV0aG9yZW1haWwgPSAib2xpdmVyQHRocmVlZm9sZC5jby51ayIKbWluY21zdmVyc2lvbiA9IDEuMTEKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/add_edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRlcnJvcil9CiAgPGgzPjxmb250IGNvbG9yPSJyZWQiPnskZXJyb3J9PC9mb250PjwvaDM+CntlbHNlfQogIHtpZiBpc3NldCgkbWVzc2FnZSl9CiAgICA8aDM+eyRtZXNzYWdlfTwvaDM+CiAgey9pZn0Key9pZn0KeyRzdGFydF9mb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRjYXRlZ29yeXRleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRjYXRlZ29yeX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfbmFtZX08L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICA8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfYXV0aG9yfTwvcD4KICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hdXRob3J9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAge2lmICRsb2NhdGlvbiAhPSAnJ30KICAgICAgPHA+Jm5ic3A7PC9wPgogICAgICA8cD48c3BhbiBjbGFzcz0icGFnZXRleHQiPkN1cnJlbnQgZmlsZTo8L3NwYW4+IHskbG9jYXRpb259PC9wPgogICB7L2lmfQo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAge2lmICRsb2NhdGlvbiAhPSAnJ308cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfbG9jYXRpb25maWxlZWRpdH08L3A+e2Vsc2V9PHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX2xvY2F0aW9uZmlsZX08L3A+ey9pZn0KICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9sb2NhdGlvbmZpbGV9PC9wPgogICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2xvY2F0aW9ufTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskcG9zdGRhdGV0ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHBvc3RkYXRlcHJlZml4IHRpbWU9JHBvc3RkYXRlIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxNSJ9IHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kcG9zdGRhdGVwcmVmaXggdGltZT0kcG9zdGRhdGV9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48L3NwYW4+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY2FuY2VsfXskc3VibWl0fTwvcD4KPC9kaXY+CnskZW5kX2Zvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRlcnJvcil9Cgk8aDM+PGZvbnQgY29sb3I9InJlZCI+eyRlcnJvcn08L2ZvbnQ+PC9oMz4Ke2Vsc2V9Cgl7aWYgaXNzZXQoJG1lc3NhZ2UpfQogICAgCTxoMz57JG1lc3NhZ2V9PC9oMz4KCXsvaWZ9CnsvaWZ9Cgp7bGl0ZXJhbH0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwpmdW5jdGlvbiBzZWxlY3RBbGwoKSB7CiAgY2hlY2tib3hlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogIGZvciAoaT0wOyBpPGNoZWNrYm94ZXMubGVuZ3RoIDsgaSsrKQogICAgewogICAgICBpZiAoY2hlY2tib3hlc1tpXS50eXBlID09ICJjaGVja2JveCIpIGNoZWNrYm94ZXNbaV0uY2hlY2tlZD0hY2hlY2tib3hlc1tpXS5jaGVja2VkOwogICAgfQp9CiQoZnVuY3Rpb24oKSB7CgkkKCIjY2F0ZWdvcnkiKS5wcmVwZW5kKCI8b3B0aW9uIHZhbHVlPScnPnsvbGl0ZXJhbH17JGZpbHRlcmFsbHRleHR9e2xpdGVyYWx9PC9vcHRpb24+IikudmFsKCcnKTsKCSQoIiNjYXRlZ29yeSIpLmNoYW5nZShmdW5jdGlvbiAoKSB7CgkJc3ggPSAkKCJpbnB1dFtuYW1lPV9zeF9dIikudmFsKCk7CgkJcz0nL2FkbWluL21vZHVsZWludGVyZmFjZS5waHA/bW9kdWxlPURvY3VtZW50U2VhcmNoJl9zeF89JytzeDsKCQljYXQ9ICQoIiNjYXRlZ29yeSBvcHRpb246c2VsZWN0ZWQiKS52YWwoKTsKCQlkPSd7L2xpdGVyYWx9eyRhY3Rpb25pZH17bGl0ZXJhbH1jYXRlZ29yeT0nK2NhdDsKIAkJcyA9IHMrJyAjcmVjb3Jkcyc7CgkJJCgiI3JlY29yZHMiKS5sb2FkKHMsIGQsIGZ1bmN0aW9uKCl7CgkJfSk7Cgl9KTsKfSk7Ci8vXV0+Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9CnskdGFic19zdGFydH0KCXskc3RhcnRfZ2VuZXJhbF90YWJ9CgkJeyR3ZWxjb21lX3RleHR9CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmaWx0ZXJ0ZXh0fSB7JGNhdGVnb3J5fTwvcD4KCQl7JGZvcm1zdGFydH0KCQk8ZGl2IGlkPSJyZWNvcmRzIj4KCQkJe2lmIGlzc2V0KCRtb2R1bGVfbWVzc2FnZSl9PGgyPnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDI+ey9pZn0KCQkJPGgzPnskdGl0bGVfbnVtX3JlY29yZHN9PC9oMz4KCQl7aWYgJGFkZCAhPSAnJ308ZGl2PnskYWRkfTwvZGl2PnsvaWZ9CiAgICAgCQk8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJCQkJPHRoZWFkPgogICAgICAgCQkJCTx0cj4KICAgICAgICAgCQkJCTx0aD57JGlkdGV4dH08L3RoPgogICAgICAgICAJCQkJPHRoPnskbmFtZXRleHR9PC90aD4KICAgICAgICAgCQkJCTx0aD57JGZpbGV0ZXh0fTwvdGg+CgkJCQkJCTx0aD57JGNhdGVnb3J5dGV4dH08L3RoPgogICAgICAgICAJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCQkJPCEtLTx0aCBjbGFzcz0icGFnZWljb24iPjxhIGhyZWY9ImphdmFzY3JpcHQ6c2VsZWN0QWxsKCk7Ij57JHNlbGVjdHRleHR9PC9hPjwvdGg+LS0+CiAgICAgICAJCQkJPC90cj4KCQkJCTwvdGhlYWQ+CgkJCQk8dGJvZHk+CgkJCQl7Zm9yZWFjaCBmcm9tPSRyZWNvcmRzIGl0ZW09ZW50cnl9CiAgICAgICAJCQkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgICAgICAJCQkJPHRkPnskZW50cnktPmlkfTwvdGQ+CiAgICAgICAgIAkJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgogICAgICAgICAJCQkJPHRkPnskZW50cnktPmxvY2F0aW9ufTwvdGQ+CgkJCQkJCTx0ZD57JGVudHJ5LT5jYXRlZ29yeX08L3RkPgoJCQkJCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCQkJCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCQkJCQkJPCEtLTx0ZD57JGVudHJ5LT5zZWxlY3R9PC90ZD4tLT4KICAgICAgIAkJCQk8L3RyPgoJCQkJey9mb3JlYWNofQoJCQkJPC90Ym9keT4KICAgICAJCTwvdGFibGU+CgkJPC9kaXY+CgkJe2lmICRhZGQgIT0gJyd9PGRpdj57JGFkZH08L2Rpdj57L2lmfQoJCXtpZiAkcmVjb3JkY291bnQgPiAwfQogIAkJCTxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+CiAgICAJCQkJe2lmIGlzc2V0KCRzdWJtaXRfbWFzc2RlbGV0ZSl9eyRzdWJtaXRfbWFzc2RlbGV0ZX17L2lmfQogIAkJCTwvZGl2PgoJCQk8ZGl2IHN0eWxlPSJjbGVhcjpib3RoIj48L2Rpdj4KCQl7L2lmfQoJCXskZm9ybWVuZH0KCXskdGFiX2VuZH0KeyR0YWJzX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/categorylist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPnskY2F0ZWdvcnl0ZXh0fTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCQk8L3RyPgp7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/documentsearch_list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtb2R1bGVfbWVzc2FnZSl9PGgyPnskbW9kdWxlX21lc3NhZ2V8ZXNjYXBlfTwvaDI+ey9pZn0Ke2lmICRjYXRlZ29yeV9uYW1lICE9ICcnfQoJPHAgY2xhc3M9InRpdGxlIj57JGNhdGVnb3J5X25hbWV9PC9wPgp7L2lmfQ0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCXtpZiAkY2F0ZWdvcnlfbmFtZSAhPSAnJ30KCQl7aWYgJGVudHJ5LT5jYXRlZ29yeSA9PSAkY2F0ZWdvcnlfbmFtZX0NCgkJCTxkaXYgY2xhc3M9ImRvY3VtZW50TGlzdCI+CgkJCQl7aWYgJGVudHJ5LT5kb2N1bWVudGljb24gbmUgJyd9PHNwYW4gY2xhc3M9ImRvY3VtZW50SWNvbiI+eyRlbnRyeS0+ZG9jdW1lbnRpY29ufTwvc3Bhbj57L2lmfQoJCQkJe2lmICRlbnRyeS0+dGl0bGUgbmUgJyd9PHNwYW4gY2xhc3M9ImRvY3VtZW50VGl0bGUiPnskZW50cnktPnRpdGxlfTwvc3Bhbj57L2lmfQoJCQkJe2lmICRlbnRyeS0+YXV0aG9yIG5lICcnfTxzcGFuIGNsYXNzPSJkb2N1bWVudEF1dGhvciI+eyRlbnRyeS0+YXV0aG9yfTwvc3Bhbj57L2lmfQoJCQkJe2lmICRlbnRyeS0+ZG9jdW1lbnRkYXRlIG5lICcnfTxzcGFuIGNsYXNzPSJkb2N1bWVudERhdGUiPnskZW50cnktPmRvY3VtZW50ZGF0ZXxkYXRlX2Zvcm1hdH08L3NwYW4+ey9pZn0KCQkJCXtpZiAkZW50cnktPmxvY2F0aW9uIG5lICcnfTxzcGFuIGNsYXNzPSJkb2N1bWVudExpbmsiPjxhIGhyZWY9InVwbG9hZHMvZG9jdW1lbnRzZWFyY2gvaWR7JGVudHJ5LT5pZH0veyRlbnRyeS0+bG9jYXRpb259IiB0aXRsZT0iTGluayB0byB0aGUgeyRlbnRyeS0+bmFtZX0gZG9jdW1lbnQiPkRvd25sb2FkICZyYXF1bzs8L2E+PC9zcGFuPnsvaWZ9CgkJCTwvZGl2PgoJCXsvaWZ9Cgl7ZWxzZX0NCgkJPGRpdiBjbGFzcz0iZG9jdW1lbnRMaXN0Ij4KCQkJe2lmICRlbnRyeS0+ZG9jdW1lbnRpY29uIG5lICcnfTxzcGFuIGNsYXNzPSJkb2N1bWVudEljb24iPnskZW50cnktPmRvY3VtZW50aWNvbn08L3NwYW4+ey9pZn0KCQkJe2lmICRlbnRyeS0+dGl0bGUgbmUgJyd9PHNwYW4gY2xhc3M9ImRvY3VtZW50VGl0bGUiPnskZW50cnktPnRpdGxlfTwvc3Bhbj57L2lmfQoJCQl7aWYgJGVudHJ5LT5hdXRob3IgbmUgJyd9PHNwYW4gY2xhc3M9ImRvY3VtZW50QXV0aG9yIj57JGVudHJ5LT5hdXRob3J9PC9zcGFuPnsvaWZ9CgkJCXtpZiAkZW50cnktPmRvY3VtZW50ZGF0ZSBuZSAnJ308c3BhbiBjbGFzcz0iZG9jdW1lbnREYXRlIj57JGVudHJ5LT5kb2N1bWVudGRhdGV8ZGF0ZV9mb3JtYXR9PC9zcGFuPnsvaWZ9CgkJCXtpZiAkZW50cnktPmxvY2F0aW9uIG5lICcnfTxzcGFuIGNsYXNzPSJkb2N1bWVudExpbmsiPjxhIGhyZWY9InVwbG9hZHMvZG9jdW1lbnRzZWFyY2gvaWR7JGVudHJ5LT5pZH0veyRlbnRyeS0+bG9jYXRpb259IiB0aXRsZT0iTGluayB0byB0aGUgeyRlbnRyeS0+bmFtZX0gZG9jdW1lbnQiPkRvd25sb2FkICZyYXF1bzs8L2E+PC9zcGFuPnsvaWZ9CgkJPC9kaXY+Cgl7L2lmfQ0Key9mb3JlYWNofQ==]]></data>
	</file>
	<file>
	  <filename>/templates/editcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskbmFtZXRleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0bmFtZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplates.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskdGVtcGxhdGV0ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRkZWZhdWx0X2RldGFpbF90ZW1wbGF0ZX08YnIgLz57JGRlZmF1bHR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4Ke2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9CntpZiAkcmV0dXJubGluayE9Jyd9PHA+eyRyZXR1cm5saW5rfTwvcD57L2lmfQ==]]></data>
	</file>
</module>
