<?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>89552</bug_id>
          
          <creation_ts>2012-06-20 01:12:54 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add support for IMF composition</short_desc>
          <delta_ts>2012-10-23 05:35:07 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joone</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>seokju.kwon</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>653277</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-06-20 01:12:54 -0700</bug_when>
    <thetext>The WebKit2/Efl should support input method framework.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725220</commentid>
    <comment_count>1</comment_count>
      <attachid>165063</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-21 00:19:25 -0700</bug_when>
    <thetext>Created attachment 165063
WIP:basic implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725221</commentid>
    <comment_count>2</comment_count>
      <attachid>165063</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-21 00:20:43 -0700</bug_when>
    <thetext>Comment on attachment 165063
WIP:basic implementation

This should be cooked more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735224</commentid>
    <comment_count>3</comment_count>
      <attachid>167223</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-04 18:57:16 -0700</bug_when>
    <thetext>Created attachment 167223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735233</commentid>
    <comment_count>4</comment_count>
      <attachid>167223</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-04 19:04:53 -0700</bug_when>
    <thetext>Comment on attachment 167223
Patch

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

&gt; Source/WebKit2/PlatformEfl.cmake:204
&gt; +    ${ECORE_IMF_LIBRARIES}

Wrong alphabetical order.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_main.cpp:77
&gt; +        EINA_LOG_DOM_CRIT(_ewk_log_dom, &quot;could not init ecore_imf.&quot;);

ewk_private.h defined simple macros for this. Use CRITICAL macro.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp:56
&gt; +    // FIXME : sending sync message might make input lagging.

FIXME : -&gt; FIXME:

&gt; Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp:176
&gt; +    }

A new line ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735237</commentid>
    <comment_count>5</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-04 19:13:39 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=167223) [details]
&gt; Patch

Rebased and added some comments.

I was digging the issue which inserts preedit string two times when focus was moved.
But, I realized that it is because of ecore_imf with xim.

After tested using ecore_imf with scim (and scim-hangul - for korean),
I it works logically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735239</commentid>
    <comment_count>6</comment_count>
      <attachid>167227</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-04 19:15:41 -0700</bug_when>
    <thetext>Created attachment 167227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735267</commentid>
    <comment_count>7</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-04 19:51:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 167223 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167223&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/PlatformEfl.cmake:204
&gt; &gt; +    ${ECORE_IMF_LIBRARIES}
&gt; 
&gt; Wrong alphabetical order.
&gt; 
Done.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_main.cpp:77
&gt; &gt; +        EINA_LOG_DOM_CRIT(_ewk_log_dom, &quot;could not init ecore_imf.&quot;);
&gt; 
&gt; ewk_private.h defined simple macros for this. Use CRITICAL macro.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp:56
&gt; &gt; +    // FIXME : sending sync message might make input lagging.
&gt; 
&gt; FIXME : -&gt; FIXME:
Done.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/efl/WebPageEfl.cpp:176
&gt; &gt; +    }
&gt; 
&gt; A new line ?
Done.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738454</commentid>
    <comment_count>8</comment_count>
      <attachid>167898</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-09 19:44:59 -0700</bug_when>
    <thetext>Created attachment 167898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738456</commentid>
    <comment_count>9</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-09 19:46:01 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=167898) [details]
&gt; Patch

Rebased and fixed warning and bug which continues composition when clicked same input field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748262</commentid>
    <comment_count>10</comment_count>
      <attachid>170061</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-22 21:50:03 -0700</bug_when>
    <thetext>Created attachment 170061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748263</commentid>
    <comment_count>11</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-22 21:50:43 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=170061) [details]
&gt; Patch

just rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748484</commentid>
    <comment_count>12</comment_count>
      <attachid>170061</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-23 04:21:44 -0700</bug_when>
    <thetext>Comment on attachment 170061
Patch

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp:52
&gt; +    Frame* frame = m_page-&gt;corePage()-&gt;focusController()-&gt;focusedOrMainFrame();

Looks make sense. BTW, don&apos;t you need to move this to new function as mac port ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748529</commentid>
    <comment_count>13</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-23 05:26:15 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 170061 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170061&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/efl/WebEditorClientEfl.cpp:52
&gt; &gt; +    Frame* frame = m_page-&gt;corePage()-&gt;focusController()-&gt;focusedOrMainFrame();
&gt; 
&gt; Looks make sense. BTW, don&apos;t you need to move this to new function as mac port ?

IMO, current one looks enough until we have more requirements.

Mac port has specific handleEditingKeyboardEvent for keyboardEvent and InputMethodKeydown.
But, we share handleEditingKeyboardEvent with other ports and I think that this is simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748534</commentid>
    <comment_count>14</comment_count>
      <attachid>170061</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 05:35:02 -0700</bug_when>
    <thetext>Comment on attachment 170061
Patch

Clearing flags on attachment: 170061

Committed r132210: &lt;http://trac.webkit.org/changeset/132210&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748535</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 05:35:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165063</attachid>
            <date>2012-09-21 00:19:25 -0700</date>
            <delta_ts>2012-10-04 18:57:06 -0700</delta_ts>
            <desc>WIP:basic implementation</desc>
            <filename>bug-89552-20120921161849.patch</filename>
            <type>text/plain</type>
            <size>26300</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWFhNzljMDJkOTFiNmZi
NDY3YWJmZjA1ZGJkNzU0YzFlYTFhMmU5My4uNTdjZDI3NWY4OTU5ZGE0ZTIwM2Q2NDczMWVkZTQz
NDdiMWM2MWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTA5LTIxICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYmFzaWMgSU1GIHN1cHBvcnQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OmlzRmlsdGVyZWQpOgorICAgICAgICAq
IFNoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaDoKKyAg
ICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bWFpbi5jcHA6CisgICAgICAgIChld2tfaW5pdCk6CisgICAgICAgIChld2tfc2h1dGRvd24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEpOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YTo6X0V3
a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjp+
X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X2Rv
d24pOgorICAgICAgICAoX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCk6CisgICAgICAgIChfZXdr
X3ZpZXdfY29tbWl0KToKKyAgICAgICAgKF9ld2tfdmlld19pbWZfY29udGV4dF9jcmVhdGUpOgor
ICAgICAgICAoX2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3kpOgorICAgICAgICAoZXdrX3Zp
ZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgor
ICAgICAgICAoUGFnZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBh
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnRhcmdldEZyYW1lRm9yRWRpdGluZyk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNhbmNlbENvbXBvc2l0aW9uKToKKwogMjAxMi0wOS0yMCAgUGF0cmljayBHYW5zdGVyZXIgIDxw
YXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0Zp
eGVkV2lkdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAxYTNmYTBjY2EwZmVhZDc1
ZjBiZDRhMGMyM2JiNTQwMzE4YTM2ODRkLi4yOGU1Zjc2NzU3ODQ1Nzk5NzdjY2FjNmU5NTNlZTE3
MjQ3YWIyNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTg5LDYgKzE4OSw3IEBA
IExJU1QgKEFQUEVORCBXZWJQcm9jZXNzX1NPVVJDRVMKIExJU1QgKEFQUEVORCBXZWJQcm9jZXNz
X0xJQlJBUklFUwogICAgICR7Q0FJUk9fTElCUkFSSUVTfQogICAgICR7RUNPUkVfWF9MSUJSQVJJ
RVN9CisgICAgJHtFQ09SRV9JTUZfTElCUkFSSUVTfQogICAgICR7RURKRV9MSUJSQVJJRVN9CiAg
ICAgJHtFRkxERVBTX0xJQlJBUklFU30KICAgICAke0VWQVNfTElCUkFSSUVTfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggMmQzYmIxMGQy
YjY2OGY5Nzg5OGZkYzMxYzc5MzM4NTAyYWI0Mzc3ZC4uZmY1NGVkYTM2Y2NkMWNmZGE3OTY4MTM5
MmE2NDU3NjQwNmE4YTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKICAgICBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50Kik7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CisgICAgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiwgYm9vbCk7CiAg
ICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwogI2Vu
ZGlmCiAKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIEdka0V2ZW50KiBuYXRpdmVFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbGlmIFBMQVRGT1JN
KEVGTCkKICAgICBjb25zdCB2b2lkKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0
aXZlRXZlbnQ7IH0KKyAgICBib29sIGlzRmlsdGVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRmls
dGVyZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtODMsNiArODQsNyBAQCBwcml2YXRlOgog
ICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShFRkwp
CiAgICAgY29uc3Qgdm9pZCogbV9uYXRpdmVFdmVudDsKKyAgICBib29sIG1faXNGaWx0ZXJlZDsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5jcHAKaW5kZXggMWVmMDJiYTk5Y2VmMWFhZDc4ODJmZWM3
NDkxMTU5NGU0OWJhOGY3Yi4uMzQ0YTM3YzgyOTFhOGMxOTUyZDUwZDA0MzFjODhiMDhjNzViYzdi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktl
eWJvYXJkRXZlbnRFZmwuY3BwCkBAIC0zMCwxNSArMzAsMTcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLU5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29u
c3QgRXZhc19FdmVudF9LZXlfRG93biogZXZlbnQpCitOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpO
YXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ZW50LCBi
b29sIGlzRmlsdGVyZWQpCiAgICAgOiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChldmVudCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50
KQorICAgICwgbV9pc0ZpbHRlcmVkKGlzRmlsdGVyZWQpCiB7CiB9CiAKIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
IGV2ZW50KQogICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YktleWJvYXJkRXZlbnQoZXZlbnQpKQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKKyAgICAs
IG1faXNGaWx0ZXJlZChmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGVmMmNlNjAzZmE2YTQwNTFh
NTNjY2Y0MjU0NDZhZmM1MDk1ZDlhODUuLjgyZDViODhjOTEzM2JmMDRhZTRhNWQ5N2U5ZjA3OGY4
MDBmNzMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI4Miw2ICsyODIsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
LCBGaW4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp1
cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCit7CisgICAgZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91
cGRhdGUobV92aWV3V2lkZ2V0KTsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogewogICAgIEV3a19Eb3dubG9h
ZF9Kb2IqIGV3a0Rvd25sb2FkID0gZXdrX2Rvd25sb2FkX2pvYl9uZXcoZG93bmxvYWQsIG1fdmll
d1dpZGdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNs
aWVudEltcGwuaAppbmRleCA4ZjAzYjA5ZjRmNDBiZGFmODlkMzdjYTI1NjBmMjljZDNhYzVkYTEy
Li4wODQ0YzJkYzU0MDRhNzMxZTAyZWQxZmJiMWQzM2EzZmJhMTA2MGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTc2LDYg
Kzc2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRv
V2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAorICAgIHZv
aWQgdXBkYXRlVGV4dElucHV0U3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxv
YWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAppbmRleCBmY2M5ZmFmMWEwNDc0
NzEyOGQxMDFlOWRiNGIyMzk2YzE4Y2U2Nzg3Li44YmQ1ZWE3ZDI5NjQ1ZGZjN2I3YjExZTVkNzcw
N2VlMzdkZTM0NmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X21haW4uY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29y
ZV9JTUYuaD4KICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUg
PEV2YXMuaD4KQEAgLTY4LDYgKzY5LDEwIEBAIGludCBld2tfaW5pdCh2b2lkKQogICAgICAgICBn
b3RvIGVycm9yX2Vjb3JlX2V2YXM7CiAgICAgfQogCisgICAgaWYgKCFlY29yZV9pbWZfaW5pdCgp
KSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2tfbG9nX2RvbSwgImNvdWxkIG5vdCBp
bml0IGVjb3JlX2ltZi4iKTsKKyAgICAgICAgZ290byBlcnJvcl9lY29yZV9pbWY7CisgICAgfQog
ICAgIGdfdHlwZV9pbml0KCk7CiAKICAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2ludGVn
cmF0ZSgpKSB7CkBAIC03Nyw2ICs4Miw4IEBAIGludCBld2tfaW5pdCh2b2lkKQogCiAgICAgcmV0
dXJuICsrX2V3a0luaXRDb3VudDsKIAorZXJyb3JfZWNvcmVfaW1mOgorICAgIGVjb3JlX2V2YXNf
c2h1dGRvd24oKTsKIGVycm9yX2Vjb3JlX2V2YXM6CiAgICAgZWNvcmVfc2h1dGRvd24oKTsKIGVy
cm9yX2Vjb3JlOgpAQCAtOTUsNiArMTAyLDcgQEAgaW50IGV3a19zaHV0ZG93bih2b2lkKQogICAg
IGlmICgtLV9ld2tJbml0Q291bnQpCiAgICAgICAgIHJldHVybiBfZXdrSW5pdENvdW50OwogCisg
ICAgZWNvcmVfaW1mX3NodXRkb3duKCk7CiAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwogICAg
IGVjb3JlX3NodXRkb3duKCk7CiAgICAgZXZhc19zaHV0ZG93bigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDBlYWI4YjU0MDZlNGY0MWRm
ZmE3MTkyNjkyZWZiMTZjZjI2MDM2ZjUuLjRiMDE0MzZhNjliYmVjMDBhNjJhMmY4MmY4N2ViNDk1
N2M1MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKQEAgLTU0LDggKzU0LDExIEBACiAjaW5jbHVkZSAiZXdrX3ZpZXdfdWlfY2xpZW50X3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5jbHVkZSA8RWNvcmVf
RXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0lNRi5oPgorI2luY2x1ZGUgPEVjb3JlX0lNRl9FdmFz
Lmg+CiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VmbFNjcmVlblV0aWxp
dGllcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CkBAIC04MSw2ICs4NCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVs
dEN1cnNvclNpemUgPSAxNjsKIAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBFd2tfV2ViX1Jl
c291cmNlKj4gTG9hZGluZ1Jlc291cmNlc01hcDsKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2
X2xvYWRpbmdfcmVzb3VyY2VzX2NsZWFyKExvYWRpbmdSZXNvdXJjZXNNYXAmIGxvYWRpbmdSZXNv
dXJjZXNNYXApOworc3RhdGljIHZvaWQgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3koRWNv
cmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQpOwogCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVf
RGF0YSB7CiAgICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwpAQCAtMTA1LDYg
KzEwOSw5IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXZWJQb3B1cE1l
bnVQcm94eUVmbCogcG9wdXBNZW51UHJveHk7CiAgICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJdGVt
czsKIAorICAgIEVjb3JlX0lNRl9Db250ZXh0KiBpbWZDb250ZXh0OworICAgIGJvb2wgaXNJbWZG
b2N1c2VkOworCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwog
I2VuZGlmCkBAIC0xMjMsNiArMTMwLDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgICAgICAsIGNvbnRleHQoMCkKICAgICAgICAgLCBwb3B1cE1lbnVQcm94eSgwKQogICAg
ICAgICAsIHBvcHVwTWVudUl0ZW1zKDApCisgICAgICAgICwgaW1mQ29udGV4dCgwKQorICAgICAg
ICAsIGlzSW1mRm9jdXNlZChmYWxzZSkKICNpZmRlZiBIQVZFX0VDT1JFX1gKICAgICAgICAgLCBp
c1VzaW5nRWNvcmVYKGZhbHNlKQogI2VuZGlmCkBAIC0xMzYsNiArMTQ1LDcgQEAgc3RydWN0IF9F
d2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIH5fRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKCkKICAg
ICB7CiAgICAgICAgIF9ld2tfdmlld19wcml2X2xvYWRpbmdfcmVzb3VyY2VzX2NsZWFyKGxvYWRp
bmdSZXNvdXJjZXNNYXApOworICAgICAgICBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfZGVzdHJveShp
bWZDb250ZXh0KTsKIAogICAgICAgICBpZiAoY3Vyc29yT2JqZWN0KQogICAgICAgICAgICAgZXZh
c19vYmplY3RfZGVsKGN1cnNvck9iamVjdCk7CkBAIC0yNzMsNyArMjgzLDE1IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgY29uc3QKIHsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZUtleWJvYXJk
RXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQpKTsKKyAgICBib29sIGlzRmls
dGVyZWQgPSBmYWxzZTsKKyAgICBpZiAocHJpdi0+aW1mQ29udGV4dCkgeworICAgICAgICBFY29y
ZV9JTUZfRXZlbnQgaW1mRXZlbnQ7CisgICAgICAgIGVjb3JlX2ltZl9ldmFzX2V2ZW50X2tleV9k
b3duX3dyYXAoY29uc3RfY2FzdDxFdmFzX0V2ZW50X0tleV9Eb3duKj4oZG93bkV2ZW50KSwgJmlt
ZkV2ZW50LmtleV9kb3duKTsKKworICAgICAgICBpc0ZpbHRlcmVkID0gZWNvcmVfaW1mX2NvbnRl
eHRfZmlsdGVyX2V2ZW50KHByaXYtPmltZkNvbnRleHQsIEVDT1JFX0lNRl9FVkVOVF9LRVlfRE9X
TiwgJmltZkV2ZW50KTsKKyAgICB9CisKKyAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZUtleWJv
YXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVyZWQpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzU2LDYgKzM3NCwzNSBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQq
IGV2ZW50SW5mbwogICAgIHNtYXJ0RGF0YS0+YXBpLT5rZXlfdXAoc21hcnREYXRhLCB1cEV2ZW50
KTsKIH0KIAorc3RhdGljIHZvaWQgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCh2b2lkKiBkYXRh
LCBFY29yZV9JTUZfQ29udGV4dCogY29udGV4dCwgdm9pZCopCit7CisgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRh
dGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwor
CisgICAgaWYgKCFwcml2LT5wYWdlUHJveHktPmZvY3VzZWRGcmFtZSgpIHx8ICFwcml2LT5pc0lt
ZkZvY3VzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNoYXIqIGJ1ZmZlciA9IDA7CisgICAg
ZWNvcmVfaW1mX2NvbnRleHRfcHJlZWRpdF9zdHJpbmdfZ2V0KGNvbnRleHQsICZidWZmZXIsIDAp
OworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgcHJlZWRp
dFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKKyAgICBWZWN0b3I8Q29tcG9zaXRp
b25VbmRlcmxpbmU+IHVuZGVybGluZXM7CisgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRp
b25VbmRlcmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZh
bHNlKSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5n
LCB1bmRlcmxpbmVzLCAwKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X2NvbW1pdCh2b2lk
KiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9E
YXRhKj4oZGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
cHJpdik7CisgICAgaWYgKCFldmVudEluZm8gfHwgIXByaXYtPmlzSW1mRm9jdXNlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcHJpdi0+cGFnZVByb3h5LT5jb25maXJtQ29tcG9zaXRpb24oU3Ry
aW5nOjpmcm9tVVRGOChzdGF0aWNfY2FzdDxjaGFyKj4oZXZlbnRJbmZvKSkpOworfQorCiBzdGF0
aWMgRXZhc19TbWFydF9DbGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNT
X0lOSVRfTlVMTDsKIAogc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3By
aXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTEwMTIsNiArMTA1OSw3
MSBAQCB2b2lkIGV3a192aWV3X3RleHRfZm91bmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2ln
bmVkIGludCBtYXRjaENvdW50KQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
ZXdrVmlldywgInRleHQsZm91bmQiLCAmbWF0Y2hDb3VudCk7CiB9CiAKK3N0YXRpYyB2b2lkIF9l
d2tfdmlld19pbWZfY29udGV4dF9jcmVhdGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQoreworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOwor
CisgICAgQVNTRVJUKCFwcml2LT5pbWZDb250ZXh0KTsKKworICAgIGNvbnN0IGNoYXIqIGRlZmF1
bHRDb250ZXh0SUQgPSBlY29yZV9pbWZfY29udGV4dF9kZWZhdWx0X2lkX2dldCgpOworICAgIGlm
ICghZGVmYXVsdENvbnRleHRJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+aW1mQ29u
dGV4dCA9IGVjb3JlX2ltZl9jb250ZXh0X2FkZChkZWZhdWx0Q29udGV4dElEKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihwcml2LT5pbWZDb250ZXh0KTsKKworICAgIGVjb3JlX2lt
Zl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChwcml2LT5pbWZDb250ZXh0LCBFQ09SRV9JTUZf
Q0FMTEJBQ0tfUFJFRURJVF9DSEFOR0VELCBfZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkLCBzbWFy
dERhdGEpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChwcml2LT5p
bWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tfQ09NTUlULCBfZXdrX3ZpZXdfY29tbWl0LCBz
bWFydERhdGEpOworCisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29y
ZV9ldmFzX2dldChzbWFydERhdGEtPmJhc2UuZXZhcyk7CisgICAgZWNvcmVfaW1mX2NvbnRleHRf
Y2xpZW50X3dpbmRvd19zZXQocHJpdi0+aW1mQ29udGV4dCwgKHZvaWQqKWVjb3JlX2V2YXNfd2lu
ZG93X2dldChlY29yZUV2YXMpKTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9jbGllbnRfY2FudmFz
X3NldChwcml2LT5pbWZDb250ZXh0LCBzbWFydERhdGEtPmJhc2UuZXZhcyk7Cit9CisKK3N0YXRp
YyB2b2lkIF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0cm95KEVjb3JlX0lNRl9Db250ZXh0KiBp
bWZDb250ZXh0KQoreworICAgIGlmICghaW1mQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfZGVsKGltZkNvbnRleHQsIEVDT1JF
X0lNRl9DQUxMQkFDS19QUkVFRElUX0NIQU5HRUQsIF9ld2tfdmlld19wcmVlZGl0X2NoYW5nZWQp
OworICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2RlbChpbWZDb250ZXh0LCBF
Q09SRV9JTUZfQ0FMTEJBQ0tfQ09NTUlULCBfZXdrX3ZpZXdfY29tbWl0KTsKKyAgICBlY29yZV9p
bWZfY29udGV4dF9kZWwoaW1mQ29udGV4dCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBU
aGUgdmlldyB3YXMgcmVxdWVzdGVkIHRvIHVwZGF0ZSB0ZXh0IGlucHV0IHN0YXRlCisgKi8KK3Zv
aWQgZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwor
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAg
Y29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvciA9IHByaXYtPnBhZ2VQcm94eS0+ZWRpdG9yU3RhdGUo
KTsKKworICAgIGlmIChlZGl0b3IuaXNDb250ZW50RWRpdGFibGUpIHsKKyAgICAgICAgaWYgKHBy
aXYtPmlzSW1mRm9jdXNlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXBy
aXYtPmltZkNvbnRleHQpCisgICAgICAgICAgICBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3JlYXRl
KHNtYXJ0RGF0YSk7CisKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+aW1m
Q29udGV4dCk7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltZkNv
bnRleHQpOworICAgICAgICBwcml2LT5pc0ltZkZvY3VzZWQgPSB0cnVlOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmICghcHJpdi0+aXNJbWZGb2N1c2VkIHx8ICFwcml2LT5pbWZDb250ZXh0KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24p
CisgICAgICAgICAgICBwcml2LT5wYWdlUHJveHktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisKKyAg
ICAgICAgcHJpdi0+aXNJbWZGb2N1c2VkID0gZmFsc2U7CisgICAgICAgIGVjb3JlX2ltZl9jb250
ZXh0X3Jlc2V0KHByaXYtPmltZkNvbnRleHQpOworICAgICAgICBlY29yZV9pbWZfY29udGV4dF9m
b2N1c19vdXQocHJpdi0+aW1mQ29udGV4dCk7CisgICAgfQorfQorCiAvKioKICAqIEBpbnRlcm5h
bAogICogVGhlIHZpZXcgdGl0bGUgd2FzIGNoYW5nZWQgYnkgdGhlIGZyYW1lIGxvYWRlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUu
aAppbmRleCA0Y2JhMjJkMzZmYWQ1YWNjYTdmNWJmYTViMGM5YWZmMmM4YjlhMjk2Li42N2ZmMzY1
YzIyZmJhNmM1MzIwMjRmMzFkOGNkZjA5ODFmOGVkZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC04Miw2ICs4Miw3
IEBAIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlCiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRf
cmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
ciwgRXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwogdm9pZCBld2tfdmlld19yZXNvdXJjZV9y
ZXF1ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRp
ZmllciwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVj
dFJlc3BvbnNlKTsKIHZvaWQgZXdrX3ZpZXdfdGV4dF9mb3VuZChFdmFzX09iamVjdCogZXdrVmll
dywgdW5zaWduZWQgaW50IG1hdGNoQ291bnQpOwordm9pZCBld2tfdmlld190ZXh0X2lucHV0X3N0
YXRlX3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X3VyaV91cGRh
dGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2No
YW5nZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggZWJmNWNkMTZmMWMx
Zjg2NzY1M2QyODczNTE1NjMyMTdkZjFiN2E2Ny4uMDMwOTY5OWJkODAwZWEyYjQ4MWFiNGYyNTgz
ZjQ0NjQ3MzVjODNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0x
MjAsMTMgKzEyMCwxMyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVB
dXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBjb25z
dCBTdHJpbmcmIHJlYWxtLCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcm
IHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3JkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBi
b29sJiBpZ25vcmVFcnJvcnMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRo
ZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50MTZf
dCBwb3J0LCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1l
LCBTdHJpbmcmIHBhc3N3b3JkKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oUVQpLgogCiAjaWYg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dElucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVz
dChEb3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShFRkwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
OWJiYWJlMTJiNmMwM2JjZmM0NWM0ODg4N2Y5MzgxNTRjNTliMDg5NC4uMjE5Y2Y1OGEwODE2NjBh
M2MzZmNmZjY5Yzk4NmQxZWNkZTZiOWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTI4NjEsNyArMjg2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpl
ZGl0b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIG1fcGFnZUNsaWVudC0+dXBkYXRlVGV4dElucHV0U3RhdGUoY291
bGRDaGFuZ2VTZWN1cmVJbnB1dFN0YXRlKTsKLSNlbGlmIFBMQVRGT1JNKFFUKQorI2VsaWYgUExB
VEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBtX3BhZ2VDbGllbnQtPnVwZGF0ZVRleHRJ
bnB1dFN0YXRlKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCAyOGM1ZGE5MGFlMTA5NDI2ZmY3YzllNmVhMzQzZGYwYjYyOWQ3MjViLi4wMTFm
YzdkMzhlYTZkZjg0ZTZlMWM2ZWM4ZTZmYTNkZmM4NDlkZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MTMsNiArNDEzLDEyIEBAIHB1YmxpYzoKIAogICAg
IEhXTkQgbmF0aXZlV2luZG93KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShFRkwpCisg
ICAgdm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oYm9vbCYgaGFuZGxlZCk7CisgICAgdm9p
ZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDb21wb3Np
dGlvbihjb25zdCBTdHJpbmcmLCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+
JiwgaW50KTsKKyAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKCk7CisjZW5kaWYKICNpZiBVU0Uo
Q0FJUk8pICYmICFQTEFURk9STShXSU5fQ0FJUk8pCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dp
ZGdldCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhNGEzYzU3YmYyYzk5MjJhMWZlNGU5ZjliM2Y0MTNkM2U3
NTY3NDNkLi40MmVmNTYyMmRmZGFhNTdjNzY4MDYxY2ViZDU4MzUwZTZlMThkNDY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTY5LDYgKzY5LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQmxvY2tJ
bnNlY3VyZVBsdWdpblZlcnNpb24oV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHVy
bFN0cmluZykKICAgICBTZXRDYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMoYm9v
bCBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMpCiAKKyNpZiBQTEFURk9STShF
RkwpCisgICAgSGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKCkgLT4gKGJvb2wgaGFuZGxlZCkKKyNl
bmRpZgorCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgUGFnZURpZFJlcXVlc3RT
Y3JvbGwoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCAyYTNiMzA3OGQxN2Nm
NDQ4ZWY4ZWY3NGM5NDBkNGM4NWU5YTc1YTYzLi5iZTllMDI2ZjBjNTQxZDBjODIyOGM0MjA2ODRi
ZDY0NGRlNDFkMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQ
YWdlUHJveHlFZmwuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50
SW1wbC5oIgogI2luY2x1ZGUgIldlYktpdFZlcnNpb24uaCIKQEAgLTgzLDQgKzg0LDMzIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgpCiAg
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUaGVtZVBhdGgodGhlbWVQ
YXRoKSwgbV9wYWdlSUQsIDApOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlSW5wdXRN
ZXRob2RLZXlkb3duKGJvb2wmIGhhbmRsZWQpCit7CisgICAgaGFuZGxlZCA9IG1fa2V5RXZlbnRR
dWV1ZS5maXJzdCgpLmlzRmlsdGVyZWQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNvbmZp
cm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKQoreworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyksIG1f
cGFnZUlELCAwKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4mIHVuZGVybGluZXMsIGludCBjdXJzb3JQb3NpdGlvbikKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywg
Y3Vyc29yUG9zaXRpb24pLCBtX3BhZ2VJRCwgMCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
YW5jZWxDb21wb3NpdGlvbigpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9z
aXRpb24oKSwgbV9wYWdlSUQsIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVk
aXRvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4IDIyYTVjZjQ1M2E5NzA0ODZiZGZi
NDUyMTgyMmUzNDRlODY1MjMzNjYuLmQwY2JjZjUwZDk0YmMwNDJiODU1NmQ2MWYyZjQwZGIyYzI4
NGQ5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcApAQCAtMjcsMTIg
KzI3LDE1IEBACiAjaW5jbHVkZSAiV2ViRWRpdG9yQ2xpZW50LmgiCiAKICNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZl
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NCw5ICs0Nywx
OCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVu
dCopCit2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRnJhbWUqIGZy
YW1lID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FIDogc2VuZGluZyBzeW5jIG1lc3NhZ2Ug
bWlnaHQgbWFrZSBpbnB1dCBsYWdnaW5nLgorICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAg
IG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlSW5wdXRNZXRo
b2RLZXlkb3duKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bjo6UmVwbHkoaGFuZGxlZCkpOworCisgICAgaWYgKGhhbmRsZWQpCisgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NzViODI3MGE5YzBlMDc0OWEzZTMyNzEwMzUyYmE2
ZWZhOGI3N2ViLi43NmU4MWE1NzdhNmJjZGEwNjc2NWU2ODYxNDk4NDgxY2E3ZTkwYzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ1Myw3ICs0
NTMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2VzdHVyZVdpbGxCZWdpbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIGJvb2wmIGNhbkJlZ2luUGFubmluZyk7CiAgICAgdm9pZCBnZXN0dXJlRGlk
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIGdlc3R1cmVEaWRFbmQo
KTsKLQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNv
bnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpb24o
Y29uc3QgV1RGOjpTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxX
ZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNv
clBvc2l0aW9uKTsKKyAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKCk7CiAjZWxpZiBQTEFURk9S
TShHVEspCiAgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5VHJlZSgpOwogICAgIGJvb2wgaGFu
ZGxlTW91c2VQcmVzc2VkRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDU5MzYyYmNmNTk5ODRmN2EyYzRjODFmYThkY2E3ZjcwY2I4ZmY4YWQu
LmU5NGJmMzRlMWE3MzRkNmMxNWJkYWE3N2MwMWRhNzI1ZTg3M2Y3NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC0yODYsNiArMjg2LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIEdlc3R1cmVEaWRT
Y3JvbGwoV2ViQ29yZTo6SW50U2l6ZSBzaXplKQogICAgIEdlc3R1cmVEaWRFbmQoKQogI2VuZGlm
CisjaWYgUExBVEZPUk0oRUZMKQorICAgIENvbmZpcm1Db21wb3NpdGlvbihXVEY6OlN0cmluZyBj
b21wb3NpdGlvblN0cmluZykKKyAgICBTZXRDb21wb3NpdGlvbihXVEY6OlN0cmluZyBjb21wb3Np
dGlvblN0cmluZywgV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVu
ZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKQorICAgIENhbmNlbENvbXBvc2l0aW9u
KCkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgIEZpbmRab29tYWJsZUFyZWFGb3JQb2lu
dChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6SW50U2l6ZSBhcmVhKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBh
Z2VFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdl
RWZsLmNwcAppbmRleCAwMDU3ZTg2YWM1MzQ2MjRlNDEyZmQzMTVkMmU2NjNmNjNlNzA3MWVhLi45
N2QzNWVjMTNjYTY4ZmJjOGVkODA2ODE5ODNlYTlkNTliZDg0ZDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAK
KyNpbmNsdWRlICJFZGl0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgpA
QCAtMTUyLDQgKzE1Myw1NSBAQCB2b2lkIFdlYlBhZ2U6OnNldFRoZW1lUGF0aChjb25zdCBTdHJp
bmcmIHRoZW1lUGF0aCkKICAgICB0aGVtZS0+c2V0VGhlbWVQYXRoKHRoZW1lUGF0aCk7CiB9CiAK
K3N0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWVGb3JFZGl0aW5nKFdlYlBhZ2UqIHBhZ2UpCit7Cisg
ICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3It
PmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZWRpdG9yLT5oYXNDb21w
b3NpdGlvbigpKSB7CisgICAgICAgIC8vIFdlIHNob3VsZCB2ZXJpZnkgdGhlIHBhcmVudCBub2Rl
IG9mIHRoaXMgSU1FIGNvbXBvc2l0aW9uIG5vZGUgYXJlCisgICAgICAgIC8vIGVkaXRhYmxlIGJl
Y2F1c2UgSmF2YVNjcmlwdCBtYXkgZGVsZXRlIGEgcGFyZW50IG5vZGUgb2YgdGhlIGNvbXBvc2l0
aW9uCisgICAgICAgIC8vIG5vZGUuIEluIHRoaXMgY2FzZSwgV2ViS2l0IGNyYXNoZXMgd2hpbGUg
ZGVsZXRpbmcgdGV4dHMgZnJvbSB0aGUgcGFyZW50CisgICAgICAgIC8vIG5vZGUsIHdoaWNoIGRv
ZXNuJ3QgZXhpc3QgYW55IGxvbmdlci4KKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gZWRpdG9yLT5jb21wb3NpdGlvblJhbmdlKCkpIHsKKyAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgICAgIGlmICghbm9kZSB8fCAh
bm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y29u
ZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCit7CisgICAg
RnJhbWUqIHRhcmdldEZyYW1lID0gdGFyZ2V0RnJhbWVGb3JFZGl0aW5nKHRoaXMpOworICAgIGlm
ICghdGFyZ2V0RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHRhcmdldEZyYW1lLT5lZGl0
b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKK30KKwordm9pZCBX
ZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1
aW50NjRfdCBjdXJzb3JQb3NpdGlvbikKK3sKKyAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSB0YXJn
ZXRGcmFtZUZvckVkaXRpbmcodGhpcyk7CisgICAgaWYgKCF0YXJnZXRGcmFtZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21w
b3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOworfQorCit2b2lk
IFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBv
c2l0aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL0ZpbmRFY29yZS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kRWNvcmUuY21ha2UKaW5k
ZXggZWM3NmI2NTg1ZjU4MjIzOTg4NzI1MWFlNDI5OTkzNDhkOTAwNDM5Ny4uMzhiYmYwZmQ4MWUz
ZmNiZTFmYmFkZWQ4ZjZiZmUwMzEwOGJiN2MyYiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0Zp
bmRFY29yZS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvRmluZEVjb3JlLmNtYWtlCkBAIC02Nyw2
ICs2NywxMSBAQCBGSU5EX0VGTF9MSUJSQVJZKEVDT1JFX1gKICAgICBIRUFERVJfUFJFRklYRVMg
ZWNvcmUtMQogICAgIExJQlJBUlkgZWNvcmVfeAogKQorRklORF9FRkxfTElCUkFSWShFQ09SRV9J
TUYKKyAgICBIRUFERVJTIEVjb3JlX0lNRi5oIEVjb3JlX0lNRl9FdmFzLmgKKyAgICBIRUFERVJf
UFJFRklYRVMgZWNvcmUtMQorICAgIExJQlJBUlkgZWNvcmVfaW1mCispCiAKIEZPUkVBQ0goX2Nv
bXBvbmVudCAke0Vjb3JlX0ZJTkRfQ09NUE9ORU5UU30pCiAgICAgU0VUKF9lY29yZV9jb21wb25l
bnQgIkVDT1JFXyR7X2NvbXBvbmVudH0iKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IGRmNzQ0NzNmMDJlNTI4YjQxMGNiMjYyMjk1OTk5YjI1OWMyMjExZGUuLjFhZTNk
OWRiM2IzOGMyZWRkMTRlN2U4NTExMzdlMzMwYTJhN2RiNmIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wOS0yMSAgUnl1YW4gQ2hv
aSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgc3Vw
cG9ydCBmb3IgSU1GIGNvbXBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTU1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRFY29yZS5jbWFrZTogQ2hlY2tlZCBF
Y29yZV9JTUYuCisKIDIwMTItMDktMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5A
ZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQgbW9kdWxlIGhlYWRlciBpbmNsdWRl
cyBwcml2YXRlIGRlcGVuZGVuY2llcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167223</attachid>
            <date>2012-10-04 18:57:16 -0700</date>
            <delta_ts>2012-10-04 19:15:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89552-20121005105624.patch</filename>
            <type>text/plain</type>
            <size>27136</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDQ0YzhkYjUwY2QyNWQz
Mzc0OGVlMDUxNTI4ZTVjZDI4N2RkMGY0Ni4uNTVkNDAzOTg2YTFhMDdmMGFkZWQ3MzBiZTBkZjA3
NmJkMWNlMGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEwLTA0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYmFzaWMgSU1GIHN1cHBvcnQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OmlzRmlsdGVyZWQpOgorICAgICAgICBB
ZGRlZCB0byBkZXRlcm1pbmUgd2hldGhlciBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGNvbXBv
c2l0aW5nLgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0
YXRlKToKKyAgICAgICAgQWRkZWQgdG8gY2hhbmdlIGlucHV0IHN0YXRlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChQYWdlQ2xpZW50SW1w
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwOgorICAgICAgICAo
ZXdrX2luaXQpOiBDYWxsZWQgZWNvcmVfaW1mX2luaXQuCisgICAgICAgIChld2tfc2h1dGRvd24p
OiBDYWxsZWQgZWNvcmVfaW1mX3NodXRkb3duLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAg
ICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjp+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24pOiBNb2RpZmllZCB0byBzZW5kIGtleWJv
YXJkIGV2ZW50IHRvIElNRi4KKyAgICAgICAgKF9ld2tfdmlld19wcmVlZGl0X2NoYW5nZWQpOiBB
ZGRlZCB0byBzZW5kIGNvbXBvc2l0aW9uIHN0cmluZy4KKyAgICAgICAgKF9ld2tfdmlld19jb21t
aXQpOiBBZGRlZCB0byBzZW5kIGEgbWVzc2FnZSB0aGF0IGNvbXBvc2l0aW9uIGlzIGZpbmlzaGVk
LgorICAgICAgICAoX2V3a192aWV3X2ltZl9jb250ZXh0X2NyZWF0ZSk6IEFkZGVkIHRvIGNyZWF0
ZSBFY29yZV9JTUZfQ29udGV4dC4KKyAgICAgICAgKF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0
cm95KTogQWRkZWQgdG8gZGVzdHJveSBFY29yZV9JTUZfQ29udGV4dC4KKyAgICAgICAgKGV3a192
aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKTogQWRkZWQgdG8gdXBkYXRlIGlucHV0IHN0YXRl
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOiBNb3ZlZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgp
IHRvIHNoYXJlIHdpdGggRUZMIHBvcnQuCisgICAgICAgIChQYWdlQ2xpZW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQpOgorICAgICAgICBBZGRlZCBQTEFURk9STShFRkwpIHRv
IGNhbGwgdXBkYXRlVGV4dElucHV0U3RhdGUoKQorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkZWQgSGFuZGxlSW5wdXRNZXRob2RL
ZXlkb3duIG1lc3NhZ2UgdG8gZGV0ZXJtaW5lIHdoZXRoZXIga2V5ZG93biBpcyBoYW5kbGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICBB
ZGRlZCB0byBjaGVjayB3aGV0aGVyIGlucHV0IG1ldGhvZCBoYW5kbGVkIGtleWRvd24uCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uKTogQWRkZWQgdG8g
c3VwcG9ydCBjb21wb3NpdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRD
b21wb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNl
bENvbXBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICBBZGRlZCB0byBjaGVj
ayB3aGV0aGVyIGlucHV0IG1ldGhvZCBoYW5kbGVkIGtleWRvd24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGRlZCBtZXNzYWdlcyB0byBz
dXBwb3J0IGNvbXBvc2l0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2Vi
UGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRhcmdldEZyYW1lRm9yRWRpdGluZyk6IFJl
ZmVyZW5jZWQgZnJvbSBRVCBwb3J0IHRvIGdldCBmb2N1c2VkIGZyYW1lLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOiBBZGRlZCB0byBzdXBwb3J0IGNvbXBv
c2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRDb21wb3NpdGlvbik6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbik6IERpdHRvLgor
CiAyMDEyLTEwLTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CiAKICAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgUGFnZUNsaWVudEltcGw6OmlzVmll
d1Zpc2libGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0MDM2YjdlNTEwMjlhNzc5
NWEwZjQxYjMxOWI0NmIwZTczM2EwODRkLi4wMjgyOTE3YTZkNzhjNDc0ZGEyMWZjZTI2OGU2ZWMy
MmJhMjE2YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjAxLDYgKzIwMSw3IEBA
IExJU1QgKEFQUEVORCBXZWJQcm9jZXNzX1NPVVJDRVMKIExJU1QgKEFQUEVORCBXZWJQcm9jZXNz
X0xJQlJBUklFUwogICAgICR7Q0FJUk9fTElCUkFSSUVTfQogICAgICR7RUNPUkVfWF9MSUJSQVJJ
RVN9CisgICAgJHtFQ09SRV9JTUZfTElCUkFSSUVTfQogICAgICR7RURKRV9MSUJSQVJJRVN9CiAg
ICAgJHtFRkxERVBTX0xJQlJBUklFU30KICAgICAke0VWQVNfTElCUkFSSUVTfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggMmQzYmIxMGQy
YjY2OGY5Nzg5OGZkYzMxYzc5MzM4NTAyYWI0Mzc3ZC4uZmY1NGVkYTM2Y2NkMWNmZGE3OTY4MTM5
MmE2NDU3NjQwNmE4YTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKICAgICBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50KEdka0V2ZW50Kik7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CisgICAgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiwgYm9vbCk7CiAg
ICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwogI2Vu
ZGlmCiAKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIEdka0V2ZW50KiBuYXRpdmVFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbGlmIFBMQVRGT1JN
KEVGTCkKICAgICBjb25zdCB2b2lkKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0
aXZlRXZlbnQ7IH0KKyAgICBib29sIGlzRmlsdGVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRmls
dGVyZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtODMsNiArODQsNyBAQCBwcml2YXRlOgog
ICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShFRkwp
CiAgICAgY29uc3Qgdm9pZCogbV9uYXRpdmVFdmVudDsKKyAgICBib29sIG1faXNGaWx0ZXJlZDsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5jcHAKaW5kZXggMWVmMDJiYTk5Y2VmMWFhZDc4ODJmZWM3
NDkxMTU5NGU0OWJhOGY3Yi4uMzQ0YTM3YzgyOTFhOGMxOTUyZDUwZDA0MzFjODhiMDhjNzViYzdi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktl
eWJvYXJkRXZlbnRFZmwuY3BwCkBAIC0zMCwxNSArMzAsMTcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLU5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29u
c3QgRXZhc19FdmVudF9LZXlfRG93biogZXZlbnQpCitOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpO
YXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ZW50LCBi
b29sIGlzRmlsdGVyZWQpCiAgICAgOiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChldmVudCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50
KQorICAgICwgbV9pc0ZpbHRlcmVkKGlzRmlsdGVyZWQpCiB7CiB9CiAKIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
IGV2ZW50KQogICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YktleWJvYXJkRXZlbnQoZXZlbnQpKQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKKyAgICAs
IG1faXNGaWx0ZXJlZChmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDNiZjE5NGY1NzljZGE4NTZh
OThiNzU1NjA5OGNmYTM3NWU0NmNiMmMuLjdjODE0YWVjMmFkMzMzMWE5ZjZjNzM0NGYwOGZjNWFl
YTJmNmNkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTI4MSw2ICsyODEsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
LCBGaW4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp1
cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCit7CisgICAgZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91
cGRhdGUobV92aWV3V2lkZ2V0KTsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogewogICAgIEV3a19Eb3dubG9h
ZF9Kb2IqIGV3a0Rvd25sb2FkID0gZXdrX2Rvd25sb2FkX2pvYl9uZXcoZG93bmxvYWQsIG1fdmll
d1dpZGdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNs
aWVudEltcGwuaAppbmRleCA4ZjAzYjA5ZjRmNDBiZGFmODlkMzdjYTI1NjBmMjljZDNhYzVkYTEy
Li4wODQ0YzJkYzU0MDRhNzMxZTAyZWQxZmJiMWQzM2EzZmJhMTA2MGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTc2LDYg
Kzc2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRv
V2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJ
bnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAorICAgIHZv
aWQgdXBkYXRlVGV4dElucHV0U3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxv
YWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAppbmRleCAxN2UyYjFlZWE1ZDNj
N2RjNzY5MWI5ZGRkZjcxY2FhZWFhY2Y2YTI4Li44NzUwOTY0MmYzY2M4MTgxMTQwZDQwY2U1NGFm
MDM0Yjc0YTdlNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X21haW4uY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNp
bmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29y
ZV9JTUYuaD4KICNpbmNsdWRlIDxFZGplLmg+CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUg
PEV2YXMuaD4KQEAgLTcyLDYgKzczLDExIEBAIGludCBld2tfaW5pdCh2b2lkKQogICAgICAgICBn
b3RvIGVycm9yX2Vjb3JlX2V2YXM7CiAgICAgfQogCisgICAgaWYgKCFlY29yZV9pbWZfaW5pdCgp
KSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9DUklUKF9ld2tfbG9nX2RvbSwgImNvdWxkIG5vdCBp
bml0IGVjb3JlX2ltZi4iKTsKKyAgICAgICAgZ290byBlcnJvcl9lY29yZV9pbWY7CisgICAgfQor
CiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgaWYgKCFlY29yZV94X2luaXQoMCkpIHsKICAgICAg
ICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlX3guIik7CkBAIC05MCw4ICs5NiwxMCBA
QCBpbnQgZXdrX2luaXQodm9pZCkKIAogI2lmZGVmIEhBVkVfRUNPUkVfWAogZXJyb3JfZWNvcmVf
eDoKLSAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgZWNvcmVfaW1mX3NodXRkb3duKCk7
CiAjZW5kaWYKK2Vycm9yX2Vjb3JlX2ltZjoKKyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CiBl
cnJvcl9lY29yZV9ldmFzOgogICAgIGVjb3JlX3NodXRkb3duKCk7CiBlcnJvcl9lY29yZToKQEAg
LTExMyw2ICsxMjEsNyBAQCBpbnQgZXdrX3NodXRkb3duKHZvaWQpCiAjaWZkZWYgSEFWRV9FQ09S
RV9YCiAgICAgZWNvcmVfeF9zaHV0ZG93bigpOwogI2VuZGlmCisgICAgZWNvcmVfaW1mX3NodXRk
b3duKCk7CiAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwogICAgIGVjb3JlX3NodXRkb3duKCk7
CiAgICAgZXZhc19zaHV0ZG93bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDU1OGNkMjIxYTQyNzZmMDZiNWViOTMxNjM5Y2Y2OGE3NzFl
MDNhY2QuLjczZDMwMjYwNGU2N2QwYzQ0MzFiMDM3ODgxZDY5YTFiNDkyYTRmODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTU0LDggKzU0
LDExIEBACiAjaW5jbHVkZSAiZXdrX3ZpZXdfdWlfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfd2ViX3Jlc291cmNlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUg
PEVjb3JlX0lNRi5oPgorI2luY2x1ZGUgPEVjb3JlX0lNRl9FdmFzLmg+CiAjaW5jbHVkZSA8RWRq
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FZGl0
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VmbFNjcmVlblV0aWxpdGllcy5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC04MSw2ICs4NCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdEN1cnNvclNpemUgPSAxNjsK
IAogdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBFd2tfV2ViX1Jlc291cmNlKj4gTG9hZGluZ1Jl
c291cmNlc01hcDsKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19wcml2X2xvYWRpbmdfcmVzb3VyY2Vz
X2NsZWFyKExvYWRpbmdSZXNvdXJjZXNNYXAmIGxvYWRpbmdSZXNvdXJjZXNNYXApOworc3RhdGlj
IHZvaWQgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3koRWNvcmVfSU1GX0NvbnRleHQqIGlt
ZkNvbnRleHQpOwogCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgT3duUHRy
PFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwpAQCAtMTA4LDYgKzExMiw5IEBAIHN0cnVjdCBf
RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBN
ZW51UHJveHk7CiAgICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJdGVtczsKIAorICAgIEVjb3JlX0lN
Rl9Db250ZXh0KiBpbWZDb250ZXh0OworICAgIGJvb2wgaXNJbWZGb2N1c2VkOworCiAjaWZkZWYg
SEFWRV9FQ09SRV9YCiAgICAgYm9vbCBpc1VzaW5nRWNvcmVYOwogI2VuZGlmCkBAIC0xMjksNiAr
MTM2LDggQEAgc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEgewogI2VuZGlmCiAgICAgICAg
ICwgcG9wdXBNZW51UHJveHkoMCkKICAgICAgICAgLCBwb3B1cE1lbnVJdGVtcygwKQorICAgICAg
ICAsIGltZkNvbnRleHQoMCkKKyAgICAgICAgLCBpc0ltZkZvY3VzZWQoZmFsc2UpCiAjaWZkZWYg
SEFWRV9FQ09SRV9YCiAgICAgICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKICNlbmRpZgpAQCAt
MTQyLDYgKzE1MSw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICB+X0V3
a19WaWV3X1ByaXZhdGVfRGF0YSgpCiAgICAgewogICAgICAgICBfZXdrX3ZpZXdfcHJpdl9sb2Fk
aW5nX3Jlc291cmNlc19jbGVhcihsb2FkaW5nUmVzb3VyY2VzTWFwKTsKKyAgICAgICAgX2V3a192
aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3koaW1mQ29udGV4dCk7CiAKICAgICAgICAgaWYgKGN1cnNv
ck9iamVjdCkKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2RlbChjdXJzb3JPYmplY3QpOwpAQCAt
Mjc5LDcgKzI4OSwxNSBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9rZXlfZG93
bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0CiB7CiAgICAgRVdLX1ZJRVdf
UFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCi0gICAgcHJpdi0+
cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZG93
bkV2ZW50KSk7CisgICAgYm9vbCBpc0ZpbHRlcmVkID0gZmFsc2U7CisgICAgaWYgKHByaXYtPmlt
ZkNvbnRleHQpIHsKKyAgICAgICAgRWNvcmVfSU1GX0V2ZW50IGltZkV2ZW50OworICAgICAgICBl
Y29yZV9pbWZfZXZhc19ldmVudF9rZXlfZG93bl93cmFwKGNvbnN0X2Nhc3Q8RXZhc19FdmVudF9L
ZXlfRG93bio+KGRvd25FdmVudCksICZpbWZFdmVudC5rZXlfZG93bik7CisKKyAgICAgICAgaXNG
aWx0ZXJlZCA9IGVjb3JlX2ltZl9jb250ZXh0X2ZpbHRlcl9ldmVudChwcml2LT5pbWZDb250ZXh0
LCBFQ09SRV9JTUZfRVZFTlRfS0VZX0RPV04sICZpbWZFdmVudCk7CisgICAgfQorCisgICAgcHJp
di0+cGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
ZG93bkV2ZW50LCBpc0ZpbHRlcmVkKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQwMyw2
ICs0MjEsMzUgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX3RvdWNoX21vdmUodm9pZCogLyog
ZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX08KIH0KICNlbmRpZgogCitzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250
ZXh0KiBjb250ZXh0LCB2b2lkKikKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAoIXByaXYt
PnBhZ2VQcm94eS0+Zm9jdXNlZEZyYW1lKCkgfHwgIXByaXYtPmlzSW1mRm9jdXNlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2hhciogYnVmZmVyID0gMDsKKyAgICBlY29yZV9pbWZfY29udGV4
dF9wcmVlZGl0X3N0cmluZ19nZXQoY29udGV4dCwgJmJ1ZmZlciwgMCk7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBwcmVlZGl0U3RyaW5nID0gU3RyaW5n
Ojpmcm9tVVRGOChidWZmZXIpOworICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5k
ZXJsaW5lczsKKyAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBw
cmVlZGl0U3RyaW5nLmxlbmd0aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKKyAgICBwcml2
LT5wYWdlUHJveHktPnNldENvbXBvc2l0aW9uKHByZWVkaXRTdHJpbmcsIHVuZGVybGluZXMsIDAp
OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfY29tbWl0KHZvaWQqIGRhdGEsIEVjb3JlX0lN
Rl9Db250ZXh0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKKyAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2KTsKKyAgICBpZiAo
IWV2ZW50SW5mbyB8fCAhcHJpdi0+aXNJbWZGb2N1c2VkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBwcml2LT5wYWdlUHJveHktPmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHN0
YXRpY19jYXN0PGNoYXIqPihldmVudEluZm8pKSk7Cit9CisKIHN0YXRpYyBFdmFzX1NtYXJ0X0Ns
YXNzIGdfcGFyZW50U21hcnRDbGFzcyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiBz
dGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhKQpAQCAtMTA1OSw2ICsxMTA2LDcxIEBAIHZvaWQgZXdrX3Zp
ZXdfdGV4dF9mb3VuZChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50IG1hdGNoQ291
bnQpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidGV4dCxm
b3VuZCIsICZtYXRjaENvdW50KTsKIH0KIAorc3RhdGljIHZvaWQgX2V3a192aWV3X2ltZl9jb250
ZXh0X2NyZWF0ZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBBU1NFUlQoIXBy
aXYtPmltZkNvbnRleHQpOworCisgICAgY29uc3QgY2hhciogZGVmYXVsdENvbnRleHRJRCA9IGVj
b3JlX2ltZl9jb250ZXh0X2RlZmF1bHRfaWRfZ2V0KCk7CisgICAgaWYgKCFkZWZhdWx0Q29udGV4
dElEKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5pbWZDb250ZXh0ID0gZWNvcmVfaW1m
X2NvbnRleHRfYWRkKGRlZmF1bHRDb250ZXh0SUQpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHByaXYtPmltZkNvbnRleHQpOworCisgICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRf
Y2FsbGJhY2tfYWRkKHByaXYtPmltZkNvbnRleHQsIEVDT1JFX0lNRl9DQUxMQkFDS19QUkVFRElU
X0NIQU5HRUQsIF9ld2tfdmlld19wcmVlZGl0X2NoYW5nZWQsIHNtYXJ0RGF0YSk7CisgICAgZWNv
cmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfYWRkKHByaXYtPmltZkNvbnRleHQsIEVDT1JF
X0lNRl9DQUxMQkFDS19DT01NSVQsIF9ld2tfdmlld19jb21taXQsIHNtYXJ0RGF0YSk7CisKKyAg
ICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KHNtYXJ0
RGF0YS0+YmFzZS5ldmFzKTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9jbGllbnRfd2luZG93X3Nl
dChwcml2LT5pbWZDb250ZXh0LCAodm9pZCopZWNvcmVfZXZhc193aW5kb3dfZ2V0KGVjb3JlRXZh
cykpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2NsaWVudF9jYW52YXNfc2V0KHByaXYtPmltZkNv
bnRleHQsIHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X2ltZl9jb250ZXh0X2Rlc3Ryb3koRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQpCit7Cisg
ICAgaWYgKCFpbWZDb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBlY29yZV9pbWZfY29u
dGV4dF9ldmVudF9jYWxsYmFja19kZWwoaW1mQ29udGV4dCwgRUNPUkVfSU1GX0NBTExCQUNLX1BS
RUVESVRfQ0hBTkdFRCwgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCk7CisgICAgZWNvcmVfaW1m
X2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfZGVsKGltZkNvbnRleHQsIEVDT1JFX0lNRl9DQUxMQkFD
S19DT01NSVQsIF9ld2tfdmlld19jb21taXQpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2RlbChp
bWZDb250ZXh0KTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFRoZSB2aWV3IHdhcyByZXF1
ZXN0ZWQgdG8gdXBkYXRlIHRleHQgaW5wdXQgc3RhdGUKKyAqLwordm9pZCBld2tfdmlld190ZXh0
X2lucHV0X3N0YXRlX3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklF
V19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBjb25zdCBFZGl0b3JTdGF0
ZSYgZWRpdG9yID0gcHJpdi0+cGFnZVByb3h5LT5lZGl0b3JTdGF0ZSgpOworCisgICAgaWYgKGVk
aXRvci5pc0NvbnRlbnRFZGl0YWJsZSkgeworICAgICAgICBpZiAocHJpdi0+aXNJbWZGb2N1c2Vk
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghcHJpdi0+aW1mQ29udGV4dCkK
KyAgICAgICAgICAgIF9ld2tfdmlld19pbWZfY29udGV4dF9jcmVhdGUoc21hcnREYXRhKTsKKwor
ICAgICAgICBlY29yZV9pbWZfY29udGV4dF9yZXNldChwcml2LT5pbWZDb250ZXh0KTsKKyAgICAg
ICAgZWNvcmVfaW1mX2NvbnRleHRfZm9jdXNfaW4ocHJpdi0+aW1mQ29udGV4dCk7CisgICAgICAg
IHByaXYtPmlzSW1mRm9jdXNlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFw
cml2LT5pc0ltZkZvY3VzZWQgfHwgIXByaXYtPmltZkNvbnRleHQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbikKKyAgICAgICAgICAgIHBy
aXYtPnBhZ2VQcm94eS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKworICAgICAgICBwcml2LT5pc0lt
ZkZvY3VzZWQgPSBmYWxzZTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+
aW1mQ29udGV4dCk7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX291dChwcml2LT5p
bWZDb250ZXh0KTsKKyAgICB9Cit9CisKIC8qKgogICogQGludGVybmFsCiAgKiBUaGUgdmlldyB0
aXRsZSB3YXMgY2hhbmdlZCBieSB0aGUgZnJhbWUgbG9hZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDJmZThiYWRh
YTBkZmY1NGVhNzFlMGU2ZmUxZWJlZmZlNTAyMThlNzguLjM0M2QwNGRhMGU3ZDJkYTM0ZGFjYzE0
YmNmZDAxMjc0ZmE0OGQyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTgyLDYgKzgyLDcgQEAgdm9pZCBld2tfdmll
d19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3Qg
cmVzb3VyY2VJZGUKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09i
amVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jlc3Bv
bnNlKiByZXNwb25zZSk7CiB2b2lkIGV3a192aWV3X3Jlc291cmNlX3JlcXVlc3Rfc2VudChFdmFz
X09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jl
cXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpOwogdm9p
ZCBld2tfdmlld190ZXh0X2ZvdW5kKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQg
bWF0Y2hDb3VudCk7Cit2b2lkIGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKEV2YXNf
T2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3ZpZXdfdXJpX3VwZGF0ZShFdmFzX09iamVjdCog
ZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNmZiOTE4ODIxOTAzNDJhYzExYzNmZWU0M2Q4
MDk0ZGI3ZWRjYzIxLi45ZThlMDk0ZWZmNzBmMWFiY2I5ZWMzODkwYzRiYmU0ZWYwODJhZjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEyMiwxMyArMTIyLDEzIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgY29uc3QgU3RyaW5nJiByZWFsbSwgY29uc3QgU3RyaW5nJiBwcmVmaWxs
ZWRVc2VybmFtZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdub3JlRXJyb3JzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFt
ZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCkgPSAwOwogI2VuZGlmIC8vIFBM
QVRGT1JNKFFUKS4KIAogI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopID0gMDsKICNlbmRpZiAvLyBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDcxYWZhZWJiMjhjYTE0YTUyMDIxNDE5YjZmYzRjZmZjNjkzOTFl
MmEuLjkyN2RjNGY0ZTNkMThiZDM5ZDA0ODI4ZTRiOGUyMWYzNjE3NTMzYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yODgyLDcgKzI4ODIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJiBl
ZGl0b3JTdGF0ZSkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBtX3BhZ2VDbGllbnQtPnVwZGF0
ZVRleHRJbnB1dFN0YXRlKGNvdWxkQ2hhbmdlU2VjdXJlSW5wdXRTdGF0ZSk7Ci0jZWxpZiBQTEFU
Rk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgbV9wYWdl
Q2xpZW50LT51cGRhdGVUZXh0SW5wdXRTdGF0ZSgpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTI0ZmJhYWIyMTM0MmNlMDhjMWRmYTVjMmNk
ODc5MDU0NGQyNDE1Ny4uM2FkZDdjNDc2ZWRjNWMxZDY5OWM2ZjA4ZmRiMTJlOTY2ZDI1ZDIwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDE0LDYgKzQxNCwx
MiBAQCBwdWJsaWM6CiAKICAgICBIV05EIG5hdGl2ZVdpbmRvdygpIGNvbnN0OwogI2VuZGlmCisj
aWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKGJvb2wm
IGhhbmRsZWQpOworICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lPiYsIGludCk7CisgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigp
OworI2VuZGlmCiAjaWYgVVNFKENBSVJPKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJPKQogICAgIFBs
YXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTM0NWIzYjRkZmQyZWJi
ZWM3YjQyNjVhZWRkOGJkYjliZmI2Mzg0ZC4uMjhjMGFlOWNkMTg0ZTI5OWJlYjc3NjBkNDg5ODA1
OWYyNDNiZjQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC02OSw2ICs2OSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIERpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKFdURjo6U3RyaW5nIG1pbWVU
eXBlLCBXVEY6OlN0cmluZyB1cmxTdHJpbmcpCiAgICAgU2V0Q2FuU2hvcnRDaXJjdWl0SG9yaXpv
bnRhbFdoZWVsRXZlbnRzKGJvb2wgY2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRz
KQogCisjaWYgUExBVEZPUk0oRUZMKQorICAgIEhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bigpIC0+
IChib29sIGhhbmRsZWQpCisjZW5kaWYKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQog
ICAgIFBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAK
aW5kZXggODk4MWNlZWIxNTcyNjg5Njc0YjdmODBiYzJjMWRlM2FhNjhmNTEzMC4uOThhZTA4YWRh
ZDJlMWE0Nzc3MDRjZDhlMGY2MjMzOTEyMjY2MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCisjaW5jbHVkZSAi
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCkBA
IC05Myw0ICs5NCwzMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRy
eURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29ucwogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24o
Ym9vbCYgaGFuZGxlZCkKK3sKKyAgICBoYW5kbGVkID0gbV9rZXlFdmVudFF1ZXVlLmZpcnN0KCku
aXNGaWx0ZXJlZCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKSwgbV9wYWdlSUQsIDApOwor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21w
b3NpdGlvblN0cmluZywgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5k
ZXJsaW5lcywgaW50IGN1cnNvclBvc2l0aW9uKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlv
biksIG1fcGFnZUlELCAwKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0
aW9uKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxDb21wb3NpdGlvbigpLCBtX3Bh
Z2VJRCwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVk
aXRvckNsaWVudEVmbC5jcHAKaW5kZXggMjJhNWNmNDUzYTk3MDQ4NmJkZmI0NTIxODIyZTM0NGU4
NjUyMzM2Ni4uZDBjYmNmNTBkOTRiYzA0MmI4NTU2ZDYxZjJmNDBkYjJjMjg0ZDljNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRp
dG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0yNywxMiArMjcsMTUgQEAKICNp
bmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvY3Vz
Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ0LDkgKzQ3LDE4IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KikKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
PmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRklYTUUgOiBzZW5kaW5nIHN5bmMgbWVzc2FnZSBtaWdodCBtYWtlIGlu
cHV0IGxhZ2dpbmcuCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgbV9wYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlSW5wdXRNZXRob2RLZXlkb3duOjpSZXBseSho
YW5kbGVkKSk7CisKKyAgICBpZiAoaGFuZGxlZCkKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGUyNGM2NTVhZTZiYjRhZjgxNDFhNmJiZmI2MDg1NTJkZGQ3Y2Y2MjUuLjQw
MDRiZThiZGRkYWFlYzc3ZjhjNWYyYjM1MTA0MjBhMzJhMzU0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYwLDcgKzQ2MCwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXN0dXJlV2lsbEJlZ2luKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Ym9vbCYgY2FuQmVnaW5QYW5uaW5nKTsKICAgICB2b2lkIGdlc3R1cmVEaWRTY3JvbGwoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgZ2VzdHVyZURpZEVuZCgpOwotCisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBj
b21wb3NpdGlvblN0cmluZyk7CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvbXBv
c2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgdWludDY0X3QgY3Vyc29yUG9zaXRpb24pOwor
ICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICB2
b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlUcmVlKCk7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCBmMTFlOTdhNWEyZjNiMjBhMjVmNzgzNzg1NDQ5MDI1MWQ1YWFmMDc3
Li4wNTQ5NDgzNzhhNThmMzk2MzFhNWQ5ZTU1MzE1MDI1MjdjN2RiM2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtMjkwLDYgKzI5MCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBHZXN0dXJlRGlk
U2Nyb2xsKFdlYkNvcmU6OkludFNpemUgc2l6ZSkKICAgICBHZXN0dXJlRGlkRW5kKCkKICNlbmRp
ZgorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBDb25maXJtQ29tcG9zaXRpb24oV1RGOjpTdHJpbmcg
Y29tcG9zaXRpb25TdHJpbmcpCisgICAgU2V0Q29tcG9zaXRpb24oV1RGOjpTdHJpbmcgY29tcG9z
aXRpb25TdHJpbmcsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1
bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbikKKyAgICBDYW5jZWxDb21wb3NpdGlv
bigpCisjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICAgICBGaW5kWm9vbWFibGVBcmVhRm9yUG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OkludFNpemUgYXJlYSkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQ
YWdlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFn
ZUVmbC5jcHAKaW5kZXggMDA1N2U4NmFjNTM0NjI0ZTQxMmZkMzE1ZDJlNjYzZjYzZTcwNzFlYS4u
OTdkMzVlYzEzY2E2OGZiYzhlZDgwNjgxOTgzZWE5ZDU5YmQ4NGQwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgog
CisjaW5jbHVkZSAiRWRpdG9yU3RhdGUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIK
QEAgLTE1Miw0ICsxNTMsNTUgQEAgdm9pZCBXZWJQYWdlOjpzZXRUaGVtZVBhdGgoY29uc3QgU3Ry
aW5nJiB0aGVtZVBhdGgpCiAgICAgdGhlbWUtPnNldFRoZW1lUGF0aCh0aGVtZVBhdGgpOwogfQog
CitzdGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lRm9yRWRpdGluZyhXZWJQYWdlKiBwYWdlKQorewor
ICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIEVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAgIGlmICghZWRpdG9y
LT5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGVkaXRvci0+aGFzQ29t
cG9zaXRpb24oKSkgeworICAgICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoZSBwYXJlbnQgbm9k
ZSBvZiB0aGlzIElNRSBjb21wb3NpdGlvbiBub2RlIGFyZQorICAgICAgICAvLyBlZGl0YWJsZSBi
ZWNhdXNlIEphdmFTY3JpcHQgbWF5IGRlbGV0ZSBhIHBhcmVudCBub2RlIG9mIHRoZSBjb21wb3Np
dGlvbgorICAgICAgICAvLyBub2RlLiBJbiB0aGlzIGNhc2UsIFdlYktpdCBjcmFzaGVzIHdoaWxl
IGRlbGV0aW5nIHRleHRzIGZyb20gdGhlIHBhcmVudAorICAgICAgICAvLyBub2RlLCB3aGljaCBk
b2Vzbid0IGV4aXN0IGFueSBsb25nZXIuCisgICAgICAgIGlmIChQYXNzUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpKSB7CisgICAgICAgICAgICBOb2RlKiBu
b2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBpZiAoIW5vZGUgfHwg
IW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZyYW1lOworfQorCit2b2lkIFdlYlBhZ2U6OmNv
bmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKQoreworICAg
IEZyYW1lKiB0YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lRm9yRWRpdGluZyh0aGlzKTsKKyAgICBp
ZiAoIXRhcmdldEZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICB0YXJnZXRGcmFtZS0+ZWRp
dG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7Cit9CisKK3ZvaWQg
V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywg
dWludDY0X3QgY3Vyc29yUG9zaXRpb24pCit7CisgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gdGFy
Z2V0RnJhbWVGb3JFZGl0aW5nKHRoaXMpOworICAgIGlmICghdGFyZ2V0RnJhbWUpCisgICAgICAg
IHJldHVybjsKKworICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGN1cnNvclBvc2l0aW9uLCAwKTsKK30KKwordm9p
ZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbigpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21w
b3NpdGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9GaW5kRWNvcmUuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZEVjb3JlLmNtYWtlCmlu
ZGV4IGVjNzZiNjU4NWY1ODIyMzk4ODcyNTFhZTQyOTk5MzQ4ZDkwMDQzOTcuLjM4YmJmMGZkODFl
M2ZjYmUxZmJhZGVkOGY2YmZlMDMxMDhiYjdjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9G
aW5kRWNvcmUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL0ZpbmRFY29yZS5jbWFrZQpAQCAtNjcs
NiArNjcsMTEgQEAgRklORF9FRkxfTElCUkFSWShFQ09SRV9YCiAgICAgSEVBREVSX1BSRUZJWEVT
IGVjb3JlLTEKICAgICBMSUJSQVJZIGVjb3JlX3gKICkKK0ZJTkRfRUZMX0xJQlJBUlkoRUNPUkVf
SU1GCisgICAgSEVBREVSUyBFY29yZV9JTUYuaCBFY29yZV9JTUZfRXZhcy5oCisgICAgSEVBREVS
X1BSRUZJWEVTIGVjb3JlLTEKKyAgICBMSUJSQVJZIGVjb3JlX2ltZgorKQogCiBGT1JFQUNIKF9j
b21wb25lbnQgJHtFY29yZV9GSU5EX0NPTVBPTkVOVFN9KQogICAgIFNFVChfZWNvcmVfY29tcG9u
ZW50ICJFQ09SRV8ke19jb21wb25lbnR9IikKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBhNWI2OWVmYjE3MmI1NzQ2NjgzZWZhNDI3ZTQ0ODI4ZWRlNmNjZDRmLi5jMGQ5
OTMzYWM3YzU5ZmI5MDM1MjU0YjkzOTU1MDFjZjJjM2JhN2MwIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTAtMDQgIFJ5dWFuIENo
b2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIHN1
cHBvcnQgZm9yIElNRiBjb21wb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kRWNvcmUuY21ha2U6IENoZWNrZWQg
RWNvcmVfSU1GLgorCiAyMDEyLTEwLTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkIGxpYnhtbCAyLjguMCB0byBqaGJ1
aWxkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167227</attachid>
            <date>2012-10-04 19:15:41 -0700</date>
            <delta_ts>2012-10-09 19:44:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89552-20121005111448.patch</filename>
            <type>text/plain</type>
            <size>27093</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDQ0YzhkYjUwY2QyNWQz
Mzc0OGVlMDUxNTI4ZTVjZDI4N2RkMGY0Ni4uNTVkNDAzOTg2YTFhMDdmMGFkZWQ3MzBiZTBkZjA3
NmJkMWNlMGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEwLTA0ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYmFzaWMgSU1GIHN1cHBvcnQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OmlzRmlsdGVyZWQpOgorICAgICAgICBB
ZGRlZCB0byBkZXRlcm1pbmUgd2hldGhlciBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGNvbXBv
c2l0aW5nLgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0
YXRlKToKKyAgICAgICAgQWRkZWQgdG8gY2hhbmdlIGlucHV0IHN0YXRlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChQYWdlQ2xpZW50SW1w
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwOgorICAgICAgICAo
ZXdrX2luaXQpOiBDYWxsZWQgZWNvcmVfaW1mX2luaXQuCisgICAgICAgIChld2tfc2h1dGRvd24p
OiBDYWxsZWQgZWNvcmVfaW1mX3NodXRkb3duLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAg
ICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjp+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24pOiBNb2RpZmllZCB0byBzZW5kIGtleWJv
YXJkIGV2ZW50IHRvIElNRi4KKyAgICAgICAgKF9ld2tfdmlld19wcmVlZGl0X2NoYW5nZWQpOiBB
ZGRlZCB0byBzZW5kIGNvbXBvc2l0aW9uIHN0cmluZy4KKyAgICAgICAgKF9ld2tfdmlld19jb21t
aXQpOiBBZGRlZCB0byBzZW5kIGEgbWVzc2FnZSB0aGF0IGNvbXBvc2l0aW9uIGlzIGZpbmlzaGVk
LgorICAgICAgICAoX2V3a192aWV3X2ltZl9jb250ZXh0X2NyZWF0ZSk6IEFkZGVkIHRvIGNyZWF0
ZSBFY29yZV9JTUZfQ29udGV4dC4KKyAgICAgICAgKF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0
cm95KTogQWRkZWQgdG8gZGVzdHJveSBFY29yZV9JTUZfQ29udGV4dC4KKyAgICAgICAgKGV3a192
aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKTogQWRkZWQgdG8gdXBkYXRlIGlucHV0IHN0YXRl
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOiBNb3ZlZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgp
IHRvIHNoYXJlIHdpdGggRUZMIHBvcnQuCisgICAgICAgIChQYWdlQ2xpZW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQpOgorICAgICAgICBBZGRlZCBQTEFURk9STShFRkwpIHRv
IGNhbGwgdXBkYXRlVGV4dElucHV0U3RhdGUoKQorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkZWQgSGFuZGxlSW5wdXRNZXRob2RL
ZXlkb3duIG1lc3NhZ2UgdG8gZGV0ZXJtaW5lIHdoZXRoZXIga2V5ZG93biBpcyBoYW5kbGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICBB
ZGRlZCB0byBjaGVjayB3aGV0aGVyIGlucHV0IG1ldGhvZCBoYW5kbGVkIGtleWRvd24uCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uKTogQWRkZWQgdG8g
c3VwcG9ydCBjb21wb3NpdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRD
b21wb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNl
bENvbXBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9y
Q2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorICAgICAgICBBZGRlZCB0byBjaGVj
ayB3aGV0aGVyIGlucHV0IG1ldGhvZCBoYW5kbGVkIGtleWRvd24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGRlZCBtZXNzYWdlcyB0byBz
dXBwb3J0IGNvbXBvc2l0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2Vi
UGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRhcmdldEZyYW1lRm9yRWRpdGluZyk6IFJl
ZmVyZW5jZWQgZnJvbSBRVCBwb3J0IHRvIGdldCBmb2N1c2VkIGZyYW1lLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOiBBZGRlZCB0byBzdXBwb3J0IGNvbXBv
c2l0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRDb21wb3NpdGlvbik6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbik6IERpdHRvLgor
CiAyMDEyLTEwLTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CiAKICAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgUGFnZUNsaWVudEltcGw6OmlzVmll
d1Zpc2libGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0MDM2YjdlNTEwMjlhNzc5
NWEwZjQxYjMxOWI0NmIwZTczM2EwODRkLi4xOGM5NmFjZDU2ZmJlZjFiMjcxMGJjOGIzZjEwNGRh
ODVkYjZkMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjAwLDYgKzIwMCw3IEBA
IExJU1QgKEFQUEVORCBXZWJQcm9jZXNzX1NPVVJDRVMKIAogTElTVCAoQVBQRU5EIFdlYlByb2Nl
c3NfTElCUkFSSUVTCiAgICAgJHtDQUlST19MSUJSQVJJRVN9CisgICAgJHtFQ09SRV9JTUZfTElC
UkFSSUVTfQogICAgICR7RUNPUkVfWF9MSUJSQVJJRVN9CiAgICAgJHtFREpFX0xJQlJBUklFU30K
ICAgICAke0VGTERFUFNfTElCUkFSSUVTfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggMmQzYmIxMGQyYjY2OGY5Nzg5OGZkYzMxYzc5MzM4
NTAyYWI0Mzc3ZC4uZmY1NGVkYTM2Y2NkMWNmZGE3OTY4MTM5MmE2NDU3NjQwNmE4YTUxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2
ZW50Kik7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CisgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiwgYm9vbCk7CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwogI2VuZGlmCiAKQEAgLTcwLDYgKzcwLDcg
QEAgcHVibGljOgogICAgIEdka0V2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBjb25zdCB2b2lk
KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KKyAgICBib29s
IGlzRmlsdGVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRmlsdGVyZWQ7IH0KICNlbmRpZgogCiBw
cml2YXRlOgpAQCAtODMsNiArODQsNyBAQCBwcml2YXRlOgogICAgIEdPd25QdHI8R2RrRXZlbnQ+
IG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgY29uc3Qgdm9pZCogbV9u
YXRpdmVFdmVudDsKKyAgICBib29sIG1faXNGaWx0ZXJlZDsKICNlbmRpZgogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVm
bC5jcHAKaW5kZXggMWVmMDJiYTk5Y2VmMWFhZDc4ODJmZWM3NDkxMTU5NGU0OWJhOGY3Yi4uMzQ0
YTM3YzgyOTFhOGMxOTUyZDUwZDA0MzFjODhiMDhjNzViYzdiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJkRXZlbnRFZmwuY3BwCkBA
IC0zMCwxNSArMzAsMTcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93
biogZXZlbnQpCitOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50
KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ZW50LCBib29sIGlzRmlsdGVyZWQpCiAgICAg
OiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVu
dChldmVudCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQorICAgICwgbV9pc0ZpbHRlcmVk
KGlzRmlsdGVyZWQpCiB7CiB9CiAKIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAqIGV2ZW50KQogICAgIDogV2ViS2V5
Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQp
KQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKKyAgICAsIG1faXNGaWx0ZXJlZChmYWxzZSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFn
ZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNs
aWVudEltcGwuY3BwCmluZGV4IDNiZjE5NGY1NzljZGE4NTZhOThiNzU1NjA5OGNmYTM3NWU0NmNi
MmMuLjdjODE0YWVjMmFkMzMzMWE5ZjZjNzM0NGYwOGZjNWFlYTJmNmNkNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAg
LTI4MSw2ICsyODEsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6Y291bnRTdHJpbmdNYXRjaGVz
SW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW4KICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSgp
Cit7CisgICAgZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUobV92aWV3V2lkZ2V0KTsK
K30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2Fk
UHJveHkqIGRvd25sb2FkKQogewogICAgIEV3a19Eb3dubG9hZF9Kb2IqIGV3a0Rvd25sb2FkID0g
ZXdrX2Rvd25sb2FkX2pvYl9uZXcoZG93bmxvYWQsIG1fdmlld1dpZGdldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaAppbmRleCA4ZjAz
YjA5ZjRmNDBiZGFmODlkMzdjYTI1NjBmMjljZDNhYzVkYTEyLi4wODQ0YzJkYzU0MDRhNzMxZTAy
ZWQxZmJiMWQzM2EzZmJhMTA2MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTc2LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAorICAgIHZvaWQgdXBkYXRlVGV4dElucHV0U3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQmLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19tYWluLmNwcAppbmRleCAxN2UyYjFlZWE1ZDNjN2RjNzY5MWI5ZGRkZjcxY2FhZWFh
Y2Y2YTI4Li44OTBiYzY5OWFlYzkzOTJmY2ViOTFmMzFjYTY0M2Y5MWFlZjMzZDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCkBAIC0yNSw2ICsy
NSw3IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KICNpbmNsdWRlIDxF
ZGplLmg+CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KQEAgLTcyLDYgKzcz
LDExIEBAIGludCBld2tfaW5pdCh2b2lkKQogICAgICAgICBnb3RvIGVycm9yX2Vjb3JlX2V2YXM7
CiAgICAgfQogCisgICAgaWYgKCFlY29yZV9pbWZfaW5pdCgpKSB7CisgICAgICAgIENSSVRJQ0FM
KCJjb3VsZCBub3QgaW5pdCBlY29yZV9pbWYuIik7CisgICAgICAgIGdvdG8gZXJyb3JfZWNvcmVf
aW1mOworICAgIH0KKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGlmICghZWNvcmVfeF9pbml0
KDApKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV94LiIpOwpAQCAt
OTAsOCArOTYsMTAgQEAgaW50IGV3a19pbml0KHZvaWQpCiAKICNpZmRlZiBIQVZFX0VDT1JFX1gK
IGVycm9yX2Vjb3JlX3g6Ci0gICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGVjb3JlX2lt
Zl9zaHV0ZG93bigpOwogI2VuZGlmCitlcnJvcl9lY29yZV9pbWY6CisgICAgZWNvcmVfZXZhc19z
aHV0ZG93bigpOwogZXJyb3JfZWNvcmVfZXZhczoKICAgICBlY29yZV9zaHV0ZG93bigpOwogZXJy
b3JfZWNvcmU6CkBAIC0xMTMsNiArMTIxLDcgQEAgaW50IGV3a19zaHV0ZG93bih2b2lkKQogI2lm
ZGVmIEhBVkVfRUNPUkVfWAogICAgIGVjb3JlX3hfc2h1dGRvd24oKTsKICNlbmRpZgorICAgIGVj
b3JlX2ltZl9zaHV0ZG93bigpOwogICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKICAgICBlY29y
ZV9zaHV0ZG93bigpOwogICAgIGV2YXNfc2h1dGRvd24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA1NThjZDIyMWE0Mjc2ZjA2YjVlYjkz
MTYzOWNmNjhhNzcxZTAzYWNkLi43M2QzMDI2MDRlNjdkMGM0NDMxYjAzNzg4MWQ2OWExYjQ5MmE0
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CkBAIC01NCw4ICs1NCwxMSBAQAogI2luY2x1ZGUgImV3a192aWV3X3VpX2NsaWVudF9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMu
aD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUZfRXZhcy5oPgog
I2luY2x1ZGUgPEVkamUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZmxTY3JlZW5VdGlsaXRpZXMu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgpAQCAtODEsNiArODQsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRDdXJz
b3JTaXplID0gMTY7CiAKIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgRXdrX1dlYl9SZXNvdXJj
ZSo+IExvYWRpbmdSZXNvdXJjZXNNYXA7CiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9sb2Fk
aW5nX3Jlc291cmNlc19jbGVhcihMb2FkaW5nUmVzb3VyY2VzTWFwJiBsb2FkaW5nUmVzb3VyY2Vz
TWFwKTsKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0cm95KEVjb3JlX0lN
Rl9Db250ZXh0KiBpbWZDb250ZXh0KTsKIAogc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKQEAgLTEwOCw2ICsxMTIs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgV2ViUG9wdXBNZW51UHJv
eHlFZmwqIHBvcHVwTWVudVByb3h5OwogICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CiAK
KyAgICBFY29yZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dDsKKyAgICBib29sIGlzSW1mRm9jdXNl
ZDsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGJvb2wgaXNVc2luZ0Vjb3JlWDsKICNlbmRp
ZgpAQCAtMTI5LDYgKzEzNiw4IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICNl
bmRpZgogICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCiAgICAgICAgICwgcG9wdXBNZW51SXRl
bXMoMCkKKyAgICAgICAgLCBpbWZDb250ZXh0KDApCisgICAgICAgICwgaXNJbWZGb2N1c2VkKGZh
bHNlKQogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgICAgICAsIGlzVXNpbmdFY29yZVgoZmFsc2Up
CiAjZW5kaWYKQEAgLTE0Miw2ICsxNTEsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSB7CiAgICAgfl9Fd2tfVmlld19Qcml2YXRlX0RhdGEoKQogICAgIHsKICAgICAgICAgX2V3a192
aWV3X3ByaXZfbG9hZGluZ19yZXNvdXJjZXNfY2xlYXIobG9hZGluZ1Jlc291cmNlc01hcCk7Cisg
ICAgICAgIF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0cm95KGltZkNvbnRleHQpOwogCiAgICAg
ICAgIGlmIChjdXJzb3JPYmplY3QpCiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29y
T2JqZWN0KTsKQEAgLTI3OSw3ICsyODksMTUgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdAogewog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsK
IAotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KGRvd25FdmVudCkpOworICAgIGJvb2wgaXNGaWx0ZXJlZCA9IGZhbHNlOworICAg
IGlmIChwcml2LT5pbWZDb250ZXh0KSB7CisgICAgICAgIEVjb3JlX0lNRl9FdmVudCBpbWZFdmVu
dDsKKyAgICAgICAgZWNvcmVfaW1mX2V2YXNfZXZlbnRfa2V5X2Rvd25fd3JhcChjb25zdF9jYXN0
PEV2YXNfRXZlbnRfS2V5X0Rvd24qPihkb3duRXZlbnQpLCAmaW1mRXZlbnQua2V5X2Rvd24pOwor
CisgICAgICAgIGlzRmlsdGVyZWQgPSBlY29yZV9pbWZfY29udGV4dF9maWx0ZXJfZXZlbnQocHJp
di0+aW1mQ29udGV4dCwgRUNPUkVfSU1GX0VWRU5UX0tFWV9ET1dOLCAmaW1mRXZlbnQpOworICAg
IH0KKworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KGRvd25FdmVudCwgaXNGaWx0ZXJlZCkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC00MDMsNiArNDIxLDM1IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl90b3VjaF9t
b3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PCiB9CiAjZW5k
aWYKIAorc3RhdGljIHZvaWQgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCh2b2lkKiBkYXRhLCBF
Y29yZV9JTUZfQ29udGV4dCogY29udGV4dCwgdm9pZCopCit7CisgICAgRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEp
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisg
ICAgaWYgKCFwcml2LT5wYWdlUHJveHktPmZvY3VzZWRGcmFtZSgpIHx8ICFwcml2LT5pc0ltZkZv
Y3VzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNoYXIqIGJ1ZmZlciA9IDA7CisgICAgZWNv
cmVfaW1mX2NvbnRleHRfcHJlZWRpdF9zdHJpbmdfZ2V0KGNvbnRleHQsICZidWZmZXIsIDApOwor
ICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgcHJlZWRpdFN0
cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKKyAgICBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+IHVuZGVybGluZXM7CisgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25V
bmRlcmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3IoMCwgMCwgMCksIGZhbHNl
KSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1
bmRlcmxpbmVzLCAwKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X2NvbW1pdCh2b2lkKiBk
YXRhLCBFY29yZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
dik7CisgICAgaWYgKCFldmVudEluZm8gfHwgIXByaXYtPmlzSW1mRm9jdXNlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcHJpdi0+cGFnZVByb3h5LT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5n
Ojpmcm9tVVRGOChzdGF0aWNfY2FzdDxjaGFyKj4oZXZlbnRJbmZvKSkpOworfQorCiBzdGF0aWMg
RXZhc19TbWFydF9DbGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFTX1NNQVJUX0NMQVNTX0lO
SVRfTlVMTDsKIAogc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZf
bmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTEwNTksNiArMTEwNiw3MSBA
QCB2b2lkIGV3a192aWV3X3RleHRfZm91bmQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVuc2lnbmVk
IGludCBtYXRjaENvdW50KQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdr
VmlldywgInRleHQsZm91bmQiLCAmbWF0Y2hDb3VudCk7CiB9CiAKK3N0YXRpYyB2b2lkIF9ld2tf
dmlld19pbWZfY29udGV4dF9jcmVhdGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQor
eworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisg
ICAgQVNTRVJUKCFwcml2LT5pbWZDb250ZXh0KTsKKworICAgIGNvbnN0IGNoYXIqIGRlZmF1bHRD
b250ZXh0SUQgPSBlY29yZV9pbWZfY29udGV4dF9kZWZhdWx0X2lkX2dldCgpOworICAgIGlmICgh
ZGVmYXVsdENvbnRleHRJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+aW1mQ29udGV4
dCA9IGVjb3JlX2ltZl9jb250ZXh0X2FkZChkZWZhdWx0Q29udGV4dElEKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihwcml2LT5pbWZDb250ZXh0KTsKKworICAgIGVjb3JlX2ltZl9j
b250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChwcml2LT5pbWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FM
TEJBQ0tfUFJFRURJVF9DSEFOR0VELCBfZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkLCBzbWFydERh
dGEpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChwcml2LT5pbWZD
b250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tfQ09NTUlULCBfZXdrX3ZpZXdfY29tbWl0LCBzbWFy
dERhdGEpOworCisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9l
dmFzX2dldChzbWFydERhdGEtPmJhc2UuZXZhcyk7CisgICAgZWNvcmVfaW1mX2NvbnRleHRfY2xp
ZW50X3dpbmRvd19zZXQocHJpdi0+aW1mQ29udGV4dCwgKHZvaWQqKWVjb3JlX2V2YXNfd2luZG93
X2dldChlY29yZUV2YXMpKTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9jbGllbnRfY2FudmFzX3Nl
dChwcml2LT5pbWZDb250ZXh0LCBzbWFydERhdGEtPmJhc2UuZXZhcyk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0cm95KEVjb3JlX0lNRl9Db250ZXh0KiBpbWZD
b250ZXh0KQoreworICAgIGlmICghaW1mQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfZGVsKGltZkNvbnRleHQsIEVDT1JFX0lN
Rl9DQUxMQkFDS19QUkVFRElUX0NIQU5HRUQsIF9ld2tfdmlld19wcmVlZGl0X2NoYW5nZWQpOwor
ICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2RlbChpbWZDb250ZXh0LCBFQ09S
RV9JTUZfQ0FMTEJBQ0tfQ09NTUlULCBfZXdrX3ZpZXdfY29tbWl0KTsKKyAgICBlY29yZV9pbWZf
Y29udGV4dF9kZWwoaW1mQ29udGV4dCk7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBUaGUg
dmlldyB3YXMgcmVxdWVzdGVkIHRvIHVwZGF0ZSB0ZXh0IGlucHV0IHN0YXRlCisgKi8KK3ZvaWQg
ZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOworICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworCisgICAgY29u
c3QgRWRpdG9yU3RhdGUmIGVkaXRvciA9IHByaXYtPnBhZ2VQcm94eS0+ZWRpdG9yU3RhdGUoKTsK
KworICAgIGlmIChlZGl0b3IuaXNDb250ZW50RWRpdGFibGUpIHsKKyAgICAgICAgaWYgKHByaXYt
PmlzSW1mRm9jdXNlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXByaXYt
PmltZkNvbnRleHQpCisgICAgICAgICAgICBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3JlYXRlKHNt
YXJ0RGF0YSk7CisKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+aW1mQ29u
dGV4dCk7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltZkNvbnRl
eHQpOworICAgICAgICBwcml2LT5pc0ltZkZvY3VzZWQgPSB0cnVlOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmICghcHJpdi0+aXNJbWZGb2N1c2VkIHx8ICFwcml2LT5pbWZDb250ZXh0KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24pCisg
ICAgICAgICAgICBwcml2LT5wYWdlUHJveHktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisKKyAgICAg
ICAgcHJpdi0+aXNJbWZGb2N1c2VkID0gZmFsc2U7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0
X3Jlc2V0KHByaXYtPmltZkNvbnRleHQpOworICAgICAgICBlY29yZV9pbWZfY29udGV4dF9mb2N1
c19vdXQocHJpdi0+aW1mQ29udGV4dCk7CisgICAgfQorfQorCiAvKioKICAqIEBpbnRlcm5hbAog
ICogVGhlIHZpZXcgdGl0bGUgd2FzIGNoYW5nZWQgYnkgdGhlIGZyYW1lIGxvYWRlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaApp
bmRleCAyZmU4YmFkYWEwZGZmNTRlYTcxZTBlNmZlMWViZWZmZTUwMjE4ZTc4Li4zNDNkMDRkYTBl
N2QyZGEzNGRhY2MxNGJjZmQwMTI3NGZhNDhkMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC04Miw2ICs4Miw3IEBA
IHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlCiB2b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVz
cG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwg
RXdrX1VybF9SZXNwb25zZSogcmVzcG9uc2UpOwogdm9pZCBld2tfdmlld19yZXNvdXJjZV9yZXF1
ZXN0X3NlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
ciwgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0LCBFd2tfVXJsX1Jlc3BvbnNlKiByZWRpcmVjdFJl
c3BvbnNlKTsKIHZvaWQgZXdrX3ZpZXdfdGV4dF9mb3VuZChFdmFzX09iamVjdCogZXdrVmlldywg
dW5zaWduZWQgaW50IG1hdGNoQ291bnQpOwordm9pZCBld2tfdmlld190ZXh0X2lucHV0X3N0YXRl
X3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X3VyaV91cGRhdGUo
RXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19jb250ZW50c19zaXplX2NoYW5n
ZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzZmYjkxODgyMTkwMzQy
YWMxMWMzZmVlNDNkODA5NGRiN2VkY2MyMS4uOWU4ZTA5NGVmZjcwZjFhYmNiOWVjMzg5MGM0YmJl
NGVmMDgyYWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xMjIs
MTMgKzEyMiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmll
d3BvcnRSZWFkeSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNv
bnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dElucHV0U3RhdGUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGNvbnN0IFN0cmluZyYgcmVhbG0sIGNvbnN0IFN0
cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dv
cmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25S
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGJvb2wmIGlnbm9yZUVycm9ycykgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJl
ZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpID0gMDsK
ICNlbmRpZiAvLyBQTEFURk9STShRVCkuCiAKICNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
RUZMKQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKSA9IDA7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3MWFmYWViYjI4Y2ExNGE1MjAyMTQxOWI2
ZmM0Y2ZmYzY5MzkxZTJhLi45MjdkYzRmNGUzZDE4YmQzOWQwNDgyOGU0YjhlMjFmMzYxNzUzM2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjg4Miw3
ICsyODgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZChjb25zdCBF
ZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgbV9wYWdl
Q2xpZW50LT51cGRhdGVUZXh0SW5wdXRTdGF0ZShjb3VsZENoYW5nZVNlY3VyZUlucHV0U3RhdGUp
OwotI2VsaWYgUExBVEZPUk0oUVQpCisjZWxpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZM
KQogICAgIG1fcGFnZUNsaWVudC0+dXBkYXRlVGV4dElucHV0U3RhdGUoKTsKICNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDkyNGZiYWFiMjEzNDJj
ZTA4YzFkZmE1YzJjZDg3OTA1NDRkMjQxNTcuLjNhZGQ3YzQ3NmVkYzVjMWQ2OTljNmYwOGZkYjEy
ZTk2NmQyNWQyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTQxNCw2ICs0MTQsMTIgQEAgcHVibGljOgogCiAgICAgSFdORCBuYXRpdmVXaW5kb3coKSBjb25z
dDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIGhhbmRsZUlucHV0TWV0aG9k
S2V5ZG93bihib29sJiBoYW5kbGVkKTsKKyAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25z
dCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mLCBpbnQpOworICAgIHZvaWQgY2FuY2Vs
Q29tcG9zaXRpb24oKTsKKyNlbmRpZgogI2lmIFVTRShDQUlSTykgJiYgIVBMQVRGT1JNKFdJTl9D
QUlSTykKICAgICBQbGF0Zm9ybVdpZGdldCB2aWV3V2lkZ2V0KCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGUz
NDViM2I0ZGZkMmViYmVjN2I0MjY1YWVkZDhiZGI5YmZiNjM4NGQuLjI4YzBhZTljZDE4NGUyOTli
ZWI3NzYwZDQ4OTgwNTlmMjQzYmY0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjksNiArNjksMTAgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXVEY6
OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgdXJsU3RyaW5nKQogICAgIFNldENhblNob3J0
Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0Q2lyY3VpdEhvcml6b250
YWxXaGVlbEV2ZW50cykKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBIYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oKSAtPiAoYm9vbCBoYW5kbGVkKQorI2VuZGlmCisKICNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKICAgICBQYWdlRGlkUmVxdWVzdFNjcm9sbChXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCmluZGV4IDg5ODFjZWViMTU3MjY4OTY3NGI3ZjgwYmMyYzFkZTNhYTY4ZjUx
MzAuLjk4YWUwOGFkYWQyZTFhNDc3NzA0Y2Q4ZTBmNjIzMzkxMjI2NjFjZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
IAorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViS2l0
VmVyc2lvbi5oIgpAQCAtOTMsNCArOTQsMzMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2Vk
UGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnMKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlSW5wdXRN
ZXRob2RLZXlkb3duKGJvb2wmIGhhbmRsZWQpCit7CisgICAgaGFuZGxlZCA9IG1fa2V5RXZlbnRR
dWV1ZS5maXJzdCgpLmlzRmlsdGVyZWQoKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNvbmZp
cm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKQoreworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyksIG1f
cGFnZUlELCAwKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4mIHVuZGVybGluZXMsIGludCBjdXJzb3JQb3NpdGlvbikKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywg
Y3Vyc29yUG9zaXRpb24pLCBtX3BhZ2VJRCwgMCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
YW5jZWxDb21wb3NpdGlvbigpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9z
aXRpb24oKSwgbV9wYWdlSUQsIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVk
aXRvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4IDIyYTVjZjQ1M2E5NzA0ODZiZGZi
NDUyMTgyMmUzNDRlODY1MjMzNjYuLjhkYzkwZDAwZGViNmE3ZmE3ZjhhNTBiNzIxOWJmMzNjM2Mz
N2I1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcApAQCAtMjcsMTIg
KzI3LDE1IEBACiAjaW5jbHVkZSAiV2ViRWRpdG9yQ2xpZW50LmgiCiAKICNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZl
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NCw5ICs0Nywx
OCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVu
dCopCit2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRnJhbWUqIGZy
YW1lID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBzZW5kaW5nIHN5bmMgbWVzc2FnZSBt
aWdodCBtYWtlIGlucHV0IGxhZ2dpbmcuCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAg
bV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlSW5wdXRNZXRob2RLZXlk
b3duOjpSZXBseShoYW5kbGVkKSk7CisKKyAgICBpZiAoaGFuZGxlZCkKKyAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUyNGM2NTVhZTZiYjRhZjgxNDFhNmJiZmI2MDg1NTJk
ZGQ3Y2Y2MjUuLjQwMDRiZThiZGRkYWFlYzc3ZjhjNWYyYjM1MTA0MjBhMzJhMzU0ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDYwLDcgKzQ2
MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXN0dXJlV2lsbEJlZ2luKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgYm9vbCYgY2FuQmVnaW5QYW5uaW5nKTsKICAgICB2b2lkIGdlc3R1cmVEaWRT
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgZ2VzdHVyZURpZEVuZCgp
OwotCisjZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbihj
b25zdCBXVEY6OlN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGNvbnN0IFdURjo6VmVjdG9yPFdl
YkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgdWludDY0X3QgY3Vyc29y
UG9zaXRpb24pOworICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICNlbGlmIFBMQVRGT1JN
KEdUSykKICAgICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlUcmVlKCk7CiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBmMTFlOTdhNWEyZjNiMjBhMjVmNzgzNzg1NDQ5
MDI1MWQ1YWFmMDc3Li4wNTQ5NDgzNzhhNThmMzk2MzFhNWQ5ZTU1MzE1MDI1MjdjN2RiM2U5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtMjkwLDYgKzI5MCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAg
ICBHZXN0dXJlRGlkU2Nyb2xsKFdlYkNvcmU6OkludFNpemUgc2l6ZSkKICAgICBHZXN0dXJlRGlk
RW5kKCkKICNlbmRpZgorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBDb25maXJtQ29tcG9zaXRpb24o
V1RGOjpTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcpCisgICAgU2V0Q29tcG9zaXRpb24oV1RGOjpT
dHJpbmcgY29tcG9zaXRpb25TdHJpbmcsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9u
VW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbikKKyAgICBDYW5j
ZWxDb21wb3NpdGlvbigpCisjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICAgICBGaW5kWm9vbWFi
bGVBcmVhRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNvcmU6OkludFNpemUg
YXJlYSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2VmbC9XZWJQYWdlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9lZmwvV2ViUGFnZUVmbC5jcHAKaW5kZXggMDA1N2U4NmFjNTM0NjI0ZTQxMmZkMzE1ZDJlNjYz
ZjYzZTcwNzFlYS4uNTIwY2U4NTc2NzUzZGYxYzRmMWY4ZWE0NmRhZTYzZGIxOTI1NjdjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VF
ZmwuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogCisjaW5jbHVkZSAiRWRpdG9yU3RhdGUuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJv
YXJkQ29kZXMuaCIKQEAgLTE1Miw0ICsxNTMsNTYgQEAgdm9pZCBXZWJQYWdlOjpzZXRUaGVtZVBh
dGgoY29uc3QgU3RyaW5nJiB0aGVtZVBhdGgpCiAgICAgdGhlbWUtPnNldFRoZW1lUGF0aCh0aGVt
ZVBhdGgpOwogfQogCitzdGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lRm9yRWRpdGluZyhXZWJQYWdl
KiBwYWdlKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAg
IGlmICghZWRpdG9yLT5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGVk
aXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRo
ZSBwYXJlbnQgbm9kZSBvZiB0aGlzIElNRSBjb21wb3NpdGlvbiBub2RlIGFyZQorICAgICAgICAv
LyBlZGl0YWJsZSBiZWNhdXNlIEphdmFTY3JpcHQgbWF5IGRlbGV0ZSBhIHBhcmVudCBub2RlIG9m
IHRoZSBjb21wb3NpdGlvbgorICAgICAgICAvLyBub2RlLiBJbiB0aGlzIGNhc2UsIFdlYktpdCBj
cmFzaGVzIHdoaWxlIGRlbGV0aW5nIHRleHRzIGZyb20gdGhlIHBhcmVudAorICAgICAgICAvLyBu
b2RlLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueSBsb25nZXIuCisgICAgICAgIGlmIChQYXNzUmVm
UHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpKSB7CisgICAgICAg
ICAgICBOb2RlKiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CisgICAgICAgICAgICBp
ZiAoIW5vZGUgfHwgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25T
dHJpbmcpCit7CisgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gdGFyZ2V0RnJhbWVGb3JFZGl0aW5n
KHRoaXMpOworICAgIGlmICghdGFyZ2V0RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5n
KTsKK30KKwordm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBv
c2l0aW9uU3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+
JiB1bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbikKK3sKKyAgICBGcmFtZSogdGFy
Z2V0RnJhbWUgPSB0YXJnZXRGcmFtZUZvckVkaXRpbmcodGhpcyk7CisgICAgaWYgKCF0YXJnZXRG
cmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRD
b21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24s
IDApOworfQorCit2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkKK3sKKyAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+ZWRpdG9y
KCktPmNhbmNlbENvbXBvc2l0aW9uKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRFY29yZS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5k
RWNvcmUuY21ha2UKaW5kZXggZWM3NmI2NTg1ZjU4MjIzOTg4NzI1MWFlNDI5OTkzNDhkOTAwNDM5
Ny4uMzhiYmYwZmQ4MWUzZmNiZTFmYmFkZWQ4ZjZiZmUwMzEwOGJiN2MyYiAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL0ZpbmRFY29yZS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvRmluZEVjb3Jl
LmNtYWtlCkBAIC02Nyw2ICs2NywxMSBAQCBGSU5EX0VGTF9MSUJSQVJZKEVDT1JFX1gKICAgICBI
RUFERVJfUFJFRklYRVMgZWNvcmUtMQogICAgIExJQlJBUlkgZWNvcmVfeAogKQorRklORF9FRkxf
TElCUkFSWShFQ09SRV9JTUYKKyAgICBIRUFERVJTIEVjb3JlX0lNRi5oIEVjb3JlX0lNRl9FdmFz
LmgKKyAgICBIRUFERVJfUFJFRklYRVMgZWNvcmUtMQorICAgIExJQlJBUlkgZWNvcmVfaW1mCisp
CiAKIEZPUkVBQ0goX2NvbXBvbmVudCAke0Vjb3JlX0ZJTkRfQ09NUE9ORU5UU30pCiAgICAgU0VU
KF9lY29yZV9jb21wb25lbnQgIkVDT1JFXyR7X2NvbXBvbmVudH0iKQpkaWZmIC0tZ2l0IGEvQ2hh
bmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGE1YjY5ZWZiMTcyYjU3NDY2ODNlZmE0MjdlNDQ4Mjhl
ZGU2Y2NkNGYuLmMwZDk5MzNhYzdjNTlmYjkwMzUyNTRiOTM5NTUwMWNmMmMzYmE3YzAgMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0x
MC0wNCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgc3VwcG9ydCBmb3IgSU1GIGNvbXBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL0ZpbmRFY29yZS5j
bWFrZTogQ2hlY2tlZCBFY29yZV9JTUYuCisKIDIwMTItMTAtMDQgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgbGlieG1s
IDIuOC4wIHRvIGpoYnVpbGQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167898</attachid>
            <date>2012-10-09 19:44:59 -0700</date>
            <delta_ts>2012-10-22 21:49:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89552-20121010114358.patch</filename>
            <type>text/plain</type>
            <size>27798</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODBlYTJkODgyZGY0Zjdi
YWI3YzljZmI5OWM2MWRlODdiYjQ3MzU4ZC4uNjhiMTZmYjdhOThjZjNiMzM2MGY4MjBjNGViODFh
YTgwZDUyZmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTEwLTA5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYmFzaWMgSU1GIHN1cHBvcnQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OmlzRmlsdGVyZWQpOgorICAgICAgICBB
ZGRlZCB0byBkZXRlcm1pbmUgd2hldGhlciBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGNvbXBv
c2l0aW5nLgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0
YXRlKToKKyAgICAgICAgQWRkZWQgdG8gY2hhbmdlIGlucHV0IHN0YXRlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChQYWdlQ2xpZW50SW1w
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwOgorICAgICAgICAo
ZXdrX2luaXQpOiBDYWxsZWQgZWNvcmVfaW1mX2luaXQuCisgICAgICAgIChld2tfc2h1dGRvd24p
OiBDYWxsZWQgZWNvcmVfaW1mX3NodXRkb3duLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAg
ICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjp+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24pOiBNb2RpZmllZCB0byBzZW5kIGtleWJv
YXJkIGV2ZW50IHRvIElNRi4KKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6IE1v
ZGlmaWVkIHRvIHJlc2V0IGlucHV0IG1ldGhvZCBjb250ZXh0LgorICAgICAgICAoX2V3a192aWV3
X3ByZWVkaXRfY2hhbmdlZCk6IEFkZGVkIHRvIHNlbmQgY29tcG9zaXRpb24gc3RyaW5nLgorICAg
ICAgICAoX2V3a192aWV3X2NvbW1pdCk6IEFkZGVkIHRvIHNlbmQgYSBtZXNzYWdlIHRoYXQgY29t
cG9zaXRpb24gaXMgZmluaXNoZWQuCisgICAgICAgIChfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3Jl
YXRlKTogQWRkZWQgdG8gY3JlYXRlIEVjb3JlX0lNRl9Db250ZXh0LgorICAgICAgICAoX2V3a192
aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3kpOiBBZGRlZCB0byBkZXN0cm95IEVjb3JlX0lNRl9Db250
ZXh0LgorICAgICAgICAoZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUpOiBBZGRlZCB0
byB1cGRhdGUgaW5wdXQgc3RhdGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6IE1vdmVkIHVw
ZGF0ZVRleHRJbnB1dFN0YXRlKCkgdG8gc2hhcmUgd2l0aCBFRkwgcG9ydC4KKyAgICAgICAgKFBh
Z2VDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZCk6CisgICAgICAgIEFk
ZGVkIFBMQVRGT1JNKEVGTCkgdG8gY2FsbCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBBZGRl
ZCBIYW5kbGVJbnB1dE1ldGhvZEtleWRvd24gbWVzc2FnZSB0byBkZXRlcm1pbmUgd2hldGhlciBr
ZXlkb3duIGlzIGhhbmRsZWQuCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUlucHV0TWV0aG9k
S2V5ZG93bik6CisgICAgICAgIEFkZGVkIHRvIGNoZWNrIHdoZXRoZXIgaW5wdXQgbWV0aG9kIGhh
bmRsZWQga2V5ZG93bi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb25maXJtQ29t
cG9zaXRpb24pOiBBZGRlZCB0byBzdXBwb3J0IGNvbXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6Cisg
ICAgICAgIEFkZGVkIHRvIGNoZWNrIHdoZXRoZXIgaW5wdXQgbWV0aG9kIGhhbmRsZWQga2V5ZG93
bi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2Vi
UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
IEFkZGVkIG1lc3NhZ2VzIHRvIHN1cHBvcnQgY29tcG9zaXRpb24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGFyZ2V0
RnJhbWVGb3JFZGl0aW5nKTogUmVmZXJlbmNlZCBmcm9tIFFUIHBvcnQgdG8gZ2V0IGZvY3VzZWQg
ZnJhbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbik6IEFk
ZGVkIHRvIHN1cHBvcnQgY29tcG9zaXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dENvbXBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhbmNlbENv
bXBvc2l0aW9uKTogRGl0dG8uCisKIDIwMTItMTAtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MzA4MTEgYW5kIHIxMzA4MjEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDFiYmYzZGI3
NjhkODQ1MzlkZmEyNGI4ODgwYjBlOTkyZmY3OGM4MTAuLjI5NzgzZTU5NDNkNDdmODQzODU3MThj
YmRjMDI1ODE3YTQzZjAyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0yMDAsNiAr
MjAwLDcgQEAgTElTVCAoQVBQRU5EIFdlYlByb2Nlc3NfU09VUkNFUwogCiBMSVNUIChBUFBFTkQg
V2ViUHJvY2Vzc19MSUJSQVJJRVMKICAgICAke0NBSVJPX0xJQlJBUklFU30KKyAgICAke0VDT1JF
X0lNRl9MSUJSQVJJRVN9CiAgICAgJHtFQ09SRV9YX0xJQlJBUklFU30KICAgICAke0VESkVfTElC
UkFSSUVTfQogICAgICR7RUZMREVQU19MSUJSQVJJRVN9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAppbmRleCAyZDNiYjEwZDJiNjY4Zjk3ODk4ZmRj
MzFjNzkzMzg1MDJhYjQzNzdkLi5mZjU0ZWRhMzZjY2QxY2ZkYTc5NjgxMzkyYTY0NTc2NDA2YThh
NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
Y29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQoR2RrRXZlbnQqKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qKTsKKyAgICBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qLCBib29sKTsKICAgICBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7CiAjZW5kaWYKIApAQCAtNzAs
NiArNzAsNyBAQCBwdWJsaWM6CiAgICAgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIGNv
bnN0IHZvaWQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudDsgfQor
ICAgIGJvb2wgaXNGaWx0ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGaWx0ZXJlZDsgfQogI2Vu
ZGlmCiAKIHByaXZhdGU6CkBAIC04Myw2ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgR093blB0cjxH
ZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBjb25zdCB2
b2lkKiBtX25hdGl2ZUV2ZW50OworICAgIGJvb2wgbV9pc0ZpbHRlcmVkOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJk
RXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50RWZsLmNwcAppbmRleCAxZWYwMmJhOTljZWYxYWFkNzg4MmZlYzc0OTExNTk0ZTQ5YmE4
ZjdiLi4zNDRhMzdjODI5MWE4YzE5NTJkNTBkMDQzMWM4OGIwOGM3NWJjN2JiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJkRXZlbnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVm
bC5jcHAKQEAgLTMwLDE1ICszMCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50
X0tleV9Eb3duKiBldmVudCkKK05hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJv
YXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXZlbnQsIGJvb2wgaXNGaWx0ZXJl
ZCkKICAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXli
b2FyZEV2ZW50KGV2ZW50KSkKICAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCisgICAgLCBtX2lz
RmlsdGVyZWQoaXNGaWx0ZXJlZCkKIHsKIH0KIAogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0
aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXZlbnQpCiAgICAg
OiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVu
dChldmVudCkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQorICAgICwgbV9pc0ZpbHRlcmVk
KGZhbHNlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggM2JmMTk0ZjU3OWNkYTg1NmE5OGI3NTU2MDk4Y2Zh
Mzc1ZTQ2Y2IyYy4uN2M4MTRhZWMyYWQzMzMxYTlmNmM3MzQ0ZjA4ZmM1YWVhMmY2Y2Q0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMjgxLDYgKzI4MSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjb3VudFN0cmlu
Z01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbgogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1
dFN0YXRlKCkKK3sKKyAgICBld2tfdmlld190ZXh0X2lucHV0X3N0YXRlX3VwZGF0ZShtX3ZpZXdX
aWRnZXQpOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
RG93bmxvYWRQcm94eSogZG93bmxvYWQpCiB7CiAgICAgRXdrX0Rvd25sb2FkX0pvYiogZXdrRG93
bmxvYWQgPSBld2tfZG93bmxvYWRfam9iX25ldyhkb3dubG9hZCwgbV92aWV3V2lkZ2V0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCmlu
ZGV4IDhmMDNiMDlmNGY0MGJkYWY4OWQzN2NhMjU2MGYyOWNkM2FjNWRhMTIuLjA4NDRjMmRjNTQw
NGE3MzFlMDJlZDFmYmIxZDMzYTNmYmExMDYwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaApAQCAtNzYsNiArNzYsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9XaW5kb3coY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgd2luZG93
VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogCisgICAgdm9pZCB1cGRhdGVUZXh0
SW5wdXRTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93
bmxvYWRQcm94eSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3Qg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCmluZGV4IDE3ZTJiMWVlYTVkM2M3ZGM3NjkxYjlkZGRm
NzFjYWFlYWFjZjZhMjguLjg5MGJjNjk5YWVjOTM5MmZjZWI5MWYzMWNhNjQzZjkxYWVmMzNkNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3Jl
Lmg+CiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0lNRi5oPgogI2lu
Y2x1ZGUgPEVkamUuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgpAQCAt
NzIsNiArNzMsMTEgQEAgaW50IGV3a19pbml0KHZvaWQpCiAgICAgICAgIGdvdG8gZXJyb3JfZWNv
cmVfZXZhczsKICAgICB9CiAKKyAgICBpZiAoIWVjb3JlX2ltZl9pbml0KCkpIHsKKyAgICAgICAg
Q1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlX2ltZi4iKTsKKyAgICAgICAgZ290byBlcnJv
cl9lY29yZV9pbWY7CisgICAgfQorCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgaWYgKCFlY29y
ZV94X2luaXQoMCkpIHsKICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlX3gu
Iik7CkBAIC05MCw4ICs5NiwxMCBAQCBpbnQgZXdrX2luaXQodm9pZCkKIAogI2lmZGVmIEhBVkVf
RUNPUkVfWAogZXJyb3JfZWNvcmVfeDoKLSAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAg
ZWNvcmVfaW1mX3NodXRkb3duKCk7CiAjZW5kaWYKK2Vycm9yX2Vjb3JlX2ltZjoKKyAgICBlY29y
ZV9ldmFzX3NodXRkb3duKCk7CiBlcnJvcl9lY29yZV9ldmFzOgogICAgIGVjb3JlX3NodXRkb3du
KCk7CiBlcnJvcl9lY29yZToKQEAgLTExMyw2ICsxMjEsNyBAQCBpbnQgZXdrX3NodXRkb3duKHZv
aWQpCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgZWNvcmVfeF9zaHV0ZG93bigpOwogI2VuZGlm
CisgICAgZWNvcmVfaW1mX3NodXRkb3duKCk7CiAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwog
ICAgIGVjb3JlX3NodXRkb3duKCk7CiAgICAgZXZhc19zaHV0ZG93bigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGM0YjUxMjcwMTYyYWZk
Y2YyMDM2YzRmYTJmYjdhYTE5NDljOTliOWEuLjVjYzQ4OGJlMzZhNzM3ZmQ4M2FiNGM1MTI0ZGY3
MGExNDg3MDU4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAKQEAgLTU0LDggKzU0LDExIEBACiAjaW5jbHVkZSAiZXdrX3ZpZXdfcmVzb3VyY2Vf
bG9hZF9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3VpX2NsaWVudF9wcml2
YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0lNRi5oPgor
I2luY2x1ZGUgPEVjb3JlX0lNRl9FdmFzLmg+CiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0VmbFNjcmVlblV0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdl
R3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC04MSw2ICs4NCw4IEBA
IHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdEN1cnNvclNpemUgPSAxNjsKIAogdHlwZWRlZiBIYXNo
TWFwPHVpbnQ2NF90LCBFd2tfUmVzb3VyY2UqPiBMb2FkaW5nUmVzb3VyY2VzTWFwOwogc3RhdGlj
IHZvaWQgX2V3a192aWV3X3ByaXZfbG9hZGluZ19yZXNvdXJjZXNfY2xlYXIoTG9hZGluZ1Jlc291
cmNlc01hcCYgbG9hZGluZ1Jlc291cmNlc01hcCk7CitzdGF0aWMgRWNvcmVfSU1GX0NvbnRleHQq
IF9ld2tfdmlld19pbWZfY29udGV4dF9jcmVhdGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhKTsKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0cm95KEVjb3JlX0lN
Rl9Db250ZXh0KiBpbWZDb250ZXh0KTsKIAogc3RydWN0IF9Fd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKQEAgLTEwOCw2ICsxMTMs
OSBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAgICAgV2ViUG9wdXBNZW51UHJv
eHlFZmwqIHBvcHVwTWVudVByb3h5OwogICAgIEVpbmFfTGlzdCogcG9wdXBNZW51SXRlbXM7CiAK
KyAgICBFY29yZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dDsKKyAgICBib29sIGlzSW1mRm9jdXNl
ZDsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGJvb2wgaXNVc2luZ0Vjb3JlWDsKICNlbmRp
ZgpAQCAtMTI5LDYgKzEzNyw4IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICNl
bmRpZgogICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCiAgICAgICAgICwgcG9wdXBNZW51SXRl
bXMoMCkKKyAgICAgICAgLCBpbWZDb250ZXh0KDApCisgICAgICAgICwgaXNJbWZGb2N1c2VkKGZh
bHNlKQogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgICAgICAsIGlzVXNpbmdFY29yZVgoZmFsc2Up
CiAjZW5kaWYKQEAgLTE0Miw2ICsxNTIsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSB7CiAgICAgfl9Fd2tfVmlld19Qcml2YXRlX0RhdGEoKQogICAgIHsKICAgICAgICAgX2V3a192
aWV3X3ByaXZfbG9hZGluZ19yZXNvdXJjZXNfY2xlYXIobG9hZGluZ1Jlc291cmNlc01hcCk7Cisg
ICAgICAgIF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0cm95KGltZkNvbnRleHQpOwogCiAgICAg
ICAgIGlmIChjdXJzb3JPYmplY3QpCiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwoY3Vyc29y
T2JqZWN0KTsKQEAgLTI2Myw2ICsyNzQsMTAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdAogCiAg
ICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52
aWV3Lnl9OwogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJN
b3VzZUV2ZW50KHVwRXZlbnQsICZwb3NpdGlvbikpOworCisgICAgaWYgKHByaXYtPmltZkNvbnRl
eHQpCisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KHByaXYtPmltZkNvbnRleHQpOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI3OSw3ICsyOTQsMTUgQEAgc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhLCBjb25zdAogewogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IHByaXYsIGZhbHNlKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVu
dChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGRvd25FdmVudCkpOworICAgIGJvb2wgaXNGaWx0ZXJl
ZCA9IGZhbHNlOworICAgIGlmIChwcml2LT5pbWZDb250ZXh0KSB7CisgICAgICAgIEVjb3JlX0lN
Rl9FdmVudCBpbWZFdmVudDsKKyAgICAgICAgZWNvcmVfaW1mX2V2YXNfZXZlbnRfa2V5X2Rvd25f
d3JhcChjb25zdF9jYXN0PEV2YXNfRXZlbnRfS2V5X0Rvd24qPihkb3duRXZlbnQpLCAmaW1mRXZl
bnQua2V5X2Rvd24pOworCisgICAgICAgIGlzRmlsdGVyZWQgPSBlY29yZV9pbWZfY29udGV4dF9m
aWx0ZXJfZXZlbnQocHJpdi0+aW1mQ29udGV4dCwgRUNPUkVfSU1GX0VWRU5UX0tFWV9ET1dOLCAm
aW1mRXZlbnQpOworICAgIH0KKworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRF
dmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGRvd25FdmVudCwgaXNGaWx0ZXJlZCkpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC00MjEsNiArNDQ0LDM1IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19vbl90b3VjaF9tb3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywg
RXZhc19PCiB9CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdl
ZCh2b2lkKiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCogY29udGV4dCwgdm9pZCopCit7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21h
cnRfRGF0YSo+KGRhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYpOworCisgICAgaWYgKCFwcml2LT5wYWdlUHJveHktPmZvY3VzZWRGcmFtZSgpIHx8
ICFwcml2LT5pc0ltZkZvY3VzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNoYXIqIGJ1ZmZl
ciA9IDA7CisgICAgZWNvcmVfaW1mX2NvbnRleHRfcHJlZWRpdF9zdHJpbmdfZ2V0KGNvbnRleHQs
ICZidWZmZXIsIDApOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBT
dHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKKyAgICBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CisgICAgdW5kZXJsaW5lcy5hcHBl
bmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgcHJlZWRpdFN0cmluZy5sZW5ndGgoKSwgQ29sb3Io
MCwgMCwgMCksIGZhbHNlKSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRDb21wb3NpdGlvbihw
cmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwKTsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3
X2NvbW1pdCh2b2lkKiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbykK
K3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tf
Vmlld19TbWFydF9EYXRhKj4oZGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgcHJpdik7CisgICAgaWYgKCFldmVudEluZm8gfHwgIXByaXYtPmlzSW1mRm9j
dXNlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpdi0+cGFnZVByb3h5LT5jb25maXJtQ29t
cG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNfY2FzdDxjaGFyKj4oZXZlbnRJbmZvKSkp
OworfQorCiBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBnX3BhcmVudFNtYXJ0Q2xhc3MgPSBFVkFT
X1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAogc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
X2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKQEAgLTQz
MSw2ICs0ODMsOCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJp
dl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKKyAgICBwcml2LT5pbWZDb250ZXh0ID0gX2V3a192aWV3X2ltZl9jb250ZXh0X2Ny
ZWF0ZShzbWFydERhdGEpOworCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgcHJpdi0+aXNVc2lu
Z0Vjb3JlWCA9IFdlYkNvcmU6OmlzVXNpbmdFY29yZVgoc21hcnREYXRhLT5iYXNlLmV2YXMpOwog
I2VuZGlmCkBAIC0xMDc5LDYgKzExMzMsNzAgQEAgdm9pZCBld2tfdmlld190ZXh0X2ZvdW5kKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgbWF0Y2hDb3VudCkKICAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJ0ZXh0LGZvdW5kIiwgJm1hdGNoQ291
bnQpOwogfQogCitzdGF0aWMgRWNvcmVfSU1GX0NvbnRleHQqIF9ld2tfdmlld19pbWZfY29udGV4
dF9jcmVhdGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQoreworICAgIGNvbnN0IGNo
YXIqIGRlZmF1bHRDb250ZXh0SUQgPSBlY29yZV9pbWZfY29udGV4dF9kZWZhdWx0X2lkX2dldCgp
OworICAgIGlmICghZGVmYXVsdENvbnRleHRJRCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBF
Y29yZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dCA9IGVjb3JlX2ltZl9jb250ZXh0X2FkZChkZWZh
dWx0Q29udGV4dElEKTsKKyAgICBpZiAoIWltZkNvbnRleHQpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfYWRkKGltZkNvbnRleHQsIEVD
T1JFX0lNRl9DQUxMQkFDS19QUkVFRElUX0NIQU5HRUQsIF9ld2tfdmlld19wcmVlZGl0X2NoYW5n
ZWQsIHNtYXJ0RGF0YSk7CisgICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfYWRk
KGltZkNvbnRleHQsIEVDT1JFX0lNRl9DQUxMQkFDS19DT01NSVQsIF9ld2tfdmlld19jb21taXQs
IHNtYXJ0RGF0YSk7CisKKyAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vj
b3JlX2V2YXNfZ2V0KHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKKyAgICBlY29yZV9pbWZfY29udGV4
dF9jbGllbnRfd2luZG93X3NldChpbWZDb250ZXh0LCAodm9pZCopZWNvcmVfZXZhc193aW5kb3df
Z2V0KGVjb3JlRXZhcykpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2NsaWVudF9jYW52YXNfc2V0
KGltZkNvbnRleHQsIHNtYXJ0RGF0YS0+YmFzZS5ldmFzKTsKKworICAgIHJldHVybiBpbWZDb250
ZXh0OworfQorCitzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfZGVzdHJveShFY29y
ZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dCkKK3sKKyAgICBpZiAoIWltZkNvbnRleHQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2RlbChp
bWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tfUFJFRURJVF9DSEFOR0VELCBfZXdrX3ZpZXdf
cHJlZWRpdF9jaGFuZ2VkKTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9ldmVudF9jYWxsYmFja19k
ZWwoaW1mQ29udGV4dCwgRUNPUkVfSU1GX0NBTExCQUNLX0NPTU1JVCwgX2V3a192aWV3X2NvbW1p
dCk7CisgICAgZWNvcmVfaW1mX2NvbnRleHRfZGVsKGltZkNvbnRleHQpOworfQorCisvKioKKyAq
IEBpbnRlcm5hbAorICogVGhlIHZpZXcgd2FzIHJlcXVlc3RlZCB0byB1cGRhdGUgdGV4dCBpbnB1
dCBzdGF0ZQorICovCit2b2lkIGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKEV2YXNf
T2JqZWN0KiBld2tWaWV3KQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2KTsKKworICAgIGlmICghcHJpdi0+aW1mQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvciA9IHByaXYtPnBhZ2VQcm94eS0+ZWRpdG9y
U3RhdGUoKTsKKworICAgIGlmIChlZGl0b3IuaXNDb250ZW50RWRpdGFibGUpIHsKKyAgICAgICAg
aWYgKHByaXYtPmlzSW1mRm9jdXNlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBl
Y29yZV9pbWZfY29udGV4dF9yZXNldChwcml2LT5pbWZDb250ZXh0KTsKKyAgICAgICAgZWNvcmVf
aW1mX2NvbnRleHRfZm9jdXNfaW4ocHJpdi0+aW1mQ29udGV4dCk7CisgICAgICAgIHByaXYtPmlz
SW1mRm9jdXNlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFwcml2LT5pc0lt
ZkZvY3VzZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGVkaXRvci5oYXND
b21wb3NpdGlvbikKKyAgICAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+Y2FuY2VsQ29tcG9zaXRp
b24oKTsKKworICAgICAgICBwcml2LT5pc0ltZkZvY3VzZWQgPSBmYWxzZTsKKyAgICAgICAgZWNv
cmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+aW1mQ29udGV4dCk7CisgICAgICAgIGVjb3JlX2lt
Zl9jb250ZXh0X2ZvY3VzX291dChwcml2LT5pbWZDb250ZXh0KTsKKyAgICB9Cit9CisKIC8qKgog
ICogQGludGVybmFsCiAgKiBUaGUgdmlldyB0aXRsZSB3YXMgY2hhbmdlZCBieSB0aGUgZnJhbWUg
bG9hZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oCmluZGV4IDBlNDgxOGZhMTJhMzlhNDcyODllZWUyYzFiODRhMmU2Y2E5N2Mz
MWMuLjA4OTc2MDViNGUxZDAxZWY5Mjc0NmE2MTc0ZGJkZDZjNTk1OGEyZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAg
LTgyLDYgKzgyLDcgQEAgdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2luaXRpYXRlZChFdmFz
X09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3VyY2VJZGUKIHZvaWQgZXdrX3ZpZXdfcmVz
b3VyY2VfbG9hZF9yZXNwb25zZShFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVzb3Vy
Y2VJZGVudGlmaWVyLCBFd2tfVXJsX1Jlc3BvbnNlKiByZXNwb25zZSk7CiB2b2lkIGV3a192aWV3
X3Jlc291cmNlX3JlcXVlc3Rfc2VudChFdmFzX09iamVjdCogZXdrVmlldywgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVzcG9u
c2UqIHJlZGlyZWN0UmVzcG9uc2UpOwogdm9pZCBld2tfdmlld190ZXh0X2ZvdW5kKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgbWF0Y2hDb3VudCk7Cit2b2lkIGV3a192aWV3X3Rl
eHRfaW5wdXRfc3RhdGVfdXBkYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdrX3Zp
ZXdfdXJsX3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2NvbnRl
bnRzX3NpemVfY2hhbmdlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBj
NmZiOTE4ODIxOTAzNDJhYzExYzNmZWU0M2Q4MDk0ZGI3ZWRjYzIxLi45ZThlMDk0ZWZmNzBmMWFi
Y2I5ZWMzODkwYzRiYmU0ZWYwODJhZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTEyMiwxMyArMTIyLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFn
ZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5k
Wm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdh
dG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVU
ZXh0SW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0aGVudGljYXRp
b25SZXF1aXJlZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgY29uc3QgU3RyaW5nJiBy
ZWFsbSwgY29uc3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFtZSwgU3RyaW5nJiB1c2VybmFtZSwg
U3RyaW5nJiBwYXNzd29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDZXJ0aWZpY2F0
ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdub3Jl
RXJyb3JzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3h5QXV0aGVudGljYXRpb25S
ZXF1aXJlZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29u
c3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFtZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBw
YXNzd29yZCkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKFFUKS4KIAogI2lmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShFRkwpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRl
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQ
cm94eSopID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIxMjI4YTEwNDUx
YzliMWY2MTE5MTk2NmJlZjlkYjE2ZDlmMWI1NjUuLmI2MmFlYTBkYmRiNzBlZmEzMjQ4NzAwMTc4
YjUzMDI5NzNiZmI4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0yODkzLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVD
aGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBtX3BhZ2VDbGllbnQtPnVwZGF0ZVRleHRJbnB1dFN0YXRlKGNvdWxkQ2hhbmdlU2Vj
dXJlSW5wdXRTdGF0ZSk7Ci0jZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShFRkwpCiAgICAgbV9wYWdlQ2xpZW50LT51cGRhdGVUZXh0SW5wdXRTdGF0ZSgp
OwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
OTI0ZmJhYWIyMTM0MmNlMDhjMWRmYTVjMmNkODc5MDU0NGQyNDE1Ny4uM2FkZDdjNDc2ZWRjNWMx
ZDY5OWM2ZjA4ZmRiMTJlOTY2ZDI1ZDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtNDE0LDYgKzQxNCwxMiBAQCBwdWJsaWM6CiAKICAgICBIV05EIG5hdGl2
ZVdpbmRvdygpIGNvbnN0OwogI2VuZGlmCisjaWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQgaGFu
ZGxlSW5wdXRNZXRob2RLZXlkb3duKGJvb2wmIGhhbmRsZWQpOworICAgIHZvaWQgY29uZmlybUNv
bXBvc2l0aW9uKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYsIGludCk7Cisg
ICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOworI2VuZGlmCiAjaWYgVVNFKENBSVJPKSAmJiAh
UExBVEZPUk0oV0lOX0NBSVJPKQogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZTM0NWIzYjRkZmQyZWJiZWM3YjQyNjVhZWRkOGJkYjliZmI2Mzg0ZC4uMjhj
MGFlOWNkMTg0ZTI5OWJlYjc3NjBkNDg5ODA1OWYyNDNiZjQxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC02OSw2ICs2OSwx
MCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZEJsb2NrSW5zZWN1cmVQbHVn
aW5WZXJzaW9uKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyB1cmxTdHJpbmcpCiAg
ICAgU2V0Q2FuU2hvcnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKGJvb2wgY2FuU2hvcnRD
aXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzKQogCisjaWYgUExBVEZPUk0oRUZMKQorICAgIEhh
bmRsZUlucHV0TWV0aG9kS2V5ZG93bigpIC0+IChib29sIGhhbmRsZWQpCisjZW5kaWYKKwogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKFdlYkNv
cmU6OkludFBvaW50IHBvaW50KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggODk4MWNlZWIxNTcyNjg5Njc0YjdmODBi
YzJjMWRlM2FhNjhmNTEzMC4uOThhZTA4YWRhZDJlMWE0Nzc3MDRjZDhlMGY2MjMzOTEyMjY2MWNk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogCisjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNp
bmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCkBAIC05Myw0ICs5NCwzMyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oYm9vbCYgaGFuZGxlZCkKK3sKKyAgICBoYW5kbGVk
ID0gbV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkuaXNGaWx0ZXJlZCgpOworfQorCit2b2lkIFdlYlBh
Z2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0
aW9uU3RyaW5nKSwgbV9wYWdlSUQsIDApOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgVmVjdG9yPFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgaW50IGN1cnNvclBvc2l0aW9uKQor
eworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5n
LCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiksIG1fcGFnZUlELCAwKTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDYW5jZWxDb21wb3NpdGlvbigpLCBtX3BhZ2VJRCwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKaW5kZXggMjJhNWNm
NDUzYTk3MDQ4NmJkZmI0NTIxODIyZTM0NGU4NjUyMzM2Ni4uOGRjOTBkMDBkZWI2YTdmYTdmOGE1
MGI3MjE5YmYzM2MzYzM3YjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwu
Y3BwCkBAIC0yNywxMiArMjcsMTUgQEAKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAog
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTQ0LDkgKzQ3LDE4IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93
bihLZXlib2FyZEV2ZW50KikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9y
KCktPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IHNlbmRpbmcg
c3luYyBtZXNzYWdlIG1pZ2h0IG1ha2UgaW5wdXQgbGFnZ2luZy4KKyAgICBib29sIGhhbmRsZWQg
PSBmYWxzZTsKKyAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okhh
bmRsZUlucHV0TWV0aG9kS2V5ZG93bigpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVJ
bnB1dE1ldGhvZEtleWRvd246OlJlcGx5KGhhbmRsZWQpKTsKKworICAgIGlmIChoYW5kbGVkKQor
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzc5M2QwOTQ0M2JjOTdlYzhl
YmE2NTA3MTZkOTkxY2YzZjQ2MjY3Yy4uOWM0NWQyOWFiMmZiYjMxYjY4MjVlYzY5ZjBjMmYyMmNj
YzEyMzk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC00NjAsNyArNDYwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdlc3R1cmVXaWxsQmVnaW4o
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sJiBjYW5CZWdpblBhbm5pbmcpOwogICAgIHZv
aWQgZ2VzdHVyZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdm9pZCBn
ZXN0dXJlRGlkRW5kKCk7Ci0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIGNvbmZpcm1D
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICB2b2lkIHNl
dENvbXBvc2l0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1
aW50NjRfdCBjdXJzb3JQb3NpdGlvbik7CisgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwog
I2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVRyZWUoKTsK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDZmYzQxNmE4NmQ5MmE4
NmI3NzJiMzlmYmNmOGNjMzI0ZGJkNTI4OGEuLmMzYTNmMTczZTQ3MzczMTc5N2Q2NTk0YWMxOWFk
NjM3MTJjYjFlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yOTAsNiArMjkwLDExIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgewogICAgIEdlc3R1cmVEaWRTY3JvbGwoV2ViQ29yZTo6SW50U2l6ZSBzaXplKQog
ICAgIEdlc3R1cmVEaWRFbmQoKQogI2VuZGlmCisjaWYgUExBVEZPUk0oRUZMKQorICAgIENvbmZp
cm1Db21wb3NpdGlvbihXVEY6OlN0cmluZyBjb21wb3NpdGlvblN0cmluZykKKyAgICBTZXRDb21w
b3NpdGlvbihXVEY6OlN0cmluZyBjb21wb3NpdGlvblN0cmluZywgV1RGOjpWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0
aW9uKQorICAgIENhbmNlbENvbXBvc2l0aW9uKCkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQog
ICAgIEZpbmRab29tYWJsZUFyZWFGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2Vi
Q29yZTo6SW50U2l6ZSBhcmVhKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAppbmRleCAwMDU3ZTg2YWM1MzQ2MjRl
NDEyZmQzMTVkMmU2NjNmNjNlNzA3MWVhLi41MjBjZTg1NzY3NTNkZjFjNGYxZjhlYTQ2ZGFlNjNk
YjE5MjU2N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
ZWZsL1dlYlBhZ2VFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9lZmwvV2ViUGFnZUVmbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAKKyNpbmNsdWRlICJFZGl0b3JTdGF0ZS5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRl
ICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgpAQCAtMTUyLDQgKzE1Myw1NiBAQCB2b2lkIFdlYlBh
Z2U6OnNldFRoZW1lUGF0aChjb25zdCBTdHJpbmcmIHRoZW1lUGF0aCkKICAgICB0aGVtZS0+c2V0
VGhlbWVQYXRoKHRoZW1lUGF0aCk7CiB9CiAKK3N0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWVGb3JF
ZGl0aW5nKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+Y29yZVBh
Z2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZS0+
ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3ItPmNhbkVkaXQoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgICAgIC8vIFdlIHNo
b3VsZCB2ZXJpZnkgdGhlIHBhcmVudCBub2RlIG9mIHRoaXMgSU1FIGNvbXBvc2l0aW9uIG5vZGUg
YXJlCisgICAgICAgIC8vIGVkaXRhYmxlIGJlY2F1c2UgSmF2YVNjcmlwdCBtYXkgZGVsZXRlIGEg
cGFyZW50IG5vZGUgb2YgdGhlIGNvbXBvc2l0aW9uCisgICAgICAgIC8vIG5vZGUuIEluIHRoaXMg
Y2FzZSwgV2ViS2l0IGNyYXNoZXMgd2hpbGUgZGVsZXRpbmcgdGV4dHMgZnJvbSB0aGUgcGFyZW50
CisgICAgICAgIC8vIG5vZGUsIHdoaWNoIGRvZXNuJ3QgZXhpc3QgYW55IGxvbmdlci4KKyAgICAg
ICAgaWYgKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLT5jb21wb3NpdGlvblJhbmdl
KCkpIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKTsK
KyAgICAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBm
cmFtZTsKK30KKwordm9pZCBXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiBjb21wb3NpdGlvblN0cmluZykKK3sKKyAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSB0YXJnZXRG
cmFtZUZvckVkaXRpbmcodGhpcyk7CisgICAgaWYgKCF0YXJnZXRGcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcpOworfQorCit2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKQorewor
ICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lRm9yRWRpdGluZyh0aGlzKTsKKyAg
ICBpZiAoIXRhcmdldEZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICB0YXJnZXRGcmFtZS0+
ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBj
dXJzb3JQb3NpdGlvbiwgMCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24o
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEVjb3JlLmNtYWtlIGIvU291
cmNlL2NtYWtlL0ZpbmRFY29yZS5jbWFrZQppbmRleCBlYzc2YjY1ODVmNTgyMjM5ODg3MjUxYWU0
Mjk5OTM0OGQ5MDA0Mzk3Li4zOGJiZjBmZDgxZTNmY2JlMWZiYWRlZDhmNmJmZTAzMTA4YmI3YzJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZEVjb3JlLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9GaW5kRWNvcmUuY21ha2UKQEAgLTY3LDYgKzY3LDExIEBAIEZJTkRfRUZMX0xJQlJBUlko
RUNPUkVfWAogICAgIEhFQURFUl9QUkVGSVhFUyBlY29yZS0xCiAgICAgTElCUkFSWSBlY29yZV94
CiApCitGSU5EX0VGTF9MSUJSQVJZKEVDT1JFX0lNRgorICAgIEhFQURFUlMgRWNvcmVfSU1GLmgg
RWNvcmVfSU1GX0V2YXMuaAorICAgIEhFQURFUl9QUkVGSVhFUyBlY29yZS0xCisgICAgTElCUkFS
WSBlY29yZV9pbWYKKykKIAogRk9SRUFDSChfY29tcG9uZW50ICR7RWNvcmVfRklORF9DT01QT05F
TlRTfSkKICAgICBTRVQoX2Vjb3JlX2NvbXBvbmVudCAiRUNPUkVfJHtfY29tcG9uZW50fSIpCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYjFiN2NlYWQ4Yzk4MGQxZDFk
ZTAyZTg0OTU2OGZjNjE5NDI0ZmRiOS4uOGYzMTBiOWE4MDJhMzU2ODg5ZGM2N2Y5OWY0YjFiMWVj
NzlhMWQ2OSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTEwLTA5ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIEFkZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvRmluZEVjb3JlLmNtYWtlOiBDaGVja2VkIEVjb3JlX0lNRi4KKwogMjAxMi0xMC0wOSAgU2lt
b24gUGVuYSAgPHNwZW5hQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQg
Zm9yIHJ1bm5pbmcgSmF2YVNjcmlwdCBmcm9tIEdSZXNvdXJjZXMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170061</attachid>
            <date>2012-10-22 21:50:03 -0700</date>
            <delta_ts>2012-10-23 05:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89552-20121023134840.patch</filename>
            <type>text/plain</type>
            <size>27934</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmRjN2I0ZDNjYTNkNzhj
ZDEwZDljNzFmYTBmN2Y2YWZkZDlmMWY1OS4uYTM5ZGU1NjAzMzU2NjI4NTdkYzU0MzIwNTk1N2Rm
OWU5YzNhOGQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTEwLTIyICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYmFzaWMgSU1GIHN1cHBvcnQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oOgorICAgICAgICAoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OmlzRmlsdGVyZWQpOgorICAgICAgICBB
ZGRlZCB0byBkZXRlcm1pbmUgd2hldGhlciBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGNvbXBv
c2l0aW5nLgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnVwZGF0ZVRleHRJbnB1dFN0
YXRlKToKKyAgICAgICAgQWRkZWQgdG8gY2hhbmdlIGlucHV0IHN0YXRlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChQYWdlQ2xpZW50SW1w
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwOgorICAgICAgICAo
ZXdrX2luaXQpOiBDYWxsZWQgZWNvcmVfaW1mX2luaXQuCisgICAgICAgIChld2tfc2h1dGRvd24p
OiBDYWxsZWQgZWNvcmVfaW1mX3NodXRkb3duLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9Fd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAgICAg
ICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YTo6X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAg
ICAgIChfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOjp+X0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24pOiBNb2RpZmllZCB0byBzZW5kIGtleWJv
YXJkIGV2ZW50IHRvIElNRi4KKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6IE1v
ZGlmaWVkIHRvIHJlc2V0IGlucHV0IG1ldGhvZCBjb250ZXh0LgorICAgICAgICAoX2V3a192aWV3
X3ByZWVkaXRfY2hhbmdlZCk6IEFkZGVkIHRvIHNlbmQgY29tcG9zaXRpb24gc3RyaW5nLgorICAg
ICAgICAoX2V3a192aWV3X2NvbW1pdCk6IEFkZGVkIHRvIHNlbmQgYSBtZXNzYWdlIHRoYXQgY29t
cG9zaXRpb24gaXMgZmluaXNoZWQuCisgICAgICAgIChfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3Jl
YXRlKTogQWRkZWQgdG8gY3JlYXRlIEVjb3JlX0lNRl9Db250ZXh0LgorICAgICAgICAoX2V3a192
aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3kpOiBBZGRlZCB0byBkZXN0cm95IEVjb3JlX0lNRl9Db250
ZXh0LgorICAgICAgICAoZXdrX3ZpZXdfdGV4dF9pbnB1dF9zdGF0ZV91cGRhdGUpOiBBZGRlZCB0
byB1cGRhdGUgaW5wdXQgc3RhdGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6IE1vdmVkIHVw
ZGF0ZVRleHRJbnB1dFN0YXRlKCkgdG8gc2hhcmUgd2l0aCBFRkwgcG9ydC4KKyAgICAgICAgKFBh
Z2VDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZCk6CisgICAgICAgIEFk
ZGVkIFBMQVRGT1JNKEVGTCkgdG8gY2FsbCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBBZGRl
ZCBIYW5kbGVJbnB1dE1ldGhvZEtleWRvd24gbWVzc2FnZSB0byBkZXRlcm1pbmUgd2hldGhlciBr
ZXlkb3duIGlzIGhhbmRsZWQuCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUlucHV0TWV0aG9k
S2V5ZG93bik6CisgICAgICAgIEFkZGVkIHRvIGNoZWNrIHdoZXRoZXIgaW5wdXQgbWV0aG9kIGhh
bmRsZWQga2V5ZG93bi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb25maXJtQ29t
cG9zaXRpb24pOiBBZGRlZCB0byBzdXBwb3J0IGNvbXBvc2l0aW9uLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6Cisg
ICAgICAgIEFkZGVkIHRvIGNoZWNrIHdoZXRoZXIgaW5wdXQgbWV0aG9kIGhhbmRsZWQga2V5ZG93
bi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2Vi
UGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
IEFkZGVkIG1lc3NhZ2VzIHRvIHN1cHBvcnQgY29tcG9zaXRpb24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGFyZ2V0
RnJhbWVGb3JFZGl0aW5nKTogUmVmZXJlbmNlZCBmcm9tIFFUIHBvcnQgdG8gZ2V0IGZvY3VzZWQg
ZnJhbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbik6IEFk
ZGVkIHRvIHN1cHBvcnQgY29tcG9zaXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dENvbXBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhbmNlbENv
bXBvc2l0aW9uKTogRGl0dG8uCisKIDIwMTItMTAtMjIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBIYW5kbGUgQXJndW1lbnRDb2RlciB0ZW1wbGF0ZSBz
cGVjaWFsaXphdGlvbnMgdGhhdCB0YWtlIHRoZSBBcmd1bWVudEVuY29kZXIgYXMgYSByZWZlcmVu
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMTYzODU3ZjhlOTcxNDk1MjNkNzI4M2Fk
Yjk1NWMxYjE5YzE0YzZjYS4uMzYwNzk2NmFmNzhiYzE1NDhkZTA2ZGUzZThkOTE1MTMxNWZmNWZk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIwNyw2ICsyMDcsNyBAQCBMSVNUIChB
UFBFTkQgV2ViUHJvY2Vzc19TT1VSQ0VTCiAKIExJU1QgKEFQUEVORCBXZWJQcm9jZXNzX0xJQlJB
UklFUwogICAgICR7Q0FJUk9fTElCUkFSSUVTfQorICAgICR7RUNPUkVfSU1GX0xJQlJBUklFU30K
ICAgICAke0VDT1JFX1hfTElCUkFSSUVTfQogICAgICR7RURKRV9MSUJSQVJJRVN9CiAgICAgJHtF
RkxERVBTX0xJQlJBUklFU30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oCmluZGV4IDJkM2JiMTBkMmI2NjhmOTc4OThmZGMzMWM3OTMzODUwMmFiNDM3
N2QuLmZmNTRlZGEzNmNjZDFjZmRhNzk2ODEzOTJhNjQ1NzY0MDZhOGE1MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50Jik7CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChHZGtFdmVudCopOwog
I2VsaWYgUExBVEZPUk0oRUZMKQotICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biopOworICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biosIGJvb2wpOwogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29u
c3QgRXZhc19FdmVudF9LZXlfVXAqKTsKICNlbmRpZgogCkBAIC03MCw2ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2
ZW50LmdldCgpOyB9CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgY29uc3Qgdm9pZCogbmF0aXZl
RXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CisgICAgYm9vbCBpc0ZpbHRl
cmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZpbHRlcmVkOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToK
QEAgLTgzLDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2
ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIGNvbnN0IHZvaWQqIG1fbmF0aXZlRXZl
bnQ7CisgICAgYm9vbCBtX2lzRmlsdGVyZWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJkRXZlbnRFZmwuY3BwCmlu
ZGV4IDFlZjAyYmE5OWNlZjFhYWQ3ODgyZmVjNzQ5MTE1OTRlNDliYThmN2IuLjM0NGEzN2M4Mjkx
YThjMTk1MmQ1MGQwNDMxYzg4YjA4Yzc1YmM3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcApAQCAtMzAsMTUg
KzMwLDE3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJLZXlib2FyZEV2ZW50
OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ZW50
KQorTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBF
dmFzX0V2ZW50X0tleV9Eb3duKiBldmVudCwgYm9vbCBpc0ZpbHRlcmVkKQogICAgIDogV2ViS2V5
Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQp
KQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKKyAgICAsIG1faXNGaWx0ZXJlZChpc0ZpbHRl
cmVkKQogewogfQogCiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKiBldmVudCkKICAgICA6IFdlYktleWJvYXJkRXZl
bnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGV2ZW50KSkKICAgICAs
IG1fbmF0aXZlRXZlbnQoZXZlbnQpCisgICAgLCBtX2lzRmlsdGVyZWQoZmFsc2UpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCAwY2E3NTY5YjlhNzYwNzNiMDcwZjUwY2Q1YzY0Y2Q0MzcyNjlmN2EzLi42Yjdm
MmRkOTJkYjNiZDI0NGYyNGZkMTc4MjcyMGQ5ZjhiNTIzYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yODEsNiAr
MjgxLDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9t
UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUoKQoreworICAg
IGV3a192aWV3X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKG1fdmlld1dpZGdldCk7Cit9CisKIHZv
aWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBk
b3dubG9hZCkKIHsKICAgICBSZWZQdHI8RXdrX0Rvd25sb2FkX0pvYj4gZXdrRG93bmxvYWQgPSBF
d2tfRG93bmxvYWRfSm9iOjpjcmVhdGUoZG93bmxvYWQsIG1fdmlld1dpZGdldCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaAppbmRleCA4
ZjAzYjA5ZjRmNDBiZGFmODlkMzdjYTI1NjBmMjljZDNhYzVkYTEyLi4wODQ0YzJkYzU0MDRhNzMx
ZTAyZWQxZmJiMWQzM2EzZmJhMTA2MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTc2LDYgKzc2LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2Ny
ZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIAorICAgIHZvaWQgdXBkYXRlVGV4dElucHV0
U3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2Fk
UHJveHkqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19tYWluLmNwcAppbmRleCAxN2UyYjFlZWE1ZDNjN2RjNzY5MWI5ZGRkZjcxY2Fh
ZWFhY2Y2YTI4Li44OTBiYzY5OWFlYzkzOTJmY2ViOTFmMzFjYTY0M2Y5MWFlZjMzZDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgog
I2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KICNpbmNsdWRl
IDxFZGplLmg+CiAjaW5jbHVkZSA8RWluYS5oPgogI2luY2x1ZGUgPEV2YXMuaD4KQEAgLTcyLDYg
KzczLDExIEBAIGludCBld2tfaW5pdCh2b2lkKQogICAgICAgICBnb3RvIGVycm9yX2Vjb3JlX2V2
YXM7CiAgICAgfQogCisgICAgaWYgKCFlY29yZV9pbWZfaW5pdCgpKSB7CisgICAgICAgIENSSVRJ
Q0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV9pbWYuIik7CisgICAgICAgIGdvdG8gZXJyb3JfZWNv
cmVfaW1mOworICAgIH0KKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGlmICghZWNvcmVfeF9p
bml0KDApKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV94LiIpOwpA
QCAtOTAsOCArOTYsMTAgQEAgaW50IGV3a19pbml0KHZvaWQpCiAKICNpZmRlZiBIQVZFX0VDT1JF
X1gKIGVycm9yX2Vjb3JlX3g6Ci0gICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGVjb3Jl
X2ltZl9zaHV0ZG93bigpOwogI2VuZGlmCitlcnJvcl9lY29yZV9pbWY6CisgICAgZWNvcmVfZXZh
c19zaHV0ZG93bigpOwogZXJyb3JfZWNvcmVfZXZhczoKICAgICBlY29yZV9zaHV0ZG93bigpOwog
ZXJyb3JfZWNvcmU6CkBAIC0xMTMsNiArMTIxLDcgQEAgaW50IGV3a19zaHV0ZG93bih2b2lkKQog
I2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGVjb3JlX3hfc2h1dGRvd24oKTsKICNlbmRpZgorICAg
IGVjb3JlX2ltZl9zaHV0ZG93bigpOwogICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKICAgICBl
Y29yZV9zaHV0ZG93bigpOwogICAgIGV2YXNfc2h1dGRvd24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAxYWI4OWFmZmMyYjFiN2YxODQ4
ZTYyZDBkMzM5YWQ0MDU2MzU2ODdhLi4xNzIyYjIyNTI0ODliNGYyYjU5ZjI1YTkzMmZlM2IzY2M2
MTQxNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwCkBAIC01Nyw4ICs1NywxMSBAQAogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNp
bmNsdWRlICJld2tfdmlld191aV9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2
YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUZfRXZhcy5o
PgogI2luY2x1ZGUgPEVkamUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZmxTY3JlZW5VdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgpAQCAtODcsNiArOTAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciBFV0tfVklF
V19UWVBFX1NUUltdID0gIkVXSzJfVmlldyI7CiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRDdXJz
b3JTaXplID0gMTY7CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mYXZpY29uX2NoYW5nZWQo
Y29uc3QgY2hhciogcGFnZVVSTCwgdm9pZCogZXZlbnRJbmZvKTsKK3N0YXRpYyBFY29yZV9JTUZf
Q29udGV4dCogX2V3a192aWV3X2ltZl9jb250ZXh0X2NyZWF0ZShFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGEpOworc3RhdGljIHZvaWQgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3ko
RWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQpOwogCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
V2ViUGFnZVByb3h5KiwgY29uc3QgRXZhc19PYmplY3QqPiBQYWdlVmlld01hcDsKIApAQCAtMTM5
LDYgKzE0NCw5IEBAIHN0cnVjdCBFd2tfVmlld19Qcml2YXRlX0RhdGEgewogICAgIFdlYlBvcHVw
TWVudVByb3h5RWZsKiBwb3B1cE1lbnVQcm94eTsKICAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0
ZW1zOwogCisgICAgRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQ7CisgICAgYm9vbCBpc0lt
ZkZvY3VzZWQ7CisKICNpZmRlZiBIQVZFX0VDT1JFX1gKICAgICBib29sIGlzVXNpbmdFY29yZVg7
CiAjZW5kaWYKQEAgLTE1Nyw2ICsxNjUsOCBAQCBzdHJ1Y3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
IHsKICNlbmRpZgogICAgICAgICAsIHBvcHVwTWVudVByb3h5KDApCiAgICAgICAgICwgcG9wdXBN
ZW51SXRlbXMoMCkKKyAgICAgICAgLCBpbWZDb250ZXh0KDApCisgICAgICAgICwgaXNJbWZGb2N1
c2VkKGZhbHNlKQogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgICAgICAsIGlzVXNpbmdFY29yZVgo
ZmFsc2UpCiAjZW5kaWYKQEAgLTE2OSw2ICsxNzksOCBAQCBzdHJ1Y3QgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhIHsKIAogICAgIH5Fd2tfVmlld19Qcml2YXRlX0RhdGEoKQogICAgIHsKKyAgICAgICAg
X2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3koaW1mQ29udGV4dCk7CisKICAgICAgICAgLyog
VW5yZWdpc3RlciBpY29uIGNoYW5nZSBjYWxsYmFjayAqLwogICAgICAgICBFd2tfRmF2aWNvbl9E
YXRhYmFzZSogaWNvbkRhdGFiYXNlID0gZXdrX2NvbnRleHRfZmF2aWNvbl9kYXRhYmFzZV9nZXQo
Y29udGV4dCk7CiAgICAgICAgIGljb25EYXRhYmFzZS0+dW53YXRjaENoYW5nZXMoX2V3a192aWV3
X29uX2Zhdmljb25fY2hhbmdlZCk7CkBAIC0yOTksNiArMzExLDEwIEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0
YSwgY29uc3QKIAogICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c21hcnREYXRhLT52aWV3Lngs
IHNtYXJ0RGF0YS0+dmlldy55fTsKICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24pKTsKKworICAgIGlmIChw
cml2LT5pbWZDb250ZXh0KQorICAgICAgICBlY29yZV9pbWZfY29udGV4dF9yZXNldChwcml2LT5p
bWZDb250ZXh0KTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTUsNyArMzMxLDE1IEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QKIHsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRV
Uk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAKLSAgICBwcml2LT5wYWdlUHJveHktPmhhbmRs
ZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQpKTsKKyAgICBi
b29sIGlzRmlsdGVyZWQgPSBmYWxzZTsKKyAgICBpZiAocHJpdi0+aW1mQ29udGV4dCkgeworICAg
ICAgICBFY29yZV9JTUZfRXZlbnQgaW1mRXZlbnQ7CisgICAgICAgIGVjb3JlX2ltZl9ldmFzX2V2
ZW50X2tleV9kb3duX3dyYXAoY29uc3RfY2FzdDxFdmFzX0V2ZW50X0tleV9Eb3duKj4oZG93bkV2
ZW50KSwgJmltZkV2ZW50LmtleV9kb3duKTsKKworICAgICAgICBpc0ZpbHRlcmVkID0gZWNvcmVf
aW1mX2NvbnRleHRfZmlsdGVyX2V2ZW50KHByaXYtPmltZkNvbnRleHQsIEVDT1JFX0lNRl9FVkVO
VF9LRVlfRE9XTiwgJmltZkV2ZW50KTsKKyAgICB9CisKKyAgICBwcml2LT5wYWdlUHJveHktPmhh
bmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQsIGlzRmls
dGVyZWQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDU3LDYgKzQ4MSwzNSBAQCBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfb25fdG91Y2hfbW92ZSh2b2lkKiAvKiBkYXRhICovLCBFdmFzKiAv
KiBjYW52YXMgKi8sIEV2YXNfTwogfQogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIF9ld2tfdmlld19w
cmVlZGl0X2NoYW5nZWQodm9pZCogZGF0YSwgRWNvcmVfSU1GX0NvbnRleHQqIGNvbnRleHQsIHZv
aWQqKQoreworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0
PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc21hcnREYXRhLCBwcml2KTsKKworICAgIGlmICghcHJpdi0+cGFnZVByb3h5LT5mb2N1
c2VkRnJhbWUoKSB8fCAhcHJpdi0+aXNJbWZGb2N1c2VkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjaGFyKiBidWZmZXIgPSAwOworICAgIGVjb3JlX2ltZl9jb250ZXh0X3ByZWVkaXRfc3RyaW5n
X2dldChjb250ZXh0LCAmYnVmZmVyLCAwKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgU3RyaW5nIHByZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZl
cik7CisgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOworICAgIHVu
ZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcubGVu
Z3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxzZSkpOworICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0
Q29tcG9zaXRpb24ocHJlZWRpdFN0cmluZywgdW5kZXJsaW5lcywgMCk7Cit9CisKK3N0YXRpYyB2
b2lkIF9ld2tfdmlld19jb21taXQodm9pZCogZGF0YSwgRWNvcmVfSU1GX0NvbnRleHQqLCB2b2lk
KiBldmVudEluZm8pCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3Rh
dGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYpOworICAgIGlmICghZXZlbnRJbmZvIHx8ICFw
cml2LT5pc0ltZkZvY3VzZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHByaXYtPnBhZ2VQcm94
eS0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y2hhcio+
KGV2ZW50SW5mbykpKTsKK30KKwogc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgZ19wYXJlbnRTbWFy
dENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKIHN0YXRpYyBFd2tfVmlld19Q
cml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEpCkBAIC00NjcsNiArNTIwLDggQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
X2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgcHJpdi0+aW1mQ29udGV4dCA9IF9ld2tfdmlld19p
bWZfY29udGV4dF9jcmVhdGUoc21hcnREYXRhKTsKKwogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAg
IHByaXYtPmlzVXNpbmdFY29yZVggPSBXZWJDb3JlOjppc1VzaW5nRWNvcmVYKHNtYXJ0RGF0YS0+
YmFzZS5ldmFzKTsKICNlbmRpZgpAQCAtMTEwNyw2ICsxMTYyLDcwIEBAIHZvaWQgZXdrX3ZpZXdf
dGV4dF9mb3VuZChFdmFzX09iamVjdCogZXdrVmlldywgdW5zaWduZWQgaW50IG1hdGNoQ291bnQp
CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAidGV4dCxmb3Vu
ZCIsICZtYXRjaENvdW50KTsKIH0KIAorc3RhdGljIEVjb3JlX0lNRl9Db250ZXh0KiBfZXdrX3Zp
ZXdfaW1mX2NvbnRleHRfY3JlYXRlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sK
KyAgICBjb25zdCBjaGFyKiBkZWZhdWx0Q29udGV4dElEID0gZWNvcmVfaW1mX2NvbnRleHRfZGVm
YXVsdF9pZF9nZXQoKTsKKyAgICBpZiAoIWRlZmF1bHRDb250ZXh0SUQpCisgICAgICAgIHJldHVy
biAwOworCisgICAgRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQgPSBlY29yZV9pbWZfY29u
dGV4dF9hZGQoZGVmYXVsdENvbnRleHRJRCk7CisgICAgaWYgKCFpbWZDb250ZXh0KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChp
bWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tfUFJFRURJVF9DSEFOR0VELCBfZXdrX3ZpZXdf
cHJlZWRpdF9jaGFuZ2VkLCBzbWFydERhdGEpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50
X2NhbGxiYWNrX2FkZChpbWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tfQ09NTUlULCBfZXdr
X3ZpZXdfY29tbWl0LCBzbWFydERhdGEpOworCisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0g
ZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChzbWFydERhdGEtPmJhc2UuZXZhcyk7CisgICAgZWNv
cmVfaW1mX2NvbnRleHRfY2xpZW50X3dpbmRvd19zZXQoaW1mQ29udGV4dCwgKHZvaWQqKWVjb3Jl
X2V2YXNfd2luZG93X2dldChlY29yZUV2YXMpKTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9jbGll
bnRfY2FudmFzX3NldChpbWZDb250ZXh0LCBzbWFydERhdGEtPmJhc2UuZXZhcyk7CisKKyAgICBy
ZXR1cm4gaW1mQ29udGV4dDsKK30KKworc3RhdGljIHZvaWQgX2V3a192aWV3X2ltZl9jb250ZXh0
X2Rlc3Ryb3koRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQpCit7CisgICAgaWYgKCFpbWZD
b250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBlY29yZV9pbWZfY29udGV4dF9ldmVudF9j
YWxsYmFja19kZWwoaW1mQ29udGV4dCwgRUNPUkVfSU1GX0NBTExCQUNLX1BSRUVESVRfQ0hBTkdF
RCwgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCk7CisgICAgZWNvcmVfaW1mX2NvbnRleHRfZXZl
bnRfY2FsbGJhY2tfZGVsKGltZkNvbnRleHQsIEVDT1JFX0lNRl9DQUxMQkFDS19DT01NSVQsIF9l
d2tfdmlld19jb21taXQpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2RlbChpbWZDb250ZXh0KTsK
K30KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFRoZSB2aWV3IHdhcyByZXF1ZXN0ZWQgdG8gdXBk
YXRlIHRleHQgaW5wdXQgc3RhdGUKKyAqLwordm9pZCBld2tfdmlld190ZXh0X2lucHV0X3N0YXRl
X3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBpZiAoIXByaXYtPmltZkNvbnRleHQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3IgPSBwcml2LT5wYWdl
UHJveHktPmVkaXRvclN0YXRlKCk7CisKKyAgICBpZiAoZWRpdG9yLmlzQ29udGVudEVkaXRhYmxl
KSB7CisgICAgICAgIGlmIChwcml2LT5pc0ltZkZvY3VzZWQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+aW1mQ29udGV4dCk7Cisg
ICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltZkNvbnRleHQpOworICAg
ICAgICBwcml2LT5pc0ltZkZvY3VzZWQgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
ICghcHJpdi0+aXNJbWZGb2N1c2VkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChlZGl0b3IuaGFzQ29tcG9zaXRpb24pCisgICAgICAgICAgICBwcml2LT5wYWdlUHJveHktPmNh
bmNlbENvbXBvc2l0aW9uKCk7CisKKyAgICAgICAgcHJpdi0+aXNJbWZGb2N1c2VkID0gZmFsc2U7
CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KHByaXYtPmltZkNvbnRleHQpOworICAg
ICAgICBlY29yZV9pbWZfY29udGV4dF9mb2N1c19vdXQocHJpdi0+aW1mQ29udGV4dCk7CisgICAg
fQorfQorCiAvKioKICAqIEBpbnRlcm5hbAogICogVGhlIHZpZXcgdGl0bGUgd2FzIGNoYW5nZWQg
YnkgdGhlIGZyYW1lIGxvYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCAyMDY2ZjllZmZhYjAwZWJhYjMyYjA1MWI3
MzE2ODJkZWNhOWYyNDBiLi4xMzYwZjYwOTRhYTAyYjJhNDBmNDIyODFkYmY1MjM5ZmYxMDEyN2U2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oCkBAIC04Myw2ICs4Myw3IEBAIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9p
bml0aWF0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19SZXNvdXJjZSogcmVzb3VyCiB2b2lk
IGV3a192aWV3X3Jlc291cmNlX2xvYWRfcmVzcG9uc2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3
a19SZXNvdXJjZSogcmVzb3VyY2UsIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlKTsKIHZvaWQg
ZXdrX3ZpZXdfcmVzb3VyY2VfcmVxdWVzdF9zZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
UmVzb3VyY2UqIHJlc291cmNlLCBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QsIEV3a19VcmxfUmVz
cG9uc2UqIHJlZGlyZWN0UmVzcG9uc2UpOwogdm9pZCBld2tfdmlld190ZXh0X2ZvdW5kKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCB1bnNpZ25lZCBpbnQgbWF0Y2hDb3VudCk7Cit2b2lkIGV3a192aWV3
X3RleHRfaW5wdXRfc3RhdGVfdXBkYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdr
X3ZpZXdfdXJsX3VwZGF0ZShFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2Nv
bnRlbnRzX3NpemVfY2hhbmdlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOwogdm9pZCBld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CmluZGV4IGM2ZmI5MTg4MjE5MDM0MmFjMTFjM2ZlZTQzZDgwOTRkYjdlZGNjMjEuLjllOGUwOTRl
ZmY3MGYxYWJjYjllYzM4OTBjNGJiZTRlZjA4MmFmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaApAQCAtMTIyLDEzICsxMjIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZy
b21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVRleHRJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRo
ZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBjb25zdCBT
dHJpbmcmIHJlYWxtLCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVz
ZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3JkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNl
cnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBib29s
JiBpZ25vcmVFcnJvcnMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRoZW50
aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50MTZfdCBw
b3J0LCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBT
dHJpbmcmIHBhc3N3b3JkKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oUVQpLgogCiAjaWYgUExB
VEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dElu
cHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChE
b3dubG9hZFByb3h5KikgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShF
RkwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTZj
N2NmZWE1ODI4Y2JmZDBlZWYwODhhYmU3MjNjNzcxYzM3ODdiYS4uNGNmYWNiNDdlZTk0ZDM3NmI1
NzYyN2U2YWMyZTcxMWYzNGNiMDE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTI4OTksNyArMjg5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0
b3JTdGF0ZUNoYW5nZWQoY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIG1fcGFnZUNsaWVudC0+dXBkYXRlVGV4dElucHV0U3RhdGUoY291bGRD
aGFuZ2VTZWN1cmVJbnB1dFN0YXRlKTsKLSNlbGlmIFBMQVRGT1JNKFFUKQorI2VsaWYgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBtX3BhZ2VDbGllbnQtPnVwZGF0ZVRleHRJbnB1
dFN0YXRlKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA5NTUyOGFiN2Y5YWIyNDFhYTI3YmUwZjI3YjJkNThlOGIxOTVlYmFmLi4wNzE1NzUx
MGNmZWYxZTE0Njk0ZjUxZGE0M2U2MmFhMjZkNjIzZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MTQsNiArNDE0LDEyIEBAIHB1YmxpYzoKIAogICAgIEhX
TkQgbmF0aXZlV2luZG93KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShFRkwpCisgICAg
dm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oYm9vbCYgaGFuZGxlZCk7CisgICAgdm9pZCBj
b25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRDb21wb3NpdGlv
bihjb25zdCBTdHJpbmcmLCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+Jiwg
aW50KTsKKyAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKCk7CisjZW5kaWYKICNpZiBVU0UoQ0FJ
Uk8pICYmICFQTEFURk9STShXSU5fQ0FJUk8pCiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dpZGdl
dCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA3N2FjODMwZjJhM2MxZDkxYjZhOThiNmQxZjg5OTIyOTkyYTgw
YTFlLi5lMWQ3MmZjZWQ1Y2QwNThlMGY1MDNhNDVhYTAwMDRiMTZjNWI5YTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTY5
LDYgKzY5LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQmxvY2tJbnNl
Y3VyZVBsdWdpblZlcnNpb24oV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHVybFN0
cmluZykKICAgICBTZXRDYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMoYm9vbCBj
YW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMpCiAKKyNpZiBQTEFURk9STShFRkwp
CisgICAgSGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKCkgLT4gKGJvb2wgaGFuZGxlZCkKKyNlbmRp
ZgorCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgUGFnZURpZFJlcXVlc3RTY3Jv
bGwoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCA4OTgxY2VlYjE1NzI2ODk2
NzRiN2Y4MGJjMmMxZGUzYWE2OGY1MTMwLi45OGFlMDhhZGFkMmUxYTQ3NzcwNGNkOGUwZjYyMzM5
MTIyNjYxY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
Z2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1w
bC5oIgogI2luY2x1ZGUgIldlYktpdFZlcnNpb24uaCIKQEAgLTkzLDQgKzk0LDMzIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihib29sJiBoYW5kbGVkKQoreworICAg
IGhhbmRsZWQgPSBtX2tleUV2ZW50UXVldWUuZmlyc3QoKS5pc0ZpbHRlcmVkKCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3Np
dGlvblN0cmluZykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24o
Y29tcG9zaXRpb25TdHJpbmcpLCBtX3BhZ2VJRCwgMCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBWZWN0b3I8
V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBpbnQgY3Vyc29yUG9z
aXRpb24pCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb24oY29tcG9zaXRp
b25TdHJpbmcsIHVuZGVybGluZXMsIGN1cnNvclBvc2l0aW9uKSwgbV9wYWdlSUQsIDApOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQoreworICAgIGlmICghaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9uKCksIG1fcGFnZUlELCAwKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcAppbmRl
eCAyMmE1Y2Y0NTNhOTcwNDg2YmRmYjQ1MjE4MjJlMzQ0ZTg2NTIzMzY2Li44ZGM5MGQwMGRlYjZh
N2ZhN2Y4YTUwYjcyMTliZjMzYzNjMzdiNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNs
aWVudEVmbC5jcHAKQEAgLTI3LDEyICsyNywxNSBAQAogI2luY2x1ZGUgIldlYkVkaXRvckNsaWVu
dC5oIgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtNDQsOSArNDcsMTggQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRo
b2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlu
cHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTog
c2VuZGluZyBzeW5jIG1lc3NhZ2UgbWlnaHQgbWFrZSBpbnB1dCBsYWdnaW5nLgorICAgIGJvb2wg
aGFuZGxlZCA9IGZhbHNlOworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6SGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bjo6UmVwbHkoaGFuZGxlZCkpOworCisgICAgaWYgKGhh
bmRsZWQpCisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NGJlMzEzZTcx
NjM1OGU5MzJiNDNmOWJiZmQwZWJlODAxYTk1YTlkLi45OTg0ZGY0NTA4M2Q3MGFjMzcxNGY5MmE0
ZTlmMWNiMzk0MDZkZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTQ2NSw3ICs0NjUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2VzdHVyZVdp
bGxCZWdpbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wmIGNhbkJlZ2luUGFubmluZyk7
CiAgICAgdm9pZCBnZXN0dXJlRGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAg
ICB2b2lkIGdlc3R1cmVEaWRFbmQoKTsKLQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHZvaWQg
Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOworICAg
IHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5n
LCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVy
bGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKTsKKyAgICB2b2lkIGNhbmNlbENvbXBvc2l0
aW9uKCk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5
VHJlZSgpOwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTg5MTg5
MGFjNzc0OGQ4OGIwYjg3Nzc1YjQ0NzA5YjM0OWJkYjAxZS4uMDkzM2FhMWFhYTFkNjdiOGQ2MDhk
MzI3YWQwMTE4MzdjYzc1ZDIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI5Miw2ICsyOTIsMTEgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgR2VzdHVyZURpZFNjcm9sbChXZWJDb3JlOjpJbnRTaXpl
IHNpemUpCiAgICAgR2VzdHVyZURpZEVuZCgpCiAjZW5kaWYKKyNpZiBQTEFURk9STShFRkwpCisg
ICAgQ29uZmlybUNvbXBvc2l0aW9uKFdURjo6U3RyaW5nIGNvbXBvc2l0aW9uU3RyaW5nKQorICAg
IFNldENvbXBvc2l0aW9uKFdURjo6U3RyaW5nIGNvbXBvc2l0aW9uU3RyaW5nLCBXVEY6OlZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3QgY3Vy
c29yUG9zaXRpb24pCisgICAgQ2FuY2VsQ29tcG9zaXRpb24oKQorI2VuZGlmCiAjaWYgUExBVEZP
Uk0oUVQpCiAgICAgRmluZFpvb21hYmxlQXJlYUZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCBXZWJDb3JlOjpJbnRTaXplIGFyZWEpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IDAwNTdlODZh
YzUzNDYyNGU0MTJmZDMxNWQyZTY2M2Y2M2U3MDcxZWEuLjUyMGNlODU3Njc1M2RmMWM0ZjFmOGVh
NDZkYWU2M2RiMTkyNTY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKIAorI2luY2x1ZGUgIkVkaXRvclN0YXRl
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgog
I2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCkBAIC0xNTIsNCArMTUzLDU2IEBAIHZv
aWQgV2ViUGFnZTo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWVQYXRoKQogICAgIHRo
ZW1lLT5zZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKIH0KIAorc3RhdGljIEZyYW1lKiB0YXJnZXRG
cmFtZUZvckVkaXRpbmcoV2ViUGFnZSogcGFnZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBwYWdl
LT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBFZGl0b3IqIGVkaXRvciA9
IGZyYW1lLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci0+Y2FuRWRpdCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICAgICAg
Ly8gV2Ugc2hvdWxkIHZlcmlmeSB0aGUgcGFyZW50IG5vZGUgb2YgdGhpcyBJTUUgY29tcG9zaXRp
b24gbm9kZSBhcmUKKyAgICAgICAgLy8gZWRpdGFibGUgYmVjYXVzZSBKYXZhU2NyaXB0IG1heSBk
ZWxldGUgYSBwYXJlbnQgbm9kZSBvZiB0aGUgY29tcG9zaXRpb24KKyAgICAgICAgLy8gbm9kZS4g
SW4gdGhpcyBjYXNlLCBXZWJLaXQgY3Jhc2hlcyB3aGlsZSBkZWxldGluZyB0ZXh0cyBmcm9tIHRo
ZSBwYXJlbnQKKyAgICAgICAgLy8gbm9kZSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnkgbG9uZ2Vy
LgorICAgICAgICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3ItPmNvbXBvc2l0
aW9uUmFuZ2UoKSkgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IHJhbmdlLT5zdGFydENvbnRh
aW5lcigpOworICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIGZyYW1lOworfQorCit2b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbihjb25z
dCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKQoreworICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IHRhcmdldEZyYW1lRm9yRWRpdGluZyh0aGlzKTsKKyAgICBpZiAoIXRhcmdldEZyYW1lKQorICAg
ICAgICByZXR1cm47CisKKyAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3Np
dGlvbihjb21wb3NpdGlvblN0cmluZyk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgdWludDY0X3QgY3Vyc29yUG9zaXRp
b24pCit7CisgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gdGFyZ2V0RnJhbWVGb3JFZGl0aW5nKHRo
aXMpOworICAgIGlmICghdGFyZ2V0RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVy
bGluZXMsIGN1cnNvclBvc2l0aW9uLCAwKTsKK30KKwordm9pZCBXZWJQYWdlOjpjYW5jZWxDb21w
b3NpdGlvbigpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbigpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kRWNvcmUuY21h
a2UgYi9Tb3VyY2UvY21ha2UvRmluZEVjb3JlLmNtYWtlCmluZGV4IGVjNzZiNjU4NWY1ODIyMzk4
ODcyNTFhZTQyOTk5MzQ4ZDkwMDQzOTcuLjM4YmJmMGZkODFlM2ZjYmUxZmJhZGVkOGY2YmZlMDMx
MDhiYjdjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kRWNvcmUuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL0ZpbmRFY29yZS5jbWFrZQpAQCAtNjcsNiArNjcsMTEgQEAgRklORF9FRkxf
TElCUkFSWShFQ09SRV9YCiAgICAgSEVBREVSX1BSRUZJWEVTIGVjb3JlLTEKICAgICBMSUJSQVJZ
IGVjb3JlX3gKICkKK0ZJTkRfRUZMX0xJQlJBUlkoRUNPUkVfSU1GCisgICAgSEVBREVSUyBFY29y
ZV9JTUYuaCBFY29yZV9JTUZfRXZhcy5oCisgICAgSEVBREVSX1BSRUZJWEVTIGVjb3JlLTEKKyAg
ICBMSUJSQVJZIGVjb3JlX2ltZgorKQogCiBGT1JFQUNIKF9jb21wb25lbnQgJHtFY29yZV9GSU5E
X0NPTVBPTkVOVFN9KQogICAgIFNFVChfZWNvcmVfY29tcG9uZW50ICJFQ09SRV8ke19jb21wb25l
bnR9IikKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxMmE0MWZiNjFh
YWVjZWYxM2VlYmYzYzQ4MzliNjIxNzY5YzljYWNhLi45MDdiNDZlNzE0Y2RlMjBlYzMxNTcwNWIy
M2NiM2I2NWNjYjQ3NWViIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMTAtMjIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIElNRiBjb21wb3Np
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS9jbWFrZS9GaW5kRWNvcmUuY21ha2U6IENoZWNrZWQgRWNvcmVfSU1GLgorCiAyMDEyLTEw
LTIyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IG1lcmdlICJkb2NrZWQiIHN0YXRlIGludG8gdGhlICJkb2NrIHNpZGUiIGVu
dW0uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>