<?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>105768</bug_id>
          
          <creation_ts>2012-12-26 07:26:58 -0800</creation_ts>
          <short_desc>Web Inspector: extract JS heap profiler specifics into JSHeapSnapshot.js</short_desc>
          <delta_ts>2012-12-26 07:56:00 -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>Web Inspector (Deprecated)</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="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>797307</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-26 07:26:58 -0800</bug_when>
    <thetext>HeapSnapshot.js can be split into a generic heap graph representation which can be reused for native heap and a JavaScript-specific part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797308</commentid>
    <comment_count>1</comment_count>
      <attachid>180747</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-26 07:30:15 -0800</bug_when>
    <thetext>Created attachment 180747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797309</commentid>
    <comment_count>2</comment_count>
      <attachid>180747</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-26 07:38:38 -0800</bug_when>
    <thetext>Comment on attachment 180747
Patch

lgtm with nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797310</commentid>
    <comment_count>3</comment_count>
      <attachid>180747</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-26 07:41:06 -0800</bug_when>
    <thetext>Comment on attachment 180747
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=180747&amp;action=review

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:746
&gt; +        var node = this.createNode(0);

please remove 0

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:892
&gt; +        var node = this.createNode(rootNodeIndex);

rootNode()

&gt; LayoutTests/inspector/profiler/heap-snapshot.html:14
&gt; +            var nodeRoot = snapshot.createNode(snapshot._rootNodeIndex);

rootNode

&gt; LayoutTests/inspector/profiler/heap-snapshot.html:28
&gt; +            var nodeRoot = snapshot.createNode(snapshot._rootNodeIndex);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797311</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-26 07:54:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 180747 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180747&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:746
&gt; &gt; +        var node = this.createNode(0);
&gt; 
&gt; please remove 0
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:892
&gt; &gt; +        var node = this.createNode(rootNodeIndex);
&gt; 
&gt; rootNode()
&gt; 
I&apos;d leave in the current state as we put rootNodeIndex into the array in the next line.

&gt; &gt; LayoutTests/inspector/profiler/heap-snapshot.html:14
&gt; &gt; +            var nodeRoot = snapshot.createNode(snapshot._rootNodeIndex);
&gt; 
&gt; rootNode
&gt; 
There is no such method on the mock.

&gt; &gt; LayoutTests/inspector/profiler/heap-snapshot.html:28
&gt; &gt; +            var nodeRoot = snapshot.createNode(snapshot._rootNodeIndex);
&gt; 
&gt; ditto
There is no such method on the mock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797312</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-26 07:56:00 -0800</bug_when>
    <thetext>Committed r138477: &lt;http://trac.webkit.org/changeset/138477&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180747</attachid>
            <date>2012-12-26 07:30:15 -0800</date>
            <delta_ts>2012-12-26 07:41:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105768-20121226192726.patch</filename>
            <type>text/plain</type>
            <size>49842</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWIzNWYyOTgzMGNkNTQ4
NzM4YmM2ODcxMWJjYjM2YjJlMDQyZjQxNS4uY2ZiMWI2MTA4NDkzY2QxNDMyZDA0NDJhNTYzZGM0
M2U3OGVmNjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkzIEBACiAyMDEyLTEyLTI2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGV4dHJhY3QgSlMgaGVhcCBwcm9maWxlciBzcGVjaWZpY3MgaW50byBKU0hlYXBTbmFwc2hv
dC5qcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1
NzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5y
b2R1Y2VkIEpTSGVhcFNuYXBzaG90LCBKU0hlYXBTbmFwc2hvdE5vZGUsIEpTSGVhcFNuYXBzaG90
RWRnZSBhbmQgSlNIZWFwU25hcHNob3RSZXRhaW5lckVkZ2Ugd2hpY2gKKyAgICAgICAgc2hvdWxk
IGVuY2Fwc3VsYXRlIGxvZ2ljIHNwZWNpZmljIHRvIEpTLWhlYXAuCisgICAgICAgIE5vIGJlaGF2
aW9yYWwgY2hhbmdlcywgY292ZXJlZCB3aXRoIGV4aXN0aW5nIGhlYXAgcHJvZmlsZXIgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5Ogor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLmhhc1N0cmluZ05hbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLm5hbWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLm5vZGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLnRvU3RyaW5n
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2UucHJvdG90
eXBlLl9ub2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVk
Z2UucHJvdG90eXBlLl9lZGdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RO
b2RlLnByb3RvdHlwZS5jbGFzc05hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGUucHJvdG90eXBlLmNsYXNzSW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLmVkZ2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5pZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90Tm9kZS5wcm90b3R5cGUucmV0YWluZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlLmNyZWF0ZU5vZGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlRWRnZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5jcmVhdGVSZXRhaW5pbmdFZGdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLnJvb3ROb2RlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmFnZ3JlZ2F0ZXNGb3JEaWZm
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZEFn
Z3JlZ2F0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUu
X2NhbGN1bGF0ZUNsYXNzZXNSZXRhaW5lZFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUuX3NvcnRBZ2dyZWdhdGVJbmRleGVzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9jYWxjdWxhdGVEaWZmRm9yQ2xhc3Mp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlRWRn
ZXNQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZS5jcmVhdGVSZXRhaW5pbmdFZGdlc1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlLmNyZWF0ZU5vZGVzUHJvdmlkZXJGb3JEb21pbmF0b3IpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBl
Lm5vZGVQb3NpdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3RMb2FkZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyLnBy
b3RvdHlwZS5idWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdv
cmtlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RXb3JrZXIu
anM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9KU0hlYXBTbmFwc2hvdC5qczogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90LnByb3RvdHlwZS5jcmVhdGVOb2RlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlRWRnZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLmNyZWF0ZVJldGFpbmlu
Z0VkZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5jYW5CZVF1ZXJp
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUu
aXNQYWdlT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdE5vZGUu
cHJvdG90eXBlLmRpc3RhbmNlVG9XaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVh
cFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuY2xhc3NOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5KU0hlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLmNsYXNzSW5kZXgpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuaWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuaXNIaWRkZW4pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuaXNOYXRpdmUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUuaXNTeW50
aGV0aWMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5
cGUuaXNXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5w
cm90b3R5cGUuaXNEZXRhY2hlZERPTVRyZWVzUm9vdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SlNIZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5pc0RldGFjaGVkRE9NVHJlZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3RFZGdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5KU0hlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLmNsb25lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5KU0hlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLmhhc1N0cmluZ05hbWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUuaXNFbGVtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlLmlzSGlk
ZGVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdEVkZ2UucHJvdG90eXBl
LmlzV2Vhayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3RFZGdlLnByb3Rv
dHlwZS5pc0ludGVybmFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdEVk
Z2UucHJvdG90eXBlLmlzSW52aXNpYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0hlYXBT
bmFwc2hvdEVkZ2UucHJvdG90eXBlLmlzU2hvcnRjdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkpTSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUubmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSlNIZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS50b1N0cmluZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSlNIZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS5faGFzU3RyaW5nTmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS5fbmFtZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS5fbmFt
ZU9ySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90RWRnZS5wcm90
b3R5cGUuX3R5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90UmV0YWlu
ZXJFZGdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdFJldGFpbmVyRWRn
ZS5wcm90b3R5cGUuY2xvbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90
UmV0YWluZXJFZGdlLnByb3RvdHlwZS5pc0VsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkpTSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnByb3RvdHlwZS5pc0hpZGRlbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBlLmlzSW50
ZXJuYWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90UmV0YWluZXJFZGdl
LnByb3RvdHlwZS5pc0ludmlzaWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25h
cHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBlLmlzU2hvcnRjdXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkpTSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlLnByb3RvdHlwZS5pc1dlYWspOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisKKzIwMTItMTItMjYgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJl
cGFyZSBIZWFwU25hcHNob3QuanMgZm9yIHVzZSB3aXRoIG5hdGl2ZSBoZWFwIHNuYXBzaG90CiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3NjMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3ZTViMGNjZDc2ZjNkZDI4N2MwNjAxM2FlODk2
MjJlOTk4OTk4NDA4Li45MWU2ZjMxNmYxYzFiYTYzMmVjY2NlNGM2MzdjYzhjNjU3MGQzOWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTEyLTI2ICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGV4dHJhY3QgSlMgaGVhcCBwcm9maWxlciBzcGVjaWZpY3MgaW50byBKU0hlYXBTbmFw
c2hvdC5qcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA1NzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXQuZ3lwOiBhZGRlZCBuZXcgZmlsZSB0byBKUyBoZWFwIHByb2ZpbGVyLgorCiAyMDEy
LTEyLTIxICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtLUFuZHJvaWRdIFVzZSBoYXJmYnV6ei1uZyBpbnN0ZWFkIG9mIGhhcmZidXp6
LW9sZCBvbiBBbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggY2Y5YmJhMWI5ZjA2ODE5NzJmZmNj
NTFmOTk2NWM2ZjE4N2QzYWM3ZC4uNzc5MzRmMWYxYzQ2NWE0ZWY0NDc0OGMyNzZkODE0NTlkMTMz
MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTMyNSw2ICs1MzI1LDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcycsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9KU0hlYXBTbmFwc2hvdC5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVIZWFwR3JhcGguanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAy
ODIwZDVlMWE4YmMxOWQyMDdmY2UwZmE4NDk4NjUwMGEyMmMwZTNjLi45MmFjMmM1MDZjMDNlOTE4
OTkzMjJiNGM2YjEwZmY2ZDE5YTFmM2JhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzY3MjEsNiArNzY3MjEsMTAgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcSlNIZWFwU25hcHNob3QuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEphdmFTY3JpcHRGb3Jt
YXR0ZXIuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXggMDBmNTU1NjQ0YTAyNjg0ZGI1NWRjZTUwM2Uw
ZGQ0NjkyNjQ4NzdmNS4uMTk0YmNiNDk3MjY2YzEzNjIwYjNhMWFhYTk5YTdmNTJkNDk3Y2FjOCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAt
MzMwLDYgKzMzMCw3IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiSGVhcFNuYXBzaG90Vmll
dy5qcyIsCiAgICAgICAgICAgICAiSGVhcFNuYXBzaG90V29ya2VyLmpzIiwKICAgICAgICAgICAg
ICJIZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzIiwKKyAgICAgICAgICAgICJKU0hlYXBT
bmFwc2hvdC5qcyIsCiAgICAgICAgICAgICAiTmF0aXZlSGVhcEdyYXBoLmpzIiwKICAgICAgICAg
ICAgICJOYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMiLAogICAgICAgICAgICAgIlByb2ZpbGVE
YXRhR3JpZFRyZWUuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlYXBTbmFwc2hvdC5qcwppbmRleCA5ZjA0YjBhMWMxZGI0ZTQ4MWMzOWEyODU3ODc3YTIz
MmE4ODJkY2RkLi5hMDQ1ZGJkNTk2ZjllODM3NzkyYTdjN2U2YjEyMjNlZTQxNDE1YTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5q
cwpAQCAtNzEsNTIgKzcxLDE3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlLnByb3Rv
dHlwZSA9IHsKIAogICAgIGhhc1N0cmluZ05hbWU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5pc1Nob3J0Y3V0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5faGFzU3Ry
aW5nTmFtZSgpOwotICAgICAgICByZXR1cm4gaXNOYU4ocGFyc2VJbnQodGhpcy5fbmFtZSgpLCAx
MCkpOwotICAgIH0sCi0KLSAgICBpc0VsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlRWxlbWVudFR5cGU7
Ci0gICAgfSwKLQotICAgIGlzSGlkZGVuOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fdHlwZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fZWRnZUhpZGRlblR5cGU7Ci0gICAg
fSwKLQotICAgIGlzV2VhazogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3R5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VXZWFrVHlwZTsKLSAgICB9LAotCi0gICAg
aXNJbnRlcm5hbDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUo
KSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VJbnRlcm5hbFR5cGU7Ci0gICAgfSwKLQotICAgIGlz
SW52aXNpYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSgp
ID09PSB0aGlzLl9zbmFwc2hvdC5fZWRnZUludmlzaWJsZVR5cGU7Ci0gICAgfSwKLQotICAgIGlz
U2hvcnRjdXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkg
PT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlU2hvcnRjdXRUeXBlOworICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICBuYW1lOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBpZiAoIXRoaXMuaXNTaG9ydGN1dCgpKQotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX25hbWUoKTsKLSAgICAgICAgdmFyIG51bU5hbWUgPSBwYXJzZUludCh0aGlzLl9u
YW1lKCksIDEwKTsKLSAgICAgICAgcmV0dXJuIGlzTmFOKG51bU5hbWUpID8gdGhpcy5fbmFtZSgp
IDogbnVtTmFtZTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTsK
ICAgICB9LAogCiAgICAgbm9kZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLl9zbmFwc2hvdCwgdGhpcy5ub2Rl
SW5kZXgoKSk7CisgICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5jcmVhdGVOb2RlKHRoaXMu
bm9kZUluZGV4KCkpOwogICAgIH0sCiAKICAgICBub2RlSW5kZXg6IGZ1bmN0aW9uKCkKQEAgLTEz
MSwyNCArOTYsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUgPSB7
CiAKICAgICB0b1N0cmluZzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIG5hbWUgPSB0
aGlzLm5hbWUoKTsKLSAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUoKSkgewotICAgICAgICBjYXNl
ICJjb250ZXh0IjogcmV0dXJuICItPiIgKyBuYW1lOwotICAgICAgICBjYXNlICJlbGVtZW50Ijog
cmV0dXJuICJbIiArIG5hbWUgKyAiXSI7Ci0gICAgICAgIGNhc2UgIndlYWsiOiByZXR1cm4gIltb
IiArIG5hbWUgKyAiXV0iOwotICAgICAgICBjYXNlICJwcm9wZXJ0eSI6Ci0gICAgICAgICAgICBy
ZXR1cm4gbmFtZS5pbmRleE9mKCIgIikgPT09IC0xID8gIi4iICsgbmFtZSA6ICJbXCIiICsgbmFt
ZSArICJcIl0iOwotICAgICAgICBjYXNlICJzaG9ydGN1dCI6Ci0gICAgICAgICAgICBpZiAodHlw
ZW9mIG5hbWUgPT09ICJzdHJpbmciKQotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLmluZGV4
T2YoIiAiKSA9PT0gLTEgPyAiLiIgKyBuYW1lIDogIltcIiIgKyBuYW1lICsgIlwiXSI7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuICJbIiArIG5hbWUgKyAiXSI7Ci0g
ICAgICAgIGNhc2UgImludGVybmFsIjoKLSAgICAgICAgY2FzZSAiaGlkZGVuIjoKLSAgICAgICAg
Y2FzZSAiaW52aXNpYmxlIjoKLSAgICAgICAgICAgIHJldHVybiAieyIgKyBuYW1lICsgIn0iOwot
ICAgICAgICB9OwotICAgICAgICByZXR1cm4gIj8iICsgbmFtZSArICI/IjsKKyAgICAgICAgcmV0
dXJuICJIZWFwU25hcHNob3RFZGdlOiAiICsgdGhpcy5uYW1lKCk7CiAgICAgfSwKIAogICAgIHR5
cGU6IGZ1bmN0aW9uKCkKQEAgLTE1NiwyMSArMTA0LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEVkZ2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX2Vk
Z2VUeXBlc1t0aGlzLl90eXBlKCldOwogICAgIH0sCiAKLSAgICBfaGFzU3RyaW5nTmFtZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICF0aGlzLmlzRWxlbWVudCgpICYmICF0aGlz
LmlzSGlkZGVuKCkgJiYgIXRoaXMuaXNXZWFrKCk7Ci0gICAgfSwKLQotICAgIF9uYW1lOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faGFzU3RyaW5nTmFtZSgpID8gdGhp
cy5fc25hcHNob3QuX3N0cmluZ3NbdGhpcy5fbmFtZU9ySW5kZXgoKV0gOiB0aGlzLl9uYW1lT3JJ
bmRleCgpOwotICAgIH0sCi0KLSAgICBfbmFtZU9ySW5kZXg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9lZGdlcy5pdGVtKHRoaXMuZWRnZUluZGV4ICsgdGhpcy5fc25h
cHNob3QuX2VkZ2VOYW1lT2Zmc2V0KTsKLSAgICB9LAotCiAgICAgX3R5cGU6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lZGdlcy5pdGVtKHRoaXMuZWRnZUluZGV4ICsg
dGhpcy5fc25hcHNob3QuX2VkZ2VUeXBlT2Zmc2V0KTsKQEAgLTI0MywzNiArMTc2LDYgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbmVyRWRnZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9lZGdlKCkuaGFzU3RyaW5nTmFtZSgpOwogICAgIH0sCiAKLSAgICBpc0Vs
ZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCkuaXNF
bGVtZW50KCk7Ci0gICAgfSwKLQotICAgIGlzSGlkZGVuOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZWRnZSgpLmlzSGlkZGVuKCk7Ci0gICAgfSwKLQotICAgIGlzSW50
ZXJuYWw6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCkuaXNJ
bnRlcm5hbCgpOwotICAgIH0sCi0KLSAgICBpc0ludmlzaWJsZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS5pc0ludmlzaWJsZSgpOwotICAgIH0sCi0KLSAg
ICBpc1Nob3J0Y3V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWRn
ZSgpLmlzU2hvcnRjdXQoKTsKLSAgICB9LAotCi0gICAgaXNXZWFrOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fZWRnZSgpLmlzV2VhaygpOwotICAgIH0sCi0KICAgICBu
YW1lOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWRnZSgpLm5hbWUo
KTsKQEAgLTMxMyw3ICsyMTYsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJF
ZGdlLnByb3RvdHlwZSA9IHsKICAgICBfbm9kZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9ub2RlSW5zdGFuY2UpCi0gICAgICAgICAgICB0aGlzLl9ub2RlSW5zdGFuY2Ug
PSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcy5fc25hcHNob3QsIHRoaXMu
X25vZGVJbmRleCk7CisgICAgICAgICAgICB0aGlzLl9ub2RlSW5zdGFuY2UgPSB0aGlzLl9zbmFw
c2hvdC5jcmVhdGVOb2RlKHRoaXMuX25vZGVJbmRleCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9u
b2RlSW5zdGFuY2U7CiAgICAgfSwKIApAQCAtMzIxLDcgKzIyNCw3IEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9lZGdlSW5zdGFuY2UpIHsKICAgICAgICAgICAgIHZhciBlZGdlSW5kZXggPSB0aGlz
Ll9nbG9iYWxFZGdlSW5kZXggLSB0aGlzLl9ub2RlKCkuX2VkZ2VJbmRleGVzU3RhcnQoKTsKLSAg
ICAgICAgICAgIHRoaXMuX2VkZ2VJbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RWRnZSh0aGlzLl9zbmFwc2hvdCwgdGhpcy5fbm9kZSgpLnJhd0VkZ2VzKCksIGVkZ2VJbmRl
eCk7CisgICAgICAgICAgICB0aGlzLl9lZGdlSW5zdGFuY2UgPSB0aGlzLl9zbmFwc2hvdC5jcmVh
dGVFZGdlKHRoaXMuX25vZGUoKS5yYXdFZGdlcygpLCBlZGdlSW5kZXgpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB0aGlzLl9lZGdlSW5zdGFuY2U7CiAgICAgfSwKQEAgLTM4OSwxOCArMjky
LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUgPSBmdW5jdGlvbihzbmFwc2hvdCwg
bm9kZUluZGV4KQogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUg
PSB7Ci0gICAgY2FuQmVRdWVyaWVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZmxh
Z3MgPSB0aGlzLl9zbmFwc2hvdC5fZmxhZ3NPZk5vZGUodGhpcyk7Ci0gICAgICAgIHJldHVybiAh
IShmbGFncyAmIHRoaXMuX3NuYXBzaG90Ll9ub2RlRmxhZ3MuY2FuQmVRdWVyaWVkKTsKLSAgICB9
LAotCi0gICAgaXNQYWdlT2JqZWN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZmxh
Z3MgPSB0aGlzLl9zbmFwc2hvdC5fZmxhZ3NPZk5vZGUodGhpcyk7Ci0gICAgICAgIHJldHVybiAh
IShmbGFncyAmIHRoaXMuX3NuYXBzaG90Ll9ub2RlRmxhZ3MucGFnZU9iamVjdCk7Ci0gICAgfSwK
LQogICAgIGRpc3RhbmNlVG9XaW5kb3c6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9zbmFwc2hvdC5fZGlzdGFuY2VzVG9XaW5kb3dbdGhpcy5ub2RlSW5kZXggLyB0aGlz
Ll9zbmFwc2hvdC5fbm9kZUZpZWxkQ291bnRdOwpAQCAtNDA4LDI4ICsyOTksMTIgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlID0gewogCiAgICAgY2xhc3NOYW1lOiBm
dW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgdHlwZSA9IHRoaXMudHlwZSgpOwotICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSAiaGlkZGVuIjoKLSAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihzeXN0ZW0pIik7Ci0gICAgICAgIGNhc2UgIm9i
amVjdCI6Ci0gICAgICAgIGNhc2UgIm5hdGl2ZSI6Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5u
YW1lKCk7Ci0gICAgICAgIGNhc2UgImNvZGUiOgotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiKGNvbXBpbGVkIGNvZGUpIik7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gIigiICsgdHlwZSArICIpIjsKLSAgICAgICAgfQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICBjbGFzc0luZGV4
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hv
dDsKLSAgICAgICAgdmFyIG5vZGVzID0gc25hcHNob3QuX25vZGVzOwotICAgICAgICB2YXIgdHlw
ZSA9IG5vZGVzW3RoaXMubm9kZUluZGV4ICsgc25hcHNob3QuX25vZGVUeXBlT2Zmc2V0XTs7Ci0g
ICAgICAgIGlmICh0eXBlID09PSBzbmFwc2hvdC5fbm9kZU9iamVjdFR5cGUgfHwgdHlwZSA9PT0g
c25hcHNob3QuX25vZGVOYXRpdmVUeXBlKQotICAgICAgICAgICAgcmV0dXJuIG5vZGVzW3RoaXMu
bm9kZUluZGV4ICsgc25hcHNob3QuX25vZGVOYW1lT2Zmc2V0XTsKLSAgICAgICAgcmV0dXJuIC0x
IC0gdHlwZTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTsKICAg
ICB9LAogCiAgICAgZG9taW5hdG9ySW5kZXg6IGZ1bmN0aW9uKCkKQEAgLTQ0MCw3ICszMTUsNyBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBlZGdl
czogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RWRnZUl0ZXJhdG9yKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZSh0
aGlzLl9zbmFwc2hvdCwgdGhpcy5yYXdFZGdlcygpKSk7CisgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VJdGVyYXRvcih0aGlzLl9zbmFwc2hvdC5jcmVhdGVF
ZGdlKHRoaXMucmF3RWRnZXMoKSwgMCkpOwogICAgIH0sCiAKICAgICBlZGdlc0NvdW50OiBmdW5j
dGlvbigpCkBAIC00NTUsNDAgKzMzMCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rl
LnByb3RvdHlwZSA9IHsKIAogICAgIGlkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIg
c25hcHNob3QgPSB0aGlzLl9zbmFwc2hvdDsKLSAgICAgICAgcmV0dXJuIHNuYXBzaG90Ll9ub2Rl
c1t0aGlzLm5vZGVJbmRleCArIHNuYXBzaG90Ll9ub2RlSWRPZmZzZXRdOwotICAgIH0sCi0KLSAg
ICBpc0hpZGRlbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUo
KSA9PT0gdGhpcy5fc25hcHNob3QuX25vZGVIaWRkZW5UeXBlOwotICAgIH0sCi0KLSAgICBpc05h
dGl2ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUoKSA9PT0g
dGhpcy5fc25hcHNob3QuX25vZGVOYXRpdmVUeXBlOwotICAgIH0sCi0KLSAgICBpc1N5bnRoZXRp
YzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUoKSA9PT0gdGhp
cy5fc25hcHNob3QuX25vZGVTeW50aGV0aWNUeXBlOwotICAgIH0sCi0KLSAgICBpc1dpbmRvdzog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc3Qgd2luZG93UkUgPSAvXldpbmRvdy87Ci0g
ICAgICAgIHJldHVybiB3aW5kb3dSRS50ZXN0KHRoaXMubmFtZSgpKTsKLSAgICB9LAotCi0gICAg
aXNEZXRhY2hlZERPTVRyZWVzUm9vdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMubmFtZSgpID09PSAiKERldGFjaGVkIERPTSB0cmVlcykiOwotICAgIH0sCi0KLSAgICBp
c0RldGFjaGVkRE9NVHJlZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc3QgZGV0YWNo
ZWRET01UcmVlUkUgPSAvXkRldGFjaGVkIERPTSB0cmVlLzsKLSAgICAgICAgcmV0dXJuIGRldGFj
aGVkRE9NVHJlZVJFLnRlc3QodGhpcy5jbGFzc05hbWUoKSk7CisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiTm90IGltcGxlbWVudGVkIik7CiAgICAgfSwKIAogICAgIGlzUm9vdDogZnVuY3Rpb24o
KQpAQCAtNTE0LDcgKzM1Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3Rv
dHlwZSA9IHsKIAogICAgIHJldGFpbmVyczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlSXRlcmF0b3IobmV3
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2UodGhpcy5fc25hcHNob3QsIHRo
aXMubm9kZUluZGV4LCAwKSk7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFJldGFpbmVyRWRnZUl0ZXJhdG9yKHRoaXMuX3NuYXBzaG90LmNyZWF0ZVJldGFpbmlu
Z0VkZ2UodGhpcy5ub2RlSW5kZXgsIDApKTsKICAgICB9LAogCiAgICAgc2VsZlNpemU6IGZ1bmN0
aW9uKCkKQEAgLTc4Myw2ICs2MjUsMjEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgY3JlYXRlTm9kZTogZnVuY3Rpb24o
bm9kZUluZGV4KQorICAgIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50
ZWQiKTsKKyAgICB9LAorCisgICAgY3JlYXRlRWRnZTogZnVuY3Rpb24oZWRnZXMsIGVkZ2VJbmRl
eCkKKyAgICB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIik7Cisg
ICAgfSwKKworICAgIGNyZWF0ZVJldGFpbmluZ0VkZ2U6IGZ1bmN0aW9uKHJldGFpbmVkTm9kZUlu
ZGV4LCByZXRhaW5lckluZGV4KQorICAgIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOb3Qg
aW1wbGVtZW50ZWQiKTsKKyAgICB9LAorCiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgZGVsZXRlIHRoaXMuX25vZGVzOwpAQCAtODA4LDcgKzY2NSw3IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogCiAgICAgcm9vdE5vZGU6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5v
ZGUodGhpcywgdGhpcy5fcm9vdE5vZGVJbmRleCk7CisgICAgICAgIHJldHVybiB0aGlzLmNyZWF0
ZU5vZGUodGhpcy5fcm9vdE5vZGVJbmRleCk7CiAgICAgfSwKIAogICAgIGdldCByb290Tm9kZUlu
ZGV4KCkKQEAgLTg4Niw3ICs3NDMsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZSA9IHRoaXMuYWdncmVn
YXRlcyh0cnVlLCAiYWxsT2JqZWN0cyIpOwogICAgICAgICB0aGlzLl9hZ2dyZWdhdGVzRm9yRGlm
ZiAgPSB7fTsKIAotICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZSh0aGlzKTsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGUoMCk7CiAg
ICAgICAgIGZvciAodmFyIGNsYXNzTmFtZSBpbiBhZ2dyZWdhdGVzQnlDbGFzc05hbWUpIHsKICAg
ICAgICAgICAgIHZhciBhZ2dyZWdhdGUgPSBhZ2dyZWdhdGVzQnlDbGFzc05hbWVbY2xhc3NOYW1l
XTsKICAgICAgICAgICAgIHZhciBpbmRleGVzID0gYWdncmVnYXRlLmlkeHM7CkBAIC05ODMsNyAr
ODQwLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBzZWxmU2l6ZU9mZnNldCA9IHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldDsKICAgICAgICAg
dmFyIG5vZGVUeXBlT2Zmc2V0ID0gdGhpcy5fbm9kZVR5cGVPZmZzZXQ7CiAgICAgICAgIHZhciBw
YWdlT2JqZWN0RmxhZyA9IHRoaXMuX25vZGVGbGFncy5wYWdlT2JqZWN0OwotICAgICAgICB2YXIg
bm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLCB0aGlzLl9yb290
Tm9kZUluZGV4KTsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJvb3ROb2RlKCk7CiAgICAgICAg
IHZhciBkaXN0YW5jZXNUb1dpbmRvdyA9IHRoaXMuX2Rpc3RhbmNlc1RvV2luZG93OwogCiAgICAg
ICAgIGZvciAodmFyIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IG5vZGVzTGVuZ3RoOyBub2Rl
SW5kZXggKz0gbm9kZUZpZWxkQ291bnQpIHsKQEAgLTEwMzIsNyArODg5LDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgX2NhbGN1bGF0ZUNsYXNzZXNSZXRh
aW5lZFNpemU6IGZ1bmN0aW9uKGFnZ3JlZ2F0ZXMsIGZpbHRlcikKICAgICB7CiAgICAgICAgIHZh
ciByb290Tm9kZUluZGV4ID0gdGhpcy5fcm9vdE5vZGVJbmRleDsKLSAgICAgICAgdmFyIG5vZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcywgcm9vdE5vZGVJbmRleCk7
CisgICAgICAgIHZhciBub2RlID0gdGhpcy5jcmVhdGVOb2RlKHJvb3ROb2RlSW5kZXgpOwogICAg
ICAgICB2YXIgbGlzdCA9IFtyb290Tm9kZUluZGV4XTsKICAgICAgICAgdmFyIHNpemVzID0gWy0x
XTsKICAgICAgICAgdmFyIGNsYXNzZXMgPSBbXTsKQEAgLTEwODEsOCArOTM4LDggQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAKICAgICBfc29ydEFnZ3JlZ2F0ZUlu
ZGV4ZXM6IGZ1bmN0aW9uKGFnZ3JlZ2F0ZXMpCiAgICAgewotICAgICAgICB2YXIgbm9kZUEgPSBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcyk7Ci0gICAgICAgIHZhciBub2Rl
QiA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzKTsKKyAgICAgICAgdmFy
IG5vZGVBID0gdGhpcy5jcmVhdGVOb2RlKCk7CisgICAgICAgIHZhciBub2RlQiA9IHRoaXMuY3Jl
YXRlTm9kZSgpOwogICAgICAgICBmb3IgKHZhciBjbHNzIGluIGFnZ3JlZ2F0ZXMpCiAgICAgICAg
ICAgICBhZ2dyZWdhdGVzW2Nsc3NdLmlkeHMuc29ydCgKICAgICAgICAgICAgICAgICBmdW5jdGlv
bihpZHhBLCBpZHhCKSB7CkBAIC0xNTU0LDcgKzE0MTEsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRJbmRleGVz
OiBbXSwKICAgICAgICAgICAgICAgICAgICAgIGFkZGVkSW5kZXhlczogW10gfTsKIAotICAgICAg
ICB2YXIgbm9kZUIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhpcywgaW5k
ZXhlc1tqXSk7CisgICAgICAgIHZhciBub2RlQiA9IHRoaXMuY3JlYXRlTm9kZShpbmRleGVzW2pd
KTsKICAgICAgICAgd2hpbGUgKGkgPCBsICYmIGogPCBtKSB7CiAgICAgICAgICAgICB2YXIgbm9k
ZUFJZCA9IGJhc2VJZHNbaV07CiAgICAgICAgICAgICBpZiAobm9kZUFJZCA8IG5vZGVCLmlkKCkp
IHsKQEAgLTE2MzEsMTMgKzE0ODgsMTMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90
b3R5cGUgPSB7CiAKICAgICBjcmVhdGVFZGdlc1Byb3ZpZGVyOiBmdW5jdGlvbihub2RlSW5kZXgs
IGZpbHRlcikKICAgICB7Ci0gICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlKHRoaXMsIG5vZGVJbmRleCk7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5j
cmVhdGVOb2RlKG5vZGVJbmRleCk7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIodGhpcywgdGhpcy5fcGFyc2VGaWx0ZXIoZmlsdGVyKSwg
bm9kZS5lZGdlcygpKTsKICAgICB9LAogCiAgICAgY3JlYXRlUmV0YWluaW5nRWRnZXNQcm92aWRl
cjogZnVuY3Rpb24obm9kZUluZGV4LCBmaWx0ZXIpCiAgICAgewotICAgICAgICB2YXIgbm9kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLCBub2RlSW5kZXgpOworICAg
ICAgICB2YXIgbm9kZSA9IHRoaXMuY3JlYXRlTm9kZShub2RlSW5kZXgpOwogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc1Byb3ZpZGVyKHRoaXMsIHRoaXMu
X3BhcnNlRmlsdGVyKGZpbHRlciksIG5vZGUucmV0YWluZXJzKCkpOwogICAgIH0sCiAKQEAgLTE2
NjMsNyArMTUyMCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewog
CiAgICAgY3JlYXRlTm9kZXNQcm92aWRlckZvckRvbWluYXRvcjogZnVuY3Rpb24obm9kZUluZGV4
KQogICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dE5vZGUodGhpcywgbm9kZUluZGV4KTsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLmNyZWF0ZU5v
ZGUobm9kZUluZGV4KTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Tm9kZXNQcm92aWRlcih0aGlzLCBudWxsLCB0aGlzLl9kb21pbmF0ZWROb2Rlc09mTm9kZShu
b2RlKSk7CiAgICAgfSwKIApAQCAtMTg1Nyw4ICsxNzE0LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEVkZ2VzUHJvdmlkZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBlZGdlQSA9
IHRoaXMuX2l0ZXJhdG9yLml0ZW0oKS5jbG9uZSgpOwogICAgICAgICB2YXIgZWRnZUIgPSBlZGdl
QS5jbG9uZSgpOwotICAgICAgICB2YXIgbm9kZUEgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGUodGhpcy5zbmFwc2hvdCk7Ci0gICAgICAgIHZhciBub2RlQiA9IG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZSh0aGlzLnNuYXBzaG90KTsKKyAgICAgICAgdmFyIG5vZGVB
ID0gdGhpcy5zbmFwc2hvdC5jcmVhdGVOb2RlKCk7CisgICAgICAgIHZhciBub2RlQiA9IHRoaXMu
c25hcHNob3QuY3JlYXRlTm9kZSgpOwogCiAgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVFZGdlRmll
bGROYW1lKGFzY2VuZGluZywgaW5kZXhBLCBpbmRleEIpCiAgICAgICAgIHsKQEAgLTE5MzksNyAr
MTc5Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rlc1Byb3ZpZGVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgdGhpcy5zb3J0QWxsKCk7CiAK
LSAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUodGhp
cy5zbmFwc2hvdCk7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5zbmFwc2hvdC5jcmVhdGVOb2Rl
KCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlcmF0aW9uT3JkZXIubGVu
Z3RoOyBpKyspIHsKICAgICAgICAgICAgIG5vZGUubm9kZUluZGV4ID0gdGhpcy5faXRlcmF0aW9u
T3JkZXJbaV07CiAgICAgICAgICAgICBpZiAobm9kZS5pZCgpID09PSBzbmFwc2hvdE9iamVjdElk
KQpAQCAtMTk2OSw4ICsxODI2LDggQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJv
dmlkZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYXNjZW5kaW5nMSA9IGNvbXBhcmF0b3Iu
YXNjZW5kaW5nMTsKICAgICAgICAgdmFyIGFzY2VuZGluZzIgPSBjb21wYXJhdG9yLmFzY2VuZGlu
ZzI7CiAKLSAgICAgICAgdmFyIG5vZGVBID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RO
b2RlKHRoaXMuc25hcHNob3QpOwotICAgICAgICB2YXIgbm9kZUIgPSBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGUodGhpcy5zbmFwc2hvdCk7CisgICAgICAgIHZhciBub2RlQSA9IHRo
aXMuc25hcHNob3QuY3JlYXRlTm9kZSgpOworICAgICAgICB2YXIgbm9kZUIgPSB0aGlzLnNuYXBz
aG90LmNyZWF0ZU5vZGUoKTsKIAogICAgICAgICBmdW5jdGlvbiBzb3J0QnlOb2RlRmllbGQoZmll
bGROYW1lLCBhc2NlbmRpbmcpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90TG9hZGVyLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RMb2FkZXIuanMKaW5kZXggMWE0NTdj
ZTI0ZTBiZGQ2ZjQ3ZGIyYjE3N2NjNjg5ZGFjYzI0ZTQ2Yy4uMDU4YzhhNDYwYTczYTFmMDdiODE4
YzkwMWM0ZDY4NzlkOGUwMWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IZWFwU25hcHNob3RMb2FkZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RMb2FkZXIuanMKQEAgLTU4LDcgKzU4LDcgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlci5wcm90b3R5cGUgPSB7CiAKICAgICBidWls
ZFNuYXBzaG90OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QodGhpcy5fc25hcHNob3QpOworICAgICAgICB2YXIgcmVz
dWx0ID0gbmV3IFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdCh0aGlzLl9zbmFwc2hvdCk7CiAg
ICAgICAgIHRoaXMuX3Jlc2V0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90
UHJveHkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dFByb3h5LmpzCmluZGV4IDllYmViOGY3NjFjOWIxMGE0NWFjZDcwNDNlODgxYWYzZDAxZWI5MWQu
LjRhZTIyMGFkMWI0OTJmYThmZTUzYzk0YTJkYzA0NjNlMmViNzFkYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5q
cwpAQCAtMTgzLDcgKzE4Myw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXIgPSBm
dW5jdGlvbigpCiAgICAgdGhpcy5fY2FsbGJhY2tzID0gW107CiAgICAgdGhpcy5fcHJldmlvdXND
YWxsYmFja3MgPSBbXTsKICAgICAvLyBUaGVyZSBpcyBubyBzdXBwb3J0IGZvciB3b3JrZXJzIGlu
IENocm9taXVtIERSVC4KLSAgICB0aGlzLl93b3JrZXIgPSB0eXBlb2YgSW5zcGVjdG9yVGVzdCA9
PT0gInVuZGVmaW5lZCIgPyBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJlYWxXb3JrZXIo
KSA6IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmFrZVdvcmtlcigpOworICAgIHRoaXMu
X3dvcmtlciA9IC8qIHR5cGVvZiBJbnNwZWN0b3JUZXN0ID09PSAidW5kZWZpbmVkIiA/IG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlcigpIDogKi8gbmV3IFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RGYWtlV29ya2VyKCk7CiAgICAgdGhpcy5fd29ya2VyLmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCB0aGlzLl9tZXNzYWdlUmVjZWl2ZWQsIHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFdv
cmtlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90
V29ya2VyLmpzCmluZGV4IDRlMmI0NjZkOWQ3MjRkNmQ3YmU5ZGIwYWZhZWVmNTQxMDUyNjY2YjQu
LjE4OGViMTU1OGIxNjRiNTEzZGJjZmJjNzVhNWQwNWJlN2EzM2Q4MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90V29ya2Vy
LmpzCkBAIC0zNCw2ICszNCw3IEBAIFdlYkluc3BlY3Rvci5VSVN0cmluZyA9IGZ1bmN0aW9uKHMp
IHsgcmV0dXJuIHM7IH07CiBpbXBvcnRTY3JpcHRzKCJIZWFwU25hcHNob3QuanMiKTsKIGltcG9y
dFNjcmlwdHMoIkhlYXBTbmFwc2hvdExvYWRlci5qcyIpOwogaW1wb3J0U2NyaXB0cygiSGVhcFNu
YXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIpOworaW1wb3J0U2NyaXB0cygiSlNIZWFwU25hcHNo
b3QuanMiKTsKIGltcG9ydFNjcmlwdHMoIkZpbGVVdGlscy5qcyIpOwogaW1wb3J0U2NyaXB0cygi
dXRpbGl0aWVzLmpzIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSlNIZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0pTSGVhcFNuYXBzaG90LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MGRiMDhiMjA1NThkNzE0ODQz
YzRmZGUzY2U5YTI0NGFjMTc2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0pTSGVhcFNuYXBzaG90LmpzCkBAIC0wLDAgKzEsMzEyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
fQorICovCitXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QgPSBmdW5jdGlvbihwcm9maWxlKQor
eworICAgIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QuY2FsbCh0aGlzLCBwcm9maWxlKTsKK30K
KworV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKKyAgICBjcmVhdGVO
b2RlOiBmdW5jdGlvbihub2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5KU0hlYXBTbmFwc2hvdE5vZGUodGhpcywgbm9kZUluZGV4KTsKKyAgICB9LAorCisg
ICAgY3JlYXRlRWRnZTogZnVuY3Rpb24oZWRnZXMsIGVkZ2VJbmRleCkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90RWRnZSh0aGlzLCBlZGdlcywg
ZWRnZUluZGV4KTsKKyAgICB9LAorCisgICAgY3JlYXRlUmV0YWluaW5nRWRnZTogZnVuY3Rpb24o
cmV0YWluZWROb2RlSW5kZXgsIHJldGFpbmVySW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdFJldGFpbmVyRWRnZSh0aGlzLCByZXRhaW5l
ZE5vZGVJbmRleCwgcmV0YWluZXJJbmRleCk7CisgICAgfSwKKworICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUKK307CisKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2V9CisgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdH0gc25hcHNob3QKKyAqIEBwYXJhbSB7bnVt
YmVyPX0gbm9kZUluZGV4CisgKi8KK1dlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdE5vZGUgPSBm
dW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4KQoreworICAgIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3ROb2RlLmNhbGwodGhpcywgc25hcHNob3QsIG5vZGVJbmRleCkKK30KKworV2ViSW5zcGVj
dG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CisgICAgY2FuQmVRdWVyaWVkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9zbmFwc2hvdC5fZmxh
Z3NPZk5vZGUodGhpcyk7CisgICAgICAgIHJldHVybiAhIShmbGFncyAmIHRoaXMuX3NuYXBzaG90
Ll9ub2RlRmxhZ3MuY2FuQmVRdWVyaWVkKTsKKyAgICB9LAorCisgICAgaXNQYWdlT2JqZWN0OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9zbmFwc2hvdC5fZmxh
Z3NPZk5vZGUodGhpcyk7CisgICAgICAgIHJldHVybiAhIShmbGFncyAmIHRoaXMuX3NuYXBzaG90
Ll9ub2RlRmxhZ3MucGFnZU9iamVjdCk7CisgICAgfSwKKworICAgIGRpc3RhbmNlVG9XaW5kb3c6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5fZGlzdGFu
Y2VzVG9XaW5kb3dbdGhpcy5ub2RlSW5kZXggLyB0aGlzLl9zbmFwc2hvdC5fbm9kZUZpZWxkQ291
bnRdOworICAgIH0sCisKKyAgICBjbGFzc05hbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciB0eXBlID0gdGhpcy50eXBlKCk7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAg
ICBjYXNlICJoaWRkZW4iOgorICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiKHN5c3RlbSkiKTsKKyAgICAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgICAgY2FzZSAibmF0
aXZlIjoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUoKTsKKyAgICAgICAgY2FzZSAiY29k
ZSI6CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoY29tcGlsZWQg
Y29kZSkiKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAiKCIgKyB0eXBl
ICsgIikiOworICAgICAgICB9CisgICAgfSwKKworICAgIGNsYXNzSW5kZXg6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXMuX3NuYXBzaG90OworICAgICAgICB2
YXIgbm9kZXMgPSBzbmFwc2hvdC5fbm9kZXM7CisgICAgICAgIHZhciB0eXBlID0gbm9kZXNbdGhp
cy5ub2RlSW5kZXggKyBzbmFwc2hvdC5fbm9kZVR5cGVPZmZzZXRdOzsKKyAgICAgICAgaWYgKHR5
cGUgPT09IHNuYXBzaG90Ll9ub2RlT2JqZWN0VHlwZSB8fCB0eXBlID09PSBzbmFwc2hvdC5fbm9k
ZU5hdGl2ZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gbm9kZXNbdGhpcy5ub2RlSW5kZXggKyBz
bmFwc2hvdC5fbm9kZU5hbWVPZmZzZXRdOworICAgICAgICByZXR1cm4gLTEgLSB0eXBlOworICAg
IH0sCisKKyAgICBpZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHNuYXBzaG90ID0g
dGhpcy5fc25hcHNob3Q7CisgICAgICAgIHJldHVybiBzbmFwc2hvdC5fbm9kZXNbdGhpcy5ub2Rl
SW5kZXggKyBzbmFwc2hvdC5fbm9kZUlkT2Zmc2V0XTsKKyAgICB9LAorCisgICAgaXNIaWRkZW46
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMu
X3NuYXBzaG90Ll9ub2RlSGlkZGVuVHlwZTsKKyAgICB9LAorCisgICAgaXNOYXRpdmU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3NuYXBz
aG90Ll9ub2RlTmF0aXZlVHlwZTsKKyAgICB9LAorCisgICAgaXNTeW50aGV0aWM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3NuYXBzaG90
Ll9ub2RlU3ludGhldGljVHlwZTsKKyAgICB9LAorCisgICAgaXNXaW5kb3c6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGNvbnN0IHdpbmRvd1JFID0gL15XaW5kb3cvOworICAgICAgICByZXR1
cm4gd2luZG93UkUudGVzdCh0aGlzLm5hbWUoKSk7CisgICAgfSwKKworICAgIGlzRGV0YWNoZWRE
T01UcmVlc1Jvb3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLm5hbWUo
KSA9PT0gIihEZXRhY2hlZCBET00gdHJlZXMpIjsKKyAgICB9LAorCisgICAgaXNEZXRhY2hlZERP
TVRyZWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnN0IGRldGFjaGVkRE9NVHJlZVJF
ID0gL15EZXRhY2hlZCBET00gdHJlZS87CisgICAgICAgIHJldHVybiBkZXRhY2hlZERPTVRyZWVS
RS50ZXN0KHRoaXMuY2xhc3NOYW1lKCkpOworICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZQorfTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZX0KKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90fSBzbmFwc2hvdAorICogQHBhcmFtIHtB
cnJheS48bnVtYmVyPn0gZWRnZXMKKyAqIEBwYXJhbSB7bnVtYmVyPX0gZWRnZUluZGV4CisgKi8K
K1dlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdEVkZ2UgPSBmdW5jdGlvbihzbmFwc2hvdCwgZWRn
ZXMsIGVkZ2VJbmRleCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZS5jYWxs
KHRoaXMsIHNuYXBzaG90LCBlZGdlcywgZWRnZUluZGV4KTsKK30KKworV2ViSW5zcGVjdG9yLkpT
SGVhcFNuYXBzaG90RWRnZS5wcm90b3R5cGUgPSB7CisgICAgY2xvbmU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90RWRnZSh0
aGlzLl9zbmFwc2hvdCwgdGhpcy5fZWRnZXMsIHRoaXMuZWRnZUluZGV4KTsKKyAgICB9LAorCisg
ICAgaGFzU3RyaW5nTmFtZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlz
U2hvcnRjdXQoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNTdHJpbmdOYW1lKCk7Cisg
ICAgICAgIHJldHVybiBpc05hTihwYXJzZUludCh0aGlzLl9uYW1lKCksIDEwKSk7CisgICAgfSwK
KworICAgIGlzRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3R5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VFbGVtZW50VHlwZTsKKyAgICB9LAorCisg
ICAgaXNIaWRkZW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBl
KCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlSGlkZGVuVHlwZTsKKyAgICB9LAorCisgICAgaXNX
ZWFrOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSgpID09PSB0
aGlzLl9zbmFwc2hvdC5fZWRnZVdlYWtUeXBlOworICAgIH0sCisKKyAgICBpc0ludGVybmFsOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSgpID09PSB0aGlzLl9z
bmFwc2hvdC5fZWRnZUludGVybmFsVHlwZTsKKyAgICB9LAorCisgICAgaXNJbnZpc2libGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlKCkgPT09IHRoaXMuX3Nu
YXBzaG90Ll9lZGdlSW52aXNpYmxlVHlwZTsKKyAgICB9LAorCisgICAgaXNTaG9ydGN1dDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUoKSA9PT0gdGhpcy5fc25h
cHNob3QuX2VkZ2VTaG9ydGN1dFR5cGU7CisgICAgfSwKKworICAgIG5hbWU6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1Nob3J0Y3V0KCkpCisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fbmFtZSgpOworICAgICAgICB2YXIgbnVtTmFtZSA9IHBhcnNlSW50KHRoaXMuX25h
bWUoKSwgMTApOworICAgICAgICByZXR1cm4gaXNOYU4obnVtTmFtZSkgPyB0aGlzLl9uYW1lKCkg
OiBudW1OYW1lOworICAgIH0sCisKKyAgICB0b1N0cmluZzogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIG5hbWUgPSB0aGlzLm5hbWUoKTsKKyAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUo
KSkgeworICAgICAgICBjYXNlICJjb250ZXh0IjogcmV0dXJuICItPiIgKyBuYW1lOworICAgICAg
ICBjYXNlICJlbGVtZW50IjogcmV0dXJuICJbIiArIG5hbWUgKyAiXSI7CisgICAgICAgIGNhc2Ug
IndlYWsiOiByZXR1cm4gIltbIiArIG5hbWUgKyAiXV0iOworICAgICAgICBjYXNlICJwcm9wZXJ0
eSI6CisgICAgICAgICAgICByZXR1cm4gbmFtZS5pbmRleE9mKCIgIikgPT09IC0xID8gIi4iICsg
bmFtZSA6ICJbXCIiICsgbmFtZSArICJcIl0iOworICAgICAgICBjYXNlICJzaG9ydGN1dCI6Cisg
ICAgICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAg
IHJldHVybiBuYW1lLmluZGV4T2YoIiAiKSA9PT0gLTEgPyAiLiIgKyBuYW1lIDogIltcIiIgKyBu
YW1lICsgIlwiXSI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuICJb
IiArIG5hbWUgKyAiXSI7CisgICAgICAgIGNhc2UgImludGVybmFsIjoKKyAgICAgICAgY2FzZSAi
aGlkZGVuIjoKKyAgICAgICAgY2FzZSAiaW52aXNpYmxlIjoKKyAgICAgICAgICAgIHJldHVybiAi
eyIgKyBuYW1lICsgIn0iOworICAgICAgICB9OworICAgICAgICByZXR1cm4gIj8iICsgbmFtZSAr
ICI/IjsKKyAgICB9LAorCisgICAgX2hhc1N0cmluZ05hbWU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhdGhpcy5pc0VsZW1lbnQoKSAmJiAhdGhpcy5pc0hpZGRlbigpICYmICF0
aGlzLmlzV2VhaygpOworICAgIH0sCisKKyAgICBfbmFtZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2hhc1N0cmluZ05hbWUoKSA/IHRoaXMuX3NuYXBzaG90Ll9zdHJp
bmdzW3RoaXMuX25hbWVPckluZGV4KCldIDogdGhpcy5fbmFtZU9ySW5kZXgoKTsKKyAgICB9LAor
CisgICAgX25hbWVPckluZGV4OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fZWRnZXMuaXRlbSh0aGlzLmVkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlTmFtZU9m
ZnNldCk7CisgICAgfSwKKworICAgIF90eXBlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fZWRnZXMuaXRlbSh0aGlzLmVkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9l
ZGdlVHlwZU9mZnNldCk7CisgICAgfSwKKworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlCit9OworCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisg
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlfQorICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3R9IHNuYXBzaG90CisgKi8KK1dlYklu
c3BlY3Rvci5KU0hlYXBTbmFwc2hvdFJldGFpbmVyRWRnZSA9IGZ1bmN0aW9uKHNuYXBzaG90LCBy
ZXRhaW5lZE5vZGVJbmRleCwgcmV0YWluZXJJbmRleCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UmV0YWluZXJFZGdlLmNhbGwodGhpcywgc25hcHNob3QsIHJldGFpbmVkTm9kZUlu
ZGV4LCByZXRhaW5lckluZGV4KTsKK30KKworV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90UmV0
YWluZXJFZGdlLnByb3RvdHlwZSA9IHsKKyAgICBjbG9uZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3RSZXRhaW5lckVkZ2Uo
dGhpcy5fc25hcHNob3QsIHRoaXMuX3JldGFpbmVkTm9kZUluZGV4LCB0aGlzLnJldGFpbmVySW5k
ZXgoKSk7CisgICAgfSwKKworICAgIGlzRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS5pc0VsZW1lbnQoKTsKKyAgICB9LAorCisgICAgaXNIaWRk
ZW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCkuaXNIaWRk
ZW4oKTsKKyAgICB9LAorCisgICAgaXNJbnRlcm5hbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS5pc0ludGVybmFsKCk7CisgICAgfSwKKworICAgIGlzSW52
aXNpYmxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWRnZSgpLmlz
SW52aXNpYmxlKCk7CisgICAgfSwKKworICAgIGlzU2hvcnRjdXQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCkuaXNTaG9ydGN1dCgpOworICAgIH0sCisKKyAg
ICBpc1dlYWs6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCku
aXNXZWFrKCk7CisgICAgfSwKKworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFJldGFpbmVyRWRnZS5wcm90b3R5cGUKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGQ2YWUyOTZiM2Y4ZmFh
MWNiZTJlN2Q1YTNlNTEyMWNjZmJhMWNmODcuLjdiOTg0YTc5MTdkNWY1MzEyZjE3OTRkMzQzNjJj
ZDVkNjUyNzQ3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTEzNzcsNiArMTM3Nyw3IEBAIGltcG9ydFNjcmlwdCgi
SGVhcFNuYXBzaG90TG9hZGVyLmpzIik7CiBpbXBvcnRTY3JpcHQoIkhlYXBTbmFwc2hvdFByb3h5
LmpzIik7CiBpbXBvcnRTY3JpcHQoIkhlYXBTbmFwc2hvdFZpZXcuanMiKTsKIGltcG9ydFNjcmlw
dCgiSGVhcFNuYXBzaG90V29ya2VyRGlzcGF0Y2hlci5qcyIpOworaW1wb3J0U2NyaXB0KCJKU0hl
YXBTbmFwc2hvdC5qcyIpOwogaW1wb3J0U2NyaXB0KCJOYXRpdmVIZWFwR3JhcGguanMiKTsKIGlt
cG9ydFNjcmlwdCgiTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzIik7CiBpbXBvcnRTY3JpcHQo
IlByb2ZpbGVMYXVuY2hlclZpZXcuanMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBlNDQyMmRmYTQwYmYwOGU2ZTMzMWZkZGU5ZTNlYzNi
ZDljMmU4NzI2Li5iM2JmZjI1MDlmYzljZDAyNWNjNjNhZWY1MDg0YjE0NzkyMzgyMGE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC05OCw2
ICs5OCw3IEBACiAgICAgPGZpbGU+SW5zcGVjdG9yRnJvbnRlbmRBUEkuanM8L2ZpbGU+CiAgICAg
PGZpbGU+SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczwvZmlsZT4KICAgICA8ZmlsZT5JbnNw
ZWN0b3JWaWV3LmpzPC9maWxlPgorICAgIDxmaWxlPkpTSGVhcFNuYXBzaG90LmpzPC9maWxlPgog
ICAgIDxmaWxlPkphdmFTY3JpcHRGb3JtYXR0ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SmF2YVNj
cmlwdFNvdXJjZUZyYW1lLmpzPC9maWxlPgogICAgIDxmaWxlPmpzZGlmZmxpYi5qczwvZmlsZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxZGNiZTRkZDkyNWMzY2JmNjQ3MGM0M2M2
N2VmZjU5MGM2Mzk1MzFiLi4yNDU3NDhiN2QwMjc0OTk5MGM2ZWQ3ODgwNzM2ZmU5M2M1YmNiZjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xMjgxLDYgKzEyODEsNyBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90LmpzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4v
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdExvYWRlci5qcycsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy4uLy4uL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3RXb3JrZXJEaXNwYXRjaGVyLmpzJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0pTSGVhcFNuYXBzaG90
LmpzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcycsCiAgICAgICAgICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NlYXJjaF9wYXRoJzogJy4uLy4uL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZCcsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDQ5OTU2MTg1MjJhNTk5MjZhYmMzNzhmYTUwNmZm
NDg4ZTRjNTc3Yi4uNzAxMzk5YTZjNGE3ZTI0ZjRlOWFmZTYyNGM5NTJhNjAxMzAyNjIyNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgSlMgaGVhcCBw
cm9maWxlciBzcGVjaWZpY3MgaW50byBKU0hlYXBTbmFwc2hvdC5qcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzY4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5yb2R1Y2VkIEpTSGVhcFNuYXBzaG90
LCBKU0hlYXBTbmFwc2hvdE5vZGUsIEpTSGVhcFNuYXBzaG90RWRnZSBhbmQgSlNIZWFwU25hcHNo
b3RSZXRhaW5lckVkZ2Ugd2hpY2gKKyAgICAgICAgc2hvdWxkIGVuY2Fwc3VsYXRlIGxvZ2ljIHNw
ZWNpZmljIHRvIEpTLWhlYXAuIFRoZSB0ZXN0cyB3ZXJlIHN3aXRjaGVkIHRvIHRoZSBuZXcgY2xh
c3Nlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWxvYWRl
ci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3Qu
anM6CisgICAgICAgIChpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3QuSW5zcGVjdG9yVGVzdC5j
cmVhdGVKU0hlYXBTbmFwc2hvdE1vY2tPYmplY3QpOgorICAgICAgICAoaW5pdGlhbGl6ZV9IZWFw
U25hcHNob3RUZXN0Lkluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja1Jhdyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbDoKKwogMjAxMi0x
Mi0yNSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IENyYXNoIHdoZW4gbW9kaWZ5aW5nIGEgcnVsZSB0aGF0IGhhcyBiZWVu
IHJlbW92ZWQgdGhyb3VnaCBKYXZhU2NyaXB0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1sb2FkZXIuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWxvYWRlci5odG1sCmluZGV4IDA5ODk2ZmJi
N2NiOTY5NTEzZWM1ODc0ZmJkNjA1YzcyYTM3YjMyNGQuLmJmODc1OTcxOTZhNDg1NjEyMmJmOWUz
MjcxNDcyMzJiZjNlM2U4NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LWxvYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWxvYWRlci5odG1sCkBAIC01OCw3ICs1OCw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGxvYWRlci5idWlsZFNuYXBz
aG90KCk7CiAgICAgICAgICAgICByZXN1bHQuX25vZGVzID0gbmV3IFVpbnQzMkFycmF5KHJlc3Vs
dC5fbm9kZXMpOwogICAgICAgICAgICAgcmVzdWx0Ll9jb250YWlubWVudEVkZ2VzID0gbmV3IFVp
bnQzMkFycmF5KHJlc3VsdC5fY29udGFpbm1lbnRFZGdlcyk7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydFNuYXBzaG90RXF1YWxzKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKSwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0U25hcHNob3RFcXVhbHMobmV3IFdlYkluc3BlY3Rv
ci5KU0hlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSks
IHJlc3VsdCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0sCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCmluZGV4
IDE4NTEzNGIyNDExYmQ4YjRjZWIxY2VmODFlMDE5MTFhMDcxM2RmNjMuLmE2MDk4NWY2N2Y2MGU5
ZWNkZDAwNmU5YmRkZGU5MGI2OWRkMTFjYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwpAQCAtMSw2ICsxLDYgQEAKIHZh
ciBpbml0aWFsaXplX0hlYXBTbmFwc2hvdFRlc3QgPSBmdW5jdGlvbigpIHsKIAotSW5zcGVjdG9y
VGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0ID0gZnVuY3Rpb24oKQorSW5zcGVjdG9y
VGVzdC5jcmVhdGVKU0hlYXBTbmFwc2hvdE1vY2tPYmplY3QgPSBmdW5jdGlvbigpCiB7CiAgICAg
cmV0dXJuIHsKICAgICAgICAgX3Jvb3ROb2RlSW5kZXg6IDAsCkBAIC00MywxMyArNDMsMTYgQEAg
SW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0ID0gZnVuY3Rpb24oKQog
ICAgICAgICAgICAgMSwgMTAsIDEyLCAgLy8gMTU6IHByb3BlcnR5ICdiZCcgdG8gbm9kZSAnRCcK
ICAgICAgICAgICAgIDEsIDExLCAxNV0sIC8vIDE4OiBwcm9wZXJ0eSAnY2UnIHRvIG5vZGUgJ0Un
CiAgICAgICAgIF9zdHJpbmdzOiBbIiIsICJBIiwgIkIiLCAiQyIsICJEIiwgIkUiLCAiYSIsICJi
IiwgImFjIiwgImJjIiwgImJkIiwgImNlIl0sCi0gICAgICAgIF9maXJzdEVkZ2VJbmRleGVzOiBb
MCwgNiwgMTIsIDE4LCAyMSwgMjEsIDIxXQorICAgICAgICBfZmlyc3RFZGdlSW5kZXhlczogWzAs
IDYsIDEyLCAxOCwgMjEsIDIxLCAyMV0sCisgICAgICAgIGNyZWF0ZU5vZGU6IFdlYkluc3BlY3Rv
ci5KU0hlYXBTbmFwc2hvdC5wcm90b3R5cGUuY3JlYXRlTm9kZSwKKyAgICAgICAgY3JlYXRlRWRn
ZTogV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90LnByb3RvdHlwZS5jcmVhdGVFZGdlLAorICAg
ICAgICBjcmVhdGVSZXRhaW5pbmdFZGdlOiBXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJv
dG90eXBlLmNyZWF0ZVJldGFpbmluZ0VkZ2UKICAgICB9OwogfTsKIAogSW5zcGVjdG9yVGVzdC5j
cmVhdGVIZWFwU25hcHNob3RNb2NrUmF3ID0gZnVuY3Rpb24oKQogewotICAgIC8vIEVmZmVjdGl2
ZWx5IHRoZSBzYW1lIGdyYXBoIGFzIGluIGNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QsCisg
ICAgLy8gRWZmZWN0aXZlbHkgdGhlIHNhbWUgZ3JhcGggYXMgaW4gY3JlYXRlSlNIZWFwU25hcHNo
b3RNb2NrT2JqZWN0LAogICAgIC8vIGJ1dCBoYXZpbmcgZnVsbCBzZXQgb2YgZmllbGRzLgogICAg
IC8vCiAgICAgLy8gQSB0cmlwbGUgaW4gcGFyZW50aGVzZXMgaW5kaWNhdGVzIG5vZGUgaW5kZXgs
IHNlbGYgc2l6ZSBhbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVh
cC1zbmFwc2hvdC5odG1sCmluZGV4IGZiMzZhOTA1MjI3OTM5M2Q3NDNjMjUyY2NmY2QwZjFiNzNk
Y2I4OGYuLjE3OGFjNDU0N2YxMjgxZTE5YjA3OTFiOTZmYjVmYjA1NjhlNDI0M2UgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbApAQCAt
NiwxNSArNiwxNiBAQAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBXZWJJbnNwZWN0b3Iuc2hv
d1BhbmVsKCJwcm9maWxlcyIpOwogICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKICAg
ICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90Tm9kZVNpbXBsZVRlc3QobmV4dCkKICAgICAgICAg
ewotICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25h
cHNob3RNb2NrT2JqZWN0KCk7Ci0gICAgICAgICAgICB2YXIgbm9kZVJvb3QgPSBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNob3QsIHNuYXBzaG90Ll9yb290Tm9kZUluZGV4
KTsKKyAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlSlNIZWFw
U25hcHNob3RNb2NrT2JqZWN0KCk7CisgICAgICAgICAgICB2YXIgbm9kZVJvb3QgPSBzbmFwc2hv
dC5jcmVhdGVOb2RlKHNuYXBzaG90Ll9yb290Tm9kZUluZGV4KTsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKCIiLCBub2RlUm9vdC5uYW1lKCksICJyb290IG5hbWUiKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJoaWRkZW4iLCBub2RlUm9v
dC50eXBlKCksICJyb290IHR5cGUiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKDIsIG5vZGVSb290LmVkZ2VzQ291bnQoKSwgInJvb3QgZWRnZXMiKTsKLSAgICAgICAg
ICAgIHZhciBub2RlRSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hv
dCwgMTUpOworICAgICAgICAgICAgdmFyIG5vZGVFID0gc25hcHNob3QuY3JlYXRlTm9kZSgxNSk7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiRSIsIG5vZGVFLm5hbWUo
KSwgIkUgbmFtZSIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIm9i
amVjdCIsIG5vZGVFLnR5cGUoKSwgIkUgdHlwZSIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoMCwgbm9kZUUuZWRnZXNDb3VudCgpLCAiRSBlZGdlcyIpOwpAQCAtMjMs
OCArMjQsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNo
b3ROb2RlSXRlcmF0b3JUZXN0KG5leHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzbmFw
c2hvdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9ja09iamVjdCgpOwotICAg
ICAgICAgICAgdmFyIG5vZGVSb290ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2Rl
KHNuYXBzaG90LCBzbmFwc2hvdC5fcm9vdE5vZGVJbmRleCk7CisgICAgICAgICAgICB2YXIgc25h
cHNob3QgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUpTSGVhcFNuYXBzaG90TW9ja09iamVjdCgpOwor
ICAgICAgICAgICAgdmFyIG5vZGVSb290ID0gc25hcHNob3QuY3JlYXRlTm9kZShzbmFwc2hvdC5f
cm9vdE5vZGVJbmRleCk7CiAgICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvcihub2RlUm9vdCk7CiAgICAgICAgICAgICB2YXIg
bmFtZXMgPSBbXTsKICAgICAgICAgICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsgaXRlcmF0b3Iu
aGFzTmV4dCgpOyBpdGVyYXRvci5uZXh0KCkpCkBAIC0zNSwxMSArMzYsMTEgQEAgZnVuY3Rpb24g
dGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90RWRnZVNpbXBsZVRlc3QobmV4
dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVIZWFwU25hcHNob3RNb2NrT2JqZWN0KCk7Ci0gICAgICAgICAgICB2YXIgbm9kZVJvb3Qg
PSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUoc25hcHNob3QsIHNuYXBzaG90Ll9y
b290Tm9kZUluZGV4KTsKKyAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlSlNIZWFwU25hcHNob3RNb2NrT2JqZWN0KCk7CisgICAgICAgICAgICB2YXIgbm9kZVJv
b3QgPSBzbmFwc2hvdC5jcmVhdGVOb2RlKHNuYXBzaG90Ll9yb290Tm9kZUluZGV4KTsKICAgICAg
ICAgICAgIHZhciBlZGdlc1Jvb3QgPSBub2RlUm9vdC5yYXdFZGdlcygpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobm9kZVJvb3QuZWRnZXNDb3VudCgpICogc25hcHNo
b3QuX2VkZ2VGaWVsZHNDb3VudCwgZWRnZXNSb290Lmxlbmd0aCwgInJhd0VkZ2VzIGxlbmd0aCIp
OwotICAgICAgICAgICAgdmFyIGVkZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVk
Z2Uoc25hcHNob3QsIGVkZ2VzUm9vdCk7CisgICAgICAgICAgICB2YXIgZWRnZSA9IHNuYXBzaG90
LmNyZWF0ZUVkZ2UoZWRnZXNSb290KTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKCJzaG9ydGN1dCIsIGVkZ2UudHlwZSgpLCAiZWRnZSB0eXBlIik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiYSIsIGVkZ2UubmFtZSgpLCAiZWRnZSBuYW1l
Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiQSIsIGVkZ2Uubm9k
ZSgpLm5hbWUoKSwgImVkZ2Ugbm9kZSBuYW1lIik7CkBAIC00OCwyMiArNDksMjIgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90RWRnZUl0ZXJhdG9yVGVz
dChuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc25hcHNob3QgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QoKTsKLSAgICAgICAgICAgIHZhciBub2Rl
Um9vdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShzbmFwc2hvdCwgc25hcHNo
b3QuX3Jvb3ROb2RlSW5kZXgpOworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVKU0hlYXBTbmFwc2hvdE1vY2tPYmplY3QoKTsKKyAgICAgICAgICAgIHZhciBu
b2RlUm9vdCA9IHNuYXBzaG90LmNyZWF0ZU5vZGUoc25hcHNob3QuX3Jvb3ROb2RlSW5kZXgpOwog
ICAgICAgICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBu
b2RlUm9vdC5lZGdlcygpOwogICAgICAgICAgICAgZm9yIChpdGVyYXRvci5maXJzdCgpOyBpdGVy
YXRvci5oYXNOZXh0KCk7IGl0ZXJhdG9yLm5leHQoKSkKICAgICAgICAgICAgICAgICBuYW1lcy5w
dXNoKGl0ZXJhdG9yLml0ZW0oKS5uYW1lKCkpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoImEsYiIsIG5hbWVzLmpvaW4oIiwiKSwgImVkZ2UgaXRlcmF0b3IiKTsKLSAg
ICAgICAgICAgIHZhciBub2RlRSA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShz
bmFwc2hvdCwgMTUpOworICAgICAgICAgICAgdmFyIG5vZGVFID0gc25hcHNob3QuY3JlYXRlTm9k
ZSgxNSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgbm9k
ZUUuZWRnZXMoKS5oYXNOZXh0KCksICJlbXB0eSBlZGdlIGl0ZXJhdG9yIik7CiAgICAgICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90Tm9k
ZUFuZEVkZ2VUZXN0KG5leHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzbmFwc2hvdE1v
Y2sgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2tPYmplY3QoKTsKLSAgICAg
ICAgICAgIHZhciBub2RlUm9vdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZShz
bmFwc2hvdE1vY2ssIHNuYXBzaG90TW9jay5fcm9vdE5vZGVJbmRleCk7CisgICAgICAgICAgICB2
YXIgc25hcHNob3RNb2NrID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVKU0hlYXBTbmFwc2hvdE1vY2tP
YmplY3QoKTsKKyAgICAgICAgICAgIHZhciBub2RlUm9vdCA9IHNuYXBzaG90TW9jay5jcmVhdGVO
b2RlKHNuYXBzaG90TW9jay5fcm9vdE5vZGVJbmRleCk7CiAgICAgICAgICAgICB2YXIgbmFtZXMg
PSBbXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZnVuY3Rpb24gZGVwdGhGaXJzdFRyYXZl
cnNhbChub2RlKQpAQCAtODEsNyArODIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gTm93IGNoZWNrIGFnYWluc3QgYSByZWFsIEhlYXBTbmFwc2hvdCBpbnN0
YW5jZS4KICAgICAgICAgICAgIG5hbWVzID0gW107Ci0gICAgICAgICAgICB2YXIgc25hcHNob3Qg
PSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBT
bmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVj
dG9yLkpTSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygp
KTsKICAgICAgICAgICAgIGRlcHRoRmlyc3RUcmF2ZXJzYWwoc25hcHNob3Qucm9vdE5vZGUoKSk7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhyZWZlcmVuY2UsIG5hbWVz
LmpvaW4oIiwiKSwgInNuYXBzaG90IHRyYXZlcnNhbCIpOwogICAgICAgICAgICAgbmV4dCgpOwpA
QCAtODksNyArOTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbiBoZWFw
U25hcHNob3RTaW1wbGVUZXN0KG5leHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzbmFw
c2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRl
SGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJ
bnNwZWN0b3IuSlNIZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RN
b2NrKCkpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoNiwgc25hcHNo
b3Qubm9kZUNvdW50LCAibm9kZSBjb3VudCIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoMjAsIHNuYXBzaG90LnRvdGFsU2l6ZSwgInRvdGFsIHNpemUiKTsKICAgICAg
ICAgICAgIG5leHQoKTsKQEAgLTk3LDcgKzk4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAg
ICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90Q29udGFpbm1lbnRFZGdlSW5kZXhlc1Rlc3QobmV4dCkK
ICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAg
ICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdChJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CiAgICAgICAgICAgICB2YXIg
YWN0dWFsID0gc25hcHNob3QuX2ZpcnN0RWRnZUluZGV4ZXM7CiAgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWQgPSBbMCwgNiwgMTIsIDE4LCAyMSwgMjEsIDIxXTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLmxlbmd0aCwgYWN0dWFsLmxlbmd0aCwgIkVkZ2Ug
aW5kZXhlcyBzaXplIik7CkBAIC0xMDgsNyArMTA5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90UG9zdE9yZGVySW5kZXhUZXN0KG5leHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKKyAgICAgICAg
ICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QoSW5zcGVj
dG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwogICAgICAgICAgICAgdmFyIHBvc3RP
cmRlckluZGV4Mk5vZGVPcmRpbmFsID0gc25hcHNob3QuX2J1aWxkUG9zdE9yZGVySW5kZXgoKS5w
b3N0T3JkZXJJbmRleDJOb2RlT3JkaW5hbDsKICAgICAgICAgICAgIHZhciBleHBlY3RlZCA9IFs0
LDUsMywyLDEsMF07CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkLmxl
bmd0aDsgKytpKQpAQCAtMTE4LDcgKzExOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAg
IGZ1bmN0aW9uIGhlYXBTbmFwc2hvdERvbWluYXRvcnNUcmVlVGVzdChuZXh0KQogICAgICAgICB7
Ci0gICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2
YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90KEluc3BlY3RvclRl
c3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSBz
bmFwc2hvdC5fYnVpbGRQb3N0T3JkZXJJbmRleCgpOwogICAgICAgICAgICAgdmFyIGRvbWluYXRv
cnNUcmVlID0gc25hcHNob3QuX2J1aWxkRG9taW5hdG9yVHJlZShyZXN1bHQucG9zdE9yZGVySW5k
ZXgyTm9kZU9yZGluYWwsIHJlc3VsdC5ub2RlT3JkaW5hbDJQb3N0T3JkZXJJbmRleCk7CiAgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWQgPSBbMCwgMCwgMCwgMCwgMiwgM107CkBAIC0xMjksNyArMTMw
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90UmV0
YWluZWRTaXplVGVzdChuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc25hcHNob3Qg
PSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBT
bmFwc2hvdE1vY2soKSk7CisgICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVj
dG9yLkpTSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygp
KTsKICAgICAgICAgICAgIHZhciBhY3R1YWxSZXRhaW5lZFNpemVzID0gbmV3IEFycmF5KHNuYXBz
aG90Lm5vZGVDb3VudCk7CiAgICAgICAgICAgICBmb3IgKHZhciBub2RlT3JkaW5hbCA9IDA7IG5v
ZGVPcmRpbmFsIDwgc25hcHNob3Qubm9kZUNvdW50OyArK25vZGVPcmRpbmFsKQogICAgICAgICAg
ICAgICAgIGFjdHVhbFJldGFpbmVkU2l6ZXNbbm9kZU9yZGluYWxdID0gc25hcHNob3QuX25vZGVz
W25vZGVPcmRpbmFsICogc25hcHNob3QuX25vZGVGaWVsZENvdW50ICsgc25hcHNob3QuX25vZGVS
ZXRhaW5lZFNpemVPZmZzZXRdOwpAQCAtMTQwLDcgKzE0MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
CiAgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdERvbWluYXRlZE5vZGVzVGVzdChuZXh0KQog
ICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CisgICAg
ICAgICAgICB2YXIgc25hcHNob3QgPSBuZXcgV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90KElu
c3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsKIAogICAgICAgICAgICAgdmFy
IGV4cGVjdGVkRG9taW5hdGVkTm9kZXMgPSBbMjEsIDE0LCA3LCAyOCwgMzVdOwogICAgICAgICAg
ICAgdmFyIGFjdHVhbERvbWluYXRlZE5vZGVzID0gc25hcHNob3QuX2RvbWluYXRlZE5vZGVzOwpA
QCAtMTc0LDcgKzE3NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIGRlYnVn
Z2VyT3duZWROb2RlID0gbmV3IEluc3BlY3RvclRlc3QuSGVhcE5vZGUoImRlYnVnZ2VyT3duZWRO
b2RlIik7CiAgICAgICAgICAgICBkZWJ1Z2dlck5vZGUubGlua05vZGUoZGVidWdnZXJPd25lZE5v
ZGUsIEluc3BlY3RvclRlc3QuSGVhcEVkZ2UuVHlwZS5lbGVtZW50KTsKIAotICAgICAgICAgICAg
dmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoYnVpbGRlci5nZW5l
cmF0ZVNuYXBzaG90KCkpOworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3Bl
Y3Rvci5KU0hlYXBTbmFwc2hvdChidWlsZGVyLmdlbmVyYXRlU25hcHNob3QoKSk7CiAgICAgICAg
ICAgICBzbmFwc2hvdC5fZmxhZ3MgPSBuZXcgQXJyYXkoc25hcHNob3Qubm9kZUNvdW50KTsKICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc25hcHNob3Qubm9kZUNvdW50OyArK2kpCiAg
ICAgICAgICAgICAgICAgc25hcHNob3QuX2ZsYWdzW2ldID0gMDsKQEAgLTE5MSw3ICsxOTIsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RSZXRhaW5l
cnNUZXN0KG5leHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90
TW9jaygpKTsKKyAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSlNI
ZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwogICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUmV0YWluZXJzID0gewogICAgICAgICAgICAgICAgICIiOiBb
XSwKICAgICAgICAgICAgICAgICAiQSI6IFsiIl0sCkBAIC0yMTEsNyArMjEyLDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90QWdncmVnYXRlc1Rlc3Qo
bmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkp
OworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5KU0hlYXBTbmFw
c2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CiAgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRBZ2dyZWdhdGVzID0gewogICAgICAgICAgICAgICAgICJBIjogeyBjb3Vu
dDogMSwgc2VsZjogMiwgbWF4UmV0OiAyLCB0eXBlOiAib2JqZWN0IiwgbmFtZTogIkEiIH0sCiAg
ICAgICAgICAgICAgICAgIkIiOiB7IGNvdW50OiAxLCBzZWxmOiAzLCBtYXhSZXQ6IDgsIHR5cGU6
ICJvYmplY3QiLCBuYW1lOiAiQiIgfSwKQEAgLTI0NSw3ICsyNDYsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKIAogICAgICAgICBmdW5jdGlvbiBoZWFwU25hcHNob3RGbGFnc1Rlc3QobmV4dCkKICAgICAg
ICAgewotICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrV2l0aERPTSgpKTsKKyAg
ICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3Qo
SW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrV2l0aERPTSgpKTsKICAgICAgICAg
ICAgIHZhciBleHBlY3RlZENhbkJlUXVlcmllZCA9IHsKICAgICAgICAgICAgICAgICAiIjogZmFs
c2UsCiAgICAgICAgICAgICAgICAiQSI6IHRydWUsCkBAIC0yNjksNyArMjcwLDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gaGVhcFNuYXBzaG90QXJyYXlTbGljZVRlc3Qo
bmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkp
OworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5KU0hlYXBTbmFw
c2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBTbmFwc2hvdE1vY2soKSk7CiAgICAgICAgICAg
ICB2YXIgcm9vdCA9IHNuYXBzaG90LnJvb3ROb2RlKCk7CiAgICAgICAgICAgICB2YXIgcmF3RWRn
ZXMgPSByb290LnJhd0VkZ2VzKCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyg2LCByYXdFZGdlcy5sZW5ndGgpOwpAQCAtMjgzLDcgKzI4NCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgICAgIGZ1bmN0aW9uIGhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXJUZXN0KG5l
eHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90KEluc3BlY3RvclRlc3QuY3JlYXRlSGVhcFNuYXBzaG90TW9jaygpKTsK
KyAgICAgICAgICAgIHZhciBzbmFwc2hvdCA9IG5ldyBXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNo
b3QoSW5zcGVjdG9yVGVzdC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmdW5jdGlvbiBub2RlRmlsdGVyKG5vZGUpCiAgICAgICAgICAgICB7CkBA
IC0zMDQsNyArMzA1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gaGVh
cFNuYXBzaG90RWRnZXNQcm92aWRlclRlc3QobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAg
dmFyIHNuYXBzaG90ID0gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QoSW5zcGVjdG9yVGVz
dC5jcmVhdGVIZWFwU25hcHNob3RNb2NrKCkpOworICAgICAgICAgICAgdmFyIHNuYXBzaG90ID0g
bmV3IFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdChJbnNwZWN0b3JUZXN0LmNyZWF0ZUhlYXBT
bmFwc2hvdE1vY2soKSk7CiAgICAgICAgICAKICAgICAgICAgICAgIGZ1bmN0aW9uIGVkZ2VGaWx0
ZXIoZWRnZSkKICAgICAgICAgICAgIHsK
</data>
<flag name="review"
          id="198123"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>