[mythtv] mythweb updates for 0.8

Peter Marriott mythtv-dev@snowman.net
Tue Jan 14 15:30:18 EST 2003


--0114-2330-18-PART-BREAK
Content-Type: text/plain

Hi,

OK here is another iteration at making the CVS version of mythweb work for
the CVS version of MythTV.

Updates in this include a couple of bug fixes (that I introduced in my
previous attempt) and a little rearranging of code, and adding of more
comments to make it a little easier to maintain.

Any comments welcomed, good or bad.  

Cheers
Peter
--0114-2330-18-PART-BREAK
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="functions.php"

PD9waHAKCgkvLwoJLy8JVGhpcyBmaWxlIGlzIHBhcnQgb2YgTXl0aFdlYiwKCS8vCWEgcGhwLWJh
c2VkIGludGVyZmFjZSBpbnRvIE15dGhUVi4KCS8vCgkvLwkoYykgMjAwMiBieSBUaG9yIFNpZ3Zh
bGRhc29uIGFuZCBJc2FhYyBSaWNoYXJkcwoJLy8JTXl0aFdlYiBpcyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUKCS8vCUdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIHZlcnNpb24gMgoJLy8JKHNlZSBo
dHRwOi8vd3d3LmdudS5vcmcpCgkvLwoKCQovLwovLwlUaGlzIGZpbGUgY29udGFpbnMgYSBmZXcg
aGFuZHkgZnVuY3Rpb25zCi8vCgoKLy8KLy8JUHJpbnQgYSBxdW90ZSAodXAgb24gdGhlIGJhbm5l
cikKLy8KCmZ1bmN0aW9uIHByaW50UXVvdGUoJHRoZVF1b3RlLCAkdGhlQXV0aG9yLCAkZm9udGZh
Y2UsICRmb250c2l6ZSwgJGZvbnRjb2xvcikKewoKCXByaW50KCJcdFx0XHRcdFx0PFRBQkxFPlxu
Iik7CglwcmludCgiXHRcdFx0XHRcdFx0PFRSPlxuIik7CglwcmludCgiXHRcdFx0XHRcdFx0XHQ8
VEQ+XG4iKTsKCXByaW50KCJcdFx0XHRcdFx0XHRcdFx0PEZPTlQgRkFDRT1cIiRmb250ZmFjZVwi
IFNJWkU9XCIrMVwiIENPTE9SPVwiJGZvbnRjb2xvdXJcIj5cIjxJPiR0aGVRdW90ZVwiPC9JPjwv
Rk9OVD5cbiIpOwoJcHJpbnQoIlx0XHRcdFx0XHRcdFx0PC9URD5cbiIpOwoJcHJpbnQoIlx0XHRc
dFx0XHRcdDwvVFI+XG4iKTsKCXByaW50KCJcdFx0XHRcdFx0XHQ8VFI+XG4iKTsKCXByaW50KCJc
dFx0XHRcdFx0XHRcdDxURCBBTElHTj1cIlJJR0hUXCI+XG4iKTsKCXByaW50KCJcdFx0XHRcdFx0
XHRcdFx0PEZPTlQgRkFDRT1cIiRmb250ZmFjZVwiIFNJWkU9XCIkZm9udHNpemVcIiBDT0xPUj1c
IiRmb250Y29sb3VyXCI+JHRoZUF1dGhvcjwvRk9OVD5cbiIpOwoJcHJpbnQoIlx0XHRcdFx0XHRc
dFx0PC9URD5cbiIpOwoJcHJpbnQoIlx0XHRcdFx0XHRcdDwvVFI+XG4iKTsKCXByaW50KCJcdFx0
XHRcdFx0PC9UQUJMRT5cbiIpOwoJCn0KCi8vCi8vCVByaW50IHRoZSBkYXRlIHdpdGggYW55IG9m
ZnNldCBpbmNsdWRlZAovLwoKZnVuY3Rpb24gcHJpbnRUaGVEYXRlKCR0aW1lLCAkb2Zmc2V0LCAk
bnVtYlNsb3RzKQp7CgkkYWRqdXN0ZXIgPSByb3VuZCgzMCAqICRudW1iU2xvdHMgKiAkb2Zmc2V0
KTsKCSR0aGVZZWFyID0gc3Vic3RyKCR0aW1lLCAwLCA0KTsKCSR0aGVNb250aCA9IHN1YnN0cigk
dGltZSwgNCwgMik7IAoJJHRoZURheSA9IHN1YnN0cigkdGltZSwgNiwgMik7CgkkdGhlSG91ciA9
IHN1YnN0cigkdGltZSwgOCwgMik7CgkkdGhlTWludXRlID0gc3Vic3RyKCR0aW1lLCAxMCwgMik7
CgkKCSRzb1RoZURhdGVNdXN0QmUgPSBkYXRlKCJsIChGIGopIiwgbWt0aW1lKCR0aGVIb3VyLCAk
dGhlTWludXRlICsgYWRqdXN0ZXIsIDAsICR0aGVNb250aCwgJHRoZURheSwgJHRoZVllYXIpKTsg
CglwcmludCgiJHNvVGhlRGF0ZU11c3RCZSIpOwp9CgovLwovLwlHaXZlbiBhIHByb2dyYW0gbmFt
ZSwgc2V0IHRoZSBNeVNRTCBNeXRoVFYgZGF0YWJhc2UKLy8JdG8gcmVjb3JkIHRoYXQgcHJvZ3Jh
bSB3aGVuZXZlciBpdCdzIHNob3duLCBvciAKLy8Jd2hlbmV2ZXIgaXQgaXMgc2hvd24gb24gdGhl
IHN1cHBsaWVkIGNoYW5uZWwuCi8vCmZ1bmN0aW9uIHJlY29yZEFsd2F5cygkcHJvZ3JhbU5hbWUs
ICR0aGVDaGFubmVsKQp7CglpZihzdHJsZW4oJHByb2dyYW1OYW1lKSA+IDApIC8vIEFyZSB0aGVy
ZSBwcm9ncmFtIG5hbWVzIGFzIHNob3J0IGFzIG9uZSBjaGFyYWN0ZXI/Cgl7CgogICAgCQkvLyBD
aGVjayBpZiB0aGlzIGlzIHJlY29yZCBBbHdheXMgb24gYSBjaGFubmVsIGllIHR5cGUgPSAzCgkJ
aWYgKCR0aGVDaGFubmVsKSAKCQl7CgkJICAgIC8vCgkJICAgIC8vCUNoZWNrIHRvIHNlZSBpZiB0
eXBlID0gMyBpcyBhbHJlYWR5IGluIHRoZSBkYXRhYmFzZSBmb3IgdGhpcyBwcm9ncmFtIGFuZCB0
aXRsZSwKCQkgICAgLy8gIGlmIGl0IGlzIHdlIHdpbGwgZG8gbm90aGluZy4gIElmIGl0IGlzbid0
IHRoZW4gYWxsIG90aGVyIHR5cGVzIHdpbGwgYmUgZGVsZXRlZAoJCSAgICAvLyAgYW5kIGEgdHlw
ZSAzIHJlY29yZCBhZGRlZC4KCQkgICAgLy8JCQoJCSAgICAkYWxyZWFkeVRoZXJlUXVlcnkgPSBt
eXNxbF9xdWVyeSgic2VsZWN0IHRpdGxlIGZyb20gcmVjb3JkIHdoZXJlIHR5cGUgPSAzIGFuZCB0
aXRsZSA9IFwiJHByb2dyYW1OYW1lXCIgYW5kIGNoYW5pZCA9IFwiJHRoZUNoYW5uZWxcIiIpOwoJ
CSAgICBpZihteXNxbF9udW1fcm93cygkYWxyZWFkeVRoZXJlUXVlcnkpIDwgMSkKCQkgICAgewoJ
CQkvLwoJCQkvLwlUaGlzIHByb2dyYW0gbmFtZSBpcyBub3QgaW4gdGhlIHJlY29yZCB0YWJsZSBh
cyBhIHR5cGUgPSAzLAoJCQkvLwlzbyB3ZSBuZWVkIHRvIGFkZCBpdAoJCQkvLyAKCQkJbXlzcWxf
cXVlcnkoImRlbGV0ZSBmcm9tIHJlY29yZCB3aGVyZSB0eXBlID0gNCBhbmQgdGl0bGUgPSBcIiRw
cm9ncmFtTmFtZVwiIik7CgkJCW15c3FsX3F1ZXJ5KCJkZWxldGUgZnJvbSByZWNvcmQgd2hlcmUg
dHlwZSA9IDEgYW5kIHRpdGxlID0gXCIkcHJvZ3JhbU5hbWVcIiBhbmQgY2hhbmlkID0gXCIkdGhl
Q2hhbm5lbFwiIik7CgkJCW15c3FsX3F1ZXJ5KCJkZWxldGUgZnJvbSByZWNvcmQgd2hlcmUgdHlw
ZSA9IDIgYW5kIHRpdGxlID0gXCIkcHJvZ3JhbU5hbWVcIiBhbmQgY2hhbmlkID0gXCIkdGhlQ2hh
bm5lbFwiIik7CgkJCW15c3FsX3F1ZXJ5KCJpbnNlcnQgaW50byByZWNvcmQgKHR5cGUsdGl0bGUs
Y2hhbmlkKSB2YWx1ZXMgKDMsXCIkcHJvZ3JhbU5hbWVcIixcIiR0aGVDaGFubmVsXCIpIik7CgoJ
CQkvLwogICAgCQkJLy8JVGVsbCBteXRoZnJvbnRlbmQgdGhhdCBzb21ldGhpbmcgaGFzIGNoYW5n
ZWQKCQkJLy8KCQkJbXlzcWxfcXVlcnkoInVwZGF0ZSBzZXR0aW5ncyBzZXQgZGF0YSA9IFwieWVz
XCIgd2hlcmUgdmFsdWUgPSBcIlJlY29yZENoYW5nZWRcIiIpOwoKCQkgICAgfQoJCX0KCQllbHNl
IAoJCXsKCQkJCgkJICAgIC8vCgkJICAgIC8vCUNoZWNrIHRvIHNlZSBpZiB0eXBlID0gNCBpcyBh
bHJlYWR5IGluIHRoZSBkYXRhYmFzZSBmb3IgdGhpcyBwcm9ncmFtLAoJCSAgICAvLyAgaWYgaXQg
aXMgd2Ugd2lsbCBkbyBub3RoaW5nLiAgSWYgaXQgaXNuJ3QgdGhlbiBhbGwgb3RoZXIgdHlwZXMg
d2lsbCBiZSBkZWxldGVkCgkJICAgIC8vICBhbmQgYSB0eXBlIDQgcmVjb3JkIGFkZGVkLgoJCSAg
ICAvLwkJCgkJICAgICRhbHJlYWR5VGhlcmVRdWVyeSA9IG15c3FsX3F1ZXJ5KCJzZWxlY3QgdGl0
bGUgZnJvbSByZWNvcmQgd2hlcmUgdHlwZSA9IDQgYW5kIHRpdGxlID0gXCIkcHJvZ3JhbU5hbWVc
IiIpOwoJCSAgICBpZihteXNxbF9udW1fcm93cygkYWxyZWFkeVRoZXJlUXVlcnkpIDwgMSkKCQkg
ICAgewoJCQkvLwoJCQkvLwlUaGlzIHByb2dyYW0gbmFtZSBpcyBub3QgaW4gdGhlIHJlY29yZCB0
YWJsZSBhcyBhIHR5cGUgPSA0LAoJCQkvLwlzbyB3ZSBuZWVkIHRvIGFkZCBpdAoJCQkvLwkJCQkK
CQkJbXlzcWxfcXVlcnkoImRlbGV0ZSBmcm9tIHJlY29yZCB3aGVyZSB0eXBlID0gMyBhbmQgdGl0
bGUgPSBcIiRwcm9ncmFtTmFtZVwiIik7CgkJCW15c3FsX3F1ZXJ5KCJkZWxldGUgZnJvbSByZWNv
cmQgd2hlcmUgdHlwZSA9IDEgYW5kIHRpdGxlID0gXCIkcHJvZ3JhbU5hbWVcIiIpOwoJCQlteXNx
bF9xdWVyeSgiZGVsZXRlIGZyb20gcmVjb3JkIHdoZXJlIHR5cGUgPSAyIGFuZCB0aXRsZSA9IFwi
JHByb2dyYW1OYW1lXCIiKTsKCQkJbXlzcWxfcXVlcnkoImluc2VydCBpbnRvIHJlY29yZCAodHlw
ZSx0aXRsZSkgdmFsdWVzICg0LFwiJHByb2dyYW1OYW1lXCIpIik7CgkJICAgIAoJCQkvLwogICAg
CQkJLy8JCVRlbGwgbXl0aGZyb250ZW5kIHRoYXQgc29tZXRoaW5nIGhhcyBjaGFuZ2VkCgkJCS8v
CgkJCW15c3FsX3F1ZXJ5KCJ1cGRhdGUgc2V0dGluZ3Mgc2V0IGRhdGEgPSBcInllc1wiIHdoZXJl
IHZhbHVlID0gXCJSZWNvcmRDaGFuZ2VkXCIiKTsKCgkJICAgIH0KCgkJfQoJfQp9CgoKCi8vCi8v
CUdpdmVuIGEgc3RhcnRpbmcgdGltZSBhbmQgY2hhbm5lbCBudW1iZXIsIHNldCB0aGUKLy8JZGF0
YWJhc2UgdG8gcmVjb3JkIHRoYXQgcHJvZ3JhbSBvbmNlCi8vCgpmdW5jdGlvbiByZWNvcmRPbmNl
KCRjaGFubmVsLCAkc3RhcnQpCnsKCS8vCgkvLwlCZWNhdXNlIHdlIG9ubHkgaGF2ZSB0aGUgY2hh
bm5lbCBudW1iZXIgYW5kIHN0YXJ0aW5nIHRpbWUsCgkvLwlXZSBuZWVkIHRvIGxvb2sgdXAgdGhl
IHJlc3Qgb2YgdGhlIGluZm9ybWF0aW9uCgkvLwoJCgkkYVF1ZXJ5ID0gbXlzcWxfcXVlcnkoInNl
bGVjdCBjaGFuaWQsIHN0YXJ0dGltZSwgZW5kdGltZSwgdGl0bGUsIHN1YnRpdGxlLCBkZXNjcmlw
dGlvbiBmcm9tIHByb2dyYW0gd2hlcmUgY2hhbmlkID0gJGNoYW5uZWwgYW5kIHN0YXJ0dGltZSA9
ICRzdGFydCAiKTsKCWlmKCR0aGVSb3cgPSBteXNxbF9mZXRjaF9yb3coJGFRdWVyeSkpCgl7CgkJ
Ly8KCQkvLwlJdCBleGlzdHMsIHNvIGRlbGV0ZSBhbGwgcmVmZXJlbmNlcyAKCQkvLwlhbmQgdGhl
biBjcmVhdGUgYSBzaW5nbGVyZWNvcmQgZW50cnkKCQkvLwoJCWRvbnRSZWNvcmQoJHRoZVJvd1sz
XSwgJHRoZVJvd1swXSwgJHRoZVJvd1sxXSk7CgkJJGFub3RoZXJRdWVyeSA9IG15c3FsX3F1ZXJ5
KCJpbnNlcnQgaW50byByZWNvcmQgKHR5cGUsIGNoYW5pZCwgc3RhcnR0aW1lLCBzdGFydGRhdGUs
ICBlbmR0aW1lLCBlbmRkYXRlLCB0aXRsZSwgc3VidGl0bGUsIGRlc2NyaXB0aW9uKSB2YWx1ZXMg
KDEsICR0aGVSb3dbMF0sU0VDX1RPX1RJTUUoVElNRV9UT19TRUMoXCIkdGhlUm93WzFdXCIpKSxG
Uk9NX0RBWVMoVE9fREFZUyhcIiR0aGVSb3dbMV1cIikpLFNFQ19UT19USU1FKFRJTUVfVE9fU0VD
KFwiJHRoZVJvd1syXVwiKSksRlJPTV9EQVlTKFRPX0RBWVMoXCIkdGhlUm93WzJdXCIpKSwgXCIk
dGhlUm93WzNdXCIsIFwiJHRoZVJvd1s0XVwiLCBcIiR0aGVSb3dbNV1cIikiKTsKCQkvLwoJCS8v
CVRlbGwgbXl0aGZyb250ZW5kIHRoYXQgc29tZXRoaW5nIGhhcyBjaGFuZ2VkCgkJLy8KCQlteXNx
bF9xdWVyeSgidXBkYXRlIHNldHRpbmdzIHNldCBkYXRhID0gXCJ5ZXNcIiB3aGVyZSB2YWx1ZSA9
IFwiUmVjb3JkQ2hhbmdlZFwiIik7Cgl9CgkKfQoKLy8KLy8JR2l2ZW4gYSBjaGFubmVsLCBhIHN0
YXJ0aW5nIHRpbWUsIGFuIGVuZGluZyB0aW1lCi8vCWFuZCBhIHRpdGxlLCByZWNvcmQgYSBwcm9n
cmFtIGV2ZXJ5IGRheSBpbiB0aGF0IHNsb3QgCi8vCgpmdW5jdGlvbiByZWNvcmRUaW1lc2xvdCgk
Y2hhbm5lbCwgJHN0YXJ0LCAkZW5kLCAkdGl0bGUpCnsKCS8vCgkvLwlEZWxldGUgYWxsIHJlY29y
ZGluZyBzZXR0aW5ncyByZWxldmFudCB0byB0aGlzCgkvLwlwcm9ncmFtIGFuZCB0aGVuIHNldCB0
aW1lc2xvdHJlY29yZAoJLy8KCWRvbnRSZWNvcmQoJHRpdGxlLCAkY2hhbm5lbCwgJHN0YXJ0KTsK
CSRhUXVlcnkgPSBteXNxbF9xdWVyeSgiaW5zZXJ0IGludG8gcmVjb3JkICh0eXBlLCBjaGFuaWQs
IHN0YXJ0dGltZSwgZW5kdGltZSwgdGl0bGUpIHZhbHVlcyAoMiwgJGNoYW5uZWwsIFwiJHN0YXJ0
XCIsIFwiJGVuZFwiLCBcIiR0aXRsZVwiKSIpOwoJLy8KCS8vCVRlbGwgbXl0aGZyb250ZW5kIHRo
YXQgc29tZXRoaW5nIGhhcyBjaGFuZ2VkCgkvLwoJbXlzcWxfcXVlcnkoInVwZGF0ZSBzZXR0aW5n
cyBzZXQgZGF0YSA9IFwieWVzXCIgd2hlcmUgdmFsdWUgPSBcIlJlY29yZENoYW5nZWRcIiIpOwp9
CgovLwovLwlHaXZlbiBhIG5hbWUsIGEgY2hhbm5lbCBudW1iZXIsIGFuZCBhIHN0YXJ0aW5nIHRp
bWUKLy8JbWFrZSBzdXJlIEkgbmVpdGhlciAiYWx3YXlzIHJlY29yZCIgdGhpcyBwcm9ncmFtCi8v
CW5vciAicmVjb3JkIG9uY2UiIHRoZSBwcm9ncmFtIG5vciAidGltZXNsb3QgcmVjb3JkIiBpdAov
LwoKZnVuY3Rpb24gZG9udFJlY29yZCgkcHJvZ3JhbU5hbWUsICRjaGFubmVsLCAkc3RhcnQpCnsK
CSRkUXVlcnkgPSBteXNxbF9xdWVyeSgiZGVsZXRlIGZyb20gcmVjb3JkIHdoZXJlIHR5cGUgPSA0
IGFuZCB0aXRsZSA9IFwiJHByb2dyYW1OYW1lXCIiKTsKCSRhUXVlcnkgPSBteXNxbF9xdWVyeSgi
ZGVsZXRlIGZyb20gcmVjb3JkIHdoZXJlIHR5cGUgPSAzIGFuZCBjaGFuaWQgPSAkY2hhbm5lbCBh
bmQgdGl0bGUgPSBcIiRwcm9ncmFtTmFtZVwiIik7CgkkYlF1ZXJ5ID0gbXlzcWxfcXVlcnkoImRl
bGV0ZSBmcm9tIHJlY29yZCB3aGVyZSB0eXBlID0gMSBhbmQgY2hhbmlkID0gJGNoYW5uZWwgYW5k
IHN0YXJ0dGltZSA9IFwiJHN0YXJ0XCIiKTsKCSRjUXVlcnkgPSBteXNxbF9xdWVyeSgiZGVsZXRl
IGZyb20gcmVjb3JkIHdoZXJlIHR5cGUgPSAyIGFuZCBjaGFuaWQgPSAkY2hhbm5lbCBhbmQgc3Rh
cnR0aW1lID0gXCIkc3RhcnRcIiBhbmQgdGl0bGUgPSBcIiRwcm9ncmFtTmFtZVwiIik7CgkvLwoJ
Ly8JVGVsbCBteXRoZnJvbnRlbmQgdGhhdCBzb21ldGhpbmcgaGFzIGNoYW5nZWQKCS8vCglteXNx
bF9xdWVyeSgidXBkYXRlIHNldHRpbmdzIHNldCBkYXRhID0gXCJ5ZXNcIiB3aGVyZSB2YWx1ZSA9
IFwiUmVjb3JkQ2hhbmdlZFwiIik7Cn0KCi8vCi8vCUJvb2xlYW4gY2hlY2sgdG8gc2VlIGlmIGEg
Z2l2ZW4gdGl0bGUgaXMgaW4gCi8vCXRoZSBhbGxyZWNvcmQgdGFibGUKLy8KCmZ1bmN0aW9uIGlz
SW5BbHdheXNSZWNvcmQoJHRoZVRpdGxlKQp7CgkkYVF1ZXJ5ID0gbXlzcWxfcXVlcnkoInNlbGVj
dCAqIGZyb20gcmVjb3JkIHdoZXJlIHRpdGxlID0gXCIkdGhlVGl0bGVcIiBhbmQgdHlwZSA9IDQi
KTsKCWlmKG15c3FsX251bV9yb3dzKCRhUXVlcnkpID4gMCkKCXsKCQlyZXR1cm4oVFJVRSk7Cgl9
CglyZXR1cm4oRkFMU0UpOwp9CgovLwovLwlCb29sZWFuIGNoZWNrIHRvIHNlZSBpZiBhIGdpdmVu
IHRpdGxlCi8vCWlzIHNldCB0byBhbHdheXMgcmVjb3JkIG9uIGEgY2VydGFpbiBjaGFubmVsCi8v
CgpmdW5jdGlvbiBpc0luQ2hhbm5lbEFsd2F5c1JlY29yZCgkdGhlQ2hhbm5lbCwgJHRoZVRpdGxl
KQp7CgkkYVF1ZXJ5ID0gbXlzcWxfcXVlcnkoInNlbGVjdCAqIGZyb20gcmVjb3JkIHdoZXJlIHRp
dGxlID0gXCIkdGhlVGl0bGVcIiBhbmQgY2hhbmlkID0gXCIkdGhlQ2hhbm5lbFwiIGFuZCB0eXBl
ID0gMyAiKTsKCWlmKG15c3FsX251bV9yb3dzKCRhUXVlcnkpID4gMCkKCXsKCQlyZXR1cm4oVFJV
RSk7Cgl9CglyZXR1cm4oRkFMU0UpOwp9CgovLwovLwlCb29sZWFuIGNoZWNrIHRvIHNlZSBpZiBh
IGdpdmVuIHRpdGxlIGlzIGluIAovLwl0aGUgdGltZXNsb3RyZWNvcmQgdGFibGUKLy8KCmZ1bmN0
aW9uIGlzSW5UaW1lc2xvdFJlY29yZCgkdGhlQ2hhbm5lbCwgJHRoZVN0YXJ0LCAkdGhlRW5kLCAk
dGhlVGl0bGUpCnsKCSRhUXVlcnkgPSBteXNxbF9xdWVyeSgic2VsZWN0ICogZnJvbSByZWNvcmQg
d2hlcmUgdHlwZSA9IDIgYW5kIGNoYW5pZCA9IFwiJHRoZUNoYW5uZWxcIiBhbmQgc3RhcnR0aW1l
ID0gXCIkdGhlU3RhcnRcIiBhbmQgZW5kdGltZSA9IFwiJHRoZUVuZFwiIGFuZCB0aXRsZSA9IFwi
JHRoZVRpdGxlXCIiKTsKCWlmKG15c3FsX251bV9yb3dzKCRhUXVlcnkpID4gMCkKCXsKCQlyZXR1
cm4oVFJVRSk7Cgl9CglyZXR1cm4oRkFMU0UpOwp9Ci8vCi8vCUJvb2xlYW4gY2hlY2sgdG8gc2Vl
IGlmIGEgZ2l2ZW4gdGl0bGUgaXMgaW4gCi8vCXRoZSBvbmNlIHJlY29yZCB0YWJsZQovLwoKZnVu
Y3Rpb24gaXNJbk9uY2VSZWNvcmQoJHRoZUNoYW5uZWwsICR0aGVTdGFydCkKewoJJGFRdWVyeSA9
IG15c3FsX3F1ZXJ5KCJzZWxlY3QgKiBmcm9tIHJlY29yZCB3aGVyZSB0eXBlID0gMSBhbmQgY2hh
bmlkID0gXCIkdGhlQ2hhbm5lbFwiIGFuZCBzdGFydHRpbWUgPSBTRUNfVE9fVElNRShUSU1FX1RP
X1NFQyhcIiR0aGVTdGFydFwiKSkgYW5kIHN0YXJ0ZGF0ZSA9IEZST01fREFZUyhUT19EQVlTKFwi
JHRoZVN0YXJ0XCIpKSIgKTsKCWlmKG15c3FsX251bV9yb3dzKCRhUXVlcnkpID4gMCkKCXsKCQly
ZXR1cm4oVFJVRSk7Cgl9CglyZXR1cm4oRkFMU0UpOwp9CgovLwovLwlNYWtlIGEgZGVjZW50IGd1
ZXNzIGFib3V0IHdoZXRoZXIgdGhpcyBpcyBhIG1vdmllCi8vCW9yIG5vdAovLwpmdW5jdGlvbiBz
bWVsbHNMaWtlTW92aWUoJGxlbmd0aCwgJHR5cGUpCnsKCWlmKCRsZW5ndGggPiA3MCkKCXsKCQlp
ZigJJHR5cGUgPT0gIkRyYW1hIiB8fAoJCQkkdHlwZSA9PSAiRG9jIiB8fAoJCQkkdHlwZSA9PSAi
TXlzdGVyeSIgfHwKCQkJJHR5cGUgPT0gIk11c2ljYWwiIHx8CgkJCSR0eXBlID09ICJBY3Rpb24i
IHx8CgkJCSR0eXBlID09ICJDb21lZHkiIHx8CgkJCSR0eXBlID09ICJXYXIiIHx8CgkJCSR0eXBl
ID09ICJSb21hbmNlIiB8fAoJCQkkdHlwZSA9PSAiQ3JpbWUiIHx8CgkJCSR0eXBlID09ICJTY2lG
aSIgfHwKCQkJJHR5cGUgPT0gIkhvcnJvciIpCgkJewoJCQlyZXR1cm4oVFJVRSk7CgkJfQoJfQoJ
cmV0dXJuKEZBTFNFKTsKfQoKCi8vCi8vCUJ1aWxkIGFuIGFycmF5IG9mIHRpbWUgc2xvdHMgYmFz
ZWQgb24gdGhlCi8vCXN0YXJ0aW5nIHRpbWUgYW5kIHRoZSBudW1iZXIgb2Ygc2xvdHMgZGVzaXJl
ZAovLwpmdW5jdGlvbiBzZXR1cFRpbWVzICgkc3RhcnR0aW1lLCAkbnVtYlNsb3RzKQp7CgkkY3Vy
cmVudHRpbWUgPSAkc3RhcnR0aW1lOwoKCWZvciAoJGkgPSAwOyAkaSA8ICRudW1iU2xvdHM7ICRp
ICs9IDEpCgl7CgkJJG15dGltZSA9IG5ldyBUaW1lVmFsdWU7CiAJCSRteXRpbWUtPnNldFZhbHMo
JGN1cnJlbnR0aW1lKTsKIAkJJHRpbWVhcnJheVskaV09JG15dGltZTsKCQkkY3VycmVudHRpbWUg
PSBkYXRlKCdZbWRIaXMnLCAoJG15dGltZS0+dW5peHRpbWUgKyAxODAwKSk7Cgl9CiAJcmV0dXJu
ICR0aW1lYXJyYXk7Cn0KCgovLwovLwlCdWlsZCBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGluZm8g
YWJvdXQKLy8JcmVjb3JkaW5ncy4KLy8KZnVuY3Rpb24gc2V0dXBSZWNvcmRpbmdzKCkKewoJJHRo
ZVF1ZXJ5ID0gInNlbGVjdCByZWNvcmQuKixjaGFubmVsLmNoYW5udW0gZnJvbSByZWNvcmQsY2hh
bm5lbCB3aGVyZSBjaGFubmVsLmNoYW5pZCA9IHJlY29yZC5jaGFuaWQgYW5kIHJlY29yZC50eXBl
ID0gMSBvcmRlciBieSByZWNvcmQuc3RhcnR0aW1lIGFzYzsiOwoJJHJlY29yZFF1ZXJ5ID0gbXlz
cWxfcXVlcnkoJHRoZVF1ZXJ5KSBvciBkaWUoIlVoIG9oLCBJIGNvdWxkbid0IG9wZW4gdGhlIHJl
Y29yZCB0YWJsZSIpOzsKCSRpID0gMDsKCXdoaWxlKCRyZWNvcmRUdXBsZSA9IG15c3FsX2ZldGNo
X2FycmF5KCRyZWNvcmRRdWVyeSwgTVlTUUxfQVNTT0MpKQoJewoJCSRhUmVjb3JkID0gbmV3IFJl
Y29yZGluZzsKCQkkYVJlY29yZC0+Y2hhbmlkID0gJHJlY29yZFR1cGxlWyJjaGFuaWQiXTsKCQkk
YVJlY29yZC0+Y2hhbm51bSA9ICRyZWNvcmRUdXBsZVsiY2hhbm51bSJdOwoJCSRhUmVjb3JkLT5z
dGFydHRpbWUgPSAkcmVjb3JkVHVwbGVbInN0YXJ0dGltZSJdOwoJCSRhUmVjb3JkLT5lbmR0aW1l
ID0gJHJlY29yZFR1cGxlWyJlbmR0aW1lIl07CgkJJGFSZWNvcmQtPnRpdGxlID0gJHJlY29yZFR1
cGxlWyJ0aXRsZSJdOwoJCSRhUmVjb3JkLT5zdWJ0aXRsZSA9ICRyZWNvcmRUdXBsZVsic3VidGl0
bGUiXTsKCQkkYVJlY29yZC0+ZGVzY3JpcHRpb24gPSAkcmVjb3JkVHVwbGVbImRlc2NyaXB0aW9u
Il07CgkJJHJlY29yZEFycmF5WyRpXSA9ICRhUmVjb3JkOwoJCSRpICs9IDE7Cgl9CglteXNxbF9m
cmVlX3Jlc3VsdCgkcmVjb3JkUXVlcnkpOwoJcmV0dXJuICRyZWNvcmRBcnJheTsKfQoKLy8KLy8J
UG9wdWxhdGUgaW5mbyBhYm91dCBjaGFubmVscwovLwpmdW5jdGlvbiBzZXR1cENoYW5uZWxzICgp
CnsKCSRjaGFucXVlcnkgPSAiU0VMRUNUICogRlJPTSBjaGFubmVsIE9SREVSIEJZIGNoYW5udW0g
KyAwIjsKCgkkY2hhbnJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRjaGFucXVlcnkpIG9yIGRpZSgiRWVl
ay4gSSBjb3VsZG4ndCBvcGVuIHRoZSBjaGFubmVsIHRhYmxlIGluIHRoZSBteXRoY29udmVyZyBk
YXRhYmFzZS4iKTsKICAgCgkkaSA9IDA7CgoJd2hpbGUgKCRjaGFubGluZSA9IG15c3FsX2ZldGNo
X2FycmF5KCRjaGFucmVzdWx0LCBNWVNRTF9BU1NPQykpCgl7CgkgICAgJG15Y2hhbiA9IG5ldyBD
aGFubmVsOwoJICAgICRteWNoYW4tPmNoYW5pZCA9ICRjaGFubGluZVsiY2hhbmlkIl07CgkgICAg
JG15Y2hhbi0+Y2hhbm51bSA9ICRjaGFubGluZVsiY2hhbm51bSJdOwoJICAgICRteWNoYW4tPmNh
bGxzaWduID0gJGNoYW5saW5lWyJjYWxsc2lnbiJdOwoJICAgICRteWNoYW4tPmljb24gPSAkY2hh
bmxpbmVbImljb24iXTsgICAKCSAgICAkbXljaGFuLT5yZXBhdGhJY29uKCk7CgoJICAgICRjaGFu
bmVsYXJyYXlbJGldID0gJG15Y2hhbjsKCSAgICAkaSArPSAxOwoJfQoKCW15c3FsX2ZyZWVfcmVz
dWx0KCRjaGFucmVzdWx0KTsKCXJldHVybiAkY2hhbm5lbGFycmF5Owp9CgovLwovLwlTbywgYW55
dGhpbmcgZ29vZCBvbiBUVj8KLy8KZnVuY3Rpb24gc2V0dXBQcm9ncmFtcyAoJGNoYW5uZWxhcnJh
eSwgJHRpbWVhcnJheSwgJG51bWJTbG90cykKewoJJGNoYW5uZWxpbmRleCA9IDA7Cgl3aGlsZSAo
JG15Y2hhbm5lbCA9ICRjaGFubmVsYXJyYXlbJGNoYW5uZWxpbmRleF0pCgl7CgkJZm9yICgkaSA9
IDA7ICRpIDwgJG51bWJTbG90czsgJGkgKz0gMSkKCQl7CgkJCSRteXRpbWUgPSAkdGltZWFycmF5
WyRpXTsKCQkJJHNxbHRpbWUgPSAkbXl0aW1lLT5zcWx0aW1lOwoKCQkJJGNoYW5pZCA9ICRteWNo
YW5uZWwtPmNoYW5pZDsKCQkJCgkJCSRxdWVyeSA9ICJTRUxFQ1QgY2hhbm5lbC5jaGFuaWQsIHN0
YXJ0dGltZSwgZW5kdGltZSwgdGl0bGUsIHN1YnRpdGxlLCBkZXNjcmlwdGlvbiwgY2F0ZWdvcnks
ICgoVU5JWF9USU1FU1RBTVAoZW5kdGltZSkgLSBVTklYX1RJTUVTVEFNUChzdGFydHRpbWUpKSAv
IDYwICkgYXMgZHVyYXRpb24sIGNoYW5uZWwuY2hhbm51bSBGUk9NIHByb2dyYW0sY2hhbm5lbCBX
SEVSRSBwcm9ncmFtLmNoYW5pZCA9ICIgLiAkY2hhbmlkIC4gIiBBTkQgcHJvZ3JhbS5jaGFuaWQg
PSBjaGFubmVsLmNoYW5pZCBBTkQgIiAuCgkJCSJzdGFydHRpbWUgPCAiIC4gJHNxbHRpbWUgLiAi
IEFORCBlbmR0aW1lID4gIiAuICRzcWx0aW1lIC4KCQkJIiBPUkRFUiBCWSBjaGFubmVsLmNoYW5u
dW0gKyAwLCBzdGFydHRpbWU7IjsKCgkJCSRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpIG9y
IGRpZSgiR2Fkem9va3MhIEkgY2FuJ3Qgb3BlbiB0aGUgcHJvZ3JhbSB0YWJsZS4iKTsKCiAJCQl3
aGlsZSAoJGxpbmUgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpCgkJ
CXsKCQkJCSRteXByb2cgPSBuZXcgUHJvZ3JhbUluZm87CgkJCQkkbXlwcm9nLT50aXRsZSA9ICRs
aW5lWyJ0aXRsZSJdOwoJCQkJJG15cHJvZy0+c3VidGl0bGUgPSAkbGluZVsic3VidGl0bGUiXTsK
CQkJCSRteXByb2ctPmNoYW5pZCA9ICRsaW5lWyJjaGFuaWQiXTsKCQkJCSRteXByb2ctPmNoYW5z
dHIgPSAkbGluZVsiY2hhbm51bSJdOwoJCQkJJG15cHJvZy0+c3RhcnR0cyA9ICRsaW5lWyJzdGFy
dHRpbWUiXTsKCQkJCSRteXByb2ctPmVuZHRzID0gJGxpbmVbImVuZHRpbWUiXTsKCQkJCSRteXBy
b2ctPnByb2dUeXBlID0gJGxpbmVbImNhdGVnb3J5Il07CgkJCQkkbXlwcm9nLT5kdXJhdGlvbiA9
ICRsaW5lWyJkdXJhdGlvbiJdOwoJCQkJJG15cHJvZy0+ZGVzY3JpcHRpb24gPSAkbGluZVsiZGVz
Y3JpcHRpb24iXTsKCgkJCQkkcHJvZ3JhbWFycmF5WyRjaGFubmVsaW5kZXhdWyRpXSA9ICRteXBy
b2c7CgkJCX0KCgkJCW15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwoJCX0KICAJCSRjaGFubmVs
aW5kZXggKz0gMTsKCX0KCXJldHVybiAkcHJvZ3JhbWFycmF5Owp9CgovLyBmZXRjaCBhbGwgdGhl
IGxpc3RpbmdzIGZvciBhIGNlcnRhaW4gZGF5CmZ1bmN0aW9uIGZldGNoRGF5c0xpc3RpbmdzKCRj
aGFubmVsYXJyYXksICRkYXkpCnsKCSRpID0gMDsKCSRjaGFubmVsaW5kZXggPSAwOwoJd2hpbGUg
KCRjaGFuaWQgPSAkY2hhbm5lbGFycmF5WyRjaGFubmVsaW5kZXhdKQoJewoJCSR0aGVUaW1lID0g
cGFyc2VUaW1lKCRkYXkpOwoKCQkkdG8gPSBkYXRlKCdZbWRIaXMnLCBta3RpbWUoMjMsIDU5LCA1
OSwgJHRoZVRpbWVbJ21vbnRoJ10sICR0aGVUaW1lWydkYXknXSwgJHRoZVRpbWVbJ3llYXInXSkp
OwoKCSAgICAkcXVlcnkgPSAiU0VMRUNUIGNoYW5uZWwuY2hhbmlkLCBjaGFubmVsLmNoYW5udW0s
IHN0YXJ0dGltZSwgZW5kdGltZSwgdGl0bGUsIHN1YnRpdGxlLCBkZXNjcmlwdGlvbiwgY2F0ZWdv
cnksICgoVU5JWF9USU1FU1RBTVAoZW5kdGltZSkgLSBVTklYX1RJTUVTVEFNUChzdGFydHRpbWUp
KSAvIDYwICkgYXMgZHVyYXRpb24gRlJPTSBwcm9ncmFtLGNoYW5uZWwgV0hFUkUgcHJvZ3JhbS5j
aGFuaWQgPSBjaGFubmVsLmNoYW5pZCBBTkQgcHJvZ3JhbS5jaGFuaWQgPSAkY2hhbmlkIEFORCAo
KFVOSVhfVElNRVNUQU1QKGVuZHRpbWUpIC0gVU5JWF9USU1FU1RBTVAoc3RhcnR0aW1lKSkgLyA2
MCApID4gNzAgQU5EIHN0YXJ0dGltZSA+PSAkZGF5ICBBTkQgc3RhcnR0aW1lIDw9ICR0byBPUkRF
UiBCWSBzdGFydHRpbWUgQVNDOyI7CgoJCSRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpIG9y
IGRpZSgiR2Fkem9va3MhIEkgY2FuJ3Qgb3BlbiB0aGUgcHJvZ3JhbSB0YWJsZS4iKTsKCgkJd2hp
bGUgKCRsaW5lID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQoJICAg
IHsKCQkJJG15cHJvZyA9IG5ldyBQcm9ncmFtSW5mbzsKCQkJJG15cHJvZy0+dGl0bGUgPSAkbGlu
ZVsidGl0bGUiXTsKCQkJJG15cHJvZy0+c3VidGl0bGUgPSAkbGluZVsic3VidGl0bGUiXTsKCQkJ
JG15cHJvZy0+Y2hhbmlkID0gJGxpbmVbImNoYW5pZCJdOwoJCQkkbXlwcm9nLT5jaGFuc3RyID0g
JGxpbmVbImNoYW5udW0iXTsKCQkJJG15cHJvZy0+c3RhcnR0cyA9ICRsaW5lWyJzdGFydHRpbWUi
XTsKCQkJJG15cHJvZy0+ZW5kdHMgPSAkbGluZVsiZW5kdGltZSJdOwoJCQkkbXlwcm9nLT5wcm9n
VHlwZSA9ICRsaW5lWyJjYXRlZ29yeSJdOwoJCQkkbXlwcm9nLT5kdXJhdGlvbiA9ICRsaW5lWyJk
dXJhdGlvbiJdOwoJCQkkbXlwcm9nLT5kZXNjcmlwdGlvbiA9ICRsaW5lWyJkZXNjcmlwdGlvbiJd
OwogCgkJCSRsaXN0aW5nYXJyYXlbJGldID0gJG15cHJvZzsKCQkJJGkrKzsKCQl9CiAgICAKCSAg
ICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKCQkkY2hhbm5lbGluZGV4Kys7Cgl9CiAgICAK
ICAgIHJldHVybiAkbGlzdGluZ2FycmF5Owp9CgovLyBGdW5jdGlvbnMgYWRkZWQgYnkgUnVzc2Vs
bCBIYXRjaAoKLy8gZ2F0aGVyIGluZm8gZnJvbSB0aGUgYWxscmVjb3JkIHRhYmxlCmZ1bmN0aW9u
IHNldHVwQWxsUmVjb3JkaW5ncygpIHsKCSR0aGVRdWVyeSA9ICJzZWxlY3QgKiBmcm9tIHJlY29y
ZCB3aGVyZSB0eXBlID0gMyBvciB0eXBlID0gNCBvcmRlciBieSB0aXRsZSBhc2M7IjsKCSRyZWNv
cmRRdWVyeSA9IG15c3FsX3F1ZXJ5KCR0aGVRdWVyeSkgb3IgZGllKCJFUlJPUjogVW5hYmxlIHRv
IG9wZW4gdGhlIGFsbHJlY29yZCB0YWJsZSIpOwoJJGkgPSAwOwoJd2hpbGUoJHJlY29yZFR1cGxl
ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlY29yZFF1ZXJ5LCBNWVNRTF9BU1NPQykpIHsKCQkkYVJl
Y29yZCA9IG5ldyBSZWNvcmRpbmc7CgkJJGFSZWNvcmQtPnRpdGxlID0gJHJlY29yZFR1cGxlWyd0
aXRsZSddOwoJCWlmICgkcmVjb3JkVHVwbGVbJ2NoYW5pZCddKSB7IC8vIHNlZSBpZiB0aGlzIHBy
b2dyYW0gaXMgYWx3YXlzIHJlY29yZGVkIG9uIGEgY2VydGFpbiBjaGFubmVsCgkJCSRhUmVjb3Jk
LT5jaGFuaWQgPSAkcmVjb3JkVHVwbGVbJ2NoYW5pZCddOwoJCQkkY2hhblF1ZXJ5ID0gbXlzcWxf
cXVlcnkoInNlbGVjdCBjaGFubnVtIGZyb20gY2hhbm5lbCB3aGVyZSBjaGFuaWQ9XCIkYVJlY29y
ZC0+Y2hhbmlkXCI7Iik7CgkJCSRhUm93ID0gbXlzcWxfZmV0Y2hfcm93KCRjaGFuUXVlcnkpOwoJ
CQkkYVJlY29yZC0+Y2hhbm51bSA9ICRhUm93WzBdOwoJCQlteXNxbF9mcmVlX3Jlc3VsdCgkY2hh
blF1ZXJ5KTsKCQl9CgkJJHJlY29yZEFycmF5WyRpXSA9ICRhUmVjb3JkOwoJCSRpKys7Cgl9Cglt
eXNxbF9mcmVlX3Jlc3VsdCgkcmVjb3JkUXVlcnkpOwoJcmV0dXJuKCRyZWNvcmRBcnJheSk7Cn0K
Ci8vIGdhdGhlciBpbmZvcm1hdGlvbiBmcm9tIHRoZSB0aW1lc2xvdHJlY29yZCB0YWJsZQpmdW5j
dGlvbiBzZXR1cFRpbWVTbG90UmVjb3JkaW5ncygpIHsKCSR0aGVRdWVyeSA9ICJzZWxlY3QgcmVj
b3JkLiosY2hhbm5lbC5jaGFubnVtIGZyb20gcmVjb3JkLGNoYW5uZWwgd2hlcmUgdHlwZSA9IDIg
YW5kIHJlY29yZC5jaGFuaWQ9Y2hhbm5lbC5jaGFuaWQgb3JkZXIgYnkgdGl0bGUgYXNjOyI7Cgkk
cmVjb3JkUXVlcnkgPSBteXNxbF9xdWVyeSgkdGhlUXVlcnkpIG9yIGRpZSgiRVJST1I6IFVuYWJs
ZSB0byBvcGVuIHRoZSByZWNvcmQgdGFibGUiKTs7CgkkaSA9IDA7Cgl3aGlsZSgkcmVjb3JkVHVw
bGUgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVjb3JkUXVlcnksIE1ZU1FMX0FTU09DKSkKCXsKCQkk
YVJlY29yZCA9IG5ldyBSZWNvcmRpbmc7CgkJJGFSZWNvcmQtPmNoYW5pZCA9ICRyZWNvcmRUdXBs
ZVsiY2hhbmlkIl07CgkJJGFSZWNvcmQtPmNoYW5udW0gPSAkcmVjb3JkVHVwbGVbImNoYW5udW0i
XTsKCQkkYVJlY29yZC0+c3RhcnR0aW1lID0gJHJlY29yZFR1cGxlWyJzdGFydHRpbWUiXTsKCQkk
YVJlY29yZC0+ZW5kdGltZSA9ICRyZWNvcmRUdXBsZVsiZW5kdGltZSJdOwoJCSRhUmVjb3JkLT50
aXRsZSA9ICRyZWNvcmRUdXBsZVsidGl0bGUiXTsKCQkkcmVjb3JkQXJyYXlbJGldID0gJGFSZWNv
cmQ7CgkJJGkrKzsKCX0KCW15c3FsX2ZyZWVfcmVzdWx0KCRyZWNvcmRRdWVyeSk7CglyZXR1cm4g
JHJlY29yZEFycmF5Owp9CgovLyBwYXJzZSB0aGUgdGltZSBzdHJpbmdzIGludG8gYW4gYXJyYXkK
ZnVuY3Rpb24gcGFyc2VUaW1lKCR0aW1lKSB7CgkkdGhlVGltZVsneWVhciddID0gc3Vic3RyKCR0
aW1lLCAwLCA0KTsKCSR0aGVUaW1lWydtb250aCddID0gc3Vic3RyKCR0aW1lLCA0LCAyKTsgCgkk
dGhlVGltZVsnZGF5J10gPSBzdWJzdHIoJHRpbWUsIDYsIDIpOwoJJHRoZVRpbWVbJ2hvdXInXSA9
IHN1YnN0cigkdGltZSwgOCwgMik7CgkkdGhlVGltZVsnbWludXRlJ10gPSBzdWJzdHIoJHRpbWUs
IDEwLCAyKTsKCSR0aGVUaW1lWydzZWNvbmQnXSA9IHN1YnN0cigkdGltZSwgMTIsIDIpOwoKCXJl
dHVybigkdGhlVGltZSk7Cn0KCi8vIHNpbmNlIHRoZSB0aW1lc2xvdHJlY29yZCB0YWJsZSBzdG9y
ZXMgdGltZXMgZGlmZmVyZW50bHksIGhlcmUgaXMgYW5vdGhlciBmdW5jdGlvbiB0byBwYXJzZSBp
dApmdW5jdGlvbiBwYXJzZVRpbWVTbG90VGltZSgkdGltZSkgewoJJHRoZVRpbWVbJ2hvdXInXSA9
IHN1YnN0cigkdGltZSwgMCwgMik7CgkkdGhlVGltZVsnbWludXRlJ10gPSBzdWJzdHIoJHRpbWUs
IDMsIDIpOwoJJHRoZVRpbWVbJ3NlY29uZCddID0gc3Vic3RyKCR0aW1lLCA2LCAyKTsKCglyZXR1
cm4oJHRoZVRpbWUpOwp9CgovLyByZXR1cm4gYSBuaWNlIHRpbWUgc3RyaW5nIHRvIHByaW50CmZ1
bmN0aW9uIGdldFRpbWVTdHJpbmcoJHRpbWUpIHsKCSR0aGVUaW1lID0gcGFyc2VUaW1lKCR0aW1l
KTsKCSR0aGVIb3VyID0gJHRoZVRpbWVbJ2hvdXInXTsKCWlmICgkdGhlSG91ciA+IDEyKSB7CgkJ
JHRoZUhvdXIgLT0gMTI7CgkJJGFtcG0gPSAicG0iOwoJfQoJZWxzZSBpZiAoJHRoZUhvdXIgPT0g
MCkgewoJCSR0aGVIb3VyID0gMTI7CgkJJGFtcG0gPSAiYW0iOwoJfQoJZWxzZSAkYW1wbSA9ICJh
bSI7CgkkcmV0dXJuVGltZSA9ICR0aGVUaW1lWydtb250aCddIC4gIi8iIC4gJHRoZVRpbWVbJ2Rh
eSddIC4gIi8iIC4gJHRoZVRpbWVbJ3llYXInXSAuICIgIiAuICR0aGVIb3VyIC4gIjoiIC4gJHRo
ZVRpbWVbJ21pbnV0ZSddIC4gJGFtcG07CglyZXR1cm4oJHJldHVyblRpbWUpOwp9Cj8+Cg==

--0114-2330-18-PART-BREAK
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="listings.php"

PD9waHAKCgoJLy8KCS8vCVRoaXMgZmlsZSBpcyBwYXJ0IG9mIE15dGhXZWIsCgkvLwlhIHBocC1i
YXNlZCBpbnRlcmZhY2UgaW50byBNeXRoVFYuCgkvLwoJLy8JKGMpIDIwMDIgYnkgVGhvciBTaWd2
YWxkYXNvbiBhbmQgSXNhYWMgUmljaGFyZHMKCS8vCU15dGhXZWIgaXMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlCgkvLwlHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSB2ZXJzaW9uIDIKCS8vCShzZWUg
aHR0cDovL3d3dy5nbnUub3JnKQoJLy8KCgovLwovLwlsaXN0aW5ncy5waHAgaXMgdGhlIGRlZmF1
bHQgbW9kZSB0aGF0Ci8vCXNob3dzIGN1cnJlbnQgbGlzdGluZ3MuCi8vCgovLwovLwlTZWUgaWYg
d2UgZ290IHBhc3NlZCBhIHRpbWUgb2Zmc2V0IG9uIHRoZSBVUkwgKEdFVCkKLy8Jb3IgKGlmIG5v
dCkgdXNlIHRoZSBjdXJyZW50IHN5c3RlbSB0aW1lLgovLwppZighaXNzZXQoJF9HRVRbInRpbWVv
ZmZzZXQiXSkpCnsKCSRzcWxzdGFydHRpbWUgPSBkYXRlKCdZbWRIaXMnKTsKCSR0aGVPZmZzZXQg
PSAwOwp9CmVsc2UKewoJJHRoZU9mZnNldCA9ICRfR0VUWyJ0aW1lb2Zmc2V0Il07CgkkYWRqdXN0
ZXIgPSByb3VuZCgzMCAqICR0aW1lU2xvdHMgKiAkX0dFVFsidGltZW9mZnNldCJdKTsKCSRzcWxz
dGFydHRpbWUgPSBkYXRlKCJZbWRIaXMiLCBta3RpbWUoZGF0ZShIKSwgZGF0ZShpKSArICRhZGp1
c3RlcixkYXRlKHMpLGRhdGUobSksZGF0ZShkKSxkYXRlKFkpKSk7Cn0KCgovLwovLwlCdWlsZCBz
b21lIGRhdGEgc3RydWN0dXJlcwovLwkoY2hhbm5lbHMsIHByb2dyYW1zLCBldGMuKQovLwokdGlt
ZWFycmF5ID0gc2V0dXBUaW1lcygkc3Fsc3RhcnR0aW1lLCAkdGltZVNsb3RzKTsKJGNoYW5uZWxh
cnJheSA9IHNldHVwQ2hhbm5lbHMoKTsKJHJlY29yZEFycmF5ID0gc2V0dXBSZWNvcmRpbmdzKCk7
CiRwcm9ncmFtYXJyYXkgPSBzZXR1cFByb2dyYW1zKCRjaGFubmVsYXJyYXksICR0aW1lYXJyYXks
ICR0aW1lU2xvdHMpOwoKCi8vCi8vCVN0YXJ0IG91dHB1dGluZy4gRmlyc3QgYSBiaWcKLy8JdGFi
bGUgaW4gdGhlICJiYWNrZ3JvdW5kIiBjb2xvdXIganVzdCB0bwovLwlzZXQgdGhlIGNvbG91ciBh
bmQgc2hvdyB0aGUgbGluZXMgCi8vCWJldHdlZW4gcHJvZ3JhbXMKLy8JCnByaW50KCJcblxuXHRc
dDxUQUJMRSBXSURUSD1cIjEwMCVcIiBCT1JERVI9XCIwXCIgQ0VMTFBBRERJTkc9XCIwXCIgQ0VM
TFNQQUNJTkc9XCIwXCIgQkdDT0xPUj1cIiRsaXN0X2JnX2NvbG91clwiPlxuXHRcdFx0PFRSPlxu
XHRcdFx0XHQ8VEQ+XG4iKTsKCi8vCi8vCUEgc2Vjb25kIHRhYmxlIHdoZXJlIHRoZSBhY3R1YWwg
PFRSPjxURD4KLy8JZGF0YSBnb2VzICh3aXRoIENFTExTUEFDSU5HICJob2xlcyIgdG8KLy8Jc2Vl
IHRoZSBiYWNrZ3JvdW5kIGNvbG91ciB0aHJvdWdoKQovLwpwcmludCgiXHRcdFx0XHRcdDxUQUJM
RSBXSURUSD1cIjEwMCVcIiBCT1JERVI9XCIwXCIgQ0VMTFBBRERJTkc9XCIwXCIgQ0VMTFNQQUNJ
Tkc9XCIxXCIgQkdDT0xPUj1cIiRsaXN0X2JnX2NvbG91clwiPlxuIik7CgovLwovLwlBIGZ1bGwg
d2lkdGggY2VsbCB0aGF0IGRpc3BsYXkgdGhlIGRhdGUKLy8KcHJpbnQoIlx0XHRcdFx0XHRcdDxU
Uj5cblx0XHRcdFx0XHRcdFx0PFREPlxuXHRcdFx0XHRcdFx0XHQ8L1REPlxuXHRcdFx0XHRcdFx0
XHQ8VEQgQUxJR049XCJDRU5URVJcIiBDT0xTUEFOPVwiJHRpbWVTbG90c1wiIEJHQ09MT1I9XCIk
bGlzdF9mZ19jb2xvdXJcIj5cblx0XHRcdFx0XHRcdFx0XHQiKTsKcHJpbnRUaGVEYXRlKCRzcWxz
dGFydHRpbWUsICR0aGVPZmZzZXQsICR0aW1lU2xvdHMpOwpwcmludCgiXG5cdFx0XHRcdFx0XHRc
dDwvVEQ+XG5cdFx0XHRcdFx0XHQ8L1RSPlxuIik7CgovLwovLwlMZWZ0IGFycm93IHRvIGdvIGJh
Y2sgaW4gdGltZQovLwkoaWYgb25seSBpdCB3ZXJlIHRoYXQgZWFzeSkKLy8KcHJpbnQoIlx0XHRc
dFx0XHRcdDxUUj5cbiIpOwokcGFzdE9mZnNldCA9ICR0aGVPZmZzZXQgLSAxOwokZnV0dXJlT2Zm
c2V0ID0gJHRoZU9mZnNldCArIDE7CnByaW50KCI8VEQ+PEEgSFJFRj1cIm1haW4ucGhwP21vZGU9
bGlzdGluZ3MmdGltZW9mZnNldD0kcGFzdE9mZnNldCNhbmNob3IkYW5jaG9yXCI+PElNRyBTUkM9
XCJpbWFnZXMvbGVmdC5naWZcIiBCT1JERVI9XCIwXCIgQUxUPVwibGVmdFwiPjwvQT48L3RkPlxu
Iik7CgoKLy8KLy8JVGhlIGhlYWRpbmdzIGZvciB0aGUgdGltZSBjb2x1bW5zCi8vCmZvciAoJHRp
bWVzbG90ID0gMDsgJHRpbWVzbG90IDwgJHRpbWVTbG90czsgJHRpbWVzbG90ICs9IDEpCnsKICAg
ICR0aGVUaW1lID0gJHRpbWVhcnJheVskdGltZXNsb3RdOwogICAgJHRoZVRpbWUtPnNldENvbG91
cigkdGV4dF9kYXJrLCAkbGlzdF9mZ19jb2xvdXIpOwogICAgJHRoZVRpbWUtPnByaW50WW91cnNl
bGYoKTsKfQoKLy8KLy8JUmlnaHQgYXJyb3cgdG8gZ28gZm9yd2FyZCBpbiB0aW1lCi8vCnByaW50
ICI8VEQ+PEEgSFJFRj1cIm1haW4ucGhwP21vZGU9bGlzdGluZ3MmdGltZW9mZnNldD0kZnV0dXJl
T2Zmc2V0XCI+PElNRyBTUkM9XCJpbWFnZXMvcmlnaHQuZ2lmXCIgQk9SREVSPVwiMFwiIEFMVD1c
InJpZ2h0XCI+PC9BPjwvVEQ+IjsKcHJpbnQgIlx0PC90cj5cbiI7CgovLwovLwlTb3J0IGRvd24g
YnkgY2hhbm5lbHMgYW5kIGFjcm9zcyBieSBwcm9ncmFtCi8vCiRjaGFubmVsaW5kZXggPSAwOwok
dGltZWJhciA9IDA7CiRhbmNob3IgPSAwOwp3aGlsZSAoJG15Y2hhbm5lbCA9ICRjaGFubmVsYXJy
YXlbJGNoYW5uZWxpbmRleF0pCnsKCS8vIHByaW50IG91dCBjaGFubmVsIG51bSwgY2FsbHNpZ24g
YW5kIGljb24KCXByaW50ICJcdFx0PFRSPjx0ZD48Y2VudGVyPjxmb250IHNpemU9XCItMVwiPiIg
LiAkbXljaGFubmVsLT5jaGFubnVtIC4gIiAiIC4gJG15Y2hhbm5lbC0+Y2FsbHNpZ24gLiAiPC9m
b250PiI7CglpZiAoJGluY2x1ZGVJY29uICYmIGlzX2ZpbGUoJG15Y2hhbm5lbC0+aWNvbikpIHBy
aW50KCI8YnI+PGltZyBzcmM9XCIkbXljaGFubmVsLT5pY29uXCI+Iik7CglwcmludCgiPC9jZW50
ZXI+PC90ZD5cbiIpOwoKCS8vIHByaW50IG91dCBjaGFubmVsIHJvdyBvZiBwcm9ncmFtcwoJJGxh
c3R0aXRsZSA9ICIgIjsKCSRsYXN0c3VidGl0bGUgPSAiICI7CgkkbGFzdGVuZHRzID0gMDsKCWZv
ciAoJHRpbWVzbG90ID0gMDsgJHRpbWVzbG90IDwgJHRpbWVTbG90czsgJHRpbWVzbG90ICs9IDEp
Cgl7CgkJJHByb2dpbmZvID0gJHByb2dyYW1hcnJheVskY2hhbm5lbGluZGV4XVskdGltZXNsb3Rd
OwoKICAgICAgICAgICAgICAgIGlmICgkcHJvZ2luZm8gPT0gbnVsbCkKICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKCgkJJGZpbmFsQ29sb3VyID0gJGxpc3RfZGVmYXVsdF9jb2xvdXI7CgkJ
aWYgKCRwcm9naW5mby0+ZW5kdHMgIT0gJGxhc3RlbmR0cykKCQl7CgkJCSRjZWxsd2lkdGggPSAx
OwoJCQlmb3IgKCR0ZXN0bmV4dCA9ICR0aW1lc2xvdCArIDE7ICR0ZXN0bmV4dCA8ICR0aW1lU2xv
dHM7ICR0ZXN0bmV4dCArPSAxKQoJCQl7CgkJCQkvLwoJCQkJLy8JVHJ5IGFuZCBmaWd1cmUgb3V0
IGhvdyBsb25nIHNvbWV0aGluZwoJCQkJLy8JaXMgaW4gMzAgbWludXRlIHNlZ21lbnRzCgkJCQkv
LwoJCQkJJHRlc3Rwcm9naW5mbyA9ICRwcm9ncmFtYXJyYXlbJGNoYW5uZWxpbmRleF1bJHRlc3Ru
ZXh0XTsKCQkJCWlmICgkdGVzdHByb2dpbmZvLT5zdGFydHRzID09ICRwcm9naW5mby0+c3RhcnR0
cyAmJiAkdGVzdHByb2dpbmZvLT5lbmR0cyA9PSAkcHJvZ2luZm8tPmVuZHRzKQoJCQkJCSRjZWxs
d2lkdGgrKzsKCQkJCWVsc2UgYnJlYWs7CgoJCQl9CgkJCWlmKHNtZWxsc0xpa2VNb3ZpZSgkcHJv
Z2luZm8tPmR1cmF0aW9uLCAkcHJvZ2luZm8tPnByb2dUeXBlKSkKCQkJewoJCQkJJGZpbmFsQ29s
b3VyID0gJG1vdmllX2NvbG91cjsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRmaW5hbENvbG91ciA9
ICRjb2xvckFycmF5WyRwcm9naW5mby0+cHJvZ1R5cGVdOwoJCQl9CgkJCWlmICgkZmluYWxDb2xv
dXIgPT0gIiIpCgkJCXsKCQkJCSRmaW5hbENvbG91ciA9ICRsaXN0X2RlZmF1bHRfY29sb3VyOwoJ
CQl9CgkJCSRwcm9naW5mby0+c2V0Q29sb3VycygkZmluYWxDb2xvdXIsICRmaW5hbENvbG91cik7
CgkJCSRyZWNvcmRBcnJheUluZGV4ID0gMDsKCQkJLy8KCQkJLy8JQ2hlY2sgYW5kIHNlZSBpZiB0
aGlzIGlzIGluIFJlY29yZAoJCQkvLwlPbmNlIGRhdGEKCQkJLy8KCQkJJGlzQmVpbmdTaW5nbGVS
ZWNvcmRlZCA9IGlzSW5PbmNlUmVjb3JkKCRwcm9naW5mby0+Y2hhbmlkLCAkcHJvZ2luZm8tPnN0
YXJ0dHMpOwoJCQlpZiAoJGlzQmVpbmdTaW5nbGVSZWNvcmRlZCkKCQkJewoJCQkgICAgJHByb2dp
bmZvLT5zZXRDb2xvdXJzKCRsaXN0X3JlY2NvbG91ciwgJGZpbmFsQ29sb3VyKTsKCQkJfQoJCQkv
L3doaWxlKCRhUmVjb3JkID0gJHJlY29yZEFycmF5WyRyZWNvcmRBcnJheUluZGV4XSkKCQkJLy97
CgkJCS8vCWlmKCRhUmVjb3JkLT5jaGFuaWQgPT0gJHByb2dpbmZvLT5jaGFuaWQgJiYKCQkJLy8J
CSRhUmVjb3JkLT5zdGFydHRpbWUgPT0gJHByb2dpbmZvLT5zdGFydHRzKQoJCQkvLwl7CgkJCS8v
CQkkcHJvZ2luZm8tPnNldENvbG91cnMoJGxpc3RfcmVjY29sb3VyLCAkZmluYWxDb2xvdXIpOwoJ
CQkvLwl9CgkJCS8vCQkKCQkJLy8JJHJlY29yZEFycmF5SW5kZXggKz0gMTsJCgkJCS8vfQoJCQkv
LwoJCQkvLwlDaGVjayBhbmQgc2VlIGlmIHRoaXMgaXMgYW4gCgkJCS8vCWFsd2F5cyByZWNvcmQg
b3IgYSB0aW1lc2xvdAoJCQkvLwlyZWNvcmQKCQkJLy8KCQkJaWYoaXNJbkFsd2F5c1JlY29yZCgk
cHJvZ2luZm8tPnRpdGxlKSB8fAoJCQlpc0luQ2hhbm5lbEFsd2F5c1JlY29yZCgkbXljaGFubmVs
LT5jaGFuaWQsICRwcm9naW5mby0+dGl0bGUpIHx8CgkJCWlzSW5UaW1lc2xvdFJlY29yZCgkcHJv
Z2luZm8tPmNoYW5pZCwgJHByb2dpbmZvLT5zdGFydHRzLCAkcHJvZ2luZm8tPmVuZHRzLCAkcHJv
Z2luZm8tPnRpdGxlKSkKCQkJewoJCQkJJHByb2dpbmZvLT5zZXRDb2xvdXJzKCRsaXN0X3JlY2Nv
bG91ciwgJGZpbmFsQ29sb3VyKTsKCQkJfQoKCQkJJHByb2dpbmZvLT5wcmludFlvdXJzZWxmKCRj
ZWxsd2lkdGgsICR0aGVPZmZzZXQpOwoJCX0KCQkkbGFzdHRpdGxlID0gJHByb2dpbmZvLT50aXRs
ZTsKCQkkbGFzdHN1YnRpdGxlID0gJHByb2dpbmZvLT5zdWJ0aXRsZTsKCQkkbGFzdGVuZHRzID0g
JHByb2dpbmZvLT5lbmR0czsKCX0KCXByaW50ICJcdDwvdHI+XG4iOwoKCWlmICgkdGltZWJhciA9
PSAkdGltZUJhckNvdW50KSB7IC8vIHByaW50IHRoZSB0aW1lIGxpc3RpbmcgZXZlcnkgMTUgY2hh
bm5lbHMKCQkkYW5jaG9yKys7CgkJcHJpbnQoIjx0cj48dGQ+PGEgbmFtZT0nYW5jaG9yJGFuY2hv
ciciKTsKCQlwcmludCgiPEEgSFJFRj1cIm1haW4ucGhwP21vZGU9bGlzdGluZ3MmdGltZW9mZnNl
dD0kcGFzdE9mZnNldCNhbmNob3IkYW5jaG9yXCI+PElNRyBTUkM9XCJpbWFnZXMvbGVmdC5naWZc
IiBCT1JERVI9XCIwXCIgQUxUPVwibGVmdFwiPjwvQT48L3RkPiIpOwoJCWZvciAoJHRpbWVzbG90
ID0gMDsgJHRpbWVzbG90IDwgJHRpbWVTbG90czsgJHRpbWVzbG90ICs9IDEpIHsKCQkJJHRoZVRp
bWUgPSAkdGltZWFycmF5WyR0aW1lc2xvdF07CgkJICAgICR0aGVUaW1lLT5zZXRDb2xvdXIoJHRl
eHRfZGFyaywgJGxpc3RfZmdfY29sb3VyKTsKCQkJJHRoZVRpbWUtPnByaW50WW91cnNlbGYoKTsK
CQl9CgkJJHRpbWViYXIgPSAwOwoJCXByaW50KCI8dGQ+PEEgSFJFRj1cIm1haW4ucGhwP21vZGU9
bGlzdGluZ3MmdGltZW9mZnNldD0kZnV0dXJlT2Zmc2V0I2FuY2hvciRhbmNob3JcIj48SU1HIFNS
Qz1cImltYWdlcy9yaWdodC5naWZcIiBCT1JERVI9XCIwXCIgQUxUPVwicmlnaHRcIj48L0E+Iik7
CgkJcHJpbnQgIjwvdGQ+PC90cj4iOwoJfQoKCSRjaGFubmVsaW5kZXggKz0gMTsKCSR0aW1lYmFy
ICs9IDE7Cn0KcHJpbnQgIjwvVEFCTEU+PC9URD48L1RSPjwvVEFCTEU+XG4iOwoKCj8+Cg==

--0114-2330-18-PART-BREAK
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="single.php"

PD9waHAKCgkvLwoJLy8JVGhpcyBmaWxlIGlzIHBhcnQgb2YgTXl0aFdlYiwKCS8vCWEgcGhwLWJh
c2VkIGludGVyZmFjZSBpbnRvIE15dGhUVi4KCS8vCgkvLwkoYykgMjAwMiBieSBUaG9yIFNpZ3Zh
bGRhc29uIGFuZCBJc2FhYyBSaWNoYXJkcwoJLy8JTXl0aFdlYiBpcyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUKCS8vCUdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIHZlcnNpb24gMgoJLy8JKHNlZSBo
dHRwOi8vd3d3LmdudS5vcmcpCgkvLwoKCi8vCi8vCXNpbmdsZS5waHAgZGlzcGxheXMgb25lIHBy
b2dyYW0gYW5kIGxldHMgdXMKLy8JZWRpdCBpdCdzIHJlY29yZGluZyBzZXR0aW5ncwovLwoKCiR0
aGVDaGFubmVsID0gJF9HRVRbImNoYW5uZWwiXTsKJHRoZVN0YXJ0VGltZSA9ICRfR0VUWyJzdGFy
dHRpbWUiXTsKJHRoZUVuZFRpbWUgPSAkX0dFVFsiZW5kdGltZSJdOwoKaWYoaXNzZXQoJF9HRVRb
InJlZm9mZnNldCJdKSkKewoJJHRoZVJlZk9mZnNldCA9ICRfR0VUWyJyZWZvZmZzZXQiXTsKfQpl
bHNlCnsKCSR0aGVSZWZPZmZzZXQgPSAwOwp9CgkKLy8KLy8JSWYgd2UgZ290IGhlcmUgYnkgY2xp
Y2tpbmcgdGhlIHVwZGF0ZSByZWNvcmRpbmcgc2V0dGluZ3MgYnV0dG9uCi8vCXRoZW4gd2UgcmVh
bGx5IG5lZWQgdG8gdXBkYXRlIHRoZSByZWNvcmRpbmdzIChmaXJzdCkKLy8KCmlmKGlzc2V0KCRf
R0VUWyJzdWJtaXRyZWNvcmRpbmciXSkpCnsKCS8vCgkvLwlZdXAgLi4uIHF1ZXJ5IHRoZSBkYXRh
YmFzZSBhbmQgbWFrZSBzdXJlIGl0IGVuZHMKCS8vCXVwIGluIHRoZSBzYW1lIHN0YXRlIHRoZSB1
c2VyIGp1c3QgaW5kaWNhdGVkCgkvLwoJCgkkdGhlUmVjb3JkU2V0dGluZ3MgPSAkX0dFVFsicmVj
b3Jkc2V0dGluZ3MiXTsKCSR0aGVQcm9ncmFtID0gJF9HRVRbInByb2dyYW0iXTsKCQoJaWYoJHRo
ZVJlY29yZFNldHRpbmdzID09ICJSQSIpCgl7CgkJLy8KCQkvLwlXZSB3YW50IHRvIGFsd2F5cyBy
ZWNvcmQgdGhpcyBwcm9ncmFtCgkJLy8KCQlyZWNvcmRBbHdheXMoJHRoZVByb2dyYW0sIEZBTFNF
KTsKCX0KCWlmKCR0aGVSZWNvcmRTZXR0aW5ncyA9PSAiUkMiKQoJewoJCS8vCgkJLy8JV2Ugd2Fu
dCB0byBhbHdheXMgcmVjb3JkIHRoaXMgcHJvZ3JhbSBvbiB0aGlzIGNoYW5uZWwKCQkvLwoJCXJl
Y29yZEFsd2F5cygkdGhlUHJvZ3JhbSwgJHRoZUNoYW5uZWwpOwoJfQoJaWYoJHRoZVJlY29yZFNl
dHRpbmdzID09ICJSTyIpCgl7CgkJLy8KCQkvLwlXZSB3YW50IHRvIHJlY29yZCB0aGlzIHByb2dy
YW0ganVzdAoJCS8vCXRoaXMgb25jZQoJCS8vCgkJcmVjb3JkT25jZSgkdGhlQ2hhbm5lbCwgJHRo
ZVN0YXJ0VGltZSk7Cgl9CglpZigkdGhlUmVjb3JkU2V0dGluZ3MgPT0gIlJUIikKCXsKCQkvLwoJ
CS8vCVdlIHdhbnQgdG8gcmVjb3JkIHRoaXMgcHJvZ3JhbSBldmVyeQoJCS8vCWRheSBpbiB0aGlz
IHRpbWVzbG90CgkJLy8KCQlyZWNvcmRUaW1lc2xvdCgkdGhlQ2hhbm5lbCwgJHRoZVN0YXJ0VGlt
ZSwgJHRoZUVuZFRpbWUsICR0aGVQcm9ncmFtKTsKCX0KCWlmKCR0aGVSZWNvcmRTZXR0aW5ncyA9
PSAiTlIiKQoJewoJCS8vCgkJLy8JTmV2ZXIgcmVjb3JkIChub3Qgb25jZSwgYW5kIG5vdCBhbHdh
eXMpCgkJLy8KCQlkb250UmVjb3JkKCR0aGVQcm9ncmFtLCAkdGhlQ2hhbm5lbCwgJHRoZVN0YXJ0
VGltZSk7Cgl9CgkKfQoKLy8KLy8JR2V0IGEgbGlzdCBvZiBhbGwgdGhpbmdzIHRoYXQgYXJlCi8v
CWJlaW5nIHJlY29yZGVkIChhZnRlciBhbnkgdXBkYXRlcwovLwl0aGF0IG1heSBoYXZlIG9jY3Vy
ZWQgaW1tZWRpYXRlbHkKLy8JYWJvdmUuCi8vCiRyZWNvcmRBcnJheSA9IHNldHVwUmVjb3JkaW5n
cygpOwoKCgokdGhlcXVlcnkgPSAiU0VMRUNUIGNoYW5uZWwuY2hhbmlkLCBzdGFydHRpbWUsIGVu
ZHRpbWUsIHRpdGxlLCBzdWJ0aXRsZSwgZGVzY3JpcHRpb24sIGNhdGVnb3J5LCgoVU5JWF9USU1F
U1RBTVAoZW5kdGltZSkgLSBVTklYX1RJTUVTVEFNUChzdGFydHRpbWUpKSAvIDYwICkgYXMgZHVy
YXRpb24sIGNoYW5uZWwuY2hhbm51bSwgY2hhbm5lbC5jYWxsc2lnbiBGUk9NIHByb2dyYW0sY2hh
bm5lbCBXSEVSRSBzdGFydHRpbWUgPSBcIiR0aGVTdGFydFRpbWVcIiBhbmQgY2hhbm5lbC5jaGFu
aWQgPSAkdGhlQ2hhbm5lbCBBTkQgcHJvZ3JhbS5jaGFuaWQgPSBjaGFubmVsLmNoYW5pZCI7CiRz
aW5nbGVRdWVyeSA9IG15c3FsX3F1ZXJ5KCR0aGVxdWVyeSk7CndoaWxlKCRhUm93ID0gbXlzcWxf
ZmV0Y2hfcm93KCRzaW5nbGVRdWVyeSkpCnsKCS8vCgkvLwlQcmludCBhIHRhYmxlIHdpdGggcHJv
Z3JhbSBkYXRhIGFuZAoJLy8Jc29tZSBmb3JtcwoJLy8KCglwcmludCgiPFRBQkxFIFdJRFRIPVwi
MTAwJVwiIEJHQ09MT1I9XCIkbGlzdF9iZ19jb2xvdXJcIiBDRUxMU1BBQ0lORz1cIjEwXCIgQ0VM
TFBBRERJTkc9XCI3XCI+PFRSPjxURD4iKTsKCXByaW50KCI8Q0VOVEVSPiIpOwoJcHJpbnQoIjxU
QUJMRSBCR0NPTE9SPVwiJGxpc3RfYmdfY29sb3VyXCIgQ0VMTFNQQUNJTkc9XCI1XCIgQ0VMTFBB
RERJTkc9XCI1XCI+Iik7CglwcmludCgiPFRSIFZBTElHTj1cIlRPUFwiPjxURD5Qcm9ncmFtOjwv
VEQ+PFREIEJHQ09MT1I9XCIkbGlzdF9mZ19jb2xvdXJcIj4kYVJvd1szXSAiKTsKCgkvLwoJLy8J
SWYgaXQncyBhIG1vdmllLCBhZGQgYW4gSU1EQiBsaW5rCgkvLwoJaWYoc21lbGxzTGlrZU1vdmll
KCRhUm93WzddLCAkYVJvd1s2XSkpCXsKCQlwcmludCgiKDxhIGhyZWY9XCJodHRwOi8vd3d3Lmlt
ZGIuY29tL0ZpbmQ/c2VsZWN0PVRpdGxlcyZmb3I9IiAuIHVybGVuY29kZSgkYVJvd1szXSkgLiAi
XCI+SU1EQiBTZWFyY2g8L2E+KSIpOwoJfQoJZWxzZSBwcmludCgiKDxBIEhSRUY9XCJodHRwOi8v
d3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IiAuIHVybGVuY29kZSgkYVJvd1szXSkgLiAiXCI+R29v
Z2xlIFNlYXJjaDwvQT4pIik7CgoJcHJpbnQoIjwvdGQ+Iik7CglpZihzdHJsZW4oJGFSb3dbNl0p
ID4gMCkgcHJpbnQoIjwvVFI+PFRSIFZBTElHTj1cIlRPUFwiPjxURD5DYXRlZ29yeTo8L1REPjxU
RCBCR0NPTE9SPVwiJGxpc3RfZmdfY29sb3VyXCI+JGFSb3dbNl08L1REPjwvVFI+Iik7CglpZihz
dHJsZW4oJGFSb3dbNF0pID4gMCkgcHJpbnQoIjxUUiBWQUxJR049XCJUT1BcIj48VEQ+RXBpc29k
ZTo8L1REPjxURCBCR0NPTE9SPVwiJGxpc3RfZmdfY29sb3VyXCI+JGFSb3dbNF08L1REPjwvVFI+
Iik7CglwcmludCgiPFRSIFZBTElHTj1cIlRPUFwiPjxURD5DaGFubmVsOjwvVEQ+PFREIEJHQ09M
T1I9XCIkbGlzdF9mZ19jb2xvdXJcIj4kYVJvd1s5XSAkYVJvd1s4XTwvVEQ+PC9UUj4iKTsKCWlm
KHN0cmxlbigkYVJvd1s1XSkgPiAwKSBwcmludCgiPFRSIFZBTElHTj1cIlRPUFwiPjxURD5EZXNj
cmlwdGlvbjo8L1REPjxURCBXSURUSD1cIjMwMFwiIEJHQ09MT1I9XCIkbGlzdF9mZ19jb2xvdXJc
Ij4kYVJvd1s1XTwvVEQ+PC9UUj4iKTsKCSRzdGFydFRpbWUgPSBnZXRUaW1lU3RyaW5nKCRhUm93
WzFdKTsKCXByaW50KCI8VFIgVkFMSUdOPVwiVE9QXCI+PFREPkFpcmRhdGU6PC9URD48VEQgQkdD
T0xPUj1cIiRsaXN0X2ZnX2NvbG91clwiPiRzdGFydFRpbWU8L1REPjwvVFI+Iik7CglwcmludCgi
PFRSIFZBTElHTj1cIlRPUFwiPjxURD5EdXJhdGlvbjo8L1REPjxURCBCR0NPTE9SPVwiJGxpc3Rf
ZmdfY29sb3VyXCI+JGFSb3dbN10gbWludXRlczwvVEQ+PC9UUj4iKTsKCgkvLwoJLy8JTmVlZCB0
byBjaGVjayBpZiB0aGlzIGlzIGJlaW5nIHJlY29yZGVkCgkvLwlhbmQgZGlzcGxheSBhIGZvcm0g
dG8gdG9nZ2xlIGl0IG9uIGFuZAoJLy8Jb2ZmIAoJLy8KCSRpc0JlaW5nU2luZ2xlUmVjb3JkZWQg
PSBpc0luT25jZVJlY29yZCgkYVJvd1swXSwgJGFSb3dbMV0pOwoJJGlzQmVpbmdUaW1lc2xvdFJl
Y29yZGVkID0gaXNJblRpbWVzbG90UmVjb3JkKCRhUm93WzBdLCAkYVJvd1sxXSwgJGFSb3dbMl0s
ICRhUm93WzNdKTsKCSRpc0JlaW5nQ2hhbm5lbEFsd2F5c1JlY29yZGVkID0gaXNJbkNoYW5uZWxB
bHdheXNSZWNvcmQoJGFSb3dbMF0sICRhUm93WzNdKTsKCSRpc0JlaW5nQWx3YXlzUmVjb3JkZWQg
PSBpc0luQWx3YXlzUmVjb3JkKCRhUm93WzNdKTsKCSRyZWNvcmRBcnJheUluZGV4ID0gMDsKCXBy
aW50KCI8VFI+PFREPjwvVEQ+PFREIEJHQ09MT1I9XCIkbGlzdF9mZ19jb2xvdXJcIj4iKTsKCQoJ
Ly8KCS8vCUNyZWF0ZSBhIGZvcm0gdG8gdXBkYXRlIHRoZSByZWNvcmRpbmcgc2V0dGluZ3MKCS8v
CglwcmludCgiPEZPUk0gQUNUSU9OPVwibWFpbi5waHBcIiBNRVRIT0Q9XCJHRVRcIj4iKTsKCglw
cmludCgiPEJSPjxJTlBVVCBUWVBFPVwiUkFESU9cIiBOQU1FPVwicmVjb3Jkc2V0dGluZ3NcIiBW
QUxVRT1cIk5SXCIgIik7CglpZigJJGlzQmVpbmdTaW5nbGVSZWNvcmRlZCA9PSBGQUxTRSAmJiAK
CQkkaXNCZWluZ0Fsd2F5c1JlY29yZGVkID09IEZBTFNFICYmCgkJJGlzQmVpbmdDaGFubmVsQWx3
YXlzUmVjb3JkZWQgPT0gRkFMU0UgJiYKCQkkaXNCZWluZ1RpbWVzbG90UmVjb3JkZWQgPT0gRkFM
U0UpCgl7CgkJcHJpbnQoIkNIRUNLRUQgIik7Cgl9CglwcmludCgiPkRvbid0IHJlY29yZCB0aGlz
IHByb2dyYW08QlI+Iik7CgkKCXByaW50KCI8SU5QVVQgVFlQRT1cIlJBRElPXCIgTkFNRT1cInJl
Y29yZHNldHRpbmdzXCIgVkFMVUU9XCJST1wiICIpOwoJaWYoJGlzQmVpbmdTaW5nbGVSZWNvcmRl
ZCA9PSBUUlVFKQoJewoJCXByaW50KCJDSEVDS0VEICIpOwoJfQoJcHJpbnQoIj5SZWNvcmQgb25s
eSB0aGlzIHNob3dpbmcgb2YgdGhlIHByb2dyYW08QlI+Iik7CgoJcHJpbnQoIjxJTlBVVCBUWVBF
PVwiUkFESU9cIiBOQU1FPVwicmVjb3Jkc2V0dGluZ3NcIiBWQUxVRT1cIlJUXCIgIik7CglpZigk
aXNCZWluZ1RpbWVzbG90UmVjb3JkZWQgPT0gVFJVRSkKCXsKCQlwcmludCgiQ0hFQ0tFRCAiKTsK
CX0KCXByaW50KCI+UmVjb3JkIHRoaXMgcHJvZ3JhbSBpbiB0aGlzIHRpbWVzbG90IGV2ZXJ5IGRh
eTxCUj4iKTsKCglwcmludCgiPElOUFVUIFRZUEU9XCJSQURJT1wiIE5BTUU9XCJyZWNvcmRzZXR0
aW5nc1wiIFZBTFVFPVwiUkNcIiAiKTsKCWlmKCRpc0JlaW5nQ2hhbm5lbEFsd2F5c1JlY29yZGVk
ID09IFRSVUUpCgl7CgkJcHJpbnQoIkNIRUNLRUQgIik7Cgl9CglwcmludCgiPkFsd2F5cyByZWNv
cmQgdGhpcyBwcm9ncmFtIG9uIHRoaXMgY2hhbm5lbDxCUj4iKTsKCglwcmludCgiPElOUFVUIFRZ
UEU9XCJSQURJT1wiIE5BTUU9XCJyZWNvcmRzZXR0aW5nc1wiIFZBTFVFPVwiUkFcIiAiKTsKCWlm
KCRpc0JlaW5nQWx3YXlzUmVjb3JkZWQgPT0gVFJVRSkKCXsKCQlwcmludCgiQ0hFQ0tFRCAiKTsK
CX0KCXByaW50KCI+QWx3YXlzIHJlY29yZCB0aGlzIHByb2dyYW0gd2hlcmV2ZXI8QlI+PEJSPiIp
OwoKCXByaW50KCI8SU5QVVQgVFlQRT1cIkhJRERFTlwiIE5BTUU9XCJtb2RlXCIgVkFMVUU9XCJz
aW5nbGVcIj4iKTsKCXByaW50KCI8SU5QVVQgVFlQRT1cIkhJRERFTlwiIE5BTUU9XCJjaGFubmVs
XCIgVkFMVUU9XCIkdGhlQ2hhbm5lbFwiPiIpOwoJcHJpbnQoIjxJTlBVVCBUWVBFPVwiSElEREVO
XCIgTkFNRT1cInN0YXJ0dGltZVwiIFZBTFVFPVwiJHRoZVN0YXJ0VGltZVwiPiIpOwoJcHJpbnQo
IjxJTlBVVCBUWVBFPVwiSElEREVOXCIgTkFNRT1cImVuZHRpbWVcIiBWQUxVRT1cIiR0aGVFbmRU
aW1lXCI+Iik7CglwcmludCgiPElOUFVUIFRZUEU9XCJISURERU5cIiBOQU1FPVwicHJvZ3JhbVwi
IFZBTFVFPVwiJGFSb3dbM11cIj4iKTsKCXByaW50KCI8SU5QVVQgVFlQRT1cIkhJRERFTlwiIE5B
TUU9XCJyZWZvZmZzZXRcIiBWQUxVRT1cIiR0aGVSZWZPZmZzZXRcIj4iKTsKCXByaW50KCI8Q0VO
VEVSPjxJTlBVVCBUWVBFPVwiU1VCTUlUXCIgTkFNRT1cInN1Ym1pdHJlY29yZGluZ1wiIFZBTFVF
PVwiVXBkYXRlIFJlY29yZGluZyBTZXR0aW5nc1wiPjwvQ0VOVEVSPiIpOwoJCgoJcHJpbnQoIjwv
Rk9STT4iKTsKCXByaW50KCI8L1REPjwvVFI+Iik7CgkvLwoJLy8JQWRkIGEgZm9ybSB0byBnbyBi
YWNrIHRvIHRoZSBsaXN0aW5ncyAKCS8vCXByZXNlcnZpbmcgdGhlIGxhc3Qgb2Zmc2V0IHdlIHdl
cmUgCgkvLwl1c2luZwoJLy8JCglwcmludCgiPFRSPjxURD48L1REPjxURCBWQUxJR049XCJDRU5U
RVJcIj4iKTsKCXByaW50KCI8Q0VOVEVSPiIpOwoJcHJpbnQoIjxGT1JNIEFDVElPTj1cIm1haW4u
cGhwXCIgTUVUSE9EPVwiR0VUXCI+Iik7CglwcmludCgiPElOUFVUIFRZUEU9XCJISURERU5cIiBO
QU1FPVwibW9kZVwiIFZBTFVFPVwibGlzdGluZ3NcIj4iKTsKCXByaW50KCI8SU5QVVQgVFlQRT1c
IkhJRERFTlwiIE5BTUU9XCJ0aW1lb2Zmc2V0XCIgVkFMVUU9XCIkdGhlUmVmT2Zmc2V0XCI+Iik7
CglwcmludCgiPElOUFVUIFRZUEU9XCJTVUJNSVRcIiBOQU1FPVwiYmFja1wiIFZBTFVFPVwiUmV0
dXJuIFRvIExpc3RpbmdzXCI+Iik7CglwcmludCgiPC9DRU5URVI+Iik7CglwcmludCgiPC9GT1JN
PiIpOwoKCXByaW50KCI8L1REPjwvVFI+Iik7CgkKCQoJcHJpbnQoIjwvVEFCTEU+Iik7Cglwcmlu
dCgiPC9DRU5URVI+Iik7CglwcmludCgiPC9URD48L1RSPiIpOwoJcHJpbnQoIjwvVEFCTEU+Iik7
CgkKfQoKPz4K

--0114-2330-18-PART-BREAK--





More information about the mythtv-dev mailing list