<?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>126668</bug_id>
          
          <creation_ts>2014-01-08 15:36:00 -0800</creation_ts>
          <short_desc>Web Inspector: capture probe samples on the backend</short_desc>
          <delta_ts>2014-01-15 15:18:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>965664</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-08 15:36:00 -0800</bug_when>
    <thetext>Things this patch will include:

- add new breakpoint action to protocol
- add probe sample data type to protocol
- add event for signaling probe sample captured
- backend handling of probe breakpoint action</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965665</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-08 15:37:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/15777026&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967442</commentid>
    <comment_count>2</comment_count>
      <attachid>221071</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-13 12:08:39 -0800</bug_when>
    <thetext>Created attachment 221071
v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968087</commentid>
    <comment_count>3</comment_count>
      <attachid>221071</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-14 16:28:27 -0800</bug_when>
    <thetext>Comment on attachment 221071
v1

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

r=me. Looks good to me, nice tests.

&gt; Source/JavaScriptCore/inspector/protocol/Debugger.json:91
&gt; +                { &quot;name&quot;: &quot;probeId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Identifier of the &apos;probe&apos; breakpoint action that created the sample.&quot; },

The type of probeId should be BreakpointActionIdentifier.

&gt; Source/JavaScriptCore/inspector/protocol/Debugger.json:300
&gt; +           &quot;description&quot;: &quot;Fires when a new probe sample is collected.&quot;

Style: Incorrect indentation. Needs a space.

Also, I&apos;d like to put the &quot;description&quot; next to the &quot;name&quot; from now on. It flows better, and it is easier to read this file at a glance.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:123
&gt; +            Interpreter::ErrorHandlingMode mode(debuggerCallFrame-&gt;exec());
&gt; +            // FIXME: we should supply the exception call stack to the frontend.
&gt; +            debuggerCallFrame-&gt;exec()-&gt;clearException();
&gt; +            debuggerCallFrame-&gt;exec()-&gt;clearSupplementaryExceptionInfo();

Could this just do reportException(debuggerCallFrame-&gt;exec(), exception);?

&gt; Source/WebCore/bindings/js/ScriptDebugServer.h:114
&gt; +    int m_hitCount;

unsigned?

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:280
&gt; +    for (ScriptBreakpointAction action : breakpointActions)

If you do &quot;ScriptBreakpointAction&amp; action&quot; in this range iterator that would avoid a copy.

NOTE: Benjamin also mentions that a typical indexed for loop compiles to be slightly more efficient then the range based loop at this time. I think range is fine for this likely to be small array, but avoiding copies would be nice.

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:336
&gt; +    for (ScriptBreakpointAction action : breakpointActions)

Ditto

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:360
&gt; +        for (auto action : breakpointActions)

Ditto

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:685
&gt; +        .setTimestamp(WTF::currentTimeMS())

Nit: WTF:: not needed here. You can leave it in if you want.

We may want to look into switching everything to monotonicallyIncreasingTime. My understanding is that it is faster.

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:711
&gt; +    for (String identifier : breakpointIdentifiers)

Ditto

&gt; LayoutTests/ChangeLog:13
&gt; +        * inspector-protocol/debugger/setProbe-multiple-actions-expected.txt: Added.
&gt; +        * inspector-protocol/debugger/setProbe-multiple-actions.html: Added.

I would prefer if these were named

    inspector-protocol/&lt;agent&gt;/&lt;method-or-event&gt;-&lt;extra-info&gt;.html

So in this case, probably:

    inspector-protocol/debugger/didSampleProbe-multiple-probes.html

&gt; LayoutTests/inspector-protocol/debugger/setProbe-multiple-actions.html:61
&gt; +                breakpointIdentifier = responseObject.result.breakpointId;

Nit: remove unused variable

&gt; LayoutTests/inspector-protocol/debugger/setProbe-multiple-actions.html:62
&gt; +                actionIdentifiers = responseObject.result.breakpointActionIdentifiers;

Nit: var

&gt; LayoutTests/inspector-protocol/debugger/setProbe-multiple-actions.html:97
&gt; +&lt;p&gt;Debugger.setBreakpoint options.actions&lt;/p&gt;

Nit: A better description here.

    Debugger.setBreakpoint with multiple probes. Test Debugger.didSampleProbe events for the probes.

&gt; LayoutTests/inspector-protocol/resources/probe-helper.js:12
&gt; +    var sample = {
&gt; +        probeId: data.probeId,
&gt; +        batchId: data.batchId,
&gt; +        sampleId: data.sampleId,
&gt; +        payload: data.payload
&gt; +    }
&gt; +    return sample;

Style: how about just returning { .. } without the &quot;sample&quot; local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968477</commentid>
    <comment_count>4</comment_count>
      <attachid>221308</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-01-15 14:42:22 -0800</bug_when>
    <thetext>Created attachment 221308
patch with fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968491</commentid>
    <comment_count>5</comment_count>
      <attachid>221308</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-15 15:18:28 -0800</bug_when>
    <thetext>Comment on attachment 221308
patch with fixes

Clearing flags on attachment: 221308

Committed r162096: &lt;http://trac.webkit.org/changeset/162096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968492</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-15 15:18:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221071</attachid>
            <date>2014-01-13 12:08:39 -0800</date>
            <delta_ts>2014-01-15 14:42:20 -0800</delta_ts>
            <desc>v1</desc>
            <filename>bug-126668-20140113120843.patch</filename>
            <type>text/plain</type>
            <size>47334</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NzJjNTMwZWJkYWRmMWY1NWI2MDdlYjk4NDUwM2U2NmNjM2FhODBkLi40MWNjYTY4NzYxNjQzMjZm
NWNmNmU1YzViMTk4ZjUyN2YyYmUyY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNC0wMS0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBjYXB0dXJlIHByb2JlIHNhbXBsZXMgb24gdGhlIGJhY2tl
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjY2
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0
aGUgJ3Byb2JlJyBicmVha3BvaW50IGFjdGlvbiB0byB0aGUgcHJvdG9jb2wuIENoYW5nZSB0aGUg
c2V0QnJlYWtwb2ludAorICAgICAgICBjb21tYW5kcyB0byByZXR1cm4gYSBsaXN0IG9mIGFzc2ln
bmVkIGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXJzCisgICAgICAgIEFkZCBhIHR5cGUgZm9y
IGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXJzLiBBZGQgYW4gZXZlbnQgZm9yIHNlbmRpbmcK
KyAgICAgICAgY2FwdHVyZWQgcHJvYmUgc2FtcGxlcyB0byB0aGUgaW5zcGVjdG9yIGZyb250ZW5k
LgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb246CisKIDIwMTQt
MDEtMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcHJvdG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBzdXBwb3J0IGludGVnZXItdHlwZWQgZGVj
bGFyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM1MzhlMDNjNWIyZjEyNzVjN2NlOGI1YzkzMDkwN2Iw
ZjRiYTAzMy4uNGY5ODk1YzY0OTliZmY2M2JjNzAyZDZkMGVhY2I5YTVmYTY0ZGY1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNhcHR1cmUgcHJvYmUgc2FtcGxlcyBv
biB0aGUgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI2NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldFByb2JlLW11bHRpcGxl
LWFjdGlvbnMuaHRtbAorCisgICAgICAgIEFkZCB0aGUgcHJvYmUgYnJlYWtwb2ludCBhY3Rpb24g
dHlwZS4gQSBwcm9iZSBhY3Rpb24KKyAgICAgICAgZXZhbHVhdGVzIGFuIGV4cHJlc3Npb24gb24g
dGhlIHNjcmlwdCBjYWxsIGZyYW1lLCBhbmQKKyAgICAgICAgdGhlIHJlc3VsdCBpcyBhZ2dyZWdh
dGVkIG9uIGEgcGVyLXByb2JlIGJhc2lzLiBFYWNoCisgICAgICAgIGV2YWx1YXRlZCBleHByZXNz
aW9uIHJlc3VsdCBpcyBjYWxsZWQgYSBwcm9iZSBzYW1wbGUuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKTogVGVhY2gKKyAgICAgICAgdGhlIGRl
YnVnIHNlcnZlciB0byBldmFsdWF0ZSBhIHByb2JlLgorCisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRTYW1wbGVQcm9iZSk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZUJyZWFrcG9pbnRIaXQpOiBJbmNyZW1l
bnQgYSBoaXQgY291bnQuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0
QWN0aW9uc0ZvckJyZWFrcG9pbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKTogQWRk
ZWQuIENyZWF0ZSBhbiBvYmplY3QKKyAgICAgICAgZ3JvdXAgZm9yIGVhY2ggYnJlYWtwb2ludCBh
Y3Rpb24uIEN1cnJlbnRseSBvbmx5IHByb2JlcyBtYWtlIG9iamVjdHMuCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKTogUmVtb3ZlIHN0YWxl
IGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmlu
Zyk6IEFkZCBuZXcgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKTogTWFrZQorICAgICAgICB0aGlzIGEg
bWVtYmVyIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBzdGF0aWMgZnVuY3Rpb24sIHNvIGl0IGNhbiBp
bmNyZW1lbnQKKyAgICAgICAgdGhlIGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXIgY291bnRl
ci4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnRCeVVybCk6IFByb3BhZ2F0ZSB0aGUKKyAgICAgICAgYXNzaWduZWQgYnJlYWtwb2ludCBhY3Rp
b24gaWRlbnRpZmllcnMuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRCcmVha3BvaW50KTogUHJvcGFnYXRlIHRoZQorICAgICAgICBhc3NpZ25lZCBicmVha3Bv
aW50IGFjdGlvbiBpZGVudGlmaWVycy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQpOiBSZWxlYXNlIG9iamVjdAorICAgICAgICBncm91
cHMgZm9yIGFueSBhY3Rpb25zIHRoYXQgd2VyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW92ZWQg
YnJlYWtwb2ludC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
ZFNhbXBsZVByb2JlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpjbGVhclJlc29sdmVkQnJlYWtwb2ludFN0YXRlKTogUmVuYW1lZCBmcm9tIGNsZWFy
KCkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDbGVhckds
b2JhbE9iamVjdCk6IFJlbmFtZWQgZnJvbSByZXNldCgpLgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDbGVh
ck1haW5GcmFtZVdpbmRvd09iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdEJyZWFr
cG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb246OlNjcmlw
dEJyZWFrcG9pbnRBY3Rpb24pOiBBZGQgaWRlbnRpZmllciBtZW1iZXIuCisgICAgICAgICogaW5z
cGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaDoKKwogMjAxNC0wMS0xMiAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGNyZWF0aW9uIG9m
IFhNTEh0dHBSZXF1ZXN0U3RhdGljRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggZWFh
OWJiMjVmNTIyNWM1ZTk3OWVmMjMzNWQ4YzZhZTdjMmRlN2NiYS4uMGNlOGM4ZTVmZWVlYmQzOTli
ZmNkYjg1NWM5OWQ0N2RlYjNjYjY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTQtMDEtMTIgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogY2FwdHVyZSBwcm9iZSBzYW1wbGVzIG9uIHRoZSBiYWNrZW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY2NjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFuZHMuanM6CisKIDIwMTQtMDEtMTAgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBSZW1vdmUgdW5pbXBsZW1lbnRlZCBvciBzdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXIgZmVh
dHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvRGVidWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvRGVidWdnZXIuanNvbgppbmRleCBmMWQ5NTdiN2U1YjU0ZWU5YTQ4ZDBkNTNiN2MyNzJjYWFi
NDIwMDUyLi40NDBkOTUwOTM0N2FhYmMwMWIyZjdmM2YzNThiZTVmOTY3MjhkZTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpz
b24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dl
ci5qc29uCkBAIC04LDYgKzgsMTEgQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJCcmVh
a3BvaW50IGlkZW50aWZpZXIuIgogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAi
aWQiOiAiQnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIiLAorICAgICAgICAgICAgInR5cGUiOiAi
aW50ZWdlciIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQnJlYWtwb2ludCBhY3Rpb24g
aWRlbnRpZmllci4iCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJT
Y3JpcHRJZCIsCiAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlVuaXF1ZSBzY3JpcHQgaWRlbnRpZmllci4iCkBAIC0zMSw3ICszNiw3IEBA
CiAgICAgICAgICAgICAiaWQiOiAiQnJlYWtwb2ludEFjdGlvbiIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ0eXBlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImxvZyIsICJl
dmFsdWF0ZSIsICJzb3VuZCJdLCAiZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IGtpbmRzIG9mIGJy
ZWFrcG9pbnQgYWN0aW9ucy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwg
InR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImxvZyIsICJldmFsdWF0ZSIsICJzb3VuZCIsICJw
cm9iZSJdLCAiZGVzY3JpcHRpb24iOiAiRGlmZmVyZW50IGtpbmRzIG9mIGJyZWFrcG9pbnQgYWN0
aW9ucy4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAic3Ry
aW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkRhdGEgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgYnJlYWtwb2ludCB0eXBlIChlLmcuIGZvciB0eXBlIFwiZXZhbFwiIHRoaXMgaXMg
dGhlIEphdmFTY3JpcHQgc3RyaW5nIHRvIGV2YWx1bGF0ZSkuIiB9CiAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFjdGlvbiB0byBwZXJmb3JtIHdoZW4gYSBicmVh
a3BvaW50IGlzIHRyaWdnZXJlZC4iCkBAIC03OCw2ICs4MywxNyBAQAogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAib2JqZWN0IiwgIiRyZWYiOiAiUnVudGltZS5SZW1vdGVPYmplY3QiLCAiZGVz
Y3JpcHRpb24iOiAiT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc2NvcGUuIEZvciA8Y29kZT5nbG9i
YWw8L2NvZGU+IGFuZCA8Y29kZT53aXRoPC9jb2RlPiBzY29wZXMgaXQgcmVwcmVzZW50cyB0aGUg
YWN0dWFsIG9iamVjdDsgZm9yIHRoZSByZXN0IG9mIHRoZSBzY29wZXMsIGl0IGlzIGFydGlmaWNp
YWwgdHJhbnNpZW50IG9iamVjdCBlbnVtZXJhdGluZyBzY29wZSB2YXJpYWJsZXMgYXMgaXRzIHBy
b3BlcnRpZXMuIiB9CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlNjb3BlIGRlc2NyaXB0aW9uLiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
ImlkIjogIlByb2JlU2FtcGxlIiwKKyAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAg
ICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInByb2Jl
SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhl
ICdwcm9iZScgYnJlYWtwb2ludCBhY3Rpb24gdGhhdCBjcmVhdGVkIHRoZSBzYW1wbGUuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2FtcGxlSWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHNhbXBsZS4iIH0sCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiYXRjaElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJBIGJhdGNoIGlkZW50aWZpZXIgd2hpY2ggaXMgdGhlIHNhbWUgZm9yIGFs
bCBzYW1wbGVzIHRha2VuIGF0IHRoZSBzYW1lIGJyZWFrcG9pbnQgaGl0LiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInRpbWVzdGFtcCIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlw
dGlvbiI6ICJUaW1lc3RhbXAgb2Ygd2hlbiB0aGUgc2FtcGxlIHdhcyB0YWtlbi4iIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJwYXlsb2FkIiwgIiRyZWYiOiAiUnVudGltZS5SZW1vdGVP
YmplY3QiLCAiZGVzY3JpcHRpb24iOiAiQ29udGVudHMgb2YgdGhlIHNhbXBsZS4iIH0KKyAgICAg
ICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpAQCAtMTA3LDcg
KzEyMyw4IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgInJldHVybnMiOiBbCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJicmVha3BvaW50SWQiLCAiJHJlZiI6ICJCcmVha3BvaW50
SWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIGNyZWF0ZWQgYnJlYWtwb2ludCBmb3IgZnVy
dGhlciByZWZlcmVuY2UuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibG9jYXRpb25z
IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkxvY2F0aW9uIn0sICJkZXNj
cmlwdGlvbiI6ICJMaXN0IG9mIHRoZSBsb2NhdGlvbnMgdGhpcyBicmVha3BvaW50IHJlc29sdmVk
IGludG8gdXBvbiBhZGRpdGlvbi4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxvY2F0
aW9ucyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJMb2NhdGlvbiJ9LCAi
ZGVzY3JpcHRpb24iOiAiTGlzdCBvZiB0aGUgbG9jYXRpb25zIHRoaXMgYnJlYWtwb2ludCByZXNv
bHZlZCBpbnRvIHVwb24gYWRkaXRpb24uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
YnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXJzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyIiB9LCAiZGVzY3JpcHRpb24iOiAi
QXNzaWduZWQgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllcnMuIiB9CiAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldHMgSmF2YVNjcmlwdCBicmVha3BvaW50
IGF0IGdpdmVuIGxvY2F0aW9uIHNwZWNpZmllZCBlaXRoZXIgYnkgVVJMIG9yIFVSTCByZWdleC4g
T25jZSB0aGlzIGNvbW1hbmQgaXMgaXNzdWVkLCBhbGwgZXhpc3RpbmcgcGFyc2VkIHNjcmlwdHMg
d2lsbCBoYXZlIGJyZWFrcG9pbnRzIHJlc29sdmVkIGFuZCByZXR1cm5lZCBpbiA8Y29kZT5sb2Nh
dGlvbnM8L2NvZGU+IHByb3BlcnR5LiBGdXJ0aGVyIG1hdGNoaW5nIHNjcmlwdCBwYXJzaW5nIHdp
bGwgcmVzdWx0IGluIHN1YnNlcXVlbnQgPGNvZGU+YnJlYWtwb2ludFJlc29sdmVkPC9jb2RlPiBl
dmVudHMgaXNzdWVkLiBUaGlzIGxvZ2ljYWwgYnJlYWtwb2ludCB3aWxsIHN1cnZpdmUgcGFnZSBy
ZWxvYWRzLiIKICAgICAgICAgfSwKQEAgLTExOSw3ICsxMzYsOCBAQAogICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJl
YWtwb2ludElkIiwgIiRyZWYiOiAiQnJlYWtwb2ludElkIiwgImRlc2NyaXB0aW9uIjogIklkIG9m
IHRoZSBjcmVhdGVkIGJyZWFrcG9pbnQgZm9yIGZ1cnRoZXIgcmVmZXJlbmNlLiIgfSwKLSAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImFjdHVhbExvY2F0aW9uIiwgIiRyZWYiOiAiTG9jYXRpb24i
LCAiZGVzY3JpcHRpb24iOiAiTG9jYXRpb24gdGhpcyBicmVha3BvaW50IHJlc29sdmVkIGludG8u
IiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhY3R1YWxMb2NhdGlvbiIsICIkcmVmIjog
IkxvY2F0aW9uIiwgImRlc2NyaXB0aW9uIjogIkxvY2F0aW9uIHRoaXMgYnJlYWtwb2ludCByZXNv
bHZlZCBpbnRvLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJyZWFrcG9pbnRBY3Rp
b25JZGVudGlmaWVycyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJCcmVh
a3BvaW50QWN0aW9uSWRlbnRpZmllciIgfSwgImRlc2NyaXB0aW9uIjogIkFzc2lnbmVkIGJyZWFr
cG9pbnQgYWN0aW9uIGlkZW50aWZpZXJzLiIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJTZXRzIEphdmFTY3JpcHQgYnJlYWtwb2ludCBhdCBhIGdpdmVuIGxv
Y2F0aW9uLiIKICAgICAgICAgfSwKQEAgLTI3Myw2ICsyOTEsMTMgQEAKICAgICAgICAgewogICAg
ICAgICAgICAgIm5hbWUiOiAicmVzdW1lZCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RmlyZWQgd2hlbiB0aGUgdmlydHVhbCBtYWNoaW5lIHJlc3VtZWQgZXhlY3V0aW9uLiIKKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZGlkU2FtcGxlUHJvYmUiLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJz
YW1wbGUiLCAiJHJlZiI6ICJQcm9iZVNhbXBsZSIsICJkZXNjcmlwdGlvbiI6ICJBIGNvbGxlY3Rl
ZCBwcm9iZSBzYW1wbGUuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRmlyZXMgd2hlbiBhIG5ldyBwcm9iZSBzYW1wbGUgaXMgY29sbGVjdGVkLiIKICAgICAg
ICAgfQogICAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcAppbmRleCBjOTczZGM3OWIwN2RkOWQxNTg2YTAxZTY0Y2MwOTJmYWM2MWZi
ZWNjLi5kZTVhMTBlOGQxMDVmODNmNWJiZTcyN2M5NWEyMmQ0YTg5ODM0ZDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0xLDYg
KzEsNyBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDYgKzQ1LDggQEAKICNpbmNsdWRl
IDxwYXJzZXIvU291cmNlUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtOTAsNyArOTMsNyBAQCB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludElE
IGlkKQogICAgIERlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50KGlkKTsKIH0KIAotYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb24mIGJyZWFrcG9pbnRBY3Rpb24pIGNvbnN0Citib29sIFNjcmlwdERlYnVnU2Vy
dmVyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlv
biYgYnJlYWtwb2ludEFjdGlvbikKIHsKICAgICBEZWJ1Z2dlckNhbGxGcmFtZSogZGVidWdnZXJD
YWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKICAgICBzd2l0Y2ggKGJyZWFr
cG9pbnRBY3Rpb24udHlwZSkgewpAQCAtMTEwLDYgKzExMywyMSBAQCBib29sIFNjcmlwdERlYnVn
U2VydmVyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFj
dGlvbiYgYgogICAgIGNhc2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDoKICAgICAg
ICAgc3lzdGVtQmVlcCgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb25UeXBlUHJvYmU6IHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gZGVidWdnZXJDYWxsRnJhbWUtPmV2YWx1YXRlKGJyZWFrcG9pbnRB
Y3Rpb24uZGF0YSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAg
ICAgICAgSW50ZXJwcmV0ZXI6OkVycm9ySGFuZGxpbmdNb2RlIG1vZGUoZGVidWdnZXJDYWxsRnJh
bWUtPmV4ZWMoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIHN1cHBseSB0aGUg
ZXhjZXB0aW9uIGNhbGwgc3RhY2sgdG8gdGhlIGZyb250ZW5kLgorICAgICAgICAgICAgZGVidWdn
ZXJDYWxsRnJhbWUtPmV4ZWMoKS0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIGRlYnVn
Z2VyQ2FsbEZyYW1lLT5leGVjKCktPmNsZWFyU3VwcGxlbWVudGFyeUV4Y2VwdGlvbkluZm8oKTsK
KyAgICAgICAgfQorCisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSA9IGRlYnVnZ2VyQ2Fs
bEZyYW1lLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB3cmFwcGVkUmVzdWx0ID0gRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUoc3RhdGUtPnZtKCksIGV4Y2VwdGlvbiA/IGV4Y2VwdGlvbiA6IHJlc3VsdCk7CisgICAg
ICAgIGRpc3BhdGNoRGlkU2FtcGxlUHJvYmUoc3RhdGUsIGJyZWFrcG9pbnRBY3Rpb24uaWRlbnRp
Zmllciwgd3JhcHBlZFJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTE0MCw2ICsxNTgsMjQgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKICAgICBs
aXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLT52
bSgpLCBqc0NhbGxGcmFtZSksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCkpOwogfQogCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFNhbXBsZVByb2JlKEV4ZWNTdGF0ZSogZXhl
YywgaW50IGlkZW50aWZpZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzYW1wbGUp
Cit7CisgICAgaWYgKG1fY2FsbGluZ0xpc3RlbmVycykKKyAgICAgICAgcmV0dXJuOworCisgICAg
TGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9IGdldExpc3RlbmVyc0Zvckdsb2JhbE9iamVjdChleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghbGlzdGVuZXJzKQorICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlzRW1wdHkoKSk7CisKKyAgICBUZW1wb3Jh
cnlDaGFuZ2U8Ym9vbD4gY2hhbmdlKG1fY2FsbGluZ0xpc3RlbmVycywgdHJ1ZSk7CisKKyAgICBW
ZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGxpc3RlbmVyc0NvcHk7CisgICAgY29weVRvVmVj
dG9yKCpsaXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOworICAgIGZvciAoYXV0byBsaXN0ZW5lciA6
IGxpc3RlbmVyc0NvcHkpCisgICAgICAgIGxpc3RlbmVyLT5kaWRTYW1wbGVQcm9iZShleGVjLCBp
ZGVudGlmaWVyLCBtX2hpdENvdW50LCBzYW1wbGUpOworfQorCiB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpkaXNwYXRjaERpZENvbnRpbnVlKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQog
ewogICAgIGxpc3RlbmVyLT5kaWRDb250aW51ZSgpOwpAQCAtMjUxLDYgKzI4Nyw3IEBAIGJvb2wg
U2NyaXB0RGVidWdTZXJ2ZXI6Om5lZWRQYXVzZUhhbmRsaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZUJyZWFrcG9pbnRIaXQo
Y29uc3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50KQogeworICAgIG1faGl0Q291bnQrKzsK
ICAgICBCcmVha3BvaW50SURUb0FjdGlvbnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9icmVha3BvaW50
SURUb0FjdGlvbnMuZmluZChicmVha3BvaW50LmlkKTsKICAgICBpZiAoaXQgIT0gbV9icmVha3Bv
aW50SURUb0FjdGlvbnMuZW5kKCkpIHsKICAgICAgICAgQnJlYWtwb2ludEFjdGlvbnMmIGFjdGlv
bnMgPSBpdC0+dmFsdWU7CkBAIC0yOTAsNiArMzI3LDE3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zVGltZXJGaXJlZChUaW1lcjxTY3JpcHREZWJ1Z1Nl
cnZlCiAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKIH0KIAorY29uc3QgVmVjdG9yPFNj
cmlwdEJyZWFrcG9pbnRBY3Rpb24+JiBTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0QWN0aW9uc0ZvckJy
ZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQgYnJlYWtwb2ludElEKQoreworICAgIEFTU0VSVChi
cmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7CisKKyAgICBpZiAobV9icmVha3Bv
aW50SURUb0FjdGlvbnMuY29udGFpbnMoYnJlYWtwb2ludElEKSkKKyAgICAgICAgcmV0dXJuIG1f
YnJlYWtwb2ludElEVG9BY3Rpb25zLmZpbmQoYnJlYWtwb2ludElEKS0+dmFsdWU7CisgICAgCisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPj4g
ZW1wdHlBY3Rpb25WZWN0b3IgPSBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4oKTsKKyAg
ICByZXR1cm4gZW1wdHlBY3Rpb25WZWN0b3I7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZWI5MGRjOTllZmZlMjJl
MzhlNGU3MDdkZDBkYmY1YTMwMDdjZTY1Mi4uY2RjZGVmMWEyMTMxZGY4ZmE3YTUxMDMzZmM0NjA0
MzFlYWE5MTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zU29vbigpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0
aW9ucygpID0gMDsKIAorICAgIGNvbnN0IFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiYg
Z2V0QWN0aW9uc0ZvckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQpOworCiAgICAgY2xhc3Mg
VGFzayB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKQEAg
LTg0LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIGlzQ29udGVudFNj
cmlwdChKU0M6OkV4ZWNTdGF0ZSopOwogCi0gICAgYm9vbCBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rp
b24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYpIGNvbnN0OworICAgIGJvb2wgZXZhbHVh
dGVCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mKTsKIAogICAg
IHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxs
YmFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRv
TGlzdGVuZXJzKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVjdXRp
b25DYWxsYmFjayBjYWxsYmFjayk7CkBAIC05Miw2ICs5NCw3IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIGRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciopOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKU0M6
OlNvdXJjZVByb3ZpZGVyKiwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpOwogICAgIHZvaWQgZGlzcGF0
Y2hGYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEpTQzo6
U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7CisgICAgdm9pZCBkaXNwYXRjaERpZFNhbXBsZVByb2JlKEpTQzo6RXhlY1N0YXRlKiwgaW50
IHByb2JlSWRlbnRpZmllciwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNhbXBsZSk7
CiAKICAgICBib29sIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50czsKIApAQCAtMTA4LDYg
KzExMSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zVGlt
ZXJGaXJlZChUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4mKTsKIAorICAgIGludCBtX2hpdENvdW50
OwogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwogICAgIEJyZWFrcG9pbnRJRFRvQWN0aW9u
c01hcCBtX2JyZWFrcG9pbnRJRFRvQWN0aW9uczsKICAgICBUaW1lcjxTY3JpcHREZWJ1Z1NlcnZl
cj4gbV9yZWNvbXBpbGVUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1MDE1ZGYyYjc5Zjc0Y2IyZGY2NjI0NDA4
NGUzZGRiYjllNzE0Zjc1Li44MGJjMzYwMTk3ZjUzMmMyMWU0N2YxN2I2ZTZmNzIwOWJjODdiMjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCkBAIC01NiwxNCArNTYsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dCBjaGFyKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCA9ICJi
YWNrdHJhY2UiOwogCitzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlv
bihpbnQgaWRlbnRpZmllcikKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgb2JqZWN0R3JvdXAsICgiYnJlYWtwb2ludC1hY3Rpb24tIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKG9iamVjdEdy
b3VwLCBTdHJpbmc6Om51bWJlcihpZGVudGlmaWVyKSk7Cit9CisKIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIpLCBp
bnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9wYXVzZWRTY3JpcHRTdGF0ZSgwKQorICAgICwgbV9w
YXVzZWRTY3JpcHRTdGF0ZShudWxscHRyKQogICAgICwgbV9jb250aW51ZVRvTG9jYXRpb25CcmVh
a3BvaW50SUQoSlNDOjpub0JyZWFrcG9pbnRJRCkKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKICAg
ICAsIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkKGZhbHNlKQotICAgICwgbV9saXN0ZW5lcigw
KQorICAgICwgbV9saXN0ZW5lcihudWxscHRyKQorICAgICwgbV9uZXh0UHJvYmVTYW1wbGVJZCgx
KQorICAgICwgbV9uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIoMSkKIHsKICAgICAvLyBG
SVhNRTogbWFrZSBicmVha1JlYXNvbiBvcHRpb25hbCBzbyB0aGF0IHRoZXJlIHdhcyBubyBuZWVk
IHRvIGluaXQgaXQgd2l0aCAib3RoZXIiLgogICAgIGNsZWFyQnJlYWtEZXRhaWxzKCk7CkBAIC03
OCw3ICs4Niw2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7
CiAKLSAgICAvLyBGSVhNRShXSzQ0NTEzKTogYnJlYWtwb2ludHMgYWN0aXZhdGVkIGZsYWcgc2hv
dWxkIGJlIHN5bmNocm9uaXplZCBiZXR3ZWVuIGFsbCBmcm9udC1lbmRzCiAgICAgc2NyaXB0RGVi
dWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsKICAgICBzdGFydExpc3Rl
bmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CiAKQEAgLTkxLDEyICs5OCwxMCBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSgpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmRpc2FibGUoKQogewogICAgIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzLmNsZWFyKCk7Ci0gICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KDApOworICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGVidWdnZXJBZ2VudChudWxscHRy
KTsKIAogICAgIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpOwotICAgIHNjcmlwdERl
YnVnU2VydmVyKCkuY2xlYXJCcmVha3BvaW50cygpOwotICAgIHNjcmlwdERlYnVnU2VydmVyKCku
Y29udGludWVQcm9ncmFtKCk7Ci0gICAgY2xlYXIoKTsKKyAgICBjbGVhclJlc29sdmVkQnJlYWtw
b2ludFN0YXRlKCk7CiAKICAgICBpZiAobV9saXN0ZW5lcikKICAgICAgICAgbV9saXN0ZW5lci0+
ZGVidWdnZXJXYXNEaXNhYmxlZCgpOwpAQCAtMTkzLDExICsxOTgsMTUgQEAgc3RhdGljIGJvb2wg
YnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBT
Y3JpcHRCcmVha3AKICAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBl
U291bmQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAodHlwZVN0cmluZyA9
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpnZXRKU0VudW1Db25zdGFudFZhbHVlKEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpQcm9iZSkp
IHsKKyAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3Rh
dGljIGJvb2wgYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rpb25zLCBWZWN0b3I8U2NyaXB0QnJl
YWtwb2ludEFjdGlvbj4qIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rpb25zLCBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlv
bj4qIHJlc3VsdCkKIHsKICAgICBpZiAoIWFjdGlvbnMpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMjMwLDEzICsyMzksMTMgQEAgc3RhdGljIGJvb2wgYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJv
dG9jb2woRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGUKICAgICAgICAgU3Ry
aW5nIGRhdGE7CiAgICAgICAgIG9iamVjdC0+Z2V0U3RyaW5nKCJkYXRhIiwgJmRhdGEpOwogCi0g
ICAgICAgIHJlc3VsdC0+YXBwZW5kKFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24odHlwZSwgZGF0YSkp
OworICAgICAgICByZXN1bHQtPmFwcGVuZChTY3JpcHRCcmVha3BvaW50QWN0aW9uKHR5cGUsIG1f
bmV4dEJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKyssIGRhdGEpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVS
TFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
ZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBjb25zdCBv
cHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb25JZGVudGlmaWVyPj4mIGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVycykKIHsKICAg
ICBsb2NhdGlvbnMgPSBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJl
Z2V4KSB7CkBAIC0yNjcsNiArMjc2LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpCiAgICAg
aWYgKCFicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChlcnJvclN0cmluZywgYWN0aW9ucywg
JmJyZWFrcG9pbnRBY3Rpb25zKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYnJlYWtwb2ludEFj
dGlvbklkZW50aWZpZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyPjo6Y3Jl
YXRlKCk7CisgICAgZm9yIChTY3JpcHRCcmVha3BvaW50QWN0aW9uIGFjdGlvbiA6IGJyZWFrcG9p
bnRBY3Rpb25zKQorICAgICAgICBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMtPmFkZEl0ZW0o
YWN0aW9uLmlkZW50aWZpZXIpOworCiAgICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuc2V0KGJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUodXJsLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYWN0aW9ucywgaXNSZWdleCwgYXV0
b0NvbnRpbnVlKSk7CiAKICAgICBTY3JpcHRCcmVha3BvaW50IGJyZWFrcG9pbnQobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGJyZWFrcG9pbnRBY3Rpb25zLCBhdXRvQ29udGlu
dWUpOwpAQCAtMjk3LDcgKzMxMCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGxvY2F0aW9uLCBKCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25z
LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVh
a3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rp
b25JZGVudGlmaWVyPj4mIGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVycykKIHsKICAgICBKU0M6
OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CkBAIC0zMTgsNiAr
MzMxLDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0CiAgICAgVmVjdG9yPFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb24+IGJyZWFrcG9pbnRBY3Rpb25zOwogICAgIGlmICghYnJlYWtwb2ludEFjdGlv
bnNGcm9tUHJvdG9jb2woZXJyb3JTdHJpbmcsIGFjdGlvbnMsICZicmVha3BvaW50QWN0aW9ucykp
CiAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMg
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXI+OjpjcmVhdGUoKTsKKyAgICBmb3Ig
KFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24gYWN0aW9uIDogYnJlYWtwb2ludEFjdGlvbnMpCisgICAg
ICAgIGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVycy0+YWRkSXRlbShhY3Rpb24uaWRlbnRpZmll
cik7CiAKICAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBTdHJpbmc6Om51bWJlcihz
b3VyY2VJRCkgKyAnOicgKyBTdHJpbmc6Om51bWJlcihsaW5lTnVtYmVyKSArICc6JyArIFN0cmlu
Zzo6bnVtYmVyKGNvbHVtbk51bWJlcik7CiAgICAgaWYgKG1fYnJlYWtwb2ludElkZW50aWZpZXJU
b0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5maW5kKGJyZWFrcG9pbnRJZGVudGlmaWVyKSAhPSBt
X2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuZW5kKCkpIHsK
QEAgLTMzNywxMiArMzU0LDE0IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3Zl
QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwCiB7CiAgICAgbV9q
YXZhU2NyaXB0QnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKIAotICAg
IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXA6Oml0ZXJh
dG9yIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yID0gbV9icmVha3BvaW50SWRlbnRp
ZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmZpbmQoYnJlYWtwb2ludElkZW50aWZpZXIp
OwotICAgIGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9PSBtX2JyZWFrcG9p
bnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuZW5kKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVnU2VydmVyQnJlYWtwb2ludElE
c0l0ZXJhdG9yLT52YWx1ZS5zaXplKCk7ICsraSkKLSAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIo
KS5yZW1vdmVCcmVha3BvaW50KGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yLT52YWx1
ZVtpXSk7Ci0gICAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50
SURzLnJlbW92ZShkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvcik7CisgICAgVmVjdG9y
PEpTQzo6QnJlYWtwb2ludElEPiBicmVha3BvaW50SURzID0gbV9icmVha3BvaW50SWRlbnRpZmll
clRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLnRha2UoYnJlYWtwb2ludElkZW50aWZpZXIpOwor
ICAgIGZvciAoYXV0byBicmVha3BvaW50SUQgOiBicmVha3BvaW50SURzKSB7CisgICAgICAgIGNv
bnN0IFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiYgYnJlYWtwb2ludEFjdGlvbnMgPSBz
Y3JpcHREZWJ1Z1NlcnZlcigpLmdldEFjdGlvbnNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnRJRCk7
CisgICAgICAgIGZvciAoYXV0byBhY3Rpb24gOiBicmVha3BvaW50QWN0aW9ucykKKyAgICAgICAg
ICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3Jv
dXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlvbi5pZGVudGlmaWVyKSk7CisKKyAgICAgICAgc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJRCk7CisgICAgfQog
fQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2Nh
dGlvbikKQEAgLTY1Myw2ICs2NzIsMjIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2EKICAgICAg
ICAgbV9saXN0ZW5lci0+ZGlkUGF1c2UoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkaWRTYW1wbGVQcm9iZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGludCBwcm9i
ZUlkZW50aWZpZXIsIGludCBoaXRDb3VudCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IHNhbXBsZSkKK3sKKyAgICBpbnQgc2FtcGxlSWQgPSBtX25leHRQcm9iZVNhbXBsZUlkKys7CisK
KyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHBheWxvYWQgPSBpbmplY3RlZFNjcmlwdC53cmFw
T2JqZWN0KHNhbXBsZSwgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKHByb2JlSWRlbnRp
ZmllcikpOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlByb2JlU2FtcGxlPiBy
ZXN1bHQgPSBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OlByb2JlU2FtcGxlOjpjcmVhdGUoKQorICAg
ICAgICAuc2V0UHJvYmVJZChwcm9iZUlkZW50aWZpZXIpCisgICAgICAgIC5zZXRTYW1wbGVJZChz
YW1wbGVJZCkKKyAgICAgICAgLnNldEJhdGNoSWQoaGl0Q291bnQpCisgICAgICAgIC5zZXRUaW1l
c3RhbXAoV1RGOjpjdXJyZW50VGltZU1TKCkpCisgICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQu
cmVsZWFzZSgpKTsKKworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kaWRTYW1wbGVQcm9iZShy
ZXN1bHQucmVsZWFzZSgpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRD
b250aW51ZSgpCiB7CiAgICAgbV9wYXVzZWRTY3JpcHRTdGF0ZSA9IDA7CkBAIC02NjgsMTcgKzcw
MywyNCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UgogICAgIHNjcmlwdERlYnVnU2VydmVyKCku
YnJlYWtQcm9ncmFtKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXIo
KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhclJlc29sdmVkQnJlYWtwb2ludFN0
YXRlKCkKIHsKLSAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gMDsKKyAgICBFcnJvclN0cmluZyBk
dW1teUVycm9yOworICAgIFZlY3RvcjxTdHJpbmc+IGJyZWFrcG9pbnRJZGVudGlmaWVyczsKKyAg
ICBjb3B5S2V5c1RvVmVjdG9yKG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJl
YWtwb2ludElEcywgYnJlYWtwb2ludElkZW50aWZpZXJzKTsKKyAgICBmb3IgKFN0cmluZyBpZGVu
dGlmaWVyIDogYnJlYWtwb2ludElkZW50aWZpZXJzKQorICAgICAgICByZW1vdmVCcmVha3BvaW50
KCZkdW1teUVycm9yLCBpZGVudGlmaWVyKTsKKworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuY29u
dGludWVQcm9ncmFtKCk7CisKKyAgICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gbnVsbHB0cjsKICAg
ICBtX2N1cnJlbnRDYWxsU3RhY2sgPSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIG1f
c2NyaXB0cy5jbGVhcigpOwogICAgIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVy
QnJlYWtwb2ludElEcy5jbGVhcigpOwogICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2lu
dElEID0gSlNDOjpub0JyZWFrcG9pbnRJRDsKICAgICBjbGVhckJyZWFrRGV0YWlscygpOwogICAg
IG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkID0gZmFsc2U7Ci0gICAgRXJyb3JTdHJpbmcgZXJy
b3I7Ci0gICAgc2V0T3ZlcmxheU1lc3NhZ2UoJmVycm9yLCAwKTsKKyAgICBzZXRPdmVybGF5TWVz
c2FnZSgmZHVtbXlFcnJvciwgbnVsbHB0cik7CiB9CiAKIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKQEAgLTY5NiwxMyAr
NzM4LDEyIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJCcmVha0RldGFpbHMo
KQogICAgIG1fYnJlYWtBdXhEYXRhID0gMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZXNldCgpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENsZWFyR2xvYmFs
T2JqZWN0KCkKIHsKLSAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmNsZWFyQnJlYWtwb2ludHMoKTsK
LSAgICBtX3NjcmlwdHMuY2xlYXIoKTsKLSAgICBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJRHMuY2xlYXIoKTsKICAgICBpZiAobV9mcm9udGVuZERpc3BhdGNo
ZXIpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5nbG9iYWxPYmplY3RDbGVhcmVkKCk7
CisKKyAgICBjbGVhclJlc29sdmVkQnJlYWtwb2ludFN0YXRlKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCmluZGV4IDY2NjRmNzg0NDY4MmJkYWM0NmFlMThhMGI4MzM3OTBlZTdiNDU2
OWUuLjA3ZGY0N2Q2NGE3NzQ2YjM3YjA4MGQyNDEzMGU2MGQ5NGQ4ZjE3M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODEs
OCArODEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBi
b29sIGFjdGl2ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9y
U3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJl
ciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2lu
dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
IGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRp
b25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExv
Y2F0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5n
KiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+PiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb25JZGVudGlm
aWVyPj4mIGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVycyk7CisgICAgdmlydHVhbCB2b2lkIHNl
dEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9p
bnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
JiBhY3R1YWxMb2NhdGlvbiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cj4+JiBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMpOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRp
Zmllcik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKIApA
QCAtMTM4LDE5ICsxMzgsMjIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBleGNlcHRpb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOwotICAg
IHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIGRpZENsZWFyR2xvYmFsT2JqZWN0KCk7CiAKIHByaXZh
dGU6CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25z
dCBTY3JpcHQmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJz
ZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RM
aW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgT1ZFUlJJREUg
RklOQUw7CisgICAgdmlydHVhbCB2b2lkIGRpZFNhbXBsZVByb2JlKEpTQzo6RXhlY1N0YXRlKiwg
aW50IHByb2JlSWRlbnRpZmllciwgaW50IGhpdENvdW50LCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgc2FtcGxlKSBPVkVSUklERSBGSU5BTDsKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBKU0M6OlNvdXJjZUlELCBjb25zdCBT
Y3JpcHRCcmVha3BvaW50Jik7Ci0gICAgdm9pZCBjbGVhcigpOwogICAgIGJvb2wgYXNzZXJ0UGF1
c2VkKEVycm9yU3RyaW5nKik7CisgICAgdm9pZCBjbGVhclJlc29sdmVkQnJlYWtwb2ludFN0YXRl
KCk7CiAgICAgdm9pZCBjbGVhckJyZWFrRGV0YWlscygpOwogCisgICAgYm9vbCBicmVha3BvaW50
QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYgYWN0aW9ucywgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24+KiByZXN1
bHQpOworCiAgICAgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmKTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxKU0M6OlNvdXJjZUlELCBTY3JpcHQ+IFNjcmlwdHNNYXA7
CkBAIC0xNzEsNiArMTc0LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBi
b29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkOwogICAgIExpc3RlbmVyKiBtX2xpc3RlbmVy
OworICAgIGludCBtX25leHRQcm9iZVNhbXBsZUlkOworICAgIGludCBtX25leHRCcmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGJjYjM0ZjQ5
NWMzYjhjYzBlZjQwZTRlOWU0NTlhNzI0YzZkNTI2Y2UuLjZmOGYzNzI2ZTY5ZmE1N2I4MWNjNWEz
YmQwMTc0NDZjZGYzYjdmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdl
bnQ6OnNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKiBtZXNzYWdl
KQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVj
dCgpCiB7Ci0gICAgcmVzZXQoKTsKKyAgICBkaWRDbGVhckdsb2JhbE9iamVjdCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0QnJlYWtwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJy
ZWFrcG9pbnQuaAppbmRleCBlZmM1OWI5NTVhNmFkZTk2YjVhNDIyODM0MzBjOGY5MWQ1OGQ4MzNl
Li4xNTdmMWVmYzMwZDNiMjYwYmM0YmVmMDIyNWJjYWIyOGIwZmJkMTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmgKQEAgLTM4LDE3ICszOCwyMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIGVudW0gewogICAgIFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb25UeXBlTG9nLAogICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGUsCi0g
ICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZAorICAgIFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb25UeXBlU291bmQsCisgICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVQcm9iZQogfSBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZTsKIAogc3RydWN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b24gewotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24oU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQorICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24o
U2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUgdHlwZSwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZGF0YSkKICAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgaWRlbnRpZmllcihp
ZGVudGlmaWVyKQogICAgICAgICAsIGRhdGEoZGF0YSkKICAgICB7CiAgICAgfQogCiAgICAgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGUgdHlwZTsKKyAgICBpbnQgaWRlbnRpZmllcjsKICAgICBT
dHJpbmcgZGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdMaXN0ZW5lci5oCmluZGV4IDBmNDkzMjg4OTY0NjIwZjkwZWQ5MGNkNzBjZDgxM2NmMTRmMDNk
ODIuLjJhNDI0ZmZlZjdkMTdhZDRhMjBmOGU3OGI1NzQzODBlNzRhOGJjN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaApAQCAtNzEsNiArNzEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNl
SUQsIGNvbnN0IFNjcmlwdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNv
dXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5l
LCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhj
ZXB0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNhbXBsZVByb2JlKEpTQzo6RXhlY1N0
YXRlKiwgaW50IHByb2JlSWRlbnRpZmllciwgaW50IGhpdENvdW50LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgcmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVl
KCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbnNwZWN0b3JKU0JhY2tlbmRDb21tYW5kcy5qcwppbmRleCA5ZTMz
ZWM0M2Q5MWRhOTI1ZGM3YjMzOWFkYzk0NzYyNmQxZGIwYWJmLi41MWNhOGEwZjI0NGQxNzgwNjI3
NjgyYzJlNTllNDZlMGQzMjMzOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9JbnNwZWN0b3JKU0JhY2tlbmRDb21tYW5kcy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNwZWN0b3JKU0JhY2tlbmRDb21tYW5kcy5q
cwpAQCAtOCw3ICs4LDcgQEAKIAogLy8gRGVidWdnZXIuCiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lz
dGVyRGVidWdnZXJEaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRp
c3BhdGNoZXIuYmluZChJbnNwZWN0b3JCYWNrZW5kLCAiRGVidWdnZXIiKTsKLUluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJFbnVtKCJEZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZSIsIHtMb2c6
ICJsb2ciLCBFdmFsdWF0ZTogImV2YWx1YXRlIiwgU291bmQ6ICJzb3VuZCJ9KTsKK0luc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJEZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZSIsIHtM
b2c6ICJsb2ciLCBFdmFsdWF0ZTogImV2YWx1YXRlIiwgU291bmQ6ICJzb3VuZCIsIFByb2JlOiAi
cHJvYmUifSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiRGVidWdnZXIuU2NvcGVU
eXBlIiwge0dsb2JhbDogImdsb2JhbCIsIExvY2FsOiAibG9jYWwiLCBXaXRoOiAid2l0aCIsIENs
b3N1cmU6ICJjbG9zdXJlIiwgQ2F0Y2g6ICJjYXRjaCJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJFdmVudCgiRGVidWdnZXIuZ2xvYmFsT2JqZWN0Q2xlYXJlZCIsIFtdKTsKIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJFdmVudCgiRGVidWdnZXIuc2NyaXB0UGFyc2VkIiwgWyJzY3JpcHRJ
ZCIsICJ1cmwiLCAic3RhcnRMaW5lIiwgInN0YXJ0Q29sdW1uIiwgImVuZExpbmUiLCAiZW5kQ29s
dW1uIiwgImlzQ29udGVudFNjcmlwdCIsICJzb3VyY2VNYXBVUkwiLCAiaGFzU291cmNlVVJMIl0p
OwpAQCAtMTYsNiArMTYsNyBAQCBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQoIkRlYnVn
Z2VyLnNjcmlwdEZhaWxlZFRvUGFyc2UiLCBbInVybCIsICJzY3JpcHRTbwogSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckV2ZW50KCJEZWJ1Z2dlci5icmVha3BvaW50UmVzb2x2ZWQiLCBbImJyZWFr
cG9pbnRJZCIsICJsb2NhdGlvbiJdKTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudCgi
RGVidWdnZXIucGF1c2VkIiwgWyJjYWxsRnJhbWVzIiwgInJlYXNvbiIsICJkYXRhIl0pOwogSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KCJEZWJ1Z2dlci5yZXN1bWVkIiwgW10pOworSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KCJEZWJ1Z2dlci5kaWRTYW1wbGVQcm9iZSIsIFsi
c2FtcGxlIl0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRlYnVnZ2VyLmVu
YWJsZSIsIFtdLCBbXSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiRGVidWdn
ZXIuZGlzYWJsZSIsIFtdLCBbXSk7CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgi
RGVidWdnZXIuc2V0QnJlYWtwb2ludHNBY3RpdmUiLCBbeyJuYW1lIjogImFjdGl2ZSIsICJ0eXBl
IjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiBmYWxzZX1dLCBbXSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjRlY2M5ODY1
MzExMmM3ZjMyMGE3MWNkM2NiYzRhMzZlMDc4ZjA2ZS4uYjc3ZDVhMTA4YmJlZjU3NGI3MGRkYmJi
MzU5MDM2MTY0NzMwMGRkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAxLTEyICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNhcHR1
cmUgcHJvYmUgc2FtcGxlcyBvbiB0aGUgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHByb3RvY29sIHRlc3RzIGZvciBzZXR0aW5nIGFu
ZCBoaXR0aW5nIHRoZSBwcm9iZSBicmVha3BvaW50IGFjdGlvbiB0eXBlLgorCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYWN0aW9ucy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9p
bnQtYWN0aW9ucy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9z
ZXRQcm9iZS1tdWx0aXBsZS1hY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldFByb2JlLW11bHRpcGxlLWFjdGlvbnMuaHRt
bDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm9iZS1o
ZWxwZXIuanM6IEFkZGVkLgorICAgICAgICAoUHJvYmVIZWxwZXIuc2ltcGxpZmllZFByb2JlU2Ft
cGxlKToKKwogMjAxNC0wMS0xMiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMTYwODA2KTogbGluZS1oZWlnaHQgaXMgbm90IGFwcGxpZWQg
d2hlbiBvbmx5IHByZXNlbnQgaW4gOmxpbmsgc3R5bGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1hY3Rpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVh
a3BvaW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDI3YjY2YWIyNGVkZjgwNjM5OGVjZmI5
ZDk3MjllYzRjMzM0ZjVlMDUuLjgyMWM2MmQzZjE1Njc5YmZlZDgzOWQwZDVkMTM3ZjVhNzVlODgz
YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9z
ZXRCcmVha3BvaW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0
CkBAIC0xNyw4ICsxNywxMCBAQCBpbnNpZGUgYnJlYWtwb2ludEFjdGlvbnMgYTooMTIpIGI6KFtv
YmplY3QgT2JqZWN0XSkKIFBBU1M6IENvbnNvbGUgTWVzc2FnZTogeyJzb3VyY2UiOiJqYXZhc2Ny
aXB0IiwibGV2ZWwiOiJsb2ciLCJ0ZXh0IjoibG9nLWFjdGlvbi1iZWZvcmUiLCJsb2NhdGlvbiI6
ImJyZWFrcG9pbnQuanM6MTk6MiJ9CiBQQVNTOiBDb25zb2xlIE1lc3NhZ2U6IHsic291cmNlIjoi
Y29uc29sZS1hcGkiLCJsZXZlbCI6ImxvZyIsInRleHQiOiJldmFsLWFjdGlvbiIsImxvY2F0aW9u
IjoiPz8/OjE6MjYiLCJwYXJhbWV0ZXJzIjpbeyJ0eXBlIjoic3RyaW5nIn0seyJ0eXBlIjoibnVt
YmVyIn0seyJ0eXBlIjoib2JqZWN0In1dfQogUEFTUzogQ29uc29sZSBNZXNzYWdlOiB7InNvdXJj
ZSI6ImphdmFzY3JpcHQiLCJsZXZlbCI6ImxvZyIsInRleHQiOiJsb2ctYWN0aW9uLWFmdGVyIiwi
bG9jYXRpb24iOiJicmVha3BvaW50LmpzOjE5OjIifQorUEFTUzogUHJvYmUgc2FtcGxlIHBheWxv
YWQ6IHsidHlwZSI6Im51bWJlciIsInZhbHVlIjoxMiwiZGVzY3JpcHRpb24iOiIxMiJ9CiBpbnNp
ZGUgYnJlYWtwb2ludEFjdGlvbnMgYTooMTAwKSBiOihbb2JqZWN0IEhUTUxCb2R5RWxlbWVudF0p
CiBQQVNTOiBDb25zb2xlIE1lc3NhZ2U6IHsic291cmNlIjoiamF2YXNjcmlwdCIsImxldmVsIjoi
bG9nIiwidGV4dCI6ImxvZy1hY3Rpb24tYmVmb3JlIiwibG9jYXRpb24iOiJicmVha3BvaW50Lmpz
OjE5OjIifQogUEFTUzogQ29uc29sZSBNZXNzYWdlOiB7InNvdXJjZSI6ImNvbnNvbGUtYXBpIiwi
bGV2ZWwiOiJsb2ciLCJ0ZXh0IjoiZXZhbC1hY3Rpb24iLCJsb2NhdGlvbiI6Ij8/PzoxOjI2Iiwi
cGFyYW1ldGVycyI6W3sidHlwZSI6InN0cmluZyJ9LHsidHlwZSI6Im51bWJlciJ9LHsidHlwZSI6
Im9iamVjdCIsInN1YnR5cGUiOiJub2RlIn1dfQogUEFTUzogQ29uc29sZSBNZXNzYWdlOiB7InNv
dXJjZSI6ImphdmFzY3JpcHQiLCJsZXZlbCI6ImxvZyIsInRleHQiOiJsb2ctYWN0aW9uLWFmdGVy
IiwibG9jYXRpb24iOiJicmVha3BvaW50LmpzOjE5OjIifQorUEFTUzogUHJvYmUgc2FtcGxlIHBh
eWxvYWQ6IHsidHlwZSI6Im51bWJlciIsInZhbHVlIjoxMDAsImRlc2NyaXB0aW9uIjoiMTAwIn0K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Nl
dEJyZWFrcG9pbnQtYWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYWN0aW9ucy5odG1sCmluZGV4IDU3NzVkMjVhYjUwZDBl
YTZkZGQyNTBkZTAwM2RlMTlmOTRhZjg2ZjEuLjExYjY5YWE0MTc3ZDhmZWVkZWM2MGNmMzU1MGM0
YzZjMTdmNDI3NjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci9zZXRCcmVha3BvaW50LWFjdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1hY3Rpb25zLmh0bWwKQEAgLTYs
NiArNiw3IEBACiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBJbnNwZWN0b3JUZXN0LmltcG9ydFNj
cmlwdCgiLi4vLi4vLi4vLi4vaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9jb25zb2xlLWhl
bHBlci5qcyIpOworICAgIEluc3BlY3RvclRlc3QuaW1wb3J0U2NyaXB0KCIuLi8uLi8uLi8uLi9p
bnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb2JlLWhlbHBlci5qcyIpOwogCiAgICAgSW5z
cGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiQ29uc29sZS5lbmFibGUiLCB7fSk7CiAgICAgSW5zcGVj
dG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdnZXIuZW5hYmxlIiwge30pOwpAQCAtMTMsOSArMTQs
MTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3Bv
aW50cyBFbmFibGVkIik7CiAgICAgfSk7CiAKLSAgICB2YXIgZXhwZWN0TG9ncyA9IGZhbHNlOwot
ICAgIHZhciBsb2dzU2VlbiA9IDA7Ci0gICAgY29uc3QgZXhwZWN0ZWRMb2dzID0gNjsKKyAgICB2
YXIgaXNFeHBlY3RpbmdMb2dzID0gZmFsc2U7CisgICAgdmFyIGlzRXhwZWN0aW5nU2FtcGxlcyA9
IGZhbHNlOworICAgIHZhciBsb2dDb3VudCA9IDA7CisgICAgdmFyIHNhbXBsZUNvdW50ID0gMDsK
KyAgICBjb25zdCBleHBlY3RlZExvZ0NvdW50ID0gNjsKKyAgICBjb25zdCBleHBlY3RlZFNhbXBs
ZUNvdW50ID0gMjsKKworICAgIGZ1bmN0aW9uIHJlY2VpdmVkQWxsRXhwZWN0ZWRPdXRwdXQoKSB7
CisgICAgICAgIHJldHVybiBsb2dDb3VudCA9PT0gZXhwZWN0ZWRMb2dDb3VudCAmJiBzYW1wbGVD
b3VudCA9PT0gZXhwZWN0ZWRTYW1wbGVDb3VudDsKKyAgICB9CiAKICAgICBJbnNwZWN0b3JUZXN0
LmV2ZW50SGFuZGxlclsiRGVidWdnZXIuc2NyaXB0UGFyc2VkIl0gPSBmdW5jdGlvbihtZXNzYWdl
T2JqZWN0KQogICAgIHsKQEAgLTMwLDcgKzM4LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICAgICAgICAgIHsidHlwZSI6ICJsb2ciLCAiZGF0YSI6ICJsb2ctYWN0aW9uLWJlZm9yZSJ9
LAogICAgICAgICAgICAgICAgICAgICB7InR5cGUiOiAic291bmQifSwKICAgICAgICAgICAgICAg
ICAgICAgeyJ0eXBlIjogImV2YWx1YXRlIiwgImRhdGEiOiAiKGZ1bmN0aW9uKCkgeyBjb25zb2xl
LmxvZygnZXZhbC1hY3Rpb24nLCBhLCBiKTsgfSkoKSJ9LAotICAgICAgICAgICAgICAgICAgICB7
InR5cGUiOiAibG9nIiwgImRhdGEiOiAibG9nLWFjdGlvbi1hZnRlciJ9CisgICAgICAgICAgICAg
ICAgICAgIHsidHlwZSI6ICJsb2ciLCAiZGF0YSI6ICJsb2ctYWN0aW9uLWFmdGVyIn0sCisgICAg
ICAgICAgICAgICAgICAgIHsidHlwZSI6ICJwcm9iZSIsICJkYXRhIjogImEifQogICAgICAgICAg
ICAgICAgIF0KICAgICAgICAgICAgIH07CiAKQEAgLTQxLDcgKzUwLDggQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiUnVudGltZS5l
dmFsdWF0ZSIsIHtleHByZXNzaW9uOiAiYnJlYWtwb2ludEFjdGlvbnMoMSkifSk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiUnVudGltZS5ldmFsdWF0ZSIsIHtl
eHByZXNzaW9uOiAiYnJlYWtwb2ludEFjdGlvbnMoMiwgMTIpIn0pOwogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIlJ1bnRpbWUuZXZhbHVhdGUiLCB7ZXhwcmVzc2lv
bjogImJyZWFrcG9pbnRBY3Rpb25zKDIsIHt4OjEseToyfSkifSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGV4cGVjdExvZ3MgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBp
c0V4cGVjdGluZ0xvZ3MgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpc0V4cGVjdGluZ1Nh
bXBsZXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUnVu
bmluZyBicmVha3BvaW50QWN0aW9ucyB0byB0cmlnZ2VyaW5nIHRoZSBicmVha3BvaW50IGFjdGlv
bnMiKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiUnVu
dGltZS5ldmFsdWF0ZSIsIHtleHByZXNzaW9uOiAiYnJlYWtwb2ludEFjdGlvbnMoMTIsIHt4OjEs
eToyfSkifSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LnNlbmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwge2V4cHJlc3Npb246ICJicmVha3Bv
aW50QWN0aW9ucygxMDAsIGRvY3VtZW50LmJvZHkpIn0pOwpAQCAtNTksOSArNjksMjYgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAg
fQogCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRlYnVnZ2VyLmRpZFNhbXBsZVBy
b2JlIl0gPSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKCFpc0V4
cGVjdGluZ1NhbXBsZXMpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiB1
bmV4cGVjdGVkIHByb2JlIHNhbXBsZSwgcHJvYmUgc2FtcGxlcyBzaG91bGQgb25seSBoYXZlIGNv
bWUgZnJvbSBicmVha3BvaW50IGFjdGlvbnMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIHNpbXBsaWZpZWRTYW1wbGUgPSBQcm9iZUhlbHBlci5zaW1wbGlmaWVkUHJvYmVTYW1w
bGUobWVzc2FnZU9iamVjdCk7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTOiBQcm9i
ZSBzYW1wbGUgcGF5bG9hZDogIiArIEpTT04uc3RyaW5naWZ5KHNpbXBsaWZpZWRTYW1wbGUucGF5
bG9hZCkpOworCisgICAgICAgICsrc2FtcGxlQ291bnQ7CisKKyAgICAgICAgaWYgKHJlY2VpdmVk
QWxsRXhwZWN0ZWRPdXRwdXQoKSkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgfQorCiAgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkNvbnNvbGUu
bWVzc2FnZUFkZGVkIl0gPSBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQogICAgIHsKLSAgICAgICAg
aWYgKCFleHBlY3RMb2dzKSB7CisgICAgICAgIGlmICghaXNFeHBlY3RpbmdMb2dzKSB7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogdW5leHBlY3RlZCBsb2csIGxvZ3Mgc2hv
dWxkIG9ubHkgaGF2ZSBjb21lIGZyb20gYnJlYWtwb2ludCBhY3Rpb25zLiIpOwogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTcwLDcgKzk3LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHZhciBzaW1wbGlmaWVkTWVz
c2FnZSA9IENvbnNvbGVIZWxwZXIuc2ltcGxpZmllZENvbnNvbGVNZXNzYWdlKG1lc3NhZ2VPYmpl
Y3QpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFTUzogQ29uc29sZSBNZXNzYWdlOiAi
ICsgSlNPTi5zdHJpbmdpZnkoc2ltcGxpZmllZE1lc3NhZ2UpKTsKIAotICAgICAgICBpZiAoKyts
b2dzU2VlbiA9PT0gZXhwZWN0ZWRMb2dzKQorICAgICAgICArK2xvZ0NvdW50OworCisgICAgICAg
IGlmIChyZWNlaXZlZEFsbEV4cGVjdGVkT3V0cHV0KCkpCiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRQcm9iZS1tdWx0aXBsZS1hY3Rpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRQcm9i
ZS1tdWx0aXBsZS1hY3Rpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzY3MzIzMTBkMzA4
NWI2YTA5ZWQyODg0NWRlYTAzODIzODY5YWZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldFByb2JlLW11bHRpcGxlLWFjdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0RlYnVnZ2VyLnNldEJyZWFrcG9pbnQgb3B0
aW9ucy5hY3Rpb25zCisKK0JyZWFrcG9pbnRzIEVuYWJsZWQKK0ZvdW5kIGJyZWFrcG9pbnQuanMK
K1BBU1M6IFNob3VsZCByZWNlaXZlIHR3byBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVycyBv
biBEZWJ1Z2dlci5zZXRCcmVha3BvaW50IGNhbGxiYWNrLgorUnVubmluZyBicmVha3BvaW50QWN0
aW9ucyB0byB0cmlnZ2VyIHByb2JlIHNhbXBsZXMuCitpbnNpZGUgYnJlYWtwb2ludEFjdGlvbnMg
YTooMTIpIGI6KFtvYmplY3QgT2JqZWN0XSkKK1JlY2VpdmVkIHByb2JlIHNhbXBsZSBwYXlsb2Fk
OiB7InR5cGUiOiJudW1iZXIiLCJ2YWx1ZSI6MTIsImRlc2NyaXB0aW9uIjoiMTIifQorUmVjZWl2
ZWQgcHJvYmUgc2FtcGxlIHBheWxvYWQ6IHsidHlwZSI6Im51bWJlciIsInZhbHVlIjoxMiwiZGVz
Y3JpcHRpb24iOiIxMiJ9CitQQVNTOiBTYW1wbGVzIGZyb20gcHJvYmUgYWN0aW9ucyBvbiB0aGUg
c2FtZSBicmVha3BvaW50IHNob3VsZCBoYXZlIHVuaXF1ZSBhY3Rpb24gaWRlbnRpZmllcnMuCitQ
QVNTOiBTYW1wbGVzIGZyb20gcHJvYmUgYWN0aW9ucyBvbiB0aGUgc2FtZSBicmVha3BvaW50IHNo
b3VsZCBoYXZlIHRoZSBzYW1lIGJhdGNoIGlkZW50aWZpZXJzLgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0UHJvYmUtbXVsdGlwbGUtYWN0
aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldFBy
b2JlLW11bHRpcGxlLWFjdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjUwZTg1OGZhY2E4M2VkNzhh
NmU4N2Q1ODBkYTZjZDlhMjUxZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldFByb2JlLW11bHRpcGxlLWFjdGlvbnMuaHRtbApA
QCAtMCwwICsxLDk5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5pbXBvcnRTY3Jp
cHQoIi4uLy4uLy4uLy4uL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvYmUtaGVscGVy
LmpzIik7CisKKyAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJEZWJ1Z2dlci5lbmFibGUi
LCB7fSk7CisgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdnZXIuc2V0QnJlYWtw
b2ludHNBY3RpdmUiLCB7YWN0aXZlOiB0cnVlfSwgZnVuY3Rpb24oKSB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJCcmVha3BvaW50cyBFbmFibGVkIik7CisgICAgfSk7CisKKyAgICB2YXIg
c2FtcGxlcyA9IFtdOworICAgIGNvbnN0IGV4cGVjdGVkU2FtcGxlQ291bnQgPSAyOworCisgICAg
ZnVuY3Rpb24gcmVjZWl2ZWRBbGxFeHBlY3RlZFNhbXBsZXMoKSB7CisgICAgICAgIHJldHVybiBz
YW1wbGVzLmxlbmd0aCA9PT0gZXhwZWN0ZWRTYW1wbGVDb3VudDsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBkdW1wU2FtcGxlcygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2Ft
cGxlIDE6ICIgKyBKU09OLnN0cmluZ2lmeShzYW1wbGVzWzBdKSk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJTYW1wbGUgMjogIiArIEpTT04uc3RyaW5naWZ5KHNhbXBsZXNbMV0pKTsKKyAg
ICB9CisKKyAgICB2YXIgdGVzdHMgPSBbCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lc3NhZ2U6
ICJTYW1wbGVzIGZyb20gcHJvYmUgYWN0aW9ucyBvbiB0aGUgc2FtZSBicmVha3BvaW50IHNob3Vs
ZCBoYXZlIHVuaXF1ZSBhY3Rpb24gaWRlbnRpZmllcnMuIiwKKyAgICAgICAgICAgIHByZWRpY2F0
ZTogZnVuY3Rpb24gc2FtcGxlc0hhdmVVbmlxdWVBY3Rpb25JZHMoKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHNhbXBsZXNbMF0ucHJvYmVJZCAhPT0gc2FtcGxlc1sxXS5wcm9iZUlkOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIGVycm9yOiBkdW1wU2FtcGxlcworICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgICBtZXNzYWdlOiAiU2FtcGxlcyBmcm9tIHByb2JlIGFjdGlv
bnMgb24gdGhlIHNhbWUgYnJlYWtwb2ludCBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiYXRjaCBpZGVu
dGlmaWVycy4iLAorICAgICAgICAgICAgcHJlZGljYXRlOiBmdW5jdGlvbiBzYW1wbGVzSGF2ZUVx
dWFsQmF0Y2hJZHMoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNhbXBsZXNbMF0uYmF0Y2hJ
ZCA9PT0gc2FtcGxlc1sxXS5iYXRjaElkOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVy
cm9yOiBkdW1wU2FtcGxlcworICAgICAgICB9LAorICAgIF07CisKKyAgICBJbnNwZWN0b3JUZXN0
LmV2ZW50SGFuZGxlclsiRGVidWdnZXIuc2NyaXB0UGFyc2VkIl0gPSBmdW5jdGlvbihtZXNzYWdl
T2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKC9yZXNvdXJjZXNcL2JyZWFrcG9pbnRcLmpzJC8u
dGVzdChtZXNzYWdlT2JqZWN0LnBhcmFtcy51cmwpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiRm91bmQgYnJlYWtwb2ludC5qcyIpOworICAgICAgICAgICAgdmFyIHNjcmlwdElk
ZW50aWZpZXIgPSBtZXNzYWdlT2JqZWN0LnBhcmFtcy5zY3JpcHRJZDsKKyAgICAgICAgICAgIHZh
ciBsb2NhdGlvbiA9IHtzY3JpcHRJZDogc2NyaXB0SWRlbnRpZmllciwgbGluZU51bWJlcjogMTgs
IGNvbHVtbk51bWJlcjogMH07CisgICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHsKKyAgICAgICAg
ICAgICAgICBhdXRvQ29udGludWU6IHRydWUsCisgICAgICAgICAgICAgICAgYWN0aW9uczogWwor
ICAgICAgICAgICAgICAgICAgICB7InR5cGUiOiAicHJvYmUiLCAiZGF0YSI6ICJhIn0sCisgICAg
ICAgICAgICAgICAgICAgIHsidHlwZSI6ICJwcm9iZSIsICJkYXRhIjogImEifQorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2Vu
ZENvbW1hbmQoIkRlYnVnZ2VyLnNldEJyZWFrcG9pbnQiLCB7bG9jYXRpb246IGxvY2F0aW9uLCBv
cHRpb25zOiBvcHRpb25zfSwgZnVuY3Rpb24ocmVzcG9uc2VPYmplY3QpIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrRm9yRXJyb3IocmVzcG9uc2VPYmplY3QpOworICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnRJZGVudGlmaWVyID0gcmVzcG9uc2VPYmplY3QucmVzdWx0LmJy
ZWFrcG9pbnRJZDsKKyAgICAgICAgICAgICAgICBhY3Rpb25JZGVudGlmaWVycyA9IHJlc3BvbnNl
T2JqZWN0LnJlc3VsdC5icmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnM7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoYWN0aW9uSWRlbnRpZmllcnMgaW5zdGFuY2VvZiBBcnJh
eSAmJiBhY3Rpb25JZGVudGlmaWVycy5sZW5ndGggPT09IDIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlNob3VsZCByZWNlaXZlIHR3byBicmVha3BvaW50IGFjdGlvbiBp
ZGVudGlmaWVycyBvbiBEZWJ1Z2dlci5zZXRCcmVha3BvaW50IGNhbGxiYWNrLiIpOworCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSB1c2UgdGhlIEJyZWFrcG9pbnQvQnJlYWtw
b2ludEFjdGlvbiBtb2RlbCBvYmplY3RzIHRvIG1hbmFnZSB0aGlzPworICAgICAgICAgICAgICAg
IGlmIChhY3Rpb25JZGVudGlmaWVycy5sZW5ndGggPT09IDIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgb3B0aW9ucy5hY3Rpb25zWzBdLmlkZW50aWZpZXIgPSBhY3Rpb25JZGVudGlmaWVyc1swXTsK
KyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5hY3Rpb25zWzFdLmlkZW50aWZpZXIgPSBhY3Rp
b25JZGVudGlmaWVyc1sxXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlJ1bm5pbmcgYnJlYWtwb2ludEFjdGlvbnMgdG8gdHJpZ2dlciBwcm9i
ZSBzYW1wbGVzLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQo
IlJ1bnRpbWUuZXZhbHVhdGUiLCB7ZXhwcmVzc2lvbjogImJyZWFrcG9pbnRBY3Rpb25zKDEyLCB7
eDoxLHk6Mn0pIn0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJ
bnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiRGVidWdnZXIuZGlkU2FtcGxlUHJvYmUiXSA9IGZ1
bmN0aW9uKG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgc2FtcGxlID0gUHJvYmVI
ZWxwZXIuc2ltcGxpZmllZFByb2JlU2FtcGxlKG1lc3NhZ2VPYmplY3QpOworICAgICAgICBzYW1w
bGVzLnB1c2goc2FtcGxlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlY2VpdmVkIHBy
b2JlIHNhbXBsZSBwYXlsb2FkOiAiICsgSlNPTi5zdHJpbmdpZnkoc2FtcGxlLnBheWxvYWQpKTsK
KworICAgICAgICBpZiAocmVjZWl2ZWRBbGxFeHBlY3RlZFNhbXBsZXMoKSkgeworICAgICAgICAg
ICAgdGVzdHMuZm9yRWFjaChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IHRlc3QucHJlZGljYXRlKCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQocmVzdWx0LCB0ZXN0Lm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0LmVycm9yKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPkRl
YnVnZ2VyLnNldEJyZWFrcG9pbnQgb3B0aW9ucy5hY3Rpb25zPC9wPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9w
cm9iZS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2Vz
L3Byb2JlLWhlbHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTAxNzk2ZDY3MGY4NTA4NWFmN2ZhYjBjYmZh
NWI5MjkzMTRjYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXBy
b3RvY29sL3Jlc291cmNlcy9wcm9iZS1oZWxwZXIuanMKQEAgLTAsMCArMSwxMyBAQAord2luZG93
LlByb2JlSGVscGVyID0ge307CisKK1Byb2JlSGVscGVyLnNpbXBsaWZpZWRQcm9iZVNhbXBsZSA9
IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCit7CisgICAgdmFyIGRhdGEgPSBtZXNzYWdlT2JqZWN0
LnBhcmFtcy5zYW1wbGU7CisgICAgdmFyIHNhbXBsZSA9IHsKKyAgICAgICAgcHJvYmVJZDogZGF0
YS5wcm9iZUlkLAorICAgICAgICBiYXRjaElkOiBkYXRhLmJhdGNoSWQsCisgICAgICAgIHNhbXBs
ZUlkOiBkYXRhLnNhbXBsZUlkLAorICAgICAgICBwYXlsb2FkOiBkYXRhLnBheWxvYWQKKyAgICB9
CisgICAgcmV0dXJuIHNhbXBsZTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221308</attachid>
            <date>2014-01-15 14:42:22 -0800</date>
            <delta_ts>2014-01-15 15:18:28 -0800</delta_ts>
            <desc>patch with fixes</desc>
            <filename>bug-126668-20140115144221.patch</filename>
            <type>text/plain</type>
            <size>47312</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MzIzY2FkZDc2NDM5Njc5NzMyZmE1NTUwNmIxZWEyYzFjMDBlNjUxLi5kOWE4ZTE5Y2I4YjIwNGY5
YzA4NzMxZWY3MWZiYzU2YjdjMzkyNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNC0wMS0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBjYXB0dXJlIHByb2JlIHNhbXBsZXMgb24gdGhlIGJhY2tl
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjY2
OAorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBBZGQg
dGhlICdwcm9iZScgYnJlYWtwb2ludCBhY3Rpb24gdG8gdGhlIHByb3RvY29sLiBDaGFuZ2UgdGhl
IHNldEJyZWFrcG9pbnQKKyAgICAgICAgY29tbWFuZHMgdG8gcmV0dXJuIGEgbGlzdCBvZiBhc3Np
Z25lZCBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVycworICAgICAgICBBZGQgYSB0eXBlIGZv
ciBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVycy4gQWRkIGFuIGV2ZW50IGZvciBzZW5kaW5n
CisgICAgICAgIGNhcHR1cmVkIHByb2JlIHNhbXBsZXMgdG8gdGhlIGluc3BlY3RvciBmcm9udGVu
ZC4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uOgorCiAyMDE0
LTAxLTEwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29weWluZyBzaG91bGQgYmUgZ2VuZXJhdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUxYzY0ZTJk
ZjAxZjQzMzkwYjZjZWM5MmEzMGQ2Yzg3NzViZmE2NC4uY2Q2NGQ5ZjdhOTEwYjdiYmNlY2MxNDZj
Mzg1MTA0YjI4OTNmOWFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTAxLTE1
ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGNhcHR1cmUgcHJvYmUgc2FtcGxlcyBvbiB0aGUgYmFja2VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci9zZXRQcm9iZS1tdWx0aXBsZS1hY3Rpb25zLmh0bWwKKworICAgICAgICBBZGQgdGhl
IHByb2JlIGJyZWFrcG9pbnQgYWN0aW9uIHR5cGUuIEEgcHJvYmUgYWN0aW9uCisgICAgICAgIGV2
YWx1YXRlcyBhbiBleHByZXNzaW9uIG9uIHRoZSBzY3JpcHQgY2FsbCBmcmFtZSwgYW5kCisgICAg
ICAgIHRoZSByZXN1bHQgaXMgYWdncmVnYXRlZCBvbiBhIHBlci1wcm9iZSBiYXNpcy4gRWFjaAor
ICAgICAgICBldmFsdWF0ZWQgZXhwcmVzc2lvbiByZXN1bHQgaXMgY2FsbGVkIGEgcHJvYmUgc2Ft
cGxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2ludEFjdGlv
bik6IFRlYWNoCisgICAgICAgIHRoZSBkZWJ1ZyBzZXJ2ZXIgdG8gZXZhbHVhdGUgYSBwcm9iZS4K
KworICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkU2FtcGxl
UHJvYmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5k
bGVCcmVha3BvaW50SGl0KTogSW5jcmVtZW50IGEgaGl0IGNvdW50LgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmdldEFjdGlvbnNGb3JCcmVha3BvaW50KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9iamVjdEdyb3Vw
Rm9yQnJlYWtwb2ludEFjdGlvbik6IEFkZGVkLiBDcmVhdGUgYW4gb2JqZWN0CisgICAgICAgIGdy
b3VwIGZvciBlYWNoIGJyZWFrcG9pbnQgYWN0aW9uLiBDdXJyZW50bHkgb25seSBwcm9iZXMgbWFr
ZSBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmVuYWJsZSk6IFJlbW92ZSBzdGFsZSBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6YnJl
YWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcpOiBBZGQgbmV3IGNhc2UuCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2Nv
bCk6IE1ha2UKKyAgICAgICAgdGhpcyBhIG1lbWJlciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgc3Rh
dGljIGZ1bmN0aW9uLCBzbyBpdCBjYW4gaW5jcmVtZW50CisgICAgICAgIHRoZSBicmVha3BvaW50
IGFjdGlvbiBpZGVudGlmaWVyIGNvdW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOiBQcm9wYWdhdGUgdGhlCisgICAgICAg
IGFzc2lnbmVkIGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXJzLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludCk6IFByb3BhZ2F0ZSB0aGUK
KyAgICAgICAgYXNzaWduZWQgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllcnMuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KTogUmVs
ZWFzZSBvYmplY3QKKyAgICAgICAgZ3JvdXBzIGZvciBhbnkgYWN0aW9ucyB0aGF0IHdlcmUgYXNz
b2NpYXRlZCB3aXRoIHRoZSByZW1vdmVkIGJyZWFrcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTYW1wbGVQcm9iZSk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJSZXNvbHZlZEJyZWFrcG9pbnRT
dGF0ZSk6IFJlbmFtZWQgZnJvbSBjbGVhcigpLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkQ2xlYXJHbG9iYWxPYmplY3QpOiBSZW5hbWVkIGZyb20gcmVzZXQo
KS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlRGVidWdnZXJBZ2VudDo6ZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRCcmVha3BvaW50QWN0aW9uOjpTY3JpcHRCcmVha3BvaW50QWN0aW9uKTogQWRkIGlkZW50aWZp
ZXIgbWVtYmVyLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6CisK
IDIwMTQtMDEtMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYkdMXSBWYWxpZGF0aW9uIGZ1bmN0aW9uIGZvciBjb21wcmVzc2VkIGZvcm1hdHMgaW5j
b3JyZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjYTgwZDI3M2M2MDM0MWYyMDY5NjI1
OGQyYTE5MDdjYjBjY2E1ZTkxLi5hOWFlZjI0MWYxYzA2MGQ4NDA5ZDBjOThlYjZjMDIzYzE4OGZk
ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMS0x
NSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBjYXB0dXJlIHByb2JlIHNhbXBsZXMgb24gdGhlIGJhY2tlbmQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjY2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW5zcGVjdG9y
SlNCYWNrZW5kQ29tbWFuZHMuanM6IEFkZCBwcm9iZSBlbnVtZXJhdGlvbiB2YWx1ZS4KKwogMjAx
NC0wMS0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHRoZSBDU1Mgc2VsZWN0b3IgcHJvZmlsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24KaW5kZXggZjFkOTU3Yjdl
NWI1NGVlOWE0OGQwZDUzYjdjMjcyY2FhYjQyMDA1Mi4uZDgwZWRlYjNiNTU4OTYzN2Q3ZmQ3MWRk
ZjM3OTQ3MmJjNzM5NjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgpAQCAtOCw2ICs4LDExIEBACiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiQnJlYWtwb2ludCBpZGVudGlmaWVyLiIKICAgICAgICAgfSwK
ICAgICAgICAgeworICAgICAgICAgICAgImlkIjogIkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVy
IiwKKyAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLAorICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXIuIgorICAgICAgICB9LAorICAgICAg
ICB7CiAgICAgICAgICAgICAiaWQiOiAiU2NyaXB0SWQiLAogICAgICAgICAgICAgInR5cGUiOiAi
c3RyaW5nIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgc2NyaXB0IGlkZW50
aWZpZXIuIgpAQCAtMzEsNyArMzYsNyBAQAogICAgICAgICAgICAgImlkIjogIkJyZWFrcG9pbnRB
Y3Rpb24iLAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0
cmluZyIsICJlbnVtIjogWyJsb2ciLCAiZXZhbHVhdGUiLCAic291bmQiXSwgImRlc2NyaXB0aW9u
IjogIkRpZmZlcmVudCBraW5kcyBvZiBicmVha3BvaW50IGFjdGlvbnMuIiB9LAorICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJsb2ci
LCAiZXZhbHVhdGUiLCAic291bmQiLCAicHJvYmUiXSwgImRlc2NyaXB0aW9uIjogIkRpZmZlcmVu
dCBraW5kcyBvZiBicmVha3BvaW50IGFjdGlvbnMuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZGF0YSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJEYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJyZWFrcG9pbnQgdHlwZSAoZS5nLiBm
b3IgdHlwZSBcImV2YWxcIiB0aGlzIGlzIHRoZSBKYXZhU2NyaXB0IHN0cmluZyB0byBldmFsdWxh
dGUpLiIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY3Rp
b24gdG8gcGVyZm9ybSB3aGVuIGEgYnJlYWtwb2ludCBpcyB0cmlnZ2VyZWQuIgpAQCAtNzgsNiAr
ODMsMTggQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9iamVjdCIsICIkcmVmIjogIlJ1
bnRpbWUuUmVtb3RlT2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIk9iamVjdCByZXByZXNlbnRpbmcg
dGhlIHNjb3BlLiBGb3IgPGNvZGU+Z2xvYmFsPC9jb2RlPiBhbmQgPGNvZGU+d2l0aDwvY29kZT4g
c2NvcGVzIGl0IHJlcHJlc2VudHMgdGhlIGFjdHVhbCBvYmplY3Q7IGZvciB0aGUgcmVzdCBvZiB0
aGUgc2NvcGVzLCBpdCBpcyBhcnRpZmljaWFsIHRyYW5zaWVudCBvYmplY3QgZW51bWVyYXRpbmcg
c2NvcGUgdmFyaWFibGVzIGFzIGl0cyBwcm9wZXJ0aWVzLiIgfQogICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTY29wZSBkZXNjcmlwdGlvbi4iCisgICAgICAgIH0s
CisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJQcm9iZVNhbXBsZSIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiQSBzYW1wbGUgY29sbGVjdGVkIGJ5IGV2YWx1YXRpbmcgYSBwcm9i
ZSBicmVha3BvaW50IGFjdGlvbi4iLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAg
ICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJv
YmVJZCIsICIkcmVmIjogIkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyIiwgImRlc2NyaXB0aW9u
IjogIklkZW50aWZpZXIgb2YgdGhlIHByb2JlIGJyZWFrcG9pbnQgYWN0aW9uIHRoYXQgY3JlYXRl
ZCB0aGUgc2FtcGxlLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNhbXBsZUlkIiwg
InR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3Ig
dGhpcyBzYW1wbGUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYmF0Y2hJZCIsICJ0
eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiQSBiYXRjaCBpZGVudGlmaWVyIHdoaWNo
IGlzIHRoZSBzYW1lIGZvciBhbGwgc2FtcGxlcyB0YWtlbiBhdCB0aGUgc2FtZSBicmVha3BvaW50
IGhpdC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0aW1lc3RhbXAiLCAidHlwZSI6
ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiVGltZXN0YW1wIG9mIHdoZW4gdGhlIHNhbXBsZSB3
YXMgdGFrZW4uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGF5bG9hZCIsICIkcmVm
IjogIlJ1bnRpbWUuUmVtb3RlT2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIkNvbnRlbnRzIG9mIHRo
ZSBzYW1wbGUuIiB9CisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21t
YW5kcyI6IFsKQEAgLTEwNyw3ICsxMjQsOCBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJlYWtwb2ludElkIiwg
IiRyZWYiOiAiQnJlYWtwb2ludElkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBjcmVhdGVk
IGJyZWFrcG9pbnQgZm9yIGZ1cnRoZXIgcmVmZXJlbmNlLiIgfSwKLSAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImxvY2F0aW9ucyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6
ICJMb2NhdGlvbiJ9LCAiZGVzY3JpcHRpb24iOiAiTGlzdCBvZiB0aGUgbG9jYXRpb25zIHRoaXMg
YnJlYWtwb2ludCByZXNvbHZlZCBpbnRvIHVwb24gYWRkaXRpb24uIiB9CisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJsb2NhdGlvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRy
ZWYiOiAiTG9jYXRpb24ifSwgImRlc2NyaXB0aW9uIjogIkxpc3Qgb2YgdGhlIGxvY2F0aW9ucyB0
aGlzIGJyZWFrcG9pbnQgcmVzb2x2ZWQgaW50byB1cG9uIGFkZGl0aW9uLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVycyIsICJ0eXBlIjog
ImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllciIg
fSwgImRlc2NyaXB0aW9uIjogIkFzc2lnbmVkIGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXJz
LiIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXRzIEph
dmFTY3JpcHQgYnJlYWtwb2ludCBhdCBnaXZlbiBsb2NhdGlvbiBzcGVjaWZpZWQgZWl0aGVyIGJ5
IFVSTCBvciBVUkwgcmVnZXguIE9uY2UgdGhpcyBjb21tYW5kIGlzIGlzc3VlZCwgYWxsIGV4aXN0
aW5nIHBhcnNlZCBzY3JpcHRzIHdpbGwgaGF2ZSBicmVha3BvaW50cyByZXNvbHZlZCBhbmQgcmV0
dXJuZWQgaW4gPGNvZGU+bG9jYXRpb25zPC9jb2RlPiBwcm9wZXJ0eS4gRnVydGhlciBtYXRjaGlu
ZyBzY3JpcHQgcGFyc2luZyB3aWxsIHJlc3VsdCBpbiBzdWJzZXF1ZW50IDxjb2RlPmJyZWFrcG9p
bnRSZXNvbHZlZDwvY29kZT4gZXZlbnRzIGlzc3VlZC4gVGhpcyBsb2dpY2FsIGJyZWFrcG9pbnQg
d2lsbCBzdXJ2aXZlIHBhZ2UgcmVsb2Fkcy4iCiAgICAgICAgIH0sCkBAIC0xMTksNyArMTM3LDgg
QEAKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAicmV0dXJucyI6IFsKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImJyZWFrcG9pbnRJZCIsICIkcmVmIjogIkJyZWFrcG9pbnRJZCIsICJk
ZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgY3JlYXRlZCBicmVha3BvaW50IGZvciBmdXJ0aGVyIHJl
ZmVyZW5jZS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhY3R1YWxMb2NhdGlvbiIs
ICIkcmVmIjogIkxvY2F0aW9uIiwgImRlc2NyaXB0aW9uIjogIkxvY2F0aW9uIHRoaXMgYnJlYWtw
b2ludCByZXNvbHZlZCBpbnRvLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYWN0dWFs
TG9jYXRpb24iLCAiJHJlZiI6ICJMb2NhdGlvbiIsICJkZXNjcmlwdGlvbiI6ICJMb2NhdGlvbiB0
aGlzIGJyZWFrcG9pbnQgcmVzb2x2ZWQgaW50by4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVt
cyI6IHsgIiRyZWYiOiAiQnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIiIH0sICJkZXNjcmlwdGlv
biI6ICJBc3NpZ25lZCBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVycy4iIH0KICAgICAgICAg
ICAgIF0sCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyBKYXZhU2NyaXB0IGJyZWFr
cG9pbnQgYXQgYSBnaXZlbiBsb2NhdGlvbi4iCiAgICAgICAgIH0sCkBAIC0yNzMsNiArMjkyLDEz
IEBACiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInJlc3VtZWQiLAogICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gdGhlIHZpcnR1YWwgbWFjaGluZSByZXN1bWVk
IGV4ZWN1dGlvbi4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
ImRpZFNhbXBsZVByb2JlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVu
IGEgbmV3IHByb2JlbiBzYW1wbGUgaXMgY29sbGVjdGVkLiIsCisgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNhbXBsZSIsICIkcmVmIjogIlBy
b2JlU2FtcGxlIiwgImRlc2NyaXB0aW9uIjogIkEgY29sbGVjdGVkIHByb2JlIHNhbXBsZS4iIH0K
KyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBjOTczZGM3OWIwN2RkOWQx
NTg2YTAxZTY0Y2MwOTJmYWM2MWZiZWNjLi5kYWM1MmEyNDRmYjQ3YTBhZTI4NzJkNDMxOWJkZTNj
NDA5ZTI5ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDksIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0
LDYgKzQ1LDggQEAKICNpbmNsdWRlIDxwYXJzZXIvU291cmNlUHJvdmlkZXIuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwpAQCAtOTAsNyArOTMsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3Bv
aW50KEpTQzo6QnJlYWtwb2ludElEIGlkKQogICAgIERlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50
KGlkKTsKIH0KIAotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0
aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGJyZWFrcG9pbnRBY3Rpb24pIGNvbnN0
Citib29sIFNjcmlwdERlYnVnU2VydmVyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29uc3Qg
U2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYnJlYWtwb2ludEFjdGlvbikKIHsKICAgICBEZWJ1Z2dl
ckNhbGxGcmFtZSogZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUo
KTsKICAgICBzd2l0Y2ggKGJyZWFrcG9pbnRBY3Rpb24udHlwZSkgewpAQCAtMTEwLDYgKzExMywx
NyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYgogICAgIGNhc2UgU2NyaXB0QnJlYWtwb2ludEFj
dGlvblR5cGVTb3VuZDoKICAgICAgICAgc3lzdGVtQmVlcCgpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU6IHsKKyAgICAgICAgSlNWYWx1
ZSBleGNlcHRpb247CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVidWdnZXJDYWxsRnJhbWUt
PmV2YWx1YXRlKGJyZWFrcG9pbnRBY3Rpb24uZGF0YSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFt
ZS0+ZXhlYygpLCBleGNlcHRpb24pOworCisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSA9
IGRlYnVnZ2VyQ2FsbEZyYW1lLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
OworICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB3cmFwcGVkUmVzdWx0ID0gRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUtPnZtKCksIGV4Y2VwdGlvbiA/IGV4Y2VwdGlvbiA6IHJl
c3VsdCk7CisgICAgICAgIGRpc3BhdGNoRGlkU2FtcGxlUHJvYmUoc3RhdGUsIGJyZWFrcG9pbnRB
Y3Rpb24uaWRlbnRpZmllciwgd3JhcHBlZFJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MCw2ICsxNTQsMjQgQEAgdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZShTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0
ZW5lcikKICAgICBsaXN0ZW5lci0+ZGlkUGF1c2Uoc3RhdGUsIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlKHN0YXRlLT52bSgpLCBqc0NhbGxGcmFtZSksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCkp
OwogfQogCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFNhbXBsZVByb2JlKEV4
ZWNTdGF0ZSogZXhlYywgaW50IGlkZW50aWZpZXIsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBzYW1wbGUpCit7CisgICAgaWYgKG1fY2FsbGluZ0xpc3RlbmVycykKKyAgICAgICAgcmV0
dXJuOworCisgICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9IGdldExpc3RlbmVyc0Zvckdsb2Jh
bE9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghbGlzdGVuZXJz
KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlzRW1wdHkoKSk7CisK
KyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2hhbmdlKG1fY2FsbGluZ0xpc3RlbmVycywgdHJ1
ZSk7CisKKyAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGxpc3RlbmVyc0NvcHk7Cisg
ICAgY29weVRvVmVjdG9yKCpsaXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOworICAgIGZvciAoYXV0
byBsaXN0ZW5lciA6IGxpc3RlbmVyc0NvcHkpCisgICAgICAgIGxpc3RlbmVyLT5kaWRTYW1wbGVQ
cm9iZShleGVjLCBpZGVudGlmaWVyLCBtX2hpdENvdW50LCBzYW1wbGUpOworfQorCiB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZENvbnRpbnVlKFNjcmlwdERlYnVnTGlzdGVuZXIq
IGxpc3RlbmVyKQogewogICAgIGxpc3RlbmVyLT5kaWRDb250aW51ZSgpOwpAQCAtMjUxLDYgKzI4
Myw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Om5lZWRQYXVzZUhhbmRsaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZUJy
ZWFrcG9pbnRIaXQoY29uc3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50KQogeworICAgIG1f
aGl0Q291bnQrKzsKICAgICBCcmVha3BvaW50SURUb0FjdGlvbnNNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9icmVha3BvaW50SURUb0FjdGlvbnMuZmluZChicmVha3BvaW50LmlkKTsKICAgICBpZiAoaXQg
IT0gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZW5kKCkpIHsKICAgICAgICAgQnJlYWtwb2ludEFj
dGlvbnMmIGFjdGlvbnMgPSBpdC0+dmFsdWU7CkBAIC0yOTAsNiArMzIzLDE3IEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zVGltZXJGaXJlZChUaW1lcjxT
Y3JpcHREZWJ1Z1NlcnZlCiAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKIH0KIAorY29u
c3QgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24+JiBTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0
QWN0aW9uc0ZvckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQgYnJlYWtwb2ludElEKQorewor
ICAgIEFTU0VSVChicmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7CisKKyAgICBp
ZiAobV9icmVha3BvaW50SURUb0FjdGlvbnMuY29udGFpbnMoYnJlYWtwb2ludElEKSkKKyAgICAg
ICAgcmV0dXJuIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmZpbmQoYnJlYWtwb2ludElEKS0+dmFs
dWU7CisgICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxTY3JpcHRCcmVha3Bv
aW50QWN0aW9uPj4gZW1wdHlBY3Rpb25WZWN0b3IgPSBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFj
dGlvbj4oKTsKKyAgICByZXR1cm4gZW1wdHlBY3Rpb25WZWN0b3I7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZWI5
MGRjOTllZmZlMjJlMzhlNGU3MDdkZDBkYmY1YTMwMDdjZTY1Mi4uNTVhZTY4NDczMzI5MTA4NDBl
ZGU0MDAyYWY1MDI0MWNiNzJkMmM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucygpID0gMDsKIAorICAgIGNvbnN0IFZlY3RvcjxTY3JpcHRCcmVha3Bv
aW50QWN0aW9uPiYgZ2V0QWN0aW9uc0ZvckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQpOwor
CiAgICAgY2xhc3MgVGFzayB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKQEAgLTg0LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29s
IGlzQ29udGVudFNjcmlwdChKU0M6OkV4ZWNTdGF0ZSopOwogCi0gICAgYm9vbCBldmFsdWF0ZUJy
ZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYpIGNvbnN0OworICAg
IGJvb2wgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b24mKTsKIAogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRF
eGVjdXRpb25DYWxsYmFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZvaWQgZGlzcGF0
Y2hGdW5jdGlvblRvTGlzdGVuZXJzKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFT
Y3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFjayk7CkBAIC05Miw2ICs5NCw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciop
OwogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlz
dGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpOwogICAg
IHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0
ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaXNwYXRjaERpZFNhbXBsZVByb2JlKEpTQzo6RXhl
Y1N0YXRlKiwgaW50IHByb2JlSWRlbnRpZmllciwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmIHNhbXBsZSk7CiAKICAgICBib29sIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50czsK
IApAQCAtMTA4LDYgKzExMSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlY29tcGlsZUFsbEpT
RnVuY3Rpb25zVGltZXJGaXJlZChUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4mKTsKIAorICAgIHVu
c2lnbmVkIG1faGl0Q291bnQ7CiAgICAgYm9vbCBtX2NhbGxpbmdMaXN0ZW5lcnM7CiAgICAgQnJl
YWtwb2ludElEVG9BY3Rpb25zTWFwIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zOwogICAgIFRpbWVy
PFNjcmlwdERlYnVnU2VydmVyPiBtX3JlY29tcGlsZVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDUwMTVkZjJi
NzlmNzRjYjJkZjY2MjQ0MDg0ZTNkZGJiOWU3MTRmNzUuLjc5MTA4NWM1NjBlNDVjZDQyZWFhNGEy
YTFmMjMzMDE4MTUwMzA4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTU2LDE0ICs1NiwyMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFj
ZU9iamVjdEdyb3VwID0gImJhY2t0cmFjZSI7CiAKK3N0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBG
b3JCcmVha3BvaW50QWN0aW9uKGludCBpZGVudGlmaWVyKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvYmplY3RHcm91cCwgKCJicmVha3BvaW50LWFjdGlv
bi0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcob2JqZWN0R3JvdXAsIFN0cmluZzo6bnVtYmVyKGlkZW50aWZpZXIpKTsKK30KKwog
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVy
YWwoIkRlYnVnZ2VyIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3BhdXNlZFNjcmlwdFN0
YXRlKDApCisgICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRlKG51bGxwdHIpCiAgICAgLCBtX2NvbnRp
bnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRChKU0M6Om5vQnJlYWtwb2ludElEKQogICAgICwgbV9l
bmFibGVkKGZhbHNlKQogICAgICwgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQoZmFsc2UpCi0g
ICAgLCBtX2xpc3RlbmVyKDApCisgICAgLCBtX2xpc3RlbmVyKG51bGxwdHIpCisgICAgLCBtX25l
eHRQcm9iZVNhbXBsZUlkKDEpCisgICAgLCBtX25leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cigxKQogewogICAgIC8vIEZJWE1FOiBtYWtlIGJyZWFrUmVhc29uIG9wdGlvbmFsIHNvIHRoYXQg
dGhlcmUgd2FzIG5vIG5lZWQgdG8gaW5pdCBpdCB3aXRoICJvdGhlciIuCiAgICAgY2xlYXJCcmVh
a0RldGFpbHMoKTsKQEAgLTc4LDcgKzg2LDYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjplbmFibGUoKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCh0aGlzKTsKIAotICAgIC8vIEZJWE1FKFdLNDQ1MTMpOiBicmVha3BvaW50cyBh
Y3RpdmF0ZWQgZmxhZyBzaG91bGQgYmUgc3luY2hyb25pemVkIGJldHdlZW4gYWxsIGZyb250LWVu
ZHMKICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUp
OwogICAgIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKTsKIApAQCAtOTEsMTIgKzk4
LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiB7CiAgICAgbV9qYXZhU2NyaXB0QnJlYWtwb2lu
dHMuY2xlYXIoKTsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoMCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KG51bGxwdHIpOwogCiAgICAgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVy
KCk7Ci0gICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5jbGVhckJyZWFrcG9pbnRzKCk7Ci0gICAgc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5jb250aW51ZVByb2dyYW0oKTsKLSAgICBjbGVhcigpOworICAgIGNs
ZWFyUmVzb2x2ZWRCcmVha3BvaW50U3RhdGUoKTsKIAogICAgIGlmIChtX2xpc3RlbmVyKQogICAg
ICAgICBtX2xpc3RlbmVyLT5kZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CkBAIC0xOTMsMTEgKzE5OCwx
NSBAQCBzdGF0aWMgYm9vbCBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhjb25zdCBTdHJp
bmcmIHR5cGVTdHJpbmcsIFNjcmlwdEJyZWFrcAogICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJl
YWtwb2ludEFjdGlvblR5cGVTb3VuZDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAg
IGlmICh0eXBlU3RyaW5nID09IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OmdldEpTRW51bUNvbnN0
YW50VmFsdWUoSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rp
b246OlR5cGU6OlByb2JlKSkgeworICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFj
dGlvblR5cGVQcm9iZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFjdGlvbnMs
IFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFjdGlvbnMsIFZlY3RvcjxTY3Jp
cHRCcmVha3BvaW50QWN0aW9uPiogcmVzdWx0KQogewogICAgIGlmICghYWN0aW9ucykKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yMzAsMTMgKzIzOSwxMyBAQCBzdGF0aWMgYm9vbCBicmVha3Bv
aW50QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJ
bnNwZQogICAgICAgICBTdHJpbmcgZGF0YTsKICAgICAgICAgb2JqZWN0LT5nZXRTdHJpbmcoImRh
dGEiLCAmZGF0YSk7CiAKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoU2NyaXB0QnJlYWtwb2ludEFj
dGlvbih0eXBlLCBkYXRhKSk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb24odHlwZSwgbV9uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIrKywgZGF0YSkp
OwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcq
IGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5O
dW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpCit2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9u
YWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3Bv
aW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXI+PiYgYnJlYWtwb2ludEFjdGlvbklk
ZW50aWZpZXJzKQogewogICAgIGxvY2F0aW9ucyA9IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogICAgIGlmICghb3B0aW9uYWxVUkwg
PT0gIW9wdGlvbmFsVVJMUmVnZXgpIHsKQEAgLTI2Nyw2ICsyNzYsMTAgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbGkKICAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKGVycm9y
U3RyaW5nLCBhY3Rpb25zLCAmYnJlYWtwb2ludEFjdGlvbnMpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlv
bklkZW50aWZpZXI+OjpjcmVhdGUoKTsKKyAgICBmb3IgKFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24m
IGFjdGlvbiA6IGJyZWFrcG9pbnRBY3Rpb25zKQorICAgICAgICBicmVha3BvaW50QWN0aW9uSWRl
bnRpZmllcnMtPmFkZEl0ZW0oYWN0aW9uLmlkZW50aWZpZXIpOworCiAgICAgbV9qYXZhU2NyaXB0
QnJlYWtwb2ludHMuc2V0KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBidWlsZE9iamVjdEZvckJyZWFr
cG9pbnRDb29raWUodXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYWN0
aW9ucywgaXNSZWdleCwgYXV0b0NvbnRpbnVlKSk7CiAKICAgICBTY3JpcHRCcmVha3BvaW50IGJy
ZWFrcG9pbnQobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGJyZWFrcG9pbnRB
Y3Rpb25zLCBhdXRvQ29udGludWUpOwpAQCAtMjk3LDcgKzMxMCw3IEBAIHN0YXRpYyBib29sIHBh
cnNlTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGxv
Y2F0aW9uLCBKCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50
SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyPj4mIGJyZWFrcG9pbnRBY3Rpb25JZGVudGlm
aWVycykKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVO
dW1iZXI7CkBAIC0zMTgsNiArMzMxLDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0CiAgICAg
VmVjdG9yPFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24+IGJyZWFrcG9pbnRBY3Rpb25zOwogICAgIGlm
ICghYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woZXJyb3JTdHJpbmcsIGFjdGlvbnMsICZi
cmVha3BvaW50QWN0aW9ucykpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBicmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcnMgPSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXI+Ojpj
cmVhdGUoKTsKKyAgICBmb3IgKFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiA6IGJyZWFr
cG9pbnRBY3Rpb25zKQorICAgICAgICBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMtPmFkZEl0
ZW0oYWN0aW9uLmlkZW50aWZpZXIpOwogCiAgICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlmaWVy
ID0gU3RyaW5nOjpudW1iZXIoc291cmNlSUQpICsgJzonICsgU3RyaW5nOjpudW1iZXIobGluZU51
bWJlcikgKyAnOicgKyBTdHJpbmc6Om51bWJlcihjb2x1bW5OdW1iZXIpOwogICAgIGlmIChtX2Jy
ZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuZmluZChicmVha3Bv
aW50SWRlbnRpZmllcikgIT0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVh
a3BvaW50SURzLmVuZCgpKSB7CkBAIC0zMzcsMTIgKzM1NCwxNCBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGJyZWFrcAogewogICAgIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50
SWRlbnRpZmllcik7CiAKLSAgICBCcmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVh
a3BvaW50SURzTWFwOjppdGVyYXRvciBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9
IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5maW5kKGJy
ZWFrcG9pbnRJZGVudGlmaWVyKTsKLSAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRl
cmF0b3IgPT0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURz
LmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvci0+dmFsdWUuc2l6ZSgpOyArK2kpCi0gICAgICAg
IHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtwb2ludChkZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJRHNJdGVyYXRvci0+dmFsdWVbaV0pOwotICAgIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0Rl
YnVnU2VydmVyQnJlYWtwb2ludElEcy5yZW1vdmUoZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRl
cmF0b3IpOworICAgIFZlY3RvcjxKU0M6OkJyZWFrcG9pbnRJRD4gYnJlYWtwb2ludElEcyA9IG1f
YnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy50YWtlKGJyZWFr
cG9pbnRJZGVudGlmaWVyKTsKKyAgICBmb3IgKGF1dG8gYnJlYWtwb2ludElEIDogYnJlYWtwb2lu
dElEcykgeworICAgICAgICBjb25zdCBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4mIGJy
ZWFrcG9pbnRBY3Rpb25zID0gc2NyaXB0RGVidWdTZXJ2ZXIoKS5nZXRBY3Rpb25zRm9yQnJlYWtw
b2ludChicmVha3BvaW50SUQpOworICAgICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGJyZWFrcG9p
bnRBY3Rpb25zKQorICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VP
YmplY3RHcm91cChvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uLmlkZW50aWZp
ZXIpKTsKKworICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUJyZWFrcG9pbnQoYnJl
YWtwb2ludElEKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29u
dGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKQpAQCAtNjUzLDYgKzY3MiwyMiBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwg
Y29uc3QgRGVwcmVjYQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRQYXVzZSgpOwogfQogCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNhbXBsZVByb2JlKEpTQzo6RXhlY1N0YXRlKiBz
Y3JpcHRTdGF0ZSwgaW50IHByb2JlSWRlbnRpZmllciwgaW50IGhpdENvdW50LCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2FtcGxlKQoreworICAgIGludCBzYW1wbGVJZCA9IG1fbmV4
dFByb2JlU2FtcGxlSWQrKzsKKworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsK
KyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gcGF5bG9hZCA9
IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qoc2FtcGxlLCBvYmplY3RHcm91cEZvckJyZWFrcG9p
bnRBY3Rpb24ocHJvYmVJZGVudGlmaWVyKSk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6UHJvYmVTYW1wbGU+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6UHJvYmVT
YW1wbGU6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRQcm9iZUlkKHByb2JlSWRlbnRpZmllcikKKyAg
ICAgICAgLnNldFNhbXBsZUlkKHNhbXBsZUlkKQorICAgICAgICAuc2V0QmF0Y2hJZChoaXRDb3Vu
dCkKKyAgICAgICAgLnNldFRpbWVzdGFtcChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkK
KyAgICAgICAgLnNldFBheWxvYWQocGF5bG9hZC5yZWxlYXNlKCkpOworCisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmRpZFNhbXBsZVByb2JlKHJlc3VsdC5yZWxlYXNlKCkpOworfQorCiB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKCkKIHsKICAgICBtX3BhdXNlZFNj
cmlwdFN0YXRlID0gMDsKQEAgLTY2OCwxNyArNzAzLDI0IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSCiAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5icmVha1Byb2dyYW0oKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhcigpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmNsZWFyUmVzb2x2ZWRCcmVha3BvaW50U3RhdGUoKQogewotICAgIG1fcGF1c2VkU2NyaXB0
U3RhdGUgPSAwOworICAgIEVycm9yU3RyaW5nIGR1bW15RXJyb3I7CisgICAgVmVjdG9yPFN0cmlu
Zz4gYnJlYWtwb2ludElkZW50aWZpZXJzOworICAgIGNvcHlLZXlzVG9WZWN0b3IobV9icmVha3Bv
aW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLCBicmVha3BvaW50SWRlbnRp
ZmllcnMpOworICAgIGZvciAoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyIDogYnJlYWtwb2ludElk
ZW50aWZpZXJzKQorICAgICAgICByZW1vdmVCcmVha3BvaW50KCZkdW1teUVycm9yLCBpZGVudGlm
aWVyKTsKKworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuY29udGludWVQcm9ncmFtKCk7CisKKyAg
ICBtX3BhdXNlZFNjcmlwdFN0YXRlID0gbnVsbHB0cjsKICAgICBtX2N1cnJlbnRDYWxsU3RhY2sg
PSBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogICAgIG1fc2NyaXB0cy5jbGVhcigpOwogICAg
IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5jbGVhcigp
OwogICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9p
bnRJRDsKICAgICBjbGVhckJyZWFrRGV0YWlscygpOwogICAgIG1famF2YVNjcmlwdFBhdXNlU2No
ZWR1bGVkID0gZmFsc2U7Ci0gICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAgc2V0T3ZlcmxheU1l
c3NhZ2UoJmVycm9yLCAwKTsKKyAgICBzZXRPdmVybGF5TWVzc2FnZSgmZHVtbXlFcnJvciwgbnVs
bHB0cik7CiB9CiAKIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YXNzZXJ0UGF1c2VkKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZykKQEAgLTY5NiwxMyArNzM4LDEyIEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJCcmVha0RldGFpbHMoKQogICAgIG1fYnJlYWtBdXhEYXRh
ID0gMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNldCgpCit2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENsZWFyR2xvYmFsT2JqZWN0KCkKIHsKLSAgICBzY3Jp
cHREZWJ1Z1NlcnZlcigpLmNsZWFyQnJlYWtwb2ludHMoKTsKLSAgICBtX3NjcmlwdHMuY2xlYXIo
KTsKLSAgICBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMu
Y2xlYXIoKTsKICAgICBpZiAobV9mcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5nbG9iYWxPYmplY3RDbGVhcmVkKCk7CisKKyAgICBjbGVhclJlc29sdmVk
QnJlYWtwb2ludFN0YXRlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDY2
NjRmNzg0NDY4MmJkYWM0NmFlMThhMGI4MzM3OTBlZTdiNDU2OWUuLjA3ZGY0N2Q2NGE3NzQ2YjM3
YjA4MGQyNDEzMGU2MGQ5NGQ4ZjE3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtODEsOCArODEsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxS
ZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpB
cnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRp
b25zKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwg
Y29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyPj4mIGJyZWFrcG9pbnRBY3Rp
b25JZGVudGlmaWVycyk7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbiwgUmVm
UHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcj4+JiBicmVha3BvaW50QWN0aW9u
SWRlbnRpZmllcnMpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKIApAQCAtMTM4LDE5ICsxMzgsMjIgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGNhbGxGcmFtZXMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBleGNlcHRpb24pOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpOwotICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2
b2lkIGRpZENsZWFyR2xvYmFsT2JqZWN0KCk7CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBPVkVSUklERSBG
SU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCB2
b2lkIGRpZFNhbXBsZVByb2JlKEpTQzo6RXhlY1N0YXRlKiwgaW50IHByb2JlSWRlbnRpZmllciwg
aW50IGhpdENvdW50LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgc2FtcGxlKSBPVkVS
UklERSBGSU5BTDsKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9p
bnRJZGVudGlmaWVyLCBKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7Ci0g
ICAgdm9pZCBjbGVhcigpOwogICAgIGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKik7Cisg
ICAgdm9pZCBjbGVhclJlc29sdmVkQnJlYWtwb2ludFN0YXRlKCk7CiAgICAgdm9pZCBjbGVhckJy
ZWFrRGV0YWlscygpOwogCisgICAgYm9vbCBicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChF
cnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgYWN0aW9ucywg
VmVjdG9yPFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24+KiByZXN1bHQpOworCiAgICAgU3RyaW5nIHNv
dXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmKTsKIAogICAgIHR5cGVkZWYgSGFzaE1h
cDxKU0M6OlNvdXJjZUlELCBTY3JpcHQ+IFNjcmlwdHNNYXA7CkBAIC0xNzEsNiArMTc0LDggQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNl
U2NoZWR1bGVkOwogICAgIExpc3RlbmVyKiBtX2xpc3RlbmVyOworICAgIGludCBtX25leHRQcm9i
ZVNhbXBsZUlkOworICAgIGludCBtX25leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGJjYjM0ZjQ5NWMzYjhjYzBlZjQwZTRlOWU0NTlh
NzI0YzZkNTI2Y2UuLjZmOGYzNzI2ZTY5ZmE1N2I4MWNjNWEzYmQwMTc0NDZjZGYzYjdmNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnNldE92ZXJsYXlNZXNzYWdl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKiBtZXNzYWdlKQogCiB2b2lkIFBhZ2VEZWJ1Z2dl
ckFnZW50OjpkaWRDbGVhck1haW5GcmFtZVdpbmRvd09iamVjdCgpCiB7Ci0gICAgcmVzZXQoKTsK
KyAgICBkaWRDbGVhckdsb2JhbE9iamVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaAppbmRleCBlZmM1
OWI5NTVhNmFkZTk2YjVhNDIyODM0MzBjOGY5MWQ1OGQ4MzNlLi4xNTdmMWVmYzMwZDNiMjYwYmM0
YmVmMDIyNWJjYWIyOGIwZmJkMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0QnJlYWtwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRCcmVha3BvaW50LmgKQEAgLTM4LDE3ICszOCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0
eXBlZGVmIGVudW0gewogICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlTG9nLAogICAgIFNj
cmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGUsCi0gICAgU2NyaXB0QnJlYWtwb2ludEFj
dGlvblR5cGVTb3VuZAorICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlU291bmQsCisgICAg
U2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVQcm9iZQogfSBTY3JpcHRCcmVha3BvaW50QWN0aW9u
VHlwZTsKIAogc3RydWN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24gewotICAgIFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb24oU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5n
JiBkYXRhKQorICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24oU2NyaXB0QnJlYWtwb2ludEFjdGlv
blR5cGUgdHlwZSwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICAgICAg
OiB0eXBlKHR5cGUpCisgICAgICAgICwgaWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICAgICAs
IGRhdGEoZGF0YSkKICAgICB7CiAgICAgfQogCiAgICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5
cGUgdHlwZTsKKyAgICBpbnQgaWRlbnRpZmllcjsKICAgICBTdHJpbmcgZGF0YTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCmluZGV4IDBm
NDkzMjg4OTY0NjIwZjkwZWQ5MGNkNzBjZDgxM2NmMTRmMDNkODIuLjJhNDI0ZmZlZjdkMTdhZDRh
MjBmOGU3OGI1NzQzODBlNzRhOGJjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1NjcmlwdERlYnVnTGlzdGVuZXIuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVz
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFNhbXBsZVByb2JlKEpTQzo6RXhlY1N0YXRlKiwgaW50IHByb2JlSWRlbnRp
ZmllciwgaW50IGhpdENvdW50LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcmVzdWx0
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgPSAwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zcGVjdG9ySlNCYWNr
ZW5kQ29tbWFuZHMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNw
ZWN0b3JKU0JhY2tlbmRDb21tYW5kcy5qcwppbmRleCA5ZTMzZWM0M2Q5MWRhOTI1ZGM3YjMzOWFk
Yzk0NzYyNmQxZGIwYWJmLi41MWNhOGEwZjI0NGQxNzgwNjI3NjgyYzJlNTllNDZlMGQzMjMzOWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnNwZWN0
b3JKU0JhY2tlbmRDb21tYW5kcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9JbnNwZWN0b3JKU0JhY2tlbmRDb21tYW5kcy5qcwpAQCAtOCw3ICs4LDcgQEAKIAog
Ly8gRGVidWdnZXIuCiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRGVidWdnZXJEaXNwYXRjaGVy
ID0gSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIuYmluZChJbnNwZWN0
b3JCYWNrZW5kLCAiRGVidWdnZXIiKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJE
ZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZSIsIHtMb2c6ICJsb2ciLCBFdmFsdWF0ZTogImV2
YWx1YXRlIiwgU291bmQ6ICJzb3VuZCJ9KTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVt
KCJEZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZSIsIHtMb2c6ICJsb2ciLCBFdmFsdWF0ZTog
ImV2YWx1YXRlIiwgU291bmQ6ICJzb3VuZCIsIFByb2JlOiAicHJvYmUifSk7CiBJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyRW51bSgiRGVidWdnZXIuU2NvcGVUeXBlIiwge0dsb2JhbDogImdsb2Jh
bCIsIExvY2FsOiAibG9jYWwiLCBXaXRoOiAid2l0aCIsIENsb3N1cmU6ICJjbG9zdXJlIiwgQ2F0
Y2g6ICJjYXRjaCJ9KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudCgiRGVidWdnZXIu
Z2xvYmFsT2JqZWN0Q2xlYXJlZCIsIFtdKTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVu
dCgiRGVidWdnZXIuc2NyaXB0UGFyc2VkIiwgWyJzY3JpcHRJZCIsICJ1cmwiLCAic3RhcnRMaW5l
IiwgInN0YXJ0Q29sdW1uIiwgImVuZExpbmUiLCAiZW5kQ29sdW1uIiwgImlzQ29udGVudFNjcmlw
dCIsICJzb3VyY2VNYXBVUkwiLCAiaGFzU291cmNlVVJMIl0pOwpAQCAtMTYsNiArMTYsNyBAQCBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQoIkRlYnVnZ2VyLnNjcmlwdEZhaWxlZFRvUGFy
c2UiLCBbInVybCIsICJzY3JpcHRTbwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KCJE
ZWJ1Z2dlci5icmVha3BvaW50UmVzb2x2ZWQiLCBbImJyZWFrcG9pbnRJZCIsICJsb2NhdGlvbiJd
KTsKIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudCgiRGVidWdnZXIucGF1c2VkIiwgWyJj
YWxsRnJhbWVzIiwgInJlYXNvbiIsICJkYXRhIl0pOwogSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckV2ZW50KCJEZWJ1Z2dlci5yZXN1bWVkIiwgW10pOworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckV2ZW50KCJEZWJ1Z2dlci5kaWRTYW1wbGVQcm9iZSIsIFsic2FtcGxlIl0pOwogSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRlYnVnZ2VyLmVuYWJsZSIsIFtdLCBbXSk7CiBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiRGVidWdnZXIuZGlzYWJsZSIsIFtdLCBbXSk7
CiBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiRGVidWdnZXIuc2V0QnJlYWtwb2lu
dHNBY3RpdmUiLCBbeyJuYW1lIjogImFjdGl2ZSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9u
YWwiOiBmYWxzZX1dLCBbXSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzMwOWE0OTRiZWY0YmM2MzE2ZjQzYzk1MGI1NzRl
ZTQwYWQ1NDhkZC4uMWEwY2Q0YzUxNTBmMzU2MTc5N2U4YzE1OTY5OGMzZDRmMjE5YWQ3YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAxLTE1ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNhcHR1cmUgcHJvYmUgc2FtcGxlcyBvbiB0
aGUgYmFja2VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI2NjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAg
ICAgIEFkZCBwcm90b2NvbCB0ZXN0cyBmb3Igc2V0dGluZyBhbmQgaGl0dGluZyB0aGUgcHJvYmUg
YnJlYWtwb2ludCBhY3Rpb24gdHlwZS4KKworICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci9zZXRCcmVha3BvaW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWFjdGlvbnMuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0UHJvYmUtbXVsdGlwbGUtYWN0
aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci9zZXRQcm9iZS1tdWx0aXBsZS1hY3Rpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGluc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvYmUtaGVscGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFByb2JlSGVscGVyLnNpbXBsaWZpZWRQcm9iZVNhbXBsZSk6CisKIDIwMTQtMDEtMTUg
IEZyw6lkw6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgogCiAgICAgICAgIFtTVkddIEFj
Y2VwdCBIVE1MIGFuZCBNYXRoTUwgbmFtZXNwYWNlcyBhcyB2YWxpZCByZXF1aXJlZEV4dGVuc2lv
bnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9k
aWRTYW1wbGVQcm9iZS1tdWx0aXBsZS1wcm9iZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL2RpZFNhbXBsZVByb2JlLW11bHRpcGxlLXByb2Jl
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcxMzcwNTQyZTg4MGYwYzQ3OGE2NjM2YjA1MWE1
YzE3Y2NkNGUwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90
b2NvbC9kZWJ1Z2dlci9kaWRTYW1wbGVQcm9iZS1tdWx0aXBsZS1wcm9iZXMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTIgQEAKK0RlYnVnZ2VyLnNldEJyZWFrcG9pbnQgd2l0aCBtdWx0aXBsZSBw
cm9iZSBhY3Rpb25zIGF0IHRoZSBzYW1lIGJyZWFrcG9pbnQuIFRlc3QgRGVidWdnZXIuZGlkU2Ft
cGxlUHJvYmUgZXZlbnRzIGZvciB0aGUgcHJvYmUgc2FtcGxlcy4KKworQnJlYWtwb2ludHMgRW5h
YmxlZAorRm91bmQgYnJlYWtwb2ludC5qcworUEFTUzogU2hvdWxkIHJlY2VpdmUgdHdvIGJyZWFr
cG9pbnQgYWN0aW9uIGlkZW50aWZpZXJzIG9uIERlYnVnZ2VyLnNldEJyZWFrcG9pbnQgY2FsbGJh
Y2suCitSdW5uaW5nIGJyZWFrcG9pbnRBY3Rpb25zIHRvIHRyaWdnZXIgcHJvYmUgc2FtcGxlcy4K
K2luc2lkZSBicmVha3BvaW50QWN0aW9ucyBhOigxMikgYjooW29iamVjdCBPYmplY3RdKQorUmVj
ZWl2ZWQgcHJvYmUgc2FtcGxlIHBheWxvYWQ6IHsidHlwZSI6Im51bWJlciIsInZhbHVlIjoxMiwi
ZGVzY3JpcHRpb24iOiIxMiJ9CitSZWNlaXZlZCBwcm9iZSBzYW1wbGUgcGF5bG9hZDogeyJ0eXBl
IjoibnVtYmVyIiwidmFsdWUiOjEyLCJkZXNjcmlwdGlvbiI6IjEyIn0KK1BBU1M6IFNhbXBsZXMg
ZnJvbSBwcm9iZSBhY3Rpb25zIG9uIHRoZSBzYW1lIGJyZWFrcG9pbnQgc2hvdWxkIGhhdmUgdW5p
cXVlIGFjdGlvbiBpZGVudGlmaWVycy4KK1BBU1M6IFNhbXBsZXMgZnJvbSBwcm9iZSBhY3Rpb25z
IG9uIHRoZSBzYW1lIGJyZWFrcG9pbnQgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYmF0Y2ggaWRlbnRp
ZmllcnMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1
Z2dlci9kaWRTYW1wbGVQcm9iZS1tdWx0aXBsZS1wcm9iZXMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9kaWRTYW1wbGVQcm9iZS1tdWx0aXBsZS1wcm9iZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZjBlM2Y1ZDJjYjcxYTU4OWZiOTBmYWRhNGUwNzVhNWFmMjhlYjI4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVn
Z2VyL2RpZFNhbXBsZVByb2JlLW11bHRpcGxlLXByb2Jlcy5odG1sCkBAIC0wLDAgKzEsOTggQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9icmVha3BvaW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmltcG9ydFNjcmlwdCgiLi4vLi4vLi4vLi4v
aW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm9iZS1oZWxwZXIuanMiKTsKKworICAgIElu
c3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIkRlYnVnZ2VyLmVuYWJsZSIsIHt9KTsKKyAgICBJbnNw
ZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJEZWJ1Z2dlci5zZXRCcmVha3BvaW50c0FjdGl2ZSIsIHth
Y3RpdmU6IHRydWV9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJy
ZWFrcG9pbnRzIEVuYWJsZWQiKTsKKyAgICB9KTsKKworICAgIHZhciBzYW1wbGVzID0gW107Cisg
ICAgY29uc3QgZXhwZWN0ZWRTYW1wbGVDb3VudCA9IDI7CisKKyAgICBmdW5jdGlvbiByZWNlaXZl
ZEFsbEV4cGVjdGVkU2FtcGxlcygpIHsKKyAgICAgICAgcmV0dXJuIHNhbXBsZXMubGVuZ3RoID09
PSBleHBlY3RlZFNhbXBsZUNvdW50OworICAgIH0KKworICAgIGZ1bmN0aW9uIGR1bXBTYW1wbGVz
KCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTYW1wbGUgMTogIiArIEpTT04u
c3RyaW5naWZ5KHNhbXBsZXNbMF0pKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNhbXBs
ZSAyOiAiICsgSlNPTi5zdHJpbmdpZnkoc2FtcGxlc1sxXSkpOworICAgIH0KKworICAgIHZhciB0
ZXN0cyA9IFsKKyAgICAgICAgeworICAgICAgICAgICAgbWVzc2FnZTogIlNhbXBsZXMgZnJvbSBw
cm9iZSBhY3Rpb25zIG9uIHRoZSBzYW1lIGJyZWFrcG9pbnQgc2hvdWxkIGhhdmUgdW5pcXVlIGFj
dGlvbiBpZGVudGlmaWVycy4iLAorICAgICAgICAgICAgcHJlZGljYXRlOiBmdW5jdGlvbiBzYW1w
bGVzSGF2ZVVuaXF1ZUFjdGlvbklkcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2FtcGxl
c1swXS5wcm9iZUlkICE9PSBzYW1wbGVzWzFdLnByb2JlSWQ7CisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgZXJyb3I6IGR1bXBTYW1wbGVzCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1lc3NhZ2U6ICJTYW1wbGVzIGZyb20gcHJvYmUgYWN0aW9ucyBvbiB0aGUgc2FtZSBi
cmVha3BvaW50IHNob3VsZCBoYXZlIHRoZSBzYW1lIGJhdGNoIGlkZW50aWZpZXJzLiIsCisgICAg
ICAgICAgICBwcmVkaWNhdGU6IGZ1bmN0aW9uIHNhbXBsZXNIYXZlRXF1YWxCYXRjaElkcygpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2FtcGxlc1swXS5iYXRjaElkID09PSBzYW1wbGVzWzFd
LmJhdGNoSWQ7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZXJyb3I6IGR1bXBTYW1wbGVz
CisgICAgICAgIH0sCisgICAgXTsKKworICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJE
ZWJ1Z2dlci5zY3JpcHRQYXJzZWQiXSA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCisgICAgewor
ICAgICAgICBpZiAoL3Jlc291cmNlc1wvYnJlYWtwb2ludFwuanMkLy50ZXN0KG1lc3NhZ2VPYmpl
Y3QucGFyYW1zLnVybCkpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGb3VuZCBi
cmVha3BvaW50LmpzIik7CisgICAgICAgICAgICB2YXIgc2NyaXB0SWRlbnRpZmllciA9IG1lc3Nh
Z2VPYmplY3QucGFyYW1zLnNjcmlwdElkOworICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0ge3Nj
cmlwdElkOiBzY3JpcHRJZGVudGlmaWVyLCBsaW5lTnVtYmVyOiAxOCwgY29sdW1uTnVtYmVyOiAw
fTsKKyAgICAgICAgICAgIHZhciBvcHRpb25zID0geworICAgICAgICAgICAgICAgIGF1dG9Db250
aW51ZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBhY3Rpb25zOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsidHlwZSI6ICJwcm9iZSIsICJkYXRhIjogImEifSwKKyAgICAgICAgICAgICAgICAgICAg
eyJ0eXBlIjogInByb2JlIiwgImRhdGEiOiAiYSJ9CisgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdn
ZXIuc2V0QnJlYWtwb2ludCIsIHtsb2NhdGlvbjogbG9jYXRpb24sIG9wdGlvbnM6IG9wdGlvbnN9
LCBmdW5jdGlvbihyZXNwb25zZU9iamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuY2hlY2tGb3JFcnJvcihyZXNwb25zZU9iamVjdCk7CisgICAgICAgICAgICAgICAgdmFyIGFj
dGlvbklkZW50aWZpZXJzID0gcmVzcG9uc2VPYmplY3QucmVzdWx0LmJyZWFrcG9pbnRBY3Rpb25J
ZGVudGlmaWVyczsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChhY3Rpb25J
ZGVudGlmaWVycyBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbklkZW50aWZpZXJzLmxlbmd0aCA9
PT0gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hvdWxkIHJlY2Vp
dmUgdHdvIGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXJzIG9uIERlYnVnZ2VyLnNldEJyZWFr
cG9pbnQgY2FsbGJhY2suIik7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdl
IHVzZSB0aGUgQnJlYWtwb2ludC9CcmVha3BvaW50QWN0aW9uIG1vZGVsIG9iamVjdHMgdG8gbWFu
YWdlIHRoaXM/CisgICAgICAgICAgICAgICAgaWYgKGFjdGlvbklkZW50aWZpZXJzLmxlbmd0aCA9
PT0gMikgeworICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFjdGlvbnNbMF0uaWRlbnRpZmll
ciA9IGFjdGlvbklkZW50aWZpZXJzWzBdOworICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmFj
dGlvbnNbMV0uaWRlbnRpZmllciA9IGFjdGlvbklkZW50aWZpZXJzWzFdOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUnVubmluZyBicmVha3Bv
aW50QWN0aW9ucyB0byB0cmlnZ2VyIHByb2JlIHNhbXBsZXMuIik7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiUnVudGltZS5ldmFsdWF0ZSIsIHtleHByZXNzaW9u
OiAiYnJlYWtwb2ludEFjdGlvbnMoMTIsIHt4OjEseToyfSkifSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJEZWJ1
Z2dlci5kaWRTYW1wbGVQcm9iZSJdID0gZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHZhciBzYW1wbGUgPSBQcm9iZUhlbHBlci5zaW1wbGlmaWVkUHJvYmVTYW1wbGUobWVz
c2FnZU9iamVjdCk7CisgICAgICAgIHNhbXBsZXMucHVzaChzYW1wbGUpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiUmVjZWl2ZWQgcHJvYmUgc2FtcGxlIHBheWxvYWQ6ICIgKyBKU09OLnN0
cmluZ2lmeShzYW1wbGUucGF5bG9hZCkpOworCisgICAgICAgIGlmIChyZWNlaXZlZEFsbEV4cGVj
dGVkU2FtcGxlcygpKSB7CisgICAgICAgICAgICB0ZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3Qp
IHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGVzdC5wcmVkaWNhdGUoKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChyZXN1bHQsIHRlc3QubWVzc2FnZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHRlc3QuZXJy
b3IoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+RGVidWdnZXIuc2V0QnJlYWtwb2ludCB3aXRoIG11bHRp
cGxlIHByb2JlIGFjdGlvbnMgYXQgdGhlIHNhbWUgYnJlYWtwb2ludC4gVGVzdCBEZWJ1Z2dlci5k
aWRTYW1wbGVQcm9iZSBldmVudHMgZm9yIHRoZSBwcm9iZSBzYW1wbGVzLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1
Z2dlci9zZXRCcmVha3BvaW50LWFjdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYWN0aW9ucy1leHBlY3RlZC50
eHQKaW5kZXggMjdiNjZhYjI0ZWRmODA2Mzk4ZWNmYjlkOTcyOWVjNGMzMzRmNWUwNS4uODIxYzYy
ZDNmMTU2NzliZmVkODM5ZDBkNWQxMzdmNWE3NWU4ODNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYWN0aW9ucy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Nl
dEJyZWFrcG9pbnQtYWN0aW9ucy1leHBlY3RlZC50eHQKQEAgLTE3LDggKzE3LDEwIEBAIGluc2lk
ZSBicmVha3BvaW50QWN0aW9ucyBhOigxMikgYjooW29iamVjdCBPYmplY3RdKQogUEFTUzogQ29u
c29sZSBNZXNzYWdlOiB7InNvdXJjZSI6ImphdmFzY3JpcHQiLCJsZXZlbCI6ImxvZyIsInRleHQi
OiJsb2ctYWN0aW9uLWJlZm9yZSIsImxvY2F0aW9uIjoiYnJlYWtwb2ludC5qczoxOToyIn0KIFBB
U1M6IENvbnNvbGUgTWVzc2FnZTogeyJzb3VyY2UiOiJjb25zb2xlLWFwaSIsImxldmVsIjoibG9n
IiwidGV4dCI6ImV2YWwtYWN0aW9uIiwibG9jYXRpb24iOiI/Pz86MToyNiIsInBhcmFtZXRlcnMi
Olt7InR5cGUiOiJzdHJpbmcifSx7InR5cGUiOiJudW1iZXIifSx7InR5cGUiOiJvYmplY3QifV19
CiBQQVNTOiBDb25zb2xlIE1lc3NhZ2U6IHsic291cmNlIjoiamF2YXNjcmlwdCIsImxldmVsIjoi
bG9nIiwidGV4dCI6ImxvZy1hY3Rpb24tYWZ0ZXIiLCJsb2NhdGlvbiI6ImJyZWFrcG9pbnQuanM6
MTk6MiJ9CitQQVNTOiBQcm9iZSBzYW1wbGUgcGF5bG9hZDogeyJ0eXBlIjoibnVtYmVyIiwidmFs
dWUiOjEyLCJkZXNjcmlwdGlvbiI6IjEyIn0KIGluc2lkZSBicmVha3BvaW50QWN0aW9ucyBhOigx
MDApIGI6KFtvYmplY3QgSFRNTEJvZHlFbGVtZW50XSkKIFBBU1M6IENvbnNvbGUgTWVzc2FnZTog
eyJzb3VyY2UiOiJqYXZhc2NyaXB0IiwibGV2ZWwiOiJsb2ciLCJ0ZXh0IjoibG9nLWFjdGlvbi1i
ZWZvcmUiLCJsb2NhdGlvbiI6ImJyZWFrcG9pbnQuanM6MTk6MiJ9CiBQQVNTOiBDb25zb2xlIE1l
c3NhZ2U6IHsic291cmNlIjoiY29uc29sZS1hcGkiLCJsZXZlbCI6ImxvZyIsInRleHQiOiJldmFs
LWFjdGlvbiIsImxvY2F0aW9uIjoiPz8/OjE6MjYiLCJwYXJhbWV0ZXJzIjpbeyJ0eXBlIjoic3Ry
aW5nIn0seyJ0eXBlIjoibnVtYmVyIn0seyJ0eXBlIjoib2JqZWN0Iiwic3VidHlwZSI6Im5vZGUi
fV19CiBQQVNTOiBDb25zb2xlIE1lc3NhZ2U6IHsic291cmNlIjoiamF2YXNjcmlwdCIsImxldmVs
IjoibG9nIiwidGV4dCI6ImxvZy1hY3Rpb24tYWZ0ZXIiLCJsb2NhdGlvbiI6ImJyZWFrcG9pbnQu
anM6MTk6MiJ9CitQQVNTOiBQcm9iZSBzYW1wbGUgcGF5bG9hZDogeyJ0eXBlIjoibnVtYmVyIiwi
dmFsdWUiOjEwMCwiZGVzY3JpcHRpb24iOiIxMDAifQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1hY3Rpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1h
Y3Rpb25zLmh0bWwKaW5kZXggNTc3NWQyNWFiNTBkMGVhNmRkZDI1MGRlMDAzZGUxOWY5NGFmODZm
MS4uMTFiNjlhYTQxNzdkOGZlZWRlYzYwY2YzNTUwYzRjNmMxN2Y0Mjc2NyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtYWN0
aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9z
ZXRCcmVha3BvaW50LWFjdGlvbnMuaHRtbApAQCAtNiw2ICs2LDcgQEAKIGZ1bmN0aW9uIHRlc3Qo
KQogewogICAgIEluc3BlY3RvclRlc3QuaW1wb3J0U2NyaXB0KCIuLi8uLi8uLi8uLi9pbnNwZWN0
b3ItcHJvdG9jb2wvcmVzb3VyY2VzL2NvbnNvbGUtaGVscGVyLmpzIik7CisgICAgSW5zcGVjdG9y
VGVzdC5pbXBvcnRTY3JpcHQoIi4uLy4uLy4uLy4uL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJj
ZXMvcHJvYmUtaGVscGVyLmpzIik7CiAKICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJD
b25zb2xlLmVuYWJsZSIsIHt9KTsKICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJEZWJ1
Z2dlci5lbmFibGUiLCB7fSk7CkBAIC0xMyw5ICsxNCwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnRzIEVuYWJsZWQiKTsKICAgICB9KTsK
IAotICAgIHZhciBleHBlY3RMb2dzID0gZmFsc2U7Ci0gICAgdmFyIGxvZ3NTZWVuID0gMDsKLSAg
ICBjb25zdCBleHBlY3RlZExvZ3MgPSA2OworICAgIHZhciBpc0V4cGVjdGluZ0xvZ3MgPSBmYWxz
ZTsKKyAgICB2YXIgaXNFeHBlY3RpbmdTYW1wbGVzID0gZmFsc2U7CisgICAgdmFyIGxvZ0NvdW50
ID0gMDsKKyAgICB2YXIgc2FtcGxlQ291bnQgPSAwOworICAgIGNvbnN0IGV4cGVjdGVkTG9nQ291
bnQgPSA2OworICAgIGNvbnN0IGV4cGVjdGVkU2FtcGxlQ291bnQgPSAyOworCisgICAgZnVuY3Rp
b24gcmVjZWl2ZWRBbGxFeHBlY3RlZE91dHB1dCgpIHsKKyAgICAgICAgcmV0dXJuIGxvZ0NvdW50
ID09PSBleHBlY3RlZExvZ0NvdW50ICYmIHNhbXBsZUNvdW50ID09PSBleHBlY3RlZFNhbXBsZUNv
dW50OworICAgIH0KIAogICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJEZWJ1Z2dlci5z
Y3JpcHRQYXJzZWQiXSA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCiAgICAgewpAQCAtMzAsNyAr
MzgsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgeyJ0eXBlIjogImxv
ZyIsICJkYXRhIjogImxvZy1hY3Rpb24tYmVmb3JlIn0sCiAgICAgICAgICAgICAgICAgICAgIHsi
dHlwZSI6ICJzb3VuZCJ9LAogICAgICAgICAgICAgICAgICAgICB7InR5cGUiOiAiZXZhbHVhdGUi
LCAiZGF0YSI6ICIoZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdldmFsLWFjdGlvbicsIGEsIGIp
OyB9KSgpIn0sCi0gICAgICAgICAgICAgICAgICAgIHsidHlwZSI6ICJsb2ciLCAiZGF0YSI6ICJs
b2ctYWN0aW9uLWFmdGVyIn0KKyAgICAgICAgICAgICAgICAgICAgeyJ0eXBlIjogImxvZyIsICJk
YXRhIjogImxvZy1hY3Rpb24tYWZ0ZXIifSwKKyAgICAgICAgICAgICAgICAgICAgeyJ0eXBlIjog
InByb2JlIiwgImRhdGEiOiAiYSJ9CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfTsK
IApAQCAtNDEsNyArNTAsOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwge2V4cHJlc3Npb246ICJi
cmVha3BvaW50QWN0aW9ucygxKSJ9KTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNl
bmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwge2V4cHJlc3Npb246ICJicmVha3BvaW50QWN0
aW9ucygyLCAxMikifSk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFu
ZCgiUnVudGltZS5ldmFsdWF0ZSIsIHtleHByZXNzaW9uOiAiYnJlYWtwb2ludEFjdGlvbnMoMiwg
e3g6MSx5OjJ9KSJ9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0TG9n
cyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlzRXhwZWN0aW5nTG9ncyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGlzRXhwZWN0aW5nU2FtcGxlcyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSdW5uaW5nIGJyZWFrcG9pbnRBY3Rpb25zIHRv
IHRyaWdnZXJpbmcgdGhlIGJyZWFrcG9pbnQgYWN0aW9ucyIpOwogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwge2V4cHJlc3Np
b246ICJicmVha3BvaW50QWN0aW9ucygxMiwge3g6MSx5OjJ9KSJ9LCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoIlJ1bnRpbWUu
ZXZhbHVhdGUiLCB7ZXhwcmVzc2lvbjogImJyZWFrcG9pbnRBY3Rpb25zKDEwMCwgZG9jdW1lbnQu
Ym9keSkifSk7CkBAIC01OSw5ICs2OSwyNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9CiAKKyAgICBJbnNwZWN0b3JUZXN0LmV2
ZW50SGFuZGxlclsiRGVidWdnZXIuZGlkU2FtcGxlUHJvYmUiXSA9IGZ1bmN0aW9uKG1lc3NhZ2VP
YmplY3QpCisgICAgeworICAgICAgICBpZiAoIWlzRXhwZWN0aW5nU2FtcGxlcykgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IHVuZXhwZWN0ZWQgcHJvYmUgc2FtcGxlLCBw
cm9iZSBzYW1wbGVzIHNob3VsZCBvbmx5IGhhdmUgY29tZSBmcm9tIGJyZWFrcG9pbnQgYWN0aW9u
cy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgc2ltcGxpZmllZFNhbXBsZSA9
IFByb2JlSGVscGVyLnNpbXBsaWZpZWRQcm9iZVNhbXBsZShtZXNzYWdlT2JqZWN0KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IFByb2JlIHNhbXBsZSBwYXlsb2FkOiAiICsgSlNP
Ti5zdHJpbmdpZnkoc2ltcGxpZmllZFNhbXBsZS5wYXlsb2FkKSk7CisKKyAgICAgICAgKytzYW1w
bGVDb3VudDsKKworICAgICAgICBpZiAocmVjZWl2ZWRBbGxFeHBlY3RlZE91dHB1dCgpKQorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CisKICAgICBJbnNw
ZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiQ29uc29sZS5tZXNzYWdlQWRkZWQiXSA9IGZ1bmN0aW9u
KG1lc3NhZ2VPYmplY3QpCiAgICAgewotICAgICAgICBpZiAoIWV4cGVjdExvZ3MpIHsKKyAgICAg
ICAgaWYgKCFpc0V4cGVjdGluZ0xvZ3MpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJGQUlMOiB1bmV4cGVjdGVkIGxvZywgbG9ncyBzaG91bGQgb25seSBoYXZlIGNvbWUgZnJvbSBi
cmVha3BvaW50IGFjdGlvbnMuIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzAsNyArOTcsOSBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgdmFyIHNpbXBsaWZpZWRNZXNzYWdlID0gQ29uc29sZUhlbHBlci5zaW1w
bGlmaWVkQ29uc29sZU1lc3NhZ2UobWVzc2FnZU9iamVjdCk7CiAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJQQVNTOiBDb25zb2xlIE1lc3NhZ2U6ICIgKyBKU09OLnN0cmluZ2lmeShzaW1wbGlm
aWVkTWVzc2FnZSkpOwogCi0gICAgICAgIGlmICgrK2xvZ3NTZWVuID09PSBleHBlY3RlZExvZ3Mp
CisgICAgICAgICsrbG9nQ291bnQ7CisKKyAgICAgICAgaWYgKHJlY2VpdmVkQWxsRXhwZWN0ZWRP
dXRwdXQoKSkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNl
cy9wcm9iZS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3Vy
Y2VzL3Byb2JlLWhlbHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTQ3NmZhMWM1NDFlYzFiYTNkOTMzZTc5
ZWEzNzVmMjVlYjM2OTNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL3Jlc291cmNlcy9wcm9iZS1oZWxwZXIuanMKQEAgLTAsMCArMSwxMiBAQAord2lu
ZG93LlByb2JlSGVscGVyID0ge307CisKK1Byb2JlSGVscGVyLnNpbXBsaWZpZWRQcm9iZVNhbXBs
ZSA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpCit7CisgICAgdmFyIGRhdGEgPSBtZXNzYWdlT2Jq
ZWN0LnBhcmFtcy5zYW1wbGU7CisgICAgcmV0dXJuIHsKKyAgICAgICAgcHJvYmVJZDogZGF0YS5w
cm9iZUlkLAorICAgICAgICBiYXRjaElkOiBkYXRhLmJhdGNoSWQsCisgICAgICAgIHNhbXBsZUlk
OiBkYXRhLnNhbXBsZUlkLAorICAgICAgICBwYXlsb2FkOiBkYXRhLnBheWxvYWQKKyAgICB9Owor
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>