<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>34540</bug_id>
          
          <creation_ts>2010-02-03 12:36:25 -0800</creation_ts>
          <short_desc>Establish a directory for third-party Python code</short_desc>
          <delta_ts>2010-02-22 11:20:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>187475</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-03 12:36:25 -0800</bug_when>
    <thetext>This report stems from the following webkit-dev thread:

https://lists.webkit.org/pipermail/webkit-dev/2010-January/011394.html

I&apos;m thinking a location like one of the following might be good--

WebKitTools/Scripts/webkitpy/thirdparty, or
WebKitTools/Scripts/webkitpy/external</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192178</commentid>
    <comment_count>1</comment_count>
      <attachid>49126</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-20 08:58:52 -0800</bug_when>
    <thetext>Created attachment 49126
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192179</commentid>
    <comment_count>2</comment_count>
      <attachid>49126</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-20 09:25:15 -0800</bug_when>
    <thetext>Comment on attachment 49126
Proposed patch

I approve this product and/or service.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192185</commentid>
    <comment_count>3</comment_count>
      <attachid>49126</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-20 09:43:23 -0800</bug_when>
    <thetext>Comment on attachment 49126
Proposed patch

Clearing flags on attachment: 49126

Committed r55053: &lt;http://trac.webkit.org/changeset/55053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192186</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-20 09:43:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192517</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-22 10:43:58 -0800</bug_when>
    <thetext>So should I move simplejson from WebKitTools/ to WebKitTools/Scripts/webkitpy/thirdparty, then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192539</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-22 11:20:59 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; So should I move simplejson from WebKitTools/ to
&gt; WebKitTools/Scripts/webkitpy/thirdparty, then?

Already done: https://bugs.webkit.org/show_bug.cgi?id=35196</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49126</attachid>
            <date>2010-02-20 08:58:52 -0800</date>
            <delta_ts>2010-02-20 09:43:22 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-34540-1.diff</filename>
            <type>text/plain</type>
            <size>24377</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1MDUyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDItMjAgIENocmlzIEplcmRvbmVrICA8
Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3JlYXRlZCBhIGRpcmVjdG9yeSBmb3IgdGhpcmQtcGFydHkgUHl0aG9u
IGNvZGUsIGFuZCBtb3ZlZAorICAgICAgICBhdXRvaW5zdGFsbC5weSBpbnRvIGl0LgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDU0MAorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9fX2luaXRfXy5weToKKyAgICAgICAgICAtIFVwZGF0ZWQg
ImltcG9ydCBhdXRvaW5zdGFsbCIgc3RhdGVtZW50LgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9hdXRvaW5zdGFsbC5weTogUmVtb3ZlZC4KKyAgICAgICAgICAtIE1vdmVkIHRvIHRoaXJk
cGFydHkvYXV0b2luc3RhbGwucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2lu
aXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L2F1
dG9pbnN0YWxsLnB5OiBDb3BpZWQgZnJvbSBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1
dG9pbnN0YWxsLnB5LgorCiAyMDEwLTAyLTIwICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNA
Z25vbWUub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG9idmlvdXMgZml4IGZvciB0aGUgcHl0
aG9uIGZhaWx1cmUgaW4gb3VyIG5ldyBidWlsZGJvdApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L19faW5pdF9fLnB5CShyZXZpc2lvbiA1NTA1MikKKysrIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1
bGUgZmlsZXMKIAotaW1wb3J0IGF1dG9pbnN0YWxsCitpbXBvcnQgdGhpcmRwYXJ0eS5hdXRvaW5z
dGFsbCBhcyBhdXRvaW5zdGFsbAogCiAjIExpc3Qgb3VyIHRoaXJkLXBhcnR5IGxpYnJhcnkgZGVw
ZW5kZW5jaWVzIGhlcmUgYW5kIHdoZXJlIHRoZXkgY2FuIGJlCiAjIGRvd25sb2FkZWQuCkluZGV4
OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2F1dG9pbnN0YWxsLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXV0b2luc3RhbGwucHkJKHJldmlzaW9u
IDU1MDUyKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbC5weQko
d29ya2luZyBjb3B5KQpAQCAtMSwzMzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMDksIERh
bmllbCBLcmVjaCBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyAKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAKLSMgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAKLSMgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiB0aGUgRGFuaWVsIEtyZWNoIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jIAotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0iIiJcCi1wYWNrYWdlIGxvYWRlciBmb3IgYXV0byBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdl
cy4KLQotQSBwYWNrYWdlIGxvYWRlciBpbiB0aGUgc3Bpcml0IG9mIFplcm8gSW5zdGFsbCB0aGF0
IGNhbiBiZSB1c2VkIHRvCi1pbmplY3QgZGVwZW5kZW5jaWVzIGludG8gdGhlIGltcG9ydCBwcm9j
ZXNzLiAKLQotCi1UbyBpbnN0YWxsOjoKLQotICAgIGVhc3lfaW5zdGFsbCAtVSBhdXRvaW5zdGFs
bAotCi0gICAgICBvciAKLQotICAgIGRvd25sb2FkLCB1bnBhY2ssIHB5dGhvbiBzZXR1cC5weSBp
bnN0YWxsCi0KLSAgICAgIG9yIAotCi0gICAgdHJ5IHRoZSBib290c3RyYXAgbG9hZGVyLiBTZWUg
YmVsb3cuCi0KLQotVG8gdXNlOjoKLQotICAgICMgWW91IGNhbiBiaW5kIGFueSBwYWNrYWdlIG5h
bWUgdG8gYSBVUkwgcG9pbnRpbmcgdG8gc29tZXRoaW5nCi0gICAgIyB0aGF0IGNhbiBiZSBpbXBv
cnRlZCB1c2luZyB0aGUgemlwaW1wb3J0ZXIuCi0KLSAgICBhdXRvaW5zdGFsbC5iaW5kKCJweW1h
cmMiLCAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy8yLjUvcC9weW1hcmMvcHltYXJj
LTIuMS1weTIuNS5lZ2ciKQotCi0gICAgaW1wb3J0IHB5bWFyYwotCi0gICAgcHJpbnQgcHltYXJj
Ll9fdmVyc2lvbl9fLCBweW1hcmMuX19maWxlX18KLQotICAgIAotQ2hhbmdlbG9nOjoKLQotLSBh
ZGRlZCBzdXBwb3J0IGZvciBub24gdG9wIGxldmVsIHBhY2thZ2VzLgotLSBjYWNoZSBmaWxlcyBu
b3cgdXNlIGZpbGVuYW1lIHBhcnQgZnJvbSBVUkwuCi0tIGFwcGxpZWQgcGF0Y2ggZnJvbSBFcmlj
IFNlaWRlbCA8ZXNlaWRlbEBnb29nbGUuY29tPiB0byBhZGQgc3VwcG9ydAotZm9yIGxvYWRpbmcg
bW9kdWxlcyB3aGVyZSB0aGUgbW9kdWxlIGlzIG5vdCBhdCB0aGUgcm9vdCBvZiB0aGUgLnppcAot
ZmlsZS4KLQotCi1UT0RPOjoKLQotLSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBpbnRlbmRlZCB1c2Ug
Y2FzZQotLSBhZGRyZXNzIG90aGVyIGlzc3VlcyBwb2ludGVkIG91dCBpbjoKLQotICAgIGh0dHA6
Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAwOC1NYXJjaC8wNzc5MjYu
aHRtbAotCi1TY3JpYmJsZXM6OgotCi1wdWxsIHZzLiBwdXNoCi11c2VyIHZzLiBzeXN0ZW0KLXdl
YiB2cy4gZmlsZXN5c3RlbQotYXV0byB2cy4gbWFudWFsCi0KLW1hbmFnZSBkZXZlbG9wbWVudCBz
YW5kYm94ZXMKLQotb3B0aW9uYWwgaW50ZXJmYWNlcy4uLgotCi0gICAgZGVmIGdldF9kYXRhKHBh
dGhuYW1lKSAtPiBzdHJpbmcgd2l0aCBmaWxlIGRhdGEuCi0KLSAgICBSZXR1cm4gdGhlIGRhdGEg
YXNzb2NpYXRlZCB3aXRoICdwYXRobmFtZScuIFJhaXNlIElPRXJyb3IgaWYKLSAgICB0aGUgZmls
ZSB3YXNuJ3QgZm91bmQuIik7Ci0KLSAgICBkZWYgaXNfcGFja2FnZSwKLSAgICAiaXNfcGFja2Fn
ZShmdWxsbmFtZSkgLT4gYm9vbC4KLQotICAgIFJldHVybiBUcnVlIGlmIHRoZSBtb2R1bGUgc3Bl
Y2lmaWVkIGJ5IGZ1bGxuYW1lIGlzIGEgcGFja2FnZS4KLSAgICBSYWlzZSBaaXBJbXBvcnRFcnJv
ciBpcyB0aGUgbW9kdWxlIGNvdWxkbid0IGJlIGZvdW5kLiIpOwotCi0gICAgZGVmIGdldF9jb2Rl
LAotICAgICJnZXRfY29kZShmdWxsbmFtZSkgLT4gY29kZSBvYmplY3QuCi0KLSAgICBSZXR1cm4g
dGhlIGNvZGUgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4gUmFpc2UgWmlwSW1wb3J0
RXJyb3IKLSAgICBpcyB0aGUgbW9kdWxlIGNvdWxkbid0IGJlIGZvdW5kLiIpOwotCi0gICAgZGVm
IGdldF9zb3VyY2UsCi0gICAgImdldF9zb3VyY2UoZnVsbG5hbWUpIC0+IHNvdXJjZSBzdHJpbmcu
Ci0KLSAgICBSZXR1cm4gdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4g
UmFpc2UgWmlwSW1wb3J0RXJyb3IKLSAgICBpcyB0aGUgbW9kdWxlIGNvdWxkbid0IGJlIGZvdW5k
LCByZXR1cm4gTm9uZSBpZiB0aGUgYXJjaGl2ZSBkb2VzCi0gICAgY29udGFpbiB0aGUgbW9kdWxl
LCBidXQgaGFzIG5vIHNvdXJjZSBmb3IgaXQuIik7Ci0KLQotQXV0b2luc3RhbGwgY2FuIGFsc28g
YmUgYm9vdHN0cmFwZWQgd2l0aCB0aGUgbmFzY2VudCBwYWNrYWdlIGxvYWRlcgotYm9vdHN0cmFw
IG1vZHVsZS4gRm9yIGV4YW1wbGU6OgotCi0gICAgIyAgb3IgdmlhIHRoZSBib290c3RyYXAKLSAg
ICAjIGxvYWRlci4KLQotICAgIHRyeToKLSAgICAgICAgX3ZlcnNpb24gPSAiMC4yIgotICAgICAg
ICBpbXBvcnQgYXV0b2luc3RhbGwKLSAgICAgICAgaWYgYXV0b2luc3RhbGwuX192ZXJzaW9uX18g
IT0gX3ZlcnNpb246Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiQSBkaWZmZXJlbnQg
dmVyc2lvbiB0aGFuIGV4cGVjdGVkIGZvdW5kLiIpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yLCBl
OgotICAgICAgICAjIGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9zYW5kYm94L3RydW5r
L2Jvb3RzdHJhcC9ib290c3RyYXAucHkKLSAgICAgICAgaW1wb3J0IGJvb3RzdHJhcCAKLSAgICAg
ICAgcHlwaSA9ICJodHRwOi8vcHlwaS5weXRob24ub3JnIgotICAgICAgICBkaXIgPSAicGFja2Fn
ZXMvc291cmNlL2EvYXV0b2luc3RhbGwiCi0gICAgICAgIHVybCA9ICIlcy8lcy9hdXRvaW5zdGFs
bC0lcy50YXIuZ3oiICUgKHB5cGksIGRpciwgX3ZlcnNpb24pCi0gICAgICAgIGJvb3RzdHJhcC5t
YWluKCh1cmwsKSkKLSAgICAgICAgaW1wb3J0IGF1dG9pbnN0YWxsCi0KLVJlZmVyZW5jZXM6Ogot
Ci0gIGh0dHA6Ly8waW5zdGFsbC5uZXQvCi0gIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVw
cy9wZXAtMDMwMi8KLSAgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL3NhbmRib3gvdHJ1
bmsvaW1wb3J0X2luX3B5Ci0gIGh0dHA6Ly8waW5zdGFsbC5uZXQvaW5qZWN0b3ItZmluZC5odG1s
Ci0gIGh0dHA6Ly9yb3NjaWR1cy5jb20vZGVza3RvcC9ub2RlLzkwMwotCi0iIiIKLQotIyBUbyBh
bGxvdyB1c2Ugb2YgdGhlICJ3aXRoIiBrZXl3b3JkIGZvciBQeXRob24gMi41IHVzZXJzLgotZnJv
bSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1fX3ZlcnNpb25fXyA9ICIwLjIi
Ci1fX2RvY2Zvcm1hdF9fID0gInJlc3RydWN0dXJlZHRleHQgZW4iCi0KLWltcG9ydCBvcwotaW1w
b3J0IG5ldwotaW1wb3J0IHN5cwotaW1wb3J0IHVybGxpYgotaW1wb3J0IGxvZ2dpbmcKLWltcG9y
dCB0ZW1wZmlsZQotaW1wb3J0IHppcGltcG9ydAotCi1fbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCi0KLQotX2ltcG9ydGVyID0gTm9uZQotCi1kZWYgX2dldEltcG9ydGVyKCk6
Ci0gICAgZ2xvYmFsIF9pbXBvcnRlcgotICAgIGlmIF9pbXBvcnRlciBpcyBOb25lOgotICAgICAg
ICBfaW1wb3J0ZXIgPSBJbXBvcnRlcigpCi0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKF9p
bXBvcnRlcikKLSAgICByZXR1cm4gX2ltcG9ydGVyCi0KLWRlZiBiaW5kKHBhY2thZ2VfbmFtZSwg
dXJsLCB6aXBfc3VicGF0aD1Ob25lKToKLSAgICAiIiJiaW5kIGEgdG9wIGxldmVsIHBhY2thZ2Ug
bmFtZSB0byBhIFVSTC4KLQotICAgIFRoZSBwYWNrYWdlIG5hbWUgc2hvdWxkIGJlIGEgcGFja2Fn
ZSBuYW1lIGFuZCB0aGUgdXJsIHNob3VsZCBiZSBhCi0gICAgdXJsIHRvIHNvbWV0aGluZyB0aGF0
IGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgemlwaW1wb3J0ZXIuCi0KLSAgICBPcHRpb25hbCB6
aXBfc3VicGF0aCBwYXJhbWV0ZXIgYWxsb3dzIHNlYXJjaGluZyBmb3IgbW9kdWxlcwotICAgIGJl
bG93IHRoZSByb290IGxldmVsIG9mIHRoZSB6aXAgZmlsZS4KLSAgICAiIiIKLSAgICBfZ2V0SW1w
b3J0ZXIoKS5iaW5kKHBhY2thZ2VfbmFtZSwgdXJsLCB6aXBfc3VicGF0aCkKLQotCi1jbGFzcyBD
YWNoZShvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpcmVjdG9yeT1Ob25lKToK
LSAgICAgICAgaWYgZGlyZWN0b3J5IGlzIE5vbmU6Ci0gICAgICAgICAgICAjIERlZmF1bHQgdG8g
cHV0dGluZyB0aGUgY2FjaGUgZGlyZWN0b3J5IGluIHRoZSBzYW1lIGRpcmVjdG9yeQotICAgICAg
ICAgICAgIyBhcyB0aGlzIGZpbGUuCi0gICAgICAgICAgICBjb250YWluaW5nX2RpcmVjdG9yeSA9
IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICAgICAgICAgIGRpcmVjdG9yeSA9IG9zLnBh
dGguam9pbihjb250YWluaW5nX2RpcmVjdG9yeSwgImF1dG9pbnN0YWxsLmNhY2hlLmQiKTsKLQot
ICAgICAgICBzZWxmLmRpcmVjdG9yeSA9IGRpcmVjdG9yeQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5kaXJlY3RvcnkpOgotICAgICAgICAgICAg
ICAgIHNlbGYuX2NyZWF0ZV9jYWNoZV9kaXJlY3RvcnkoKQotICAgICAgICBleGNlcHQgRXhjZXB0
aW9uLCBlcnI6Ci0gICAgICAgICAgICBfbG9nZ2VyLmV4Y2VwdGlvbihlcnIpCi0gICAgICAgICAg
ICBzZWxmLmNhY2hlX2RpcmVjdHJ5ID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIF9sb2dn
ZXIuaW5mbygiVXNpbmcgY2FjaGUgZGlyZWN0b3J5ICclcycuIiAlIHNlbGYuZGlyZWN0b3J5KQot
ICAgIAotICAgIGRlZiBfY3JlYXRlX2NhY2hlX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgX2xv
Z2dlci5kZWJ1ZygiQ3JlYXRpbmcgY2FjaGUgZGlyZWN0b3J5ICclcycuIiAlIHNlbGYuZGlyZWN0
b3J5KQotICAgICAgICBvcy5ta2RpcihzZWxmLmRpcmVjdG9yeSkKLSAgICAgICAgcmVhZG1lX3Bh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICJSRUFETUUiKQotICAgICAgICB3aXRo
IG9wZW4ocmVhZG1lX3BhdGgsICJ3IikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoIlRoaXMg
ZGlyZWN0b3J5IHdhcyBhdXRvLWdlbmVyYXRlZCBieSAnJXMnLlxuIgotICAgICAgICAgICAgICAg
ICAgICAiSXQgaXMgc2FmZSB0byBkZWxldGUuXG4iICUgX19maWxlX18pCi0KLSAgICBkZWYgZ2V0
KHNlbGYsIHVybCk6Ci0gICAgICAgIF9sb2dnZXIuaW5mbygiR2V0dGluZyAnJXMnIGZyb20gY2Fj
aGUuIiAlIHVybCkKLSAgICAgICAgZmlsZW5hbWUgPSB1cmwucnNwbGl0KCIvIilbLTFdCi0KLSAg
ICAgICAgIyBzbyB0aGF0IHNvdXJjZSB1cmwgaXMgc2lnbmlmaWNhbnQgaW4gZGV0ZXJtaW5pbmcg
Y2FjaGUgaGl0cwotICAgICAgICBkID0gb3MucGF0aC5qb2luKHNlbGYuZGlyZWN0b3J5LCAiJXMi
ICUgaGFzaCh1cmwpKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZCk6Ci0gICAgICAg
ICAgICBvcy5ta2RpcihkKQotCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQsIGZp
bGVuYW1lKSAKLQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6Ci0gICAgICAg
ICAgICBfbG9nZ2VyLmRlYnVnKCIuLi4gYWxyZWFkeSBjYWNoZWQgaW4gZmlsZSAnJXMnLiIgJSBm
aWxlbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9sb2dnZXIuZGVidWcoIi4uLiBu
b3QgaW4gY2FjaGUuIENhY2hpbmcgaW4gJyVzJy4iICUgZmlsZW5hbWUpCi0gICAgICAgICAgICBz
dHJlYW0gPSBmaWxlKGZpbGVuYW1lLCAid2IiKQotICAgICAgICAgICAgc2VsZi5kb3dubG9hZCh1
cmwsIHN0cmVhbSkKLSAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpCi0gICAgICAgIHJldHVybiBm
aWxlbmFtZQotCi0gICAgZGVmIGRvd25sb2FkKHNlbGYsIHVybCwgc3RyZWFtKToKLSAgICAgICAg
X2xvZ2dlci5pbmZvKCJEb3dubG9hZGluZzogJXMiICUgdXJsKQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBuZXRzdHJlYW0gPSB1cmxsaWIudXJsb3Blbih1cmwpCi0gICAgICAgICAgICBjb2Rl
ID0gMjAwCi0gICAgICAgICAgICBpZiBoYXNhdHRyKG5ldHN0cmVhbSwgImdldGNvZGUiKToKLSAg
ICAgICAgICAgICAgICBjb2RlID0gbmV0c3RyZWFtLmdldGNvZGUoKQotICAgICAgICAgICAgaWYg
bm90IDIwMCA8PSBjb2RlIDwgMzAwOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
IkhUVFAgRXJyb3IgY29kZSAlcyIgJSBjb2RlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl
cnI6Ci0gICAgICAgICAgICBfbG9nZ2VyLmV4Y2VwdGlvbihlcnIpCi0KLSAgICAgICAgQlVGU0la
RSA9IDIqKjEzICAjIDhLQgotICAgICAgICBzaXplID0gMAotICAgICAgICB3aGlsZSBUcnVlOgot
ICAgICAgICAgICAgZGF0YSA9IG5ldHN0cmVhbS5yZWFkKEJVRlNJWkUpCi0gICAgICAgICAgICBp
ZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc3RyZWFtLndy
aXRlKGRhdGEpCi0gICAgICAgICAgICBzaXplICs9IGxlbihkYXRhKQotICAgICAgICBuZXRzdHJl
YW0uY2xvc2UoKQotICAgICAgICBfbG9nZ2VyLmluZm8oIkRvd25sb2FkZWQgJWQgYnl0ZXMuIiAl
IHNpemUpCi0KLQotY2xhc3MgSW1wb3J0ZXIob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmKToKLSAgICAgICAgc2VsZi5wYWNrYWdlcyA9IHt9Ci0gICAgICAgIHNlbGYuX19jYWNoZSA9
IE5vbmUKLQotICAgIGRlZiBfX2dldF9zdG9yZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X19zdG9yZQotICAgIHN0b3JlID0gcHJvcGVydHkoX19nZXRfc3RvcmUpCi0KLSAgICBkZWYgX2dl
dF9jYWNoZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fX2NhY2hlIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBzZWxmLl9fY2FjaGUgPSBDYWNoZSgpCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2FjaGUK
LSAgICBkZWYgX3NldF9jYWNoZShzZWxmLCBjYWNoZSk6Ci0gICAgICAgIHNlbGYuX19jYWNoZSA9
IGNhY2hlCi0gICAgY2FjaGUgPSBwcm9wZXJ0eShfZ2V0X2NhY2hlLCBfc2V0X2NhY2hlKQotCi0g
ICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICAi
IiItPiBzZWxmIG9yIE5vbmUuCi0KLSAgICAgICAgU2VhcmNoIGZvciBhIG1vZHVsZSBzcGVjaWZp
ZWQgYnkgJ2Z1bGxuYW1lJy4gJ2Z1bGxuYW1lJyBtdXN0IGJlCi0gICAgICAgIHRoZSBmdWxseSBx
dWFsaWZpZWQgKGRvdHRlZCkgbW9kdWxlIG5hbWUuIEl0IHJldHVybnMgdGhlCi0gICAgICAgIHpp
cGltcG9ydGVyIGluc3RhbmNlIGl0c2VsZiBpZiB0aGUgbW9kdWxlIHdhcyBmb3VuZCwgb3IgTm9u
ZSBpZgotICAgICAgICBpdCB3YXNuJ3QuIFRoZSBvcHRpb25hbCAncGF0aCcgYXJndW1lbnQgaXMg
aWdub3JlZCAtLSBpdCdzCi0gICAgICAgIHRoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhl
IGltcG9ydGVyIHByb3RvY29sLiIpOwotICAgICAgICAiIiIKLSAgICAgICAgX2xvZ2dlci5kZWJ1
ZygiZmluZF9tb2R1bGUoJXMsIHBhdGg9JXMpIiAlIChmdWxsbmFtZSwgcGF0aCkpCi0KLSAgICAg
ICAgaWYgZnVsbG5hbWUgaW4gc2VsZi5wYWNrYWdlczoKLSAgICAgICAgICAgICh1cmwsIHppcF9z
dWJwYXRoKSA9IHNlbGYucGFja2FnZXNbZnVsbG5hbWVdCi0gICAgICAgICAgICBmaWxlbmFtZSA9
IHNlbGYuY2FjaGUuZ2V0KHVybCkKLSAgICAgICAgICAgIHppcF9wYXRoID0gIiVzLyVzIiAlIChm
aWxlbmFtZSwgemlwX3N1YnBhdGgpIGlmIHppcF9zdWJwYXRoIGVsc2UgZmlsZW5hbWUKLSAgICAg
ICAgICAgIF9sb2dnZXIuZGVidWcoImZ1bGxuYW1lOiAlcyB1cmw6ICVzIHBhdGg6ICVzIHppcF9w
YXRoOiAlcyIgJSAoZnVsbG5hbWUsIHVybCwgcGF0aCwgemlwX3BhdGgpKQotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIGxvYWRlciA9IHppcGltcG9ydC56aXBpbXBvcnRlcih6aXBf
cGF0aCkKLSAgICAgICAgICAgICAgICBfbG9nZ2VyLmRlYnVnKCJyZXR1cm5pbmc6ICVzIiAlIGxv
YWRlcikKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAg
X2xvZ2dlci5leGNlcHRpb24oZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAg
ICAgICAgcmV0dXJuIGxvYWRlcgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGJpbmQo
c2VsZiwgcGFja2FnZV9uYW1lLCB1cmwsIHppcF9zdWJwYXRoKToKLSAgICAgICAgX2xvZ2dlci5p
bmZvKCJiaW5kaW5nOiAlcyAtPiAlcyBzdWJwYXRoOiAlcyIgJSAocGFja2FnZV9uYW1lLCB1cmws
IHppcF9zdWJwYXRoKSkKLSAgICAgICAgc2VsZi5wYWNrYWdlc1twYWNrYWdlX25hbWVdID0gKHVy
bCwgemlwX3N1YnBhdGgpCi0KLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgaW1wb3J0
IGxvZ2dpbmcKLSAgICAjbG9nZ2luZy5iYXNpY0NvbmZpZygpCi0gICAgbG9nZ2VyID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoKQotCi0gICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCi0g
ICAgY29uc29sZS5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQotICAgICMgc2V0IGEgZm9ybWF0IHdo
aWNoIGlzIHNpbXBsZXIgZm9yIGNvbnNvbGUgdXNlCi0gICAgZm9ybWF0dGVyID0gbG9nZ2luZy5G
b3JtYXR0ZXIoJyUobmFtZSktMTJzOiAlKGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMnKQotICAg
ICMgdGVsbCB0aGUgaGFuZGxlciB0byB1c2UgdGhpcyBmb3JtYXQKLSAgICBjb25zb2xlLnNldEZv
cm1hdHRlcihmb3JtYXR0ZXIpCi0gICAgIyBhZGQgdGhlIGhhbmRsZXIgdG8gdGhlIHJvb3QgbG9n
Z2VyCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZSkKLSAgICBsb2dnZXIuc2V0TGV2ZWwo
bG9nZ2luZy5JTkZPKQotCi0gICAgYmluZCgicHltYXJjIiwgImh0dHA6Ly9weXBpLnB5dGhvbi5v
cmcvcGFja2FnZXMvMi41L3AvcHltYXJjL3B5bWFyYy0yLjEtcHkyLjUuZWdnIikKLQotICAgIGlt
cG9ydCBweW1hcmMKLQotICAgIHByaW50IHB5bWFyYy5fX3ZlcnNpb25fXywgcHltYXJjLl9fZmls
ZV9fCi0KLSAgICBhc3NlcnQgcHltYXJjLl9fdmVyc2lvbl9fPT0iMi4xIgotCi0gICAgZCA9IF9n
ZXRJbXBvcnRlcigpLmNhY2hlLmRpcmVjdG9yeQotICAgIGFzc2VydCBkIGluIHB5bWFyYy5fX2Zp
bGVfXywgIiclcycgbm90IGZvdW5kIGluIHB5bWFyYy5fX2ZpbGVfXyAoJXMpIiAlIChkLCBweW1h
cmMuX19maWxlX18pCi0KLSAgICAjIENhbiBub3cgYWxzbyBiaW5kIHRvIG5vbiB0b3AgbGV2ZWwg
cGFja2FnZXMuIFRoZSBwYWNrYWdlcwotICAgICMgbGVhZGluZyB1cCB0byB0aGUgcGFja2FnZSBi
ZWluZyBib3VuZCB3aWxsIG5lZWQgdG8gYmUgZGVmaW5lZAotICAgICMgaG93ZXZlci4KLSAgICAj
Ci0gICAgIyBiaW5kKCJyZGYucGx1Z2lucy5zdG9yZXMubWVtb3J5IiwgCi0gICAgIyAgICAgICJo
dHRwOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzLzIuNS9yL3JkZi5wbHVnaW5zLnN0b3Jlcy5t
ZW1lb3J5L3JkZi5wbHVnaW5zLnN0b3Jlcy5tZW1vcnktMC45YS1weTIuNS5lZ2ciKQotICAgICMK
LSAgICAjIGZyb20gcmRmLnBsdWdpbnMuc3RvcmVzLm1lbW9yeSBpbXBvcnQgTWVtb3J5Ci0KLQpJ
bmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9f
X2luaXRfXy5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9fX2luaXRfXy5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorIyBSZXF1
aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVz
CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvYXV0b2luc3Rh
bGwucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L2F1dG9pbnN0YWxsLnB5CShyZXZpc2lvbiA1NTA1MikJKGZyb20gV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9hdXRvaW5zdGFsbC5weTo1NTA1MikKKysrIFdlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9hdXRvaW5zdGFsbC5weQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDMzNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDksIERhbmllbCBLcmVjaCBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyAKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IyAKKyMgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAKKyMgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIyAKKyMgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgRGFuaWVsIEty
ZWNoIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJcCitwYWNrYWdlIGxv
YWRlciBmb3IgYXV0byBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcy4KKworQSBwYWNrYWdlIGxv
YWRlciBpbiB0aGUgc3Bpcml0IG9mIFplcm8gSW5zdGFsbCB0aGF0IGNhbiBiZSB1c2VkIHRvCitp
bmplY3QgZGVwZW5kZW5jaWVzIGludG8gdGhlIGltcG9ydCBwcm9jZXNzLiAKKworCitUbyBpbnN0
YWxsOjoKKworICAgIGVhc3lfaW5zdGFsbCAtVSBhdXRvaW5zdGFsbAorCisgICAgICBvciAKKwor
ICAgIGRvd25sb2FkLCB1bnBhY2ssIHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsCisKKyAgICAgIG9y
IAorCisgICAgdHJ5IHRoZSBib290c3RyYXAgbG9hZGVyLiBTZWUgYmVsb3cuCisKKworVG8gdXNl
OjoKKworICAgICMgWW91IGNhbiBiaW5kIGFueSBwYWNrYWdlIG5hbWUgdG8gYSBVUkwgcG9pbnRp
bmcgdG8gc29tZXRoaW5nCisgICAgIyB0aGF0IGNhbiBiZSBpbXBvcnRlZCB1c2luZyB0aGUgemlw
aW1wb3J0ZXIuCisKKyAgICBhdXRvaW5zdGFsbC5iaW5kKCJweW1hcmMiLCAiaHR0cDovL3B5cGku
cHl0aG9uLm9yZy9wYWNrYWdlcy8yLjUvcC9weW1hcmMvcHltYXJjLTIuMS1weTIuNS5lZ2ciKQor
CisgICAgaW1wb3J0IHB5bWFyYworCisgICAgcHJpbnQgcHltYXJjLl9fdmVyc2lvbl9fLCBweW1h
cmMuX19maWxlX18KKworICAgIAorQ2hhbmdlbG9nOjoKKworLSBhZGRlZCBzdXBwb3J0IGZvciBu
b24gdG9wIGxldmVsIHBhY2thZ2VzLgorLSBjYWNoZSBmaWxlcyBub3cgdXNlIGZpbGVuYW1lIHBh
cnQgZnJvbSBVUkwuCistIGFwcGxpZWQgcGF0Y2ggZnJvbSBFcmljIFNlaWRlbCA8ZXNlaWRlbEBn
b29nbGUuY29tPiB0byBhZGQgc3VwcG9ydAorZm9yIGxvYWRpbmcgbW9kdWxlcyB3aGVyZSB0aGUg
bW9kdWxlIGlzIG5vdCBhdCB0aGUgcm9vdCBvZiB0aGUgLnppcAorZmlsZS4KKworCitUT0RPOjoK
KworLSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBpbnRlbmRlZCB1c2UgY2FzZQorLSBhZGRyZXNzIG90
aGVyIGlzc3VlcyBwb2ludGVkIG91dCBpbjoKKworICAgIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcv
cGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAwOC1NYXJjaC8wNzc5MjYuaHRtbAorCitTY3JpYmJsZXM6
OgorCitwdWxsIHZzLiBwdXNoCit1c2VyIHZzLiBzeXN0ZW0KK3dlYiB2cy4gZmlsZXN5c3RlbQor
YXV0byB2cy4gbWFudWFsCisKK21hbmFnZSBkZXZlbG9wbWVudCBzYW5kYm94ZXMKKworb3B0aW9u
YWwgaW50ZXJmYWNlcy4uLgorCisgICAgZGVmIGdldF9kYXRhKHBhdGhuYW1lKSAtPiBzdHJpbmcg
d2l0aCBmaWxlIGRhdGEuCisKKyAgICBSZXR1cm4gdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoICdw
YXRobmFtZScuIFJhaXNlIElPRXJyb3IgaWYKKyAgICB0aGUgZmlsZSB3YXNuJ3QgZm91bmQuIik7
CisKKyAgICBkZWYgaXNfcGFja2FnZSwKKyAgICAiaXNfcGFja2FnZShmdWxsbmFtZSkgLT4gYm9v
bC4KKworICAgIFJldHVybiBUcnVlIGlmIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGJ5IGZ1bGxuYW1l
IGlzIGEgcGFja2FnZS4KKyAgICBSYWlzZSBaaXBJbXBvcnRFcnJvciBpcyB0aGUgbW9kdWxlIGNv
dWxkbid0IGJlIGZvdW5kLiIpOworCisgICAgZGVmIGdldF9jb2RlLAorICAgICJnZXRfY29kZShm
dWxsbmFtZSkgLT4gY29kZSBvYmplY3QuCisKKyAgICBSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGZv
ciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4gUmFpc2UgWmlwSW1wb3J0RXJyb3IKKyAgICBpcyB0aGUg
bW9kdWxlIGNvdWxkbid0IGJlIGZvdW5kLiIpOworCisgICAgZGVmIGdldF9zb3VyY2UsCisgICAg
ImdldF9zb3VyY2UoZnVsbG5hbWUpIC0+IHNvdXJjZSBzdHJpbmcuCisKKyAgICBSZXR1cm4gdGhl
IHNvdXJjZSBjb2RlIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4gUmFpc2UgWmlwSW1wb3J0RXJy
b3IKKyAgICBpcyB0aGUgbW9kdWxlIGNvdWxkbid0IGJlIGZvdW5kLCByZXR1cm4gTm9uZSBpZiB0
aGUgYXJjaGl2ZSBkb2VzCisgICAgY29udGFpbiB0aGUgbW9kdWxlLCBidXQgaGFzIG5vIHNvdXJj
ZSBmb3IgaXQuIik7CisKKworQXV0b2luc3RhbGwgY2FuIGFsc28gYmUgYm9vdHN0cmFwZWQgd2l0
aCB0aGUgbmFzY2VudCBwYWNrYWdlIGxvYWRlcgorYm9vdHN0cmFwIG1vZHVsZS4gRm9yIGV4YW1w
bGU6OgorCisgICAgIyAgb3IgdmlhIHRoZSBib290c3RyYXAKKyAgICAjIGxvYWRlci4KKworICAg
IHRyeToKKyAgICAgICAgX3ZlcnNpb24gPSAiMC4yIgorICAgICAgICBpbXBvcnQgYXV0b2luc3Rh
bGwKKyAgICAgICAgaWYgYXV0b2luc3RhbGwuX192ZXJzaW9uX18gIT0gX3ZlcnNpb246CisgICAg
ICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiQSBkaWZmZXJlbnQgdmVyc2lvbiB0aGFuIGV4cGVj
dGVkIGZvdW5kLiIpCisgICAgZXhjZXB0IEltcG9ydEVycm9yLCBlOgorICAgICAgICAjIGh0dHA6
Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9zYW5kYm94L3RydW5rL2Jvb3RzdHJhcC9ib290c3Ry
YXAucHkKKyAgICAgICAgaW1wb3J0IGJvb3RzdHJhcCAKKyAgICAgICAgcHlwaSA9ICJodHRwOi8v
cHlwaS5weXRob24ub3JnIgorICAgICAgICBkaXIgPSAicGFja2FnZXMvc291cmNlL2EvYXV0b2lu
c3RhbGwiCisgICAgICAgIHVybCA9ICIlcy8lcy9hdXRvaW5zdGFsbC0lcy50YXIuZ3oiICUgKHB5
cGksIGRpciwgX3ZlcnNpb24pCisgICAgICAgIGJvb3RzdHJhcC5tYWluKCh1cmwsKSkKKyAgICAg
ICAgaW1wb3J0IGF1dG9pbnN0YWxsCisKK1JlZmVyZW5jZXM6OgorCisgIGh0dHA6Ly8waW5zdGFs
bC5uZXQvCisgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDMwMi8KKyAgaHR0
cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL3NhbmRib3gvdHJ1bmsvaW1wb3J0X2luX3B5Cisg
IGh0dHA6Ly8waW5zdGFsbC5uZXQvaW5qZWN0b3ItZmluZC5odG1sCisgIGh0dHA6Ly9yb3NjaWR1
cy5jb20vZGVza3RvcC9ub2RlLzkwMworCisiIiIKKworIyBUbyBhbGxvdyB1c2Ugb2YgdGhlICJ3
aXRoIiBrZXl3b3JkIGZvciBQeXRob24gMi41IHVzZXJzLgorZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCB3aXRoX3N0YXRlbWVudAorCitfX3ZlcnNpb25fXyA9ICIwLjIiCitfX2RvY2Zvcm1hdF9fID0g
InJlc3RydWN0dXJlZHRleHQgZW4iCisKK2ltcG9ydCBvcworaW1wb3J0IG5ldworaW1wb3J0IHN5
cworaW1wb3J0IHVybGxpYgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0
IHppcGltcG9ydAorCitfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKwor
X2ltcG9ydGVyID0gTm9uZQorCitkZWYgX2dldEltcG9ydGVyKCk6CisgICAgZ2xvYmFsIF9pbXBv
cnRlcgorICAgIGlmIF9pbXBvcnRlciBpcyBOb25lOgorICAgICAgICBfaW1wb3J0ZXIgPSBJbXBv
cnRlcigpCisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKF9pbXBvcnRlcikKKyAgICByZXR1
cm4gX2ltcG9ydGVyCisKK2RlZiBiaW5kKHBhY2thZ2VfbmFtZSwgdXJsLCB6aXBfc3VicGF0aD1O
b25lKToKKyAgICAiIiJiaW5kIGEgdG9wIGxldmVsIHBhY2thZ2UgbmFtZSB0byBhIFVSTC4KKwor
ICAgIFRoZSBwYWNrYWdlIG5hbWUgc2hvdWxkIGJlIGEgcGFja2FnZSBuYW1lIGFuZCB0aGUgdXJs
IHNob3VsZCBiZSBhCisgICAgdXJsIHRvIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBpbXBvcnRlZCB1
c2luZyB0aGUgemlwaW1wb3J0ZXIuCisKKyAgICBPcHRpb25hbCB6aXBfc3VicGF0aCBwYXJhbWV0
ZXIgYWxsb3dzIHNlYXJjaGluZyBmb3IgbW9kdWxlcworICAgIGJlbG93IHRoZSByb290IGxldmVs
IG9mIHRoZSB6aXAgZmlsZS4KKyAgICAiIiIKKyAgICBfZ2V0SW1wb3J0ZXIoKS5iaW5kKHBhY2th
Z2VfbmFtZSwgdXJsLCB6aXBfc3VicGF0aCkKKworCitjbGFzcyBDYWNoZShvYmplY3QpOgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpcmVjdG9yeT1Ob25lKToKKyAgICAgICAgaWYgZGlyZWN0
b3J5IGlzIE5vbmU6CisgICAgICAgICAgICAjIERlZmF1bHQgdG8gcHV0dGluZyB0aGUgY2FjaGUg
ZGlyZWN0b3J5IGluIHRoZSBzYW1lIGRpcmVjdG9yeQorICAgICAgICAgICAgIyBhcyB0aGlzIGZp
bGUuCisgICAgICAgICAgICBjb250YWluaW5nX2RpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXykKKyAgICAgICAgICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguam9pbihjb250YWluaW5n
X2RpcmVjdG9yeSwgImF1dG9pbnN0YWxsLmNhY2hlLmQiKTsKKworICAgICAgICBzZWxmLmRpcmVj
dG9yeSA9IGRpcmVjdG9yeQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHMoc2VsZi5kaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9j
YWNoZV9kaXJlY3RvcnkoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlcnI6CisgICAgICAg
ICAgICBfbG9nZ2VyLmV4Y2VwdGlvbihlcnIpCisgICAgICAgICAgICBzZWxmLmNhY2hlX2RpcmVj
dHJ5ID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIF9sb2dnZXIuaW5mbygiVXNpbmcgY2Fj
aGUgZGlyZWN0b3J5ICclcycuIiAlIHNlbGYuZGlyZWN0b3J5KQorICAgIAorICAgIGRlZiBfY3Jl
YXRlX2NhY2hlX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgX2xvZ2dlci5kZWJ1ZygiQ3JlYXRp
bmcgY2FjaGUgZGlyZWN0b3J5ICclcycuIiAlIHNlbGYuZGlyZWN0b3J5KQorICAgICAgICBvcy5t
a2RpcihzZWxmLmRpcmVjdG9yeSkKKyAgICAgICAgcmVhZG1lX3BhdGggPSBvcy5wYXRoLmpvaW4o
c2VsZi5kaXJlY3RvcnksICJSRUFETUUiKQorICAgICAgICB3aXRoIG9wZW4ocmVhZG1lX3BhdGgs
ICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIlRoaXMgZGlyZWN0b3J5IHdhcyBhdXRv
LWdlbmVyYXRlZCBieSAnJXMnLlxuIgorICAgICAgICAgICAgICAgICAgICAiSXQgaXMgc2FmZSB0
byBkZWxldGUuXG4iICUgX19maWxlX18pCisKKyAgICBkZWYgZ2V0KHNlbGYsIHVybCk6CisgICAg
ICAgIF9sb2dnZXIuaW5mbygiR2V0dGluZyAnJXMnIGZyb20gY2FjaGUuIiAlIHVybCkKKyAgICAg
ICAgZmlsZW5hbWUgPSB1cmwucnNwbGl0KCIvIilbLTFdCisKKyAgICAgICAgIyBzbyB0aGF0IHNv
dXJjZSB1cmwgaXMgc2lnbmlmaWNhbnQgaW4gZGV0ZXJtaW5pbmcgY2FjaGUgaGl0cworICAgICAg
ICBkID0gb3MucGF0aC5qb2luKHNlbGYuZGlyZWN0b3J5LCAiJXMiICUgaGFzaCh1cmwpKQorICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZCk6CisgICAgICAgICAgICBvcy5ta2RpcihkKQor
CisgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQsIGZpbGVuYW1lKSAKKworICAgICAg
ICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CisgICAgICAgICAgICBfbG9nZ2VyLmRlYnVn
KCIuLi4gYWxyZWFkeSBjYWNoZWQgaW4gZmlsZSAnJXMnLiIgJSBmaWxlbmFtZSkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIF9sb2dnZXIuZGVidWcoIi4uLiBub3QgaW4gY2FjaGUuIENhY2hp
bmcgaW4gJyVzJy4iICUgZmlsZW5hbWUpCisgICAgICAgICAgICBzdHJlYW0gPSBmaWxlKGZpbGVu
YW1lLCAid2IiKQorICAgICAgICAgICAgc2VsZi5kb3dubG9hZCh1cmwsIHN0cmVhbSkKKyAgICAg
ICAgICAgIHN0cmVhbS5jbG9zZSgpCisgICAgICAgIHJldHVybiBmaWxlbmFtZQorCisgICAgZGVm
IGRvd25sb2FkKHNlbGYsIHVybCwgc3RyZWFtKToKKyAgICAgICAgX2xvZ2dlci5pbmZvKCJEb3du
bG9hZGluZzogJXMiICUgdXJsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXRzdHJlYW0g
PSB1cmxsaWIudXJsb3Blbih1cmwpCisgICAgICAgICAgICBjb2RlID0gMjAwCisgICAgICAgICAg
ICBpZiBoYXNhdHRyKG5ldHN0cmVhbSwgImdldGNvZGUiKToKKyAgICAgICAgICAgICAgICBjb2Rl
ID0gbmV0c3RyZWFtLmdldGNvZGUoKQorICAgICAgICAgICAgaWYgbm90IDIwMCA8PSBjb2RlIDwg
MzAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhUVFAgRXJyb3IgY29kZSAl
cyIgJSBjb2RlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlcnI6CisgICAgICAgICAgICBf
bG9nZ2VyLmV4Y2VwdGlvbihlcnIpCisKKyAgICAgICAgQlVGU0laRSA9IDIqKjEzICAjIDhLQgor
ICAgICAgICBzaXplID0gMAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSA9
IG5ldHN0cmVhbS5yZWFkKEJVRlNJWkUpCisgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc3RyZWFtLndyaXRlKGRhdGEpCisgICAgICAg
ICAgICBzaXplICs9IGxlbihkYXRhKQorICAgICAgICBuZXRzdHJlYW0uY2xvc2UoKQorICAgICAg
ICBfbG9nZ2VyLmluZm8oIkRvd25sb2FkZWQgJWQgYnl0ZXMuIiAlIHNpemUpCisKKworY2xhc3Mg
SW1wb3J0ZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5wYWNrYWdlcyA9IHt9CisgICAgICAgIHNlbGYuX19jYWNoZSA9IE5vbmUKKworICAgIGRlZiBf
X2dldF9zdG9yZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zdG9yZQorICAgIHN0b3Jl
ID0gcHJvcGVydHkoX19nZXRfc3RvcmUpCisKKyAgICBkZWYgX2dldF9jYWNoZShzZWxmKToKKyAg
ICAgICAgaWYgc2VsZi5fX2NhY2hlIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9fY2FjaGUg
PSBDYWNoZSgpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2FjaGUKKyAgICBkZWYgX3NldF9jYWNo
ZShzZWxmLCBjYWNoZSk6CisgICAgICAgIHNlbGYuX19jYWNoZSA9IGNhY2hlCisgICAgY2FjaGUg
PSBwcm9wZXJ0eShfZ2V0X2NhY2hlLCBfc2V0X2NhY2hlKQorCisgICAgZGVmIGZpbmRfbW9kdWxl
KHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAiIiItPiBzZWxmIG9yIE5vbmUu
CisKKyAgICAgICAgU2VhcmNoIGZvciBhIG1vZHVsZSBzcGVjaWZpZWQgYnkgJ2Z1bGxuYW1lJy4g
J2Z1bGxuYW1lJyBtdXN0IGJlCisgICAgICAgIHRoZSBmdWxseSBxdWFsaWZpZWQgKGRvdHRlZCkg
bW9kdWxlIG5hbWUuIEl0IHJldHVybnMgdGhlCisgICAgICAgIHppcGltcG9ydGVyIGluc3RhbmNl
IGl0c2VsZiBpZiB0aGUgbW9kdWxlIHdhcyBmb3VuZCwgb3IgTm9uZSBpZgorICAgICAgICBpdCB3
YXNuJ3QuIFRoZSBvcHRpb25hbCAncGF0aCcgYXJndW1lbnQgaXMgaWdub3JlZCAtLSBpdCdzCisg
ICAgICAgIHRoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGltcG9ydGVyIHByb3RvY29s
LiIpOworICAgICAgICAiIiIKKyAgICAgICAgX2xvZ2dlci5kZWJ1ZygiZmluZF9tb2R1bGUoJXMs
IHBhdGg9JXMpIiAlIChmdWxsbmFtZSwgcGF0aCkpCisKKyAgICAgICAgaWYgZnVsbG5hbWUgaW4g
c2VsZi5wYWNrYWdlczoKKyAgICAgICAgICAgICh1cmwsIHppcF9zdWJwYXRoKSA9IHNlbGYucGFj
a2FnZXNbZnVsbG5hbWVdCisgICAgICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY2FjaGUuZ2V0KHVy
bCkKKyAgICAgICAgICAgIHppcF9wYXRoID0gIiVzLyVzIiAlIChmaWxlbmFtZSwgemlwX3N1YnBh
dGgpIGlmIHppcF9zdWJwYXRoIGVsc2UgZmlsZW5hbWUKKyAgICAgICAgICAgIF9sb2dnZXIuZGVi
dWcoImZ1bGxuYW1lOiAlcyB1cmw6ICVzIHBhdGg6ICVzIHppcF9wYXRoOiAlcyIgJSAoZnVsbG5h
bWUsIHVybCwgcGF0aCwgemlwX3BhdGgpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIGxvYWRlciA9IHppcGltcG9ydC56aXBpbXBvcnRlcih6aXBfcGF0aCkKKyAgICAgICAgICAg
ICAgICBfbG9nZ2VyLmRlYnVnKCJyZXR1cm5pbmc6ICVzIiAlIGxvYWRlcikKKyAgICAgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICAgICAgX2xvZ2dlci5leGNlcHRpb24o
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIGxvYWRl
cgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGJpbmQoc2VsZiwgcGFja2FnZV9uYW1l
LCB1cmwsIHppcF9zdWJwYXRoKToKKyAgICAgICAgX2xvZ2dlci5pbmZvKCJiaW5kaW5nOiAlcyAt
PiAlcyBzdWJwYXRoOiAlcyIgJSAocGFja2FnZV9uYW1lLCB1cmwsIHppcF9zdWJwYXRoKSkKKyAg
ICAgICAgc2VsZi5wYWNrYWdlc1twYWNrYWdlX25hbWVdID0gKHVybCwgemlwX3N1YnBhdGgpCisK
KworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgaW1wb3J0IGxvZ2dpbmcKKyAgICAjbG9n
Z2luZy5iYXNpY0NvbmZpZygpCisgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorCisg
ICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpCisgICAgY29uc29sZS5zZXRMZXZl
bChsb2dnaW5nLkRFQlVHKQorICAgICMgc2V0IGEgZm9ybWF0IHdoaWNoIGlzIHNpbXBsZXIgZm9y
IGNvbnNvbGUgdXNlCisgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUobmFtZSkt
MTJzOiAlKGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMnKQorICAgICMgdGVsbCB0aGUgaGFuZGxl
ciB0byB1c2UgdGhpcyBmb3JtYXQKKyAgICBjb25zb2xlLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIp
CisgICAgIyBhZGQgdGhlIGhhbmRsZXIgdG8gdGhlIHJvb3QgbG9nZ2VyCisgICAgbG9nZ2VyLmFk
ZEhhbmRsZXIoY29uc29sZSkKKyAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQorCisg
ICAgYmluZCgicHltYXJjIiwgImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvMi41L3Av
cHltYXJjL3B5bWFyYy0yLjEtcHkyLjUuZWdnIikKKworICAgIGltcG9ydCBweW1hcmMKKworICAg
IHByaW50IHB5bWFyYy5fX3ZlcnNpb25fXywgcHltYXJjLl9fZmlsZV9fCisKKyAgICBhc3NlcnQg
cHltYXJjLl9fdmVyc2lvbl9fPT0iMi4xIgorCisgICAgZCA9IF9nZXRJbXBvcnRlcigpLmNhY2hl
LmRpcmVjdG9yeQorICAgIGFzc2VydCBkIGluIHB5bWFyYy5fX2ZpbGVfXywgIiclcycgbm90IGZv
dW5kIGluIHB5bWFyYy5fX2ZpbGVfXyAoJXMpIiAlIChkLCBweW1hcmMuX19maWxlX18pCisKKyAg
ICAjIENhbiBub3cgYWxzbyBiaW5kIHRvIG5vbiB0b3AgbGV2ZWwgcGFja2FnZXMuIFRoZSBwYWNr
YWdlcworICAgICMgbGVhZGluZyB1cCB0byB0aGUgcGFja2FnZSBiZWluZyBib3VuZCB3aWxsIG5l
ZWQgdG8gYmUgZGVmaW5lZAorICAgICMgaG93ZXZlci4KKyAgICAjCisgICAgIyBiaW5kKCJyZGYu
cGx1Z2lucy5zdG9yZXMubWVtb3J5IiwgCisgICAgIyAgICAgICJodHRwOi8vcHlwaS5weXRob24u
b3JnL3BhY2thZ2VzLzIuNS9yL3JkZi5wbHVnaW5zLnN0b3Jlcy5tZW1lb3J5L3JkZi5wbHVnaW5z
LnN0b3Jlcy5tZW1vcnktMC45YS1weTIuNS5lZ2ciKQorICAgICMKKyAgICAjIGZyb20gcmRmLnBs
dWdpbnMuc3RvcmVzLm1lbW9yeSBpbXBvcnQgTWVtb3J5CisKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>