<?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>105258</bug_id>
          
          <creation_ts>2012-12-17 23:40:57 -0800</creation_ts>
          <short_desc>Web Inspector: Implement the &quot;disabled&quot; attribute toggling for CSS stylesheets</short_desc>
          <delta_ts>2014-04-10 07:50:14 -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>LATER</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>105828</dependson>
          <blocked>116924</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>burg</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793406</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-17 23:40:57 -0800</bug_when>
    <thetext>Upstreaming https://code.google.com/p/chromium/issues/detail?id=155476.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793449</commentid>
    <comment_count>1</comment_count>
      <attachid>179899</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-18 01:19:01 -0800</bug_when>
    <thetext>Created attachment 179899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793981</commentid>
    <comment_count>2</comment_count>
      <attachid>179899</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-18 13:16:55 -0800</bug_when>
    <thetext>Comment on attachment 179899
Patch

Attachment 179899 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15402334

New failing tests:
http/tests/inspector/resource-har-pages.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797845</commentid>
    <comment_count>3</comment_count>
      <attachid>180861</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-28 03:59:15 -0800</bug_when>
    <thetext>Created attachment 180861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797850</commentid>
    <comment_count>4</comment_count>
      <attachid>180861</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-28 04:49:56 -0800</bug_when>
    <thetext>Comment on attachment 180861
Patch

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

&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1071
&gt; +                            return &quot;%s%s&quot; % (helper.full_name_prefix_for_use, fixed_type_name.class_name)

Why did this change? What is the diff between the old generated and new generated code?

&gt; Source/WebCore/inspector/Inspector.json:2364
&gt; +                    { &quot;name&quot;: &quot;header&quot;, &quot;$ref&quot;: &quot;CSSStyleSheetHeader&quot;, &quot;description&quot;: &quot;Updated stylesheet header.&quot; }

Why do we need this?

&gt; Source/WebCore/inspector/Inspector.json:2482
&gt; +                &quot;name&quot;: &quot;activeStyleSheetsUpdated&quot;,

I think you should have styleSheetAdded / styleSheetRemoved notifications instead.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:360
&gt; +    SetStyleSheetDisabledAction(InspectorStyleSheet* styleSheet, bool disabled)

I think you should split stylesheet disable and stylesheet tracking changes.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:618
&gt; +    if (m_styleSheetHeadersRequested &amp;&amp; m_state-&gt;getBoolean(CSSAgentState::cssAgentEnabled)) {

m_styleSheetHeadersRequested can&apos;t be true without m_state-&gt;getBoolean(CSSAgentState::cssAgentEnabled) being true.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:724
&gt; +            removedSheets.remove(newCSSSheet);

i.e. just dispatch them here.

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:377
&gt; +            this._resourceBinding._styleSheetIdToHeader[styleSheetId] = newHeader;

just patch it here.

&gt; Source/WebCore/inspector/front-end/StylesSourceMapping.js:242
&gt; +        setText.call(this);

You should not make content setting asynchronous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797858</commentid>
    <comment_count>5</comment_count>
      <attachid>180861</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-12-28 05:18:44 -0800</bug_when>
    <thetext>Comment on attachment 180861
Patch

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

&gt;&gt; Source/WebCore/inspector/CodeGeneratorInspector.py:1071
&gt;&gt; +                            return &quot;%s%s&quot; % (helper.full_name_prefix_for_use, fixed_type_name.class_name)
&gt; 
&gt; Why did this change? What is the diff between the old generated and new generated code?

&lt;         void activeStyleSheetsUpdated(PassRefPtr&lt;TypeBuilder::Array&lt;const TypeBuilder::CSS::StyleSheetId&amp;&gt; &gt; removed, PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt; &gt; added);
---
&gt;         void activeStyleSheetsUpdated(PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::StyleSheetId&gt; &gt; removed, PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::CSSStyleSheetHeader&gt; &gt; added);

The former is clearly wrong.

&gt;&gt; Source/WebCore/inspector/Inspector.json:2364
&gt;&gt; +                    { &quot;name&quot;: &quot;header&quot;, &quot;$ref&quot;: &quot;CSSStyleSheetHeader&quot;, &quot;description&quot;: &quot;Updated stylesheet header.&quot; }
&gt; 
&gt; Why do we need this?

Will move into the styleSheetChanged event data

&gt;&gt; Source/WebCore/inspector/Inspector.json:2482
&gt;&gt; +                &quot;name&quot;: &quot;activeStyleSheetsUpdated&quot;,
&gt; 
&gt; I think you should have styleSheetAdded / styleSheetRemoved notifications instead.

OK

&gt;&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:360
&gt;&gt; +    SetStyleSheetDisabledAction(InspectorStyleSheet* styleSheet, bool disabled)
&gt; 
&gt; I think you should split stylesheet disable and stylesheet tracking changes.

OK

&gt;&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:618
&gt;&gt; +    if (m_styleSheetHeadersRequested &amp;&amp; m_state-&gt;getBoolean(CSSAgentState::cssAgentEnabled)) {
&gt; 
&gt; m_styleSheetHeadersRequested can&apos;t be true without m_state-&gt;getBoolean(CSSAgentState::cssAgentEnabled) being true.

Agreed on sending styleSheetAdded() for all active stylesheets in enable()

&gt;&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:724
&gt;&gt; +            removedSheets.remove(newCSSSheet);
&gt; 
&gt; i.e. just dispatch them here.

OK

&gt;&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:377
&gt;&gt; +            this._resourceBinding._styleSheetIdToHeader[styleSheetId] = newHeader;
&gt; 
&gt; just patch it here.

We&apos;ll patch it on styleSheetChanged, which will provide us with a CSSStyleSheetHeader

&gt;&gt; Source/WebCore/inspector/front-end/StylesSourceMapping.js:242
&gt;&gt; +        setText.call(this);
&gt; 
&gt; You should not make content setting asynchronous.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999533</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-10 07:50:14 -0700</bug_when>
    <thetext>Not sure we want this feature, closing for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179899</attachid>
            <date>2012-12-18 01:19:01 -0800</date>
            <delta_ts>2012-12-28 03:59:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105258-20121218131617.patch</filename>
            <type>text/plain</type>
            <size>30146</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWEwZWVmODU5Y2RlMDIz
NDI4NmExNjE1YzRhNzc3NGFhYTRjOTEzNS4uMGFlZWZlMzU1MTM5ZWZkYmZkMGQ5N2Q4ZWEzNzIz
YmI0OGM2MzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTEyLTE4ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IHRoZSAiZGlzYWJsZWQiIGF0dHJpYnV0ZSB0b2dnbGluZyBmb3IgQ1NT
IHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDUyNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAtIEZyb250ZW5kIGtlZXBzIHRyYWNrIG9mIGFsbCBhY3RpdmUgc3R5bGVzaGVldHMgZHVy
aW5nIGl0cyBsaWZldGltZS4KKyAgICAgICAgLSBVcG9uIGFjdGl2ZSBzdHlsZXNoZWV0cyB1cGRh
dGUgaW4gV2ViQ29yZSwgdGhlIHN0eWxlc2hlZXQgZGVsdGEgaXMgcHJvdmlkZWQgaW50byB0aGUg
SW5zcGVjdG9yQ1NTQWdlbnQKKyAgICAgICAgYW5kIGZ1cnRoZXIgZG93biBpbnRvIHRoZSBmcm9u
dGVuZC4gVGhlc2UgZGF0YSBhcmUgdXNlZCB0byBjb250cmlidXRlIHRoZSAiRW5hYmxlL0Rpc2Fi
bGUgc3R5bGVzaGVldCIKKyAgICAgICAgY29udGV4dCBtZW51IGl0ZW1zLgorICAgICAgICAtIFRo
ZSBNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCBpcyBmaXJlZCB1cG9uIHRoZSBkaXNhYmxlZCBzdGF0
ZSB0b2dnbGUuCisgICAgICAgIC0gRHJpdmUtYnk6IEZpeCBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnB5IHRvIGNvcnJlY3RseSBnZW5lcmF0ZSBzaWduYXR1cmVzIGZvciBhIHBhcmFtZXRlciB3aG9z
ZSB0eXBlCisgICAgICAgIGlzIHR5cGVkZWYnZWQgU3RyaW5nLgorCisgICAgICAgIFRlc3Q6IGlu
c3BlY3Rvci9zdHlsZXMvZGlzYWJsZS1zdHlsZXNoZWV0Lmh0bWwKKworICAgICAgICAqIEVuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgIFB1c2ggdGhl
IHN0eWxlc2hlZXQgbGlzdCBkZWx0YSBpbnRvIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFR5
cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8uVHlwZWRlZlN0cmluZy5nZXRfYXJy
YXlfaXRlbV9jX3R5cGVfdGV4dCk6CisgICAgICAgIEZpeCBnZW5lcmF0ZWQgUmVmUHRyIHRlbXBs
YXRlIGFyZ3VtZW50LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjogQWRkICJz
ZXRTdHlsZVNoZWV0RGlzYWJsZWQiIGNvbW1hbmQgYW5kICJhY3RpdmVTdHlsZVNoZWV0c1VwZGF0
ZWQiIGV2ZW50LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWN0aXZlU3R5bGVTaGVldHNVcGRh
dGVkKToKKyAgICAgICAgQ29tcHV0ZSB0aGUgYWRkZWQgYW5kIHJlbW92ZWQgc3R5bGVzaGVldHMg
YW5kIHB1c2ggdGhlc2UgZGF0YSBpbnRvIHRoZSBmcm9udGVuZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXREaXNh
YmxlZCk6IFRvZ2dsZSB0aGUgc3R5bGVzaGVldCBkaXNhYmxlZCBzdGF0ZS4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDogTmV3IG1ldGhvZHMgYWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZElt
cGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWN0aXZlU3R5bGVTaGVl
dHNVcGRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXREaXNhYmxlZCk6IElu
dm9rZXMgQ1NTU3R5bGVTaGVldDo6c2V0RGlzYWJsZWQoKS4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90
b3R5cGUuc2V0U3R5bGVTaGVldERpc2FibGVkKTogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX2FjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZCk6Cisg
ICAgICAgIEhhbmRsZXMgdGhlIGV2ZW50IHRvIHVwZGF0ZSB0aGUgYWN0aXZlIHN0eWxlc2hlZXQg
ZGF0YS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VCaW5kaW5n
KTogS2VlcCB0cmFjayBvZiBhbGwgYWN0aXZlIHN0eWxlc2hlZXRzIGluIFdlYkNvcmUuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUu
YXBwZW5kQXBwbGljYWJsZUl0ZW1zKToKKyAgICAgICAgQXBwZW5kcyB0aGUgIkVuYWJsZS9EaXNh
YmxlIHN0eWxlc2hlZXQiIGl0ZW1zIHRvIGNvbnRleHQgbWVudXMgZm9yIFVJU291cmNlQ29kZSB0
YXJnZXRzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRp
bmcucHJvdG90eXBlLl9zZXRIZWFkZXJGb3JTdHlsZVNoZWV0SWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLl9pbnNwZWN0ZWRV
UkxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VC
aW5kaW5nLnByb3RvdHlwZS5fbG9hZFN0eWxlU2hlZXRIZWFkZXJzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5hY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQp
OgorCiAyMDEyLTEyLTE2ICBFdWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZpeCBKUyBjb21waWxlciB3YXJuaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
IGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4
IGU3Zjk2MTAzNWNlZTdkYTlmMTdmM2U1NTIxNjZmNzA5YWE2OTI2NjcuLjZiOGVmYWNmODhjZjNj
ZjAyYTQyMzFhYjgyM2ZkYzVmZDRjZDUxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Fbmds
aXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTE1NCw2ICsxNTQsOCBAQCBsb2NhbGl6
ZWRTdHJpbmdzWyJEaW1lbnNpb25zIl0gPSAiRGltZW5zaW9ucyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJEaXNhYmxlIEJyZWFrcG9pbnQiXSA9ICJEaXNhYmxlIEJyZWFrcG9pbnQiOwogbG9jYWxpemVk
U3RyaW5nc1siRGlzYWJsZSBicmVha3BvaW50Il0gPSAiRGlzYWJsZSBicmVha3BvaW50IjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkRpc2FibGUgY2FjaGUiXSA9ICJEaXNhYmxlIGNhY2hlIjsKK2xvY2Fs
aXplZFN0cmluZ3NbIkRpc2FibGUgU3R5bGVzaGVldCJdID0gIkRpc2FibGUgU3R5bGVzaGVldCI7
Citsb2NhbGl6ZWRTdHJpbmdzWyJEaXNhYmxlIHN0eWxlc2hlZXQiXSA9ICJEaXNhYmxlIHN0eWxl
c2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1siRG9jayB0byBtYWluIHdpbmRvdy4iXSA9ICJEb2Nr
IHRvIG1haW4gd2luZG93LiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEb2N1bWVudCJdID0gIkRvY3Vt
ZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkRvY3VtZW50IENvdW50Il0gPSAiRG9jdW1lbnQgQ291
bnQiOwpAQCAtMTc5LDYgKzE4MSw4IEBAIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBCcmVha3Bv
aW50Il0gPSAiRW5hYmxlIEJyZWFrcG9pbnQiOwogbG9jYWxpemVkU3RyaW5nc1siRW5hYmxlIGJy
ZWFrcG9pbnQiXSA9ICJFbmFibGUgYnJlYWtwb2ludCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFbmFi
bGUgRGVidWdnaW5nIl0gPSAiRW5hYmxlIERlYnVnZ2luZyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJF
bmFibGUgUHJvZmlsaW5nIl0gPSAiRW5hYmxlIFByb2ZpbGluZyI7Citsb2NhbGl6ZWRTdHJpbmdz
WyJFbmFibGUgU3R5bGVzaGVldCJdID0gIkVuYWJsZSBTdHlsZXNoZWV0IjsKK2xvY2FsaXplZFN0
cmluZ3NbIkVuYWJsZSBzdHlsZXNoZWV0Il0gPSAiRW5hYmxlIHN0eWxlc2hlZXQiOwogbG9jYWxp
emVkU3RyaW5nc1siRW5hYmxpbmcgZGVidWdnaW5nIHdpbGwgbWFrZSBzY3JpcHRzIHJ1biBzbG93
ZXIuIl0gPSAiRW5hYmxpbmcgZGVidWdnaW5nIHdpbGwgbWFrZSBzY3JpcHRzIHJ1biBzbG93ZXIu
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsaW5nIHByb2ZpbGluZyB3aWxsIG1ha2Ugc2NyaXB0
cyBydW4gc2xvd2VyLiJdID0gIkVuYWJsaW5nIHByb2ZpbGluZyB3aWxsIG1ha2Ugc2NyaXB0cyBy
dW4gc2xvd2VyLiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFcnJvcnMiXSA9ICJFcnJvcnMiOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3Bw
CmluZGV4IDVlOGU3Y2UyNmM2YjRiYmE3OGY2MGM3MjcxZmUyOTBlYzMxYzVjNzUuLmFmZTg3NzEz
MzNiZjdlODBmYThkYmRkNWYzNDc2MTllOWNhZTExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTQ4Nyw2ICs0ODcs
NyBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxl
U2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgICAgICByZXNldENTU0ZlYXR1cmVGbGFn
cygpOwogICAgIH0KICAgICBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLnN3YXAoYWN0aXZlQ1NT
U3R5bGVTaGVldHMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWN0aXZlU3R5bGVT
aGVldHNVcGRhdGVkKG1fZG9jdW1lbnQsIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdCwg
YWN0aXZlU3R5bGVTaGVldHMpOwogICAgIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdC5z
d2FwKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIG1fdXNlc1JlbVVuaXRzID0gc3R5bGVTaGVl
dHNVc2VSZW1Vbml0cyhtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggZTcwOGQ5
ZTRkOThhY2IxYzZhYTVjYTZjNWEwMGIxZTEyYzdhYTkzMy4uZmJmYzgzN2M4ZGY2ZmIwNmM0NWY1
ZWFkYzdkNTIwNzE2ZjQzZjBjOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTEwNjgsNyArMTA2OCw3IEBAIGNsYXNzIFR5
cGVCaW5kaW5nczoKIAogICAgICAgICAgICAgICAgICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fY190eXBlX3RleHQoY2xzKToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNvbnN0ICVzJXMmIiAlIChoZWxw
ZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfdXNlLCBmaXhlZF90eXBlX25hbWUuY2xhc3NfbmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiVzJXMiICUgKGhlbHBlci5mdWxs
X25hbWVfcHJlZml4X2Zvcl91c2UsIGZpeGVkX3R5cGVfbmFtZS5jbGFzc19uYW1lKQogCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBUeXBlZGVmU3RyaW5nCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBlZWI3NjMxZjgxZDExNjViYWJkOWEyOGRkYmM0ZWU0
NGYyY2FiNDYxLi44ZWQ0MjIyYjAyNDc1MTJhMTY0ZGM5ZGExMDdkNzJhZjBlNTRkNzEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMzQ2LDYgKzIzNDYsMTcg
QEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBzdHlsZXNoZWV0IGRh
dGEgZm9yIHRoZSBzcGVjaWZpZWQgPGNvZGU+c3R5bGVTaGVldElkPC9jb2RlPi4iCiAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNldFN0eWxl
U2hlZXREaXNhYmxlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVTaGVldElkIiwgIiRyZWYiOiAiU3R5bGVTaGVl
dElkIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpc2FibGVkIiwgInR5cGUi
OiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVy
bnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVyIiwgIiRyZWYiOiAi
Q1NTU3R5bGVTaGVldEhlYWRlciIsICJkZXNjcmlwdGlvbiI6ICJVcGRhdGVkIHN0eWxlc2hlZXQg
aGVhZGVyLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlNldHMgdGhlIHN0eWxlc2hlZXQgZGlzYWJsZW1lbnQgc3RhdGUuIgorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRTdHlsZVNo
ZWV0VGV4dCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAic3R5bGVTaGVldElkIiwgIiRyZWYiOiAiU3R5bGVTaGVldElkIiB9
CkBAIC0yNDU5LDYgKzI0NzAsMTQgQEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RmlyZWQgd2hlbmV2ZXIgYSBzdHlsZXNoZWV0IGlzIGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgdGhl
IGNsaWVudCBvcGVyYXRpb24uIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJhY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQiLAorICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
bW92ZWQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiU3R5bGVTaGVldElk
IiB9LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllcnMgb2YgcmVtb3ZlZCBzdHlsZXNoZWV0cy4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYWRkZWQiLCAidHlwZSI6ICJhcnJh
eSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiQ1NTU3R5bGVTaGVldEhlYWRlciIgfSwgImRlc2NyaXB0
aW9uIjogIkFkZGVkIHN0eWxlc2hlZXRzIG1ldGFpbmZvLiIgfQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW5ldmVyIHRoZSBzZXQg
b2YgYWN0aXZlIGRvY3VtZW50IHN0eWxlc2hlZXRzIGlzIGNoYW5nZWQuIgorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dDcmVh
dGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVzY3JpcHRp
b24iOiAiVGhlIG5ldyBOYW1lZCBGbG93LiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZDUyNWU2ZGY2YTVjODIzYjg2Y2FhZWQ3NDc5
OWI3OTA1M2U1M2NlYi4uMjlkMWU0ZmU4YzI4NmUyZmQzOTRlYjUyNDM3NWZhOTcwY2E5OGQyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBA
IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgogI2lu
Y2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRl
ICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJX
ZWJLaXROYW1lZEZsb3cuaCIKIApAQCAtNjUwLDYgKzY1MSw0MSBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpyZWdpb25MYXlvdXRVcGRhdGVkKFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBp
bnQgZG9jdQogICAgIG1fZnJvbnRlbmQtPnJlZ2lvbkxheW91dFVwZGF0ZWQoYnVpbGRPYmplY3RG
b3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChjb25z
dCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIG9sZFNoZWV0cywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVNoZWV0PiA+JiBuZXdTaGVldHMpCit7CisgICAgSGFzaFNldDxDU1NTdHlsZVNo
ZWV0Kj4gcmVtb3ZlZFNoZWV0czsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG9sZFNo
ZWV0cy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU3R5bGVTaGVldCogb2xkU2hl
ZXQgPSBvbGRTaGVldHMuYXQoaSkuZ2V0KCk7CisgICAgICAgIGlmIChvbGRTaGVldC0+aXNDU1NT
dHlsZVNoZWV0KCkpCisgICAgICAgICAgICByZW1vdmVkU2hlZXRzLmFkZChzdGF0aWNfY2FzdDxD
U1NTdHlsZVNoZWV0Kj4ob2xkU2hlZXQpKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PENTU1N0eWxl
U2hlZXQqPiBhZGRlZFNoZWV0czsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5ld1No
ZWV0cy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU3R5bGVTaGVldCogbmV3U2hl
ZXQgPSBuZXdTaGVldHMuYXQoaSkuZ2V0KCk7CisgICAgICAgIGlmICghbmV3U2hlZXQtPmlzQ1NT
U3R5bGVTaGVldCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIENTU1N0eWxlU2hl
ZXQqIG5ld0NTU1NoZWV0ID0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KG5ld1NoZWV0KTsK
KyAgICAgICAgaWYgKHJlbW92ZWRTaGVldHMuY29udGFpbnMobmV3Q1NTU2hlZXQpKQorICAgICAg
ICAgICAgcmVtb3ZlZFNoZWV0cy5yZW1vdmUobmV3Q1NTU2hlZXQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhZGRlZFNoZWV0cy5hZGQobmV3Q1NTU2hlZXQpOworICAgIH0KKworICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldElkPiA+
IHJlbW92ZWRJZHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldElkPjo6Y3JlYXRlKCk7CisgICAgZm9yIChIYXNoU2V0PENTU1N0eWxlU2hlZXQqPjo6aXRl
cmF0b3IgaXQgPSByZW1vdmVkU2hlZXRzLmJlZ2luKCk7IGl0ICE9IHJlbW92ZWRTaGVldHMuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+IGluc3BlY3Rv
clN0eWxlU2hlZXQgPSBtX2Nzc1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hlZXQuZ2V0KCpp
dCk7CisgICAgICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0SWQgaWQg
PSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5pZCgpOworICAgICAgICByZW1vdmVkSWRzLT5hZGRJdGVt
KGlkKTsKKyAgICB9CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiA+IGFkZGVkSGVhZGVycyA9IFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPjo6Y3JlYXRlKCk7Cisg
ICAgZm9yIChIYXNoU2V0PENTU1N0eWxlU2hlZXQqPjo6aXRlcmF0b3IgaXQgPSBhZGRlZFNoZWV0
cy5iZWdpbigpOyBpdCAhPSBhZGRlZFNoZWV0cy5lbmQoKTsgKytpdCkKKyAgICAgICAgYWRkZWRI
ZWFkZXJzLT5hZGRJdGVtKGJpbmRTdHlsZVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQq
PigqaXQpKS0+YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygpKTsKKyAgICBtX2Zyb250ZW5k
LT5hY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQocmVtb3ZlZElkcy5yZWxlYXNlKCksIGFkZGVkSGVh
ZGVycy5yZWxlYXNlKCkpOworfQorCiBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVk
b1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5
cGUpCiB7CiAgICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCkBA
IC03NzcsNiArODEzLDE2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlU2hlZXQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0CiAgICAgc3R5bGVTaGVl
dE9iamVjdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgp
OwogfQogCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0RGlzYWJsZWQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgYm9vbCBk
aXNhYmxlZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+JiBz
dHlsZVNoZWV0SW5mbykKK3sKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHls
ZVNoZWV0ID0gYXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQp
OworICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aW5zcGVjdG9yU3R5bGVTaGVldC0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOworICAgIHN0eWxlU2hl
ZXRJbmZvID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5m
bygpOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcq
IHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0
ID0gYXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCBmZDRmMmNh
NmIwNTg0YzMzYjkzN2VmMWM3NjhiNWNiY2Q0NDYwNmM4Li4xYzExYWE4MDRjNWUwNGVkYmM1OGI4
YWEzYWQxMTMwYTA5MDlmNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsMTIgKzEwNiwxNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAg
ICAgdm9pZCBkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cq
KTsKICAgICB2b2lkIHJlZ2lvbkxheW91dFVwZGF0ZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKKyAgICB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIG9sZFNoZWV0cywgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVNoZWV0PiA+JiBuZXdTaGVldHMpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldENvbXB1
dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+ID4m
KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0
eWxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5o
ZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVN
YXRjaD4gPiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4gPiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+
ID4mIGluaGVyaXRlZEVudHJpZXMpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0
cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gPiYgc3R5bGVTaGVldEluZm9zKTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVl
dElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVNoZWV0RGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgYm9vbCBkaXNhYmxlZCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+JiBzdHlsZVNoZWV0SW5mbyk7CiAgICAgdmly
dHVhbCB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBz
dHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVT
aGVldFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3Qg
U3RyaW5nJiB0ZXh0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3Ry
aW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0
eUluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAzMzkzNjZhMmEz
Yjg1OGRmYjI5MDdjYjQzYmE2ZGNkNTkwNjdmMGE4Li4xNTQyMjcxMmU5ZTk0NmQ0YjQ0NzZhMGQ5
ZDc4Y2VhMDE1YzYwY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjEzLDYgKzIxMywxMiBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaQogI2VuZGlmCiB9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgb2xk
U2hlZXRzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIG5ld1NoZWV0cykKK3sK
KyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmFjdGl2ZVN0eWxlU2hl
ZXRzVXBkYXRlZChvbGRTaGVldHMsIG5ld1NoZWV0cyk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgaWYgKElu
c3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMTE2Y2M0MmUwZGUwZDRlYzFjMWJh
NDMwNzM5MGEwNWM0NTM1NmY5MS4uODY3OWM1NmM5NjgzZDMzMGJkZjI0YjJmYmM5MTI5MWU1NGU2
ODFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzYs
NiArNzcsNyBAQCBjbGFzcyBTaGFkb3dSb290OwogY2xhc3MgU3RvcmFnZUFyZWE7CiBjbGFzcyBT
dHlsZVJlc29sdmVyOwogY2xhc3MgU3R5bGVSdWxlOworY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNz
IFRocmVhZGFibGVMb2FkZXJDbGllbnQ7CiBjbGFzcyBXb3JrZXJDb250ZXh0OwogY2xhc3MgV29y
a2VyQ29udGV4dFByb3h5OwpAQCAtMTA0LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBkaWRSZW1vdmVET01BdHRyKERvY3VtZW50KiwgRWxlbWVudCosIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSk7CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3Vt
ZW50KiwgQ2hhcmFjdGVyRGF0YSopOwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVTdHls
ZUF0dHIoRG9jdW1lbnQqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgYWN0aXZlU3R5bGVTaGVl
dHNVcGRhdGVkKERvY3VtZW50KiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+Jiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+Jik7CiAgICAgc3RhdGljIHZvaWQgZnJh
bWVXaW5kb3dEaXNjYXJkZWQoRnJhbWUqLCBET01XaW5kb3cqKTsKICAgICBzdGF0aWMgdm9pZCBt
ZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZChEb2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFB1
c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKQEAgLTMwMiw2ICszMDUs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZURPTUF0dHJJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKICAg
ICBzdGF0aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBDaGFyYWN0ZXJEYXRhKik7CiAgICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxl
QXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCBh
Y3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hl
ZXQ+ID4mKTsKICAgICBzdGF0aWMgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIERPTVdpbmRvdyopOwogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlS
ZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0
LCBTaGFkb3dSb290Kik7CkBAIC01OTAsNiArNTk0LDE5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihEb2N1bWVudCogZG9jdW1l
bnQsCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
Y3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWZWN0b3I8
UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIG9sZFNoZWV0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHls
ZVNoZWV0PiA+JiBuZXdTaGVldHMpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVu
dChkb2N1bWVudCkpCisgICAgICAgIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZEltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cywgb2xkU2hlZXRzLCBuZXdTaGVldHMpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oZG9jdW1lbnQpOworICAgIFVOVVNFRF9QQVJBTShvbGRTaGVldHMpOworICAgIFVOVVNF
RF9QQVJBTShuZXdTaGVldHMpOworI2VuZGlmCit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoRnJhbWUqIGZyYW1lLCBET01XaW5k
b3cqIGRvbVdpbmRvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGFiMTgyYzgyMmI0
ZDhkZDMxMDc5MGJkNThhMTZhNzlkZjE4YzhmZDYuLmM2NzE3NTc0OTU2NDg0ZDY1ZGY1ZTRhM2Yz
MDhiZTE0YzVkZGIyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKQEAgLTc4MCw2ICs3ODAsMTEgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXREaXNhYmxlZChib29sIGRpc2FibGVkKQor
eworICAgIG1fcGFnZVN0eWxlU2hlZXQtPnNldERpc2FibGVkKGRpc2FibGVkKTsKK30KKwogU3Ry
aW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVTZWxlY3Rvcihjb25zdCBJbnNwZWN0b3JDU1NJ
ZCYgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIENTU1N0eWxlUnVsZSogcnVsZSA9IHJ1
bGVGb3JJZChpZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuaAppbmRleCBkOGQ0ZTQ4MWRhMjE0Njg4ZTM2MjE5ZmE2YzVjYTY2NjFkOTE3ZDllLi41
NzhlYjg2NTM3NGM0YmUzZmYzM2Q4ODhjOTgxNWViYzI0YzM3NDBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTE4NSw2ICsxODUsNyBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIGZpbmFsVVJMKCkgY29uc3Q7CiAgICAgQ1NTU3R5bGVTaGVl
dCogcGFnZVN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTdHlsZVNoZWV0LmdldCgp
OyB9CiAgICAgdm9pZCByZXBhcnNlU3R5bGVTaGVldChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldERpc2FibGVkKGJvb2wpOwogICAgIGJvb2wgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKICAg
ICBTdHJpbmcgcnVsZVNlbGVjdG9yKGNvbnN0IEluc3BlY3RvckNTU0lkJiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIGJvb2wgc2V0UnVsZVNlbGVjdG9yKGNvbnN0IEluc3BlY3RvckNTU0lkJiwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDgyZGY5OGM1
YWQxMjU3MzkwMzhjMGFjNDFhMjIwOTc4Yzk5NjkyOGEuLmFiN2NjMDg4NTA3MjIwZjc5YjEwMjE4
MTdmYWI3MDFkY2NmNzk1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTM1NSw2ICszNTUsMzAgQEAgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAg
KiBAcGFyYW0ge0NTU0FnZW50LlN0eWxlU2hlZXRJZH0gc3R5bGVTaGVldElkCisgICAgICogQHBh
cmFtIHtib29sZWFufSBkaXNhYmxlZAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0NTU0FnZW50
LkNTU1N0eWxlU2hlZXRIZWFkZXIpPX0gdXNlckNhbGxiYWNrCisgICAgICovCisgICAgc2V0U3R5
bGVTaGVldERpc2FibGVkOiBmdW5jdGlvbihzdHlsZVNoZWV0SWQsIGRpc2FibGVkLCB1c2VyQ2Fs
bGJhY2spCisgICAgeworICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVNoZWV0RGlzYWJsZWQoc3R5
bGVTaGVldElkLCBkaXNhYmxlZCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisKKyAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2soZXJyb3IsIG5ld0hlYWRlcikKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGVycm9yIHx8ICF0aGlzLl9yZXNvdXJjZUJpbmRpbmcuX3N0eWxlU2hlZXRJZFRvSGVhZGVy
W3N0eWxlU2hlZXRJZF0pIHsKKyAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQorICAg
ICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZUJpbmRpbmcu
X3N0eWxlU2hlZXRJZFRvSGVhZGVyW3N0eWxlU2hlZXRJZF0gPSBuZXdIZWFkZXI7CisgICAgICAg
ICAgICB0aGlzLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisgICAgICAgICAgICBpZiAodXNl
ckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuZXdIZWFkZXIpOworICAg
ICAgICB9CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlk
fSBub2RlSWQKICAgICAgKi8KICAgICBfb3duZXJEb2N1bWVudElkOiBmdW5jdGlvbihub2RlSWQp
CkBAIC0zODEsNiArNDA1LDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwuRXZlbnRzLlN0eWxlU2hlZXRDaGFuZ2VkLCB7IHN0eWxlU2hlZXRJZDog
c3R5bGVTaGVldElkLCBtYWpvckNoYW5nZTogbWFqb3JDaGFuZ2UgfSk7CiAgICAgfSwKIAorICAg
IF9hY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQ6IGZ1bmN0aW9uKHJlbW92ZWRJZHMsIGFkZGVkSW5m
b3MpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlbW92ZWRJZHMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZUJpbmRpbmcuX3NldEhlYWRlckZvclN0
eWxlU2hlZXRJZChyZW1vdmVkSWRzW2ldLCBudWxsKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhZGRlZEluZm9zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VC
aW5kaW5nLl9zZXRIZWFkZXJGb3JTdHlsZVNoZWV0SWQoYWRkZWRJbmZvc1tpXS5zdHlsZVNoZWV0
SWQsIGFkZGVkSW5mb3NbaV0pOworICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0NT
U0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAogICAgICAqLwpAQCAtMTE3MCwxNiAr
MTIwMiw1MyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUgPSB7CiAKIC8q
KgogICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51LlByb3ZpZGVyfQogICovCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmlu
ZGluZyA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlzLl9mcmFtZUFuZFVSTFRvU3R5bGVTaGVldElk
ID0ge307Ci0gICAgdGhpcy5fc3R5bGVTaGVldElkVG9IZWFkZXIgPSB7fTsKKyAgICB0aGlzLl9p
bnNwZWN0ZWRVUkxDaGFuZ2VkKCk7CiAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlw
ZXMuSW5zcGVjdGVkVVJMQ2hhbmdlZCwgdGhpcy5faW5zcGVjdGVkVVJMQ2hhbmdlZCwgdGhpcyk7
CisgICAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnJlZ2lzdGVyUHJvdmlkZXIodGhpcyk7CiB9
CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9
IHsKICAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKi8KKyAgICBhcHBlbmRBcHBsaWNh
YmxlSXRlbXM6IGZ1bmN0aW9uKGV2ZW50LCBjb250ZXh0TWVudSwgdGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUZvclVSTCh0YXJnZXQudXJsKTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHN0eWxlU2hlZXRJZCA9IHRoaXMuX3N0eWxl
U2hlZXRJZEZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgaWYgKCFzdHlsZVNoZWV0SWQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBoZWFkZXIgPSB0aGlzLl9zdHlsZVNo
ZWV0SWRUb0hlYWRlcltzdHlsZVNoZWV0SWRdOworICAgICAgICBpZiAoIWhlYWRlcikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZGlzYWJsZWQgPSBoZWFkZXIuZGlzYWJsZWQ7
CisgICAgICAgIHZhciBtZXNzYWdlID0gV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRs
ZXMoKSA/IChkaXNhYmxlZCA/ICJFbmFibGUgc3R5bGVzaGVldCIgOiAiRGlzYWJsZSBzdHlsZXNo
ZWV0IikgOiAoZGlzYWJsZWQgPyAiRW5hYmxlIFN0eWxlc2hlZXQiIDogIkRpc2FibGUgU3R5bGVz
aGVldCIpOworICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZyhtZXNzYWdlKSwgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFN0eWxlU2hlZXREaXNhYmxl
ZC5iaW5kKFdlYkluc3BlY3Rvci5jc3NNb2RlbCwgc3R5bGVTaGVldElkLCAhZGlzYWJsZWQpKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5TdHlsZVNoZWV0SWR9
IHN0eWxlU2hlZXRJZAorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuQ1NTU3R5bGVTaGVldEhlYWRl
cn0gaGVhZGVyCisgICAgICovCisgICAgX3NldEhlYWRlckZvclN0eWxlU2hlZXRJZDogZnVuY3Rp
b24oc3R5bGVTaGVldElkLCBoZWFkZXIpCisgICAgeworICAgICAgICB2YXIgb2xkSGVhZGVyID0g
dGhpcy5fc3R5bGVTaGVldElkVG9IZWFkZXJbc3R5bGVTaGVldElkXTsKKyAgICAgICAgaWYgKG9s
ZEhlYWRlcikKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZUFuZFVSTFRvU3R5bGVTaGVl
dElkW29sZEhlYWRlci5mcmFtZUlkICsgIjoiICsgb2xkSGVhZGVyLnNvdXJjZVVSTF07CisgICAg
ICAgIHRoaXMuX3N0eWxlU2hlZXRJZFRvSGVhZGVyW3N0eWxlU2hlZXRJZF0gPSBoZWFkZXI7Cisg
ICAgICAgIGlmIChoZWFkZXIpCisgICAgICAgICAgICB0aGlzLl9mcmFtZUFuZFVSTFRvU3R5bGVT
aGVldElkW2hlYWRlci5mcmFtZUlkICsgIjoiICsgaGVhZGVyLnNvdXJjZVVSTF0gPSBoZWFkZXIu
c3R5bGVTaGVldElkOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9DU1NBZ2Vu
dC5TdHlsZVNoZWV0SWQpfSBjYWxsYmFjawogICAgICAqLwpAQCAtMTIzNiwxNyArMTMwNSwxOCBA
QCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7
CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBl
dmVudAorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50PX0gZXZlbnQKICAgICAgKi8K
ICAgICBfaW5zcGVjdGVkVVJMQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAg
ICAvLyBNYWluIGZyYW1lIG5hdmlnYXRpb24gLSBjbGVhciBoaXN0b3J5LgogICAgICAgICB0aGlz
Ll9mcmFtZUFuZFVSTFRvU3R5bGVTaGVldElkID0ge307CiAgICAgICAgIHRoaXMuX3N0eWxlU2hl
ZXRJZFRvSGVhZGVyID0ge307CisgICAgICAgIHRoaXMuX2xvYWRTdHlsZVNoZWV0SGVhZGVycygp
OwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcpfSBj
YWxsYmFjaworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZyk9fSBjYWxsYmFjawogICAg
ICAqLwogICAgIF9sb2FkU3R5bGVTaGVldEhlYWRlcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAg
IHsKQEAgLTEyNTcsNyArMTMyNyw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3Vy
Y2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gZGlkR2V0QWxsU3R5bGVT
aGVldHMoZXJyb3IsIGluZm9zKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
LSAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7CisgICAgICAgICAgICAgICAgaWYgKGNh
bGxiYWNrKQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xMjcwLDcgKzEzNDEsOCBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fZnJhbWVBbmRVUkxUb1N0eWxlU2hlZXRJZFtpbmZvLmZyYW1lSWQg
KyAiOiIgKyBpbmZvLnNvdXJjZVVSTF0gPSBpbmZvLnN0eWxlU2hlZXRJZDsKICAgICAgICAgICAg
ICAgICB0aGlzLl9zdHlsZVNoZWV0SWRUb0hlYWRlcltpbmZvLnN0eWxlU2hlZXRJZF0gPSBpbmZv
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAg
ICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CiAgICAgICAg
IH0KICAgICAgICAgQ1NTQWdlbnQuZ2V0QWxsU3R5bGVTaGVldHMoZGlkR2V0QWxsU3R5bGVTaGVl
dHMuYmluZCh0aGlzKSk7CiAgICAgfSwKQEAgLTEzNzYsNiArMTQ0OCwxNSBAQCBXZWJJbnNwZWN0
b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAq
IEBwYXJhbSB7QXJyYXkuPENTU0FnZW50LlN0eWxlU2hlZXRJZD59IHJlbW92ZWRJZHMKKyAgICAg
KiBAcGFyYW0ge0FycmF5LjxDU1NBZ2VudC5DU1NTdHlsZVNoZWV0SGVhZGVyPn0gYWRkZWRJbmZv
cworICAgICAqLworICAgIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZDogZnVuY3Rpb24ocmVtb3Zl
ZElkcywgYWRkZWRJbmZvcykKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9hY3RpdmVT
dHlsZVNoZWV0c1VwZGF0ZWQocmVtb3ZlZElkcywgYWRkZWRJbmZvcyk7CisgICAgfSwKKworICAg
IC8qKgogICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQYXlsb2Fk
CiAgICAgICovCiAgICAgbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRGbG93UGF5bG9h
ZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA2Mzg1MmU5NGQ5OGZjNjUxZTJhMTlmYmRjMjA3ODIwYmE1ZDk5MjdkLi42MmZm
NDc3ODY0ZjQ3M2JhZjVmMmIzMTE3YmYzMTEzMWFmM2MyMGY3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMTItMTggIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgdGhlICJkaXNhYmxlZCIgYXR0cmli
dXRlIHRvZ2dsaW5nIGZvciBDU1Mgc3R5bGVzaGVldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTI1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9kaXNhYmxlLXN0eWxl
c2hlZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL2Rp
c2FibGUtc3R5bGVzaGVldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L3Jlc291cmNlcy9kaXNhYmxlLXN0eWxlc2hlZXQuY3NzOiBBZGRlZC4KKyAgICAgICAgKCNpbnNw
ZWN0ZWQpOgorCiAyMDEyLTEyLTE2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5nLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9kaXNhYmxlLXN0eWxlc2hlZXQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9kaXNhYmxlLXN0eWxlc2hl
ZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZjljOGQyNWFmNWUxZGNjMTk5OWIxOGZiOGFm
YjFlOTY5N2RjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL2Rpc2FibGUtc3R5bGVzaGVldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorVGVz
dHMgdGhhdCBzdHlsZXNoZWV0ICJkaXNhYmxlZCIgcHJvcGVydHkgbW9kaWZpY2F0aW9uIGFmZmVj
dHMgdGhlIHBhZ2Ugc3R5bGluZy4gQnVnIDEwNTI1OC4KKworVGV4dAorPT09IEJlZm9yZSBkaXNh
YmxlbWVudCA9PT0KK1tleHBhbmRlZF0gCitlbGVtZW50LnN0eWxlICB7ICgpCisKKz09PT09PT09
IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhwYW5kZWRdIAorI2luc3BlY3RlZCAgeyAo
ZGlzYWJsZS1zdHlsZXNoZWV0LmNzczoxKQorY29sb3I6IHJlZDsKKworW2V4cGFuZGVkXSAKK2Rp
diAgeyAodXNlciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CisKKworPT09IEFm
dGVyIGRpc2FibGVtZW50ID09PQorW2V4cGFuZGVkXSAKK2VsZW1lbnQuc3R5bGUgIHsgKCkKKwor
PT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gCitkaXYgIHsg
KHVzZXIgYWdlbnQgc3R5bGVzaGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKKz09PSBBZnRlciBl
bmFibGVtZW50ID09PQorW2V4cGFuZGVkXSAKK2VsZW1lbnQuc3R5bGUgIHsgKCkKKworPT09PT09
PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gCisjaW5zcGVjdGVkICB7
IChkaXNhYmxlLXN0eWxlc2hlZXQuY3NzOjEpCitjb2xvcjogcmVkOworCitbZXhwYW5kZWRdIAor
ZGl2ICB7ICh1c2VyIGFnZW50IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKworCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvZGlzYWJsZS1zdHlsZXNoZWV0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2Rpc2FibGUtc3R5bGVzaGVldC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU0YWY5YjgwODhkN2FhZjA3YjEzYjAzNWVhOWU5YjI2NjE3NThkMWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2Rpc2FibGUt
c3R5bGVzaGVldC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRl
c3QuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMv
ZGlzYWJsZS1zdHlsZXNoZWV0LmNzcyI+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworICAgIEluc3BlY3RvclRl
c3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAxKTsKKworICAg
IHZhciBzdHlsZVNoZWV0SWQ7CisKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEJlZm9yZSBkaXNhYmxlbWVudCA9PT0iKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOwor
ICAgICAgICBDU1NBZ2VudC5nZXRBbGxTdHlsZVNoZWV0cyhjYWxsYmFjayk7CisKKyAgICAgICAg
ZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIGhlYWRlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJF
cnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghaGVhZGVycy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiTm8gc3R5bGVzaGVldHMgZm91bmQhIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHN0eWxlU2hlZXRJZCA9IGhlYWRlcnNbMF0uc3R5bGVT
aGVldElkOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yU3R5bGVzKCJpbnNwZWN0
ZWQiLCBzdGVwMik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuc2V0U3R5bGVT
aGVldERpc2FibGVkKHN0eWxlU2hlZXRJZCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBzdGVwMigpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiPT09IEFmdGVyIGRpc2FibGVtZW50ID09PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NN
b2RlbC5zZXRTdHlsZVNoZWV0RGlzYWJsZWQoc3R5bGVTaGVldElkLCBmYWxzZSk7CisgICAgICAg
IEluc3BlY3RvclRlc3Qud2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgc3RlcDMpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCI9PT0gQWZ0ZXIgZW5hYmxlbWVudCA9PT0iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBzdHlsZXNoZWV0ICJkaXNhYmxl
ZCIgcHJvcGVydHkgbW9kaWZpY2F0aW9uIGFmZmVjdHMgdGhlIHBhZ2Ugc3R5bGluZy4gPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTI1OCI+QnVnIDEw
NTI1ODwvYT4uCis8L3A+CisKKzxkaXYgaWQ9Imluc3BlY3RlZCI+VGV4dDwvZGl2PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Jl
c291cmNlcy9kaXNhYmxlLXN0eWxlc2hlZXQuY3NzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9yZXNvdXJjZXMvZGlzYWJsZS1zdHlsZXNoZWV0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWZkNTVi
ZGMwNjA1MzczYzc3NzgxOTRiN2RhZTAxN2Q1NjNlZWViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9yZXNvdXJjZXMvZGlzYWJsZS1zdHlsZXNoZWV0LmNz
cwpAQCAtMCwwICsxLDMgQEAKKyNpbnNwZWN0ZWQgeworICBjb2xvcjogcmVkOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180861</attachid>
            <date>2012-12-28 03:59:15 -0800</date>
            <delta_ts>2012-12-28 05:18:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105258-20121228155625.patch</filename>
            <type>text/plain</type>
            <size>40834</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNmYTBkODMyOTY0OGRl
NzQwNjRmMWE5ZTI3M2NlNWRhZDZhZjA4My4uZjA0ZDMyYjc5OTkyNzEwODFmMWU0ODUzYmQyNjA5
ZWU5NjZkZjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTEyLTI4ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wbGVtZW50IHRoZSAiZGlzYWJsZWQiIGF0dHJpYnV0ZSB0b2dnbGluZyBmb3IgQ1NT
IHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDUyNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAtIEZyb250ZW5kIGtlZXBzIHRyYWNrIG9mIGFsbCBhY3RpdmUgc3R5bGVzaGVldHMgZHVy
aW5nIGl0cyBsaWZldGltZS4KKyAgICAgICAgLSBVcG9uIGFjdGl2ZSBzdHlsZXNoZWV0cyB1cGRh
dGUgaW4gV2ViQ29yZSwgdGhlIHN0eWxlc2hlZXQgZGVsdGEgaXMgcHJvdmlkZWQgaW50byB0aGUg
SW5zcGVjdG9yQ1NTQWdlbnQKKyAgICAgICAgYW5kIGZ1cnRoZXIgZG93biBpbnRvIHRoZSBmcm9u
dGVuZC4gVGhlc2UgZGF0YSBhcmUgdXNlZCB0byBjb250cmlidXRlIHRoZSAiRW5hYmxlL0Rpc2Fi
bGUgc3R5bGVzaGVldCIKKyAgICAgICAgY29udGV4dCBtZW51IGl0ZW1zLgorICAgICAgICAtIFRo
ZSBTdHlsZVNoZWV0Q2hhbmdlZCBldmVudCBpcyBmaXJlZCB1cG9uIHRoZSBkaXNhYmxlZCBzdGF0
ZSB0b2dnbGUuCisgICAgICAgIC0gRHJpdmUtYnk6IEZpeCBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
LnB5IHRvIGNvcnJlY3RseSBnZW5lcmF0ZSBzaWduYXR1cmVzIGZvciBhIHBhcmFtZXRlciB3aG9z
ZSB0eXBlCisgICAgICAgIGlzIHR5cGVkZWYnZWQgU3RyaW5nLgorCisgICAgICAgIFRlc3Q6IGlu
c3BlY3Rvci9zdHlsZXMvZGlzYWJsZS1zdHlsZXNoZWV0Lmh0bWwKKworICAgICAgICAqIEVuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6IEluc3RydW1lbnRlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKFR5
cGVCaW5kaW5ncy5jcmVhdGVfdHlwZV9kZWNsYXJhdGlvbl8uVHlwZWRlZlN0cmluZy5nZXRfYXJy
YXlfaXRlbV9jX3R5cGVfdGV4dCk6IEZpeCBnZW5lcmF0b3IuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uOiBBZGQgdGhlICJkaXNhYmxlZCIgZmllbGQgdG8gQ1NTU3R5bGVTaGVl
dEhlYWRlci4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yQ1NTQWdlbnQ6OlNldFN0eWxlU2hlZXREaXNhYmxlZEFjdGlvbik6IEFu
IHVuZG9hYmxlIGFjdGlvbiBmb3IgdGhlIHN0eWxlc2hlZXQgZGlzYWJsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVTaGVldERpc2FibGVkQWN0aW9u
OjpTZXRTdHlsZVNoZWV0RGlzYWJsZWRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OlNldFN0eWxlU2hlZXREaXNhYmxlZEFjdGlvbjo6cGVyZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVTaGVldERpc2FibGVkQWN0
aW9uOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpTZXRTdHls
ZVNoZWV0RGlzYWJsZWRBY3Rpb246OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OlNldFN0eWxlU2hlZXREaXNhYmxlZEFjdGlvbjo6bWVyZ2VJZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6U2V0U3R5bGVTaGVldERpc2FibGVkQWN0aW9u
OjptZXJnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9y
Q1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmNsZWFyRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXREaXNhYmxl
ZCk6IFRvZ2dsZSB0aGUgc3R5bGVzaGVldCBkaXNhYmxlZCBzdGF0ZS4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcDogQWRkZWQgdGhlIGFjdGl2ZSBzdHlsZSBzaGVldCBsaXN0IHVw
ZGF0ZSBpbnN0cnVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZEltcGwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpkaXNhYmxlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0RGlzYWJsZWQpOiBJbnZva2VzIENTU1N0eWxlU2hlZXQ6
OnNldERpc2FibGVkKCkuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aDogTmV3IG1ldGhvZHMgYWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NT
dHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90
eXBlLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5zZXRTdHlsZVNoZWV0RGlzYWJsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwucHJvdG90eXBlLl9hY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQpOgorICAgICAgICAg
IEhhbmRsZXMgdGhlIGV2ZW50IHRvIHVwZGF0ZSB0aGUgYWN0aXZlIHN0eWxlc2hlZXQgZGF0YS4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VCaW5kaW5nKTogS2Vl
cCB0cmFjayBvZiBhbGwgYWN0aXZlIHN0eWxlc2hlZXRzIGluIFdlYkNvcmUuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuYXBwZW5k
QXBwbGljYWJsZUl0ZW1zKToKKyAgICAgICAgICBBcHBlbmRzIHRoZSAiRW5hYmxlL0Rpc2FibGUg
c3R5bGVzaGVldCIgaXRlbXMgdG8gY29udGV4dCBtZW51cyBmb3IgVUlTb3VyY2VDb2RlIHRhcmdl
dHMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5w
cm90b3R5cGUuaGVhZGVyRm9yU3R5bGVTaGVldElkKTogQWRkZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX3NldEhlYWRlckZv
clN0eWxlU2hlZXRJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291
cmNlQmluZGluZy5wcm90b3R5cGUucmVxdWVzdFJlc291cmNlVVJMRm9yU3R5bGVTaGVldElkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3Rv
dHlwZS5faW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX2xvYWRTdHlsZVNoZWV0SGVhZGVycyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUuYWN0aXZlU3R5
bGVTaGVldHNVcGRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1Nv
dXJjZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVDb250ZW50QmluZGlu
Zy5wcm90b3R5cGUuZW5hYmxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxl
Q29udGVudEJpbmRpbmcucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0eWxlQ29udGVudEJpbmRpbmcucHJvdG90eXBlLnNldFRleHRDYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3R5bGVDb250ZW50QmluZGluZy5wcm90b3R5cGUuX2lubmVyU2V0Q29u
dGVudCk6IEVuYWJsZXMgYSBzdHlsZXNoZWV0IHVwb24gbGl2ZS1lZGl0LgorCiAyMDEyLTEyLTI4
ICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZWZhY3RvciBEZWZhdWx0VGV4dEVkaXRvcidzIHByaXZhdGUgbWV0aG9k
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
CmluZGV4IDA2YzE0OTlmMmRjNDQ3ZjY3NDJlMDM1NjA3MWM4MWE1ZmI0ZGVjOTkuLjA0YWMyMGMy
MDEzYjBlNThlYWE0YmQxOWZiZjYwNzYwN2UxOGIwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTE1NSw2ICsxNTUsOCBAQCBs
b2NhbGl6ZWRTdHJpbmdzWyJEaW1lbnNpb25zIl0gPSAiRGltZW5zaW9ucyI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJEaXNhYmxlIEJyZWFrcG9pbnQiXSA9ICJEaXNhYmxlIEJyZWFrcG9pbnQiOwogbG9j
YWxpemVkU3RyaW5nc1siRGlzYWJsZSBicmVha3BvaW50Il0gPSAiRGlzYWJsZSBicmVha3BvaW50
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkRpc2FibGUgY2FjaGUiXSA9ICJEaXNhYmxlIGNhY2hlIjsK
K2xvY2FsaXplZFN0cmluZ3NbIkRpc2FibGUgU3R5bGVzaGVldCJdID0gIkRpc2FibGUgU3R5bGVz
aGVldCI7Citsb2NhbGl6ZWRTdHJpbmdzWyJEaXNhYmxlIHN0eWxlc2hlZXQiXSA9ICJEaXNhYmxl
IHN0eWxlc2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1siRG9jayB0byBtYWluIHdpbmRvdy4iXSA9
ICJEb2NrIHRvIG1haW4gd2luZG93LiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJEb2N1bWVudCJdID0g
IkRvY3VtZW50IjsKIGxvY2FsaXplZFN0cmluZ3NbIkRvY3VtZW50IENvdW50Il0gPSAiRG9jdW1l
bnQgQ291bnQiOwpAQCAtMTgwLDYgKzE4Miw4IEBAIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsZSBC
cmVha3BvaW50Il0gPSAiRW5hYmxlIEJyZWFrcG9pbnQiOwogbG9jYWxpemVkU3RyaW5nc1siRW5h
YmxlIGJyZWFrcG9pbnQiXSA9ICJFbmFibGUgYnJlYWtwb2ludCI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJFbmFibGUgRGVidWdnaW5nIl0gPSAiRW5hYmxlIERlYnVnZ2luZyI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJFbmFibGUgUHJvZmlsaW5nIl0gPSAiRW5hYmxlIFByb2ZpbGluZyI7Citsb2NhbGl6ZWRT
dHJpbmdzWyJFbmFibGUgU3R5bGVzaGVldCJdID0gIkVuYWJsZSBTdHlsZXNoZWV0IjsKK2xvY2Fs
aXplZFN0cmluZ3NbIkVuYWJsZSBzdHlsZXNoZWV0Il0gPSAiRW5hYmxlIHN0eWxlc2hlZXQiOwog
bG9jYWxpemVkU3RyaW5nc1siRW5hYmxpbmcgZGVidWdnaW5nIHdpbGwgbWFrZSBzY3JpcHRzIHJ1
biBzbG93ZXIuIl0gPSAiRW5hYmxpbmcgZGVidWdnaW5nIHdpbGwgbWFrZSBzY3JpcHRzIHJ1biBz
bG93ZXIuIjsKIGxvY2FsaXplZFN0cmluZ3NbIkVuYWJsaW5nIHByb2ZpbGluZyB3aWxsIG1ha2Ug
c2NyaXB0cyBydW4gc2xvd2VyLiJdID0gIkVuYWJsaW5nIHByb2ZpbGluZyB3aWxsIG1ha2Ugc2Ny
aXB0cyBydW4gc2xvd2VyLiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFcnJvcnMiXSA9ICJFcnJvcnMi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwCmluZGV4IDVlOGU3Y2UyNmM2YjRiYmE3OGY2MGM3MjcxZmUyOTBlYzMxYzVjNzUuLmFm
ZTg3NzEzMzNiZjdlODBmYThkYmRkNWYzNDc2MTllOWNhZTExMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTQ4Nyw2
ICs0ODcsNyBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2
ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgICAgICByZXNldENTU0ZlYXR1
cmVGbGFncygpOwogICAgIH0KICAgICBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLnN3YXAoYWN0
aXZlQ1NTU3R5bGVTaGVldHMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWN0aXZl
U3R5bGVTaGVldHNVcGRhdGVkKG1fZG9jdW1lbnQsIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0
TGlzdCwgYWN0aXZlU3R5bGVTaGVldHMpOwogICAgIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0
TGlzdC5zd2FwKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIG1fdXNlc1JlbVVuaXRzID0gc3R5
bGVTaGVldHNVc2VSZW1Vbml0cyhtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXgg
ZTcwOGQ5ZTRkOThhY2IxYzZhYTVjYTZjNWEwMGIxZTEyYzdhYTkzMy4uZmJmYzgzN2M4ZGY2ZmIw
NmM0NWY1ZWFkYzdkNTIwNzE2ZjQzZjBjOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTEwNjgsNyArMTA2OCw3IEBAIGNs
YXNzIFR5cGVCaW5kaW5nczoKIAogICAgICAgICAgICAgICAgICAgICAgICAgQGNsYXNzbWV0aG9k
CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgZ2V0X2FycmF5X2l0ZW1fY190eXBlX3RleHQo
Y2xzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImNvbnN0ICVzJXMmIiAl
IChoZWxwZXIuZnVsbF9uYW1lX3ByZWZpeF9mb3JfdXNlLCBmaXhlZF90eXBlX25hbWUuY2xhc3Nf
bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiVzJXMiICUgKGhlbHBl
ci5mdWxsX25hbWVfcHJlZml4X2Zvcl91c2UsIGZpeGVkX3R5cGVfbmFtZS5jbGFzc19uYW1lKQog
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUeXBlZGVmU3RyaW5nCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBiYTAyODA4MjExOTk4ZTA1OWNkYjBjNmUy
OTQyMzkxMWU4ZGUwMjcwLi41NDBlMDAzYmEwM2U4YzFjMGQyM2I2NDQ1YmMyZWM2ZjNlYTZjODdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMzU1LDYgKzIz
NTUsMTcgQEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyBzdHlsZXNo
ZWV0IGRhdGEgZm9yIHRoZSBzcGVjaWZpZWQgPGNvZGU+c3R5bGVTaGVldElkPC9jb2RlPi4iCiAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNl
dFN0eWxlU2hlZXREaXNhYmxlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVTaGVldElkIiwgIiRyZWYiOiAiU3R5
bGVTaGVldElkIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpc2FibGVkIiwg
InR5cGUiOiAiYm9vbGVhbiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
InJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVhZGVyIiwgIiRy
ZWYiOiAiQ1NTU3R5bGVTaGVldEhlYWRlciIsICJkZXNjcmlwdGlvbiI6ICJVcGRhdGVkIHN0eWxl
c2hlZXQgaGVhZGVyLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlNldHMgdGhlIHN0eWxlc2hlZXQgZGlzYWJsZW1lbnQgc3RhdGUuIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRT
dHlsZVNoZWV0VGV4dCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVTaGVldElkIiwgIiRyZWYiOiAiU3R5bGVTaGVl
dElkIiB9CkBAIC0yNDY4LDYgKzI0NzksMTQgQEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRmlyZWQgd2hlbmV2ZXIgYSBzdHlsZXNoZWV0IGlzIGNoYW5nZWQgYXMgYSByZXN1bHQg
b2YgdGhlIGNsaWVudCBvcGVyYXRpb24uIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJhY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQiLAorICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInJlbW92ZWQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiU3R5bGVT
aGVldElkIiB9LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllcnMgb2YgcmVtb3ZlZCBzdHlsZXNo
ZWV0cy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYWRkZWQiLCAidHlwZSI6
ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiQ1NTU3R5bGVTaGVldEhlYWRlciIgfSwgImRl
c2NyaXB0aW9uIjogIkFkZGVkIHN0eWxlc2hlZXRzIG1ldGFpbmZvLiIgfQorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW5ldmVyIHRo
ZSBzZXQgb2YgYWN0aXZlIGRvY3VtZW50IHN0eWxlc2hlZXRzIGlzIGNoYW5nZWQuIgorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZs
b3dDcmVhdGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG5ldyBOYW1lZCBGbG93LiIgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggOTMwZWMwN2IyOTA1MDZjMmY4ZTUz
OGYxMTY1YmM1YzVmNTkxZTUwMC4uYTljYTFjNTNjMGJhMjU2OWYzMmRhNDU3ODJjNzg4MDllZmZh
ZmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNp
bmNsdWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNs
dWRlICJXZWJLaXROYW1lZEZsb3cuaCIKIApAQCAtMzUzLDYgKzM1NCw1MSBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX29sZFRleHQ7CiB9OwogCitjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U2V0
U3R5bGVTaGVldERpc2FibGVkQWN0aW9uIDogcHVibGljIEluc3BlY3RvckNTU0FnZW50OjpTdHls
ZVNoZWV0QWN0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXRTdHlsZVNoZWV0RGlz
YWJsZWRBY3Rpb24pOworcHVibGljOgorICAgIFNldFN0eWxlU2hlZXREaXNhYmxlZEFjdGlvbihJ
bnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBib29sIGRpc2FibGVkKQorICAgICAgICA6
IEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uKCJTZXRTdHlsZVNoZWV0RGlzYWJs
ZWQiLCBzdHlsZVNoZWV0KQorICAgICAgICAsIG1fZGlzYWJsZWQoZGlzYWJsZWQpCisgICAgICAg
ICwgbV9vbGREaXNhYmxlZChzdHlsZVNoZWV0LT5kaXNhYmxlZCgpKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAg
ICAgIHJldHVybiByZWRvKGVjKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNl
cHRpb25Db2RlJikKKyAgICB7CisgICAgICAgIG1fc3R5bGVTaGVldC0+c2V0RGlzYWJsZWQobV9v
bGREaXNhYmxlZCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZpcnR1YWwg
Ym9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmKQorICAgIHsKKyAgICAgICAgbV9zdHlsZVNoZWV0LT5z
ZXREaXNhYmxlZChtX2Rpc2FibGVkKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgdmlydHVhbCBTdHJpbmcgbWVyZ2VJZCgpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIlNldFN0eWxlU2hlZXREaXNhYmxlZCAlczolcyIsIG1fc3R5bGVTaGVldC0+aWQo
KS51dGY4KCkuZGF0YSgpLCBtX2Rpc2FibGVkID8gInRydWUiIDogImZhbHNlIik7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rpb24pCisgICAg
eworICAgICAgICBBU1NFUlQoYWN0aW9uLT5tZXJnZUlkKCkgPT0gbWVyZ2VJZCgpKTsKKworICAg
ICAgICBTZXRTdHlsZVNoZWV0RGlzYWJsZWRBY3Rpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8U2V0
U3R5bGVTaGVldERpc2FibGVkQWN0aW9uKj4oYWN0aW9uLmdldCgpKTsKKyAgICAgICAgbV9kaXNh
YmxlZCA9IG90aGVyLT5tX2Rpc2FibGVkOworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIG1f
ZGlzYWJsZWQ7CisgICAgYm9vbCBtX29sZERpc2FibGVkOworfTsKKwogY2xhc3MgSW5zcGVjdG9y
Q1NTQWdlbnQ6OlNldFByb3BlcnR5VGV4dEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JDU1NBZ2Vu
dDo6U3R5bGVTaGVldEFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2V0UHJvcGVy
dHlUZXh0QWN0aW9uKTsKIHB1YmxpYzoKQEAgLTUyOCw2ICs1NzQsNyBAQCBJbnNwZWN0b3JDU1NB
Z2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSQogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9kb21BZ2VudChkb21BZ2Vu
dCkKICAgICAsIG1fbGFzdFN0eWxlU2hlZXRJZCgxKQorICAgICwgbV9zdHlsZVNoZWV0SGVhZGVy
c1JlcXVlc3RlZChmYWxzZSkKIHsKICAgICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcih0aGlz
KTsKIH0KQEAgLTU0OSw4ICs1OTYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpjbGVhckZy
b250ZW5kKCkKICAgICBBU1NFUlQobV9mcm9udGVuZCk7CiAgICAgbV9mcm9udGVuZCA9IDA7CiAg
ICAgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIFN0cmluZyBlcnJvclN0cmluZzsKLSAg
ICBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoJmVycm9yU3RyaW5nLCBmYWxzZSk7CisgICAgc3Rv
cFNlbGVjdG9yUHJvZmlsZXJJbXBsKDAsIGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6ZGlzY2FyZEFnZW50KCkKQEAgLTU2OSw2ICs2MTUsMTEgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6cmVzdG9yZSgpCiAgICAgICAgIFN0cmluZyBlcnJvclN0cmluZzsKICAgICAgICAg
c3RhcnRTZWxlY3RvclByb2ZpbGVyKCZlcnJvclN0cmluZyk7CiAgICAgfQorICAgIGlmIChtX3N0
eWxlU2hlZXRIZWFkZXJzUmVxdWVzdGVkICYmIG1fc3RhdGUtPmdldEJvb2xlYW4oQ1NTQWdlbnRT
dGF0ZTo6Y3NzQWdlbnRFbmFibGVkKSkgeworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+ID4gc3R5bGVJbmZvcyA9
IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVy
Pjo6Y3JlYXRlKCk7CisgICAgICAgIGdldEFsbFN0eWxlU2hlZXRzKDAsIHN0eWxlSW5mb3MpOwor
ICAgICAgICBtX2Zyb250ZW5kLT5hY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQoVHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpLCBzdHlsZUluZm9zKTsKKyAgICB9CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKQEAgLTU5OCw2ICs2NDksNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIHsKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckNTU0FnZW50KDApOwogICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oQ1NTQWdlbnRTdGF0ZTo6Y3NzQWdlbnRFbmFibGVkLCBmYWxzZSk7CisgICAgbV9zdHlsZVNo
ZWV0SGVhZGVyc1JlcXVlc3RlZCA9IGZhbHNlOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCkBAIC02NTAsNiArNzAyLDQ0IEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbkxheW91dFVwZGF0ZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1l
ZEZsb3csIGludCBkb2N1CiAgICAgbV9mcm9udGVuZC0+cmVnaW9uTGF5b3V0VXBkYXRlZChidWls
ZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2Rl
SWQpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWN0aXZlU3R5bGVTaGVldHNVcGRh
dGVkKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgb2xkU2hlZXRzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIG5ld1NoZWV0cykKK3sKKyAgICBpZiAoIW1fc3R5
bGVTaGVldEhlYWRlcnNSZXF1ZXN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIEhhc2hTZXQ8
Q1NTU3R5bGVTaGVldCo+IHJlbW92ZWRTaGVldHM7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNp
emUgPSBvbGRTaGVldHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0eWxlU2hl
ZXQqIG9sZFNoZWV0ID0gb2xkU2hlZXRzLmF0KGkpLmdldCgpOworICAgICAgICBpZiAob2xkU2hl
ZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQorICAgICAgICAgICAgcmVtb3ZlZFNoZWV0cy5hZGQoc3Rh
dGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KG9sZFNoZWV0KSk7CisgICAgfQorCisgICAgSGFzaFNl
dDxDU1NTdHlsZVNoZWV0Kj4gYWRkZWRTaGVldHM7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNp
emUgPSBuZXdTaGVldHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFN0eWxlU2hl
ZXQqIG5ld1NoZWV0ID0gbmV3U2hlZXRzLmF0KGkpLmdldCgpOworICAgICAgICBpZiAoIW5ld1No
ZWV0LT5pc0NTU1N0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBD
U1NTdHlsZVNoZWV0KiBuZXdDU1NTaGVldCA9IHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihu
ZXdTaGVldCk7CisgICAgICAgIGlmIChyZW1vdmVkU2hlZXRzLmNvbnRhaW5zKG5ld0NTU1NoZWV0
KSkKKyAgICAgICAgICAgIHJlbW92ZWRTaGVldHMucmVtb3ZlKG5ld0NTU1NoZWV0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYWRkZWRTaGVldHMuYWRkKG5ld0NTU1NoZWV0KTsKKyAgICB9
CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxl
U2hlZXRJZD4gPiByZW1vdmVkSWRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlN0eWxlU2hlZXRJZD46OmNyZWF0ZSgpOworICAgIGZvciAoSGFzaFNldDxDU1NTdHlsZVNo
ZWV0Kj46Oml0ZXJhdG9yIGl0ID0gcmVtb3ZlZFNoZWV0cy5iZWdpbigpOyBpdCAhPSByZW1vdmVk
U2hlZXRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0
PiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmdldCgqaXQpOworICAgICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVT
aGVldElkIGlkID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+aWQoKTsKKyAgICAgICAgcmVtb3ZlZElk
cy0+YWRkSXRlbShpZCk7CisgICAgfQorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gPiBhZGRlZEhlYWRlcnMgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNy
ZWF0ZSgpOworICAgIGZvciAoSGFzaFNldDxDU1NTdHlsZVNoZWV0Kj46Oml0ZXJhdG9yIGl0ID0g
YWRkZWRTaGVldHMuYmVnaW4oKTsgaXQgIT0gYWRkZWRTaGVldHMuZW5kKCk7ICsraXQpCisgICAg
ICAgIGFkZGVkSGVhZGVycy0+YWRkSXRlbShiaW5kU3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4oKml0KSktPmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8oKSk7CisgICAg
bV9mcm9udGVuZC0+YWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKHJlbW92ZWRJZHMucmVsZWFzZSgp
LCBhZGRlZEhlYWRlcnMucmVsZWFzZSgpKTsKK30KKwogYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6
Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlw
ZSBwc2V1ZG9UeXBlKQogewogICAgIGlmIChtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUuaXNF
bXB0eSgpKQpAQCAtNzU2LDYgKzg0Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENv
bXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAKIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVh
ZGVyPiA+JiBzdHlsZUluZm9zKQogeworICAgIG1fc3R5bGVTaGVldEhlYWRlcnNSZXF1ZXN0ZWQg
PSB0cnVlOwogICAgIHN0eWxlSW5mb3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOwogICAgIFZlY3RvcjxEb2N1bWVu
dCo+IGRvY3VtZW50cyA9IG1fZG9tQWdlbnQtPmRvY3VtZW50cygpOwogICAgIGZvciAoVmVjdG9y
PERvY3VtZW50Kj46Oml0ZXJhdG9yIGl0ID0gZG9jdW1lbnRzLmJlZ2luKCk7IGl0ICE9IGRvY3Vt
ZW50cy5lbmQoKTsgKytpdCkgewpAQCAtNzc3LDYgKzg2OCwxNyBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBzdAogICAgIHN0eWxlU2hlZXRPYmplY3QgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWls
ZE9iamVjdEZvclN0eWxlU2hlZXQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0
U3R5bGVTaGVldERpc2FibGVkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBzdHlsZVNoZWV0SWQsIGJvb2wgZGlzYWJsZWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZVNoZWV0SGVhZGVyPiYgc3R5bGVTaGVldEluZm8pCit7CisgICAgSW5zcGVjdG9yU3R5
bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJv
clN0cmluZywgc3R5bGVTaGVldElkKTsKKyAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9kb21BZ2VudC0+
aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBTZXRTdHlsZVNoZWV0RGlzYWJsZWRBY3Rp
b24oaW5zcGVjdG9yU3R5bGVTaGVldCwgZGlzYWJsZWQpKSwgZWMpOworICAgIHN0eWxlU2hlZXRJ
bmZvID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygp
OworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJl
c3VsdCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0g
YXNzZXJ0U3R5bGVTaGVldEZvcklkKGVycm9yU3RyaW5nLCBzdHlsZVNoZWV0SWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCAxNDNlNDU0YWE5
NmIwMTY4MTk4MDMxNTEwZmY1OTczOGFmMGZlZTE3Li44YmU0M2JlZTQ3NzVlMjNlZGRiN2FkMTMy
MWM4YzJjMDhkNzUwNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsMTIgKzEwNiwxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAgICAg
dm9pZCBkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsK
ICAgICB2b2lkIHJlZ2lvbkxheW91dFVwZGF0ZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3Vt
ZW50Tm9kZUlkKTsKKyAgICB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIG9sZFNoZWV0cywgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHlsZVNoZWV0PiA+JiBuZXdTaGVldHMpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldENvbXB1dGVk
U3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+ID4mKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxl
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKTsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJp
dGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRj
aD4gPiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4gPiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+ID4m
IGluaGVyaXRlZEVudHJpZXMpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhF
cnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGVTaGVldEhlYWRlcj4gPiYgc3R5bGVTaGVldEluZm9zKTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZVNoZWV0RGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgYm9vbCBkaXNhYmxlZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+JiBzdHlsZVNoZWV0SW5mbyk7CiAgICAgdmlydHVh
bCB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHls
ZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVTaGVl
dFRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3Ry
aW5nJiB0ZXh0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5n
KiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUlu
ZGV4LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwpAQCAtMTMzLDYgKzEzNiw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgY2xhc3MgU3R5bGVTaGVldEFjdGlvbjsKICAgICBjbGFzcyBTZXRTdHls
ZVNoZWV0VGV4dEFjdGlvbjsKKyAgICBjbGFzcyBTZXRTdHlsZVNoZWV0RGlzYWJsZWRBY3Rpb247
CiAgICAgY2xhc3MgU2V0UHJvcGVydHlUZXh0QWN0aW9uOwogICAgIGNsYXNzIFRvZ2dsZVByb3Bl
cnR5QWN0aW9uOwogICAgIGNsYXNzIFNldFJ1bGVTZWxlY3RvckFjdGlvbjsKQEAgLTE4Niw2ICsx
OTAsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxVcGRhdGVSZWdpb25MYXlvdXRUYXNrPiBtX3Vw
ZGF0ZVJlZ2lvbkxheW91dFRhc2s7CiAKICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElkOworICAg
IGJvb2wgbV9zdHlsZVNoZWV0SGVhZGVyc1JlcXVlc3RlZDsKIAogICAgIE93blB0cjxTZWxlY3Rv
clByb2ZpbGU+IG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDg4
ZGI1NGMzNTZmNDFjYWFmMjMyMDllOWMyNjAzZGI0NTBkZTlkMjAuLjVkYzZmNDljNmYxZGYzNDUw
YzM1YjMzZDhhNTZkNTIwMzA1ZTYzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0yMTMsNiArMjEzLDEyIEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRySW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiBpCiAjZW5kaWYKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0
PiA+JiBvbGRTaGVldHMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgbmV3U2hl
ZXRzKQoreworICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+YWN0aXZl
U3R5bGVTaGVldHNVcGRhdGVkKG9sZFNoZWV0cywgbmV3U2hlZXRzKTsKK30KKwogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBET01XaW5kb3cqIHdpbmRvdykKIHsKICAg
ICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JDb25zb2xlQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA2MTYyNDk5MjMxZGRi
ZjJkNTQ0NmUyODkwNmM4ZTFhZjI3MGE0OTRkLi43ZTg2Y2NjZDc0YTJmN2MwZmJhNDI3M2Y1NmI5
ZWY3OWE0MTE2N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc5LDYgKzgwLDcgQEAgY2xhc3MgU2hh
ZG93Um9vdDsKIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNz
IFN0eWxlUnVsZTsKK2NsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50OwogY2xhc3MgV29ya2VyQ29udGV4dDsKIGNsYXNzIFdvcmtlckNvbnRleHRQcm94eTsKQEAg
LTEwMSw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlRE9NQXR0
cihEb2N1bWVudCosIEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogICAgIHN0
YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChEb2N1bWVudCosIENoYXJhY3RlckRhdGEq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKERvY3VtZW50KiwgTm9k
ZSopOworICAgIHN0YXRpYyB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChEb2N1bWVudCos
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3R5bGVTaGVldD4gPiYpOwogICAgIHN0YXRpYyB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkKEZy
YW1lKiwgRE9NV2luZG93Kik7CiAgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50
KiBob3N0LCBTaGFkb3dSb290Kik7CkBAIC0yOTksNiArMzAyLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBkaWRSZW1vdmVET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxl
bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAgICAgc3RhdGljIHZvaWQgY2hhcmFj
dGVyRGF0YU1vZGlmaWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgQ2hhcmFjdGVyRGF0YSop
OwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBOb2RlKik7CisgICAgc3RhdGljIHZvaWQgYWN0aXZlU3R5bGVTaGVldHNVcGRh
dGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+Jik7CiAgICAgc3RhdGlj
IHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBET01X
aW5kb3cqKTsKICAgICBzdGF0aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyB2b2lkIGRpZFB1c2hTaGFkb3dSb290SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwpAQCAt
NTg3LDYgKzU5MSwxOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIoRG9jdW1lbnQqIGRvY3VtZW50LAogI2VuZGlmCiB9CiAKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWN0aXZlU3R5bGVTaGVldHNVcGRh
dGVkKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+
JiBvbGRTaGVldHMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgbmV3U2hlZXRz
KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAg
ICBhY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG9sZFNo
ZWV0cywgbmV3U2hlZXRzKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKKyAg
ICBVTlVTRURfUEFSQU0ob2xkU2hlZXRzKTsKKyAgICBVTlVTRURfUEFSQU0obmV3U2hlZXRzKTsK
KyNlbmRpZgorfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1l
V2luZG93RGlzY2FyZGVkKEZyYW1lKiBmcmFtZSwgRE9NV2luZG93KiBkb21XaW5kb3cpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBjNTI4M2Q1OGJkODQ2MjY4OTM5YmU2NzlkOGE1YmJk
NjUyZmEzOWNmLi44ZjcwMWVlZjBjMTNmM2E5ZDY5MzM5NTJlYmUzMjZhZjE4OWNiNzI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBA
IC03ODAsNiArNzgwLDE5IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0VGV4dChjb25z
dCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yU3R5
bGVTaGVldDo6ZGlzYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2VTdHlsZVNoZWV0
LT5kaXNhYmxlZCgpOworfQorCit2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldERpc2FibGVk
KGJvb2wgZGlzYWJsZSkKK3sKKyAgICBpZiAoZGlzYWJsZSA9PSBkaXNhYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9wYWdlU3R5bGVTaGVldC0+c2V0RGlzYWJsZWQoZGlzYWJsZSk7Cisg
ICAgZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKCk7Cit9CisKIFN0cmluZyBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpydWxlU2VsZWN0b3IoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBydWxlRm9ySWQoaWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggODFjZDc3
ODgxZDVmOGQ2YTUxOWUwMjQ1ZDhiOWI5NjJlNzQ0ZWY2MS4uYmE3OTgyNGRkM2EyNWM0MzgzNDQ0
YmIzZWU1NDIzNTJjY2ViMmM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5oCkBAIC0xODUsNiArMTg1LDggQEAgcHVibGljOgogICAgIFN0cmlu
ZyBmaW5hbFVSTCgpIGNvbnN0OwogICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0KCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlU3R5bGVTaGVldC5nZXQoKTsgfQogICAgIHZvaWQgcmVwYXJz
ZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBkaXNhYmxlZCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBzZXRUZXh0KGNvbnN0IFN0cmlu
ZyYpOwogICAgIFN0cmluZyBydWxlU2VsZWN0b3IoY29uc3QgSW5zcGVjdG9yQ1NTSWQmLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgYm9vbCBzZXRSdWxlU2VsZWN0b3IoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXgg
Mjg0ZmJkODdlOGQ4OTlkOTk1OGI3OWNjNWU1NzRhZWFlMTIzYTg2MS4uNjdhMjAwZmI0MjVhZGE5
Y2ViMGMxZmUyZDQ5NzJiNTJhYjkxMThmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtMzU1LDYgKzM1NSwzMiBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8q
KgorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuU3R5bGVTaGVldElkfSBzdHlsZVNoZWV0SWQKKyAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc2FibGVkCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/
Q1NTQWdlbnQuQ1NTU3R5bGVTaGVldEhlYWRlcik9fSB1c2VyQ2FsbGJhY2sKKyAgICAgKi8KKyAg
ICBzZXRTdHlsZVNoZWV0RGlzYWJsZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCwgZGlzYWJsZWQs
IHVzZXJDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX3BlbmRpbmdDb21tYW5kc01ham9y
U3RhdGUucHVzaCh0cnVlKTsKKyAgICAgICAgQ1NTQWdlbnQuc2V0U3R5bGVTaGVldERpc2FibGVk
KHN0eWxlU2hlZXRJZCwgZGlzYWJsZWQsIGNhbGxiYWNrLmJpbmQodGhpcykpOworCisgICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBuZXdIZWFkZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRoaXMuX3BlbmRpbmdDb21tYW5kc01ham9yU3RhdGUucG9wKCk7CisgICAgICAgICAgICBp
ZiAoZXJyb3IgfHwgIXRoaXMuX3Jlc291cmNlQmluZGluZy5fc3R5bGVTaGVldElkVG9IZWFkZXJb
c3R5bGVTaGVldElkXSkgeworICAgICAgICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAg
ICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5t
YXJrVW5kb2FibGVTdGF0ZSgpOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VCaW5kaW5nLl9z
dHlsZVNoZWV0SWRUb0hlYWRlcltzdHlsZVNoZWV0SWRdID0gbmV3SGVhZGVyOworICAgICAgICAg
ICAgaWYgKHVzZXJDYWxsYmFjaykKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmV3SGVh
ZGVyKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge0RPTUFn
ZW50Lk5vZGVJZH0gbm9kZUlkCiAgICAgICovCiAgICAgX293bmVyRG9jdW1lbnRJZDogZnVuY3Rp
b24obm9kZUlkKQpAQCAtMzgxLDYgKzQwNywxNCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5TdHlsZVNoZWV0Q2hhbmdlZCwgeyBzdHls
ZVNoZWV0SWQ6IHN0eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2U6IG1ham9yQ2hhbmdlIH0pOwogICAg
IH0sCiAKKyAgICBfYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkOiBmdW5jdGlvbihyZW1vdmVkSWRz
LCBhZGRlZEluZm9zKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1vdmVk
SWRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VCaW5kaW5nLl9zZXRI
ZWFkZXJGb3JTdHlsZVNoZWV0SWQocmVtb3ZlZElkc1tpXSwgbnVsbCk7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYWRkZWRJbmZvcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMu
X3Jlc291cmNlQmluZGluZy5fc2V0SGVhZGVyRm9yU3R5bGVTaGVldElkKGFkZGVkSW5mb3NbaV0u
c3R5bGVTaGVldElkLCBhZGRlZEluZm9zW2ldKTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KQEAg
LTExNzAsMTYgKzEyMDQsNjUgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBl
ID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rv
ci5Db250ZXh0TWVudS5Qcm92aWRlcn0KICAqLwogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxS
ZXNvdXJjZUJpbmRpbmcgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGhpcy5fZnJhbWVBbmRVUkxUb1N0
eWxlU2hlZXRJZCA9IHt9OwotICAgIHRoaXMuX3N0eWxlU2hlZXRJZFRvSGVhZGVyID0ge307Cisg
ICAgdGhpcy5faW5zcGVjdGVkVVJMQ2hhbmdlZCgpOwogICAgIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2Rl
bC5FdmVudFR5cGVzLkluc3BlY3RlZFVSTENoYW5nZWQsIHRoaXMuX2luc3BlY3RlZFVSTENoYW5n
ZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5yZWdpc3RlclByb3ZpZGVy
KHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZy5w
cm90b3R5cGUgPSB7CiAgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICovCisgICAgYXBw
ZW5kQXBwbGljYWJsZUl0ZW1zOiBmdW5jdGlvbihldmVudCwgY29udGV4dE1lbnUsIHRhcmdldCkK
KyAgICB7CisgICAgICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodGFyZ2V0LnVybCk7CisgICAgICAgIGlmICghcmVz
b3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzdHlsZVNoZWV0SWQgPSB0
aGlzLl9zdHlsZVNoZWV0SWRGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIGlmICghc3R5
bGVTaGVldElkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgaGVhZGVyID0gdGhp
cy5fc3R5bGVTaGVldElkVG9IZWFkZXJbc3R5bGVTaGVldElkXTsKKyAgICAgICAgaWYgKCFoZWFk
ZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGRpc2FibGVkID0gaGVhZGVy
LmRpc2FibGVkOworICAgICAgICB2YXIgbWVzc2FnZSA9IFdlYkluc3BlY3Rvci51c2VMb3dlckNh
c2VNZW51VGl0bGVzKCkgPyAoZGlzYWJsZWQgPyAiRW5hYmxlIHN0eWxlc2hlZXQiIDogIkRpc2Fi
bGUgc3R5bGVzaGVldCIpIDogKGRpc2FibGVkID8gIkVuYWJsZSBTdHlsZXNoZWV0IiA6ICJEaXNh
YmxlIFN0eWxlc2hlZXQiKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcobWVzc2FnZSksIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5zZXRTdHlsZVNo
ZWV0RGlzYWJsZWQuYmluZChXZWJJbnNwZWN0b3IuY3NzTW9kZWwsIHN0eWxlU2hlZXRJZCwgIWRp
c2FibGVkKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuU3R5
bGVTaGVldElkfSBzdHlsZVNoZWV0SWQKKyAgICAgKiBAcmV0dXJuIHtDU1NBZ2VudC5DU1NTdHls
ZVNoZWV0SGVhZGVyfHVuZGVmaW5lZH0KKyAgICAgKi8KKyAgICBoZWFkZXJGb3JTdHlsZVNoZWV0
SWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
dHlsZVNoZWV0SWRUb0hlYWRlcltzdHlsZVNoZWV0SWRdOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0NTU0FnZW50LlN0eWxlU2hlZXRJZH0gc3R5bGVTaGVldElkCisgICAgICog
QHBhcmFtIHtDU1NBZ2VudC5DU1NTdHlsZVNoZWV0SGVhZGVyfSBoZWFkZXIKKyAgICAgKi8KKyAg
ICBfc2V0SGVhZGVyRm9yU3R5bGVTaGVldElkOiBmdW5jdGlvbihzdHlsZVNoZWV0SWQsIGhlYWRl
cikKKyAgICB7CisgICAgICAgIHZhciBvbGRIZWFkZXIgPSB0aGlzLl9zdHlsZVNoZWV0SWRUb0hl
YWRlcltzdHlsZVNoZWV0SWRdOworICAgICAgICBpZiAob2xkSGVhZGVyKSB7CisgICAgICAgICAg
ICBkZWxldGUgdGhpcy5fc3R5bGVTaGVldElkVG9IZWFkZXJbc3R5bGVTaGVldElkXTsKKyAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZUFuZFVSTFRvU3R5bGVTaGVldElkW29sZEhlYWRlci5m
cmFtZUlkICsgIjoiICsgb2xkSGVhZGVyLnNvdXJjZVVSTF07CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGhlYWRlcikgeworICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkVG9IZWFkZXJbc3R5
bGVTaGVldElkXSA9IGhlYWRlcjsKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lQW5kVVJMVG9TdHls
ZVNoZWV0SWRbaGVhZGVyLmZyYW1lSWQgKyAiOiIgKyBoZWFkZXIuc291cmNlVVJMXSA9IGhlYWRl
ci5zdHlsZVNoZWV0SWQ7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCiAgICAgICogQHBhcmFtIHtmdW5j
dGlvbig/Q1NTQWdlbnQuU3R5bGVTaGVldElkKX0gY2FsbGJhY2sKICAgICAgKi8KQEAgLTEyMDIs
MjggKzEyODUsMjAgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcXVlc3RSZXNvdXJjZVVSTEZvclN0eWxlU2hl
ZXRJZDogZnVuY3Rpb24oc3R5bGVTaGVldElkLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIGlubmVyQ2FsbGJhY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgaGVhZGVy
ID0gdGhpcy5fc3R5bGVTaGVldElkVG9IZWFkZXJbc3R5bGVTaGVldElkXTsKLSAgICAgICAgICAg
IGlmICghaGVhZGVyKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgZnJhbWUg
PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuZnJhbWVGb3JJZChoZWFkZXIuZnJhbWVJ
ZCk7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2so
bnVsbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICB2
YXIgaGVhZGVyID0gdGhpcy5fc3R5bGVTaGVldElkVG9IZWFkZXJbc3R5bGVTaGVldElkXTsKKyAg
ICAgICAgaWYgKCFoZWFkZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBzdHlsZVNoZWV0VVJM
ID0gaGVhZGVyLm9yaWdpbiA9PT0gImluc3BlY3RvciIgPyB0aGlzLl92aWFJbnNwZWN0b3JSZXNv
dXJjZVVSTChoZWFkZXIuc291cmNlVVJMKSA6IGhlYWRlci5zb3VyY2VVUkw7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhzdHlsZVNoZWV0VVJMKTsKKyAgICAgICAgdmFyIGZyYW1lID0gV2ViSW5zcGVj
dG9yLnJlc291cmNlVHJlZU1vZGVsLmZyYW1lRm9ySWQoaGVhZGVyLmZyYW1lSWQpOworICAgICAg
ICBpZiAoIWZyYW1lKSB7CisgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHRoaXMuX3N0eWxlU2hl
ZXRJZFRvSGVhZGVyW3N0eWxlU2hlZXRJZF0pCi0gICAgICAgICAgICBpbm5lckNhbGxiYWNrLmNh
bGwodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2xvYWRTdHlsZVNoZWV0
SGVhZGVycyhpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOworCisgICAgICAgIHZhciBzdHlsZVNo
ZWV0VVJMID0gaGVhZGVyLm9yaWdpbiA9PT0gImluc3BlY3RvciIgPyB0aGlzLl92aWFJbnNwZWN0
b3JSZXNvdXJjZVVSTChoZWFkZXIuc291cmNlVVJMKSA6IGhlYWRlci5zb3VyY2VVUkw7CisgICAg
ICAgIGNhbGxiYWNrKHN0eWxlU2hlZXRVUkwpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEyMzYs
MTcgKzEzMTEsMTggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcu
cHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudD19IGV2
ZW50CiAgICAgICovCiAgICAgX2luc3BlY3RlZFVSTENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKICAgICAgICAgLy8gTWFpbiBmcmFtZSBuYXZpZ2F0aW9uIC0gY2xlYXIgaGlzdG9yeS4K
ICAgICAgICAgdGhpcy5fZnJhbWVBbmRVUkxUb1N0eWxlU2hlZXRJZCA9IHt9OwogICAgICAgICB0
aGlzLl9zdHlsZVNoZWV0SWRUb0hlYWRlciA9IHt9OworICAgICAgICB0aGlzLl9sb2FkU3R5bGVT
aGVldEhlYWRlcnMoKTsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtmdW5jdGlv
big/c3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcpPX0g
Y2FsbGJhY2sKICAgICAgKi8KICAgICBfbG9hZFN0eWxlU2hlZXRIZWFkZXJzOiBmdW5jdGlvbihj
YWxsYmFjaykKICAgICB7CkBAIC0xMjU3LDcgKzEzMzMsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIGRp
ZEdldEFsbFN0eWxlU2hlZXRzKGVycm9yLCBpbmZvcykKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpOworICAgICAgICAg
ICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3Ip
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMTI3MCw3ICsx
MzQ3LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX2ZyYW1lQW5kVVJMVG9TdHlsZVNoZWV0SWRb
aW5mby5mcmFtZUlkICsgIjoiICsgaW5mby5zb3VyY2VVUkxdID0gaW5mby5zdHlsZVNoZWV0SWQ7
CiAgICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkVG9IZWFkZXJbaW5mby5zdHlsZVNo
ZWV0SWRdID0gaW5mbzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbGxiYWNrKG51bGwp
OworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51
bGwpOwogICAgICAgICB9CiAgICAgICAgIENTU0FnZW50LmdldEFsbFN0eWxlU2hlZXRzKGRpZEdl
dEFsbFN0eWxlU2hlZXRzLmJpbmQodGhpcykpOwogICAgIH0sCkBAIC0xMzc2LDYgKzE0NTQsMTUg
QEAgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxDU1NBZ2VudC5TdHlsZVNoZWV0SWQ+fSByZW1v
dmVkSWRzCisgICAgICogQHBhcmFtIHtBcnJheS48Q1NTQWdlbnQuQ1NTU3R5bGVTaGVldEhlYWRl
cj59IGFkZGVkSW5mb3MKKyAgICAgKi8KKyAgICBhY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQ6IGZ1
bmN0aW9uKHJlbW92ZWRJZHMsIGFkZGVkSW5mb3MpCisgICAgeworICAgICAgICB0aGlzLl9jc3NN
b2RlbC5fYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKHJlbW92ZWRJZHMsIGFkZGVkSW5mb3MpOwor
ICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFt
ZWRGbG93UGF5bG9hZAogICAgICAqLwogICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5h
bWVkRmxvd1BheWxvYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXggNjI0YzAzYThlYTE3NjlhZjMxNzI5MzUyZGFkYjc2
MTZiNmZlMzU1My4uZjVjZjI2ZGI1MTg3YTU2MjE5NGE3MmI1NTBhMGJhN2FhNTY4YzQ1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcwpAQCAtMTAyMSw3ICsxMDIxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgaXNSZWRvS2V5ID0gV2ViSW5zcGVjdG9yLmlzTWFjKCkg
PyBldmVudC5tZXRhS2V5ICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleUlkZW50aWZpZXIg
PT09ICJVKzAwNUEiIDogLy8gWiBrZXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnQuY3RybEtleSAmJiBldmVudC5rZXlJZGVudGlmaWVyID09PSAi
VSswMDU5IjsgLy8gWSBrZXkKICAgICAgICAgaWYgKGlzUmVkb0tleSkgewotICAgICAgICAgICAg
RE9NQWdlbnQucmVkbyh0aGlzLl91cGRhdGVTaWRlYmFycy5iaW5kKHRoaXMpKTsKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZWRvKHRoaXMuX3VwZGF0ZVNpZGViYXJzLmJpbmQo
dGhpcykpOwogICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU291cmNlTWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU291cmNlTWFwcGluZy5qcwppbmRleCBiZDdlMjZjMmFmNzQ0NTY0
NzEzZmFlODA0YzBiNjgzY2MxMTBkMmQ5Li44YzRjMzZkN2M0N2VhMTM4ZDYzNTZiYzk2ZDE4OWNk
NjFlNDA5NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NvdXJjZU1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzCkBAIC0yMTgsMTMgKzIxOCw0MCBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVDb250ZW50QmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
X2lubmVyU2V0Q29udGVudDogZnVuY3Rpb24oc3R5bGVTaGVldElkLCBjb250ZW50LCBtYWpvckNo
YW5nZSwgdXNlckNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdGhpcy5faXNTZXR0aW5nQ29udGVu
dCA9IHRydWU7Ci0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yKQorICAgICAgICB2YXIg
aGVhZGVyID0gdGhpcy5fY3NzTW9kZWwucmVzb3VyY2VCaW5kaW5nKCkuaGVhZGVyRm9yU3R5bGVT
aGVldElkKHN0eWxlU2hlZXRJZCk7CisgICAgICAgIGlmICghaGVhZGVyKSB7CisgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soIlN0eWxlc2hlZXQgZG9lcyBub3QgZXhpc3Q6ICIgKyBKU09OLnN0cmlu
Z2lmeShzdHlsZVNoZWV0SWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChoZWFkZXIuZGlzYWJsZWQpIHsKKyAgICAgICAgICAgIHRoaXMuX2Nzc01vZGVs
LnNldFN0eWxlU2hlZXREaXNhYmxlZChzdHlsZVNoZWV0SWQsIGZhbHNlLCBlbmFibGVDYWxsYmFj
ay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGVuYWJsZUNhbGxiYWNrKG5ld0hlYWRlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFuZXdIZWFkZXIpIHsKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soIkZhaWxl
ZCB0byBlbmFibGVkIHN0eWxlc2hlZXQgIiArIGhlYWRlci5zb3VyY2VVUkwpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFRleHQuY2FsbCh0
aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSBpZiB0
aGUgc3R5bGVzaGVldCBpcyBvcmlnaW5hbGx5IGVuYWJsZWQuCisgICAgICAgIHNldFRleHQuY2Fs
bCh0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBzZXRUZXh0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGhpcy5faXNTZXR0aW5nQ29udGVudCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9j
c3NNb2RlbC5zZXRTdHlsZVNoZWV0VGV4dChzdHlsZVNoZWV0SWQsIGNvbnRlbnQsIG1ham9yQ2hh
bmdlLCBzZXRUZXh0Q2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzZXRUZXh0Q2FsbGJhY2soZXJyb3IpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayhlcnJvcik7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5faXNTZXR0aW5nQ29u
dGVudDsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9jc3NNb2RlbC5zZXRTdHlsZVNoZWV0VGV4
dChzdHlsZVNoZWV0SWQsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCBjYWxsYmFjay5iaW5kKHRoaXMp
KTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmYwMWQ1ZDFmNzdlM2FkMDM4Nzc1MjAwNTM1
NTBlOGI1YjNlMjc0Ni4uMmI4Nzk1YWM0ODE0NDdjODQ2M2UyOTI2YzgzZTg4MDNlYzFiZDc1NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTI4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHRo
ZSAiZGlzYWJsZWQiIGF0dHJpYnV0ZSB0b2dnbGluZyBmb3IgQ1NTIHN0eWxlc2hlZXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUyNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9z
dHlsZXMvZGlzYWJsZS1zdHlsZXNoZWV0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL3N0eWxlcy9kaXNhYmxlLXN0eWxlc2hlZXQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL3N0eWxlcy9yZXNvdXJjZXMvZGlzYWJsZS1zdHlsZXNoZWV0LmNzczogQWRk
ZWQuCisKIDIwMTItMTItMjggIEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0u
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIERlZmF1bHRUZXh0RWRpdG9y
J3MgcHJpdmF0ZSBtZXRob2RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL2Rpc2FibGUtc3R5bGVzaGVldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzL2Rpc2FibGUtc3R5bGVzaGVldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZm
OWM4ZDI1YWY1ZTFkY2MxOTk5YjE4ZmI4YWZiMWU5Njk3ZGNjNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvZGlzYWJsZS1zdHlsZXNoZWV0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQyIEBACitUZXN0cyB0aGF0IHN0eWxlc2hlZXQgImRpc2FibGVkIiBw
cm9wZXJ0eSBtb2RpZmljYXRpb24gYWZmZWN0cyB0aGUgcGFnZSBzdHlsaW5nLiBCdWcgMTA1MjU4
LgorCitUZXh0Cis9PT0gQmVmb3JlIGRpc2FibGVtZW50ID09PQorW2V4cGFuZGVkXSAKK2VsZW1l
bnQuc3R5bGUgIHsgKCkKKworPT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KK1tl
eHBhbmRlZF0gCisjaW5zcGVjdGVkICB7IChkaXNhYmxlLXN0eWxlc2hlZXQuY3NzOjEpCitjb2xv
cjogcmVkOworCitbZXhwYW5kZWRdIAorZGl2ICB7ICh1c2VyIGFnZW50IHN0eWxlc2hlZXQpCitk
aXNwbGF5OiBibG9jazsKKworCis9PT0gQWZ0ZXIgZGlzYWJsZW1lbnQgPT09CitbZXhwYW5kZWRd
IAorZWxlbWVudC5zdHlsZSAgeyAoKQorCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09
PT09PQorW2V4cGFuZGVkXSAKK2RpdiAgeyAodXNlciBhZ2VudCBzdHlsZXNoZWV0KQorZGlzcGxh
eTogYmxvY2s7CisKKworPT09IEFmdGVyIGVuYWJsZW1lbnQgPT09CitbZXhwYW5kZWRdIAorZWxl
bWVudC5zdHlsZSAgeyAoKQorCis9PT09PT09PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQor
W2V4cGFuZGVkXSAKKyNpbnNwZWN0ZWQgIHsgKGRpc2FibGUtc3R5bGVzaGVldC5jc3M6MSkKK2Nv
bG9yOiByZWQ7CisKK1tleHBhbmRlZF0gCitkaXYgIHsgKHVzZXIgYWdlbnQgc3R5bGVzaGVldCkK
K2Rpc3BsYXk6IGJsb2NrOworCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9kaXNhYmxlLXN0eWxlc2hlZXQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvZGlzYWJsZS1zdHlsZXNoZWV0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUyMzA5NWM0MzUyYjY3
ZGMzZWRhMGExNTNhZGNmMTQ2NTk4YTc5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvZGlzYWJsZS1zdHlsZXNoZWV0Lmh0bWwKQEAgLTAsMCArMSw4MyBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9kaXNhYmxlLXN0eWxlc2hlZXQuY3NzIj4KKzxzY3Jp
cHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVs
ZW1lbnRzIik7CisgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlcygi
aW5zcGVjdGVkIiwgc3RlcDEpOworCisgICAgdmFyIHN0eWxlU2hlZXRJZDsKKworICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0g
QmVmb3JlIGRpc2FibGVtZW50ID09PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxl
Y3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIENTU0FnZW50LmdldEFsbFN0eWxlU2hl
ZXRzKGNhbGxiYWNrKTsKKworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgaGVhZGVy
cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkVycm9yOiAiICsgZXJyb3IpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoZWFkZXJzLmxlbmd0aCkgeworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJObyBzdHlsZXNoZWV0cyBmb3Vu
ZCEiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3R5bGVT
aGVldElkID0gaGVhZGVyc1swXS5zdHlsZVNoZWV0SWQ7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LndhaXRGb3JTdHlsZXMoImluc3BlY3RlZCIsIHN0ZXAyKTsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5jc3NNb2RlbC5zZXRTdHlsZVNoZWV0RGlzYWJsZWQoc3R5bGVTaGVldElkLCB0cnVl
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAyKCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0ZXIgZGlzYWJsZW1lbnQgPT09Iik7
CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFN0eWxlU2hlZXREaXNhYmxlZChzdHls
ZVNoZWV0SWQsIGZhbHNlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yU3R5bGVzKCJp
bnNwZWN0ZWQiLCBzdGVwMyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRlciBlbmFibGVtZW50ID09
PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1
ZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC51bmRvKCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3Qud2FpdEZvclN0eWxlcygiaW5zcGVjdGVkIiwgc3RlcDQpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHN0ZXA0KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCI9PT0gQWZ0ZXIgZW5hYmxlbWVudCB1bmRvID09PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5yZWRvKCk7CisgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvclN0eWxlcygiaW5z
cGVjdGVkIiwgc3RlcDUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXA1KCkKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0ZXIgZW5hYmxlbWVudCByZWRv
ID09PSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMo
dHJ1ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitU
ZXN0cyB0aGF0IHN0eWxlc2hlZXQgImRpc2FibGVkIiBwcm9wZXJ0eSBtb2RpZmljYXRpb24gYWZm
ZWN0cyB0aGUgcGFnZSBzdHlsaW5nLiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA1MjU4Ij5CdWcgMTA1MjU4PC9hPi4KKzwvcD4KKworPGRpdiBpZD0i
aW5zcGVjdGVkIj5UZXh0PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcmVzb3VyY2VzL2Rpc2FibGUtc3R5bGVzaGVldC5j
c3MgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Jlc291cmNlcy9kaXNhYmxlLXN0eWxl
c2hlZXQuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5ZmQ1NWJkYzA2MDUzNzNjNzc3ODE5NGI3ZGFlMDE3ZDU2
M2VlZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Jl
c291cmNlcy9kaXNhYmxlLXN0eWxlc2hlZXQuY3NzCkBAIC0wLDAgKzEsMyBAQAorI2luc3BlY3Rl
ZCB7CisgIGNvbG9yOiByZWQ7Cit9Cg==
</data>
<flag name="review"
          id="198275"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>