<?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>76303</bug_id>
          
          <creation_ts>2012-01-13 13:28:46 -0800</creation_ts>
          <short_desc>[Windows] Convert usage of GetDC to HWndDC.</short_desc>
          <delta_ts>2012-01-24 09:58:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Windows 7</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>
          <dependson>76737</dependson>
    
    <dependson>76744</dependson>
    
    <dependson>76750</dependson>
    
    <dependson>76889</dependson>
          <blocked>76237</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>aroben</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dslomov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535948</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-13 13:28:46 -0800</bug_when>
    <thetext>I&apos;m not touching the wince, wx, qt, or Cairo ports (because I worry about breaking them and not having lots of time to solve it -- with having to install lots of other stuff, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535987</commentid>
    <comment_count>1</comment_count>
      <attachid>122502</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-13 14:19:41 -0800</bug_when>
    <thetext>Created attachment 122502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535988</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-13 14:20:17 -0800</bug_when>
    <thetext>Adding folks whom I believe work on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537125</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-17 08:34:17 -0800</bug_when>
    <thetext>Why is this patch obsolete?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537129</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-17 08:45:24 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why is this patch obsolete?

Two reasons:
1.I moved the header file.
2. I decided that I hated the OwnPtr thing I did and wanted to make delayed allocation part of the class itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537377</commentid>
    <comment_count>5</comment_count>
      <attachid>122821</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-17 15:07:53 -0800</bug_when>
    <thetext>Created attachment 122821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537379</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 15:10:14 -0800</bug_when>
    <thetext>Attachment 122821 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.cpp:812:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebCore/platform/win/HWndDC.h:64:  Use the class HWndDC instead of calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebKit/win/FullscreenVideoController.cpp:489:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebCore/platform/win/PopupMenuWin.cpp:571:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebKit2/Shared/win/ShareableBitmapWin.cpp:46:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Total errors found: 5 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537382</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-17 15:11:59 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Attachment 122821 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; 
&gt; Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.cpp:812:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
&gt; Source/WebCore/platform/win/HWndDC.h:64:  Use the class HWndDC instead of calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
&gt; Source/WebKit/win/FullscreenVideoController.cpp:489:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
&gt; Source/WebCore/platform/win/PopupMenuWin.cpp:571:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
&gt; Source/WebKit2/Shared/win/ShareableBitmapWin.cpp:46:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
&gt; Total errors found: 5 in 21 files
&gt; 


Some are because I&apos;m not changing over more things in this patch and a few point out the need for me to fix the style checker to look for adoptPtr instead of OwnPtr when looking for the leaky pattern.

Filed: https://bugs.webkit.org/show_bug.cgi?id=76483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538225</commentid>
    <comment_count>8</comment_count>
      <attachid>123007</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-18 15:15:27 -0800</bug_when>
    <thetext>Created attachment 123007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538231</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-18 15:16:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why is this patch obsolete?

It is good now. Please feel free to review it :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538236</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 15:19:04 -0800</bug_when>
    <thetext>Attachment 123007 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.cpp:812:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebCore/platform/win/HWndDC.h:64:  Use the class HWndDC instead of calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebKit/win/FullscreenVideoController.cpp:489:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebCore/platform/win/PopupMenuWin.cpp:571:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebKit2/Shared/win/ShareableBitmapWin.cpp:46:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Total errors found: 5 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538471</commentid>
    <comment_count>11</comment_count>
      <attachid>123072</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-18 21:51:19 -0800</bug_when>
    <thetext>Created attachment 123072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538475</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 21:53:27 -0800</bug_when>
    <thetext>Attachment 123072 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.cpp:812:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebCore/platform/win/HWndDC.h:64:  Use the class HWndDC instead of calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebKit/win/FullscreenVideoController.cpp:489:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebCore/platform/win/PopupMenuWin.cpp:571:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Source/WebKit2/Shared/win/ShareableBitmapWin.cpp:46:  Use OwnPtr&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Total errors found: 5 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538556</commentid>
    <comment_count>13</comment_count>
      <attachid>123072</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-19 01:39:56 -0800</bug_when>
    <thetext>Comment on attachment 123072
Patch

cq? since it builds fine on Windows now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539740</commentid>
    <comment_count>14</comment_count>
      <attachid>123072</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-20 13:11:06 -0800</bug_when>
    <thetext>Comment on attachment 123072
Patch

Will break into smaller patches especially for functionality changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541412</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-24 09:58:43 -0800</bug_when>
    <thetext>As soon as the last patch goes through the commit queue this is done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122502</attachid>
            <date>2012-01-13 14:19:41 -0800</date>
            <delta_ts>2012-01-16 07:44:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76303-20120113141940.patch</filename>
            <type>text/plain</type>
            <size>36853</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YzAwNjlhMzg1Yjg5N2Q2MThiNjU0NzU5MGRjMDMwN2Y1ZTcyZWEwLi41ZGU4OThkMmIzZjlmOGIz
N2NjOGU4YTM2MGQxZTM4ZGEzZWFkYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNCBAQAogMjAxMi0wMS0xMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgW3dpbmRvd3NdIENvbnZlcnQgdXNhZ2VzIG9mIEdldERDIHRvIEhXbmREQy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6IEFkZGVkIHRoZSBoZWFkZXIgZmlsZSB0byB0
aGUgYnVpbGQuCisKKzIwMTItMDEtMTMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3Jn
PgorCiAgICAgICAgIEhXbmREQyBpcyBhIGJldHRlciBuYW1lIHRoYW4gSHduZERDLgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyODEKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDg3M2Y3MGJlY2FlY2U4M2Q2NThlMDhlODhlODk3YTY0YWMxY2E5OWYuLmVjN2E1ZTQz
Y2MyZWZlZDU1Y2E0OWQ4ZGNmZDdkODg0YzQyOTBjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0
OCBAQAogMjAxMi0wMS0xMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKKyAg
ICAgICAgW3dpbmRvd3NdIENvbnZlcnQgdXNhZ2VzIG9mIEdldERDIHRvIEhXbmREQy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzAzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9u
YWxpdHkgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnRE
YXRhRm9yQ2hhcmFjdGVycyk6IENoYW5nZWQgR2V0REMgdG8gSFduZERDCisgICAgICAgIGFuZCBy
ZW1vdmVkIFJlbGVhc2VEQy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRh
Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5p
dCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0
YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6aW5pdEdESUZvbnQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpjb250YWluc0NoYXJh
Y3RlcnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpkZXRlcm1p
bmVQaXRjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmJvdW5k
c0ZvckdESUdseXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6
d2lkdGhGb3JHRElHbHlwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERh
dGE6OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5p
c2NyaWJlQ29udHJvbGxlcjo6c2hhcGVBbmRQbGFjZUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKTogVXNlZCBhbiBPd25QdHIgd2l0aCBI
V25kREMKKyAgICAgICAgdG8gYWxsb3cgZm9yIHRoZSBjb25kaXRpb25hbCBhbGxvY2F0aW9uIGhl
cmUuIFRoaXMgY291bGQgYmUgZG9uZQorICAgICAgICB3aXRoIG1vcmUgbWVjaGFuaWNzIGluIEhX
bmREQywgYnV0IHRoaXMgc2VlbWVkIGxpa2UgYSByYXJlIGNhc2UsIHNvCisgICAgICAgIEkgd2Fu
dGVkIHRvIGF2b2lkIG1ha2luZyBIV25kREMgaGFyZGVyIGZvciBhbGwgb3RoZXIgY2FzZXMgdG8g
dW5kZXJzdGFuZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVNoYXJlZEN1cnNvcik6IENoYW5nZWQgR2V0REMgdG8gSFduZERD
IGFuZCByZW1vdmVkIFJlbGVhc2VEQy4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NhbGVEcmFnSW1hZ2UpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2Up
OiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTWVudVdpbjo6cGFpbnQpOiBTYW1lIE93blB0ciBtZWNoYW5pY3Mg
YXMgYmVmb3JlLgorCisyMDEyLTAxLTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBbY2hyb21pdW1dIENvbnZlcnQgdXNlcyBvZiBHZXREQyB0byBIV25kREMu
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI5MAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzg0ZmFhNWQwMTVlNTI1MDk2YjU2ZjJlMTVjMzRjY2ZjN2Q2
ODhiNy4uNWU4NmNmMWNkNWFkNTMxNmYyZjg2ZGJhOWMwMjA3ODBlNTIzY2NlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAxLTEzICBEYXZpZCBMZXZpbiAgPGxldmlu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVydCB1c2FnZXMgb2YgR2V0
REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoY3JlYXRlQ29t
cGF0aWJsZURDRm9yV2luZG93KTogTW92ZWQgb3V0IHRoZSBjb2RlIHdoaWNoIGNyZWF0ZXMgYSBE
QyBmb3IgYSB3aW5kb3cKKyAgICAgICAgYW5kIHN3aXRjaCB0byB1c2luZyBIV25kREMgYW5kIE93
blB0cjxIREM+IGZvciB0aGlzIGNvZGUuCisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpkcmF3KTogRGl0dG8uCisgICAgICAgICogV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKGNyZWF0ZURJQik6IENoYW5nZWQgR2V0REMgdG8gSFduZERDIGFuZCByZW1vdmVkIFJlbGVh
c2VEQy4KKyAgICAgICAgKiBXZWJOb2RlSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdlYk5vZGVI
aWdobGlnaHQ6OnVwZGF0ZSk6IENsZWFuZWQgdXAgbGVha3MgZnJvbSBjYWxsaW5nIEdldERDIGFu
ZCBhIHBvdGVudGlhbAorICAgICAgICBsZWFrIG9mIHRoZSByZXN1bHQgZnJvbSBDcmVhdGVDb21w
YXRpYmxlREMgaW4gYW4gZWFybHkgZXhpdCBzY2VuYXJpbyBieSB1c2luZworICAgICAgICBIV25k
REMgYW5kIE93blB0cjxIREM+CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJW
aWV3OjpzY3JvbGxCYWNraW5nU3RvcmUpOiBUeXBpY2FsIGNvbnZlcnNpb24uCisgICAgICAgIChX
ZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUpOiBVc2UgT1duUHRyIHRvIGhhbmRsZSB0aGUgY29u
ZGl0aW9uYWwgYWxsb2NhdGlvbiBvZiBhIERDLgorICAgICAgICAoV2ViVmlldzo6cGVyZm9ybUxh
eWVyZWRXaW5kb3dVcGRhdGUpOiBUeXBpY2FsIGNvbnZlcnNpb24uCisgICAgICAgIChXZWJWaWV3
OjpwYWludEludG9CYWNraW5nU3RvcmUpOiBEaXR0by4KKwogMjAxMi0wMS0wNyAgQW5kcmVhcyBL
bGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBidWlsZCBm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggNGQxYTA1MjU0MzEzZDllMDZjYzg4MTllNjlkNjEyZGJkMDBmZGY2
MC4uY2EyM2E0ZGQ2ZDhkNWQ1NWU5ZjI3YWRiMDdlNTA3MTA3MmJiNDkyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVydCB1c2FnZXMgb2YgR2V0REMgdG8gSFdu
ZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYz
MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC93aW4vU2hhcmVhYmxlQml0bWFwV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjp3aW5kb3dzQ29udGV4dCk6IEZpeCBpbmNvcnJlY3QgdXNhZ2Ugb2YgT3duUHRy
PEhEQz4gd2hpY2gKKyAgICAgICAgd291bGQgZG8gYSBEZWxldGVEQyBpbnN0ZWFkIG9mIGEgUmVs
ZWFzZURDLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVdpbjo6cGFpbnQpOiBPbmUgY2hh
bmdlIGZpeGVkIGEgbGVhayBhbmQgdGhlIG90aGVyIGhhZCBhIGNvbmRpdGlvbmFsCisgICAgICAg
IEdldERDIGFsbG9jYXRpb24gd2hpY2ggcmVxdWlyZWQgdGhlIHVzZSBvZiBhbiBPd25QdHIuCisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKTogVHlwaWNhbCBjb252ZXJzaW9uLgorCiAy
MDEyLTAxLTEyICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBbV2ViS2l0Ml0gV2ViS2l0VVJJUmVxdWVzdCBhbmQgV2ViS2l0VVJJUmVzcG9u
c2Ugc2hvdWxkIHdyYXAgdGhlIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBjbGFzc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYv
V1RGLnZjcHJvagppbmRleCA2ZTg5YjAxNjcyNzFiNDU3NjNmYjkyMzQzMzMyMjkxMDBlZDI2MDFj
Li4wNWY0NDBkODdiZjYxYmU1MzM3NWMwNjk4YmY1MzE0N2I1YzFjYTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dU
Ri52Y3Byb2oKQEAgLTM4OCw2ICszODgsMTAgQEAKIAkJCU5hbWU9IndpbiIKIAkJCT4KIAkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcd2luXEhXbmREQ1dpbi5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcd2luXE1h
aW5UaHJlYWRXaW4uY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggM2ViNzQz
NmVlMmU1NWQ5NTBlNWQyMDBjNTE3ZDdiNDRkOGI2MDc2Ny4uYzEyYjUyMTE4OTQwZjUwMTNiOWFm
MjZhNTM5ZTk4ZTUwMTFiNDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvd2luL0hXbmREQ1dpbi5oPgog
I2lmIFVTRShDRykKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CkBAIC0xODksNyArMTkwLDcgQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRD
YWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnMKIHsK
ICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzWzBdOwogICAgIFNpbXBsZUZvbnREYXRh
KiBmb250RGF0YSA9IDA7Ci0gICAgSERDIGhkYyA9IEdldERDKDApOworICAgIEhXbmREQyBoZGMo
MCk7CiAgICAgSEZPTlQgcHJpbWFyeUZvbnQgPSBmb250LnByaW1hcnlGb250KCktPmZvbnREYXRh
Rm9yQ2hhcmFjdGVyKGNoYXJhY3RlciktPnBsYXRmb3JtRGF0YSgpLmhmb250KCk7CiAgICAgSEdE
SU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgcHJpbWFyeUZvbnQpOwogICAgIEhGT05U
IGhmb250ID0gMDsKQEAgLTI5Miw3ICsyOTMsNiBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9u
dENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYgZm9udCwgY29ucwog
ICAgICAgICBEZWxldGVPYmplY3QoaGZvbnQpOwogICAgIH0KIAotICAgIFJlbGVhc2VEQygwLCBo
ZGMpOwogICAgIHJldHVybiBmb250RGF0YTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN0YXRp
YyBpbnQgQ0FMTEJBQ0sgbWF0Y2hJbXByb3ZpbmdFbnVtUHJvYyhDT05TVCBMT0dGT05UKiBjYW5k
aWRhdGUsIENPTlNUIFRFWFRNCiAKIHN0YXRpYyBIRk9OVCBjcmVhdGVHRElGb250KGNvbnN0IEF0
b21pY1N0cmluZyYgZmFtaWx5LCBMT05HIGRlc2lyZWRXZWlnaHQsIGJvb2wgZGVzaXJlZEl0YWxp
YywgaW50IHNpemUsIGJvb2wgc3ludGhlc2l6ZUl0YWxpYykKIHsKLSAgICBIREMgaGRjID0gR2V0
REMoMCk7CisgICAgSFduZERDIGhkYygwKTsKIAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBs
b2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKQEAgLTQ1OSw4ICs0NTksNiBAQCBz
dGF0aWMgSEZPTlQgY3JlYXRlR0RJRm9udChjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgTE9O
RyBkZXNpcmVkV2VpZ2h0LCBib29sCiAgICAgTWF0Y2hJbXByb3ZpbmdQcm9jRGF0YSBtYXRjaERh
dGEoZGVzaXJlZFdlaWdodCwgZGVzaXJlZEl0YWxpYyk7CiAgICAgRW51bUZvbnRGYW1pbGllc0V4
KGhkYywgJmxvZ0ZvbnQsIG1hdGNoSW1wcm92aW5nRW51bVByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8
TFBBUkFNPigmbWF0Y2hEYXRhKSwgMCk7CiAKLSAgICBSZWxlYXNlREMoMCwgaGRjKTsKLQogICAg
IGlmICghbWF0Y2hEYXRhLm1faGFzTWF0Y2hlZCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTQ4
NiwxMyArNDg0LDEyIEBAIHN0YXRpYyBIRk9OVCBjcmVhdGVHRElGb250KGNvbnN0IEF0b21pY1N0
cmluZyYgZmFtaWx5LCBMT05HIGRlc2lyZWRXZWlnaHQsIGJvb2wKICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMg
ZGMoMCk7CiAgICAgU2F2ZURDKGRjKTsKICAgICBTZWxlY3RPYmplY3QoZGMsIHJlc3VsdCk7CiAg
ICAgV0NIQVIgYWN0dWFsTmFtZVtMRl9GQUNFU0laRV07CiAgICAgR2V0VGV4dEZhY2UoZGMsIExG
X0ZBQ0VTSVpFLCBhY3R1YWxOYW1lKTsKICAgICBSZXN0b3JlREMoZGMsIC0xKTsKLSAgICBSZWxl
YXNlREMoMCwgZGMpOwogCiAgICAgaWYgKHdjc2ljbXAobWF0Y2hEYXRhLm1fY2hvc2VuLmxmRmFj
ZU5hbWUsIGFjdHVhbE5hbWUpKSB7CiAgICAgICAgIERlbGV0ZU9iamVjdChyZXN1bHQpOwpAQCAt
NTM0LDcgKzUzMSw3IEBAIHN0YXRpYyBpbnQgQ0FMTEJBQ0sgdHJhaXRzSW5GYW1pbHlFbnVtUHJv
YyhDT05TVCBMT0dGT05UKiBsb2dGb250LCBDT05TVCBURVhUTUVUCiB9CiB2b2lkIEZvbnRDYWNo
ZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0
b3I8dW5zaWduZWQ+JiB0cmFpdHNNYXNrcykKIHsKLSAgICBIREMgaGRjID0gR2V0REMoMCk7Cisg
ICAgSFduZERDIGhkYygwKTsKIAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250Lmxm
Q2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKQEAgLTU0Niw4ICs1NDMsNiBAQCB2b2lkIEZvbnRD
YWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBW
ZWN0b3I8dW5zaWduZQogICAgIFRyYWl0c0luRmFtaWx5UHJvY0RhdGEgcHJvY0RhdGEoZmFtaWx5
TmFtZSk7CiAgICAgRW51bUZvbnRGYW1pbGllc0V4KGhkYywgJmxvZ0ZvbnQsIHRyYWl0c0luRmFt
aWx5RW51bVByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmcHJvY0RhdGEpLCAwKTsKICAg
ICBjb3B5VG9WZWN0b3IocHJvY0RhdGEubV90cmFpdHNNYXNrcywgdHJhaXRzTWFza3MpOwotCi0g
ICAgUmVsZWFzZURDKDAsIGhkYyk7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAK
aW5kZXggZDBiMzdiZGEzZTVmNmYzODZhZmVkNzU1NGQyOTc4MTA3YTM5NjVkYS4uNjk2YmVlNGI3
NjYxNGIxMmIyZjgzZTUwZjhjMjRlYWFhNTRiY2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi93aW4vSFduZERDV2luLmg+CiAKIHVzaW5nIHN0ZDo6bWluOwogCkBAIC01MSw3ICs1
Miw3IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoSEZPTlQgZm9udCwgZmxv
YXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxCiAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUo
b2JsaXF1ZSkKICAgICAsIG1fdXNlR0RJKHVzZUdESSkKIHsKLSAgICBIREMgaGRjID0gR2V0REMo
MCk7CisgICAgSFduZERDIGhkYygwKTsKICAgICBTYXZlREMoaGRjKTsKICAgICAKICAgICBTZWxl
Y3RPYmplY3QoaGRjLCBmb250KTsKQEAgLTcxLDcgKzcyLDYgQEAgRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShIRk9OVCBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wg
b2JsaXEKICAgICB9CiAKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7Ci0gICAgUmVsZWFzZURDKDAs
IGhkYyk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHAKaW5kZXgg
MmQ4ZjEzZTM2ZWRiZTE2MmZiODYwM2Q4MmQwZWQ2NDZhNjM3NTE0My4uYTAyNTU0MDgzNzc0ZDFj
NzZjYWQ1MzM4YjRlNTZmNjAxNDk0MDYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9I
V25kRENXaW4uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw3ICs1Niw3IEBAIHZv
aWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCiAgICAgbV9pc1N5c3RlbUZvbnQgPSBm
YWxzZTsKIAogICAgIGlmIChtX3BsYXRmb3JtRGF0YS51c2VHREkoKSkKLSAgICAgICByZXR1cm4g
aW5pdEdESUZvbnQoKTsKKyAgICAgICAgcmV0dXJuIGluaXRHRElGb250KCk7CiAKICAgICBDR0Zv
bnRSZWYgZm9udCA9IG1fcGxhdGZvcm1EYXRhLmNnRm9udCgpOwogICAgIGludCBpQXNjZW50ID0g
Q0dGb250R2V0QXNjZW50KGZvbnQpOwpAQCAtNjgsMTQgKzY5LDEzIEBAIHZvaWQgU2ltcGxlRm9u
dERhdGE6OnBsYXRmb3JtSW5pdCgpCiAgICAgZmxvYXQgZkxpbmVHYXAgPSBzY2FsZUVtVG9Vbml0
cyhpTGluZUdhcCwgdW5pdHNQZXJFbSkgKiBwb2ludFNpemU7CiAKICAgICBpZiAoIWlzQ3VzdG9t
Rm9udCgpKSB7Ci0gICAgICAgIEhEQyBkYyA9IEdldERDKDApOworICAgICAgICBIV25kREMgZGMo
MCk7CiAgICAgICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChkYywgbV9wbGF0Zm9y
bURhdGEuaGZvbnQoKSk7CiAgICAgICAgIGludCBmYWNlTGVuZ3RoID0gR2V0VGV4dEZhY2UoZGMs
IDAsIDApOwogICAgICAgICBWZWN0b3I8V0NIQVI+IGZhY2VOYW1lKGZhY2VMZW5ndGgpOwogICAg
ICAgICBHZXRUZXh0RmFjZShkYywgZmFjZUxlbmd0aCwgZmFjZU5hbWUuZGF0YSgpKTsKICAgICAg
ICAgbV9pc1N5c3RlbUZvbnQgPSAhd2NzY21wKGZhY2VOYW1lLmRhdGEoKSwgTCJMdWNpZGEgR3Jh
bmRlIik7CiAgICAgICAgIFNlbGVjdE9iamVjdChkYywgb2xkRm9udCk7Ci0gICAgICAgIFJlbGVh
c2VEQygwLCBkYyk7CiAKICAgICAgICAgZkFzY2VudCA9IGFzY2VudENvbnNpZGVyaW5nTWFjQXNj
ZW50SGFjayhmYWNlTmFtZS5kYXRhKCksIGZBc2NlbnQsIGZEZXNjZW50KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERh
dGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZv
bnREYXRhV2luLmNwcAppbmRleCBkZTY2ODdmNWM3YTgzMzM1YjEyOTRiZjBkOTQ5NDM2ZTA0ZmJl
YzRmLi42ODI2M2E2ZDIwNzc4NWU0NzgwMTcyMTc0NDRkZGMwNDc0MDcwMWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250
RGF0YVdpbi5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+
CiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi93aW4vSFduZERDV2luLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CkBAIC04OSw3ICs5MCw3IEBA
IHZvaWQgU2ltcGxlRm9udERhdGE6OmluaXRHRElGb250KCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgICBIREMgaGRjID0gR2V0REMoMCk7CisgICAgIEhXbmREQyBoZGMoMCk7CiAgICAg
IEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250
KCkpOwogICAgICBPVVRMSU5FVEVYVE1FVFJJQyBtZXRyaWNzOwogICAgICBHZXRPdXRsaW5lVGV4
dE1ldHJpY3MoaGRjLCBzaXplb2YobWV0cmljcyksICZtZXRyaWNzKTsKQEAgLTExNSw5ICsxMTYs
NiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjppbml0R0RJRm9udCgpCiAgICAgIG1fZm9udE1ldHJp
Y3Muc2V0VW5pdHNQZXJFbShtZXRyaWNzLm90bUVNU3F1YXJlKTsKIAogICAgICBTZWxlY3RPYmpl
Y3QoaGRjLCBvbGRGb250KTsKLSAgICAgUmVsZWFzZURDKDAsIGhkYyk7Ci0KLSAgICAgcmV0dXJu
OwogfQogCiB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUNoYXJXaWR0aEluaXQoKQpAQCAt
MTg1LDggKzE4Myw4IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVycyhj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkgY29uCiAgICAgaWYgKCFsYW5nRm9u
dExpbmspCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhEQyBkYyA9IEdldERDKDApOwot
ICAgIAorICAgIEhXbmREQyBkYygwKTsKKwogICAgIERXT1JEIGFjcENvZGVQYWdlczsKICAgICBs
YW5nRm9udExpbmstPkNvZGVQYWdlVG9Db2RlUGFnZXMoQ1BfQUNQLCAmYWNwQ29kZVBhZ2VzKTsK
IApAQCAtMjAzLDggKzIwMSw2IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkgY29uCiAgICAgICAgIG9m
ZnNldCArPSBudW1DaGFyYWN0ZXJzUHJvY2Vzc2VkOwogICAgIH0KIAotICAgIFJlbGVhc2VEQygw
LCBkYyk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDcgKzIxMiw3IEBAIHZvaWQg
U2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKICAgICB9CiAKICAgICAvLyBURVhUTUVU
UklDUyBoYXZlIHRoaXMuICBTZXQgbV90cmVhdEFzRml4ZWRQaXRjaCBiYXNlZCBvZmYgdGhhdC4K
LSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgU2F2ZURDKGRj
KTsKICAgICBTZWxlY3RPYmplY3QoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwogCkBAIC0y
MjcsMTIgKzIyMywxMSBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRjaCgpCiAg
ICAgbV90cmVhdEFzRml4ZWRQaXRjaCA9ICgodG0udG1QaXRjaEFuZEZhbWlseSAmIFRNUEZfRklY
RURfUElUQ0gpID09IDApOwogCiAgICAgUmVzdG9yZURDKGRjLCAtMSk7Ci0gICAgUmVsZWFzZURD
KDAsIGRjKTsKIH0KIAogRmxvYXRSZWN0IFNpbXBsZUZvbnREYXRhOjpib3VuZHNGb3JHRElHbHlw
aChHbHlwaCBnbHlwaCkgY29uc3QKIHsKLSAgICBIREMgaGRjID0gR2V0REMoMCk7CisgICAgSFdu
ZERDIGhkYygwKTsKICAgICBTZXRHcmFwaGljc01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CiAgICAg
SEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgbV9wbGF0Zm9ybURhdGEuaGZvbnQo
KSk7CiAgICAgCkBAIC0yNDEsNyArMjM2LDYgQEAgRmxvYXRSZWN0IFNpbXBsZUZvbnREYXRhOjpi
b3VuZHNGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICBHZXRHbHlwaE91dGxpbmUo
aGRjLCBnbHlwaCwgR0dPX01FVFJJQ1MgfCBHR09fR0xZUEhfSU5ERVgsICZnZGlNZXRyaWNzLCAw
LCAwLCAmaWRlbnRpdHkpOwogICAgIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwot
ICAgIFJlbGVhc2VEQygwLCBoZGMpOwogICAgIAogICAgIHJldHVybiBGbG9hdFJlY3QoZ2RpTWV0
cmljcy5nbXB0R2x5cGhPcmlnaW4ueCwgLWdkaU1ldHJpY3MuZ21wdEdseXBoT3JpZ2luLnksCiAg
ICAgICAgIGdkaU1ldHJpY3MuZ21CbGFja0JveFggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQsIGdk
aU1ldHJpY3MuZ21CbGFja0JveFkpOyAKQEAgLTI0OSw3ICsyNDMsNyBAQCBGbG9hdFJlY3QgU2lt
cGxlRm9udERhdGE6OmJvdW5kc0ZvckdESUdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIAog
ZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0
CiB7Ci0gICAgSERDIGhkYyA9IEdldERDKDApOworICAgIEhXbmREQyBoZGMoMCk7CiAgICAgU2V0
R3JhcGhpY3NNb2RlKGhkYywgR01fQURWQU5DRUQpOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNl
bGVjdE9iamVjdChoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwogCkBAIC0yNTgsNyArMjUy
LDYgQEAgZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0CiAgICAgR2V0R2x5cGhPdXRsaW5lKGhkYywgZ2x5cGgsIEdHT19NRVRSSUNTIHwgR0dP
X0dMWVBIX0lOREVYLCAmZ2RpTWV0cmljcywgMCwgMCwgJmlkZW50aXR5KTsKIAogICAgIFNlbGVj
dE9iamVjdChoZGMsIG9sZEZvbnQpOwotICAgIFJlbGVhc2VEQygwLCBoZGMpOwogCiAgICAgcmV0
dXJuIGdkaU1ldHJpY3MuZ21DZWxsSW5jWCArIG1fc3ludGhldGljQm9sZE9mZnNldDsKIH0KQEAg
LTI3MSwxMiArMjY0LDExIEBAIFNDUklQVF9GT05UUFJPUEVSVElFUyogU2ltcGxlRm9udERhdGE6
OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKCkgY29uc3QKICAgICAgICAgbV9zY3JpcHRGb250UHJvcGVy
dGllcy0+Y0J5dGVzID0gc2l6ZW9mKFNDUklQVF9GT05UUFJPUEVSVElFUyk7CiAgICAgICAgIEhS
RVNVTFQgcmVzdWx0ID0gU2NyaXB0R2V0Rm9udFByb3BlcnRpZXMoMCwgc2NyaXB0Q2FjaGUoKSwg
bV9zY3JpcHRGb250UHJvcGVydGllcyk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gRV9QRU5ESU5H
KSB7Ci0gICAgICAgICAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICAgICAgICAgIEhXbmREQyBk
YygwKTsKICAgICAgICAgICAgIFNhdmVEQyhkYyk7CiAgICAgICAgICAgICBTZWxlY3RPYmplY3Qo
ZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwogICAgICAgICAgICAgU2NyaXB0R2V0Rm9udFBy
b3BlcnRpZXMoZGMsIHNjcmlwdENhY2hlKCksIG1fc2NyaXB0Rm9udFByb3BlcnRpZXMpOwogICAg
ICAgICAgICAgUmVzdG9yZURDKGRjLCAtMSk7Ci0gICAgICAgICAgICBSZWxlYXNlREMoMCwgZGMp
OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBtX3NjcmlwdEZvbnRQcm9wZXJ0aWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmli
ZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Vu
aXNjcmliZUNvbnRyb2xsZXIuY3BwCmluZGV4IDY3ZTM0YTcxZDg2ZTk2ZDlmNGQ1NzhiYjc5MWQ1
MDQ1MGE0ZDgxNGQuLjVjMThiZDRhZDE2MjhmZDBlMzJiMzYzN2M3ZWE2NDBjOGJhNmM1YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
VW5pc2NyaWJlQ29udHJvbGxlci5jcHAKQEAgLTI5LDYgKzI5LDkgQEAKICNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi93aW4vSFduZERDV2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKQEAgLTI0OCwxMyArMjUxLDEyIEBAIGJvb2wgVW5pc2NyaWJlQ29udHJvbGxlcjo6c2hh
cGVBbmRQbGFjZUl0ZW0oY29uc3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBpLCBjb25zdCBTCiAgICAg
aWYgKHBsYWNlUmVzdWx0ID09IEVfUEVORElORykgewogICAgICAgICAvLyBUaGUgc2NyaXB0IGNh
Y2hlIGlzbid0IHByaW1lZCB3aXRoIGVub3VnaCBpbmZvIHlldC4gIFdlIG5lZWQgdG8gc2VsZWN0
IG91ciBIRk9OVCBpbnRvCiAgICAgICAgIC8vIGEgREMgYW5kIHBhc3MgdGhlIERDIGluIHRvIFNj
cmlwdFBsYWNlLgotICAgICAgICBIREMgaGRjID0gR2V0REMoMCk7CisgICAgICAgIEhXbmREQyBo
ZGMoMCk7CiAgICAgICAgIEhGT05UIGhmb250ID0gZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmhm
b250KCk7CiAgICAgICAgIEhGT05UIG9sZEZvbnQgPSAoSEZPTlQpU2VsZWN0T2JqZWN0KGhkYywg
aGZvbnQpOwogICAgICAgICBwbGFjZVJlc3VsdCA9IFNjcmlwdFBsYWNlKGhkYywgZm9udERhdGEt
PnNjcmlwdENhY2hlKCksIGdseXBocy5kYXRhKCksIGdseXBocy5zaXplKCksIHZpc3VhbEF0dHJp
YnV0ZXMuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpdGVtLmEs
IGFkdmFuY2VzLmRhdGEoKSwgb2Zmc2V0cy5kYXRhKCksIDApOwogICAgICAgICBTZWxlY3RPYmpl
Y3QoaGRjLCBvbGRGb250KTsKLSAgICAgICAgUmVsZWFzZURDKDAsIGhkYyk7CiAgICAgfQogICAg
IAogICAgIGlmIChGQUlMRUQocGxhY2VSZXN1bHQpIHx8IGdseXBocy5pc0VtcHR5KCkpCkBAIC0z
ODEsNiArMzgzLDcgQEAgYm9vbCBVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hh
ciogc3RyLCBpbnQgbGVuLCBTQ1JJUFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVjdG9yPFNDUklQVF9WSVNBVFRSPiYgdmlzdWFsQXR0cmlidXRlcykK
IHsKICAgICBIREMgaGRjID0gMDsKKyAgICBPd25QdHI8SFduZERDPiBvd25IV25kREM7CiAgICAg
SEZPTlQgb2xkRm9udCA9IDA7CiAgICAgSFJFU1VMVCBzaGFwZVJlc3VsdCA9IEVfUEVORElORzsK
ICAgICBpbnQgZ2x5cGhDb3VudCA9IDA7CkBAIC0zOTEsNyArMzk0LDggQEAgYm9vbCBVbmlzY3Jp
YmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuLCBTQ1JJUFRfSVRF
TSBpdGVtLCBjb24KICAgICAgICAgICAgIC8vIFRoZSBzY3JpcHQgY2FjaGUgaXNuJ3QgcHJpbWVk
IHdpdGggZW5vdWdoIGluZm8geWV0LiAgV2UgbmVlZCB0byBzZWxlY3Qgb3VyIEhGT05UIGludG8K
ICAgICAgICAgICAgIC8vIGEgREMgYW5kIHBhc3MgdGhlIERDIGluIHRvIFNjcmlwdFNoYXBlLgog
ICAgICAgICAgICAgQVNTRVJUKCFoZGMpOwotICAgICAgICAgICAgaGRjID0gR2V0REMoMCk7Cisg
ICAgICAgICAgICBvd25IV25kREMgPSBhZG9wdFB0cihuZXcgSFduZERDKDApKTsKKyAgICAgICAg
ICAgIGhkYyA9ICpvd25IV25kREM7CiAgICAgICAgICAgICBIRk9OVCBoZm9udCA9IGZvbnREYXRh
LT5wbGF0Zm9ybURhdGEoKS5oZm9udCgpOwogICAgICAgICAgICAgb2xkRm9udCA9IChIRk9OVClT
ZWxlY3RPYmplY3QoaGRjLCBoZm9udCk7CiAgICAgICAgIH0gZWxzZSBpZiAoc2hhcGVSZXN1bHQg
PT0gRV9PVVRPRk1FTU9SWSkgewpAQCAtNDAxLDEwICs0MDUsOCBAQCBib29sIFVuaXNjcmliZUNv
bnRyb2xsZXI6OnNoYXBlKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4sIFNDUklQVF9JVEVNIGl0
ZW0sIGNvbgogICAgICAgICB9CiAgICAgfSB3aGlsZSAoc2hhcGVSZXN1bHQgPT0gRV9QRU5ESU5H
IHx8IHNoYXBlUmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwogCi0gICAgaWYgKGhkYykgeworICAg
IGlmIChoZGMpCiAgICAgICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwotICAgICAgICBS
ZWxlYXNlREMoMCwgaGRjKTsKLSAgICB9CiAKICAgICBpZiAoRkFJTEVEKHNoYXBlUmVzdWx0KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0N1cnNvcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29y
V2luLmNwcAppbmRleCA1NDRiOWE3N2JmNDYwNjM4MGY3ZGJjOGMzOWIyYmEzMDM1OTA2N2NlLi43
M2E3OTRkNmIzY2RiMWI4ZGU0NDBhYzc3ZjhiMzFjZGEzZmMxNzRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL3dpbi9IV25kRENXaW4uaD4KIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIApAQCAtNDksNyAr
NTAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJzb3I+IGNyZWF0ZVNoYXJlZEN1cnNv
cihJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaAogICAgIHN0YXRpYyBib29sIGRvQWxwaGEg
PSB3aW5kb3dzVmVyc2lvbigpID49IFdpbmRvd3NYUDsKICAgICBCaXRtYXBJbmZvIGN1cnNvcklt
YWdlID0gQml0bWFwSW5mbzo6Y3JlYXRlKEludFNpemUoaW1nLT53aWR0aCgpLCBpbWctPmhlaWdo
dCgpKSk7CiAKLSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAg
SERDIHdvcmtpbmdEQyA9IENyZWF0ZUNvbXBhdGlibGVEQyhkYyk7CiAgICAgaWYgKGRvQWxwaGEp
IHsKICAgICAgICAgT3duUHRyPEhCSVRNQVA+IGhDdXJzb3IgPSBhZG9wdFB0cihDcmVhdGVESUJT
ZWN0aW9uKGRjLCAoQklUTUFQSU5GTyAqKSZjdXJzb3JJbWFnZSwgRElCX1JHQl9DT0xPUlMsIDAs
IDAsIDApKTsKQEAgLTExMiw3ICsxMTMsNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRDdXJz
b3I+IGNyZWF0ZVNoYXJlZEN1cnNvcihJbWFnZSogaW1nLCBjb25zdCBJbnRQb2ludCYgaAogICAg
ICAgICBEZWxldGVEQyhhbmRNYXNrREMpOwogICAgIH0KICAgICBEZWxldGVEQyh3b3JraW5nREMp
OwotICAgIFJlbGVhc2VEQygwLCBkYyk7CiAKICAgICByZXR1cm4gaW1wbC5yZWxlYXNlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRl
eCBiYzQ1ZTIyYzMxODRjZjNiODI4Yjg3YzMxZDgzNTk0YmRlYzE1MDFkLi5iYjJmOGIyZDE3MDQ2
ODc2YjVjZTAzNWNlNDQ0ODgyNDMzYzM0YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJJ
bWFnZS5oIgogI2luY2x1ZGUgIlJldGFpblB0ci5oIgogCisjaW5jbHVkZSA8d3RmL3dpbi9IV25k
RENXaW4uaD4KKwogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KIAogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTg5LDcgKzkxLDcgQEAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJh
Z0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplIHNjYWxlKQogICAgIEludFNpemUg
c3JjU2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2UpOwogICAgIEludFNpemUgZHN0U2l6ZShzdGF0
aWNfY2FzdDxpbnQ+KHNyY1NpemUud2lkdGgoKSAqIHNjYWxlLndpZHRoKCkpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHNyY1NpemUuaGVpZ2h0KCkgKiBzY2FsZS5oZWlnaHQoKSkpOwogICAgIEhCSVRNQVAg
aGJtcCA9IDA7Ci0gICAgSERDIGRjID0gR2V0REMoMCk7CisgICAgSFduZERDIGRjKDApOwogICAg
IEhEQyBkc3REQyA9IENyZWF0ZUNvbXBhdGlibGVEQyhkYyk7CiAgICAgaWYgKCFkc3REQykKICAg
ICAgICAgZ290byBleGl0OwpAQCAtMTE2LDE0ICsxMTgsMTMgQEAgZXhpdDoKICAgICAgICAgaGJt
cCA9IGltYWdlOwogICAgIGlmIChkc3REQykKICAgICAgICAgRGVsZXRlREMoZHN0REMpOwotICAg
IFJlbGVhc2VEQygwLCBkYyk7CiAgICAgcmV0dXJuIGhibXA7CiB9CiAgICAgCiBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcpCiB7CiAgICAgSEJJVE1BUCBo
Ym1wID0gMDsKLSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAg
SERDIHdvcmtpbmdEQyA9IENyZWF0ZUNvbXBhdGlibGVEQyhkYyk7CiAgICAgQ0dDb250ZXh0UmVm
IGRyYXdDb250ZXh0ID0gMDsKICAgICBpZiAoIXdvcmtpbmdEQykKQEAgLTE1NSw3ICsxNTYsNiBA
QCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcpCiBleGl0
OgogICAgIGlmICh3b3JraW5nREMpCiAgICAgICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7Ci0gICAg
UmVsZWFzZURDKDAsIGRjKTsKICAgICByZXR1cm4gaGJtcDsKIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggZjg1OGIwN2YxNmYzNjNl
MWU1ZmJmZjk5NjljOWE3NjQ5YmI4MDFhMy4uY2Y0NDlhNzhhY2NkOGI4NmZhYzAzM2VlZmI3M2Y0
MjNkMzA5NDU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdp
bi5jcHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZVRleHRSZW5kZXJlci5oIgogCisjaW5jbHVkZSA8d3RmL3dpbi9IV25kRENXaW4uaD4K
KwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTgzLDE4
ICsxODUsMTUgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZyYW1lKiBmcmEKICAgICAvLyBXZSBub3cga25vdyBo
b3cgYmlnIHRoZSBpbWFnZSBuZWVkcyB0byBiZSwgc28gd2UgY3JlYXRlIGFuZAogICAgIC8vIGZp
bGwgdGhlIGJhY2tncm91bmQKICAgICBIQklUTUFQIGltYWdlID0gMDsKLSAgICBIREMgZGMgPSBH
ZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgSERDIHdvcmtpbmdEQyA9IENyZWF0ZUNv
bXBhdGlibGVEQyhkYyk7Ci0gICAgaWYgKCF3b3JraW5nREMpIHsKLSAgICAgICAgUmVsZWFzZURD
KDAsIGRjKTsKKyAgICBpZiAoIXdvcmtpbmdEQykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQog
CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNvbnRleHRSZWY7CiAgICAgaW1hZ2UgPSBh
bGxvY0ltYWdlKHdvcmtpbmdEQywgaW1hZ2VTaXplLCAmY29udGV4dFJlZik7CiAgICAgaWYgKCFp
bWFnZSkgewogICAgICAgICBEZWxldGVEQyh3b3JraW5nREMpOwotICAgICAgICBSZWxlYXNlREMo
MCwgZGMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgICAgIApAQCAtMjI1LDcgKzIy
NCw2IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpbkxhYmVsLCBGcmFtZSogZnJhCiAKICAgICBkZWFsbG9jQ29udGV4dChjb250
ZXh0UmVmKTsKICAgICBEZWxldGVEQyh3b3JraW5nREMpOwotICAgIFJlbGVhc2VEQygwLCBkYyk7
CiAgICAgcmV0dXJuIGltYWdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKaW5kZXggZDc2OGEzZDUzZmJjNzZmNzQ3OTg1ODJiMzJmZjU3ZmQ4
NGMwZjIzMi4uMzAzOWJiNTI3Y2NlZTE5MDY4NTE4YjA0NzljYWU0YTk3NTEyZDVmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgogI2luY2x1ZGUgIm1h
cmt1cC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvd2lu
L0hXbmREQ1dpbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIyMyw3ICsyMjQsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYpCiAKICAgICBjbGVhcigpOwogCi0gICAgSERDIGRjID0gR2V0REMoMCk7Cisg
ICAgSFduZERDIGRjKDApOwogICAgIEhEQyBjb21wYXRpYmxlREMgPSBDcmVhdGVDb21wYXRpYmxl
REMoMCk7CiAgICAgSERDIHNvdXJjZURDID0gQ3JlYXRlQ29tcGF0aWJsZURDKDApOwogICAgIE93
blB0cjxIQklUTUFQPiByZXN1bHRCaXRtYXAgPSBhZG9wdFB0cihDcmVhdGVDb21wYXRpYmxlQml0
bWFwKGRjLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKSk7CkBAIC0yNDMsNyArMjQ0
LDYgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmKQogICAgIFNlbGVjdE9iamVjdChjb21wYXRpYmxlREMsIG9sZEJpdG1h
cCk7CiAgICAgRGVsZXRlREMoc291cmNlREMpOwogICAgIERlbGV0ZURDKGNvbXBhdGlibGVEQyk7
Ci0gICAgUmVsZWFzZURDKDAsIGRjKTsKIAogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25l
cikpIHsKICAgICAgICAgOjpTZXRDbGlwYm9hcmREYXRhKENGX0JJVE1BUCwgcmVzdWx0Qml0bWFw
LmxlYWtQdHIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9w
dXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4u
Y3BwCmluZGV4IDA5N2ZjODIzMTU0MDNhNjlkODE5NjJlOTdlZWRmYTc0MzQwNmUxMTMuLjFiYWVm
ZjdiNzdkMjg4NzVlYmFlMDk3Yzk4OWUwOTY4ZTE0MTBiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC00Miw2ICs0Miw5IEBACiAjaW5jbHVk
ZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUluc3RhbmNlSGFuZGxlLmgiCisKKyNpbmNsdWRlIDx3dGYvd2luL0hXbmREQ1dpbi5oPgor
CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CiAjaWYgT1MoV0lO
Q0UpCkBAIC01NjYsNyArNTY5LDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
bV9EQykgewotICAgICAgICBtX0RDID0gOjpDcmVhdGVDb21wYXRpYmxlREMoOjpHZXREQyhtX3Bv
cHVwKSk7CisgICAgICAgIG1fREMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyhIV25kREMobV9wb3B1
cCkpOwogICAgICAgICBpZiAoIW1fREMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NjYwLDEyICs2NjMsMTQgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAgICAgaWYgKG1fc2Nyb2xsYmFyKQogICAgICAgICBtX3Nj
cm9sbGJhci0+cGFpbnQoJmNvbnRleHQsIGRhbWFnZVJlY3QpOwogCi0gICAgSERDIGxvY2FsREMg
PSBoZGMgPyBoZGMgOiA6OkdldERDKG1fcG9wdXApOworICAgIEhEQyBsb2NhbERDID0gaGRjOwor
ICAgIE93blB0cjxIV25kREM+IGhXbmREQzsKKyAgICBpZiAoIWxvY2FsREMpIHsKKyAgICAgICAg
aFduZERDID0gYWRvcHRQdHIobmV3IEhXbmREQyhtX3BvcHVwKSk7CisgICAgICAgIGxvY2FsREMg
PSAqaFduZERDOworICAgIH0KIAogICAgIDo6Qml0Qmx0KGxvY2FsREMsIGRhbWFnZVJlY3QueCgp
LCBkYW1hZ2VSZWN0LnkoKSwgZGFtYWdlUmVjdC53aWR0aCgpLCBkYW1hZ2VSZWN0LmhlaWdodCgp
LCBtX0RDLCBkYW1hZ2VSZWN0LngoKSwgZGFtYWdlUmVjdC55KCksIFNSQ0NPUFkpOwotCi0gICAg
aWYgKCFoZGMpCi0gICAgICAgIDo6UmVsZWFzZURDKG1fcG9wdXAsIGxvY2FsREMpOwogfQogCiBp
bnQgUG9wdXBNZW51V2luOjpzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcAppbmRleCAzMDQwNWM2N2RlYjQzNmNmYWM0NGUzNTZhMWFhZGQ1OTExMDU5ZGQyLi4w
YzcwYWIxMDg5ZTBjMjgyNjZmZDU1ODQ0NzRiY2ZkNjM2NWIwMDUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtNDIsNyArNDIsMTAg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d2luZG93c3guaD4K
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9IV25kRENXaW4u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
NDgwLDE0ICs0ODMsMTggQEAgc3RhdGljIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSkK
ICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0i
IDogIiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKIH0KIAorc3RhdGljIFBhc3NPd25QdHI8SERDPiBj
cmVhdGVDb21wYXRpYmxlRENGb3JXaW5kb3coSFdORCBod25kKQoreworICAgIEh3bmREQyB3aW5k
b3dEQyhod25kKTsKKyAgICByZXR1cm4gYWRvcHRQdHIoQ3JlYXRlQ29tcGF0aWJsZURDKHdpbmRv
d0RDKSk7Cit9CisKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdygpCiB7Ci0g
ICAgSERDIHdpbmRvd0RDID0gR2V0REMobV9odWRXaW5kb3cpOwotICAgIEhEQyBiaXRtYXBEQyA9
IENyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQyk7Ci0gICAgOjpSZWxlYXNlREMobV9odWRXaW5k
b3csIHdpbmRvd0RDKTsKLSAgICBIR0RJT0JKIG9sZEJpdG1hcCA9IFNlbGVjdE9iamVjdChiaXRt
YXBEQywgbV9iaXRtYXAuZ2V0KCkpOworICAgIE93blB0cjxIREM+IGJpdG1hcERDID0gY3JlYXRl
Q29tcGF0aWJsZURDRm9yV2luZG93KG1faHVkV2luZG93KTsKKyAgICBIR0RJT0JKIG9sZEJpdG1h
cCA9IFNlbGVjdE9iamVjdChiaXRtYXBEQy5nZXQoKSwgbV9iaXRtYXAuZ2V0KCkpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0IGNvbnRleHQoYml0bWFwREMsIHRydWUpOworICAgIEdyYXBoaWNzQ29u
dGV4dCBjb250ZXh0KGJpdG1hcERDLmdldCgpLCB0cnVlKTsKIAogICAgIGNvbnRleHQuc2F2ZSgp
OwogCkBAIC01NDksMTIgKzU1NiwxMSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OmRyYXcoKQogICAgIFNJWkUgc2l6ZSA9IHsgd2luZG93V2lkdGgsIHdpbmRvd0hlaWdodCB9Owog
ICAgIFBPSU5UIHNvdXJjZVBvaW50ID0gezAsIDB9OwogICAgIFBPSU5UIGRlc3RQb2ludCA9IHsg
bV9odWRQb3NpdGlvbi54KCksIG1faHVkUG9zaXRpb24ueSgpIH07Ci0gICAgQk9PTCByZXN1bHQg
PSBVcGRhdGVMYXllcmVkV2luZG93KG1faHVkV2luZG93LCAwLCAmZGVzdFBvaW50LCAmc2l6ZSwg
Yml0bWFwREMsICZzb3VyY2VQb2ludCwgMCwgJmJsZW5kRnVuY3Rpb24sIFVMV19BTFBIQSk7Cisg
ICAgQk9PTCByZXN1bHQgPSBVcGRhdGVMYXllcmVkV2luZG93KG1faHVkV2luZG93LCAwLCAmZGVz
dFBvaW50LCAmc2l6ZSwgYml0bWFwREMuZ2V0KCksICZzb3VyY2VQb2ludCwgMCwgJmJsZW5kRnVu
Y3Rpb24sIFVMV19BTFBIQSk7CiAKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAotICAgIDo6U2Vs
ZWN0T2JqZWN0KGJpdG1hcERDLCBvbGRCaXRtYXApOwotICAgIDo6RGVsZXRlREMoYml0bWFwREMp
OworICAgIDo6U2VsZWN0T2JqZWN0KGJpdG1hcERDLmdldCgpLCBvbGRCaXRtYXApOwogfQogCiBM
UkVTVUxUIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omh1ZFduZFByb2MoSFdORCB3bmQsIFVJ
TlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJJY29uRGF0YWJhc2UuY3BwCmluZGV4IGQ4MTdmNjk3NWY2YWU1NmZlZmZhNzVkZTNlMzgyMjM1
ZDEzZjA1MzMuLjA2Zjk5ZjQyOGFkNWFmMWNhZTdjODc0OGMzZTE2Y2QwMmNiMGRjODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9I
V25kRENXaW4uaD4KICNpbmNsdWRlICJzaGxvYmouaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0yODQsMTEgKzI4NSw4IEBAIEhCSVRNQVAgY3JlYXRlRElCKExQU0laRSBzaXplKQog
ewogICAgIEJpdG1hcEluZm8gYm1JbmZvID0gQml0bWFwSW5mbzo6Y3JlYXRlKEludFNpemUoKnNp
emUpKTsKIAotICAgIEhEQyBkYyA9IEdldERDKDApOwotICAgIEhCSVRNQVAgcmVzdWx0ID0gQ3Jl
YXRlRElCU2VjdGlvbihkYywgJmJtSW5mbywgRElCX1JHQl9DT0xPUlMsIDAsIDAsIDApOwotICAg
IFJlbGVhc2VEQygwLCBkYyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIEhXbmREQyBkYygw
KTsKKyAgICByZXR1cm4gQ3JlYXRlRElCU2VjdGlvbihkYywgJmJtSW5mbywgRElCX1JHQl9DT0xP
UlMsIDAsIDAsIDApOwogfQogCiBIQklUTUFQIFdlYkljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVT
aGFyZWRCaXRtYXAoTFBTSVpFIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJOb2RlSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYk5vZGVIaWdobGlnaHQu
Y3BwCmluZGV4IDU5NTI3MjNjZmJlODUzN2U3ZDk4MjEzNDcxOGM3OTI4ZGVhMjIxMGEuLjAzMWFl
NjZjMmRkZDY1MmE3N2FkMTAzZTNlYjk2Njg0YWQ4NTQ5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYk5vZGVIaWdobGlnaHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Yk5vZGVIaWdobGlnaHQuY3BwCkBAIC0zNiw4ICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9IV25kRENX
aW4uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTEzNCw3ICsxMzYsNyBAQCB2
b2lkIFdlYk5vZGVIaWdobGlnaHQ6OnVwZGF0ZSgpCiB7CiAgICAgQVNTRVJUKG1fb3ZlcmxheSk7
CiAKLSAgICBIREMgaGRjID0gOjpDcmVhdGVDb21wYXRpYmxlREMoOjpHZXREQyhtX292ZXJsYXkp
KTsKKyAgICBPd25QdHI8SERDPiBoZGMgPSBhZG9wdFB0cig6OkNyZWF0ZUNvbXBhdGlibGVEQyhI
d25kREMobV9vdmVybGF5KSkpOwogICAgIGlmICghaGRjKQogICAgICAgICByZXR1cm47CiAKQEAg
LTE1MSwxMiArMTUzLDEyIEBAIHZvaWQgV2ViTm9kZUhpZ2hsaWdodDo6dXBkYXRlKCkKICAgICBC
aXRtYXBJbmZvIGJpdG1hcEluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGVCb3R0b21VcChJbnRTaXpl
KHNpemUpKTsKIAogICAgIHZvaWQqIHBpeGVscyA9IDA7Ci0gICAgT3duUHRyPEhCSVRNQVA+IGhi
bXAgPSBhZG9wdFB0cig6OkNyZWF0ZURJQlNlY3Rpb24oaGRjLCAmYml0bWFwSW5mbywgRElCX1JH
Ql9DT0xPUlMsICZwaXhlbHMsIDAsIDApKTsKKyAgICBPd25QdHI8SEJJVE1BUD4gaGJtcCA9IGFk
b3B0UHRyKDo6Q3JlYXRlRElCU2VjdGlvbihoZGMuZ2V0KCksICZiaXRtYXBJbmZvLCBESUJfUkdC
X0NPTE9SUywgJnBpeGVscywgMCwgMCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaGJtcCwg
Ijo6Q3JlYXRlRElCU2VjdGlvbiBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6OkdldExhc3RFcnJv
cigpKTsKIAotICAgIDo6U2VsZWN0T2JqZWN0KGhkYywgaGJtcC5nZXQoKSk7CisgICAgOjpTZWxl
Y3RPYmplY3QoaGRjLmdldCgpLCBoYm1wLmdldCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBj
b250ZXh0KGhkYyk7CisgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoaGRjLmdldCgpKTsKIAog
ICAgIG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRy
YXdIaWdobGlnaHQoY29udGV4dCk7CiAKQEAgLTE3NCw5ICsxNzYsNyBAQCB2b2lkIFdlYk5vZGVI
aWdobGlnaHQ6OnVwZGF0ZSgpCiAgICAgZHN0UG9pbnQueCA9IHdlYlZpZXdSZWN0LmxlZnQ7CiAg
ICAgZHN0UG9pbnQueSA9IHdlYlZpZXdSZWN0LnRvcDsKIAotICAgIDo6VXBkYXRlTGF5ZXJlZFdp
bmRvdyhtX292ZXJsYXksIDo6R2V0REMoMCksICZkc3RQb2ludCwgJnNpemUsIGhkYywgJnNyY1Bv
aW50LCAwLCAmYmYsIFVMV19BTFBIQSk7Ci0KLSAgICA6OkRlbGV0ZURDKGhkYyk7CisgICAgOjpV
cGRhdGVMYXllcmVkV2luZG93KG1fb3ZlcmxheSwgSFduZERDKDApLCAmZHN0UG9pbnQsICZzaXpl
LCBoZGMsICZzcmNQb2ludCwgMCwgJmJmLCBVTFdfQUxQSEEpOwogfQogCiB2b2lkIFdlYk5vZGVI
aWdobGlnaHQ6OnBsYWNlQmVoaW5kV2luZG93KEhXTkQgd2luZG93KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAppbmRleCA1N2QzNDU4MjE0OWJmMjBiYTViYjA1MDg2MDExMjVlNzhmNjVkYjU3Li4yNTg4OTYy
N2MwZDQ4NzEyYmMwZjllYjAwMmNkMTgyZjRmMjg5YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApA
QCAtMTM3LDYgKzEzNyw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRj
YXN0ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9IV25kRENXaW4uaD4KIAogI2lmIEVOQUJM
RShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlv
bkNvbnRyb2xsZXIuaD4KQEAgLTg2Miw3ICs4NjUsNyBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJh
Y2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgaW50IGR4LCBpbnQgZHksIGNvbnN0IElu
dAogICAgIEhSR04gdXBkYXRlUmVnaW9uID0gOjpDcmVhdGVSZWN0UmduKDAsIDAsIDAsIDApOwog
CiAgICAgLy8gQ29sbGVjdCBvdXIgZGV2aWNlIGNvbnRleHQgaW5mbyBhbmQgc2VsZWN0IHRoZSBi
aXRtYXAgdG8gc2Nyb2xsLgotICAgIEhEQyB3aW5kb3dEQyA9IDo6R2V0REMobV92aWV3V2luZG93
KTsKKyAgICBIV25kREMgd2luZG93REMobV92aWV3V2luZG93KTsKICAgICBIREMgYml0bWFwREMg
PSA6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQyk7CiAgICAgSEdESU9CSiBvbGRCaXRtYXAg
PSA6OlNlbGVjdE9iamVjdChiaXRtYXBEQywgbV9iYWNraW5nU3RvcmVCaXRtYXAtPmhhbmRsZSgp
KTsKICAgICAKQEAgLTg4OCw3ICs4OTEsNiBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdT
dG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgaW50IGR4LCBpbnQgZHksIGNvbnN0IEludAogICAg
IC8vIENsZWFuIHVwLgogICAgIDo6U2VsZWN0T2JqZWN0KGJpdG1hcERDLCBvbGRCaXRtYXApOwog
ICAgIDo6RGVsZXRlREMoYml0bWFwREMpOwotICAgIDo6UmVsZWFzZURDKG1fdmlld1dpbmRvdywg
d2luZG93REMpOwogfQogCiB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUm
IG5ld1NpemUpCkBAIC05NTgsMTEgKzk2MCwxMSBAQCB2b2lkIFdlYlZpZXc6OnVwZGF0ZUJhY2tp
bmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGRjLCBib29sIGJhY2tpbmdTdG9yZQog
CiAgICAgTE9DQUxfR0RJX0NPVU5URVIoMCwgX19GVU5DVElPTl9fKTsKIAotICAgIEhEQyB3aW5k
b3dEQyA9IDA7CisgICAgT3duUHRyPEhXbmREQz4gd2luZG93REM7CiAgICAgSERDIGJpdG1hcERD
ID0gZGM7CiAgICAgSEdESU9CSiBvbGRCaXRtYXAgPSAwOwogICAgIGlmICghZGMpIHsKLSAgICAg
ICAgd2luZG93REMgPSA6OkdldERDKG1fdmlld1dpbmRvdyk7CisgICAgICAgIHdpbmRvd0RDID0g
YWRvcHRQdHIobmV3IEhXbmREQyhtX3ZpZXdXaW5kb3cpKTsKICAgICAgICAgYml0bWFwREMgPSA6
OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQyk7CiAgICAgICAgIG9sZEJpdG1hcCA9IDo6U2Vs
ZWN0T2JqZWN0KGJpdG1hcERDLCBtX2JhY2tpbmdTdG9yZUJpdG1hcC0+aGFuZGxlKCkpOwogICAg
IH0KQEAgLTk5Niw3ICs5OTgsNiBAQCB2b2lkIFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZShG
cmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGRjLCBib29sIGJhY2tpbmdTdG9yZQogICAgIGlmICgh
ZGMpIHsKICAgICAgICAgOjpTZWxlY3RPYmplY3QoYml0bWFwREMsIG9sZEJpdG1hcCk7CiAgICAg
ICAgIDo6RGVsZXRlREMoYml0bWFwREMpOwotICAgICAgICA6OlJlbGVhc2VEQyhtX3ZpZXdXaW5k
b3csIHdpbmRvd0RDKTsKICAgICB9CiAKICAgICBHZGlGbHVzaCgpOwpAQCAtMTAwOCw3ICsxMDA5
LDcgQEAgdm9pZCBXZWJWaWV3OjpwZXJmb3JtTGF5ZXJlZFdpbmRvd1VwZGF0ZSgpCiAgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZUJpdG1hcCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSERDIGhkY1Nj
cmVlbiA9IDo6R2V0REMobV92aWV3V2luZG93KTsKKyAgICBIV25kREMgaGRjU2NyZWVuKG1fdmll
d1dpbmRvdyk7CiAgICAgT3duUHRyPEhEQz4gaGRjTWVtID0gYWRvcHRQdHIoOjpDcmVhdGVDb21w
YXRpYmxlREMoaGRjU2NyZWVuKSk7CiAgICAgSEJJVE1BUCBoYm1PbGQgPSBzdGF0aWNfY2FzdDxI
QklUTUFQPig6OlNlbGVjdE9iamVjdChoZGNNZW0uZ2V0KCksIG1fYmFja2luZ1N0b3JlQml0bWFw
LT5oYW5kbGUoKSkpOwogCkBAIC0xMDI2LDcgKzEwMjcsNiBAQCB2b2lkIFdlYlZpZXc6OnBlcmZv
cm1MYXllcmVkV2luZG93VXBkYXRlKCkKICAgICA6OlVwZGF0ZUxheWVyZWRXaW5kb3cobV92aWV3
V2luZG93LCBoZGNTY3JlZW4sIDAsICZ3aW5kb3dTaXplLCBoZGNNZW0uZ2V0KCksICZsYXllclBv
cywgMCwgJmJsZW5kRnVuY3Rpb24sIFVMV19BTFBIQSk7CiAKICAgICA6OlNlbGVjdE9iamVjdCho
ZGNNZW0uZ2V0KCksIGhibU9sZCk7Ci0gICAgOjpSZWxlYXNlREMoMCwgaGRjU2NyZWVuKTsKIH0K
IAogdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpb25zKQpAQCAtMTEzMiwx
MyArMTEzMiwxNCBAQCB2b2lkIFdlYlZpZXc6OnBhaW50SW50b0JhY2tpbmdTdG9yZShGcmFtZVZp
ZXcqIGZyYW1lVmlldywgSERDIGJpdG1hcERDLCBjb25zdCBJbgogICAgIFJFQ1QgcmVjdCA9IGRp
cnR5UmVjdDsKIAogI2lmIEZMQVNIX0JBQ0tJTkdfU1RPUkVfUkVEUkFXCi0gICAgSERDIGRjID0g
OjpHZXREQyhtX3ZpZXdXaW5kb3cpOwotICAgIE93blB0cjxIQlJVU0g+IHllbGxvd0JydXNoKENy
ZWF0ZVNvbGlkQnJ1c2goUkdCKDI1NSwgMjU1LCAwKSkpOwotICAgIEZpbGxSZWN0KGRjLCAmcmVj
dCwgeWVsbG93QnJ1c2guZ2V0KCkpOwotICAgIEdkaUZsdXNoKCk7Ci0gICAgU2xlZXAoNTApOwot
ICAgIHBhaW50SW50b1dpbmRvdyhiaXRtYXBEQywgZGMsIGRpcnR5UmVjdCk7Ci0gICAgOjpSZWxl
YXNlREMobV92aWV3V2luZG93LCBkYyk7CisgICAgeworICAgICAgICBIV25kREMgZGMobV92aWV3
V2luZG93KTsKKyAgICAgICAgT3duUHRyPEhCUlVTSD4geWVsbG93QnJ1c2goQ3JlYXRlU29saWRC
cnVzaChSR0IoMjU1LCAyNTUsIDApKSk7CisgICAgICAgIEZpbGxSZWN0KGRjLCAmcmVjdCwgeWVs
bG93QnJ1c2guZ2V0KCkpOworICAgICAgICBHZGlGbHVzaCgpOworICAgICAgICBTbGVlcCg1MCk7
CisgICAgICAgIHBhaW50SW50b1dpbmRvdyhiaXRtYXBEQywgZGMsIGRpcnR5UmVjdCk7CisgICAg
fQogI2VuZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHQgZ2MoYml0bWFwREMsIG1fdHJhbnNwYXJl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRt
YXBXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBXaW4u
Y3BwCmluZGV4IGJmMjNkY2RmZjlhNjVlZGZkMWQwZDE3OWU0ODZhNmI4M2I3MGQyMzYuLmQ4ZjUw
NjZiNjAxY2ZhNmRmMjY4MzNmNDczOTcxYjM2NTYzNjRlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcFdpbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3dpbi9IV25kRENXaW4uaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM5LDEwICs0MCwxMCBAQCBIREMgU2hhcmVhYmxlQml0
bWFwOjp3aW5kb3dzQ29udGV4dCgpIGNvbnN0CiAgICAgaWYgKG1fd2luZG93c0NvbnRleHQpCiAg
ICAgICAgIHJldHVybiBtX3dpbmRvd3NDb250ZXh0LmdldCgpOwogCi0gICAgT3duUHRyPEhEQz4g
c2NyZWVuREMgPSBhZG9wdFB0cig6OkdldERDKDApKTsKKyAgICBIV25kREMgc2NyZWVuREMoMCk7
CiAgICAgQml0bWFwSW5mbyBibUluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGVCb3R0b21VcChtX3Np
emUpOwogCi0gICAgbV93aW5kb3dzQ29udGV4dCA9IGFkb3B0UHRyKDo6Q3JlYXRlQ29tcGF0aWJs
ZURDKHNjcmVlbkRDLmdldCgpKSk7CisgICAgbV93aW5kb3dzQ29udGV4dCA9IGFkb3B0UHRyKDo6
Q3JlYXRlQ29tcGF0aWJsZURDKHNjcmVlbkRDKSk7CiAgICAgbV93aW5kb3dzQml0bWFwID0gYWRv
cHRQdHIoQ3JlYXRlRElCU2VjdGlvbihtX3dpbmRvd3NDb250ZXh0LmdldCgpLCAmYm1JbmZvLCBE
SUJfUkdCX0NPTE9SUywgMCwgbV9zaGFyZWRNZW1vcnktPmhhbmRsZSgpLCAwKSk7CiAgICAgOjpT
ZWxlY3RPYmplY3QobV93aW5kb3dzQ29udGV4dC5nZXQoKSwgbV93aW5kb3dzQml0bWFwLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1l
bnVQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVu
dVByb3h5V2luLmNwcAppbmRleCBkMzJlMGY4MTczMGRiZmViMmNmMzA5ODJjYmQxNjE3M2QwMzEx
NTRmLi5hNDU1ZGEzZDYyNmVhZmVjMTQ0ZWJiM2MzYmE3YjNmOGZkMmI5MmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8d2luZG93c3gu
aD4KKyNpbmNsdWRlIDx3dGYvd2luL0hXbmREQ1dpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC04MDgsNyArODA5LDcgQEAgdm9pZCBXZWJQ
b3B1cE1lbnVQcm94eVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhk
YykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX0RDKSB7Ci0gICAgICAgIG1fREMgPSA6
OkNyZWF0ZUNvbXBhdGlibGVEQyg6OkdldERDKG1fcG9wdXApKTsKKyAgICAgICAgbV9EQyA9IDo6
Q3JlYXRlQ29tcGF0aWJsZURDKEhXbmREQyhtX3BvcHVwKSk7CiAgICAgICAgIGlmICghbV9EQykK
ICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NDgsMTIgKzg0OSwxNCBAQCB2b2lkIFdl
YlBvcHVwTWVudVByb3h5V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMg
aGRjKQogICAgIGlmIChtX3Njcm9sbGJhcikKICAgICAgICAgbV9zY3JvbGxiYXItPnBhaW50KCZj
b250ZXh0LCBkYW1hZ2VSZWN0KTsKIAotICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogOjpH
ZXREQyhtX3BvcHVwKTsKKyAgICBIREMgbG9jYWxEQyA9IGhkYzsKKyAgICBPd25QdHI8SFduZERD
PiBoV25kREM7CisgICAgaWYgKCFsb2NhbERDKSB7CisgICAgICAgIGhXbmREQyA9IGFkb3B0UHRy
KG5ldyBIV25kREMobV9wb3B1cCkpOworICAgICAgICBsb2NhbERDID0gKmhXbmREQzsKKyAgICB9
CiAKICAgICA6OkJpdEJsdChsb2NhbERDLCBkYW1hZ2VSZWN0LngoKSwgZGFtYWdlUmVjdC55KCks
IGRhbWFnZVJlY3Qud2lkdGgoKSwgZGFtYWdlUmVjdC5oZWlnaHQoKSwgbV9EQywgZGFtYWdlUmVj
dC54KCksIGRhbWFnZVJlY3QueSgpLCBTUkNDT1BZKTsKLQotICAgIGlmICghaGRjKQotICAgICAg
ICA6OlJlbGVhc2VEQyhtX3BvcHVwLCBsb2NhbERDKTsKIH0KIAogYm9vbCBXZWJQb3B1cE1lbnVQ
cm94eVdpbjo6c2V0Rm9jdXNlZEluZGV4KGludCBpLCBib29sIGhvdFRyYWNraW5nKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZDQ0ZTI1NTYwZTJlMTU4NTE1
YTAyZDNkMmY5ODM3YTViMTBiNzVlYy4uYjFhNmEwYWU1NDYyZmNiYzU4ZDRiNjc0MjUzZTJkMzM0
N2EwNDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC02
MCw2ICs2MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi93aW4vSFduZERDV2luLmg+CiAKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5o
IgpAQCAtOTU5LDkgKzk2MCw4IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xsVmlldyhjb25zdCBJbnRS
ZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCiB2b2lkIFdlYlZp
ZXc6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHVwZGF0
ZVJlY3RzKQogewogICAgIHN0YXRpYyBIQlJVU0ggYnJ1c2ggPSBjcmVhdGVCcnVzaChXZWJQYWdl
UHJveHk6OmJhY2tpbmdTdG9yZVVwZGF0ZXNGbGFzaENvbG9yKCkucmdiKCkpLmxlYWtQdHIoKTsK
LSAgICBIREMgZGMgPSA6OkdldERDKG1fd2luZG93KTsKKyAgICBIV25kREMgZGMobV93aW5kb3cp
OwogICAgIGZsYXNoUmVjdHMoZGMsIHVwZGF0ZVJlY3RzLmRhdGEoKSwgdXBkYXRlUmVjdHMuc2l6
ZSgpLCBicnVzaCk7Ci0gICAgOjpSZWxlYXNlREMobV93aW5kb3csIGRjKTsKIH0KIAogV2ViQ29y
ZTo6SW50U2l6ZSBXZWJWaWV3Ojp2aWV3U2l6ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122821</attachid>
            <date>2012-01-17 15:07:53 -0800</date>
            <delta_ts>2012-01-18 15:15:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76303-20120117150751.patch</filename>
            <type>text/plain</type>
            <size>38530</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI0ZjllNWM4MDM3MTk3
YzRhZjk4ODQ1ZjBiY2Q2MzA0YjczNzMzNy4uZGQwNjY2ZDI0N2JjNGFmZmU1ZGNmNWRhNWVlYmEw
NTc1YmEwYjEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTAxLTE3ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVy
dCB1c2FnZXMgb2YgR2V0REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBzbyBubyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpnZXRUcmFpdHNJbkZhbWlseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERh
dGE6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBs
ZUZvbnREYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjppbml0
R0RJRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Y29udGFpbnNDaGFy
YWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRj
aCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Ym91bmRzRm9yR0RJR2x5cGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZUFuZFBsYWNlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVTaGFyZWRDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bv
cHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnBhaW50KToK
KworMjAxMi0wMS0xMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW3dpbmRvd3NdIENvbnZlcnQgdXNhZ2VzIG9mIEdldERDIHRvIEhXbmREQy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxp
dHkgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnREYXRh
Rm9yQ2hhcmFjdGVycyk6IENoYW5nZWQgR2V0REMgdG8gSFduZERDCisgICAgICAgIGFuZCByZW1v
dmVkIFJlbGVhc2VEQy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCk6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6aW5pdEdESUZvbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpjb250YWluc0NoYXJhY3Rl
cnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQ
aXRjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmJvdW5kc0Zv
ckdESUdseXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6d2lk
dGhGb3JHRElHbHlwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6
OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2Ny
aWJlQ29udHJvbGxlcjo6c2hhcGVBbmRQbGFjZUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vd2luL0N1cnNvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGFyZWRDdXJz
b3IpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2NhbGVEcmFnSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdl
Rm9yTGluayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTWVudVdpbjo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vSFdu
ZERDLmg6IENoYW5nZWQgdGhpcyBzbGlnaHRseSB0byBhbGxvdworICAgICAgICBmb3IgYWxsb2Nh
dGluZyBhIHdpbmRvdyBEQyBhZnRlciB0aGUgaW5pdGlhbCBjcmVhdGlvbiBzaW5jZQorICAgICAg
ICB0aGlzIHBhdHRlcm4gb2NjdXJyZWQgaW4gc2V2ZXJhbCBwbGFjZXMuCisgICAgICAgIChXZWJD
b3JlOjpIV25kREM6OkhXbmREQyk6CisgICAgICAgIChXZWJDb3JlOjpIV25kREM6On5IV25kREMp
OgorICAgICAgICAoV2ViQ29yZTo6SFduZERDOjpjaGFuZ2VXaW5kb3dEQyk6CisgICAgICAgIChX
ZWJDb3JlOjpIV25kREM6OmNsZWFyREMpOgorCiAyMDEyLTAxLTEzICBEYXZpZCBMZXZpbiAgPGxl
dmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENvbnZlcnQgdXNlcyBvZiBH
ZXREQyB0byBIV25kREMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzg0ZmFhNWQwMTVlNTI1MDk2YjU2
ZjJlMTVjMzRjY2ZjN2Q2ODhiNy4uMzQwMTY2ZmY3NDg2N2ZhODFhODNlMmVlOTI0M2JkY2E0M2E4
OTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAxLTE3ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVy
dCB1c2FnZXMgb2YgR2V0REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoY3JlYXRlQ29tcGF0aWJsZURDRm9yV2luZG93KTogTW92ZWQgb3V0IHRoZSBjb2RlIHdo
aWNoIGNyZWF0ZXMgYSBEQyBmb3IgYSB3aW5kb3cKKyAgICAgICAgYW5kIHN3aXRjaCB0byB1c2lu
ZyBIV25kREMgYW5kIE93blB0cjxIREM+IGZvciB0aGlzIGNvZGUuCisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KTogRGl0dG8uCisgICAgICAgICogV2ViSWNvbkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKGNyZWF0ZURJQik6IENoYW5nZWQgR2V0REMgdG8gSFduZERDIGFu
ZCByZW1vdmVkIFJlbGVhc2VEQy4KKyAgICAgICAgKiBXZWJOb2RlSGlnaGxpZ2h0LmNwcDoKKyAg
ICAgICAgKFdlYk5vZGVIaWdobGlnaHQ6OnVwZGF0ZSk6IENsZWFuZWQgdXAgbGVha3MgZnJvbSBj
YWxsaW5nIEdldERDIGFuZCBhIHBvdGVudGlhbAorICAgICAgICBsZWFrIG9mIHRoZSByZXN1bHQg
ZnJvbSBDcmVhdGVDb21wYXRpYmxlREMgaW4gYW4gZWFybHkgZXhpdCBzY2VuYXJpbyBieSB1c2lu
ZworICAgICAgICBIV25kREMgYW5kIE93blB0cjxIREM+CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUpOiBUeXBpY2FsIGNvbnZlcnNp
b24uCisgICAgICAgIChXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUpOiBVc2UgT1duUHRyIHRv
IGhhbmRsZSB0aGUgY29uZGl0aW9uYWwgYWxsb2NhdGlvbiBvZiBhIERDLgorICAgICAgICAoV2Vi
Vmlldzo6cGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUpOiBUeXBpY2FsIGNvbnZlcnNpb24uCisg
ICAgICAgIChXZWJWaWV3OjpwYWludEludG9CYWNraW5nU3RvcmUpOiBEaXR0by4KKwogMjAxMi0w
MS0wNyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ZlNjM2Njc2MDJmOTBkYjY1YWNiNWQ1
YzllNWUzZjJjMWViMDA1MC4uNjllYTVmOTAwNDhiZmE4OTg5OWRjYmQ0ZjFmOWJmOTdhMmZkYzBi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTE3ICBEYXZpZCBMZXZpbiAg
PGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVydCB1c2FnZXMg
b2YgR2V0REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OndpbmRvd3NDb250ZXh0KTogRml4
IGluY29ycmVjdCB1c2FnZSBvZiBPd25QdHI8SERDPiB3aGljaAorICAgICAgICB3b3VsZCBkbyBh
IERlbGV0ZURDIGluc3RlYWQgb2YgYSBSZWxlYXNlREMuCisgICAgICAgICogVUlQcm9jZXNzL3dp
bi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5V2luOjpwYWludCk6IEZpeGVkIGEgbGVhayBhbmQgYSB0eXBpY2FsIGNvbnZlcnNpb24u
CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKTogVHlwaWNhbCBjb252ZXJzaW9uLgor
CiAyMDEyLTAxLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBbV0syXSBXZWJLaXRQcml2YXRlIHNob3VsZCBpbmNsdWRlIHRoZSBlbnRp
cmUgV2ViS2l0MiBDIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCAzZWI3NDM2ZWUyZTU1ZDk1MGU1ZDIwMGM1
MTdkN2I0NGQ4YjYwNzY3Li40ZDFiMmNmZDM2OWYwMmExZjdjODc3YjU0ODFmYjY2YmZlNTgyYzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENh
Y2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENhY2hlV2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAj
aW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkhXbmRE
Qy5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5jbHVkZSAiVW5pY29kZVJhbmdl
LmgiCiAjaW5jbHVkZSA8bWxhbmcuaD4KQEAgLTE4OSw3ICsxOTAsNyBAQCBjb25zdCBTaW1wbGVG
b250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYg
Zm9udCwgY29ucwogewogICAgIFVDaGFyIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbMF07CiAgICAg
U2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0gMDsKLSAgICBIREMgaGRjID0gR2V0REMoMCk7Cisg
ICAgSFduZERDIGhkYygwKTsKICAgICBIRk9OVCBwcmltYXJ5Rm9udCA9IGZvbnQucHJpbWFyeUZv
bnQoKS0+Zm9udERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKS0+cGxhdGZvcm1EYXRhKCkuaGZv
bnQoKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBwcmltYXJ5Rm9u
dCk7CiAgICAgSEZPTlQgaGZvbnQgPSAwOwpAQCAtMjkyLDcgKzI5Myw2IEBAIGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250
JiBmb250LCBjb25zCiAgICAgICAgIERlbGV0ZU9iamVjdChoZm9udCk7CiAgICAgfQogCi0gICAg
UmVsZWFzZURDKDAsIGhkYyk7CiAgICAgcmV0dXJuIGZvbnREYXRhOwogfQogCkBAIC00NDcsNyAr
NDQ3LDcgQEAgc3RhdGljIGludCBDQUxMQkFDSyBtYXRjaEltcHJvdmluZ0VudW1Qcm9jKENPTlNU
IExPR0ZPTlQqIGNhbmRpZGF0ZSwgQ09OU1QgVEVYVE0KIAogc3RhdGljIEhGT05UIGNyZWF0ZUdE
SUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlaWdodCwgYm9v
bCBkZXNpcmVkSXRhbGljLCBpbnQgc2l6ZSwgYm9vbCBzeW50aGVzaXplSXRhbGljKQogewotICAg
IEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwogCiAgICAgTE9HRk9OVCBs
b2dGb250OwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwpAQCAtNDU5
LDggKzQ1OSw2IEBAIHN0YXRpYyBIRk9OVCBjcmVhdGVHRElGb250KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5LCBMT05HIGRlc2lyZWRXZWlnaHQsIGJvb2wKICAgICBNYXRjaEltcHJvdmluZ1By
b2NEYXRhIG1hdGNoRGF0YShkZXNpcmVkV2VpZ2h0LCBkZXNpcmVkSXRhbGljKTsKICAgICBFbnVt
Rm9udEZhbWlsaWVzRXgoaGRjLCAmbG9nRm9udCwgbWF0Y2hJbXByb3ZpbmdFbnVtUHJvYywgcmVp
bnRlcnByZXRfY2FzdDxMUEFSQU0+KCZtYXRjaERhdGEpLCAwKTsKIAotICAgIFJlbGVhc2VEQygw
LCBoZGMpOwotCiAgICAgaWYgKCFtYXRjaERhdGEubV9oYXNNYXRjaGVkKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtNDg2LDEzICs0ODQsMTIgQEAgc3RhdGljIEhGT05UIGNyZWF0ZUdESUZvbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlaWdodCwgYm9vbAogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhEQyBkYyA9IEdldERDKDAp
OworICAgIEhXbmREQyBkYygwKTsKICAgICBTYXZlREMoZGMpOwogICAgIFNlbGVjdE9iamVjdChk
YywgcmVzdWx0KTsKICAgICBXQ0hBUiBhY3R1YWxOYW1lW0xGX0ZBQ0VTSVpFXTsKICAgICBHZXRU
ZXh0RmFjZShkYywgTEZfRkFDRVNJWkUsIGFjdHVhbE5hbWUpOwogICAgIFJlc3RvcmVEQyhkYywg
LTEpOwotICAgIFJlbGVhc2VEQygwLCBkYyk7CiAKICAgICBpZiAod2NzaWNtcChtYXRjaERhdGEu
bV9jaG9zZW4ubGZGYWNlTmFtZSwgYWN0dWFsTmFtZSkpIHsKICAgICAgICAgRGVsZXRlT2JqZWN0
KHJlc3VsdCk7CkBAIC01MzQsNyArNTMxLDcgQEAgc3RhdGljIGludCBDQUxMQkFDSyB0cmFpdHNJ
bkZhbWlseUVudW1Qcm9jKENPTlNUIExPR0ZPTlQqIGxvZ0ZvbnQsIENPTlNUIFRFWFRNRVQKIH0K
IHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQogewotICAgIEhEQyBoZGMg
PSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwogCiAgICAgTE9HRk9OVCBsb2dGb250Owog
ICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwpAQCAtNTQ2LDggKzU0Myw2
IEBAIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lCiAgICAgVHJhaXRzSW5GYW1pbHlQcm9jRGF0YSBw
cm9jRGF0YShmYW1pbHlOYW1lKTsKICAgICBFbnVtRm9udEZhbWlsaWVzRXgoaGRjLCAmbG9nRm9u
dCwgdHJhaXRzSW5GYW1pbHlFbnVtUHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZwcm9j
RGF0YSksIDApOwogICAgIGNvcHlUb1ZlY3Rvcihwcm9jRGF0YS5tX3RyYWl0c01hc2tzLCB0cmFp
dHNNYXNrcyk7Ci0KLSAgICBSZWxlYXNlREMoMCwgaGRjKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0
YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcAppbmRleCBkMGIzN2JkYTNlNWY2ZjM4NmFmZWQ3NTU0ZDI5NzgxMDdhMzk2
NWRhLi45ODYwZGY2YTIxMzlhNjkwMGQwZmI4MzRiM2VjZmMzNWEzOWJkNjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTUxLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShIRk9OVCBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wg
b2JsaXEKICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShvYmxpcXVlKQogICAgICwgbV91c2VHREko
dXNlR0RJKQogewotICAgIEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwog
ICAgIFNhdmVEQyhoZGMpOwogICAgIAogICAgIFNlbGVjdE9iamVjdChoZGMsIGZvbnQpOwpAQCAt
NzEsNyArNzIsNiBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEhGT05UIGZv
bnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcQogICAgIH0KIAogICAgIFJlc3Rv
cmVEQyhoZGMsIC0xKTsKLSAgICBSZWxlYXNlREMoMCwgaGRjKTsKIH0KIAogI2lmbmRlZiBOREVC
VUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1w
bGVGb250RGF0YUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9TaW1wbGVGb250RGF0YUNHV2luLmNwcAppbmRleCAyZDhmMTNlMzZlZGJlMTYyZmI4NjAzZDgy
ZDBlZDY0NmE2Mzc1MTQzLi5hZDAyNWI4MDNiZmIwZDJiZDk5MGFjYzliNGJkZTA1YmI5M2NkNDY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxl
Rm9udERhdGFDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2Ny
aXB0aW9uLmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4K
ICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CkBAIC01NSw3ICs1Niw3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCiAg
ICAgbV9pc1N5c3RlbUZvbnQgPSBmYWxzZTsKIAogICAgIGlmIChtX3BsYXRmb3JtRGF0YS51c2VH
REkoKSkKLSAgICAgICByZXR1cm4gaW5pdEdESUZvbnQoKTsKKyAgICAgICAgcmV0dXJuIGluaXRH
RElGb250KCk7CiAKICAgICBDR0ZvbnRSZWYgZm9udCA9IG1fcGxhdGZvcm1EYXRhLmNnRm9udCgp
OwogICAgIGludCBpQXNjZW50ID0gQ0dGb250R2V0QXNjZW50KGZvbnQpOwpAQCAtNjgsMTQgKzY5
LDEzIEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCiAgICAgZmxvYXQgZkxp
bmVHYXAgPSBzY2FsZUVtVG9Vbml0cyhpTGluZUdhcCwgdW5pdHNQZXJFbSkgKiBwb2ludFNpemU7
CiAKICAgICBpZiAoIWlzQ3VzdG9tRm9udCgpKSB7Ci0gICAgICAgIEhEQyBkYyA9IEdldERDKDAp
OworICAgICAgICBIV25kREMgZGMoMCk7CiAgICAgICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVj
dE9iamVjdChkYywgbV9wbGF0Zm9ybURhdGEuaGZvbnQoKSk7CiAgICAgICAgIGludCBmYWNlTGVu
Z3RoID0gR2V0VGV4dEZhY2UoZGMsIDAsIDApOwogICAgICAgICBWZWN0b3I8V0NIQVI+IGZhY2VO
YW1lKGZhY2VMZW5ndGgpOwogICAgICAgICBHZXRUZXh0RmFjZShkYywgZmFjZUxlbmd0aCwgZmFj
ZU5hbWUuZGF0YSgpKTsKICAgICAgICAgbV9pc1N5c3RlbUZvbnQgPSAhd2NzY21wKGZhY2VOYW1l
LmRhdGEoKSwgTCJMdWNpZGEgR3JhbmRlIik7CiAgICAgICAgIFNlbGVjdE9iamVjdChkYywgb2xk
Rm9udCk7Ci0gICAgICAgIFJlbGVhc2VEQygwLCBkYyk7CiAKICAgICAgICAgZkFzY2VudCA9IGFz
Y2VudENvbnNpZGVyaW5nTWFjQXNjZW50SGFjayhmYWNlTmFtZS5kYXRhKCksIGZBc2NlbnQsIGZE
ZXNjZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhV2luLmNwcAppbmRleCBkZTY2ODdmNWM3YTgzMzM1
YjEyOTRiZjBkOTQ5NDM2ZTA0ZmJlYzRmLi45ODNjMWJmOTJiZWYxNzM5N2U3YTQzZWIyZWY2NWNi
ZGM3ZDkyMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdpbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250
RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlIDxtbGFuZy5oPgog
I2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+CkBA
IC04OSw3ICs5MCw3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmluaXRHRElGb250KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgICBIREMgaGRjID0gR2V0REMoMCk7CisgICAgIEhXbmRE
QyBoZGMoMCk7CiAgICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIG1fcGxh
dGZvcm1EYXRhLmhmb250KCkpOwogICAgICBPVVRMSU5FVEVYVE1FVFJJQyBtZXRyaWNzOwogICAg
ICBHZXRPdXRsaW5lVGV4dE1ldHJpY3MoaGRjLCBzaXplb2YobWV0cmljcyksICZtZXRyaWNzKTsK
QEAgLTExNSw5ICsxMTYsNiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjppbml0R0RJRm9udCgpCiAg
ICAgIG1fZm9udE1ldHJpY3Muc2V0VW5pdHNQZXJFbShtZXRyaWNzLm90bUVNU3F1YXJlKTsKIAog
ICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKLSAgICAgUmVsZWFzZURDKDAsIGhkYyk7
Ci0KLSAgICAgcmV0dXJuOwogfQogCiB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUNoYXJX
aWR0aEluaXQoKQpAQCAtMTg1LDggKzE4Myw4IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6OmNvbnRh
aW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkgY29uCiAg
ICAgaWYgKCFsYW5nRm9udExpbmspCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhEQyBk
YyA9IEdldERDKDApOwotICAgIAorICAgIEhXbmREQyBkYygwKTsKKwogICAgIERXT1JEIGFjcENv
ZGVQYWdlczsKICAgICBsYW5nRm9udExpbmstPkNvZGVQYWdlVG9Db2RlUGFnZXMoQ1BfQUNQLCAm
YWNwQ29kZVBhZ2VzKTsKIApAQCAtMjAzLDggKzIwMSw2IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6
OmNvbnRhaW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkg
Y29uCiAgICAgICAgIG9mZnNldCArPSBudW1DaGFyYWN0ZXJzUHJvY2Vzc2VkOwogICAgIH0KIAot
ICAgIFJlbGVhc2VEQygwLCBkYyk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDcg
KzIxMiw3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKICAgICB9CiAK
ICAgICAvLyBURVhUTUVUUklDUyBoYXZlIHRoaXMuICBTZXQgbV90cmVhdEFzRml4ZWRQaXRjaCBi
YXNlZCBvZmYgdGhhdC4KLSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7
CiAgICAgU2F2ZURDKGRjKTsKICAgICBTZWxlY3RPYmplY3QoZGMsIG1fcGxhdGZvcm1EYXRhLmhm
b250KCkpOwogCkBAIC0yMjcsMTIgKzIyMywxMSBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpkZXRl
cm1pbmVQaXRjaCgpCiAgICAgbV90cmVhdEFzRml4ZWRQaXRjaCA9ICgodG0udG1QaXRjaEFuZEZh
bWlseSAmIFRNUEZfRklYRURfUElUQ0gpID09IDApOwogCiAgICAgUmVzdG9yZURDKGRjLCAtMSk7
Ci0gICAgUmVsZWFzZURDKDAsIGRjKTsKIH0KIAogRmxvYXRSZWN0IFNpbXBsZUZvbnREYXRhOjpi
b3VuZHNGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsKLSAgICBIREMgaGRjID0gR2V0
REMoMCk7CisgICAgSFduZERDIGhkYygwKTsKICAgICBTZXRHcmFwaGljc01vZGUoaGRjLCBHTV9B
RFZBTkNFRCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgbV9wbGF0
Zm9ybURhdGEuaGZvbnQoKSk7CiAgICAgCkBAIC0yNDEsNyArMjM2LDYgQEAgRmxvYXRSZWN0IFNp
bXBsZUZvbnREYXRhOjpib3VuZHNGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICBH
ZXRHbHlwaE91dGxpbmUoaGRjLCBnbHlwaCwgR0dPX01FVFJJQ1MgfCBHR09fR0xZUEhfSU5ERVgs
ICZnZGlNZXRyaWNzLCAwLCAwLCAmaWRlbnRpdHkpOwogICAgIAogICAgIFNlbGVjdE9iamVjdCho
ZGMsIG9sZEZvbnQpOwotICAgIFJlbGVhc2VEQygwLCBoZGMpOwogICAgIAogICAgIHJldHVybiBG
bG9hdFJlY3QoZ2RpTWV0cmljcy5nbXB0R2x5cGhPcmlnaW4ueCwgLWdkaU1ldHJpY3MuZ21wdEds
eXBoT3JpZ2luLnksCiAgICAgICAgIGdkaU1ldHJpY3MuZ21CbGFja0JveFggKyBtX3N5bnRoZXRp
Y0JvbGRPZmZzZXQsIGdkaU1ldHJpY3MuZ21CbGFja0JveFkpOyAKQEAgLTI0OSw3ICsyNDMsNyBA
QCBGbG9hdFJlY3QgU2ltcGxlRm9udERhdGE6OmJvdW5kc0ZvckdESUdseXBoKEdseXBoIGdseXBo
KSBjb25zdAogICAgIAogZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5cGgoR2x5
cGggZ2x5cGgpIGNvbnN0CiB7Ci0gICAgSERDIGhkYyA9IEdldERDKDApOworICAgIEhXbmREQyBo
ZGMoMCk7CiAgICAgU2V0R3JhcGhpY3NNb2RlKGhkYywgR01fQURWQU5DRUQpOwogICAgIEhHRElP
Qkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwog
CkBAIC0yNTgsNyArMjUyLDYgQEAgZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5
cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgR2V0R2x5cGhPdXRsaW5lKGhkYywgZ2x5cGgsIEdH
T19NRVRSSUNTIHwgR0dPX0dMWVBIX0lOREVYLCAmZ2RpTWV0cmljcywgMCwgMCwgJmlkZW50aXR5
KTsKIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwotICAgIFJlbGVhc2VEQygwLCBo
ZGMpOwogCiAgICAgcmV0dXJuIGdkaU1ldHJpY3MuZ21DZWxsSW5jWCArIG1fc3ludGhldGljQm9s
ZE9mZnNldDsKIH0KQEAgLTI3MSwxMiArMjY0LDExIEBAIFNDUklQVF9GT05UUFJPUEVSVElFUyog
U2ltcGxlRm9udERhdGE6OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKCkgY29uc3QKICAgICAgICAgbV9z
Y3JpcHRGb250UHJvcGVydGllcy0+Y0J5dGVzID0gc2l6ZW9mKFNDUklQVF9GT05UUFJPUEVSVElF
Uyk7CiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gU2NyaXB0R2V0Rm9udFByb3BlcnRpZXMoMCwg
c2NyaXB0Q2FjaGUoKSwgbV9zY3JpcHRGb250UHJvcGVydGllcyk7CiAgICAgICAgIGlmIChyZXN1
bHQgPT0gRV9QRU5ESU5HKSB7Ci0gICAgICAgICAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICAg
ICAgICAgIEhXbmREQyBkYygwKTsKICAgICAgICAgICAgIFNhdmVEQyhkYyk7CiAgICAgICAgICAg
ICBTZWxlY3RPYmplY3QoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwogICAgICAgICAgICAg
U2NyaXB0R2V0Rm9udFByb3BlcnRpZXMoZGMsIHNjcmlwdENhY2hlKCksIG1fc2NyaXB0Rm9udFBy
b3BlcnRpZXMpOwogICAgICAgICAgICAgUmVzdG9yZURDKGRjLCAtMSk7Ci0gICAgICAgICAgICBS
ZWxlYXNlREMoMCwgZGMpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBtX3NjcmlwdEZv
bnRQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCmluZGV4IDY3ZTM0YTcxZDg2ZTk2
ZDlmNGQ1NzhiYjc5MWQ1MDQ1MGE0ZDgxNGQuLjc4NDg2NDJlNTJjYWI2ODc1NWJkNjYyM2I0MzY0
M2ZmMjhiYmM2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVbmlzY3JpYmVDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIlNpbXBsZUZv
bnREYXRhLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CkBAIC0yNDgsMTMgKzI0OSwxMiBAQCBib29sIFVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBl
QW5kUGxhY2VJdGVtKGNvbnN0IFVDaGFyKiBjcCwgdW5zaWduZWQgaSwgY29uc3QgUwogICAgIGlm
IChwbGFjZVJlc3VsdCA9PSBFX1BFTkRJTkcpIHsKICAgICAgICAgLy8gVGhlIHNjcmlwdCBjYWNo
ZSBpc24ndCBwcmltZWQgd2l0aCBlbm91Z2ggaW5mbyB5ZXQuICBXZSBuZWVkIHRvIHNlbGVjdCBv
dXIgSEZPTlQgaW50bwogICAgICAgICAvLyBhIERDIGFuZCBwYXNzIHRoZSBEQyBpbiB0byBTY3Jp
cHRQbGFjZS4KLSAgICAgICAgSERDIGhkYyA9IEdldERDKDApOworICAgICAgICBIV25kREMgaGRj
KDApOwogICAgICAgICBIRk9OVCBoZm9udCA9IGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5oZm9u
dCgpOwogICAgICAgICBIRk9OVCBvbGRGb250ID0gKEhGT05UKVNlbGVjdE9iamVjdChoZGMsIGhm
b250KTsKICAgICAgICAgcGxhY2VSZXN1bHQgPSBTY3JpcHRQbGFjZShoZGMsIGZvbnREYXRhLT5z
Y3JpcHRDYWNoZSgpLCBnbHlwaHMuZGF0YSgpLCBnbHlwaHMuc2l6ZSgpLCB2aXN1YWxBdHRyaWJ1
dGVzLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlbS5hLCBh
ZHZhbmNlcy5kYXRhKCksIG9mZnNldHMuZGF0YSgpLCAwKTsKICAgICAgICAgU2VsZWN0T2JqZWN0
KGhkYywgb2xkRm9udCk7Ci0gICAgICAgIFJlbGVhc2VEQygwLCBoZGMpOwogICAgIH0KICAgICAK
ICAgICBpZiAoRkFJTEVEKHBsYWNlUmVzdWx0KSB8fCBnbHlwaHMuaXNFbXB0eSgpKQpAQCAtMzgw
LDcgKzM4MCw3IEBAIGJvb2wgVW5pc2NyaWJlQ29udHJvbGxlcjo6c2hhcGUoY29uc3QgVUNoYXIq
IHN0ciwgaW50IGxlbiwgU0NSSVBUX0lURU0gaXRlbSwgY29uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlY3RvcjxXT1JEPiYgZ2x5cGhzLCBWZWN0b3I8V09SRD4mIGNsdXN0ZXJz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U0NSSVBUX1ZJU0FUVFI+
JiB2aXN1YWxBdHRyaWJ1dGVzKQogewotICAgIEhEQyBoZGMgPSAwOworICAgIEhXbmREQyBoZGM7
CiAgICAgSEZPTlQgb2xkRm9udCA9IDA7CiAgICAgSFJFU1VMVCBzaGFwZVJlc3VsdCA9IEVfUEVO
RElORzsKICAgICBpbnQgZ2x5cGhDb3VudCA9IDA7CkBAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBV
bmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuLCBTQ1JJ
UFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAgICAgIC8vIFRoZSBzY3JpcHQgY2FjaGUgaXNuJ3Qg
cHJpbWVkIHdpdGggZW5vdWdoIGluZm8geWV0LiAgV2UgbmVlZCB0byBzZWxlY3Qgb3VyIEhGT05U
IGludG8KICAgICAgICAgICAgIC8vIGEgREMgYW5kIHBhc3MgdGhlIERDIGluIHRvIFNjcmlwdFNo
YXBlLgogICAgICAgICAgICAgQVNTRVJUKCFoZGMpOwotICAgICAgICAgICAgaGRjID0gR2V0REMo
MCk7CisgICAgICAgICAgICBoZGMuY2hhbmdlV2luZG93REMoMCk7CiAgICAgICAgICAgICBIRk9O
VCBoZm9udCA9IGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5oZm9udCgpOwogICAgICAgICAgICAg
b2xkRm9udCA9IChIRk9OVClTZWxlY3RPYmplY3QoaGRjLCBoZm9udCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoc2hhcGVSZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkgewpAQCAtNDAxLDEwICs0MDEsOCBA
QCBib29sIFVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKGNvbnN0IFVDaGFyKiBzdHIsIGludCBs
ZW4sIFNDUklQVF9JVEVNIGl0ZW0sIGNvbgogICAgICAgICB9CiAgICAgfSB3aGlsZSAoc2hhcGVS
ZXN1bHQgPT0gRV9QRU5ESU5HIHx8IHNoYXBlUmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwogCi0g
ICAgaWYgKGhkYykgeworICAgIGlmIChoZGMpCiAgICAgICAgIFNlbGVjdE9iamVjdChoZGMsIG9s
ZEZvbnQpOwotICAgICAgICBSZWxlYXNlREMoMCwgaGRjKTsKLSAgICB9CiAKICAgICBpZiAoRkFJ
TEVEKHNoYXBlUmVzdWx0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAppbmRleCA1NDRiOWE3N2JmNDYwNjM4MGY3ZGJjOGMz
OWIyYmEzMDM1OTA2N2NlLi5jZTRkNThmYjQyMWE1ZDg0NzJhNzM2MzgyYWJkZThjMTQ3MzUwOWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkN1cnNvci5oIgogCiAjaW5jbHVkZSAiQml0bWFwSW5mby5oIgor
I2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UG9p
bnQuaCIKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCkBAIC00OSw3ICs1MCw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNv
bnN0IEludFBvaW50JiBoCiAgICAgc3RhdGljIGJvb2wgZG9BbHBoYSA9IHdpbmRvd3NWZXJzaW9u
KCkgPj0gV2luZG93c1hQOwogICAgIEJpdG1hcEluZm8gY3Vyc29ySW1hZ2UgPSBCaXRtYXBJbmZv
OjpjcmVhdGUoSW50U2l6ZShpbWctPndpZHRoKCksIGltZy0+aGVpZ2h0KCkpKTsKIAotICAgIEhE
QyBkYyA9IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIREMgd29ya2luZ0RDID0g
Q3JlYXRlQ29tcGF0aWJsZURDKGRjKTsKICAgICBpZiAoZG9BbHBoYSkgewogICAgICAgICBPd25Q
dHI8SEJJVE1BUD4gaEN1cnNvciA9IGFkb3B0UHRyKENyZWF0ZURJQlNlY3Rpb24oZGMsIChCSVRN
QVBJTkZPICopJmN1cnNvckltYWdlLCBESUJfUkdCX0NPTE9SUywgMCwgMCwgMCkpOwpAQCAtMTEy
LDcgKzExMyw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVk
Q3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgICAgIERlbGV0ZURDKGFu
ZE1hc2tEQyk7CiAgICAgfQogICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7Ci0gICAgUmVsZWFzZURD
KDAsIGRjKTsKIAogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IGJjNDVlMjJjMzE4NGNm
M2I4MjhiODdjMzFkODM1OTRiZGVjMTUwMWQuLjc0MTAxNjg0NmVlNjBjYjlhNDg3OWE1YjMwMTQ5
MDRmYWNmODFkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNHV2luLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJpdG1hcEluZm8uaCIKICNp
bmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisj
aW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJSZXRhaW5Q
dHIuaCIKIApAQCAtODksNyArOTAsNyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJh
Z0ltYWdlUmVmIGltYWdlLCBGbG9hdFNpemUgc2NhbGUpCiAgICAgSW50U2l6ZSBzcmNTaXplID0g
ZHJhZ0ltYWdlU2l6ZShpbWFnZSk7CiAgICAgSW50U2l6ZSBkc3RTaXplKHN0YXRpY19jYXN0PGlu
dD4oc3JjU2l6ZS53aWR0aCgpICogc2NhbGUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc3Jj
U2l6ZS5oZWlnaHQoKSAqIHNjYWxlLmhlaWdodCgpKSk7CiAgICAgSEJJVE1BUCBoYm1wID0gMDsK
LSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgSERDIGRzdERD
ID0gQ3JlYXRlQ29tcGF0aWJsZURDKGRjKTsKICAgICBpZiAoIWRzdERDKQogICAgICAgICBnb3Rv
IGV4aXQ7CkBAIC0xMTYsMTQgKzExNywxMyBAQCBleGl0OgogICAgICAgICBoYm1wID0gaW1hZ2U7
CiAgICAgaWYgKGRzdERDKQogICAgICAgICBEZWxldGVEQyhkc3REQyk7Ci0gICAgUmVsZWFzZURD
KDAsIGRjKTsKICAgICByZXR1cm4gaGJtcDsKIH0KICAgICAKIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZykKIHsKICAgICBIQklUTUFQIGhibXAgPSAwOwot
ICAgIEhEQyBkYyA9IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIREMgd29ya2lu
Z0RDID0gQ3JlYXRlQ29tcGF0aWJsZURDKGRjKTsKICAgICBDR0NvbnRleHRSZWYgZHJhd0NvbnRl
eHQgPSAwOwogICAgIGlmICghd29ya2luZ0RDKQpAQCAtMTU1LDcgKzE1NSw2IEBAIERyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZykKIGV4aXQ6CiAgICAgaWYg
KHdvcmtpbmdEQykKICAgICAgICAgRGVsZXRlREMod29ya2luZ0RDKTsKLSAgICBSZWxlYXNlREMo
MCwgZGMpOwogICAgIHJldHVybiBoYm1wOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCBmODU4YjA3ZjE2ZjM2M2UxZTVmYmZmOTk2
OWM5YTc2NDliYjgwMWEzLi4xZjZiNzNlODllZDQzOTg3NzQ4NDcwMDM1ZmM2ZDI4NjAzNDc0NDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtMTgzLDE4ICsxODQsMTUgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZyYW1lKiBmcmEKICAg
ICAvLyBXZSBub3cga25vdyBob3cgYmlnIHRoZSBpbWFnZSBuZWVkcyB0byBiZSwgc28gd2UgY3Jl
YXRlIGFuZAogICAgIC8vIGZpbGwgdGhlIGJhY2tncm91bmQKICAgICBIQklUTUFQIGltYWdlID0g
MDsKLSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgSERDIHdv
cmtpbmdEQyA9IENyZWF0ZUNvbXBhdGlibGVEQyhkYyk7Ci0gICAgaWYgKCF3b3JraW5nREMpIHsK
LSAgICAgICAgUmVsZWFzZURDKDAsIGRjKTsKKyAgICBpZiAoIXdvcmtpbmdEQykKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQogCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNvbnRleHRS
ZWY7CiAgICAgaW1hZ2UgPSBhbGxvY0ltYWdlKHdvcmtpbmdEQywgaW1hZ2VTaXplLCAmY29udGV4
dFJlZik7CiAgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBEZWxldGVEQyh3b3JraW5nREMpOwot
ICAgICAgICBSZWxlYXNlREMoMCwgZGMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
ICAgIApAQCAtMjI1LDcgKzIyMyw2IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGcmFtZSogZnJhCiAKICAgICBk
ZWFsbG9jQ29udGV4dChjb250ZXh0UmVmKTsKICAgICBEZWxldGVEQyh3b3JraW5nREMpOwotICAg
IFJlbGVhc2VEQygwLCBkYyk7CiAgICAgcmV0dXJuIGltYWdlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vSFduZERDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vSFduZERDLmgKaW5kZXggMTFkYzMzMjU3ZWFiMTEzNjA1ZDU4NDg3MTc2ZDE0YTlk
YWY4MGJkMC4uNDg3YzY0N2IwMjZlNmU4ZGJhMzU5Mjk0MjgwYjNlMWRkZTIyOWVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0hXbmREQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9IV25kREMuaApAQCAtMzQsNiArMzQsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSFduZERDIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIV25k
REMpOwogcHVibGljOgorICAgIGV4cGxpY2l0IEhXbmREQygpCisgICAgICAgIDogbV9od25kKDAp
CisgICAgICAgICwgbV9oZGMoMCkKKyAgICB7CisgICAgfQorCiAgICAgZXhwbGljaXQgSFduZERD
KEhXTkQgaHduZCkKICAgICAgICAgOiBtX2h3bmQoaHduZCkKICAgICAgICAgLCBtX2hkYyg6Okdl
dERDKGh3bmQpKQpAQCAtNDgsOCArNTQsMjMgQEAgcHVibGljOgogCiAgICAgfkhXbmREQygpCiAg
ICAgewotICAgICAgICBpZiAobV9oZGMpCi0gICAgICAgICAgICA6OlJlbGVhc2VEQyhtX2h3bmQs
IG1faGRjKTsKKyAgICAgICAgY2xlYXJEQygpOworICAgIH0KKworICAgIHZvaWQgY2hhbmdlV2lu
ZG93REMoSFdORCBod25kKQorICAgIHsKKyAgICAgICAgY2xlYXJEQygpOworICAgICAgICBtX2h3
bmQgPSBod25kOworICAgICAgICBtX2hkYyA9IDo6R2V0REMoaHduZCk7CisgICAgfQorCisgICAg
dm9pZCBjbGVhckRDKCkKKyAgICB7CisgICAgICAgIGlmICghbV9oZGMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIDo6UmVsZWFzZURDKG1faHduZCwgbV9oZGMpOworICAgICAgICBtX2h3
bmQgPSAwOworICAgICAgICBtX2hkYyA9IDA7CiAgICAgfQogCiAgICAgb3BlcmF0b3IgSERDKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBk
NzY4YTNkNTNmYmM3NmY3NDc5ODU4MmIzMmZmNTdmZDg0YzBmMjMyLi44ODdmYzkxMmMwMDJkNTMz
N2YzNWE2NjUzNTI2NDFlMjg4ZDEwYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpCiAKICAgICBjbGVhcigpOwogCi0gICAgSERDIGRjID0gR2V0REMoMCk7CisgICAgSFduZERD
IGRjKDApOwogICAgIEhEQyBjb21wYXRpYmxlREMgPSBDcmVhdGVDb21wYXRpYmxlREMoMCk7CiAg
ICAgSERDIHNvdXJjZURDID0gQ3JlYXRlQ29tcGF0aWJsZURDKDApOwogICAgIE93blB0cjxIQklU
TUFQPiByZXN1bHRCaXRtYXAgPSBhZG9wdFB0cihDcmVhdGVDb21wYXRpYmxlQml0bWFwKGRjLCBp
bWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKSk7CkBAIC0yNDMsNyArMjQ0LDYgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKQogICAgIFNlbGVjdE9iamVjdChjb21wYXRpYmxlREMsIG9sZEJpdG1hcCk7CiAgICAg
RGVsZXRlREMoc291cmNlREMpOwogICAgIERlbGV0ZURDKGNvbXBhdGlibGVEQyk7Ci0gICAgUmVs
ZWFzZURDKDAsIGRjKTsKIAogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAg
ICAgICAgOjpTZXRDbGlwYm9hcmREYXRhKENGX0JJVE1BUCwgcmVzdWx0Qml0bWFwLmxlYWtQdHIo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4
IDA5N2ZjODIzMTU0MDNhNjlkODE5NjJlOTdlZWRmYTc0MzQwNmUxMTMuLmNmN2YyZTk0MTJhNDFi
YjdjYTY2MGRiNGIyZGMyMjQ0NDRhZjM2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKQEAgLTQyLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIK
ICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKwogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KICNpbmNsdWRlIDx3aW5kb3dzeC5oPgogI2lmIE9TKFdJTkNFKQpAQCAtNTY2LDcgKzU2OCw3
IEBAIHZvaWQgUG9wdXBNZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBI
REMgaGRjKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fREMpIHsKLSAgICAgICAgbV9E
QyA9IDo6Q3JlYXRlQ29tcGF0aWJsZURDKDo6R2V0REMobV9wb3B1cCkpOworICAgICAgICBtX0RD
ID0gOjpDcmVhdGVDb21wYXRpYmxlREMoSFduZERDKG1fcG9wdXApKTsKICAgICAgICAgaWYgKCFt
X0RDKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY2MCwxMiArNjYyLDEwIEBAIHZv
aWQgUG9wdXBNZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRj
KQogICAgIGlmIChtX3Njcm9sbGJhcikKICAgICAgICAgbV9zY3JvbGxiYXItPnBhaW50KCZjb250
ZXh0LCBkYW1hZ2VSZWN0KTsKIAotICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogOjpHZXRE
QyhtX3BvcHVwKTsKKyAgICBIV25kREMgaFduZERDOworICAgIEhEQyBsb2NhbERDID0gaGRjID8g
aGRjIDogaFduZERDLmNoYW5nZVdpbmRvd0RDKG1fcG9wdXApOwogCiAgICAgOjpCaXRCbHQobG9j
YWxEQywgZGFtYWdlUmVjdC54KCksIGRhbWFnZVJlY3QueSgpLCBkYW1hZ2VSZWN0LndpZHRoKCks
IGRhbWFnZVJlY3QuaGVpZ2h0KCksIG1fREMsIGRhbWFnZVJlY3QueCgpLCBkYW1hZ2VSZWN0Lnko
KSwgU1JDQ09QWSk7Ci0KLSAgICBpZiAoIWhkYykKLSAgICAgICAgOjpSZWxlYXNlREMobV9wb3B1
cCwgbG9jYWxEQyk7CiB9CiAKIGludCBQb3B1cE1lbnVXaW46OnNjcm9sbFNpemUoU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDMwNDA1YzY3ZGViNDM2Y2ZhYzQ0ZTM1
NmExYWFkZDU5MTEwNTlkZDIuLjM0OTM1ODg0ODExOTA4N2QzZTFhM2FiNjQxOGRlZTQ5M2IxNTUy
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwCkBAIC0zNywxMSArMzcsMTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dFJ1bi5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3aW5kb3dzeC5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTQ4MCwxNCArNDgzLDE4
IEBAIHN0YXRpYyBTdHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpCiAgICAgcmV0dXJuIFN0
cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgbWludXRl
cywgc2Vjb25kcyk7CiB9CiAKK3N0YXRpYyBQYXNzT3duUHRyPEhEQz4gY3JlYXRlQ29tcGF0aWJs
ZURDRm9yV2luZG93KEhXTkQgaHduZCkKK3sKKyAgICBIV25kREMgd2luZG93REMoaHduZCk7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKENyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOworfQorCiB2
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRyYXcoKQogewotICAgIEhEQyB3aW5kb3dE
QyA9IEdldERDKG1faHVkV2luZG93KTsKLSAgICBIREMgYml0bWFwREMgPSBDcmVhdGVDb21wYXRp
YmxlREMod2luZG93REMpOwotICAgIDo6UmVsZWFzZURDKG1faHVkV2luZG93LCB3aW5kb3dEQyk7
Ci0gICAgSEdESU9CSiBvbGRCaXRtYXAgPSBTZWxlY3RPYmplY3QoYml0bWFwREMsIG1fYml0bWFw
LmdldCgpKTsKKyAgICBPd25QdHI8SERDPiBiaXRtYXBEQyA9IGNyZWF0ZUNvbXBhdGlibGVEQ0Zv
cldpbmRvdyhtX2h1ZFdpbmRvdyk7CisgICAgSEdESU9CSiBvbGRCaXRtYXAgPSBTZWxlY3RPYmpl
Y3QoYml0bWFwREMuZ2V0KCksIG1fYml0bWFwLmdldCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dCBjb250ZXh0KGJpdG1hcERDLCB0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChi
aXRtYXBEQy5nZXQoKSwgdHJ1ZSk7CiAKICAgICBjb250ZXh0LnNhdmUoKTsKIApAQCAtNTQ5LDEy
ICs1NTYsMTEgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KCkKICAgICBT
SVpFIHNpemUgPSB7IHdpbmRvd1dpZHRoLCB3aW5kb3dIZWlnaHQgfTsKICAgICBQT0lOVCBzb3Vy
Y2VQb2ludCA9IHswLCAwfTsKICAgICBQT0lOVCBkZXN0UG9pbnQgPSB7IG1faHVkUG9zaXRpb24u
eCgpLCBtX2h1ZFBvc2l0aW9uLnkoKSB9OwotICAgIEJPT0wgcmVzdWx0ID0gVXBkYXRlTGF5ZXJl
ZFdpbmRvdyhtX2h1ZFdpbmRvdywgMCwgJmRlc3RQb2ludCwgJnNpemUsIGJpdG1hcERDLCAmc291
cmNlUG9pbnQsIDAsICZibGVuZEZ1bmN0aW9uLCBVTFdfQUxQSEEpOworICAgIEJPT0wgcmVzdWx0
ID0gVXBkYXRlTGF5ZXJlZFdpbmRvdyhtX2h1ZFdpbmRvdywgMCwgJmRlc3RQb2ludCwgJnNpemUs
IGJpdG1hcERDLmdldCgpLCAmc291cmNlUG9pbnQsIDAsICZibGVuZEZ1bmN0aW9uLCBVTFdfQUxQ
SEEpOwogCiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAKLSAgICA6OlNlbGVjdE9iamVjdChiaXRt
YXBEQywgb2xkQml0bWFwKTsKLSAgICA6OkRlbGV0ZURDKGJpdG1hcERDKTsKKyAgICA6OlNlbGVj
dE9iamVjdChiaXRtYXBEQy5nZXQoKSwgb2xkQml0bWFwKTsKIH0KIAogTFJFU1VMVCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpodWRXbmRQcm9jKEhXTkQgd25kLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNl
LmNwcAppbmRleCBkODE3ZjY5NzVmNmFlNTZmZWZmYTc1ZGUzZTM4MjIzNWQxM2YwNTMzLi5mNDI4
YmZjNzY5NjBhMzY2YTg1NzY5MGMzYWU2Y2JjMjhmNjgwNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykljb25EYXRhYmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0JT
dHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgpAQCAtMjg0LDExICsyODUsOCBAQCBIQklUTUFQ
IGNyZWF0ZURJQihMUFNJWkUgc2l6ZSkKIHsKICAgICBCaXRtYXBJbmZvIGJtSW5mbyA9IEJpdG1h
cEluZm86OmNyZWF0ZShJbnRTaXplKCpzaXplKSk7CiAKLSAgICBIREMgZGMgPSBHZXREQygwKTsK
LSAgICBIQklUTUFQIHJlc3VsdCA9IENyZWF0ZURJQlNlY3Rpb24oZGMsICZibUluZm8sIERJQl9S
R0JfQ09MT1JTLCAwLCAwLCAwKTsKLSAgICBSZWxlYXNlREMoMCwgZGMpOwotCi0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICBIV25kREMgZGMoMCk7CisgICAgcmV0dXJuIENyZWF0ZURJQlNlY3Rpb24o
ZGMsICZibUluZm8sIERJQl9SR0JfQ09MT1JTLCAwLCAwLCAwKTsKIH0KIAogSEJJVE1BUCBXZWJJ
Y29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlU2hhcmVkQml0bWFwKExQU0laRSBzaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcAppbmRleCA1OTUyNzIzY2ZiZTg1MzdlN2Q5ODIx
MzQ3MThjNzkyOGRlYTIyMTBhLi5lZjE0Y2ZjM2RhNDVjNjc4YzY2MmM2NzI1ZmRjMjI0YWU3YWY4
ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcApAQCAtMzMsMTEgKzMz
LDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRv
d01lc3NhZ2VCcm9hZGNhc3Rlci5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTM0LDcgKzEz
Niw3IEBAIHZvaWQgV2ViTm9kZUhpZ2hsaWdodDo6dXBkYXRlKCkKIHsKICAgICBBU1NFUlQobV9v
dmVybGF5KTsKIAotICAgIEhEQyBoZGMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyg6OkdldERDKG1f
b3ZlcmxheSkpOworICAgIE93blB0cjxIREM+IGhkYyA9IGFkb3B0UHRyKDo6Q3JlYXRlQ29tcGF0
aWJsZURDKEh3bmREQyhtX292ZXJsYXkpKSk7CiAgICAgaWYgKCFoZGMpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTUxLDEyICsxNTMsMTIgQEAgdm9pZCBXZWJOb2RlSGlnaGxpZ2h0Ojp1cGRhdGUo
KQogICAgIEJpdG1hcEluZm8gYml0bWFwSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZUJvdHRvbVVw
KEludFNpemUoc2l6ZSkpOwogCiAgICAgdm9pZCogcGl4ZWxzID0gMDsKLSAgICBPd25QdHI8SEJJ
VE1BUD4gaGJtcCA9IGFkb3B0UHRyKDo6Q3JlYXRlRElCU2VjdGlvbihoZGMsICZiaXRtYXBJbmZv
LCBESUJfUkdCX0NPTE9SUywgJnBpeGVscywgMCwgMCkpOworICAgIE93blB0cjxIQklUTUFQPiBo
Ym1wID0gYWRvcHRQdHIoOjpDcmVhdGVESUJTZWN0aW9uKGhkYy5nZXQoKSwgJmJpdG1hcEluZm8s
IERJQl9SR0JfQ09MT1JTLCAmcGl4ZWxzLCAwLCAwKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShoYm1wLCAiOjpDcmVhdGVESUJTZWN0aW9uIGZhaWxlZCB3aXRoIGVycm9yICVsdSIsIDo6R2V0
TGFzdEVycm9yKCkpOwogCi0gICAgOjpTZWxlY3RPYmplY3QoaGRjLCBoYm1wLmdldCgpKTsKKyAg
ICA6OlNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXAuZ2V0KCkpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0IGNvbnRleHQoaGRjKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChoZGMuZ2V0
KCkpOwogCiAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+ZHJhd0hpZ2hsaWdodChjb250ZXh0KTsKIApAQCAtMTc0LDkgKzE3Niw3IEBAIHZvaWQg
V2ViTm9kZUhpZ2hsaWdodDo6dXBkYXRlKCkKICAgICBkc3RQb2ludC54ID0gd2ViVmlld1JlY3Qu
bGVmdDsKICAgICBkc3RQb2ludC55ID0gd2ViVmlld1JlY3QudG9wOwogCi0gICAgOjpVcGRhdGVM
YXllcmVkV2luZG93KG1fb3ZlcmxheSwgOjpHZXREQygwKSwgJmRzdFBvaW50LCAmc2l6ZSwgaGRj
LCAmc3JjUG9pbnQsIDAsICZiZiwgVUxXX0FMUEhBKTsKLQotICAgIDo6RGVsZXRlREMoaGRjKTsK
KyAgICA6OlVwZGF0ZUxheWVyZWRXaW5kb3cobV9vdmVybGF5LCBIV25kREMoMCksICZkc3RQb2lu
dCwgJnNpemUsIGhkYywgJnNyY1BvaW50LCAwLCAmYmYsIFVMV19BTFBIQSk7CiB9CiAKIHZvaWQg
V2ViTm9kZUhpZ2hsaWdodDo6cGxhY2VCZWhpbmRXaW5kb3coSFdORCB3aW5kb3cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCmluZGV4IDU3ZDM0NTgyMTQ5YmYyMGJhNWJiMDUwODYwMTEyNWU3OGY2NWRiNTcu
LmQzYTY5OTI5NjFhMDc5NzAzZGY2MmNmMTkxN2MyZGEyMjYyNzBhYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxOYW1lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KQEAgLTg2Miw3ICs4NjMs
NyBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmll
dywgaW50IGR4LCBpbnQgZHksIGNvbnN0IEludAogICAgIEhSR04gdXBkYXRlUmVnaW9uID0gOjpD
cmVhdGVSZWN0UmduKDAsIDAsIDAsIDApOwogCiAgICAgLy8gQ29sbGVjdCBvdXIgZGV2aWNlIGNv
bnRleHQgaW5mbyBhbmQgc2VsZWN0IHRoZSBiaXRtYXAgdG8gc2Nyb2xsLgotICAgIEhEQyB3aW5k
b3dEQyA9IDo6R2V0REMobV92aWV3V2luZG93KTsKKyAgICBIV25kREMgd2luZG93REMobV92aWV3
V2luZG93KTsKICAgICBIREMgYml0bWFwREMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dE
Qyk7CiAgICAgSEdESU9CSiBvbGRCaXRtYXAgPSA6OlNlbGVjdE9iamVjdChiaXRtYXBEQywgbV9i
YWNraW5nU3RvcmVCaXRtYXAtPmhhbmRsZSgpKTsKICAgICAKQEAgLTg4OCw3ICs4ODksNiBAQCB2
b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgaW50
IGR4LCBpbnQgZHksIGNvbnN0IEludAogICAgIC8vIENsZWFuIHVwLgogICAgIDo6U2VsZWN0T2Jq
ZWN0KGJpdG1hcERDLCBvbGRCaXRtYXApOwogICAgIDo6RGVsZXRlREMoYml0bWFwREMpOwotICAg
IDo6UmVsZWFzZURDKG1fdmlld1dpbmRvdywgd2luZG93REMpOwogfQogCiB2b2lkIFdlYlZpZXc6
OnNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1NpemUpCkBAIC05NTgsMTEgKzk1OCwxMSBA
QCB2b2lkIFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywg
SERDIGRjLCBib29sIGJhY2tpbmdTdG9yZQogCiAgICAgTE9DQUxfR0RJX0NPVU5URVIoMCwgX19G
VU5DVElPTl9fKTsKIAotICAgIEhEQyB3aW5kb3dEQyA9IDA7CiAgICAgSERDIGJpdG1hcERDID0g
ZGM7CiAgICAgSEdESU9CSiBvbGRCaXRtYXAgPSAwOwogICAgIGlmICghZGMpIHsKLSAgICAgICAg
d2luZG93REMgPSA6OkdldERDKG1fdmlld1dpbmRvdyk7CisgICAgICAgIEhXbmREQyB3aW5kb3dE
QzsKKyAgICAgICAgd2luZG93REMuY2hhbmdlV2luZG93REMobV92aWV3V2luZG93KTsKICAgICAg
ICAgYml0bWFwREMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQyk7CiAgICAgICAgIG9s
ZEJpdG1hcCA9IDo6U2VsZWN0T2JqZWN0KGJpdG1hcERDLCBtX2JhY2tpbmdTdG9yZUJpdG1hcC0+
aGFuZGxlKCkpOwogICAgIH0KQEAgLTk5Niw3ICs5OTYsNiBAQCB2b2lkIFdlYlZpZXc6OnVwZGF0
ZUJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGRjLCBib29sIGJhY2tpbmdT
dG9yZQogICAgIGlmICghZGMpIHsKICAgICAgICAgOjpTZWxlY3RPYmplY3QoYml0bWFwREMsIG9s
ZEJpdG1hcCk7CiAgICAgICAgIDo6RGVsZXRlREMoYml0bWFwREMpOwotICAgICAgICA6OlJlbGVh
c2VEQyhtX3ZpZXdXaW5kb3csIHdpbmRvd0RDKTsKICAgICB9CiAKICAgICBHZGlGbHVzaCgpOwpA
QCAtMTAwOCw3ICsxMDA3LDcgQEAgdm9pZCBXZWJWaWV3OjpwZXJmb3JtTGF5ZXJlZFdpbmRvd1Vw
ZGF0ZSgpCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZUJpdG1hcCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgSERDIGhkY1NjcmVlbiA9IDo6R2V0REMobV92aWV3V2luZG93KTsKKyAgICBIV25kREMg
aGRjU2NyZWVuKG1fdmlld1dpbmRvdyk7CiAgICAgT3duUHRyPEhEQz4gaGRjTWVtID0gYWRvcHRQ
dHIoOjpDcmVhdGVDb21wYXRpYmxlREMoaGRjU2NyZWVuKSk7CiAgICAgSEJJVE1BUCBoYm1PbGQg
PSBzdGF0aWNfY2FzdDxIQklUTUFQPig6OlNlbGVjdE9iamVjdChoZGNNZW0uZ2V0KCksIG1fYmFj
a2luZ1N0b3JlQml0bWFwLT5oYW5kbGUoKSkpOwogCkBAIC0xMDI2LDcgKzEwMjUsNiBAQCB2b2lk
IFdlYlZpZXc6OnBlcmZvcm1MYXllcmVkV2luZG93VXBkYXRlKCkKICAgICA6OlVwZGF0ZUxheWVy
ZWRXaW5kb3cobV92aWV3V2luZG93LCBoZGNTY3JlZW4sIDAsICZ3aW5kb3dTaXplLCBoZGNNZW0u
Z2V0KCksICZsYXllclBvcywgMCwgJmJsZW5kRnVuY3Rpb24sIFVMV19BTFBIQSk7CiAKICAgICA6
OlNlbGVjdE9iamVjdChoZGNNZW0uZ2V0KCksIGhibU9sZCk7Ci0gICAgOjpSZWxlYXNlREMoMCwg
aGRjU2NyZWVuKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRp
b25zKQpAQCAtMTEzMiwxMyArMTEzMCwxNCBAQCB2b2lkIFdlYlZpZXc6OnBhaW50SW50b0JhY2tp
bmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGJpdG1hcERDLCBjb25zdCBJbgogICAg
IFJFQ1QgcmVjdCA9IGRpcnR5UmVjdDsKIAogI2lmIEZMQVNIX0JBQ0tJTkdfU1RPUkVfUkVEUkFX
Ci0gICAgSERDIGRjID0gOjpHZXREQyhtX3ZpZXdXaW5kb3cpOwotICAgIE93blB0cjxIQlJVU0g+
IHllbGxvd0JydXNoKENyZWF0ZVNvbGlkQnJ1c2goUkdCKDI1NSwgMjU1LCAwKSkpOwotICAgIEZp
bGxSZWN0KGRjLCAmcmVjdCwgeWVsbG93QnJ1c2guZ2V0KCkpOwotICAgIEdkaUZsdXNoKCk7Ci0g
ICAgU2xlZXAoNTApOwotICAgIHBhaW50SW50b1dpbmRvdyhiaXRtYXBEQywgZGMsIGRpcnR5UmVj
dCk7Ci0gICAgOjpSZWxlYXNlREMobV92aWV3V2luZG93LCBkYyk7CisgICAgeworICAgICAgICBI
V25kREMgZGMobV92aWV3V2luZG93KTsKKyAgICAgICAgT3duUHRyPEhCUlVTSD4geWVsbG93QnJ1
c2goQ3JlYXRlU29saWRCcnVzaChSR0IoMjU1LCAyNTUsIDApKSk7CisgICAgICAgIEZpbGxSZWN0
KGRjLCAmcmVjdCwgeWVsbG93QnJ1c2guZ2V0KCkpOworICAgICAgICBHZGlGbHVzaCgpOworICAg
ICAgICBTbGVlcCg1MCk7CisgICAgICAgIHBhaW50SW50b1dpbmRvdyhiaXRtYXBEQywgZGMsIGRp
cnR5UmVjdCk7CisgICAgfQogI2VuZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHQgZ2MoYml0bWFw
REMsIG1fdHJhbnNwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3dp
bi9TaGFyZWFibGVCaXRtYXBXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9TaGFy
ZWFibGVCaXRtYXBXaW4uY3BwCmluZGV4IGJmMjNkY2RmZjlhNjVlZGZkMWQwZDE3OWU0ODZhNmI4
M2I3MGQyMzYuLjJlZDg0MjhiMDZjNTQ5YzY5ZTJiYmRiMDRiMDZkZmRjOGNjZTljNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcFdpbi5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM5LDEwICs0MCwxMCBAQCBIREMg
U2hhcmVhYmxlQml0bWFwOjp3aW5kb3dzQ29udGV4dCgpIGNvbnN0CiAgICAgaWYgKG1fd2luZG93
c0NvbnRleHQpCiAgICAgICAgIHJldHVybiBtX3dpbmRvd3NDb250ZXh0LmdldCgpOwogCi0gICAg
T3duUHRyPEhEQz4gc2NyZWVuREMgPSBhZG9wdFB0cig6OkdldERDKDApKTsKKyAgICBIV25kREMg
c2NyZWVuREMoMCk7CiAgICAgQml0bWFwSW5mbyBibUluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGVC
b3R0b21VcChtX3NpemUpOwogCi0gICAgbV93aW5kb3dzQ29udGV4dCA9IGFkb3B0UHRyKDo6Q3Jl
YXRlQ29tcGF0aWJsZURDKHNjcmVlbkRDLmdldCgpKSk7CisgICAgbV93aW5kb3dzQ29udGV4dCA9
IGFkb3B0UHRyKDo6Q3JlYXRlQ29tcGF0aWJsZURDKHNjcmVlbkRDKSk7CiAgICAgbV93aW5kb3dz
Qml0bWFwID0gYWRvcHRQdHIoQ3JlYXRlRElCU2VjdGlvbihtX3dpbmRvd3NDb250ZXh0LmdldCgp
LCAmYm1JbmZvLCBESUJfUkdCX0NPTE9SUywgMCwgbV9zaGFyZWRNZW1vcnktPmhhbmRsZSgpLCAw
KSk7CiAgICAgOjpTZWxlY3RPYmplY3QobV93aW5kb3dzQ29udGV4dC5nZXQoKSwgbV93aW5kb3dz
Qml0bWFwLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYlBvcHVwTWVudVByb3h5V2luLmNwcAppbmRleCBkMzJlMGY4MTczMGRiZmViMmNmMzA5ODJj
YmQxNjE3M2QwMzExNTRmLi4xNGMzMDMyZTBiMTBmOWNkZGM1N2FkOWY5ZTIzMmNiZjUyOTdlNWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVBy
b3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVu
dVByb3h5V2luLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29y
ZUluc3RhbmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFduZERD
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNpbmNsdWRlIDx3
aW5kb3dzeC5oPgogCkBAIC04MDgsNyArODA5LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVdp
bjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX0RDKSB7Ci0gICAgICAgIG1fREMgPSA6OkNyZWF0ZUNvbXBhdGli
bGVEQyg6OkdldERDKG1fcG9wdXApKTsKKyAgICAgICAgbV9EQyA9IDo6Q3JlYXRlQ29tcGF0aWJs
ZURDKEhXbmREQyhtX3BvcHVwKSk7CiAgICAgICAgIGlmICghbV9EQykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC04NDgsMTIgKzg0OSwxMSBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5
V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQogICAgIGlmICht
X3Njcm9sbGJhcikKICAgICAgICAgbV9zY3JvbGxiYXItPnBhaW50KCZjb250ZXh0LCBkYW1hZ2VS
ZWN0KTsKIAotICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogOjpHZXREQyhtX3BvcHVwKTsK
IAotICAgIDo6Qml0Qmx0KGxvY2FsREMsIGRhbWFnZVJlY3QueCgpLCBkYW1hZ2VSZWN0LnkoKSwg
ZGFtYWdlUmVjdC53aWR0aCgpLCBkYW1hZ2VSZWN0LmhlaWdodCgpLCBtX0RDLCBkYW1hZ2VSZWN0
LngoKSwgZGFtYWdlUmVjdC55KCksIFNSQ0NPUFkpOworICAgIEhXbmREQyBoV25kREM7CisgICAg
SERDIGxvY2FsREMgPSBoZGMgPyBoZGMgOiBoV25kREMuY2hhbmdlV2luZG93REMobV9wb3B1cCk7
CiAKLSAgICBpZiAoIWhkYykKLSAgICAgICAgOjpSZWxlYXNlREMobV9wb3B1cCwgbG9jYWxEQyk7
CisgICAgOjpCaXRCbHQobG9jYWxEQywgZGFtYWdlUmVjdC54KCksIGRhbWFnZVJlY3QueSgpLCBk
YW1hZ2VSZWN0LndpZHRoKCksIGRhbWFnZVJlY3QuaGVpZ2h0KCksIG1fREMsIGRhbWFnZVJlY3Qu
eCgpLCBkYW1hZ2VSZWN0LnkoKSwgU1JDQ09QWSk7CiB9CiAKIGJvb2wgV2ViUG9wdXBNZW51UHJv
eHlXaW46OnNldEZvY3VzZWRJbmRleChpbnQgaSwgYm9vbCBob3RUcmFja2luZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGQ0NGUyNTU2MGUyZTE1ODUxNWEw
MmQzZDJmOTgzN2E1YjEwYjc1ZWMuLmMwMDYxZmNjNjQ2Y2UzMjU4MTlkYTFiYmZlNzg3OGUwNzUz
YmM0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtNTIs
NiArNTIsNyBAQAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dENHLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgpAQCAtOTU5LDkgKzk2MCw4IEBAIHZvaWQgV2ViVmll
dzo6c2Nyb2xsVmlldyhjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBz
Y3JvbGxPZmZzZXQpCiB2b2lkIFdlYlZpZXc6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25z
dCBWZWN0b3I8SW50UmVjdD4mIHVwZGF0ZVJlY3RzKQogewogICAgIHN0YXRpYyBIQlJVU0ggYnJ1
c2ggPSBjcmVhdGVCcnVzaChXZWJQYWdlUHJveHk6OmJhY2tpbmdTdG9yZVVwZGF0ZXNGbGFzaENv
bG9yKCkucmdiKCkpLmxlYWtQdHIoKTsKLSAgICBIREMgZGMgPSA6OkdldERDKG1fd2luZG93KTsK
KyAgICBIV25kREMgZGMobV93aW5kb3cpOwogICAgIGZsYXNoUmVjdHMoZGMsIHVwZGF0ZVJlY3Rz
LmRhdGEoKSwgdXBkYXRlUmVjdHMuc2l6ZSgpLCBicnVzaCk7Ci0gICAgOjpSZWxlYXNlREMobV93
aW5kb3csIGRjKTsKIH0KIAogV2ViQ29yZTo6SW50U2l6ZSBXZWJWaWV3Ojp2aWV3U2l6ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123007</attachid>
            <date>2012-01-18 15:15:27 -0800</date>
            <delta_ts>2012-01-18 21:51:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76303-20120118151526.patch</filename>
            <type>text/plain</type>
            <size>38552</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI0ZjllNWM4MDM3MTk3
YzRhZjk4ODQ1ZjBiY2Q2MzA0YjczNzMzNy4uZGQwNjY2ZDI0N2JjNGFmZmU1ZGNmNWRhNWVlYmEw
NTc1YmEwYjEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTAxLTE3ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVy
dCB1c2FnZXMgb2YgR2V0REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBzbyBubyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpnZXRUcmFpdHNJbkZhbWlseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERh
dGE6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBs
ZUZvbnREYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjppbml0
R0RJRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Y29udGFpbnNDaGFy
YWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQaXRj
aCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Ym91bmRzRm9yR0RJR2x5cGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZUFuZFBsYWNlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVTaGFyZWRDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bv
cHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnBhaW50KToK
KworMjAxMi0wMS0xMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW3dpbmRvd3NdIENvbnZlcnQgdXNhZ2VzIG9mIEdldERDIHRvIEhXbmREQy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxp
dHkgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnREYXRh
Rm9yQ2hhcmFjdGVycyk6IENoYW5nZWQgR2V0REMgdG8gSFduZERDCisgICAgICAgIGFuZCByZW1v
dmVkIFJlbGVhc2VEQy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCk6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6aW5pdEdESUZvbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpjb250YWluc0NoYXJhY3Rl
cnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpkZXRlcm1pbmVQ
aXRjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmJvdW5kc0Zv
ckdESUdseXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6d2lk
dGhGb3JHRElHbHlwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6
OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2Ny
aWJlQ29udHJvbGxlcjo6c2hhcGVBbmRQbGFjZUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vd2luL0N1cnNvcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGFyZWRDdXJz
b3IpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2NhbGVEcmFnSW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdl
Rm9yTGluayk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTWVudVdpbjo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vSFdu
ZERDLmg6IENoYW5nZWQgdGhpcyBzbGlnaHRseSB0byBhbGxvdworICAgICAgICBmb3IgYWxsb2Nh
dGluZyBhIHdpbmRvdyBEQyBhZnRlciB0aGUgaW5pdGlhbCBjcmVhdGlvbiBzaW5jZQorICAgICAg
ICB0aGlzIHBhdHRlcm4gb2NjdXJyZWQgaW4gc2V2ZXJhbCBwbGFjZXMuCisgICAgICAgIChXZWJD
b3JlOjpIV25kREM6OkhXbmREQyk6CisgICAgICAgIChXZWJDb3JlOjpIV25kREM6On5IV25kREMp
OgorICAgICAgICAoV2ViQ29yZTo6SFduZERDOjpjaGFuZ2VXaW5kb3dEQyk6CisgICAgICAgIChX
ZWJDb3JlOjpIV25kREM6OmNsZWFyREMpOgorCiAyMDEyLTAxLTEzICBEYXZpZCBMZXZpbiAgPGxl
dmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENvbnZlcnQgdXNlcyBvZiBH
ZXREQyB0byBIV25kREMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzg0ZmFhNWQwMTVlNTI1MDk2YjU2
ZjJlMTVjMzRjY2ZjN2Q2ODhiNy4uMzQwMTY2ZmY3NDg2N2ZhODFhODNlMmVlOTI0M2JkY2E0M2E4
OTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAxLTE3ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVy
dCB1c2FnZXMgb2YgR2V0REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoY3JlYXRlQ29tcGF0aWJsZURDRm9yV2luZG93KTogTW92ZWQgb3V0IHRoZSBjb2RlIHdo
aWNoIGNyZWF0ZXMgYSBEQyBmb3IgYSB3aW5kb3cKKyAgICAgICAgYW5kIHN3aXRjaCB0byB1c2lu
ZyBIV25kREMgYW5kIE93blB0cjxIREM+IGZvciB0aGlzIGNvZGUuCisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KTogRGl0dG8uCisgICAgICAgICogV2ViSWNvbkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKGNyZWF0ZURJQik6IENoYW5nZWQgR2V0REMgdG8gSFduZERDIGFu
ZCByZW1vdmVkIFJlbGVhc2VEQy4KKyAgICAgICAgKiBXZWJOb2RlSGlnaGxpZ2h0LmNwcDoKKyAg
ICAgICAgKFdlYk5vZGVIaWdobGlnaHQ6OnVwZGF0ZSk6IENsZWFuZWQgdXAgbGVha3MgZnJvbSBj
YWxsaW5nIEdldERDIGFuZCBhIHBvdGVudGlhbAorICAgICAgICBsZWFrIG9mIHRoZSByZXN1bHQg
ZnJvbSBDcmVhdGVDb21wYXRpYmxlREMgaW4gYW4gZWFybHkgZXhpdCBzY2VuYXJpbyBieSB1c2lu
ZworICAgICAgICBIV25kREMgYW5kIE93blB0cjxIREM+CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUpOiBUeXBpY2FsIGNvbnZlcnNp
b24uCisgICAgICAgIChXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUpOiBVc2UgT1duUHRyIHRv
IGhhbmRsZSB0aGUgY29uZGl0aW9uYWwgYWxsb2NhdGlvbiBvZiBhIERDLgorICAgICAgICAoV2Vi
Vmlldzo6cGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUpOiBUeXBpY2FsIGNvbnZlcnNpb24uCisg
ICAgICAgIChXZWJWaWV3OjpwYWludEludG9CYWNraW5nU3RvcmUpOiBEaXR0by4KKwogMjAxMi0w
MS0wNyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2ZlNjM2Njc2MDJmOTBkYjY1YWNiNWQ1
YzllNWUzZjJjMWViMDA1MC4uNjllYTVmOTAwNDhiZmE4OTg5OWRjYmQ0ZjFmOWJmOTdhMmZkYzBi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTE3ICBEYXZpZCBMZXZpbiAg
PGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVydCB1c2FnZXMg
b2YgR2V0REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OndpbmRvd3NDb250ZXh0KTogRml4
IGluY29ycmVjdCB1c2FnZSBvZiBPd25QdHI8SERDPiB3aGljaAorICAgICAgICB3b3VsZCBkbyBh
IERlbGV0ZURDIGluc3RlYWQgb2YgYSBSZWxlYXNlREMuCisgICAgICAgICogVUlQcm9jZXNzL3dp
bi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5V2luOjpwYWludCk6IEZpeGVkIGEgbGVhayBhbmQgYSB0eXBpY2FsIGNvbnZlcnNpb24u
CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKTogVHlwaWNhbCBjb252ZXJzaW9uLgor
CiAyMDEyLTAxLTE3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBbV0syXSBXZWJLaXRQcml2YXRlIHNob3VsZCBpbmNsdWRlIHRoZSBlbnRp
cmUgV2ViS2l0MiBDIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCAzZWI3NDM2ZWUyZTU1ZDk1MGU1ZDIwMGM1
MTdkN2I0NGQ4YjYwNzY3Li40ZDFiMmNmZDM2OWYwMmExZjdjODc3YjU0ODFmYjY2YmZlNTgyYzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENh
Y2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENhY2hlV2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAj
aW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkhXbmRE
Qy5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5jbHVkZSAiVW5pY29kZVJhbmdl
LmgiCiAjaW5jbHVkZSA8bWxhbmcuaD4KQEAgLTE4OSw3ICsxOTAsNyBAQCBjb25zdCBTaW1wbGVG
b250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgRm9udCYg
Zm9udCwgY29ucwogewogICAgIFVDaGFyIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbMF07CiAgICAg
U2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0gMDsKLSAgICBIREMgaGRjID0gR2V0REMoMCk7Cisg
ICAgSFduZERDIGhkYygwKTsKICAgICBIRk9OVCBwcmltYXJ5Rm9udCA9IGZvbnQucHJpbWFyeUZv
bnQoKS0+Zm9udERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKS0+cGxhdGZvcm1EYXRhKCkuaGZv
bnQoKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBwcmltYXJ5Rm9u
dCk7CiAgICAgSEZPTlQgaGZvbnQgPSAwOwpAQCAtMjkyLDcgKzI5Myw2IEBAIGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250
JiBmb250LCBjb25zCiAgICAgICAgIERlbGV0ZU9iamVjdChoZm9udCk7CiAgICAgfQogCi0gICAg
UmVsZWFzZURDKDAsIGhkYyk7CiAgICAgcmV0dXJuIGZvbnREYXRhOwogfQogCkBAIC00NDcsNyAr
NDQ3LDcgQEAgc3RhdGljIGludCBDQUxMQkFDSyBtYXRjaEltcHJvdmluZ0VudW1Qcm9jKENPTlNU
IExPR0ZPTlQqIGNhbmRpZGF0ZSwgQ09OU1QgVEVYVE0KIAogc3RhdGljIEhGT05UIGNyZWF0ZUdE
SUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlaWdodCwgYm9v
bCBkZXNpcmVkSXRhbGljLCBpbnQgc2l6ZSwgYm9vbCBzeW50aGVzaXplSXRhbGljKQogewotICAg
IEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwogCiAgICAgTE9HRk9OVCBs
b2dGb250OwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwpAQCAtNDU5
LDggKzQ1OSw2IEBAIHN0YXRpYyBIRk9OVCBjcmVhdGVHRElGb250KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZmFtaWx5LCBMT05HIGRlc2lyZWRXZWlnaHQsIGJvb2wKICAgICBNYXRjaEltcHJvdmluZ1By
b2NEYXRhIG1hdGNoRGF0YShkZXNpcmVkV2VpZ2h0LCBkZXNpcmVkSXRhbGljKTsKICAgICBFbnVt
Rm9udEZhbWlsaWVzRXgoaGRjLCAmbG9nRm9udCwgbWF0Y2hJbXByb3ZpbmdFbnVtUHJvYywgcmVp
bnRlcnByZXRfY2FzdDxMUEFSQU0+KCZtYXRjaERhdGEpLCAwKTsKIAotICAgIFJlbGVhc2VEQygw
LCBoZGMpOwotCiAgICAgaWYgKCFtYXRjaERhdGEubV9oYXNNYXRjaGVkKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtNDg2LDEzICs0ODQsMTIgQEAgc3RhdGljIEhGT05UIGNyZWF0ZUdESUZvbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlaWdodCwgYm9vbAogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhEQyBkYyA9IEdldERDKDAp
OworICAgIEhXbmREQyBkYygwKTsKICAgICBTYXZlREMoZGMpOwogICAgIFNlbGVjdE9iamVjdChk
YywgcmVzdWx0KTsKICAgICBXQ0hBUiBhY3R1YWxOYW1lW0xGX0ZBQ0VTSVpFXTsKICAgICBHZXRU
ZXh0RmFjZShkYywgTEZfRkFDRVNJWkUsIGFjdHVhbE5hbWUpOwogICAgIFJlc3RvcmVEQyhkYywg
LTEpOwotICAgIFJlbGVhc2VEQygwLCBkYyk7CiAKICAgICBpZiAod2NzaWNtcChtYXRjaERhdGEu
bV9jaG9zZW4ubGZGYWNlTmFtZSwgYWN0dWFsTmFtZSkpIHsKICAgICAgICAgRGVsZXRlT2JqZWN0
KHJlc3VsdCk7CkBAIC01MzQsNyArNTMxLDcgQEAgc3RhdGljIGludCBDQUxMQkFDSyB0cmFpdHNJ
bkZhbWlseUVudW1Qcm9jKENPTlNUIExPR0ZPTlQqIGxvZ0ZvbnQsIENPTlNUIFRFWFRNRVQKIH0K
IHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQogewotICAgIEhEQyBoZGMg
PSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwogCiAgICAgTE9HRk9OVCBsb2dGb250Owog
ICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwpAQCAtNTQ2LDggKzU0Myw2
IEBAIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lCiAgICAgVHJhaXRzSW5GYW1pbHlQcm9jRGF0YSBw
cm9jRGF0YShmYW1pbHlOYW1lKTsKICAgICBFbnVtRm9udEZhbWlsaWVzRXgoaGRjLCAmbG9nRm9u
dCwgdHJhaXRzSW5GYW1pbHlFbnVtUHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZwcm9j
RGF0YSksIDApOwogICAgIGNvcHlUb1ZlY3Rvcihwcm9jRGF0YS5tX3RyYWl0c01hc2tzLCB0cmFp
dHNNYXNrcyk7Ci0KLSAgICBSZWxlYXNlREMoMCwgaGRjKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0
YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRh
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcAppbmRleCBkMGIzN2JkYTNlNWY2ZjM4NmFmZWQ3NTU0ZDI5NzgxMDdhMzk2
NWRhLi45ODYwZGY2YTIxMzlhNjkwMGQwZmI4MzRiM2VjZmMzNWEzOWJkNjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTUxLDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShIRk9OVCBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wg
b2JsaXEKICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShvYmxpcXVlKQogICAgICwgbV91c2VHREko
dXNlR0RJKQogewotICAgIEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwog
ICAgIFNhdmVEQyhoZGMpOwogICAgIAogICAgIFNlbGVjdE9iamVjdChoZGMsIGZvbnQpOwpAQCAt
NzEsNyArNzIsNiBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEhGT05UIGZv
bnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcQogICAgIH0KIAogICAgIFJlc3Rv
cmVEQyhoZGMsIC0xKTsKLSAgICBSZWxlYXNlREMoMCwgaGRjKTsKIH0KIAogI2lmbmRlZiBOREVC
VUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1w
bGVGb250RGF0YUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9TaW1wbGVGb250RGF0YUNHV2luLmNwcAppbmRleCAyZDhmMTNlMzZlZGJlMTYyZmI4NjAzZDgy
ZDBlZDY0NmE2Mzc1MTQzLi5hZDAyNWI4MDNiZmIwZDJiZDk5MGFjYzliNGJkZTA1YmI5M2NkNDY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxl
Rm9udERhdGFDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udERlc2Ny
aXB0aW9uLmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4K
ICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CkBAIC01NSw3ICs1Niw3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCiAg
ICAgbV9pc1N5c3RlbUZvbnQgPSBmYWxzZTsKIAogICAgIGlmIChtX3BsYXRmb3JtRGF0YS51c2VH
REkoKSkKLSAgICAgICByZXR1cm4gaW5pdEdESUZvbnQoKTsKKyAgICAgICAgcmV0dXJuIGluaXRH
RElGb250KCk7CiAKICAgICBDR0ZvbnRSZWYgZm9udCA9IG1fcGxhdGZvcm1EYXRhLmNnRm9udCgp
OwogICAgIGludCBpQXNjZW50ID0gQ0dGb250R2V0QXNjZW50KGZvbnQpOwpAQCAtNjgsMTQgKzY5
LDEzIEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCiAgICAgZmxvYXQgZkxp
bmVHYXAgPSBzY2FsZUVtVG9Vbml0cyhpTGluZUdhcCwgdW5pdHNQZXJFbSkgKiBwb2ludFNpemU7
CiAKICAgICBpZiAoIWlzQ3VzdG9tRm9udCgpKSB7Ci0gICAgICAgIEhEQyBkYyA9IEdldERDKDAp
OworICAgICAgICBIV25kREMgZGMoMCk7CiAgICAgICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVj
dE9iamVjdChkYywgbV9wbGF0Zm9ybURhdGEuaGZvbnQoKSk7CiAgICAgICAgIGludCBmYWNlTGVu
Z3RoID0gR2V0VGV4dEZhY2UoZGMsIDAsIDApOwogICAgICAgICBWZWN0b3I8V0NIQVI+IGZhY2VO
YW1lKGZhY2VMZW5ndGgpOwogICAgICAgICBHZXRUZXh0RmFjZShkYywgZmFjZUxlbmd0aCwgZmFj
ZU5hbWUuZGF0YSgpKTsKICAgICAgICAgbV9pc1N5c3RlbUZvbnQgPSAhd2NzY21wKGZhY2VOYW1l
LmRhdGEoKSwgTCJMdWNpZGEgR3JhbmRlIik7CiAgICAgICAgIFNlbGVjdE9iamVjdChkYywgb2xk
Rm9udCk7Ci0gICAgICAgIFJlbGVhc2VEQygwLCBkYyk7CiAKICAgICAgICAgZkFzY2VudCA9IGFz
Y2VudENvbnNpZGVyaW5nTWFjQXNjZW50SGFjayhmYWNlTmFtZS5kYXRhKCksIGZBc2NlbnQsIGZE
ZXNjZW50KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhV2luLmNwcAppbmRleCBkZTY2ODdmNWM3YTgzMzM1
YjEyOTRiZjBkOTQ5NDM2ZTA0ZmJlYzRmLi45ODNjMWJmOTJiZWYxNzM5N2U3YTQzZWIyZWY2NWNi
ZGM3ZDkyMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdpbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250
RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlIDxtbGFuZy5oPgog
I2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KICNpbmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+CkBA
IC04OSw3ICs5MCw3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmluaXRHRElGb250KCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgICBIREMgaGRjID0gR2V0REMoMCk7CisgICAgIEhXbmRE
QyBoZGMoMCk7CiAgICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIG1fcGxh
dGZvcm1EYXRhLmhmb250KCkpOwogICAgICBPVVRMSU5FVEVYVE1FVFJJQyBtZXRyaWNzOwogICAg
ICBHZXRPdXRsaW5lVGV4dE1ldHJpY3MoaGRjLCBzaXplb2YobWV0cmljcyksICZtZXRyaWNzKTsK
QEAgLTExNSw5ICsxMTYsNiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjppbml0R0RJRm9udCgpCiAg
ICAgIG1fZm9udE1ldHJpY3Muc2V0VW5pdHNQZXJFbShtZXRyaWNzLm90bUVNU3F1YXJlKTsKIAog
ICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKLSAgICAgUmVsZWFzZURDKDAsIGhkYyk7
Ci0KLSAgICAgcmV0dXJuOwogfQogCiB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUNoYXJX
aWR0aEluaXQoKQpAQCAtMTg1LDggKzE4Myw4IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6OmNvbnRh
aW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkgY29uCiAg
ICAgaWYgKCFsYW5nRm9udExpbmspCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhEQyBk
YyA9IEdldERDKDApOwotICAgIAorICAgIEhXbmREQyBkYygwKTsKKwogICAgIERXT1JEIGFjcENv
ZGVQYWdlczsKICAgICBsYW5nRm9udExpbmstPkNvZGVQYWdlVG9Db2RlUGFnZXMoQ1BfQUNQLCAm
YWNwQ29kZVBhZ2VzKTsKIApAQCAtMjAzLDggKzIwMSw2IEBAIGJvb2wgU2ltcGxlRm9udERhdGE6
OmNvbnRhaW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkg
Y29uCiAgICAgICAgIG9mZnNldCArPSBudW1DaGFyYWN0ZXJzUHJvY2Vzc2VkOwogICAgIH0KIAot
ICAgIFJlbGVhc2VEQygwLCBkYyk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjE2LDcg
KzIxMiw3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKICAgICB9CiAK
ICAgICAvLyBURVhUTUVUUklDUyBoYXZlIHRoaXMuICBTZXQgbV90cmVhdEFzRml4ZWRQaXRjaCBi
YXNlZCBvZmYgdGhhdC4KLSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7
CiAgICAgU2F2ZURDKGRjKTsKICAgICBTZWxlY3RPYmplY3QoZGMsIG1fcGxhdGZvcm1EYXRhLmhm
b250KCkpOwogCkBAIC0yMjcsMTIgKzIyMywxMSBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpkZXRl
cm1pbmVQaXRjaCgpCiAgICAgbV90cmVhdEFzRml4ZWRQaXRjaCA9ICgodG0udG1QaXRjaEFuZEZh
bWlseSAmIFRNUEZfRklYRURfUElUQ0gpID09IDApOwogCiAgICAgUmVzdG9yZURDKGRjLCAtMSk7
Ci0gICAgUmVsZWFzZURDKDAsIGRjKTsKIH0KIAogRmxvYXRSZWN0IFNpbXBsZUZvbnREYXRhOjpi
b3VuZHNGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsKLSAgICBIREMgaGRjID0gR2V0
REMoMCk7CisgICAgSFduZERDIGhkYygwKTsKICAgICBTZXRHcmFwaGljc01vZGUoaGRjLCBHTV9B
RFZBTkNFRCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgbV9wbGF0
Zm9ybURhdGEuaGZvbnQoKSk7CiAgICAgCkBAIC0yNDEsNyArMjM2LDYgQEAgRmxvYXRSZWN0IFNp
bXBsZUZvbnREYXRhOjpib3VuZHNGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICBH
ZXRHbHlwaE91dGxpbmUoaGRjLCBnbHlwaCwgR0dPX01FVFJJQ1MgfCBHR09fR0xZUEhfSU5ERVgs
ICZnZGlNZXRyaWNzLCAwLCAwLCAmaWRlbnRpdHkpOwogICAgIAogICAgIFNlbGVjdE9iamVjdCho
ZGMsIG9sZEZvbnQpOwotICAgIFJlbGVhc2VEQygwLCBoZGMpOwogICAgIAogICAgIHJldHVybiBG
bG9hdFJlY3QoZ2RpTWV0cmljcy5nbXB0R2x5cGhPcmlnaW4ueCwgLWdkaU1ldHJpY3MuZ21wdEds
eXBoT3JpZ2luLnksCiAgICAgICAgIGdkaU1ldHJpY3MuZ21CbGFja0JveFggKyBtX3N5bnRoZXRp
Y0JvbGRPZmZzZXQsIGdkaU1ldHJpY3MuZ21CbGFja0JveFkpOyAKQEAgLTI0OSw3ICsyNDMsNyBA
QCBGbG9hdFJlY3QgU2ltcGxlRm9udERhdGE6OmJvdW5kc0ZvckdESUdseXBoKEdseXBoIGdseXBo
KSBjb25zdAogICAgIAogZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5cGgoR2x5
cGggZ2x5cGgpIGNvbnN0CiB7Ci0gICAgSERDIGhkYyA9IEdldERDKDApOworICAgIEhXbmREQyBo
ZGMoMCk7CiAgICAgU2V0R3JhcGhpY3NNb2RlKGhkYywgR01fQURWQU5DRUQpOwogICAgIEhHRElP
Qkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwog
CkBAIC0yNTgsNyArMjUyLDYgQEAgZmxvYXQgU2ltcGxlRm9udERhdGE6OndpZHRoRm9yR0RJR2x5
cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgR2V0R2x5cGhPdXRsaW5lKGhkYywgZ2x5cGgsIEdH
T19NRVRSSUNTIHwgR0dPX0dMWVBIX0lOREVYLCAmZ2RpTWV0cmljcywgMCwgMCwgJmlkZW50aXR5
KTsKIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwotICAgIFJlbGVhc2VEQygwLCBo
ZGMpOwogCiAgICAgcmV0dXJuIGdkaU1ldHJpY3MuZ21DZWxsSW5jWCArIG1fc3ludGhldGljQm9s
ZE9mZnNldDsKIH0KQEAgLTI3MSwxMiArMjY0LDExIEBAIFNDUklQVF9GT05UUFJPUEVSVElFUyog
U2ltcGxlRm9udERhdGE6OnNjcmlwdEZvbnRQcm9wZXJ0aWVzKCkgY29uc3QKICAgICAgICAgbV9z
Y3JpcHRGb250UHJvcGVydGllcy0+Y0J5dGVzID0gc2l6ZW9mKFNDUklQVF9GT05UUFJPUEVSVElF
Uyk7CiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gU2NyaXB0R2V0Rm9udFByb3BlcnRpZXMoMCwg
c2NyaXB0Q2FjaGUoKSwgbV9zY3JpcHRGb250UHJvcGVydGllcyk7CiAgICAgICAgIGlmIChyZXN1
bHQgPT0gRV9QRU5ESU5HKSB7Ci0gICAgICAgICAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICAg
ICAgICAgIEhXbmREQyBkYygwKTsKICAgICAgICAgICAgIFNhdmVEQyhkYyk7CiAgICAgICAgICAg
ICBTZWxlY3RPYmplY3QoZGMsIG1fcGxhdGZvcm1EYXRhLmhmb250KCkpOwogICAgICAgICAgICAg
U2NyaXB0R2V0Rm9udFByb3BlcnRpZXMoZGMsIHNjcmlwdENhY2hlKCksIG1fc2NyaXB0Rm9udFBy
b3BlcnRpZXMpOwogICAgICAgICAgICAgUmVzdG9yZURDKGRjLCAtMSk7Ci0gICAgICAgICAgICBS
ZWxlYXNlREMoMCwgZGMpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBtX3NjcmlwdEZv
bnRQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCmluZGV4IDY3ZTM0YTcxZDg2ZTk2
ZDlmNGQ1NzhiYjc5MWQ1MDQ1MGE0ZDgxNGQuLjc4NDg2NDJlNTJjYWI2ODc1NWJkNjYyM2I0MzY0
M2ZmMjhiYmM2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVbmlzY3JpYmVDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIlNpbXBsZUZv
bnREYXRhLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CkBAIC0yNDgsMTMgKzI0OSwxMiBAQCBib29sIFVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBl
QW5kUGxhY2VJdGVtKGNvbnN0IFVDaGFyKiBjcCwgdW5zaWduZWQgaSwgY29uc3QgUwogICAgIGlm
IChwbGFjZVJlc3VsdCA9PSBFX1BFTkRJTkcpIHsKICAgICAgICAgLy8gVGhlIHNjcmlwdCBjYWNo
ZSBpc24ndCBwcmltZWQgd2l0aCBlbm91Z2ggaW5mbyB5ZXQuICBXZSBuZWVkIHRvIHNlbGVjdCBv
dXIgSEZPTlQgaW50bwogICAgICAgICAvLyBhIERDIGFuZCBwYXNzIHRoZSBEQyBpbiB0byBTY3Jp
cHRQbGFjZS4KLSAgICAgICAgSERDIGhkYyA9IEdldERDKDApOworICAgICAgICBIV25kREMgaGRj
KDApOwogICAgICAgICBIRk9OVCBoZm9udCA9IGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5oZm9u
dCgpOwogICAgICAgICBIRk9OVCBvbGRGb250ID0gKEhGT05UKVNlbGVjdE9iamVjdChoZGMsIGhm
b250KTsKICAgICAgICAgcGxhY2VSZXN1bHQgPSBTY3JpcHRQbGFjZShoZGMsIGZvbnREYXRhLT5z
Y3JpcHRDYWNoZSgpLCBnbHlwaHMuZGF0YSgpLCBnbHlwaHMuc2l6ZSgpLCB2aXN1YWxBdHRyaWJ1
dGVzLmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlbS5hLCBh
ZHZhbmNlcy5kYXRhKCksIG9mZnNldHMuZGF0YSgpLCAwKTsKICAgICAgICAgU2VsZWN0T2JqZWN0
KGhkYywgb2xkRm9udCk7Ci0gICAgICAgIFJlbGVhc2VEQygwLCBoZGMpOwogICAgIH0KICAgICAK
ICAgICBpZiAoRkFJTEVEKHBsYWNlUmVzdWx0KSB8fCBnbHlwaHMuaXNFbXB0eSgpKQpAQCAtMzgw
LDcgKzM4MCw3IEBAIGJvb2wgVW5pc2NyaWJlQ29udHJvbGxlcjo6c2hhcGUoY29uc3QgVUNoYXIq
IHN0ciwgaW50IGxlbiwgU0NSSVBUX0lURU0gaXRlbSwgY29uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZlY3RvcjxXT1JEPiYgZ2x5cGhzLCBWZWN0b3I8V09SRD4mIGNsdXN0ZXJz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U0NSSVBUX1ZJU0FUVFI+
JiB2aXN1YWxBdHRyaWJ1dGVzKQogewotICAgIEhEQyBoZGMgPSAwOworICAgIEhXbmREQyBoZGM7
CiAgICAgSEZPTlQgb2xkRm9udCA9IDA7CiAgICAgSFJFU1VMVCBzaGFwZVJlc3VsdCA9IEVfUEVO
RElORzsKICAgICBpbnQgZ2x5cGhDb3VudCA9IDA7CkBAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBV
bmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuLCBTQ1JJ
UFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAgICAgIC8vIFRoZSBzY3JpcHQgY2FjaGUgaXNuJ3Qg
cHJpbWVkIHdpdGggZW5vdWdoIGluZm8geWV0LiAgV2UgbmVlZCB0byBzZWxlY3Qgb3VyIEhGT05U
IGludG8KICAgICAgICAgICAgIC8vIGEgREMgYW5kIHBhc3MgdGhlIERDIGluIHRvIFNjcmlwdFNo
YXBlLgogICAgICAgICAgICAgQVNTRVJUKCFoZGMpOwotICAgICAgICAgICAgaGRjID0gR2V0REMo
MCk7CisgICAgICAgICAgICBoZGMuY2hhbmdlV2luZG93REMoMCk7CiAgICAgICAgICAgICBIRk9O
VCBoZm9udCA9IGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5oZm9udCgpOwogICAgICAgICAgICAg
b2xkRm9udCA9IChIRk9OVClTZWxlY3RPYmplY3QoaGRjLCBoZm9udCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoc2hhcGVSZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkgewpAQCAtNDAxLDEwICs0MDEsOCBA
QCBib29sIFVuaXNjcmliZUNvbnRyb2xsZXI6OnNoYXBlKGNvbnN0IFVDaGFyKiBzdHIsIGludCBs
ZW4sIFNDUklQVF9JVEVNIGl0ZW0sIGNvbgogICAgICAgICB9CiAgICAgfSB3aGlsZSAoc2hhcGVS
ZXN1bHQgPT0gRV9QRU5ESU5HIHx8IHNoYXBlUmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwogCi0g
ICAgaWYgKGhkYykgeworICAgIGlmIChoZGMpCiAgICAgICAgIFNlbGVjdE9iamVjdChoZGMsIG9s
ZEZvbnQpOwotICAgICAgICBSZWxlYXNlREMoMCwgaGRjKTsKLSAgICB9CiAKICAgICBpZiAoRkFJ
TEVEKHNoYXBlUmVzdWx0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0N1cnNvcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAppbmRleCA1NDRiOWE3N2JmNDYwNjM4MGY3ZGJjOGMz
OWIyYmEzMDM1OTA2N2NlLi5jZTRkNThmYjQyMWE1ZDg0NzJhNzM2MzgyYWJkZThjMTQ3MzUwOWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIkN1cnNvci5oIgogCiAjaW5jbHVkZSAiQml0bWFwSW5mby5oIgor
I2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UG9p
bnQuaCIKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCkBAIC00OSw3ICs1MCw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVkQ3Vyc29yKEltYWdlKiBpbWcsIGNv
bnN0IEludFBvaW50JiBoCiAgICAgc3RhdGljIGJvb2wgZG9BbHBoYSA9IHdpbmRvd3NWZXJzaW9u
KCkgPj0gV2luZG93c1hQOwogICAgIEJpdG1hcEluZm8gY3Vyc29ySW1hZ2UgPSBCaXRtYXBJbmZv
OjpjcmVhdGUoSW50U2l6ZShpbWctPndpZHRoKCksIGltZy0+aGVpZ2h0KCkpKTsKIAotICAgIEhE
QyBkYyA9IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIREMgd29ya2luZ0RDID0g
Q3JlYXRlQ29tcGF0aWJsZURDKGRjKTsKICAgICBpZiAoZG9BbHBoYSkgewogICAgICAgICBPd25Q
dHI8SEJJVE1BUD4gaEN1cnNvciA9IGFkb3B0UHRyKENyZWF0ZURJQlNlY3Rpb24oZGMsIChCSVRN
QVBJTkZPICopJmN1cnNvckltYWdlLCBESUJfUkdCX0NPTE9SUywgMCwgMCwgMCkpOwpAQCAtMTEy
LDcgKzExMyw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEN1cnNvcj4gY3JlYXRlU2hhcmVk
Q3Vyc29yKEltYWdlKiBpbWcsIGNvbnN0IEludFBvaW50JiBoCiAgICAgICAgIERlbGV0ZURDKGFu
ZE1hc2tEQyk7CiAgICAgfQogICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7Ci0gICAgUmVsZWFzZURD
KDAsIGRjKTsKIAogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IGJjNDVlMjJjMzE4NGNm
M2I4MjhiODdjMzFkODM1OTRiZGVjMTUwMWQuLjc0MTAxNjg0NmVlNjBjYjlhNDg3OWE1YjMwMTQ5
MDRmYWNmODFkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNHV2luLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJpdG1hcEluZm8uaCIKICNp
bmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisj
aW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJSZXRhaW5Q
dHIuaCIKIApAQCAtODksNyArOTAsNyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJh
Z0ltYWdlUmVmIGltYWdlLCBGbG9hdFNpemUgc2NhbGUpCiAgICAgSW50U2l6ZSBzcmNTaXplID0g
ZHJhZ0ltYWdlU2l6ZShpbWFnZSk7CiAgICAgSW50U2l6ZSBkc3RTaXplKHN0YXRpY19jYXN0PGlu
dD4oc3JjU2l6ZS53aWR0aCgpICogc2NhbGUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc3Jj
U2l6ZS5oZWlnaHQoKSAqIHNjYWxlLmhlaWdodCgpKSk7CiAgICAgSEJJVE1BUCBoYm1wID0gMDsK
LSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgSERDIGRzdERD
ID0gQ3JlYXRlQ29tcGF0aWJsZURDKGRjKTsKICAgICBpZiAoIWRzdERDKQogICAgICAgICBnb3Rv
IGV4aXQ7CkBAIC0xMTYsMTQgKzExNywxMyBAQCBleGl0OgogICAgICAgICBoYm1wID0gaW1hZ2U7
CiAgICAgaWYgKGRzdERDKQogICAgICAgICBEZWxldGVEQyhkc3REQyk7Ci0gICAgUmVsZWFzZURD
KDAsIGRjKTsKICAgICByZXR1cm4gaGJtcDsKIH0KICAgICAKIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZykKIHsKICAgICBIQklUTUFQIGhibXAgPSAwOwot
ICAgIEhEQyBkYyA9IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIREMgd29ya2lu
Z0RDID0gQ3JlYXRlQ29tcGF0aWJsZURDKGRjKTsKICAgICBDR0NvbnRleHRSZWYgZHJhd0NvbnRl
eHQgPSAwOwogICAgIGlmICghd29ya2luZ0RDKQpAQCAtMTU1LDcgKzE1NSw2IEBAIERyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZykKIGV4aXQ6CiAgICAgaWYg
KHdvcmtpbmdEQykKICAgICAgICAgRGVsZXRlREMod29ya2luZ0RDKTsKLSAgICBSZWxlYXNlREMo
MCwgZGMpOwogICAgIHJldHVybiBoYm1wOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCBmODU4YjA3ZjE2ZjM2M2UxZTVmYmZmOTk2
OWM5YTc2NDliYjgwMWEzLi4xZjZiNzNlODllZDQzOTg3NzQ4NDcwMDM1ZmM2ZDI4NjAzNDc0NDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJSZXRhaW5QdHIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtMTgzLDE4ICsxODQsMTUgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZyYW1lKiBmcmEKICAg
ICAvLyBXZSBub3cga25vdyBob3cgYmlnIHRoZSBpbWFnZSBuZWVkcyB0byBiZSwgc28gd2UgY3Jl
YXRlIGFuZAogICAgIC8vIGZpbGwgdGhlIGJhY2tncm91bmQKICAgICBIQklUTUFQIGltYWdlID0g
MDsKLSAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgZGMoMCk7CiAgICAgSERDIHdv
cmtpbmdEQyA9IENyZWF0ZUNvbXBhdGlibGVEQyhkYyk7Ci0gICAgaWYgKCF3b3JraW5nREMpIHsK
LSAgICAgICAgUmVsZWFzZURDKDAsIGRjKTsKKyAgICBpZiAoIXdvcmtpbmdEQykKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQogCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNvbnRleHRS
ZWY7CiAgICAgaW1hZ2UgPSBhbGxvY0ltYWdlKHdvcmtpbmdEQywgaW1hZ2VTaXplLCAmY29udGV4
dFJlZik7CiAgICAgaWYgKCFpbWFnZSkgewogICAgICAgICBEZWxldGVEQyh3b3JraW5nREMpOwot
ICAgICAgICBSZWxlYXNlREMoMCwgZGMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
ICAgIApAQCAtMjI1LDcgKzIyMyw2IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGcmFtZSogZnJhCiAKICAgICBk
ZWFsbG9jQ29udGV4dChjb250ZXh0UmVmKTsKICAgICBEZWxldGVEQyh3b3JraW5nREMpOwotICAg
IFJlbGVhc2VEQygwLCBkYyk7CiAgICAgcmV0dXJuIGltYWdlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vSFduZERDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vSFduZERDLmgKaW5kZXggMTFkYzMzMjU3ZWFiMTEzNjA1ZDU4NDg3MTc2ZDE0YTlk
YWY4MGJkMC4uODA1ZGRmZmZkMTdjZWVjYTVkZjcwNjUxYzVlMWE1YWYyNzc5MDU5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0hXbmREQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9IV25kREMuaApAQCAtMzQsNiArMzQsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSFduZERDIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIV25k
REMpOwogcHVibGljOgorICAgIGV4cGxpY2l0IEhXbmREQygpCisgICAgICAgIDogbV9od25kKDAp
CisgICAgICAgICwgbV9oZGMoMCkKKyAgICB7CisgICAgfQorCiAgICAgZXhwbGljaXQgSFduZERD
KEhXTkQgaHduZCkKICAgICAgICAgOiBtX2h3bmQoaHduZCkKICAgICAgICAgLCBtX2hkYyg6Okdl
dERDKGh3bmQpKQpAQCAtNDgsOCArNTQsMjQgQEAgcHVibGljOgogCiAgICAgfkhXbmREQygpCiAg
ICAgewotICAgICAgICBpZiAobV9oZGMpCi0gICAgICAgICAgICA6OlJlbGVhc2VEQyhtX2h3bmQs
IG1faGRjKTsKKyAgICAgICAgY2xlYXJEQygpOworICAgIH0KKworICAgIEhEQyBjaGFuZ2VXaW5k
b3dEQyhIV05EIGh3bmQpCisgICAgeworICAgICAgICBjbGVhckRDKCk7CisgICAgICAgIG1faHdu
ZCA9IGh3bmQ7CisgICAgICAgIG1faGRjID0gOjpHZXREQyhod25kKTsKKyAgICAgICAgcmV0dXJu
IG1faGRjOworICAgIH0KKworICAgIHZvaWQgY2xlYXJEQygpCisgICAgeworICAgICAgICBpZiAo
IW1faGRjKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICA6OlJlbGVhc2VEQyhtX2h3bmQs
IG1faGRjKTsKKyAgICAgICAgbV9od25kID0gMDsKKyAgICAgICAgbV9oZGMgPSAwOwogICAgIH0K
IAogICAgIG9wZXJhdG9yIEhEQygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggZDc2OGEzZDUzZmJjNzZmNzQ3OTg1ODJiMzJmZjU3ZmQ4NGMw
ZjIzMi4uODg3ZmM5MTJjMDAyZDUzMzdmMzVhNjY1MzUyNjQxZTI4OGQxMGI5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0y
MjMsNyArMjI0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogCiAgICAgY2xlYXIoKTsKIAotICAgIEhEQyBkYyA9
IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIREMgY29tcGF0aWJsZURDID0gQ3Jl
YXRlQ29tcGF0aWJsZURDKDApOwogICAgIEhEQyBzb3VyY2VEQyA9IENyZWF0ZUNvbXBhdGlibGVE
QygwKTsKICAgICBPd25QdHI8SEJJVE1BUD4gcmVzdWx0Qml0bWFwID0gYWRvcHRQdHIoQ3JlYXRl
Q29tcGF0aWJsZUJpdG1hcChkYywgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSkpOwpA
QCAtMjQzLDcgKzI0NCw2IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2Rl
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKICAgICBTZWxlY3RPYmplY3QoY29tcGF0aWJs
ZURDLCBvbGRCaXRtYXApOwogICAgIERlbGV0ZURDKHNvdXJjZURDKTsKICAgICBEZWxldGVEQyhj
b21wYXRpYmxlREMpOwotICAgIFJlbGVhc2VEQygwLCBkYyk7CiAKICAgICBpZiAoOjpPcGVuQ2xp
cGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIDo6U2V0Q2xpcGJvYXJkRGF0YShDRl9CSVRNQVAs
IHJlc3VsdEJpdG1hcC5sZWFrUHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UG9wdXBNZW51V2luLmNwcAppbmRleCAwOTdmYzgyMzE1NDAzYTY5ZDgxOTYyZTk3ZWVkZmE3NDM0
MDZlMTEzLi5jZjdmMmU5NDEyYTQxYmI3Y2E2NjBkYjRiMmRjMjI0NDQ0YWYzNjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgiCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIK
ICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgi
CisKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d2luZG93c3guaD4KICNpZiBPUyhX
SU5DRSkKQEAgLTU2Niw3ICs1NjgsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQoY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFtX0RDKSB7Ci0gICAgICAgIG1fREMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyg6OkdldERDKG1f
cG9wdXApKTsKKyAgICAgICAgbV9EQyA9IDo6Q3JlYXRlQ29tcGF0aWJsZURDKEhXbmREQyhtX3Bv
cHVwKSk7CiAgICAgICAgIGlmICghbV9EQykKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC02NjAsMTIgKzY2MiwxMCBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQoY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAgICBpZiAobV9zY3JvbGxiYXIpCiAgICAgICAgIG1f
c2Nyb2xsYmFyLT5wYWludCgmY29udGV4dCwgZGFtYWdlUmVjdCk7CiAKLSAgICBIREMgbG9jYWxE
QyA9IGhkYyA/IGhkYyA6IDo6R2V0REMobV9wb3B1cCk7CisgICAgSFduZERDIGhXbmREQzsKKyAg
ICBIREMgbG9jYWxEQyA9IGhkYyA/IGhkYyA6IGhXbmREQy5jaGFuZ2VXaW5kb3dEQyhtX3BvcHVw
KTsKIAogICAgIDo6Qml0Qmx0KGxvY2FsREMsIGRhbWFnZVJlY3QueCgpLCBkYW1hZ2VSZWN0Lnko
KSwgZGFtYWdlUmVjdC53aWR0aCgpLCBkYW1hZ2VSZWN0LmhlaWdodCgpLCBtX0RDLCBkYW1hZ2VS
ZWN0LngoKSwgZGFtYWdlUmVjdC55KCksIFNSQ0NPUFkpOwotCi0gICAgaWYgKCFoZGMpCi0gICAg
ICAgIDo6UmVsZWFzZURDKG1fcG9wdXAsIGxvY2FsREMpOwogfQogCiBpbnQgUG9wdXBNZW51V2lu
OjpzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCAz
MDQwNWM2N2RlYjQzNmNmYWM0NGUzNTZhMWFhZGQ1OTExMDU5ZGQyLi4zNDkzNTg4NDgxMTkwODdk
M2UxYTNhYjY0MThkZWU0OTNiMTU1MjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMzcsMTEgKzM3LDE0IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250U2VsZWN0b3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFduZERD
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUNBTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KICNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d2lu
ZG93c3guaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CkBAIC00ODAsMTQgKzQ4MywxOCBAQCBzdGF0aWMgU3RyaW5nIHRpbWVUb1N0cmluZyhmbG9h
dCB0aW1lKQogICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8
IDAgPyAiLSIgOiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOwogfQogCitzdGF0aWMgUGFzc093blB0
cjxIREM+IGNyZWF0ZUNvbXBhdGlibGVEQ0ZvcldpbmRvdyhIV05EIGh3bmQpCit7CisgICAgSFdu
ZERDIHdpbmRvd0RDKGh3bmQpOworICAgIHJldHVybiBhZG9wdFB0cihDcmVhdGVDb21wYXRpYmxl
REMod2luZG93REMpKTsKK30KKwogdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3
KCkKIHsKLSAgICBIREMgd2luZG93REMgPSBHZXREQyhtX2h1ZFdpbmRvdyk7Ci0gICAgSERDIGJp
dG1hcERDID0gQ3JlYXRlQ29tcGF0aWJsZURDKHdpbmRvd0RDKTsKLSAgICA6OlJlbGVhc2VEQyht
X2h1ZFdpbmRvdywgd2luZG93REMpOwotICAgIEhHRElPQkogb2xkQml0bWFwID0gU2VsZWN0T2Jq
ZWN0KGJpdG1hcERDLCBtX2JpdG1hcC5nZXQoKSk7CisgICAgT3duUHRyPEhEQz4gYml0bWFwREMg
PSBjcmVhdGVDb21wYXRpYmxlRENGb3JXaW5kb3cobV9odWRXaW5kb3cpOworICAgIEhHRElPQkog
b2xkQml0bWFwID0gU2VsZWN0T2JqZWN0KGJpdG1hcERDLmdldCgpLCBtX2JpdG1hcC5nZXQoKSk7
CiAKLSAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChiaXRtYXBEQywgdHJ1ZSk7CisgICAgR3Jh
cGhpY3NDb250ZXh0IGNvbnRleHQoYml0bWFwREMuZ2V0KCksIHRydWUpOwogCiAgICAgY29udGV4
dC5zYXZlKCk7CiAKQEAgLTU0OSwxMiArNTU2LDExIEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZHJhdygpCiAgICAgU0laRSBzaXplID0geyB3aW5kb3dXaWR0aCwgd2luZG93SGVp
Z2h0IH07CiAgICAgUE9JTlQgc291cmNlUG9pbnQgPSB7MCwgMH07CiAgICAgUE9JTlQgZGVzdFBv
aW50ID0geyBtX2h1ZFBvc2l0aW9uLngoKSwgbV9odWRQb3NpdGlvbi55KCkgfTsKLSAgICBCT09M
IHJlc3VsdCA9IFVwZGF0ZUxheWVyZWRXaW5kb3cobV9odWRXaW5kb3csIDAsICZkZXN0UG9pbnQs
ICZzaXplLCBiaXRtYXBEQywgJnNvdXJjZVBvaW50LCAwLCAmYmxlbmRGdW5jdGlvbiwgVUxXX0FM
UEhBKTsKKyAgICBCT09MIHJlc3VsdCA9IFVwZGF0ZUxheWVyZWRXaW5kb3cobV9odWRXaW5kb3cs
IDAsICZkZXN0UG9pbnQsICZzaXplLCBiaXRtYXBEQy5nZXQoKSwgJnNvdXJjZVBvaW50LCAwLCAm
YmxlbmRGdW5jdGlvbiwgVUxXX0FMUEhBKTsKIAogICAgIGNvbnRleHQucmVzdG9yZSgpOwogCi0g
ICAgOjpTZWxlY3RPYmplY3QoYml0bWFwREMsIG9sZEJpdG1hcCk7Ci0gICAgOjpEZWxldGVEQyhi
aXRtYXBEQyk7CisgICAgOjpTZWxlY3RPYmplY3QoYml0bWFwREMuZ2V0KCksIG9sZEJpdG1hcCk7
CiB9CiAKIExSRVNVTFQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aHVkV25kUHJvYyhIV05E
IHduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAKaW5kZXggZDgxN2Y2OTc1ZjZhZTU2ZmVmZmE3NWRl
M2UzODIyMzVkMTNmMDUzMy4uZjQyOGJmYzc2OTYwYTM2NmE4NTc2OTBjM2FlNmNiYzI4ZjY4MDcz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hX
bmREQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KQEAgLTI4
NCwxMSArMjg1LDggQEAgSEJJVE1BUCBjcmVhdGVESUIoTFBTSVpFIHNpemUpCiB7CiAgICAgQml0
bWFwSW5mbyBibUluZm8gPSBCaXRtYXBJbmZvOjpjcmVhdGUoSW50U2l6ZSgqc2l6ZSkpOwogCi0g
ICAgSERDIGRjID0gR2V0REMoMCk7Ci0gICAgSEJJVE1BUCByZXN1bHQgPSBDcmVhdGVESUJTZWN0
aW9uKGRjLCAmYm1JbmZvLCBESUJfUkdCX0NPTE9SUywgMCwgMCwgMCk7Ci0gICAgUmVsZWFzZURD
KDAsIGRjKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgSFduZERDIGRjKDApOworICAgIHJl
dHVybiBDcmVhdGVESUJTZWN0aW9uKGRjLCAmYm1JbmZvLCBESUJfUkdCX0NPTE9SUywgMCwgMCwg
MCk7CiB9CiAKIEhCSVRNQVAgV2ViSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZVNoYXJlZEJpdG1h
cChMUFNJWkUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk5vZGVIaWdo
bGlnaHQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hsaWdodC5jcHAKaW5kZXgg
NTk1MjcyM2NmYmU4NTM3ZTdkOTgyMTM0NzE4Yzc5MjhkZWEyMjEwYS4uZWYxNGNmYzNkYTQ1YzY3
OGM2NjJjNjcyNWZkYzIyNGFlN2FmOGU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViTm9kZUhpZ2hsaWdodC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hs
aWdodC5jcHAKQEAgLTMzLDExICszMywxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5m
by5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTEzNCw3ICsxMzYsNyBAQCB2b2lkIFdlYk5vZGVIaWdobGlnaHQ6OnVwZGF0
ZSgpCiB7CiAgICAgQVNTRVJUKG1fb3ZlcmxheSk7CiAKLSAgICBIREMgaGRjID0gOjpDcmVhdGVD
b21wYXRpYmxlREMoOjpHZXREQyhtX292ZXJsYXkpKTsKKyAgICBPd25QdHI8SERDPiBoZGMgPSBh
ZG9wdFB0cig6OkNyZWF0ZUNvbXBhdGlibGVEQyhId25kREMobV9vdmVybGF5KSkpOwogICAgIGlm
ICghaGRjKQogICAgICAgICByZXR1cm47CiAKQEAgLTE1MSwxMiArMTUzLDEyIEBAIHZvaWQgV2Vi
Tm9kZUhpZ2hsaWdodDo6dXBkYXRlKCkKICAgICBCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBCaXRt
YXBJbmZvOjpjcmVhdGVCb3R0b21VcChJbnRTaXplKHNpemUpKTsKIAogICAgIHZvaWQqIHBpeGVs
cyA9IDA7Ci0gICAgT3duUHRyPEhCSVRNQVA+IGhibXAgPSBhZG9wdFB0cig6OkNyZWF0ZURJQlNl
Y3Rpb24oaGRjLCAmYml0bWFwSW5mbywgRElCX1JHQl9DT0xPUlMsICZwaXhlbHMsIDAsIDApKTsK
KyAgICBPd25QdHI8SEJJVE1BUD4gaGJtcCA9IGFkb3B0UHRyKDo6Q3JlYXRlRElCU2VjdGlvbiho
ZGMuZ2V0KCksICZiaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgJnBpeGVscywgMCwgMCkpOwog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaGJtcCwgIjo6Q3JlYXRlRElCU2VjdGlvbiBmYWlsZWQg
d2l0aCBlcnJvciAlbHUiLCA6OkdldExhc3RFcnJvcigpKTsKIAotICAgIDo6U2VsZWN0T2JqZWN0
KGhkYywgaGJtcC5nZXQoKSk7CisgICAgOjpTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoYm1wLmdl
dCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KGhkYyk7CisgICAgR3JhcGhpY3ND
b250ZXh0IGNvbnRleHQoaGRjLmdldCgpKTsKIAogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRyYXdIaWdobGlnaHQoY29udGV4dCk7CiAKQEAg
LTE3NCw5ICsxNzYsNyBAQCB2b2lkIFdlYk5vZGVIaWdobGlnaHQ6OnVwZGF0ZSgpCiAgICAgZHN0
UG9pbnQueCA9IHdlYlZpZXdSZWN0LmxlZnQ7CiAgICAgZHN0UG9pbnQueSA9IHdlYlZpZXdSZWN0
LnRvcDsKIAotICAgIDo6VXBkYXRlTGF5ZXJlZFdpbmRvdyhtX292ZXJsYXksIDo6R2V0REMoMCks
ICZkc3RQb2ludCwgJnNpemUsIGhkYywgJnNyY1BvaW50LCAwLCAmYmYsIFVMV19BTFBIQSk7Ci0K
LSAgICA6OkRlbGV0ZURDKGhkYyk7CisgICAgOjpVcGRhdGVMYXllcmVkV2luZG93KG1fb3Zlcmxh
eSwgSFduZERDKDApLCAmZHN0UG9pbnQsICZzaXplLCBoZGMsICZzcmNQb2ludCwgMCwgJmJmLCBV
TFdfQUxQSEEpOwogfQogCiB2b2lkIFdlYk5vZGVIaWdobGlnaHQ6OnBsYWNlQmVoaW5kV2luZG93
KEhXTkQgd2luZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCA1N2QzNDU4MjE0OWJmMjBiYTVi
YjA1MDg2MDExMjVlNzhmNjVkYjU3Li5kM2E2OTkyOTYxYTA3OTcwM2RmNjJjZjE5MTdjMmRhMjI2
MjcwYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtOTUsNiArOTUsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFF
bGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hpdFRlc3RSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVz
dWx0Lmg+CkBAIC04NjIsNyArODYzLDcgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3Rv
cmUoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGludCBkeCwgaW50IGR5LCBjb25zdCBJbnQKICAgICBI
UkdOIHVwZGF0ZVJlZ2lvbiA9IDo6Q3JlYXRlUmVjdFJnbigwLCAwLCAwLCAwKTsKIAogICAgIC8v
IENvbGxlY3Qgb3VyIGRldmljZSBjb250ZXh0IGluZm8gYW5kIHNlbGVjdCB0aGUgYml0bWFwIHRv
IHNjcm9sbC4KLSAgICBIREMgd2luZG93REMgPSA6OkdldERDKG1fdmlld1dpbmRvdyk7CisgICAg
SFduZERDIHdpbmRvd0RDKG1fdmlld1dpbmRvdyk7CiAgICAgSERDIGJpdG1hcERDID0gOjpDcmVh
dGVDb21wYXRpYmxlREMod2luZG93REMpOwogICAgIEhHRElPQkogb2xkQml0bWFwID0gOjpTZWxl
Y3RPYmplY3QoYml0bWFwREMsIG1fYmFja2luZ1N0b3JlQml0bWFwLT5oYW5kbGUoKSk7CiAgICAg
CkBAIC04ODgsNyArODg5LDYgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUoRnJh
bWVWaWV3KiBmcmFtZVZpZXcsIGludCBkeCwgaW50IGR5LCBjb25zdCBJbnQKICAgICAvLyBDbGVh
biB1cC4KICAgICA6OlNlbGVjdE9iamVjdChiaXRtYXBEQywgb2xkQml0bWFwKTsKICAgICA6OkRl
bGV0ZURDKGJpdG1hcERDKTsKLSAgICA6OlJlbGVhc2VEQyhtX3ZpZXdXaW5kb3csIHdpbmRvd0RD
KTsKIH0KIAogdm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXpl
KQpAQCAtOTU4LDExICs5NTgsMTEgQEAgdm9pZCBXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUo
RnJhbWVWaWV3KiBmcmFtZVZpZXcsIEhEQyBkYywgYm9vbCBiYWNraW5nU3RvcmUKIAogICAgIExP
Q0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CiAKLSAgICBIREMgd2luZG93REMgPSAw
OwogICAgIEhEQyBiaXRtYXBEQyA9IGRjOwogICAgIEhHRElPQkogb2xkQml0bWFwID0gMDsKICAg
ICBpZiAoIWRjKSB7Ci0gICAgICAgIHdpbmRvd0RDID0gOjpHZXREQyhtX3ZpZXdXaW5kb3cpOwor
ICAgICAgICBIV25kREMgd2luZG93REM7CisgICAgICAgIHdpbmRvd0RDLmNoYW5nZVdpbmRvd0RD
KG1fdmlld1dpbmRvdyk7CiAgICAgICAgIGJpdG1hcERDID0gOjpDcmVhdGVDb21wYXRpYmxlREMo
d2luZG93REMpOwogICAgICAgICBvbGRCaXRtYXAgPSA6OlNlbGVjdE9iamVjdChiaXRtYXBEQywg
bV9iYWNraW5nU3RvcmVCaXRtYXAtPmhhbmRsZSgpKTsKICAgICB9CkBAIC05OTYsNyArOTk2LDYg
QEAgdm9pZCBXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUoRnJhbWVWaWV3KiBmcmFtZVZpZXcs
IEhEQyBkYywgYm9vbCBiYWNraW5nU3RvcmUKICAgICBpZiAoIWRjKSB7CiAgICAgICAgIDo6U2Vs
ZWN0T2JqZWN0KGJpdG1hcERDLCBvbGRCaXRtYXApOwogICAgICAgICA6OkRlbGV0ZURDKGJpdG1h
cERDKTsKLSAgICAgICAgOjpSZWxlYXNlREMobV92aWV3V2luZG93LCB3aW5kb3dEQyk7CiAgICAg
fQogCiAgICAgR2RpRmx1c2goKTsKQEAgLTEwMDgsNyArMTAwNyw3IEBAIHZvaWQgV2ViVmlldzo6
cGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUoKQogICAgIGlmICghbV9iYWNraW5nU3RvcmVCaXRt
YXApCiAgICAgICAgIHJldHVybjsKIAotICAgIEhEQyBoZGNTY3JlZW4gPSA6OkdldERDKG1fdmll
d1dpbmRvdyk7CisgICAgSFduZERDIGhkY1NjcmVlbihtX3ZpZXdXaW5kb3cpOwogICAgIE93blB0
cjxIREM+IGhkY01lbSA9IGFkb3B0UHRyKDo6Q3JlYXRlQ29tcGF0aWJsZURDKGhkY1NjcmVlbikp
OwogICAgIEhCSVRNQVAgaGJtT2xkID0gc3RhdGljX2Nhc3Q8SEJJVE1BUD4oOjpTZWxlY3RPYmpl
Y3QoaGRjTWVtLmdldCgpLCBtX2JhY2tpbmdTdG9yZUJpdG1hcC0+aGFuZGxlKCkpKTsKIApAQCAt
MTAyNiw3ICsxMDI1LDYgQEAgdm9pZCBXZWJWaWV3OjpwZXJmb3JtTGF5ZXJlZFdpbmRvd1VwZGF0
ZSgpCiAgICAgOjpVcGRhdGVMYXllcmVkV2luZG93KG1fdmlld1dpbmRvdywgaGRjU2NyZWVuLCAw
LCAmd2luZG93U2l6ZSwgaGRjTWVtLmdldCgpLCAmbGF5ZXJQb3MsIDAsICZibGVuZEZ1bmN0aW9u
LCBVTFdfQUxQSEEpOwogCiAgICAgOjpTZWxlY3RPYmplY3QoaGRjTWVtLmdldCgpLCBoYm1PbGQp
OwotICAgIDo6UmVsZWFzZURDKDAsIGhkY1NjcmVlbik7CiB9CiAKIHZvaWQgV2ViVmlldzo6cGFp
bnQoSERDIGRjLCBMUEFSQU0gb3B0aW9ucykKQEAgLTExMzIsMTMgKzExMzAsMTQgQEAgdm9pZCBX
ZWJWaWV3OjpwYWludEludG9CYWNraW5nU3RvcmUoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIEhEQyBi
aXRtYXBEQywgY29uc3QgSW4KICAgICBSRUNUIHJlY3QgPSBkaXJ0eVJlY3Q7CiAKICNpZiBGTEFT
SF9CQUNLSU5HX1NUT1JFX1JFRFJBVwotICAgIEhEQyBkYyA9IDo6R2V0REMobV92aWV3V2luZG93
KTsKLSAgICBPd25QdHI8SEJSVVNIPiB5ZWxsb3dCcnVzaChDcmVhdGVTb2xpZEJydXNoKFJHQigy
NTUsIDI1NSwgMCkpKTsKLSAgICBGaWxsUmVjdChkYywgJnJlY3QsIHllbGxvd0JydXNoLmdldCgp
KTsKLSAgICBHZGlGbHVzaCgpOwotICAgIFNsZWVwKDUwKTsKLSAgICBwYWludEludG9XaW5kb3co
Yml0bWFwREMsIGRjLCBkaXJ0eVJlY3QpOwotICAgIDo6UmVsZWFzZURDKG1fdmlld1dpbmRvdywg
ZGMpOworICAgIHsKKyAgICAgICAgSFduZERDIGRjKG1fdmlld1dpbmRvdyk7CisgICAgICAgIE93
blB0cjxIQlJVU0g+IHllbGxvd0JydXNoKENyZWF0ZVNvbGlkQnJ1c2goUkdCKDI1NSwgMjU1LCAw
KSkpOworICAgICAgICBGaWxsUmVjdChkYywgJnJlY3QsIHllbGxvd0JydXNoLmdldCgpKTsKKyAg
ICAgICAgR2RpRmx1c2goKTsKKyAgICAgICAgU2xlZXAoNTApOworICAgICAgICBwYWludEludG9X
aW5kb3coYml0bWFwREMsIGRjLCBkaXJ0eVJlY3QpOworICAgIH0KICNlbmRpZgogCiAgICAgR3Jh
cGhpY3NDb250ZXh0IGdjKGJpdG1hcERDLCBtX3RyYW5zcGFyZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwV2luLmNwcAppbmRleCBiZjIzZGNkZmY5
YTY1ZWRmZDFkMGQxNzllNDg2YTZiODNiNzBkMjM2Li4yZWQ4NDI4YjA2YzU0OWM2OWUyYmJkYjA0
YjA2ZGZkYzhjY2U5YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1No
YXJlYWJsZUJpdG1hcFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9TaGFy
ZWFibGVCaXRtYXBXaW4uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC0zOSwxMCArNDAsMTAgQEAgSERDIFNoYXJlYWJsZUJpdG1hcDo6d2luZG93c0NvbnRleHQoKSBj
b25zdAogICAgIGlmIChtX3dpbmRvd3NDb250ZXh0KQogICAgICAgICByZXR1cm4gbV93aW5kb3dz
Q29udGV4dC5nZXQoKTsKIAotICAgIE93blB0cjxIREM+IHNjcmVlbkRDID0gYWRvcHRQdHIoOjpH
ZXREQygwKSk7CisgICAgSFduZERDIHNjcmVlbkRDKDApOwogICAgIEJpdG1hcEluZm8gYm1JbmZv
ID0gQml0bWFwSW5mbzo6Y3JlYXRlQm90dG9tVXAobV9zaXplKTsKIAotICAgIG1fd2luZG93c0Nv
bnRleHQgPSBhZG9wdFB0cig6OkNyZWF0ZUNvbXBhdGlibGVEQyhzY3JlZW5EQy5nZXQoKSkpOwor
ICAgIG1fd2luZG93c0NvbnRleHQgPSBhZG9wdFB0cig6OkNyZWF0ZUNvbXBhdGlibGVEQyhzY3Jl
ZW5EQykpOwogICAgIG1fd2luZG93c0JpdG1hcCA9IGFkb3B0UHRyKENyZWF0ZURJQlNlY3Rpb24o
bV93aW5kb3dzQ29udGV4dC5nZXQoKSwgJmJtSW5mbywgRElCX1JHQl9DT0xPUlMsIDAsIG1fc2hh
cmVkTWVtb3J5LT5oYW5kbGUoKSwgMCkpOwogICAgIDo6U2VsZWN0T2JqZWN0KG1fd2luZG93c0Nv
bnRleHQuZ2V0KCksIG1fd2luZG93c0JpdG1hcC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAKaW5kZXggZDMy
ZTBmODE3MzBkYmZlYjJjZjMwOTgyY2JkMTYxNzNkMDMxMTU0Zi4uMTRjMzAzMmUwYjEwZjljZGRj
NTdhZDlmOWUyMzJjYmY1Mjk3ZTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2Nyb2xsYmFyVGhlbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Nb3Vz
ZUV2ZW50Lmg+CiAjaW5jbHVkZSA8d2luZG93c3guaD4KIApAQCAtODA4LDcgKzgwOSw3IEBAIHZv
aWQgV2ViUG9wdXBNZW51UHJveHlXaW46OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IEhEQyBoZGMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9EQykgewotICAgICAgICBt
X0RDID0gOjpDcmVhdGVDb21wYXRpYmxlREMoOjpHZXREQyhtX3BvcHVwKSk7CisgICAgICAgIG1f
REMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyhIV25kREMobV9wb3B1cCkpOwogICAgICAgICBpZiAo
IW1fREMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODQ4LDEyICs4NDksMTEgQEAg
dm9pZCBXZWJQb3B1cE1lbnVQcm94eVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCwgSERDIGhkYykKICAgICBpZiAobV9zY3JvbGxiYXIpCiAgICAgICAgIG1fc2Nyb2xsYmFyLT5w
YWludCgmY29udGV4dCwgZGFtYWdlUmVjdCk7CiAKLSAgICBIREMgbG9jYWxEQyA9IGhkYyA/IGhk
YyA6IDo6R2V0REMobV9wb3B1cCk7CiAKLSAgICA6OkJpdEJsdChsb2NhbERDLCBkYW1hZ2VSZWN0
LngoKSwgZGFtYWdlUmVjdC55KCksIGRhbWFnZVJlY3Qud2lkdGgoKSwgZGFtYWdlUmVjdC5oZWln
aHQoKSwgbV9EQywgZGFtYWdlUmVjdC54KCksIGRhbWFnZVJlY3QueSgpLCBTUkNDT1BZKTsKKyAg
ICBIV25kREMgaFduZERDOworICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogaFduZERDLmNo
YW5nZVdpbmRvd0RDKG1fcG9wdXApOwogCi0gICAgaWYgKCFoZGMpCi0gICAgICAgIDo6UmVsZWFz
ZURDKG1fcG9wdXAsIGxvY2FsREMpOworICAgIDo6Qml0Qmx0KGxvY2FsREMsIGRhbWFnZVJlY3Qu
eCgpLCBkYW1hZ2VSZWN0LnkoKSwgZGFtYWdlUmVjdC53aWR0aCgpLCBkYW1hZ2VSZWN0LmhlaWdo
dCgpLCBtX0RDLCBkYW1hZ2VSZWN0LngoKSwgZGFtYWdlUmVjdC55KCksIFNSQ0NPUFkpOwogfQog
CiBib29sIFdlYlBvcHVwTWVudVByb3h5V2luOjpzZXRGb2N1c2VkSW5kZXgoaW50IGksIGJvb2wg
aG90VHJhY2tpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRl
eCBkNDRlMjU1NjBlMmUxNTg1MTVhMDJkM2QyZjk4MzdhNWIxMGI3NWVjLi5jMDA2MWZjYzY0NmNl
MzI1ODE5ZGExYmJmZTc4NzhlMDc1M2JjNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2VuZGlmCisjaW5jbHVkZSA8V2ViQ29yZS9I
V25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KQEAgLTk1OSw5
ICs5NjAsOCBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbFZpZXcoY29uc3QgSW50UmVjdCYgc2Nyb2xs
UmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQogdm9pZCBXZWJWaWV3OjpmbGFzaEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JiB1cGRhdGVSZWN0cykKIHsK
ICAgICBzdGF0aWMgSEJSVVNIIGJydXNoID0gY3JlYXRlQnJ1c2goV2ViUGFnZVByb3h5OjpiYWNr
aW5nU3RvcmVVcGRhdGVzRmxhc2hDb2xvcigpLnJnYigpKS5sZWFrUHRyKCk7Ci0gICAgSERDIGRj
ID0gOjpHZXREQyhtX3dpbmRvdyk7CisgICAgSFduZERDIGRjKG1fd2luZG93KTsKICAgICBmbGFz
aFJlY3RzKGRjLCB1cGRhdGVSZWN0cy5kYXRhKCksIHVwZGF0ZVJlY3RzLnNpemUoKSwgYnJ1c2gp
OwotICAgIDo6UmVsZWFzZURDKG1fd2luZG93LCBkYyk7CiB9CiAKIFdlYkNvcmU6OkludFNpemUg
V2ViVmlldzo6dmlld1NpemUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123072</attachid>
            <date>2012-01-18 21:51:19 -0800</date>
            <delta_ts>2012-01-20 13:11:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76303-20120118215118.patch</filename>
            <type>text/plain</type>
            <size>36886</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI0ZjllNWM4MDM3MTk3
YzRhZjk4ODQ1ZjBiY2Q2MzA0YjczNzMzNy4uMTBiNGRjMDYyYWZhYWI4Y2I2ZDA5YTkwN2E3ODU0
YjBhOGYwYWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAxLTE4ICBEYXZp
ZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd2luZG93c10gQ29udmVy
dCB1c2FnZXMgb2YgR2V0REMgdG8gSFduZERDLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSBzbyBubyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKTogQ2hh
bmdlZCBHZXREQyB0byBIV25kREMKKyAgICAgICAgYW5kIHJlbW92ZWQgUmVsZWFzZURDLgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlR0RJRm9udCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Jbml0KTogRGl0dG8uCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUZvbnREYXRhOjppbml0R0RJRm9udCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVycyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Ym91bmRzRm9yR0RJR2x5cGgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjp3aWR0aEZvckdESUdseXBoKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6c2NyaXB0Rm9udFByb3BlcnRp
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFw
ZUFuZFBsYWNlSXRlbSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VW5pc2NyaWJlQ29udHJv
bGxlcjo6c2hhcGUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ3Vyc29yV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoYXJlZEN1cnNvcik6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
Y2FsZURyYWdJbWFnZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogRGl0dG8uCisg
ICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9Qb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51V2luOjpwYWlu
dCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9IV25kREMuaDogQ2hhbmdlZCB0aGlz
IHNsaWdodGx5IHRvIGFsbG93CisgICAgICAgIGZvciBhbGxvY2F0aW5nIGEgd2luZG93IERDIGFm
dGVyIHRoZSBpbml0aWFsIGNyZWF0aW9uIHNpbmNlCisgICAgICAgIHRoaXMgcGF0dGVybiBvY2N1
cnJlZCBpbiBzZXZlcmFsIHBsYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhXbmREQzo6SFduZERD
KToKKyAgICAgICAgKFdlYkNvcmU6OkhXbmREQzo6fkhXbmREQyk6CisgICAgICAgIChXZWJDb3Jl
OjpIV25kREM6OmNoYW5nZVdpbmRvd0RDKToKKyAgICAgICAgKFdlYkNvcmU6OkhXbmREQzo6Y2xl
YXJEQyk6CisKIDIwMTItMDEtMTMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCB1c2VzIG9mIEdldERDIHRvIEhXbmREQy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCAzODRmYWE1ZDAxNWU1MjUwOTZiNTZmMmUxNWMzNGNjZmM3ZDY4OGI3
Li4zNDAxNjZmZjc0ODY3ZmE4MWE4M2UyZWU5MjQzYmRjYTQzYTg5MzNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDEtMTcgIERhdmlkIExldmluICA8bGV2aW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFt3aW5kb3dzXSBDb252ZXJ0IHVzYWdlcyBvZiBHZXREQyB0
byBIV25kREMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjMwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChjcmVhdGVDb21wYXRp
YmxlRENGb3JXaW5kb3cpOiBNb3ZlZCBvdXQgdGhlIGNvZGUgd2hpY2ggY3JlYXRlcyBhIERDIGZv
ciBhIHdpbmRvdworICAgICAgICBhbmQgc3dpdGNoIHRvIHVzaW5nIEhXbmREQyBhbmQgT3duUHRy
PEhEQz4gZm9yIHRoaXMgY29kZS4KKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OmRyYXcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJJY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAo
Y3JlYXRlRElCKTogQ2hhbmdlZCBHZXREQyB0byBIV25kREMgYW5kIHJlbW92ZWQgUmVsZWFzZURD
LgorICAgICAgICAqIFdlYk5vZGVIaWdobGlnaHQuY3BwOgorICAgICAgICAoV2ViTm9kZUhpZ2hs
aWdodDo6dXBkYXRlKTogQ2xlYW5lZCB1cCBsZWFrcyBmcm9tIGNhbGxpbmcgR2V0REMgYW5kIGEg
cG90ZW50aWFsCisgICAgICAgIGxlYWsgb2YgdGhlIHJlc3VsdCBmcm9tIENyZWF0ZUNvbXBhdGli
bGVEQyBpbiBhbiBlYXJseSBleGl0IHNjZW5hcmlvIGJ5IHVzaW5nCisgICAgICAgIEhXbmREQyBh
bmQgT3duUHRyPEhEQz4KKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6
OnNjcm9sbEJhY2tpbmdTdG9yZSk6IFR5cGljYWwgY29udmVyc2lvbi4KKyAgICAgICAgKFdlYlZp
ZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6IFVzZSBPV25QdHIgdG8gaGFuZGxlIHRoZSBjb25kaXRp
b25hbCBhbGxvY2F0aW9uIG9mIGEgREMuCisgICAgICAgIChXZWJWaWV3OjpwZXJmb3JtTGF5ZXJl
ZFdpbmRvd1VwZGF0ZSk6IFR5cGljYWwgY29udmVyc2lvbi4KKyAgICAgICAgKFdlYlZpZXc6OnBh
aW50SW50b0JhY2tpbmdTdG9yZSk6IERpdHRvLgorCiAyMDEyLTAxLTA3ICBBbmRyZWFzIEtsaW5n
ICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZpeC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3ZmU2MzY2NzYwMmY5MGRiNjVhY2I1ZDVjOWU1ZTNmMmMxZWIwMDUwLi42
OWVhNWY5MDA0OGJmYTg5ODk5ZGNiZDRmMWY5YmY5N2EyZmRjMGIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTItMDEtMTcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFt3aW5kb3dzXSBDb252ZXJ0IHVzYWdlcyBvZiBHZXREQyB0byBIV25kREMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6d2luZG93c0NvbnRleHQpOiBGaXggaW5jb3JyZWN0IHVzYWdlIG9m
IE93blB0cjxIREM+IHdoaWNoCisgICAgICAgIHdvdWxkIGRvIGEgRGVsZXRlREMgaW5zdGVhZCBv
ZiBhIFJlbGVhc2VEQy4KKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5
V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlXaW46OnBhaW50KTog
Rml4ZWQgYSBsZWFrIGFuZCBhIHR5cGljYWwgY29udmVyc2lvbi4KKyAgICAgICAgKiBVSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpmbGFzaEJhY2tp
bmdTdG9yZVVwZGF0ZXMpOiBUeXBpY2FsIGNvbnZlcnNpb24uCisKIDIwMTItMDEtMTcgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtXSzJd
IFdlYktpdFByaXZhdGUgc2hvdWxkIGluY2x1ZGUgdGhlIGVudGlyZSBXZWJLaXQyIEMgQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hl
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwCmluZGV4IDNlYjc0MzZlZTJlNTVkOTUwZTVkMjAwYzUxN2Q3YjQ0ZDhiNjA3NjcuLjRk
MWIyY2ZkMzY5ZjAyYTFmN2M4NzdiNTQ4MWZiNjZiZmU1ODJjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlICJGb250Q2FjaGUu
aCIKICNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiU2lt
cGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJVbmljb2RlUmFuZ2UuaCIKICNpbmNsdWRlIDxtbGFu
Zy5oPgpAQCAtMTg5LDcgKzE5MCw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6
OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LCBjb25zCiB7CiAgICAg
VUNoYXIgY2hhcmFjdGVyID0gY2hhcmFjdGVyc1swXTsKICAgICBTaW1wbGVGb250RGF0YSogZm9u
dERhdGEgPSAwOwotICAgIEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMgaGRjKDApOwog
ICAgIEhGT05UIHByaW1hcnlGb250ID0gZm9udC5wcmltYXJ5Rm9udCgpLT5mb250RGF0YUZvckNo
YXJhY3RlcihjaGFyYWN0ZXIpLT5wbGF0Zm9ybURhdGEoKS5oZm9udCgpOwogICAgIEhHRElPQkog
b2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIHByaW1hcnlGb250KTsKICAgICBIRk9OVCBoZm9u
dCA9IDA7CkBAIC0yOTIsNyArMjkzLDYgQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNo
ZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnMKICAgICAg
ICAgRGVsZXRlT2JqZWN0KGhmb250KTsKICAgICB9CiAKLSAgICBSZWxlYXNlREMoMCwgaGRjKTsK
ICAgICByZXR1cm4gZm9udERhdGE7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBzdGF0aWMgaW50
IENBTExCQUNLIG1hdGNoSW1wcm92aW5nRW51bVByb2MoQ09OU1QgTE9HRk9OVCogY2FuZGlkYXRl
LCBDT05TVCBURVhUTQogCiBzdGF0aWMgSEZPTlQgY3JlYXRlR0RJRm9udChjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseSwgTE9ORyBkZXNpcmVkV2VpZ2h0LCBib29sIGRlc2lyZWRJdGFsaWMsIGlu
dCBzaXplLCBib29sIHN5bnRoZXNpemVJdGFsaWMpCiB7Ci0gICAgSERDIGhkYyA9IEdldERDKDAp
OworICAgIEhXbmREQyBoZGMoMCk7CiAKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9u
dC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7CkBAIC00NTksOCArNDU5LDYgQEAgc3RhdGlj
IEhGT05UIGNyZWF0ZUdESUZvbnQoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIExPTkcgZGVz
aXJlZFdlaWdodCwgYm9vbAogICAgIE1hdGNoSW1wcm92aW5nUHJvY0RhdGEgbWF0Y2hEYXRhKGRl
c2lyZWRXZWlnaHQsIGRlc2lyZWRJdGFsaWMpOwogICAgIEVudW1Gb250RmFtaWxpZXNFeChoZGMs
ICZsb2dGb250LCBtYXRjaEltcHJvdmluZ0VudW1Qcm9jLCByZWludGVycHJldF9jYXN0PExQQVJB
TT4oJm1hdGNoRGF0YSksIDApOwogCi0gICAgUmVsZWFzZURDKDAsIGhkYyk7Ci0KICAgICBpZiAo
IW1hdGNoRGF0YS5tX2hhc01hdGNoZWQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC00ODYsMTMg
KzQ4NCwxMiBAQCBzdGF0aWMgSEZPTlQgY3JlYXRlR0RJRm9udChjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlseSwgTE9ORyBkZXNpcmVkV2VpZ2h0LCBib29sCiAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgSERDIGRjID0gR2V0REMoMCk7CisgICAgSFduZERDIGRjKDAp
OwogICAgIFNhdmVEQyhkYyk7CiAgICAgU2VsZWN0T2JqZWN0KGRjLCByZXN1bHQpOwogICAgIFdD
SEFSIGFjdHVhbE5hbWVbTEZfRkFDRVNJWkVdOwogICAgIEdldFRleHRGYWNlKGRjLCBMRl9GQUNF
U0laRSwgYWN0dWFsTmFtZSk7CiAgICAgUmVzdG9yZURDKGRjLCAtMSk7Ci0gICAgUmVsZWFzZURD
KDAsIGRjKTsKIAogICAgIGlmICh3Y3NpY21wKG1hdGNoRGF0YS5tX2Nob3Nlbi5sZkZhY2VOYW1l
LCBhY3R1YWxOYW1lKSkgewogICAgICAgICBEZWxldGVPYmplY3QocmVzdWx0KTsKQEAgLTUzNCw3
ICs1MzEsNyBAQCBzdGF0aWMgaW50IENBTExCQUNLIHRyYWl0c0luRmFtaWx5RW51bVByb2MoQ09O
U1QgTE9HRk9OVCogbG9nRm9udCwgQ09OU1QgVEVYVE1FVAogfQogdm9pZCBGb250Q2FjaGU6Omdl
dFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwgVmVjdG9yPHVu
c2lnbmVkPiYgdHJhaXRzTWFza3MpCiB7Ci0gICAgSERDIGhkYyA9IEdldERDKDApOworICAgIEhX
bmREQyBoZGMoMCk7CiAKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5sZkNoYXJT
ZXQgPSBERUZBVUxUX0NIQVJTRVQ7CkBAIC01NDYsOCArNTQzLDYgQEAgdm9pZCBGb250Q2FjaGU6
OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwgVmVjdG9y
PHVuc2lnbmUKICAgICBUcmFpdHNJbkZhbWlseVByb2NEYXRhIHByb2NEYXRhKGZhbWlseU5hbWUp
OwogICAgIEVudW1Gb250RmFtaWxpZXNFeChoZGMsICZsb2dGb250LCB0cmFpdHNJbkZhbWlseUVu
dW1Qcm9jLCByZWludGVycHJldF9jYXN0PExQQVJBTT4oJnByb2NEYXRhKSwgMCk7CiAgICAgY29w
eVRvVmVjdG9yKHByb2NEYXRhLm1fdHJhaXRzTWFza3MsIHRyYWl0c01hc2tzKTsKLQotICAgIFJl
bGVhc2VEQygwLCBoZGMpOwogfQogCiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24s
IGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4
IGQwYjM3YmRhM2U1ZjZmMzg2YWZlZDc1NTRkMjk3ODEwN2EzOTY1ZGEuLjk4NjBkZjZhMjEzOWE2
OTAwZDBmYjgzNGIzZWNmYzM1YTM5YmQ2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250UGxhdGZv
cm1EYXRhLmgiCiAKKyNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpAQCAtNTEsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEhG
T05UIGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcQogICAgICwgbV9zeW50
aGV0aWNPYmxpcXVlKG9ibGlxdWUpCiAgICAgLCBtX3VzZUdESSh1c2VHREkpCiB7Ci0gICAgSERD
IGhkYyA9IEdldERDKDApOworICAgIEhXbmREQyBoZGMoMCk7CiAgICAgU2F2ZURDKGhkYyk7CiAg
ICAgCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgZm9udCk7CkBAIC03MSw3ICs3Miw2IEBAIEZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoSEZPTlQgZm9udCwgZmxvYXQgc2l6ZSwgYm9v
bCBib2xkLCBib29sIG9ibGlxCiAgICAgfQogCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwotICAg
IFJlbGVhc2VEQygwLCBoZGMpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dX
aW4uY3BwCmluZGV4IDJkOGYxM2UzNmVkYmUxNjJmYjg2MDNkODJkMGVkNjQ2YTYzNzUxNDMuLmFk
MDI1YjgwM2JmYjBkMmJkOTkwYWNjOWI0YmRlMDViYjkzY2Q0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFD
R1dpbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRl
ICJIV25kREMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPEFwcGxp
Y2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2luY2x1ZGUgPFdlYktpdFN5
c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTU1LDcgKzU2LDcgQEAg
dm9pZCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Jbml0KCkKICAgICBtX2lzU3lzdGVtRm9udCA9
IGZhbHNlOwogCiAgICAgaWYgKG1fcGxhdGZvcm1EYXRhLnVzZUdESSgpKQotICAgICAgIHJldHVy
biBpbml0R0RJRm9udCgpOworICAgICAgICByZXR1cm4gaW5pdEdESUZvbnQoKTsKIAogICAgIENH
Rm9udFJlZiBmb250ID0gbV9wbGF0Zm9ybURhdGEuY2dGb250KCk7CiAgICAgaW50IGlBc2NlbnQg
PSBDR0ZvbnRHZXRBc2NlbnQoZm9udCk7CkBAIC02OCwxNCArNjksMTMgQEAgdm9pZCBTaW1wbGVG
b250RGF0YTo6cGxhdGZvcm1Jbml0KCkKICAgICBmbG9hdCBmTGluZUdhcCA9IHNjYWxlRW1Ub1Vu
aXRzKGlMaW5lR2FwLCB1bml0c1BlckVtKSAqIHBvaW50U2l6ZTsKIAogICAgIGlmICghaXNDdXN0
b21Gb250KCkpIHsKLSAgICAgICAgSERDIGRjID0gR2V0REMoMCk7CisgICAgICAgIEhXbmREQyBk
YygwKTsKICAgICAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGRjLCBtX3BsYXRm
b3JtRGF0YS5oZm9udCgpKTsKICAgICAgICAgaW50IGZhY2VMZW5ndGggPSBHZXRUZXh0RmFjZShk
YywgMCwgMCk7CiAgICAgICAgIFZlY3RvcjxXQ0hBUj4gZmFjZU5hbWUoZmFjZUxlbmd0aCk7CiAg
ICAgICAgIEdldFRleHRGYWNlKGRjLCBmYWNlTGVuZ3RoLCBmYWNlTmFtZS5kYXRhKCkpOwogICAg
ICAgICBtX2lzU3lzdGVtRm9udCA9ICF3Y3NjbXAoZmFjZU5hbWUuZGF0YSgpLCBMIkx1Y2lkYSBH
cmFuZGUiKTsKICAgICAgICAgU2VsZWN0T2JqZWN0KGRjLCBvbGRGb250KTsKLSAgICAgICAgUmVs
ZWFzZURDKDAsIGRjKTsKIAogICAgICAgICBmQXNjZW50ID0gYXNjZW50Q29uc2lkZXJpbmdNYWNB
c2NlbnRIYWNrKGZhY2VOYW1lLmRhdGEoKSwgZkFzY2VudCwgZkRlc2NlbnQpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250
RGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxl
Rm9udERhdGFXaW4uY3BwCmluZGV4IGRlNjY4N2Y1YzdhODMzMzViMTI5NGJmMGQ5NDk0MzZlMDRm
YmVjNGYuLjk4M2MxYmY5MmJlZjE3Mzk3ZTdhNDNlYjJlZjY1Y2JkYzdkOTIxNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZv
bnREYXRhV2luLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgorI2lu
Y2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgPG1sYW5nLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91
Y2hhci5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdW5vcm0uaD4KQEAgLTg5LDcgKzkwLDcgQEAgdm9p
ZCBTaW1wbGVGb250RGF0YTo6aW5pdEdESUZvbnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgIEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICAgSFduZERDIGhkYygwKTsKICAgICAgSEdE
SU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgbV9wbGF0Zm9ybURhdGEuaGZvbnQoKSk7
CiAgICAgIE9VVExJTkVURVhUTUVUUklDIG1ldHJpY3M7CiAgICAgIEdldE91dGxpbmVUZXh0TWV0
cmljcyhoZGMsIHNpemVvZihtZXRyaWNzKSwgJm1ldHJpY3MpOwpAQCAtMTE1LDkgKzExNiw2IEBA
IHZvaWQgU2ltcGxlRm9udERhdGE6OmluaXRHRElGb250KCkKICAgICAgbV9mb250TWV0cmljcy5z
ZXRVbml0c1BlckVtKG1ldHJpY3Mub3RtRU1TcXVhcmUpOwogCiAgICAgIFNlbGVjdE9iamVjdCho
ZGMsIG9sZEZvbnQpOwotICAgICBSZWxlYXNlREMoMCwgaGRjKTsKLQotICAgICByZXR1cm47CiB9
CiAKIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtQ2hhcldpZHRoSW5pdCgpCkBAIC0xODUs
OCArMTgzLDggQEAgYm9vbCBTaW1wbGVGb250RGF0YTo6Y29udGFpbnNDaGFyYWN0ZXJzKGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKSBjb24KICAgICBpZiAoIWxhbmdGb250TGlu
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSERDIGRjID0gR2V0REMoMCk7Ci0gICAg
CisgICAgSFduZERDIGRjKDApOworCiAgICAgRFdPUkQgYWNwQ29kZVBhZ2VzOwogICAgIGxhbmdG
b250TGluay0+Q29kZVBhZ2VUb0NvZGVQYWdlcyhDUF9BQ1AsICZhY3BDb2RlUGFnZXMpOwogCkBA
IC0yMDMsOCArMjAxLDYgQEAgYm9vbCBTaW1wbGVGb250RGF0YTo6Y29udGFpbnNDaGFyYWN0ZXJz
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKSBjb24KICAgICAgICAgb2Zmc2V0
ICs9IG51bUNoYXJhY3RlcnNQcm9jZXNzZWQ7CiAgICAgfQogCi0gICAgUmVsZWFzZURDKDAsIGRj
KTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMTYsNyArMjEyLDcgQEAgdm9pZCBTaW1w
bGVGb250RGF0YTo6ZGV0ZXJtaW5lUGl0Y2goKQogICAgIH0KIAogICAgIC8vIFRFWFRNRVRSSUNT
IGhhdmUgdGhpcy4gIFNldCBtX3RyZWF0QXNGaXhlZFBpdGNoIGJhc2VkIG9mZiB0aGF0LgotICAg
IEhEQyBkYyA9IEdldERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBTYXZlREMoZGMpOwog
ICAgIFNlbGVjdE9iamVjdChkYywgbV9wbGF0Zm9ybURhdGEuaGZvbnQoKSk7CiAKQEAgLTIyNywx
MiArMjIzLDExIEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKICAgICBt
X3RyZWF0QXNGaXhlZFBpdGNoID0gKCh0bS50bVBpdGNoQW5kRmFtaWx5ICYgVE1QRl9GSVhFRF9Q
SVRDSCkgPT0gMCk7CiAKICAgICBSZXN0b3JlREMoZGMsIC0xKTsKLSAgICBSZWxlYXNlREMoMCwg
ZGMpOwogfQogCiBGbG9hdFJlY3QgU2ltcGxlRm9udERhdGE6OmJvdW5kc0ZvckdESUdseXBoKEds
eXBoIGdseXBoKSBjb25zdAogewotICAgIEhEQyBoZGMgPSBHZXREQygwKTsKKyAgICBIV25kREMg
aGRjKDApOwogICAgIFNldEdyYXBoaWNzTW9kZShoZGMsIEdNX0FEVkFOQ0VEKTsKICAgICBIR0RJ
T0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBtX3BsYXRmb3JtRGF0YS5oZm9udCgpKTsK
ICAgICAKQEAgLTI0MSw3ICsyMzYsNiBAQCBGbG9hdFJlY3QgU2ltcGxlRm9udERhdGE6OmJvdW5k
c0ZvckdESUdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIEdldEdseXBoT3V0bGluZShoZGMs
IGdseXBoLCBHR09fTUVUUklDUyB8IEdHT19HTFlQSF9JTkRFWCwgJmdkaU1ldHJpY3MsIDAsIDAs
ICZpZGVudGl0eSk7CiAgICAgCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7Ci0gICAg
UmVsZWFzZURDKDAsIGhkYyk7CiAgICAgCiAgICAgcmV0dXJuIEZsb2F0UmVjdChnZGlNZXRyaWNz
LmdtcHRHbHlwaE9yaWdpbi54LCAtZ2RpTWV0cmljcy5nbXB0R2x5cGhPcmlnaW4ueSwKICAgICAg
ICAgZ2RpTWV0cmljcy5nbUJsYWNrQm94WCArIG1fc3ludGhldGljQm9sZE9mZnNldCwgZ2RpTWV0
cmljcy5nbUJsYWNrQm94WSk7IApAQCAtMjQ5LDcgKzI0Myw3IEBAIEZsb2F0UmVjdCBTaW1wbGVG
b250RGF0YTo6Ym91bmRzRm9yR0RJR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgCiBmbG9h
dCBTaW1wbGVGb250RGF0YTo6d2lkdGhGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsK
LSAgICBIREMgaGRjID0gR2V0REMoMCk7CisgICAgSFduZERDIGhkYygwKTsKICAgICBTZXRHcmFw
aGljc01vZGUoaGRjLCBHTV9BRFZBTkNFRCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0
T2JqZWN0KGhkYywgbV9wbGF0Zm9ybURhdGEuaGZvbnQoKSk7CiAKQEAgLTI1OCw3ICsyNTIsNiBA
QCBmbG9hdCBTaW1wbGVGb250RGF0YTo6d2lkdGhGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29u
c3QKICAgICBHZXRHbHlwaE91dGxpbmUoaGRjLCBnbHlwaCwgR0dPX01FVFJJQ1MgfCBHR09fR0xZ
UEhfSU5ERVgsICZnZGlNZXRyaWNzLCAwLCAwLCAmaWRlbnRpdHkpOwogCiAgICAgU2VsZWN0T2Jq
ZWN0KGhkYywgb2xkRm9udCk7Ci0gICAgUmVsZWFzZURDKDAsIGhkYyk7CiAKICAgICByZXR1cm4g
Z2RpTWV0cmljcy5nbUNlbGxJbmNYICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OwogfQpAQCAtMjcx
LDEyICsyNjQsMTEgQEAgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBTaW1wbGVGb250RGF0YTo6c2Ny
aXB0Rm9udFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICBtX3NjcmlwdEZvbnRQcm9wZXJ0aWVz
LT5jQnl0ZXMgPSBzaXplb2YoU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKTsKICAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBTY3JpcHRHZXRGb250UHJvcGVydGllcygwLCBzY3JpcHRDYWNoZSgpLCBtX3Nj
cmlwdEZvbnRQcm9wZXJ0aWVzKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBFX1BFTkRJTkcpIHsK
LSAgICAgICAgICAgIEhEQyBkYyA9IEdldERDKDApOworICAgICAgICAgICAgSFduZERDIGRjKDAp
OwogICAgICAgICAgICAgU2F2ZURDKGRjKTsKICAgICAgICAgICAgIFNlbGVjdE9iamVjdChkYywg
bV9wbGF0Zm9ybURhdGEuaGZvbnQoKSk7CiAgICAgICAgICAgICBTY3JpcHRHZXRGb250UHJvcGVy
dGllcyhkYywgc2NyaXB0Q2FjaGUoKSwgbV9zY3JpcHRGb250UHJvcGVydGllcyk7CiAgICAgICAg
ICAgICBSZXN0b3JlREMoZGMsIC0xKTsKLSAgICAgICAgICAgIFJlbGVhc2VEQygwLCBkYyk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG1fc2NyaXB0Rm9udFByb3BlcnRpZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2Ny
aWJlQ29udHJvbGxlci5jcHAKaW5kZXggNjdlMzRhNzFkODZlOTZkOWY0ZDU3OGJiNzkxZDUwNDUw
YTRkODE0ZC4uNzg0ODY0MmU1MmNhYjY4NzU1YmQ2NjIzYjQzNjQzZmYyOGJiYzZiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1VuaXNjcmliZUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Vbmlz
Y3JpYmVDb250cm9sbGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlVuaXNjcmliZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb250LmgiCisj
aW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRl
ICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTI0OCwxMyArMjQ5
LDEyIEBAIGJvb2wgVW5pc2NyaWJlQ29udHJvbGxlcjo6c2hhcGVBbmRQbGFjZUl0ZW0oY29uc3Qg
VUNoYXIqIGNwLCB1bnNpZ25lZCBpLCBjb25zdCBTCiAgICAgaWYgKHBsYWNlUmVzdWx0ID09IEVf
UEVORElORykgewogICAgICAgICAvLyBUaGUgc2NyaXB0IGNhY2hlIGlzbid0IHByaW1lZCB3aXRo
IGVub3VnaCBpbmZvIHlldC4gIFdlIG5lZWQgdG8gc2VsZWN0IG91ciBIRk9OVCBpbnRvCiAgICAg
ICAgIC8vIGEgREMgYW5kIHBhc3MgdGhlIERDIGluIHRvIFNjcmlwdFBsYWNlLgotICAgICAgICBI
REMgaGRjID0gR2V0REMoMCk7CisgICAgICAgIEhXbmREQyBoZGMoMCk7CiAgICAgICAgIEhGT05U
IGhmb250ID0gZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLmhmb250KCk7CiAgICAgICAgIEhGT05U
IG9sZEZvbnQgPSAoSEZPTlQpU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQpOwogICAgICAgICBwbGFj
ZVJlc3VsdCA9IFNjcmlwdFBsYWNlKGhkYywgZm9udERhdGEtPnNjcmlwdENhY2hlKCksIGdseXBo
cy5kYXRhKCksIGdseXBocy5zaXplKCksIHZpc3VhbEF0dHJpYnV0ZXMuZGF0YSgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpdGVtLmEsIGFkdmFuY2VzLmRhdGEoKSwgb2Zm
c2V0cy5kYXRhKCksIDApOwogICAgICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKLSAg
ICAgICAgUmVsZWFzZURDKDAsIGhkYyk7CiAgICAgfQogICAgIAogICAgIGlmIChGQUlMRUQocGxh
Y2VSZXN1bHQpIHx8IGdseXBocy5pc0VtcHR5KCkpCkBAIC0zODAsNyArMzgwLDcgQEAgYm9vbCBV
bmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZShjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuLCBTQ1JJ
UFRfSVRFTSBpdGVtLCBjb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PFdPUkQ+JiBnbHlwaHMsIFZlY3RvcjxXT1JEPiYgY2x1c3RlcnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlY3RvcjxTQ1JJUFRfVklTQVRUUj4mIHZpc3VhbEF0dHJpYnV0ZXMp
CiB7Ci0gICAgSERDIGhkYyA9IDA7CisgICAgSFduZERDIGhkYzsKICAgICBIRk9OVCBvbGRGb250
ID0gMDsKICAgICBIUkVTVUxUIHNoYXBlUmVzdWx0ID0gRV9QRU5ESU5HOwogICAgIGludCBnbHlw
aENvdW50ID0gMDsKQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIFVuaXNjcmliZUNvbnRyb2xsZXI6
OnNoYXBlKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4sIFNDUklQVF9JVEVNIGl0ZW0sIGNvbgog
ICAgICAgICAgICAgLy8gVGhlIHNjcmlwdCBjYWNoZSBpc24ndCBwcmltZWQgd2l0aCBlbm91Z2gg
aW5mbyB5ZXQuICBXZSBuZWVkIHRvIHNlbGVjdCBvdXIgSEZPTlQgaW50bwogICAgICAgICAgICAg
Ly8gYSBEQyBhbmQgcGFzcyB0aGUgREMgaW4gdG8gU2NyaXB0U2hhcGUuCiAgICAgICAgICAgICBB
U1NFUlQoIWhkYyk7Ci0gICAgICAgICAgICBoZGMgPSBHZXREQygwKTsKKyAgICAgICAgICAgIGhk
Yy5jaGFuZ2VXaW5kb3dEQygwKTsKICAgICAgICAgICAgIEhGT05UIGhmb250ID0gZm9udERhdGEt
PnBsYXRmb3JtRGF0YSgpLmhmb250KCk7CiAgICAgICAgICAgICBvbGRGb250ID0gKEhGT05UKVNl
bGVjdE9iamVjdChoZGMsIGhmb250KTsKICAgICAgICAgfSBlbHNlIGlmIChzaGFwZVJlc3VsdCA9
PSBFX09VVE9GTUVNT1JZKSB7CkBAIC00MDEsMTAgKzQwMSw4IEBAIGJvb2wgVW5pc2NyaWJlQ29u
dHJvbGxlcjo6c2hhcGUoY29uc3QgVUNoYXIqIHN0ciwgaW50IGxlbiwgU0NSSVBUX0lURU0gaXRl
bSwgY29uCiAgICAgICAgIH0KICAgICB9IHdoaWxlIChzaGFwZVJlc3VsdCA9PSBFX1BFTkRJTkcg
fHwgc2hhcGVSZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CiAKLSAgICBpZiAoaGRjKSB7CisgICAg
aWYgKGhkYykKICAgICAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7Ci0gICAgICAgIFJl
bGVhc2VEQygwLCBoZGMpOwotICAgIH0KIAogICAgIGlmIChGQUlMRUQoc2hhcGVSZXN1bHQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ3Vyc29yV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JX
aW4uY3BwCmluZGV4IDU0NGI5YTc3YmY0NjA2MzgwZjdkYmM4YzM5YjJiYTMwMzU5MDY3Y2UuLmNl
NGQ1OGZiNDIxYTVkODQ3MmE3MzYzODJhYmRlOGMxNDczNTA5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DdXJzb3JXaW4uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q3Vyc29yLmgiCiAKICNpbmNsdWRlICJCaXRtYXBJbmZvLmgiCisjaW5jbHVkZSAiSFduZERDLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIlN5
c3RlbUluZm8uaCIKQEAgLTQ5LDcgKzUwLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQ3Vy
c29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywgY29uc3QgSW50UG9pbnQmIGgKICAg
ICBzdGF0aWMgYm9vbCBkb0FscGhhID0gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzWFA7CiAg
ICAgQml0bWFwSW5mbyBjdXJzb3JJbWFnZSA9IEJpdG1hcEluZm86OmNyZWF0ZShJbnRTaXplKGlt
Zy0+d2lkdGgoKSwgaW1nLT5oZWlnaHQoKSkpOwogCi0gICAgSERDIGRjID0gR2V0REMoMCk7Cisg
ICAgSFduZERDIGRjKDApOwogICAgIEhEQyB3b3JraW5nREMgPSBDcmVhdGVDb21wYXRpYmxlREMo
ZGMpOwogICAgIGlmIChkb0FscGhhKSB7CiAgICAgICAgIE93blB0cjxIQklUTUFQPiBoQ3Vyc29y
ID0gYWRvcHRQdHIoQ3JlYXRlRElCU2VjdGlvbihkYywgKEJJVE1BUElORk8gKikmY3Vyc29ySW1h
Z2UsIERJQl9SR0JfQ09MT1JTLCAwLCAwLCAwKSk7CkBAIC0xMTIsNyArMTEzLDYgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhcmVkQ3Vyc29yPiBjcmVhdGVTaGFyZWRDdXJzb3IoSW1hZ2UqIGltZywg
Y29uc3QgSW50UG9pbnQmIGgKICAgICAgICAgRGVsZXRlREMoYW5kTWFza0RDKTsKICAgICB9CiAg
ICAgRGVsZXRlREMod29ya2luZ0RDKTsKLSAgICBSZWxlYXNlREMoMCwgZGMpOwogCiAgICAgcmV0
dXJuIGltcGwucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggYmM0NWUyMmMzMTg0Y2YzYjgyOGI4N2MzMWQ4MzU5NGJk
ZWMxNTAxZC4uNzQxMDE2ODQ2ZWU2MGNiOWE0ODc5YTViMzAxNDkwNGZhY2Y4MWRhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQml0bWFwSW5mby5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJIV25kREMuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlJldGFpblB0ci5oIgogCkBAIC04OSw3ICs5
MCw3IEBAIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIEZs
b2F0U2l6ZSBzY2FsZSkKICAgICBJbnRTaXplIHNyY1NpemUgPSBkcmFnSW1hZ2VTaXplKGltYWdl
KTsKICAgICBJbnRTaXplIGRzdFNpemUoc3RhdGljX2Nhc3Q8aW50PihzcmNTaXplLndpZHRoKCkg
KiBzY2FsZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihzcmNTaXplLmhlaWdodCgpICogc2Nh
bGUuaGVpZ2h0KCkpKTsKICAgICBIQklUTUFQIGhibXAgPSAwOwotICAgIEhEQyBkYyA9IEdldERD
KDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIREMgZHN0REMgPSBDcmVhdGVDb21wYXRpYmxl
REMoZGMpOwogICAgIGlmICghZHN0REMpCiAgICAgICAgIGdvdG8gZXhpdDsKQEAgLTExNiwxNCAr
MTE3LDEzIEBAIGV4aXQ6CiAgICAgICAgIGhibXAgPSBpbWFnZTsKICAgICBpZiAoZHN0REMpCiAg
ICAgICAgIERlbGV0ZURDKGRzdERDKTsKLSAgICBSZWxlYXNlREMoMCwgZGMpOwogICAgIHJldHVy
biBoYm1wOwogfQogICAgIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJ
bWFnZSogaW1nKQogewogICAgIEhCSVRNQVAgaGJtcCA9IDA7Ci0gICAgSERDIGRjID0gR2V0REMo
MCk7CisgICAgSFduZERDIGRjKDApOwogICAgIEhEQyB3b3JraW5nREMgPSBDcmVhdGVDb21wYXRp
YmxlREMoZGMpOwogICAgIENHQ29udGV4dFJlZiBkcmF3Q29udGV4dCA9IDA7CiAgICAgaWYgKCF3
b3JraW5nREMpCkBAIC0xNTUsNyArMTU1LDYgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSogaW1nKQogZXhpdDoKICAgICBpZiAod29ya2luZ0RDKQogICAgICAg
ICBEZWxldGVEQyh3b3JraW5nREMpOwotICAgIFJlbGVhc2VEQygwLCBkYyk7CiAgICAgcmV0dXJu
IGhibXA7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VX
aW4uY3BwCmluZGV4IGY4NThiMDdmMTZmMzYzZTFlNWZiZmY5OTY5YzlhNzY0OWJiODAxYTMuLjFm
NmI3M2U4OWVkNDM5ODc3NDg0NzAwMzVmYzZkMjg2MDM0NzQ0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIlJldGFpblB0ci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xODMsMTgg
KzE4NCwxNSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgaW5MYWJlbCwgRnJhbWUqIGZyYQogICAgIC8vIFdlIG5vdyBrbm93IGhv
dyBiaWcgdGhlIGltYWdlIG5lZWRzIHRvIGJlLCBzbyB3ZSBjcmVhdGUgYW5kCiAgICAgLy8gZmls
bCB0aGUgYmFja2dyb3VuZAogICAgIEhCSVRNQVAgaW1hZ2UgPSAwOwotICAgIEhEQyBkYyA9IEdl
dERDKDApOworICAgIEhXbmREQyBkYygwKTsKICAgICBIREMgd29ya2luZ0RDID0gQ3JlYXRlQ29t
cGF0aWJsZURDKGRjKTsKLSAgICBpZiAoIXdvcmtpbmdEQykgewotICAgICAgICBSZWxlYXNlREMo
MCwgZGMpOworICAgIGlmICghd29ya2luZ0RDKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY29udGV4dFJlZjsKICAgICBpbWFnZSA9IGFs
bG9jSW1hZ2Uod29ya2luZ0RDLCBpbWFnZVNpemUsICZjb250ZXh0UmVmKTsKICAgICBpZiAoIWlt
YWdlKSB7CiAgICAgICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7Ci0gICAgICAgIFJlbGVhc2VEQygw
LCBkYyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAgICAgCkBAIC0yMjUsNyArMjIz
LDYgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGluTGFiZWwsIEZyYW1lKiBmcmEKIAogICAgIGRlYWxsb2NDb250ZXh0KGNvbnRl
eHRSZWYpOwogICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7Ci0gICAgUmVsZWFzZURDKDAsIGRjKTsK
ICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9IV25kREMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9IV25kREMuaApp
bmRleCAxMWRjMzMyNTdlYWIxMTM2MDVkNTg0ODcxNzZkMTRhOWRhZjgwYmQwLi44MDVkZGZmZmQx
N2NlZWNhNWRmNzA2NTFjNWUxYTVhZjI3NzkwNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vSFduZERDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0hXbmREQy5oCkBAIC0zNCw2ICszNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBI
V25kREMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhXbmREQyk7CiBwdWJsaWM6CisgICAg
ZXhwbGljaXQgSFduZERDKCkKKyAgICAgICAgOiBtX2h3bmQoMCkKKyAgICAgICAgLCBtX2hkYygw
KQorICAgIHsKKyAgICB9CisKICAgICBleHBsaWNpdCBIV25kREMoSFdORCBod25kKQogICAgICAg
ICA6IG1faHduZChod25kKQogICAgICAgICAsIG1faGRjKDo6R2V0REMoaHduZCkpCkBAIC00OCw4
ICs1NCwyNCBAQCBwdWJsaWM6CiAKICAgICB+SFduZERDKCkKICAgICB7Ci0gICAgICAgIGlmICht
X2hkYykKLSAgICAgICAgICAgIDo6UmVsZWFzZURDKG1faHduZCwgbV9oZGMpOworICAgICAgICBj
bGVhckRDKCk7CisgICAgfQorCisgICAgSERDIGNoYW5nZVdpbmRvd0RDKEhXTkQgaHduZCkKKyAg
ICB7CisgICAgICAgIGNsZWFyREMoKTsKKyAgICAgICAgbV9od25kID0gaHduZDsKKyAgICAgICAg
bV9oZGMgPSA6OkdldERDKGh3bmQpOworICAgICAgICByZXR1cm4gbV9oZGM7CisgICAgfQorCisg
ICAgdm9pZCBjbGVhckRDKCkKKyAgICB7CisgICAgICAgIGlmICghbV9oZGMpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIDo6UmVsZWFzZURDKG1faHduZCwgbV9oZGMpOworICAgICAgICBt
X2h3bmQgPSAwOworICAgICAgICBtX2hkYyA9IDA7CiAgICAgfQogCiAgICAgb3BlcmF0b3IgSERD
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRl
eCBkNzY4YTNkNTNmYmM3NmY3NDc5ODU4MmIzMmZmNTdmZDg0YzBmMjMyLi44ODdmYzkxMmMwMDJk
NTMzN2YzNWE2NjUzNTI2NDFlMjg4ZDEwYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYpCiAKICAgICBjbGVhcigpOwogCi0gICAgSERDIGRjID0gR2V0REMoMCk7CisgICAgSFdu
ZERDIGRjKDApOwogICAgIEhEQyBjb21wYXRpYmxlREMgPSBDcmVhdGVDb21wYXRpYmxlREMoMCk7
CiAgICAgSERDIHNvdXJjZURDID0gQ3JlYXRlQ29tcGF0aWJsZURDKDApOwogICAgIE93blB0cjxI
QklUTUFQPiByZXN1bHRCaXRtYXAgPSBhZG9wdFB0cihDcmVhdGVDb21wYXRpYmxlQml0bWFwKGRj
LCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKSk7CkBAIC0yNDMsNyArMjQ0LDYgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKQogICAgIFNlbGVjdE9iamVjdChjb21wYXRpYmxlREMsIG9sZEJpdG1hcCk7CiAg
ICAgRGVsZXRlREMoc291cmNlREMpOwogICAgIERlbGV0ZURDKGNvbXBhdGlibGVEQyk7Ci0gICAg
UmVsZWFzZURDKDAsIGRjKTsKIAogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsK
ICAgICAgICAgOjpTZXRDbGlwYm9hcmREYXRhKENGX0JJVE1BUCwgcmVzdWx0Qml0bWFwLmxlYWtQ
dHIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IDA5N2ZjODIzMTU0MDNhNjlkODE5NjJlOTdlZWRmYTc0MzQwNmUxMTMuLmNmN2YyZTk0MTJh
NDFiYjdjYTY2MGRiNGIyZGMyMjQ0NDRhZjM2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKQEAgLTQyLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUgIlRleHRSdW4u
aCIKICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKKwogI2luY2x1ZGUgPHdpbmRv
d3MuaD4KICNpbmNsdWRlIDx3aW5kb3dzeC5oPgogI2lmIE9TKFdJTkNFKQpAQCAtNTY2LDcgKzU2
OCw3IEBAIHZvaWQgUG9wdXBNZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
LCBIREMgaGRjKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fREMpIHsKLSAgICAgICAg
bV9EQyA9IDo6Q3JlYXRlQ29tcGF0aWJsZURDKDo6R2V0REMobV9wb3B1cCkpOworICAgICAgICBt
X0RDID0gOjpDcmVhdGVDb21wYXRpYmxlREMoSFduZERDKG1fcG9wdXApKTsKICAgICAgICAgaWYg
KCFtX0RDKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTY2MCwxMiArNjYyLDEwIEBA
IHZvaWQgUG9wdXBNZW51V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMg
aGRjKQogICAgIGlmIChtX3Njcm9sbGJhcikKICAgICAgICAgbV9zY3JvbGxiYXItPnBhaW50KCZj
b250ZXh0LCBkYW1hZ2VSZWN0KTsKIAotICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogOjpH
ZXREQyhtX3BvcHVwKTsKKyAgICBIV25kREMgaFduZERDOworICAgIEhEQyBsb2NhbERDID0gaGRj
ID8gaGRjIDogaFduZERDLmNoYW5nZVdpbmRvd0RDKG1fcG9wdXApOwogCiAgICAgOjpCaXRCbHQo
bG9jYWxEQywgZGFtYWdlUmVjdC54KCksIGRhbWFnZVJlY3QueSgpLCBkYW1hZ2VSZWN0LndpZHRo
KCksIGRhbWFnZVJlY3QuaGVpZ2h0KCksIG1fREMsIGRhbWFnZVJlY3QueCgpLCBkYW1hZ2VSZWN0
LnkoKSwgU1JDQ09QWSk7Ci0KLSAgICBpZiAoIWhkYykKLSAgICAgICAgOjpSZWxlYXNlREMobV9w
b3B1cCwgbG9jYWxEQyk7CiB9CiAKIGludCBQb3B1cE1lbnVXaW46OnNjcm9sbFNpemUoU2Nyb2xs
YmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDMwNDA1YzY3ZGViNDM2Y2ZhYzQ0
ZTM1NmExYWFkZDU5MTEwNTlkZDIuLjM0OTM1ODg0ODExOTA4N2QzZTFhM2FiNjQxOGRlZTQ5M2Ix
NTUyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwCkBAIC0zNywxMSArMzcsMTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dFJ1bi5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9X
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3aW5kb3dzeC5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTQ4MCwxNCArNDgz
LDE4IEBAIHN0YXRpYyBTdHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpCiAgICAgcmV0dXJu
IFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgbWlu
dXRlcywgc2Vjb25kcyk7CiB9CiAKK3N0YXRpYyBQYXNzT3duUHRyPEhEQz4gY3JlYXRlQ29tcGF0
aWJsZURDRm9yV2luZG93KEhXTkQgaHduZCkKK3sKKyAgICBIV25kREMgd2luZG93REMoaHduZCk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKENyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOworfQor
CiB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRyYXcoKQogewotICAgIEhEQyB3aW5k
b3dEQyA9IEdldERDKG1faHVkV2luZG93KTsKLSAgICBIREMgYml0bWFwREMgPSBDcmVhdGVDb21w
YXRpYmxlREMod2luZG93REMpOwotICAgIDo6UmVsZWFzZURDKG1faHVkV2luZG93LCB3aW5kb3dE
Qyk7Ci0gICAgSEdESU9CSiBvbGRCaXRtYXAgPSBTZWxlY3RPYmplY3QoYml0bWFwREMsIG1fYml0
bWFwLmdldCgpKTsKKyAgICBPd25QdHI8SERDPiBiaXRtYXBEQyA9IGNyZWF0ZUNvbXBhdGlibGVE
Q0ZvcldpbmRvdyhtX2h1ZFdpbmRvdyk7CisgICAgSEdESU9CSiBvbGRCaXRtYXAgPSBTZWxlY3RP
YmplY3QoYml0bWFwREMuZ2V0KCksIG1fYml0bWFwLmdldCgpKTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCBjb250ZXh0KGJpdG1hcERDLCB0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4
dChiaXRtYXBEQy5nZXQoKSwgdHJ1ZSk7CiAKICAgICBjb250ZXh0LnNhdmUoKTsKIApAQCAtNTQ5
LDEyICs1NTYsMTEgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3KCkKICAg
ICBTSVpFIHNpemUgPSB7IHdpbmRvd1dpZHRoLCB3aW5kb3dIZWlnaHQgfTsKICAgICBQT0lOVCBz
b3VyY2VQb2ludCA9IHswLCAwfTsKICAgICBQT0lOVCBkZXN0UG9pbnQgPSB7IG1faHVkUG9zaXRp
b24ueCgpLCBtX2h1ZFBvc2l0aW9uLnkoKSB9OwotICAgIEJPT0wgcmVzdWx0ID0gVXBkYXRlTGF5
ZXJlZFdpbmRvdyhtX2h1ZFdpbmRvdywgMCwgJmRlc3RQb2ludCwgJnNpemUsIGJpdG1hcERDLCAm
c291cmNlUG9pbnQsIDAsICZibGVuZEZ1bmN0aW9uLCBVTFdfQUxQSEEpOworICAgIEJPT0wgcmVz
dWx0ID0gVXBkYXRlTGF5ZXJlZFdpbmRvdyhtX2h1ZFdpbmRvdywgMCwgJmRlc3RQb2ludCwgJnNp
emUsIGJpdG1hcERDLmdldCgpLCAmc291cmNlUG9pbnQsIDAsICZibGVuZEZ1bmN0aW9uLCBVTFdf
QUxQSEEpOwogCiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAKLSAgICA6OlNlbGVjdE9iamVjdChi
aXRtYXBEQywgb2xkQml0bWFwKTsKLSAgICA6OkRlbGV0ZURDKGJpdG1hcERDKTsKKyAgICA6OlNl
bGVjdE9iamVjdChiaXRtYXBEQy5nZXQoKSwgb2xkQml0bWFwKTsKIH0KIAogTFJFU1VMVCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpodWRXbmRQcm9jKEhXTkQgd25kLCBVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFi
YXNlLmNwcAppbmRleCBkODE3ZjY5NzVmNmFlNTZmZWZmYTc1ZGUzZTM4MjIzNWQxM2YwNTMzLi5m
NDI4YmZjNzY5NjBhMzY2YTg1NzY5MGMzYWU2Y2JjMjhmNjgwNzMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgpAQCAtMjg0LDExICsyODUsOCBAQCBIQklU
TUFQIGNyZWF0ZURJQihMUFNJWkUgc2l6ZSkKIHsKICAgICBCaXRtYXBJbmZvIGJtSW5mbyA9IEJp
dG1hcEluZm86OmNyZWF0ZShJbnRTaXplKCpzaXplKSk7CiAKLSAgICBIREMgZGMgPSBHZXREQygw
KTsKLSAgICBIQklUTUFQIHJlc3VsdCA9IENyZWF0ZURJQlNlY3Rpb24oZGMsICZibUluZm8sIERJ
Ql9SR0JfQ09MT1JTLCAwLCAwLCAwKTsKLSAgICBSZWxlYXNlREMoMCwgZGMpOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICBIV25kREMgZGMoMCk7CisgICAgcmV0dXJuIENyZWF0ZURJQlNlY3Rp
b24oZGMsICZibUluZm8sIERJQl9SR0JfQ09MT1JTLCAwLCAwLCAwKTsKIH0KIAogSEJJVE1BUCBX
ZWJJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlU2hhcmVkQml0bWFwKExQU0laRSBzaXplKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTm9kZUhpZ2hsaWdodC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcAppbmRleCA1OTUyNzIzY2ZiZTg1MzdlN2Q5
ODIxMzQ3MThjNzkyOGRlYTIyMTBhLi41NGRlZjYxMjY5ODM2OTcwYTVjY2IxYTRlY2ViMzhjNDk4
MjBkNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmNwcApAQCAtMzMsMTEg
KzMzLDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRy
b2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dp
bmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTM0LDcg
KzEzNiw3IEBAIHZvaWQgV2ViTm9kZUhpZ2hsaWdodDo6dXBkYXRlKCkKIHsKICAgICBBU1NFUlQo
bV9vdmVybGF5KTsKIAotICAgIEhEQyBoZGMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyg6OkdldERD
KG1fb3ZlcmxheSkpOworICAgIE93blB0cjxIREM+IGhkYyA9IGFkb3B0UHRyKDo6Q3JlYXRlQ29t
cGF0aWJsZURDKEhXbmREQyhtX292ZXJsYXkpKSk7CiAgICAgaWYgKCFoZGMpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTUxLDEyICsxNTMsMTIgQEAgdm9pZCBXZWJOb2RlSGlnaGxpZ2h0Ojp1cGRh
dGUoKQogICAgIEJpdG1hcEluZm8gYml0bWFwSW5mbyA9IEJpdG1hcEluZm86OmNyZWF0ZUJvdHRv
bVVwKEludFNpemUoc2l6ZSkpOwogCiAgICAgdm9pZCogcGl4ZWxzID0gMDsKLSAgICBPd25QdHI8
SEJJVE1BUD4gaGJtcCA9IGFkb3B0UHRyKDo6Q3JlYXRlRElCU2VjdGlvbihoZGMsICZiaXRtYXBJ
bmZvLCBESUJfUkdCX0NPTE9SUywgJnBpeGVscywgMCwgMCkpOworICAgIE93blB0cjxIQklUTUFQ
PiBoYm1wID0gYWRvcHRQdHIoOjpDcmVhdGVESUJTZWN0aW9uKGhkYy5nZXQoKSwgJmJpdG1hcElu
Zm8sIERJQl9SR0JfQ09MT1JTLCAmcGl4ZWxzLCAwLCAwKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShoYm1wLCAiOjpDcmVhdGVESUJTZWN0aW9uIGZhaWxlZCB3aXRoIGVycm9yICVsdSIsIDo6
R2V0TGFzdEVycm9yKCkpOwogCi0gICAgOjpTZWxlY3RPYmplY3QoaGRjLCBoYm1wLmdldCgpKTsK
KyAgICA6OlNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXAuZ2V0KCkpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0IGNvbnRleHQoaGRjKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChoZGMu
Z2V0KCkpOwogCiAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+ZHJhd0hpZ2hsaWdodChjb250ZXh0KTsKIApAQCAtMTc0LDkgKzE3Niw3IEBAIHZv
aWQgV2ViTm9kZUhpZ2hsaWdodDo6dXBkYXRlKCkKICAgICBkc3RQb2ludC54ID0gd2ViVmlld1Jl
Y3QubGVmdDsKICAgICBkc3RQb2ludC55ID0gd2ViVmlld1JlY3QudG9wOwogCi0gICAgOjpVcGRh
dGVMYXllcmVkV2luZG93KG1fb3ZlcmxheSwgOjpHZXREQygwKSwgJmRzdFBvaW50LCAmc2l6ZSwg
aGRjLCAmc3JjUG9pbnQsIDAsICZiZiwgVUxXX0FMUEhBKTsKLQotICAgIDo6RGVsZXRlREMoaGRj
KTsKKyAgICA6OlVwZGF0ZUxheWVyZWRXaW5kb3cobV9vdmVybGF5LCBIV25kREMoMCksICZkc3RQ
b2ludCwgJnNpemUsIGhkYy5nZXQoKSwgJnNyY1BvaW50LCAwLCAmYmYsIFVMV19BTFBIQSk7CiB9
CiAKIHZvaWQgV2ViTm9kZUhpZ2hsaWdodDo6cGxhY2VCZWhpbmRXaW5kb3coSFdORCB3aW5kb3cp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDU3ZDM0NTgyMTQ5YmYyMGJhNWJiMDUwODYwMTEyNWU3
OGY2NWRiNTcuLmQzYTY5OTI5NjFhMDc5NzAzZGY2MmNmMTkxN2MyZGEyMjYyNzBhYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0
VGVzdFJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KQEAgLTg2
Miw3ICs4NjMsNyBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcq
IGZyYW1lVmlldywgaW50IGR4LCBpbnQgZHksIGNvbnN0IEludAogICAgIEhSR04gdXBkYXRlUmVn
aW9uID0gOjpDcmVhdGVSZWN0UmduKDAsIDAsIDAsIDApOwogCiAgICAgLy8gQ29sbGVjdCBvdXIg
ZGV2aWNlIGNvbnRleHQgaW5mbyBhbmQgc2VsZWN0IHRoZSBiaXRtYXAgdG8gc2Nyb2xsLgotICAg
IEhEQyB3aW5kb3dEQyA9IDo6R2V0REMobV92aWV3V2luZG93KTsKKyAgICBIV25kREMgd2luZG93
REMobV92aWV3V2luZG93KTsKICAgICBIREMgYml0bWFwREMgPSA6OkNyZWF0ZUNvbXBhdGlibGVE
Qyh3aW5kb3dEQyk7CiAgICAgSEdESU9CSiBvbGRCaXRtYXAgPSA6OlNlbGVjdE9iamVjdChiaXRt
YXBEQywgbV9iYWNraW5nU3RvcmVCaXRtYXAtPmhhbmRsZSgpKTsKICAgICAKQEAgLTg4OCw3ICs4
ODksNiBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1l
VmlldywgaW50IGR4LCBpbnQgZHksIGNvbnN0IEludAogICAgIC8vIENsZWFuIHVwLgogICAgIDo6
U2VsZWN0T2JqZWN0KGJpdG1hcERDLCBvbGRCaXRtYXApOwogICAgIDo6RGVsZXRlREMoYml0bWFw
REMpOwotICAgIDo6UmVsZWFzZURDKG1fdmlld1dpbmRvdywgd2luZG93REMpOwogfQogCiB2b2lk
IFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1NpemUpCkBAIC05NTgsMTEg
Kzk1OCwxMSBAQCB2b2lkIFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZy
YW1lVmlldywgSERDIGRjLCBib29sIGJhY2tpbmdTdG9yZQogCiAgICAgTE9DQUxfR0RJX0NPVU5U
RVIoMCwgX19GVU5DVElPTl9fKTsKIAotICAgIEhEQyB3aW5kb3dEQyA9IDA7CiAgICAgSERDIGJp
dG1hcERDID0gZGM7CiAgICAgSEdESU9CSiBvbGRCaXRtYXAgPSAwOwogICAgIGlmICghZGMpIHsK
LSAgICAgICAgd2luZG93REMgPSA6OkdldERDKG1fdmlld1dpbmRvdyk7CisgICAgICAgIEhXbmRE
QyB3aW5kb3dEQzsKKyAgICAgICAgd2luZG93REMuY2hhbmdlV2luZG93REMobV92aWV3V2luZG93
KTsKICAgICAgICAgYml0bWFwREMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQyk7CiAg
ICAgICAgIG9sZEJpdG1hcCA9IDo6U2VsZWN0T2JqZWN0KGJpdG1hcERDLCBtX2JhY2tpbmdTdG9y
ZUJpdG1hcC0+aGFuZGxlKCkpOwogICAgIH0KQEAgLTk5Niw3ICs5OTYsNiBAQCB2b2lkIFdlYlZp
ZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGRjLCBib29s
IGJhY2tpbmdTdG9yZQogICAgIGlmICghZGMpIHsKICAgICAgICAgOjpTZWxlY3RPYmplY3QoYml0
bWFwREMsIG9sZEJpdG1hcCk7CiAgICAgICAgIDo6RGVsZXRlREMoYml0bWFwREMpOwotICAgICAg
ICA6OlJlbGVhc2VEQyhtX3ZpZXdXaW5kb3csIHdpbmRvd0RDKTsKICAgICB9CiAKICAgICBHZGlG
bHVzaCgpOwpAQCAtMTAwOCw3ICsxMDA3LDcgQEAgdm9pZCBXZWJWaWV3OjpwZXJmb3JtTGF5ZXJl
ZFdpbmRvd1VwZGF0ZSgpCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZUJpdG1hcCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgSERDIGhkY1NjcmVlbiA9IDo6R2V0REMobV92aWV3V2luZG93KTsKKyAg
ICBIV25kREMgaGRjU2NyZWVuKG1fdmlld1dpbmRvdyk7CiAgICAgT3duUHRyPEhEQz4gaGRjTWVt
ID0gYWRvcHRQdHIoOjpDcmVhdGVDb21wYXRpYmxlREMoaGRjU2NyZWVuKSk7CiAgICAgSEJJVE1B
UCBoYm1PbGQgPSBzdGF0aWNfY2FzdDxIQklUTUFQPig6OlNlbGVjdE9iamVjdChoZGNNZW0uZ2V0
KCksIG1fYmFja2luZ1N0b3JlQml0bWFwLT5oYW5kbGUoKSkpOwogCkBAIC0xMDI2LDcgKzEwMjUs
NiBAQCB2b2lkIFdlYlZpZXc6OnBlcmZvcm1MYXllcmVkV2luZG93VXBkYXRlKCkKICAgICA6OlVw
ZGF0ZUxheWVyZWRXaW5kb3cobV92aWV3V2luZG93LCBoZGNTY3JlZW4sIDAsICZ3aW5kb3dTaXpl
LCBoZGNNZW0uZ2V0KCksICZsYXllclBvcywgMCwgJmJsZW5kRnVuY3Rpb24sIFVMV19BTFBIQSk7
CiAKICAgICA6OlNlbGVjdE9iamVjdChoZGNNZW0uZ2V0KCksIGhibU9sZCk7Ci0gICAgOjpSZWxl
YXNlREMoMCwgaGRjU2NyZWVuKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQ
QVJBTSBvcHRpb25zKQpAQCAtMTEzMiwxMyArMTEzMCwxNCBAQCB2b2lkIFdlYlZpZXc6OnBhaW50
SW50b0JhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGJpdG1hcERDLCBjb25z
dCBJbgogICAgIFJFQ1QgcmVjdCA9IGRpcnR5UmVjdDsKIAogI2lmIEZMQVNIX0JBQ0tJTkdfU1RP
UkVfUkVEUkFXCi0gICAgSERDIGRjID0gOjpHZXREQyhtX3ZpZXdXaW5kb3cpOwotICAgIE93blB0
cjxIQlJVU0g+IHllbGxvd0JydXNoKENyZWF0ZVNvbGlkQnJ1c2goUkdCKDI1NSwgMjU1LCAwKSkp
OwotICAgIEZpbGxSZWN0KGRjLCAmcmVjdCwgeWVsbG93QnJ1c2guZ2V0KCkpOwotICAgIEdkaUZs
dXNoKCk7Ci0gICAgU2xlZXAoNTApOwotICAgIHBhaW50SW50b1dpbmRvdyhiaXRtYXBEQywgZGMs
IGRpcnR5UmVjdCk7Ci0gICAgOjpSZWxlYXNlREMobV92aWV3V2luZG93LCBkYyk7CisgICAgewor
ICAgICAgICBIV25kREMgZGMobV92aWV3V2luZG93KTsKKyAgICAgICAgT3duUHRyPEhCUlVTSD4g
eWVsbG93QnJ1c2goQ3JlYXRlU29saWRCcnVzaChSR0IoMjU1LCAyNTUsIDApKSk7CisgICAgICAg
IEZpbGxSZWN0KGRjLCAmcmVjdCwgeWVsbG93QnJ1c2guZ2V0KCkpOworICAgICAgICBHZGlGbHVz
aCgpOworICAgICAgICBTbGVlcCg1MCk7CisgICAgICAgIHBhaW50SW50b1dpbmRvdyhiaXRtYXBE
QywgZGMsIGRpcnR5UmVjdCk7CisgICAgfQogI2VuZGlmCiAKICAgICBHcmFwaGljc0NvbnRleHQg
Z2MoYml0bWFwREMsIG1fdHJhbnNwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L3dpbi9TaGFyZWFibGVCaXRtYXBXaW4uY3BwCmluZGV4IGJmMjNkY2RmZjlhNjVlZGZkMWQwZDE3
OWU0ODZhNmI4M2I3MGQyMzYuLjJlZDg0MjhiMDZjNTQ5YzY5ZTJiYmRiMDRiMDZkZmRjOGNjZTlj
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFw
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcFdp
bi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9IV25kREMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM5LDEwICs0MCwx
MCBAQCBIREMgU2hhcmVhYmxlQml0bWFwOjp3aW5kb3dzQ29udGV4dCgpIGNvbnN0CiAgICAgaWYg
KG1fd2luZG93c0NvbnRleHQpCiAgICAgICAgIHJldHVybiBtX3dpbmRvd3NDb250ZXh0LmdldCgp
OwogCi0gICAgT3duUHRyPEhEQz4gc2NyZWVuREMgPSBhZG9wdFB0cig6OkdldERDKDApKTsKKyAg
ICBIV25kREMgc2NyZWVuREMoMCk7CiAgICAgQml0bWFwSW5mbyBibUluZm8gPSBCaXRtYXBJbmZv
OjpjcmVhdGVCb3R0b21VcChtX3NpemUpOwogCi0gICAgbV93aW5kb3dzQ29udGV4dCA9IGFkb3B0
UHRyKDo6Q3JlYXRlQ29tcGF0aWJsZURDKHNjcmVlbkRDLmdldCgpKSk7CisgICAgbV93aW5kb3dz
Q29udGV4dCA9IGFkb3B0UHRyKDo6Q3JlYXRlQ29tcGF0aWJsZURDKHNjcmVlbkRDKSk7CiAgICAg
bV93aW5kb3dzQml0bWFwID0gYWRvcHRQdHIoQ3JlYXRlRElCU2VjdGlvbihtX3dpbmRvd3NDb250
ZXh0LmdldCgpLCAmYm1JbmZvLCBESUJfUkdCX0NPTE9SUywgMCwgbV9zaGFyZWRNZW1vcnktPmhh
bmRsZSgpLCAwKSk7CiAgICAgOjpTZWxlY3RPYmplY3QobV93aW5kb3dzQ29udGV4dC5nZXQoKSwg
bV93aW5kb3dzQml0bWFwLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmNwcAppbmRleCBkMzJlMGY4MTczMGRiZmVi
MmNmMzA5ODJjYmQxNjE3M2QwMzExNTRmLi4xNGMzMDMyZTBiMTBmOWNkZGM1N2FkOWY5ZTIzMmNi
ZjUyOTdlNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlBv
cHVwTWVudVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlBvcHVwTWVudVByb3h5V2luLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvV2ViQ29yZUluc3RhbmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXJU
aGVtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSFduZERDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNp
bmNsdWRlIDx3aW5kb3dzeC5oPgogCkBAIC04MDgsNyArODA5LDcgQEAgdm9pZCBXZWJQb3B1cE1l
bnVQcm94eVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX0RDKSB7Ci0gICAgICAgIG1fREMgPSA6OkNyZWF0
ZUNvbXBhdGlibGVEQyg6OkdldERDKG1fcG9wdXApKTsKKyAgICAgICAgbV9EQyA9IDo6Q3JlYXRl
Q29tcGF0aWJsZURDKEhXbmREQyhtX3BvcHVwKSk7CiAgICAgICAgIGlmICghbV9EQykKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NDgsMTIgKzg0OSwxMSBAQCB2b2lkIFdlYlBvcHVw
TWVudVByb3h5V2luOjpwYWludChjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQog
ICAgIGlmIChtX3Njcm9sbGJhcikKICAgICAgICAgbV9zY3JvbGxiYXItPnBhaW50KCZjb250ZXh0
LCBkYW1hZ2VSZWN0KTsKIAotICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogOjpHZXREQyht
X3BvcHVwKTsKIAotICAgIDo6Qml0Qmx0KGxvY2FsREMsIGRhbWFnZVJlY3QueCgpLCBkYW1hZ2VS
ZWN0LnkoKSwgZGFtYWdlUmVjdC53aWR0aCgpLCBkYW1hZ2VSZWN0LmhlaWdodCgpLCBtX0RDLCBk
YW1hZ2VSZWN0LngoKSwgZGFtYWdlUmVjdC55KCksIFNSQ0NPUFkpOworICAgIEhXbmREQyBoV25k
REM7CisgICAgSERDIGxvY2FsREMgPSBoZGMgPyBoZGMgOiBoV25kREMuY2hhbmdlV2luZG93REMo
bV9wb3B1cCk7CiAKLSAgICBpZiAoIWhkYykKLSAgICAgICAgOjpSZWxlYXNlREMobV9wb3B1cCwg
bG9jYWxEQyk7CisgICAgOjpCaXRCbHQobG9jYWxEQywgZGFtYWdlUmVjdC54KCksIGRhbWFnZVJl
Y3QueSgpLCBkYW1hZ2VSZWN0LndpZHRoKCksIGRhbWFnZVJlY3QuaGVpZ2h0KCksIG1fREMsIGRh
bWFnZVJlY3QueCgpLCBkYW1hZ2VSZWN0LnkoKSwgU1JDQ09QWSk7CiB9CiAKIGJvb2wgV2ViUG9w
dXBNZW51UHJveHlXaW46OnNldEZvY3VzZWRJbmRleChpbnQgaSwgYm9vbCBob3RUcmFja2luZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGQ0NGUyNTU2MGUy
ZTE1ODUxNWEwMmQzZDJmOTgzN2E1YjEwYjc1ZWMuLmMwMDYxZmNjNjQ2Y2UzMjU4MTlkYTFiYmZl
Nzg3OGUwNzUzYmM0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cApAQCAtNTIsNiArNTIsNyBAQAogI2lmIFVTRShDRykKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dENHLmg+CiAjZW5kaWYKKyNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgpAQCAtOTU5LDkgKzk2MCw4IEBAIHZv
aWQgV2ViVmlldzo6c2Nyb2xsVmlldyhjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJ
bnRTaXplJiBzY3JvbGxPZmZzZXQpCiB2b2lkIFdlYlZpZXc6OmZsYXNoQmFja2luZ1N0b3JlVXBk
YXRlcyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHVwZGF0ZVJlY3RzKQogewogICAgIHN0YXRpYyBI
QlJVU0ggYnJ1c2ggPSBjcmVhdGVCcnVzaChXZWJQYWdlUHJveHk6OmJhY2tpbmdTdG9yZVVwZGF0
ZXNGbGFzaENvbG9yKCkucmdiKCkpLmxlYWtQdHIoKTsKLSAgICBIREMgZGMgPSA6OkdldERDKG1f
d2luZG93KTsKKyAgICBIV25kREMgZGMobV93aW5kb3cpOwogICAgIGZsYXNoUmVjdHMoZGMsIHVw
ZGF0ZVJlY3RzLmRhdGEoKSwgdXBkYXRlUmVjdHMuc2l6ZSgpLCBicnVzaCk7Ci0gICAgOjpSZWxl
YXNlREMobV93aW5kb3csIGRjKTsKIH0KIAogV2ViQ29yZTo6SW50U2l6ZSBXZWJWaWV3Ojp2aWV3
U2l6ZSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>