<?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>85612</bug_id>
          
          <creation_ts>2012-05-04 05:58:23 -0700</creation_ts>
          <short_desc>Web Inspector: console should allow JS execution in the context of an isolated world</short_desc>
          <delta_ts>2012-05-11 02:54:41 -0700</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>
          <dependson>85617</dependson>
    
    <dependson>85621</dependson>
    
    <dependson>85708</dependson>
          <blocked>85709</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>616116</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-04 05:58:23 -0700</bug_when>
    <thetext>Let&apos;s make it possible to use the console to execute JavaScript in the context of a content script embedded in the page. 

This is an upstream for Chromium issue: http://code.google.com/p/chromium/issues/detail?id=95865</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616121</commentid>
    <comment_count>1</comment_count>
      <attachid>140200</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-04 06:06:43 -0700</bug_when>
    <thetext>Created attachment 140200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616138</commentid>
    <comment_count>2</comment_count>
      <attachid>140200</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-04 06:27:20 -0700</bug_when>
    <thetext>Comment on attachment 140200
Patch

Attachment 140200 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12627111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616140</commentid>
    <comment_count>3</comment_count>
      <attachid>140200</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-04 06:32:54 -0700</bug_when>
    <thetext>Comment on attachment 140200
Patch

Attachment 140200 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12627112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616142</commentid>
    <comment_count>4</comment_count>
      <attachid>140200</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-04 06:33:37 -0700</bug_when>
    <thetext>Comment on attachment 140200
Patch

Attachment 140200 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12626114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616144</commentid>
    <comment_count>5</comment_count>
      <attachid>140200</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-04 06:34:27 -0700</bug_when>
    <thetext>Comment on attachment 140200
Patch

Attachment 140200 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12631144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616147</commentid>
    <comment_count>6</comment_count>
      <attachid>140200</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-04 06:38:00 -0700</bug_when>
    <thetext>Comment on attachment 140200
Patch

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

&gt; Source/WebCore/bindings/js/ScriptController.cpp:332
&gt; +    return 0;

Please file a bug and insert FIXME here.

&gt; Source/WebCore/bindings/v8/V8Proxy.cpp:637
&gt; +        return v8::Local&lt;v8::Context&gt;();

Can this happen?

&gt; Source/WebCore/bindings/v8/V8Proxy.h:255
&gt; +#if ENABLE(INSPECTOR)

Chrome(i)um does not compile without inspector.

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:188
&gt; +    skip_js_bind_domains = set([&quot;DOMDebugger&quot;])

What does it mean?

&gt; Source/WebCore/inspector/Inspector.json:432
&gt; +                &quot;id&quot;: &quot;IsolatedContext&quot;,

EvaluationContext ?

&gt; Source/WebCore/inspector/Inspector.json:436
&gt; +                    { &quot;name&quot;: &quot;id&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;World id. It can be used to specify in which world script evaluation should be performed.&quot; },

I would rename it to &quot;contextId&quot; or type &quot;ContextId&quot;.

&gt; Source/WebCore/inspector/Inspector.json:438
&gt; +                    { &quot;name&quot;: &quot;frameId&quot;, &quot;$ref&quot;: &quot;Network.FrameId&quot;, &quot;description&quot;: &quot;Id of the owning frame.&quot; }

reorder by importance?

&gt; Source/WebCore/inspector/Inspector.json:453
&gt; +                    { &quot;name&quot;: &quot;contextId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Specifies in which isolated context to perform evaluation. Each content script lives in an isolated context and this parameter may be used to specify on of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page.&quot;, &quot;hidden&quot;: true },

I think it is better to combine the frame and context id into the single contextId and stick to that term in runtime / debugger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616965</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-05 07:50:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 140200 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140200&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:332
&gt; &gt; +    return 0;
&gt; 
&gt; Please file a bug and insert FIXME here.
&gt; 
Filed https://bugs.webkit.org/show_bug.cgi?id=85709



&gt; &gt; Source/WebCore/bindings/v8/V8Proxy.cpp:637
&gt; &gt; +        return v8::Local&lt;v8::Context&gt;();
&gt; 
&gt; Can this happen?
&gt; 
Removed that code.


&gt; &gt; Source/WebCore/bindings/v8/V8Proxy.h:255
&gt; &gt; +#if ENABLE(INSPECTOR)
&gt; 
&gt; Chrome(i)um does not compile without inspector.
&gt; 
Removed.


&gt; &gt; Source/WebCore/inspector/CodeGeneratorInspector.py:188
&gt; &gt; +    skip_js_bind_domains = set([&quot;DOMDebugger&quot;])
&gt; 
&gt; What does it mean?
&gt; 
It is a list of domains for which we don&apos;t generate register&lt;Domain&gt;Dispatcher() methods in the front-end.


&gt; &gt; Source/WebCore/inspector/Inspector.json:432
&gt; &gt; +                &quot;id&quot;: &quot;IsolatedContext&quot;,
&gt; 
&gt; EvaluationContext ?
&gt; 
Renamed to ExecutionContextDescription, introduced ExecutionContextId.


&gt; &gt; Source/WebCore/inspector/Inspector.json:436
&gt; &gt; +                    { &quot;name&quot;: &quot;id&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;World id. It can be used to specify in which world script evaluation should be performed.&quot; },
&gt; 
&gt; I would rename it to &quot;contextId&quot; or type &quot;ContextId&quot;.
&gt; 
Done ExecutionContextId.

&gt; &gt; Source/WebCore/inspector/Inspector.json:438
&gt; &gt; +                    { &quot;name&quot;: &quot;frameId&quot;, &quot;$ref&quot;: &quot;Network.FrameId&quot;, &quot;description&quot;: &quot;Id of the owning frame.&quot; }
&gt; 
&gt; reorder by importance?
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/Inspector.json:453
&gt; &gt; +                    { &quot;name&quot;: &quot;contextId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Specifies in which isolated context to perform evaluation. Each content script lives in an isolated context and this parameter may be used to specify on of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page.&quot;, &quot;hidden&quot;: true },
&gt; 
&gt; I think it is better to combine the frame and context id into the single contextId and stick to that term in runtime / debugger.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616973</commentid>
    <comment_count>8</comment_count>
      <attachid>140401</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-05 08:03:19 -0700</bug_when>
    <thetext>Created attachment 140401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621445</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-11 02:54:41 -0700</bug_when>
    <thetext>Committed r116744: &lt;http://trac.webkit.org/changeset/116744&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140200</attachid>
            <date>2012-05-04 06:06:43 -0700</date>
            <delta_ts>2012-05-05 08:03:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85612-20120504170641.patch</filename>
            <type>text/plain</type>
            <size>46172</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFjYTdlODIzMTdhNjI3
MGM0OWU1ZjkxMWE1ZTk4YmEzNmM3OGM0Ny4uMGUzYWI1ODdiZjM4ZDVjNDA4NmQ5MDY0MTMwMzJh
MzAxODRkNmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMi0wNS0wNCAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBjb25zb2xlIHNob3VsZCBhbGxvdyBKUyBleGVjdXRpb24gaW4gdGhlIGNvbnRleHQgb2Yg
YW4gaXNvbGF0ZWQgd29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1NjEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIHNlbGVjdCBub3Qgb25seSBhIGZyYW1lIGJ1dCBh
bHNvIGlzb2xhdGVkIHdvcmxkIGluIHdoaWNoCisgICAgICAgIHRvIHBlcmZvcm0gZXZhbHVhdGlv
biBvZiB0aGUgY29kZSB0eXBlZCBpbnRvIHRoZSBjb25zb2xlLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Omlzb2xhdGVkV29ybGRUb1NlY3VyaXR5T3JpZ2luTWFwKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc29sYXRlZFdvcmxkU2NyaXB0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppc29sYXRlZFdvcmxkVG9T
ZWN1cml0eU9yaWdpbk1hcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
U2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNvbGF0ZWRXb3JsZFNjcmlwdFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFN0
YXRlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xh
dGVkQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOElzb2xhdGVkQ29udGV4dDo6c2V0
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhQcm94eTo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6Omlzb2xhdGVkV29ybGRDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6aXNvbGF0ZWRXb3JsZFRv
U2VjdXJpdHlPcmlnaW5NYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAg
ICAgICAgKFY4UHJveHkpOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5OgorICAgICAgICAoRG9tYWluTmFtZUZpeGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZUlzb2xhdGVkQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVJc29sYXRlZENvbnRleHQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yUnVudGlt
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpJ
bnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6OnBhZ2VSdW50aW1lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0Fn
ZW50czo6c2V0UGFnZVJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChJbnN0cnVtZW50aW5nQWdlbnRz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChQ
YWdlUnVudGltZUFnZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VSdW50aW1lQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1
bnRpbWVBZ2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50
OjpzZXRSZXBvcnRJc29sYXRlZENvbnRleHRDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVJc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6Z2V0U2NyaXB0U3RhdGVGb3JFdmFsKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6c2V0UmVw
b3J0SXNvbGF0ZWRDb250ZXh0Q3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVu
dGltZUFnZW50OjpnZXRTY3JpcHRTdGF0ZUZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKFdvcmtlclJ1bnRpbWVBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuYWRkQ29udGV4dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLnJlbW92ZUNvbnRleHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fdXBkYXRlSXNvbGF0
ZWRXb3JsZFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUuX2NvbnRleHRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmll
dy5wcm90b3R5cGUuX2FkZGVkSXNvbGF0ZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2N1cnJlbnRFdmFsdWF0aW9uQ29udGV4dElkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2N1cnJlbnRFdmFsdWF0
aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBl
Ll9jdXJyZW50SXNvbGF0ZWRXb3JsZElkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUuZXZhbEluSW5zcGVjdGVkV2luZG93KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblNpZGViYXJQYW5lLnByb3RvdHlwZS5zZXRFeHByZXNzaW9uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkV2YWx1YXRlT25JbnNwZWN0ZWRQYWdl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRDb250ZXh0TWFuYWdl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRDb250ZXh0TWFuYWdlci5wcm90b3R5cGUu
X2RpZExvYWRDYWNoZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRDb250ZXh0TWFuYWdlci5wcm90b3R5cGUuaXNvbGF0ZWRDb250ZXh0Q3JlYXRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUnVudGltZURpc3BhdGNoZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJ1bnRpbWVEaXNwYXRjaGVyLnByb3RvdHlwZS5pc29sYXRlZENvbnRleHRDcmVhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Jc29sYXRlZENvbnRleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLklzb2xhdGVkQ29udGV4dC5jb21wYXJhdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GcmFtZUV2YWx1YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZUV2
YWx1YXRpb25Db250ZXh0LnByb3RvdHlwZS5fZnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQucHJvdG90eXBlLl9hZGRJc29sYXRlZENv
bnRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQucHJv
dG90eXBlLl9lbnN1cmVNYWluV29ybGRDb250ZXh0QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQucHJvdG90eXBlLmlzb2xhdGVkQ29udGV4dHMpOgor
CiAyMDEyLTA1LTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
aGlnaGxpZ2h0IGZvciBSdWJ5IHRleHQgaXMgbWlzcG9zaXRpb25lZCBpbiB0aGUgV2ViIEluc3Bl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCAwYTdlMDkwODYzODY0N2QzZDNmMGNkZGFlMWI1YzI1ZDg3NDNhZDExLi43ZTU5MWI5
MDlkZWI3NDY5YmE3YTNiNzU0OTE2MWQ0ZTQ2NzY2YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzI2LDYgKzMyNiwxMSBAQCBQ
YXNzUmVmUHRyPEJpbmRpbmdzOjpSb290T2JqZWN0PiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVS
b290T2JqZWN0KHZvaWQqIG5hdGl2ZQogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJl
Q2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGJvb2wpCiB7CiB9CisKK0hhc2hNYXA8aW50
LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4qIGlzb2xhdGVkV29ybGRUb1NlY3VyaXR5T3JpZ2lu
TWFwKCkKK3sKKyAgICByZXR1cm4gMDsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKaW5kZXggMzdmYjdlZGNmODE0YTI0YmJiODNkYmZkYmU0ZDI5YmY2ODI4ZDViMS4uYWFl
MWVmOWU4MjQ1NDNiN2RhNWJkMGEwYzJkYmVjOTY3ZGU5ZWVhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTQzLDYgKzE0Myw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3RhdGljIHZvaWQgc2V0Q2FwdHVy
ZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhib29sKTsKKyAgICBIYXNoTWFwPGludCwg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+KiBpc29sYXRlZFdvcmxkVG9TZWN1cml0eU9yaWdpbk1h
cCgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggNzgwY2E0ZDlkMjNjODdlNDQ4N2Q1MmFkNzU3Y2Vl
ZWZlNTZhMWViYy4uZjdhZjcxZWUwNzY0YzJkNDQ4Njg2ZGY2MmYxODMwNTQyYWQ3MThiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtOTcsNiArOTcs
MTMgQEAgU2NyaXB0U3RhdGUqIG1haW5Xb3JsZFNjcmlwdFN0YXRlKEZyYW1lKiBmcmFtZSkKICAg
ICByZXR1cm4gc2hlbGwtPndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiB9CiAKK1NjcmlwdFN0YXRl
KiBpc29sYXRlZFdvcmxkU2NyaXB0U3RhdGUoRnJhbWUqIGZyYW1lLCBpbnQgd29ybGRJZCkKK3sK
KyAgICBpZiAod29ybGRJZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1haW5Xb3Js
ZFNjcmlwdFN0YXRlKGZyYW1lKTsKK30KKwogU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlRnJvbU5v
ZGUoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaAppbmRleCA0NWFjZTJiYTRj
OGQwNGY1M2VkZjc1ZTExZDY1YTM0NDJiMDc4MzZkLi4yOWIzYWUwYjg4Zjc4Y2ZiY2JlM2NhY2Jj
MWFkMmVkM2ZiNTA0OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmgKQEAgLTcyLDYgKzcyLDcgQEAgYm9vbCBldmFsRW5hYmxlZChTY3JpcHRTdGF0ZSopOwogdm9p
ZCBzZXRFdmFsRW5hYmxlZChTY3JpcHRTdGF0ZSosIGJvb2wpOwogCiBTY3JpcHRTdGF0ZSogbWFp
bldvcmxkU2NyaXB0U3RhdGUoRnJhbWUqKTsKK1NjcmlwdFN0YXRlKiBpc29sYXRlZFdvcmxkU2Ny
aXB0U3RhdGUoRnJhbWUqLCBpbnQgd29ybGRJZCk7CiAKIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCosIE5vZGUqKTsKIFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZUZyb21QYWdlKERPTVdyYXBwZXJXb3JsZCosIFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZTgwZTZjN2E2NGE0MDM0
YWEzOTVlNjVlOWZhODcxNjU0NGRkOTlmMi4uNmUwOWE5MjBjMDFlZmNhYjAzODYyN2IxNGFjNDQ5
ZjcxOWY0NGNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTQ2Nyw2ICs0NjcsMTEgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpz
ZXRDYXB0dXJlQ2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGJvb2wgdmFsdWUpCiB7CiAg
ICAgdjg6OlY4OjpTZXRDYXB0dXJlU3RhY2tUcmFjZUZvclVuY2F1Z2h0RXhjZXB0aW9ucyh2YWx1
ZSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlLCBzdGFja1RyYWNl
T3B0aW9ucyk7CiB9CisKK0hhc2hNYXA8aW50LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4qIFNj
cmlwdENvbnRyb2xsZXI6Omlzb2xhdGVkV29ybGRUb1NlY3VyaXR5T3JpZ2luTWFwKCkKK3sKKyAg
ICByZXR1cm4gbV9wcm94eS0+aXNvbGF0ZWRXb3JsZFRvU2VjdXJpdHlPcmlnaW5NYXAoKTsKK30K
ICNlbmRpZgogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnZ2VyKHZvaWQqKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGU4
NDc3Y2UyOWE2NDlkNDcxNzM3ZGQ2MDg3YTY3MTQyZTdhZTA5YTIuLjRlNmIxNTVlMmZjYmUwMDNh
MzkyNmM4ZmRkYWE0MmZjYzY1YTRmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIHNldENhcHR1cmVDYWxsU3RhY2tGb3JV
bmNhdWdodEV4Y2VwdGlvbnMoYm9vbCk7CisgICAgSGFzaE1hcDxpbnQsIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gPiogaXNvbGF0ZWRXb3JsZFRvU2VjdXJpdHlPcmlnaW5NYXAoKTsKICNlbmRpZgog
CiAgICAgYm9vbCBjYW5FeGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNj
cmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuY3BwCmluZGV4
IGMxOWZiOTg5MmJkYzhhOTc2NGRmN2UzYWJiZjc5OWIxNWRiYjY4MTQuLjdjZDhlYTVmY2E3NDc3
ZDcwODM2NjMxY2M4MDZjNmY0MTY1N2I2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRTdGF0ZS5jcHAKQEAgLTE0OSw2ICsxNDksMTggQEAgU2NyaXB0U3RhdGUqIG1haW5X
b3JsZFNjcmlwdFN0YXRlKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gU2NyaXB0U3RhdGU6OmZv
ckNvbnRleHQocHJveHktPm1haW5Xb3JsZENvbnRleHQoKSk7CiB9CiAKK1NjcmlwdFN0YXRlKiBp
c29sYXRlZFdvcmxkU2NyaXB0U3RhdGUoRnJhbWUqIGZyYW1lLCBpbnQgd29ybGRJZCkKK3sKKyAg
ICBpZiAoIXdvcmxkSWQpCisgICAgICAgIHJldHVybiBtYWluV29ybGRTY3JpcHRTdGF0ZShmcmFt
ZSk7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIFY4UHJveHkqIHByb3h5
ID0gZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
Y29udGV4dCA9IHByb3h5LT5pc29sYXRlZFdvcmxkQ29udGV4dCh3b3JsZElkKTsKKyAgICBpZiAo
Y29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBTY3JpcHRT
dGF0ZTo6Zm9yQ29udGV4dChjb250ZXh0KTsKK30KKwogU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
RnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkKiwgTm9kZSogbm9kZSkKIHsKICAgICAvLyBUaGlzIHNo
b3VsZCBiZSBuZXZlciByZWFjaGVkIHdpdGggVjggYmluZGluZ3MgKFdlYktpdCBvbmx5IHVzZXMg
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCmluZGV4IDAwOTg4NmEx
NzlkOWU1MGFmNmZmMmM3YjI5ZDk0Y2M3ZmQ2MDM3M2YuLmE5M2Q5YTM4YWI4ZDIwZTM0ODdjYzRj
NmUxOWQ5MjlkMGQ5N2I3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3Rh
dGUuaApAQCAtMTE2LDYgKzExNiw3IEBAIGJvb2wgZXZhbEVuYWJsZWQoU2NyaXB0U3RhdGUqKTsK
IHZvaWQgc2V0RXZhbEVuYWJsZWQoU2NyaXB0U3RhdGUqLCBib29sKTsKIAogU2NyaXB0U3RhdGUq
IG1haW5Xb3JsZFNjcmlwdFN0YXRlKEZyYW1lKik7CitTY3JpcHRTdGF0ZSogaXNvbGF0ZWRXb3Js
ZFNjcmlwdFN0YXRlKEZyYW1lKiwgaW50IHdvcmxkSWQpOwogCiBTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQqLCBOb2RlKik7CiBTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQqLCBQYWdlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKaW5kZXggNjA3NjZmNjZk
ZTcwZTJkYTRhM2ViZjkxNzQ3YWYzOTQ1ZjhjYWJiNy4uZWJjOTA1N2YzZTcxNTZlNWI2NTVmYjBi
NjA2ZmQwNmZlZmUzZTQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhJc29sYXRlZENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRDb250ZXh0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
VjhCaW5kaW5nUGVyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgpAQCAt
MTE3LDYgKzExOCw4IEBAIFY4SXNvbGF0ZWRDb250ZXh0Ojp+VjhJc29sYXRlZENvbnRleHQoKQog
CiB2b2lkIFY4SXNvbGF0ZWRDb250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKKyAgICBpZiAoIW1fc2VjdXJpdHlPcmln
aW4pCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRD
b250ZXh0KG1fZnJhbWUsIG1fd29ybGQtPmlkKCksIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAg
ICBtX3NlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggNDk1OTNhNGU4MjdjNDZlODhiNmRiODM4NDBkNDY0
NjlmYjhmZDVhNS4uMzFiMWUzMzJmYmVkMmJlMjA2NWFmNzllYzRmZTY2N2ZhNmE5MjViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTYzMCw2ICs2MzAsMTQgQEAg
djg6OkxvY2FsPHY4OjpDb250ZXh0PiBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KCkKICAgICBy
ZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KHdpbmRvd1NoZWxsKCktPmNvbnRleHQo
KSk7CiB9CiAKK3Y4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6aXNvbGF0ZWRXb3JsZENv
bnRleHQoaW50IHdvcmxkSWQpCit7CisgICAgSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRl
ciA9IG1faXNvbGF0ZWRXb3JsZHMuZmluZCh3b3JsZElkKTsKKyAgICBpZiAoaXRlciA9PSBtX2lz
b2xhdGVkV29ybGRzLmVuZCgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0
PigpOworICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoaXRlci0+c2Vjb25k
LT5jb250ZXh0KCkpOworfQorCiBib29sIFY4UHJveHk6Om1hdGNoZXNDdXJyZW50Q29udGV4dCgp
CiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsKQEAgLTcyNiw2ICs3MzQs
MTMgQEAgaW50IFY4UHJveHk6OmNvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQpCiAgICAgcmV0dXJuIGF0b2koY29tbWEgKyAxKTsKIH0KIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCitIYXNoTWFwPGludCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+KiBWOFByb3h5
Ojppc29sYXRlZFdvcmxkVG9TZWN1cml0eU9yaWdpbk1hcCgpCit7CisgICAgcmV0dXJuICZtX2lz
b2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbnM7Cit9CisjZW5kaWYKKwogdjg6OkxvY2FsPHY4OjpD
b250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKIHsKICAgICBpZiAoY29udGV4dC0+
aXNEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5kZXggNjZk
YmY1OTY4MDY4NmViYTc2NWIxMGUzZGM1ZTAyMTM0MzQ1ZmY5My4uMmU1OWNjNGFiZDMzZTdmZDhh
N2UzZWJiYjcwNTQ0NTU0MDUyOWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
aApAQCAtMjQ0LDYgKzI0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQoKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBtYWluV29ybGRDb250ZXh0KCk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
aXNvbGF0ZWRXb3JsZENvbnRleHQoaW50IHdvcmxkSWQpOwogICAgICAgICBib29sIG1hdGNoZXND
dXJyZW50Q29udGV4dCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBldmVudHVh
bGx5IHRha2UgRE9NV3JhcHBlcldvcmxkIGFyZ3VtZW50IQpAQCAtMjUxLDYgKzI1Miw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHNldENvbnRleHREZWJ1Z0lkKGludCBp
ZCk7CiAgICAgICAgIHN0YXRpYyBpbnQgY29udGV4dERlYnVnSWQodjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4pOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIEhhc2hNYXA8aW50LCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+ID4qIGlzb2xhdGVkV29ybGRUb1NlY3VyaXR5T3JpZ2luTWFwKCk7
CisjZW5kaWYKIAogICAgICAgICAvLyBSZWdpc3RlcnMgYSB2OCBleHRlbnNpb24gdG8gYmUgYXZh
aWxhYmxlIG9uIHdlYnBhZ2VzLiBXaWxsIG9ubHkKICAgICAgICAgLy8gYWZmZWN0IHY4IGNvbnRl
eHRzIGluaXRpYWxpemVkIGFmdGVyIHRoaXMgY2FsbC4gVGFrZXMgb3duZXJzaGlwIG9mCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5Cmlu
ZGV4IGQ2MjljYWZlYjMzNzJmZjkwMjE0YzM4NGMxNWRlOTNmZmMyNzkyOWMuLjA0MDdmMTg0MTk5
Zjc0ZDRmY2RjMjUxN2U2OWFjZTM0NDcxNDEyYzIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5CkBAIC0xODUsNyArMTg1LDcgQEAg
Y2xhc3MgRG9tYWluTmFtZUZpeGVzOgogCiAgICAgICAgIHJldHVybiBSZXMKIAotICAgIHNraXBf
anNfYmluZF9kb21haW5zID0gc2V0KFsiUnVudGltZSIsICJET01EZWJ1Z2dlciJdKQorICAgIHNr
aXBfanNfYmluZF9kb21haW5zID0gc2V0KFsiRE9NRGVidWdnZXIiXSkKIAogCiBjbGFzcyBSYXdU
eXBlcyhvYmplY3QpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4
IDJjODE4ZTE4OWIxYzBjNzU4Y2VjMDYzMTEzYmYzMDAwZTc5YmU2NGIuLjMzZWJlMzliNDcxOTY1
MjlhZDljNmE2YTU4NjFiNTdiMWQzYTE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KQEAgLTQyNyw3ICs0MjcsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ2YWx1ZSIsICJ0eXBlIjogImFueSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJQcmltaXRpdmUgdmFsdWUuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm9iamVjdElkIiwgIiRyZWYiOiAiUmVtb3RlT2JqZWN0SWQiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiUmVtb3RlIG9iamVjdCBoYW5kbGUuIiB9CiAgICAgICAgICAgICAg
ICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQi
OiAiSXNvbGF0ZWRDb250ZXh0IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAor
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXNjcmlwdGlvbiBvZiBhbiBpc29sYXRl
ZCB3b3JsZC4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImlkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJXb3JsZCBpZC4gSXQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBpbiB3aGljaCB3b3JsZCBzY3Jp
cHQgZXZhbHVhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkh1
bWFuIHJlYWRhYmxlIG5hbWUgZGVzY3JpYmluZyBnaXZlbiBjb250ZXh0LiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYiOiAiTmV0d29yay5GcmFtZUlk
IiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBvd25pbmcgZnJhbWUuIiB9CisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQor
CiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsKICAgICAgICAgICAgIHsKQEAgLTQz
OCw2ICs0NTAsNyBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImluY2x1ZGVDb21t
YW5kTGluZUFQSSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiRGV0ZXJtaW5lcyB3aGV0aGVyIENvbW1hbmQgTGluZSBBUEkgc2hvdWxkIGJlIGF2
YWlsYWJsZSBkdXJpbmcgdGhlIGV2YWx1YXRpb24uIiwgImhpZGRlbiI6IHRydWUgfSwKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNv
bnNvbGUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlNwZWNpZmllcyB3aGV0aGVyIGV2YWx1YXRpb24gc2hvdWxkIHN0b3Agb24gZXhjZXB0aW9u
cyBhbmQgbXV0ZSBjb25zb2xlLiBPdmVycmlkZXMgc2V0UGF1c2VPbkV4Y2VwdGlvbiBzdGF0ZS4i
LCAiaGlkZGVuIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1l
SWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiU3BlY2lmaWVzIGluIHdoaWNoIGZyYW1lIHRvIHBlcmZvcm0gZXZhbHVhdGlvbi4i
LCAiaGlkZGVuIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRl
eHRJZCIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiU3BlY2lmaWVzIGluIHdoaWNoIGlzb2xhdGVkIGNvbnRleHQgdG8gcGVyZm9ybSBldmFsdWF0
aW9uLiBFYWNoIGNvbnRlbnQgc2NyaXB0IGxpdmVzIGluIGFuIGlzb2xhdGVkIGNvbnRleHQgYW5k
IHRoaXMgcGFyYW1ldGVyIG1heSBiZSB1c2VkIHRvIHNwZWNpZnkgb24gb2YgdGhvc2UgY29udGV4
dHMuIElmIHRoZSBwYXJhbWV0ZXIgaXMgb21pdHRlZCBvciAwIHRoZSBldmFsdWF0aW9uIHdpbGwg
YmUgcGVyZm9ybWVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBpbnNwZWN0ZWQgcGFnZS4iLCAiaGlk
ZGVuIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJldHVybkJ5VmFs
dWUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IldoZXRoZXIgdGhlIHJlc3VsdCBpcyBleHBlY3RlZCB0byBiZSBhIEpTT04gb2JqZWN0IHRoYXQg
c2hvdWxkIGJlIHNlbnQgYnkgdmFsdWUuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKQEAgLTQ5MCw2ICs1MDMsMjQgQEAKICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJydW4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlLAogICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyBpbnNwZWN0ZWQgaW5zdGFuY2Uod29ya2Vy
IG9yIHBhZ2UpIHRoYXQgaXQgY2FuIHJ1biBpbiBjYXNlIGl0IHdhcyBzdGFydGVkIHBhdXNlZC4i
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
InNldFJlcG9ydElzb2xhdGVkQ29udGV4dENyZWF0aW9uIiwKKyAgICAgICAgICAgICAgICAicGFy
YW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJSZXBvcnRpbmcgZW5hYmxlZCBzdGF0ZS4i
IH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlLAor
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIHJlcG9ydGluZyBhYm91dCBj
cmVhdGlvbiBvZiBpc29sYXRlZCBjb250ZXh0cyBieSBtZWFucyBvZiA8Y29kZT5pc29sYXRlZENv
bnRleHRDcmVhdGVkPC9jb2RlPiBldmVudC4gV2hlbiB0aGUgcmVwb3J0aW5nIGdldHMgZW5hYmxl
ZCB0aGUgZXZlbnQgd2lsbCBiZSBzZW50IGltbWVkaWF0ZWx5IGZvciBlYWNoIGV4aXN0aW5nIGlz
b2xhdGVkIGNvbnRleHQuIgorICAgICAgICAgICAgfQorCisgICAgICAgIF0sCisgICAgICAgICJl
dmVudHMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiaXNvbGF0
ZWRDb250ZXh0Q3JlYXRlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29udGV4dCIsICIkcmVmIjogIklzb2xhdGVkQ29u
dGV4dCIsICJkZXNjcmlwdGlvbiI6ICJBIG5ld2x5IGNyZWF0ZWQgaXNvbGF0ZWQgY29udGV4LiIg
fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklz
c3VlZCB3aGVuIG5ldyBpc29sYXRlZCBjb250ZXh0IGlzIGNyZWF0ZWQuIgogICAgICAgICAgICAg
fQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMDVhOGFkNjk2OWQyNzRiMDY5OTcx
MTNjODRhNzhhM2FjNzNlMzU4Yy4uZGNiODQ1NWYzNDcyMmY1NzUyNzViMGQ3YjA4ZDRlY2Q1N2Rh
MjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuaCIKICNpbmNs
dWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiUGFnZVJ1bnRpbWVBZ2VudC5o
IgogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFj
ay5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKQEAgLTM2Myw2ICszNjQsMTIgQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0SW1wbChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXQKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZhbHVhdGVT
Y3JpcHQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUlz
b2xhdGVkQ29udGV4dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgRnJhbWUqIGZyYW1lLCBpbnQgaWQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAg
aWYgKFBhZ2VSdW50aW1lQWdlbnQqIHJ1bnRpbWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
PnBhZ2VSdW50aW1lQWdlbnQoKSkKKyAgICAgICAgcnVudGltZUFnZW50LT5kaWRDcmVhdGVJc29s
YXRlZENvbnRleHQoZnJhbWUsIGlkLCBvcmlnaW4pOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVySW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCkKIHsK
ICAgICBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBmYWxz
ZSwgdGltZXJGaXJlZEV2ZW50TmFtZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGExNzIwMzRiMTM5MTdm
M2M2N2Y4YmYwMTQ4YmEwMzc2NTZmZTRhMzYuLjQxOWY3YTQ0ODJiMDM0NjY3OTBkOTk0MDdkMzg2
MmM3ZmQ5ODkxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgU2NyaXB0QXJndW1l
bnRzOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFNjcmlwdFByb2ZpbGU7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNo
YWRvd1Jvb3Q7CiBjbGFzcyBTdG9yYWdlQXJlYTsKIGNsYXNzIFN0eWxlUnVsZTsKQEAgLTExOSw2
ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2lu
ZG93KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lKiwg
Y29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRF
dmFsdWF0ZVNjcmlwdChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVJc29sYXRlZENvbnRleHQoRnJhbWUqLCBpbnQgaWQsIFNl
Y3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQgdGltZXJJZCk7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEJlZ2luRnJhbWUoUGFnZSopOwpAQCAtMjc4
LDYgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9u
V2luZG93SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJl
cik7CiAgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUlzb2xh
dGVkQ29udGV4dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgaW50IGlkLCBTZWN1
cml0eU9yaWdpbiopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
d2lsbEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGludCB0aW1lcklkKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEJlZ2luRnJhbWVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqKTsKQEAgLTcwNiw2ICs3MDksMTUgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW4KICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZUlzb2xhdGVkQ29udGV4dChGcmFtZSogZnJhbWUsIGludCBpZCwgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuIGRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dEltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZnJhbWUsIGlkLCBvcmlnaW4pOworI2VuZGlmCit9CisKIGlubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRp
bWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCB0aW1lcklkKQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IGFkNmM4YzZkY2U1OTYyMjdmYzQ3M2M0MGM0Nzlk
ZTE0N2FkODQ5YjEuLjlmM2MyZDRlNjc3NzI2NmQzYzk3OGQ0NTY5ZTI4MGYwZTg2MDM5MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwCkBAIC04MywxNyArODMsMTEgQEAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXAKIH0KICNlbmRp
ZgogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29u
c3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25z
dCBTdHJpbmcqIGNvbnN0IGZyYW1lSWQsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wq
IGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBTdHJpbmcqIGNvbnN0IGZyYW1lSWQs
IGNvbnN0IGludCogaXNvbGF0ZWRXb3JsZElkLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZh
bHVlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwg
VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewotICAgIFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSA9IDA7Ci0gICAgaWYgKGZyYW1lSWQpIHsKLSAgICAgICAgc2NyaXB0
U3RhdGUgPSBzY3JpcHRTdGF0ZUZvckZyYW1lSWQoKmZyYW1lSWQpOwotICAgICAgICBpZiAoIXNj
cmlwdFN0YXRlKSB7Ci0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRnJhbWUgd2l0aCBnaXZl
biBpZCBub3QgZm91bmQuIjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0g
ZWxzZQotICAgICAgICBzY3JpcHRTdGF0ZSA9IGdldERlZmF1bHRJbnNwZWN0ZWRTdGF0ZSgpOwor
ICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IGdldFNjcmlwdFN0YXRlRm9yRXZhbChlcnJv
clN0cmluZywgZnJhbWVJZCwgaXNvbGF0ZWRXb3JsZElkKTsKKyAgICBpZiAoIXNjcmlwdFN0YXRl
KQorICAgICAgICByZXR1cm47CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwog
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKICAgICAgICAgKmVycm9yU3Ry
aW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggODI4MGFlMmU1MGVhZmEzYjFk
MTQzMWRhN2VhYmZmOTA1ODZjNzRjYi4uNGY4NGZhMjZhODFlZWI3Yjk2ZmVkZjM3ODI3N2RmOWIz
MDJiNDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICBj
b25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksCiAgICAgICAgICAgICAgICAgICBjb25z
dCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsCiAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcqIGZyYW1lSWQsCisgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQqIGlzb2xhdGVkV29ybGRJZCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIHJldHVy
bkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVyOjpP
cHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CkBAIC04OCw4ICs4OSw4IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKLSAgICB2aXJ0dWFs
IFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZUZvckZyYW1lSWQoY29uc3QgU3RyaW5nJiBmcmFtZUlk
KSA9IDA7Ci0gICAgdmlydHVhbCBTY3JpcHRTdGF0ZSogZ2V0RGVmYXVsdEluc3BlY3RlZFN0YXRl
KCkgPSAwOworICAgIHZpcnR1YWwgU2NyaXB0U3RhdGUqIGdldFNjcmlwdFN0YXRlRm9yRXZhbChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogZnJhbWVJZCwgY29uc3QgaW50KiBpc29sYXRlZFdv
cmxkSWQpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggZjc3ZThjZjYwMzNlYTMxMmIyMWYx
MDkxNmZkMTcxYTA2NmM1N2ZjYS4uMTk0ZWI4NjVlYzc1YTY2ZmVmYjRiNzI0NmYwMDhhODM4YTg4
YWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdB
Z2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudDsKIGNsYXNz
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDsKIGNs
YXNzIFBhZ2U7CitjbGFzcyBQYWdlUnVudGltZUFnZW50OwogY2xhc3MgV29ya2VyQ29udGV4dDsK
IAogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50cyB7CkBAIC02Nyw2ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFnZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JSdW50aW1lQWdlbnQoMCkKKyAg
ICAgICAgLCBtX3BhZ2VSdW50aW1lQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvclRpbWVs
aW5lQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgwKQogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC0xMDgsNiArMTEwLDkgQEAgcHVibGljOgogICAgIElu
c3BlY3RvclJ1bnRpbWVBZ2VudCogaW5zcGVjdG9yUnVudGltZUFnZW50KCkgY29uc3QgeyByZXR1
cm4gbV9pbnNwZWN0b3JSdW50aW1lQWdlbnQ7IH0KICAgICB2b2lkIHNldEluc3BlY3RvclJ1bnRp
bWVBZ2VudChJbnNwZWN0b3JSdW50aW1lQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yUnVudGlt
ZUFnZW50ID0gYWdlbnQ7IH0KIAorICAgIFBhZ2VSdW50aW1lQWdlbnQqIHBhZ2VSdW50aW1lQWdl
bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSdW50aW1lQWdlbnQ7IH0KKyAgICB2b2lkIHNldFBh
Z2VSdW50aW1lQWdlbnQoUGFnZVJ1bnRpbWVBZ2VudCogYWdlbnQpIHsgbV9wYWdlUnVudGltZUFn
ZW50ID0gYWdlbnQ7IH0KKwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIGluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQ7IH0K
ICAgICB2b2lkIHNldEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogYWdlbnQpIHsgbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50ID0gYWdlbnQ7IH0KIApAQCAtMTUw
LDYgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1faW5zcGVjdG9y
RE9NQWdlbnQ7CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogbV9pbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OwogICAgIEluc3BlY3RvclJ1bnRpbWVBZ2VudCogbV9pbnNwZWN0b3JSdW50aW1lQWdl
bnQ7CisgICAgUGFnZVJ1bnRpbWVBZ2VudCogbV9wYWdlUnVudGltZUFnZW50OwogICAgIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIG1faW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKICAgICBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQqIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVB
Z2VudC5jcHAKaW5kZXggOTI4NGYzOTI2NDk3YTViZDFlYWZiYmVhZDYyZDRmYzI0NDM3MjBhZi4u
NWZiMjJmYjVjMjcwMWViMzU4MGEyNGQwMDNjZWZmNTlmZGMzNTQwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtMzYsMTUgKzM2LDI1IEBA
CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdl
bnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6Oklzb2xhdGVkQ29udGV4dDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3Bh
Y2UgUGFnZVJ1bnRpbWVBZ2VudFN0YXRlIHsKK3N0YXRpYyBjb25zdCBjaGFyIHJlcG9ydElzb2xh
dGVkQ29udGV4dENyZWF0aW9uW10gPSAicmVwb3J0SXNvbGF0ZWRDb250ZXh0Q3JlYXRpb24iOwor
fTsKKwogUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBwYWdlLCBJbnNwZWN0
b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChpbnN0
cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9p
bnNwZWN0ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQpCisgICAgLCBt
X2Zyb250ZW5kKDApCiB7CiB9CiAKQEAgLTUyLDYgKzYyLDYwIEBAIFBhZ2VSdW50aW1lQWdlbnQ6
On5QYWdlUnVudGltZUFnZW50KCkKIHsKIH0KIAordm9pZCBQYWdlUnVudGltZUFnZW50OjpzZXRG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit7CisgICAgbV9mcm9udGVuZCA9
IGZyb250ZW5kLT5ydW50aW1lKCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdl
UnVudGltZUFnZW50KHRoaXMpOworfQorCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmNsZWFyRnJv
bnRlbmQoKQoreworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRpbWVBZ2Vu
dCgwKTsKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VS
dW50aW1lQWdlbnRTdGF0ZTo6cmVwb3J0SXNvbGF0ZWRDb250ZXh0Q3JlYXRpb24sIGZhbHNlKTsK
K30KKwordm9pZCBQYWdlUnVudGltZUFnZW50OjpyZXN0b3JlKCkKK3sKKyAgICBpZiAoIW1fc3Rh
dGUtPmdldEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRJc29sYXRlZENvbnRl
eHRDcmVhdGlvbikpCisgICAgICAgIHJldHVybjsKKyAgICBTdHJpbmcgZXJyb3I7CisgICAgc2V0
UmVwb3J0SXNvbGF0ZWRDb250ZXh0Q3JlYXRpb24oJmVycm9yLCB0cnVlKTsKK30KKwordm9pZCBQ
YWdlUnVudGltZUFnZW50OjpzZXRSZXBvcnRJc29sYXRlZENvbnRleHRDcmVhdGlvbihFcnJvclN0
cmluZyosIGJvb2wgZW5hYmxlKQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZVJ1bnRp
bWVBZ2VudFN0YXRlOjpyZXBvcnRJc29sYXRlZENvbnRleHRDcmVhdGlvbiwgZW5hYmxlKTsKKyAg
ICBpZiAoIWVuYWJsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
bV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgSGFzaE1hcDxpbnQsIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gPiogd29ybGRzRm9yRnJhbWUgPSBmcmFtZS0+c2NyaXB0KCktPmlzb2xhdGVkV29y
bGRUb1NlY3VyaXR5T3JpZ2luTWFwKCk7CisgICAgICAgIGlmICghd29ybGRzRm9yRnJhbWUgfHwg
d29ybGRzRm9yRnJhbWUtPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKKyAgICAgICAg
Zm9yIChIYXNoTWFwPGludCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+OjppdGVyYXRvciBpdCA9
IHdvcmxkc0ZvckZyYW1lLT5iZWdpbigpOyBpdCAhPSB3b3JsZHNGb3JGcmFtZS0+ZW5kKCk7ICsr
aXQpIHsKKyAgICAgICAgICAgIG1fZnJvbnRlbmQtPmlzb2xhdGVkQ29udGV4dENyZWF0ZWQoCisg
ICAgICAgICAgICAgICAgSXNvbGF0ZWRDb250ZXh0OjpjcmVhdGUoKS5zZXRJZChpdC0+Zmlyc3Qp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXROYW1lKGl0LT5z
ZWNvbmQtPnRvU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC5zZXRGcmFtZUlkKGZyYW1lSWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFBhZ2VS
dW50aW1lQWdlbnQ6OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChGcmFtZSogZnJhbWUsIGludCBp
ZCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xl
YW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRJc29sYXRlZENvbnRleHRDcmVhdGlvbikp
CisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9mcm9udGVuZCk7CisgICAgU3RyaW5nIGZy
YW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CisgICAgbV9mcm9udGVuZC0+aXNv
bGF0ZWRDb250ZXh0Q3JlYXRlZChJc29sYXRlZENvbnRleHQ6OmNyZWF0ZSgpCisgICAgICAgIC5z
ZXRJZChpZCkKKyAgICAgICAgLnNldE5hbWUob3JpZ2luLT50b1N0cmluZygpKQorICAgICAgICAu
c2V0RnJhbWVJZChmcmFtZUlkKQorICAgICAgICAucmVsZWFzZSgpKTsKK30KKwogU2NyaXB0U3Rh
dGUqIFBhZ2VSdW50aW1lQWdlbnQ6OnNjcmlwdFN0YXRlRm9yRnJhbWVJZChjb25zdCBTdHJpbmcm
IGZyYW1lSWQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZyYW1lRm9ySWQo
ZnJhbWVJZCk7CkBAIC02MCw5ICsxMjQsMjQgQEAgU2NyaXB0U3RhdGUqIFBhZ2VSdW50aW1lQWdl
bnQ6OnNjcmlwdFN0YXRlRm9yRnJhbWVJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpCiAgICAgcmV0
dXJuIG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsKIH0KIAotU2NyaXB0U3RhdGUqIFBhZ2VS
dW50aW1lQWdlbnQ6OmdldERlZmF1bHRJbnNwZWN0ZWRTdGF0ZSgpCitTY3JpcHRTdGF0ZSogUGFn
ZVJ1bnRpbWVBZ2VudDo6Z2V0U2NyaXB0U3RhdGVGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nKiBmcmFtZUlkLCBjb25zdCBpbnQqIGlzb2xhdGVkV29ybGRJZCkK
IHsKLSAgICByZXR1cm4gbWFpbldvcmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5tYWlu
RnJhbWUoKSk7CisgICAgaWYgKCFmcmFtZUlkKQorICAgICAgICByZXR1cm4gbWFpbldvcmxkU2Ny
aXB0U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSk7CisKKyAgICBGcmFtZSogZnJh
bWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZCgqZnJhbWVJZCk7CisgICAgaWYgKCFmcmFtZSkg
eworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRnJhbWUgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQu
IjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaW50IHdvcmxkSWQgPSBpc29sYXRl
ZFdvcmxkSWQgPyAqaXNvbGF0ZWRXb3JsZElkIDogMDsKKyAgICBTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUgPSBpc29sYXRlZFdvcmxkU2NyaXB0U3RhdGUoZnJhbWUsIHdvcmxkSWQpOworICAgIGlm
ICghc2NyaXB0U3RhdGUpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNhbm5vdCBmaW5kIGNv
bnRleHQgd2l0aCBzcGVjaWZpZWQgaWQuIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IHJldHVybiBzY3JpcHRTdGF0ZTsKIH0KIAogdm9pZCBQYWdlUnVudGltZUFnZW50OjptdXRlQ29u
c29sZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRl
eCAzMjYxNGE4OTRmYTY2NTY5OTQ2MTAwZWUxZDMyYzkwY2FlN2MxNTg3Li43OTAyZTk5MTY1Zjkw
ZTExZGU4OTcwODQ3NDg5YmZiZWNhZjE4MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTQw
LDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQ7CiBjbGFzcyBQYWdlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFBhZ2VSdW50
aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKQEAgLTQ4
LDE2ICs1MCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVJ1
bnRpbWVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBwYWdlLCBwYWdlQWdlbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVB
Z2VudCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCop
OworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIHJl
c3RvcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwb3J0SXNvbGF0ZWRDb250ZXh0Q3JlYXRp
b24oRXJyb3JTdHJpbmcqLCBib29sKTsKKworICAgIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRDb250
ZXh0KEZyYW1lKiwgaW50IGlkLCBTZWN1cml0eU9yaWdpbiopOwogCiBwcml2YXRlOgogICAgIFBh
Z2VSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgUGFnZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogCi0gICAg
dmlydHVhbCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGVGb3JGcmFtZUlkKGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCk7Ci0gICAgdmlydHVhbCBTY3JpcHRTdGF0ZSogZ2V0RGVmYXVsdEluc3BlY3RlZFN0
YXRlKCk7CisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlRm9yRnJhbWVJZChjb25zdCBTdHJp
bmcmIGZyYW1lSWQpOworICAgIHZpcnR1YWwgU2NyaXB0U3RhdGUqIGdldFNjcmlwdFN0YXRlRm9y
RXZhbChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogZnJhbWVJZCwgY29uc3QgaW50KiBpc29s
YXRlZFdvcmxkSWQpOwogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpOwogICAgIHZpcnR1
YWwgdm9pZCB1bm11dGVDb25zb2xlKCk7CiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAg
IEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CisgICAgSW5zcGVjdG9yRnJvbnRlbmQ6
OlJ1bnRpbWUqIG1fZnJvbnRlbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmluZGV4IDFj
NDQ1N2UxOWMzMzQ4N2FiNGNmODliZDFiODJiMWZhMDMxMzhjMzguLjVhYjcxNzdlNGU0MzFkNjdl
ZGIzZDE2NWVkYTM4ODUyMjZjNDRiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC00OCwxMyArNDgsMjEgQEAgV29ya2VyUnVudGlt
ZUFnZW50Ojp+V29ya2VyUnVudGltZUFnZW50KCkKIHsKIH0KIAotU2NyaXB0U3RhdGUqIFdvcmtl
clJ1bnRpbWVBZ2VudDo6c2NyaXB0U3RhdGVGb3JGcmFtZUlkKGNvbnN0IFN0cmluZyYpCit2b2lk
IFdvcmtlclJ1bnRpbWVBZ2VudDo6c2V0UmVwb3J0SXNvbGF0ZWRDb250ZXh0Q3JlYXRpb24oRXJy
b3JTdHJpbmcqIGVycm9yLCBib29sKQogewotICAgIHJldHVybiAwOworICAgICplcnJvciA9ICJJ
c29sYXRlZCBjb250ZXh0cyBhcmUgbm90IHN1cHBvcnRlZCBmb3Igd29ya2Vycy4iOwogfQogCi1T
Y3JpcHRTdGF0ZSogV29ya2VyUnVudGltZUFnZW50OjpnZXREZWZhdWx0SW5zcGVjdGVkU3RhdGUo
KQorU2NyaXB0U3RhdGUqIFdvcmtlclJ1bnRpbWVBZ2VudDo6Z2V0U2NyaXB0U3RhdGVGb3JFdmFs
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nKiBmcmFtZUlkLCBjb25zdCBpbnQqIGlz
b2xhdGVkV29ybGRJZCkKIHsKKyAgICBpZiAoZnJhbWVJZCkgeworICAgICAgICAqZXJyb3IgPSAi
RnJhbWUgaWQgaXMgbm90IHN1cHBvcnRlZCBmb3Igd29ya2Vycy4iOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgaWYgKGlzb2xhdGVkV29ybGRJZCkgeworICAgICAgICAqZXJyb3IgPSAi
SXNvbGF0ZWQgY29udGV4dCBpZCBpcyBub3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzLiI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KICAgICByZXR1cm4gc2NyaXB0U3RhdGVGcm9tV29ya2VyQ29u
dGV4dChtX3dvcmtlckNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggY2NmZTFmYjAzYWQ4OGI1ZjA1OWUzNWZmYjUyNGMx
ZDc1OTZhY2ZmMS4uZGJkMzExNGIwODMwNDEzOTdlYjEzMTQ0MmVhODYyOWEyODVjZTNhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtNDcs
MTEgKzQ3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJS
dW50aW1lQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIGluamVjdGVkU2NyaXB0TWFu
YWdlciwgY29udGV4dCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwb3J0SXNvbGF0ZWRDb250ZXh0Q3JlYXRpb24oRXJy
b3JTdHJpbmcqLCBib29sKTsKIAogcHJpdmF0ZToKICAgICBXb3JrZXJSdW50aW1lQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiwgV29ya2VyQ29udGV4dCopOwotICAgIHZpcnR1YWwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
Rm9yRnJhbWVJZChjb25zdCBTdHJpbmcmIGZyYW1lSWQpOwotICAgIHZpcnR1YWwgU2NyaXB0U3Rh
dGUqIGdldERlZmF1bHRJbnNwZWN0ZWRTdGF0ZSgpOworICAgIHZpcnR1YWwgU2NyaXB0U3RhdGUq
IGdldFNjcmlwdFN0YXRlRm9yRXZhbChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogZnJhbWVJ
ZCwgY29uc3QgaW50KiBpc29sYXRlZFdvcmxkSWQpOwogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29u
c29sZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCk7CiAgICAgV29ya2VyQ29u
dGV4dCogbV93b3JrZXJDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggMDg0NzY4MDViNDQwMTZmMDhiZDY4NTBmZTFi
ODAxMGExZjM0ZGI1Zi4uMTAxZTdhY2VjMDc4NDRmZWQxZDk3NTRjZTYyOWEyNTE1NGNiODMxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzCkBAIC00Nyw5ICs0NywxNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcgPSBmdW5jdGlv
bihoaWRlQ29udGV4dFNlbGVjdG9yKQogICAgIHRoaXMuX2NvbnRleHRTZWxlY3RFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CiAgICAgdGhpcy5fY29udGV4dFNlbGVj
dEVsZW1lbnQuaWQgPSAiY29uc29sZS1jb250ZXh0IjsKICAgICB0aGlzLl9jb250ZXh0U2VsZWN0
RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKKyAgICB0aGlzLl9jb250ZXh0
U2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl91cGRhdGVJc29s
YXRlZFdvcmxkU2VsZWN0b3IuYmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgaWYgKGhpZGVDb250
ZXh0U2VsZWN0b3IpCisgICAgdGhpcy5faXNvbGF0ZWRXb3JsZFNlbGVjdEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKKyAgICB0aGlzLl9pc29sYXRlZFdvcmxkU2Vs
ZWN0RWxlbWVudC5pZCA9ICJjb25zb2xlLWNvbnRleHQiOworICAgIHRoaXMuX2lzb2xhdGVkV29y
bGRTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMtYmFyLWl0ZW0iOworCisgICAgaWYg
KGhpZGVDb250ZXh0U2VsZWN0b3IpIHsKICAgICAgICAgdGhpcy5fY29udGV4dFNlbGVjdEVsZW1l
bnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgIHRoaXMuX2lzb2xhdGVkV29ybGRT
ZWxlY3RFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOworICAgIH0KIAogICAgIHRoaXMu
bWVzc2FnZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhp
cy5tZXNzYWdlc0VsZW1lbnQuaWQgPSAiY29uc29sZS1tZXNzYWdlcyI7CkBAIC0xMjcsNyArMTM0
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LkV2ZW50cyA9IHsKIFdlYkluc3BlY3Rvci5D
b25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBbdGhpcy5fY2xlYXJDb25zb2xlQnV0dG9uLmVsZW1lbnQsIHRoaXMu
X2NvbnRleHRTZWxlY3RFbGVtZW50LCB0aGlzLl9maWx0ZXJCYXJFbGVtZW50XTsKKyAgICAgICAg
cmV0dXJuIFt0aGlzLl9jbGVhckNvbnNvbGVCdXR0b24uZWxlbWVudCwgdGhpcy5fY29udGV4dFNl
bGVjdEVsZW1lbnQsIHRoaXMuX2lzb2xhdGVkV29ybGRTZWxlY3RFbGVtZW50LCB0aGlzLl9maWx0
ZXJCYXJFbGVtZW50XTsKICAgICB9LAogCiAgICAgYWRkQ29udGV4dDogZnVuY3Rpb24oY29udGV4
dCkKQEAgLTEzOSwyNiArMTQ2LDc4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGNvbnRleHQuX2NvbnNvbGVPcHRpb24gPSBvcHRpb247CiAgICAgICAg
IHRoaXMuX2NvbnRleHRTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CiAgICAgICAg
IGNvbnRleHQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVFdmFsdWF0aW9uQ29u
dGV4dC5FdmVudFR5cGVzLlVwZGF0ZWQsIHRoaXMuX2NvbnRleHRVcGRhdGVkLCB0aGlzKTsKKyAg
ICAgICAgY29udGV4dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZUV2YWx1YXRp
b25Db250ZXh0LkV2ZW50VHlwZXMuQWRkZWRJc29sYXRlZENvbnRleHQsIHRoaXMuX2FkZGVkSXNv
bGF0ZWRDb250ZXh0LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlSXNvbGF0ZWRXb3JsZFNl
bGVjdG9yKCk7CiAgICAgfSwKIAogICAgIHJlbW92ZUNvbnRleHQ6IGZ1bmN0aW9uKGNvbnRleHQp
CiAgICAgewogICAgICAgICB0aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZChj
b250ZXh0Ll9jb25zb2xlT3B0aW9uKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlSXNvbGF0ZWRXb3Js
ZFNlbGVjdG9yKCk7CisgICAgfSwKKworICAgIF91cGRhdGVJc29sYXRlZFdvcmxkU2VsZWN0b3I6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5fY3VycmVudEV2
YWx1YXRpb25Db250ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkgeworICAgICAgICAgICAg
dGhpcy5faXNvbGF0ZWRXb3JsZFNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgaXNvbGF0ZWRD
b250ZXh0cyA9IGNvbnRleHQuaXNvbGF0ZWRDb250ZXh0cygpOworICAgICAgICBpZiAoIWlzb2xh
dGVkQ29udGV4dHMubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLl9pc29sYXRlZFdvcmxkU2Vs
ZWN0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICB0aGlzLl9pc29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudC5yZW1v
dmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgdGhpcy5faXNvbGF0ZWRXb3JsZFNlbGVj
dEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBp
c29sYXRlZENvbnRleHRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgaXNvbGF0ZWRD
b250ZXh0ID0gaXNvbGF0ZWRDb250ZXh0c1tpXTsKKyAgICAgICAgICAgIHZhciBvcHRpb24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgICAgIG9wdGlvbi50ZXh0
ID0gaXNvbGF0ZWRDb250ZXh0Lm5hbWU7CisgICAgICAgICAgICBvcHRpb24udGl0bGUgPSBpc29s
YXRlZENvbnRleHQuaWQ7CisgICAgICAgICAgICBvcHRpb24uX2lzb2xhdGVkV29ybGRJZCA9IGlz
b2xhdGVkQ29udGV4dC5pZDsKKyAgICAgICAgICAgIHRoaXMuX2lzb2xhdGVkV29ybGRTZWxlY3RF
bGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgX2Nv
bnRleHRVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjb250ZXh0
ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgdmFyIG9wdGlvbj0gY29udGV4dC5fY29uc29sZU9wdGlv
bjsKKyAgICAgICAgdmFyIG9wdGlvbiA9IGNvbnRleHQuX2NvbnNvbGVPcHRpb247CiAgICAgICAg
IG9wdGlvbi50ZXh0ID0gY29udGV4dC5kaXNwbGF5TmFtZTsKICAgICAgICAgb3B0aW9uLnRpdGxl
ID0gY29udGV4dC51cmw7CiAgICAgfSwKIAorICAgIF9hZGRlZElzb2xhdGVkQ29udGV4dDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dCA9IGV2ZW50LmRhdGE7Cisg
ICAgICAgIGlmIChjb250ZXh0ID09PSB0aGlzLl9jdXJyZW50RXZhbHVhdGlvbkNvbnRleHQoKSkK
KyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlzb2xhdGVkV29ybGRTZWxlY3RvcigpOworICAgIH0s
CisKICAgICBfY3VycmVudEV2YWx1YXRpb25Db250ZXh0SWQ6IGZ1bmN0aW9uKCkKICAgICB7Cisg
ICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5fY3VycmVudEV2YWx1YXRpb25Db250ZXh0KCk7Cisg
ICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg
ICAgIHJldHVybiBjb250ZXh0LmZyYW1lSWQ7CisgICAgfSwKKworICAgIF9jdXJyZW50RXZhbHVh
dGlvbkNvbnRleHQ6IGZ1bmN0aW9uKCkKKyAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jb250ZXh0
U2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID09PSAtMSkKICAgICAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVudFt0aGlz
Ll9jb250ZXh0U2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS5fY29udGV4dC5mcmFtZUlkOwor
ICAgICAgICByZXR1cm4gdGhpcy5fY29udGV4dFNlbGVjdEVsZW1lbnRbdGhpcy5fY29udGV4dFNl
bGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0uX2NvbnRleHQ7CisgICAgfSwKKworICAgIF9jdXJy
ZW50SXNvbGF0ZWRXb3JsZElkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
aXNvbGF0ZWRXb3JsZFNlbGVjdEVsZW1lbnQuaGFzU3R5bGVDbGFzcygiaGlkZGVuIikpCisgICAg
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICBpZiAodGhpcy5faXNvbGF0ZWRXb3Js
ZFNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9PT0gLTEpCisgICAgICAgICAgICByZXR1cm4g
dW5kZWZpbmVkOworICAgICAgICByZXR1cm4gdGhpcy5faXNvbGF0ZWRXb3JsZFNlbGVjdEVsZW1l
bnRbdGhpcy5faXNvbGF0ZWRXb3JsZFNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0uX2lzb2xh
dGVkV29ybGRJZDsKICAgICB9LAogCiAgICAgX3VwZGF0ZUZpbHRlcjogZnVuY3Rpb24oZSkKQEAg
LTYyMCw3ICs2NzksOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSwgISF3YXNUaHJvd24pOwogICAgICAgICB9
Ci0gICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIHRoaXMuX2N1cnJlbnRFdmFsdWF0aW9uQ29udGV4dElkKCksIHJldHVybkJ5VmFsdWUsIGV2
YWxDYWxsYmFjayk7CisgICAgICAgIHZhciBjb250ZXh0SWQgPSB0aGlzLl9jdXJyZW50RXZhbHVh
dGlvbkNvbnRleHRJZCgpOworICAgICAgICB2YXIgd29ybGRJZCA9IGNvbnRleHRJZCA/IHRoaXMu
X2N1cnJlbnRJc29sYXRlZFdvcmxkSWQoKSA6IHVuZGVmaW5lZDsKKyAgICAgICAgUnVudGltZUFn
ZW50LmV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29udGV4dElkLCB3b3Js
ZElkLCByZXR1cm5CeVZhbHVlLCBldmFsQ2FsbGJhY2spOwogICAgIH0sCiAKICAgICBldmFsdWF0
ZVVzaW5nVGV4dFByb21wdDogZnVuY3Rpb24oZXhwcmVzc2lvbiwgc2hvd1Jlc3VsdE9ubHkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5l
bC5qcwppbmRleCA5NDVjODY1MjZjYzQ5Mjc0ZjU2ODgzMjRjMzhlZGM1ZjI0NWRhZmQwLi4xMWZi
MzQ1MDIwZTdkZGVlODJjZTU2MDE5ZmEwYjRiOWI1MzExNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMKQEAgLTI0OCw3
ICsyNDgsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2lkZWJhclBhbmUucHJvdG90eXBlID0g
ewogICAgIHNldEV4cHJlc3Npb246IGZ1bmN0aW9uKGV4cHJlc3Npb24sIHRpdGxlLCBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIHRoaXMuX2NyZWF0ZU9iamVjdFByb3BlcnRpZXNWaWV3KCk7Ci0g
ICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uLCAiZXh0ZW5zaW9uLXdhdGNo
IiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcy5fb25FdmFsdWF0
ZS5iaW5kKHRoaXMsIHRpdGxlLCBjYWxsYmFjaykpOworICAgICAgICBSdW50aW1lQWdlbnQuZXZh
bHVhdGUoZXhwcmVzc2lvbiwgImV4dGVuc2lvbi13YXRjaCIsIHRydWUsIHVuZGVmaW5lZCwgdW5k
ZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcy5fb25FdmFsdWF0ZS5iaW5kKHRoaXMs
IHRpdGxlLCBjYWxsYmFjaykpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggNjk5
YTVlYmY5OWU0NTkyYzllYjNiYTk1Mjk2MDg5OGIwNGZjZTgwMC4uNzk1YjBiNzY3MWM1MGU1Nzhj
MDBkZDVkYzcwZjhkMTNiZDY0YjM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTMzOCw3ICszMzgsNyBAQCBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgIAogICAgICAg
ICAgICAgdGhpcy5fZGlzcGF0Y2hDYWxsYmFjayhtZXNzYWdlLnJlcXVlc3RJZCwgcG9ydCwgcmVz
dWx0KTsKICAgICAgICAgfQotICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUobWVzc2FnZS5l
eHByZXNzaW9uLCAiIiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRydWUsIGNhbGxiYWNr
LmJpbmQodGhpcykpOworICAgICAgICBSdW50aW1lQWdlbnQuZXZhbHVhdGUobWVzc2FnZS5leHBy
ZXNzaW9uLCAiIiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSwg
Y2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9vbkdldENvbnNvbGVNZXNzYWdl
czogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRDb250ZXh0TWFuYWdlci5qcwppbmRleCBjODE4ZGViYzg1
N2FkNGQzM2E4N2I1ZWZkMjM5ZmRhZjUwYmQ5ZWU4Li4xOWUzZmMwMTdjYTliMTFhNzZkYjY3MTIx
MjQ1M2Q4ODhmZWViZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0phdmFTY3JpcHRDb250ZXh0TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRDb250ZXh0TWFuYWdlci5qcwpAQCAtMzcsNiAr
MzcsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdENvbnRleHRNYW5hZ2VyID0gZnVuY3Rpb24o
cmVzb3VyY2VUcmVlTW9kZWwsIGNvbnNvbGVWaWV3KQogICAgIHJlc291cmNlVHJlZU1vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMu
RnJhbWVBZGRlZCwgdGhpcy5fZnJhbWVBZGRlZCwgdGhpcyk7CiAgICAgcmVzb3VyY2VUcmVlTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRU
eXBlcy5GcmFtZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZpZ2F0ZWQsIHRoaXMpOwogICAgIHJl
c291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVEZXRhY2hlZCwgdGhpcy5fZnJhbWVEZXRhY2hlZCwgdGhp
cyk7CisgICAgcmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5DYWNoZWRSZXNvdXJjZXNMb2FkZWQsIHRoaXMu
X2RpZExvYWRDYWNoZWRSZXNvdXJjZXMsIHRoaXMpOwogICAgIHRoaXMuX2NvbnNvbGVWaWV3ID0g
Y29uc29sZVZpZXc7CiAgICAgdGhpcy5fZnJhbWVJZFRvQ29udGV4dCA9IHt9OwogfQpAQCAtNjcs
MTAgKzY4LDY0IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9jb25zb2xlVmlldy5yZW1vdmVDb250ZXh0KGNvbnRleHQp
OwogICAgICAgICBkZWxldGUgdGhpcy5fZnJhbWVJZFRvQ29udGV4dFtmcmFtZS5pZF07CiAgICAg
fSwKKworICAgIF9kaWRMb2FkQ2FjaGVkUmVzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUnVudGltZURpc3BhdGNoZXIobmV3IFdlYklu
c3BlY3Rvci5SdW50aW1lRGlzcGF0Y2hlcih0aGlzKSk7CisgICAgICAgIFJ1bnRpbWVBZ2VudC5z
ZXRSZXBvcnRJc29sYXRlZENvbnRleHRDcmVhdGlvbih0cnVlKTsKKyAgICB9LAorCisgICAgaXNv
bGF0ZWRDb250ZXh0Q3JlYXRlZDogZnVuY3Rpb24oY29udGV4dCkKKyAgICB7CisgICAgICAgIHZh
ciBmcmFtZUV2YWx1YXRpb25Db250ZXh0ID0gdGhpcy5fZnJhbWVJZFRvQ29udGV4dFtjb250ZXh0
LmZyYW1lSWRdOworICAgICAgICBmcmFtZUV2YWx1YXRpb25Db250ZXh0Ll9hZGRJc29sYXRlZENv
bnRleHQobmV3IFdlYkluc3BlY3Rvci5Jc29sYXRlZENvbnRleHQoY29udGV4dC5pZCwgY29udGV4
dC5uYW1lKSk7CisgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdENvbnRleHRNYW5h
Z2VyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
IAorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1J1bnRpbWVBZ2VudC5E
aXNwYXRjaGVyfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdENvbnRleHRNYW5h
Z2VyfSBjb250ZXh0TWFuYWdlcgorICovCitXZWJJbnNwZWN0b3IuUnVudGltZURpc3BhdGNoZXIg
PSBmdW5jdGlvbihjb250ZXh0TWFuYWdlcikKK3sKKyAgICB0aGlzLl9jb250ZXh0TWFuYWdlciA9
IGNvbnRleHRNYW5hZ2VyOworfQorCitXZWJJbnNwZWN0b3IuUnVudGltZURpc3BhdGNoZXIucHJv
dG90eXBlID0geworICAgIGlzb2xhdGVkQ29udGV4dENyZWF0ZWQ6IGZ1bmN0aW9uKGNvbnRleHQp
CisgICAgeworICAgICAgICB0aGlzLl9jb250ZXh0TWFuYWdlci5pc29sYXRlZENvbnRleHRDcmVh
dGVkKGNvbnRleHQpOworICAgIH0KK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICovCitXZWJJbnNwZWN0b3IuSXNvbGF0ZWRDb250
ZXh0ID0gZnVuY3Rpb24oaWQsIG5hbWUpCit7CisgICAgdGhpcy5pZCA9IGlkOworICAgIHRoaXMu
bmFtZSA9IG5hbWU7Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRD
b250ZXh0fSBhCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZENvbnRleHR9IGIKKyAq
LworV2ViSW5zcGVjdG9yLklzb2xhdGVkQ29udGV4dC5jb21wYXJhdG9yID0gZnVuY3Rpb24oYSwg
YikKK3sKKyAgICAvLyBNYWluIHdvcmxkIGNvbnRleHQgc2hvdWxkIGFsd2F5cyBnbyBmaXJzdC4K
KyAgICBpZiAoIWEuaWQpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoIWIuaWQpCisgICAg
ICAgIHJldHVybiArMTsKKyAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTsK
K30KKwogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2Jq
ZWN0fQpAQCAtNzgsMTAgKzEzMywxMiBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdENvbnRleHRN
YW5hZ2VyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LgogV2ViSW5z
cGVjdG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQgPSBmdW5jdGlvbihmcmFtZSkKIHsKICAgICB0
aGlzLl9mcmFtZSA9IGZyYW1lOworICAgIHRoaXMuX2lzb2xhdGVkQ29udGV4dHMgPSBbXTsKIH0K
IAogV2ViSW5zcGVjdG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQuRXZlbnRUeXBlcyA9IHsKLSAg
ICBVcGRhdGVkOiAidXBkYXRlZCIKKyAgICBVcGRhdGVkOiAiVXBkYXRlZCIsCisgICAgQWRkZWRJ
c29sYXRlZENvbnRleHQ6ICJBZGRlZElzb2xhdGVkQ29udGV4dCIKIH0KIAogV2ViSW5zcGVjdG9y
LkZyYW1lRXZhbHVhdGlvbkNvbnRleHQucHJvdG90eXBlID0KQEAgLTg5LDkgKzE0NiwzNSBAQCBX
ZWJJbnNwZWN0b3IuRnJhbWVFdmFsdWF0aW9uQ29udGV4dC5wcm90b3R5cGUgPQogICAgIF9mcmFt
ZU5hdmlnYXRlZDogZnVuY3Rpb24oZnJhbWUpCiAgICAgewogICAgICAgICB0aGlzLl9mcmFtZSA9
IGZyYW1lOworICAgICAgICB0aGlzLl9pc29sYXRlZENvbnRleHRzID0gW107CiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZUV2YWx1YXRpb25D
b250ZXh0LkV2ZW50VHlwZXMuVXBkYXRlZCwgdGhpcyk7CiAgICAgfSwKIAorICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklzb2xhdGVkQ29udGV4dH0gY29udGV4dAorICAgICAq
LworICAgIF9hZGRJc29sYXRlZENvbnRleHQ6IGZ1bmN0aW9uKGNvbnRleHQpCisgICAgeworICAg
ICAgICB0aGlzLl9lbnN1cmVNYWluV29ybGRDb250ZXh0QWRkZWQoKTsKKyAgICAgICAgdGhpcy5f
aXNvbGF0ZWRDb250ZXh0cy5wdXNoKGNvbnRleHQpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWVFdmFsdWF0aW9uQ29udGV4dC5FdmVudFR5
cGVzLkFkZGVkSXNvbGF0ZWRDb250ZXh0LCB0aGlzKTsKKyAgICB9LAorCisgICAgX2Vuc3VyZU1h
aW5Xb3JsZENvbnRleHRBZGRlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X2lzb2xhdGVkQ29udGV4dHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2
YXIgY29udGV4dCA9IG5ldyBXZWJJbnNwZWN0b3IuSXNvbGF0ZWRDb250ZXh0KDAsICI8cGFnZSBj
b250ZXh0PiIpOworICAgICAgICB0aGlzLl9pc29sYXRlZENvbnRleHRzLnB1c2goY29udGV4dCk7
CisgICAgfSwKKworICAgIGlzb2xhdGVkQ29udGV4dHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9pc29sYXRlZENvbnRleHRzLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMu
X2lzb2xhdGVkQ29udGV4dHMuc29ydChXZWJJbnNwZWN0b3IuSXNvbGF0ZWRDb250ZXh0LmNvbXBh
cmF0b3IpOworICAgICAgICByZXR1cm4gdGhpcy5faXNvbGF0ZWRDb250ZXh0czsKKyAgICB9LAor
CiAgICAgZ2V0IGZyYW1lSWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lLmlk
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140401</attachid>
            <date>2012-05-05 08:03:19 -0700</date>
            <delta_ts>2012-05-05 08:20:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85612-20120505190317.patch</filename>
            <type>text/plain</type>
            <size>52018</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhhN2FjZWY4NzlhNDhj
N2ZhNWI2OTc2NWJiZDE5MDkxNWRlZjVkZS4uZGZhZDc0OTk0MTU1NDI2YWI2OWM0M2FjNDA1Nzk1
OTNjNjUzMzM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMi0wNS0wNCAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBjb25zb2xlIHNob3VsZCBhbGxvdyBKUyBleGVjdXRpb24gaW4gdGhlIGNvbnRleHQgb2Yg
YW4gaXNvbGF0ZWQgd29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1NjEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIHNlbGVjdCBub3Qgb25seSBhIGZyYW1lIGJ1dCBh
bHNvIGlzb2xhdGVkIHdvcmxkIGluIHdoaWNoCisgICAgICAgIHRvIHBlcmZvcm0gZXZhbHVhdGlv
biBvZiB0aGUgY29kZSB0eXBlZCBpbnRvIHRoZSBjb25zb2xlLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Omlzb2xhdGVkV29ybGRUb1NlY3VyaXR5T3JpZ2luTWFwKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250cm9sbGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc29sYXRlZFdvcmxkU2NyaXB0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppc29sYXRlZFdvcmxkVG9T
ZWN1cml0eU9yaWdpbk1hcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
U2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNvbGF0ZWRXb3JsZFNjcmlwdFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFN0
YXRlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xh
dGVkQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOElzb2xhdGVkQ29udGV4dDo6c2V0
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhQcm94eTo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6Omlzb2xhdGVkV29ybGRDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6aXNvbGF0ZWRXb3JsZFRv
U2VjdXJpdHlPcmlnaW5NYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAg
ICAgICAgKFY4UHJveHkpOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVj
dG9yLnB5OgorICAgICAgICAoRG9tYWluTmFtZUZpeGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZUlzb2xhdGVkQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVJc29sYXRlZENvbnRleHQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yUnVudGlt
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpJ
bnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6OnBhZ2VSdW50aW1lQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0Fn
ZW50czo6c2V0UGFnZVJ1bnRpbWVBZ2VudCk6CisgICAgICAgIChJbnN0cnVtZW50aW5nQWdlbnRz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChQ
YWdlUnVudGltZUFnZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VSdW50aW1lQWdlbnQ6OmNsZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1
bnRpbWVBZ2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50
OjpzZXRSZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpnZXRTY3JpcHRTdGF0ZUZvckV2YWwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFBhZ2VSdW50aW1lQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50OjpzZXRS
ZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
UnVudGltZUFnZW50OjpnZXRTY3JpcHRTdGF0ZUZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKFdvcmtlclJ1bnRpbWVBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0ZW1zKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuYWRkQ29udGV4dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLnJlbW92ZUNvbnRleHQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fdXBkYXRlSXNv
bGF0ZWRXb3JsZFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5w
cm90b3R5cGUuX2NvbnRleHRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUuX2FkZGVkRXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9jdXJyZW50RXZhbHVhdGlvbkNvbnRleHRJZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9jdXJyZW50RXZh
bHVhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3Rv
dHlwZS5fY3VycmVudElzb2xhdGVkV29ybGRJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlLmV2YWxJbkluc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TaWRlYmFyUGFuZS5wcm90b3R5cGUuc2V0RXhwcmVzc2lvbik6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25FdmFsdWF0ZU9uSW5zcGVjdGVk
UGFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0Q29udGV4dE1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdENvbnRleHRNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIucHJvdG90
eXBlLl9kaWRMb2FkQ2FjaGVkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZh
U2NyaXB0Q29udGV4dE1hbmFnZXIucHJvdG90eXBlLmlzb2xhdGVkQ29udGV4dENyZWF0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bnRpbWVEaXNwYXRjaGVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SdW50aW1lRGlzcGF0Y2hlci5wcm90b3R5cGUuaXNvbGF0ZWRDb250ZXh0Q3JlYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dC5jb21wYXJhdG9yKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZUV2YWx1YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
cmFtZUV2YWx1YXRpb25Db250ZXh0LnByb3RvdHlwZS5fZnJhbWVOYXZpZ2F0ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQucHJvdG90eXBlLl9hZGRFeGVj
dXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZUV2YWx1YXRpb25Db250
ZXh0LnByb3RvdHlwZS5fZW5zdXJlTWFpbldvcmxkQ29udGV4dEFkZGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GcmFtZUV2YWx1YXRpb25Db250ZXh0LnByb3RvdHlwZS5pc29sYXRlZENvbnRl
eHRzKToKKwogMjAxMi0wNS0wNCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9y
Zz4KIAogICAgICAgICBbR1RLXSBTaW1wbGlmeSBob3cgbGliV2ViQ29yZU1vZHVsZXMgaXMgbGlu
a2VkIGluLCBhbmQgZml4IFdlYktpdDIgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMGE3ZTA5MDg2Mzg2NDdkM2QzZjBjZGRh
ZTFiNWMyNWQ4NzQzYWQxMS4uN2RkMzRiYTE1NWVhMDU4MTJjMjY1Mzg5OTNiNTY2ZTNmZGI3NzFm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTMyNiw2ICszMjYsMTEgQEAgUGFzc1JlZlB0cjxCaW5kaW5nczo6Um9vdE9iamVjdD4g
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlUm9vdE9iamVjdCh2b2lkKiBuYXRpdmUKIHZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6c2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhi
b29sKQogewogfQorCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRl
eHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+ID4m
KQoreworICAgIC8vIEZJWE1FKDg1NzA5KTogc3VwcG9ydCBpc29sYXRlZCBjb250ZXh0cyBpbnNw
ZWN0aW9uIGZvciBKU0MuCit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IDM3ZmI3ZWRjZjgxNGEyNGJiYjgzZGJmZGJlNGQyOWJmNjgyOGQ1YjEuLjllOGMyOGQ2YWU3
YzY0M2NjYjg3ZDA0ZTU1OWQyMDQ2ZDE4ZWZhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IE5QT2Jq
ZWN0OwogCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBj
bGFzcyBFeGVjU3RhdGU7CiAKICAgICBuYW1lc3BhY2UgQmluZGluZ3MgewogICAgICAgICBjbGFz
cyBSb290T2JqZWN0OwpAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIGNsYXNzIFNjcmlwdFZhbHVl
OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBXaWRnZXQ7CiAKIHR5cGVkZWYgSGFzaE1h
cDx2b2lkKiwgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+ID4gUm9vdE9iamVjdE1h
cDsKQEAgLTE0Myw2ICsxNDUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIHN0YXRpYyB2b2lkIHNldENhcHR1cmVDYWxsU3RhY2tGb3JVbmNhdWdodEV4Y2VwdGlvbnMo
Ym9vbCk7CisgICAgdm9pZCBjb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWly
PEpTQzo6RXhlY1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4qPiA+Jik7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggZTgwZTZjN2E2NGE0MDM0YWEzOTVlNjVlOWZhODcxNjU0NGRkOTlmMi4u
MWJjYjdlNDQ0NDAxZTlkZmQ0MzU0NjhhOGZiYThmMmRkYzk1M2I5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTQ2Nyw2ICs0Njcs
MTEgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJlQ2FsbFN0YWNrRm9yVW5jYXVn
aHRFeGNlcHRpb25zKGJvb2wgdmFsdWUpCiB7CiAgICAgdjg6OlY4OjpTZXRDYXB0dXJlU3RhY2tU
cmFjZUZvclVuY2F1Z2h0RXhjZXB0aW9ucyh2YWx1ZSwgU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxs
U3RhY2tTaXplVG9DYXB0dXJlLCBzdGFja1RyYWNlT3B0aW9ucyk7CiB9CisKK3ZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxTY3Jp
cHRTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4gPiYgcmVzdWx0KQoreworICAgIG1fcHJveHktPmNv
bGxlY3RJc29sYXRlZENvbnRleHRzKHJlc3VsdCk7Cit9CiAjZW5kaWYKIAogdm9pZCBTY3JpcHRD
b250cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcih2b2lkKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlODQ3N2NlMjlhNjQ5ZDQ3MTczN2RkNjA4
N2E2NzE0MmU3YWUwOWEyLi5kNzVmYjllMWE2YTA5MWNhZTQ3ZmI1ZmRkMjk1YzhkODIwZmNkMzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBA
IC02MSw2ICs2MSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiBj
bGFzcyBQYWdlUG9wdXBDbGllbnQ7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOworY2xhc3MgU2Ny
aXB0U3RhdGU7CiBjbGFzcyBXaWRnZXQ7CiAKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewpAQCAt
MTM0LDYgKzEzNSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3Rh
dGljIHZvaWQgc2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0RXhjZXB0aW9ucyhib29sKTsK
KyAgICB2b2lkIGNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8U2NyaXB0
U3RhdGUqLCBTZWN1cml0eU9yaWdpbio+ID4mKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5FeGVj
dXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCmluZGV4IDYwNzY2
ZjY2ZGU3MGUyZGE0YTNlYmY5MTc0N2FmMzk0NWY4Y2FiYjcuLmUyNDM0ZDBjMzA0NGE3MTJmZTIz
Zjk5NTA1MjdiMTgyNTUwYjdmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlY4QmluZGluZ1BlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIK
QEAgLTExNyw2ICsxMTgsMTEgQEAgVjhJc29sYXRlZENvbnRleHQ6On5WOElzb2xhdGVkQ29udGV4
dCgpCiAKIHZvaWQgVjhJc29sYXRlZENvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQogeworICAgIGlmICghbV9zZWN1cml0
eU9yaWdpbiAmJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpICYmICFj
b250ZXh0KCkuSXNFbXB0eSgpKSB7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKKyAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNv
bnRleHQodjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQoKSkpOworICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChtX2ZyYW1l
LCBzY3JpcHRTdGF0ZSwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgIH0KICAgICBtX3NlY3Vy
aXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKaW5kZXggZTkyN2Q1M2FmMmJhNWU4Yjc1OTZkOTA5YzVlMzA1ZDYwYTkwOTEz
YS4uZGJmOTE5Yzc0NTM3YmJiNzYyZTRjY2RjMzc2NTk2ZTI2NThjZDVjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTYzMSw2ICs2MzEsMTQgQEAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KCkKICAgICByZXR1cm4gdjg6
OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KHdpbmRvd1NoZWxsKCktPmNvbnRleHQoKSk7CiB9CiAK
K3Y4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6aXNvbGF0ZWRXb3JsZENvbnRleHQoaW50
IHdvcmxkSWQpCit7CisgICAgSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNv
bGF0ZWRXb3JsZHMuZmluZCh3b3JsZElkKTsKKyAgICBpZiAoaXRlciA9PSBtX2lzb2xhdGVkV29y
bGRzLmVuZCgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0PigpOworICAg
IHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoaXRlci0+c2Vjb25kLT5jb250ZXh0
KCkpOworfQorCiBib29sIFY4UHJveHk6Om1hdGNoZXNDdXJyZW50Q29udGV4dCgpCiB7CiAgICAg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsKQEAgLTcyNyw2ICs3MzUsMjEgQEAgaW50
IFY4UHJveHk6OmNvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQp
CiAgICAgcmV0dXJuIGF0b2koY29tbWEgKyAxKTsKIH0KIAordm9pZCBWOFByb3h5Ojpjb2xsZWN0
SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPFNjcmlwdFN0YXRlKiwgU2VjdXJpdHlP
cmlnaW4qPiA+JiByZXN1bHQpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwor
ICAgIGZvciAoSXNvbGF0ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lzb2xhdGVkV29ybGRz
LmJlZ2luKCk7IGl0ICE9IG1faXNvbGF0ZWRXb3JsZHMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAg
VjhJc29sYXRlZENvbnRleHQqIGlzb2xhdGVkQ29udGV4dCA9IGl0LT5zZWNvbmQ7CisgICAgICAg
IGlmICghaXNvbGF0ZWRDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IGlzb2xh
dGVkQ29udGV4dC0+Y29udGV4dCgpOworICAgICAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUg
PSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcodjhD
b250ZXh0KSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjpwYWlyPFNjcmlwdFN0YXRlKiwg
U2VjdXJpdHlPcmlnaW4qPihzY3JpcHRTdGF0ZSwgaXNvbGF0ZWRDb250ZXh0LT5zZWN1cml0eU9y
aWdpbigpKSk7CisgICAgfQorfQorCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRs
ZSYgd29ybGRDb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCA2NmRiZjU5NjgwNjg2ZWJhNzY1YjEw
ZTNkYzVlMDIxMzQzNDVmZjkzLi42MDE4MzFkYzI3Njc3ZTVmZTg5YTZlNzAyMmJkOWE0MGZjZWQ5
YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC0yNDQsNiArMjQ0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
Y29udGV4dCgpOwogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1haW5Xb3JsZENvbnRl
eHQoKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBpc29sYXRlZFdvcmxkQ29udGV4
dChpbnQgd29ybGRJZCk7CiAgICAgICAgIGJvb2wgbWF0Y2hlc0N1cnJlbnRDb250ZXh0KCk7CiAK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgdGFrZSBET01XcmFwcGVy
V29ybGQgYXJndW1lbnQhCkBAIC0yNTEsNiArMjUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIGJvb2wgc2V0Q29udGV4dERlYnVnSWQoaW50IGlkKTsKICAgICAgICAgc3RhdGlj
IGludCBjb250ZXh0RGVidWdJZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CisgICAgICAgIHZv
aWQgY29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRTdGF0ZSos
IFNlY3VyaXR5T3JpZ2luKj4gPiYpOwogCiAgICAgICAgIC8vIFJlZ2lzdGVycyBhIHY4IGV4dGVu
c2lvbiB0byBiZSBhdmFpbGFibGUgb24gd2VicGFnZXMuIFdpbGwgb25seQogICAgICAgICAvLyBh
ZmZlY3QgdjggY29udGV4dHMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhpcyBjYWxsLiBUYWtlcyBvd25l
cnNoaXAgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkKaW5kZXggZDYyOWNhZmViMzM3MmZmOTAyMTRjMzg0YzE1ZGU5M2ZmYzI3OTI5
Yy4uMDQwN2YxODQxOTlmNzRkNGZjZGMyNTE3ZTY5YWNlMzQ0NzE0MTJjMiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTE4
NSw3ICsxODUsNyBAQCBjbGFzcyBEb21haW5OYW1lRml4ZXM6CiAKICAgICAgICAgcmV0dXJuIFJl
cwogCi0gICAgc2tpcF9qc19iaW5kX2RvbWFpbnMgPSBzZXQoWyJSdW50aW1lIiwgIkRPTURlYnVn
Z2VyIl0pCisgICAgc2tpcF9qc19iaW5kX2RvbWFpbnMgPSBzZXQoWyJET01EZWJ1Z2dlciJdKQog
CiAKIGNsYXNzIFJhd1R5cGVzKG9iamVjdCk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDYwNTE3MTM1ZDg1OWE5M2FjNmNl
NGEzMWJlNmNjYzUwNTYyMmJkMmUuLmJhZWFhNzI0NzJiNzI4YzVmNjY0ZmQ1NzJlMDBhZmFlMjQ5
NzA2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTc5LDcg
Kzc5LDI0IEBAIEluamVjdGVkU2NyaXB0SG9zdCogSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmpl
Y3RlZFNjcmlwdEhvc3QoKQogCiBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmluamVjdGVkU2NyaXB0Rm9ySWQobG9uZyBpZCkKIHsKLSAgICByZXR1cm4gbV9pZFRvSW5qZWN0
ZWRTY3JpcHQuZ2V0KGlkKTsKKyAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZmluZChpZCk7CisgICAgaWYgKGl0ICE9IG1faWRUb0lu
amVjdGVkU2NyaXB0LmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICBmb3Ig
KFNjcmlwdFN0YXRlVG9JZDo6aXRlcmF0b3IgaXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5iZWdpbigp
OyBpdCAhPSBtX3NjcmlwdFN0YXRlVG9JZC5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQt
PnNlY29uZCA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdEZvcihpdC0+
Zmlyc3QpOworICAgIH0KKyAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKK30KKworbG9uZyBJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0SWRGb3IoU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlKQoreworICAgIFNjcmlwdFN0YXRlVG9JZDo6aXRlcmF0b3IgaXQgPSBtX3Njcmlw
dFN0YXRlVG9JZC5maW5kKHNjcmlwdFN0YXRlKTsKKyAgICBpZiAoaXQgIT0gbV9zY3JpcHRTdGF0
ZVRvSWQuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgIGxvbmcgaWQgPSBt
X25leHRJbmplY3RlZFNjcmlwdElkKys7CisgICAgbV9zY3JpcHRTdGF0ZVRvSWQuc2V0KHNjcmlw
dFN0YXRlLCBpZCk7CisgICAgcmV0dXJuIGlkOwogfQogCiBJbmplY3RlZFNjcmlwdCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBv
YmplY3RJZCkKQEAgLTg5LDcgKzEwNiw3IEBAIEluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0
TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChjb25zdCBTdHJpbmcmIG9iCiAgICAg
ICAgIGxvbmcgaW5qZWN0ZWRTY3JpcHRJZCA9IDA7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHBh
cnNlZE9iamVjdElkLT5hc09iamVjdCgpLT5nZXROdW1iZXIoImluamVjdGVkU2NyaXB0SWQiLCAm
aW5qZWN0ZWRTY3JpcHRJZCk7CiAgICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0Rm9ySWQoaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgICAgICAgICBy
ZXR1cm4gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpOwogICAgIH0K
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIH0KQEAgLTEwMCwxMCArMTE3LDE0IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzKCkKICAgICBm
b3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3RlZFNj
cmlwdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGRpc2NhcmRJbmplY3RlZFNj
cmlwdChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOwogICAgIG1faWRUb0luamVjdGVkU2NyaXB0
LmNsZWFyKCk7CisgICAgbV9zY3JpcHRTdGF0ZVRvSWQuY2xlYXIoKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3
aW5kb3cpCiB7CisgICAgaWYgKG1fc2NyaXB0U3RhdGVUb0lkLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgVmVjdG9yPGxvbmc+IGlkc1RvUmVtb3ZlOwogICAgIElkVG9JbmplY3Rl
ZFNjcmlwdE1hcDo6aXRlcmF0b3IgZW5kID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZW5kKCk7CiAg
ICAgZm9yIChJZFRvSW5qZWN0ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5qZWN0
ZWRTY3JpcHQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0xMTEsMTEgKzEzMiwyMiBA
QCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0c0ZvcihE
T01XaW5kb3cqIHdpbmRvdykKICAgICAgICAgaWYgKHdpbmRvdyAhPSBkb21XaW5kb3dGcm9tU2Ny
aXB0U3RhdGUoc2NyaXB0U3RhdGUpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGRp
c2NhcmRJbmplY3RlZFNjcmlwdChzY3JpcHRTdGF0ZSk7CisgICAgICAgIG1fc2NyaXB0U3RhdGVU
b0lkLnJlbW92ZShzY3JpcHRTdGF0ZSk7CiAgICAgICAgIGlkc1RvUmVtb3ZlLmFwcGVuZChpdC0+
Zmlyc3QpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWRzVG9SZW1vdmUu
c2l6ZSgpOyBpKyspCiAgICAgICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnJlbW92ZShpZHNUb1Jl
bW92ZVtpXSk7CisKKyAgICAvLyBOb3cgcmVtb3ZlIHNjcmlwdCBzdGF0ZXMgdGhhdCBoYXZlIGlk
IGJ1dCBubyBpbmplY3RlZCBzY3JpcHQuCisgICAgVmVjdG9yPFNjcmlwdFN0YXRlKj4gc2NyaXB0
U3RhdGVzVG9SZW1vdmU7CisgICAgZm9yIChTY3JpcHRTdGF0ZVRvSWQ6Oml0ZXJhdG9yIGl0ID0g
bV9zY3JpcHRTdGF0ZVRvSWQuYmVnaW4oKTsgaXQgIT0gbV9zY3JpcHRTdGF0ZVRvSWQuZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gaXQtPmZpcnN0Owor
ICAgICAgICBpZiAod2luZG93ID09IGRvbVdpbmRvd0Zyb21TY3JpcHRTdGF0ZShzY3JpcHRTdGF0
ZSkpCisgICAgICAgICAgICBzY3JpcHRTdGF0ZXNUb1JlbW92ZS5hcHBlbmQoc2NyaXB0U3RhdGUp
OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNjcmlwdFN0YXRlc1RvUmVtb3Zl
LnNpemUoKTsgaSsrKQorICAgICAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUoc2NyaXB0U3Rh
dGVzVG9SZW1vdmVbaV0pOwogfQogCiBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNj
ZXNzSW5zcGVjdGVkV29ya2VyQ29udGV4dChTY3JpcHRTdGF0ZSopCkBAIC0xMzYsNyArMTY4LDcg
QEAgU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRTb3VyY2UoKQog
CiBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKIHsK
LSAgICBsb25nIGlkID0gbV9uZXh0SW5qZWN0ZWRTY3JpcHRJZCsrOworICAgIGxvbmcgaWQgPSBp
bmplY3RlZFNjcmlwdElkRm9yKHNjcmlwdFN0YXRlKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoaWQsIGNyZWF0ZUluamVjdGVkU2NyaXB0KHNvdXJjZSwgc2NyaXB0U3RhdGUsIGlkKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIu
aAppbmRleCBiYmRiMTY2Yzg3NTkwOWQ2M2NkNmQ4ZmFiY2FmNGM0YTMxMjIzZDhmLi40ZGYzYmQ5
ZTUxZGExNTdiMmUyMTYyM2RmNzlhODFiZDQxNDc5YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCkBAIC01OCw2ICs1OCw3IEBAIHB1
YmxpYzoKICAgICBwYWlyPGxvbmcsIFNjcmlwdE9iamVjdD4gaW5qZWN0U2NyaXB0KGNvbnN0IFN0
cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSopOwogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0Rm9yKFNjcmlwdFN0YXRlKik7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JJZChsb25nKTsKKyAgICBsb25nIGluamVjdGVkU2NyaXB0SWRGb3IoU2NyaXB0U3RhdGUq
KTsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQpOwogICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2NyaXB0cygpOwogICAg
IHZvaWQgZGlzY2FyZEluamVjdGVkU2NyaXB0c0ZvcihET01XaW5kb3cqKTsKQEAgLTgwLDYgKzgx
LDggQEAgcHJpdmF0ZToKICAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXAgbV9pZFRvSW5qZWN0ZWRT
Y3JpcHQ7CiAgICAgUmVmUHRyPEluamVjdGVkU2NyaXB0SG9zdD4gbV9pbmplY3RlZFNjcmlwdEhv
c3Q7CiAgICAgSW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayBtX2luc3BlY3RlZFN0YXRlQWNjZXNz
Q2hlY2s7CisgICAgdHlwZWRlZiBIYXNoTWFwPFNjcmlwdFN0YXRlKiwgbG9uZz4gU2NyaXB0U3Rh
dGVUb0lkOworICAgIFNjcmlwdFN0YXRlVG9JZCBtX3NjcmlwdFN0YXRlVG9JZDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgppbmRleCBmNjM5MDVmMjdjMTQ5NGE3N2EwMjQ0Nzk5NTM4ZjNmM2IyYzgxYmI5Li5kNTYwZWRl
MzkyYTE5ZGNhMWFhMjc4NGE0NDY0ZTg1NGNiNDQ1Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCkBAIC00MjcsNyArNDI3LDI2IEBACiAgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAidmFsdWUiLCAidHlwZSI6ICJhbnkiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiUHJpbWl0aXZlIHZhbHVlLiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJvYmplY3RJZCIsICIkcmVmIjogIlJlbW90ZU9iamVjdElkIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlbW90ZSBvYmplY3QgaGFuZGxlLiIgfQogICAgICAg
ICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgImlkIjogIkV4ZWN1dGlvbkNvbnRleHRJZCIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAi
aW50ZWdlciIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklkIG9mIGFuIGV4ZWN1
dGlvbiBjb250ZXh0LiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkV4ZWN1dGlvbkNv
bnRleHREZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGVzY3JpcHRpb24gb2YgYW4gaXNvbGF0ZWQg
d29ybGQuIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJpZCIsICIkcmVmIjogIkV4ZWN1dGlvbkNvbnRleHRJZCIsICJkZXNj
cmlwdGlvbiI6ICJVbmlxdWUgaWQgb2YgdGhlIGV4ZWN1dGlvbiBjb250ZXh0LiBJdCBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGluIHdoaWNoIGV4ZWN1dGlvbiBjb250ZXh0IHNjcmlwdCBldmFsdWF0
aW9uIHNob3VsZCBiZSBwZXJmb3JtZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImlzUGFnZUNvbnRleHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRy
dWUgaWYgdGhpcyBpcyBhIGNvbnRleHQgd2hlcmUgaW5wc3BlY3RlZCB3ZWIgcGFnZSBzY3JpcHRz
IHJ1bi4gRmFsc2UgaWYgaXQgaXMgYSBjb250ZW50IHNjcmlwdCBpc29sYXRlZCBjb250ZXh0LiIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIkh1bWFuIHJlYWRhYmxlIG5hbWUgZGVzY3JpYmluZyBnaXZlbiBj
b250ZXh0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRy
ZWYiOiAiTmV0d29yay5GcmFtZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBvd25pbmcg
ZnJhbWUuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjog
dHJ1ZQogICAgICAgICAgICAgfQorCiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsK
ICAgICAgICAgICAgIHsKQEAgLTQzNyw3ICs0NTYsNyBAQAogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm9iamVjdEdyb3VwIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIlN5bWJvbGljIGdyb3VwIG5hbWUgdGhhdCBjYW4gYmUgdXNlZCB0
byByZWxlYXNlIG11bHRpcGxlIG9iamVjdHMuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImluY2x1ZGVDb21tYW5kTGluZUFQSSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB3aGV0aGVyIENvbW1hbmQgTGlu
ZSBBUEkgc2hvdWxkIGJlIGF2YWlsYWJsZSBkdXJpbmcgdGhlIGV2YWx1YXRpb24uIiwgImhpZGRl
biI6IHRydWUgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlNwZWNpZmllcyB3aGV0aGVyIGV2YWx1YXRpb24gc2hvdWxk
IHN0b3Agb24gZXhjZXB0aW9ucyBhbmQgbXV0ZSBjb25zb2xlLiBPdmVycmlkZXMgc2V0UGF1c2VP
bkV4Y2VwdGlvbiBzdGF0ZS4iLCAiaGlkZGVuIjogdHJ1ZSB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImZyYW1lSWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiU3BlY2lmaWVzIGluIHdoaWNoIGZyYW1lIHRvIHBl
cmZvcm0gZXZhbHVhdGlvbi4iLCAiaGlkZGVuIjogdHJ1ZSB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImNvbnRleHRJZCIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiU3BlY2lmaWVzIGluIHdoaWNoIGlzb2xhdGVkIGNvbnRleHQg
dG8gcGVyZm9ybSBldmFsdWF0aW9uLiBFYWNoIGNvbnRlbnQgc2NyaXB0IGxpdmVzIGluIGFuIGlz
b2xhdGVkIGNvbnRleHQgYW5kIHRoaXMgcGFyYW1ldGVyIG1heSBiZSB1c2VkIHRvIHNwZWNpZnkg
b24gb2YgdGhvc2UgY29udGV4dHMuIElmIHRoZSBwYXJhbWV0ZXIgaXMgb21pdHRlZCBvciAwIHRo
ZSBldmFsdWF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBpbnNw
ZWN0ZWQgcGFnZS4iLCAiaGlkZGVuIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInJldHVybkJ5VmFsdWUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIldoZXRoZXIgdGhlIHJlc3VsdCBpcyBleHBlY3RlZCB0byBiZSBh
IEpTT04gb2JqZWN0IHRoYXQgc2hvdWxkIGJlIHNlbnQgYnkgdmFsdWUuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKQEAgLTQ5MCw2ICs1MDksMjQg
QEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJydW4iLAogICAgICAgICAgICAgICAgICJoaWRk
ZW4iOiB0cnVlLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyBpbnNwZWN0
ZWQgaW5zdGFuY2Uod29ya2VyIG9yIHBhZ2UpIHRoYXQgaXQgY2FuIHJ1biBpbiBjYXNlIGl0IHdh
cyBzdGFydGVkIHBhdXNlZC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogInNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbiIsCisg
ICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZW5hYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiUmVwb3J0
aW5nIGVuYWJsZWQgc3RhdGUuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxl
cyByZXBvcnRpbmcgYWJvdXQgY3JlYXRpb24gb2YgaXNvbGF0ZWQgY29udGV4dHMgYnkgbWVhbnMg
b2YgPGNvZGU+aXNvbGF0ZWRDb250ZXh0Q3JlYXRlZDwvY29kZT4gZXZlbnQuIFdoZW4gdGhlIHJl
cG9ydGluZyBnZXRzIGVuYWJsZWQgdGhlIGV2ZW50IHdpbGwgYmUgc2VudCBpbW1lZGlhdGVseSBm
b3IgZWFjaCBleGlzdGluZyBpc29sYXRlZCBjb250ZXh0LiIKKyAgICAgICAgICAgIH0KKworICAg
ICAgICBdLAorICAgICAgICAiZXZlbnRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICJuYW1lIjogImlzb2xhdGVkQ29udGV4dENyZWF0ZWQiLAorICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRleHQiLCAi
JHJlZiI6ICJFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb24iLCAiZGVzY3JpcHRpb24iOiAiQSBu
ZXdseSBjcmVhdGVkIGlzb2xhdGVkIGNvbnRleC4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJc3N1ZWQgd2hlbiBuZXcgaXNvbGF0ZWQgY29u
dGV4dCBpcyBjcmVhdGVkLiIKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IDA1YThhZDY5NjlkMjc0YjA2OTk3MTEzYzg0YTc4YTNhYzczZTM1OGMuLjc3ZjRk
MzE0YThlOWM4N2EyOTcxODRmM2FmYTk4NzJiZGU4Y2M2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MSw2
ICs2MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvcldvcmtlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5o
IgorI2luY2x1ZGUgIlBhZ2VSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRQcm9m
aWxlLmgiCkBAIC0xMTIsNiArMTEzLDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGRJbXBsKEluc3RydW1lbnRpbmdBZ2VuCiAgICAg
ICAgICAgICBkZWJ1Z2dlckFnZW50LT5kaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpOwog
ICAgIH0KICNlbmRpZgorICAgIGlmIChQYWdlUnVudGltZUFnZW50KiBwYWdlUnVudGltZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+cGFnZVJ1bnRpbWVBZ2VudCgpKSB7CisgICAgICAgIGlm
ICh3b3JsZCA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKKyAgICAgICAgICAgIHBhZ2VSdW50
aW1lQWdlbnQtPmRpZENsZWFyV2luZG93T2JqZWN0KGZyYW1lKTsKKyAgICB9CiB9CiAKIGJvb2wg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtMzYzLDYgKzM2OCwxMiBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdAogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRFdmFsdWF0ZVNj
cmlwdCgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSXNv
bGF0ZWRDb250ZXh0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBGcmFtZSogZnJhbWUsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKK3sKKyAgICBpZiAoUGFnZVJ1bnRpbWVBZ2VudCogcnVudGltZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+cGFnZVJ1bnRpbWVBZ2VudCgpKQorICAgICAgICBydW50aW1lQWdl
bnQtPmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChmcmFtZSwgc2NyaXB0U3RhdGUsIG9yaWdpbik7
Cit9CisKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIGludCB0aW1lcklkKQogewogICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVk
KGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCB0aW1lckZpcmVkRXZlbnROYW1lLCBmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKaW5kZXggYTE3MjAzNGIxMzkxN2YzYzY3ZjhiZjAxNDhiYTAzNzY1NmZlNGEzNi4uNjhi
NzM3NzQ4YTcxOWIwOGU0YTg5NDZkMDZhY2Y4YmQ0MTdiMmFmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzksNiAr
MzksMTIgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogCisjaWYgVVNFKEpTQykKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRl
OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUnVsZTsKQEAg
LTYzLDYgKzY5LDcgQEAgY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0Q2FsbFN0
YWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdFByb2ZpbGU7
CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBTdG9yYWdl
QXJlYTsKIGNsYXNzIFN0eWxlUnVsZTsKQEAgLTcwLDYgKzc3LDEyIEBAIGNsYXNzIFdvcmtlckNv
bnRleHQ7CiBjbGFzcyBXb3JrZXJDb250ZXh0UHJveHk7CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsK
IAorI2lmIFVTRShKU0MpCit0eXBlZGVmIEpTQzo6RXhlY1N0YXRlIFNjcmlwdFN0YXRlOworI2Vs
c2UKK2NsYXNzIFNjcmlwdFN0YXRlOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CiBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7CiBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
OwpAQCAtMTE5LDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRj
aEV2ZW50T25XaW5kb3coY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRXZhbHVhdGVTY3Jp
cHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogICAgIHN0YXRp
YyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChGcmFtZSos
IFNjcmlwdFN0YXRlKiwgU2VjdXJpdHlPcmlnaW4qKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGludCB0aW1lcklkKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlkQmVnaW5GcmFt
ZShQYWdlKik7CkBAIC0yNzgsNiArMjkyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBk
aWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgU3RyaW5nJiB1
cmwsIGludCBsaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdElt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIHZv
aWQgZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJh
bWUqLCBTY3JpcHRTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgaW50IHRpbWVySWQpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lckltcGwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlk
QmVnaW5GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtNzA2LDYgKzcyMSwxNSBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbgogI2VuZGlmCiB9CiAKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZyYW1lKiBmcmFt
ZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZv
aWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm4gZGlk
Q3JlYXRlSXNvbGF0ZWRDb250ZXh0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgc2Ny
aXB0U3RhdGUsIG9yaWdpbik7CisjZW5kaWYKK30KKwogaW5saW5lIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50IHRpbWVySWQpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKaW5kZXggYmJkN2NlOGVlMTA1YjAwOWUyZTcyMmYxOTJlNzkwYzBlZGMx
OGJmYi4uN2U0ZmQ0YjYyMzZlM2JlNDkwMWI3M2YzMThkMGRmNzA4MDE3N2Q0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTgzLDE2ICs4MywxMSBAQCBzdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRp
b25zU3RhdGUgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShTY3JpcAogfQogI2VuZGlmCiAKLXZv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RH
cm91cCwgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29s
KiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IFN0cmlu
ZyogY29uc3QgZnJhbWVJZCwgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpldmFsdWF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVz
c2lvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogY29uc3Qg
aW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2Fz
VGhyb3duKQogewotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlRm9y
RXZhbChlcnJvclN0cmluZywgZnJhbWVJZCk7Ci0gICAgaWYgKCFzY3JpcHRTdGF0ZSkKKyAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0Rm9yRXZhbChlcnJv
clN0cmluZywgZXhlY3V0aW9uQ29udGV4dElkKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0
U3RhdGUpOwotICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAg
KmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgU2NyaXB0RGVi
dWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlID0gU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKICAgICBp
ZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggZThl
M2JhYjkzYjkwMjFhN2E1NDgyODdkNTUwODgyMjFjNzJhMWJkNS4uZjhlMzQ1ZTJiN2MxNTdmNjZl
ZDAxZTUzNDE4YTY2OWE2Yjg3NWU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNDAsNiArNDAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
QEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21t
YW5kTGluZUFQSSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyog
ZnJhbWVJZCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElk
LAogICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAg
ICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0LAogICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2Fz
VGhyb3duKTsKQEAgLTg4LDExICs4OSwxMyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRl
KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7Ci0gICAgdmlydHVhbCBTY3JpcHRTdGF0ZSogc2Ny
aXB0U3RhdGVGb3JFdmFsKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKiBmcmFtZUlkKSA9IDA7
CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JT
dHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIG11dGVDb25zb2xlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xl
KCkgPSAwOwogCisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKSB7IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQorCiBwcml2YXRlOgogICAg
IEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAppbmRleCBmNzdlOGNmNjAzM2VhMzEyYjIxZjEwOTE2ZmQxNzFh
MDY2YzU3ZmNhLi4xOTRlYjg2NWVjNzVhNjZmZWZiNGI3MjQ2ZjAwOGE4MzhhODhhYWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTUz
LDYgKzUzLDcgQEAgY2xhc3MgSW5zcGVjdG9yUnVudGltZUFnZW50OwogY2xhc3MgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDsKIGNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50OwogY2xhc3MgUGFnZTsK
K2NsYXNzIFBhZ2VSdW50aW1lQWdlbnQ7CiBjbGFzcyBXb3JrZXJDb250ZXh0OwogCiBjbGFzcyBJ
bnN0cnVtZW50aW5nQWdlbnRzIHsKQEAgLTY3LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICAs
IG1faW5zcGVjdG9yRE9NQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvclJlc291cmNlQWdl
bnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvclJ1bnRpbWVBZ2VudCgwKQorICAgICAgICAsIG1f
cGFnZVJ1bnRpbWVBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yVGltZWxpbmVBZ2VudCgw
KQogICAgICAgICAsIG1faW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KDApCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKQEAgLTEwOCw2ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yUnVu
dGltZUFnZW50KiBpbnNwZWN0b3JSdW50aW1lQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3RvclJ1bnRpbWVBZ2VudDsgfQogICAgIHZvaWQgc2V0SW5zcGVjdG9yUnVudGltZUFnZW50KElu
c3BlY3RvclJ1bnRpbWVBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JSdW50aW1lQWdlbnQgPSBh
Z2VudDsgfQogCisgICAgUGFnZVJ1bnRpbWVBZ2VudCogcGFnZVJ1bnRpbWVBZ2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZVJ1bnRpbWVBZ2VudDsgfQorICAgIHZvaWQgc2V0UGFnZVJ1bnRpbWVB
Z2VudChQYWdlUnVudGltZUFnZW50KiBhZ2VudCkgeyBtX3BhZ2VSdW50aW1lQWdlbnQgPSBhZ2Vu
dDsgfQorCiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yVGltZWxpbmVBZ2VudDsgfQogICAgIHZvaWQg
c2V0SW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBhZ2VudCkg
eyBtX2luc3BlY3RvclRpbWVsaW5lQWdlbnQgPSBhZ2VudDsgfQogCkBAIC0xNTAsNiArMTU1LDcg
QEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2VudDsK
ICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7CiAg
ICAgSW5zcGVjdG9yUnVudGltZUFnZW50KiBtX2luc3BlY3RvclJ1bnRpbWVBZ2VudDsKKyAgICBQ
YWdlUnVudGltZUFnZW50KiBtX3BhZ2VSdW50aW1lQWdlbnQ7CiAgICAgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogbV9pbnNwZWN0b3JUaW1lbGluZUFnZW50OwogICAgIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudCogbV9pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcApp
bmRleCBjYWExZWQ5ZGUzOTQ5OGJkYWMwMjUxMjk4MzcxYzM2YzAwNTE5M2RiLi40ZTlmMjFhNDVl
NjJmNjJhYmZkMjk3MDU1NmI0MDY0YTZkYzBlMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC0zNSwxNiArMzUsMjggQEAKICNpbmNsdWRl
ICJQYWdlUnVudGltZUFnZW50LmgiCiAKICNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisKK3VzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpSdW50aW1l
OjpFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb247CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
bmFtZXNwYWNlIFBhZ2VSdW50aW1lQWdlbnRTdGF0ZSB7CitzdGF0aWMgY29uc3QgY2hhciByZXBv
cnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb25bXSA9ICJyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3Jl
YXRpb24iOworfTsKKwogUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUs
IEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBQYWdlKiBwYWdl
LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVB
Z2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQog
ICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdlQWdlbnQp
CisgICAgLCBtX2Zyb250ZW5kKDApCiB7CiB9CiAKQEAgLTUyLDE3ICs2NCw3OCBAQCBQYWdlUnVu
dGltZUFnZW50Ojp+UGFnZVJ1bnRpbWVBZ2VudCgpCiB7CiB9CiAKLVNjcmlwdFN0YXRlKiBQYWdl
UnVudGltZUFnZW50OjpzY3JpcHRTdGF0ZUZvckV2YWwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcqIGZyYW1lSWQpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnNldEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBtX2Zyb250ZW5kID0gZnJv
bnRlbmQtPnJ1bnRpbWUoKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VSdW50
aW1lQWdlbnQodGhpcyk7Cit9CisKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6Y2xlYXJGcm9udGVu
ZCgpCit7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGltZUFnZW50KDAp
OworICAgIG1fZnJvbnRlbmQgPSAwOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZVJ1bnRp
bWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24sIGZhbHNlKTsKK30K
Kwordm9pZCBQYWdlUnVudGltZUFnZW50OjpyZXN0b3JlKCkKK3sKKyAgICBpZiAoIW1fc3RhdGUt
PmdldEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25Db250ZXh0
Q3JlYXRpb24pKQorICAgICAgICByZXR1cm47CisgICAgU3RyaW5nIGVycm9yOworICAgIHNldFJl
cG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigmZXJyb3IsIHRydWUpOworfQorCit2b2lkIFBh
Z2VSdW50aW1lQWdlbnQ6OnNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbihFcnJvclN0
cmluZyosIGJvb2wgZW5hYmxlKQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZVJ1bnRp
bWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24sIGVuYWJsZSk7Cisg
ICAgaWYgKCFlbmFibGUpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFNj
cmlwdFN0YXRlKiwgU2VjdXJpdHlPcmlnaW4qPiA+IGlzb2xhdGVkQ29udGV4dHM7CisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoIWZyYW1l
LT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdl
bnQtPmZyYW1lSWQoZnJhbWUpOworCisgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9
IG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsKKyAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0
ZWQoZnJhbWVJZCwgc2NyaXB0U3RhdGUsIDAsIHRydWUpOworICAgICAgICBmcmFtZS0+c2NyaXB0
KCktPmNvbGxlY3RJc29sYXRlZENvbnRleHRzKGlzb2xhdGVkQ29udGV4dHMpOworICAgICAgICBp
ZiAoaXNvbGF0ZWRDb250ZXh0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGk8IGlzb2xhdGVkQ29udGV4dHMuc2l6ZSgpOyBpKysp
CisgICAgICAgICAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBpc29sYXRlZENvbnRl
eHRzW2ldLmZpcnN0LCBpc29sYXRlZENvbnRleHRzW2ldLnNlY29uZCwgZmFsc2UpOworICAgICAg
ICBpc29sYXRlZENvbnRleHRzLmNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFBhZ2VSdW50aW1l
QWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIW1f
c3RhdGUtPmdldEJvb2xlYW4oUGFnZVJ1bnRpbWVBZ2VudFN0YXRlOjpyZXBvcnRFeGVjdXRpb25D
b250ZXh0Q3JlYXRpb24pKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fZnJvbnRlbmQp
OworICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOworICAg
IFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZFNjcmlwdFN0YXRlKGZyYW1lKTsK
KyAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBzY3JpcHRTdGF0ZSwgMCwgdHJ1ZSk7
Cit9CisKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZy
YW1lKiBmcmFtZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogewotICAgIGlmICghZnJhbWVJZCkKLSAgICAgICAgcmV0dXJuIG1haW5Xb3JsZFNjcmlw
dFN0YXRlKG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGlmICghbV9zdGF0ZS0+
Z2V0Qm9vbGVhbihQYWdlUnVudGltZUFnZW50U3RhdGU6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbikpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9mcm9udGVuZCk7CisgICAg
U3RyaW5nIGZyYW1lSWQgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CisgICAgbm90aWZ5
Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgc2NyaXB0U3RhdGUsIG9yaWdpbiwgZmFsc2UpOworfQog
Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZyYW1lRm9ySWQoKmZyYW1lSWQpOwot
ICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkZyYW1lIHdpdGggZ2l2
ZW4gaWQgbm90IGZvdW5kLiI7Ci0gICAgICAgIHJldHVybiAwOworSW5qZWN0ZWRTY3JpcHQgUGFn
ZVJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCit7CisgICAgaWYgKCFleGVjdXRp
b25Db250ZXh0SWQpIHsKKyAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldv
cmxkU2NyaXB0U3RhdGUobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSk7CisgICAgICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3Rh
dGUpOwogICAgIH0KLSAgICByZXR1cm4gbWFpbldvcmxkU2NyaXB0U3RhdGUoZnJhbWUpOworICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkt
PmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJZCk7CisgICAgaWYgKGluamVj
dGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkV4ZWN1dGlv
biBjb250ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kLiI7CisgICAgcmV0dXJuIGluamVjdGVk
U2NyaXB0OwogfQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Om11dGVDb25zb2xlKCkKQEAgLTc1
LDYgKzE0OCwxOSBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnVubXV0ZUNvbnNvbGUoKQogICAg
IENvbnNvbGU6OnVubXV0ZSgpOwogfQogCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6Om5vdGlmeUNv
bnRleHRDcmVhdGVkKGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgaXNQYWdlQ29udGV4dCkK
K3sKKyAgICBBU1NFUlQoc2VjdXJpdHlPcmlnaW4gfHwgaXNQYWdlQ29udGV4dCk7CisgICAgbG9u
ZyBleGVjdXRpb25Db250ZXh0SWQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRT
Y3JpcHRJZEZvcihzY3JpcHRTdGF0ZSk7CisgICAgU3RyaW5nIG5hbWUgPSBzZWN1cml0eU9yaWdp
biA/IHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpIDogIiI7CisgICAgbV9mcm9udGVuZC0+aXNv
bGF0ZWRDb250ZXh0Q3JlYXRlZChFeGVjdXRpb25Db250ZXh0RGVzY3JpcHRpb246OmNyZWF0ZSgp
CisgICAgICAgIC5zZXRJZChleGVjdXRpb25Db250ZXh0SWQpCisgICAgICAgIC5zZXRJc1BhZ2VD
b250ZXh0KGlzUGFnZUNvbnRleHQpCisgICAgICAgIC5zZXROYW1lKG5hbWUpCisgICAgICAgIC5z
ZXRGcmFtZUlkKGZyYW1lSWQpCisgICAgICAgIC5yZWxlYXNlKCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggZTgwNmVkM2QzMTI5MGY1MWM2
MTViODY0ODg3NTU3NGNlMTA4NDM3MC4uNDgzMjE3ZjQ0ZWRkN2YyNDNiOGUyMDY5MjFmOWJkZjc5
YWMyNzczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1l
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5o
CkBAIC0zMywxMyArMzMsMTYgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKKyNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJ1bnRpbWVBZ2VudC5o
IgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFz
cyBQYWdlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFBhZ2VSdW50aW1lQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKQEAgLTQ4LDE1ICs1MSwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGFnZVJ1bnRpbWVBZ2Vu
dChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBwYWdl
LCBwYWdlQWdlbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVBZ2VudCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKEVycm9y
U3RyaW5nKiwgYm9vbCk7CisKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0KEZyYW1lKik7
CisgICAgdm9pZCBkaWRDcmVhdGVJc29sYXRlZENvbnRleHQoRnJhbWUqLCBTY3JpcHRTdGF0ZSos
IFNlY3VyaXR5T3JpZ2luKik7CiAKIHByaXZhdGU6CiAgICAgUGFnZVJ1bnRpbWVBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
LCBQYWdlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAKLSAgICB2aXJ0dWFsIFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZUZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqIGZyYW1lSWQp
OworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9y
U3RyaW5nKiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpOwogICAgIHZpcnR1YWwgdm9p
ZCBtdXRlQ29uc29sZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCk7CisgICAg
dm9pZCBub3RpZnlDb250ZXh0Q3JlYXRlZChjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFNjcmlwdFN0
YXRlKiwgU2VjdXJpdHlPcmlnaW4qLCBib29sIGlzUGFnZUNvbnRleHQpOworCiAgICAgUGFnZSog
bV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Cisg
ICAgSW5zcGVjdG9yRnJvbnRlbmQ6OlJ1bnRpbWUqIG1fZnJvbnRlbmQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuY3BwCmluZGV4IDFkODJlNTlhYzQ3ZDNhZjZmZDhlNWVmOWJmZDk1MDg4NTUyMDdi
NzUuLjMwYzA3NzAwMWFmOTI2NmVkYjhlMGNhYWQ0MmM5M2Q3MzczMTI2NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAorI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDgsMTMgKzQ5LDE5IEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6fldvcmtlclJ1
bnRpbWVBZ2VudCgpCiB7CiB9CiAKLVNjcmlwdFN0YXRlKiBXb3JrZXJSdW50aW1lQWdlbnQ6OnNj
cmlwdFN0YXRlRm9yRXZhbChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyogZnJhbWVJ
ZCkKK3ZvaWQgV29ya2VyUnVudGltZUFnZW50OjpzZXRSZXBvcnRFeGVjdXRpb25Db250ZXh0Q3Jl
YXRpb24oRXJyb3JTdHJpbmcqIGVycm9yLCBib29sKQogewotICAgIGlmIChmcmFtZUlkKSB7Ci0g
ICAgICAgICplcnJvciA9ICJGcmFtZSBpZCBpcyBub3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzLiI7
Ci0gICAgICAgIHJldHVybiAwOworICAgICplcnJvciA9ICJJc29sYXRlZCBjb250ZXh0cyBhcmUg
bm90IHN1cHBvcnRlZCBmb3Igd29ya2Vycy4iOworfQorCitJbmplY3RlZFNjcmlwdCBXb3JrZXJS
dW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3IsIGNv
bnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQoreworICAgIGlmIChleGVjdXRpb25Db250ZXh0
SWQpIHsKKyAgICAgICAgKmVycm9yID0gIkV4ZWN1dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBzdXBw
b3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQu
IjsKKyAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQotICAgIHJldHVybiBz
Y3JpcHRTdGF0ZUZyb21Xb3JrZXJDb250ZXh0KG1fd29ya2VyQ29udGV4dCk7CisgICAgU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGVGcm9tV29ya2VyQ29udGV4dChtX3dvcmtl
ckNvbnRleHQpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRT
Y3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogfQogCiB2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6bXV0
ZUNvbnNvbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1
bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5oCmluZGV4IDI0ZjU2YWYyMDAwNTY4NDQ0MmQ4YTBlYTZkYWIxZDQ4NDNlMDRmNzEuLjYzMTEw
OTNiZjYzZDE2MzZhM2ZhMzY4YzY2ZDBkZTM2ZWJkZDgyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTQ3LDEwICs0NywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyUnVudGltZUFnZW50KGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGNvbnRleHQpKTsK
ICAgICB9CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGltZUFnZW50KCk7CisgICAgdmlydHVhbCB2
b2lkIHNldFJlcG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbihFcnJvclN0cmluZyosIGJvb2wp
OwogCiBwcml2YXRlOgogICAgIFdvcmtlclJ1bnRpbWVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBXb3JrZXJDb250ZXh0
Kik7Ci0gICAgdmlydHVhbCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGVGb3JFdmFsKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nKiBmcmFtZUlkKTsKKyAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyosIGNvbnN0IGludCogZXhlY3V0aW9u
Q29udGV4dElkKTsKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgdW5tdXRlQ29uc29sZSgpOwogICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29udGV4
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29s
ZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzCmluZGV4IDA4NDc2ODA1YjQ0MDE2ZjA4YmQ2ODUwZmUxYjgwMTBhMWYzNGRiNWYuLjA1NThj
M2NkMmI4NTYyNDM0ZGNlMGI1NjEyYWNjYTAxN2QzMWNlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtNDcsOSArNDcsMTYg
QEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3ID0gZnVuY3Rpb24oaGlkZUNvbnRleHRTZWxlY3Rv
cikKICAgICB0aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNlbGVjdCIpOwogICAgIHRoaXMuX2NvbnRleHRTZWxlY3RFbGVtZW50LmlkID0gImNvbnNv
bGUtY29udGV4dCI7CiAgICAgdGhpcy5fY29udGV4dFNlbGVjdEVsZW1lbnQuY2xhc3NOYW1lID0g
InN0YXR1cy1iYXItaXRlbSI7CisgICAgdGhpcy5fY29udGV4dFNlbGVjdEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fdXBkYXRlSXNvbGF0ZWRXb3JsZFNlbGVjdG9yLmJp
bmQodGhpcyksIGZhbHNlKTsKIAotICAgIGlmIChoaWRlQ29udGV4dFNlbGVjdG9yKQorICAgIHRo
aXMuX2lzb2xhdGVkV29ybGRTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c2VsZWN0Iik7CisgICAgdGhpcy5faXNvbGF0ZWRXb3JsZFNlbGVjdEVsZW1lbnQuaWQgPSAiY29u
c29sZS1jb250ZXh0IjsKKyAgICB0aGlzLl9pc29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudC5jbGFz
c05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKKworICAgIGlmIChoaWRlQ29udGV4dFNlbGVjdG9y
KSB7CiAgICAgICAgIHRoaXMuX2NvbnRleHRTZWxlY3RFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhp
ZGRlbiIpOworICAgICAgICB0aGlzLl9pc29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJoaWRkZW4iKTsKKyAgICB9CiAKICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMubWVzc2FnZXNFbGVtZW50Lmlk
ID0gImNvbnNvbGUtbWVzc2FnZXMiOwpAQCAtMTI3LDcgKzEzNCw3IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlVmlldy5FdmVudHMgPSB7CiBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBl
ID0gewogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewotICAgICAgICByZXR1cm4gW3Ro
aXMuX2NsZWFyQ29uc29sZUJ1dHRvbi5lbGVtZW50LCB0aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVu
dCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudF07CisgICAgICAgIHJldHVybiBbdGhpcy5fY2xlYXJD
b25zb2xlQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2NvbnRleHRTZWxlY3RFbGVtZW50LCB0aGlzLl9p
c29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudCwgdGhpcy5fZmlsdGVyQmFyRWxlbWVudF07CiAgICAg
fSwKIAogICAgIGFkZENvbnRleHQ6IGZ1bmN0aW9uKGNvbnRleHQpCkBAIC0xMzksMjYgKzE0Niw4
NyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBjb250
ZXh0Ll9jb25zb2xlT3B0aW9uID0gb3B0aW9uOwogICAgICAgICB0aGlzLl9jb250ZXh0U2VsZWN0
RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOwogICAgICAgICBjb250ZXh0LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQuRXZlbnRUeXBlcy5VcGRh
dGVkLCB0aGlzLl9jb250ZXh0VXBkYXRlZCwgdGhpcyk7CisgICAgICAgIGNvbnRleHQuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVFdmFsdWF0aW9uQ29udGV4dC5FdmVudFR5cGVz
LkFkZGVkRXhlY3V0aW9uQ29udGV4dCwgdGhpcy5fYWRkZWRFeGVjdXRpb25Db250ZXh0LCB0aGlz
KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlSXNvbGF0ZWRXb3JsZFNlbGVjdG9yKCk7CiAgICAgfSwK
IAogICAgIHJlbW92ZUNvbnRleHQ6IGZ1bmN0aW9uKGNvbnRleHQpCiAgICAgewogICAgICAgICB0
aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZChjb250ZXh0Ll9jb25zb2xlT3B0
aW9uKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlSXNvbGF0ZWRXb3JsZFNlbGVjdG9yKCk7CisgICAg
fSwKKworICAgIF91cGRhdGVJc29sYXRlZFdvcmxkU2VsZWN0b3I6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5fY3VycmVudEV2YWx1YXRpb25Db250ZXh0KCk7
CisgICAgICAgIGlmICghY29udGV4dCkgeworICAgICAgICAgICAgdGhpcy5faXNvbGF0ZWRXb3Js
ZFNlbGVjdEVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgaXNvbGF0ZWRDb250ZXh0cyA9IGNvbnRleHQu
aXNvbGF0ZWRDb250ZXh0cygpOworICAgICAgICBpZiAoIWlzb2xhdGVkQ29udGV4dHMubGVuZ3Ro
KSB7CisgICAgICAgICAgICB0aGlzLl9pc29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICB0aGlzLl9pc29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRk
ZW4iKTsKKyAgICAgICAgdGhpcy5faXNvbGF0ZWRXb3JsZFNlbGVjdEVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKKyAgICAgICAgdGhpcy5fYXBwZW5kSXNvbGF0ZWRDb250ZXh0T3B0aW9uKGNvbnRl
eHQubWFpbldvcmxkQ29udGV4dCgpKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpc29s
YXRlZENvbnRleHRzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgdGhpcy5fYXBwZW5kSXNvbGF0
ZWRDb250ZXh0T3B0aW9uKGlzb2xhdGVkQ29udGV4dHNbaV0pOworICAgIH0sCisKKyAgICBfYXBw
ZW5kSXNvbGF0ZWRDb250ZXh0T3B0aW9uOiBmdW5jdGlvbihpc29sYXRlZENvbnRleHQpCisgICAg
eworICAgICAgICBpZiAoIWlzb2xhdGVkQ29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAg
ICAgICBvcHRpb24udGV4dCA9IGlzb2xhdGVkQ29udGV4dC5uYW1lOworICAgICAgICBvcHRpb24u
dGl0bGUgPSBpc29sYXRlZENvbnRleHQuaWQ7CisgICAgICAgIG9wdGlvbi5fZXhlY3V0aW9uQ29u
dGV4dElkID0gaXNvbGF0ZWRDb250ZXh0LmlkOworICAgICAgICB0aGlzLl9pc29sYXRlZFdvcmxk
U2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOwogICAgIH0sCiAKICAgICBfY29udGV4
dFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRleHQgPSBl
dmVudC5kYXRhOwotICAgICAgICB2YXIgb3B0aW9uPSBjb250ZXh0Ll9jb25zb2xlT3B0aW9uOwor
ICAgICAgICB2YXIgb3B0aW9uID0gY29udGV4dC5fY29uc29sZU9wdGlvbjsKICAgICAgICAgb3B0
aW9uLnRleHQgPSBjb250ZXh0LmRpc3BsYXlOYW1lOwogICAgICAgICBvcHRpb24udGl0bGUgPSBj
b250ZXh0LnVybDsKICAgICB9LAogCisgICAgX2FkZGVkRXhlY3V0aW9uQ29udGV4dDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgY29udGV4dCA9IGV2ZW50LmRhdGE7CisgICAg
ICAgIGlmIChjb250ZXh0ID09PSB0aGlzLl9jdXJyZW50RXZhbHVhdGlvbkNvbnRleHQoKSkKKyAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUlzb2xhdGVkV29ybGRTZWxlY3RvcigpOworICAgIH0sCisK
ICAgICBfY3VycmVudEV2YWx1YXRpb25Db250ZXh0SWQ6IGZ1bmN0aW9uKCkKICAgICB7CisgICAg
ICAgIHZhciByZXN1bHQgPSB0aGlzLl9jdXJyZW50SXNvbGF0ZWRDb250ZXh0SWQoKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9jdXJyZW50RXZhbHVhdGlvbkNvbnRleHQoKTsK
KyAgICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5tYWluV29ybGRDb250ZXh0KCkpCisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5tYWluV29ybGRDb250ZXh0KCkuaWQ7CisgICAgICAgIHJl
dHVybiB1bmRlZmluZWQ7CisgICAgfSwKKworICAgIF9jdXJyZW50RXZhbHVhdGlvbkNvbnRleHQ6
IGZ1bmN0aW9uKCkKKyAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVu
dC5zZWxlY3RlZEluZGV4ID09PSAtMSkKICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0U2VsZWN0RWxlbWVudFt0aGlzLl9jb250ZXh0U2Vs
ZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS5fY29udGV4dC5mcmFtZUlkOworICAgICAgICByZXR1
cm4gdGhpcy5fY29udGV4dFNlbGVjdEVsZW1lbnRbdGhpcy5fY29udGV4dFNlbGVjdEVsZW1lbnQu
c2VsZWN0ZWRJbmRleF0uX2NvbnRleHQ7CisgICAgfSwKKworICAgIF9jdXJyZW50SXNvbGF0ZWRD
b250ZXh0SWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9pc29sYXRlZFdv
cmxkU2VsZWN0RWxlbWVudC5oYXNTdHlsZUNsYXNzKCJoaWRkZW4iKSkKKyAgICAgICAgICAgIHJl
dHVybiB1bmRlZmluZWQ7CisgICAgICAgIGlmICh0aGlzLl9pc29sYXRlZFdvcmxkU2VsZWN0RWxl
bWVudC5zZWxlY3RlZEluZGV4ID09PSAtMSkKKyAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7
CisgICAgICAgIHJldHVybiB0aGlzLl9pc29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudFt0aGlzLl9p
c29sYXRlZFdvcmxkU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS5fZXhlY3V0aW9uQ29udGV4
dElkOwogICAgIH0sCiAKICAgICBfdXBkYXRlRmlsdGVyOiBmdW5jdGlvbihlKQpAQCAtNjIwLDcg
KzY4OCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5mcm9tUGF5bG9hZChyZXN1bHQpLCAhIXdhc1Rocm93bik7CiAgICAgICAgIH0KLSAgICAg
ICAgUnVudGltZUFnZW50LmV2YWx1YXRlKGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRl
Q29tbWFuZExpbmVBUEksIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgdGhp
cy5fY3VycmVudEV2YWx1YXRpb25Db250ZXh0SWQoKSwgcmV0dXJuQnlWYWx1ZSwgZXZhbENhbGxi
YWNrKTsKKyAgICAgICAgdmFyIGNvbnRleHRJZCA9IHRoaXMuX2N1cnJlbnRFdmFsdWF0aW9uQ29u
dGV4dElkKCk7CisgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmpl
Y3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIGNvbnRleHRJZCwgcmV0dXJuQnlWYWx1ZSwgZXZhbENhbGxiYWNrKTsKICAg
ICB9LAogCiAgICAgZXZhbHVhdGVVc2luZ1RleHRQcm9tcHQ6IGZ1bmN0aW9uKGV4cHJlc3Npb24s
IHNob3dSZXN1bHRPbmx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRDb250ZXh0TWFuYWdlci5qcwppbmRleCBjODE4ZGVi
Yzg1N2FkNGQzM2E4N2I1ZWZkMjM5ZmRhZjUwYmQ5ZWU4Li5kYTI3MWRhOTgyMmM1NmQ3YjdjZmU3
MmI5YjBkYzhhY2E0MjNhMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0phdmFTY3JpcHRDb250ZXh0TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRDb250ZXh0TWFuYWdlci5qcwpAQCAtMzcs
NiArMzcsNyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdENvbnRleHRNYW5hZ2VyID0gZnVuY3Rp
b24ocmVzb3VyY2VUcmVlTW9kZWwsIGNvbnNvbGVWaWV3KQogICAgIHJlc291cmNlVHJlZU1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlw
ZXMuRnJhbWVBZGRlZCwgdGhpcy5fZnJhbWVBZGRlZCwgdGhpcyk7CiAgICAgcmVzb3VyY2VUcmVl
TW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZl
bnRUeXBlcy5GcmFtZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZpZ2F0ZWQsIHRoaXMpOwogICAg
IHJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsLkV2ZW50VHlwZXMuRnJhbWVEZXRhY2hlZCwgdGhpcy5fZnJhbWVEZXRhY2hlZCwg
dGhpcyk7CisgICAgcmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5DYWNoZWRSZXNvdXJjZXNMb2FkZWQsIHRo
aXMuX2RpZExvYWRDYWNoZWRSZXNvdXJjZXMsIHRoaXMpOwogICAgIHRoaXMuX2NvbnNvbGVWaWV3
ID0gY29uc29sZVZpZXc7CiAgICAgdGhpcy5fZnJhbWVJZFRvQ29udGV4dCA9IHt9OwogfQpAQCAt
NjcsMTAgKzY4LDY4IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0Q29udGV4dE1hbmFnZXIucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9jb25zb2xlVmlldy5yZW1vdmVDb250ZXh0KGNvbnRl
eHQpOwogICAgICAgICBkZWxldGUgdGhpcy5fZnJhbWVJZFRvQ29udGV4dFtmcmFtZS5pZF07CiAg
ICAgfSwKKworICAgIF9kaWRMb2FkQ2FjaGVkUmVzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyUnVudGltZURpc3BhdGNoZXIobmV3IFdl
Ykluc3BlY3Rvci5SdW50aW1lRGlzcGF0Y2hlcih0aGlzKSk7CisgICAgICAgIFJ1bnRpbWVBZ2Vu
dC5zZXRSZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24odHJ1ZSk7CisgICAgfSwKKworICAg
IGlzb2xhdGVkQ29udGV4dENyZWF0ZWQ6IGZ1bmN0aW9uKGNvbnRleHQpCisgICAgeworICAgICAg
ICB2YXIgZnJhbWVFdmFsdWF0aW9uQ29udGV4dCA9IHRoaXMuX2ZyYW1lSWRUb0NvbnRleHRbY29u
dGV4dC5mcmFtZUlkXTsKKyAgICAgICAgLy8gRklYTUUoODU3MDgpOiB0aGlzIHNob3VsZCBuZXZl
ciBoYXBwZW4KKyAgICAgICAgaWYgKCFmcmFtZUV2YWx1YXRpb25Db250ZXh0KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBmcmFtZUV2YWx1YXRpb25Db250ZXh0Ll9hZGRFeGVjdXRpb25D
b250ZXh0KG5ldyBXZWJJbnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dChjb250ZXh0LmlkLCBjb250
ZXh0Lm5hbWUsIGNvbnRleHQuaXNQYWdlQ29udGV4dCkpOworICAgIH0KIH0KIAogV2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRDb250ZXh0TWFuYWdlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CiAKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBp
bXBsZW1lbnRzIHtSdW50aW1lQWdlbnQuRGlzcGF0Y2hlcn0KKyAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkphdmFTY3JpcHRDb250ZXh0TWFuYWdlcn0gY29udGV4dE1hbmFnZXIKKyAqLworV2ViSW5z
cGVjdG9yLlJ1bnRpbWVEaXNwYXRjaGVyID0gZnVuY3Rpb24oY29udGV4dE1hbmFnZXIpCit7Cisg
ICAgdGhpcy5fY29udGV4dE1hbmFnZXIgPSBjb250ZXh0TWFuYWdlcjsKK30KKworV2ViSW5zcGVj
dG9yLlJ1bnRpbWVEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKKyAgICBpc29sYXRlZENvbnRleHRD
cmVhdGVkOiBmdW5jdGlvbihjb250ZXh0KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGV4dE1h
bmFnZXIuaXNvbGF0ZWRDb250ZXh0Q3JlYXRlZChjb250ZXh0KTsKKyAgICB9Cit9CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqLwor
V2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQgPSBmdW5jdGlvbihpZCwgbmFtZSwgaXNQYWdl
Q29udGV4dCkKK3sKKyAgICB0aGlzLmlkID0gaWQ7CisgICAgdGhpcy5uYW1lID0gKGlzUGFnZUNv
bnRleHQgJiYgIW5hbWUpID8gIjxwYWdlIGNvbnRleHQ+IiA6IG5hbWU7CisgICAgdGhpcy5pc01h
aW5Xb3JsZENvbnRleHQgPSBpc1BhZ2VDb250ZXh0OworfQorCisvKioKKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHR9IGEKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV4
ZWN1dGlvbkNvbnRleHR9IGIKKyAqLworV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQuY29t
cGFyYXRvciA9IGZ1bmN0aW9uKGEsIGIpCit7CisgICAgLy8gTWFpbiB3b3JsZCBjb250ZXh0IHNo
b3VsZCBhbHdheXMgZ28gZmlyc3QuCisgICAgaWYgKGEuaXNNYWluV29ybGRDb250ZXh0KQorICAg
ICAgICByZXR1cm4gLTE7CisgICAgaWYgKGIuaXNNYWluV29ybGRDb250ZXh0KQorICAgICAgICBy
ZXR1cm4gKzE7CisgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7Cit9CisK
IC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0K
QEAgLTc4LDEwICsxMzcsMTMgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRDb250ZXh0TWFuYWdl
ci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC4KIFdlYkluc3BlY3Rv
ci5GcmFtZUV2YWx1YXRpb25Db250ZXh0ID0gZnVuY3Rpb24oZnJhbWUpCiB7CiAgICAgdGhpcy5f
ZnJhbWUgPSBmcmFtZTsKKyAgICB0aGlzLl9tYWluV29ybGRDb250ZXh0ID0gbnVsbDsKKyAgICB0
aGlzLl9pc29sYXRlZENvbnRleHRzID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5GcmFtZUV2YWx1
YXRpb25Db250ZXh0LkV2ZW50VHlwZXMgPSB7Ci0gICAgVXBkYXRlZDogInVwZGF0ZWQiCisgICAg
VXBkYXRlZDogIlVwZGF0ZWQiLAorICAgIEFkZGVkRXhlY3V0aW9uQ29udGV4dDogIkFkZGVkRXhl
Y3V0aW9uQ29udGV4dCIKIH0KIAogV2ViSW5zcGVjdG9yLkZyYW1lRXZhbHVhdGlvbkNvbnRleHQu
cHJvdG90eXBlID0KQEAgLTg5LDkgKzE1MSwzNSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVFdmFsdWF0
aW9uQ29udGV4dC5wcm90b3R5cGUgPQogICAgIF9mcmFtZU5hdmlnYXRlZDogZnVuY3Rpb24oZnJh
bWUpCiAgICAgewogICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOworICAgICAgICB0aGlzLl9t
YWluV29ybGRDb250ZXh0ID0gbnVsbDsKKyAgICAgICAgdGhpcy5faXNvbGF0ZWRDb250ZXh0cyA9
IFtdOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RnJhbWVFdmFsdWF0aW9uQ29udGV4dC5FdmVudFR5cGVzLlVwZGF0ZWQsIHRoaXMpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0
fSBjb250ZXh0CisgICAgICovCisgICAgX2FkZEV4ZWN1dGlvbkNvbnRleHQ6IGZ1bmN0aW9uKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoY29udGV4dC5pc01haW5Xb3JsZENvbnRleHQpCisg
ICAgICAgICAgICB0aGlzLl9tYWluV29ybGRDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGhpcy5faXNvbGF0ZWRDb250ZXh0cy5wdXNoKGNvbnRleHQpOworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRnJhbWVFdmFs
dWF0aW9uQ29udGV4dC5FdmVudFR5cGVzLkFkZGVkRXhlY3V0aW9uQ29udGV4dCwgdGhpcyk7Cisg
ICAgfSwKKworICAgIG1haW5Xb3JsZENvbnRleHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9tYWluV29ybGRDb250ZXh0OworICAgIH0sCisKKyAgICBpc29sYXRlZENv
bnRleHRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5faXNvbGF0ZWRDb250
ZXh0cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9pc29sYXRlZENvbnRleHRzLnNvcnQoV2Vi
SW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQuY29tcGFyYXRvcik7CisgICAgICAgIHJldHVybiB0
aGlzLl9pc29sYXRlZENvbnRleHRzOworICAgIH0sCisKICAgICBnZXQgZnJhbWVJZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWUuaWQ7Cg==
</data>
<flag name="review"
          id="146242"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>