<?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>142536</bug_id>
          
          <creation_ts>2015-03-10 10:48:54 -0700</creation_ts>
          <short_desc>[WK2][iOS] editorState() should not cause a synchronous layout</short_desc>
          <delta_ts>2015-04-14 09:51:12 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</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>
          <dependson>143591</dependson>
    
    <dependson>143715</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1075985</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 10:48:54 -0700</bug_when>
    <thetext>editorState() should not cause a synchronous layout on iOS.

Radar: &lt;rdar://problem/20041506&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075986</commentid>
    <comment_count>1</comment_count>
      <attachid>248335</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 10:50:25 -0700</bug_when>
    <thetext>Created attachment 248335
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076008</commentid>
    <comment_count>2</comment_count>
      <attachid>248340</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 11:38:03 -0700</bug_when>
    <thetext>Created attachment 248340
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076017</commentid>
    <comment_count>3</comment_count>
      <attachid>248342</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 12:00:08 -0700</bug_when>
    <thetext>Created attachment 248342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076117</commentid>
    <comment_count>4</comment_count>
      <attachid>248342</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-03-10 15:56:25 -0700</bug_when>
    <thetext>Comment on attachment 248342
Patch

The patch looks good to me. I would add ASSERTS in WKContentViewInteraction.mm in all the places where we try to use components of editor state that require layout when we only have the partial editor state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076141</commentid>
    <comment_count>5</comment_count>
      <attachid>248373</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 17:27:42 -0700</bug_when>
    <thetext>Created attachment 248373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076142</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 17:28:38 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 248342 [details]
&gt; Patch
&gt; 
&gt; The patch looks good to me. I would add ASSERTS in
&gt; WKContentViewInteraction.mm in all the places where we try to use components
&gt; of editor state that require layout when we only have the partial editor
&gt; state.

Good idea. I made the change but I still need to verify on device that the assertion is not hit before we can land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076143</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-10 17:30:39 -0700</bug_when>
    <thetext>Attachment 248373 did not pass style-queue:


ERROR: Source/WebKit2/Shared/EditorState.h:105:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076213</commentid>
    <comment_count>8</comment_count>
      <attachid>248394</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 21:25:53 -0700</bug_when>
    <thetext>Created attachment 248394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076214</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-10 21:27:24 -0700</bug_when>
    <thetext>Attachment 248394 did not pass style-queue:


ERROR: Source/WebKit2/Shared/EditorState.h:105:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076215</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 21:35:57 -0700</bug_when>
    <thetext>I am unfortunately hitting the new assertion, so this will need a bit more work.

When WebPageProxy::didCommitLayerTree() is called, we end up calling [WKContentView(WKInteraction) _updateChangedSelection:]. In there, we construct a WKSelectionDrawingInfo object from the EditorState which accesses the PostLayoutData (caretRectAtEnd and selectionRects). Apparently, this is called before the WebProcess has had time to send the full EditorState (with PostLayoutData) to the UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076222</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-10 21:55:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I am unfortunately hitting the new assertion, so this will need a bit more
&gt; work.
&gt; 
&gt; When WebPageProxy::didCommitLayerTree() is called, we end up calling
&gt; [WKContentView(WKInteraction) _updateChangedSelection:]. In there, we
&gt; construct a WKSelectionDrawingInfo object from the EditorState which
&gt; accesses the PostLayoutData (caretRectAtEnd and selectionRects). Apparently,
&gt; this is called before the WebProcess has had time to send the full
&gt; EditorState (with PostLayoutData) to the UIProcess.

This is not the only case where we try to access the EditorState&apos;s PostLayoutData before layout is done:
2   WebKit                              0x000000010323417c -[WKContentView(WKInteraction) selectedTextRange] + 460
3   UIKit                               0x0000000187050b0c -[UITextSelection selectionChanged] + 36
4   UIKit                               0x0000000187115d10 -[UITextSelectionView activate] + 204
5   WebKit                              0x000000010322eb34 -[WKContentView(WKInteraction) becomeFirstResponder] + 84</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083824</commentid>
    <comment_count>12</comment_count>
      <attachid>250404</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-08 20:20:42 -0700</bug_when>
    <thetext>Created attachment 250404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083825</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-08 20:22:17 -0700</bug_when>
    <thetext>Attachment 250404 did not pass style-queue:


ERROR: Source/WebKit2/Shared/EditorState.h:105:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083829</commentid>
    <comment_count>14</comment_count>
      <attachid>250404</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-08 20:28:47 -0700</bug_when>
    <thetext>Comment on attachment 250404
Patch

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

I highlighted the few changes compared to the previous iteration to facilitate review.

&gt; Source/WebKit2/Shared/EditorState.h:100
&gt; +    ASSERT_WITH_MESSAGE(!isMissingPostLayoutData, &quot;Attempt to access post layout data before receiving it&quot;);

Added assertion as suggested to make sure we don&apos;t try to access the postLayoutData of a partial editor state.

&gt; Source/WebKit2/Shared/EditorState.h:106
&gt; +    ASSERT_WITH_MESSAGE(!isMissingPostLayoutData, &quot;Attempt to access post layout data before receiving it&quot;);

Added assertion as suggested to make sure we don&apos;t try to access the postLayoutData of a partial editor state.

&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:496
&gt; +    if (!_page-&gt;editorState().isMissingPostLayoutData)

I added this check otherwise we would sometimes try to access the postLayoutData even though we have a partial EditorState, thus hitting the new assertions above. This can happen when a new layout a scheduled and the selection is changed after the previous layout is done but *before* didCommitLayerTree() is called. We flush the layers and send the didCommitLayerTree IPC in a background thread so nothing prevents a new layout to be scheduled and thus a partial EditorState to be sent before the didCommitLayerTree message is received.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4379
&gt; +    auto editorState = this-&gt;editorState(needsLayout ? IncludePostLayoutDataHint::No : IncludePostLayoutDataHint::Yes);

We now only send a partial editor state if there is a layout pending as this is the only case where calling editorState() would trigger a synchronous layout.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4380
&gt; +    ASSERT_WITH_MESSAGE(needsLayout == (view &amp;&amp; view-&gt;needsLayout()), &quot;Calling editorState() should not cause a synchronous layout.&quot;);

I added this assertion to make sure that calling editorState() does not cause a synchronous layout. This could happen if someone added a new field to the EditorState which requires a layout to be computed and forget to add it to the PostLayoutData part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083995</commentid>
    <comment_count>15</comment_count>
      <attachid>250404</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-04-09 10:43:45 -0700</bug_when>
    <thetext>Comment on attachment 250404
Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084002</commentid>
    <comment_count>16</comment_count>
      <attachid>250404</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 11:32:53 -0700</bug_when>
    <thetext>Comment on attachment 250404
Patch

Clearing flags on attachment: 250404

Committed r182603: &lt;http://trac.webkit.org/changeset/182603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084003</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-09 11:33:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084137</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-09 17:04:57 -0700</bug_when>
    <thetext>This broke a test on multiple bots: &lt;https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=editing%2Fselection%2Fselection-invalid-offset.html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1084143</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-09 17:18:00 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; This broke a test on multiple bots:
&gt; &lt;https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=editing%2Fselection%2Fselection-invalid-offset.
&gt; html&gt;

Fix is pending review in https://bugs.webkit.org/show_bug.cgi?id=143591.
I missed a null-check on the EditorClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085154</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2015-04-14 09:20:34 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 250404 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 250404
&gt; 
&gt; Committed r182603: &lt;http://trac.webkit.org/changeset/182603&gt;

This caused more than 500 crashes on the GTK Debug build. Reported here https://bugs.webkit.org/show_bug.cgi?id=143715</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248335</attachid>
            <date>2015-03-10 10:50:25 -0700</date>
            <delta_ts>2015-03-10 11:38:03 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>ios_EditorState_wip.patch</filename>
            <type>text/plain</type>
            <size>13013</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYThmMWI0MS4u
ZTM5YmZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAg
LTM4MSw2ICszODEsOCBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBbmRSZXZlYWxTZWxl
Y3Rpb24oKQogICAgIH0KIAogICAgIG5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFu
Z2UoKTsKKworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5kaWRDaGFuZ2VTZWxlY3Rp
b25BbmRVcGRhdGVMYXlvdXQoKTsKIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlRGF0
YURldGVjdG9yc0ZvclNlbGVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
aW5kZXggZjkwMzc4NS4uYTEyM2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aApAQCAtNDUwLDYgKzQ1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5F
ZGl0aW5nKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2Vk
U2VsZWN0aW9uKEZyYW1lKikgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNjYXJkZWRDb21wb3NpdGlvbihGcmFtZSopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggZTE4YzAyNy4uMmQ1NTFjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCkBAIC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQmVnaW5FZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFu
ZFVwZGF0ZUxheW91dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJhbmdl
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggOTBlMTY2YWEuLjY0NzgwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMTAsNiArMTEwLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihX
ZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxl
Y3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlz
Y2FyZGVkQ29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDgxMzc2MS4uMTVhMDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZy
YW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91
dCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlvbihX
ZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShX
ZWJDb3JlOjpSYW5nZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXgg
OWJjMGI4Zi4uNWUxNzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBA
IC00MSw2ICs0MSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzSW5QYXNzd29yZEZpZWxkOwog
ICAgIGVuY29kZXIgPDwgaXNJblBsdWdpbjsKICAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0aW9u
OworICAgIGVuY29kZXIgPDwgaXNNaXNzaW5nUG9zdExheW91dERhdGE7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgZW5jb2RlciA8PCBpc1JlcGxhY2VBbGxvd2VkOwpAQCAtOTAsNiArOTEsOSBA
QCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IEVkaXRvclN0YXRlJiByZXN1bHQpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFz
Q29tcG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5pc1JlcGxhY2VBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuaAppbmRleCA5NzlhZDViLi44NmE4ODQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuaApAQCAtNzQsNiArNzQsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewog
ICAgIGJvb2wgaXNJblBhc3N3b3JkRmllbGQ7CiAgICAgYm9vbCBpc0luUGx1Z2luOwogICAgIGJv
b2wgaGFzQ29tcG9zaXRpb247CisgICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB7IGZh
bHNlIH07CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBpc1JlcGxhY2VBbGxvd2VkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM0YWZiYmEuLmI4Y2JjY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTE5MCw2ICsxOTAsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogI2VuZGlmCiB9CiAKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKQor
eworICAgIG1fcGFnZS0+c2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKCk7Cit9CisK
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNjYXJkZWRDb21wb3NpdGlvbihGcmFtZSopCiB7CiAg
ICAgbV9wYWdlLT5kaXNjYXJkZWRDb21wb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggNWZjNjEzMS4uNzcwNTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NCw2ICs2NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFt
ZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRh
dGVMYXlvdXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRp
b24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRp
dGluZygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkMWI4YjdkLi40Yjc5YjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDAs
NyArNzQwLDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJH
TFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFN0cmkKIH0KICNlbmRpZgogCi1FZGl0b3JT
dGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjpl
ZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5
b3V0RGF0YSkgY29uc3QKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC03NjUsNyArNzY1LDcgQEAgRWRpdG9y
U3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgIHJlc3VsdC5oYXNDb21wb3Np
dGlvbiA9IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3Vs
ZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlID0gZnJhbWUuZWRpdG9yKCkuaWdub3Jl
Q29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKICAgICAKLSAgICBwbGF0Zm9ybUVkaXRvclN0
YXRlKGZyYW1lLCByZXN1bHQpOworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3Vs
dCwgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC00MzM3LDYgKzQzMzcsOSBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkK
IAogdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQogeworICAgIGF1dG8gZWRpdG9y
U3RhdGUgPSB0aGlzLT5lZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyk7
CisgICAgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gZWRpdG9yU3RhdGUu
aXNNaXNzaW5nUG9zdExheW91dERhdGE7CisKICNpZiBQTEFURk9STShNQUMpICYmIFVTRShBU1lO
Q19OU1RFWFRJTlBVVENMSUVOVCkKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIC8vIEFiYW5kb24gdGhlIGN1cnJl
bnQgaW5saW5lIGlucHV0IHNlc3Npb24gaWYgc2VsZWN0aW9uIGNoYW5nZWQgZm9yIGFueSBvdGhl
ciByZWFzb24gYnV0IGFuIGlucHV0IG1ldGhvZCBkaXJlY3QgYWN0aW9uLgpAQCAtNDM0NSwxMSAr
NDM0OCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbigpCiAgICAgLy8gRklY
TUU6IFdlIGNhbid0IGNhbmNlbCBjb21wb3NpdGlvbiB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzIHRv
IE5vU2VsZWN0aW9uLCBidXQgd2UgcHJvYmFibHkgc2hvdWxkLgogICAgIGlmIChmcmFtZS5lZGl0
b3IoKS5oYXNDb21wb3NpdGlvbigpICYmICFmcmFtZS5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlv
blNlbGVjdGlvbkNoYW5nZSgpICYmICFmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkgewogICAg
ICAgICBmcmFtZS5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbigpOwotICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXBvc2l0aW9uV2FzQ2FuY2VsZWQoZWRpdG9yU3RhdGUo
KSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXBvc2l0aW9uV2Fz
Q2FuY2VsZWQoZWRpdG9yU3RhdGUpKTsKICAgICB9IGVsc2UKLSAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0
b3JTdGF0ZSkpOwogI2Vsc2UKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRv
clN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgpKSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSksIHBhZ2VJRCgpLCBJUEM6
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTQzNTcsNiArNDM2MCwxNSBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZENoYW5nZVNlbGVjdGlvbigpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpzZW5kUG9zdExh
eW91dEVkaXRvclN0YXRlSWZOZWVkZWQoKQoreworICAgIGlmICghbV9pc0VkaXRvclN0YXRlTWlz
c2luZ1Bvc3RMYXlvdXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZShJbmNsdWRlUG9z
dExheW91dERhdGFIaW50OjpZZXMpKSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9z
dExheW91dERhdGEgPSBmYWxzZTsKK30KKwogdm9pZCBXZWJQYWdlOjpkaXNjYXJkZWRDb21wb3Np
dGlvbigpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb21wb3NpdGlvbldh
c0NhbmNlbGVkKGVkaXRvclN0YXRlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDUxYzBlZjIuLmMzMzBhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzI3LDcgKzMyNyw5IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAg
IAotICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKCkgY29uc3Q7CisgICAgZW51bSBjbGFzcyBJ
bmNsdWRlUG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OworICAgIEVkaXRvclN0YXRlIGVk
aXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgPSBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpZZXMpIGNvbnN0OworICAgIHZvaWQgc2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlm
TmVlZGVkKCk7CiAKICAgICBTdHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
KSBjb25zdDsKICAgICBTdHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25Gb3JQ
cmludGluZygpIGNvbnN0OwpAQCAtODczLDcgKzg3NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2
b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVz
dWx0KSBjb25zdDsKKworICAgIHZvaWQgcGxhdGZvcm1FZGl0b3JTdGF0ZShXZWJDb3JlOjpGcmFt
ZSYsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jik7CkBAIC0xMzM4LDYgKzEzNDEsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX21haW5GcmFtZVByb2dyZXNzQ29tcGxldGVkOwogICAgIGJvb2wgbV9z
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHM7CisgICAgYm9vbCBtX2lzRWRpdG9yU3Rh
dGVNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZs
L1dlYlBhZ2VFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9X
ZWJQYWdlRWZsLmNwcAppbmRleCAzMzU0MDE3Li5jMjMxYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYsIEVkaXRvclN0YXRlJikgY29uc3QK
K3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYsIEVkaXRvclN0YXRlJiwg
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggMmQw
MzI0YS4uM2YyYWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1EZXRhY2goKQogewogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3Rh
dGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAordm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwg
SW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3QKIHsKICAgICByZXN1bHQuY3Vyc29yUmVj
dCA9IGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCBiMGFmMzc0Li4wN2YxNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1F
ZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit2b2lk
IFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYg
cmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0
RGF0YSkgY29uc3QKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoZnJhbWUuZWRpdG9yKCkuaGFz
Q29tcG9zaXRpb24oKSkgewpAQCAtMTQzLDYgKzE0MywxNSBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAog
ICAgICAgICAgICAgcmVzdWx0Lmxhc3RNYXJrZWRSZWN0ID0gcmVzdWx0LmZpcnN0TWFya2VkUmVj
dDsKICAgICAgICAgcmVzdWx0Lm1hcmtlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2UoY29tcG9zaXRpb25SYW5nZS5nZXQoKSk7CiAgICAgfQorCisgICAgLy8gV2Ugb25seSBz
ZXQgdGhlIHJlbWFpbmluZyBFZGl0b3JTdGF0ZSBlbnRyaWVzIGlmIHRoZSBsYXlvdXQgaXMgZG9u
ZS4gVG8gY29tcHV0ZSB0aGVzZQorICAgIC8vIGVudHJpZXMsIHdlIG5lZWQgdGhlIGxheW91dCB0
byBiZSBkb25lIGFuZCB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSBzeW5jaHJvbm91cworICAg
IC8vIGxheW91dCBhcyB0aGlzIHdvdWxkIGJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuCisgICAgaWYg
KHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50
OjpObykgeworICAgICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUudmll
dygpOwogICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7CiAgICAgICAgIHJlc3VsdC5jYXJl
dFJlY3RBdFN0YXJ0ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGZyYW1lLnNlbGVjdGlvbigp
LmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNWY1NjdkMS4uZTc3NDFlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRhY2goKQog
ICAgIFttX21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOm51bGxwdHJdOwogfQog
Ci12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JT
dGF0ZSYgcmVzdWx0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZy
YW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGlu
dCkgY29uc3QKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248340</attachid>
            <date>2015-03-10 11:38:03 -0700</date>
            <delta_ts>2015-03-10 12:00:04 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>ios_EditorState_wip.patch</filename>
            <type>text/plain</type>
            <size>13172</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYThmMWI0MS4u
ZTM5YmZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAg
LTM4MSw2ICszODEsOCBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBbmRSZXZlYWxTZWxl
Y3Rpb24oKQogICAgIH0KIAogICAgIG5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFu
Z2UoKTsKKworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5kaWRDaGFuZ2VTZWxlY3Rp
b25BbmRVcGRhdGVMYXlvdXQoKTsKIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlRGF0
YURldGVjdG9yc0ZvclNlbGVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
aW5kZXggZjkwMzc4NS4uYTEyM2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aApAQCAtNDUwLDYgKzQ1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5F
ZGl0aW5nKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2Vk
U2VsZWN0aW9uKEZyYW1lKikgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNjYXJkZWRDb21wb3NpdGlvbihGcmFtZSopIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggZTE4YzAyNy4uMmQ1NTFjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCkBAIC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQmVnaW5FZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oRnJhbWUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFu
ZFVwZGF0ZUxheW91dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFJhbmdl
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggOTBlMTY2YWEuLjY0NzgwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMTAsNiArMTEwLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihX
ZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxl
Y3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlz
Y2FyZGVkQ29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDgxMzc2MS4uMTVhMDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZy
YW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91
dCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlvbihX
ZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShX
ZWJDb3JlOjpSYW5nZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXgg
OWJjMGI4Zi4uNWUxNzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBA
IC00MSw2ICs0MSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzSW5QYXNzd29yZEZpZWxkOwog
ICAgIGVuY29kZXIgPDwgaXNJblBsdWdpbjsKICAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0aW9u
OworICAgIGVuY29kZXIgPDwgaXNNaXNzaW5nUG9zdExheW91dERhdGE7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgZW5jb2RlciA8PCBpc1JlcGxhY2VBbGxvd2VkOwpAQCAtOTAsNiArOTEsOSBA
QCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IEVkaXRvclN0YXRlJiByZXN1bHQpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFz
Q29tcG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5pc1JlcGxhY2VBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuaAppbmRleCA5NzlhZDViLi44NmE4ODQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuaApAQCAtNzQsNiArNzQsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewog
ICAgIGJvb2wgaXNJblBhc3N3b3JkRmllbGQ7CiAgICAgYm9vbCBpc0luUGx1Z2luOwogICAgIGJv
b2wgaGFzQ29tcG9zaXRpb247CisgICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB7IGZh
bHNlIH07CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBpc1JlcGxhY2VBbGxvd2VkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM0YWZiYmEuLmI4Y2JjY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTE5MCw2ICsxOTAsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogI2VuZGlmCiB9CiAKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKQor
eworICAgIG1fcGFnZS0+c2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKCk7Cit9CisK
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNjYXJkZWRDb21wb3NpdGlvbihGcmFtZSopCiB7CiAg
ICAgbV9wYWdlLT5kaXNjYXJkZWRDb21wb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggNWZjNjEzMS4uNzcwNTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NCw2ICs2NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFt
ZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRh
dGVMYXlvdXQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRp
b24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRp
dGluZygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkMWI4YjdkLi40Yjc5YjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDAs
NyArNzQwLDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJH
TFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFN0cmkKIH0KICNlbmRpZgogCi1FZGl0b3JT
dGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjpl
ZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5
b3V0RGF0YSkgY29uc3QKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC03NjUsNyArNzY1LDcgQEAgRWRpdG9y
U3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgIHJlc3VsdC5oYXNDb21wb3Np
dGlvbiA9IGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3Vs
ZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlID0gZnJhbWUuZWRpdG9yKCkuaWdub3Jl
Q29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKICAgICAKLSAgICBwbGF0Zm9ybUVkaXRvclN0
YXRlKGZyYW1lLCByZXN1bHQpOworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3Vs
dCwgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC00MzM3LDYgKzQzMzcsOSBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkK
IAogdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQogeworICAgIGF1dG8gZWRpdG9y
U3RhdGUgPSB0aGlzLT5lZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyk7
CisgICAgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gZWRpdG9yU3RhdGUu
aXNNaXNzaW5nUG9zdExheW91dERhdGE7CisKICNpZiBQTEFURk9STShNQUMpICYmIFVTRShBU1lO
Q19OU1RFWFRJTlBVVENMSUVOVCkKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIC8vIEFiYW5kb24gdGhlIGN1cnJl
bnQgaW5saW5lIGlucHV0IHNlc3Npb24gaWYgc2VsZWN0aW9uIGNoYW5nZWQgZm9yIGFueSBvdGhl
ciByZWFzb24gYnV0IGFuIGlucHV0IG1ldGhvZCBkaXJlY3QgYWN0aW9uLgpAQCAtNDM0NSwxMSAr
NDM0OCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbigpCiAgICAgLy8gRklY
TUU6IFdlIGNhbid0IGNhbmNlbCBjb21wb3NpdGlvbiB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzIHRv
IE5vU2VsZWN0aW9uLCBidXQgd2UgcHJvYmFibHkgc2hvdWxkLgogICAgIGlmIChmcmFtZS5lZGl0
b3IoKS5oYXNDb21wb3NpdGlvbigpICYmICFmcmFtZS5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlv
blNlbGVjdGlvbkNoYW5nZSgpICYmICFmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkgewogICAg
ICAgICBmcmFtZS5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbigpOwotICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXBvc2l0aW9uV2FzQ2FuY2VsZWQoZWRpdG9yU3RhdGUo
KSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXBvc2l0aW9uV2Fz
Q2FuY2VsZWQoZWRpdG9yU3RhdGUpKTsKICAgICB9IGVsc2UKLSAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0
b3JTdGF0ZSkpOwogI2Vsc2UKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRv
clN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgpKSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSksIHBhZ2VJRCgpLCBJUEM6
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTQzNTcsNiArNDM2MCwxNSBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZENoYW5nZVNlbGVjdGlvbigpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpzZW5kUG9zdExh
eW91dEVkaXRvclN0YXRlSWZOZWVkZWQoKQoreworICAgIGlmICghbV9pc0VkaXRvclN0YXRlTWlz
c2luZ1Bvc3RMYXlvdXREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZShJbmNsdWRlUG9z
dExheW91dERhdGFIaW50OjpZZXMpKSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9z
dExheW91dERhdGEgPSBmYWxzZTsKK30KKwogdm9pZCBXZWJQYWdlOjpkaXNjYXJkZWRDb21wb3Np
dGlvbigpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb21wb3NpdGlvbldh
c0NhbmNlbGVkKGVkaXRvclN0YXRlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDUxYzBlZjIuLjc3OWI2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzI3LDcgKzMyNyw5IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAg
IAotICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKCkgY29uc3Q7CisgICAgZW51bSBjbGFzcyBJ
bmNsdWRlUG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OworICAgIEVkaXRvclN0YXRlIGVk
aXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgPSBJbmNsdWRlUG9zdExheW91dERh
dGFIaW50OjpZZXMpIGNvbnN0OworICAgIHZvaWQgc2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlm
TmVlZGVkKCk7CiAKICAgICBTdHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
KSBjb25zdDsKICAgICBTdHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25Gb3JQ
cmludGluZygpIGNvbnN0OwpAQCAtODczLDcgKzg3NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2
b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVz
dWx0KSBjb25zdDsKKyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUm
LCBFZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdDsK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOwpAQCAtMTMzOCw2ICsxMzQwLDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9tYWluRnJhbWVQcm9ncmVzc0NvbXBsZXRlZDsKICAgICBib29sIG1fc2hv
dWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzOworICAgIGJvb2wgbV9pc0VkaXRvclN0YXRl
TWlzc2luZ1Bvc3RMYXlvdXREYXRhIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9X
ZWJQYWdlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2Vi
UGFnZUVmbC5jcHAKaW5kZXggMzM1NDAxNy4uYzIzMWI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0Cit2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYsIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDJkMDMy
NGEuLjNmMmFiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRl
KEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6
cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0CiB7CiAgICAgcmVzdWx0LmN1cnNvclJlY3Qg
PSBmcmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
YjBhZjM3NC4uNzMyYTRlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3ZvaWQg
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiBy
ZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXRE
YXRhKSBjb25zdAogewogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChmcmFtZS5lZGl0b3IoKS5oYXND
b21wb3NpdGlvbigpKSB7CkBAIC0xNDMsNiArMTQzLDE2IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAg
ICAgICAgICAgICByZXN1bHQubGFzdE1hcmtlZFJlY3QgPSByZXN1bHQuZmlyc3RNYXJrZWRSZWN0
OwogICAgICAgICByZXN1bHQubWFya2VkVGV4dCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShjb21wb3NpdGlvblJhbmdlLmdldCgpKTsKICAgICB9CisKKyAgICAvLyBXZSBvbmx5IHNl
dCB0aGUgcmVtYWluaW5nIEVkaXRvclN0YXRlIGVudHJpZXMgaWYgdGhlIGxheW91dCBpcyBkb25l
LiBUbyBjb21wdXRlIHRoZXNlCisgICAgLy8gZW50cmllcywgd2UgbmVlZCB0aGUgbGF5b3V0IHRv
IGJlIGRvbmUgYW5kIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIHN5bmNocm9ub3VzCisgICAg
Ly8gbGF5b3V0IGFzIHRoaXMgd291bGQgYmUgYmFkIGZvciBwZXJmb3JtYW5jZS4gSWYgd2UgaGF2
ZSBhIGNvbXBvc2l0aW9uLCB3ZSBzZW5kIGV2ZXJ5dGhpbmcKKyAgICAvLyByaWdodCBhd2F5IGFz
IHRoZSBVSVByb2Nlc3MgbmVlZHMgdGhlIGNhcmV0UmVjdHMgQVNBUCBmb3IgbWFya2VkIHRleHQu
CisgICAgaWYgKHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSA9PSBJbmNsdWRlUG9zdExheW91
dERhdGFIaW50OjpObyAmJiAhZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgeworICAg
ICAgICByZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEgPSB0cnVlOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUudmlldygpOwogICAgIGlm
IChzZWxlY3Rpb24uaXNDYXJldCgpKSB7CiAgICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0
ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2Fy
ZXRCb3VuZHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNWY1NjdkMS4uZTc3NDFlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRhY2goKQogICAgIFttX21vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOm51bGxwdHJdOwogfQogCi12b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwg
RWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3QKIHsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248342</attachid>
            <date>2015-03-10 12:00:08 -0700</date>
            <delta_ts>2015-03-10 17:27:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142536-20150310115944.patch</filename>
            <type>text/plain</type>
            <size>19103</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY5ZmQyNDg1NWU1NzBi
ZGQ3OGRiYjJkNTM4N2MxMzc1NmRkNDI2Yi4uYzUwYTJmYTNkMmI0YjM5MjAwODM4ZmZmZWIxZjQ5
YWZiYzY5NDFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gZWRpdG9yU3RhdGUo
KSBzaG91bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMgbGF5b3V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1MzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzIwMDQxNTA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBjYWxsYmFj
ayB0byBFZGl0b3JDbGllbnQKKyAgICAgICAgdGhhdCBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiBG
cmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKCkuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp1cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorCiAyMDE1LTAzLTEwICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgdGhlIGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZkZGNhZTlhMmVjMzA1MTliZGQyYzZlZWQ5ZjVkNzhjNjU4
OWQ0ODMuLmRjZDgxYzEwN2Q5ZGRiYzExY2Y5ZTJhNTBlZjMzZjMxMzQ5MTI5YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIGVkaXRvclN0YXRlKCkgc2hvdWxkIG5vdCBj
YXVzZSBhIHN5bmNocm9ub3VzIGxheW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDA0MTUw
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92
aWRlIGltcGxlbWVudGF0aW9uIGZvciBFZGl0b3JDbGllbnQ6OmRpZENoYW5nZVNlbGVjdGlvbkFu
ZFVwZGF0ZUxheW91dCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisKIDIwMTUtMDMtMDkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBGaXggYnVpbGQgd2hlbiBjb21waWxpbmcgd2l0aCBkZWFkIGNvZGUg
c3RyaXBwaW5nIGRpc2FibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNmVjZjQxMjU1MTYyZmExMzg5
OTc0ZjY1MDBlODQxYzk2ZTE3MGRkMS4uOTVmMDY2NmMxZjE3NGRhMzY1NTVmMGRkODdjNWIyNzUz
ZTdkMTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAzLTEwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gZWRpdG9yU3Rh
dGUoKSBzaG91bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMgbGF5b3V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1MzYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzIwMDQxNTA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFByb3ZpZGUgaW1wbGVtZW50YXRpb24gZm9yIEVkaXRvckNsaWVudDo6ZGlk
Q2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxNS0wMy0wNCAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBBWDogSW1wbGVtZW50IHN1cHBvcnQg
Zm9yIEFSSUEgMS4xICdzd2l0Y2gnIHJvbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0MzEwNWZiZTMzYWY4MWYw
Yzk2MGMxMjM1YjcyZDIyNjNmZmRiOWY1Li45ZDZmMDE1MzdjYTBkYTVhOWU3Njk0ODNhYzI2NzAy
ZjViZTNjZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTUtMDMtMTAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBlZGl0b3JTdGF0ZSgp
IHNob3VsZCBub3QgY2F1c2UgYSBzeW5jaHJvbm91cyBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjUzNgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjAwNDE1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIG9uIGlPUyBkb2VzIGEgc3luY2hyb25vdXMg
bGF5b3V0IHRvIGNvbXB1dGUgc29tZQorICAgICAgICBvZiB0aGUgRWRpdG9yU3RhdGUgbWVtYmVy
cyAoZS5nLiBjYXJldFJlY3RBdFN0YXJ0IC8gY2FyZXRSZWN0QXRFbmQpLgorICAgICAgICBUaGlz
IGlzIGJhZCBmb3IgcGVyZm9ybWFuY2UgYXMgdGhpcyBpcyBjYWxsZWQgZXZlcnkgdGltZSB0aGUg
c2VsZWN0aW9uCisgICAgICAgIGlzIGNoYW5nZWQgKHdoaWNoIGhhcHBlbnMgZm9yIGUuZy4gd2hl
biB5b3Ugc2V0IHRoZSB2YWx1ZSBvZiBhIGZvY3VzZWQKKyAgICAgICAgSFRNTElucHV0RWxlbWVu
dCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBiZWhhdmlvciBvbiBpT1MgdG8g
b25seSBzZW5kIGEgcGFydGlhbCBFZGl0b3JTdGF0ZQorICAgICAgICBvbiBzZWxlY3Rpb24gY2hh
bmdlIHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBnZXRzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uCisg
ICAgICAgICh0aGUgb25lcyB0aGF0IGRvIG5vdCByZXF1aXJlIHN0eWxlIHJlY2FsYyBvciBsYXlv
dXQpIEFTQVAuIEEgZnVsbCBFZGl0b3IKKyAgICAgICAgc3RhdGUgaXMgdGhlbiBzZW50IGFmdGVy
IHRoZSBhc3luY2hyb25vdXMgbGF5b3V0IGlzIGRvbmUuCisKKyAgICAgICAgKiBTaGFyZWQvRWRp
dG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Vk
aXRvclN0YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZENoYW5n
ZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBs
YXRmb3JtRWRpdG9yU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3Rh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKToKKwogMjAxNS0wMy0xMCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQ29udGVudHMg
bm90IHNob3duIHdoZW4gZW50ZXJpbmcgQUMgbW9kZSB1bmxlc3MgdGhlIHdpbmRvdyBpcyByZXNp
emVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGE4ZjFi
NDE3NzNkMmE4MzNlNDVjN2JlMDc2OTMzMjY1NWVhYmVjMjMuLmUzOWJmYzYxNmZiNDg5ZDdmM2Zk
NzRjMjY5MzliYzkyYTYyYjFmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCkBAIC0zODEsNiArMzgxLDggQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRl
QW5kUmV2ZWFsU2VsZWN0aW9uKCkKICAgICB9CiAKICAgICBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9y
U2VsZWN0aW9uQ2hhbmdlKCk7CisKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+ZGlk
Q2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCk7CiB9CiAKIHZvaWQgRnJhbWVTZWxlY3Rp
b246OnVwZGF0ZURhdGFEZXRlY3RvcnNGb3JTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCmluZGV4IGY5MDM3ODU5OTdiYjAwZjZmMmExMGUyODFmM2NhMjg0NWVkODdm
MjMuLmExMjNkZjk0MjA3MmNkNzY2MjljOGEwNmM3Zjk3MTY3NTFlY2U0ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQ1MCw2ICs0NTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSopIG92ZXJyaWRlIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlk
ZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oRnJhbWUqKSBvdmVy
cmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIG92ZXJyaWRlIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSBv
dmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IGUxOGMwMjdhNTgz
ZDZhNTUzNmUwY2M3ZGU1NTkzMWExNjRkOTIxMTAuLjJkNTUxYzdkNDUyYzJhOWJiZTY1Mzk4MzU2
OTFiZWU3ZDAxNWZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTMsNiAr
OTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDkwZTE2NmFhNzQ0
NDM0ODQwNjk5MzJiNmFjYzcyNDNhNTg3Njg3NjkuLjY0NzgwMzg5YTRlMzdjMjgxOGYyYjI0M2Nm
YmViOGIxYTNkZjg3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMTAsNiArMTEwLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlv
dXQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24o
V2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVu
ZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXgg
NDgxMzc2MTAyNDI2NDE4YmQyMmUwYmU5NGI0MTMxNTQxYzE1NGYyMC4uMTVhMDAyNzY1MzY5N2Ix
N2E2OGEzNmZiNmUwYzljMDk0ZWVhZWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAgIHZp
cnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lKik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCgpIG92ZXJy
aWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlvbihXZWJDb3JlOjpG
cmFtZSopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpS
YW5nZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggOWJjMGI4ZmMx
YTg5OTllYWZhY2U0MTVjNmRkOTRjMTAyNDE0ZGQyMC4uNWUxNzUwY2I2MWI3ZGVkNjY5MTc0NzEy
NGMwZmZkNDRiMzViMjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBA
IC00MSw2ICs0MSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlzSW5QYXNzd29yZEZpZWxkOwog
ICAgIGVuY29kZXIgPDwgaXNJblBsdWdpbjsKICAgICBlbmNvZGVyIDw8IGhhc0NvbXBvc2l0aW9u
OworICAgIGVuY29kZXIgPDwgaXNNaXNzaW5nUG9zdExheW91dERhdGE7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgZW5jb2RlciA8PCBpc1JlcGxhY2VBbGxvd2VkOwpAQCAtOTAsNiArOTEsOSBA
QCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IEVkaXRvclN0YXRlJiByZXN1bHQpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFz
Q29tcG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5pc1JlcGxhY2VBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuaAppbmRleCA5NzlhZDViMWVmYjhmYzc0ZWY1YTdhN2Y4ZmM3ZDY2M2Fm
YmNjZTFhLi44NmE4ODQxZTlmNjNkMDNiODgyZmUzYmE1Y2M3NDcyNDA5MWJlZDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtNzQsNiArNzQsNyBAQCBzdHJ1Y3QgRWRpdG9y
U3RhdGUgewogICAgIGJvb2wgaXNJblBhc3N3b3JkRmllbGQ7CiAgICAgYm9vbCBpc0luUGx1Z2lu
OwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb247CisgICAgYm9vbCBpc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBpc1JlcGxhY2VB
bGxvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM0YWZiYmFkZmRiNGQ5ODZmNWY3
Y2EzZGNkZGE0NzAzZmZlNzkyNmYuLmI4Y2JjY2VhZGYwYmEzYTQ3YjI4YmFiYmRkZTM4MTgzMzFh
NTk3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE5MCw2ICsxOTAsMTEgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1l
KQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VTZWxlY3Rpb25B
bmRVcGRhdGVMYXlvdXQoKQoreworICAgIG1fcGFnZS0+c2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0
ZUlmTmVlZGVkKCk7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNjYXJkZWRDb21wb3Np
dGlvbihGcmFtZSopCiB7CiAgICAgbV9wYWdlLT5kaXNjYXJkZWRDb21wb3NpdGlvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKaW5kZXggNWZjNjEzMTYzYWRkZDYzZGEwZTZiNGY1NzdlZDZhNDI2MDgy
NzExZi4uNzcwNTUxOTRmNGU1MGQ3MDM3NzE3YjgyNTY1ZTVlYjE5Njg4MWNiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEJlZ2luRWRpdGluZygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBkMWI4YjdkYjdlZDIwZGFkNzBmZDZhODViMjNhOTg1M2EyODkwMDFhLi40Yjc5YjkzZGM4
ODc4NDkxYzAwY2U1ZmE5YmZhNmVhMWEzM2ExNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDAsNyArNzQwLDcgQEAgV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFN0cmkKIH0KICNlbmRpZgogCi1FZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JT
dGF0ZSgpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9z
dExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKIHsKICAg
ICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOwogCkBAIC03NjUsNyArNzY1LDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9y
U3RhdGUoKSBjb25zdAogICAgIHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGZyYW1lLmVkaXRvcigp
Lmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2Vs
ZWN0aW9uQ2hhbmdlID0gZnJhbWUuZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25D
aGFuZ2UoKTsKICAgICAKLSAgICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZyYW1lLCByZXN1bHQpOwor
ICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCwgc2hvdWxkSW5jbHVkZVBvc3RM
YXlvdXREYXRhKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00MzM3LDYgKzQzMzcsOSBA
QCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlOjpkaWRD
aGFuZ2VTZWxlY3Rpb24oKQogeworICAgIGF1dG8gZWRpdG9yU3RhdGUgPSB0aGlzLT5lZGl0b3JT
dGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyk7CisgICAgbV9pc0VkaXRvclN0YXRl
TWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERh
dGE7CisKICNpZiBQTEFURk9STShNQUMpICYmIFVTRShBU1lOQ19OU1RFWFRJTlBVVENMSUVOVCkK
ICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIC8vIEFiYW5kb24gdGhlIGN1cnJlbnQgaW5saW5lIGlucHV0IHNlc3Np
b24gaWYgc2VsZWN0aW9uIGNoYW5nZWQgZm9yIGFueSBvdGhlciByZWFzb24gYnV0IGFuIGlucHV0
IG1ldGhvZCBkaXJlY3QgYWN0aW9uLgpAQCAtNDM0NSwxMSArNDM0OCwxMSBAQCB2b2lkIFdlYlBh
Z2U6OmRpZENoYW5nZVNlbGVjdGlvbigpCiAgICAgLy8gRklYTUU6IFdlIGNhbid0IGNhbmNlbCBj
b21wb3NpdGlvbiB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIE5vU2VsZWN0aW9uLCBidXQgd2Ug
cHJvYmFibHkgc2hvdWxkLgogICAgIGlmIChmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigp
ICYmICFmcmFtZS5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpICYm
ICFmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkgewogICAgICAgICBmcmFtZS5lZGl0b3IoKS5j
YW5jZWxDb21wb3NpdGlvbigpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkNvbXBvc2l0aW9uV2FzQ2FuY2VsZWQoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXBvc2l0aW9uV2FzQ2FuY2VsZWQoZWRpdG9yU3RhdGUp
KTsKICAgICB9IGVsc2UKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0
b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSkpOwogI2Vsc2UKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JT
dGF0ZSgpKSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRl
Q2hhbmdlZChlZGl0b3JTdGF0ZSksIHBhZ2VJRCgpLCBJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKQEAg
LTQzNTcsNiArNDM2MCwxNSBAQCB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbigpCiAj
ZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlOjpzZW5kUG9zdExheW91dEVkaXRvclN0YXRlSWZOZWVk
ZWQoKQoreworICAgIGlmICghbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRv
clN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMp
KSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKKyAgICBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgPSBmYWxzZTsK
K30KKwogdm9pZCBXZWJQYWdlOjpkaXNjYXJkZWRDb21wb3NpdGlvbigpCiB7CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb21wb3NpdGlvbldhc0NhbmNlbGVkKGVkaXRvclN0YXRl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDUxYzBlZjI0NGNiZjE1ZTI3N2M2ODQ3N2QwZmY5YjQzYmNjZjdlNDcuLjc3OWI2ODZhMWQ1NzAx
M2NjNWZlNmRkODRjZGUwYzc2YWNmNDIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzI3LDcgKzMyNyw5IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwg
Y29uc3QgU3RyaW5nJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIAotICAgIEVkaXRv
clN0YXRlIGVkaXRvclN0YXRlKCkgY29uc3Q7CisgICAgZW51bSBjbGFzcyBJbmNsdWRlUG9zdExh
eW91dERhdGFIaW50IHsgTm8sIFllcyB9OworICAgIEVkaXRvclN0YXRlIGVkaXRvclN0YXRlKElu
Y2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgPSBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpZZXMp
IGNvbnN0OworICAgIHZvaWQgc2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKCk7CiAK
ICAgICBTdHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSBjb25zdDsKICAg
ICBTdHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25Gb3JQcmludGluZygpIGNv
bnN0OwpAQCAtODczLDcgKzg3NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXRhY2goKTsKLSAgICB2b2lkIHBsYXRmb3Jt
RWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdDsK
KyAgICB2b2lkIHBsYXRmb3JtRWRpdG9yU3RhdGUoV2ViQ29yZTo6RnJhbWUmLCBFZGl0b3JTdGF0
ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdDsKIAogICAgIHZvaWQg
ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3Nh
Z2VFbmNvZGVyPiYpOwpAQCAtMTMzOCw2ICsxMzQwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9tYWluRnJhbWVQcm9ncmVzc0NvbXBsZXRlZDsKICAgICBib29sIG1fc2hvdWxkRGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRzOworICAgIGJvb2wgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RM
YXlvdXREYXRhIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAK
aW5kZXggMzM1NDAxNzkyOTBjMjMwODQ2YTc5NmJmODRhZGEyZjY5NzdhZGYyOC4uYzIzMWI2MjQ5
OTQyZjVmOWEzZjkyYTYzYmYzOWQ1ZmM3MzY3NjRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYpIGNvbnN0Cit2b2lk
IFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmLCBFZGl0b3JTdGF0ZSYsIEluY2x1
ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDJkMDMyNGE1
MTcwMzkwMTFkMzhmM2UxOTk3ZjQ2NDcwNmZlMjM1ZDAuLjNmMmFiOTQ1YmJhOWQwNjM4YzFjOTNi
ZjlhY2E0YmQ3YTY3YjlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRGV0YWNoKCkKIHsKIH0KIAotdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKK3ZvaWQgV2Vi
UGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1
bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0CiB7CiAgICAgcmVzdWx0LmN1cnNv
clJlY3QgPSBmcmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggYjBhZjM3NDFiYWMxNDUyNzAwMDllZmU5NjlmYjQ1NzkxNGU1YTRiYi4uMjExN2IxMmEw
NGY2ODE3ZWU1YTliY2M5NWVmMWRkMDMyYjQ2ZjVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTI4LDkgKzEyOCw4
IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwg
RWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNs
dWRlUG9zdExheW91dERhdGEpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKGZyYW1l
LmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBjb21w
b3NpdGlvblJhbmdlID0gZnJhbWUuZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwogICAgICAg
ICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gY29tcG9zaXRpb25SZWN0czsKQEAgLTE0
Myw3ICsxNDIsMTggQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBm
cmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAgICAgIHJlc3VsdC5sYXN0
TWFya2VkUmVjdCA9IHJlc3VsdC5maXJzdE1hcmtlZFJlY3Q7CiAgICAgICAgIHJlc3VsdC5tYXJr
ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbXBvc2l0aW9uUmFuZ2Uu
Z2V0KCkpOwogICAgIH0KKworICAgIC8vIFdlIG9ubHkgc2V0IHRoZSByZW1haW5pbmcgRWRpdG9y
U3RhdGUgZW50cmllcyBpZiB0aGUgbGF5b3V0IGlzIGRvbmUuIFRvIGNvbXB1dGUgdGhlc2UKKyAg
ICAvLyBlbnRyaWVzLCB3ZSBuZWVkIHRoZSBsYXlvdXQgdG8gYmUgZG9uZSBhbmQgd2UgZG9uJ3Qg
d2FudCB0byB0cmlnZ2VyIGEgc3luY2hyb25vdXMKKyAgICAvLyBsYXlvdXQgYXMgdGhpcyB3b3Vs
ZCBiZSBiYWQgZm9yIHBlcmZvcm1hbmNlLiBJZiB3ZSBoYXZlIGEgY29tcG9zaXRpb24sIHdlIHNl
bmQgZXZlcnl0aGluZworICAgIC8vIHJpZ2h0IGF3YXkgYXMgdGhlIFVJUHJvY2VzcyBuZWVkcyB0
aGUgY2FyZXRSZWN0cyBBU0FQIGZvciBtYXJrZWQgdGV4dC4KKyAgICBpZiAoc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvdXREYXRhID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vICYmICFmcmFt
ZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgICAgIHJlc3VsdC5pc01pc3NpbmdQ
b3N0TGF5b3V0RGF0YSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVj
dGlvbi5pc0NhcmV0KCkpIHsKICAgICAgICAgcmVzdWx0LmNhcmV0UmVjdEF0U3RhcnQgPSB2aWV3
LT5jb250ZW50c1RvUm9vdFZpZXcoZnJhbWUuc2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5k
cygpKTsKICAgICAgICAgcmVzdWx0LmNhcmV0UmVjdEF0RW5kID0gcmVzdWx0LmNhcmV0UmVjdEF0
U3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KaW5kZXggNWY1NjdkMWU5MjgzMGY5NDcyNGY2MWJlYTAyZDk4ZmQwMTU2OWI5
Ny4uZTc3NDFlOWFlZGVhNWZhNGUzZmVmNDc5MjdkMzE0NzAwNDBiZWNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRhY2goKQogICAgIFttX21v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudCBzZXRXZWJQYWdlOm51bGxwdHJdOwogfQogCi12b2lkIFdl
YlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVz
dWx0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFt
ZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3QK
IHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248373</attachid>
            <date>2015-03-10 17:27:42 -0700</date>
            <delta_ts>2015-03-10 21:25:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142536-20150310172717.patch</filename>
            <type>text/plain</type>
            <size>41719</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY5ZmQyNDg1NWU1NzBi
ZGQ3OGRiYjJkNTM4N2MxMzc1NmRkNDI2Yi4uMzAzMTg2ZDY2ZDg1YjI5ZWFjYzU0ODY3YzEzODE4
NmU5YTJhN2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gZWRpdG9yU3RhdGUo
KSBzaG91bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMgbGF5b3V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1MzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzIwMDQxNTA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVucmljYSBDYXN1Y2NpLgor
CisgICAgICAgIEFkZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBjYWxsYmFj
ayB0byBFZGl0b3JDbGllbnQKKyAgICAgICAgdGhhdCBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiBG
cmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKCkuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp1cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorCiAyMDE1LTAzLTEwICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgdGhlIGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZkZGNhZTlhMmVjMzA1MTliZGQyYzZlZWQ5ZjVkNzhjNjU4
OWQ0ODMuLmExZjNiZjkyNWY5ZmY4MDZlZTlmODk4MTNhZTY2OTk4YWFlNDRlYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIGVkaXRvclN0YXRlKCkgc2hvdWxkIG5vdCBj
YXVzZSBhIHN5bmNocm9ub3VzIGxheW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDA0MTUw
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBFbnJpY2EgQ2FzdWNjaS4KKworICAgICAgICBQcm92
aWRlIGltcGxlbWVudGF0aW9uIGZvciBFZGl0b3JDbGllbnQ6OmRpZENoYW5nZVNlbGVjdGlvbkFu
ZFVwZGF0ZUxheW91dCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisKIDIwMTUtMDMtMDkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBGaXggYnVpbGQgd2hlbiBjb21waWxpbmcgd2l0aCBkZWFkIGNvZGUg
c3RyaXBwaW5nIGRpc2FibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNmVjZjQxMjU1MTYyZmExMzg5
OTc0ZjY1MDBlODQxYzk2ZTE3MGRkMS4uMjMxNzQyYmYzOTZkY2RjZjAxZmFhMDUwZmU3MGYwZmY4
MzhjZjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAzLTEwICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gZWRpdG9yU3Rh
dGUoKSBzaG91bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMgbGF5b3V0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1MzYKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzIwMDQxNTA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVucmljYSBDYXN1Y2Np
LgorCisgICAgICAgIFByb3ZpZGUgaW1wbGVtZW50YXRpb24gZm9yIEVkaXRvckNsaWVudDo6ZGlk
Q2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxNS0wMy0wNCAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBBWDogSW1wbGVtZW50IHN1cHBvcnQg
Zm9yIEFSSUEgMS4xICdzd2l0Y2gnIHJvbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0MzEwNWZiZTMzYWY4MWYw
Yzk2MGMxMjM1YjcyZDIyNjNmZmRiOWY1Li4wY2ExMTdjY2JlZmZjMTY0OWY4ZjYyMDQ3NjkxNTY4
ZDU2NzFiYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTUtMDMtMTAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBlZGl0b3JTdGF0ZSgp
IHNob3VsZCBub3QgY2F1c2UgYSBzeW5jaHJvbm91cyBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjUzNgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjAwNDE1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRW5yaWNhIENhc3VjY2kuCisK
KyAgICAgICAgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIG9uIGlPUyBkb2VzIGEgc3luY2hyb25vdXMg
bGF5b3V0IHRvIGNvbXB1dGUgc29tZQorICAgICAgICBvZiB0aGUgRWRpdG9yU3RhdGUgbWVtYmVy
cyAoZS5nLiBjYXJldFJlY3RBdFN0YXJ0IC8gY2FyZXRSZWN0QXRFbmQpLgorICAgICAgICBUaGlz
IGlzIGJhZCBmb3IgcGVyZm9ybWFuY2UgYXMgdGhpcyBpcyBjYWxsZWQgZXZlcnkgdGltZSB0aGUg
c2VsZWN0aW9uCisgICAgICAgIGlzIGNoYW5nZWQgKHdoaWNoIGhhcHBlbnMgZm9yIGUuZy4gd2hl
biB5b3Ugc2V0IHRoZSB2YWx1ZSBvZiBhIGZvY3VzZWQKKyAgICAgICAgSFRNTElucHV0RWxlbWVu
dCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBiZWhhdmlvciBvbiBpT1MgdG8g
b25seSBzZW5kIGEgcGFydGlhbCBFZGl0b3JTdGF0ZQorICAgICAgICBvbiBzZWxlY3Rpb24gY2hh
bmdlIHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBnZXRzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uCisg
ICAgICAgICh0aGUgb25lcyB0aGF0IGRvIG5vdCByZXF1aXJlIHN0eWxlIHJlY2FsYyBvciBsYXlv
dXQpIEFTQVAuIEEgZnVsbCBFZGl0b3IKKyAgICAgICAgc3RhdGUgaXMgdGhlbiBzZW50IGFmdGVy
IHRoZSBhc3luY2hyb25vdXMgbGF5b3V0IGlzIGRvbmUuCisKKyAgICAgICAgKiBTaGFyZWQvRWRp
dG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkVk
aXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6RWRp
dG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9FZGl0
b3JTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6RWRpdG9yU3RhdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVjdGlv
bkRyYXdpbmdJbmZvKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB3ZWJTZWxlY3Rpb25SZWN0
c10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGRTaG9ydGN1dDpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBzZWxlY3RlZFRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBpc1JlcGxhY2VBbGxvd2VkXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Byb21wdEZv
clJlcGxhY2U6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3RyYW5zbGl0ZXJhdGVDaGlu
ZXNlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRTdHlsaW5nQXRQb3NpdGlvbjpp
bkRpcmVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9u
OndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3dEaWN0aW9uYXJ5
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVj
dGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJJblJlbGF0aW9uVG9D
YXJldFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0aW9uQXRE
b2N1bWVudFN0YXJ0XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0ZWRUZXh0UmFu
Z2VdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBoYXNDb250ZW50XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFBvc3RM
YXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1FZGl0b3JTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0
YXRlKToKKwogMjAxNS0wMy0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gQ29udGVudHMgbm90IHNob3duIHdoZW4gZW50ZXJpbmcg
QUMgbW9kZSB1bmxlc3MgdGhlIHdpbmRvdyBpcyByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGE4ZjFiNDE3NzNkMmE4MzNlNDVjN2JlMDc2OTMz
MjY1NWVhYmVjMjMuLmUzOWJmYzYxNmZiNDg5ZDdmM2ZkNzRjMjY5MzliYzkyYTYyYjFmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0zODEsNiArMzgx
LDggQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKCkKICAg
ICB9CiAKICAgICBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCk7CisKKyAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+ZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRl
TGF5b3V0KCk7CiB9CiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZURhdGFEZXRlY3RvcnNG
b3JTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGY5MDM3
ODU5OTdiYjAwZjZmMmExMGUyODFmM2NhMjg0NWVkODdmMjMuLmExMjNkZjk0MjA3MmNkNzY2Mjlj
OGEwNmM3Zjk3MTY3NTFlY2U0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
QEAgLTQ1MCw2ICs0NTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRp
dGluZygpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29u
dGVudHMoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNl
bGVjdGlvbihGcmFtZSopIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VT
ZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzY2FyZGVkQ29tcG9zaXRpb24oRnJhbWUqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRW5kRWRpdGluZygpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCmluZGV4IGUxOGMwMjdhNTgzZDZhNTUzNmUwY2M3ZGU1NTkzMWExNjRk
OTIxMTAuLjJkNTUxYzdkNDUyYzJhOWJiZTY1Mzk4MzU2OTFiZWU3ZDAxNWZkYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtOTMsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9u
ZFRvQ2hhbmdlZENvbnRlbnRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKEZyYW1lKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxl
Y3Rpb25BbmRVcGRhdGVMYXlvdXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRp
bmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCmluZGV4IDkwZTE2NmFhNzQ0NDM0ODQwNjk5MzJiNmFjYzcyNDNhNTg3
Njg3NjkuLjY0NzgwMzg5YTRlMzdjMjgxOGYyYjI0M2NmYmViOGIxYTNkZjg3OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC0xMTAsNiArMTEwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6VW5kb1N0ZXA+KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDgxMzc2MTAyNDI2NDE4YmQyMmUwYmU5
NGI0MTMxNTQxYzE1NGYyMC4uMTVhMDAyNzY1MzY5N2IxN2E2OGEzNmZiNmUwYzljMDk0ZWVhZWUx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJl
c3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaXNjYXJkZWRDb21wb3NpdGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggOWJjMGI4ZmMxYTg5OTllYWZhY2U0MTVjNmRkOTRjMTAy
NDE0ZGQyMC4uNGE5MDIzZWU3ODNjYjcwNmFjM2EwNmZjYTc0MDUyNDEzN2UxNzQ0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBAIC00MSwyMiArNDEsMTUgQEAgdm9pZCBF
ZGl0b3JTdGF0ZTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgaXNJblBhc3N3b3JkRmllbGQ7CiAgICAgZW5jb2RlciA8PCBpc0luUGx1
Z2luOwogICAgIGVuY29kZXIgPDwgaGFzQ29tcG9zaXRpb247CisgICAgZW5jb2RlciA8PCBpc01p
c3NpbmdQb3N0TGF5b3V0RGF0YTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBlbmNvZGVyIDw8
IGlzUmVwbGFjZUFsbG93ZWQ7Ci0gICAgZW5jb2RlciA8PCBoYXNDb250ZW50OwotICAgIGVuY29k
ZXIgPDwgY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb247Ci0gICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJC
ZWZvcmVTZWxlY3Rpb247Ci0gICAgZW5jb2RlciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rp
b247Ci0gICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdFN0YXJ0OwotICAgIGVuY29kZXIgPDwgY2Fy
ZXRSZWN0QXRFbmQ7Ci0gICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0czsKLSAgICBlbmNvZGVy
IDw8IHNlbGVjdGVkVGV4dExlbmd0aDsKLSAgICBlbmNvZGVyIDw8IHdvcmRBdFNlbGVjdGlvbjsK
KyAgICBpZiAoaXNNaXNzaW5nUG9zdExheW91dERhdGEpCisgICAgICAgIG1fcG9zdExheW91dERh
dGEuZW5jb2RlKGVuY29kZXIpOworCiAgICAgZW5jb2RlciA8PCBmaXJzdE1hcmtlZFJlY3Q7CiAg
ICAgZW5jb2RlciA8PCBsYXN0TWFya2VkUmVjdDsKICAgICBlbmNvZGVyIDw8IG1hcmtlZFRleHQ7
Ci0gICAgZW5jb2RlciA8PCB0eXBpbmdBdHRyaWJ1dGVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShHVEspCkBAIC05MCw0MyArODMsNzQgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6ZGVjb2RlKElQQzo6
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NvbXBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNNaXNzaW5nUG9zdExheW91
dERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICNpZiBQTEFURk9STShJT1MpCi0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCkpCisgICAgaWYgKCFy
ZXN1bHQuaXNNaXNzaW5nUG9zdExheW91dERhdGEpIHsKKyAgICAgICAgaWYgKFBvc3RMYXlvdXRE
YXRhOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LnBvc3RMYXlvdXREYXRhKCkpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmZpcnN0TWFya2VkUmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5oYXNDb250ZW50KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5sYXN0TWFya2VkUmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbikpCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubWFya2VkVGV4dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24p
KQorI2VuZGlmCisKKyNpZiBQTEFURk9STShHVEspCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuY3Vyc29yUmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pKQorI2VuZGlmCisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgRWRpdG9yU3Rh
dGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0czsKKyAgICBlbmNvZGVyIDw8
IGNhcmV0UmVjdEF0U3RhcnQ7CisgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdEVuZDsKKyAgICBl
bmNvZGVyIDw8IHdvcmRBdFNlbGVjdGlvbjsKKyAgICBlbmNvZGVyIDw8IHNlbGVjdGVkVGV4dExl
bmd0aDsKKyAgICBlbmNvZGVyIDw8IGNoYXJhY3RlckFmdGVyU2VsZWN0aW9uOworICAgIGVuY29k
ZXIgPDwgY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOworICAgIGVuY29kZXIgPDwgdHdvQ2hhcmFj
dGVyQmVmb3JlU2VsZWN0aW9uOworICAgIGVuY29kZXIgPDwgdHlwaW5nQXR0cmlidXRlczsKKyAg
ICBlbmNvZGVyIDw8IGlzUmVwbGFjZUFsbG93ZWQ7CisgICAgZW5jb2RlciA8PCBoYXNDb250ZW50
OworfQorCitib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQQzo6QXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYgcmVzdWx0KQoreworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvblJlY3RzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhcmV0UmVjdEF0U3RhcnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
Y2FyZXRSZWN0QXRFbmQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuc2VsZWN0aW9uUmVjdHMpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LndvcmRBdFNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3RlZFRleHRMZW5ndGgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud29yZEF0U2VsZWN0aW9u
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmZpcnN0TWFya2VkUmVjdCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhcmFj
dGVyQWZ0ZXJTZWxlY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubGFzdE1hcmtlZFJlY3QpKQorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYXJrZWRUZXh0KSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwaW5n
QXR0cmlidXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0jaWYgUExBVEZP
Uk0oR1RLKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmN1cnNvclJlY3QpKQorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzUmVwbGFjZUFsbG93ZWQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFzQ29udGVudCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CiB9Cisj
ZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCA5NzlhZDViMWVm
YjhmYzc0ZWY1YTdhN2Y4ZmM3ZDY2M2FmYmNjZTFhLi40NzMyMDY2YmZhZjRjMTAyOTNmYTY0ZmZh
YmZlNmE2NTNiZWFiZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9y
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtNDQs
NTIgKzQ0LDQxIEBAIGVudW0gVHlwaW5nQXR0cmlidXRlcyB7CiB9OwogCiBzdHJ1Y3QgRWRpdG9y
U3RhdGUgewotICAgIEVkaXRvclN0YXRlKCkKLSAgICAgICAgOiBzaG91bGRJZ25vcmVDb21wb3Np
dGlvblNlbGVjdGlvbkNoYW5nZShmYWxzZSkKLSAgICAgICAgLCBzZWxlY3Rpb25Jc05vbmUodHJ1
ZSkKLSAgICAgICAgLCBzZWxlY3Rpb25Jc1JhbmdlKGZhbHNlKQotICAgICAgICAsIGlzQ29udGVu
dEVkaXRhYmxlKGZhbHNlKQotICAgICAgICAsIGlzQ29udGVudFJpY2hseUVkaXRhYmxlKGZhbHNl
KQotICAgICAgICAsIGlzSW5QYXNzd29yZEZpZWxkKGZhbHNlKQotICAgICAgICAsIGlzSW5QbHVn
aW4oZmFsc2UpCi0gICAgICAgICwgaGFzQ29tcG9zaXRpb24oZmFsc2UpCi0jaWYgUExBVEZPUk0o
SU9TKQotICAgICAgICAsIGlzUmVwbGFjZUFsbG93ZWQoZmFsc2UpCi0gICAgICAgICwgaGFzQ29u
dGVudChmYWxzZSkKLSAgICAgICAgLCBjaGFyYWN0ZXJBZnRlclNlbGVjdGlvbigwKQotICAgICAg
ICAsIGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbigwKQotICAgICAgICAsIHR3b0NoYXJhY3RlckJl
Zm9yZVNlbGVjdGlvbigwKQotICAgICAgICAsIHNlbGVjdGVkVGV4dExlbmd0aCgwKQotICAgICAg
ICAsIHR5cGluZ0F0dHJpYnV0ZXMoQXR0cmlidXRlTm9uZSkKLSNlbmRpZgotICAgIHsKLSAgICB9
CisgICAgYm9vbCBzaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSB7IGZhbHNl
IH07CiAKLSAgICBib29sIHNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlOwot
Ci0gICAgYm9vbCBzZWxlY3Rpb25Jc05vbmU7IC8vIFRoaXMgd2lsbCBiZSBmYWxzZSB3aGVuIHRo
ZXJlIGlzIGEgY2FyZXQgc2VsZWN0aW9uLgotICAgIGJvb2wgc2VsZWN0aW9uSXNSYW5nZTsKLSAg
ICBib29sIGlzQ29udGVudEVkaXRhYmxlOwotICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFi
bGU7Ci0gICAgYm9vbCBpc0luUGFzc3dvcmRGaWVsZDsKLSAgICBib29sIGlzSW5QbHVnaW47Ci0g
ICAgYm9vbCBoYXNDb21wb3NpdGlvbjsKKyAgICBib29sIHNlbGVjdGlvbklzTm9uZSB7IHRydWUg
fTsgLy8gVGhpcyB3aWxsIGJlIGZhbHNlIHdoZW4gdGhlcmUgaXMgYSBjYXJldCBzZWxlY3Rpb24u
CisgICAgYm9vbCBzZWxlY3Rpb25Jc1JhbmdlIHsgZmFsc2UgfTsKKyAgICBib29sIGlzQ29udGVu
dEVkaXRhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxlIHsg
ZmFsc2UgfTsKKyAgICBib29sIGlzSW5QYXNzd29yZEZpZWxkIHsgZmFsc2UgfTsKKyAgICBib29s
IGlzSW5QbHVnaW4geyBmYWxzZSB9OworICAgIGJvb2wgaGFzQ29tcG9zaXRpb24geyBmYWxzZSB9
OworICAgIGJvb2wgaXNNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxzZSB9OwogCiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIGJvb2wgaXNSZXBsYWNlQWxsb3dlZDsKLSAgICBib29sIGhhc0NvbnRl
bnQ7Ci0gICAgVUNoYXIzMiBjaGFyYWN0ZXJBZnRlclNlbGVjdGlvbjsKLSAgICBVQ2hhcjMyIGNo
YXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKLSAgICBVQ2hhcjMyIHR3b0NoYXJhY3RlckJlZm9yZVNl
bGVjdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVjdEF0U3RhcnQ7Ci0gICAgV2Vi
Q29yZTo6SW50UmVjdCBjYXJldFJlY3RBdEVuZDsKLSAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0
aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHM7Ci0gICAgdWludDY0X3Qgc2VsZWN0ZWRUZXh0TGVuZ3Ro
OwotICAgIFN0cmluZyB3b3JkQXRTZWxlY3Rpb247CiAgICAgV2ViQ29yZTo6SW50UmVjdCBmaXJz
dE1hcmtlZFJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBsYXN0TWFya2VkUmVjdDsKICAgICBT
dHJpbmcgbWFya2VkVGV4dDsKLSAgICB1aW50MzJfdCB0eXBpbmdBdHRyaWJ1dGVzOworCisgICAg
c3RydWN0IFBvc3RMYXlvdXREYXRhIHsKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlv
blJlY3Q+IHNlbGVjdGlvblJlY3RzOworICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVj
dEF0U3RhcnQ7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRSZWN0QXRFbmQ7CisgICAg
ICAgIFN0cmluZyB3b3JkQXRTZWxlY3Rpb247CisgICAgICAgIHVpbnQ2NF90IHNlbGVjdGVkVGV4
dExlbmd0aCB7IDAgfTsKKyAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXJBZnRlclNlbGVjdGlvbiB7
IDAgfTsKKyAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24geyAwIH07Cisg
ICAgICAgIFVDaGFyMzIgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uIHsgMCB9OworICAgICAg
ICB1aW50MzJfdCB0eXBpbmdBdHRyaWJ1dGVzIHsgQXR0cmlidXRlTm9uZSB9OworICAgICAgICBi
b29sIGlzUmVwbGFjZUFsbG93ZWQgeyBmYWxzZSB9OworICAgICAgICBib29sIGhhc0NvbnRlbnQg
eyBmYWxzZSB9OworCisgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikg
Y29uc3Q7CisgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYs
IFBvc3RMYXlvdXREYXRhJik7CisgICAgfTsKKworICAgIGNvbnN0IFBvc3RMYXlvdXREYXRhJiBw
b3N0TGF5b3V0RGF0YSgpIGNvbnN0OworICAgIFBvc3RMYXlvdXREYXRhJiBwb3N0TGF5b3V0RGF0
YSgpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCkBAIC05OCw4ICs4NywyNyBAQCBzdHJ1
Y3QgRWRpdG9yU3RhdGUgewogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBF
ZGl0b3JTdGF0ZSYpOworCisjaWYgUExBVEZPUk0oSU9TKQorcHJpdmF0ZToKKyAgICBQb3N0TGF5
b3V0RGF0YSBtX3Bvc3RMYXlvdXREYXRhOworI2VuZGlmCiB9OwogCisjaWYgUExBVEZPUk0oSU9T
KQoraW5saW5lIGF1dG8gRWRpdG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkgLT4gUG9zdExheW91
dERhdGEmCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghaXNNaXNzaW5nUG9zdExheW91dERh
dGEsICJBdHRlbXB0IHRvIGFjY2VzcyBwb3N0IGxheW91dCBkYXRhIGJlZm9yZSByZWNlaXZpbmcg
aXQiKTsKKyAgICByZXR1cm4gbV9wb3N0TGF5b3V0RGF0YTsKK30KKworaW5saW5lIGF1dG8gRWRp
dG9yU3RhdGU6OnBvc3RMYXlvdXREYXRhKCkgY29uc3QgLT4gY29uc3QgUG9zdExheW91dERhdGEm
Cit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghaXNNaXNzaW5nUG9zdExheW91dERhdGEsICJB
dHRlbXB0IHRvIGFjY2VzcyBwb3N0IGxheW91dCBkYXRhIGJlZm9yZSByZWNlaXZpbmcgaXQiKTsK
KyAgICByZXR1cm4gbV9wb3N0TGF5b3V0RGF0YTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZiAv
LyBFZGl0b3JTdGF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDBiOWY0NWE3YjI0NTFjMWI2NWFk
NzI1MmVhZGZkY2UxMWJkY2NkYzAuLjU0YzlkMzUzOTM5ZTBjNDlhNTg5MTdhMThiZDg2MGQ5M2Uz
MWM1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04NSw4ICs4NSw5IEBAIFdLU2VsZWN0aW9uRHJh
d2luZ0luZm86OldLU2VsZWN0aW9uRHJhd2luZ0luZm8oY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRv
clN0YXRlKQogICAgIH0KIAogICAgIHR5cGUgPSBTZWxlY3Rpb25UeXBlOjpSYW5nZTsKLSAgICBj
YXJldFJlY3QgPSBlZGl0b3JTdGF0ZS5jYXJldFJlY3RBdEVuZDsKLSAgICBzZWxlY3Rpb25SZWN0
cyA9IGVkaXRvclN0YXRlLnNlbGVjdGlvblJlY3RzOworICAgIGF1dG8mIHBvc3RMYXlvdXREYXRh
ID0gZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKTsKKyAgICBjYXJldFJlY3QgPSBwb3N0TGF5
b3V0RGF0YS5jYXJldFJlY3RBdEVuZDsKKyAgICBzZWxlY3Rpb25SZWN0cyA9IHBvc3RMYXlvdXRE
YXRhLnNlbGVjdGlvblJlY3RzOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdL
U2VsZWN0aW9uRHJhd2luZ0luZm8mIGEsIGNvbnN0IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8mIGIp
CkBAIC05NzQsMTMgKzk3NSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdl
c3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogCiAtIChOU0Fy
cmF5ICopd2ViU2VsZWN0aW9uUmVjdHMKIHsKLSAgICB1bnNpZ25lZCBzaXplID0gX3BhZ2UtPmVk
aXRvclN0YXRlKCkuc2VsZWN0aW9uUmVjdHMuc2l6ZSgpOworICAgIGNvbnN0IGF1dG8mIHNlbGVj
dGlvblJlY3RzID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rp
b25SZWN0czsKKyAgICB1bnNpZ25lZCBzaXplID0gc2VsZWN0aW9uUmVjdHMuc2l6ZSgpOwogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTXV0YWJsZUFycmF5ICp3
ZWJSZWN0cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaXplXTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFdlYkNv
cmU6OlNlbGVjdGlvblJlY3QmIGNvcmVSZWN0ID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0
aW9uUmVjdHNbaV07CisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvblJlY3QmIGNvcmVS
ZWN0ID0gc2VsZWN0aW9uUmVjdHNbaV07CiAgICAgICAgIFdlYlNlbGVjdGlvblJlY3QgKndlYlJl
Y3QgPSBbV2ViU2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0XTsKICAgICAgICAgd2ViUmVjdC5y
ZWN0ID0gY29yZVJlY3QucmVjdCgpOwogICAgICAgICB3ZWJSZWN0LndyaXRpbmdEaXJlY3Rpb24g
PSBjb3JlUmVjdC5kaXJlY3Rpb24oKSA9PSBMVFIgPyBXS1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9S
aWdodCA6IFdLV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OwpAQCAtMTI2NSwxOSArMTI2Nywx
OSBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRW
aWV3KiBjb250ZW50VmlldykKIC0gKHZvaWQpX2FkZFNob3J0Y3V0OihpZClzZW5kZXIKIHsKICAg
ICBpZiAoX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2aWNlRm9yOmZyb21SZWN0
OildKQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1RleHRTZXJ2aWNlRm9y
OltzZWxmIHNlbGVjdGVkVGV4dF0gZnJvbVJlY3Q6X3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0
aW9uUmVjdHNbMF0ucmVjdCgpXTsKKyAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNo
b3dUZXh0U2VydmljZUZvcjpbc2VsZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0
b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVjdCgpXTsKICAg
ICBlbHNlIGlmIChfd2ViU2VsZWN0aW9uQXNzaXN0YW50ICYmIFtfd2ViU2VsZWN0aW9uQXNzaXN0
YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2aWNlRm9yOmZyb21S
ZWN0OildKQotICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93VGV4dFNlcnZpY2VG
b3I6W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxl
Y3Rpb25SZWN0c1swXS5yZWN0KCldOworICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBz
aG93VGV4dFNlcnZpY2VGb3I6W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKV07CiB9
CiAKIC0gKE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0CiB7Ci0gICAgcmV0dXJuIChOU1N0cmluZyAq
KV9wYWdlLT5lZGl0b3JTdGF0ZSgpLndvcmRBdFNlbGVjdGlvbjsKKyAgICByZXR1cm4gKE5TU3Ry
aW5nICopX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rp
b247CiB9CiAKIC0gKEJPT0wpaXNSZXBsYWNlQWxsb3dlZAogewotICAgIHJldHVybiBfcGFnZS0+
ZWRpdG9yU3RhdGUoKS5pc1JlcGxhY2VBbGxvd2VkOworICAgIHJldHVybiBfcGFnZS0+ZWRpdG9y
U3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmlzUmVwbGFjZUFsbG93ZWQ7CiB9CiAKIC0gKHZvaWQp
cmVwbGFjZVRleHQ6KE5TU3RyaW5nICopdGV4dCB3aXRoVGV4dDooTlNTdHJpbmcgKil3b3JkCkBA
IC0xMjkyLDE3ICsxMjk0LDE4IEBAIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVj
ZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQogCiAtICh2b2lkKV9wcm9tcHRGb3JS
ZXBsYWNlOihpZClzZW5kZXIKIHsKLSAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkud29yZEF0
U2VsZWN0aW9uLmlzRW1wdHkoKSkKKyAgICBjb25zdCBhdXRvJiB3b3JkQXRTZWxlY3Rpb24gPSBf
cGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlvbjsKKyAg
ICBpZiAod29yZEF0U2VsZWN0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNjaGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4dDopXSkKLSAgICAgICAgW190ZXh0U2VsZWN0aW9u
QXNzaXN0YW50IHNjaGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4dDpfcGFnZS0+ZWRpdG9yU3RhdGUo
KS53b3JkQXRTZWxlY3Rpb25dOworICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2No
ZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OndvcmRBdFNlbGVjdGlvbl07CiB9CiAKIC0gKHZvaWQp
X3RyYW5zbGl0ZXJhdGVDaGluZXNlOihpZClzZW5kZXIKIHsKICAgICBpZiAoW190ZXh0U2VsZWN0
aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2NoZWR1bGVDaGluZXNl
VHJhbnNsaXRlcmF0aW9uRm9yVGV4dDopXSkKLSAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0
YW50IHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6X3BhZ2UtPmVkaXRvclN0
YXRlKCkud29yZEF0U2VsZWN0aW9uXTsKKyAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50
IHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6X3BhZ2UtPmVkaXRvclN0YXRl
KCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb25dOwogfQogCiAtICh2b2lkKV9yZWFu
YWx5emU6KGlkKXNlbmRlcgpAQCAtMTMyMiwxMCArMTMyNSwxMSBAQCBzdGF0aWMgdm9pZCBjYW5j
ZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKIAog
ICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIHJlc3VsdCA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnldOwogCisgICAgYXV0byB0eXBpbmdBdHRyaWJ1dGVzID0gX3BhZ2UtPmVkaXRvclN0
YXRlKCkucG9zdExheW91dERhdGEoKS50eXBpbmdBdHRyaWJ1dGVzOwogICAgIENURm9udFN5bWJv
bGljVHJhaXRzIHN5bWJvbGljVHJhaXRzID0gMDsKLSAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRl
KCkudHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZUJvbGQpCisgICAgaWYgKHR5cGluZ0F0dHJp
YnV0ZXMgJiBBdHRyaWJ1dGVCb2xkKQogICAgICAgICBzeW1ib2xpY1RyYWl0cyB8PSBrQ1RGb250
Qm9sZFRyYWl0OwotICAgIGlmIChfcGFnZS0+ZWRpdG9yU3RhdGUoKS50eXBpbmdBdHRyaWJ1dGVz
ICYgQXR0cmlidXRlSXRhbGljcykKKyAgICBpZiAodHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0
ZUl0YWxpY3MpCiAgICAgICAgIHN5bWJvbGljVHJhaXRzIHw9IGtDVEZvbnRUcmFpdEl0YWxpYzsK
IAogICAgIC8vIFdlIGNob3NlIGEgcmFuZG9tIGZvbnQgZmFtaWx5IGFuZCBzaXplLgpAQCAtMTMz
OSw3ICsxMzQzLDcgQEAgc3RhdGljIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3Nhcnko
V0tDb250ZW50VmlldyogY29udGVudFZpZXcpCiAgICAgaWYgKGZvbnQpCiAgICAgICAgIFtyZXN1
bHQgc2V0T2JqZWN0OihpZClmb250LmdldCgpIGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsK
ICAgICAKLSAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkudHlwaW5nQXR0cmlidXRlcyAmIEF0
dHJpYnV0ZVVuZGVybGluZSkKKyAgICBpZiAodHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZVVu
ZGVybGluZSkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1
dGVOYW1lXTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzc3LDcgKzEzODEsNyBAQCBzdGF0
aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250
ZW50VmlldykKICAgICAgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzSW5QYXNzd29yZEZp
ZWxkIHx8ICEoaGFzV2ViU2VsZWN0aW9uIHx8IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlv
bklzUmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgICAgIE5TVUludGVnZXIg
dGV4dExlbmd0aCA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGVkVGV4dExlbmd0aDsKKyAg
ICAgICAgTlNVSW50ZWdlciB0ZXh0TGVuZ3RoID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExh
eW91dERhdGEoKS5zZWxlY3RlZFRleHRMZW5ndGg7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYmUgY2FsbGluZyBVSVJlZmVyZW5jZUxpYnJhcnlWaWV3Q29udHJvbGxlciB0byBjaGVjayBp
ZiB0aGUgbGVuZ3RoIGlzCiAgICAgICAgIC8vIGFjY2VwdGFibGUsIGJ1dCB0aGUgaW50ZXJmYWNl
IHRha2VzIGEgc3RyaW5nLgogICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTUyNTQ0MDY+CkBA
IC0xNDA2LDcgKzE0MTAsNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vz
c2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKICAgICB9CiAKICAgICBpZiAoYWN0aW9u
ID09IEBzZWxlY3RvcihfcHJvbXB0Rm9yUmVwbGFjZTopKSB7Ci0gICAgICAgIGlmICghX3BhZ2Ut
PmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCku
aXNSZXBsYWNlQWxsb3dlZCB8fCAhW1tVSUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0
b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRdKQorICAgICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0
ZSgpLnNlbGVjdGlvbklzUmFuZ2UgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXRE
YXRhKCkuaXNSZXBsYWNlQWxsb3dlZCB8fCAhW1tVSUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5j
ZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRdKQogICAgICAgICAgICAgcmV0dXJuIE5POwog
ICAgICAgICBpZiAoW1tzZWxmIHNlbGVjdGVkVGV4dF0gX2NvbnRhaW5zQ0pTY3JpcHRzT25seV0p
CiAgICAgICAgICAgICByZXR1cm4gTk87CkBAIC0xNDE0LDEzICsxNDE4LDEzIEBAIHN0YXRpYyB2
b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRW
aWV3KQogICAgIH0KIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF90cmFuc2xpdGVyYXRl
Q2hpbmVzZTopKSB7Ci0gICAgICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9u
SXNSYW5nZSB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNSZXBsYWNlQWxsb3dlZCB8fCAhW1tV
SUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRd
KQorICAgICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UgfHwg
IV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuaXNSZXBsYWNlQWxsb3dlZCB8
fCAhW1tVSUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0Vu
YWJsZWRdKQogICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICByZXR1cm4gVUlLZXlib2Fy
ZEVuYWJsZWRJbnB1dE1vZGVzQWxsb3dDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9yVGV4dChbc2Vs
ZiBzZWxlY3RlZFRleHRdKTsKICAgICB9CiAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcihf
cmVhbmFseXplOikpIHsKLSAgICAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rp
b25Jc1JhbmdlIHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc1JlcGxhY2VBbGxvd2VkIHx8ICFb
W1VJS2V5Ym9hcmRJbXBsIGFjdGl2ZUluc3RhbmNlXSBhdXRvY29ycmVjdFNwZWxsaW5nRW5hYmxl
ZF0pCisgICAgICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSB8
fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5pc1JlcGxhY2VBbGxvd2Vk
IHx8ICFbW1VJS2V5Ym9hcmRJbXBsIGFjdGl2ZUluc3RhbmNlXSBhdXRvY29ycmVjdFNwZWxsaW5n
RW5hYmxlZF0pCiAgICAgICAgICAgICByZXR1cm4gTk87CiAgICAgICAgIHJldHVybiBVSUtleWJv
YXJkQ3VycmVudElucHV0TW9kZUFsbG93c0NoaW5lc2VPckphcGFuZXNlUmVhbmFseXNpc0ZvclRl
eHQoW3NlbGYgc2VsZWN0ZWRUZXh0XSk7CiAgICAgfQpAQCAtMTUxOCw3ICsxNTIyLDcgQEAgc3Rh
dGljIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50VmlldyogY29u
dGVudFZpZXcpCiAKIC0gKHZvaWQpX3Nob3dEaWN0aW9uYXJ5OihOU1N0cmluZyAqKXRleHQKIHsK
LSAgICBDR1JlY3QgcHJlc2VudGF0aW9uUmVjdCA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVj
dGlvblJlY3RzWzBdLnJlY3QoKTsKKyAgICBDR1JlY3QgcHJlc2VudGF0aW9uUmVjdCA9IF9wYWdl
LT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVjdCgp
OwogICAgIGlmIChfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCkKICAgICAgICAgW190ZXh0U2VsZWN0
aW9uQXNzaXN0YW50IHNob3dEaWN0aW9uYXJ5Rm9yOnRleHQgZnJvbVJlY3Q6cHJlc2VudGF0aW9u
UmVjdF07CiAgICAgZWxzZQpAQCAtMTkyNSwxOCArMTkyOSwxOCBAQCBzdGF0aWMgdm9pZCBzZWxl
Y3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6
OkludFBvaQogCiAtIChVVEYzMkNoYXIpX2NoYXJhY3RlckJlZm9yZUNhcmV0U2VsZWN0aW9uCiB7
Ci0gICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlv
bjsKKyAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5jaGFy
YWN0ZXJCZWZvcmVTZWxlY3Rpb247CiB9CiAKIC0gKFVURjMyQ2hhcilfY2hhcmFjdGVySW5SZWxh
dGlvblRvQ2FyZXRTZWxlY3Rpb246KGludClhbW91bnQKIHsKICAgICBzd2l0Y2ggKGFtb3VudCkg
ewogICAgIGNhc2UgMDoKLSAgICAgICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmNoYXJh
Y3RlckFmdGVyU2VsZWN0aW9uOworICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCku
cG9zdExheW91dERhdGEoKS5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbjsKICAgICBjYXNlIC0xOgot
ICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0
aW9uOworICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEo
KS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CiAgICAgY2FzZSAtMjoKLSAgICAgICAgcmV0dXJu
IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKKyAgICAg
ICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkudHdvQ2hhcmFj
dGVyQmVmb3JlU2VsZWN0aW9uOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KQEAgLTE5NDQsNyArMTk0OCw3IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRo
VG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAKIC0gKEJP
T0wpX3NlbGVjdGlvbkF0RG9jdW1lbnRTdGFydAogewotICAgIHJldHVybiAhX3BhZ2UtPmVkaXRv
clN0YXRlKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOworICAgIHJldHVybiAhX3BhZ2UtPmVk
aXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CiB9
CiAKIC0gKENHUmVjdCl0ZXh0Rmlyc3RSZWN0CkBAIC0yMTA4LDggKzIxMTIsOSBAQCBzdGF0aWMg
dm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0
IFdlYkNvcmU6OkludFBvaQogCiAtIChVSVRleHRSYW5nZSAqKXNlbGVjdGVkVGV4dFJhbmdlCiB7
Ci0gICAgRmxvYXRSZWN0IHN0YXJ0UmVjdCA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmNhcmV0UmVj
dEF0U3RhcnQ7Ci0gICAgRmxvYXRSZWN0IGVuZFJlY3QgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5j
YXJldFJlY3RBdEVuZDsKKyAgICBhdXRvJiBwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhID0gX3Bh
Z2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKTsKKyAgICBGbG9hdFJlY3Qgc3RhcnRS
ZWN0ID0gcG9zdExheW91dEVkaXRvclN0YXRlRGF0YS5jYXJldFJlY3RBdFN0YXJ0OworICAgIEZs
b2F0UmVjdCBlbmRSZWN0ID0gcG9zdExheW91dEVkaXRvclN0YXRlRGF0YS5jYXJldFJlY3RBdEVu
ZDsKICAgICBkb3VibGUgaW52ZXJzZVNjYWxlID0gW3NlbGYgaW52ZXJzZVNjYWxlXTsKICAgICAv
LyBXZSB3YW50IHRvIGtlZXAgdGhlIG9yaWdpbmFsIGNhcmV0IHdpZHRoLCB3aGlsZSB0aGUgaGVp
Z2h0IHNjYWxlcyB3aXRoCiAgICAgLy8gdGhlIGNvbnRlbnQgdGFraW5nIG9yaWVudGF0aW9uIGlu
dG8gYWNjb3VudC4KQEAgLTIxMzcsNyArMjE0Miw3IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNo
YW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9p
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFJlY3Q6c3RhcnRSZWN0CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFJlY3Q6ZW5kUmVjdAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RzOltzZWxmIHdlYlNlbGVjdGlvblJl
Y3RzXQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUZXh0TGVuZ3RoOl9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLnNlbGVjdGVkVGV4dExlbmd0aF07CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxlY3RlZFRleHRMZW5ndGg6cG9zdExheW91dEVkaXRvclN0YXRlRGF0YS5zZWxlY3RlZFRl
eHRMZW5ndGhdOwogfQogCiAtIChDR1JlY3QpY2FyZXRSZWN0Rm9yUG9zaXRpb246KFVJVGV4dFBv
c2l0aW9uICopcG9zaXRpb24KQEAgLTI2NTYsNyArMjY2MSw3IEBAIHN0YXRpYyBVSVRleHRBdXRv
Y2FwaXRhbGl6YXRpb25UeXBlIHRvVUlUZXh0QXV0b2NhcGl0YWxpemUoV2ViQXV0b2NhcGl0YWxp
emVUeXBlCiAKIC0gKEJPT0wpaGFzQ29udGVudAogewotICAgIHJldHVybiBfcGFnZS0+ZWRpdG9y
U3RhdGUoKS5oYXNDb250ZW50OworICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0
TGF5b3V0RGF0YSgpLmhhc0NvbnRlbnQ7CiB9CiAKIC0gKHZvaWQpc2VsZWN0QWxsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKaW5kZXggMzRhZmJiYWRmZGI0ZDk4NmY1ZjdjYTNkY2RkYTQ3MDNmZmU3
OTI2Zi4uYjhjYmNjZWFkZjBiYTNhNDdiMjhiYWJiZGRlMzgxODMzMWE1OTcwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcApAQCAtMTkwLDYgKzE5MCwxMSBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAjZW5kaWYKIH0KIAor
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCgp
Cit7CisgICAgbV9wYWdlLT5zZW5kUG9zdExheW91dEVkaXRvclN0YXRlSWZOZWVkZWQoKTsKK30K
Kwogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc2NhcmRlZENvbXBvc2l0aW9uKEZyYW1lKikKIHsK
ICAgICBtX3BhZ2UtPmRpc2NhcmRlZENvbXBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCA1ZmM2MTMxNjNhZGRkNjNkYTBlNmI0ZjU3N2VkNmE0MjYwODI3MTFmLi43NzA1NTE5NGY0
ZTUwZDcwMzc3MTdiODI1NjVlNWViMTk2ODgxY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAg
LTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5n
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdl
YkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVj
dGlvbkFuZFVwZGF0ZUxheW91dCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJk
ZWRDb21wb3NpdGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQxYjhiN2RiN2Vk
MjBkYWQ3MGZkNmE4NWIyM2E5ODUzYTI4OTAwMWEuLjRiNzliOTNkYzg4Nzg0OTFjMDBjZTVmYTli
ZmE2ZWExYTMzYTE1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTc0MCw3ICs3NDAsNyBAQCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kg
V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgU3RyaQog
fQogI2VuZGlmCiAKLUVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkgY29uc3QKK0Vk
aXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQg
c2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAogewogICAgIEZyYW1lJiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTc2
NSw3ICs3NjUsNyBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAg
ICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0gZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KTsKICAgICByZXN1bHQuc2hvdWxkSWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UgPSBm
cmFtZS5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpOwogICAgIAot
ICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCk7CisgICAgcGxhdGZvcm1FZGl0
b3JTdGF0ZShmcmFtZSwgcmVzdWx0LCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpOwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzMzcsNiArNDMzNyw5IEBAIHZvaWQgV2ViUGFnZTo6
Y2FuY2VsQ29tcG9zaXRpb24oKQogCiB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGlvbigp
CiB7CisgICAgYXV0byBlZGl0b3JTdGF0ZSA9IHRoaXMtPmVkaXRvclN0YXRlKEluY2x1ZGVQb3N0
TGF5b3V0RGF0YUhpbnQ6Ok5vKTsKKyAgICBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91
dERhdGEgPSBlZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YTsKKwogI2lmIFBMQVRG
T1JNKE1BQykgJiYgVVNFKEFTWU5DX05TVEVYVElOUFVUQ0xJRU5UKQogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
Ly8gQWJhbmRvbiB0aGUgY3VycmVudCBpbmxpbmUgaW5wdXQgc2Vzc2lvbiBpZiBzZWxlY3Rpb24g
Y2hhbmdlZCBmb3IgYW55IG90aGVyIHJlYXNvbiBidXQgYW4gaW5wdXQgbWV0aG9kIGRpcmVjdCBh
Y3Rpb24uCkBAIC00MzQ1LDExICs0MzQ4LDExIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2Vs
ZWN0aW9uKCkKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgY2FuY2VsIGNvbXBvc2l0aW9uIHdoZW4g
c2VsZWN0aW9uIGNoYW5nZXMgdG8gTm9TZWxlY3Rpb24sIGJ1dCB3ZSBwcm9iYWJseSBzaG91bGQu
CiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkgJiYgIWZyYW1lLmVkaXRv
cigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkgJiYgIWZyYW1lLnNlbGVjdGlv
bigpLmlzTm9uZSgpKSB7CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9u
KCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q29tcG9zaXRpb25XYXND
YW5jZWxlZChlZGl0b3JTdGF0ZSgpKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q29tcG9zaXRpb25XYXNDYW5jZWxlZChlZGl0b3JTdGF0ZSkpOwogICAgIH0gZWxzZQot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChl
ZGl0b3JTdGF0ZSgpKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRp
dG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKSk7CiAjZWxzZQotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpLCBwYWdlSUQo
KSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0
YXRlKSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDM1Nyw2ICs0MzYwLDE1
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKCkKICNlbmRpZgogfQogCit2b2lk
IFdlYlBhZ2U6OnNlbmRQb3N0TGF5b3V0RWRpdG9yU3RhdGVJZk5lZWRlZCgpCit7CisgICAgaWYg
KCFtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEpCisgICAgICAgIHJldHVybjsK
KworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVk
aXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6OlllcykpLCBwYWdlSUQoKSwgSVBD
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1faXNF
ZGl0b3JTdGF0ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IGZhbHNlOworfQorCiB2b2lkIFdlYlBh
Z2U6OmRpc2NhcmRlZENvbXBvc2l0aW9uKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNvbXBvc2l0aW9uV2FzQ2FuY2VsZWQoZWRpdG9yU3RhdGUoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNTFjMGVmMjQ0Y2JmMTVl
Mjc3YzY4NDc3ZDBmZjliNDNiY2NmN2U0Ny4uNzc5YjY4NmExZDU3MDEzY2M1ZmU2ZGQ4NGNkZTBj
NzZhY2Y0MjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0zMjcsNyArMzI3LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgCi0gICAgRWRpdG9yU3RhdGUgZWRpdG9yU3Rh
dGUoKSBjb25zdDsKKyAgICBlbnVtIGNsYXNzIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBO
bywgWWVzIH07CisgICAgRWRpdG9yU3RhdGUgZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXRE
YXRhSGludCA9IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6OlllcykgY29uc3Q7CisgICAgdm9p
ZCBzZW5kUG9zdExheW91dEVkaXRvclN0YXRlSWZOZWVkZWQoKTsKIAogICAgIFN0cmluZyByZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAgIFN0cmluZyByZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nKCkgY29uc3Q7CkBAIC04NzMsNyAr
ODc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAgICAg
dm9pZCBwbGF0Zm9ybURldGFjaCgpOwotICAgIHZvaWQgcGxhdGZvcm1FZGl0b3JTdGF0ZShXZWJD
b3JlOjpGcmFtZSYsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0OworICAgIHZvaWQgcGxhdGZv
cm1FZGl0b3JTdGF0ZShXZWJDb3JlOjpGcmFtZSYsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1
ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFn
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jik7CkBA
IC0xMzM4LDYgKzEzNDAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX21haW5GcmFtZVByb2dy
ZXNzQ29tcGxldGVkOwogICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHM7CisgICAgYm9vbCBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAppbmRleCAzMzU0MDE3OTI5
MGMyMzA4NDZhNzk2YmY4NGFkYTJmNjk3N2FkZjI4Li5jMjMxYjYyNDk5NDJmNWY5YTNmOTJhNjNi
ZjM5ZDVmYzczNjc2NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0
b3JTdGF0ZShGcmFtZSYsIEVkaXRvclN0YXRlJikgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZShGcmFtZSYsIEVkaXRvclN0YXRlJiwgSW5jbHVkZVBvc3RMYXlvdXREYXRh
SGludCkgY29uc3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggMmQwMzI0YTUxNzAzOTAxMWQzOGYzZTE5
OTdmNDY0NzA2ZmUyMzVkMC4uM2YyYWI5NDViYmE5ZDA2MzhjMWM5M2JmOWFjYTRiZDdhNjdiOWYx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlBhZ2VHdGsuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EZXRh
Y2goKQogewogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZy
YW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAordm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVk
aXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RM
YXlvdXREYXRhSGludCkgY29uc3QKIHsKICAgICByZXN1bHQuY3Vyc29yUmVjdCA9IGZyYW1lLnNl
bGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBiMGFmMzc0MWJh
YzE0NTI3MDAwOWVmZTk2OWZiNDU3OTE0ZTVhNGJiLi40YTRjZWQxYmZjYzc3ODI4YzVmZDEyNzAy
NDEwMmQ1ZjczZTMyMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMjgsOSArMTI4LDggQEAgdm9pZCBXZWJQYWdl
OjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0
b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit2b2lkIFdl
YlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVz
dWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0
YSkgY29uc3QKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoZnJhbWUuZWRpdG9yKCkuaGFzQ29t
cG9zaXRpb24oKSkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IGNvbXBvc2l0aW9uUmFuZ2UgPSBm
cmFtZS5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CiAgICAgICAgIFZlY3RvcjxXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0PiBjb21wb3NpdGlvblJlY3RzOwpAQCAtMTQzLDMxICsxNDIsNDMgQEAg
dm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3Rh
dGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAgICAgIHJlc3VsdC5sYXN0TWFya2VkUmVjdCA9IHJl
c3VsdC5maXJzdE1hcmtlZFJlY3Q7CiAgICAgICAgIHJlc3VsdC5tYXJrZWRUZXh0ID0gcGxhaW5U
ZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbXBvc2l0aW9uUmFuZ2UuZ2V0KCkpOwogICAgIH0K
KworICAgIC8vIFdlIG9ubHkgc2V0IHRoZSByZW1haW5pbmcgRWRpdG9yU3RhdGUgZW50cmllcyBp
ZiB0aGUgbGF5b3V0IGlzIGRvbmUuIFRvIGNvbXB1dGUgdGhlc2UKKyAgICAvLyBlbnRyaWVzLCB3
ZSBuZWVkIHRoZSBsYXlvdXQgdG8gYmUgZG9uZSBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2Vy
IGEgc3luY2hyb25vdXMKKyAgICAvLyBsYXlvdXQgYXMgdGhpcyB3b3VsZCBiZSBiYWQgZm9yIHBl
cmZvcm1hbmNlLiBJZiB3ZSBoYXZlIGEgY29tcG9zaXRpb24sIHdlIHNlbmQgZXZlcnl0aGluZwor
ICAgIC8vIHJpZ2h0IGF3YXkgYXMgdGhlIFVJUHJvY2VzcyBuZWVkcyB0aGUgY2FyZXRSZWN0cyBB
U0FQIGZvciBtYXJrZWQgdGV4dC4KKyAgICBpZiAoc2hvdWxkSW5jbHVkZVBvc3RMYXlvdXREYXRh
ID09IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Ok5vICYmICFmcmFtZS5lZGl0b3IoKS5oYXND
b21wb3NpdGlvbigpKSB7CisgICAgICAgIHJlc3VsdC5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSA9
IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvJiBwb3N0TGF5b3V0RGF0
YSA9IHJlc3VsdC5wb3N0TGF5b3V0RGF0YSgpOwogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1l
LnZpZXcoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewot
ICAgICAgICByZXN1bHQuY2FyZXRSZWN0QXRTdGFydCA9IHZpZXctPmNvbnRlbnRzVG9Sb290Vmll
dyhmcmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwotICAgICAgICByZXN1
bHQuY2FyZXRSZWN0QXRFbmQgPSByZXN1bHQuY2FyZXRSZWN0QXRTdGFydDsKKyAgICAgICAgcG9z
dExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydCA9IHZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhm
cmFtZS5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgICAgICBwb3N0TGF5
b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9IHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQ7
CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGNoZWNrIHNob3VsZCB0YWtlIGludG8g
YWNjb3VudCB3cml0aW5nIGRpcmVjdGlvbi4KLSAgICAgICAgcmVzdWx0LmlzUmVwbGFjZUFsbG93
ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
c2VsZWN0aW9uLnN0YXJ0KCksIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Ci0g
ICAgICAgIHJlc3VsdC53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2Uod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQoKSk7Cisg
ICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50
RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFdv
cmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRh
LndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSh3b3JkUmFu
Z2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKICAgICAgICAgaWYgKHNl
bGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7Ci0gICAgICAgICAgICBjaGFyYWN0ZXJzQXJv
dW5kUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIHJlc3VsdC5jaGFyYWN0ZXJBZnRlclNlbGVj
dGlvbiwgcmVzdWx0LmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiwgcmVzdWx0LnR3b0NoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbik7CisgICAgICAgICAgICBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24o
c2VsZWN0aW9uLnN0YXJ0KCksIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckFmdGVyU2VsZWN0aW9u
LCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRh
LnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbik7CiAgICAgICAgICAgICBOb2RlKiByb290ID0g
c2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICAgICAgICAgIHJlc3VsdC5oYXND
b250ZW50ID0gcm9vdCAmJiByb290LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWlzRW5kT2ZFZGl0YWJs
ZU9yTm9uRWRpdGFibGVDb250ZW50KGZpcnN0UG9zaXRpb25Jbk5vZGUocm9vdCkpOworICAgICAg
ICAgICAgcG9zdExheW91dERhdGEuaGFzQ29udGVudCA9IHJvb3QgJiYgcm9vdC0+aGFzQ2hpbGRO
b2RlcygpICYmICFpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChmaXJzdFBvc2l0
aW9uSW5Ob2RlKHJvb3QpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLmlz
UmFuZ2UoKSkgewotICAgICAgICByZXN1bHQuY2FyZXRSZWN0QXRTdGFydCA9IHZpZXctPmNvbnRl
bnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmFic29sdXRl
Q2FyZXRCb3VuZHMoKSk7Ci0gICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNv
bnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0
ZUNhcmV0Qm91bmRzKCkpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0
ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24uc3Rh
cnQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuY2Fy
ZXRSZWN0QXRFbmQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHNl
bGVjdGlvbi5lbmQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKICAgICAgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAg
ICAgIHNlbGVjdGVkUmFuZ2UtPmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhyZXN1bHQuc2VsZWN0aW9u
UmVjdHMpOwotICAgICAgICBjb252ZXJ0U2VsZWN0aW9uUmVjdHNUb1Jvb3RWaWV3KHZpZXcsIHJl
c3VsdC5zZWxlY3Rpb25SZWN0cyk7CisgICAgICAgIHNlbGVjdGVkUmFuZ2UtPmNvbGxlY3RTZWxl
Y3Rpb25SZWN0cyhwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25SZWN0cyk7CisgICAgICAgIGNvbnZl
cnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXcodmlldywgcG9zdExheW91dERhdGEuc2VsZWN0aW9u
UmVjdHMpOwogICAgICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5n
Tm9CcmVha1NwYWNlKHNlbGVjdGVkUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhh
dmlvciwgdHJ1ZSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzYWxsb3cgcmVwbGFj
ZSB3aGVuIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBDSiBjaGFyYWN0ZXJzLgotICAgICAgICBy
ZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVz
dWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuY29udGFpbnNPbmx5V2hpdGVz
cGFjZSgpOwotICAgICAgICByZXN1bHQuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2VsZWN0ZWRUZXh0
Lmxlbmd0aCgpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVz
dWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNl
bGVjdGVkVGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnNlbGVjdGVkVGV4dExlbmd0aCA9IHNlbGVjdGVkVGV4dC5sZW5ndGgoKTsKICAgICAgICAg
Y29uc3QgaW50IG1heFNlbGVjdGVkVGV4dExlbmd0aCA9IDIwMDsKICAgICAgICAgaWYgKHNlbGVj
dGVkVGV4dC5sZW5ndGgoKSA8PSBtYXhTZWxlY3RlZFRleHRMZW5ndGgpCi0gICAgICAgICAgICBy
ZXN1bHQud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0ZWRUZXh0OworICAgICAgICAgICAgcG9zdExh
eW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0ZWRUZXh0OwogICAgIH0KICAgICBpZiAo
IXNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBOb2RlKiBub2RlVG9SZW1vdmU7CkBAIC0x
NzYsMTggKzE4NywxOCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUm
IGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogICAgICAgICAgICAgQ1RGb250U3lt
Ym9saWNUcmFpdHMgdHJhaXRzID0gZm9udCA/IENURm9udEdldFN5bWJvbGljVHJhaXRzKGZvbnQp
IDogMDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHRyYWl0cyAmIGtDVEZvbnRUcmFp
dEJvbGQpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmli
dXRlQm9sZDsKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVz
IHw9IEF0dHJpYnV0ZUJvbGQ7CiAgICAgICAgICAgICBpZiAodHJhaXRzICYga0NURm9udFRyYWl0
SXRhbGljKQotICAgICAgICAgICAgICAgIHJlc3VsdC50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJp
YnV0ZUl0YWxpY3M7CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmli
dXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IGZyYW1lLnNlbGVjdGlvbigpLnR5cGluZ1N0
eWxlKCk7CiAgICAgICAgICAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUtPnN0eWxl
KCkpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSB0eXBpbmdTdHlsZS0+c3R5bGUo
KS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KTsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuY29udGFpbnMoInVuZGVybGluZSIpKQot
ICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVV
bmRlcmxpbmU7CisgICAgICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJp
YnV0ZXMgfD0gQXR0cmlidXRlVW5kZXJsaW5lOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBpZiAoc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVj
b3JhdGlvblVuZGVybGluZSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGluZ0F0dHJp
YnV0ZXMgfD0gQXR0cmlidXRlVW5kZXJsaW5lOworICAgICAgICAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpp
bmRleCA1ZjU2N2QxZTkyODMwZjk0NzI0ZjYxYmVhMDJkOThmZDAxNTY5Yjk3Li5lNzc0MWU5YWVk
ZWE1ZmE0ZTNmZWY0NzkyN2QzMTQ3MDA0MGJlY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMTgsNyArMTE4LDcg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURldGFjaCgpCiAgICAgW21fbW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50IHNldFdlYlBhZ2U6bnVsbHB0cl07CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit2
b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0
ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdAogewogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248394</attachid>
            <date>2015-03-10 21:25:53 -0700</date>
            <delta_ts>2015-04-08 20:20:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142536-20150310212529.patch</filename>
            <type>text/plain</type>
            <size>41451</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTU5MzUzMzhiYTBj
ZTdjY2RkZGUzNzMxOWJkZWQ4MGY5NmE4OC4uMzk0YWY1YTUwYmIyMzFmYmQ1ZDRmYjQ1NzVhNjA3
MDZkN2FhYjhmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gZWRpdG9yU3RhdGUo
KSBzaG91bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMgbGF5b3V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1MzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzIwMDQxNTA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVucmljYSBDYXN1Y2NpLgor
CisgICAgICAgIEFkZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBjYWxsYmFj
ayB0byBFZGl0b3JDbGllbnQKKyAgICAgICAgdGhhdCBpcyBjYWxsZWQgYXQgdGhlIGVuZCBvZiBG
cmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKCkuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp1cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorCiAyMDE1LTAzLTEwICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIGV2ZW50IGhhbmRs
ZXIgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4ZWNiMGJhZDM0ZTg1OGNiMzMzYTU5NmIyNzA2
YTdjMmUzZGMzODNmLi5hYmNkYTk0ZWI4YWI2ZWM3YmJiOGU5ZTczOWIzNzEyNWU0ZTU3ZmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMTAgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBlZGl0b3JTdGF0ZSgpIHNob3Vs
ZCBub3QgY2F1c2UgYSBzeW5jaHJvbm91cyBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjUzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjAwNDE1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRW5yaWNhIENhc3VjY2kuCisKKyAgICAg
ICAgUHJvdmlkZSBpbXBsZW1lbnRhdGlvbiBmb3IgRWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VTZWxl
Y3Rpb25BbmRVcGRhdGVMYXlvdXQoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorCiAyMDE1LTAzLTEwICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggNmVjZjQxMjU1MTYyZmExMzg5OTc0ZjY1MDBlODQxYzk2ZTE3MGRkMS4uMjMxNzQyYmYzOTZk
Y2RjZjAxZmFhMDUwZmU3MGYwZmY4MzhjZjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDE1LTAzLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgW2lPU10gZWRpdG9yU3RhdGUoKSBzaG91bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMg
bGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDI1MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwMDQxNTA2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVucmljYSBDYXN1Y2NpLgorCisgICAgICAgIFByb3ZpZGUgaW1wbGVtZW50YXRpb24g
Zm9yIEVkaXRvckNsaWVudDo6ZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxNS0wMy0w
NCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBB
WDogSW1wbGVtZW50IHN1cHBvcnQgZm9yIEFSSUEgMS4xICdzd2l0Y2gnIHJvbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBkMGYwZTk4ZGExZTFlYmJhNWMyYzJiMWFiYWQwN2NmNzhlYThiY2JhLi41MjUyYjU4Y2Ix
YjI3ZGY1Y2E5OWUzMDIxZjYyM2VkNGUyZTJlODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjQg
QEAKIDIwMTUtMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAg
ICBbaU9TXSBlZGl0b3JTdGF0ZSgpIHNob3VsZCBub3QgY2F1c2UgYSBzeW5jaHJvbm91cyBsYXlv
dXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjUz
NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjAwNDE1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRW5yaWNhIENhc3VjY2kuCisKKyAgICAgICAgcGxhdGZvcm1FZGl0b3JTdGF0ZSgpIG9uIGlP
UyBkb2VzIGEgc3luY2hyb25vdXMgbGF5b3V0IHRvIGNvbXB1dGUgc29tZQorICAgICAgICBvZiB0
aGUgRWRpdG9yU3RhdGUgbWVtYmVycyAoZS5nLiBjYXJldFJlY3RBdFN0YXJ0IC8gY2FyZXRSZWN0
QXRFbmQpLgorICAgICAgICBUaGlzIGlzIGJhZCBmb3IgcGVyZm9ybWFuY2UgYXMgdGhpcyBpcyBj
YWxsZWQgZXZlcnkgdGltZSB0aGUgc2VsZWN0aW9uCisgICAgICAgIGlzIGNoYW5nZWQgKHdoaWNo
IGhhcHBlbnMgZm9yIGUuZy4gd2hlbiB5b3Ugc2V0IHRoZSB2YWx1ZSBvZiBhIGZvY3VzZWQKKyAg
ICAgICAgSFRNTElucHV0RWxlbWVudCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRo
ZSBiZWhhdmlvciBvbiBpT1MgdG8gb25seSBzZW5kIGEgcGFydGlhbCBFZGl0b3JTdGF0ZQorICAg
ICAgICBvbiBzZWxlY3Rpb24gY2hhbmdlIHNvIHRoYXQgdGhlIFVJUHJvY2VzcyBnZXRzIG1vc3Qg
b2YgdGhlIGluZm9ybWF0aW9uCisgICAgICAgICh0aGUgb25lcyB0aGF0IGRvIG5vdCByZXF1aXJl
IHN0eWxlIHJlY2FsYyBvciBsYXlvdXQpIEFTQVAuIEEgZnVsbCBFZGl0b3IKKyAgICAgICAgc3Rh
dGUgaXMgdGhlbiBzZW50IGFmdGVyIHRoZSBhc3luY2hyb25vdXMgbGF5b3V0IGlzIGRvbmUuCisK
KyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JTdGF0ZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JT
dGF0ZTo6RWRpdG9yU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpXS1NlbGVjdGlvbkRy
YXdpbmdJbmZvOjpXS1NlbGVjdGlvbkRyYXdpbmdJbmZvKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyB3ZWJTZWxlY3Rpb25SZWN0c10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGRT
aG9ydGN1dDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RlZFRleHRdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBpc1JlcGxhY2VBbGxvd2VkXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3Byb21wdEZvclJlcGxhY2U6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3RyYW5zbGl0ZXJhdGVDaGluZXNlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRl
eHRTdHlsaW5nQXRQb3NpdGlvbjppbkRpcmVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3Nob3dEaWN0aW9uYXJ5Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFy
YWN0ZXJCZWZvcmVDYXJldFNlbGVjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9j
aGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfc2VsZWN0aW9uQXREb2N1bWVudFN0YXJ0XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2VsZWN0ZWRUZXh0UmFuZ2VdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBoYXND
b250ZW50XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZENoYW5nZVNl
bGVjdGlvbkFuZFVwZGF0ZUxheW91dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRm
b3JtRWRpdG9yU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKToKKworMjAxNS0wMy0xMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIDUgdGVzdHMgZmFpbCBvbiBBcHBsZSBNYWMgV0sy
IHBlcmZvcm1hbmNlIGJvdHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjQ4NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCmluZGV4IGE4ZjFiNDE3NzNkMmE4MzNlNDVjN2JlMDc2OTMzMjY1NWVhYmVjMjMuLmUzOWJm
YzYxNmZiNDg5ZDdmM2ZkNzRjMjY5MzliYzkyYTYyYjFmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0zODEsNiArMzgxLDggQEAgdm9pZCBGcmFtZVNl
bGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKCkKICAgICB9CiAKICAgICBub3RpZnlB
Y2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCk7CisKKyAgICBtX2ZyYW1lLT5lZGl0b3Io
KS5jbGllbnQoKS0+ZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCk7CiB9CiAKIHZv
aWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZURhdGFEZXRlY3RvcnNGb3JTZWxlY3Rpb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGY5MDM3ODU5OTdiYjAwZjZmMmExMGUy
ODFmM2NhMjg0NWVkODdmMjMuLmExMjNkZjk0MjA3MmNkNzY2MjljOGEwNmM3Zjk3MTY3NTFlY2U0
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQ1MCw2ICs0NTAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIG92ZXJyaWRlIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSopIG92
ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVM
YXlvdXQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRp
b24oRnJhbWUqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
IG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoUmFuZ2UqKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IGUxOGMwMjdhNTgzZDZhNTUzNmUwY2M3ZGU1NTkzMWExNjRkOTIxMTAuLjJkNTUxYzdkNDUy
YzJhOWJiZTY1Mzk4MzU2OTFiZWU3ZDAxNWZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtOTMsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2lu
RWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRz
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1l
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlv
dXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IDkwZTE2NmFhNzQ0NDM0ODQwNjk5MzJiNmFjYzcyNDNhNTg3Njg3NjkuLjY0NzgwMzg5YTRl
MzdjMjgxOGYyYjI0M2NmYmViOGIxYTNkZjg3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMTAsNiArMTEwLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJD
b3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rp
b25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzY2Fy
ZGVkQ29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggNDgxMzc2MTAyNDI2NDE4YmQyMmUwYmU5NGI0MTMxNTQxYzE1NGYyMC4u
MTVhMDAyNzY1MzY5N2IxN2E2OGEzNmZiNmUwYzljMDk0ZWVhZWUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTYwLDYg
KzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250
ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNv
cmU6OkZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0
ZUxheW91dCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkZWRDb21wb3Np
dGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWxldGVS
YW5nZShXZWJDb3JlOjpSYW5nZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0VkaXRvclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAK
aW5kZXggOWJjMGI4ZmMxYTg5OTllYWZhY2U0MTVjNmRkOTRjMTAyNDE0ZGQyMC4uYzE1ZmY3YWZl
NjkzZjU2MWRmNTUwZjkxNTI1Yjk3MGRhZmEyOGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRp
dG9yU3RhdGUuY3BwCkBAIC00MSwyMiArNDEsMTUgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2Rl
KElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNJ
blBhc3N3b3JkRmllbGQ7CiAgICAgZW5jb2RlciA8PCBpc0luUGx1Z2luOwogICAgIGVuY29kZXIg
PDwgaGFzQ29tcG9zaXRpb247CisgICAgZW5jb2RlciA8PCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0
YTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBlbmNvZGVyIDw8IGlzUmVwbGFjZUFsbG93ZWQ7
Ci0gICAgZW5jb2RlciA8PCBoYXNDb250ZW50OwotICAgIGVuY29kZXIgPDwgY2hhcmFjdGVyQWZ0
ZXJTZWxlY3Rpb247Ci0gICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247Ci0g
ICAgZW5jb2RlciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247Ci0gICAgZW5jb2RlciA8
PCBjYXJldFJlY3RBdFN0YXJ0OwotICAgIGVuY29kZXIgPDwgY2FyZXRSZWN0QXRFbmQ7Ci0gICAg
ZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0czsKLSAgICBlbmNvZGVyIDw8IHNlbGVjdGVkVGV4dExl
bmd0aDsKLSAgICBlbmNvZGVyIDw8IHdvcmRBdFNlbGVjdGlvbjsKKyAgICBpZiAoIWlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhKQorICAgICAgICBtX3Bvc3RMYXlvdXREYXRhLmVuY29kZShlbmNvZGVy
KTsKKwogICAgIGVuY29kZXIgPDwgZmlyc3RNYXJrZWRSZWN0OwogICAgIGVuY29kZXIgPDwgbGFz
dE1hcmtlZFJlY3Q7CiAgICAgZW5jb2RlciA8PCBtYXJrZWRUZXh0OwotICAgIGVuY29kZXIgPDwg
dHlwaW5nQXR0cmlidXRlczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtOTAsNDMg
KzgzLDc0IEBAIGJvb2wgRWRpdG9yU3RhdGU6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgRWRpdG9yU3RhdGUmIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5oYXNDb21wb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmlzUmVwbGFjZUFsbG93ZWQpKQorICAgIGlmICghcmVzdWx0LmlzTWlzc2luZ1Bv
c3RMYXlvdXREYXRhKSB7CisgICAgICAgIGlmICghUG9zdExheW91dERhdGE6OmRlY29kZShkZWNv
ZGVyLCByZXN1bHQucG9zdExheW91dERhdGEoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlyc3RNYXJrZWRSZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lmhhc0NvbnRlbnQpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmxhc3RNYXJrZWRS
ZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmNoYXJhY3RlckFmdGVyU2VsZWN0aW9uKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tYXJrZWRUZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKEdUSykKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jdXJzb3JSZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCisjZW5kaWYKKworICAgIHJldHVybiB0cnVl
OworfQorCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERh
dGE6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblJlY3RzOworICAgIGVuY29kZXIgPDwgY2FyZXRSZWN0QXRTdGFy
dDsKKyAgICBlbmNvZGVyIDw8IGNhcmV0UmVjdEF0RW5kOworICAgIGVuY29kZXIgPDwgd29yZEF0
U2VsZWN0aW9uOworICAgIGVuY29kZXIgPDwgc2VsZWN0ZWRUZXh0TGVuZ3RoOworICAgIGVuY29k
ZXIgPDwgY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb247CisgICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJC
ZWZvcmVTZWxlY3Rpb247CisgICAgZW5jb2RlciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rp
b247CisgICAgZW5jb2RlciA8PCB0eXBpbmdBdHRyaWJ1dGVzOworICAgIGVuY29kZXIgPDwgaXNS
ZXBsYWNlQWxsb3dlZDsKKyAgICBlbmNvZGVyIDw8IGhhc0NvbnRlbnQ7Cit9CisKK2Jvb2wgRWRp
dG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFBvc3RMYXlvdXREYXRhJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuc2VsZWN0aW9uUmVjdHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FyZXRSZWN0QXRTdGFydCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJlY3RBdEVuZCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5z
ZWxlY3Rpb25SZWN0cykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud29yZEF0U2Vs
ZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNlbGVjdGVkVGV4dExlbmd0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53b3JkQXRTZWxlY3Rpb24pKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlyc3RNYXJrZWRSZWN0
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFyYWN0ZXJBZnRlclNlbGVjdGlv
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5sYXN0TWFya2VkUmVjdCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhcmFj
dGVyQmVmb3JlU2VsZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1hcmtlZFRleHQpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBpbmdBdHRyaWJ1dGVzKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShHVEspCi0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY3Vyc29yUmVjdCkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oYXNDb250ZW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IDk3OWFkNWIxZWZiOGZjNzRlZjVhN2E3Zjhm
YzdkNjYzYWZiY2NlMWEuLjQ3MzIwNjZiZmFmNGMxMDI5M2ZhNjRmZmFiZmU2YTY1M2JlYWJmOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC00NCw1MiArNDQsNDEgQEAgZW51
bSBUeXBpbmdBdHRyaWJ1dGVzIHsKIH07CiAKIHN0cnVjdCBFZGl0b3JTdGF0ZSB7Ci0gICAgRWRp
dG9yU3RhdGUoKQotICAgICAgICA6IHNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hh
bmdlKGZhbHNlKQotICAgICAgICAsIHNlbGVjdGlvbklzTm9uZSh0cnVlKQotICAgICAgICAsIHNl
bGVjdGlvbklzUmFuZ2UoZmFsc2UpCi0gICAgICAgICwgaXNDb250ZW50RWRpdGFibGUoZmFsc2Up
Ci0gICAgICAgICwgaXNDb250ZW50UmljaGx5RWRpdGFibGUoZmFsc2UpCi0gICAgICAgICwgaXNJ
blBhc3N3b3JkRmllbGQoZmFsc2UpCi0gICAgICAgICwgaXNJblBsdWdpbihmYWxzZSkKLSAgICAg
ICAgLCBoYXNDb21wb3NpdGlvbihmYWxzZSkKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICwg
aXNSZXBsYWNlQWxsb3dlZChmYWxzZSkKLSAgICAgICAgLCBoYXNDb250ZW50KGZhbHNlKQotICAg
ICAgICAsIGNoYXJhY3RlckFmdGVyU2VsZWN0aW9uKDApCi0gICAgICAgICwgY2hhcmFjdGVyQmVm
b3JlU2VsZWN0aW9uKDApCi0gICAgICAgICwgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKDAp
Ci0gICAgICAgICwgc2VsZWN0ZWRUZXh0TGVuZ3RoKDApCi0gICAgICAgICwgdHlwaW5nQXR0cmli
dXRlcyhBdHRyaWJ1dGVOb25lKQotI2VuZGlmCi0gICAgewotICAgIH0KKyAgICBib29sIHNob3Vs
ZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlIHsgZmFsc2UgfTsKIAotICAgIGJvb2wg
c2hvdWxkSWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2U7Ci0KLSAgICBib29sIHNlbGVj
dGlvbklzTm9uZTsgLy8gVGhpcyB3aWxsIGJlIGZhbHNlIHdoZW4gdGhlcmUgaXMgYSBjYXJldCBz
ZWxlY3Rpb24uCi0gICAgYm9vbCBzZWxlY3Rpb25Jc1JhbmdlOwotICAgIGJvb2wgaXNDb250ZW50
RWRpdGFibGU7Ci0gICAgYm9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKLSAgICBib29sIGlz
SW5QYXNzd29yZEZpZWxkOwotICAgIGJvb2wgaXNJblBsdWdpbjsKLSAgICBib29sIGhhc0NvbXBv
c2l0aW9uOworICAgIGJvb2wgc2VsZWN0aW9uSXNOb25lIHsgdHJ1ZSB9OyAvLyBUaGlzIHdpbGwg
YmUgZmFsc2Ugd2hlbiB0aGVyZSBpcyBhIGNhcmV0IHNlbGVjdGlvbi4KKyAgICBib29sIHNlbGVj
dGlvbklzUmFuZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUgeyBmYWxz
ZSB9OworICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFibGUgeyBmYWxzZSB9OworICAgIGJv
b2wgaXNJblBhc3N3b3JkRmllbGQgeyBmYWxzZSB9OworICAgIGJvb2wgaXNJblBsdWdpbiB7IGZh
bHNlIH07CisgICAgYm9vbCBoYXNDb21wb3NpdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBpc01p
c3NpbmdQb3N0TGF5b3V0RGF0YSB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAg
Ym9vbCBpc1JlcGxhY2VBbGxvd2VkOwotICAgIGJvb2wgaGFzQ29udGVudDsKLSAgICBVQ2hhcjMy
IGNoYXJhY3RlckFmdGVyU2VsZWN0aW9uOwotICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uOwotICAgIFVDaGFyMzIgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOwotICAgIFdl
YkNvcmU6OkludFJlY3QgY2FyZXRSZWN0QXRTdGFydDsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IGNh
cmV0UmVjdEF0RW5kOwotICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rp
b25SZWN0czsKLSAgICB1aW50NjRfdCBzZWxlY3RlZFRleHRMZW5ndGg7Ci0gICAgU3RyaW5nIHdv
cmRBdFNlbGVjdGlvbjsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0TWFya2VkUmVjdDsKICAg
ICBXZWJDb3JlOjpJbnRSZWN0IGxhc3RNYXJrZWRSZWN0OwogICAgIFN0cmluZyBtYXJrZWRUZXh0
OwotICAgIHVpbnQzMl90IHR5cGluZ0F0dHJpYnV0ZXM7CisKKyAgICBzdHJ1Y3QgUG9zdExheW91
dERhdGEgeworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9u
UmVjdHM7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRSZWN0QXRTdGFydDsKKyAgICAg
ICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3RBdEVuZDsKKyAgICAgICAgU3RyaW5nIHdvcmRB
dFNlbGVjdGlvbjsKKyAgICAgICAgdWludDY0X3Qgc2VsZWN0ZWRUZXh0TGVuZ3RoIHsgMCB9Owor
ICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlckFmdGVyU2VsZWN0aW9uIHsgMCB9OworICAgICAgICBV
Q2hhcjMyIGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiB7IDAgfTsKKyAgICAgICAgVUNoYXIzMiB0
d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24geyAwIH07CisgICAgICAgIHVpbnQzMl90IHR5cGlu
Z0F0dHJpYnV0ZXMgeyBBdHRyaWJ1dGVOb25lIH07CisgICAgICAgIGJvb2wgaXNSZXBsYWNlQWxs
b3dlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaGFzQ29udGVudCB7IGZhbHNlIH07CisKKyAg
ICAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgUG9zdExheW91dERhdGEm
KTsKKyAgICB9OworCisgICAgY29uc3QgUG9zdExheW91dERhdGEmIHBvc3RMYXlvdXREYXRhKCkg
Y29uc3Q7CisgICAgUG9zdExheW91dERhdGEmIHBvc3RMYXlvdXREYXRhKCk7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykKQEAgLTk4LDggKzg3LDI3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7
CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIEVkaXRvclN0YXRlJik7CisK
KyNpZiBQTEFURk9STShJT1MpCitwcml2YXRlOgorICAgIFBvc3RMYXlvdXREYXRhIG1fcG9zdExh
eW91dERhdGE7CisjZW5kaWYKIH07CiAKKyNpZiBQTEFURk9STShJT1MpCitpbmxpbmUgYXV0byBF
ZGl0b3JTdGF0ZTo6cG9zdExheW91dERhdGEoKSAtPiBQb3N0TGF5b3V0RGF0YSYKK3sKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSwgIkF0dGVtcHQgdG8g
YWNjZXNzIHBvc3QgbGF5b3V0IGRhdGEgYmVmb3JlIHJlY2VpdmluZyBpdCIpOworICAgIHJldHVy
biBtX3Bvc3RMYXlvdXREYXRhOworfQorCitpbmxpbmUgYXV0byBFZGl0b3JTdGF0ZTo6cG9zdExh
eW91dERhdGEoKSBjb25zdCAtPiBjb25zdCBQb3N0TGF5b3V0RGF0YSYKK3sKKyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSwgIkF0dGVtcHQgdG8gYWNjZXNz
IHBvc3QgbGF5b3V0IGRhdGEgYmVmb3JlIHJlY2VpdmluZyBpdCIpOworICAgIHJldHVybiBtX3Bv
c3RMYXlvdXREYXRhOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVkaXRvclN0YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggMGI5ZjQ1YTdiMjQ1MWMxYjY1YWQ3MjUyZWFkZmRjZTExYmRj
Y2RjMC4uNTRjOWQzNTM5MzllMGM0OWE1ODkxN2ExOGJkODYwZDkzZTMxYzUzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTg1LDggKzg1LDkgQEAgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbzo6V0tTZWxl
Y3Rpb25EcmF3aW5nSW5mbyhjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAgICAgfQog
CiAgICAgdHlwZSA9IFNlbGVjdGlvblR5cGU6OlJhbmdlOwotICAgIGNhcmV0UmVjdCA9IGVkaXRv
clN0YXRlLmNhcmV0UmVjdEF0RW5kOwotICAgIHNlbGVjdGlvblJlY3RzID0gZWRpdG9yU3RhdGUu
c2VsZWN0aW9uUmVjdHM7CisgICAgYXV0byYgcG9zdExheW91dERhdGEgPSBlZGl0b3JTdGF0ZS5w
b3N0TGF5b3V0RGF0YSgpOworICAgIGNhcmV0UmVjdCA9IHBvc3RMYXlvdXREYXRhLmNhcmV0UmVj
dEF0RW5kOworICAgIHNlbGVjdGlvblJlY3RzID0gcG9zdExheW91dERhdGEuc2VsZWN0aW9uUmVj
dHM7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tTZWxlY3Rpb25EcmF3aW5n
SW5mbyYgYSwgY29uc3QgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbyYgYikKQEAgLTk3NCwxMyArOTc1
LDE0IEBAIC0gKEJPT0wpcG9pbnRJc0luQXNzaXN0ZWROb2RlOihDR1BvaW50KXBvaW50CiAKIC0g
KE5TQXJyYXkgKil3ZWJTZWxlY3Rpb25SZWN0cwogewotICAgIHVuc2lnbmVkIHNpemUgPSBfcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25SZWN0cy5zaXplKCk7CisgICAgY29uc3QgYXV0byYg
c2VsZWN0aW9uUmVjdHMgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNl
bGVjdGlvblJlY3RzOworICAgIHVuc2lnbmVkIHNpemUgPSBzZWxlY3Rpb25SZWN0cy5zaXplKCk7
CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNdXRhYmxlQXJy
YXkgKndlYlJlY3RzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgY29uc3Qg
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYgY29yZVJlY3QgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5z
ZWxlY3Rpb25SZWN0c1tpXTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYg
Y29yZVJlY3QgPSBzZWxlY3Rpb25SZWN0c1tpXTsKICAgICAgICAgV2ViU2VsZWN0aW9uUmVjdCAq
d2ViUmVjdCA9IFtXZWJTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3RdOwogICAgICAgICB3ZWJS
ZWN0LnJlY3QgPSBjb3JlUmVjdC5yZWN0KCk7CiAgICAgICAgIHdlYlJlY3Qud3JpdGluZ0RpcmVj
dGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IExUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxl
ZnRUb1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CkBAIC0xMjY1LDE5ICsx
MjY3LDE5IEBAIC0gKE5TQXJyYXkgKilzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50
U2VsZWN0aW9uCiAtICh2b2lkKV9hZGRTaG9ydGN1dDooaWQpc2VuZGVyCiB7CiAgICAgaWYgKF90
ZXh0U2VsZWN0aW9uQXNzaXN0YW50ICYmIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dUZXh0U2VydmljZUZvcjpmcm9tUmVjdDopXSkKLSAg
ICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dUZXh0U2VydmljZUZvcjpbc2VsZiBz
ZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvblJlY3Rz
WzBdLnJlY3QoKV07CisgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzaG93VGV4dFNl
cnZpY2VGb3I6W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKV07CiAgICAgZWxzZSBp
ZiAoX3dlYlNlbGVjdGlvbkFzc2lzdGFudCAmJiBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dUZXh0U2VydmljZUZvcjpmcm9tUmVjdDopXSkK
LSAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1RleHRTZXJ2aWNlRm9yOltzZWxm
IHNlbGVjdGVkVGV4dF0gZnJvbVJlY3Q6X3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uUmVj
dHNbMF0ucmVjdCgpXTsKKyAgICAgICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1RleHRT
ZXJ2aWNlRm9yOltzZWxmIHNlbGVjdGVkVGV4dF0gZnJvbVJlY3Q6X3BhZ2UtPmVkaXRvclN0YXRl
KCkucG9zdExheW91dERhdGEoKS5zZWxlY3Rpb25SZWN0c1swXS5yZWN0KCldOwogfQogCiAtIChO
U1N0cmluZyAqKXNlbGVjdGVkVGV4dAogewotICAgIHJldHVybiAoTlNTdHJpbmcgKilfcGFnZS0+
ZWRpdG9yU3RhdGUoKS53b3JkQXRTZWxlY3Rpb247CisgICAgcmV0dXJuIChOU1N0cmluZyAqKV9w
YWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkud29yZEF0U2VsZWN0aW9uOwogfQog
CiAtIChCT09MKWlzUmVwbGFjZUFsbG93ZWQKIHsKLSAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0
YXRlKCkuaXNSZXBsYWNlQWxsb3dlZDsKKyAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCku
cG9zdExheW91dERhdGEoKS5pc1JlcGxhY2VBbGxvd2VkOwogfQogCiAtICh2b2lkKXJlcGxhY2VU
ZXh0OihOU1N0cmluZyAqKXRleHQgd2l0aFRleHQ6KE5TU3RyaW5nICopd29yZApAQCAtMTI5Miwx
NyArMTI5NCwxOCBAQCAtICh2b2lkKXNlbGVjdFdvcmRCYWNrd2FyZAogCiAtICh2b2lkKV9wcm9t
cHRGb3JSZXBsYWNlOihpZClzZW5kZXIKIHsKLSAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCku
d29yZEF0U2VsZWN0aW9uLmlzRW1wdHkoKSkKKyAgICBjb25zdCBhdXRvJiB3b3JkQXRTZWxlY3Rp
b24gPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlv
bjsKKyAgICBpZiAod29yZEF0U2VsZWN0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNjaGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4dDopXSkKLSAgICAgICAgW190ZXh0U2Vs
ZWN0aW9uQXNzaXN0YW50IHNjaGVkdWxlUmVwbGFjZW1lbnRzRm9yVGV4dDpfcGFnZS0+ZWRpdG9y
U3RhdGUoKS53b3JkQXRTZWxlY3Rpb25dOworICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3Rh
bnQgc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OndvcmRBdFNlbGVjdGlvbl07CiB9CiAKIC0g
KHZvaWQpX3RyYW5zbGl0ZXJhdGVDaGluZXNlOihpZClzZW5kZXIKIHsKICAgICBpZiAoW190ZXh0
U2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2NoZWR1bGVD
aGluZXNlVHJhbnNsaXRlcmF0aW9uRm9yVGV4dDopXSkKLSAgICAgICAgW190ZXh0U2VsZWN0aW9u
QXNzaXN0YW50IHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6X3BhZ2UtPmVk
aXRvclN0YXRlKCkud29yZEF0U2VsZWN0aW9uXTsKKyAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNz
aXN0YW50IHNjaGVkdWxlQ2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQ6X3BhZ2UtPmVkaXRv
clN0YXRlKCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb25dOwogfQogCiAtICh2b2lk
KV9yZWFuYWx5emU6KGlkKXNlbmRlcgpAQCAtMTMyMiwxMCArMTMyNSwxMSBAQCAtIChOU0RpY3Rp
b25hcnkgKil0ZXh0U3R5bGluZ0F0UG9zaXRpb246KFVJVGV4dFBvc2l0aW9uICopcG9zaXRpb24g
aW5EaXJlY3Rpb246KAogCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSogcmVzdWx0ID0gW05TTXV0
YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CiAKKyAgICBhdXRvIHR5cGluZ0F0dHJpYnV0ZXMg
PSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnR5cGluZ0F0dHJpYnV0ZXM7
CiAgICAgQ1RGb250U3ltYm9saWNUcmFpdHMgc3ltYm9saWNUcmFpdHMgPSAwOwotICAgIGlmIChf
cGFnZS0+ZWRpdG9yU3RhdGUoKS50eXBpbmdBdHRyaWJ1dGVzICYgQXR0cmlidXRlQm9sZCkKKyAg
ICBpZiAodHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZUJvbGQpCiAgICAgICAgIHN5bWJvbGlj
VHJhaXRzIHw9IGtDVEZvbnRCb2xkVHJhaXQ7Ci0gICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgp
LnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVJdGFsaWNzKQorICAgIGlmICh0eXBpbmdBdHRy
aWJ1dGVzICYgQXR0cmlidXRlSXRhbGljcykKICAgICAgICAgc3ltYm9saWNUcmFpdHMgfD0ga0NU
Rm9udFRyYWl0SXRhbGljOwogCiAgICAgLy8gV2UgY2hvc2UgYSByYW5kb20gZm9udCBmYW1pbHkg
YW5kIHNpemUuCkBAIC0xMzM5LDcgKzEzNDMsNyBAQCAtIChOU0RpY3Rpb25hcnkgKil0ZXh0U3R5
bGluZ0F0UG9zaXRpb246KFVJVGV4dFBvc2l0aW9uICopcG9zaXRpb24gaW5EaXJlY3Rpb246KAog
ICAgIGlmIChmb250KQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDooaWQpZm9udC5nZXQoKSBm
b3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV07CiAgICAgCi0gICAgaWYgKF9wYWdlLT5lZGl0b3JT
dGF0ZSgpLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVVbmRlcmxpbmUpCisgICAgaWYgKHR5
cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVVbmRlcmxpbmUpCiAgICAgICAgIFtyZXN1bHQgc2V0
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Ok5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZv
cktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07CiAKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMTM3Nyw3ICsxMzgxLDcgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uOihTRUwpYWN0
aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogICAgICAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRl
KCkuaXNJblBhc3N3b3JkRmllbGQgfHwgIShoYXNXZWJTZWxlY3Rpb24gfHwgX3BhZ2UtPmVkaXRv
clN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKLSAg
ICAgICAgTlNVSW50ZWdlciB0ZXh0TGVuZ3RoID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0
ZWRUZXh0TGVuZ3RoOworICAgICAgICBOU1VJbnRlZ2VyIHRleHRMZW5ndGggPSBfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGVkVGV4dExlbmd0aDsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBjYWxsaW5nIFVJUmVmZXJlbmNlTGlicmFyeVZpZXdDb250
cm9sbGVyIHRvIGNoZWNrIGlmIHRoZSBsZW5ndGggaXMKICAgICAgICAgLy8gYWNjZXB0YWJsZSwg
YnV0IHRoZSBpbnRlcmZhY2UgdGFrZXMgYSBzdHJpbmcuCiAgICAgICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS8xNTI1NDQwNj4KQEAgLTE0MDYsNyArMTQxMCw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFj
dGlvbjooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKICAgICB9CiAKICAgICBpZiAo
YWN0aW9uID09IEBzZWxlY3RvcihfcHJvbXB0Rm9yUmVwbGFjZTopKSB7Ci0gICAgICAgIGlmICgh
X3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSB8fCAhX3BhZ2UtPmVkaXRvclN0
YXRlKCkuaXNSZXBsYWNlQWxsb3dlZCB8fCAhW1tVSUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5j
ZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRdKQorICAgICAgICBpZiAoIV9wYWdlLT5lZGl0
b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RM
YXlvdXREYXRhKCkuaXNSZXBsYWNlQWxsb3dlZCB8fCAhW1tVSUtleWJvYXJkSW1wbCBhY3RpdmVJ
bnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRdKQogICAgICAgICAgICAgcmV0dXJu
IE5POwogICAgICAgICBpZiAoW1tzZWxmIHNlbGVjdGVkVGV4dF0gX2NvbnRhaW5zQ0pTY3JpcHRz
T25seV0pCiAgICAgICAgICAgICByZXR1cm4gTk87CkBAIC0xNDE0LDEzICsxNDE4LDEzIEBAIC0g
KEJPT0wpY2FuUGVyZm9ybUFjdGlvbjooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIK
ICAgICB9CiAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihfdHJhbnNsaXRlcmF0ZUNoaW5l
c2U6KSkgewotICAgICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFu
Z2UgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzUmVwbGFjZUFsbG93ZWQgfHwgIVtbVUlLZXli
b2FyZEltcGwgYWN0aXZlSW5zdGFuY2VdIGF1dG9jb3JyZWN0U3BlbGxpbmdFbmFibGVkXSkKKyAg
ICAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc1JhbmdlIHx8ICFfcGFn
ZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmlzUmVwbGFjZUFsbG93ZWQgfHwgIVtb
VUlLZXlib2FyZEltcGwgYWN0aXZlSW5zdGFuY2VdIGF1dG9jb3JyZWN0U3BlbGxpbmdFbmFibGVk
XSkKICAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgcmV0dXJuIFVJS2V5Ym9hcmRFbmFi
bGVkSW5wdXRNb2Rlc0FsbG93Q2hpbmVzZVRyYW5zbGl0ZXJhdGlvbkZvclRleHQoW3NlbGYgc2Vs
ZWN0ZWRUZXh0XSk7CiAgICAgfQogCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoX3JlYW5h
bHl6ZTopKSB7Ci0gICAgICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNS
YW5nZSB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNSZXBsYWNlQWxsb3dlZCB8fCAhW1tVSUtl
eWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRdKQor
ICAgICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UgfHwgIV9w
YWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuaXNSZXBsYWNlQWxsb3dlZCB8fCAh
W1tVSUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJs
ZWRdKQogICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICByZXR1cm4gVUlLZXlib2FyZEN1
cnJlbnRJbnB1dE1vZGVBbGxvd3NDaGluZXNlT3JKYXBhbmVzZVJlYW5hbHlzaXNGb3JUZXh0KFtz
ZWxmIHNlbGVjdGVkVGV4dF0pOwogICAgIH0KQEAgLTE1MTgsNyArMTUyMiw3IEBAIC0gKHZvaWQp
X3Nob3dUZXh0U3R5bGVPcHRpb25zOihpZClzZW5kZXIKIAogLSAodm9pZClfc2hvd0RpY3Rpb25h
cnk6KE5TU3RyaW5nICopdGV4dAogewotICAgIENHUmVjdCBwcmVzZW50YXRpb25SZWN0ID0gX3Bh
Z2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVjdCgpOworICAgIENHUmVjdCBw
cmVzZW50YXRpb25SZWN0ID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5z
ZWxlY3Rpb25SZWN0c1swXS5yZWN0KCk7CiAgICAgaWYgKF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50
KQogICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd0RpY3Rpb25hcnlGb3I6dGV4
dCBmcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0XTsKICAgICBlbHNlCkBAIC0xOTI1LDE4ICsxOTI5
LDE4IEBAIC0gKHZvaWQpdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50OihDR1BvaW50KXBv
aW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheCiAKIC0gKFVURjMyQ2hhcilfY2hhcmFjdGVy
QmVmb3JlQ2FyZXRTZWxlY3Rpb24KIHsKLSAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCku
Y2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOworICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5wb3N0TGF5b3V0RGF0YSgpLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKIH0KIAogLSAoVVRG
MzJDaGFyKV9jaGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNlbGVjdGlvbjooaW50KWFtb3VudAog
ewogICAgIHN3aXRjaCAoYW1vdW50KSB7CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gX3Bh
Z2UtPmVkaXRvclN0YXRlKCkuY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb247CisgICAgICAgIHJldHVy
biBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmNoYXJhY3RlckFmdGVyU2Vs
ZWN0aW9uOwogICAgIGNhc2UgLTE6Ci0gICAgICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CisgICAgICAgIHJldHVybiBfcGFnZS0+ZWRpdG9y
U3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKICAgICBj
YXNlIC0yOgotICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkudHdvQ2hhcmFjdGVy
QmVmb3JlU2VsZWN0aW9uOworICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9z
dExheW91dERhdGEoKS50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTk0NCw3ICsxOTQ4LDcgQEAgLSAoVVRGMzJD
aGFyKV9jaGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNlbGVjdGlvbjooaW50KWFtb3VudAogCiAt
IChCT09MKV9zZWxlY3Rpb25BdERvY3VtZW50U3RhcnQKIHsKLSAgICByZXR1cm4gIV9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKKyAgICByZXR1cm4gIV9wYWdl
LT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9u
OwogfQogCiAtIChDR1JlY3QpdGV4dEZpcnN0UmVjdApAQCAtMjEwOCw4ICsyMTEyLDkgQEAgLSAo
dm9pZClyZXBsYWNlUmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2Ugd2l0aFRleHQ6KE5TU3RyaW5n
ICopdGV4dAogCiAtIChVSVRleHRSYW5nZSAqKXNlbGVjdGVkVGV4dFJhbmdlCiB7Ci0gICAgRmxv
YXRSZWN0IHN0YXJ0UmVjdCA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmNhcmV0UmVjdEF0U3RhcnQ7
Ci0gICAgRmxvYXRSZWN0IGVuZFJlY3QgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5jYXJldFJlY3RB
dEVuZDsKKyAgICBhdXRvJiBwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhID0gX3BhZ2UtPmVkaXRv
clN0YXRlKCkucG9zdExheW91dERhdGEoKTsKKyAgICBGbG9hdFJlY3Qgc3RhcnRSZWN0ID0gcG9z
dExheW91dEVkaXRvclN0YXRlRGF0YS5jYXJldFJlY3RBdFN0YXJ0OworICAgIEZsb2F0UmVjdCBl
bmRSZWN0ID0gcG9zdExheW91dEVkaXRvclN0YXRlRGF0YS5jYXJldFJlY3RBdEVuZDsKICAgICBk
b3VibGUgaW52ZXJzZVNjYWxlID0gW3NlbGYgaW52ZXJzZVNjYWxlXTsKICAgICAvLyBXZSB3YW50
IHRvIGtlZXAgdGhlIG9yaWdpbmFsIGNhcmV0IHdpZHRoLCB3aGlsZSB0aGUgaGVpZ2h0IHNjYWxl
cyB3aXRoCiAgICAgLy8gdGhlIGNvbnRlbnQgdGFraW5nIG9yaWVudGF0aW9uIGludG8gYWNjb3Vu
dC4KQEAgLTIxMzcsNyArMjE0Miw3IEBAIC0gKFVJVGV4dFJhbmdlICopc2VsZWN0ZWRUZXh0UmFu
Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UmVjdDpzdGFydFJlY3QK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUmVjdDplbmRSZWN0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdHM6W3NlbGYgd2ViU2VsZWN0aW9u
UmVjdHNdCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFRleHRMZW5ndGg6X3BhZ2Ut
PmVkaXRvclN0YXRlKCkuc2VsZWN0ZWRUZXh0TGVuZ3RoXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGVkVGV4dExlbmd0aDpwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhLnNlbGVjdGVk
VGV4dExlbmd0aF07CiB9CiAKIC0gKENHUmVjdCljYXJldFJlY3RGb3JQb3NpdGlvbjooVUlUZXh0
UG9zaXRpb24gKilwb3NpdGlvbgpAQCAtMjY1Niw3ICsyNjYxLDcgQEAgLSAodm9pZClzZXRNYXJr
ZWRUZXh0OihOU1N0cmluZyAqKXRleHQKIAogLSAoQk9PTCloYXNDb250ZW50CiB7Ci0gICAgcmV0
dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmhhc0NvbnRlbnQ7CisgICAgcmV0dXJuIF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuaGFzQ29udGVudDsKIH0KIAogLSAodm9pZClz
ZWxlY3RBbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNGFmYmJhZGZkYjRkOTg2ZjVm
N2NhM2RjZGRhNDcwM2ZmZTc5MjZmLi5iOGNiY2NlYWRmMGJhM2E0N2IyOGJhYmJkZGUzODE4MzMx
YTU5NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xOTAsNiArMTkwLDExIEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSkKICNlbmRpZgogfQogCit2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkQ2hhbmdlU2VsZWN0aW9u
QW5kVXBkYXRlTGF5b3V0KCkKK3sKKyAgICBtX3BhZ2UtPnNlbmRQb3N0TGF5b3V0RWRpdG9yU3Rh
dGVJZk5lZWRlZCgpOworfQorCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzY2FyZGVkQ29tcG9z
aXRpb24oRnJhbWUqKQogewogICAgIG1fcGFnZS0+ZGlzY2FyZGVkQ29tcG9zaXRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCmluZGV4IDVmYzYxMzE2M2FkZGQ2M2RhMGU2YjRmNTc3ZWQ2YTQyNjA4
MjcxMWYuLjc3MDU1MTk0ZjRlNTBkNzAzNzcxN2I4MjU2NWU1ZWIxOTY4ODFjYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtNjQsNiArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWdpbkVkaXRpbmcoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2NhcmRlZENvbXBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggZDFiOGI3ZGI3ZWQyMGRhZDcwZmQ2YTg1YjIzYTk4NTNhMjg5MDAxYS4uNGI3OWI5M2Rj
ODg3ODQ5MWMwMGNlNWZhOWJmYTZlYTFhMzNhMTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzQwLDcgKzc0MCw3IEBAIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJh
bWUqLCBjb25zdCBTdHJpCiB9CiAjZW5kaWYKIAotRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9y
U3RhdGUoKSBjb25zdAorRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBv
c3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW91dERhdGEpIGNvbnN0CiB7CiAg
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKIApAQCAtNzY1LDcgKzc2NSw3IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRv
clN0YXRlKCkgY29uc3QKICAgICByZXN1bHQuaGFzQ29tcG9zaXRpb24gPSBmcmFtZS5lZGl0b3Io
KS5oYXNDb21wb3NpdGlvbigpOwogICAgIHJlc3VsdC5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNl
bGVjdGlvbkNoYW5nZSA9IGZyYW1lLmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9u
Q2hhbmdlKCk7CiAgICAgCi0gICAgcGxhdGZvcm1FZGl0b3JTdGF0ZShmcmFtZSwgcmVzdWx0KTsK
KyAgICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZyYW1lLCByZXN1bHQsIHNob3VsZEluY2x1ZGVQb3N0
TGF5b3V0RGF0YSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDMzNyw2ICs0MzM3LDkg
QEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbigpCiAKIHZvaWQgV2ViUGFnZTo6ZGlk
Q2hhbmdlU2VsZWN0aW9uKCkKIHsKKyAgICBhdXRvIGVkaXRvclN0YXRlID0gdGhpcy0+ZWRpdG9y
U3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8pOworICAgIG1faXNFZGl0b3JTdGF0
ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IGVkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXRE
YXRhOworCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoQVNZTkNfTlNURVhUSU5QVVRDTElFTlQp
CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICAvLyBBYmFuZG9uIHRoZSBjdXJyZW50IGlubGluZSBpbnB1dCBzZXNz
aW9uIGlmIHNlbGVjdGlvbiBjaGFuZ2VkIGZvciBhbnkgb3RoZXIgcmVhc29uIGJ1dCBhbiBpbnB1
dCBtZXRob2QgZGlyZWN0IGFjdGlvbi4KQEAgLTQzNDUsMTEgKzQzNDgsMTEgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQogICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBjYW5jZWwg
Y29tcG9zaXRpb24gd2hlbiBzZWxlY3Rpb24gY2hhbmdlcyB0byBOb1NlbGVjdGlvbiwgYnV0IHdl
IHByb2JhYmx5IHNob3VsZC4KICAgICBpZiAoZnJhbWUuZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24o
KSAmJiAhZnJhbWUuZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSAm
JiAhZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpIHsKICAgICAgICAgZnJhbWUuZWRpdG9yKCku
Y2FuY2VsQ29tcG9zaXRpb24oKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpDb21wb3NpdGlvbldhc0NhbmNlbGVkKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb21wb3NpdGlvbldhc0NhbmNlbGVkKGVkaXRvclN0YXRl
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRp
dG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUpKTsKICNlbHNlCi0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9y
U3RhdGUoKSksIHBhZ2VJRCgpLCBJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0
ZUNoYW5nZWQoZWRpdG9yU3RhdGUpLCBwYWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkBA
IC00MzU3LDYgKzQzNjAsMTUgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3Rpb24oKQog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlmTmVl
ZGVkKCkKK3sKKyAgICBpZiAoIW1faXNFZGl0b3JTdGF0ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0
b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6WWVz
KSksIHBhZ2VJRCgpLCBJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgbV9pc0VkaXRvclN0YXRlTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gZmFsc2U7
Cit9CisKIHZvaWQgV2ViUGFnZTo6ZGlzY2FyZGVkQ29tcG9zaXRpb24oKQogewogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q29tcG9zaXRpb25XYXNDYW5jZWxlZChlZGl0b3JTdGF0
ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA1MWMwZWYyNDRjYmYxNWUyNzdjNjg0NzdkMGZmOWI0M2JjY2Y3ZTQ3Li43NzliNjg2YTFkNTcw
MTNjYzVmZTZkZDg0Y2RlMGM3NmFjZjQyMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTMyNyw3ICszMjcsOSBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSos
IGNvbnN0IFN0cmluZyYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICAKLSAgICBFZGl0
b3JTdGF0ZSBlZGl0b3JTdGF0ZSgpIGNvbnN0OworICAgIGVudW0gY2xhc3MgSW5jbHVkZVBvc3RM
YXlvdXREYXRhSGludCB7IE5vLCBZZXMgfTsKKyAgICBFZGl0b3JTdGF0ZSBlZGl0b3JTdGF0ZShJ
bmNsdWRlUG9zdExheW91dERhdGFIaW50ID0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6WWVz
KSBjb25zdDsKKyAgICB2b2lkIHNlbmRQb3N0TGF5b3V0RWRpdG9yU3RhdGVJZk5lZWRlZCgpOwog
CiAgICAgU3RyaW5nIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRm9yUHJpbnRpbmcoKSBj
b25zdDsKQEAgLTg3Myw3ICs4NzUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGV0YWNoKCk7Ci0gICAgdm9pZCBwbGF0Zm9y
bUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3Q7
CisgICAgdm9pZCBwbGF0Zm9ybUVkaXRvclN0YXRlKFdlYkNvcmU6OkZyYW1lJiwgRWRpdG9yU3Rh
dGUmIHJlc3VsdCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3Q7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNz
YWdlRW5jb2Rlcj4mKTsKQEAgLTEzMzgsNiArMTM0MCw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IG1fbWFpbkZyYW1lUHJvZ3Jlc3NDb21wbGV0ZWQ7CiAgICAgYm9vbCBtX3Nob3VsZERpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50czsKKyAgICBib29sIG1faXNFZGl0b3JTdGF0ZU1pc3NpbmdQb3N0
TGF5b3V0RGF0YSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3Bw
CmluZGV4IDMzNTQwMTc5MjkwYzIzMDg0NmE3OTZiZjg0YWRhMmY2OTc3YWRmMjguLmMyMzFiNjI0
OTk0MmY1ZjlhM2Y5MmE2M2JmMzlkNWZjNzM2NzY0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtODIsNyArODIs
NyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmKSBjb25zdAordm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiwgRWRpdG9yU3RhdGUmLCBJbmNs
dWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdAogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCAyZDAzMjRh
NTE3MDM5MDExZDM4ZjNlMTk5N2Y0NjQ3MDZmZTIzNWQwLi4zZjJhYjk0NWJiYTlkMDYzOGMxYzkz
YmY5YWNhNGJkN2E2N2I5ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybURldGFjaCgpCiB7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0
b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Cit2b2lkIFdl
YlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVz
dWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50KSBjb25zdAogewogICAgIHJlc3VsdC5jdXJz
b3JSZWN0ID0gZnJhbWUuc2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5kcygpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IGIwYWYzNzQxYmFjMTQ1MjcwMDA5ZWZlOTY5ZmI0NTc5MTRlNWE0YmIuLjRhNGNlZDFi
ZmNjNzc4MjhjNWZkMTI3MDI0MTAyZDVmNzNlMzIyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEyOCw5ICsxMjgs
OCBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3Vs
dCkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUs
IEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5j
bHVkZVBvc3RMYXlvdXREYXRhKSBjb25zdAogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChmcmFt
ZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gY29t
cG9zaXRpb25SYW5nZSA9IGZyYW1lLmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKTsKICAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IGNvbXBvc2l0aW9uUmVjdHM7CkBAIC0x
NDMsMzEgKzE0Miw0MyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUm
IGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogICAgICAgICAgICAgcmVzdWx0Lmxh
c3RNYXJrZWRSZWN0ID0gcmVzdWx0LmZpcnN0TWFya2VkUmVjdDsKICAgICAgICAgcmVzdWx0Lm1h
cmtlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoY29tcG9zaXRpb25SYW5n
ZS5nZXQoKSk7CiAgICAgfQorCisgICAgLy8gV2Ugb25seSBzZXQgdGhlIHJlbWFpbmluZyBFZGl0
b3JTdGF0ZSBlbnRyaWVzIGlmIHRoZSBsYXlvdXQgaXMgZG9uZS4gVG8gY29tcHV0ZSB0aGVzZQor
ICAgIC8vIGVudHJpZXMsIHdlIG5lZWQgdGhlIGxheW91dCB0byBiZSBkb25lIGFuZCB3ZSBkb24n
dCB3YW50IHRvIHRyaWdnZXIgYSBzeW5jaHJvbm91cworICAgIC8vIGxheW91dCBhcyB0aGlzIHdv
dWxkIGJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuIElmIHdlIGhhdmUgYSBjb21wb3NpdGlvbiwgd2Ug
c2VuZCBldmVyeXRoaW5nCisgICAgLy8gcmlnaHQgYXdheSBhcyB0aGUgVUlQcm9jZXNzIG5lZWRz
IHRoZSBjYXJldFJlY3RzIEFTQVAgZm9yIG1hcmtlZCB0ZXh0LgorICAgIGlmIChzaG91bGRJbmNs
dWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6Tm8gJiYgIWZy
YW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICAgICAgcmVzdWx0LmlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7CiAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gZnJhbWUudmlldygpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rp
b24uaXNDYXJldCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0ID0gdmlldy0+
Y29udGVudHNUb1Jvb3RWaWV3KGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMo
KSk7Ci0gICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdEVuZCA9IHJlc3VsdC5jYXJldFJlY3RBdFN0
YXJ0OworICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0ID0gdmlldy0+Y29u
dGVudHNUb1Jvb3RWaWV3KGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7
CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0RW5kID0gcG9zdExheW91dERhdGEu
Y2FyZXRSZWN0QXRTdGFydDsKICAgICAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgY2hlY2sg
c2hvdWxkIHRha2UgaW50byBhY2NvdW50IHdyaXRpbmcgZGlyZWN0aW9uLgotICAgICAgICByZXN1
bHQuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQoKSwgV29yZEdyYW51bGFyaXR5LCBEaXJl
Y3Rpb25Gb3J3YXJkKTsKLSAgICAgICAgcmVzdWx0LndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4
dFJlcGxhY2luZ05vQnJlYWtTcGFjZSh3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0
YXJ0KCkpLmdldCgpKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9
IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxl
Y3Rpb24uc3RhcnQoKSwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAg
ICAgcG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9C
cmVha1NwYWNlKHdvcmRSYW5nZUZyb21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkuZ2V0KCkp
OwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpIHsKLSAgICAgICAg
ICAgIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcmVzdWx0LmNo
YXJhY3RlckFmdGVyU2VsZWN0aW9uLCByZXN1bHQuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLCBy
ZXN1bHQudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGNoYXJhY3Rl
cnNBcm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9zdExheW91dERhdGEuY2hhcmFj
dGVyQWZ0ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlv
biwgcG9zdExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKICAgICAgICAg
ICAgIE5vZGUqIHJvb3QgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgICAg
ICAgICAgcmVzdWx0Lmhhc0NvbnRlbnQgPSByb290ICYmIHJvb3QtPmhhc0NoaWxkTm9kZXMoKSAm
JiAhaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoZmlyc3RQb3NpdGlvbkluTm9k
ZShyb290KSk7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5oYXNDb250ZW50ID0gcm9vdCAm
JiByb290LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVD
b250ZW50KGZpcnN0UG9zaXRpb25Jbk5vZGUocm9vdCkpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChzZWxlY3Rpb24uaXNSYW5nZSgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdFN0
YXJ0ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24u
c3RhcnQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKLSAgICAgICAgcmVzdWx0LmNhcmV0UmVj
dEF0RW5kID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihzZWxlY3Rp
b24uZW5kKCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CisgICAgICAgIHBvc3RMYXlvdXREYXRh
LmNhcmV0UmVjdEF0U3RhcnQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0
aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgICAgICBw
b3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhW
aXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwog
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKTsKLSAgICAgICAgc2VsZWN0ZWRSYW5nZS0+Y29sbGVjdFNlbGVjdGlvblJlY3Rz
KHJlc3VsdC5zZWxlY3Rpb25SZWN0cyk7Ci0gICAgICAgIGNvbnZlcnRTZWxlY3Rpb25SZWN0c1Rv
Um9vdFZpZXcodmlldywgcmVzdWx0LnNlbGVjdGlvblJlY3RzKTsKKyAgICAgICAgc2VsZWN0ZWRS
YW5nZS0+Y29sbGVjdFNlbGVjdGlvblJlY3RzKHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblJlY3Rz
KTsKKyAgICAgICAgY29udmVydFNlbGVjdGlvblJlY3RzVG9Sb290Vmlldyh2aWV3LCBwb3N0TGF5
b3V0RGF0YS5zZWxlY3Rpb25SZWN0cyk7CiAgICAgICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBw
bGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2Uoc2VsZWN0ZWRSYW5nZS5nZXQoKSwgVGV4dEl0
ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBkaXNhbGxvdyByZXBsYWNlIHdoZW4gdGhlIHN0cmluZyBjb250YWlucyBvbmx5IENKIGNoYXJh
Y3RlcnMuCi0gICAgICAgIHJlc3VsdC5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVu
dEVkaXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5j
b250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIHJlc3VsdC5zZWxlY3RlZFRleHRMZW5n
dGggPSBzZWxlY3RlZFRleHQubGVuZ3RoKCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVw
bGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFz
c3dvcmRGaWVsZCAmJiAhc2VsZWN0ZWRUZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAg
ICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2VsZWN0ZWRUZXh0Lmxl
bmd0aCgpOwogICAgICAgICBjb25zdCBpbnQgbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoID0gMjAwOwog
ICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpIDw9IG1heFNlbGVjdGVkVGV4dExlbmd0
aCkKLSAgICAgICAgICAgIHJlc3VsdC53b3JkQXRTZWxlY3Rpb24gPSBzZWxlY3RlZFRleHQ7Cisg
ICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBzZWxlY3RlZFRleHQ7
CiAgICAgfQogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgIE5vZGUqIG5v
ZGVUb1JlbW92ZTsKQEAgLTE3NiwxOCArMTg3LDE4IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1F
ZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAg
ICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSBmb250ID8gQ1RGb250R2V0U3lt
Ym9saWNUcmFpdHMoZm9udCkgOiAwOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAodHJh
aXRzICYga0NURm9udFRyYWl0Qm9sZCkKLSAgICAgICAgICAgICAgICByZXN1bHQudHlwaW5nQXR0
cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOworICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRh
LnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlQm9sZDsKICAgICAgICAgICAgIGlmICh0cmFp
dHMgJiBrQ1RGb250VHJhaXRJdGFsaWMpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGluZ0F0
dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gZnJhbWUuc2Vs
ZWN0aW9uKCkudHlwaW5nU3R5bGUoKTsKICAgICAgICAgICAgIGlmICh0eXBpbmdTdHlsZSAmJiB0
eXBpbmdTdHlsZS0+c3R5bGUoKSkgewogICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHR5
cGluZ1N0eWxlLT5zdHlsZSgpLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3QpOwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5jb250YWlu
cygidW5kZXJsaW5lIikpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBpbmdBdHRyaWJ1
dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKKyAgICAgICAgICAgICAgICAgICAgcG9zdExheW91
dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25zSW5F
ZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7CisgICAgICAgICAg
ICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlVW5k
ZXJsaW5lOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9k
ZVRvUmVtb3ZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IDVmNTY3ZDFlOTI4MzBmOTQ3MjRmNjFiZWEwMmQ5OGZkMDE1
NjliOTcuLmU3NzQxZTlhZWRlYTVmYTRlM2ZlZjQ3OTI3ZDMxNDcwMDQwYmVjYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKICAgICBb
bV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTpudWxscHRyXTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUm
IHJlc3VsdCkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYg
ZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNv
bnN0CiB7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250404</attachid>
            <date>2015-04-08 20:20:42 -0700</date>
            <delta_ts>2015-04-09 11:32:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142536-20150408201955.patch</filename>
            <type>text/plain</type>
            <size>43677</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyNTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRhMzJlODQ5Njk2MzNh
ZmZlMmZlNDAyNGZhNjg4YjRiYjUwYTMyYy4uMjVmNzZjZmIxMTkzZGExNzVmYTQxZWI1MGU2NjM4
YTUyMDlhOTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1baU9TXSBlZGl0b3JT
dGF0ZSgpIHNob3VsZCBub3QgY2F1c2UgYSBzeW5jaHJvbm91cyBsYXlvdXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjUzNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjAwNDE1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCgpIGNh
bGxiYWNrIHRvIEVkaXRvckNsaWVudAorICAgICAgICB0aGF0IGlzIGNhbGxlZCBhdCB0aGUgZW5k
IG9mIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24oKS4KKworICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OnVwZGF0ZUFuZFJldmVhbFNlbGVjdGlvbik6CisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTUtMDQt
MDggIFBlciBBcm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtDdXJs
XSBDb21waWxlIGVycm9yIGluIEN1cmxDYWNoZUVudHJ5OjpwYXJzZVJlc3BvbnNlSGVhZGVycyBt
ZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDA1MmMyMzQ0YzJlMDFjYjJlNjgzMWViN2E0M2Yx
YTVmNjQzOTM5Mi4uMzZkODhmZDk5MjA1OTcxNmFjODZmNWI1Nzc2YjgwNGUwYzUwZTQwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA0LTA4ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1baU9TXSBlZGl0b3JTdGF0ZSgpIHNo
b3VsZCBub3QgY2F1c2UgYSBzeW5jaHJvbm91cyBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjUzNgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjAwNDE1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUHJvdmlkZSBpbXBsZW1lbnRhdGlvbiBmb3IgRWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VT
ZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorCiAyMDE1LTA0LTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzb21lIEFwcGxpY2F0aW9uQ2FjaGUgc3RhdGlj
IG1lbWJlciBmdW5jdGlvbnMgdG8gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwppbmRleCA3NTViYTQ4ZWE2OTQ1NDhmNjA4YTUzZjlmNDM4MDQyMTM0MjdkNzdjLi5mOTdiYjIw
OWI1YTlmNjgwYTk4MGIyYzNhMTI5YjM2NTMzOTIzOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTUtMDQtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBbV0syXVtpT1NdIGVkaXRvclN0YXRlKCkgc2hvdWxkIG5vdCBjYXVzZSBhIHN5
bmNocm9ub3VzIGxheW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQyNTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDA0MTUwNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGltcGxl
bWVudGF0aW9uIGZvciBFZGl0b3JDbGllbnQ6OmRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxh
eW91dCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisK
IDIwMTUtMDQtMDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYSBXZWJBcHBsaWNhdGlvbkNhY2hlOjpzdG9yYWdlKCkgYW5kIHVzZSBpdCBpbnN0
ZWFkIG9mIHRoZSBXZWJDb3JlIHNpbmdsZXRvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUwOWRkMWFiZGM2MDFk
MDdmMzhhOGYwMjI2NzgyMTFjODFjMWJhZWYuLjA1ZDlkZTViMzdlYjc2OTIxZTQyMmM1NDdkYWQ5
NTE1YmVjNGM1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxNS0wNC0wOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdW2lPU10gZWRpdG9y
U3RhdGUoKSBzaG91bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMgbGF5b3V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1MzYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIwMDQxNTA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoKSBvbiBpT1MgZG9lcyBhIHN5bmNo
cm9ub3VzIGxheW91dCB0byBjb21wdXRlIHNvbWUKKyAgICAgICAgb2YgdGhlIEVkaXRvclN0YXRl
IG1lbWJlcnMgKGUuZy4gY2FyZXRSZWN0QXRTdGFydCAvIGNhcmV0UmVjdEF0RW5kKS4KKyAgICAg
ICAgVGhpcyBpcyBiYWQgZm9yIHBlcmZvcm1hbmNlIGFzIHRoaXMgaXMgY2FsbGVkIGV2ZXJ5IHRp
bWUgdGhlIHNlbGVjdGlvbgorICAgICAgICBpcyBjaGFuZ2VkICh3aGljaCBoYXBwZW5zIGZvciBl
LmcuIHdoZW4geW91IHNldCB0aGUgdmFsdWUgb2YgYSBmb2N1c2VkCisgICAgICAgIEhUTUxJbnB1
dEVsZW1lbnQpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgYmVoYXZpb3Igb24g
aU9TIHRvIG9ubHkgc2VuZCBhIHBhcnRpYWwgRWRpdG9yU3RhdGUKKyAgICAgICAgb24gc2VsZWN0
aW9uIGNoYW5nZSBzbyB0aGF0IHRoZSBVSVByb2Nlc3MgZ2V0cyBtb3N0IG9mIHRoZSBpbmZvcm1h
dGlvbgorICAgICAgICAodGhlIG9uZXMgdGhhdCBkbyBub3QgcmVxdWlyZSBzdHlsZSByZWNhbGMg
b3IgbGF5b3V0KSBBU0FQLiBBIGZ1bGwgRWRpdG9yCisgICAgICAgIHN0YXRlIGlzIHRoZW4gc2Vu
dCBhZnRlciB0aGUgYXN5bmNocm9ub3VzIGxheW91dCBpcyBkb25lLgorCisgICAgICAgIFdpdGgg
dGhpcyBjaGFuZ2UsIEkgc2VlIGEgMzglIGltcHJvdmVtZW50IG9uIFNwZWVkb21ldGVyICgyNi40
ICsvLSAwLjM3CisgICAgICAgIC0+IDM2LjUgKy8tIDAuNTQpIG9uIGlQaG9uZSA2IFBsdXMuCisK
KyAgICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JTdGF0ZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JT
dGF0ZTo6RWRpdG9yU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkQ29tbWl0TGF5ZXJU
cmVlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpXS1NlbGVjdGlv
bkRyYXdpbmdJbmZvKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB3ZWJTZWxlY3Rpb25SZWN0
c10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGRTaG9ydGN1dDpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBzZWxlY3RlZFRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBpc1JlcGxhY2VBbGxvd2VkXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Byb21wdEZv
clJlcGxhY2U6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3RyYW5zbGl0ZXJhdGVDaGlu
ZXNlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRTdHlsaW5nQXRQb3NpdGlvbjpp
bkRpcmVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9u
OndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3dEaWN0aW9uYXJ5
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVj
dGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJJblJlbGF0aW9uVG9D
YXJldFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2VsZWN0aW9uQXRE
b2N1bWVudFN0YXJ0XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0ZWRUZXh0UmFu
Z2VdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBoYXNDb250ZW50XSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFBvc3RM
YXlvdXRFZGl0b3JTdGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cGxhdGZvcm1FZGl0b3JTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0
YXRlKToKKwogMjAxNS0wNC0wOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgaW50cyB0byBXS1JlbW90
ZU9iamVjdENvZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmlu
ZGV4IGE4ZjFiNDE3NzNkMmE4MzNlNDVjN2JlMDc2OTMzMjY1NWVhYmVjMjMuLmUzOWJmYzYxNmZi
NDg5ZDdmM2ZkNzRjMjY5MzliYzkyYTYyYjFmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0zODEsNiArMzgxLDggQEAgdm9pZCBGcmFtZVNlbGVjdGlv
bjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKCkKICAgICB9CiAKICAgICBub3RpZnlBY2Nlc3Np
YmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCk7CisKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+ZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCk7CiB9CiAKIHZvaWQgRnJh
bWVTZWxlY3Rpb246OnVwZGF0ZURhdGFEZXRlY3RvcnNGb3JTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDljYTQzZDBhYjAzYWUyN2ExZmViZGM4ZDIxNDhl
YjY4ZGExOGFhMWEuLjhhNjMxYjMzMmIxYzY0ZGQxZDNjZDYzODI4YTkyYTM2Yjk5OTViM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQ0Niw2ICs0NDYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIG92ZXJyaWRlIHsgfQogICAg
IHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSopIG92ZXJyaWRl
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQo
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oRnJh
bWUqKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIG92ZXJy
aWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
UmFuZ2UqKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IGUx
OGMwMjdhNTgzZDZhNTUzNmUwY2M3ZGU1NTkzMWExNjRkOTIxMTAuLjJkNTUxYzdkNDUyYzJhOWJi
ZTY1Mzk4MzU2OTFiZWU3ZDAxNWZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApA
QCAtOTMsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGlu
ZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChSYW5nZSopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDkw
ZTE2NmFhNzQ0NDM0ODQwNjk5MzJiNmFjYzcyNDNhNTg3Njg3NjkuLjY0NzgwMzg5YTRlMzdjMjgx
OGYyYjI0M2NmYmViOGIxYTNkZjg3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMTAsNiArMTEwLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpG
cmFtZSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRV
cGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29t
cG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNDgxMzc2MTAyNDI2NDE4YmQyMmUwYmU5NGI0MTMxNTQxYzE1NGYyMC4uMTVhMDAy
NzY1MzY5N2IxN2E2OGEzNmZiNmUwYzljMDk0ZWVhZWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZy
YW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91
dCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlvbihX
ZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShX
ZWJDb3JlOjpSYW5nZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXgg
OWJjMGI4ZmMxYTg5OTllYWZhY2U0MTVjNmRkOTRjMTAyNDE0ZGQyMC4uYzE1ZmY3YWZlNjkzZjU2
MWRmNTUwZjkxNTI1Yjk3MGRhZmEyOGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0VkaXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3Rh
dGUuY3BwCkBAIC00MSwyMiArNDEsMTUgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2RlKElQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaXNJblBhc3N3
b3JkRmllbGQ7CiAgICAgZW5jb2RlciA8PCBpc0luUGx1Z2luOwogICAgIGVuY29kZXIgPDwgaGFz
Q29tcG9zaXRpb247CisgICAgZW5jb2RlciA8PCBpc01pc3NpbmdQb3N0TGF5b3V0RGF0YTsKIAog
I2lmIFBMQVRGT1JNKElPUykKLSAgICBlbmNvZGVyIDw8IGlzUmVwbGFjZUFsbG93ZWQ7Ci0gICAg
ZW5jb2RlciA8PCBoYXNDb250ZW50OwotICAgIGVuY29kZXIgPDwgY2hhcmFjdGVyQWZ0ZXJTZWxl
Y3Rpb247Ci0gICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247Ci0gICAgZW5j
b2RlciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247Ci0gICAgZW5jb2RlciA8PCBjYXJl
dFJlY3RBdFN0YXJ0OwotICAgIGVuY29kZXIgPDwgY2FyZXRSZWN0QXRFbmQ7Ci0gICAgZW5jb2Rl
ciA8PCBzZWxlY3Rpb25SZWN0czsKLSAgICBlbmNvZGVyIDw8IHNlbGVjdGVkVGV4dExlbmd0aDsK
LSAgICBlbmNvZGVyIDw8IHdvcmRBdFNlbGVjdGlvbjsKKyAgICBpZiAoIWlzTWlzc2luZ1Bvc3RM
YXlvdXREYXRhKQorICAgICAgICBtX3Bvc3RMYXlvdXREYXRhLmVuY29kZShlbmNvZGVyKTsKKwog
ICAgIGVuY29kZXIgPDwgZmlyc3RNYXJrZWRSZWN0OwogICAgIGVuY29kZXIgPDwgbGFzdE1hcmtl
ZFJlY3Q7CiAgICAgZW5jb2RlciA8PCBtYXJrZWRUZXh0OwotICAgIGVuY29kZXIgPDwgdHlwaW5n
QXR0cmlidXRlczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtOTAsNDMgKzgzLDc0
IEBAIGJvb2wgRWRpdG9yU3RhdGU6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgRWRpdG9yU3RhdGUmIHJlc3VsdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5o
YXNDb21wb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmlzUmVwbGFjZUFsbG93ZWQpKQorICAgIGlmICghcmVzdWx0LmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhKSB7CisgICAgICAgIGlmICghUG9zdExheW91dERhdGE6OmRlY29kZShkZWNvZGVyLCBy
ZXN1bHQucG9zdExheW91dERhdGEoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlyc3RNYXJrZWRSZWN0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0Nv
bnRlbnQpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmxhc3RNYXJrZWRSZWN0KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNo
YXJhY3RlckFmdGVyU2VsZWN0aW9uKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
YXJrZWRUZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKEdUSykKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jdXJzb3JSZWN0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR3b0No
YXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQor
CisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IHNlbGVjdGlvblJlY3RzOworICAgIGVuY29kZXIgPDwgY2FyZXRSZWN0QXRTdGFydDsKKyAg
ICBlbmNvZGVyIDw8IGNhcmV0UmVjdEF0RW5kOworICAgIGVuY29kZXIgPDwgd29yZEF0U2VsZWN0
aW9uOworICAgIGVuY29kZXIgPDwgc2VsZWN0ZWRUZXh0TGVuZ3RoOworICAgIGVuY29kZXIgPDwg
Y2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb247CisgICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJCZWZvcmVT
ZWxlY3Rpb247CisgICAgZW5jb2RlciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247Cisg
ICAgZW5jb2RlciA8PCB0eXBpbmdBdHRyaWJ1dGVzOworICAgIGVuY29kZXIgPDwgaXNSZXBsYWNl
QWxsb3dlZDsKKyAgICBlbmNvZGVyIDw8IGhhc0NvbnRlbnQ7Cit9CisKK2Jvb2wgRWRpdG9yU3Rh
dGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IFBvc3RMYXlvdXREYXRhJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuc2VsZWN0aW9uUmVjdHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY2FyZXRSZWN0QXRTdGFydCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJlY3RBdEVuZCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rp
b25SZWN0cykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud29yZEF0U2VsZWN0aW9u
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnNlbGVjdGVkVGV4dExlbmd0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC53b3JkQXRTZWxlY3Rpb24pKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlyc3RNYXJrZWRSZWN0KSkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5sYXN0
TWFya2VkUmVjdCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhcmFjdGVyQmVm
b3JlU2VsZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1hcmtlZFRleHQpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBpbmdBdHRyaWJ1dGVzKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShHVEspCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY3Vyc29yUmVjdCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oYXNDb250ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZgogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IDk3OWFkNWIxZWZiOGZjNzRlZjVhN2E3ZjhmYzdkNjYz
YWZiY2NlMWEuLjQ3MzIwNjZiZmFmNGMxMDI5M2ZhNjRmZmFiZmU2YTY1M2JlYWJmOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC00NCw1MiArNDQsNDEgQEAgZW51bSBUeXBp
bmdBdHRyaWJ1dGVzIHsKIH07CiAKIHN0cnVjdCBFZGl0b3JTdGF0ZSB7Ci0gICAgRWRpdG9yU3Rh
dGUoKQotICAgICAgICA6IHNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZh
bHNlKQotICAgICAgICAsIHNlbGVjdGlvbklzTm9uZSh0cnVlKQotICAgICAgICAsIHNlbGVjdGlv
bklzUmFuZ2UoZmFsc2UpCi0gICAgICAgICwgaXNDb250ZW50RWRpdGFibGUoZmFsc2UpCi0gICAg
ICAgICwgaXNDb250ZW50UmljaGx5RWRpdGFibGUoZmFsc2UpCi0gICAgICAgICwgaXNJblBhc3N3
b3JkRmllbGQoZmFsc2UpCi0gICAgICAgICwgaXNJblBsdWdpbihmYWxzZSkKLSAgICAgICAgLCBo
YXNDb21wb3NpdGlvbihmYWxzZSkKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICwgaXNSZXBs
YWNlQWxsb3dlZChmYWxzZSkKLSAgICAgICAgLCBoYXNDb250ZW50KGZhbHNlKQotICAgICAgICAs
IGNoYXJhY3RlckFmdGVyU2VsZWN0aW9uKDApCi0gICAgICAgICwgY2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uKDApCi0gICAgICAgICwgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKDApCi0gICAg
ICAgICwgc2VsZWN0ZWRUZXh0TGVuZ3RoKDApCi0gICAgICAgICwgdHlwaW5nQXR0cmlidXRlcyhB
dHRyaWJ1dGVOb25lKQotI2VuZGlmCi0gICAgewotICAgIH0KKyAgICBib29sIHNob3VsZElnbm9y
ZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlIHsgZmFsc2UgfTsKIAotICAgIGJvb2wgc2hvdWxk
SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2U7Ci0KLSAgICBib29sIHNlbGVjdGlvbklz
Tm9uZTsgLy8gVGhpcyB3aWxsIGJlIGZhbHNlIHdoZW4gdGhlcmUgaXMgYSBjYXJldCBzZWxlY3Rp
b24uCi0gICAgYm9vbCBzZWxlY3Rpb25Jc1JhbmdlOwotICAgIGJvb2wgaXNDb250ZW50RWRpdGFi
bGU7Ci0gICAgYm9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKLSAgICBib29sIGlzSW5QYXNz
d29yZEZpZWxkOwotICAgIGJvb2wgaXNJblBsdWdpbjsKLSAgICBib29sIGhhc0NvbXBvc2l0aW9u
OworICAgIGJvb2wgc2VsZWN0aW9uSXNOb25lIHsgdHJ1ZSB9OyAvLyBUaGlzIHdpbGwgYmUgZmFs
c2Ugd2hlbiB0aGVyZSBpcyBhIGNhcmV0IHNlbGVjdGlvbi4KKyAgICBib29sIHNlbGVjdGlvbklz
UmFuZ2UgeyBmYWxzZSB9OworICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUgeyBmYWxzZSB9Owor
ICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFibGUgeyBmYWxzZSB9OworICAgIGJvb2wgaXNJ
blBhc3N3b3JkRmllbGQgeyBmYWxzZSB9OworICAgIGJvb2wgaXNJblBsdWdpbiB7IGZhbHNlIH07
CisgICAgYm9vbCBoYXNDb21wb3NpdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBpc01pc3NpbmdQ
b3N0TGF5b3V0RGF0YSB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBp
c1JlcGxhY2VBbGxvd2VkOwotICAgIGJvb2wgaGFzQ29udGVudDsKLSAgICBVQ2hhcjMyIGNoYXJh
Y3RlckFmdGVyU2VsZWN0aW9uOwotICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9u
OwotICAgIFVDaGFyMzIgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOwotICAgIFdlYkNvcmU6
OkludFJlY3QgY2FyZXRSZWN0QXRTdGFydDsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVj
dEF0RW5kOwotICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0
czsKLSAgICB1aW50NjRfdCBzZWxlY3RlZFRleHRMZW5ndGg7Ci0gICAgU3RyaW5nIHdvcmRBdFNl
bGVjdGlvbjsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGZpcnN0TWFya2VkUmVjdDsKICAgICBXZWJD
b3JlOjpJbnRSZWN0IGxhc3RNYXJrZWRSZWN0OwogICAgIFN0cmluZyBtYXJrZWRUZXh0OwotICAg
IHVpbnQzMl90IHR5cGluZ0F0dHJpYnV0ZXM7CisKKyAgICBzdHJ1Y3QgUG9zdExheW91dERhdGEg
eworICAgICAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHM7
CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRSZWN0QXRTdGFydDsKKyAgICAgICAgV2Vi
Q29yZTo6SW50UmVjdCBjYXJldFJlY3RBdEVuZDsKKyAgICAgICAgU3RyaW5nIHdvcmRBdFNlbGVj
dGlvbjsKKyAgICAgICAgdWludDY0X3Qgc2VsZWN0ZWRUZXh0TGVuZ3RoIHsgMCB9OworICAgICAg
ICBVQ2hhcjMyIGNoYXJhY3RlckFmdGVyU2VsZWN0aW9uIHsgMCB9OworICAgICAgICBVQ2hhcjMy
IGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiB7IDAgfTsKKyAgICAgICAgVUNoYXIzMiB0d29DaGFy
YWN0ZXJCZWZvcmVTZWxlY3Rpb24geyAwIH07CisgICAgICAgIHVpbnQzMl90IHR5cGluZ0F0dHJp
YnV0ZXMgeyBBdHRyaWJ1dGVOb25lIH07CisgICAgICAgIGJvb2wgaXNSZXBsYWNlQWxsb3dlZCB7
IGZhbHNlIH07CisgICAgICAgIGJvb2wgaGFzQ29udGVudCB7IGZhbHNlIH07CisKKyAgICAgICAg
dm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgUG9zdExheW91dERhdGEmKTsKKyAg
ICB9OworCisgICAgY29uc3QgUG9zdExheW91dERhdGEmIHBvc3RMYXlvdXREYXRhKCkgY29uc3Q7
CisgICAgUG9zdExheW91dERhdGEmIHBvc3RMYXlvdXREYXRhKCk7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKEdUSykKQEAgLTk4LDggKzg3LDI3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAKICAg
ICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBi
b29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIEVkaXRvclN0YXRlJik7CisKKyNpZiBQ
TEFURk9STShJT1MpCitwcml2YXRlOgorICAgIFBvc3RMYXlvdXREYXRhIG1fcG9zdExheW91dERh
dGE7CisjZW5kaWYKIH07CiAKKyNpZiBQTEFURk9STShJT1MpCitpbmxpbmUgYXV0byBFZGl0b3JT
dGF0ZTo6cG9zdExheW91dERhdGEoKSAtPiBQb3N0TGF5b3V0RGF0YSYKK3sKKyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSwgIkF0dGVtcHQgdG8gYWNjZXNz
IHBvc3QgbGF5b3V0IGRhdGEgYmVmb3JlIHJlY2VpdmluZyBpdCIpOworICAgIHJldHVybiBtX3Bv
c3RMYXlvdXREYXRhOworfQorCitpbmxpbmUgYXV0byBFZGl0b3JTdGF0ZTo6cG9zdExheW91dERh
dGEoKSBjb25zdCAtPiBjb25zdCBQb3N0TGF5b3V0RGF0YSYKK3sKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSwgIkF0dGVtcHQgdG8gYWNjZXNzIHBvc3Qg
bGF5b3V0IGRhdGEgYmVmb3JlIHJlY2VpdmluZyBpdCIpOworICAgIHJldHVybiBtX3Bvc3RMYXlv
dXREYXRhOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVkaXRvclN0YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBjMTVhZjIw
Y2M3NWU0ZWUwY2U0YjJkZWIyNDY2NjBkMjdkOGNmODA2Li5mYzBjZTQ0ODY5MjdjZjExYzk0MGZk
NGQ4Y2I1YWQ4OTUwOTc5ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC00OTAsNyArNDkwLDExIEBAIC0gKHZvaWQpX2RpZENvbW1pdExh
eWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJU
cmVlCiAgICAgICAgIFtfd2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiAgICAg
fQogICAgIAotICAgIFtzZWxmIF91cGRhdGVDaGFuZ2VkU2VsZWN0aW9uXTsKKyAgICAvLyBVcGRh
dGluZyB0aGUgc2VsZWN0aW9uIHJlcXVpcmVzIGEgZnVsbCBlZGl0b3Igc3RhdGUuIElmIHRoZSBl
ZGl0b3Igc3RhdGUgaXMgbWlzc2luZyBwb3N0IGxheW91dAorICAgIC8vIGRhdGEgdGhlbiBpdCBt
ZWFucyB0aGVyZSBpcyBhIGxheW91dCBwZW5kaW5nIGFuZCB3ZSdyZSBnb2luZyB0byBiZSBjYWxs
ZWQgYWdhaW4gYWZ0ZXIgdGhlIGxheW91dAorICAgIC8vIHNvIHdlIGRlbGF5IHRoZSBzZWxlY3Rp
b24gdXBkYXRlLgorICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5nUG9zdExh
eW91dERhdGEpCisgICAgICAgIFtzZWxmIF91cGRhdGVDaGFuZ2VkU2VsZWN0aW9uXTsKIH0KIAog
LSAodm9pZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RWaWV3OihVSVZpZXcgKilyb290
VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA4ZjFkNzU1YWE3ZWMyZGJiZTAwMzMzZWI1MDIzNTg0
MmVkOTIzZmE5Li5kYTcyZGVjZjdjYzAwYTVlNDNhMGJiOTg5ZThhN2IwMTc0M2Q5MTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQpAQCAtODUsOCArODUsOSBAQCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpX
S1NlbGVjdGlvbkRyYXdpbmdJbmZvKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKICAg
ICB9CiAKICAgICB0eXBlID0gU2VsZWN0aW9uVHlwZTo6UmFuZ2U7Ci0gICAgY2FyZXRSZWN0ID0g
ZWRpdG9yU3RhdGUuY2FyZXRSZWN0QXRFbmQ7Ci0gICAgc2VsZWN0aW9uUmVjdHMgPSBlZGl0b3JT
dGF0ZS5zZWxlY3Rpb25SZWN0czsKKyAgICBhdXRvJiBwb3N0TGF5b3V0RGF0YSA9IGVkaXRvclN0
YXRlLnBvc3RMYXlvdXREYXRhKCk7CisgICAgY2FyZXRSZWN0ID0gcG9zdExheW91dERhdGEuY2Fy
ZXRSZWN0QXRFbmQ7CisgICAgc2VsZWN0aW9uUmVjdHMgPSBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rp
b25SZWN0czsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS1NlbGVjdGlvbkRy
YXdpbmdJbmZvJiBhLCBjb25zdCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvJiBiKQpAQCAtOTg2LDEz
ICs5ODcsMTQgQEAgLSAoQk9PTClwb2ludElzSW5Bc3Npc3RlZE5vZGU6KENHUG9pbnQpcG9pbnQK
IAogLSAoTlNBcnJheSAqKXdlYlNlbGVjdGlvblJlY3RzCiB7Ci0gICAgdW5zaWduZWQgc2l6ZSA9
IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvblJlY3RzLnNpemUoKTsKKyAgICBjb25zdCBh
dXRvJiBzZWxlY3Rpb25SZWN0cyA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRh
KCkuc2VsZWN0aW9uUmVjdHM7CisgICAgdW5zaWduZWQgc2l6ZSA9IHNlbGVjdGlvblJlY3RzLnNp
emUoKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU011dGFi
bGVBcnJheSAqd2ViUmVjdHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6
ZV07CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBj
b25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JiBjb3JlUmVjdCA9IF9wYWdlLT5lZGl0b3JTdGF0
ZSgpLnNlbGVjdGlvblJlY3RzW2ldOworICAgICAgICBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0JiBjb3JlUmVjdCA9IHNlbGVjdGlvblJlY3RzW2ldOwogICAgICAgICBXZWJTZWxlY3Rpb25S
ZWN0ICp3ZWJSZWN0ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF07CiAgICAgICAg
IHdlYlJlY3QucmVjdCA9IGNvcmVSZWN0LnJlY3QoKTsKICAgICAgICAgd2ViUmVjdC53cml0aW5n
RGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSID8gV0tXcml0aW5nRGlyZWN0
aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKQEAgLTEyNzcs
MTkgKzEyNzksMTkgQEAgLSAoTlNBcnJheSAqKXN1cHBvcnRlZFBhc3RlYm9hcmRUeXBlc0ZvckN1
cnJlbnRTZWxlY3Rpb24KIC0gKHZvaWQpX2FkZFNob3J0Y3V0OihpZClzZW5kZXIKIHsKICAgICBp
ZiAoX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgJiYgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2aWNlRm9yOmZyb21SZWN0Oild
KQotICAgICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2hvd1RleHRTZXJ2aWNlRm9yOltz
ZWxmIHNlbGVjdGVkVGV4dF0gZnJvbVJlY3Q6X3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9u
UmVjdHNbMF0ucmVjdCgpXTsKKyAgICAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHNob3dU
ZXh0U2VydmljZUZvcjpbc2VsZiBzZWxlY3RlZFRleHRdIGZyb21SZWN0Ol9wYWdlLT5lZGl0b3JT
dGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0aW9uUmVjdHNbMF0ucmVjdCgpXTsKICAgICBl
bHNlIGlmIChfd2ViU2VsZWN0aW9uQXNzaXN0YW50ICYmIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd1RleHRTZXJ2aWNlRm9yOmZyb21SZWN0
OildKQotICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93VGV4dFNlcnZpY2VGb3I6
W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rp
b25SZWN0c1swXS5yZWN0KCldOworICAgICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBzaG93
VGV4dFNlcnZpY2VGb3I6W3NlbGYgc2VsZWN0ZWRUZXh0XSBmcm9tUmVjdDpfcGFnZS0+ZWRpdG9y
U3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKV07CiB9CiAK
IC0gKE5TU3RyaW5nICopc2VsZWN0ZWRUZXh0CiB7Ci0gICAgcmV0dXJuIChOU1N0cmluZyAqKV9w
YWdlLT5lZGl0b3JTdGF0ZSgpLndvcmRBdFNlbGVjdGlvbjsKKyAgICByZXR1cm4gKE5TU3RyaW5n
ICopX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb247
CiB9CiAKIC0gKEJPT0wpaXNSZXBsYWNlQWxsb3dlZAogewotICAgIHJldHVybiBfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc1JlcGxhY2VBbGxvd2VkOworICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5wb3N0TGF5b3V0RGF0YSgpLmlzUmVwbGFjZUFsbG93ZWQ7CiB9CiAKIC0gKHZvaWQpcmVw
bGFjZVRleHQ6KE5TU3RyaW5nICopdGV4dCB3aXRoVGV4dDooTlNTdHJpbmcgKil3b3JkCkBAIC0x
MzA0LDE3ICsxMzA2LDE4IEBAIC0gKHZvaWQpc2VsZWN0V29yZEJhY2t3YXJkCiAKIC0gKHZvaWQp
X3Byb21wdEZvclJlcGxhY2U6KGlkKXNlbmRlcgogewotICAgIGlmIChfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS53b3JkQXRTZWxlY3Rpb24uaXNFbXB0eSgpKQorICAgIGNvbnN0IGF1dG8mIHdvcmRBdFNl
bGVjdGlvbiA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkud29yZEF0U2Vs
ZWN0aW9uOworICAgIGlmICh3b3JkQXRTZWxlY3Rpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0OildKQotICAgICAgICBbX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQgc2NoZWR1bGVSZXBsYWNlbWVudHNGb3JUZXh0Ol9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLndvcmRBdFNlbGVjdGlvbl07CisgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFz
c2lzdGFudCBzY2hlZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6d29yZEF0U2VsZWN0aW9uXTsKIH0K
IAogLSAodm9pZClfdHJhbnNsaXRlcmF0ZUNoaW5lc2U6KGlkKXNlbmRlcgogewogICAgIGlmIChb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzY2hl
ZHVsZUNoaW5lc2VUcmFuc2xpdGVyYXRpb25Gb3JUZXh0OildKQotICAgICAgICBbX3RleHRTZWxl
Y3Rpb25Bc3Npc3RhbnQgc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9yVGV4dDpfcGFn
ZS0+ZWRpdG9yU3RhdGUoKS53b3JkQXRTZWxlY3Rpb25dOworICAgICAgICBbX3RleHRTZWxlY3Rp
b25Bc3Npc3RhbnQgc2NoZWR1bGVDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9yVGV4dDpfcGFnZS0+
ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlvbl07CiB9CiAKIC0g
KHZvaWQpX3JlYW5hbHl6ZTooaWQpc2VuZGVyCkBAIC0xMzM0LDEwICsxMzM3LDExIEBAIC0gKE5T
RGljdGlvbmFyeSAqKXRleHRTdHlsaW5nQXRQb3NpdGlvbjooVUlUZXh0UG9zaXRpb24gKilwb3Np
dGlvbiBpbkRpcmVjdGlvbjooCiAKICAgICBOU011dGFibGVEaWN0aW9uYXJ5KiByZXN1bHQgPSBb
TlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKIAorICAgIGF1dG8gdHlwaW5nQXR0cmli
dXRlcyA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkudHlwaW5nQXR0cmli
dXRlczsKICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyBzeW1ib2xpY1RyYWl0cyA9IDA7Ci0gICAg
aWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnR5cGluZ0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVCb2xk
KQorICAgIGlmICh0eXBpbmdBdHRyaWJ1dGVzICYgQXR0cmlidXRlQm9sZCkKICAgICAgICAgc3lt
Ym9saWNUcmFpdHMgfD0ga0NURm9udEJvbGRUcmFpdDsKLSAgICBpZiAoX3BhZ2UtPmVkaXRvclN0
YXRlKCkudHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZUl0YWxpY3MpCisgICAgaWYgKHR5cGlu
Z0F0dHJpYnV0ZXMgJiBBdHRyaWJ1dGVJdGFsaWNzKQogICAgICAgICBzeW1ib2xpY1RyYWl0cyB8
PSBrQ1RGb250VHJhaXRJdGFsaWM7CiAKICAgICAvLyBXZSBjaG9zZSBhIHJhbmRvbSBmb250IGZh
bWlseSBhbmQgc2l6ZS4KQEAgLTEzNTEsNyArMTM1NSw3IEBAIC0gKE5TRGljdGlvbmFyeSAqKXRl
eHRTdHlsaW5nQXRQb3NpdGlvbjooVUlUZXh0UG9zaXRpb24gKilwb3NpdGlvbiBpbkRpcmVjdGlv
bjooCiAgICAgaWYgKGZvbnQpCiAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OihpZClmb250Lmdl
dCgpIGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKICAgICAKLSAgICBpZiAoX3BhZ2UtPmVk
aXRvclN0YXRlKCkudHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZVVuZGVybGluZSkKKyAgICBp
ZiAodHlwaW5nQXR0cmlidXRlcyAmIEF0dHJpYnV0ZVVuZGVybGluZSkKICAgICAgICAgW3Jlc3Vs
dCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6TlNVbmRlcmxpbmVTdHlsZVNpbmds
ZV0gZm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0xMzg5LDcgKzEzOTMsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb246KFNF
TClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAgICAgICAgIGlmIChfcGFnZS0+ZWRpdG9y
U3RhdGUoKS5pc0luUGFzc3dvcmRGaWVsZCB8fCAhKGhhc1dlYlNlbGVjdGlvbiB8fCBfcGFnZS0+
ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc1JhbmdlKSkKICAgICAgICAgICAgIHJldHVybiBOTzsK
IAotICAgICAgICBOU1VJbnRlZ2VyIHRleHRMZW5ndGggPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5z
ZWxlY3RlZFRleHRMZW5ndGg7CisgICAgICAgIE5TVUludGVnZXIgdGV4dExlbmd0aCA9IF9wYWdl
LT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0ZWRUZXh0TGVuZ3RoOwogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGNhbGxpbmcgVUlSZWZlcmVuY2VMaWJyYXJ5Vmll
d0NvbnRyb2xsZXIgdG8gY2hlY2sgaWYgdGhlIGxlbmd0aCBpcwogICAgICAgICAvLyBhY2NlcHRh
YmxlLCBidXQgdGhlIGludGVyZmFjZSB0YWtlcyBhIHN0cmluZy4KICAgICAgICAgLy8gPHJkYXI6
Ly9wcm9ibGVtLzE1MjU0NDA2PgpAQCAtMTQxOCw3ICsxNDIyLDcgQEAgLSAoQk9PTCljYW5QZXJm
b3JtQWN0aW9uOihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogICAgIH0KIAogICAg
IGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF9wcm9tcHRGb3JSZXBsYWNlOikpIHsKLSAgICAgICAg
aWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc1JhbmdlIHx8ICFfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc1JlcGxhY2VBbGxvd2VkIHx8ICFbW1VJS2V5Ym9hcmRJbXBsIGFjdGl2ZUlu
c3RhbmNlXSBhdXRvY29ycmVjdFNwZWxsaW5nRW5hYmxlZF0pCisgICAgICAgIGlmICghX3BhZ2Ut
PmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCku
cG9zdExheW91dERhdGEoKS5pc1JlcGxhY2VBbGxvd2VkIHx8ICFbW1VJS2V5Ym9hcmRJbXBsIGFj
dGl2ZUluc3RhbmNlXSBhdXRvY29ycmVjdFNwZWxsaW5nRW5hYmxlZF0pCiAgICAgICAgICAgICBy
ZXR1cm4gTk87CiAgICAgICAgIGlmIChbW3NlbGYgc2VsZWN0ZWRUZXh0XSBfY29udGFpbnNDSlNj
cmlwdHNPbmx5XSkKICAgICAgICAgICAgIHJldHVybiBOTzsKQEAgLTE0MjYsMTMgKzE0MzAsMTMg
QEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uOihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNl
bmRlcgogICAgIH0KIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF90cmFuc2xpdGVyYXRl
Q2hpbmVzZTopKSB7Ci0gICAgICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9u
SXNSYW5nZSB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNSZXBsYWNlQWxsb3dlZCB8fCAhW1tV
SUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRd
KQorICAgICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UgfHwg
IV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuaXNSZXBsYWNlQWxsb3dlZCB8
fCAhW1tVSUtleWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0Vu
YWJsZWRdKQogICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICByZXR1cm4gVUlLZXlib2Fy
ZEVuYWJsZWRJbnB1dE1vZGVzQWxsb3dDaGluZXNlVHJhbnNsaXRlcmF0aW9uRm9yVGV4dChbc2Vs
ZiBzZWxlY3RlZFRleHRdKTsKICAgICB9CiAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcihf
cmVhbmFseXplOikpIHsKLSAgICAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rp
b25Jc1JhbmdlIHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc1JlcGxhY2VBbGxvd2VkIHx8ICFb
W1VJS2V5Ym9hcmRJbXBsIGFjdGl2ZUluc3RhbmNlXSBhdXRvY29ycmVjdFNwZWxsaW5nRW5hYmxl
ZF0pCisgICAgICAgIGlmICghX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSB8
fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5pc1JlcGxhY2VBbGxvd2Vk
IHx8ICFbW1VJS2V5Ym9hcmRJbXBsIGFjdGl2ZUluc3RhbmNlXSBhdXRvY29ycmVjdFNwZWxsaW5n
RW5hYmxlZF0pCiAgICAgICAgICAgICByZXR1cm4gTk87CiAgICAgICAgIHJldHVybiBVSUtleWJv
YXJkQ3VycmVudElucHV0TW9kZUFsbG93c0NoaW5lc2VPckphcGFuZXNlUmVhbmFseXNpc0ZvclRl
eHQoW3NlbGYgc2VsZWN0ZWRUZXh0XSk7CiAgICAgfQpAQCAtMTUzMCw3ICsxNTM0LDcgQEAgLSAo
dm9pZClfc2hvd1RleHRTdHlsZU9wdGlvbnM6KGlkKXNlbmRlcgogCiAtICh2b2lkKV9zaG93RGlj
dGlvbmFyeTooTlNTdHJpbmcgKil0ZXh0CiB7Ci0gICAgQ0dSZWN0IHByZXNlbnRhdGlvblJlY3Qg
PSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25SZWN0c1swXS5yZWN0KCk7CisgICAgQ0dS
ZWN0IHByZXNlbnRhdGlvblJlY3QgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0
YSgpLnNlbGVjdGlvblJlY3RzWzBdLnJlY3QoKTsKICAgICBpZiAoX3RleHRTZWxlY3Rpb25Bc3Np
c3RhbnQpCiAgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBzaG93RGljdGlvbmFyeUZv
cjp0ZXh0IGZyb21SZWN0OnByZXNlbnRhdGlvblJlY3RdOwogICAgIGVsc2UKQEAgLTE5MzcsMTgg
KzE5NDEsMTggQEAgLSAodm9pZCl1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENHUG9p
bnQpcG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4KIAogLSAoVVRGMzJDaGFyKV9jaGFy
YWN0ZXJCZWZvcmVDYXJldFNlbGVjdGlvbgogewotICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CisgICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JT
dGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOwogfQogCiAt
IChVVEYzMkNoYXIpX2NoYXJhY3RlckluUmVsYXRpb25Ub0NhcmV0U2VsZWN0aW9uOihpbnQpYW1v
dW50CiB7CiAgICAgc3dpdGNoIChhbW91bnQpIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVy
biBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbjsKKyAgICAgICAg
cmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2hhcmFjdGVyQWZ0
ZXJTZWxlY3Rpb247CiAgICAgY2FzZSAtMToKLSAgICAgICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JT
dGF0ZSgpLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKKyAgICAgICAgcmV0dXJuIF9wYWdlLT5l
ZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOwog
ICAgIGNhc2UgLTI6Ci0gICAgICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS50d29DaGFy
YWN0ZXJCZWZvcmVTZWxlY3Rpb247CisgICAgICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5wb3N0TGF5b3V0RGF0YSgpLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xOTU2LDcgKzE5NjAsNyBAQCAtIChV
VEYzMkNoYXIpX2NoYXJhY3RlckluUmVsYXRpb25Ub0NhcmV0U2VsZWN0aW9uOihpbnQpYW1vdW50
CiAKIC0gKEJPT0wpX3NlbGVjdGlvbkF0RG9jdW1lbnRTdGFydAogewotICAgIHJldHVybiAhX3Bh
Z2UtPmVkaXRvclN0YXRlKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOworICAgIHJldHVybiAh
X3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5jaGFyYWN0ZXJCZWZvcmVTZWxl
Y3Rpb247CiB9CiAKIC0gKENHUmVjdCl0ZXh0Rmlyc3RSZWN0CkBAIC0yMTMwLDggKzIxMzQsOSBA
QCAtICh2b2lkKXJlcGxhY2VSYW5nZTooVUlUZXh0UmFuZ2UgKilyYW5nZSB3aXRoVGV4dDooTlNT
dHJpbmcgKil0ZXh0CiAKIC0gKFVJVGV4dFJhbmdlICopc2VsZWN0ZWRUZXh0UmFuZ2UKIHsKLSAg
ICBGbG9hdFJlY3Qgc3RhcnRSZWN0ID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkuY2FyZXRSZWN0QXRT
dGFydDsKLSAgICBGbG9hdFJlY3QgZW5kUmVjdCA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmNhcmV0
UmVjdEF0RW5kOworICAgIGF1dG8mIHBvc3RMYXlvdXRFZGl0b3JTdGF0ZURhdGEgPSBfcGFnZS0+
ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpOworICAgIEZsb2F0UmVjdCBzdGFydFJlY3Qg
PSBwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhLmNhcmV0UmVjdEF0U3RhcnQ7CisgICAgRmxvYXRS
ZWN0IGVuZFJlY3QgPSBwb3N0TGF5b3V0RWRpdG9yU3RhdGVEYXRhLmNhcmV0UmVjdEF0RW5kOwog
ICAgIGRvdWJsZSBpbnZlcnNlU2NhbGUgPSBbc2VsZiBpbnZlcnNlU2NhbGVdOwogICAgIC8vIFdl
IHdhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgY2FyZXQgd2lkdGgsIHdoaWxlIHRoZSBoZWlnaHQg
c2NhbGVzIHdpdGgKICAgICAvLyB0aGUgY29udGVudCB0YWtpbmcgb3JpZW50YXRpb24gaW50byBh
Y2NvdW50LgpAQCAtMjE1OSw3ICsyMTY0LDcgQEAgLSAoVUlUZXh0UmFuZ2UgKilzZWxlY3RlZFRl
eHRSYW5nZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRSZWN0OnN0YXJ0
UmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRSZWN0OmVuZFJlY3QK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0czpbc2VsZiB3ZWJTZWxl
Y3Rpb25SZWN0c10KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVGV4dExlbmd0aDpf
cGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3RlZFRleHRMZW5ndGhdOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0ZWRUZXh0TGVuZ3RoOnBvc3RMYXlvdXRFZGl0b3JTdGF0ZURhdGEuc2Vs
ZWN0ZWRUZXh0TGVuZ3RoXTsKIH0KIAogLSAoQ0dSZWN0KWNhcmV0UmVjdEZvclBvc2l0aW9uOihV
SVRleHRQb3NpdGlvbiAqKXBvc2l0aW9uCkBAIC0yNjgwLDcgKzI2ODUsNyBAQCAtICh2b2lkKXNl
dE1hcmtlZFRleHQ6KE5TU3RyaW5nICopdGV4dAogCiAtIChCT09MKWhhc0NvbnRlbnQKIHsKLSAg
ICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29udGVudDsKKyAgICByZXR1cm4gX3Bh
Z2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5oYXNDb250ZW50OwogfQogCiAtICh2
b2lkKXNlbGVjdEFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDM0YWZiYmFkZmRiNGQ5
ODZmNWY3Y2EzZGNkZGE0NzAzZmZlNzkyNmYuLmI4Y2JjY2VhZGYwYmEzYTQ3YjI4YmFiYmRkZTM4
MTgzMzFhNTk3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE5MCw2ICsxOTAsMTEg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRDaGFuZ2VTZWxl
Y3Rpb25BbmRVcGRhdGVMYXlvdXQoKQoreworICAgIG1fcGFnZS0+c2VuZFBvc3RMYXlvdXRFZGl0
b3JTdGF0ZUlmTmVlZGVkKCk7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaXNjYXJkZWRD
b21wb3NpdGlvbihGcmFtZSopCiB7CiAgICAgbV9wYWdlLT5kaXNjYXJkZWRDb21wb3NpdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNWZjNjEzMTYzYWRkZDYzZGEwZTZiNGY1NzdlZDZh
NDI2MDgyNzExZi4uNzcwNTUxOTRmNGU1MGQ3MDM3NzE3YjgyNTY1ZTVlYjE5Njg4MWNiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25kVG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9u
ZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2Uq
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA1YmQ3M2E3OWU2NDJkYzdiYzcwOTRlZjk1M2EwNDZhMjRhNWJlZTEzLi40YjAy
ZGQ0N2Q5MmY4ODA3NGY1NTkyZTc3NzI3ZTE2NTc3ZGQwMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MzgsNyArNzM4LDcgQEAgV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChX
ZWJGcmFtZSosIGNvbnN0IFN0cmkKIH0KICNlbmRpZgogCi1FZGl0b3JTdGF0ZSBXZWJQYWdlOjpl
ZGl0b3JTdGF0ZSgpIGNvbnN0CitFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNs
dWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QK
IHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogCkBAIC03NjMsNyArNzYzLDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6
ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgIHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGZyYW1lLmVk
aXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgcmVzdWx0LnNob3VsZElnbm9yZUNvbXBvc2l0
aW9uU2VsZWN0aW9uQ2hhbmdlID0gZnJhbWUuZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxl
Y3Rpb25DaGFuZ2UoKTsKICAgICAKLSAgICBwbGF0Zm9ybUVkaXRvclN0YXRlKGZyYW1lLCByZXN1
bHQpOworICAgIHBsYXRmb3JtRWRpdG9yU3RhdGUoZnJhbWUsIHJlc3VsdCwgc2hvdWxkSW5jbHVk
ZVBvc3RMYXlvdXREYXRhKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00MzY5LDE5ICs0
MzY5LDI5IEBAIHZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogCiB2b2lkIFdlYlBh
Z2U6OmRpZENoYW5nZVNlbGVjdGlvbigpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoQVNZ
TkNfTlNURVhUSU5QVVRDTElFTlQpCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBm
cmFtZS52aWV3KCk7CisgICAgYm9vbCBuZWVkc0xheW91dCA9IHZpZXcgJiYgdmlldy0+bmVlZHNM
YXlvdXQoKTsKKworICAgIC8vIElmIHRoZXJlIGlzIGEgbGF5b3V0IHBlbmRpbmcsIHdlIHNob3Vs
ZCBhdm9pZCBwb3B1bGF0aW5nIEVkaXRvclN0YXRlIHRoYXQgcmVxdWlyZSBsYXlvdXQgdG8gYmUg
ZG9uZSBvciBpdCB3aWxsCisgICAgLy8gdHJpZ2dlciBhIHN5bmNocm9ub3VzIGxheW91dCBldmVy
eSB0aW1lIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy4gc2VuZFBvc3RMYXlvdXRFZGl0b3JTdGF0ZUlm
TmVlZGVkKCkgd2lsbCBiZSBjYWxsZWQKKyAgICAvLyB0byBzZW5kIHRoZSBmdWxsIGVkaXRvciBz
dGF0ZSBhZnRlciBsYXlvdXQgaXMgZG9uZSBpZiB3ZSBzZW5kIGEgcGFydGlhbCBlZGl0b3Igc3Rh
dGUgaGVyZS4KKyAgICBhdXRvIGVkaXRvclN0YXRlID0gdGhpcy0+ZWRpdG9yU3RhdGUobmVlZHNM
YXlvdXQgPyBJbmNsdWRlUG9zdExheW91dERhdGFIaW50OjpObyA6IEluY2x1ZGVQb3N0TGF5b3V0
RGF0YUhpbnQ6Olllcyk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShuZWVkc0xheW91dCA9PSAo
dmlldyAmJiB2aWV3LT5uZWVkc0xheW91dCgpKSwgIkNhbGxpbmcgZWRpdG9yU3RhdGUoKSBzaG91
bGQgbm90IGNhdXNlIGEgc3luY2hyb25vdXMgbGF5b3V0LiIpOworICAgIG1faXNFZGl0b3JTdGF0
ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IGVkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXRE
YXRhOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoQVNZTkNfTlNURVhUSU5QVVRDTElFTlQp
CiAgICAgLy8gQWJhbmRvbiB0aGUgY3VycmVudCBpbmxpbmUgaW5wdXQgc2Vzc2lvbiBpZiBzZWxl
Y3Rpb24gY2hhbmdlZCBmb3IgYW55IG90aGVyIHJlYXNvbiBidXQgYW4gaW5wdXQgbWV0aG9kIGRp
cmVjdCBhY3Rpb24uCiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgc2hvdWxkIGJlIGluIFdlYkNv
cmUuCiAgICAgLy8gRklYTUU6IE1hbnkgY2hhbmdlcyB0aGF0IGFmZmVjdCBjb21wb3NpdGlvbiBu
b2RlIGRvIG5vdCBnbyB0aHJvdWdoIGRpZENoYW5nZVNlbGVjdGlvbigpLiBXZSBuZWVkIHRvIGRv
IHNvbWV0aGluZyB3aGVuIERPTSBtYW5pcHVsYXRpb24gYWZmZWN0cyB0aGUgY29tcG9zaXRpb24s
IGJlY2F1c2Ugb3RoZXJ3aXNlIGlucHV0IG1ldGhvZCdzIGlkZWEgYWJvdXQgaXQgd2lsbCBiZSBk
aWZmZXJlbnQgZnJvbSBFZGl0b3Incy4KICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgY2FuY2VsIGNv
bXBvc2l0aW9uIHdoZW4gc2VsZWN0aW9uIGNoYW5nZXMgdG8gTm9TZWxlY3Rpb24sIGJ1dCB3ZSBw
cm9iYWJseSBzaG91bGQuCiAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkg
JiYgIWZyYW1lLmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkgJiYg
IWZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNh
bmNlbENvbXBvc2l0aW9uKCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Q29tcG9zaXRpb25XYXNDYW5jZWxlZChlZGl0b3JTdGF0ZSgpKSk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q29tcG9zaXRpb25XYXNDYW5jZWxlZChlZGl0b3JTdGF0ZSkp
OwogICAgIH0gZWxzZQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRv
clN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgpKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKSk7CiAjZWxzZQotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0
YXRlKCkpLCBwYWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVD
aGFuZ2VkKGVkaXRvclN0YXRlKSwgcGFnZUlEKCksIElQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
NDM4OSw2ICs0Mzk5LDE1IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKCkKICNl
bmRpZgogfQogCit2b2lkIFdlYlBhZ2U6OnNlbmRQb3N0TGF5b3V0RWRpdG9yU3RhdGVJZk5lZWRl
ZCgpCit7CisgICAgaWYgKCFtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExheW91dERhdGEpCisg
ICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9y
U3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Olllcykp
LCBwYWdlSUQoKSwgSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOworICAgIG1faXNFZGl0b3JTdGF0ZU1pc3NpbmdQb3N0TGF5b3V0RGF0YSA9IGZhbHNlOwor
fQorCiB2b2lkIFdlYlBhZ2U6OmRpc2NhcmRlZENvbXBvc2l0aW9uKCkKIHsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXBvc2l0aW9uV2FzQ2FuY2VsZWQoZWRpdG9yU3RhdGUo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
NTMwMmI3ZDE0MTgxNTdiZmMwMTI1ZWEzM2I1MjRlN2Q3ZTM2MzA5MC4uOTYzYTg3MzcyMDYzZDk4
MWI3MzYyNmM4MzQ2YTg1OGU5MmI0YTBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zMjcsNyArMzI3LDkgQEAgcHVibGljOgogICAgIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBj
b25zdCBTdHJpbmcmKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgCi0gICAgRWRpdG9y
U3RhdGUgZWRpdG9yU3RhdGUoKSBjb25zdDsKKyAgICBlbnVtIGNsYXNzIEluY2x1ZGVQb3N0TGF5
b3V0RGF0YUhpbnQgeyBObywgWWVzIH07CisgICAgRWRpdG9yU3RhdGUgZWRpdG9yU3RhdGUoSW5j
bHVkZVBvc3RMYXlvdXREYXRhSGludCA9IEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQ6Olllcykg
Y29uc3Q7CisgICAgdm9pZCBzZW5kUG9zdExheW91dEVkaXRvclN0YXRlSWZOZWVkZWQoKTsKIAog
ICAgIFN0cmluZyByZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAg
IFN0cmluZyByZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nKCkgY29u
c3Q7CkBAIC04NzgsNyArODgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybURldGFjaCgpOwotICAgIHZvaWQgcGxhdGZvcm1F
ZGl0b3JTdGF0ZShXZWJDb3JlOjpGcmFtZSYsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0Owor
ICAgIHZvaWQgcGxhdGZvcm1FZGl0b3JTdGF0ZShXZWJDb3JlOjpGcmFtZSYsIEVkaXRvclN0YXRl
JiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQpIGNvbnN0OwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2Fn
ZUVuY29kZXI+Jik7CkBAIC0xMzUzLDYgKzEzNTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBt
X21haW5GcmFtZVByb2dyZXNzQ29tcGxldGVkOwogICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaEZh
a2VNb3VzZU1vdmVFdmVudHM7CisgICAgYm9vbCBtX2lzRWRpdG9yU3RhdGVNaXNzaW5nUG9zdExh
eW91dERhdGEgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApp
bmRleCAzMzU0MDE3OTI5MGMyMzA4NDZhNzk2YmY4NGFkYTJmNjk3N2FkZjI4Li5jMjMxYjYyNDk5
NDJmNWY5YTNmOTJhNjNiZjM5ZDVmYzczNjc2NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYsIEVkaXRvclN0YXRlJikgY29uc3QKK3ZvaWQg
V2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYsIEVkaXRvclN0YXRlJiwgSW5jbHVk
ZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggMmQwMzI0YTUx
NzAzOTAxMWQzOGYzZTE5OTdmNDY0NzA2ZmUyMzVkMC4uM2YyYWI5NDViYmE5ZDA2MzhjMWM5M2Jm
OWFjYTRiZDdhNjdiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViUGFn
ZTo6cGxhdGZvcm1EZXRhY2goKQogewogfQogCi12b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9y
U3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAordm9pZCBXZWJQ
YWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3Vs
dCwgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCkgY29uc3QKIHsKICAgICByZXN1bHQuY3Vyc29y
UmVjdCA9IGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCBhMGQ5NDM2YWZjZTkzOTg2YjUzMmU5Mzc0YzNhZjc1ZDNhZDI3Yjk5Li5iN2JhMTM3ZmVl
NGY1Y2IxMzY5NDJhMDBlMzY4NWVhZDVlMDU1YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMjgsOSArMTI4LDgg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQp
IGNvbnN0Cit2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBF
ZGl0b3JTdGF0ZSYgcmVzdWx0LCBJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1
ZGVQb3N0TGF5b3V0RGF0YSkgY29uc3QKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
ZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoZnJhbWUu
ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IGNvbXBv
c2l0aW9uUmFuZ2UgPSBmcmFtZS5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CiAgICAgICAg
IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBjb21wb3NpdGlvblJlY3RzOwpAQCAtMTQ1
LDM0ICsxNDQsNDYgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBm
cmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAgICAgIHJlc3VsdC5tYXJr
ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGNvbXBvc2l0aW9uUmFuZ2Uu
Z2V0KCkpOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gV2Ugb25seSBzZXQgdGhlIHJlbWFp
bmluZyBFZGl0b3JTdGF0ZSBlbnRyaWVzIGlmIHRoZSBsYXlvdXQgaXMgZG9uZS4gVG8gY29tcHV0
ZSB0aGVzZQorICAgIC8vIGVudHJpZXMsIHdlIG5lZWQgdGhlIGxheW91dCB0byBiZSBkb25lIGFu
ZCB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSBzeW5jaHJvbm91cworICAgIC8vIGxheW91dCBh
cyB0aGlzIHdvdWxkIGJlIGJhZCBmb3IgcGVyZm9ybWFuY2UuIElmIHdlIGhhdmUgYSBjb21wb3Np
dGlvbiwgd2Ugc2VuZCBldmVyeXRoaW5nCisgICAgLy8gcmlnaHQgYXdheSBhcyB0aGUgVUlQcm9j
ZXNzIG5lZWRzIHRoZSBjYXJldFJlY3RzIEFTQVAgZm9yIG1hcmtlZCB0ZXh0LgorICAgIGlmIChz
aG91bGRJbmNsdWRlUG9zdExheW91dERhdGEgPT0gSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludDo6
Tm8gJiYgIWZyYW1lLmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICAgICAgcmVzdWx0
LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8mIHBvc3RMYXlvdXREYXRhID0gcmVzdWx0LnBvc3RMYXlvdXREYXRhKCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUudmlldygpOworICAgIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlm
IChzZWxlY3Rpb24uaXNDYXJldCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0
ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2Fy
ZXRCb3VuZHMoKSk7Ci0gICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdEVuZCA9IHJlc3VsdC5jYXJl
dFJlY3RBdFN0YXJ0OworICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0ID0g
dmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KGZyYW1lLnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRC
b3VuZHMoKSk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0RW5kID0gcG9zdExh
eW91dERhdGEuY2FyZXRSZWN0QXRTdGFydDsKICAgICAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dp
bmcgY2hlY2sgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHdyaXRpbmcgZGlyZWN0aW9uLgotICAg
ICAgICByZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAm
JiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQoKSwgV29yZEdyYW51bGFy
aXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKLSAgICAgICAgcmVzdWx0LndvcmRBdFNlbGVjdGlvbiA9
IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSh3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2Vs
ZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNl
QWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShzZWxlY3Rpb24uc3RhcnQoKSwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJk
KTsKKyAgICAgICAgcG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gcGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKHdvcmRSYW5nZUZyb21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQo
KSkuZ2V0KCkpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpIHsK
LSAgICAgICAgICAgIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwg
cmVzdWx0LmNoYXJhY3RlckFmdGVyU2VsZWN0aW9uLCByZXN1bHQuY2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uLCByZXN1bHQudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKKyAgICAgICAgICAg
IGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9zdExheW91dERh
dGEuY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckJlZm9y
ZVNlbGVjdGlvbiwgcG9zdExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsK
ICAgICAgICAgICAgIE5vZGUqIHJvb3QgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgp
OwotICAgICAgICAgICAgcmVzdWx0Lmhhc0NvbnRlbnQgPSByb290ICYmIHJvb3QtPmhhc0NoaWxk
Tm9kZXMoKSAmJiAhaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoZmlyc3RQb3Np
dGlvbkluTm9kZShyb290KSk7CisgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5oYXNDb250ZW50
ID0gcm9vdCAmJiByb290LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWlzRW5kT2ZFZGl0YWJsZU9yTm9u
RWRpdGFibGVDb250ZW50KGZpcnN0UG9zaXRpb25Jbk5vZGUocm9vdCkpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYXJl
dFJlY3RBdFN0YXJ0ID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihz
ZWxlY3Rpb24uc3RhcnQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKLSAgICAgICAgcmVzdWx0
LmNhcmV0UmVjdEF0RW5kID0gdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlv
bihzZWxlY3Rpb24uZW5kKCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CisgICAgICAgIHBvc3RM
YXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoVmlz
aWJsZVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwor
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNvbnRlbnRzVG9S
b290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0ZUNhcmV0Qm91
bmRzKCkpOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsKICAgICAg
ICAgaWYgKHNlbGVjdGVkUmFuZ2UpIHsKLSAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPmNvbGxl
Y3RTZWxlY3Rpb25SZWN0cyhyZXN1bHQuc2VsZWN0aW9uUmVjdHMpOwotICAgICAgICAgICAgY29u
dmVydFNlbGVjdGlvblJlY3RzVG9Sb290Vmlldyh2aWV3LCByZXN1bHQuc2VsZWN0aW9uUmVjdHMp
OworICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+Y29sbGVjdFNlbGVjdGlvblJlY3RzKHBvc3RM
YXlvdXREYXRhLnNlbGVjdGlvblJlY3RzKTsKKyAgICAgICAgICAgIGNvbnZlcnRTZWxlY3Rpb25S
ZWN0c1RvUm9vdFZpZXcodmlldywgcG9zdExheW91dERhdGEuc2VsZWN0aW9uUmVjdHMpOwogICAg
ICAgICAgICAgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHNl
bGVjdGVkUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7Ci0g
ICAgICAgICAgICByZXN1bHQuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2VsZWN0ZWRUZXh0Lmxlbmd0
aCgpOworICAgICAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2Vs
ZWN0ZWRUZXh0Lmxlbmd0aCgpOwogICAgICAgICAgICAgY29uc3QgaW50IG1heFNlbGVjdGVkVGV4
dExlbmd0aCA9IDIwMDsKICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRleHQubGVuZ3RoKCkgPD0g
bWF4U2VsZWN0ZWRUZXh0TGVuZ3RoKQotICAgICAgICAgICAgICAgIHJlc3VsdC53b3JkQXRTZWxl
Y3Rpb24gPSBzZWxlY3RlZFRleHQ7CisgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEud29y
ZEF0U2VsZWN0aW9uID0gc2VsZWN0ZWRUZXh0OwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgZGlzYWxsb3cgcmVwbGFjZSB3aGVuIHRoZSBzdHJpbmcgY29udGFpbnMgb25s
eSBDSiBjaGFyYWN0ZXJzLgotICAgICAgICByZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3Vs
dC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxl
Y3RlZFRleHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgICAgICBwb3N0TGF5b3V0RGF0
YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFyZXN1bHQu
aXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNl
KCk7CiAgICAgfQogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAgIE5vZGUq
IG5vZGVUb1JlbW92ZTsKQEAgLTE4MSwxOCArMTkyLDE4IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZv
cm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAg
ICAgICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0cmFpdHMgPSBmb250ID8gQ1RGb250R2V0
U3ltYm9saWNUcmFpdHMoZm9udCkgOiAwOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
dHJhaXRzICYga0NURm9udFRyYWl0Qm9sZCkKLSAgICAgICAgICAgICAgICByZXN1bHQudHlwaW5n
QXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOworICAgICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlQm9sZDsKICAgICAgICAgICAgIGlmICh0
cmFpdHMgJiBrQ1RGb250VHJhaXRJdGFsaWMpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnR5cGlu
Z0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKKyAgICAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gZnJhbWUu
c2VsZWN0aW9uKCkudHlwaW5nU3R5bGUoKTsKICAgICAgICAgICAgIGlmICh0eXBpbmdTdHlsZSAm
JiB0eXBpbmdTdHlsZS0+c3R5bGUoKSkgewogICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9
IHR5cGluZ1N0eWxlLT5zdHlsZSgpLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5V2Via2l0
VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5jb250
YWlucygidW5kZXJsaW5lIikpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBpbmdBdHRy
aWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKKyAgICAgICAgICAgICAgICAgICAgcG9zdExh
eW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dERlY29yYXRpb25z
SW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7CisgICAgICAg
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRl
VW5kZXJsaW5lOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bm9kZVRvUmVtb3ZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGZlMTIxMzQyNDQ4ZGI1NzI1YzEyNDAzMWZkYzMxMzA0
MWY5ZDc5ODYuLjc1YzgxZTBkYTgwZjE5MWI4MmJmMDQ5MWQyMzY1NGU2ZjRmMjljMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGV0YWNoKCkKICAg
ICBbbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgc2V0V2ViUGFnZTpudWxscHRyXTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3Rh
dGUmIHJlc3VsdCkgY29uc3QKK3ZvaWQgV2ViUGFnZTo6cGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQsIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQp
IGNvbnN0CiB7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>