<?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>155650</bug_id>
          
          <creation_ts>2016-03-18 10:35:57 -0700</creation_ts>
          <short_desc>Web Automation: Add Automation protocol commands to resolve frames as handles</short_desc>
          <delta_ts>2016-03-28 09:41:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1176215</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 10:35:57 -0700</bug_when>
    <thetext>We need a frame handle to track it as the active frame in the driver. We need to be able to resolve them via a number, name or element handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176216</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-18 10:37:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/25242422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176220</commentid>
    <comment_count>2</comment_count>
      <attachid>274428</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 10:47:09 -0700</bug_when>
    <thetext>Created attachment 274428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176222</commentid>
    <comment_count>3</comment_count>
      <attachid>274429</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 10:48:22 -0700</bug_when>
    <thetext>Created attachment 274429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176250</commentid>
    <comment_count>4</comment_count>
      <attachid>274429</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-18 11:40:41 -0700</bug_when>
    <thetext>Comment on attachment 274429
Patch

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

Very nice, just a few issues to address.

&gt; Source/WebKit2/UIProcess/Automation/Automation.json:35
&gt; +            &quot;id&quot;: &quot;PageFrameHandle&quot;,

I think simply &apos;FrameHandle&apos; is ok. Or, add &apos;Page&apos; to NodeHandle.

&gt; Source/WebKit2/UIProcess/Automation/Automation.json:173
&gt; +            &quot;description&quot;: &quot;Determines the &lt;code&gt;PageFrameHandle&lt;/code&gt; based on the ordinal of the frame or a node handle to a frame owner element.&quot;,

Nit: node handle &apos;for&apos; a frame owner element

&gt; Source/WebKit2/UIProcess/Automation/Automation.json:175
&gt; +                { &quot;name&quot;: &quot;browsingContextHandle&quot;, &quot;$ref&quot;: &quot;BrowsingContextHandle&quot;, &quot;description&quot;: &quot;The handle for the browsing context the frame is located.&quot; },

Nit: ...context in which to search for the frame.

&gt; Source/WebKit2/UIProcess/Automation/Automation.json:176
&gt; +                { &quot;name&quot;: &quot;ordinal&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The ordinal of the frame to resolve as a &lt;code&gt;PageFrameHandle&lt;/code&gt;.&quot; },

Please mention the thing it&apos;s an ordinal index into. I think it&apos;s window.frames ?

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:283
&gt; +    WebCore::Frame* coreChildFrame = coreMainFrame-&gt;tree().child(ordinal);

I think this is the incorrect API, it should FrameTree::scopedChild(ordinal). window.frames is a list of all frames in the page&apos;s frame tree, not the child ordinal of the main frame.

In bool JSDOMWindow::getOwnPropertySlotByIndex(JSObject* object, ExecState* exec, unsigned index, PropertySlot&amp; slot), it implements it with the following

    // (1) First, indexed properties.
    // These are also allowed cross-orgin, so come before the access check.
    if (frame &amp;&amp; index &lt; frame-&gt;tree().scopedChildCount()) {
        slot.setValue(thisObject, ReadOnly | DontDelete | DontEnum, toJS(exec, frame-&gt;tree().scopedChild(index)-&gt;document()-&gt;domWindow()));
        return true;
    }

The frame check is not needed, but we are missing the bounds check and calling a different API.

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:285
&gt; +        WebProcess::singleton().parentProcessConnection()-&gt;send(Messages::WebAutomationSession::DidResolveFrame(callbackID, 0, frameNotFoundErrorType), 0);

If the frame is out of bounds then scopedChild returns nullptr so we can just keep this branch and not add an explicit bound check on the ordinal.

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:341
&gt; +        WebProcess::singleton().parentProcessConnection()-&gt;send(Messages::WebAutomationSession::DidResolveFrame(callbackID, frameFromElement-&gt;frameID(), frameNotFoundErrorType), 0);

This should pass emptyString() instead of frameNotFound since it&apos;s the happy path.

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.h:33
&gt; +

Nit: extra newlines not needed.

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.js:62
&gt; +    nodeForIdentifier(identifier)

It might be good to document the inputs and outputs of these functions a little more. For example, script execution throws an exception on failure but nodeforIdentifier returns null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176257</commentid>
    <comment_count>5</comment_count>
      <attachid>274442</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 11:59:15 -0700</bug_when>
    <thetext>Created attachment 274442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176262</commentid>
    <comment_count>6</comment_count>
      <attachid>274429</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-03-18 12:09:06 -0700</bug_when>
    <thetext>Comment on attachment 274429
Patch

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

&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:185
&gt; +    return &amp;JSC::jsCast&lt;WebCore::JSElement*&gt;(toJS(element))-&gt;wrapped();

Is it possible for a NodeHandle to be a non-Element object? For instance a WebCore::Node* that is not an element?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176263</commentid>
    <comment_count>7</comment_count>
      <attachid>274429</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 12:11:55 -0700</bug_when>
    <thetext>Comment on attachment 274429
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp:185
&gt;&gt; +    return &amp;JSC::jsCast&lt;WebCore::JSElement*&gt;(toJS(element))-&gt;wrapped();
&gt; 
&gt; Is it possible for a NodeHandle to be a non-Element object? For instance a WebCore::Node* that is not an element?

Oops, yes. I lost my check for inherits(JSElement::info()) when I moved this to a helper function. I&apos;ll add it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176273</commentid>
    <comment_count>8</comment_count>
      <attachid>274447</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 12:24:59 -0700</bug_when>
    <thetext>Created attachment 274447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176321</commentid>
    <comment_count>9</comment_count>
      <attachid>274458</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-18 15:01:55 -0700</bug_when>
    <thetext>Created attachment 274458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176760</commentid>
    <comment_count>10</comment_count>
      <attachid>274600</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-21 10:14:57 -0700</bug_when>
    <thetext>Created attachment 274600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178182</commentid>
    <comment_count>11</comment_count>
      <attachid>274600</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-25 17:12:09 -0700</bug_when>
    <thetext>Comment on attachment 274600
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/Automation/Automation.json:188
&gt; +                { &quot;name&quot;: &quot;frameHandle&quot;, &quot;$ref&quot;: &quot;FrameHandle&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The handle for the frame in which to search for the frame. The main frame is used if this parameter empty string or excluded.&quot; },

Please add &apos;child&apos; and &apos;parent&apos; to the description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178428</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-28 09:41:38 -0700</bug_when>
    <thetext>https://trac.webkit.org/r198738</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274428</attachid>
            <date>2016-03-18 10:47:09 -0700</date>
            <delta_ts>2016-03-18 10:48:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155650-20160318104708.patch</filename>
            <type>text/plain</type>
            <size>33863</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3NzU0MDhmOTYzYWQ4
ZGNjZjZmODY2MjkyZjBlNjYyNmRiMmFiYi4uZWFiMzdjYjZmZmFkNDY2MDJmYTRmNDM5OTkwNjVm
MTZmOTFjMjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAzLTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlv
bjogQWRkIEF1dG9tYXRpb24gcHJvdG9jb2wgY29tbWFuZHMgdG8gcmVzb2x2ZSBmcmFtZXMgYXMg
aGFuZGxlcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU2NTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjUyNDI0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IE1h
cmtlZCBjaGlsZCgpIG1ldGhvZHMgYXMgZXhwb3J0ZWQgc28gV0syIGNhbiB1c2UgdGhlbS4KKwor
MjAxNi0wMy0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAg
ICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQgdGhlIGJ1
ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IE1hcmtlZCBjaGlsZCgpIG1ldGhvZHMgYXMgZXhw
b3J0ZWQuCisKIDIwMTYtMDMtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBGaXggYXNzZXJ0aW9uIGZhaWx1cmUgb24gZHJpdmUuZ29vZ2xl
LmNvbSBhZnRlciByMTk2MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTcxOWU1OGIxMjRiMzZjMmFjNDEwOGY3
ODVkNWYyZmY4NzNjZWJlZi4uNTEwMDc1YTFkYTdlMDNhNWE2ODkzMzdhZTU3NWFiNTg2MDI3YjIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTAzLTE4ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlvbjogQWRkIEF1
dG9tYXRpb24gcHJvdG9jb2wgY29tbWFuZHMgdG8gcmVzb2x2ZSBmcmFtZXMgYXMgaGFuZGxlcwor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU2NTAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjUyNDI0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRp
b24uanNvbjoKKyAgICAgICAgQWRkZWQgcmVzb2x2ZVBhZ2VGcmFtZUhhbmRsZSBhbmQgcmVzb2x2
ZVBhcmVudFBhZ2VGcmFtZUhhbmRsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OndlYkZyYW1lUHJveHlGb3JIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lSUQpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lUHJv
eHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKTogVXNlIGZyYW1lIGhhbmRsZXMgbm93LgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZVBhZ2VGcmFtZUhhbmRsZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkUmVzb2x2ZUZy
YW1lKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNv
bHZlUGFyZW50UGFnZUZyYW1lSGFuZGxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlUGFyZW50RnJhbWUpOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluOgor
ICAgICAgICAoRGlkUmVzb2x2ZUZyYW1lKTogQWRkZWQuCisgICAgICAgIChEaWRSZXNvbHZlUGFy
ZW50RnJhbWUpOiBBZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5vZGVIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1lV2l0aE9yZGluYWwp
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1lV2l0aE5hbWUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1l
KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKFJlc29sdmVGcmFtZVdpdGhP
cmRpbmFsKTogQWRkZWQuCisgICAgICAgIChSZXNvbHZlRnJhbWVXaXRoTm9kZUhhbmRsZSk6IEFk
ZGVkLgorICAgICAgICAoUmVzb2x2ZUZyYW1lV2l0aE5hbWUpOiBBZGRlZC4KKyAgICAgICAgKFJl
c29sdmVQYXJlbnRGcmFtZSk6IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanM6CisgICAgICAgIChBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LnByb3RvdHlwZS5ub2RlRm9ySWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICBQ
dWJsaWMgbWV0aG9kIHRoYXQgZWF0cyB0aGUgZXhjZXB0aW9uIHRocm93biBieSB0aGUgcHJpdmF0
ZSBtZXRob2QuCisKIDIwMTYtMDMtMTcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21hdGlvbi5ldmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRy
ZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggMDk5YTVkMTJkMTkw
MmYzNjI4MzUxMzIwMTBhMzZiZWI1M2Q5ZjkwZi4uOWExYWRjOWYyZTMwZjEwZWUwYWVmMjQyZGE4
YzZjYjU4ZGNkODU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC03MSw4ICs3MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyBt
X3BhcmVudCA9IG51bGxwdHI7IH0KICAgICAgICAgdm9pZCByZW1vdmVDaGlsZChGcmFtZSopOwog
Ci0gICAgICAgIEZyYW1lKiBjaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgICAgIEZy
YW1lKiBjaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBGcmFtZSogY2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBGcmFtZSogY2hpbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUqIGZpbmQoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgY2hpbGRDb3Vu
dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9BdXRvbWF0aW9uLmpzb24gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlv
bi9BdXRvbWF0aW9uLmpzb24KaW5kZXggNmJmZmZiNDlkZWIzMGI2YWJmMzBhZmZmYjNiNTlkYzVl
YzkxMmM0MC4uY2JmODNhMDExYTE1OTNmN2Q1ZDRiOTEwODgxYTkzYjIyYWRkNjMwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNv
bgpAQCAtMzIsNiArMzIsMTYgQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBbiBvcGFx
dWUgaWRlbnRpZmllciBmb3IgYSBicm93c2luZyBjb250ZXh0LiIKICAgICAgICAgfSwKICAgICAg
ICAgeworICAgICAgICAgICAgImlkIjogIlBhZ2VGcmFtZUhhbmRsZSIsCisgICAgICAgICAgICAi
dHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFuIG9wYXF1ZSBp
ZGVudGlmaWVyIGZvciBhIGZyYW1lIGluIGEgcGFnZS4iCisgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJpZCI6ICJOb2RlSGFuZGxlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0
cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQW4gb3BhcXVlIGlkZW50aWZpZXIg
Zm9yIGEgbm9kZSBpbiBhIHBhZ2UuIgorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAg
ICAiaWQiOiAiRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBlbnVtIGNvbnRhaW5zIHByZWRlZmluZWQg
ZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBzaWduYWwgYSB3ZWxsLWRlZmluZWQg
ZXJyb3IgY29uZGl0aW9uLCBzdWNoIGFzIGEgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiwgdW5rbm93
biB3aW5kb3cgaGFuZGxlLCBhbmQgc28gZm9ydGguIFRoZSBiYWNrZW5kIHNpZ25hbHMgb25lIG9m
IHRoZXNlIGVycm9ycyBieSB1c2luZyBpdCBhcyBhIHByZWZpeCBvZiB0aGUgY29tbWFuZHMncyBl
cnJvciBtZXNzYWdlICh0aGUgZXJyb3JTdHJpbmcgYXJndW1lbnQgaW4gZ2VuZXJhdGVkIEMrKyBi
YWNrZW5kIGRpc3BhdGNoZXJzKS4gVGhpcyB3aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSBmcm9udGVu
ZCBhcyBhIHByb3RvY29sIGVycm9yIHdpdGggYSBKU09OLVJQQyBlcnJvciBjb2RlIG9mICdTZXJ2
ZXJFcnJvcicuIEl0IGlzIHVwIHRvIHRoZSBmcm9udGVuZCB3aGV0aGVyIGFuZCBob3cgdG8gZGVh
bCB3aXRoIGVycm9ycy4iLApAQCAtMzksNiArNDksNyBAQAogICAgICAgICAgICAgICAgICJJbnRl
cm5hbEVycm9yIiwKICAgICAgICAgICAgICAgICAiSmF2YVNjcmlwdEVycm9yIiwKICAgICAgICAg
ICAgICAgICAiV2luZG93Tm90Rm91bmQiLAorICAgICAgICAgICAgICAgICJGcmFtZU5vdEZvdW5k
IiwKICAgICAgICAgICAgICAgICAiTm9kZU5vdEZvdW5kIiwKICAgICAgICAgICAgICAgICAiTm90
SW1wbGVtZW50ZWQiLAogICAgICAgICAgICAgICAgICJNaXNzaW5nUGFyYW1ldGVyIiwKQEAgLTE0
Niw3ICsxNTcsOCBAQAogICAgICAgICAgICAgIm5hbWUiOiAiZXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb24iLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkV2YWx1YXRlcyBhIHNjcmlwdCBm
dW5jdGlvbiBpbiBhIGJyb3dzaW5nIGNvbnRleHQgYW5kIGNhbGxzIGl0IHdpdGggdGhlIHN1cHBs
aWVkIGFyZ3VtZW50cy4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhl
IHNjcmlwdCBzaG91bGQgYmUgZXZhbHVhdGVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRs
ZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0
aGUgc2NyaXB0IHNob3VsZCBiZSBldmFsdWF0ZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAicGFnZUZyYW1lSGFuZGxlIiwgIiRyZWYiOiAiUGFnZUZyYW1lSGFuZGxlIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBwYWdlIGZyYW1l
IHRoZSBzY3JpcHQgc2hvdWxkIGJlIGV2YWx1YXRlZC4gVGhlIG1haW4gZnJhbWUgaXMgdXNlZCBp
ZiB0aGlzIHBhcmFtZXRlciBlbXB0eSBzdHJpbmcgb3IgZXhjbHVkZWQuIiB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZnVuY3Rpb24iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRp
b24iOiAiVGhlIHNjcmlwdCB0byBldmFsdWF0ZSBpbiB0aGUgYnJvd3NpbmcgY29udGV4dC4gSXQg
bXVzdCBiZSBhIGZ1bmN0aW9uIHJlc3VsdC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJhcmd1bWVudHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAic3RyaW5n
IiB9LCAiZGVzY3JpcHRpb24iOiAiVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBmdW5jdGlv
biB3aGVuIGNhbGxlZC4gVGhleSB3aWxsIGJlIHBhcnNlZCBhcyBKU09OIGJlZm9yZSBjYWxsaW5n
IHRoZSBmdW5jdGlvbi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJleHBlY3RzSW1w
bGljaXRDYWxsYmFja0FyZ3VtZW50IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgZnVuY3Rpb24gZXhwZWN0cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFzIHRoZSBsYXN0IGFy
Z3VtZW50LiBJdCBpcyBleHBlY3RlZCB0byBjYWxsIHRoaXMgY2FsbGJhY2sgd2l0aCBhIHJlc3Vs
dC4iIH0KQEAgLTE1NSw2ICsxNjcsMzIgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJl
c3VsdCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJUaGUgcmVzdWx0IHJldHVy
bmVkIGJ5IHRoZSBjYWxsZWQgZnVuY3Rpb24uIEl0IGlzIEpTT04gZW5jb2RlZCBhZnRlciB0aGUg
ZnVuY3Rpb24gcmV0dXJucyBvciBjYWxscyB0aGUgY2FsbGJhY2suIiB9CiAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJyZXNvbHZlUGFnZUZyYW1lSGFuZGxlIiwKKyAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIHRoZSA8Y29kZT5QYWdlRnJhbWVIYW5kbGU8L2NvZGU+
IGJhc2VkIG9uIHRoZSBvcmRpbmFsIG9mIHRoZSBmcmFtZSBvciBhIG5vZGUgaGFuZGxlIHRvIGEg
ZnJhbWUgb3duZXIgZWxlbWVudC4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2luZ0NvbnRleHRIYW5kbGUiLCAiJHJlZiI6ICJC
cm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhl
IGJyb3dzaW5nIGNvbnRleHQgdGhlIGZyYW1lIGlzIGxvY2F0ZWQuIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAib3JkaW5hbCIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG9yZGluYWwgb2YgdGhlIGZyYW1lIHRvIHJlc29sdmUg
YXMgYSA8Y29kZT5QYWdlRnJhbWVIYW5kbGU8L2NvZGU+LiIgfSwKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIG5hbWUgb2YgdGhlIGZyYW1lIG93bmVyIGVsZW1lbnQgdG8gcmVzb2x2
ZSBhcyBhIDxjb2RlPlBhZ2VGcmFtZUhhbmRsZTwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibm9kZUhhbmRsZSIsICIkcmVmIjogIk5vZGVIYW5kbGUiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBvZiB0aGUgZnJhbWUgb3duZXIgZWxl
bWVudCB0byByZXNvbHZlIGFzIGEgPGNvZGU+UGFnZUZyYW1lSGFuZGxlPC9jb2RlPi4iIH0KKyAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlc3VsdCIsICIkcmVmIjogIlBhZ2VGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlv
biI6ICJUaGUgPGNvZGU+UGFnZUZyYW1lSGFuZGxlPC9jb2RlPiBmb3IgdGhlIHJlcXVlc3RlZCBm
cmFtZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiYXN5bmMiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInJlc29sdmVQYXJlbnRQYWdl
RnJhbWVIYW5kbGUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRldGVybWluZXMgdGhl
IDxjb2RlPlBhZ2VGcmFtZUhhbmRsZTwvY29kZT4gZm9yIHRoZSBwYXJlbnQgZnJhbWUgb2YgdGhl
IHN1cHBsaWVkIDxjb2RlPlBhZ2VGcmFtZUhhbmRsZTwvY29kZT4uIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NpbmdDb250ZXh0
SGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjog
IlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2luZyBjb250ZXh0IHRoZSBmcmFtZSBpcyBsb2NhdGVk
LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhZ2VGcmFtZUhhbmRsZSIsICIkcmVm
IjogIlBhZ2VGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUg
cGFnZSBmcmFtZSB0aGF0IHNob3VsZCByZXNvbHZlIGl0cyBwYXJlbnQgcGFnZSBmcmFtZS4iIH0K
KyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlc3VsdCIsICIkcmVmIjogIlBhZ2VGcmFtZUhhbmRsZSIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgPGNvZGU+UGFnZUZyYW1lSGFuZGxlPC9jb2RlPiBmb3IgdGhlIHJlcXVlc3Rl
ZCBmcmFtZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiYXN5bmMiOiB0cnVlCiAg
ICAgICAgIH0KICAgICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggNGJiNTRiZjQ0
MzVmMjM0MzY4ZDk5ODY0ODcyYjUzOGNhYzE2ODlkOS4uNjFiM2U2ODA1MTBiZGU2YjFiYzdiZGU5
MmJjOTNkODVmNjE3MzE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTQyLDYgKzE0
Miw1NCBAQCBTdHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYlBhZ2VQcm94
eShjb25zdCBXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcgogICAgIHJldHVybiBoYW5kbGU7CiB9CiAK
K1dlYkZyYW1lUHJveHkqIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3ZWJGcmFtZVByb3h5Rm9ySGFu
ZGxlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgaWYg
KGhhbmRsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBwYWdlLm1haW5GcmFtZSgpOworCisg
ICAgYXV0byBpdGVyID0gbV9oYW5kbGVXZWJGcmFtZU1hcC5maW5kKGhhbmRsZSk7CisgICAgaWYg
KGl0ZXIgPT0gbV9oYW5kbGVXZWJGcmFtZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBpZiAoV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwYWdlLnByb2Nlc3MoKS53ZWJG
cmFtZShpdGVyLT52YWx1ZSkpCisgICAgICAgIHJldHVybiBmcmFtZTsKKworICAgIHJldHVybiBu
dWxscHRyOworfQorCitTdHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZy
YW1lSUQodWludDY0X3QgZnJhbWVJRCkKK3sKKyAgICBpZiAoIWZyYW1lSUQpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNz
UG9vbC0+cHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCkpIHsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+aXNN
YWluRnJhbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBpdGVyID0gbV93ZWJG
cmFtZUhhbmRsZU1hcC5maW5kKGZyYW1lSUQpOworICAgIGlmIChpdGVyICE9IG1fd2ViRnJhbWVI
YW5kbGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKKworICAgIFN0cmlu
ZyBoYW5kbGUgPSBXZWJDb3JlOjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuY29udmVydFRv
QVNDSUlVcHBlcmNhc2UoKTsKKworICAgIGF1dG8gZmlyc3RBZGRSZXN1bHQgPSBtX3dlYlBhZ2VI
YW5kbGVNYXAuYWRkKGZyYW1lSUQsIGhhbmRsZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZmlyc3RB
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBhdXRvIHNlY29uZEFkZFJlc3VsdCA9IG1faGFu
ZGxlV2ViUGFnZU1hcC5hZGQoaGFuZGxlLCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChz
ZWNvbmRBZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICByZXR1cm4gaGFuZGxlOworfQorCitT
dHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lUHJveHkoY29uc3Qg
V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSkKK3sKKyAgICByZXR1cm4gaGFuZGxlRm9yV2Vi
RnJhbWVJRCh3ZWJGcmFtZVByb3h5LmZyYW1lSUQoKSk7Cit9CisKIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHQ+IFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQogewog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZTsKQEAgLTM0NiwxMyArMzk0LDE2IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4dChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0CiAgICAgcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21Pcmln
aW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24s
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBlY3Rz
SW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBSZWY8RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25D
YWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bFBhZ2VGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmIGNhbGxi
YWNrKQogewotICAgIC8vIEZJWE1FIDI0MTcyNDM5OiBUaGlzIHNob3VsZCBiZSBhIGZyYW1lIGhh
bmRsZSwgbm90IGEgcGFnZSBoYW5kbGUuIENoYW5nZSB0aGlzIG9uY2Ugd2UgaGF2ZSBmcmFtZSBz
dXBwb3J0LgotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZSho
YW5kbGUpOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShi
cm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CiAKKyAgICBXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IHdlYkZyYW1lUHJveHlGb3JIYW5kbGUob3B0aW9uYWxQYWdlRnJhbWVI
YW5kbGUgPyAqb3B0aW9uYWxQYWdlRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpLCAqcGFnZSk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVT
U0FHRShGcmFtZU5vdEZvdW5kKTsKKwogICAgIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50c1ZlY3Rv
cjsKICAgICBhcmd1bWVudHNWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50cy5sZW5ndGgo
KSk7CiAKQEAgLTM2NSw3ICs0MTYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcgogICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEKys7
CiAgICAgbV9ldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9u
KHBhZ2UtPm1haW5GcmFtZSgpLT5mcmFtZUlEKCksIGZ1bmN0aW9uLCBhcmd1bWVudHNWZWN0b3Is
IGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICBw
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oZnJhbWUtPmZyYW1lSUQoKSwgZnVuY3Rpb24sIGFy
Z3VtZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tJ
RCksIDApOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIHJlc3VsdCwg
Y29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCkBAIC0zODEsNCArNDMyLDc0IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvCiAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhyZXN1bHQpOwogfQog
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFnZUZyYW1lSGFuZGxlKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVQ
YWdlRnJhbWVIYW5kbGVDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3sKKyAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
V2luZG93Tm90Rm91bmQpOworCisgICAgaWYgKCFvcHRpb25hbE9yZGluYWwgJiYgIW9wdGlvbmFs
TmFtZSAmJiAhb3B0aW9uYWxOb2RlSGFuZGxlKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIpOworCisgICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fbmV4dFJlc29sdmVGcmFtZUNhbGxiYWNrSUQrKzsKKyAgICBtX3Jlc29sdmVQYWdl
RnJhbWVIYW5kbGVDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
KworICAgIGlmIChvcHRpb25hbE5vZGVIYW5kbGUpIHsKKyAgICAgICAgcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVGcmFtZVdp
dGhOb2RlSGFuZGxlKHBhZ2UtPnBhZ2VJRCgpLCAqb3B0aW9uYWxOb2RlSGFuZGxlLCBjYWxsYmFj
a0lEKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAob3B0aW9uYWxOYW1l
KSB7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpSZXNvbHZlRnJhbWVXaXRoTmFtZShwYWdlLT5wYWdlSUQoKSwgKm9wdGlv
bmFsTmFtZSwgY2FsbGJhY2tJRCksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKG9wdGlvbmFsT3JkaW5hbCkgeworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6UmVzb2x2ZUZyYW1lV2l0aE9yZGluYWwo
cGFnZS0+cGFnZUlEKCksICpvcHRpb25hbE9yZGluYWwsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlRnJhbWUodWludDY0X3QgY2FsbGJhY2tJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCit7CisgICAgYXV0
byBjYWxsYmFjayA9IG1fcmVzb2x2ZVBhcmVudFBhZ2VGcmFtZUhhbmRsZUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghZXJyb3JUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJl
KGVycm9yVHlwZSk7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoaGFu
ZGxlRm9yV2ViRnJhbWVJRChmcmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnJlc29sdmVQYXJlbnRQYWdlRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBT
dHJpbmcmIHBhZ2VGcmFtZUhhbmRsZSwgUmVmPFJlc29sdmVQYXJlbnRQYWdlRnJhbWVIYW5kbGVD
YWxsYmFjaz4mJiBjYWxsYmFjaykKK3sKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdl
UHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQp
OworCisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKHBh
Z2VGcmFtZUhhbmRsZSwgKnBhZ2UpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoRnJhbWVOb3RGb3VuZCk7CisKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gbV9uZXh0UmVzb2x2ZVBhcmVudEZyYW1lQ2FsbGJhY2tJRCsrOworICAg
IG1fcmVzb2x2ZVBhcmVudFBhZ2VGcmFtZUhhbmRsZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVQYXJlbnRGcmFtZShmcmFtZS0+ZnJh
bWVJRCgpLCBjYWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OmRpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9y
ZXNvbHZlUGFyZW50UGFnZUZyYW1lSGFuZGxlQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7Cisg
ICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFlcnJvclR5cGUu
aXNFbXB0eSgpKQorICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3JUeXBlKTsKKyAg
ICBlbHNlCisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhoYW5kbGVGb3JXZWJGcmFtZUlE
KGZyYW1lSUQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
aAppbmRleCBiNzIyMmY2Njg1NmZhZGI0MzMyOTZiNjVjNmFkYzBlZjg2ZjA1NTdlLi41NjhiMTRm
OWYxZWU5M2YxNTA3OTJlMjQ0ZmJmYjVmYjBkOTkzOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgK
QEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRnJvbnRlbmRSb3V0ZXI7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGllbnQ7CitjbGFzcyBXZWJGcmFtZVBy
b3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKQEAgLTU3
LDkgKzU4LDYgQEAgY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXQKICAgICAsIHB1YmxpYyBJbnNwZWN0
b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKIHsKIHB1YmxpYzoKLSAgICB0
eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gV2ViUGFnZUhhbmRsZU1hcDsKLSAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gSGFuZGxlV2ViUGFnZU1hcDsKLQogICAg
IFdlYkF1dG9tYXRpb25TZXNzaW9uKCk7CiAgICAgfldlYkF1dG9tYXRpb25TZXNzaW9uKCk7CiAK
QEAgLTkxLDEyICs4OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnb0JhY2tJbkJyb3dzaW5nQ29u
dGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxvYWRCcm93c2luZ0NvbnRl
eHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5JiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2Fs
bGJhY2tBcmd1bWVudCwgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxQYWdlRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlc29sdmVQYWdlRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBpbnQqIG9wdGlv
bmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZVBhZ2VGcmFtZUhhbmRsZUNhbGxiYWNrPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRQYWdlRnJhbWVIYW5kbGUoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25z
dCBTdHJpbmcmIHBhZ2VGcmFtZUhhbmRsZSwgUmVmPFJlc29sdmVQYXJlbnRQYWdlRnJhbWVIYW5k
bGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJQYWdl
UHJveHkqIHdlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcg
aGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYpOwogCisgICAgV2ViS2l0
OjpXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYsIFdl
YktpdDo6V2ViUGFnZVByb3h5Jik7CisgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lSUQodWlu
dDY0X3QgZnJhbWVJRCk7CisgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lUHJveHkoY29uc3Qg
V2ViS2l0OjpXZWJGcmFtZVByb3h5Jik7CisKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZvclBh
Z2UoV2ViUGFnZVByb3h5Jik7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2Vi
QXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0xMDQsNiArMTA4LDggQEAg
cHJpdmF0ZToKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBtZXNzYWdl
cwogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJh
Y2tJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKKyAg
ICB2b2lkIGRpZFJlc29sdmVGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CisgICAgdm9pZCBkaWRSZXNvbHZlUGFyZW50
RnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBlcnJvclR5cGUpOwogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9v
bCB7IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudD4gbV9jbGllbnQ7CkBAIC0xMTIsMTMgKzExOCwyMiBAQCBwcml2YXRlOgogICAgIFJl
ZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAg
IFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNw
YXRjaGVyOwogCi0gICAgV2ViUGFnZUhhbmRsZU1hcCBtX3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAg
SGFuZGxlV2ViUGFnZU1hcCBtX2hhbmRsZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1hcDx1aW50NjRf
dCwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2
NF90PiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAgICAgU3RyaW5nIG1fYWN0aXZlQnJvd3NpbmdDb250
ZXh0SGFuZGxlOwogCisgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1lSGFu
ZGxlTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFtZU1h
cDsKKwogICAgIHVpbnQ2NF90IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAx
IH07CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFj
az4+IG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFja3M7CiAKKyAgICB1aW50NjRf
dCBtX25leHRSZXNvbHZlRnJhbWVDYWxsYmFja0lEIHsgMSB9OworICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlJlc29sdmVQYWdlRnJhbWVIYW5kbGVDYWxsYmFjaz4+IG1fcmVzb2x2ZVBhZ2VGcmFtZUhhbmRs
ZUNhbGxiYWNrczsKKworICAgIHVpbnQ2NF90IG1fbmV4dFJlc29sdmVQYXJlbnRGcmFtZUNhbGxi
YWNrSUQgeyAxIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QXV0
b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzb2x2ZVBhcmVudFBhZ2VGcmFtZUhh
bmRsZUNhbGxiYWNrPj4gbV9yZXNvbHZlUGFyZW50UGFnZUZyYW1lSGFuZGxlQ2FsbGJhY2tzOwor
CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqIG1fcmVtb3RlQ2hhbm5lbCB7IG51bGxwdHIgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgppbmRleCBiODY4ZGQwYzA2YzQyYWU2YWMyMGE3NGI4
ZjM4NWE5MWU1Yzk3ZmU2Li5iM2FhNmI4ZjRkNTU3ODFkNjgzZDgzNjY4YWU2NGU0NmZmOTFkYTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMjIsNCArMjIs
NyBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbiB7CiAgICAgRGlkRXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgU3RyaW5nIHJlc3VsdCwg
U3RyaW5nIGVycm9yVHlwZSkKKworICAgIERpZFJlc29sdmVGcmFtZSh1aW50NjRfdCBjYWxsYmFj
a0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZXJyb3JUeXBlKQorICAgIERpZFJlc29sdmVQ
YXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
ZXJyb3JUeXBlKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGUx
ODI3NjE5NTcwOGIzYmMyODllNjcwOWQyMjM4NTYyMTM2MWVhZWMuLmRlZTQ0YjA4YjQzMmFjNGJm
MmU5YjRjMjc0ODRmY2VlZDQ2OTZlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKQEAgLTMzLDkgKzMzLDE2IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdSZWZQcml2YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
T3BhcXVlSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZVRyZWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTE2MSw2ICsxNjgsMjMgQEAgSlNPYmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6c2NyaXB0T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogICAgIHJldHVy
biBzY3JpcHRPYmplY3Q7CiB9CiAKK1dlYkNvcmU6OkVsZW1lbnQqIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiBub2RlSGFuZGxlKQoreworICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdCA9IHNjcmlw
dE9iamVjdEZvckZyYW1lKCpmcmFtZSk7CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQg
PSBmcmFtZS0+anNDb250ZXh0KCk7CisKKyAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uQXJndW1lbnRz
W10gPSB7CisgICAgICAgIHRvSlNWYWx1ZShjb250ZXh0LCBub2RlSGFuZGxlKQorICAgIH07CisK
KyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGNhbGxQcm9wZXJ0eUZ1bmN0aW9uKGNvbnRleHQsIHNj
cmlwdE9iamVjdCwgQVNDSUlMaXRlcmFsKCJub2RlRm9ySWRlbnRpZmllciIpLCBXVEZfQVJSQVlf
TEVOR1RIKGZ1bmN0aW9uQXJndW1lbnRzKSwgZnVuY3Rpb25Bcmd1bWVudHMsIG51bGxwdHIpOwor
ICAgIEpTT2JqZWN0UmVmIGVsZW1lbnQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgcmVzdWx0
LCBudWxscHRyKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxXZWJDb3JlOjpKU0VsZW1lbnQqPih0b0pTKGVsZW1l
bnQpKS0+d3JhcHBlZCgpOworfQorCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRp
ZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogewogICAgIHVpbnQ2
NF90IGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCk7CkBAIC0yMzksNCArMjYzLDEzMCBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9u
KHVpbnQ2NF90IGZyYW1lSUQsCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRp
ZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBl
KSwgMCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1l
V2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50MzJfdCBvcmRpbmFsLCB1aW50NjRfdCBj
YWxsYmFja0lEKQoreworICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIFN0cmluZyBlcnJv
clR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShj
YWxsYmFja0lELCAwLCBlcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKKworICAgIFdlYkNvcmU6Ok1haW5GcmFtZSogY29y
ZU1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghY29yZU1haW5GcmFtZSkg
eworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1l
KGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVN
YWluRnJhbWUtPnRyZWUoKS5jaGlsZChvcmRpbmFsKTsKKyAgICBpZiAoIWNvcmVDaGlsZEZyYW1l
KSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJh
bWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgV2ViRnJhbWUqIGNoaWxkRnJhbWUgPSBXZWJGcmFtZTo6ZnJv
bUNvcmVGcmFtZSgqY29yZUNoaWxkRnJhbWUpOworICAgIGlmICghY2hpbGRGcmFtZSkgeworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxi
YWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJh
bWUoY2FsbGJhY2tJRCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpLCBlbXB0eVN0cmluZygpKSwgMCk7
Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1lV2l0aE5v
ZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit7CisgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgU3RyaW5n
IGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91
bmQpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZy
YW1lKGNhbGxiYWNrSUQsIDAsIGVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgU3RyaW5nIGZyYW1lTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90Rm91bmQpOworCisgICAgV2ViQ29yZTo6TWFpbkZyYW1l
KiBjb3JlTWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFjb3JlTWFpbkZy
YW1lKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZl
RnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0g
Y29yZU1haW5GcmFtZTsgY29yZUZyYW1lOyBjb3JlRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJGcmFtZTo6ZnJv
bUNvcmVGcmFtZSgqY29yZUZyYW1lKTsKKyAgICAgICAgaWYgKCFmcmFtZSB8fCAhbV93ZWJGcmFt
ZVNjcmlwdE9iamVjdE1hcC5jb250YWlucyhmcmFtZS0+ZnJhbWVJRCgpKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIFdlYkNvcmU6OkVsZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxl
bWVudEZvck5vZGVIYW5kbGUoZnJhbWUsIG5vZGVIYW5kbGUpOworICAgICAgICBpZiAoIWNvcmVF
bGVtZW50KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFjb3JlRWxlbWVu
dC0+aXNGcmFtZUVsZW1lbnRCYXNlKCkpIHsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3Vu
ZEVycm9yVHlwZSksIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZUZyb21FbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2UqPihjb3JlRWxlbWVudCktPmNvbnRlbnRGcmFtZSgp
OworICAgICAgICBpZiAoIWNvcmVGcmFtZUZyb21FbGVtZW50KSB7CisgICAgICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAs
IGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFdlYkZyYW1lKiBmcmFtZUZyb21FbGVtZW50ID0gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoKmNvcmVGcmFtZUZyb21FbGVtZW50KTsKKyAgICAgICAgaWYgKCFmcmFtZUZy
b21FbGVtZW50KSB7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAw
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgZnJhbWVGcm9t
RWxlbWVudC0+ZnJhbWVJRCgpLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
UmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsK
K30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlRnJhbWVXaXRoTmFt
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3sKKyAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBTdHJpbmcgZXJyb3JUeXBlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJ
RCwgMCwgZXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJp
bmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1D
b25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2Fn
ZTo6RnJhbWVOb3RGb3VuZCk7CisKKyAgICBXZWJDb3JlOjpNYWluRnJhbWUqIGNvcmVNYWluRnJh
bWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVNYWluRnJhbWUpIHsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFj
a0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUNoaWxkRnJhbWUgPSBjb3JlTWFpbkZyYW1l
LT50cmVlKCkuY2hpbGQobmFtZSk7CisgICAgaWYgKCFjb3JlQ2hpbGRGcmFtZSkgeworICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNr
SUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFdlYkZyYW1lKiBjaGlsZEZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUo
KmNvcmVDaGlsZEZyYW1lKTsKKyAgICBpZiAoIWNoaWxkRnJhbWUpIHsKKyAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNr
SUQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSwgZW1wdHlTdHJpbmcoKSksIDApOworfQorCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlmICghZnJhbWUp
IHsKKyAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVu
dW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVz
c2FnZTo6RnJhbWVOb3RGb3VuZCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRSZXNvbHZlUGFyZW50RnJhbWUoY2FsbGJhY2tJRCwgMCwgZXJyb3JUeXBlKSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkUmVzb2x2ZVBhcmVudEZyYW1lKGNhbGxiYWNrSUQsIGZyYW1lLT5wYXJlbnRGcmFt
ZSgpLT5mcmFtZUlEKCksIGVtcHR5U3RyaW5nKCkpLCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA5NTdkZGU0OWU3Yjk5
ZjFlZDVjZTIxOTUxNDhlYmU4NmQwMjIyMTQwLi44Nzc2OGEyNjcyZDkyNGJjNjM4YTAxZjNmNWYy
NTcwZDYwNzkwY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTI5LDYg
KzI5LDEyIEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQmFzZS5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CisK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNDcsMTIgKzUz
LDE3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3RG
b3JGcmFtZShXZWJGcmFtZSYpOworICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnRGb3JOb2Rl
SGFuZGxlKFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBp
biBnZW5lcmF0ZWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZURlY29kZXImKTsKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
IG1lc3NhZ2VzCiAgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMs
IGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCByZXNvbHZlRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQzMl90IG9yZGluYWwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUZy
YW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5k
bGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUZyYW1lV2l0aE5hbWUo
dWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50aWZpZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmpzIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMKaW5kZXggNWRkNzBmYTNkYmI5OTZiMDMyZmQwYTA2
MDNmNTA3Y2NmOWZiMmY2NC4uOWY5ZjQzNGFjMDgwZmQ5N2YwMDNmNzZlNjJhZTVhNDY2NTU4NzFk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuanMKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMKQEAgLTU5LDYgKzU5LDE1IEBA
IGxldCBBdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gY2xhc3MgQXV0b21hdGlvblNlc3Npb25Qcm94
eQogICAgICAgICAgICAgY2FsbGJhY2soZnVuY3Rpb25WYWx1ZS5hcHBseShudWxsLCBhcmd1bWVu
dFZhbHVlcykpOwogICAgIH0KIAorICAgIG5vZGVGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVGb3JJZGVu
dGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAg
ICBfanNvblBhcnNlKHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggMWQwZjhhZmZjNjhjODdlYWJmODcyYjVlMTIxMWZmMzM2NTc3
NzEwNy4uMGY5YmE1OWJiYjk3N2VkM2Y0MWZkOWE3YjUyZDlmNTdmNTAwNGM1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDQgKzIy
LDkgQEAKIAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSB7CiAgICAgRXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWUsIFN0cmluZyBmdW5jdGlvbiwg
VmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJn
dW1lbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyAgICBSZXNvbHZlRnJhbWVXaXRoT3JkaW5h
bCh1aW50NjRfdCBwYWdlSUQsIHVpbnQzMl90IG9yZGluYWwsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CisgICAgUmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXNvbHZlRnJhbWVXaXRoTmFt
ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lE
KQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274429</attachid>
            <date>2016-03-18 10:48:22 -0700</date>
            <delta_ts>2016-03-18 11:59:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155650-20160318104822.patch</filename>
            <type>text/plain</type>
            <size>33625</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3NzU0MDhmOTYzYWQ4
ZGNjZjZmODY2MjkyZjBlNjYyNmRiMmFiYi4uNzU4ZjE3NTBlYjUxMDhjNDgyZjhmYjg2Y2JjODE4
NWE0YjUzZGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAzLTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlv
bjogQWRkIEF1dG9tYXRpb24gcHJvdG9jb2wgY29tbWFuZHMgdG8gcmVzb2x2ZSBmcmFtZXMgYXMg
aGFuZGxlcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU2NTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjUyNDI0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IE1h
cmtlZCBjaGlsZCgpIG1ldGhvZHMgYXMgZXhwb3J0ZWQgc28gV0syIGNhbiB1c2UgdGhlbS4KKwog
MjAxNi0wMy0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEZpeCBhc3NlcnRpb24gZmFpbHVyZSBvbiBkcml2ZS5nb29nbGUuY29tIGFmdGVy
IHIxOTYwNTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNzE5ZTU4YjEyNGIzNmMyYWM0MTA4Zjc4NWQ1ZjJmZjg3
M2NlYmVmLi41MTAwNzVhMWRhN2UwM2E1YTY4OTMzN2FlNTc1YWI1ODYwMjdiMjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTYtMDMtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21hdGlvbiBw
cm90b2NvbCBjb21tYW5kcyB0byByZXNvbHZlIGZyYW1lcyBhcyBoYW5kbGVzCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY1MAorICAgICAgICBy
ZGFyOi8vcHJvYmxlbS8yNTI0MjQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uOgor
ICAgICAgICBBZGRlZCByZXNvbHZlUGFnZUZyYW1lSGFuZGxlIGFuZCByZXNvbHZlUGFyZW50UGFn
ZUZyYW1lSGFuZGxlLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
d2ViRnJhbWVQcm94eUZvckhhbmRsZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVJRCk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVQcm94eSk6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24pOiBVc2UgZnJhbWUgaGFuZGxlcyBub3cuCisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFnZUZyYW1lSGFuZGxlKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlRnJhbWUpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRQ
YWdlRnJhbWVIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OmRpZFJlc29sdmVQYXJlbnRGcmFtZSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW46CisgICAgICAgIChE
aWRSZXNvbHZlRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKERpZFJlc29sdmVQYXJlbnRGcmFtZSk6
IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjplbGVtZW50Rm9yTm9kZUhhbmRsZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlRnJhbWVXaXRoT3JkaW5hbCk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlRnJhbWVX
aXRoTm9kZUhhbmRsZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlRnJhbWVXaXRoTmFtZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUpOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAoUmVzb2x2ZUZyYW1lV2l0aE9yZGluYWwpOiBB
ZGRlZC4KKyAgICAgICAgKFJlc29sdmVGcmFtZVdpdGhOb2RlSGFuZGxlKTogQWRkZWQuCisgICAg
ICAgIChSZXNvbHZlRnJhbWVXaXRoTmFtZSk6IEFkZGVkLgorICAgICAgICAoUmVzb2x2ZVBhcmVu
dEZyYW1lKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5qczoKKyAgICAgICAgKEF1dG9tYXRpb25TZXNzaW9uUHJveHku
cHJvdG90eXBlLm5vZGVGb3JJZGVudGlmaWVyKTogQWRkZWQuCisgICAgICAgIFB1YmxpYyBtZXRo
b2QgdGhhdCBlYXRzIHRoZSBleGNlcHRpb24gdGhyb3duIGJ5IHRoZSBwcml2YXRlIG1ldGhvZC4K
KwogMjAxNi0wMy0xNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEF1dG9tYXRpb246IEFkZCBBdXRvbWF0aW9uLmV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAppbmRleCAwOTlhNWQxMmQxOTAyZjM2MjgzNTEz
MjAxMGEzNmJlYjUzZDlmOTBmLi45YTFhZGM5ZjJlMzBmMTBlZTBhZWYyNDJkYThjNmNiNThkY2Q4
NTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKQEAgLTcxLDggKzcxLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSB7IG1fcGFyZW50ID0g
bnVsbHB0cjsgfQogICAgICAgICB2b2lkIHJlbW92ZUNoaWxkKEZyYW1lKik7CiAKLSAgICAgICAg
RnJhbWUqIGNoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICAgICAgRnJhbWUqIGNoaWxk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IEZyYW1lKiBjaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIEZyYW1lKiBjaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgICAg
ICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogZmluZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjaGlsZENvdW50KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9t
YXRpb24uanNvbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRp
b24uanNvbgppbmRleCA2YmZmZmI0OWRlYjMwYjZhYmYzMGFmZmZiM2I1OWRjNWVjOTEyYzQwLi5j
YmY4M2EwMTFhMTU5M2Y3ZDVkNGI5MTA4ODFhOTNiMjJhZGQ2MzBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC0zMiw2
ICszMiwxNiBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFuIG9wYXF1ZSBpZGVudGlm
aWVyIGZvciBhIGJyb3dzaW5nIGNvbnRleHQuIgogICAgICAgICB9LAogICAgICAgICB7CisgICAg
ICAgICAgICAiaWQiOiAiUGFnZUZyYW1lSGFuZGxlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0
cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQW4gb3BhcXVlIGlkZW50aWZpZXIg
Zm9yIGEgZnJhbWUgaW4gYSBwYWdlLiIKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgImlkIjogIk5vZGVIYW5kbGUiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgYSBub2Rl
IGluIGEgcGFnZS4iCisgICAgICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJF
cnJvck1lc3NhZ2UiLAogICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJUaGlzIGVudW0gY29udGFpbnMgcHJlZGVmaW5lZCBlcnJvciBtZXNz
YWdlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNpZ25hbCBhIHdlbGwtZGVmaW5lZCBlcnJvciBjb25k
aXRpb24sIHN1Y2ggYXMgYSBtaXNzaW5nIGltcGxlbWVudGF0aW9uLCB1bmtub3duIHdpbmRvdyBo
YW5kbGUsIGFuZCBzbyBmb3J0aC4gVGhlIGJhY2tlbmQgc2lnbmFscyBvbmUgb2YgdGhlc2UgZXJy
b3JzIGJ5IHVzaW5nIGl0IGFzIGEgcHJlZml4IG9mIHRoZSBjb21tYW5kcydzIGVycm9yIG1lc3Nh
Z2UgKHRoZSBlcnJvclN0cmluZyBhcmd1bWVudCBpbiBnZW5lcmF0ZWQgQysrIGJhY2tlbmQgZGlz
cGF0Y2hlcnMpLiBUaGlzIHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIGZyb250ZW5kIGFzIGEgcHJv
dG9jb2wgZXJyb3Igd2l0aCBhIEpTT04tUlBDIGVycm9yIGNvZGUgb2YgJ1NlcnZlckVycm9yJy4g
SXQgaXMgdXAgdG8gdGhlIGZyb250ZW5kIHdoZXRoZXIgYW5kIGhvdyB0byBkZWFsIHdpdGggZXJy
b3JzLiIsCkBAIC0zOSw2ICs0OSw3IEBACiAgICAgICAgICAgICAgICAgIkludGVybmFsRXJyb3Ii
LAogICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0RXJyb3IiLAogICAgICAgICAgICAgICAgICJX
aW5kb3dOb3RGb3VuZCIsCisgICAgICAgICAgICAgICAgIkZyYW1lTm90Rm91bmQiLAogICAgICAg
ICAgICAgICAgICJOb2RlTm90Rm91bmQiLAogICAgICAgICAgICAgICAgICJOb3RJbXBsZW1lbnRl
ZCIsCiAgICAgICAgICAgICAgICAgIk1pc3NpbmdQYXJhbWV0ZXIiLApAQCAtMTQ2LDcgKzE1Nyw4
IEBACiAgICAgICAgICAgICAibmFtZSI6ICJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiIsCiAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRXZhbHVhdGVzIGEgc2NyaXB0IGZ1bmN0aW9uIGlu
IGEgYnJvd3NpbmcgY29udGV4dCBhbmQgY2FsbHMgaXQgd2l0aCB0aGUgc3VwcGxpZWQgYXJndW1l
bnRzLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGUgc2NyaXB0IHNo
b3VsZCBiZSBldmFsdWF0ZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3Np
bmdDb250ZXh0SGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2luZyBjb250ZXh0IHRoZSBzY3JpcHQg
c2hvdWxkIGJlIGV2YWx1YXRlZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYWdl
RnJhbWVIYW5kbGUiLCAiJHJlZiI6ICJQYWdlRnJhbWVIYW5kbGUiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIHBhZ2UgZnJhbWUgdGhlIHNjcmlw
dCBzaG91bGQgYmUgZXZhbHVhdGVkLiBUaGUgbWFpbiBmcmFtZSBpcyB1c2VkIGlmIHRoaXMgcGFy
YW1ldGVyIGVtcHR5IHN0cmluZyBvciBleGNsdWRlZC4iIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJmdW5jdGlvbiIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJUaGUg
c2NyaXB0IHRvIGV2YWx1YXRlIGluIHRoZSBicm93c2luZyBjb250ZXh0LiBJdCBtdXN0IGJlIGEg
ZnVuY3Rpb24gcmVzdWx0LiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImFyZ3VtZW50
cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAidHlwZSI6ICJzdHJpbmciIH0sICJkZXNj
cmlwdGlvbiI6ICJUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gY2Fs
bGVkLiBUaGV5IHdpbGwgYmUgcGFyc2VkIGFzIEpTT04gYmVmb3JlIGNhbGxpbmcgdGhlIGZ1bmN0
aW9uLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV4cGVjdHNJbXBsaWNpdENhbGxi
YWNrQXJndW1lbnQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRoZSBmdW5j
dGlvbiBleHBlY3RzIGEgY2FsbGJhY2sgZnVuY3Rpb24gYXMgdGhlIGxhc3QgYXJndW1lbnQuIEl0
IGlzIGV4cGVjdGVkIHRvIGNhbGwgdGhpcyBjYWxsYmFjayB3aXRoIGEgcmVzdWx0LiIgfQpAQCAt
MTU1LDYgKzE2NywzMiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhl
IGNhbGxlZCBmdW5jdGlvbi4gSXQgaXMgSlNPTiBlbmNvZGVkIGFmdGVyIHRoZSBmdW5jdGlvbiBy
ZXR1cm5zIG9yIGNhbGxzIHRoZSBjYWxsYmFjay4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAiYXN5bmMiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogInJlc29sdmVQYWdlRnJhbWVIYW5kbGUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkRldGVybWluZXMgdGhlIDxjb2RlPlBhZ2VGcmFtZUhhbmRsZTwvY29kZT4gYmFzZWQgb24g
dGhlIG9yZGluYWwgb2YgdGhlIGZyYW1lIG9yIGEgbm9kZSBoYW5kbGUgdG8gYSBmcmFtZSBvd25l
ciBlbGVtZW50LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29u
dGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3Npbmcg
Y29udGV4dCB0aGUgZnJhbWUgaXMgbG9jYXRlZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJvcmRpbmFsIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJUaGUgb3JkaW5hbCBvZiB0aGUgZnJhbWUgdG8gcmVzb2x2ZSBhcyBhIDxjb2Rl
PlBhZ2VGcmFtZUhhbmRsZTwvY29kZT4uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJUaGUgbmFtZSBvZiB0aGUgZnJhbWUgb3duZXIgZWxlbWVudCB0byByZXNvbHZlIGFzIGEgPGNv
ZGU+UGFnZUZyYW1lSGFuZGxlPC9jb2RlPi4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJub2RlSGFuZGxlIiwgIiRyZWYiOiAiTm9kZUhhbmRsZSIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIG9mIHRoZSBmcmFtZSBvd25lciBlbGVtZW50IHRvIHJl
c29sdmUgYXMgYSA8Y29kZT5QYWdlRnJhbWVIYW5kbGU8L2NvZGU+LiIgfQorICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVzdWx0IiwgIiRyZWYiOiAiUGFnZUZyYW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSA8
Y29kZT5QYWdlRnJhbWVIYW5kbGU8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGZyYW1lLiIgfQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAicmVzb2x2ZVBhcmVudFBhZ2VGcmFtZUhhbmRs
ZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB0aGUgPGNvZGU+UGFn
ZUZyYW1lSGFuZGxlPC9jb2RlPiBmb3IgdGhlIHBhcmVudCBmcmFtZSBvZiB0aGUgc3VwcGxpZWQg
PGNvZGU+UGFnZUZyYW1lSGFuZGxlPC9jb2RlPi4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2luZ0NvbnRleHRIYW5kbGUiLCAi
JHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRs
ZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhlIGZyYW1lIGlzIGxvY2F0ZWQuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFnZUZyYW1lSGFuZGxlIiwgIiRyZWYiOiAiUGFnZUZy
YW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBwYWdlIGZyYW1l
IHRoYXQgc2hvdWxkIHJlc29sdmUgaXRzIHBhcmVudCBwYWdlIGZyYW1lLiIgfQorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAicmVzdWx0IiwgIiRyZWYiOiAiUGFnZUZyYW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRo
ZSA8Y29kZT5QYWdlRnJhbWVIYW5kbGU8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGZyYW1lLiIg
fQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfQog
ICAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0YmI1NGJmNDQzNWYyMzQzNjhk
OTk4NjQ4NzJiNTM4Y2FjMTY4OWQ5Li42MWIzZTY4MDUxMGJkZTZiMWJjN2JkZTkyYmM5M2Q4NWY2
MTczMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xNDIsNiArMTQyLDU0IEBAIFN0
cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdl
YlBhZ2VQcm94eSYgd2ViUGFnZVByCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAorV2ViRnJhbWVQ
cm94eSogV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lUHJveHlGb3JIYW5kbGUoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIFdlYlBhZ2VQcm94eSYgcGFnZSkKK3sKKyAgICBpZiAoaGFuZGxlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHBhZ2UubWFpbkZyYW1lKCk7CisKKyAgICBhdXRvIGl0
ZXIgPSBtX2hhbmRsZVdlYkZyYW1lTWFwLmZpbmQoaGFuZGxlKTsKKyAgICBpZiAoaXRlciA9PSBt
X2hhbmRsZVdlYkZyYW1lTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGlmIChXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHBhZ2UucHJvY2VzcygpLndlYkZyYW1lKGl0ZXIt
PnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK1N0cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVJRCh1aW50
NjRfdCBmcmFtZUlEKQoreworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NQb29sLT5wcm9j
ZXNzZXMoKSkgeworICAgICAgICBpZiAoV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzLT53
ZWJGcmFtZShmcmFtZUlEKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGl0ZXIgPSBtX3dlYkZyYW1lSGFuZGxl
TWFwLmZpbmQoZnJhbWVJRCk7CisgICAgaWYgKGl0ZXIgIT0gbV93ZWJGcmFtZUhhbmRsZU1hcC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOworCisgICAgU3RyaW5nIGhhbmRsZSA9
IFdlYkNvcmU6OmNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVy
Y2FzZSgpOworCisgICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViUGFnZUhhbmRsZU1hcC5h
ZGQoZnJhbWVJRCwgaGFuZGxlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKworICAgIGF1dG8gc2Vjb25kQWRkUmVzdWx0ID0gbV9oYW5kbGVXZWJQYWdl
TWFwLmFkZChoYW5kbGUsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfQVNTRVJUKHNlY29uZEFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK1N0cmluZyBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVQcm94eShjb25zdCBXZWJGcmFtZVBy
b3h5JiB3ZWJGcmFtZVByb3h5KQoreworICAgIHJldHVybiBoYW5kbGVGb3JXZWJGcmFtZUlEKHdl
YkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKK30KKwogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4gV2ViQXV0b21hdGlvblNlc3Npb246OmJ1aWxk
QnJvd3NpbmdDb250ZXh0Rm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHdpbmRvd0ZyYW1lOwpAQCAtMzQ2LDEzICszOTQsMTYgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmIGVycm9yU3QKICAgICBwYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENh
bGxiYWNrQXJndW1lbnQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYm
IGNhbGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsUGFnZUZyYW1l
SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5JiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
UmVmPEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgLy8gRklYTUUgMjQxNzI0Mzk6IFRoaXMgc2hvdWxkIGJlIGEgZnJhbWUgaGFuZGxlLCBub3Qg
YSBwYWdlIGhhbmRsZS4gQ2hhbmdlIHRoaXMgb25jZSB3ZSBoYXZlIGZyYW1lIHN1cHBvcnQuCi0g
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRsZSk7Cisg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKIAorICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gd2ViRnJhbWVQcm94eUZvckhhbmRsZShvcHRpb25hbFBhZ2VGcmFtZUhhbmRsZSA/ICpv
cHRpb25hbFBhZ2VGcmFtZUhhbmRsZSA6IGVtcHR5U3RyaW5nKCksICpwYWdlKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEZyYW1l
Tm90Rm91bmQpOworCiAgICAgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzVmVjdG9yOwogICAgIGFy
Z3VtZW50c1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkoYXJndW1lbnRzLmxlbmd0aCgpKTsKIApAQCAt
MzY1LDcgKzQxNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVyCiAgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQrKzsKICAgICBtX2V2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAKLSAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24ocGFnZS0+bWFp
bkZyYW1lKCktPmZyYW1lSUQoKSwgZnVuY3Rpb24sIGFyZ3VtZW50c1ZlY3RvciwgZXhwZWN0c0lt
cGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgY2FsbGJhY2tJRCksIDApOworICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbihmcmFtZS0+ZnJhbWVJRCgpLCBmdW5jdGlvbiwgYXJndW1lbnRzVmVj
dG9yLCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja0lEKSwgMCk7CiB9
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yVHlwZSkKQEAgLTM4MSw0ICs0MzIsNzQgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwg
Y28KICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKHJlc3VsdCk7CiB9CiAKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYWdlRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxl
LCBjb25zdCBpbnQqIG9wdGlvbmFsT3JkaW5hbCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5hbWUs
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxOb2RlSGFuZGxlLCBSZWY8UmVzb2x2ZVBhZ2VGcmFtZUhh
bmRsZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RG
b3VuZCk7CisKKyAgICBpZiAoIW9wdGlvbmFsT3JkaW5hbCAmJiAhb3B0aW9uYWxOYW1lICYmICFv
cHRpb25hbE5vZGVIYW5kbGUpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01F
U1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9u
ZXh0UmVzb2x2ZUZyYW1lQ2FsbGJhY2tJRCsrOworICAgIG1fcmVzb2x2ZVBhZ2VGcmFtZUhhbmRs
ZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgaWYg
KG9wdGlvbmFsTm9kZUhhbmRsZSkgeworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6UmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5k
bGUocGFnZS0+cGFnZUlEKCksICpvcHRpb25hbE5vZGVIYW5kbGUsIGNhbGxiYWNrSUQpLCAwKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChvcHRpb25hbE5hbWUpIHsKKyAgICAg
ICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OlJlc29sdmVGcmFtZVdpdGhOYW1lKHBhZ2UtPnBhZ2VJRCgpLCAqb3B0aW9uYWxOYW1lLCBj
YWxsYmFja0lEKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAob3B0aW9u
YWxPcmRpbmFsKSB7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlRnJhbWVXaXRoT3JkaW5hbChwYWdlLT5wYWdl
SUQoKSwgKm9wdGlvbmFsT3JkaW5hbCwgY2FsbGJhY2tJRCksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OmRpZFJlc29sdmVGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKK3sKKyAgICBhdXRvIGNhbGxiYWNr
ID0gbV9yZXNvbHZlUGFyZW50UGFnZUZyYW1lSGFuZGxlQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJ
RCk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFlcnJv
clR5cGUuaXNFbXB0eSgpKQorICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3JUeXBl
KTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhoYW5kbGVGb3JXZWJG
cmFtZUlEKGZyYW1lSUQpKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2
ZVBhcmVudFBhZ2VGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgcGFn
ZUZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudFBhZ2VGcmFtZUhhbmRsZUNhbGxiYWNrPiYm
IGNhbGxiYWNrKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhh
bmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBX
ZWJGcmFtZVByb3h5KiBmcmFtZSA9IHdlYkZyYW1lUHJveHlGb3JIYW5kbGUocGFnZUZyYW1lSGFu
ZGxlLCAqcGFnZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1JfTUVTU0FHRShGcmFtZU5vdEZvdW5kKTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX25leHRSZXNvbHZlUGFyZW50RnJhbWVDYWxsYmFja0lEKys7CisgICAgbV9yZXNvbHZl
UGFyZW50UGFnZUZyYW1lSGFuZGxlQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6UmVzb2x2ZVBhcmVudEZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNh
bGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkUmVzb2x2
ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3Jlc29sdmVQYXJl
bnRQYWdlRnJhbWVIYW5kbGVDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNh
bGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVycm9yVHlwZS5pc0VtcHR5KCkp
CisgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvclR5cGUpOworICAgIGVsc2UKKyAg
ICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKGhhbmRsZUZvcldlYkZyYW1lSUQoZnJhbWVJRCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IGI3
MjIyZjY2ODU2ZmFkYjQzMzI5NmI2NWM2YWRjMGVmODZmMDU1N2UuLjU2OGIxNGY5ZjFlZTkzZjE1
MDc5MmUyNDRmYmZiNWZiMGQ5OTM4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtNDcsNiAr
NDcsNyBAQCBjbGFzcyBGcm9udGVuZFJvdXRlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDsKK2NsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIApAQCAtNTcsOSArNTgsNiBA
QCBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dAogICAgICwgcHVibGljIEluc3BlY3Rvcjo6QXV0b21h
dGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogewogcHVibGljOgotICAgIHR5cGVkZWYgSGFz
aE1hcDx1aW50NjRfdCwgU3RyaW5nPiBXZWJQYWdlSGFuZGxlTWFwOwotICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBIYW5kbGVXZWJQYWdlTWFwOwotCiAgICAgV2ViQXV0b21h
dGlvblNlc3Npb24oKTsKICAgICB+V2ViQXV0b21hdGlvblNlc3Npb24oKTsKIApAQCAtOTEsMTIg
Kzg5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdvQmFja0luQnJvd3NpbmdDb250ZXh0KEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIGdv
Rm9yd2FyZEluQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbG9hZEJyb3dzaW5nQ29udGV4dChJbnNwZWN0
b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBoYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3Vt
ZW50LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBh
Z2VGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJn
dW1lbnQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVzb2x2ZVBhZ2VGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRpbmFs
LCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVI
YW5kbGUsIFJlZjxSZXNvbHZlUGFnZUZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVzb2x2ZVBhcmVudFBhZ2VGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYg
cGFnZUZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudFBhZ2VGcmFtZUhhbmRsZUNhbGxiYWNr
PiYmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Vi
UGFnZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBoYW5kbGVGb3JX
ZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVByb3h5Jik7CiAKKyAgICBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqIHdlYkZyYW1lUHJveHlGb3JIYW5kbGUoY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKTsKKyAgICBTdHJpbmcgaGFuZGxlRm9yV2ViRnJhbWVJRCh1aW50NjRfdCBmcmFt
ZUlEKTsKKyAgICBTdHJpbmcgaGFuZGxlRm9yV2ViRnJhbWVQcm94eShjb25zdCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmKTsKKwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpCcm93c2luZ0NvbnRleHQ+IGJ1aWxkQnJvd3NpbmdDb250ZXh0Rm9yUGFnZShXZWJQYWdl
UHJveHkmKTsKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTEwNCw2ICsxMDgsOCBAQCBwcml2YXRlOgog
CiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uIG1lc3NhZ2VzCiAgICAgdm9p
ZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBjb25z
dCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOworICAgIHZvaWQgZGlk
UmVzb2x2ZUZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgZXJyb3JUeXBlKTsKKyAgICB2b2lkIGRpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50
NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlw
ZSk7CiAKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sIHsgbnVsbHB0
ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PiBt
X2NsaWVudDsKQEAgLTExMiwxMyArMTE4LDIyIEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgUmVmPEluc3Bl
Y3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVyPiBtX2RvbWFpbkRpc3BhdGNoZXI7CiAK
LSAgICBXZWJQYWdlSGFuZGxlTWFwIG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYW5kbGVXZWJQ
YWdlTWFwIG1faGFuZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+
IG1fd2ViUGFnZUhhbmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFu
ZGxlV2ViUGFnZU1hcDsKICAgICBTdHJpbmcgbV9hY3RpdmVCcm93c2luZ0NvbnRleHRIYW5kbGU7
CiAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViRnJhbWVIYW5kbGVNYXA7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYkZyYW1lTWFwOworCiAgICAg
dWludDY0X3QgbV9uZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCB7IDEgfTsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPj4gbV9ldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrczsKIAorICAgIHVpbnQ2NF90IG1fbmV4dFJl
c29sdmVGcmFtZUNhbGxiYWNrSUQgeyAxIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzb2x2ZVBh
Z2VGcmFtZUhhbmRsZUNhbGxiYWNrPj4gbV9yZXNvbHZlUGFnZUZyYW1lSGFuZGxlQ2FsbGJhY2tz
OworCisgICAgdWludDY0X3QgbV9uZXh0UmVzb2x2ZVBhcmVudEZyYW1lQ2FsbGJhY2tJRCB7IDEg
fTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXNvbHZlUGFyZW50UGFnZUZyYW1lSGFuZGxlQ2FsbGJh
Y2s+PiBtX3Jlc29sdmVQYXJlbnRQYWdlRnJhbWVIYW5kbGVDYWxsYmFja3M7CisKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9y
ZW1vdGVDaGFubmVsIHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLm1lc3NhZ2VzLmluCmluZGV4IGI4NjhkZDBjMDZjNDJhZTZhYzIwYTc0YjhmMzg1YTkxZTVj
OTdmZTYuLmIzYWE2YjhmNGQ1NTc4MWQ2ODNkODM2NjhhZTY0ZTQ2ZmY5MWRhNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yMiw0ICsyMiw3IEBACiAKIG1l
c3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25TZXNzaW9uIHsKICAgICBEaWRFdmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBTdHJpbmcgcmVzdWx0LCBTdHJpbmcgZXJy
b3JUeXBlKQorCisgICAgRGlkUmVzb2x2ZUZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUpCisgICAgRGlkUmVzb2x2ZVBhcmVudEZyYW1l
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTE4Mjc2MTk1NzA4
YjNiYzI4OWU2NzA5ZDIyMzg1NjIxMzYxZWFlYy4uZGVlNDRiMDhiNDMyYWM0YmYyZTliNGMyNzQ4
NGZjZWVkNDY5NmUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAt
MzMsOSArMzMsMTYgQEAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ1JlZlByaXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0
cmluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lVHJlZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJhc2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTYxLDYgKzE2OCwyMyBAQCBKU09iamVjdFJlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpz
Y3JpcHRPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIHNjcmlwdE9i
amVjdDsKIH0KIAorV2ViQ29yZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
ZWxlbWVudEZvck5vZGVIYW5kbGUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG5vZGVI
YW5kbGUpCit7CisgICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0gc2NyaXB0T2JqZWN0Rm9y
RnJhbWUoKmZyYW1lKTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IGZyYW1lLT5q
c0NvbnRleHQoKTsKKworICAgIEpTVmFsdWVSZWYgZnVuY3Rpb25Bcmd1bWVudHNbXSA9IHsKKyAg
ICAgICAgdG9KU1ZhbHVlKGNvbnRleHQsIG5vZGVIYW5kbGUpCisgICAgfTsKKworICAgIEpTVmFs
dWVSZWYgcmVzdWx0ID0gY2FsbFByb3BlcnR5RnVuY3Rpb24oY29udGV4dCwgc2NyaXB0T2JqZWN0
LCBBU0NJSUxpdGVyYWwoIm5vZGVGb3JJZGVudGlmaWVyIiksIFdURl9BUlJBWV9MRU5HVEgoZnVu
Y3Rpb25Bcmd1bWVudHMpLCBmdW5jdGlvbkFyZ3VtZW50cywgbnVsbHB0cik7CisgICAgSlNPYmpl
Y3RSZWYgZWxlbWVudCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCByZXN1bHQsIG51bGxwdHIp
OworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gJkpTQzo6anNDYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT53cmFw
cGVkKCk7Cit9CisKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5k
b3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiB7CiAgICAgdWludDY0X3QgZnJhbWVJ
RCA9IGZyYW1lLmZyYW1lSUQoKTsKQEAgLTIzOSw0ICsyNjMsMTMwIEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3Qg
ZnJhbWVJRCwKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgcmVzdWx0LCBlcnJvclR5cGUpLCAwKTsKIH0K
IAordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlRnJhbWVXaXRoT3JkaW5h
bCh1aW50NjRfdCBwYWdlSUQsIHVpbnQzMl90IG9yZGluYWwsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit7CisgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
cGFnZUlEKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQs
IDAsIGVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5n
IGZyYW1lTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6
OkZyYW1lTm90Rm91bmQpOworCisgICAgV2ViQ29yZTo6TWFpbkZyYW1lKiBjb3JlTWFpbkZyYW1l
ID0gcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFjb3JlTWFpbkZyYW1lKSB7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJ
RCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVDaGlsZEZyYW1lID0gY29yZU1haW5GcmFtZS0+
dHJlZSgpLmNoaWxkKG9yZGluYWwpOworICAgIGlmICghY29yZUNoaWxkRnJhbWUpIHsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFj
a0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1l
KCpjb3JlQ2hpbGRGcmFtZSk7CisgICAgaWYgKCFjaGlsZEZyYW1lKSB7CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwg
ZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFj
a0lELCBjaGlsZEZyYW1lLT5mcmFtZUlEKCksIGVtcHR5U3RyaW5nKCkpLCAwKTsKK30KKwordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlRnJhbWVXaXRoTm9kZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKK3sKKyAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBTdHJpbmcgZXJyb3JUeXBl
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJh
Y2tJRCwgMCwgZXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBT
dHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVu
dW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVz
c2FnZTo6RnJhbWVOb3RGb3VuZCk7CisKKyAgICBXZWJDb3JlOjpNYWluRnJhbWUqIGNvcmVNYWlu
RnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVNYWluRnJhbWUpIHsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxs
YmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBmb3IgKFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlTWFpbkZy
YW1lOyBjb3JlRnJhbWU7IGNvcmVGcmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CisgICAgICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1l
KCpjb3JlRnJhbWUpOworICAgICAgICBpZiAoIWZyYW1lIHx8ICFtX3dlYkZyYW1lU2NyaXB0T2Jq
ZWN0TWFwLmNvbnRhaW5zKGZyYW1lLT5mcmFtZUlEKCkpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgV2ViQ29yZTo6RWxlbWVudCogY29yZUVsZW1lbnQgPSBlbGVtZW50Rm9yTm9k
ZUhhbmRsZShmcmFtZSwgbm9kZUhhbmRsZSk7CisgICAgICAgIGlmICghY29yZUVsZW1lbnQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIWNvcmVFbGVtZW50LT5pc0ZyYW1l
RWxlbWVudEJhc2UoKSkgeworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Np
b246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBl
KSwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBXZWJDb3Jl
OjpGcmFtZSogY29yZUZyYW1lRnJvbUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
RnJhbWVFbGVtZW50QmFzZSo+KGNvcmVFbGVtZW50KS0+Y29udGVudEZyYW1lKCk7CisgICAgICAg
IGlmICghY29yZUZyYW1lRnJvbUVsZW1lbnQpIHsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSksIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgV2ViRnJhbWUqIGZyYW1lRnJvbUVsZW1lbnQgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFt
ZSgqY29yZUZyYW1lRnJvbUVsZW1lbnQpOworICAgICAgICBpZiAoIWZyYW1lRnJvbUVsZW1lbnQp
IHsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZl
RnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCBmcmFtZUZyb21FbGVtZW50LT5m
cmFtZUlEKCksIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJh
bWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworfQorCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhOYW1lKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CisgICAgaWYgKCFwYWdlKSB7CisgICAgICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBlcnJv
clR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBmcmFtZU5v
dEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5v
dEZvdW5kKTsKKworICAgIFdlYkNvcmU6Ok1haW5GcmFtZSogY29yZU1haW5GcmFtZSA9IHBhZ2Ut
Pm1haW5GcmFtZSgpOworICAgIGlmICghY29yZU1haW5GcmFtZSkgeworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZy
YW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFdlYkNvcmU6OkZyYW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVNYWluRnJhbWUtPnRyZWUoKS5j
aGlsZChuYW1lKTsKKyAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
V2ViRnJhbWUqIGNoaWxkRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUNoaWxk
RnJhbWUpOworICAgIGlmICghY2hpbGRGcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91
bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgY2hpbGRG
cmFtZS0+ZnJhbWVJRCgpLCBlbXB0eVN0cmluZygpKSwgMCk7Cit9CisKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgaWYgKCFmcmFtZSkgeworICAgICAg
ICBTdHJpbmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFt
ZU5vdEZvdW5kKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJl
c29sdmVQYXJlbnRGcmFtZShjYWxsYmFja0lELCAwLCBlcnJvclR5cGUpLCAwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRS
ZXNvbHZlUGFyZW50RnJhbWUoY2FsbGJhY2tJRCwgZnJhbWUtPnBhcmVudEZyYW1lKCktPmZyYW1l
SUQoKSwgZW1wdHlTdHJpbmcoKSksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDk1N2RkZTQ5ZTdiOTlmMWVkNWNlMjE5
NTE0OGViZTg2ZDAyMjIxNDAuLjg3NzY4YTI2NzJkOTI0YmM2MzhhMDFmM2Y1ZjI1NzBkNjA3OTBj
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAtMjksNiArMjksMTIgQEAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNl
Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKKworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00NywxMiArNTMsMTcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1lKFdl
YkZyYW1lJik7CisgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudEZvck5vZGVIYW5kbGUoV2Vi
RnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRl
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
OwogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMK
ICAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIHJlc29sdmVGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDMyX3Qgb3Jk
aW5hbCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNvbHZlRnJhbWVXaXRoTm9k
ZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNvbHZlRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9p
ZCByZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuanMgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5qcwppbmRleCA1ZGQ3MGZhM2RiYjk5NmIwMzJmZDBhMDYwM2Y1MDdjY2Y5
ZmIyZjY0Li45ZjlmNDM0YWMwODBmZDk3ZjAwM2Y3NmU2MmFlNWE0NjY1NTg3MWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5qcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwpAQCAtNTksNiArNTksMTUgQEAgbGV0IEF1dG9t
YXRpb25TZXNzaW9uUHJveHkgPSBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvblByb3h5CiAgICAgICAg
ICAgICBjYWxsYmFjayhmdW5jdGlvblZhbHVlLmFwcGx5KG51bGwsIGFyZ3VtZW50VmFsdWVzKSk7
CiAgICAgfQogCisgICAgbm9kZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICB7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9kZUZvcklkZW50aWZpZXIoaWRl
bnRpZmllcik7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9qc29uUGFy
c2Uoc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbgppbmRleCAxZDBmOGFmZmM2OGM4N2VhYmY4NzJiNWUxMjExZmYzMzY1Nzc3MTA3Li4wZjli
YTU5YmJiOTc3ZWQzZjQxZmQ5YTdiNTJkOWY1N2Y1MDA0YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNCArMjIsOSBAQAogCiBt
ZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKICAgICBFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZSwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3Ry
aW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKKworICAgIFJlc29sdmVGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDMyX3Qgb3JkaW5hbCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXNv
bHZlRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBub2RlSGFuZGxl
LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJlc29sdmVGcmFtZVdpdGhOYW1lKHVpbnQ2NF90
IHBhZ2VJRCwgU3RyaW5nIG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVzb2x2ZVBh
cmVudEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274442</attachid>
            <date>2016-03-18 11:59:15 -0700</date>
            <delta_ts>2016-03-18 12:24:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155650-20160318115914.patch</filename>
            <type>text/plain</type>
            <size>33501</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3NzU0MDhmOTYzYWQ4
ZGNjZjZmODY2MjkyZjBlNjYyNmRiMmFiYi4uMmVmYzIzNzU1ZThiMTgzZDRkNjRlNzk0ZDY4NjBm
MTg4Mzg5MTA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAzLTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlv
bjogQWRkIEF1dG9tYXRpb24gcHJvdG9jb2wgY29tbWFuZHMgdG8gcmVzb2x2ZSBmcmFtZXMgYXMg
aGFuZGxlcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU2NTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjUyNDI0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IE1h
cmtlZCBzY29wZWRDaGlsZCgpIG1ldGhvZHMgYXMgZXhwb3J0ZWQgc28gV0syIGNhbiB1c2UgdGhl
bS4KKwogMjAxNi0wMy0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEZpeCBhc3NlcnRpb24gZmFpbHVyZSBvbiBkcml2ZS5nb29nbGUuY29t
IGFmdGVyIHIxOTYwNTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNzE5ZTU4YjEyNGIzNmMyYWM0MTA4Zjc4NWQ1
ZjJmZjg3M2NlYmVmLi5iMzc3MWY4Yzg1MmIzMjM4YWQ1ZTY3MWEwMzVhMDE4YzJhZWQyOGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTYtMDMtMTggIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21h
dGlvbiBwcm90b2NvbCBjb21tYW5kcyB0byByZXNvbHZlIGZyYW1lcyBhcyBoYW5kbGVzCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY1MAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS8yNTI0MjQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5q
c29uOgorICAgICAgICBBZGRlZCByZXNvbHZlRnJhbWVIYW5kbGUgYW5kIHJlc29sdmVQYXJlbnRG
cmFtZUhhbmRsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Ondl
YkZyYW1lUHJveHlGb3JIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lSUQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lUHJveHkpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uKTogVXNlIGZyYW1lIGhhbmRsZXMgbm93LgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUZyYW1lSGFuZGxlKTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlRnJhbWUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhh
bmRsZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlk
UmVzb2x2ZVBhcmVudEZyYW1lKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKERpZFJlc29sdmVG
cmFtZSk6IEFkZGVkLgorICAgICAgICAoRGlkUmVzb2x2ZVBhcmVudEZyYW1lKTogQWRkZWQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1l
bnRGb3JOb2RlSGFuZGxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhPcmRpbmFsKTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhOb2RlSGFu
ZGxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OnJlc29sdmVGcmFtZVdpdGhOYW1lKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSk6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgIChSZXNvbHZlRnJhbWVXaXRoT3JkaW5hbCk6IEFkZGVkLgorICAg
ICAgICAoUmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFJlc29s
dmVGcmFtZVdpdGhOYW1lKTogQWRkZWQuCisgICAgICAgIChSZXNvbHZlUGFyZW50RnJhbWUpOiBB
ZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmpzOgorICAgICAgICAoQXV0b21hdGlvblNlc3Npb25Qcm94eS5wcm90b3R5cGUu
bm9kZUZvcklkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgUHVibGljIG1ldGhvZCB0aGF0IGVh
dHMgdGhlIGV4Y2VwdGlvbiB0aHJvd24gYnkgdGhlIHByaXZhdGUgbWV0aG9kLgorCiAyMDE2LTAz
LTE3ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
QXV0b21hdGlvbjogQWRkIEF1dG9tYXRpb24uZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCmluZGV4IDA5OWE1ZDEyZDE5MDJmMzYyODM1MTMyMDEwYTM2YmVi
NTNkOWY5MGYuLjJjY2M5ZjM3ZGM2MjNkNmJmMTEyNjMzYjRkN2RjZWRmNmJjNDA2MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtODAsOCArODAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUmIHRvcCgpIGNvbnN0OwogCi0gICAgICAg
IEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgICAgIEZyYW1l
KiBzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBGcmFtZSogc2NvcGVkQ2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Owor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogc2NvcGVkQ2hpbGQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgc2NvcGVkQ2hpbGRDb3VudCgpIGNv
bnN0OwogCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5QYXJlbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgppbmRl
eCA2YmZmZmI0OWRlYjMwYjZhYmYzMGFmZmZiM2I1OWRjNWVjOTEyYzQwLi4wMzVkOTU5MDE3NTZk
MDZjMGE5YmMzM2U3ODY1YjA0M2NiYmVkOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC0zMiw2ICszMiwxNiBAQAog
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciBhIGJy
b3dzaW5nIGNvbnRleHQuIgogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAiaWQi
OiAiRnJhbWVIYW5kbGUiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgYSBmcmFtZSBpbiBh
IHBhZ2UuIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiTm9kZUhh
bmRsZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciBhIG5vZGUgaW4gYSBwYWdlLiIKKyAg
ICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAgImlkIjogIkVycm9yTWVzc2FnZSIsCiAg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlRoaXMgZW51bSBjb250YWlucyBwcmVkZWZpbmVkIGVycm9yIG1lc3NhZ2VzIHRoYXQgY2FuIGJl
IHVzZWQgdG8gc2lnbmFsIGEgd2VsbC1kZWZpbmVkIGVycm9yIGNvbmRpdGlvbiwgc3VjaCBhcyBh
IG1pc3NpbmcgaW1wbGVtZW50YXRpb24sIHVua25vd24gd2luZG93IGhhbmRsZSwgYW5kIHNvIGZv
cnRoLiBUaGUgYmFja2VuZCBzaWduYWxzIG9uZSBvZiB0aGVzZSBlcnJvcnMgYnkgdXNpbmcgaXQg
YXMgYSBwcmVmaXggb2YgdGhlIGNvbW1hbmRzJ3MgZXJyb3IgbWVzc2FnZSAodGhlIGVycm9yU3Ry
aW5nIGFyZ3VtZW50IGluIGdlbmVyYXRlZCBDKysgYmFja2VuZCBkaXNwYXRjaGVycykuIFRoaXMg
d2lsbCBiZSByZXBvcnRlZCB0byB0aGUgZnJvbnRlbmQgYXMgYSBwcm90b2NvbCBlcnJvciB3aXRo
IGEgSlNPTi1SUEMgZXJyb3IgY29kZSBvZiAnU2VydmVyRXJyb3InLiBJdCBpcyB1cCB0byB0aGUg
ZnJvbnRlbmQgd2hldGhlciBhbmQgaG93IHRvIGRlYWwgd2l0aCBlcnJvcnMuIiwKQEAgLTM5LDYg
KzQ5LDcgQEAKICAgICAgICAgICAgICAgICAiSW50ZXJuYWxFcnJvciIsCiAgICAgICAgICAgICAg
ICAgIkphdmFTY3JpcHRFcnJvciIsCiAgICAgICAgICAgICAgICAgIldpbmRvd05vdEZvdW5kIiwK
KyAgICAgICAgICAgICAgICAiRnJhbWVOb3RGb3VuZCIsCiAgICAgICAgICAgICAgICAgIk5vZGVO
b3RGb3VuZCIsCiAgICAgICAgICAgICAgICAgIk5vdEltcGxlbWVudGVkIiwKICAgICAgICAgICAg
ICAgICAiTWlzc2luZ1BhcmFtZXRlciIsCkBAIC0xNDYsNyArMTU3LDggQEAKICAgICAgICAgICAg
ICJuYW1lIjogImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIiwKICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJFdmFsdWF0ZXMgYSBzY3JpcHQgZnVuY3Rpb24gaW4gYSBicm93c2luZyBjb250
ZXh0IGFuZCBjYWxscyBpdCB3aXRoIHRoZSBzdXBwbGllZCBhcmd1bWVudHMuIiwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwg
IiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5k
bGUgZm9yIHRoZSBicm93c2luZyBjb250ZXh0IHRoZSBzY3JpcHQgc2hvdWxkIGJlIGV2YWx1YXRl
ZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2luZ0NvbnRleHRIYW5kbGUi
LCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhh
bmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhlIHNjcmlwdCBzaG91bGQgYmUgZXZhbHVh
dGVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSGFuZGxlIiwgIiRyZWYi
OiAiRnJhbWVIYW5kbGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhh
bmRsZSBmb3IgdGhlIHBhZ2UgZnJhbWUgdGhlIHNjcmlwdCBzaG91bGQgYmUgZXZhbHVhdGVkLiBU
aGUgbWFpbiBmcmFtZSBpcyB1c2VkIGlmIHRoaXMgcGFyYW1ldGVyIGVtcHR5IHN0cmluZyBvciBl
eGNsdWRlZC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlvbiIsICJ0eXBl
IjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJUaGUgc2NyaXB0IHRvIGV2YWx1YXRlIGluIHRo
ZSBicm93c2luZyBjb250ZXh0LiBJdCBtdXN0IGJlIGEgZnVuY3Rpb24gcmVzdWx0LiIgfSwKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImFyZ3VtZW50cyIsICJ0eXBlIjogImFycmF5IiwgIml0
ZW1zIjogeyAidHlwZSI6ICJzdHJpbmciIH0sICJkZXNjcmlwdGlvbiI6ICJUaGUgYXJndW1lbnRz
IHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gY2FsbGVkLiBUaGV5IHdpbGwgYmUgcGFyc2Vk
IGFzIEpTT04gYmVmb3JlIGNhbGxpbmcgdGhlIGZ1bmN0aW9uLiIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQiLCAidHlwZSI6ICJi
b29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRoZSBmdW5jdGlvbiBleHBlY3RzIGEgY2FsbGJhY2sg
ZnVuY3Rpb24gYXMgdGhlIGxhc3QgYXJndW1lbnQuIEl0IGlzIGV4cGVjdGVkIHRvIGNhbGwgdGhp
cyBjYWxsYmFjayB3aXRoIGEgcmVzdWx0LiIgfQpAQCAtMTU1LDYgKzE2NywzMiBAQAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbi4gSXQgaXMg
SlNPTiBlbmNvZGVkIGFmdGVyIHRoZSBmdW5jdGlvbiByZXR1cm5zIG9yIGNhbGxzIHRoZSBjYWxs
YmFjay4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInJlc29sdmVGcmFtZUhhbmRs
ZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB0aGUgPGNvZGU+RnJh
bWVIYW5kbGU8L2NvZGU+IGJhc2VkIG9uIHRoZSBvcmRpbmFsLCBuYW1lIG9yIG5vZGUgaGFuZGxl
IG9mIGEgZnJhbWUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdD
b250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2lu
ZyBjb250ZXh0IGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGZyYW1lLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm9yZGluYWwiLCAidHlwZSI6ICJpbnRlZ2VyIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBvcmRpbmFsIG9mIHRoZSBjaGlsZCBmcmFtZSB0
byByZXNvbHZlIGFzIGEgPGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+LiBUaGlzIGlzIGFuYWxvZ291
cyB0byAnd2luZG93LmZyYW1lc1tvcmRpbmFsXScgaW4gSmF2YVNjcmlwdC4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBuYW1lIG9mIHRoZSBjaGlsZCBmcmFtZSB0byByZXNv
bHZlIGFzIGEgPGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+LiBUaGlzIGlzIGFuYWxvZ291cyB0byAn
d2luZG93LmZyYW1lc1tuYW1lXScgaW4gSmF2YVNjcmlwdC4iIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJub2RlSGFuZGxlIiwgIiRyZWYiOiAiTm9kZUhhbmRsZSIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIG9mIHRoZSBmcmFtZSBvd25lciBlbGVt
ZW50IHRvIHJlc29sdmUgYXMgYSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4uIiB9CisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJyZXN1bHQiLCAiJHJlZiI6ICJGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUg
PGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGZyYW1lLiIgfQorICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgIm5hbWUiOiAicmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIHRoZSA8Y29kZT5GcmFtZUhhbmRs
ZTwvY29kZT4gZm9yIHRoZSBwYXJlbnQgZnJhbWUgb2YgdGhlIHN1cHBsaWVkIDxjb2RlPkZyYW1l
SGFuZGxlPC9jb2RlPi4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJicm93c2luZ0NvbnRleHRIYW5kbGUiLCAiJHJlZiI6ICJCcm93c2lu
Z0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dz
aW5nIGNvbnRleHQgdGhlIGZyYW1lIGlzIGxvY2F0ZWQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZnJhbWVIYW5kbGUiLCAiJHJlZiI6ICJGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlv
biI6ICJUaGUgaGFuZGxlIGZvciB0aGUgcGFnZSBmcmFtZSB0aGF0IHNob3VsZCByZXNvbHZlIGl0
cyBwYXJlbnQgcGFnZSBmcmFtZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0
dXJucyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICIkcmVmIjogIkZy
YW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4g
Zm9yIHRoZSByZXF1ZXN0ZWQgZnJhbWUuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ImFzeW5jIjogdHJ1ZQogICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IDRiYjU0YmY0NDM1ZjIzNDM2OGQ5OTg2NDg3MmI1MzhjYWMxNjg5ZDkuLmEyOGNmZTI1
ZjAzNjY2MGI5ZjgzMGY0YjFlZWNkMzEyYWU4NWYzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKQEAgLTE0Miw2ICsxNDIsNTQgQEAgU3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5k
bGVGb3JXZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHIKICAgICByZXR1
cm4gaGFuZGxlOwogfQogCitXZWJGcmFtZVByb3h5KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2Vi
RnJhbWVQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgV2ViUGFnZVByb3h5JiBw
YWdlKQoreworICAgIGlmIChoYW5kbGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcGFnZS5t
YWluRnJhbWUoKTsKKworICAgIGF1dG8gaXRlciA9IG1faGFuZGxlV2ViRnJhbWVNYXAuZmluZCho
YW5kbGUpOworICAgIGlmIChpdGVyID09IG1faGFuZGxlV2ViRnJhbWVNYXAuZW5kKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcGFn
ZS5wcm9jZXNzKCkud2ViRnJhbWUoaXRlci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gZnJhbWU7
CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpoYW5kbGVGb3JXZWJGcmFtZUlEKHVpbnQ2NF90IGZyYW1lSUQpCit7CisgICAgaWYgKCFmcmFt
ZUlEKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IG1fcHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmIChXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKSB7CisgICAgICAgICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1
dG8gaXRlciA9IG1fd2ViRnJhbWVIYW5kbGVNYXAuZmluZChmcmFtZUlEKTsKKyAgICBpZiAoaXRl
ciAhPSBtX3dlYkZyYW1lSGFuZGxlTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXRlci0+dmFs
dWU7CisKKyAgICBTdHJpbmcgaGFuZGxlID0gV2ViQ29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisKKyAgICBhdXRvIGZpcnN0QWRkUmVz
dWx0ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZChmcmFtZUlELCBoYW5kbGUpOworICAgIFJFTEVB
U0VfQVNTRVJUKGZpcnN0QWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgYXV0byBzZWNvbmRB
ZGRSZXN1bHQgPSBtX2hhbmRsZVdlYlBhZ2VNYXAuYWRkKGhhbmRsZSwgZnJhbWVJRCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcmV0dXJu
IGhhbmRsZTsKK30KKworU3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJG
cmFtZVByb3h5KGNvbnN0IFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCit7CisgICAgcmV0
dXJuIGhhbmRsZUZvcldlYkZyYW1lSUQod2ViRnJhbWVQcm94eS5mcmFtZUlEKCkpOworfQorCiBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YnVpbGRCcm93c2luZ0NvbnRleHRGb3JQYWdlKFdlYlBhZ2VQ
cm94eSYgcGFnZSkKIHsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWU7CkBAIC0z
NDYsMTMgKzM5NCwxNiBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2lu
Z0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdAogICAgIHBhZ2UtPnJlbG9h
ZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBhcmd1bWVu
dHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgUmVmPEV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBs
aWNpdENhbGxiYWNrQXJndW1lbnQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxi
YWNrPiYmIGNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FIDI0MTcyNDM5OiBUaGlzIHNob3VsZCBi
ZSBhIGZyYW1lIGhhbmRsZSwgbm90IGEgcGFnZSBoYW5kbGUuIENoYW5nZSB0aGlzIG9uY2Ugd2Ug
aGF2ZSBmcmFtZSBzdXBwb3J0LgotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94
eUZvckhhbmRsZShoYW5kbGUpOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94
eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CiAK
KyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHdlYkZyYW1lUHJveHlGb3JIYW5kbGUob3B0aW9u
YWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSwgKnBh
Z2UpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X01FU1NBR0UoRnJhbWVOb3RGb3VuZCk7CisKICAgICBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHNW
ZWN0b3I7CiAgICAgYXJndW1lbnRzVmVjdG9yLnJlc2VydmVDYXBhY2l0eShhcmd1bWVudHMubGVu
Z3RoKCkpOwogCkBAIC0zNjUsNyArNDE2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXIKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJ
RCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbihwYWdlLT5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBmdW5jdGlvbiwgYXJndW1lbnRzVmVj
dG9yLCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja0lEKSwgMCk7Cisg
ICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGZyYW1lLT5mcmFtZUlEKCksIGZ1bmN0aW9u
LCBhcmd1bWVudHNWZWN0b3IsIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNhbGxi
YWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1
bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpAQCAtMzgxLDQgKzQzMiw3NCBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRf
dCBjYWxsYmFja0lELCBjbwogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsK
IH0KIAordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUZyYW1lSGFuZGxlKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVG
cmFtZUhhbmRsZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5k
b3dOb3RGb3VuZCk7CisKKyAgICBpZiAoIW9wdGlvbmFsT3JkaW5hbCAmJiAhb3B0aW9uYWxOYW1l
ICYmICFvcHRpb25hbE5vZGVIYW5kbGUpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9uZXh0UmVzb2x2ZUZyYW1lQ2FsbGJhY2tJRCsrOworICAgIG1fcmVzb2x2ZUZyYW1lSGFu
ZGxlQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBp
ZiAob3B0aW9uYWxOb2RlSGFuZGxlKSB7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlRnJhbWVXaXRoTm9kZUhh
bmRsZShwYWdlLT5wYWdlSUQoKSwgKm9wdGlvbmFsTm9kZUhhbmRsZSwgY2FsbGJhY2tJRCksIDAp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG9wdGlvbmFsTmFtZSkgeworICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6UmVzb2x2ZUZyYW1lV2l0aE5hbWUocGFnZS0+cGFnZUlEKCksICpvcHRpb25hbE5hbWUs
IGNhbGxiYWNrSUQpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChvcHRp
b25hbE9yZGluYWwpIHsKKyAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPnBh
Z2VJRCgpLCAqb3B0aW9uYWxPcmRpbmFsLCBjYWxsYmFja0lEKSwgMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6ZGlkUmVzb2x2ZUZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX3Jlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQp
OworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZXJyb3JU
eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yVHlwZSk7
CisgICAgZWxzZQorICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoaGFuZGxlRm9yV2ViRnJh
bWVJRChmcmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQ
YXJlbnRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5k
bGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3sK
KyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdD
b250ZXh0SGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworCisgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKGZyYW1lSGFuZGxlLCAqcGFnZSk7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShG
cmFtZU5vdEZvdW5kKTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRSZXNvbHZl
UGFyZW50RnJhbWVDYWxsYmFja0lEKys7CisgICAgbV9yZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNv
bHZlUGFyZW50RnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIDApOworfQorCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3Qg
Y2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCit7
CisgICAgYXV0byBjYWxsYmFjayA9IG1fcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKQorICAgICAgICBjYWxsYmFjay0+c2VuZEZh
aWx1cmUoZXJyb3JUeXBlKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vz
cyhoYW5kbGVGb3JXZWJGcmFtZUlEKGZyYW1lSUQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCBiNzIyMmY2Njg1NmZhZGI0MzMyOTZiNjVjNmFk
YzBlZjg2ZjA1NTdlLi43MGJmYTdhOGU1YmFhNmM0OTQ1YjdhMWU0ZWMxN2ViODRkYTA4MGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRnJvbnRlbmRSb3V0
ZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGll
bnQ7CitjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2w7CiAKQEAgLTU3LDkgKzU4LDYgQEAgY2xhc3MgV2ViQXV0b21hdGlvblNlc3Np
b24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXQK
ICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIKIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gV2Vi
UGFnZUhhbmRsZU1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gSGFu
ZGxlV2ViUGFnZU1hcDsKLQogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uKCk7CiAgICAgfldlYkF1
dG9tYXRpb25TZXNzaW9uKCk7CiAKQEAgLTkxLDEyICs4OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnb0JhY2tJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBhcmd1bWVudHMsIGJv
b2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgUmVmPEluc3BlY3Rvcjo6QXV0b21h
dGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25D
YWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29s
IGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRp
b25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzb2x2ZUZyYW1lSGFuZGxlKEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOYW1lLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVGcmFtZUhhbmRsZUNhbGxi
YWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUs
IGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVD
YWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHdlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgaGFu
ZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYpOwogCisgICAgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYsIFdlYktp
dDo6V2ViUGFnZVByb3h5Jik7CisgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lSUQodWludDY0
X3QgZnJhbWVJRCk7CisgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lUHJveHkoY29uc3QgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5Jik7CisKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2Uo
V2ViUGFnZVByb3h5Jik7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0
b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0xMDQsNiArMTA4LDggQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBtZXNzYWdlcwog
ICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJ
RCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKKyAgICB2
b2lkIGRpZFJlc29sdmVGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CisgICAgdm9pZCBkaWRSZXNvbHZlUGFyZW50RnJh
bWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBl
cnJvclR5cGUpOwogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbCB7
IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudD4gbV9jbGllbnQ7CkBAIC0xMTIsMTMgKzExOCwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFJl
ZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRj
aGVyOwogCi0gICAgV2ViUGFnZUhhbmRsZU1hcCBtX3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAgSGFu
ZGxlV2ViUGFnZU1hcCBtX2hhbmRsZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
U3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90
PiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAgICAgU3RyaW5nIG1fYWN0aXZlQnJvd3NpbmdDb250ZXh0
SGFuZGxlOwogCisgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1lSGFuZGxl
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFtZU1hcDsK
KwogICAgIHVpbnQ2NF90IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAxIH07
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4+
IG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFja3M7CiAKKyAgICB1aW50NjRfdCBt
X25leHRSZXNvbHZlRnJhbWVDYWxsYmFja0lEIHsgMSB9OworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJl
c29sdmVGcmFtZUhhbmRsZUNhbGxiYWNrPj4gbV9yZXNvbHZlRnJhbWVIYW5kbGVDYWxsYmFja3M7
CisKKyAgICB1aW50NjRfdCBtX25leHRSZXNvbHZlUGFyZW50RnJhbWVDYWxsYmFja0lEIHsgMSB9
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPj4g
bV9yZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFja3M7CisKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKICAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9yZW1vdGVDaGFu
bmVsIHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3Nh
Z2VzLmluCmluZGV4IGI4NjhkZDBjMDZjNDJhZTZhYzIwYTc0YjhmMzg1YTkxZTVjOTdmZTYuLmIz
YWE2YjhmNGQ1NTc4MWQ2ODNkODM2NjhhZTY0ZTQ2ZmY5MWRhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yMiw0ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+
IFdlYkF1dG9tYXRpb25TZXNzaW9uIHsKICAgICBEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bih1aW50NjRfdCBjYWxsYmFja0lELCBTdHJpbmcgcmVzdWx0LCBTdHJpbmcgZXJyb3JUeXBlKQor
CisgICAgRGlkUmVzb2x2ZUZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBlcnJvclR5cGUpCisgICAgRGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTE4Mjc2MTk1NzA4YjNiYzI4OWU2
NzA5ZDIyMzg1NjIxMzYxZWFlYy4uMzFjNGQ0YzVmMWQ4ZTE0YWMyZmFlZDZkM2FjM2VkYzIyOTAy
MGM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsOSArMzMs
MTYgQEAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
ZlByaXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJhc2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0pTRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDYgKzE2
OCwyMyBAQCBKU09iamVjdFJlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmpl
Y3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsKIH0K
IAorV2ViQ29yZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZv
ck5vZGVIYW5kbGUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUpCit7
CisgICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0gc2NyaXB0T2JqZWN0Rm9yRnJhbWUoKmZy
YW1lKTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IGZyYW1lLT5qc0NvbnRleHQo
KTsKKworICAgIEpTVmFsdWVSZWYgZnVuY3Rpb25Bcmd1bWVudHNbXSA9IHsKKyAgICAgICAgdG9K
U1ZhbHVlKGNvbnRleHQsIG5vZGVIYW5kbGUpCisgICAgfTsKKworICAgIEpTVmFsdWVSZWYgcmVz
dWx0ID0gY2FsbFByb3BlcnR5RnVuY3Rpb24oY29udGV4dCwgc2NyaXB0T2JqZWN0LCBBU0NJSUxp
dGVyYWwoIm5vZGVGb3JJZGVudGlmaWVyIiksIFdURl9BUlJBWV9MRU5HVEgoZnVuY3Rpb25Bcmd1
bWVudHMpLCBmdW5jdGlvbkFyZ3VtZW50cywgbnVsbHB0cik7CisgICAgSlNPYmplY3RSZWYgZWxl
bWVudCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCByZXN1bHQsIG51bGxwdHIpOworICAgIGlm
ICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gJkpTQzo6
anNDYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT53cmFwcGVkKCk7Cit9
CisKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RG
b3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiB7CiAgICAgdWludDY0X3QgZnJhbWVJRCA9IGZyYW1l
LmZyYW1lSUQoKTsKQEAgLTIzOSw0ICsyNjMsMTMwIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24oY2FsbGJhY2tJRCwgcmVzdWx0LCBlcnJvclR5cGUpLCAwKTsKIH0KIAordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRf
dCBwYWdlSUQsIHVpbnQzMl90IG9yZGluYWwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAg
V2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsK
KyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOworICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGVycm9y
VHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGZyYW1lTm90
Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90
Rm91bmQpOworCisgICAgV2ViQ29yZTo6TWFpbkZyYW1lKiBjb3JlTWFpbkZyYW1lID0gcGFnZS0+
bWFpbkZyYW1lKCk7CisgICAgaWYgKCFjb3JlTWFpbkZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
V2ViQ29yZTo6RnJhbWUqIGNvcmVDaGlsZEZyYW1lID0gY29yZU1haW5GcmFtZS0+dHJlZSgpLnNj
b3BlZENoaWxkKG9yZGluYWwpOworICAgIGlmICghY29yZUNoaWxkRnJhbWUpIHsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lE
LCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpj
b3JlQ2hpbGRGcmFtZSk7CisgICAgaWYgKCFjaGlsZEZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lE
LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCksIGVtcHR5U3RyaW5nKCkpLCAwKTsKK30KKwordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3sKKyAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOworICAgIGlmICghcGFnZSkgeworICAgICAgICBTdHJpbmcgZXJyb3JUeXBlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJ
RCwgMCwgZXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJp
bmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1D
b25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2Fn
ZTo6RnJhbWVOb3RGb3VuZCk7CisKKyAgICBXZWJDb3JlOjpNYWluRnJhbWUqIGNvcmVNYWluRnJh
bWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWNvcmVNYWluRnJhbWUpIHsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFj
a0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBmb3IgKFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlTWFpbkZyYW1l
OyBjb3JlRnJhbWU7IGNvcmVGcmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7CisgICAgICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpj
b3JlRnJhbWUpOworICAgICAgICBpZiAoIWZyYW1lIHx8ICFtX3dlYkZyYW1lU2NyaXB0T2JqZWN0
TWFwLmNvbnRhaW5zKGZyYW1lLT5mcmFtZUlEKCkpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgV2ViQ29yZTo6RWxlbWVudCogY29yZUVsZW1lbnQgPSBlbGVtZW50Rm9yTm9kZUhh
bmRsZShmcmFtZSwgbm9kZUhhbmRsZSk7CisgICAgICAgIGlmICghY29yZUVsZW1lbnQpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIWNvcmVFbGVtZW50LT5pc0ZyYW1lRWxl
bWVudEJhc2UoKSkgeworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246
OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwg
MCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBXZWJDb3JlOjpG
cmFtZSogY29yZUZyYW1lRnJvbUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRnJh
bWVFbGVtZW50QmFzZSo+KGNvcmVFbGVtZW50KS0+Y29udGVudEZyYW1lKCk7CisgICAgICAgIGlm
ICghY29yZUZyYW1lRnJvbUVsZW1lbnQpIHsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3Vu
ZEVycm9yVHlwZSksIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgV2ViRnJhbWUqIGZyYW1lRnJvbUVsZW1lbnQgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgq
Y29yZUZyYW1lRnJvbUVsZW1lbnQpOworICAgICAgICBpZiAoIWZyYW1lRnJvbUVsZW1lbnQpIHsK
KyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJh
bWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCBmcmFtZUZyb21FbGVtZW50LT5mcmFt
ZUlEKCksIGVtcHR5U3RyaW5nKCkpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJ
RCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworfQorCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFdlYlBhZ2UqIHBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFw
YWdlKSB7CisgICAgICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJv
ck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBlcnJvclR5cGUpLCAwKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JU
eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKKwor
ICAgIFdlYkNvcmU6Ok1haW5GcmFtZSogY29yZU1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgp
OworICAgIGlmICghY29yZU1haW5GcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRF
cnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkNvcmU6OkZy
YW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVNYWluRnJhbWUtPnRyZWUoKS5zY29wZWRDaGlsZChu
YW1lKTsKKyAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViRnJh
bWUqIGNoaWxkRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUNoaWxkRnJhbWUp
OworICAgIGlmICghY2hpbGRGcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJv
clR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgY2hpbGRGcmFtZS0+
ZnJhbWVJRCgpLCBlbXB0eVN0cmluZygpKSwgMCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit7CisgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgaWYgKCFmcmFtZSkgeworICAgICAgICBTdHJp
bmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUo
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZv
dW5kKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVQ
YXJlbnRGcmFtZShjYWxsYmFja0lELCAwLCBlcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZl
UGFyZW50RnJhbWUoY2FsbGJhY2tJRCwgZnJhbWUtPnBhcmVudEZyYW1lKCktPmZyYW1lSUQoKSwg
ZW1wdHlTdHJpbmcoKSksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDk1N2RkZTQ5ZTdiOTlmMWVkNWNlMjE5NTE0OGVi
ZTg2ZDAyMjIxNDAuLjhkNWViZmRkYjA3OTQ2NThkYjliNGYxOTRhNjUzYjU4ODNhYmU0N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVsZW1lbnQ7Cit9CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTQ3LDEyICs1MSwxNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmKTsK
KyAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50Rm9yTm9kZUhhbmRsZShXZWJGcmFtZSosIGNv
bnN0IFN0cmluZyYpOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKICAgICAv
LyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBtZXNzYWdlcwogICAgIHZvaWQg
ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNp
dENhbGxiYWNrQXJndW1lbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2
ZUZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50MzJfdCBvcmRpbmFsLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVGcmFtZVdpdGhOb2RlSGFuZGxlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHJlc29sdmVGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVQ
YXJlbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAg
IFN0cmluZyBtX3Nlc3Npb25JZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmpzCmluZGV4IDVkZDcwZmEzZGJiOTk2YjAzMmZkMGEwNjAzZjUwN2NjZjlmYjJmNjQuLjlm
OWY0MzRhYzA4MGZkOTdmMDAzZjc2ZTYyYWU1YTQ2NjU1ODcxZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmpzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmpzCkBAIC01OSw2ICs1OSwxNSBAQCBsZXQgQXV0b21hdGlvblNlc3Np
b25Qcm94eSA9IGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uUHJveHkKICAgICAgICAgICAgIGNhbGxi
YWNrKGZ1bmN0aW9uVmFsdWUuYXBwbHkobnVsbCwgYXJndW1lbnRWYWx1ZXMpKTsKICAgICB9CiAK
KyAgICBub2RlRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub2RlRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsK
KyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAg
ICAgICB9CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2pzb25QYXJzZShzdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDFkMGY4YWZmYzY4Yzg3ZWFiZjg3MmI1ZTEyMTFmZjMzNjU3NzcxMDcuLjBmOWJhNTliYmI5Nzdl
ZDNmNDFmZDlhN2I1MmQ5ZjU3ZjUwMDRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw0ICsyMiw5IEBACiAKIG1lc3NhZ2VzIC0+
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgewogICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKHVpbnQ2NF90IGZyYW1lLCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3Vt
ZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorCisgICAgUmVzb2x2ZUZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1
aW50MzJfdCBvcmRpbmFsLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJlc29sdmVGcmFtZVdp
dGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgUmVzb2x2ZUZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCBT
dHJpbmcgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXNvbHZlUGFyZW50RnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274447</attachid>
            <date>2016-03-18 12:24:59 -0700</date>
            <delta_ts>2016-03-18 15:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155650-20160318122458.patch</filename>
            <type>text/plain</type>
            <size>33604</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3NzU0MDhmOTYzYWQ4
ZGNjZjZmODY2MjkyZjBlNjYyNmRiMmFiYi4uMmVmYzIzNzU1ZThiMTgzZDRkNjRlNzk0ZDY4NjBm
MTg4Mzg5MTA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAzLTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlv
bjogQWRkIEF1dG9tYXRpb24gcHJvdG9jb2wgY29tbWFuZHMgdG8gcmVzb2x2ZSBmcmFtZXMgYXMg
aGFuZGxlcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU2NTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjUyNDI0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IE1h
cmtlZCBzY29wZWRDaGlsZCgpIG1ldGhvZHMgYXMgZXhwb3J0ZWQgc28gV0syIGNhbiB1c2UgdGhl
bS4KKwogMjAxNi0wMy0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEZpeCBhc3NlcnRpb24gZmFpbHVyZSBvbiBkcml2ZS5nb29nbGUuY29t
IGFmdGVyIHIxOTYwNTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNzE5ZTU4YjEyNGIzNmMyYWM0MTA4Zjc4NWQ1
ZjJmZjg3M2NlYmVmLi5iMzc3MWY4Yzg1MmIzMjM4YWQ1ZTY3MWEwMzVhMDE4YzJhZWQyOGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTYtMDMtMTggIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21h
dGlvbiBwcm90b2NvbCBjb21tYW5kcyB0byByZXNvbHZlIGZyYW1lcyBhcyBoYW5kbGVzCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY1MAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS8yNTI0MjQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5q
c29uOgorICAgICAgICBBZGRlZCByZXNvbHZlRnJhbWVIYW5kbGUgYW5kIHJlc29sdmVQYXJlbnRG
cmFtZUhhbmRsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246Ondl
YkZyYW1lUHJveHlGb3JIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lSUQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lUHJveHkpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uKTogVXNlIGZyYW1lIGhhbmRsZXMgbm93LgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUZyYW1lSGFuZGxlKTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlRnJhbWUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhh
bmRsZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlk
UmVzb2x2ZVBhcmVudEZyYW1lKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKERpZFJlc29sdmVG
cmFtZSk6IEFkZGVkLgorICAgICAgICAoRGlkUmVzb2x2ZVBhcmVudEZyYW1lKTogQWRkZWQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1l
bnRGb3JOb2RlSGFuZGxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhPcmRpbmFsKTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhOb2RlSGFu
ZGxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OnJlc29sdmVGcmFtZVdpdGhOYW1lKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSk6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgIChSZXNvbHZlRnJhbWVXaXRoT3JkaW5hbCk6IEFkZGVkLgorICAg
ICAgICAoUmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFJlc29s
dmVGcmFtZVdpdGhOYW1lKTogQWRkZWQuCisgICAgICAgIChSZXNvbHZlUGFyZW50RnJhbWUpOiBB
ZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmpzOgorICAgICAgICAoQXV0b21hdGlvblNlc3Npb25Qcm94eS5wcm90b3R5cGUu
bm9kZUZvcklkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAgUHVibGljIG1ldGhvZCB0aGF0IGVh
dHMgdGhlIGV4Y2VwdGlvbiB0aHJvd24gYnkgdGhlIHByaXZhdGUgbWV0aG9kLgorCiAyMDE2LTAz
LTE3ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
QXV0b21hdGlvbjogQWRkIEF1dG9tYXRpb24uZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCmluZGV4IDA5OWE1ZDEyZDE5MDJmMzYyODM1MTMyMDEwYTM2YmVi
NTNkOWY5MGYuLjJjY2M5ZjM3ZGM2MjNkNmJmMTEyNjMzYjRkN2RjZWRmNmJjNDA2MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtODAsOCArODAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWUmIHRvcCgpIGNvbnN0OwogCi0gICAgICAg
IEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgICAgIEZyYW1l
KiBzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBGcmFtZSogc2NvcGVkQ2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Owor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogc2NvcGVkQ2hpbGQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdDsKICAgICAgICAgdW5zaWduZWQgc2NvcGVkQ2hpbGRDb3VudCgpIGNv
bnN0OwogCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5QYXJlbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgppbmRl
eCA2YmZmZmI0OWRlYjMwYjZhYmYzMGFmZmZiM2I1OWRjNWVjOTEyYzQwLi4wMzVkOTU5MDE3NTZk
MDZjMGE5YmMzM2U3ODY1YjA0M2NiYmVkOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC0zMiw2ICszMiwxNiBAQAog
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciBhIGJy
b3dzaW5nIGNvbnRleHQuIgogICAgICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAiaWQi
OiAiRnJhbWVIYW5kbGUiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgYSBmcmFtZSBpbiBh
IHBhZ2UuIgorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiTm9kZUhh
bmRsZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciBhIG5vZGUgaW4gYSBwYWdlLiIKKyAg
ICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAgImlkIjogIkVycm9yTWVzc2FnZSIsCiAg
ICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlRoaXMgZW51bSBjb250YWlucyBwcmVkZWZpbmVkIGVycm9yIG1lc3NhZ2VzIHRoYXQgY2FuIGJl
IHVzZWQgdG8gc2lnbmFsIGEgd2VsbC1kZWZpbmVkIGVycm9yIGNvbmRpdGlvbiwgc3VjaCBhcyBh
IG1pc3NpbmcgaW1wbGVtZW50YXRpb24sIHVua25vd24gd2luZG93IGhhbmRsZSwgYW5kIHNvIGZv
cnRoLiBUaGUgYmFja2VuZCBzaWduYWxzIG9uZSBvZiB0aGVzZSBlcnJvcnMgYnkgdXNpbmcgaXQg
YXMgYSBwcmVmaXggb2YgdGhlIGNvbW1hbmRzJ3MgZXJyb3IgbWVzc2FnZSAodGhlIGVycm9yU3Ry
aW5nIGFyZ3VtZW50IGluIGdlbmVyYXRlZCBDKysgYmFja2VuZCBkaXNwYXRjaGVycykuIFRoaXMg
d2lsbCBiZSByZXBvcnRlZCB0byB0aGUgZnJvbnRlbmQgYXMgYSBwcm90b2NvbCBlcnJvciB3aXRo
IGEgSlNPTi1SUEMgZXJyb3IgY29kZSBvZiAnU2VydmVyRXJyb3InLiBJdCBpcyB1cCB0byB0aGUg
ZnJvbnRlbmQgd2hldGhlciBhbmQgaG93IHRvIGRlYWwgd2l0aCBlcnJvcnMuIiwKQEAgLTM5LDYg
KzQ5LDcgQEAKICAgICAgICAgICAgICAgICAiSW50ZXJuYWxFcnJvciIsCiAgICAgICAgICAgICAg
ICAgIkphdmFTY3JpcHRFcnJvciIsCiAgICAgICAgICAgICAgICAgIldpbmRvd05vdEZvdW5kIiwK
KyAgICAgICAgICAgICAgICAiRnJhbWVOb3RGb3VuZCIsCiAgICAgICAgICAgICAgICAgIk5vZGVO
b3RGb3VuZCIsCiAgICAgICAgICAgICAgICAgIk5vdEltcGxlbWVudGVkIiwKICAgICAgICAgICAg
ICAgICAiTWlzc2luZ1BhcmFtZXRlciIsCkBAIC0xNDYsNyArMTU3LDggQEAKICAgICAgICAgICAg
ICJuYW1lIjogImV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uIiwKICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJFdmFsdWF0ZXMgYSBzY3JpcHQgZnVuY3Rpb24gaW4gYSBicm93c2luZyBjb250
ZXh0IGFuZCBjYWxscyBpdCB3aXRoIHRoZSBzdXBwbGllZCBhcmd1bWVudHMuIiwKICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwg
IiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5k
bGUgZm9yIHRoZSBicm93c2luZyBjb250ZXh0IHRoZSBzY3JpcHQgc2hvdWxkIGJlIGV2YWx1YXRl
ZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2luZ0NvbnRleHRIYW5kbGUi
LCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhh
bmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQgdGhlIHNjcmlwdCBzaG91bGQgYmUgZXZhbHVh
dGVkLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSGFuZGxlIiwgIiRyZWYi
OiAiRnJhbWVIYW5kbGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhh
bmRsZSBmb3IgdGhlIHBhZ2UgZnJhbWUgdGhlIHNjcmlwdCBzaG91bGQgYmUgZXZhbHVhdGVkLiBU
aGUgbWFpbiBmcmFtZSBpcyB1c2VkIGlmIHRoaXMgcGFyYW1ldGVyIGVtcHR5IHN0cmluZyBvciBl
eGNsdWRlZC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlvbiIsICJ0eXBl
IjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJUaGUgc2NyaXB0IHRvIGV2YWx1YXRlIGluIHRo
ZSBicm93c2luZyBjb250ZXh0LiBJdCBtdXN0IGJlIGEgZnVuY3Rpb24gcmVzdWx0LiIgfSwKICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImFyZ3VtZW50cyIsICJ0eXBlIjogImFycmF5IiwgIml0
ZW1zIjogeyAidHlwZSI6ICJzdHJpbmciIH0sICJkZXNjcmlwdGlvbiI6ICJUaGUgYXJndW1lbnRz
IHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gY2FsbGVkLiBUaGV5IHdpbGwgYmUgcGFyc2Vk
IGFzIEpTT04gYmVmb3JlIGNhbGxpbmcgdGhlIGZ1bmN0aW9uLiIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQiLCAidHlwZSI6ICJi
b29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRoZSBmdW5jdGlvbiBleHBlY3RzIGEgY2FsbGJhY2sg
ZnVuY3Rpb24gYXMgdGhlIGxhc3QgYXJndW1lbnQuIEl0IGlzIGV4cGVjdGVkIHRvIGNhbGwgdGhp
cyBjYWxsYmFjayB3aXRoIGEgcmVzdWx0LiIgfQpAQCAtMTU1LDYgKzE2NywzMiBAQAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIlRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbi4gSXQgaXMg
SlNPTiBlbmNvZGVkIGFmdGVyIHRoZSBmdW5jdGlvbiByZXR1cm5zIG9yIGNhbGxzIHRoZSBjYWxs
YmFjay4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInJlc29sdmVGcmFtZUhhbmRs
ZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyB0aGUgPGNvZGU+RnJh
bWVIYW5kbGU8L2NvZGU+IGJhc2VkIG9uIHRoZSBvcmRpbmFsLCBuYW1lIG9yIG5vZGUgaGFuZGxl
IG9mIGEgZnJhbWUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdD
b250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2lu
ZyBjb250ZXh0IGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGhlIGZyYW1lLiIgfSwKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm9yZGluYWwiLCAidHlwZSI6ICJpbnRlZ2VyIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBvcmRpbmFsIG9mIHRoZSBjaGlsZCBmcmFtZSB0
byByZXNvbHZlIGFzIGEgPGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+LiBUaGlzIGlzIGFuYWxvZ291
cyB0byAnd2luZG93LmZyYW1lc1tvcmRpbmFsXScgaW4gSmF2YVNjcmlwdC4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBuYW1lIG9mIHRoZSBjaGlsZCBmcmFtZSB0byByZXNv
bHZlIGFzIGEgPGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+LiBUaGlzIGlzIGFuYWxvZ291cyB0byAn
d2luZG93LmZyYW1lc1tuYW1lXScgaW4gSmF2YVNjcmlwdC4iIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJub2RlSGFuZGxlIiwgIiRyZWYiOiAiTm9kZUhhbmRsZSIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIG9mIHRoZSBmcmFtZSBvd25lciBlbGVt
ZW50IHRvIHJlc29sdmUgYXMgYSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4uIiB9CisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJyZXN1bHQiLCAiJHJlZiI6ICJGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUg
PGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGZyYW1lLiIgfQorICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgIm5hbWUiOiAicmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIHRoZSA8Y29kZT5GcmFtZUhhbmRs
ZTwvY29kZT4gZm9yIHRoZSBwYXJlbnQgZnJhbWUgb2YgdGhlIHN1cHBsaWVkIDxjb2RlPkZyYW1l
SGFuZGxlPC9jb2RlPi4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJicm93c2luZ0NvbnRleHRIYW5kbGUiLCAiJHJlZiI6ICJCcm93c2lu
Z0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dz
aW5nIGNvbnRleHQgdGhlIGZyYW1lIGlzIGxvY2F0ZWQuIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZnJhbWVIYW5kbGUiLCAiJHJlZiI6ICJGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlv
biI6ICJUaGUgaGFuZGxlIGZvciB0aGUgcGFnZSBmcmFtZSB0aGF0IHNob3VsZCByZXNvbHZlIGl0
cyBwYXJlbnQgcGFnZSBmcmFtZS4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0
dXJucyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICIkcmVmIjogIkZy
YW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4g
Zm9yIHRoZSByZXF1ZXN0ZWQgZnJhbWUuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ImFzeW5jIjogdHJ1ZQogICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IDRiYjU0YmY0NDM1ZjIzNDM2OGQ5OTg2NDg3MmI1MzhjYWMxNjg5ZDkuLmEyOGNmZTI1
ZjAzNjY2MGI5ZjgzMGY0YjFlZWNkMzEyYWU4NWYzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKQEAgLTE0Miw2ICsxNDIsNTQgQEAgU3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5k
bGVGb3JXZWJQYWdlUHJveHkoY29uc3QgV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHIKICAgICByZXR1
cm4gaGFuZGxlOwogfQogCitXZWJGcmFtZVByb3h5KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2Vi
RnJhbWVQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgV2ViUGFnZVByb3h5JiBw
YWdlKQoreworICAgIGlmIChoYW5kbGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcGFnZS5t
YWluRnJhbWUoKTsKKworICAgIGF1dG8gaXRlciA9IG1faGFuZGxlV2ViRnJhbWVNYXAuZmluZCho
YW5kbGUpOworICAgIGlmIChpdGVyID09IG1faGFuZGxlV2ViRnJhbWVNYXAuZW5kKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcGFn
ZS5wcm9jZXNzKCkud2ViRnJhbWUoaXRlci0+dmFsdWUpKQorICAgICAgICByZXR1cm4gZnJhbWU7
CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworU3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpoYW5kbGVGb3JXZWJGcmFtZUlEKHVpbnQ2NF90IGZyYW1lSUQpCit7CisgICAgaWYgKCFmcmFt
ZUlEKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IG1fcHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmIChXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKSB7CisgICAgICAgICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1
dG8gaXRlciA9IG1fd2ViRnJhbWVIYW5kbGVNYXAuZmluZChmcmFtZUlEKTsKKyAgICBpZiAoaXRl
ciAhPSBtX3dlYkZyYW1lSGFuZGxlTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXRlci0+dmFs
dWU7CisKKyAgICBTdHJpbmcgaGFuZGxlID0gV2ViQ29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisKKyAgICBhdXRvIGZpcnN0QWRkUmVz
dWx0ID0gbV93ZWJQYWdlSGFuZGxlTWFwLmFkZChmcmFtZUlELCBoYW5kbGUpOworICAgIFJFTEVB
U0VfQVNTRVJUKGZpcnN0QWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgYXV0byBzZWNvbmRB
ZGRSZXN1bHQgPSBtX2hhbmRsZVdlYlBhZ2VNYXAuYWRkKGhhbmRsZSwgZnJhbWVJRCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRkUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcmV0dXJu
IGhhbmRsZTsKK30KKworU3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJG
cmFtZVByb3h5KGNvbnN0IFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkpCit7CisgICAgcmV0
dXJuIGhhbmRsZUZvcldlYkZyYW1lSUQod2ViRnJhbWVQcm94eS5mcmFtZUlEKCkpOworfQorCiBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YnVpbGRCcm93c2luZ0NvbnRleHRGb3JQYWdlKFdlYlBhZ2VQ
cm94eSYgcGFnZSkKIHsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWU7CkBAIC0z
NDYsMTMgKzM5NCwxNiBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2lu
Z0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdAogICAgIHBhZ2UtPnJlbG9h
ZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBhcmd1bWVu
dHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgUmVmPEV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBs
aWNpdENhbGxiYWNrQXJndW1lbnQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxi
YWNrPiYmIGNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FIDI0MTcyNDM5OiBUaGlzIHNob3VsZCBi
ZSBhIGZyYW1lIGhhbmRsZSwgbm90IGEgcGFnZSBoYW5kbGUuIENoYW5nZSB0aGlzIG9uY2Ugd2Ug
aGF2ZSBmcmFtZSBzdXBwb3J0LgotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94
eUZvckhhbmRsZShoYW5kbGUpOworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94
eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CiAK
KyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHdlYkZyYW1lUHJveHlGb3JIYW5kbGUob3B0aW9u
YWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSwgKnBh
Z2UpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X01FU1NBR0UoRnJhbWVOb3RGb3VuZCk7CisKICAgICBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHNW
ZWN0b3I7CiAgICAgYXJndW1lbnRzVmVjdG9yLnJlc2VydmVDYXBhY2l0eShhcmd1bWVudHMubGVu
Z3RoKCkpOwogCkBAIC0zNjUsNyArNDE2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXIKICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJ
RCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbihwYWdlLT5tYWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBmdW5jdGlvbiwgYXJndW1lbnRzVmVj
dG9yLCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja0lEKSwgMCk7Cisg
ICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGZyYW1lLT5mcmFtZUlEKCksIGZ1bmN0aW9u
LCBhcmd1bWVudHNWZWN0b3IsIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNhbGxi
YWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1
bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpAQCAtMzgxLDQgKzQzMiw3NCBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRf
dCBjYWxsYmFja0lELCBjbwogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsK
IH0KIAordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUZyYW1lSGFuZGxlKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVG
cmFtZUhhbmRsZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQoreworICAgIFdlYlBhZ2VQcm94eSogcGFn
ZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShXaW5k
b3dOb3RGb3VuZCk7CisKKyAgICBpZiAoIW9wdGlvbmFsT3JkaW5hbCAmJiAhb3B0aW9uYWxOYW1l
ICYmICFvcHRpb25hbE5vZGVIYW5kbGUpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VS
Uk9SX01FU1NBR0UoTWlzc2luZ1BhcmFtZXRlcik7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9uZXh0UmVzb2x2ZUZyYW1lQ2FsbGJhY2tJRCsrOworICAgIG1fcmVzb2x2ZUZyYW1lSGFu
ZGxlQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBp
ZiAob3B0aW9uYWxOb2RlSGFuZGxlKSB7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlRnJhbWVXaXRoTm9kZUhh
bmRsZShwYWdlLT5wYWdlSUQoKSwgKm9wdGlvbmFsTm9kZUhhbmRsZSwgY2FsbGJhY2tJRCksIDAp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG9wdGlvbmFsTmFtZSkgeworICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6UmVzb2x2ZUZyYW1lV2l0aE5hbWUocGFnZS0+cGFnZUlEKCksICpvcHRpb25hbE5hbWUs
IGNhbGxiYWNrSUQpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChvcHRp
b25hbE9yZGluYWwpIHsKKyAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPnBh
Z2VJRCgpLCAqb3B0aW9uYWxPcmRpbmFsLCBjYWxsYmFja0lEKSwgMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6ZGlkUmVzb2x2ZUZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX3Jlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQp
OworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZXJyb3JU
eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yVHlwZSk7
CisgICAgZWxzZQorICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoaGFuZGxlRm9yV2ViRnJh
bWVJRChmcmFtZUlEKSk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQ
YXJlbnRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5k
bGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3sK
KyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdD
b250ZXh0SGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworCisgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKGZyYW1lSGFuZGxlLCAqcGFnZSk7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShG
cmFtZU5vdEZvdW5kKTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRSZXNvbHZl
UGFyZW50RnJhbWVDYWxsYmFja0lEKys7CisgICAgbV9yZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIHBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNv
bHZlUGFyZW50RnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIDApOworfQorCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3Qg
Y2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCit7
CisgICAgYXV0byBjYWxsYmFjayA9IG1fcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKQorICAgICAgICBjYWxsYmFjay0+c2VuZEZh
aWx1cmUoZXJyb3JUeXBlKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vz
cyhoYW5kbGVGb3JXZWJGcmFtZUlEKGZyYW1lSUQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCBiNzIyMmY2Njg1NmZhZGI0MzMyOTZiNjVjNmFk
YzBlZjg2ZjA1NTdlLi43MGJmYTdhOGU1YmFhNmM0OTQ1YjdhMWU0ZWMxN2ViODRkYTA4MGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRnJvbnRlbmRSb3V0
ZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25DbGll
bnQ7CitjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2w7CiAKQEAgLTU3LDkgKzU4LDYgQEAgY2xhc3MgV2ViQXV0b21hdGlvblNlc3Np
b24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpBdXQK
ICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIKIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gV2Vi
UGFnZUhhbmRsZU1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gSGFu
ZGxlV2ViUGFnZU1hcDsKLQogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uKCk7CiAgICAgfldlYkF1
dG9tYXRpb25TZXNzaW9uKCk7CiAKQEAgLTkxLDEyICs4OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnb0JhY2tJbkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnb0ZvcndhcmRJbkJyb3dzaW5nQ29udGV4dChJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBhcmd1bWVudHMsIGJv
b2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgUmVmPEluc3BlY3Rvcjo6QXV0b21h
dGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25D
YWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRsZSwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29s
IGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRp
b25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzb2x2ZUZyYW1lSGFuZGxlKEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29u
c3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxOYW1lLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVGcmFtZUhhbmRsZUNhbGxi
YWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUs
IGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVD
YWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHdlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgaGFu
ZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYpOwogCisgICAgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYsIFdlYktp
dDo6V2ViUGFnZVByb3h5Jik7CisgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lSUQodWludDY0
X3QgZnJhbWVJRCk7CisgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lUHJveHkoY29uc3QgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5Jik7CisKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2Uo
V2ViUGFnZVByb3h5Jik7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0
b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0xMDQsNiArMTA4LDggQEAgcHJp
dmF0ZToKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBtZXNzYWdlcwog
ICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJ
RCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKKyAgICB2
b2lkIGRpZFJlc29sdmVGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CisgICAgdm9pZCBkaWRSZXNvbHZlUGFyZW50RnJh
bWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBl
cnJvclR5cGUpOwogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbCB7
IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudD4gbV9jbGllbnQ7CkBAIC0xMTIsMTMgKzExOCwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFJl
ZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRj
aGVyOwogCi0gICAgV2ViUGFnZUhhbmRsZU1hcCBtX3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAgSGFu
ZGxlV2ViUGFnZU1hcCBtX2hhbmRsZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
U3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90
PiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAgICAgU3RyaW5nIG1fYWN0aXZlQnJvd3NpbmdDb250ZXh0
SGFuZGxlOwogCisgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1lSGFuZGxl
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFtZU1hcDsK
KwogICAgIHVpbnQ2NF90IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAxIH07
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4+
IG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFja3M7CiAKKyAgICB1aW50NjRfdCBt
X25leHRSZXNvbHZlRnJhbWVDYWxsYmFja0lEIHsgMSB9OworICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJl
c29sdmVGcmFtZUhhbmRsZUNhbGxiYWNrPj4gbV9yZXNvbHZlRnJhbWVIYW5kbGVDYWxsYmFja3M7
CisKKyAgICB1aW50NjRfdCBtX25leHRSZXNvbHZlUGFyZW50RnJhbWVDYWxsYmFja0lEIHsgMSB9
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPj4g
bV9yZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFja3M7CisKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKICAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9yZW1vdGVDaGFu
bmVsIHsgbnVsbHB0ciB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3Nh
Z2VzLmluCmluZGV4IGI4NjhkZDBjMDZjNDJhZTZhYzIwYTc0YjhmMzg1YTkxZTVjOTdmZTYuLmIz
YWE2YjhmNGQ1NTc4MWQ2ODNkODM2NjhhZTY0ZTQ2ZmY5MWRhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0yMiw0ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+
IFdlYkF1dG9tYXRpb25TZXNzaW9uIHsKICAgICBEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bih1aW50NjRfdCBjYWxsYmFja0lELCBTdHJpbmcgcmVzdWx0LCBTdHJpbmcgZXJyb3JUeXBlKQor
CisgICAgRGlkUmVzb2x2ZUZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBlcnJvclR5cGUpCisgICAgRGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTE4Mjc2MTk1NzA4YjNiYzI4OWU2
NzA5ZDIyMzg1NjIxMzYxZWFlYy4uNTc3NWI3ZDEzM2Y3MWFmMzMzYzc0NjAzZTcxZGYwZTYzNzBj
NzkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMzMsOSArMzMs
MTYgQEAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
ZlByaXZhdGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJhc2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0pTRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDYgKzE2
OCwyNyBAQCBKU09iamVjdFJlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmpl
Y3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsKIH0K
IAorV2ViQ29yZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZv
ck5vZGVIYW5kbGUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUpCit7
CisgICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0gc2NyaXB0T2JqZWN0Rm9yRnJhbWUoKmZy
YW1lKTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IGZyYW1lLT5qc0NvbnRleHQo
KTsKKworICAgIEpTVmFsdWVSZWYgZnVuY3Rpb25Bcmd1bWVudHNbXSA9IHsKKyAgICAgICAgdG9K
U1ZhbHVlKGNvbnRleHQsIG5vZGVIYW5kbGUpCisgICAgfTsKKworICAgIEpTVmFsdWVSZWYgcmVz
dWx0ID0gY2FsbFByb3BlcnR5RnVuY3Rpb24oY29udGV4dCwgc2NyaXB0T2JqZWN0LCBBU0NJSUxp
dGVyYWwoIm5vZGVGb3JJZGVudGlmaWVyIiksIFdURl9BUlJBWV9MRU5HVEgoZnVuY3Rpb25Bcmd1
bWVudHMpLCBmdW5jdGlvbkFyZ3VtZW50cywgbnVsbHB0cik7CisgICAgSlNPYmplY3RSZWYgZWxl
bWVudCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCByZXN1bHQsIG51bGxwdHIpOworICAgIGlm
ICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGVsZW1lbnRX
cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KHRvSlMoZWxl
bWVudCkpOworICAgIGlmICghZWxlbWVudFdyYXBwZXIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuICZlbGVtZW50V3JhcHBlci0+d3JhcHBlZCgpOworfQorCiB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2Vi
RnJhbWUmIGZyYW1lKQogewogICAgIHVpbnQ2NF90IGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCk7
CkBAIC0yMzksNCArMjY3LDEzMCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRp
ZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNh
bGxiYWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwgMCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1
aW50MzJfdCBvcmRpbmFsLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFdlYlBhZ2UqIHBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFw
YWdlKSB7CisgICAgICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJv
ck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBlcnJvclR5cGUpLCAwKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JU
eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKKwor
ICAgIFdlYkNvcmU6Ok1haW5GcmFtZSogY29yZU1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgp
OworICAgIGlmICghY29yZU1haW5GcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRF
cnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkNvcmU6OkZy
YW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVNYWluRnJhbWUtPnRyZWUoKS5zY29wZWRDaGlsZChv
cmRpbmFsKTsKKyAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVO
b3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2Vi
RnJhbWUqIGNoaWxkRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUNoaWxkRnJh
bWUpOworICAgIGlmICghY2hpbGRGcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRF
cnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgY2hpbGRGcmFt
ZS0+ZnJhbWVJRCgpLCBlbXB0eVN0cmluZygpKSwgMCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAg
V2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsK
KyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOworICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGVycm9y
VHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGZyYW1lTm90
Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90
Rm91bmQpOworCisgICAgV2ViQ29yZTo6TWFpbkZyYW1lKiBjb3JlTWFpbkZyYW1lID0gcGFnZS0+
bWFpbkZyYW1lKCk7CisgICAgaWYgKCFjb3JlTWFpbkZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Zm9yIChXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gY29yZU1haW5GcmFtZTsgY29yZUZyYW1l
OyBjb3JlRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAg
ICBXZWJGcmFtZSogZnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUZyYW1lKTsK
KyAgICAgICAgaWYgKCFmcmFtZSB8fCAhbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcC5jb250YWlu
cyhmcmFtZS0+ZnJhbWVJRCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFdl
YkNvcmU6OkVsZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoZnJhbWUs
IG5vZGVIYW5kbGUpOworICAgICAgICBpZiAoIWNvcmVFbGVtZW50KQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKCFjb3JlRWxlbWVudC0+aXNGcmFtZUVsZW1lbnRCYXNlKCkp
IHsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZl
RnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVG
cmFtZUZyb21FbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJh
c2UqPihjb3JlRWxlbWVudCktPmNvbnRlbnRGcmFtZSgpOworICAgICAgICBpZiAoIWNvcmVGcmFt
ZUZyb21FbGVtZW50KSB7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUp
LCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkZyYW1l
KiBmcmFtZUZyb21FbGVtZW50ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVGcmFtZUZy
b21FbGVtZW50KTsKKyAgICAgICAgaWYgKCFmcmFtZUZyb21FbGVtZW50KSB7CisgICAgICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNr
SUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRS
ZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpLCBlbXB0
eVN0cmluZygpKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1l
Tm90Rm91bmRFcnJvclR5cGUpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpyZXNvbHZlRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkgeworICAg
ICAgICBTdHJpbmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpX
aW5kb3dOb3RGb3VuZCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CisKKyAgICBXZWJDb3Jl
OjpNYWluRnJhbWUqIGNvcmVNYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAo
IWNvcmVNYWluRnJhbWUpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246
OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUNo
aWxkRnJhbWUgPSBjb3JlTWFpbkZyYW1lLT50cmVlKCkuc2NvcGVkQ2hpbGQobmFtZSk7CisgICAg
aWYgKCFjb3JlQ2hpbGRGcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5
cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkZyYW1lKiBjaGlsZEZy
YW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1lKTsKKyAgICBpZiAo
IWNoaWxkRnJhbWUpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRp
ZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSwg
ZW1wdHlTdHJpbmcoKSksIDApOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OnJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lE
KQoreworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZy
YW1lKGZyYW1lSUQpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgU3RyaW5nIGVycm9yVHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlUGFyZW50RnJhbWUo
Y2FsbGJhY2tJRCwgMCwgZXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZVBhcmVudEZyYW1l
KGNhbGxiYWNrSUQsIGZyYW1lLT5wYXJlbnRGcmFtZSgpLT5mcmFtZUlEKCksIGVtcHR5U3RyaW5n
KCkpLCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuaAppbmRleCA5NTdkZGU0OWU3Yjk5ZjFlZDVjZTIxOTUxNDhlYmU4NmQwMjIyMTQw
Li44ZDVlYmZkZGIwNzk0NjU4ZGI5YjRmMTk0YTY1M2I1ODgzYWJlNDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBFbGVtZW50OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViRnJhbWU7CkBAIC00NywxMiArNTEsMTcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJik7CisgICAgV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudEZvck5vZGVIYW5kbGUoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcm
KTsKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogCiAgICAgLy8gQ2FsbGVkIGJ5
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMKICAgICB2b2lkIGV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24s
IFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0Fy
Z3VtZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVGcmFtZVdpdGhP
cmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDMyX3Qgb3JkaW5hbCwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgdm9pZCByZXNvbHZlRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAg
dm9pZCByZXNvbHZlRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICBTdHJpbmcgbV9z
ZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwppbmRl
eCA1ZGQ3MGZhM2RiYjk5NmIwMzJmZDBhMDYwM2Y1MDdjY2Y5ZmIyZjY0Li45ZjlmNDM0YWMwODBm
ZDk3ZjAwM2Y3NmU2MmFlNWE0NjY1NTg3MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcworKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5qcwpAQCAtNTksNiArNTksMTUgQEAgbGV0IEF1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBj
bGFzcyBBdXRvbWF0aW9uU2Vzc2lvblByb3h5CiAgICAgICAgICAgICBjYWxsYmFjayhmdW5jdGlv
blZhbHVlLmFwcGx5KG51bGwsIGFyZ3VtZW50VmFsdWVzKSk7CiAgICAgfQogCisgICAgbm9kZUZv
cklkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fbm9kZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgIH0g
Y2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9qc29uUGFyc2Uoc3RyaW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAxZDBmOGFmZmM2
OGM4N2VhYmY4NzJiNWUxMjExZmYzMzY1Nzc3MTA3Li4wZjliYTU5YmJiOTc3ZWQzZjQxZmQ5YTdi
NTJkOWY1N2Y1MDA0YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgpAQCAtMjIsNCArMjIsOSBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5IHsKICAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRf
dCBmcmFtZSwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wg
ZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKwor
ICAgIFJlc29sdmVGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDMyX3Qgb3Jk
aW5hbCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXNvbHZlRnJhbWVXaXRoTm9kZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBub2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIFJlc29sdmVGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG5hbWUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274458</attachid>
            <date>2016-03-18 15:01:55 -0700</date>
            <delta_ts>2016-03-21 10:14:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155650-20160318150154.patch</filename>
            <type>text/plain</type>
            <size>38240</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3NzU0MDhmOTYzYWQ4
ZGNjZjZmODY2MjkyZjBlNjYyNmRiMmFiYi4uNTE4ZWJiYjBmODZlMDI5ZjkwZWJmNDk3Yzg5Mjgx
ZTI0YTQwOTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlv
bjogQWRkIEF1dG9tYXRpb24gcHJvdG9jb2wgY29tbWFuZHMgdG8gcmVzb2x2ZSBmcmFtZXMgYXMg
aGFuZGxlcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU2NTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjUyNDI0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6IE1h
cmtlZCBmb2N1cygpIG1ldGhvZCBhcyBleHBvcnRlZCBzbyBXSzIgY2FuIHVzZSB0aGVtLgorICAg
ICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IE1hcmtlZCBzY29wZWRDaGlsZCgpIG1ldGhvZHMgYXMg
ZXhwb3J0ZWQgc28gV0syIGNhbiB1c2UgdGhlbS4KKwogMjAxNi0wMy0xNiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBhc3NlcnRpb24g
ZmFpbHVyZSBvbiBkcml2ZS5nb29nbGUuY29tIGFmdGVyIHIxOTYwNTIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAx
NzE5ZTU4YjEyNGIzNmMyYWM0MTA4Zjc4NWQ1ZjJmZjg3M2NlYmVmLi43ZTljOTc3ZDJmZTU3MzE2
YzEyY2NjODE0MGE1MDc4NWYxMjk2NjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIw
MTYtMDMtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21hdGlvbiBwcm90b2NvbCBjb21tYW5kcyB0byByZXNv
bHZlIGZyYW1lcyBhcyBoYW5kbGVzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTY1MAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNTI0MjQyMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uOgorICAgICAgICBBZGRlZCByZXNvbHZlRnJh
bWVIYW5kbGUgYW5kIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lUHJveHlGb3JIYW5kbGUpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1l
SUQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRs
ZUZvcldlYkZyYW1lUHJveHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKTogVXNlIGZyYW1lIGhhbmRsZXMg
bm93LgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUZyYW1l
SGFuZGxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpk
aWRSZXNvbHZlRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkUmVzb2x2ZVBhcmVudEZyYW1lKTogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKERpZFJlc29sdmVGcmFtZSk6IEFkZGVkLgorICAgICAgICAoRGlkUmVz
b2x2ZVBhcmVudEZyYW1lKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhP
cmRpbmFsKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnJlc29sdmVGcmFtZVdpdGhOb2RlSGFuZGxlKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVGcmFtZVdpdGhOYW1lKTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJl
bnRGcmFtZSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Ojpmb2N1c0ZyYW1lKTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKFJl
c29sdmVGcmFtZVdpdGhPcmRpbmFsKTogQWRkZWQuCisgICAgICAgIChSZXNvbHZlRnJhbWVXaXRo
Tm9kZUhhbmRsZSk6IEFkZGVkLgorICAgICAgICAoUmVzb2x2ZUZyYW1lV2l0aE5hbWUpOiBBZGRl
ZC4KKyAgICAgICAgKFJlc29sdmVQYXJlbnRGcmFtZSk6IEFkZGVkLgorICAgICAgICAoRm9jdXNG
cmFtZSk6IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuanM6CisgICAgICAgIChBdXRvbWF0aW9uU2Vzc2lvblByb3h5LnBy
b3RvdHlwZS5ub2RlRm9ySWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICBQdWJsaWMgbWV0aG9k
IHRoYXQgZWF0cyB0aGUgZXhjZXB0aW9uIHRocm93biBieSB0aGUgcHJpdmF0ZSBtZXRob2QuCisK
IDIwMTYtMDMtMTcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21hdGlvbi5ldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggZjM3NDY2MjhlYTM5MTcxMDA3ZTA4ZDU1
NGMwNGYzZjVhYmNmMzk4NS4uZTA0YTUzNTljYjQ2ZjkwNjYyNDFkM2MwNjFjMzUyYTFlYTBmOGVj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0xNjAsNyArMTYwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIEVsZW1lbnQqIGZyYW1lRWxlbWVudCgpIGNvbnN0OwogCi0g
ICAgICAgIHZvaWQgZm9jdXMoYm9vbCBhbGxvd0ZvY3VzID0gZmFsc2UpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZvY3VzKGJvb2wgYWxsb3dGb2N1cyA9IGZhbHNlKTsKICAgICAgICAg
dm9pZCBmb2N1cyhEb2N1bWVudCYpOwogICAgICAgICB2b2lkIGJsdXIoKTsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggMDk5
YTVkMTJkMTkwMmYzNjI4MzUxMzIwMTBhMzZiZWI1M2Q5ZjkwZi4uMmNjYzlmMzdkYzYyM2Q2YmYx
MTI2MzNiNGQ3ZGNlZGY2YmM0MDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC04MCw4
ICs4MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBG
cmFtZSYgdG9wKCkgY29uc3Q7CiAKLSAgICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKLSAgICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBzY29wZWRD
aGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1l
KiBzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgICAgICB1
bnNpZ25lZCBzY29wZWRDaGlsZENvdW50KCkgY29uc3Q7CiAKICAgICAgICAgdW5zaWduZWQgaW5k
ZXhJblBhcmVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCmluZGV4IDZiZmZmYjQ5ZGViMzBiNmFiZjMwYWZmZmIz
YjU5ZGM1ZWM5MTJjNDAuLjJiM2RmYzRhNzk4NzRjZTdjZTZkZTgyNWFiNzA1OThhODUwZjQzNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRp
b24uanNvbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0
aW9uLmpzb24KQEAgLTMyLDYgKzMyLDE2IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
QW4gb3BhcXVlIGlkZW50aWZpZXIgZm9yIGEgYnJvd3NpbmcgY29udGV4dC4iCiAgICAgICAgIH0s
CiAgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJGcmFtZUhhbmRsZSIsCisgICAgICAgICAg
ICAidHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFuIG9wYXF1
ZSBpZGVudGlmaWVyIGZvciBhIGZyYW1lIGluIGEgcGFnZS4iCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgICJpZCI6ICJOb2RlSGFuZGxlIiwKKyAgICAgICAgICAgICJ0eXBlIjog
InN0cmluZyIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQW4gb3BhcXVlIGlkZW50aWZp
ZXIgZm9yIGEgbm9kZSBpbiBhIHBhZ2UuIgorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAg
ICAgICAiaWQiOiAiRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIs
CiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBlbnVtIGNvbnRhaW5zIHByZWRlZmlu
ZWQgZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBzaWduYWwgYSB3ZWxsLWRlZmlu
ZWQgZXJyb3IgY29uZGl0aW9uLCBzdWNoIGFzIGEgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiwgdW5r
bm93biB3aW5kb3cgaGFuZGxlLCBhbmQgc28gZm9ydGguIFRoZSBiYWNrZW5kIHNpZ25hbHMgb25l
IG9mIHRoZXNlIGVycm9ycyBieSB1c2luZyBpdCBhcyBhIHByZWZpeCBvZiB0aGUgY29tbWFuZHMn
cyBlcnJvciBtZXNzYWdlICh0aGUgZXJyb3JTdHJpbmcgYXJndW1lbnQgaW4gZ2VuZXJhdGVkIEMr
KyBiYWNrZW5kIGRpc3BhdGNoZXJzKS4gVGhpcyB3aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSBmcm9u
dGVuZCBhcyBhIHByb3RvY29sIGVycm9yIHdpdGggYSBKU09OLVJQQyBlcnJvciBjb2RlIG9mICdT
ZXJ2ZXJFcnJvcicuIEl0IGlzIHVwIHRvIHRoZSBmcm9udGVuZCB3aGV0aGVyIGFuZCBob3cgdG8g
ZGVhbCB3aXRoIGVycm9ycy4iLApAQCAtMzksNiArNDksNyBAQAogICAgICAgICAgICAgICAgICJJ
bnRlcm5hbEVycm9yIiwKICAgICAgICAgICAgICAgICAiSmF2YVNjcmlwdEVycm9yIiwKICAgICAg
ICAgICAgICAgICAiV2luZG93Tm90Rm91bmQiLAorICAgICAgICAgICAgICAgICJGcmFtZU5vdEZv
dW5kIiwKICAgICAgICAgICAgICAgICAiTm9kZU5vdEZvdW5kIiwKICAgICAgICAgICAgICAgICAi
Tm90SW1wbGVtZW50ZWQiLAogICAgICAgICAgICAgICAgICJNaXNzaW5nUGFyYW1ldGVyIiwKQEAg
LTkyLDkgKzEwMywxMCBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFt
ZSI6ICJzd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiQWN0aXZhdGVzIHRoZSBzcGVjaWZpZWQgYnJvd3NpbmcgY29udGV4dC4iLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkFjdGl2YXRlcyB0aGUgc3BlY2lmaWVkIGJyb3dzaW5nIGNvbnRl
eHQgYW5kIG9wdGlvbmFsIGZyYW1lLCB3aGljaCBnaXZlcyB0aGVtIGZvY3VzIChjYXVzaW5nIHRo
ZSAnZm9jdXMnIERPTSBldmVudCB0byBmaXJlLCBhbmQgJ2JsdXInIERPTSBldmVudCB0byBmaXJl
IGZvciB0aGUgcHJldmlvdXMgYnJvd3NpbmcgY29udGV4dCBhbmQgZnJhbWUpLiIsCiAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIs
ICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFu
ZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IHNob3VsZCBiZSBtYWRlIGFjdGl2ZS4i
IH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICIk
cmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxl
IGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IHNob3VsZCBiZSBtYWRlIGZvY3VzZWQuIiB9
LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVIYW5kbGUiLCAiJHJlZiI6ICJGcmFt
ZUhhbmRsZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZv
ciB0aGUgZnJhbWUgdGhhdCBzaG91bGQgYmUgZm9jdXNlZC4gRGVmYXVsdHMgdG8gdGhlIG1haW4g
ZnJhbWUgaWYgb21pdHRlZC4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAg
ewpAQCAtMTQ2LDcgKzE1OCw4IEBACiAgICAgICAgICAgICAibmFtZSI6ICJldmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbiIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRXZhbHVhdGVzIGEg
c2NyaXB0IGZ1bmN0aW9uIGluIGEgYnJvd3NpbmcgY29udGV4dCBhbmQgY2FsbHMgaXQgd2l0aCB0
aGUgc3VwcGxpZWQgYXJndW1lbnRzLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4
dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29u
dGV4dCB0aGUgc2NyaXB0IHNob3VsZCBiZSBldmFsdWF0ZWQuIiB9LAorICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250
ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2luZyBj
b250ZXh0IHRoZSBzY3JpcHQgc2hvdWxkIGJlIGV2YWx1YXRlZC4iIH0sCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJmcmFtZUhhbmRsZSIsICIkcmVmIjogIkZyYW1lSGFuZGxlIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBmcmFtZSB0aGUg
c2NyaXB0IHNob3VsZCBiZSBldmFsdWF0ZWQuIFRoZSBtYWluIGZyYW1lIGlzIHVzZWQgaWYgdGhp
cyBwYXJhbWV0ZXIgZW1wdHkgc3RyaW5nIG9yIGV4Y2x1ZGVkLiIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImZ1bmN0aW9uIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IlRoZSBzY3JpcHQgdG8gZXZhbHVhdGUgaW4gdGhlIGJyb3dzaW5nIGNvbnRleHQuIEl0IG11c3Qg
YmUgYSBmdW5jdGlvbiByZXN1bHQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXJn
dW1lbnRzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwg
ImRlc2NyaXB0aW9uIjogIlRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24gd2hl
biBjYWxsZWQuIFRoZXkgd2lsbCBiZSBwYXJzZWQgYXMgSlNPTiBiZWZvcmUgY2FsbGluZyB0aGUg
ZnVuY3Rpb24uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXhwZWN0c0ltcGxpY2l0
Q2FsbGJhY2tBcmd1bWVudCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhl
IGZ1bmN0aW9uIGV4cGVjdHMgYSBjYWxsYmFjayBmdW5jdGlvbiBhcyB0aGUgbGFzdCBhcmd1bWVu
dC4gSXQgaXMgZXhwZWN0ZWQgdG8gY2FsbCB0aGlzIGNhbGxiYWNrIHdpdGggYSByZXN1bHQuIiB9
CkBAIC0xNTUsNiArMTY4LDMyIEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVGhlIHJlc3VsdCByZXR1cm5lZCBi
eSB0aGUgY2FsbGVkIGZ1bmN0aW9uLiBJdCBpcyBKU09OIGVuY29kZWQgYWZ0ZXIgdGhlIGZ1bmN0
aW9uIHJldHVybnMgb3IgY2FsbHMgdGhlIGNhbGxiYWNrLiIgfQogICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAicmVzb2x2ZUZyYW1lSGFuZGxlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJEZXRlcm1pbmVzIHRoZSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4gYmFzZWQgb24gdGhl
IG9yZGluYWwsIG5hbWUgb3Igbm9kZSBoYW5kbGUgb2YgYSBmcmFtZS4iLAorICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicm93c2luZ0NvbnRl
eHRIYW5kbGUiLCAiJHJlZiI6ICJCcm93c2luZ0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dzaW5nIGNvbnRleHQgaW4gd2hpY2ggdG8gc2VhcmNo
IGZvciB0aGUgZnJhbWUuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JkaW5hbCIs
ICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhl
IG9yZGluYWwgb2YgdGhlIGNoaWxkIGZyYW1lIHRvIHJlc29sdmUgYXMgYSA8Y29kZT5GcmFtZUhh
bmRsZTwvY29kZT4uIFRoaXMgaXMgYW5hbG9nb3VzIHRvICd3aW5kb3cuZnJhbWVzW29yZGluYWxd
JyBpbiBKYXZhU2NyaXB0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAi
dHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5h
bWUgb2YgdGhlIGNoaWxkIGZyYW1lIHRvIHJlc29sdmUgYXMgYSA8Y29kZT5GcmFtZUhhbmRsZTwv
Y29kZT4uIFRoaXMgaXMgYW5hbG9nb3VzIHRvICd3aW5kb3cuZnJhbWVzW25hbWVdJyBpbiBKYXZh
U2NyaXB0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVIYW5kbGUiLCAiJHJl
ZiI6ICJOb2RlSGFuZGxlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBo
YW5kbGUgb2YgdGhlIGZyYW1lIG93bmVyIGVsZW1lbnQgdG8gcmVzb2x2ZSBhcyBhIDxjb2RlPkZy
YW1lSGFuZGxlPC9jb2RlPi4iIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAicmV0dXJu
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICIkcmVmIjogIkZyYW1l
SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSA8Y29kZT5GcmFtZUhhbmRsZTwvY29kZT4gZm9y
IHRoZSByZXF1ZXN0ZWQgZnJhbWUuIiB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImFz
eW5jIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJy
ZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRl
dGVybWluZXMgdGhlIDxjb2RlPkZyYW1lSGFuZGxlPC9jb2RlPiBmb3IgdGhlIHBhcmVudCBmcmFt
ZSBvZiB0aGUgc3VwcGxpZWQgPGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+LiIsCisgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJyb3dzaW5nQ29u
dGV4dEhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlv
biI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGUgZnJhbWUgaXMgbG9j
YXRlZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUhhbmRsZSIsICIkcmVm
IjogIkZyYW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBmcmFt
ZSB0aGF0IHNob3VsZCByZXNvbHZlIGl0cyBwYXJlbnQgZnJhbWUuIiB9CisgICAgICAgICAgICBd
LAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJy
ZXN1bHQiLCAiJHJlZiI6ICJGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgPGNvZGU+
RnJhbWVIYW5kbGU8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGZyYW1lLiIgfQorICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAgfQogICAgIF0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0YmI1NGJmNDQzNWYyMzQzNjhkOTk4NjQ4NzJiNTM4
Y2FjMTY4OWQ5Li4yZDg0ZTFmOTU4MTdkYjZjNDY2OTM1M2U1ZDdmMGQ4ODAyOWYzNTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xNDIsNiArMTQyLDU0IEBAIFN0cmluZyBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYg
d2ViUGFnZVByCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAorV2ViRnJhbWVQcm94eSogV2ViQXV0
b21hdGlvblNlc3Npb246OndlYkZyYW1lUHJveHlGb3JIYW5kbGUoY29uc3QgU3RyaW5nJiBoYW5k
bGUsIFdlYlBhZ2VQcm94eSYgcGFnZSkKK3sKKyAgICBpZiAoaGFuZGxlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIHBhZ2UubWFpbkZyYW1lKCk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX2hhbmRs
ZVdlYkZyYW1lTWFwLmZpbmQoaGFuZGxlKTsKKyAgICBpZiAoaXRlciA9PSBtX2hhbmRsZVdlYkZy
YW1lTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IHBhZ2UucHJvY2VzcygpLndlYkZyYW1lKGl0ZXItPnZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuIGZyYW1lOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1N0cmluZyBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVJRCh1aW50NjRfdCBmcmFtZUlE
KQoreworICAgIGlmICghZnJhbWVJRCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NQb29sLT5wcm9jZXNzZXMoKSkgewor
ICAgICAgICBpZiAoV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBhdXRvIGl0ZXIgPSBtX3dlYkZyYW1lSGFuZGxlTWFwLmZpbmQoZnJh
bWVJRCk7CisgICAgaWYgKGl0ZXIgIT0gbV93ZWJGcmFtZUhhbmRsZU1hcC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGl0ZXItPnZhbHVlOworCisgICAgU3RyaW5nIGhhbmRsZSA9IFdlYkNvcmU6OmNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOworCisg
ICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViUGFnZUhhbmRsZU1hcC5hZGQoZnJhbWVJRCwg
aGFuZGxlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmaXJzdEFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIGF1dG8gc2Vjb25kQWRkUmVzdWx0ID0gbV9oYW5kbGVXZWJQYWdlTWFwLmFkZChoYW5k
bGUsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfQVNTRVJUKHNlY29uZEFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKK1N0cmluZyBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6aGFuZGxlRm9yV2ViRnJhbWVQcm94eShjb25zdCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFt
ZVByb3h5KQoreworICAgIHJldHVybiBoYW5kbGVGb3JXZWJGcmFtZUlEKHdlYkZyYW1lUHJveHku
ZnJhbWVJRCgpKTsKK30KKwogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkJyb3dzaW5nQ29udGV4dD4gV2ViQXV0b21hdGlvblNlc3Npb246OmJ1aWxkQnJvd3NpbmdDb250
ZXh0Rm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHdpbmRvd0ZyYW1lOwpAQCAtMjIxLDE3ICsyNjksMjEgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6Y2xvc2VCcm93c2luZ0NvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dAogICAgIHBhZ2UtPmNsb3NlUGFnZShmYWxzZSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBoYW5kbGUpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hU
b0Jyb3dzaW5nQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUp
CiB7Ci0gICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGhhbmRs
ZSk7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dz
aW5nQ29udGV4dEhhbmRsZSk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJF
REVGSU5FRF9FUlJPUl9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIG1fYWN0aXZlQnJv
d3NpbmdDb250ZXh0SGFuZGxlID0gaGFuZGxlOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
d2ViRnJhbWVQcm94eUZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJh
bWVIYW5kbGUgOiBlbXB0eVN0cmluZygpLCAqcGFnZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShGcmFtZU5vdEZvdW5kKTsKKwor
ICAgIC8vIEZJWE1FOiBXZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoaXMgaW4gV0syLiBSZW1vdmUg
aW4gYSBmb2xsb3cgdXAuCisgICAgbV9hY3RpdmVCcm93c2luZ0NvbnRleHRIYW5kbGUgPSBicm93
c2luZ0NvbnRleHRIYW5kbGU7CiAKLSAgICAvLyBGSVhNRTogVmVyaWZ5IHRoaXMgaXMgZW5vdWdo
LiBXZSBzdGlsbCBtaWdodCB3YW50IHRvIGdvIHRocm91Z2ggdGhlIEF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50Ci0gICAgLy8gdG8gZ2V0IGNsb3NlciBhIHVzZXIgcHJlc3NpbmcgZm9jdXNpbmcgdGhl
IHdpbmRvdyAvIHBhZ2UuCiAgICAgcGFnZS0+c2V0Rm9jdXModHJ1ZSk7CisgICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkZvY3VzRnJh
bWUoZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpyZXNpemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0JiBzaXplT2JqZWN0KQpAQCAtMzQ2LDEzICszOTgsMTYgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmIGVycm9yU3QKICAgICBwYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJs
b2NrZXJzRW5hYmxlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxi
YWNrQXJndW1lbnQsIFJlZjxFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUs
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkm
IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBSZWY8RXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICAvLyBG
SVhNRSAyNDE3MjQzOTogVGhpcyBzaG91bGQgYmUgYSBmcmFtZSBoYW5kbGUsIG5vdCBhIHBhZ2Ug
aGFuZGxlLiBDaGFuZ2UgdGhpcyBvbmNlIHdlIGhhdmUgZnJhbWUgc3VwcG9ydC4KLSAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFuZGxlKTsKKyAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFu
ZGxlKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X01FU1NBR0UoV2luZG93Tm90Rm91bmQpOwogCisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSB3
ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKG9wdGlvbmFsRnJhbWVIYW5kbGUgPyAqb3B0aW9uYWxGcmFt
ZUhhbmRsZSA6IGVtcHR5U3RyaW5nKCksICpwYWdlKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEZyYW1lTm90Rm91bmQpOworCiAg
ICAgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzVmVjdG9yOwogICAgIGFyZ3VtZW50c1ZlY3Rvci5y
ZXNlcnZlQ2FwYWNpdHkoYXJndW1lbnRzLmxlbmd0aCgpKTsKIApAQCAtMzY1LDcgKzQyMCw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVyCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fbmV4
dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQrKzsKICAgICBtX2V2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAK
LSAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24ocGFnZS0+bWFpbkZyYW1lKCktPmZyYW1l
SUQoKSwgZnVuY3Rpb24sIGFyZ3VtZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tB
cmd1bWVudCwgY2FsbGJhY2tJRCksIDApOworICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihmcmFtZS0+ZnJhbWVJRCgpLCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBlY3RzSW1w
bGljaXRDYWxsYmFja0FyZ3VtZW50LCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkK
QEAgLTM4MSw0ICs0MzYsNzQgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY28KICAgICAgICAgY2Fs
bGJhY2stPnNlbmRTdWNjZXNzKHJlc3VsdCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnJlc29sdmVGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IGludCogb3B0aW9u
YWxPcmRpbmFsLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbE5vZGVIYW5kbGUsIFJlZjxSZXNvbHZlRnJhbWVIYW5kbGVDYWxsYmFjaz4mJiBjYWxsYmFj
aykKK3sKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJv
d3NpbmdDb250ZXh0SGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOworCisgICAgaWYgKCFvcHRp
b25hbE9yZGluYWwgJiYgIW9wdGlvbmFsTmFtZSAmJiAhb3B0aW9uYWxOb2RlSGFuZGxlKQorICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIp
OworCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fbmV4dFJlc29sdmVGcmFtZUNhbGxiYWNr
SUQrKzsKKyAgICBtX3Jlc29sdmVGcmFtZUhhbmRsZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOworCisgICAgaWYgKG9wdGlvbmFsTm9kZUhhbmRsZSkgeworICAg
ICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6UmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUocGFnZS0+cGFnZUlEKCksICpvcHRpb25h
bE5vZGVIYW5kbGUsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChvcHRpb25hbE5hbWUpIHsKKyAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVGcmFtZVdpdGhOYW1lKHBh
Z2UtPnBhZ2VJRCgpLCAqb3B0aW9uYWxOYW1lLCBjYWxsYmFja0lEKSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAob3B0aW9uYWxPcmRpbmFsKSB7CisgICAgICAgIHBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNv
bHZlRnJhbWVXaXRoT3JkaW5hbChwYWdlLT5wYWdlSUQoKSwgKm9wdGlvbmFsT3JkaW5hbCwgY2Fs
bGJhY2tJRCksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFJlc29sdmVGcmFt
ZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVy
cm9yVHlwZSkKK3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9yZXNvbHZlUGFyZW50RnJhbWVIYW5k
bGVDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIWVycm9yVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIGNhbGxi
YWNrLT5zZW5kRmFpbHVyZShlcnJvclR5cGUpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2st
PnNlbmRTdWNjZXNzKGhhbmRsZUZvcldlYkZyYW1lSUQoZnJhbWVJRCkpOworfQorCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVzb2x2ZVBhcmVudEZyYW1lSGFu
ZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Vi
UGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29udGV4dEhhbmRsZSk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKFdpbmRvd05vdEZv
dW5kKTsKKworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gd2ViRnJhbWVQcm94eUZvckhhbmRs
ZShmcmFtZUhhbmRsZSwgKnBhZ2UpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIEZBSUxfV0lU
SF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoRnJhbWVOb3RGb3VuZCk7CisKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gbV9uZXh0UmVzb2x2ZVBhcmVudEZyYW1lQ2FsbGJhY2tJRCsrOworICAg
IG1fcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6UmVzb2x2ZVBhcmVudEZyYW1lKGZyYW1lLT5mcmFtZUlE
KCksIGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlk
UmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3Jlc29s
dmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIGlmICgh
Y2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZXJyb3JUeXBlLmlzRW1wdHko
KSkKKyAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKGVycm9yVHlwZSk7CisgICAgZWxzZQor
ICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoaGFuZGxlRm9yV2ViRnJhbWVJRChmcmFtZUlE
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXgg
YjcyMjJmNjY4NTZmYWRiNDMzMjk2YjY1YzZhZGMwZWY4NmYwNTU3ZS4uYzQwYWU1NTMxZDgzZDU2
ZTg4Y2I1NTNhZjhlNzAwYTQ4ZjQ0MDBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC00Nyw2
ICs0Nyw3IEBAIGNsYXNzIEZyb250ZW5kUm91dGVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OworY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCkBAIC01Nyw5ICs1OCw2
IEBAIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0CiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpBdXRv
bWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IFdlYlBhZ2VIYW5kbGVNYXA7Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgdWludDY0X3Q+IEhhbmRsZVdlYlBhZ2VNYXA7Ci0KICAgICBXZWJBdXRv
bWF0aW9uU2Vzc2lvbigpOwogICAgIH5XZWJBdXRvbWF0aW9uU2Vzc2lvbigpOwogCkBAIC04NCwx
OSArODIsMjUgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3Jl
YXRlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBTdHJpbmcqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNsb3NlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN3aXRjaFRvQnJvd3NpbmdD
b250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbEZyYW1lSGFuZGxlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2l6ZVdpbmRvd09mQnJvd3Np
bmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHNpemUpIG92ZXJyaWRlOwogICAgIHZv
aWQgbW92ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHBv
c2l0aW9uKSBvdmVycmlkZTsKICAgICB2b2lkIG5hdmlnYXRlQnJvd3NpbmdDb250ZXh0KEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiB1
cmwpIG92ZXJyaWRlOwogICAgIHZvaWQgZ29CYWNrSW5Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9y
OjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ29Gb3J3
YXJkSW5Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsb2FkQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGhhbmRsZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQs
IFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVI
YW5kbGUsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXkmIGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBS
ZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFdmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc29s
dmVGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IGludCogb3B0aW9uYWxPcmRpbmFsLCBjb25zdCBTdHJp
bmcqIG9wdGlvbmFsTmFtZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxS
ZXNvbHZlRnJhbWVIYW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNvbHZl
UGFyZW50RnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
YnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGZyYW1lSGFuZGxlLCBSZWY8UmVz
b2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIFdlYktpdDo6V2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYlBhZ2VQcm94eShjb25zdCBXZWJQYWdlUHJv
eHkmKTsKIAorICAgIFdlYktpdDo6V2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eUZvckhhbmRs
ZShjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOworICAgIFN0cmluZyBoYW5k
bGVGb3JXZWJGcmFtZUlEKHVpbnQ2NF90IGZyYW1lSUQpOworICAgIFN0cmluZyBoYW5kbGVGb3JX
ZWJGcmFtZVByb3h5KGNvbnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYpOworCiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dD4gYnVpbGRC
cm93c2luZ0NvbnRleHRGb3JQYWdlKFdlYlBhZ2VQcm94eSYpOwogCiAgICAgLy8gSW1wbGVtZW50
ZWQgaW4gZ2VuZXJhdGVkIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcApA
QCAtMTA0LDYgKzEwOCw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21h
dGlvblNlc3Npb24gbWVzc2FnZXMKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIGVycm9yVHlwZSk7CisgICAgdm9pZCBkaWRSZXNvbHZlRnJhbWUodWludDY0X3QgY2FsbGJh
Y2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOworICAgIHZv
aWQgZGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wqIG1fcHJvY2Vzc1Bvb2wgeyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwpAQCAtMTEyLDEzICsxMTgsMjIg
QEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3Bh
dGNoZXI+IG1fZG9tYWluRGlzcGF0Y2hlcjsKIAotICAgIFdlYlBhZ2VIYW5kbGVNYXAgbV93ZWJQ
YWdlSGFuZGxlTWFwOwotICAgIEhhbmRsZVdlYlBhZ2VNYXAgbV9oYW5kbGVXZWJQYWdlTWFwOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFwOworICAgIEhh
c2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJQYWdlTWFwOwogICAgIFN0cmluZyBt
X2FjdGl2ZUJyb3dzaW5nQ29udGV4dEhhbmRsZTsKIAorICAgIEhhc2hNYXA8dWludDY0X3QsIFN0
cmluZz4gbV93ZWJGcmFtZUhhbmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+
IG1faGFuZGxlV2ViRnJhbWVNYXA7CisKICAgICB1aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFT
Y3JpcHRDYWxsYmFja0lEIHsgMSB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uQ2FsbGJhY2s+PiBtX2V2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJh
Y2tzOwogCisgICAgdWludDY0X3QgbV9uZXh0UmVzb2x2ZUZyYW1lQ2FsbGJhY2tJRCB7IDEgfTsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpSZXNvbHZlRnJhbWVIYW5kbGVDYWxsYmFjaz4+IG1fcmVzb2x2
ZUZyYW1lSGFuZGxlQ2FsbGJhY2tzOworCisgICAgdWludDY0X3QgbV9uZXh0UmVzb2x2ZVBhcmVu
dEZyYW1lQ2FsbGJhY2tJRCB7IDEgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5z
cGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXNvbHZlUGFyZW50
RnJhbWVIYW5kbGVDYWxsYmFjaz4+IG1fcmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2tz
OworCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIG1fcmVtb3RlQ2hhbm5lbCB7IG51bGxwdHIgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgppbmRleCBiODY4ZGQwYzA2YzQyYWU2YWMyMGE3
NGI4ZjM4NWE5MWU1Yzk3ZmU2Li5iM2FhNmI4ZjRkNTU3ODFkNjgzZDgzNjY4YWU2NGU0NmZmOTFk
YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMjIsNCAr
MjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbiB7CiAgICAgRGlkRXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgU3RyaW5nIHJlc3Vs
dCwgU3RyaW5nIGVycm9yVHlwZSkKKworICAgIERpZFJlc29sdmVGcmFtZSh1aW50NjRfdCBjYWxs
YmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZXJyb3JUeXBlKQorICAgIERpZFJlc29s
dmVQYXJlbnRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgZXJyb3JUeXBlKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4
IGUxODI3NjE5NTcwOGIzYmMyODllNjcwOWQyMjM4NTYyMTM2MWVhZWMuLjE0MzM4N2FlZDk5Nzk5
YTJhMmY5ZjBiNDgwOTVlMmM5MTRjMWFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKQEAgLTMzLDkgKzMzLDE3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQcml2YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvT3BhcXVlSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudEJhc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0pTRWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTYxLDYgKzE2OSwy
NyBAQCBKU09iamVjdFJlZiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RG
b3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsKIH0KIAor
V2ViQ29yZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5v
ZGVIYW5kbGUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUpCit7Cisg
ICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0gc2NyaXB0T2JqZWN0Rm9yRnJhbWUoKmZyYW1l
KTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IGZyYW1lLT5qc0NvbnRleHQoKTsK
KworICAgIEpTVmFsdWVSZWYgZnVuY3Rpb25Bcmd1bWVudHNbXSA9IHsKKyAgICAgICAgdG9KU1Zh
bHVlKGNvbnRleHQsIG5vZGVIYW5kbGUpCisgICAgfTsKKworICAgIEpTVmFsdWVSZWYgcmVzdWx0
ID0gY2FsbFByb3BlcnR5RnVuY3Rpb24oY29udGV4dCwgc2NyaXB0T2JqZWN0LCBBU0NJSUxpdGVy
YWwoIm5vZGVGb3JJZGVudGlmaWVyIiksIFdURl9BUlJBWV9MRU5HVEgoZnVuY3Rpb25Bcmd1bWVu
dHMpLCBmdW5jdGlvbkFyZ3VtZW50cywgbnVsbHB0cik7CisgICAgSlNPYmplY3RSZWYgZWxlbWVu
dCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCByZXN1bHQsIG51bGxwdHIpOworICAgIGlmICgh
ZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGVsZW1lbnRXcmFw
cGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KHRvSlMoZWxlbWVu
dCkpOworICAgIGlmICghZWxlbWVudFdyYXBwZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuICZlbGVtZW50V3JhcHBlci0+d3JhcHBlZCgpOworfQorCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJh
bWUmIGZyYW1lKQogewogICAgIHVpbnQ2NF90IGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCk7CkBA
IC0yMzksNCArMjY4LDE1MSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxi
YWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwgMCk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50
MzJfdCBvcmRpbmFsLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFdlYlBhZ2UqIHBhZ2Ug
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdl
KSB7CisgICAgICAgIFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1l
c3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb246OkRpZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBlcnJvclR5cGUpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBl
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKKworICAg
IFdlYkNvcmU6Ok1haW5GcmFtZSogY29yZU1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwor
ICAgIGlmICghY29yZU1haW5GcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJv
clR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkNvcmU6OkZyYW1l
KiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVNYWluRnJhbWUtPnRyZWUoKS5zY29wZWRDaGlsZChvcmRp
bmFsKTsKKyAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViRnJh
bWUqIGNoaWxkRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUNoaWxkRnJhbWUp
OworICAgIGlmICghY2hpbGRGcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJv
clR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgY2hpbGRGcmFtZS0+
ZnJhbWVJRCgpLCBlbXB0eVN0cmluZygpKSwgMCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCBj
b25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgV2Vi
UGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKKyAg
ICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOworICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGVycm9yVHlw
ZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGZyYW1lTm90Rm91
bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90Rm91
bmQpOworCisgICAgV2ViQ29yZTo6TWFpbkZyYW1lKiBjb3JlTWFpbkZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCk7CisgICAgaWYgKCFjb3JlTWFpbkZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVO
b3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9y
IChXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gY29yZU1haW5GcmFtZTsgY29yZUZyYW1lOyBj
b3JlRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBX
ZWJGcmFtZSogZnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUZyYW1lKTsKKyAg
ICAgICAgaWYgKCFmcmFtZSB8fCAhbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcC5jb250YWlucyhm
cmFtZS0+ZnJhbWVJRCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFdlYkNv
cmU6OkVsZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoZnJhbWUsIG5v
ZGVIYW5kbGUpOworICAgICAgICBpZiAoIWNvcmVFbGVtZW50KQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKCFjb3JlRWxlbWVudC0+aXNGcmFtZUVsZW1lbnRCYXNlKCkpIHsK
KyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlRnJh
bWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFt
ZUZyb21FbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2Uq
Pihjb3JlRWxlbWVudCktPmNvbnRlbnRGcmFtZSgpOworICAgICAgICBpZiAoIWNvcmVGcmFtZUZy
b21FbGVtZW50KSB7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAw
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkZyYW1lKiBm
cmFtZUZyb21FbGVtZW50ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVGcmFtZUZyb21F
bGVtZW50KTsKKyAgICAgICAgaWYgKCFmcmFtZUZyb21FbGVtZW50KSB7CisgICAgICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQs
IDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNv
bHZlRnJhbWUoY2FsbGJhY2tJRCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpLCBlbXB0eVN0
cmluZygpKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90
Rm91bmRFcnJvclR5cGUpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOworICAgIGlmICghcGFnZSkgeworICAgICAg
ICBTdHJpbmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5k
b3dOb3RGb3VuZCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRS
ZXNvbHZlRnJhbWUoY2FsbGJhY2tJRCwgMCwgZXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CisKKyAgICBXZWJDb3JlOjpN
YWluRnJhbWUqIGNvcmVNYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWNv
cmVNYWluRnJhbWUpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRp
ZFJlc29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUNoaWxk
RnJhbWUgPSBjb3JlTWFpbkZyYW1lLT50cmVlKCkuc2NvcGVkQ2hpbGQobmFtZSk7CisgICAgaWYg
KCFjb3JlQ2hpbGRGcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUp
LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkZyYW1lKiBjaGlsZEZyYW1l
ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1lKTsKKyAgICBpZiAoIWNo
aWxkRnJhbWUpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJl
c29sdmVGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6RGlkUmVzb2x2ZUZyYW1lKGNhbGxiYWNrSUQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSwgZW1w
dHlTdHJpbmcoKSksIDApOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJl
c29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQor
eworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1l
KGZyYW1lSUQpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgU3RyaW5nIGVycm9yVHlwZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlUGFyZW50RnJhbWUoY2Fs
bGJhY2tJRCwgMCwgZXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZVBhcmVudEZyYW1lKGNh
bGxiYWNrSUQsIGZyYW1lLT5wYXJlbnRGcmFtZSgpLT5mcmFtZUlEKCksIGVtcHR5U3RyaW5nKCkp
LCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCit7CisgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lLT5jb3JlRnJhbWUo
KTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6
RG9jdW1lbnQqIGNvcmVEb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAo
IWNvcmVEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RE9NV2luZG93
KiBjb3JlRE9NV2luZG93ID0gY29yZURvY3VtZW50LT5kb21XaW5kb3coKTsKKyAgICBpZiAoIWNv
cmVET01XaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGNvcmVET01XaW5kb3ctPmZvY3Vz
KHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oCmluZGV4IDk1N2RkZTQ5ZTdiOTlmMWVkNWNlMjE5NTE0OGViZTg2ZDAyMjIxNDAu
LmNiZWE4OTgzYTI3YTFmZTUzMTQ1MmRlZDQzZWE2Y2QyZTFhZTNhYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEVsZW1lbnQ7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJGcmFtZTsKQEAgLTQ3LDEyICs1MSwxOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
SlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmKTsKKyAgICBXZWJDb3Jl
OjpFbGVtZW50KiBlbGVtZW50Rm9yTm9kZUhhbmRsZShXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYp
OwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKICAgICAvLyBDYWxsZWQgYnkg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBtZXNzYWdlcwogICAgIHZvaWQgZXZhbHVhdGVKYXZh
U2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwg
VmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJn
dW1lbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUZyYW1lV2l0aE9y
ZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50MzJfdCBvcmRpbmFsLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHJlc29sdmVGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIHJlc29sdmVGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBu
YW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGZvY3VzRnJh
bWUodWludDY0X3QgZnJhbWVJRCk7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuanMgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwppbmRleCA1ZGQ3MGZhM2RiYjk5NmIw
MzJmZDBhMDYwM2Y1MDdjY2Y5ZmIyZjY0Li45ZjlmNDM0YWMwODBmZDk3ZjAwM2Y3NmU2MmFlNWE0
NjY1NTg3MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwpAQCAtNTksNiAr
NTksMTUgQEAgbGV0IEF1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvblByb3h5CiAgICAgICAgICAgICBjYWxsYmFjayhmdW5jdGlvblZhbHVlLmFwcGx5KG51bGws
IGFyZ3VtZW50VmFsdWVzKSk7CiAgICAgfQogCisgICAgbm9kZUZvcklkZW50aWZpZXIoaWRlbnRp
ZmllcikKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9k
ZUZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIFByaXZh
dGUKIAogICAgIF9qc29uUGFyc2Uoc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCAxZDBmOGFmZmM2OGM4N2VhYmY4NzJiNWUxMjEx
ZmYzMzY1Nzc3MTA3Li43MjYwYjYxOTQzNzExYWI5YmU1ZTg5ZGUwMDJjMmJjNWNjYThkZTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjIsNCArMjIsMTEgQEAKIAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSB7
CiAgICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWUsIFN0cmluZyBm
dW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENh
bGxiYWNrQXJndW1lbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisKKyAgICBSZXNvbHZlRnJhbWVX
aXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQzMl90IG9yZGluYWwsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgUmVzb2x2ZUZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXNvbHZlRnJh
bWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKQorCisgICAgRm9jdXNGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274600</attachid>
            <date>2016-03-21 10:14:57 -0700</date>
            <delta_ts>2016-03-25 17:12:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155650-20160321101458.patch</filename>
            <type>text/plain</type>
            <size>40086</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY3NzU0MDhmOTYzYWQ4
ZGNjZjZmODY2MjkyZjBlNjYyNmRiMmFiYi4uNTE4ZWJiYjBmODZlMDI5ZjkwZWJmNDk3Yzg5Mjgx
ZTI0YTQwOTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlv
bjogQWRkIEF1dG9tYXRpb24gcHJvdG9jb2wgY29tbWFuZHMgdG8gcmVzb2x2ZSBmcmFtZXMgYXMg
aGFuZGxlcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU2NTAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjUyNDI0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6IE1h
cmtlZCBmb2N1cygpIG1ldGhvZCBhcyBleHBvcnRlZCBzbyBXSzIgY2FuIHVzZSB0aGVtLgorICAg
ICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IE1hcmtlZCBzY29wZWRDaGlsZCgpIG1ldGhvZHMgYXMg
ZXhwb3J0ZWQgc28gV0syIGNhbiB1c2UgdGhlbS4KKwogMjAxNi0wMy0xNiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBhc3NlcnRpb24g
ZmFpbHVyZSBvbiBkcml2ZS5nb29nbGUuY29tIGFmdGVyIHIxOTYwNTIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAy
MGQxNDgwZTJlMmQzZmJiZTRjODFiODRkN2MzMjlkNTE0YzRhN2U1Li41OGJhZDExMDc2ZTY0YjQw
ZmUzN2JjYmJhNGQyZjg3MjA3YjdhMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIw
MTYtMDMtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBBdXRvbWF0aW9uOiBBZGQgQXV0b21hdGlvbiBwcm90b2NvbCBjb21tYW5kcyB0byByZXNv
bHZlIGZyYW1lcyBhcyBoYW5kbGVzCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTY1MAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNTI0MjQyMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uOgorICAgICAgICBBZGRlZCByZXNvbHZlRnJh
bWVIYW5kbGUgYW5kIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lUHJveHlGb3JIYW5kbGUpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1l
SUQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRs
ZUZvcldlYkZyYW1lUHJveHkpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKTogVXNlIGZyYW1lIGhhbmRsZXMg
bm93LgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZUNoaWxk
RnJhbWVIYW5kbGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OmRpZENoaWxkUmVzb2x2ZUZyYW1lKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRpZFJlc29sdmVQYXJlbnRGcmFtZSk6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24ubWVzc2FnZXMuaW46CisgICAgICAgIChEaWRSZXNvbHZlQ2hpbGRGcmFtZSk6IEFkZGVkLgor
ICAgICAgICAoRGlkUmVzb2x2ZVBhcmVudEZyYW1lKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxl
KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJl
c29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlQ2hpbGRGcmFtZVdpdGhOYW1lKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSk6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKTogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwp
OiBBZGRlZC4KKyAgICAgICAgKFJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUpOiBBZGRl
ZC4KKyAgICAgICAgKFJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUpOiBBZGRlZC4KKyAgICAgICAg
KFJlc29sdmVQYXJlbnRGcmFtZSk6IEFkZGVkLgorICAgICAgICAoRm9jdXNGcmFtZSk6IEFkZGVk
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuanM6CisgICAgICAgIChBdXRvbWF0aW9uU2Vzc2lvblByb3h5LnByb3RvdHlwZS5ub2Rl
Rm9ySWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICBQdWJsaWMgbWV0aG9kIHRoYXQgZWF0cyB0
aGUgZXhjZXB0aW9uIHRocm93biBieSB0aGUgcHJpdmF0ZSBtZXRob2QuCisKIDIwMTYtMDMtMTcg
IEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246
IGltcGxlbWVudCBBdXRvbWF0aW9uLm1vdmVNb3VzZUN1cnNvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKaW5kZXggZjM3NDY2MjhlYTM5MTcxMDA3ZTA4ZDU1NGMwNGYzZjVhYmNmMzk4NS4uZTA0YTUz
NTljYjQ2ZjkwNjYyNDFkM2MwNjFjMzUyYTFlYTBmOGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCkBAIC0xNjAsNyArMTYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEVs
ZW1lbnQqIGZyYW1lRWxlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgZm9jdXMoYm9vbCBh
bGxvd0ZvY3VzID0gZmFsc2UpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvY3VzKGJv
b2wgYWxsb3dGb2N1cyA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBmb2N1cyhEb2N1bWVudCYpOwog
ICAgICAgICB2b2lkIGJsdXIoKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbG9zZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggMDk5YTVkMTJkMTkwMmYzNjI4MzUxMzIwMTBh
MzZiZWI1M2Q5ZjkwZi4uMmNjYzlmMzdkYzYyM2Q2YmYxMTI2MzNiNGQ3ZGNlZGY2YmM0MDYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC04MCw4ICs4MCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSYgdG9wKCkgY29uc3Q7CiAKLSAg
ICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICAgICAg
RnJhbWUqIHNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCkgY29u
c3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lKiBzY29wZWRDaGlsZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBzY29wZWRDaGlsZENvdW50
KCkgY29uc3Q7CiAKICAgICAgICAgdW5zaWduZWQgaW5kZXhJblBhcmVudCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5q
c29uIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29u
CmluZGV4IDg5YzBiODNkMWExOGMyODY5M2Q1MWRhZTE3Y2Q4NDdhZTMwYjU4NjUuLjU0ODU4MzA2
OGM1NzM3YTI5Y2FjZTVkZWI1YzJiZDJjZWYwMDI0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTMyLDYgKzMyLDE2
IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQW4gb3BhcXVlIGlkZW50aWZpZXIgZm9y
IGEgYnJvd3NpbmcgY29udGV4dC4iCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAgICAgICAgICAg
ICJpZCI6ICJGcmFtZUhhbmRsZSIsCisgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciBhIGZyYW1l
IGluIGEgcGFnZS4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJO
b2RlSGFuZGxlIiwKKyAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiQW4gb3BhcXVlIGlkZW50aWZpZXIgZm9yIGEgbm9kZSBpbiBhIHBhZ2Uu
IgorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiRXJyb3JNZXNzYWdl
IiwKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiVGhpcyBlbnVtIGNvbnRhaW5zIHByZWRlZmluZWQgZXJyb3IgbWVzc2FnZXMgdGhhdCBj
YW4gYmUgdXNlZCB0byBzaWduYWwgYSB3ZWxsLWRlZmluZWQgZXJyb3IgY29uZGl0aW9uLCBzdWNo
IGFzIGEgbWlzc2luZyBpbXBsZW1lbnRhdGlvbiwgdW5rbm93biB3aW5kb3cgaGFuZGxlLCBhbmQg
c28gZm9ydGguIFRoZSBiYWNrZW5kIHNpZ25hbHMgb25lIG9mIHRoZXNlIGVycm9ycyBieSB1c2lu
ZyBpdCBhcyBhIHByZWZpeCBvZiB0aGUgY29tbWFuZHMncyBlcnJvciBtZXNzYWdlICh0aGUgZXJy
b3JTdHJpbmcgYXJndW1lbnQgaW4gZ2VuZXJhdGVkIEMrKyBiYWNrZW5kIGRpc3BhdGNoZXJzKS4g
VGhpcyB3aWxsIGJlIHJlcG9ydGVkIHRvIHRoZSBmcm9udGVuZCBhcyBhIHByb3RvY29sIGVycm9y
IHdpdGggYSBKU09OLVJQQyBlcnJvciBjb2RlIG9mICdTZXJ2ZXJFcnJvcicuIEl0IGlzIHVwIHRv
IHRoZSBmcm9udGVuZCB3aGV0aGVyIGFuZCBob3cgdG8gZGVhbCB3aXRoIGVycm9ycy4iLApAQCAt
MzksNiArNDksNyBAQAogICAgICAgICAgICAgICAgICJJbnRlcm5hbEVycm9yIiwKICAgICAgICAg
ICAgICAgICAiSmF2YVNjcmlwdEVycm9yIiwKICAgICAgICAgICAgICAgICAiV2luZG93Tm90Rm91
bmQiLAorICAgICAgICAgICAgICAgICJGcmFtZU5vdEZvdW5kIiwKICAgICAgICAgICAgICAgICAi
Tm9kZU5vdEZvdW5kIiwKICAgICAgICAgICAgICAgICAiTm90SW1wbGVtZW50ZWQiLAogICAgICAg
ICAgICAgICAgICJNaXNzaW5nUGFyYW1ldGVyIiwKQEAgLTkyLDkgKzEwMywxMCBAQAogICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJzd2l0Y2hUb0Jyb3dzaW5nQ29u
dGV4dCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWN0aXZhdGVzIHRoZSBzcGVjaWZp
ZWQgYnJvd3NpbmcgY29udGV4dC4iLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFjdGl2
YXRlcyB0aGUgc3BlY2lmaWVkIGJyb3dzaW5nIGNvbnRleHQgYW5kIG9wdGlvbmFsIGZyYW1lLCB3
aGljaCBnaXZlcyB0aGVtIGZvY3VzIChjYXVzaW5nIHRoZSAnZm9jdXMnIERPTSBldmVudCB0byBm
aXJlLCBhbmQgJ2JsdXInIERPTSBldmVudCB0byBmaXJlIGZvciB0aGUgcHJldmlvdXMgYnJvd3Np
bmcgY29udGV4dCBhbmQgZnJhbWUpLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4
dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29u
dGV4dCB0aGF0IHNob3VsZCBiZSBtYWRlIGFjdGl2ZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhh
bmRsZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4
dCB0aGF0IHNob3VsZCBiZSBtYWRlIGZvY3VzZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZnJhbWVIYW5kbGUiLCAiJHJlZiI6ICJGcmFtZUhhbmRsZSIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgZnJhbWUgdGhhdCBzaG91bGQg
YmUgZm9jdXNlZC4gRGVmYXVsdHMgdG8gdGhlIG1haW4gZnJhbWUgaWYgb21pdHRlZC4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpAQCAtMTQ2LDcgKzE1OCw4IEBACiAg
ICAgICAgICAgICAibmFtZSI6ICJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiIsCiAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiRXZhbHVhdGVzIGEgc2NyaXB0IGZ1bmN0aW9uIGluIGEgYnJv
d3NpbmcgY29udGV4dCBhbmQgY2FsbHMgaXQgd2l0aCB0aGUgc3VwcGxpZWQgYXJndW1lbnRzLiIs
CiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGUgc2NyaXB0IHNob3VsZCBi
ZSBldmFsdWF0ZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJvd3NpbmdDb250
ZXh0SGFuZGxlIiwgIiRyZWYiOiAiQnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9u
IjogIlRoZSBoYW5kbGUgZm9yIHRoZSBicm93c2luZyBjb250ZXh0IHRoZSBzY3JpcHQgc2hvdWxk
IGJlIGV2YWx1YXRlZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUhhbmRs
ZSIsICIkcmVmIjogIkZyYW1lSGFuZGxlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSBoYW5kbGUgZm9yIHRoZSBmcmFtZSB0aGUgc2NyaXB0IHNob3VsZCBiZSBldmFsdWF0
ZWQuIFRoZSBtYWluIGZyYW1lIGlzIHVzZWQgaWYgdGhpcyBwYXJhbWV0ZXIgZW1wdHkgc3RyaW5n
IG9yIGV4Y2x1ZGVkLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9uIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBzY3JpcHQgdG8gZXZhbHVhdGUg
aW4gdGhlIGJyb3dzaW5nIGNvbnRleHQuIEl0IG11c3QgYmUgYSBmdW5jdGlvbiByZXN1bHQuIiB9
LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXJndW1lbnRzIiwgInR5cGUiOiAiYXJyYXki
LCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwgImRlc2NyaXB0aW9uIjogIlRoZSBhcmd1
bWVudHMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24gd2hlbiBjYWxsZWQuIFRoZXkgd2lsbCBiZSBw
YXJzZWQgYXMgSlNPTiBiZWZvcmUgY2FsbGluZyB0aGUgZnVuY3Rpb24uIiB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCIsICJ0eXBl
IjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhlIGZ1bmN0aW9uIGV4cGVjdHMgYSBjYWxs
YmFjayBmdW5jdGlvbiBhcyB0aGUgbGFzdCBhcmd1bWVudC4gSXQgaXMgZXhwZWN0ZWQgdG8gY2Fs
bCB0aGlzIGNhbGxiYWNrIHdpdGggYSByZXN1bHQuIiB9CkBAIC0xNjYsNiArMTc5LDMzIEBACiAg
ICAgICAgICAgICAicmV0dXJucyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBvc2l0
aW9uIiwgIiRyZWYiOiAiUG9pbnQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGN1cnJlbnQgcG9zaXRp
b24gZm9yIHRoZSBtb3VzZSBjdXJzb3IsIHNwZWNpZmllZCBpbiB2aWV3cG9ydCBjb29yZGluYXRl
cy4iIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAg
Im5hbWUiOiAicmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUiLAorICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkRldGVybWluZXMgdGhlIDxjb2RlPkZyYW1lSGFuZGxlPC9jb2RlPiBiYXNlZCBvbiB0
aGUgb3JkaW5hbCwgbmFtZSBvciBub2RlIGhhbmRsZSBvZiBhIGNoaWxkIGZyYW1lLiIsCisgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJyb3dz
aW5nQ29udGV4dEhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCBpbiB3aGljaCB0
byBzZWFyY2ggZm9yIHRoZSBmcmFtZS4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJm
cmFtZUhhbmRsZSIsICIkcmVmIjogIkZyYW1lSGFuZGxlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRoZSBmcmFtZSBpbiB3aGljaCB0byBzZWFyY2gg
Zm9yIHRoZSBmcmFtZS4gVGhlIG1haW4gZnJhbWUgaXMgdXNlZCBpZiB0aGlzIHBhcmFtZXRlciBl
bXB0eSBzdHJpbmcgb3IgZXhjbHVkZWQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
b3JkaW5hbCIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiVGhlIG9yZGluYWwgb2YgdGhlIGNoaWxkIGZyYW1lIHRvIHJlc29sdmUgYXMgYSA8Y29k
ZT5GcmFtZUhhbmRsZTwvY29kZT4uIFRoaXMgaXMgYW5hbG9nb3VzIHRvICd3aW5kb3cuZnJhbWVz
W29yZGluYWxdJyBpbiBKYXZhU2NyaXB0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVGhlIG5hbWUgb2YgdGhlIGNoaWxkIGZyYW1lIHRvIHJlc29sdmUgYXMgYSA8Y29kZT5GcmFt
ZUhhbmRsZTwvY29kZT4uIFRoaXMgaXMgYW5hbG9nb3VzIHRvICd3aW5kb3cuZnJhbWVzW25hbWVd
JyBpbiBKYXZhU2NyaXB0LiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVIYW5k
bGUiLCAiJHJlZiI6ICJOb2RlSGFuZGxlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSBoYW5kbGUgb2YgdGhlIGNoaWxkIGZyYW1lIG93bmVyIGVsZW1lbnQgdG8gcmVzb2x2
ZSBhcyBhIDxjb2RlPkZyYW1lSGFuZGxlPC9jb2RlPi4iIH0KKyAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIs
ICIkcmVmIjogIkZyYW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSA8Y29kZT5GcmFtZUhh
bmRsZTwvY29kZT4gZm9yIHRoZSByZXF1ZXN0ZWQgZnJhbWUuIiB9CisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUiLAorICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIkRldGVybWluZXMgdGhlIDxjb2RlPkZyYW1lSGFuZGxlPC9jb2RlPiBmb3Ig
dGhlIHBhcmVudCBmcmFtZSBvZiB0aGUgc3VwcGxpZWQgPGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+
LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJyb3dzaW5nQ29udGV4dEhhbmRsZSIsICIkcmVmIjogIkJyb3dzaW5nQ29udGV4dEhhbmRs
ZSIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGFuZGxlIGZvciB0aGUgYnJvd3NpbmcgY29udGV4dCB0
aGUgZnJhbWUgaXMgbG9jYXRlZC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFt
ZUhhbmRsZSIsICIkcmVmIjogIkZyYW1lSGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5k
bGUgZm9yIHRoZSBmcmFtZSB0aGF0IHNob3VsZCByZXNvbHZlIGl0cyBwYXJlbnQgZnJhbWUuIiB9
CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXN1bHQiLCAiJHJlZiI6ICJGcmFtZUhhbmRsZSIsICJkZXNjcmlwdGlv
biI6ICJUaGUgPGNvZGU+RnJhbWVIYW5kbGU8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGZyYW1l
LiIgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKICAgICAgICAg
fQogICAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBjODFhZTRhMWQ2YTBkZTFj
NjExNDNhZGU5ZjBiYTliYjJiMjUyYjA4Li5mNDVkMWUxZGFlZmZiOGU2MDQ0NGJiMWU5MzQ1MGVj
MmMzNTEyZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
U3RyaW5nIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpoYW5kbGVGb3JXZWJQYWdlUHJveHkoY29uc3Qg
V2ViUGFnZVByb3h5JiB3ZWJQYWdlUHIKICAgICBpZiAoaXRlciAhPSBtX3dlYlBhZ2VIYW5kbGVN
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKIAotICAgIFN0cmluZyBoYW5k
bGUgPSBXZWJDb3JlOjpjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuY29udmVydFRvQVNDSUlV
cHBlcmNhc2UoKTsKKyAgICBTdHJpbmcgaGFuZGxlID0gInBhZ2UtIiArIFdlYkNvcmU6OmNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOwogCiAgICAg
YXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViUGFnZUhhbmRsZU1hcC5hZGQod2ViUGFnZVByb3h5
LnBhZ2VJRCgpLCBoYW5kbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZpcnN0QWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwpAQCAtMTQzLDYgKzE0Myw1NCBAQCBTdHJpbmcgV2ViQXV0b21hdGlvblNlc3Np
b246OmhhbmRsZUZvcldlYlBhZ2VQcm94eShjb25zdCBXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcgog
ICAgIHJldHVybiBoYW5kbGU7CiB9CiAKK1dlYkZyYW1lUHJveHkqIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjp3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKGNvbnN0IFN0cmluZyYgaGFuZGxlLCBXZWJQYWdl
UHJveHkmIHBhZ2UpCit7CisgICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBwYWdlLm1haW5GcmFtZSgpOworCisgICAgYXV0byBpdGVyID0gbV9oYW5kbGVXZWJGcmFtZU1h
cC5maW5kKGhhbmRsZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9oYW5kbGVXZWJGcmFtZU1hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoV2ViRnJhbWVQcm94eSogZnJh
bWUgPSBwYWdlLnByb2Nlc3MoKS53ZWJGcmFtZShpdGVyLT52YWx1ZSkpCisgICAgICAgIHJldHVy
biBmcmFtZTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCitTdHJpbmcgV2ViQXV0b21hdGlv
blNlc3Npb246OmhhbmRsZUZvcldlYkZyYW1lSUQodWludDY0X3QgZnJhbWVJRCkKK3sKKyAgICBp
ZiAoIWZyYW1lSUQpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgZm9yIChh
dXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYg
KFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCkpIHsKKyAg
ICAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
CisgICAgYXV0byBpdGVyID0gbV93ZWJGcmFtZUhhbmRsZU1hcC5maW5kKGZyYW1lSUQpOworICAg
IGlmIChpdGVyICE9IG1fd2ViRnJhbWVIYW5kbGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBp
dGVyLT52YWx1ZTsKKworICAgIFN0cmluZyBoYW5kbGUgPSAiZnJhbWUtIiArIFdlYkNvcmU6OmNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOworCisg
ICAgYXV0byBmaXJzdEFkZFJlc3VsdCA9IG1fd2ViRnJhbWVIYW5kbGVNYXAuYWRkKGZyYW1lSUQs
IGhhbmRsZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZmlyc3RBZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CisKKyAgICBhdXRvIHNlY29uZEFkZFJlc3VsdCA9IG1faGFuZGxlV2ViRnJhbWVNYXAuYWRkKGhh
bmRsZSwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2Vjb25kQWRkUmVzdWx0LmlzTmV3
RW50cnkpOworCisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworU3RyaW5nIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpoYW5kbGVGb3JXZWJGcmFtZVByb3h5KGNvbnN0IFdlYkZyYW1lUHJveHkmIHdlYkZy
YW1lUHJveHkpCit7CisgICAgcmV0dXJuIGhhbmRsZUZvcldlYkZyYW1lSUQod2ViRnJhbWVQcm94
eS5mcmFtZUlEKCkpOworfQorCiBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6QnJvd3NpbmdDb250ZXh0PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YnVpbGRCcm93c2luZ0Nv
bnRleHRGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKICAgICBXZWJDb3JlOjpGbG9hdFJl
Y3Qgd2luZG93RnJhbWU7CkBAIC0yMjIsMTcgKzI3MCwyMSBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpjbG9zZUJyb3dzaW5nQ29udGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0CiAgICAgcGFnZS0+Y2xvc2VQYWdlKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGhhbmRsZSkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRj
aFRvQnJvd3NpbmdDb250ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRs
ZSkKIHsKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoaGFu
ZGxlKTsKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUoYnJv
d3NpbmdDb250ZXh0SGFuZGxlKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9Q
UkVERUZJTkVEX0VSUk9SX01FU1NBR0UoV2luZG93Tm90Rm91bmQpOwogCi0gICAgbV9hY3RpdmVC
cm93c2luZ0NvbnRleHRIYW5kbGUgPSBoYW5kbGU7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUg
PSB3ZWJGcmFtZVByb3h5Rm9ySGFuZGxlKG9wdGlvbmFsRnJhbWVIYW5kbGUgPyAqb3B0aW9uYWxG
cmFtZUhhbmRsZSA6IGVtcHR5U3RyaW5nKCksICpwYWdlKTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKEZyYW1lTm90Rm91bmQpOwor
CisgICAgLy8gRklYTUU6IFdlIGRvbid0IG5lZWQgdG8gdHJhY2sgdGhpcyBpbiBXSzIuIFJlbW92
ZSBpbiBhIGZvbGxvdyB1cC4KKyAgICBtX2FjdGl2ZUJyb3dzaW5nQ29udGV4dEhhbmRsZSA9IGJy
b3dzaW5nQ29udGV4dEhhbmRsZTsKIAotICAgIC8vIEZJWE1FOiBWZXJpZnkgdGhpcyBpcyBlbm91
Z2guIFdlIHN0aWxsIG1pZ2h0IHdhbnQgdG8gZ28gdGhyb3VnaCB0aGUgQXV0b21hdGlvblNlc3Np
b25DbGllbnQKLSAgICAvLyB0byBnZXQgY2xvc2VyIGEgdXNlciBwcmVzc2luZyBmb2N1c2luZyB0
aGUgd2luZG93IC8gcGFnZS4KICAgICBwYWdlLT5zZXRGb2N1cyh0cnVlKTsKKyAgICBwYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Rm9jdXNG
cmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QmIHNpemVPYmplY3QpCkBAIC0zNDcsMTMgKzM5OSwxNiBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYgZXJyb3JTdAogICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50
QmxvY2tlcnNFbmFibGVkKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5JiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2Fs
bGJhY2tBcmd1bWVudCwgUmVmPEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpldmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbihJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFtZUhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSYgYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIFJlZjxF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAgIC8v
IEZJWE1FIDI0MTcyNDM5OiBUaGlzIHNob3VsZCBiZSBhIGZyYW1lIGhhbmRsZSwgbm90IGEgcGFn
ZSBoYW5kbGUuIENoYW5nZSB0aGlzIG9uY2Ugd2UgaGF2ZSBmcmFtZSBzdXBwb3J0LgotICAgIFdl
YlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShoYW5kbGUpOworICAgIFdl
YlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRI
YW5kbGUpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CiAKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IHdlYkZyYW1lUHJveHlGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZy
YW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSwgKnBhZ2UpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoRnJhbWVOb3RGb3VuZCk7CisK
ICAgICBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHNWZWN0b3I7CiAgICAgYXJndW1lbnRzVmVjdG9y
LnJlc2VydmVDYXBhY2l0eShhcmd1bWVudHMubGVuZ3RoKCkpOwogCkBAIC0zNjYsNyArNDIxLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
SW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXIKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9u
ZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb25DYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
IAotICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihwYWdlLT5tYWluRnJhbWUoKS0+ZnJh
bWVJRCgpLCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBlY3RzSW1wbGljaXRDYWxsYmFj
a0FyZ3VtZW50LCBjYWxsYmFja0lEKSwgMCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKGZyYW1lLT5mcmFtZUlEKCksIGZ1bmN0aW9uLCBhcmd1bWVudHNWZWN0b3IsIGV4cGVjdHNJ
bXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3Qg
Y2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBl
KQpAQCAtNDI0LDQgKzQ3OSw3OCBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bVNpbXVsYXRlTW91c2VNb3ZlRXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZQogfQogI2VuZGlm
IC8vICFVU0UoQVBQS0lUKQogCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlQ2hp
bGRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFt
ZUhhbmRsZSwgY29uc3QgaW50KiBvcHRpb25hbE9yZGluYWwsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxOYW1lLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTm9kZUhhbmRsZSwgUmVmPFJlc29sdmVDaGls
ZEZyYW1lSGFuZGxlQ2FsbGJhY2s+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFvcHRpb25hbE9y
ZGluYWwgJiYgIW9wdGlvbmFsTmFtZSAmJiAhb3B0aW9uYWxOb2RlSGFuZGxlKQorICAgICAgICBG
QUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKE1pc3NpbmdQYXJhbWV0ZXIpOworCisg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZVByb3h5Rm9ySGFuZGxlKGJyb3dzaW5nQ29u
dGV4dEhhbmRsZSk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUl9NRVNTQUdFKFdpbmRvd05vdEZvdW5kKTsKKworICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gd2ViRnJhbWVQcm94eUZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlv
bmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpLCAqcGFnZSk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfTUVTU0FHRShGcmFtZU5vdEZvdW5k
KTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRSZXNvbHZlRnJhbWVDYWxsYmFj
a0lEKys7CisgICAgbV9yZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrcy5zZXQoY2FsbGJh
Y2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgaWYgKG9wdGlvbmFsTm9kZUhhbmRsZSkg
eworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6UmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShmcmFtZS0+ZnJhbWVJ
RCgpLCAqb3B0aW9uYWxOb2RlSGFuZGxlLCBjYWxsYmFja0lEKSwgMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAob3B0aW9uYWxOYW1lKSB7CisgICAgICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hp
bGRGcmFtZVdpdGhOYW1lKGZyYW1lLT5mcmFtZUlEKCksICpvcHRpb25hbE5hbWUsIGNhbGxiYWNr
SUQpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChvcHRpb25hbE9yZGlu
YWwpIHsKKyAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OlJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoZnJhbWUtPmZyYW1l
SUQoKSwgKm9wdGlvbmFsT3JkaW5hbCwgY2FsbGJhY2tJRCksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OmRpZFJlc29sdmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQoreworICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX3Jlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJ
RCk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFlcnJv
clR5cGUuaXNFbXB0eSgpKQorICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3JUeXBl
KTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhoYW5kbGVGb3JXZWJG
cmFtZUlEKGZyYW1lSUQpKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2
ZVBhcmVudEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhh
bmRsZSwgUmVmPFJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQor
eworICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2lu
Z0NvbnRleHRIYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgRkFJTF9XSVRIX1BSRURF
RklORURfRVJST1JfTUVTU0FHRShXaW5kb3dOb3RGb3VuZCk7CisKKyAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IHdlYkZyYW1lUHJveHlGb3JIYW5kbGUoZnJhbWVIYW5kbGUsICpwYWdlKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdF
KEZyYW1lTm90Rm91bmQpOworCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fbmV4dFJlc29s
dmVQYXJlbnRGcmFtZUNhbGxiYWNrSUQrKzsKKyAgICBtX3Jlc29sdmVQYXJlbnRGcmFtZUhhbmRs
ZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJl
c29sdmVQYXJlbnRGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgMCk7Cit9CisK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRf
dCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkK
K3sKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9yZXNvbHZlUGFyZW50RnJhbWVIYW5kbGVDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIWVycm9yVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIGNhbGxiYWNrLT5zZW5k
RmFpbHVyZShlcnJvclR5cGUpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNj
ZXNzKGhhbmRsZUZvcldlYkZyYW1lSUQoZnJhbWVJRCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDA4NzI4NTg4ODYyMzlmNjhmODY0YzhkYjk5
ZTU5ZjEyYTA0NTE4NTUuLmFmNTZjYTMyMjg5NjQ1YTgyZGZlNGFlM2I5NWQ1Y2Y3NWRhN2RhMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBJbnRQb2ludDsK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDsK
K2NsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKIApAQCAtNjAsOSArNjEsNiBAQCBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBm
aW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dAogICAg
ICwgcHVibGljIEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgog
ewogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBXZWJQYWdl
SGFuZGxlTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBIYW5kbGVX
ZWJQYWdlTWFwOwotCiAgICAgV2ViQXV0b21hdGlvblNlc3Npb24oKTsKICAgICB+V2ViQXV0b21h
dGlvblNlc3Npb24oKTsKIApAQCAtNzEsOCArNjksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
ZXNzaW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKSB7IG1fc2Vz
c2lvbklkZW50aWZpZXIgPSBzZXNzaW9uSWRlbnRpZmllcjsgfQogICAgIFN0cmluZyBzZXNzaW9u
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklkZW50aWZpZXI7IH0KIAotICAg
IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9jZXNzUG9vbDsgfQotICAgIHZvaWQgc2V0UHJvY2Vzc1Bvb2woV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCopOworICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvY2Vzc1Bvb2w7IH0KKyAgICB2b2lkIHNldFByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29s
Kik7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAvLyBJbnNwZWN0b3I6OlJl
bW90ZUF1dG9tYXRpb25UYXJnZXQgQVBJCkBAIC04NywyMCArODUsMjYgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0QnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdD
b250ZXh0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlQnJvd3NpbmdDb250ZXh0KEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlQnJv
d3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN3aXRjaFRvQnJvd3Np
bmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyb3dzaW5n
Q29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbEZyYW1lSGFuZGxlKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlc2l6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3QmIHNpemUpIG92ZXJyaWRlOwogICAgIHZvaWQgbW92ZVdpbmRvd09mQnJvd3NpbmdD
b250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHBvc2l0aW9uKSBvdmVycmlkZTsKICAgICB2
b2lkIG5hdmlnYXRlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z29CYWNrSW5Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoSW5z
cGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVsb2FkQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgYXJndW1lbnRzLCBib29s
IGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRp
b25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2Fs
bGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
SW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFu
ZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGFyZ3VtZW50cywgYm9vbCBl
eHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9u
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbkNhbGxi
YWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIG1vdmVNb3VzZUN1cnNvcihJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QmIHJlcXVlc3RlZFBvc2l0aW9uLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6UG9pbnQ+JiB1c2VkUG9zaXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgcmVzb2x2ZUNo
aWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJv
d3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsRnJhbWVIYW5kbGUsIGNv
bnN0IGludCogb3B0aW9uYWxPcmRpbmFsLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsTmFtZSwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbE5vZGVIYW5kbGUsIFJlZjxSZXNvbHZlQ2hpbGRGcmFtZUhhbmRs
ZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZUhhbmRs
ZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIGNvbnN0IFN0cmluZyYgZnJhbWVIYW5kbGUsIFJlZjxSZXNvbHZlUGFyZW50RnJhbWVI
YW5kbGVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0OjpXZWJQ
YWdlUHJveHkqIHdlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsKKyAgICBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2VQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJp
bmcgaGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYpOwogCisgICAgV2Vi
RnJhbWVQcm94eSogd2ViRnJhbWVQcm94eUZvckhhbmRsZShjb25zdCBTdHJpbmcmLCBXZWJQYWdl
UHJveHkmKTsKKyAgICBTdHJpbmcgaGFuZGxlRm9yV2ViRnJhbWVJRCh1aW50NjRfdCBmcmFtZUlE
KTsKKyAgICBTdHJpbmcgaGFuZGxlRm9yV2ViRnJhbWVQcm94eShjb25zdCBXZWJGcmFtZVByb3h5
Jik7CisKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3Np
bmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2UoV2ViUGFnZVByb3h5Jik7CiAK
ICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0b21hdGlvblNlc3Npb25NZXNz
YWdlUmVjZWl2ZXIuY3BwCkBAIC0xMDgsMjQgKzExMiwzNSBAQCBwcml2YXRlOgogCiAgICAgLy8g
Q2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uIG1lc3NhZ2VzCiAgICAgdm9pZCBkaWRFdmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcm
IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOworICAgIHZvaWQgZGlkUmVzb2x2ZUNo
aWxkRnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBlcnJvclR5cGUpOworICAgIHZvaWQgZGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsK
IAogICAgIC8vIFBsYXRmb3JtLXNwZWNpZmljIGhlbHBlciBtZXRob2RzLgogICAgIHZvaWQgcGxh
dGZvcm1TaW11bGF0ZU1vdXNlTW92ZShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgdmlld1Bvc2l0aW9uKTsKIAotICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIG1fcHJv
Y2Vzc1Bvb2wgeyBudWxscHRyIH07CisgICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2wg
eyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+IG1fY2xpZW50OwogICAgIFN0cmluZyBtX3Nlc3Npb25JZGVudGlmaWVyIHsgQVNDSUlM
aXRlcmFsKCJVbnRpdGxlZCBTZXNzaW9uIikgfTsKICAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVu
ZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0
aW9uQmFja2VuZERpc3BhdGNoZXI+IG1fZG9tYWluRGlzcGF0Y2hlcjsKIAotICAgIFdlYlBhZ2VI
YW5kbGVNYXAgbV93ZWJQYWdlSGFuZGxlTWFwOwotICAgIEhhbmRsZVdlYlBhZ2VNYXAgbV9oYW5k
bGVXZWJQYWdlTWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJQYWdlSGFu
ZGxlTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJQYWdlTWFw
OwogICAgIFN0cmluZyBtX2FjdGl2ZUJyb3dzaW5nQ29udGV4dEhhbmRsZTsKIAorICAgIEhhc2hN
YXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJGcmFtZUhhbmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0
cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2ViRnJhbWVNYXA7CisKICAgICB1aW50NjRfdCBtX25l
eHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2s+PiBtX2V2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uQ2FsbGJhY2tzOwogCisgICAgdWludDY0X3QgbV9uZXh0UmVzb2x2ZUZyYW1lQ2Fs
bGJhY2tJRCB7IDEgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpB
dXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXNvbHZlQ2hpbGRGcmFtZUhhbmRs
ZUNhbGxiYWNrPj4gbV9yZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrczsKKworICAgIHVp
bnQ2NF90IG1fbmV4dFJlc29sdmVQYXJlbnRGcmFtZUNhbGxiYWNrSUQgeyAxIH07CisgICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+PiBtX3Jlc29sdmVQ
YXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrczsKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX3JlbW90ZUNoYW5uZWwgeyBudWxs
cHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KaW5k
ZXggYjg2OGRkMGMwNmM0MmFlNmFjMjBhNzRiOGYzODVhOTFlNWM5N2ZlNi4uODUyZmY4NTk4OTc4
M2ZjOWJjMDc2OTNmOTFlYWZlMTRlZjQ0Mjc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24ubWVzc2FnZXMuaW4KQEAgLTIyLDQgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViQXV0b21h
dGlvblNlc3Npb24gewogICAgIERpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIFN0cmluZyByZXN1bHQsIFN0cmluZyBlcnJvclR5cGUpCisKKyAgICBEaWRS
ZXNvbHZlQ2hpbGRGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgZXJyb3JUeXBlKQorICAgIERpZFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBjYWxs
YmFja0lELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZXJyb3JUeXBlKQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGUxODI3NjE5NTcwOGIzYmMyODllNjcwOWQy
MjM4NTYyMTM2MWVhZWMuLmYxNzBjNzE2M2NmNDg0MWEwZWRkNzEwODdmNGU0NWMwNjcxNjUzZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTMzLDkgKzMzLDE3IEBA
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWZQcml2
YXRlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZyYW1l
RWxlbWVudEJhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVudC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VVUlELmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTYxLDYgKzE2OSwzMyBAQCBKU09iamVjdFJlZiBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAg
ICAgcmV0dXJuIHNjcmlwdE9iamVjdDsKIH0KIAorV2ViQ29yZTo6RWxlbWVudCogV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5vZGVIYW5kbGUoV2ViRnJhbWUmIGZyYW1lLCBj
b25zdCBTdHJpbmcmIG5vZGVIYW5kbGUpCit7CisgICAgLy8gRG9uJ3QgdXNlIHNjcmlwdE9iamVj
dEZvckZyYW1lKCkgc2luY2Ugd2UgY2FuIGFzc3VtZSBpZiB0aGUgc2NyaXB0IG9iamVjdAorICAg
IC8vIGRvZXMgbm90IGV4aXN0LCB0aGVyZSBhcmUgbm8gbm9kZXMgbWFwcGVkIHRvIGhhbmRsZXMu
IFVzaW5nIHNjcmlwdE9iamVjdEZvckZyYW1lKCkKKyAgICAvLyB3aWxsIG1ha2UgYSBuZXcgc2Ny
aXB0IG9iamVjdCBpZiBpdCBjYW4ndCBmaW5kIG9uZSwgcHJldmVudGluZyB1cyBmcm9tIHJldHVy
bmluZyBmYXN0LgorICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdCA9IG1fd2ViRnJhbWVTY3Jp
cHRPYmplY3RNYXAuZ2V0KGZyYW1lLmZyYW1lSUQoKSk7CisgICAgaWYgKCFzY3JpcHRPYmplY3Qp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRl
eHQgPSBmcmFtZS5qc0NvbnRleHQoKTsKKworICAgIEpTVmFsdWVSZWYgZnVuY3Rpb25Bcmd1bWVu
dHNbXSA9IHsKKyAgICAgICAgdG9KU1ZhbHVlKGNvbnRleHQsIG5vZGVIYW5kbGUpCisgICAgfTsK
KworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gY2FsbFByb3BlcnR5RnVuY3Rpb24oY29udGV4dCwg
c2NyaXB0T2JqZWN0LCBBU0NJSUxpdGVyYWwoIm5vZGVGb3JJZGVudGlmaWVyIiksIFdURl9BUlJB
WV9MRU5HVEgoZnVuY3Rpb25Bcmd1bWVudHMpLCBmdW5jdGlvbkFyZ3VtZW50cywgbnVsbHB0cik7
CisgICAgSlNPYmplY3RSZWYgZWxlbWVudCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCByZXN1
bHQsIG51bGxwdHIpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvIGVsZW1lbnRXcmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PFdlYkNvcmU6
OkpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpOworICAgIGlmICghZWxlbWVudFdyYXBwZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuICZlbGVtZW50V3JhcHBlci0+d3Jh
cHBlZCgpOworfQorCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogewogICAgIHVpbnQ2NF90IGZyYW1l
SUQgPSBmcmFtZS5mcmFtZUlEKCk7CkBAIC0yMzksNCArMjc0LDEzNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwgMCk7CiB9
CiAKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbCh1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCB1aW50NjRfdCBjYWxs
YmFja0lEKQoreworICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKKworICAgIFdlYkZyYW1lKiBm
cmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlm
ICghZnJhbWUpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJl
c29sdmVDaGlsZEZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJh
bWUgPSBmcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpIHsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNhbGxi
YWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVGcmFtZS0+
dHJlZSgpLnNjb3BlZENoaWxkKG9yZGluYWwpOworICAgIGlmICghY29yZUNoaWxkRnJhbWUpIHsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZy
YW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFdlYkZyYW1lKiBjaGlsZEZyYW1lID0gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1lKTsKKyAgICBpZiAoIWNoaWxkRnJhbWUpIHsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1l
KGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNv
bHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCBjaGlsZEZyYW1lLT5mcmFtZUlEKCksIGVtcHR5U3Ry
aW5nKCkpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
bm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBTdHJpbmcgZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVl
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RG
b3VuZCk7CisKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCAwLCBm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBXZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpm
cmFtZSwgbm9kZUhhbmRsZSk7CisgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAhY29yZUVsZW1lbnQt
PmlzRnJhbWVFbGVtZW50QmFzZSgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpEaWRSZXNvbHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5k
RXJyb3JUeXBlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpG
cmFtZSogY29yZUZyYW1lRnJvbUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRnJh
bWVFbGVtZW50QmFzZSo+KGNvcmVFbGVtZW50KS0+Y29udGVudEZyYW1lKCk7CisgICAgaWYgKCFj
b3JlRnJhbWVGcm9tRWxlbWVudCkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkUmVzb2x2ZUNoaWxkRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVy
cm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViRnJhbWUqIGZy
YW1lRnJvbUVsZW1lbnQgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUZyYW1lRnJvbUVs
ZW1lbnQpOworICAgIGlmICghZnJhbWVGcm9tRWxlbWVudCkgeworICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUNoaWxkRnJhbWUoY2FsbGJhY2tJRCwgMCwg
ZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNh
bGxiYWNrSUQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSwgZW1wdHlTdHJpbmcoKSksIDAp
OworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE5hbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCBj
YWxsYmFja0lEKQoreworICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKKworICAgIFdlYkZyYW1l
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOworICAg
IGlmICghZnJhbWUpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRp
ZFJlc29sdmVDaGlsZEZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUp
LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
RnJhbWUgPSBmcmFtZS0+Y29yZUZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpIHsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNh
bGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVGcmFt
ZS0+dHJlZSgpLnNjb3BlZENoaWxkKG5hbWUpOworICAgIGlmICghY29yZUNoaWxkRnJhbWUpIHsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZy
YW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFdlYkZyYW1lKiBjaGlsZEZyYW1lID0gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1lKTsKKyAgICBpZiAoIWNoaWxkRnJhbWUpIHsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1l
KGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNv
bHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCBjaGlsZEZyYW1lLT5mcmFtZUlEKCksIGVtcHR5U3Ry
aW5nKCkpLCAwKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZl
UGFyZW50RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAg
ICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Omdl
dEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CisKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKSB7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlUGFyZW50RnJh
bWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgV2ViRnJhbWUqIHBhcmVudEZyYW1lID0gZnJhbWUtPnBhcmVu
dEZyYW1lKCk7CisgICAgaWYgKCFwYXJlbnRGcmFtZSkgeworICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZVBhcmVudEZyYW1lKGNhbGxiYWNrSUQsIDAsIGZy
YW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlUGFyZW50RnJhbWUoY2Fs
bGJhY2tJRCwgcGFyZW50RnJhbWUtPmZyYW1lSUQoKSwgZW1wdHlTdHJpbmcoKSksIDApOworfQor
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUodWludDY0X3QgZnJh
bWVJRCkKK3sKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlm
ICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpEb2N1bWVudCog
Y29yZURvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghY29yZURvY3Vt
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpET01XaW5kb3cqIGNvcmVET01X
aW5kb3cgPSBjb3JlRG9jdW1lbnQtPmRvbVdpbmRvdygpOworICAgIGlmICghY29yZURPTVdpbmRv
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29yZURPTVdpbmRvdy0+Zm9jdXModHJ1ZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgK
aW5kZXggOTU3ZGRlNDllN2I5OWYxZWQ1Y2UyMTk1MTQ4ZWJlODZkMDIyMjE0MC4uNDE0MmM5MWNm
ZDJjN2NlOTM4ZjY5NDRjMjc4MWU2YzhhYjFhZmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgRWxlbWVudDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1l
OwpAQCAtNDcsMTIgKzUxLDE4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBKU09iamVjdFJl
ZiBzY3JpcHRPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYpOworICAgIFdlYkNvcmU6OkVsZW1lbnQq
IGVsZW1lbnRGb3JOb2RlSGFuZGxlKFdlYkZyYW1lJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAv
LyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCiAgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3Ry
aW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFs
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZVBhcmVu
dEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
Zm9jdXNGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIFN0cmluZyBtX3Nlc3Npb25JZGVu
dGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzCmluZGV4IDVkZDcwZmEz
ZGJiOTk2YjAzMmZkMGEwNjAzZjUwN2NjZjlmYjJmNjQuLjlmOWY0MzRhYzA4MGZkOTdmMDAzZjc2
ZTYyYWU1YTQ2NjU1ODcxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzCkBA
IC01OSw2ICs1OSwxNSBAQCBsZXQgQXV0b21hdGlvblNlc3Npb25Qcm94eSA9IGNsYXNzIEF1dG9t
YXRpb25TZXNzaW9uUHJveHkKICAgICAgICAgICAgIGNhbGxiYWNrKGZ1bmN0aW9uVmFsdWUuYXBw
bHkobnVsbCwgYXJndW1lbnRWYWx1ZXMpKTsKICAgICB9CiAKKyAgICBub2RlRm9ySWRlbnRpZmll
cihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9ub2RlRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAgfSBjYXRjaCAoZXJy
b3IpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorCiAgICAg
Ly8gUHJpdmF0ZQogCiAgICAgX2pzb25QYXJzZShzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDFkMGY4YWZmYzY4Yzg3ZWFiZjg3
MmI1ZTEyMTFmZjMzNjU3NzcxMDcuLjJhMTY0MmRhYjY0NDVhNTU2MWE3ZDdhNGExM2I3ZmI4N2M1
YzZiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yMSw1ICsyMSwxMiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1
aW50NjRfdCBmcmFtZSwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMs
IGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKKyAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGlj
aXRDYWxsYmFja0FyZ3VtZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQorCisgICAgUmVzb2x2ZUNo
aWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCB1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUo
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
bmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXNvbHZlUGFyZW50RnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKworICAgIEZvY3VzRnJhbWUodWludDY0
X3QgZnJhbWVJRCkKIH0K
</data>
<flag name="review"
          id="299015"
          type_id="1"
          status="+"
          setter="bburg"
    />
    <flag name="commit-queue"
          id="299016"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>