<?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>224014</bug_id>
          
          <creation_ts>2021-03-31 13:42:38 -0700</creation_ts>
          <short_desc>[Win][WK2] Implement IPC::Semaphore to run WebGL in GPU process</short_desc>
          <delta_ts>2021-04-06 10:14:18 -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>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1745759</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-03-31 13:42:38 -0700</bug_when>
    <thetext>[Win][WK2] Implement IPC::Semaphore to run WebGL in GPU process

WebGL canvas tests are failing in WinCairo WK2 layout tests since r274327 enabled GPU process mode for WebKitTestRunner.

  webgl/1.0.3/conformance/canvas/canvas-test.html [ Failure ]
  webgl/1.0.3/conformance/canvas/draw-static-webgl-to-multiple-canvas-test.html [ Failure ]
  webgl/1.0.3/conformance/canvas/draw-webgl-to-canvas-test.html [ Failure ]
  webgl/1.0.3/conformance/canvas/to-data-url-test.html [ Failure ]
  webgl/1.0.3/conformance/context/context-attribute-preserve-drawing-buffer.html [ Failure ]
  webgl/1.0.3/conformance/textures/gl-pixelstorei.html [ Failure ]
  (snipped)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745761</commentid>
    <comment_count>1</comment_count>
      <attachid>424814</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-03-31 13:42:55 -0700</bug_when>
    <thetext>Created attachment 424814
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745962</commentid>
    <comment_count>2</comment_count>
      <attachid>424814</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-01 01:40:59 -0700</bug_when>
    <thetext>Comment on attachment 424814
WIP patch

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

Great stuff. I know it&apos;s WIP, just some ideas.

&gt; Source/WebKit/Platform/IPC/win/IPCSemaphoreWin.cpp:46
&gt; +        m_semaphoreHandle = CreateSemaphoreA(nullptr, 0, 1, getSemaphoreName(m_semaphoreNumber).data());

Would be great if you investigated if it&apos;s possible to create a nameless semaphore and then duplicate handle it to the other process.
I think the support already might exist in AttachmentWin.

&gt; Source/WebKit/Platform/IPC/win/IPCSemaphoreWin.cpp:87
&gt; +    ReleaseSemaphore(m_semaphoreHandle, 1, nullptr);

These could assert maybe that the result is somehow expected

&gt; Source/WebKit/Platform/IPC/win/IPCSemaphoreWin.cpp:119
&gt; +        CloseHandle(m_semaphoreHandle);

need to clear the handle after this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746230</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-01 13:45:12 -0700</bug_when>
    <thetext>Thank you very much. All sound good ideas. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746268</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-01 14:45:45 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #0)
&gt; [Win][WK2] Implement IPC::Semaphore to run WebGL in GPU process
&gt; 
&gt; WebGL canvas tests are failing in WinCairo WK2 layout tests since r274327
&gt; enabled GPU process mode for WebKitTestRunner.

I was wrong. Implementing IPC::Semaphore doesn&apos;t solve those test failures. They are different issue. I will fix those test failures in other bug ticket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746406</commentid>
    <comment_count>5</comment_count>
      <attachid>424994</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-02 00:49:37 -0700</bug_when>
    <thetext>Created attachment 424994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746894</commentid>
    <comment_count>6</comment_count>
      <attachid>424814</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-04 21:29:32 -0700</bug_when>
    <thetext>Comment on attachment 424814
WIP patch

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

&gt;&gt; Source/WebKit/Platform/IPC/win/IPCSemaphoreWin.cpp:87
&gt;&gt; +    ReleaseSemaphore(m_semaphoreHandle, 1, nullptr);
&gt; 
&gt; These could assert maybe that the result is somehow expected

This ReleaseSemaphore can fail as ERROR_TOO_MANY_POSTS because the maximum count of semaphore is 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746895</commentid>
    <comment_count>7</comment_count>
      <attachid>425140</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-04 21:30:41 -0700</bug_when>
    <thetext>Created attachment 425140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746994</commentid>
    <comment_count>8</comment_count>
      <attachid>425140</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-04-05 10:07:37 -0700</bug_when>
    <thetext>Comment on attachment 425140
Patch

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

r=me

Just have some comments on whether or not different guards might be more appropriate here.

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:105
&gt; +#if PLATFORM(COCOA) || PLATFORM(WIN)

Maybe a HAVE(IPC_SEMAPHORE) or something like that?

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:116
&gt; +#if PLATFORM(COCOA) || PLATFORM(WIN)
&gt;  #include &quot;RemoteGraphicsContextGLProxy.h&quot;
&gt;  #endif

Is there a better guard for this? Maybe an `ENABLE_WEBGL_IN_GPU_PROCESS`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747082</commentid>
    <comment_count>9</comment_count>
      <attachid>425140</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-05 13:22:51 -0700</bug_when>
    <thetext>Comment on attachment 425140
Patch

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

Thank you very much.

&gt;&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:105
&gt;&gt; +#if PLATFORM(COCOA) || PLATFORM(WIN)
&gt; 
&gt; Maybe a HAVE(IPC_SEMAPHORE) or something like that?

Will fix in a follow-up patch.

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:116
&gt;&gt;  #endif
&gt; 
&gt; Is there a better guard for this? Maybe an `ENABLE_WEBGL_IN_GPU_PROCESS`

Will consider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747194</commentid>
    <comment_count>10</comment_count>
      <attachid>425140</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-05 17:50:26 -0700</bug_when>
    <thetext>Comment on attachment 425140
Patch

Clearing flags on attachment: 425140

Committed r275463 (236123@main): &lt;https://commits.webkit.org/236123@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747195</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-05 17:50:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747198</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-05 17:51:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/76245142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747497</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-04-06 10:14:18 -0700</bug_when>
    <thetext>*** Bug 223764 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424814</attachid>
            <date>2021-03-31 13:42:55 -0700</date>
            <delta_ts>2021-04-02 00:49:23 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>gpup-webgl.diff</filename>
            <type>text/plain</type>
            <size>21234</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlz
cGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3Bs
YXkuY3BwCmluZGV4IGFmYWQ1MWE3M2FjZi4uYzllN2E3YmY1OWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTEz
Miw3ICsxMzIsNyBAQCBQbGF0Zm9ybURpc3BsYXkmIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpCiB7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIC8vIEFOR0xFIEQzRCByZW5kZXJlciBp
c24ndCB0aHJlYWQtc2FmZS4gRG9uJ3QgZGVzdHJ1Y3QgaXQgb24gbm9uLW1haW4gdGhyZWFkcyB3
aGljaCBjYWxscyBfZXhpdCgpLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgLy8g
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgUGxhdGZvcm1EaXNwbGF5KiBkaXNw
bGF5ID0gY3JlYXRlUGxhdGZvcm1EaXNwbGF5KCkucmVsZWFzZSgpOwogICAgIHJldHVybiAqZGlz
cGxheTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGMwOWRl
NWJkZjBmNy4uMjkzZWRhOGUyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpOwogICAgIHN0YXRpYyBHQ0dMaW50IEVHTERyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAjZWxzZQorICAgIHN0YXRpYyBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNyZWF0ZUZvckdQVVByb2Nlc3MoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJik7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCAxZjAwYTM2ZjRmYmIuLjBjNmU5M2Y4YWVl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAK
QEAgLTEwNSw2ICsxMDUsMTEgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEcKICAgICByZXR1cm4g
Y29udGV4dDsKIH0KIAorUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0woYXR0cmlidXRlcywgbnVsbHB0cikpOworfQorCiAjaWYgVVNFKEFO
R0xFKQogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRH
TChhdHRyaWJ1dGVzLCBzaGFyZWRDb250ZXh0KQpAQCAtMzQ5LDcgKzM1NCw2IEBAIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgIGF1dG8qIGFj
dGl2ZUNvbnRleHQgPSBhY3RpdmVDb250ZXh0cygpLnRha2VMYXN0KFt0aGlzXShhdXRvKiBpdCkg
ewogICAgICAgICByZXR1cm4gaXQgPT0gdGhpczsKICAgICB9KTsKLSAgICBBU1NFUlRfVU5VU0VE
KGFjdGl2ZUNvbnRleHQsICEhYWN0aXZlQ29udGV4dCk7CiB9CiAjZWxzZQogR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcAppbmRleCA2M2JlZTA0NWI0ODQuLjM2OGY1MGJmM2M2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoUmVsZWFz
ZUFsbFJlc291cmNlc0lmVW51c2VkKCkKICNlbmRpZgogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09B
KQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdJTikKIFJlZjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5k
ZXJpbmdCYWNrZW5kLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkK
ICAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQor
I2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdJTikKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4xY2FmYjMzOWJlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpICYmIFBMQVRGT1JNKFdJTikKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4gZmluYWwgOiBwdWJsaWMgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgeworcHVibGljOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMV2luKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJik7CisgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luKCkgZmluYWwgPSBkZWZhdWx0
OworCisgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQg
cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmKSBmaW5hbDsKK307CisKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBh
dHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCit7CisgICAgYXV0byBpbnN0YW5jZSA9
IGFkb3B0UmVmKCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4oZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5k
LCBXVEZNb3ZlKHN0cmVhbSkpKTsKKyAgICBpbnN0YW5jZS0+aW5pdGlhbGl6ZShXVEZNb3ZlKGF0
dHJpYnV0ZXMpKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMV2luOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbihHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiByZW5kZXJpbmdCYWNrZW5kLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
CisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUo
c3RyZWFtKSkKK3sKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbjo6cGxhdGZv
cm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmIGF0dHJpYnV0ZXMpCit7CisgICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoV1RGTW92ZShhdHRyaWJ1dGVzKSk7Cit9CisKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX2NvbnRleHQtPnByZXBh
cmVGb3JEaXNwbGF5KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwCmluZGV4IGU0
MTIxYTRiZWE5Yi4uNDliZWEwNTBmM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0lQQ1NlbWFwaG9yZS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKIAotI2lmICFPUyhEQVJXSU4pCisjaWYgIU9TKERB
UldJTikgJiYgIU9TKFdJTkRPV1MpCiAKIG5hbWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0lQQ1NlbWFwaG9yZS5oCmluZGV4IDg4M2JiMjZiZTdkYi4uOWQ5YzFiZWJk
NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaApAQCAtMzMs
NiArMzMsOCBAQAogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoL3NlbWFwaG9yZS5oPgog
I2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1
ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTUyLDIzICs1NCwy
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRp
YyBPcHRpb25hbDxTZW1hcGhvcmU+IGRlY29kZShEZWNvZGVyJik7CiAKLSNpZiBPUyhEQVJXSU4p
Ci0gICAgZXhwbGljaXQgU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJik7Ci0KICAgICB2b2lkIHNp
Z25hbCgpOwogICAgIHZvaWQgd2FpdCgpOwogICAgIHZvaWQgd2FpdEZvcihUaW1lb3V0KTsKKwor
I2lmIE9TKERBUldJTikKKyAgICBleHBsaWNpdCBTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmKTsK
KwogICAgIE1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJpZ2h0KCkgY29uc3Q7CiAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZFJpZ2h0IHx8IG1fc2VtYXBo
b3JlICE9IFNFTUFQSE9SRV9OVUxMOyB9CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIGV4cGxpY2l0
IFNlbWFwaG9yZSh1bnNpZ25lZCBzZW1hcGhvcmVOdW1iZXIpOwogI2Vsc2UKICAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKIHByaXZh
dGU6Ci0jaWYgT1MoREFSV0lOKQogICAgIHZvaWQgZGVzdHJveSgpOworI2lmIE9TKERBUldJTikK
ICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwogICAgIHNlbWFwaG9yZV90IG1fc2VtYXBo
b3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgSEFORExFIG1f
c2VtYXBob3JlSGFuZGxlIHsgbnVsbHB0ciB9OworICAgIHVuc2lnbmVkIG1fc2VtYXBob3JlTnVt
YmVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDdkNTM0ZmFiYzk1ZS4uMWIzZjY3ODVi
MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBz
aQogCiB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJUEM6
OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIG1fd2FrZVVwU2VtYXBob3JlID0gV1RG
TW92ZShzZW1hcGhvcmUpOwogI2VuZGlmCiAgICAgd2FrZVVwU2VydmVyKCk7CkBAIC00OCw3ICs0
OCw3IEBAIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQ
Qzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQogCiB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246
Ondha2VVcFNlcnZlcigpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCiAgICAgICAg
IG1fd2FrZVVwU2VtYXBob3JlLT5zaWduYWwoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IGUzMjg0MTc5
ZTA4My4uY2ZhNmMwNmYxYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToK
IAogICAgIHNpemVfdCBtX2NsaWVudE9mZnNldCB7IDAgfTsKICAgICBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyIG1fYnVmZmVyOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShXSU4pCiAgICAgT3B0aW9uYWw8U2VtYXBob3JlPiBtX3dha2VVcFNlbWFw
aG9yZTsKICNlbmRpZgogfTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNx
dWlyZQogICAgICAgICB9CiAgICAgICAgIGlmICh0aW1lb3V0LmRpZFRpbWVPdXQoKSkKICAgICAg
ICAgICAgIGJyZWFrOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBQTEFURk9STShXSU4pCiAgICAgICAgIENsaWVudExpbWl0IG9sZENsaWVudExpbWl0ID0gc2hh
cmVkQ2xpZW50TGltaXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoY2xpZW50TGltaXQsIENsaWVu
dExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0
ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwogICAgICAgICBpZiAoY2xpZW50TGltaXQgPT0gb2xk
Q2xpZW50TGltaXQpIHsKICAgICAgICAgICAgIG1fYnVmZmVyLmNsaWVudFdhaXRTZW1hcGhvcmUo
KS53YWl0Rm9yKHRpbWVvdXQpOwpAQCAtMjczLDcgKzI3Myw3IEBAIGlubGluZSBPcHRpb25hbDxT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlB
Y3F1aXJlCiAgICAgLy8gSWYgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdHMsIHNlcnZlciBpcyBndWFy
YW50ZWVkIHRvIHNpZ25hbC4KIAogICAgIGZvciAoOzspIHsKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgICAgICBDbGllbnRMaW1p
dCBjbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkuZXhjaGFuZ2UoQ2xpZW50TGltaXQ6
OmNsaWVudElzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CiAgICAgICAg
IENsaWVudE9mZnNldCBjbGllbnRPZmZzZXQgPSBzaGFyZWRDbGllbnRPZmZzZXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogI2Vsc2UKQEAgLTI4Myw3ICsyODMsNyBAQCBpbmxp
bmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6dHJ5QWNxdWlyZQogICAgICAgICBpZiAoIWNsaWVudExpbWl0ICYmIChjbGllbnRP
ZmZzZXQgPT0gQ2xpZW50T2Zmc2V0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnIHx8ICFjbGllbnRPZmZz
ZXQpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgICAgICBtX2J1ZmZlci5jbGllbnRXYWl0
U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKICNlbHNlCiAgICAgICAgIFRocmVhZDo6eWll
bGQoKTsKQEAgLTI5MSw3ICsyOTEsNyBAQCBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZQogICAgICAg
ICBpZiAodGltZW91dC5kaWRUaW1lT3V0KCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwg
UExBVEZPUk0oV0lOKQogICAgIC8vIEluIGNhc2UgdGhlIHRyYW5zYWN0aW9uIHdhcyBjYW5jZWxs
ZWQsIHVuZG8gdGhlIHRyYW5zYWN0aW9uIG1hcmtlci4KICAgICBzaGFyZWRDbGllbnRMaW1pdCgp
LnN0b3JlKHN0YXRpY19jYXN0PENsaWVudExpbWl0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJfcmVs
ZWFzZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKaW5kZXggMmQyNjJkNDNhOTcyLi42NThlNjQ5
MjRkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgSVBD
IHsKIAogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZShjb25zdCBjaGFyKiBuYW1lKQotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBQTEFURk9STShXSU4pCiAgICAgOiBtX25hbWUobmFtZSkKICNlbmRpZgogewpAQCAt
NjMsNyArNjMsNyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVh
bUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhcwogICAgICAgICBtX2Nvbm5lY3Rp
b25zLnJlbW92ZShjb25uZWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAv
LyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KICAgICB9Ci0jaWYg
UExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAg
ICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKICNlbmRpZgogfQpAQCAtNzEsNyArNzEsNyBA
QCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24o
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhcwogdm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
OjpzdG9wKCkKIHsKICAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOwotI2lmIFBMQVRGT1JNKENPQ09B
KQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAgaWYgKCFtX3Byb2Nl
c3NpbmdUaHJlYWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWdu
YWwoKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpz
dG9wKCkKIAogdm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQogewotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAg
ICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CiAjZW5kaWYKIH0KQEAgLTk0LDcgKzk0LDcg
QEAgSVBDOjpTZW1hcGhvcmUmIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFw
aG9yZSgpCiAKIHZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2lu
Z1RocmVhZCgpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFBMQVRGT1JNKFdJTikKICAgICBpZiAobV9wcm9jZXNzaW5nVGhyZWFkKSB7CiAgICAgICAgIG1f
d2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKaW5k
ZXggODg3MGNiYTBkNmI3Li42NjkwNGY2NmZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKICAgICB2
b2lkIHByb2Nlc3NTdHJlYW1zKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIGNvbnN0IGNoYXIqIGNvbnN0IG1fbmFtZTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNl
cnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDUwN2VjYjRmZGRmYi4uMDA0NzBlMGZmNGIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpyZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKICAgICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRT
aXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOwogICAgIFNlcnZlck9mZnNldCBzZXJ2ZXJPZmZzZXQg
PSBzdGF0aWNfY2FzdDxTZXJ2ZXJPZmZzZXQ+KHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9zZXJ2
ZXJPZmZzZXQpICsgcmVhZFNpemUpKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAgU2VydmVyT2Zmc2V0IG9sZFNlcnZlck9m
ZnNldCA9IHNoYXJlZFNlcnZlck9mZnNldCgpLmV4Y2hhbmdlKHNlcnZlck9mZnNldCwgc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxX3JlbCk7CiAgICAgLy8gSWYgdGhlIGNsaWVudCB3cm90ZSBvdmVyIHNl
cnZlck9mZnNldCwgaXQgbWVhbnMgdGhlIGNsaWVudCBpcyB3YWl0aW5nLgogICAgIGlmIChvbGRT
ZXJ2ZXJPZmZzZXQgPT0gU2VydmVyT2Zmc2V0OjpjbGllbnRJc1dhaXRpbmdUYWcpCkBAIC0xMDYs
NyArMTA2LDcgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXpl
X3QgcmVhZFNpemUpCiB2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlQWxs
KCkKIHsKICAgICBzaGFyZWRTZXJ2ZXJMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PFNlcnZlckxp
bWl0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
CisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICBTZXJ2ZXJPZmZzZXQg
b2xkU2VydmVyT2Zmc2V0ID0gc2hhcmVkU2VydmVyT2Zmc2V0KCkuZXhjaGFuZ2Uoc3RhdGljX2Nh
c3Q8U2VydmVyT2Zmc2V0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CiAgICAgLy8g
SWYgdGhlIGNsaWVudCB3cm90ZSBvdmVyIHNlcnZlck9mZnNldCwgaXQgbWVhbnMgdGhlIGNsaWVu
dCBpcyB3YWl0aW5nLgogICAgIGlmIChvbGRTZXJ2ZXJPZmZzZXQgPT0gU2VydmVyT2Zmc2V0Ojpj
bGllbnRJc1dhaXRpbmdUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy93aW4vSVBDU2VtYXBob3JlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dp
bi9JUENTZW1hcGhvcmVXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYjFlYzYyNWYxMjI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIK
KworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPHd0Zi9IZXhO
dW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBDU3Ry
aW5nIGdldFNlbWFwaG9yZU5hbWUodW5zaWduZWQgdmFsdWUpCit7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIm9yZy53ZWJraXQuaXBjLnNlbS4iLCBoZXgodmFsdWUpKS5hc2NpaSgpOworfQorCitT
ZW1hcGhvcmU6OlNlbWFwaG9yZSgpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsr
KSB7CisgICAgICAgIG1fc2VtYXBob3JlTnVtYmVyID0gd2Vha1JhbmRvbVVpbnQzMigpOworICAg
ICAgICBtX3NlbWFwaG9yZUhhbmRsZSA9IENyZWF0ZVNlbWFwaG9yZUEobnVsbHB0ciwgMCwgMSwg
Z2V0U2VtYXBob3JlTmFtZShtX3NlbWFwaG9yZU51bWJlcikuZGF0YSgpKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9zZW1hcGhvcmVIYW5kbGUpOworICAgICAgICBpZiAoR2V0TGFzdEVycm9y
KCkgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Q2xvc2VIYW5kbGUobV9zZW1hcGhvcmVIYW5kbGUpOworICAgICAgICBtX3NlbWFwaG9yZUhhbmRs
ZSA9IG51bGxwdHI7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUKG1fc2VtYXBob3JlSGFuZGxl
KTsKK30KKworU2VtYXBob3JlOjpTZW1hcGhvcmUodW5zaWduZWQgc2VtYXBob3JlTnVtYmVyKQor
ICAgIDogbV9zZW1hcGhvcmVOdW1iZXIoc2VtYXBob3JlTnVtYmVyKQoreworICAgIG1fc2VtYXBo
b3JlSGFuZGxlID0gT3BlblNlbWFwaG9yZUEoU0VNQVBIT1JFX0FMTF9BQ0NFU1MsIGZhbHNlLCBn
ZXRTZW1hcGhvcmVOYW1lKG1fc2VtYXBob3JlTnVtYmVyKS5kYXRhKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKG1fc2VtYXBob3JlSGFuZGxlKTsKK30KKworU2VtYXBob3JlOjpTZW1hcGhvcmUoU2Vt
YXBob3JlJiYgb3RoZXIpCisgICAgOiBtX3NlbWFwaG9yZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1fc2VtYXBob3JlSGFuZGxlLCBudWxscHRyKSkKKyAgICAsIG1fc2VtYXBob3JlTnVtYmVy
KG90aGVyLm1fc2VtYXBob3JlTnVtYmVyKQoreworfQorCitTZW1hcGhvcmU6On5TZW1hcGhvcmUo
KQoreworICAgIGRlc3Ryb3koKTsKK30KKworU2VtYXBob3JlJiBTZW1hcGhvcmU6Om9wZXJhdG9y
PShTZW1hcGhvcmUmJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAg
ICAgZGVzdHJveSgpOworICAgICAgICBtX3NlbWFwaG9yZUhhbmRsZSA9IHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9zZW1hcGhvcmVIYW5kbGUsIG51bGxwdHIpOworICAgICAgICBtX3NlbWFwaG9yZU51
bWJlciA9IG90aGVyLm1fc2VtYXBob3JlTnVtYmVyOworICAgIH0KKworICAgIHJldHVybiAqdGhp
czsKK30KKwordm9pZCBTZW1hcGhvcmU6OnNpZ25hbCgpCit7CisgICAgUmVsZWFzZVNlbWFwaG9y
ZShtX3NlbWFwaG9yZUhhbmRsZSwgMSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgU2VtYXBob3JlOjp3
YWl0KCkKK3sKKyAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KG1fc2VtYXBob3JlSGFuZGxlLCBJTkZJ
TklURSk7Cit9CisKK3ZvaWQgU2VtYXBob3JlOjp3YWl0Rm9yKFRpbWVvdXQgdGltZW91dCkKK3sK
KyAgICBTZWNvbmRzIHdhaXRUaW1lID0gdGltZW91dC5zZWNvbmRzVW50aWxEZWFkbGluZSgpOwor
ICAgIGF1dG8gbWlsbGlzZWNvbmRzID0gd2FpdFRpbWUubWlsbGlzZWNvbmRzQXM8RFdPUkQ+KCk7
CisgICAgV2FpdEZvclNpbmdsZU9iamVjdChtX3NlbWFwaG9yZUhhbmRsZSwgbWlsbGlzZWNvbmRz
KTsKK30KKwordm9pZCBTZW1hcGhvcmU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9zZW1hcGhvcmVOdW1iZXI7Cit9CisKK09wdGlvbmFsPFNlbWFw
aG9yZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDxkZWNsdHlwZShtX3NlbWFwaG9yZU51bWJlcik+IHNlbWFwaG9yZU51bWJlcjsKKyAgICBkZWNv
ZGVyID4+IHNlbWFwaG9yZU51bWJlcjsKKyAgICBpZiAoIXNlbWFwaG9yZU51bWJlcikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gU2VtYXBob3JlKCpzZW1hcGhvcmVO
dW1iZXIpOworfQorCit2b2lkIFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2Vt
YXBob3JlSGFuZGxlKQorICAgICAgICBDbG9zZUhhbmRsZShtX3NlbWFwaG9yZUhhbmRsZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggYTMzNzJm
Yjc2Y2E4Li4wMTU2NWQ1NTA2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtOSw2ICs5
LDggQEAgaW5jbHVkZShIZWFkZXJzLmNtYWtlKQogYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdf
V0VCS0lUKQogCiBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUworICAgIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4uY3BwCisKICAgICBHUFVQcm9jZXNzL21l
ZGlhL3dpbi9SZW1vdGVNZWRpYVBsYXllclByb3h5V2luLmNwcAogCiAgICAgR1BVUHJvY2Vzcy93
aW4vR1BVUHJvY2Vzc01haW5XaW4uY3BwCkBAIC0yMiw2ICsyNCw3IEBAIGxpc3QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCiAKICAgICBQbGF0Zm9ybS9JUEMvd2luL0F0dGFjaG1lbnRXaW4uY3BwCiAg
ICAgUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorICAgIFBsYXRmb3JtL0lQQy93
aW4vSVBDU2VtYXBob3JlV2luLmNwcAogCiAgICAgUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCBlYzY3NDE0NGIxZTEuLjVlZTc5MWQ5MThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTExMSw3ICsxMTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCIKICNlbmRpZgogCkBAIC05MzgsNyArOTM4LDcgQEAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dEdMPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNv
bnN0IEdyYXBoaWMKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFVO
VVNFRF9WQVJJQUJMRShob3N0V2luZG93RGlzcGxheUlEKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcywgbV9wYWdlLmVuc3VyZVJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkp
OwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424994</attachid>
            <date>2021-04-02 00:49:37 -0700</date>
            <delta_ts>2021-04-04 21:30:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224014-20210402164936.patch</filename>
            <type>text/plain</type>
            <size>24789</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAxODI0MWYzOTNjYjIx
NDdhNmVhZDZiZTEyMGFhM2UwOGU0N2ZjNy4uMGVlZTVlNWFiM2Y0OTkzYTU0MzQxMmM1YWFlY2Y2
M2FjYmY5ZWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTAyICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dW1dL
Ml0gSW1wbGVtZW50IElQQzo6U2VtYXBob3JlIHRvIHJ1biBXZWJHTCBpbiBHUFUgcHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MDE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KTogR1BVIHByb2Nlc3MgY2FsbHMgdGhpcworICAgICAg
ICBmdW5jdGlvbiBpbiBJUEMgdGhyZWFkLiBSZW1vdmVkIHRoZSBhc3NlcnRpb24gY2hlY2tpbmcg
dGhlIG1haW4KKyAgICAgICAgdGhyZWFkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MpOiBB
ZGRlZC4KKwogMjAyMS0wNC0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgI2lmIGluIFJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBkNjliOWI3OGJmMmRiZjBjYTg1MzcwMzE2NDFkZTlmNzUwNTk3
ZDQ0Li4xNTdiMzNkN2FjM2FhYjVhZjU0NTc5MTIwMDljNmYyMTc2MGIwMTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ4IEBACisyMDIxLTA0LTAyICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dW1dLMl0gSW1wbGVtZW50IElQQzo6U2VtYXBo
b3JlIHRvIHJ1biBXZWJHTCBpbiBHUFUgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMV2luLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFdpbjo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbjo6cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVG
b3JEaXNwbGF5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmNwcDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmg6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp3YWtlVXBTZXJ2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnRyeUFjcXVpcmUpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
Ojp0cnlBY3F1aXJlQWxsKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHA6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6
OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6c3RvcCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6Ondha2VVcCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJlYWQpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpyZWxlYXNlQWxsKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFw
aG9yZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OlNlbWFwaG9yZSk6
CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6flNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlNl
bWFwaG9yZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjpzaWduYWwpOgor
ICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OndhaXQpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6
OndhaXRGb3IpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6U2VtYXBob3JlOjpk
ZXN0cm95KToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wgY29uc3QpOgorCiAyMDIx
LTA0LTAxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3NTM4Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IGFmYWQ1MWE3M2Fj
ZjJhNzdmNzFlMTI4M2M5NDc5YjhiMmZlNjBkNTEuLjZkYjlkNTBiYzI3OWZlZGZmZmZkMDQ3NGEy
M2VjYjNlNDJhMmM3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcApAQCAtMTMyLDcgKzEzMiw2IEBAIFBsYXRmb3JtRGlz
cGxheSYgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkKIHsKICNpZiBQTEFURk9STShX
SU4pCiAgICAgLy8gQU5HTEUgRDNEIHJlbmRlcmVyIGlzbid0IHRocmVhZC1zYWZlLiBEb24ndCBk
ZXN0cnVjdCBpdCBvbiBub24tbWFpbiB0aHJlYWRzIHdoaWNoIGNhbGxzIF9leGl0KCkuCi0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgUGxhdGZvcm1EaXNwbGF5KiBkaXNw
bGF5ID0gY3JlYXRlUGxhdGZvcm1EaXNwbGF5KCkucmVsZWFzZSgpOwogICAgIHJldHVybiAqZGlz
cGxheTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGMwOWRl
NWJkZjBmN2M3ZjI2ZDNjZDc0MjNjMmVlYzg3NTFjNTJjMjkuLjI5M2VkYThlMjZiZjJkYWNkYWIy
YzUyY2E4NDgyNzY3NDVlNWY1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CkBAIC0xMTIsNiArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5KCk7CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICNlbHNlCisgICAgc3RhdGljIFJlZjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmKTsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWw7CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGQ5ZTMyYzYyM2IxYWQ3M2UzODgzNTVmNGRi
ZTBmZDk0YzVlM2UzOWQuLjhmYTdhMDUwNjkxMzI5YzMwMjk5MGJmY2I5NzU0OWE5ZTQ4N2VhZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBA
IC05Niw2ICs5NiwxMSBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIHJldHVybiBjb250
ZXh0OwogfQogCitSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChhdHRyaWJ1dGVzLCBudWxscHRyKSk7Cit9CisKICNpZiBVU0UoQU5HTEUp
CiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEdMKGF0
dHJpYnV0ZXMsIHNoYXJlZENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBh
ZGU3MjJlMDNiMTJjZTllOWNlYjA2YTkzOGY2ZDY2OWJlZjEzNmE4Li4xMDEzNTJmYjBkYzYzMGY0
ZDBlYzU3ODM5M2QwNzQwNzVkNjg0NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFw
aGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCiAgICAgcmV0dXJuIGluc3RhbmNlLmdldCgp
OwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBM
QVRGT1JNKFdJTikKIFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgpOwog
fQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRG
T1JNKFdJTikKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWNhZmIzMzliZTNhYWZiM2Q4OGM1YjM1YjcwYzhlMGI0Y2VlZDhjNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFdpbi5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oV0lOKQorCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFdpbiBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB7CitwdWJsaWM6
CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xXaW4oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOworfTsKKworUmVmPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVh
bSkKK3sKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFdpbihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3Rh
bmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW46OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMV2luKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
KGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
cmVuZGVyaW5nQmFja2VuZCwgV1RGTW92ZShzdHJlYW0pKQoreworfQorCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMV2luOjpwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKK3sKKyAgICBtX2NvbnRl
eHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhXVEZNb3Zl
KGF0dHJpYnV0ZXMpKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJlcGFy
ZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0lQQ1NlbWFwaG9yZS5jcHAKaW5kZXggZTQxMjFhNGJlYTliN2NmNGU2YWQ3MjdlOWY4NDc3MDFj
MjEyMzhkZC4uNDliZWEwNTBmM2VhYjBlNjBjMjZjZjUxOTBjYjk2ZmY5ZTAxOTIwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwCkBAIC0yNiw3ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCiAKLSNp
ZiAhT1MoREFSV0lOKQorI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKQogCiBuYW1lc3Bh
Y2UgSVBDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2Vt
YXBob3JlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAppbmRl
eCBhNzdjYzIwYTZmYzU1OTg1YzFjYWRhYWU3YzljYmNhNjRjN2RkMGU4Li4yOTM2YmYwZWY2NjIy
NGEyZTIwZDgxYmNlNjg4NjA2YjVhNjAzMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9JUENTZW1hcGhvcmUuaApAQCAtMzMsNiArMzMsOCBAQAogI2lmIE9TKERBUldJTikKICNpbmNs
dWRlIDxtYWNoL3NlbWFwaG9yZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+Cisj
ZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCiBuYW1lc3Bh
Y2UgSVBDIHsKQEAgLTUyLDIzICs1NCwyOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBPcHRpb25hbDxTZW1hcGhvcmU+IGRlY29kZShEZWNv
ZGVyJik7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgZXhwbGljaXQgU2VtYXBob3JlKE1hY2hTZW5k
UmlnaHQmJik7Ci0KICAgICB2b2lkIHNpZ25hbCgpOwogICAgIHZvaWQgd2FpdCgpOwogICAgIGJv
b2wgd2FpdEZvcihUaW1lb3V0KTsKKworI2lmIE9TKERBUldJTikKKyAgICBleHBsaWNpdCBTZW1h
cGhvcmUoTWFjaFNlbmRSaWdodCYmKTsKKwogICAgIE1hY2hTZW5kUmlnaHQgY3JlYXRlU2VuZFJp
Z2h0KCkgY29uc3Q7CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VuZFJpZ2h0IHx8IG1fc2VtYXBob3JlICE9IFNFTUFQSE9SRV9OVUxMOyB9CisjZWxpZiBP
UyhXSU5ET1dTKQorICAgIGV4cGxpY2l0IFNlbWFwaG9yZShIQU5ETEUpOwogI2Vsc2UKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAK
IHByaXZhdGU6Ci0jaWYgT1MoREFSV0lOKQogICAgIHZvaWQgZGVzdHJveSgpOworI2lmIE9TKERB
UldJTikKICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwogICAgIHNlbWFwaG9yZV90IG1f
c2VtYXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgSEFO
RExFIG1fc2VtYXBob3JlSGFuZGxlIHsgbnVsbHB0ciB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3Bw
CmluZGV4IDdkNTM0ZmFiYzk1ZTI0ZmY4MjEwMjM0Y2FmZWNlZjQ2NjBmOTliMjcuLjFiM2Y2Nzg1
YjJiZjhhODQ0ZGZiNjQzN2EwZmUyYTEzNGQyMGMxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00MCw3ICs0
MCw3IEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpCiAKIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQogewot
I2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4p
CiAgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9yZSk7CiAjZW5kaWYKICAg
ICB3YWtlVXBTZXJ2ZXIoKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCiAK
IHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6d2FrZVVwU2VydmVyKCkKIHsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIGlm
IChtX3dha2VVcFNlbWFwaG9yZSkKICAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUtPnNpZ25hbCgp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgKaW5kZXggZTMyODQxNzllMDgzOWExNzdiNjlmYjc3MWIxZjczMGQ1NGI5
ZGI3OS4uY2ZhNmMwNmYxYWYwOTljNDIwNTEwOGM2MjE1NzE1NTFlOTU2MDBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApA
QCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9jbGllbnRPZmZzZXQg
eyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKLSNpZiBQTEFURk9S
TShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIE9wdGlv
bmFsPFNlbWFwaG9yZT4gbV93YWtlVXBTZW1hcGhvcmU7CiAjZW5kaWYKIH07CkBAIC0yNDAsNyAr
MjQwLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICAgICAgfQogICAgICAgICBpZiAo
dGltZW91dC5kaWRUaW1lT3V0KCkpCiAgICAgICAgICAgICBicmVhazsKLSNpZiBQTEFURk9STShD
T0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgICAgICBDbGll
bnRMaW1pdCBvbGRDbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkuY29tcGFyZUV4Y2hh
bmdlU3Ryb25nKGNsaWVudExpbWl0LCBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFnLCBz
dGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKICAg
ICAgICAgaWYgKGNsaWVudExpbWl0ID09IG9sZENsaWVudExpbWl0KSB7CiAgICAgICAgICAgICBt
X2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKQEAgLTI3Myw3
ICsyNzMsNyBAQCBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZQogICAgIC8vIElmIHRoZSB0cmFuc2Fj
dGlvbiBjb21taXRzLCBzZXJ2ZXIgaXMgZ3VhcmFudGVlZCB0byBzaWduYWwuCiAKICAgICBmb3Ig
KDs7KSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRG
T1JNKFdJTikKICAgICAgICAgQ2xpZW50TGltaXQgY2xpZW50TGltaXQgPSBzaGFyZWRDbGllbnRM
aW1pdCgpLmV4Y2hhbmdlKENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwpOwogICAgICAgICBDbGllbnRPZmZzZXQgY2xpZW50T2Zmc2V0ID0g
c2hhcmVkQ2xpZW50T2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKICNl
bHNlCkBAIC0yODMsNyArMjgzLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICAgICAg
aWYgKCFjbGllbnRMaW1pdCAmJiAoY2xpZW50T2Zmc2V0ID09IENsaWVudE9mZnNldDo6c2VydmVy
SXNTbGVlcGluZ1RhZyB8fCAhY2xpZW50T2Zmc2V0KSkKICAgICAgICAgICAgIGJyZWFrOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikK
ICAgICAgICAgbV9idWZmZXIuY2xpZW50V2FpdFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91dCk7
CiAjZWxzZQogICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CkBAIC0yOTEsNyArMjkxLDcgQEAgaW5s
aW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENv
bm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICAgICAgaWYgKHRpbWVvdXQuZGlkVGltZU91dCgpKQog
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICAvLyBJbiBjYXNl
IHRoZSB0cmFuc2FjdGlvbiB3YXMgY2FuY2VsbGVkLCB1bmRvIHRoZSB0cmFuc2FjdGlvbiBtYXJr
ZXIuCiAgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9yZShzdGF0aWNfY2FzdDxDbGllbnRMaW1p
dD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
CmluZGV4IDJkMjYyZDQzYTk3MmNkYTUyOGE2MGYwODQwZWU5NThjMDQ5NThmY2UuLjY1OGU2NDky
NGRlMGVjMDJhZTIxYTRjOWI4OWQxOTM3ZDc0ZGJlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgSVBDIHsKIAogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lKQotI2lmIFBMQVRG
T1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAgOiBt
X25hbWUobmFtZSkKICNlbmRpZgogewpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhcwogICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKICAgICAg
ICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24g
bm90IHN1cHBvcnRlZC4KICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsK
ICNlbmRpZgogfQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhcwogdm9p
ZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKCkKIHsKICAgICBtX3Nob3VsZFF1aXQg
PSB0cnVlOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFU
Rk9STShXSU4pCiAgICAgaWYgKCFtX3Byb2Nlc3NpbmdUaHJlYWQpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKCkKIAogdm9pZCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlOjp3YWtlVXAoKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7
CiAjZW5kaWYKIH0KQEAgLTk0LDcgKzk0LDcgQEAgSVBDOjpTZW1hcGhvcmUmIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSgpCiAKIHZvaWQgU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpCiB7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICBpZiAobV9wcm9j
ZXNzaW5nVGhyZWFkKSB7CiAgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKaW5kZXggODg3MGNiYTBkNmI3NzgyZTRlOWU4M2JkZThh
MTEwNTAwNDAzMDEwOS4uNjY5MDRmNjZmYzI3YzUyMjZjNGMzMTdiN2JmZjUyNzVlNTUyODQyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FrZVVw
UHJvY2Vzc2luZ1RocmVhZCgpOwogICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAg
Y29uc3QgY2hhciogY29uc3QgbV9uYW1lOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTA3ZWNi
NGZkZGZiYzhjZjg0YWQwNGI4MzAxMjhlZDQxNTNlNzQ4Mi4uMDA0NzBlMGZmNGIzOGNkOTk0ODA2
YjU0Zjk3NmJmOGMwMDg0MmQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCiAgICAg
cmVhZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKICAgICBT
ZXJ2ZXJPZmZzZXQgc2VydmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8U2VydmVyT2Zmc2V0Pih3cmFw
T2Zmc2V0KGFsaWduT2Zmc2V0KG1fc2VydmVyT2Zmc2V0KSArIHJlYWRTaXplKSk7CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAg
IFNlcnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5leGNo
YW5nZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwogICAgIC8vIElm
IHRoZSBjbGllbnQgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGllbnQg
aXMgd2FpdGluZy4KICAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xp
ZW50SXNXYWl0aW5nVGFnKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogdm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6cmVsZWFzZUFsbCgpCiB7CiAgICAgc2hhcmVkU2VydmVyTGltaXQoKS5z
dG9yZShzdGF0aWNfY2FzdDxTZXJ2ZXJMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVh
c2UpOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9S
TShXSU4pCiAgICAgU2VydmVyT2Zmc2V0IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZlck9m
ZnNldCgpLmV4Y2hhbmdlKHN0YXRpY19jYXN0PFNlcnZlck9mZnNldD4oMCksIHN0ZDo6bWVtb3J5
X29yZGVyX2FjcV9yZWwpOwogICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBzZXJ2ZXJP
ZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGllbnQgaXMgd2FpdGluZy4KICAgICBpZiAob2xkU2VydmVy
T2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vSVBDU2VtYXBob3JlV2luLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MjczODc0NWM0ZmUzYmMwNTBlMTQ3ZjQyMDU3N2NhYjBhYjdjNjRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAK
QEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKworI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU2Vt
YXBob3JlOjpTZW1hcGhvcmUoKQoreworICAgIG1fc2VtYXBob3JlSGFuZGxlID0gQ3JlYXRlU2Vt
YXBob3JlQShudWxscHRyLCAwLCAxLCBudWxscHRyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3Nl
bWFwaG9yZUhhbmRsZSk7Cit9CisKK1NlbWFwaG9yZTo6U2VtYXBob3JlKEhBTkRMRSBoYW5kbGUp
CisgICAgOiBtX3NlbWFwaG9yZUhhbmRsZShoYW5kbGUpCit7Cit9CisKK1NlbWFwaG9yZTo6U2Vt
YXBob3JlKFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDogbV9zZW1hcGhvcmVIYW5kbGUoc3RkOjpl
eGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZUhhbmRsZSwgbnVsbHB0cikpCit7Cit9CisKK1NlbWFw
aG9yZTo6flNlbWFwaG9yZSgpCit7CisgICAgZGVzdHJveSgpOworfQorCitTZW1hcGhvcmUmIFNl
bWFwaG9yZTo6b3BlcmF0b3I9KFNlbWFwaG9yZSYmIG90aGVyKQoreworICAgIGlmICh0aGlzICE9
ICZvdGhlcikgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIG1fc2VtYXBob3JlSGFuZGxl
ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZUhhbmRsZSwgbnVsbHB0cik7CisgICAg
fQorCisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFNlbWFwaG9yZTo6c2lnbmFsKCkKK3sK
KyAgICBCT09MIHN1Y2Nlc3MgPSBSZWxlYXNlU2VtYXBob3JlKG1fc2VtYXBob3JlSGFuZGxlLCAx
LCBudWxscHRyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdWNjZXNzKTsKK30KKwordm9pZCBTZW1h
cGhvcmU6OndhaXQoKQoreworICAgIFdhaXRGb3JTaW5nbGVPYmplY3QobV9zZW1hcGhvcmVIYW5k
bGUsIElORklOSVRFKTsKK30KKwordm9pZCBTZW1hcGhvcmU6OndhaXRGb3IoVGltZW91dCB0aW1l
b3V0KQoreworICAgIFNlY29uZHMgd2FpdFRpbWUgPSB0aW1lb3V0LnNlY29uZHNVbnRpbERlYWRs
aW5lKCk7CisgICAgYXV0byBtaWxsaXNlY29uZHMgPSB3YWl0VGltZS5taWxsaXNlY29uZHNBczxE
V09SRD4oKTsKKyAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KG1fc2VtYXBob3JlSGFuZGxlLCBtaWxs
aXNlY29uZHMpOworfQorCit2b2lkIFNlbWFwaG9yZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgSEFORExFIHByb2Nlc3NIYW5kbGUgPSBHZXRDdXJyZW50UHJvY2Vzcygp
OworCisgICAgSEFORExFIGR1cGxpY2F0ZWRIYW5kbGU7CisgICAgQk9PTCBzdWNjZXNzID0gRHVw
bGljYXRlSGFuZGxlKHByb2Nlc3NIYW5kbGUsIG1fc2VtYXBob3JlSGFuZGxlLCBwcm9jZXNzSGFu
ZGxlLCAmZHVwbGljYXRlZEhhbmRsZSwgMCwgZmFsc2UsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VjY2Vzcyk7CisKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5jb2RlciwgZHVwbGljYXRlZEhhbmRsZSk7Cit9CisK
K09wdGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBhdXRvIGhhbmRsZSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29k
ZUhhbmRsZShkZWNvZGVyKTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gU2VtYXBob3JlKCpoYW5kbGUpOworfQorCit2b2lkIFNlbWFw
aG9yZTo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fc2VtYXBob3JlSGFuZGxlKSB7CisgICAgICAg
IENsb3NlSGFuZGxlKG1fc2VtYXBob3JlSGFuZGxlKTsKKyAgICAgICAgbV9zZW1hcGhvcmVIYW5k
bGUgPSBudWxscHRyOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCBhMzM3MmZiNzZjYTg2YzcxZTRhNGJkMDIwNjA2NmUxNzU3ODFlNDdh
Li4wMTU2NWQ1NTA2OTdiMjUzNjdiYjM2OTcxZDZmZTVlYzMzZjcxMmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1XaW4uY21ha2UKQEAgLTksNiArOSw4IEBAIGluY2x1ZGUoSGVhZGVycy5jbWFrZSkKIGFkZF9k
ZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKIAogbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJD
RVMKKyAgICBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNw
cAorCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS93aW4vUmVtb3RlTWVkaWFQbGF5ZXJQcm94eVdpbi5j
cHAKIAogICAgIEdQVVByb2Nlc3Mvd2luL0dQVVByb2Nlc3NNYWluV2luLmNwcApAQCAtMjIsNiAr
MjQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgUGxhdGZvcm0vSVBDL3dp
bi9BdHRhY2htZW50V2luLmNwcAogICAgIFBsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAKKyAgICBQbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKIAogICAgIFBsYXRm
b3JtL2NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKaW5kZXggZWM2NzQxNDRiMWUxNmY1ZjUzNDRlYmUwZjAyOThmOTkx
YjEzZjgzYS4uNWVlNzkxZDkxOGQ3OGQ2YzkxOTZmODVjN2ZjNjY5ZmViYTQxMzJkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogI2luY2x1
ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCIKICNlbmRpZgogCkBAIC05MzgsNyAr
OTM4LDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWMKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIFVOVVNFRF9WQVJJQUJMRShob3N0V2luZG93RGlzcGxheUlEKTsK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lO
KQogICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmli
dXRlcywgbV9wYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLnJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKCkpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425140</attachid>
            <date>2021-04-04 21:30:41 -0700</date>
            <delta_ts>2021-04-05 17:50:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224014-20210405133040.patch</filename>
            <type>text/plain</type>
            <size>24885</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUxNDNmNGE2MDNkYzBj
NzYxNTg0ODcyYzYxNzlmNzdhMmY3ZjYwNS4uNWJjZDUzOWM2NjFjMjIwMDJkYjE4ODcyMjU2ZTRl
YmExMmRjMTkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA0LTAyICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dW1dL
Ml0gSW1wbGVtZW50IElQQzo6U2VtYXBob3JlIHRvIHJ1biBXZWJHTCBpbiBHUFUgcHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MDE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KTogR1BVIHByb2Nlc3MgY2FsbHMgdGhpcworICAgICAg
ICBmdW5jdGlvbiBpbiBJUEMgdGhyZWFkLiBSZW1vdmVkIHRoZSBhc3NlcnRpb24gY2hlY2tpbmcg
dGhlIG1haW4KKyAgICAgICAgdGhyZWFkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MpOiBB
ZGRlZC4KKwogMjAyMS0wNC0wMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFVCU2FuOiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzKCkvZGlz
bWlzc1Nvb24oKTogcnVudGltZSBlcnJvcjogbG9hZCBvZiB2YWx1ZSBubm4sIHdoaWNoIGlzIG5v
dCBhIHZhbGlkIHZhbHVlIGZvciB0eXBlICdib29sJwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZmZhMTIzYmFkNzli
YzI3MWJhNjEwMTVkMjAyMTRlNjkzMTFhOTFmLi4zYjMwMDdmMjFiMzE2YjY5NGQzMTI2YTM5MWRj
MWFlOGM5ZDc0MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTA0LTAyICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5dW1dL
Ml0gSW1wbGVtZW50IElQQzo6U2VtYXBob3JlIHRvIHJ1biBXZWJHTCBpbiBHUFUgcHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MDE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbjo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xXaW4pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbjo6
cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvSVBDU2VtYXBob3JlLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3Jl
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUp
OgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp3YWtlVXBTZXJ2ZXIpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAg
IChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUpOgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlQWxsKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA6CisgICAgICAgIChJUEM6OlN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0
aW9uKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6c3RvcCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcCk6CisgICAgICAg
IChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJlYWQp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZSk6CisgICAgICAgIChJ
UEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlQWxsKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoSVBD
OjpTZW1hcGhvcmU6OlNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6flNlbWFw
aG9yZSk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKElQ
Qzo6U2VtYXBob3JlOjpzaWduYWwpOgorICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OndhaXQpOgor
ICAgICAgICAoSVBDOjpTZW1hcGhvcmU6OndhaXRGb3IpOgorICAgICAgICAoSVBDOjpTZW1hcGhv
cmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJUEM6OlNlbWFwaG9yZTo6ZGVjb2RlKToKKyAg
ICAgICAgKElQQzo6U2VtYXBob3JlOjpkZXN0cm95KToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5j
bWFrZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0wgY29uc3QpOgorCiAyMDIxLTA0LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHdlIGFyZSBubyBsb25nZXIgc2hvdyB0aGUgcHJl
dmlvdXMgcGFnZSB3aGVuIHJ1bm5pbmcgYSBKUyBwcm9tcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IGFmYWQ1MWE3
M2FjZjJhNzdmNzFlMTI4M2M5NDc5YjhiMmZlNjBkNTEuLjZkYjlkNTBiYzI3OWZlZGZmZmZkMDQ3
NGEyM2VjYjNlNDJhMmM3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcApAQCAtMTMyLDcgKzEzMiw2IEBAIFBsYXRmb3Jt
RGlzcGxheSYgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkKIHsKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgLy8gQU5HTEUgRDNEIHJlbmRlcmVyIGlzbid0IHRocmVhZC1zYWZlLiBEb24n
dCBkZXN0cnVjdCBpdCBvbiBub24tbWFpbiB0aHJlYWRzIHdoaWNoIGNhbGxzIF9leGl0KCkuCi0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgUGxhdGZvcm1EaXNwbGF5KiBk
aXNwbGF5ID0gY3JlYXRlUGxhdGZvcm1EaXNwbGF5KCkucmVsZWFzZSgpOwogICAgIHJldHVybiAq
ZGlzcGxheTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGMw
OWRlNWJkZjBmN2M3ZjI2ZDNjZDc0MjNjMmVlYzg3NTFjNTJjMjkuLjI5M2VkYThlMjZiZjJkYWNk
YWIyYzUyY2E4NDgyNzY3NDVlNWY1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3
aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5KCk7CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJh
d2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICNlbHNlCisgICAgc3RhdGljIFJlZjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gY3JlYXRlRm9yR1BVUHJvY2Vzcyhjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmKTsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3QgZmluYWw7CiAjZW5kaWYKICNpZiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGQ5ZTMyYzYyM2IxYWQ3M2UzODgzNTVm
NGRiZTBmZDk0YzVlM2UzOWQuLjhmYTdhMDUwNjkxMzI5YzMwMjk5MGJmY2I5NzU0OWE5ZTQ4N2Vh
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3Bw
CkBAIC05Niw2ICs5NiwxMSBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0RwogICAgIHJldHVybiBj
b250ZXh0OwogfQogCitSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTChhdHRyaWJ1dGVzLCBudWxscHRyKSk7Cit9CisKICNpZiBVU0UoQU5H
TEUpCiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCogc2hhcmVkQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIHNoYXJlZENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRl
eCBhZGU3MjJlMDNiMTJjZTllOWNlYjA2YTkzOGY2ZDY2OWJlZjEzNmE4Li4xMDEzNTJmYjBkYzYz
MGY0ZDBlYzU3ODM5M2QwNzQwNzVkNjg0NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
QEAgLTUyLDcgKzUyLDcgQEAgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVH
cmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCiAgICAgcmV0dXJuIGluc3RhbmNlLmdl
dCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYg
IVBMQVRGT1JNKFdJTikKIFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVz
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kLCBJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShp
bnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICAgICAgICAgZm9yY2VDb250ZXh0TG9zdCgp
OwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBM
QVRGT1JNKFdJTikKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnByZXBhcmVGb3JEaXNw
bGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFdpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWNhZmIzMzliZTNhYWZiM2Q4OGM1YjM1YjcwYzhlMGI0Y2VlZDhjNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFdpbi5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgiCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkgJiYgUExBVEZPUk0oV0lOKQor
CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFdpbiBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB7CitwdWJs
aWM6CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW4oR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB+UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xXaW4oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOworfTsKKworUmVm
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRl
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0
cmVhbSkKK3sKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFdpbihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGlu
c3RhbmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0
YW5jZTsKK30KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xXaW46OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMV2luKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgcmVuZGVyaW5nQmFja2VuZCwgV1RGTW92ZShzdHJlYW0pKQoreworfQorCit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMV2luOjpwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKK3sKKyAgICBtX2Nv
bnRleHQgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhXVEZN
b3ZlKGF0dHJpYnV0ZXMpKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cHJl
cGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIG1fY29udGV4dC0+cHJlcGFyZUZvckRpc3BsYXkoKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0lQQ1NlbWFwaG9yZS5jcHAKaW5kZXggZTQxMjFhNGJlYTliN2NmNGU2YWQ3MjdlOWY4NDc3
MDFjMjEyMzhkZC4uNDliZWEwNTBmM2VhYjBlNjBjMjZjZjUxOTBjYjk2ZmY5ZTAxOTIwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBDU2VtYXBob3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwCkBAIC0yNiw3ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCiAK
LSNpZiAhT1MoREFSV0lOKQorI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKQogCiBuYW1l
c3BhY2UgSVBDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSVBD
U2VtYXBob3JlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaApp
bmRleCBhNzdjYzIwYTZmYzU1OTg1YzFjYWRhYWU3YzljYmNhNjRjN2RkMGU4Li4yOTM2YmYwZWY2
NjIyNGEyZTIwZDgxYmNlNjg4NjA2YjVhNjAzMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9JUENTZW1hcGhvcmUuaApAQCAtMzMsNiArMzMsOCBAQAogI2lmIE9TKERBUldJTikKICNp
bmNsdWRlIDxtYWNoL3NlbWFwaG9yZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+
CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCiBuYW1l
c3BhY2UgSVBDIHsKQEAgLTUyLDIzICs1NCwyOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBPcHRpb25hbDxTZW1hcGhvcmU+IGRlY29kZShE
ZWNvZGVyJik7CiAKLSNpZiBPUyhEQVJXSU4pCi0gICAgZXhwbGljaXQgU2VtYXBob3JlKE1hY2hT
ZW5kUmlnaHQmJik7Ci0KICAgICB2b2lkIHNpZ25hbCgpOwogICAgIHZvaWQgd2FpdCgpOwogICAg
IGJvb2wgd2FpdEZvcihUaW1lb3V0KTsKKworI2lmIE9TKERBUldJTikKKyAgICBleHBsaWNpdCBT
ZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmKTsKKwogICAgIE1hY2hTZW5kUmlnaHQgY3JlYXRlU2Vu
ZFJpZ2h0KCkgY29uc3Q7CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VuZFJpZ2h0IHx8IG1fc2VtYXBob3JlICE9IFNFTUFQSE9SRV9OVUxMOyB9CisjZWxp
ZiBPUyhXSU5ET1dTKQorICAgIGV4cGxpY2l0IFNlbWFwaG9yZShIQU5ETEUpOwogI2Vsc2UKICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlm
CiAKIHByaXZhdGU6Ci0jaWYgT1MoREFSV0lOKQogICAgIHZvaWQgZGVzdHJveSgpOworI2lmIE9T
KERBUldJTikKICAgICBNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwogICAgIHNlbWFwaG9yZV90
IG1fc2VtYXBob3JlIHsgU0VNQVBIT1JFX05VTEwgfTsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAg
SEFORExFIG1fc2VtYXBob3JlSGFuZGxlIHsgbnVsbHB0ciB9OwogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24u
Y3BwCmluZGV4IDdkNTM0ZmFiYzk1ZTI0ZmY4MjEwMjM0Y2FmZWNlZjQ2NjBmOTliMjcuLjFiM2Y2
Nzg1YjJiZjhhODQ0ZGZiNjQzN2EwZmUyYTEzNGQyMGMxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00MCw3
ICs0MCw3IEBAIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24o
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpCiAKIHZvaWQgU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQog
ewotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShX
SU4pCiAgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9yZSk7CiAjZW5kaWYK
ICAgICB3YWtlVXBTZXJ2ZXIoKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUp
CiAKIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6d2FrZVVwU2VydmVyKCkKIHsKLSNpZiBQ
TEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAg
IGlmIChtX3dha2VVcFNlbWFwaG9yZSkKICAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUtPnNpZ25h
bCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmgKaW5kZXggZTMyODQxNzllMDgzOWExNzdiNjlmYjc3MWIxZjczMGQ1
NGI5ZGI3OS4uY2ZhNmMwNmYxYWYwOTljNDIwNTEwOGM2MjE1NzE1NTFlOTU2MDBmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24u
aApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9jbGllbnRPZmZz
ZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIE9w
dGlvbmFsPFNlbWFwaG9yZT4gbV93YWtlVXBTZW1hcGhvcmU7CiAjZW5kaWYKIH07CkBAIC0yNDAs
NyArMjQwLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICAgICAgfQogICAgICAgICBp
ZiAodGltZW91dC5kaWRUaW1lT3V0KCkpCiAgICAgICAgICAgICBicmVhazsKLSNpZiBQTEFURk9S
TShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgICAgICBD
bGllbnRMaW1pdCBvbGRDbGllbnRMaW1pdCA9IHNoYXJlZENsaWVudExpbWl0KCkuY29tcGFyZUV4
Y2hhbmdlU3Ryb25nKGNsaWVudExpbWl0LCBDbGllbnRMaW1pdDo6Y2xpZW50SXNXYWl0aW5nVGFn
LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsK
ICAgICAgICAgaWYgKGNsaWVudExpbWl0ID09IG9sZENsaWVudExpbWl0KSB7CiAgICAgICAgICAg
ICBtX2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKQEAgLTI3
Myw3ICsyNzMsNyBAQCBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bh
bj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZQogICAgIC8vIElmIHRoZSB0cmFu
c2FjdGlvbiBjb21taXRzLCBzZXJ2ZXIgaXMgZ3VhcmFudGVlZCB0byBzaWduYWwuCiAKICAgICBm
b3IgKDs7KSB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKFdJTikKICAgICAgICAgQ2xpZW50TGltaXQgY2xpZW50TGltaXQgPSBzaGFyZWRDbGll
bnRMaW1pdCgpLmV4Y2hhbmdlKENsaWVudExpbWl0OjpjbGllbnRJc1dhaXRpbmdUYWcsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwpOwogICAgICAgICBDbGllbnRPZmZzZXQgY2xpZW50T2Zmc2V0
ID0gc2hhcmVkQ2xpZW50T2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsK
ICNlbHNlCkBAIC0yODMsNyArMjgzLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENv
bm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICAg
ICAgaWYgKCFjbGllbnRMaW1pdCAmJiAoY2xpZW50T2Zmc2V0ID09IENsaWVudE9mZnNldDo6c2Vy
dmVySXNTbGVlcGluZ1RhZyB8fCAhY2xpZW50T2Zmc2V0KSkKICAgICAgICAgICAgIGJyZWFrOwog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJ
TikKICAgICAgICAgbV9idWZmZXIuY2xpZW50V2FpdFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91
dCk7CiAjZWxzZQogICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CkBAIC0yOTEsNyArMjkxLDcgQEAg
aW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246OnRyeUFjcXVpcmUKICAgICAgICAgaWYgKHRpbWVvdXQuZGlkVGltZU91dCgp
KQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICAvLyBJbiBj
YXNlIHRoZSB0cmFuc2FjdGlvbiB3YXMgY2FuY2VsbGVkLCB1bmRvIHRoZSB0cmFuc2FjdGlvbiBt
YXJrZXIuCiAgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9yZShzdGF0aWNfY2FzdDxDbGllbnRM
aW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
Y3BwCmluZGV4IDJkMjYyZDQzYTk3MmNkYTUyOGE2MGYwODQwZWU5NThjMDQ5NThmY2UuLjY1OGU2
NDkyNGRlMGVjMDJhZTIxYTRjOWI4OWQxOTM3ZDc0ZGJlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgSVBDIHsKIAogU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lKQotI2lmIFBM
QVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAg
OiBtX25hbWUobmFtZSkKICNlbmRpZgogewpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhcwogICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKICAg
ICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRv
d24gbm90IHN1cHBvcnRlZC4KICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwo
KTsKICNlbmRpZgogfQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhcwog
dm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKCkKIHsKICAgICBtX3Nob3VsZFF1
aXQgPSB0cnVlOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQ
TEFURk9STShXSU4pCiAgICAgaWYgKCFtX3Byb2Nlc3NpbmdUaHJlYWQpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKCkKIAogdm9pZCBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQogewotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFs
KCk7CiAjZW5kaWYKIH0KQEAgLTk0LDcgKzk0LDcgQEAgSVBDOjpTZW1hcGhvcmUmIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSgpCiAKIHZvaWQgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpCiB7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikKICAgICBpZiAobV9w
cm9jZXNzaW5nVGhyZWFkKSB7CiAgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKaW5kZXggODg3MGNiYTBkNmI3NzgyZTRlOWU4M2Jk
ZThhMTEwNTAwNDAzMDEwOS4uNjY5MDRmNjZmYzI3YzUyMjZjNGMzMTdiN2JmZjUyNzVlNTUyODQy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2Fr
ZVVwUHJvY2Vzc2luZ1RocmVhZCgpOwogICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pCiAg
ICAgY29uc3QgY2hhciogY29uc3QgbV9uYW1lOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTA3
ZWNiNGZkZGZiYzhjZjg0YWQwNGI4MzAxMjhlZDQxNTNlNzQ4Mi4uMDA0NzBlMGZmNGIzOGNkOTk0
ODA2YjU0Zjk3NmJmOGMwMDg0MmQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9p
ZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCiAg
ICAgcmVhZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKICAg
ICBTZXJ2ZXJPZmZzZXQgc2VydmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8U2VydmVyT2Zmc2V0Pih3
cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fc2VydmVyT2Zmc2V0KSArIHJlYWRTaXplKSk7CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQog
ICAgIFNlcnZlck9mZnNldCBvbGRTZXJ2ZXJPZmZzZXQgPSBzaGFyZWRTZXJ2ZXJPZmZzZXQoKS5l
eGNoYW5nZShzZXJ2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOwogICAgIC8v
IElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBzZXJ2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGll
bnQgaXMgd2FpdGluZy4KICAgICBpZiAob2xkU2VydmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6
Y2xpZW50SXNXYWl0aW5nVGFnKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQogdm9pZCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZUFsbCgpCiB7CiAgICAgc2hhcmVkU2VydmVyTGltaXQo
KS5zdG9yZShzdGF0aWNfY2FzdDxTZXJ2ZXJMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGVhc2UpOwotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFU
Rk9STShXSU4pCiAgICAgU2VydmVyT2Zmc2V0IG9sZFNlcnZlck9mZnNldCA9IHNoYXJlZFNlcnZl
ck9mZnNldCgpLmV4Y2hhbmdlKHN0YXRpY19jYXN0PFNlcnZlck9mZnNldD4oMCksIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwpOwogICAgIC8vIElmIHRoZSBjbGllbnQgd3JvdGUgb3ZlciBzZXJ2
ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBjbGllbnQgaXMgd2FpdGluZy4KICAgICBpZiAob2xkU2Vy
dmVyT2Zmc2V0ID09IFNlcnZlck9mZnNldDo6Y2xpZW50SXNXYWl0aW5nVGFnKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vSVBDU2VtYXBob3JlV2luLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZDc1Mzg0MDEyMjk3N2NjYmQ1YmU3Y2YxYjJkNzJlOTE3MDMzYWRiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5j
cHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKworI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgor
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgSVBDIHsKKwor
U2VtYXBob3JlOjpTZW1hcGhvcmUoKQoreworICAgIG1fc2VtYXBob3JlSGFuZGxlID0gQ3JlYXRl
U2VtYXBob3JlQShudWxscHRyLCAwLCAxLCBudWxscHRyKTsKKyAgICBSRUxFQVNFX0FTU0VSVCht
X3NlbWFwaG9yZUhhbmRsZSk7Cit9CisKK1NlbWFwaG9yZTo6U2VtYXBob3JlKEhBTkRMRSBoYW5k
bGUpCisgICAgOiBtX3NlbWFwaG9yZUhhbmRsZShoYW5kbGUpCit7Cit9CisKK1NlbWFwaG9yZTo6
U2VtYXBob3JlKFNlbWFwaG9yZSYmIG90aGVyKQorICAgIDogbV9zZW1hcGhvcmVIYW5kbGUoc3Rk
OjpleGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZUhhbmRsZSwgbnVsbHB0cikpCit7Cit9CisKK1Nl
bWFwaG9yZTo6flNlbWFwaG9yZSgpCit7CisgICAgZGVzdHJveSgpOworfQorCitTZW1hcGhvcmUm
IFNlbWFwaG9yZTo6b3BlcmF0b3I9KFNlbWFwaG9yZSYmIG90aGVyKQoreworICAgIGlmICh0aGlz
ICE9ICZvdGhlcikgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIG1fc2VtYXBob3JlSGFu
ZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZUhhbmRsZSwgbnVsbHB0cik7Cisg
ICAgfQorCisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFNlbWFwaG9yZTo6c2lnbmFsKCkK
K3sKKyAgICBSZWxlYXNlU2VtYXBob3JlKG1fc2VtYXBob3JlSGFuZGxlLCAxLCBudWxscHRyKTsK
K30KKwordm9pZCBTZW1hcGhvcmU6OndhaXQoKQoreworICAgIFdhaXRGb3JTaW5nbGVPYmplY3Qo
bV9zZW1hcGhvcmVIYW5kbGUsIElORklOSVRFKTsKK30KKworYm9vbCBTZW1hcGhvcmU6OndhaXRG
b3IoVGltZW91dCB0aW1lb3V0KQoreworICAgIFNlY29uZHMgd2FpdFRpbWUgPSB0aW1lb3V0LnNl
Y29uZHNVbnRpbERlYWRsaW5lKCk7CisgICAgYXV0byBtaWxsaXNlY29uZHMgPSB3YWl0VGltZS5t
aWxsaXNlY29uZHNBczxEV09SRD4oKTsKKyAgICByZXR1cm4gV0FJVF9PQkpFQ1RfMCA9PSBXYWl0
Rm9yU2luZ2xlT2JqZWN0KG1fc2VtYXBob3JlSGFuZGxlLCBtaWxsaXNlY29uZHMpOworfQorCit2
b2lkIFNlbWFwaG9yZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgSEFO
RExFIHByb2Nlc3NIYW5kbGUgPSBHZXRDdXJyZW50UHJvY2VzcygpOworCisgICAgSEFORExFIGR1
cGxpY2F0ZWRIYW5kbGU7CisgICAgQk9PTCBzdWNjZXNzID0gRHVwbGljYXRlSGFuZGxlKHByb2Nl
c3NIYW5kbGUsIG1fc2VtYXBob3JlSGFuZGxlLCBwcm9jZXNzSGFuZGxlLCAmZHVwbGljYXRlZEhh
bmRsZSwgMCwgZmFsc2UsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7CisgICAgUkVMRUFTRV9BU1NF
UlQoc3VjY2Vzcyk7CisKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGVI
YW5kbGUoZW5jb2RlciwgZHVwbGljYXRlZEhhbmRsZSk7Cit9CisKK09wdGlvbmFsPFNlbWFwaG9y
ZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIGhhbmRs
ZSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRsZShkZWNvZGVyKTsK
KyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gU2VtYXBob3JlKCpoYW5kbGUpOworfQorCit2b2lkIFNlbWFwaG9yZTo6ZGVzdHJveSgpCit7
CisgICAgaWYgKG1fc2VtYXBob3JlSGFuZGxlKSB7CisgICAgICAgIENsb3NlSGFuZGxlKG1fc2Vt
YXBob3JlSGFuZGxlKTsKKyAgICAgICAgbV9zZW1hcGhvcmVIYW5kbGUgPSBudWxscHRyOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBh
MzM3MmZiNzZjYTg2YzcxZTRhNGJkMDIwNjA2NmUxNzU3ODFlNDdhLi4wMTU2NWQ1NTA2OTdiMjUz
NjdiYjM2OTcxZDZmZTVlYzMzZjcxMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTks
NiArOSw4IEBAIGluY2x1ZGUoSGVhZGVycy5jbWFrZSkKIGFkZF9kZWZpbml0aW9ucygtREJVSUxE
SU5HX1dFQktJVCkKIAogbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKKyAgICBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMV2luLmNwcAorCiAgICAgR1BVUHJvY2Vz
cy9tZWRpYS93aW4vUmVtb3RlTWVkaWFQbGF5ZXJQcm94eVdpbi5jcHAKIAogICAgIEdQVVByb2Nl
c3Mvd2luL0dQVVByb2Nlc3NNYWluV2luLmNwcApAQCAtMjIsNiArMjQsNyBAQCBsaXN0KEFQUEVO
RCBXZWJLaXRfU09VUkNFUwogCiAgICAgUGxhdGZvcm0vSVBDL3dpbi9BdHRhY2htZW50V2luLmNw
cAogICAgIFBsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKyAgICBQbGF0Zm9ybS9J
UEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKIAogICAgIFBsYXRmb3JtL2NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggZWM2NzQxNDRiMWUxNmY1ZjUzNDRlYmUwZjAyOThmOTkxYjEzZjgzYS4uNWVlNzkxZDkx
OGQ3OGQ2YzkxOTZmODVjN2ZjNjY5ZmViYTQxMzJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaCIKICNlbmRpZgogCkBAIC05MzgsNyArOTM4LDcgQEAgUmVmUHRyPEdy
YXBoaWNzQ29udGV4dEdMPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IEdyYXBoaWMKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZ0ZvcldlYkdMKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IFVOVVNFRF9WQVJJQUJMRShob3N0V2luZG93RGlzcGxheUlEKTsKLSNpZiBQTEFURk9STShDT0NP
QSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoYXR0cmlidXRlcywgbV9wYWdlLmVuc3Vy
ZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KCkpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>