<?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>57502</bug_id>
          
          <creation_ts>2011-03-30 13:33:57 -0700</creation_ts>
          <short_desc>Make malloc validation useful</short_desc>
          <delta_ts>2011-06-18 11:42:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>57816</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>376635</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-30 13:33:57 -0700</bug_when>
    <thetext>Make malloc validation useful</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376638</commentid>
    <comment_count>1</comment_count>
      <attachid>87606</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-30 13:37:49 -0700</bug_when>
    <thetext>Created attachment 87606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376640</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 13:42:55 -0700</bug_when>
    <thetext>Attachment 87606 did not pass style-queue:

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

Source/JavaScriptCore/wtf/FastMalloc.h:193:  Should have a space between // and comment  [whitespace/comments] [4]
Source/JavaScriptCore/wtf/FastMalloc.cpp:169:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:227:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:340:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:1304:  pageheap_lock is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/wtf/FastMalloc.cpp:2480:  Should have a space between // and comment  [whitespace/comments] [4]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3827:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3992:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 8 in 5 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>376679</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-30 14:35:32 -0700</bug_when>
    <thetext>Attachment 87606 did not build on win:
Build output: http://queues.webkit.org/results/8280969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376692</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-30 14:43:24 -0700</bug_when>
    <thetext>2&gt;..\..\wtf\FastMalloc.cpp(236) : error C2220: warning treated as error - no &apos;object&apos; file generated
2&gt;..\..\wtf\FastMalloc.cpp(236) : warning C4245: &apos;=&apos; : conversion from &apos;&apos; to &apos;WTF::Internal::ValidationTag&apos;, signed/unsigned mismatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376697</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-30 14:49:36 -0700</bug_when>
    <thetext>+    memset(p, 0xCC, header-&gt;m_size);

I think 0xbbadbeef would be better, since that&apos;s that standard dereference we look for to indicate assertion failure.

+        //if (Internal::fastMallocMatchValidationType(p) != allocType)
+        //    Internal::fastMallocMatchFailed(p);

Boo on commented-out code.

+    //ASSERT(IsHeld(pageheap_lock));

Boo on commented-out code.

-    ASSERT(IsHeld(pageheap_lock));
+    ASSERT(pageheap_lock.IsHeld());

Why all of these changes?

r- because of the build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376700</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-30 14:53:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; +    memset(p, 0xCC, header-&gt;m_size);
&gt; 
&gt; I think 0xbbadbeef would be better, since that&apos;s that standard dereference we look for to indicate assertion failure.

yeah you&apos;d think memset would be able to plan an entire int given that it takes an int argument, but it converts to unsigned char first.  Hence 0xCC.

&gt; 
&gt; +        //if (Internal::fastMallocMatchValidationType(p) != allocType)
&gt; +        //    Internal::fastMallocMatchFailed(p);
&gt; 
&gt; Boo on commented-out code.
Removed -- it would be nice to add this back, but currently new/free mismatches exist all over the place

&gt; 
&gt; +    //ASSERT(IsHeld(pageheap_lock));
&gt; 
&gt; Boo on commented-out code.
Fixed

&gt; 
&gt; -    ASSERT(IsHeld(pageheap_lock));
&gt; +    ASSERT(pageheap_lock.IsHeld());
&gt; 
&gt; Why all of these changes?

Apparently no one has done a debug build of fast malloc for a long time.

&gt; 
&gt; r- because of the build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376701</commentid>
    <comment_count>7</comment_count>
      <attachid>87622</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-30 14:53:20 -0700</bug_when>
    <thetext>Created attachment 87622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376702</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 14:55:20 -0700</bug_when>
    <thetext>Attachment 87622 did not pass style-queue:

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

Source/JavaScriptCore/wtf/FastMalloc.cpp:169:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:227:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:340:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:1304:  pageheap_lock is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3827:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3992:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 6 in 5 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>376766</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-30 16:12:27 -0700</bug_when>
    <thetext>Attachment 87622 did not build on win:
Build output: http://queues.webkit.org/results/8311020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378869</commentid>
    <comment_count>10</comment_count>
      <attachid>87622</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-04 10:37:23 -0700</bug_when>
    <thetext>Comment on attachment 87622
Patch

Still failing to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378934</commentid>
    <comment_count>11</comment_count>
      <attachid>88089</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-04 11:57:44 -0700</bug_when>
    <thetext>Created attachment 88089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378937</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 12:01:16 -0700</bug_when>
    <thetext>Attachment 88089 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/JavaScriptCore/wtf/FastMalloc.cpp:169:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:227:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:340:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:1304:  pageheap_lock is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3827:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3992:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 6 in 6 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>378979</commentid>
    <comment_count>13</comment_count>
      <attachid>88103</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-04 12:49:26 -0700</bug_when>
    <thetext>Created attachment 88103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378983</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 12:52:40 -0700</bug_when>
    <thetext>Attachment 88103 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/JavaScriptCore/wtf/FastMalloc.cpp:169:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:227:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:340:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:1306:  pageheap_lock is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3829:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/wtf/FastMalloc.cpp:3994:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 6 in 6 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>379002</commentid>
    <comment_count>15</comment_count>
      <attachid>88103</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-04 13:19:06 -0700</bug_when>
    <thetext>Comment on attachment 88103
Patch

r=me, now that the build works and debug builds do not ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379108</commentid>
    <comment_count>16</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-04 15:01:04 -0700</bug_when>
    <thetext>Committed r82876: &lt;http://trac.webkit.org/changeset/82876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379136</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 15:29:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82876 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379343</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-04 22:42:55 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Committed r82876: &lt;http://trac.webkit.org/changeset/82876&gt;

I reverted it because of test crashes on the SnowLeopard bot. (Release-only?)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87606</attachid>
            <date>2011-03-30 13:37:49 -0700</date>
            <delta_ts>2011-03-30 14:53:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57502-20110330133748.patch</filename>
            <type>text/plain</type>
            <size>22225</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDky
MjJmMjVjNTE2Zjg1YTU2NmZjMGJkMGNjZDZlZDJjYjFjODgzOWEuLmMwMTcwMTYxMDYzYzQxYTg1
YjAxNjVmZDQ3YWEzZTBkNDNhMGRhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDExLTAzLTMwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBtYWxs
b2MgdmFsaWRhdGlvbiB1c2VmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3NTAyCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04gd2l0aCBhIGdlbmVyYWwKKyAgICAgICAgY29ycnVwdGlvbiBj
aGVjayB0aGF0IHRhZ3MgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGFsbCBhbGxvY2F0aW9ucwor
ICAgICAgICB0byBjaGVjayBmb3Igd3JpdGUgb3ZlcmZsb3dzIGFuZCBvdmVyd3JpdGVzIHRoZSBj
b250ZW50cyBvZgorICAgICAgICBtZW1vcnkgb24gZnJlZSBpbiBvcmRlciB0byAoaG9wZWZ1bGx5
KSBzaG93IHVwIHVzZS1hZnRlci1mcmVlIGlzc3VlcworICAgICAgICBzb29uZXIuCisKKyAgICAg
ICAgV2UgYWxzbyB0dXJuIGl0IG9uIGJ5IGRlZmF1bHQgZm9yIGRlYnVnIGJ1aWxkcy4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5jcHA6
CisgICAgICAgIChXVEY6OnRyeUZhc3RNYWxsb2MpOgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9j
KToKKyAgICAgICAgKFdURjo6dHJ5RmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OmZhc3RDYWxs
b2MpOgorICAgICAgICAoV1RGOjpmYXN0RnJlZSk6CisgICAgICAgIChXVEY6OnRyeUZhc3RSZWFs
bG9jKToKKyAgICAgICAgKFdURjo6ZmFzdFJlYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6aXNTY2F2ZW5nZXJTdXNwZW5kZWQpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6c2NoZWR1bGVTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY19Q
YWdlSGVhcDo6c3VzcGVuZFNjYXZlbmdlcik6CisgICAgICAgIChXVEY6OlRDTWFsbG9jX1BhZ2VI
ZWFwOjpzaWduYWxTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjptYWxs
b2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmcmVlKToKKyAgICAgICAgKFdURjo6
VENNYWxsb2NTdGF0czo6ZmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OlRDTWFsbG9jU3RhdHM6
OnRyeUZhc3RDYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpjYWxsb2MpOgor
ICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmYXN0UmVhbGxvYyk6CisgICAgICAgIChXVEY6
OlRDTWFsbG9jU3RhdHM6OnRyeUZhc3RSZWFsbG9jKToKKyAgICAgICAgKFdURjo6VENNYWxsb2NT
dGF0czo6cmVhbGxvYyk6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKFdU
Rjo6SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKToKKyAgICAgICAgKFdURjo6
SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKToKKyAgICAgICAgKFdURjo6ZmFzdE1hbGxvY1Zh
bGlkYXRlKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wMy0zMCAgU3RldmUg
RmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBl
MjY0N2QxYTMxZWJkNzgwYTQ0YzcxYzY2ZmUwNDRkYjRiYTc5MTg0Li5iNGY3NmViMGZkYTdkN2Nl
NzI1NDE2YWM4ZjE4NDM1YzQ2ZDNhYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAKQEAgLTQ5Miw2ICs0OTIsNyBAQCBfX1pOM1dURjd4bWxBdG9tRQogX19aTjNX
VEY4Q29sbGF0b3IxOHNldE9yZGVyTG93ZXJGaXJzdEViCiBfX1pOM1dURjhDb2xsYXRvckMxRVBL
YwogX19aTjNXVEY4Q29sbGF0b3JEMUV2CitfX1pOM1dURjhJbnRlcm5hbDIxZmFzdE1hbGxvY01h
dGNoRmFpbGVkRVB2CiBfX1pOM1dURjhmYXN0RnJlZUVQdgogX19aTjNXVEY4bXNUb1llYXJFZAog
X19aTjNXVEY4bnVsbEF0b21FCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNw
cAppbmRleCAyOWU5YTFhYWQ0N2JkYzVhMTYzYTIyMjcwZThlYjRkMTFiMmM3NDhkLi40YmI5NDEx
NjA5NGNhOWQ1ZDBmN2IzODllZTY2MjIyZmM0ZTdjMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvRmFzdE1hbGxvYy5jcHAKQEAgLTE2MSwxMCArMTYxLDEzIEBAIHZvaWQgZmFzdE1hbGxv
Y0FsbG93KCkKIAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFU
Q0hfVkFMSURBVElPTikKIAogbmFtZXNwYWNlIEludGVybmFsIHsKLQorI2lmICFFTkFCTEUoV1RG
X01BTExPQ19WQUxJREFUSU9OKQordm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCopOwor
I2Vsc2UKK0NPTVBJTEVfQVNTRVJUKCgoc2l6ZW9mKFZhbGlkYXRpb25IZWFkZXIpICUgc2l6ZW9m
KEFsbG9jQWxpZ25tZW50SW50ZWdlcikpID09IDApLCBWYWxpZGF0aW9uSGVhZGVyX211c3RfcHJv
ZHVjZV9jb3JyZWN0X2FsaWdubWVudCk7CisjZW5kaWYKIHZvaWQgZmFzdE1hbGxvY01hdGNoRmFp
bGVkKHZvaWQqKQogewogICAgIENSQVNIKCk7CkBAIC0xNzIsNyArMTc1LDYgQEAgdm9pZCBmYXN0
TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCopCiAKIH0gLy8gbmFtZXNwYWNlIEludGVybmFsCiAKLSNl
bmRpZgogCiB2b2lkKiBmYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKSAKIHsKQEAgLTIyMSwxNyAr
MjIzLDIwIEBAIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pCiB7
CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigpKTsKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19N
QVRDSF9WQUxJREFUSU9OKQotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gbikgIC8vIElmIG92ZXJmbG93
IHdvdWxkIG9jY3VyLi4uCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBp
ZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIEludGVybmFsOjpWYWxpZGF0
aW9uQnVmZmVyU2l6ZSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIuLi4KICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2MobiArIHNpemVvZihBbGxv
Y0FsaWdubWVudEludGVnZXIpKTsKKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2MobiArIEludGVy
bmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiAwOwotCi0gICAgKnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3Vs
dCkgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0
PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgKyAxOwotCisgICAgSW50ZXJuYWw6OlZh
bGlkYXRpb25IZWFkZXIqIGhlYWRlciA9IHN0YXRpY19jYXN0PEludGVybmFsOjpWYWxpZGF0aW9u
SGVhZGVyKj4ocmVzdWx0KTsKKyAgICBoZWFkZXItPm1fc2l6ZSA9IG47CisgICAgaGVhZGVyLT5t
X3R5cGUgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jOworICAgIGhlYWRlci0+bV9wcmVmaXgg
PSBJbnRlcm5hbDo6VmFsaWRhdGlvblByZWZpeDsKKyAgICByZXN1bHQgPSBoZWFkZXIgKyAxOwor
ICAgICpJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25TdWZmaXgocmVzdWx0KSA9IEludGVy
bmFsOjpWYWxpZGF0aW9uU3VmZml4OworICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShyZXN1bHQpOwog
ICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIHJldHVybiBtYWxsb2Mobik7CkBAIC0yNDIs
NyArMjQ3LDcgQEAgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QgbikKIHsKICAgICBBU1NFUlQoIWlz
Rm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04p
CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKICAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSByZXR1cm5WYWx1ZSA9IHRyeUZhc3RNYWxsb2Mobik7CiAgICAgdm9pZCogcmVzdWx0Owog
ICAgIHJldHVyblZhbHVlLmdldFZhbHVlKHJlc3VsdCk7CkBAIC0yNjcsMTkgKzI3MiwxNyBAQCBU
cnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXpl
X3QgZWxlbWVudF9zaXplKQogewogICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7CiAKLSNpZiBF
TkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKKyNpZiBFTkFCTEUoV1RGX01BTExP
Q19WQUxJREFUSU9OKQogICAgIHNpemVfdCB0b3RhbEJ5dGVzID0gbl9lbGVtZW50cyAqIGVsZW1l
bnRfc2l6ZTsKLSAgICBpZiAobl9lbGVtZW50cyA+IDEgJiYgZWxlbWVudF9zaXplICYmICh0b3Rh
bEJ5dGVzIC8gZWxlbWVudF9zaXplKSAhPSBuX2VsZW1lbnRzIHx8IChzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gdG90
YWxCeXRlcykpCisgICAgaWYgKG5fZWxlbWVudHMgPiAxICYmIGVsZW1lbnRfc2l6ZSAmJiAodG90
YWxCeXRlcyAvIGVsZW1lbnRfc2l6ZSkgIT0gbl9lbGVtZW50cykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICB0b3RhbEJ5dGVzICs9IHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpOwotICAg
IHZvaWQqIHJlc3VsdCA9IG1hbGxvYyh0b3RhbEJ5dGVzKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAg
ICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSByZXR1cm5WYWx1ZSA9IHRyeUZhc3RNYWxsb2ModG90YWxC
eXRlcyk7CisgICAgdm9pZCogcmVzdWx0OworICAgIGlmICghcmV0dXJuVmFsdWUuZ2V0VmFsdWUo
cmVzdWx0KSkKICAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBtZW1zZXQocmVzdWx0LCAwLCB0b3Rh
bEJ5dGVzKTsKLSAgICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0
KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0gICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7CisgICAgZmFzdE1hbGxvY1ZhbGlk
YXRlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgcmV0dXJuIGNhbGxv
YyhuX2VsZW1lbnRzLCBlbGVtZW50X3NpemUpOwpAQCAtMjkwLDcgKzI5Myw3IEBAIHZvaWQqIGZh
c3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpCiB7CiAgICAg
QVNTRVJUKCFpc0ZvcmJpZGRlbigpKTsKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9W
QUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAgICAgVHJ5TWFs
bG9jUmV0dXJuVmFsdWUgcmV0dXJuVmFsdWUgPSB0cnlGYXN0Q2FsbG9jKG5fZWxlbWVudHMsIGVs
ZW1lbnRfc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0OwogICAgIHJldHVyblZhbHVlLmdldFZhbHVl
KHJlc3VsdCk7CkBAIC0zMTUsMTMgKzMxOCwxMyBAQCB2b2lkIGZhc3RGcmVlKHZvaWQqIHApCiB7
CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigpKTsKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19N
QVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAgICAg
aWYgKCFwKQogICAgICAgICByZXR1cm47Ci0KLSAgICBBbGxvY0FsaWdubWVudEludGVnZXIqIGhl
YWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUocCk7Ci0gICAg
aWYgKCpoZWFkZXIgIT0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYykKLSAgICAgICAgSW50ZXJu
YWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKKyAgICAKKyAgICBmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0ZUZyZWUocCwgSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYyk7CisgICAgSW50ZXJuYWw6
OlZhbGlkYXRpb25IZWFkZXIqIGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlv
bkhlYWRlcihwKTsKKyAgICBtZW1zZXQocCwgMHhDQywgaGVhZGVyLT5tX3NpemUpOwogICAgIGZy
ZWUoaGVhZGVyKTsKICNlbHNlCiAgICAgZnJlZShwKTsKQEAgLTMzMiwyMCArMzM1LDE4IEBAIFRy
eU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKQogewog
ICAgIEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFU
Q0hfVkFMSURBVElPTikKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQogICAgIGlm
IChwKSB7Ci0gICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0g
c2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gbikgIC8vIElmIG92ZXJmbG93IHdvdWxk
IG9jY3VyLi4uCisgICAgICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
IC0gSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplIDw9IG4pICAvLyBJZiBvdmVyZmxvdyB3
b3VsZCBvY2N1ci4uLgogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIEFsbG9jQWxpZ25t
ZW50SW50ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25W
YWx1ZShwKTsKLSAgICAgICAgaWYgKCpoZWFkZXIgIT0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxv
YykKLSAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7Ci0gICAg
ICAgIHZvaWQqIHJlc3VsdCA9IHJlYWxsb2MoaGVhZGVyLCBuICsgc2l6ZW9mKEFsbG9jQWxpZ25t
ZW50SW50ZWdlcikpOworICAgICAgICBmYXN0TWFsbG9jVmFsaWRhdGUocCk7CisgICAgICAgIElu
dGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxJbnRlcm5hbDo6
VmFsaWRhdGlvbkhlYWRlcio+KHJlYWxsb2MoSW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9u
SGVhZGVyKHApLCBuICsgSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplKSk7CiAgICAgICAg
IGlmICghcmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgLy8gVGhpcyBz
aG91bGQgbm90IGJlIG5lZWRlZCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHRoZXJlOgot
ICAgICAgICAvLyAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9
IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0gICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0
PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgKyAxOworICAgICAgICByZXN1bHQtPm1f
c2l6ZSA9IG47CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIDE7CisgICAgICAgICpmYXN0TWFs
bG9jVmFsaWRhdGlvblN1ZmZpeChyZXN1bHQpID0gSW50ZXJuYWw6OlZhbGlkYXRpb25TdWZmaXg7
CisgICAgICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShyZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBmYXN0TWFsbG9jKG4pOwpAQCAtMzU5
LDcgKzM2MCw3IEBAIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKQogewogICAg
IEFTU0VSVCghaXNGb3JiaWRkZW4oKSk7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hf
VkFMSURBVElPTikKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQogICAgIFRyeU1h
bGxvY1JldHVyblZhbHVlIHJldHVyblZhbHVlID0gdHJ5RmFzdFJlYWxsb2MocCwgbik7CiAgICAg
dm9pZCogcmVzdWx0OwogICAgIHJldHVyblZhbHVlLmdldFZhbHVlKHJlc3VsdCk7CkBAIC0xMzAw
LDYgKzEzMDEsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNaW5pbXVtRnJlZUNvbW1pdHRlZFBh
Z2VDb3VudCA9IGtNaW5TcGFuTGlzdHNXaXRoU3BhbnMgKiAoKAogCiAjZW5kaWYKIAorc3RhdGlj
IFNwaW5Mb2NrIHBhZ2VoZWFwX2xvY2sgPSBTUElOTE9DS19JTklUSUFMSVpFUjsKKwogY2xhc3Mg
VENNYWxsb2NfUGFnZUhlYXAgewogIHB1YmxpYzoKICAgdm9pZCBpbml0KCk7CkBAIC0xNTI2LDEz
ICsxNTI5LDEzIEBAIHZvaWQgVENNYWxsb2NfUGFnZUhlYXA6OmluaXRpYWxpemVTY2F2ZW5nZXIo
KQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgVENNYWxsb2NfUGFnZUhlYXA6OmlzU2NhdmVuZ2VyU3Vz
cGVuZGVkKCkKIHsKLSAgICBBU1NFUlQoSXNIZWxkKHBhZ2VoZWFwX2xvY2spKTsKKyAgICBBU1NF
UlQocGFnZWhlYXBfbG9jay5Jc0hlbGQoKSk7CiAgICAgcmV0dXJuIG1fc2NhdmVuZ2luZ1N1c3Bl
bmRlZDsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIFRDTWFsbG9jX1BhZ2VIZWFwOjpzY2hlZHVs
ZVNjYXZlbmdlcigpCiB7Ci0gICAgQVNTRVJUKElzSGVsZChwYWdlaGVhcF9sb2NrKSk7CisgICAg
QVNTRVJUKHBhZ2VoZWFwX2xvY2suSXNIZWxkKCkpOwogICAgIG1fc2NhdmVuZ2luZ1N1c3BlbmRl
ZCA9IGZhbHNlOwogICAgIGRpc3BhdGNoX3Jlc3VtZShtX3NjYXZlbmdlVGltZXIpOwogfQpAQCAt
MTU0NCw3ICsxNTQ3LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFRDTWFsbG9jX1BhZ2VIZWFwOjpy
ZXNjaGVkdWxlU2NhdmVuZ2VyKCkKIAogQUxXQVlTX0lOTElORSB2b2lkIFRDTWFsbG9jX1BhZ2VI
ZWFwOjpzdXNwZW5kU2NhdmVuZ2VyKCkKIHsKLSAgICBBU1NFUlQoSXNIZWxkKHBhZ2VoZWFwX2xv
Y2spKTsKKyAgICBBU1NFUlQocGFnZWhlYXBfbG9jay5Jc0hlbGQoKSk7CiAgICAgbV9zY2F2ZW5n
aW5nU3VzcGVuZGVkID0gdHJ1ZTsKICAgICBkaXNwYXRjaF9zdXNwZW5kKG1fc2NhdmVuZ2VUaW1l
cik7CiB9CkBAIC0yNDM3LDcgKzI0NDAsNiBAQCBjbGFzcyBUQ01hbGxvY19DZW50cmFsX0ZyZWVM
aXN0UGFkZGVkIDogcHVibGljIFRDTWFsbG9jX0NlbnRyYWxfRnJlZUxpc3Qgewogc3RhdGljIFRD
TWFsbG9jX0NlbnRyYWxfRnJlZUxpc3RQYWRkZWQgY2VudHJhbF9jYWNoZVtrTnVtQ2xhc3Nlc107
CiAKIC8vIFBhZ2UtbGV2ZWwgYWxsb2NhdG9yCi1zdGF0aWMgU3BpbkxvY2sgcGFnZWhlYXBfbG9j
ayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwogc3RhdGljIEFsbG9jQWxpZ25tZW50SW50ZWdlciBw
YWdlaGVhcF9tZW1vcnlbKHNpemVvZihUQ01hbGxvY19QYWdlSGVhcCkgKyBzaXplb2YoQWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKSAtIDEpIC8gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcildOwog
c3RhdGljIGJvb2wgcGhpbml0ZWQgPSBmYWxzZTsKIApAQCAtMjQ3NSw3ICsyNDc3LDcgQEAgdm9p
ZCBUQ01hbGxvY19QYWdlSGVhcDo6cGVyaW9kaWNTY2F2ZW5nZSgpCiAKIEFMV0FZU19JTkxJTkUg
dm9pZCBUQ01hbGxvY19QYWdlSGVhcDo6c2lnbmFsU2NhdmVuZ2VyKCkKIHsKLSAgICBBU1NFUlQo
SXNIZWxkKHBhZ2VoZWFwX2xvY2spKTsKKyAgICAvL0FTU0VSVChJc0hlbGQocGFnZWhlYXBfbG9j
aykpOwogICAgIGlmIChpc1NjYXZlbmdlclN1c3BlbmRlZCgpICYmIHNob3VsZFNjYXZlbmdlKCkp
CiAgICAgICAgIHNjaGVkdWxlU2NhdmVuZ2VyKCk7CiB9CkBAIC0zODIxLDE2ICszODIzLDIwIEBA
IHRlbXBsYXRlIDxib29sIGNyYXNoT25GYWlsdXJlPgogQUxXQVlTX0lOTElORQogI2VuZGlmCiB2
b2lkKiBtYWxsb2Moc2l6ZV90IHNpemUpIHsKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hf
VkFMSURBVElPTikKLSAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAt
IHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IHNpemUpICAvLyBJZiBvdmVyZmxvdyB3
b3VsZCBvY2N1ci4uLgorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgaWYg
KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBJbnRlcm5hbDo6VmFsaWRhdGlv
bkJ1ZmZlclNpemUgPD0gc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCiAgICAg
ICAgIHJldHVybiAwOwotICAgIHNpemUgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7
Ci0gICAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHNpemUpOworICAgIHZvaWQqIHJlc3VsdCA9
IGRvX21hbGxvYyhzaXplICsgSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplKTsKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqc3RhdGljX2Nhc3Q8QWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0g
ICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSAr
IDE7CisgICAgSW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqIGhlYWRlciA9IHN0YXRpY19jYXN0
PEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKj4ocmVzdWx0KTsKKyAgICBoZWFkZXItPm1fc2l6
ZSA9IHNpemU7CisgICAgaGVhZGVyLT5tX3R5cGUgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9j
OworICAgIGhlYWRlci0+bV9wcmVmaXggPSBJbnRlcm5hbDo6VmFsaWRhdGlvblByZWZpeDsKKyAg
ICByZXN1bHQgPSBoZWFkZXIgKyAxOworICAgICpJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRp
b25TdWZmaXgocmVzdWx0KSA9IEludGVybmFsOjpWYWxpZGF0aW9uU3VmZml4OworICAgIGZhc3RN
YWxsb2NWYWxpZGF0ZShyZXN1bHQpOwogI2Vsc2UKICAgICB2b2lkKiByZXN1bHQgPSBkb19tYWxs
b2Moc2l6ZSk7CiAjZW5kaWYKQEAgLTM4NDksMTMgKzM4NTUsMTMgQEAgdm9pZCBmcmVlKHZvaWQq
IHB0cikgewogICBNYWxsb2NIb29rOjpJbnZva2VEZWxldGVIb29rKHB0cik7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZf
TUFMTE9DX1ZBTElEQVRJT04pCiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFsbG9jQWxpZ25tZW50SW50ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRpb25WYWx1ZShwdHIpOwotICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxv
Y1R5cGVNYWxsb2MpCi0gICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocHRy
KTsKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocHRyKTsKKyAgICBJbnRlcm5hbDo6VmFsaWRhdGlv
bkhlYWRlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKHB0
cik7CisgICAgbWVtc2V0KHB0ciwgMHhDQywgaGVhZGVyLT5tX3NpemUpOwogICAgIGRvX2ZyZWUo
aGVhZGVyKTsKICNlbHNlCiAgICAgZG9fZnJlZShwdHIpOwpAQCAtMzg3MCwxMiArMzg3NiwyMCBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQqIGNhbGxvYyhzaXplX3QsIHNpemVfdCk7CiAKIHZvaWQqIGZh
c3RDYWxsb2Moc2l6ZV90IG4sIHNpemVfdCBlbGVtX3NpemUpCiB7Ci0gICAgcmV0dXJuIGNhbGxv
Yzx0cnVlPihuLCBlbGVtX3NpemUpOworICAgIHZvaWQqIHJlc3VsdCA9IGNhbGxvYzx0cnVlPihu
LCBlbGVtX3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFz
dE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
CiBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuLCBzaXplX3QgZWxl
bV9zaXplKQogewotICAgIHJldHVybiBjYWxsb2M8ZmFsc2U+KG4sIGVsZW1fc2l6ZSk7CisgICAg
dm9pZCogcmVzdWx0ID0gY2FsbG9jPGZhbHNlPihuLCBlbGVtX3NpemUpOworI2lmIEVOQUJMRShX
VEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBjcmFzaE9uRmFp
bHVyZT4KQEAgLTM4ODgsMTggKzM5MDIsMTMgQEAgdm9pZCogY2FsbG9jKHNpemVfdCBuLCBzaXpl
X3QgZWxlbV9zaXplKSB7CiAgIGlmIChuID4gMSAmJiBlbGVtX3NpemUgJiYgKHRvdGFsQnl0ZXMg
LyBlbGVtX3NpemUpICE9IG4pCiAgICAgcmV0dXJuIDA7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxM
T0NfTUFUQ0hfVkFMSURBVElPTikKLSAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IHRvdGFsQnl0ZXMpICAv
LyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4uLgotICAgICAgICByZXR1cm4gMDsKLQotICAgIHRv
dGFsQnl0ZXMgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7Ci0gICAgdm9pZCogcmVz
dWx0ID0gZG9fbWFsbG9jKHRvdGFsQnl0ZXMpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElE
QVRJT04pCisgICAgdm9pZCogcmVzdWx0ID0gbWFsbG9jPGNyYXNoT25GYWlsdXJlPih0b3RhbEJ5
dGVzKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtZW1zZXQo
cmVzdWx0LCAwLCB0b3RhbEJ5dGVzKTsKLSAgICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0gICAgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7CisgICAg
ZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7CiAjZWxzZQogICAgIHZvaWQqIHJlc3VsdCA9IGRv
X21hbGxvYyh0b3RhbEJ5dGVzKTsKICAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKQEAgLTM5MzQs
MTIgKzM5NDMsMjYgQEAgQUxXQVlTX0lOTElORSB2b2lkKiByZWFsbG9jKHZvaWQqLCBzaXplX3Qp
OwogCiB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7
Ci0gICAgcmV0dXJuIHJlYWxsb2M8dHJ1ZT4ob2xkX3B0ciwgbmV3X3NpemUpOworI2lmIEVOQUJM
RShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKG9sZF9wdHIp
OworI2VuZGlmCisgICAgdm9pZCogcmVzdWx0ID0gcmVhbGxvYzx0cnVlPihvbGRfcHRyLCBuZXdf
c2l6ZSk7CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBmYXN0TWFsbG9j
VmFsaWRhdGUocmVzdWx0KTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFRyeU1h
bGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdf
c2l6ZSkKIHsKLSAgICByZXR1cm4gcmVhbGxvYzxmYWxzZT4ob2xkX3B0ciwgbmV3X3NpemUpOwor
I2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRl
KG9sZF9wdHIpOworI2VuZGlmCisgICAgdm9pZCogcmVzdWx0ID0gcmVhbGxvYzxmYWxzZT4ob2xk
X3B0ciwgbmV3X3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAg
ZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB0ZW1wbGF0ZSA8Ym9vbCBjcmFzaE9uRmFpbHVyZT4KQEAgLTM5NDcsOCArMzk3MCw4IEBA
IEFMV0FZU19JTkxJTkUKICNlbmRpZgogdm9pZCogcmVhbGxvYyh2b2lkKiBvbGRfcHRyLCBzaXpl
X3QgbmV3X3NpemUpIHsKICAgaWYgKG9sZF9wdHIgPT0gTlVMTCkgewotI2lmIEVOQUJMRShGQVNU
X01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQotICAgIHZvaWQqIHJlc3VsdCA9IG1hbGxvYyhuZXdf
c2l6ZSk7CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICB2b2lkKiByZXN1
bHQgPSBtYWxsb2M8Y3Jhc2hPbkZhaWx1cmU+KG5ld19zaXplKTsKICNlbHNlCiAgICAgdm9pZCog
cmVzdWx0ID0gZG9fbWFsbG9jKG5ld19zaXplKTsKICNpZm5kZWYgV1RGX0NIQU5HRVMKQEAgLTM5
NjUsMTQgKzM5ODgsMTQgQEAgdm9pZCogcmVhbGxvYyh2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3
X3NpemUpIHsKICAgICByZXR1cm4gTlVMTDsKICAgfQogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9D
X01BVENIX1ZBTElEQVRJT04pCi0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBuZXdfc2l6ZSkgIC8vIElm
IG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElP
TikKKyAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIEludGVybmFs
OjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSA8PSBuZXdfc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxk
IG9jY3VyLi4uCiAgICAgICAgIHJldHVybiAwOwotICAgIG5ld19zaXplICs9IHNpemVvZihBbGxv
Y0FsaWdubWVudEludGVnZXIpOwotICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciogaGVhZGVyID0g
SW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZShvbGRfcHRyKTsKLSAgICBp
ZiAoKmhlYWRlciAhPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKQotICAgICAgICBJbnRlcm5h
bDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKG9sZF9wdHIpOworICAgIEludGVybmFsOjpWYWxpZGF0
aW9uSGVhZGVyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIo
b2xkX3B0cik7CisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKG9sZF9wdHIpOwogICAgIG9sZF9wdHIg
PSBoZWFkZXI7CisgICAgaGVhZGVyLT5tX3NpemUgPSBuZXdfc2l6ZTsKKyAgICBuZXdfc2l6ZSAr
PSBJbnRlcm5hbDo6VmFsaWRhdGlvbkJ1ZmZlclNpemU7CiAjZW5kaWYKIAogICAvLyBHZXQgdGhl
IHNpemUgb2YgdGhlIG9sZCBlbnRyeQpAQCAtNDAxMSwxMyArNDAzNCwxNSBAQCB2b2lkKiByZWFs
bG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdfc2l6ZSkgewogICAgIC8vIHRoYXQgd2UgYWxy
ZWFkeSBrbm93IHRoZSBzaXplY2xhc3Mgb2Ygb2xkX3B0ci4gIFRoZSBiZW5lZml0CiAgICAgLy8g
d291bGQgYmUgc21hbGwsIHNvIGRvbid0IGJvdGhlci4KICAgICBkb19mcmVlKG9sZF9wdHIpOwot
I2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQotICAgIG5ld19wdHIgPSBz
dGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihuZXdfcHRyKSArIDE7CisjaWYgRU5B
QkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBuZXdfcHRyID0gc3RhdGljX2Nhc3Q8SW50
ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqPihuZXdfcHRyKSArIDE7CisgICAgKkludGVybmFsOjpm
YXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeChuZXdfcHRyKSA9IEludGVybmFsOjpWYWxpZGF0aW9u
U3VmZml4OwogI2VuZGlmCiAgICAgcmV0dXJuIG5ld19wdHI7CiAgIH0gZWxzZSB7Ci0jaWYgRU5B
QkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAgb2xkX3B0ciA9IHN0YXRpY19j
YXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KG9sZF9wdHIpICsgMTsgLy8gU2V0IG9sZF9wdHIg
YmFjayB0byB0aGUgdXNlciBwb2ludGVyLgorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJ
T04pCisgICAgb2xkX3B0ciA9IHN0YXRpY19jYXN0PEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVy
Kj4ob2xkX3B0cikgKyAxOyAvLyBTZXQgb2xkX3B0ciBiYWNrIHRvIHRoZSB1c2VyIHBvaW50ZXIu
CisgICAgKkludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeChvbGRfcHRyKSA9IElu
dGVybmFsOjpWYWxpZGF0aW9uU3VmZml4OwogI2VuZGlmCiAgICAgcmV0dXJuIG9sZF9wdHI7CiAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggOTcyOWJjMzZlNGVk
NjRkNjgwZGZkNGIxZGU3ZWJiNGU0MmM2OTg0NS4uYWNkMTQ4ZDQ0Zjg2YzhhOWY1YzMxNDRjZjc1
YjZiM2E5NmI3M2EwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0
TWFsbG9jLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKQEAg
LTEwMyw5ICsxMDMsMjUgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICBBbGxvY1R5cGVO
ZXcsICAgICAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGdsb2JhbCBvcGVyYXRvciBuZXcu
CiAgICAgICAgICAgICBBbGxvY1R5cGVOZXdBcnJheSAgICAgICAgICAgICAgIC8vIEVuY29tcGFz
c2VzIGdsb2JhbCBvcGVyYXRvciBuZXdbXS4KICAgICAgICAgfTsKKworICAgICAgICBlbnVtIHsK
KyAgICAgICAgICAgIFZhbGlkYXRpb25QcmVmaXggPSAweGYwMGRmMDBkLAorICAgICAgICAgICAg
VmFsaWRhdGlvblN1ZmZpeCA9IDB4MGJhZGYwMGQKKyAgICAgICAgfTsKKworICAgICAgICB0eXBl
ZGVmIHVuc2lnbmVkIFZhbGlkYXRpb25UYWc7CisKKyAgICAgICAgc3RydWN0IFZhbGlkYXRpb25I
ZWFkZXIgeworICAgICAgICAgICAgQWxsb2NUeXBlIG1fdHlwZTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIG1fc2l6ZTsKKyAgICAgICAgICAgIFZhbGlkYXRpb25UYWcgbV9wcmVmaXg7CisgICAgICAg
ICAgICB1bnNpZ25lZCBtX2FsaWdubWVudDsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IFZhbGlkYXRpb25CdWZmZXJTaXplID0gc2l6ZW9mKFZhbGlkYXRpb25IZWFkZXIp
ICsgc2l6ZW9mKFZhbGlkYXRpb25UYWcpOwogICAgIH0KIAotI2lmIEVOQUJMRShGQVNUX01BTExP
Q19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAK
ICAgICAvLyBNYWxsb2MgdmFsaWRhdGlvbiBpcyBhIHNjaGVtZSB3aGVyZWJ5IGEgdGFnIGlzIGF0
dGFjaGVkIHRvIGFuCiAgICAgLy8gYWxsb2NhdGlvbiB3aGljaCBpZGVudGlmaWVzIGhvdyBpdCB3
YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQuCkBAIC0xMjAsMzAgKzEzNiwzNiBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAvLyBpcyBpbXBsZW1lbnRlZC4KIAogICAgIG5hbWVzcGFjZSBJbnRlcm5hbCB7
CisgICAgCisgICAgICAgIC8vIEhhbmRsZSBhIGRldGVjdGVkIGFsbG9jL2ZyZWUgbWlzbWF0Y2gu
IEJ5IGRlZmF1bHQgdGhpcyBjYWxscyBDUkFTSCgpLgorICAgICAgICB2b2lkIGZhc3RNYWxsb2NN
YXRjaEZhaWxlZCh2b2lkKiBwKTsKIAotICAgICAgICAvLyBSZXR1cm4gdGhlIEFsbG9jVHlwZSB0
YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5l
IEFsbG9jVHlwZSBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZShjb25zdCB2b2lkKiBwKQor
ICAgICAgICBpbmxpbmUgVmFsaWRhdGlvbkhlYWRlciogZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFk
ZXIodm9pZCogcCkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4o
cCkgLSAxOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5cGUp
OworICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmFsaWRhdGlvbkhlYWRlcio+
KHN0YXRpY19jYXN0PGNoYXIqPihwKSAtIHNpemVvZihWYWxpZGF0aW9uSGVhZGVyKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIEFsbG9jVHlwZSB0
YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5l
IEFsbG9jQWxpZ25tZW50SW50ZWdlciogZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHZv
aWQqIHApCisgICAgICAgIGlubGluZSBWYWxpZGF0aW9uVGFnKiBmYXN0TWFsbG9jVmFsaWRhdGlv
blN1ZmZpeCh2b2lkKiBwKQorICAgICAgICB7CisgICAgICAgICAgICBWYWxpZGF0aW9uSGVhZGVy
KiBoZWFkZXIgPSBmYXN0TWFsbG9jVmFsaWRhdGlvbkhlYWRlcihwKTsKKyAgICAgICAgICAgIGlm
IChoZWFkZXItPm1fcHJlZml4ICE9IFZhbGlkYXRpb25QcmVmaXgpCisgICAgICAgICAgICAgICAg
ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxWYWxpZGF0aW9uVGFnKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KHAp
ICsgaGVhZGVyLT5tX3NpemUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJuIHRoZSBB
bGxvY1R5cGUgdGFnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCisgICAg
ICAgIGlubGluZSBBbGxvY1R5cGUgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUodm9pZCog
cCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KHApIC0gc2l6ZW9mKEFsbG9jQWxp
Z25tZW50SW50ZWdlcikpOworICAgICAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2NWYWxpZGF0aW9u
SGVhZGVyKHApLT5tX3R5cGU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTZXQgdGhlIEFsbG9j
VHlwZSB0YWcgdG8gYmUgYXNzb2NpYWdlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KICAg
ICAgICAgaW5saW5lIHZvaWQgc2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUodm9pZCog
cCwgQWxsb2NUeXBlIGFsbG9jVHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgQWxsb2NBbGln
bm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4o
cCkgLSAxOwotICAgICAgICAgICAgKnR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudElu
dGVnZXI+KGFsbG9jVHlwZSk7CisgICAgICAgICAgICBmYXN0TWFsbG9jVmFsaWRhdGlvbkhlYWRl
cihwKS0+bV90eXBlID0gYWxsb2NUeXBlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gSGFuZGxl
IGEgZGV0ZWN0ZWQgYWxsb2MvZnJlZSBtaXNtYXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENS
QVNIKCkuCi0gICAgICAgIHZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqIHApOwotCiAg
ICAgfSAvLyBuYW1lc3BhY2UgSW50ZXJuYWwKIAogICAgIC8vIFRoaXMgaXMgYSBoaWdoZXIgbGV2
ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNvZGUuCkBAIC0x
NTYsMTYgKzE3OCwzNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICAvLyBUaGlzIGlz
IGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2lu
ZyBjb2RlLgotICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lk
KiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBlIGFsbG9jVHlwZSkKKyAgICBpbmxpbmUgdm9pZCBmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlwZSkKICAg
ICB7CiAgICAgICAgIGlmICghcCkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAgICAg
SW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqIGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9j
VmFsaWRhdGlvbkhlYWRlcihwKTsKKyAgICAgICAgaWYgKGhlYWRlci0+bV9wcmVmaXggIT0gSW50
ZXJuYWw6OlZhbGlkYXRpb25QcmVmaXgpCisgICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxv
Y01hdGNoRmFpbGVkKHApOwogCi0gICAgICAgIGlmIChJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGlvblR5cGUocCkgIT0gYWxsb2NUeXBlKQorICAgICAgICBpZiAoKkludGVybmFsOjpm
YXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeChwKSAhPSBJbnRlcm5hbDo6VmFsaWRhdGlvblN1ZmZp
eCkKICAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7CisKKyAg
ICAgICAgLy9pZiAoSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9
IGFsbG9jVHlwZSkKKyAgICAgICAgLy8gICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxl
ZChwKTsKKwogICAgICAgICBJbnRlcm5hbDo6c2V0RmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5
cGUocCwgSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYyk7ICAvLyBTZXQgaXQgdG8gdGhpcyBzbyB0
aGF0IGZhc3RGcmVlIHRoaW5rcyBpdCdzIE9LLgogICAgIH0KIAorICAgIGlubGluZSB2b2lkIGZh
c3RNYWxsb2NWYWxpZGF0ZSh2b2lkKiBwKQorICAgIHsKKyAgICAgICAgaWYgKCFwKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgSW50ZXJuYWw6OlZhbGlkYXRpb25IZWFk
ZXIqIGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvbkhlYWRlcihwKTsKKyAg
ICAgICAgaWYgKGhlYWRlci0+bV9wcmVmaXggIT0gSW50ZXJuYWw6OlZhbGlkYXRpb25QcmVmaXgp
CisgICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgICAg
ICAKKyAgICAgICAgaWYgKCpJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25TdWZmaXgocCkg
IT0gSW50ZXJuYWw6OlZhbGlkYXRpb25TdWZmaXgpCisgICAgICAgICAgICBJbnRlcm5hbDo6ZmFz
dE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgIH0KKwogI2Vsc2UKIAogICAgIGlubGluZSB2b2lk
IGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGYwM2EzZDQyYWJiOWM2NDVk
ZTZkNTczZTM1OTcwMjMwZDVmOTRlMWEuLjg3NjlkMWJmNzgxMGQ2NWUwYjQyZDdhMWQ3YmE2YWYx
ZDI1YWI2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTg3NCw4ICs4
NzQsMTIgQEAKIAogLyogZmFzdE1hbGxvYyBtYXRjaCB2YWxpZGF0aW9uIGFsbG93cyBmb3IgcnVu
dGltZSB2ZXJpZmljYXRpb24gdGhhdAogICAgbmV3IGlzIG1hdGNoZWQgYnkgZGVsZXRlLCBmYXN0
TWFsbG9jIGlzIG1hdGNoZWQgYnkgZmFzdEZyZWUsIGV0Yy4gKi8KLSNpZiAhZGVmaW5lZChFTkFC
TEVfRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKLSNkZWZpbmUgRU5BQkxFX0ZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04gMAorI2lmICFkZWZpbmVkKEVOQUJMRV9XVEZfTUFMTE9DX1ZB
TElEQVRJT04pCisjaWZuZGVmIE5ERUJVRworI2RlZmluZSBFTkFCTEVfV1RGX01BTExPQ19WQUxJ
REFUSU9OIDEKKyNlbHNlCisjZGVmaW5lIEVOQUJMRV9XVEZfTUFMTE9DX1ZBTElEQVRJT04gMAor
I2VuZGlmCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9JQ09OREFUQUJBU0UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87622</attachid>
            <date>2011-03-30 14:53:20 -0700</date>
            <delta_ts>2011-04-04 11:57:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57502-20110330145319.patch</filename>
            <type>text/plain</type>
            <size>22256</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI1MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdj
YzFkMTVlODBmNzBhMDljYWJkYWFlN2E5YWNiZmQ3NmIxMTI5YzIuLjZlMTgyYzUzYTI1Zjc0YzM3
NzU5ZDVlZDdjOTllNjc3N2FjZjY4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDUwIEBACiAyMDExLTAzLTMwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBtYWxs
b2MgdmFsaWRhdGlvbiB1c2VmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3NTAyCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04gd2l0aCBhIGdlbmVyYWwKKyAgICAgICAgY29ycnVwdGlvbiBj
aGVjayB0aGF0IHRhZ3MgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGFsbCBhbGxvY2F0aW9ucwor
ICAgICAgICB0byBjaGVjayBmb3Igd3JpdGUgb3ZlcmZsb3dzIGFuZCBvdmVyd3JpdGVzIHRoZSBj
b250ZW50cyBvZgorICAgICAgICBtZW1vcnkgb24gZnJlZSBpbiBvcmRlciB0byAoaG9wZWZ1bGx5
KSBzaG93IHVwIHVzZS1hZnRlci1mcmVlIGlzc3VlcworICAgICAgICBzb29uZXIuCisKKyAgICAg
ICAgV2UgYWxzbyB0dXJuIGl0IG9uIGJ5IGRlZmF1bHQgZm9yIGRlYnVnIGJ1aWxkcy4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5jcHA6
CisgICAgICAgIChXVEY6OnRyeUZhc3RNYWxsb2MpOgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9j
KToKKyAgICAgICAgKFdURjo6dHJ5RmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OmZhc3RDYWxs
b2MpOgorICAgICAgICAoV1RGOjpmYXN0RnJlZSk6CisgICAgICAgIChXVEY6OnRyeUZhc3RSZWFs
bG9jKToKKyAgICAgICAgKFdURjo6ZmFzdFJlYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6aXNTY2F2ZW5nZXJTdXNwZW5kZWQpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6c2NoZWR1bGVTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY19Q
YWdlSGVhcDo6c3VzcGVuZFNjYXZlbmdlcik6CisgICAgICAgIChXVEY6OlRDTWFsbG9jX1BhZ2VI
ZWFwOjpzaWduYWxTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjptYWxs
b2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmcmVlKToKKyAgICAgICAgKFdURjo6
VENNYWxsb2NTdGF0czo6ZmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OlRDTWFsbG9jU3RhdHM6
OnRyeUZhc3RDYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpjYWxsb2MpOgor
ICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmYXN0UmVhbGxvYyk6CisgICAgICAgIChXVEY6
OlRDTWFsbG9jU3RhdHM6OnRyeUZhc3RSZWFsbG9jKToKKyAgICAgICAgKFdURjo6VENNYWxsb2NT
dGF0czo6cmVhbGxvYyk6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKFdU
Rjo6SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKToKKyAgICAgICAgKFdURjo6
SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKToKKyAgICAgICAgKFdURjo6ZmFzdE1hbGxvY1Zh
bGlkYXRlKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKworMjAxMS0wMy0zMCAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgogCiAgICAgICAgIE1ha2UgU3RydWN0dXJlQ2hhaW4gR0MgYWxsb2NhdGVkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBlMjY0N2QxYTMxZWJkNzgw
YTQ0YzcxYzY2ZmUwNDRkYjRiYTc5MTg0Li5iNGY3NmViMGZkYTdkN2NlNzI1NDE2YWM4ZjE4NDM1
YzQ2ZDNhYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAg
LTQ5Miw2ICs0OTIsNyBAQCBfX1pOM1dURjd4bWxBdG9tRQogX19aTjNXVEY4Q29sbGF0b3IxOHNl
dE9yZGVyTG93ZXJGaXJzdEViCiBfX1pOM1dURjhDb2xsYXRvckMxRVBLYwogX19aTjNXVEY4Q29s
bGF0b3JEMUV2CitfX1pOM1dURjhJbnRlcm5hbDIxZmFzdE1hbGxvY01hdGNoRmFpbGVkRVB2CiBf
X1pOM1dURjhmYXN0RnJlZUVQdgogX19aTjNXVEY4bXNUb1llYXJFZAogX19aTjNXVEY4bnVsbEF0
b21FCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcAppbmRleCAyOWU5YTFh
YWQ0N2JkYzVhMTYzYTIyMjcwZThlYjRkMTFiMmM3NDhkLi5mZWZkMDliMWQ0NThlNjIzNzM1Y2Vk
MWU3NTBmODQ3NjJiN2MwYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxv
Yy5jcHAKQEAgLTE2MSwxMCArMTYxLDEzIEBAIHZvaWQgZmFzdE1hbGxvY0FsbG93KCkKIAogbmFt
ZXNwYWNlIFdURiB7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikK
IAogbmFtZXNwYWNlIEludGVybmFsIHsKLQorI2lmICFFTkFCTEUoV1RGX01BTExPQ19WQUxJREFU
SU9OKQordm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCopOworI2Vsc2UKK0NPTVBJTEVf
QVNTRVJUKCgoc2l6ZW9mKFZhbGlkYXRpb25IZWFkZXIpICUgc2l6ZW9mKEFsbG9jQWxpZ25tZW50
SW50ZWdlcikpID09IDApLCBWYWxpZGF0aW9uSGVhZGVyX211c3RfcHJvZHVjZV9jb3JyZWN0X2Fs
aWdubWVudCk7CisjZW5kaWYKIHZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqKQogewog
ICAgIENSQVNIKCk7CkBAIC0xNzIsNyArMTc1LDYgQEAgdm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWls
ZWQodm9pZCopCiAKIH0gLy8gbmFtZXNwYWNlIEludGVybmFsCiAKLSNlbmRpZgogCiB2b2lkKiBm
YXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKSAKIHsKQEAgLTIyMSwxNyArMjIzLDIwIEBAIFRyeU1h
bGxvY1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pCiB7CiAgICAgQVNTRVJUKCFp
c0ZvcmJpZGRlbigpKTsKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9O
KQotICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gc2l6ZW9mKEFs
bG9jQWxpZ25tZW50SW50ZWdlcikgPD0gbikgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4u
CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBpZiAoc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSA8
PSBuKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIuLi4KICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2MobiArIHNpemVvZihBbGxvY0FsaWdubWVudEludGVn
ZXIpKTsKKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2MobiArIEludGVybmFsOjpWYWxpZGF0aW9u
QnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAg
KnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6
QWxsb2NUeXBlTWFsbG9jOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50
SW50ZWdlcio+KHJlc3VsdCkgKyAxOwotCisgICAgSW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIq
IGhlYWRlciA9IHN0YXRpY19jYXN0PEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKj4ocmVzdWx0
KTsKKyAgICBoZWFkZXItPm1fc2l6ZSA9IG47CisgICAgaGVhZGVyLT5tX3R5cGUgPSBJbnRlcm5h
bDo6QWxsb2NUeXBlTWFsbG9jOworICAgIGhlYWRlci0+bV9wcmVmaXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSW50ZXJuYWw6OlZhbGlkYXRpb25QcmVmaXgpOworICAgIHJlc3VsdCA9IGhlYWRl
ciArIDE7CisgICAgKkludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeChyZXN1bHQp
ID0gSW50ZXJuYWw6OlZhbGlkYXRpb25TdWZmaXg7CisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgcmV0dXJuIG1hbGxvYyhuKTsK
QEAgLTI0Miw3ICsyNDcsNyBAQCB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCBuKQogewogICAgIEFT
U0VSVCghaXNGb3JiaWRkZW4oKSk7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFM
SURBVElPTikKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQogICAgIFRyeU1hbGxv
Y1JldHVyblZhbHVlIHJldHVyblZhbHVlID0gdHJ5RmFzdE1hbGxvYyhuKTsKICAgICB2b2lkKiBy
ZXN1bHQ7CiAgICAgcmV0dXJuVmFsdWUuZ2V0VmFsdWUocmVzdWx0KTsKQEAgLTI2NywxOSArMjcy
LDE3IEBAIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVu
dHMsIHNpemVfdCBlbGVtZW50X3NpemUpCiB7CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigpKTsK
IAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShX
VEZfTUFMTE9DX1ZBTElEQVRJT04pCiAgICAgc2l6ZV90IHRvdGFsQnl0ZXMgPSBuX2VsZW1lbnRz
ICogZWxlbWVudF9zaXplOwotICAgIGlmIChuX2VsZW1lbnRzID4gMSAmJiBlbGVtZW50X3NpemUg
JiYgKHRvdGFsQnl0ZXMgLyBlbGVtZW50X3NpemUpICE9IG5fZWxlbWVudHMgfHwgKHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
KSA8PSB0b3RhbEJ5dGVzKSkKKyAgICBpZiAobl9lbGVtZW50cyA+IDEgJiYgZWxlbWVudF9zaXpl
ICYmICh0b3RhbEJ5dGVzIC8gZWxlbWVudF9zaXplKSAhPSBuX2VsZW1lbnRzKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHRvdGFsQnl0ZXMgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdl
cik7Ci0gICAgdm9pZCogcmVzdWx0ID0gbWFsbG9jKHRvdGFsQnl0ZXMpOwotICAgIGlmICghcmVz
dWx0KQorICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHJldHVyblZhbHVlID0gdHJ5RmFzdE1hbGxv
Yyh0b3RhbEJ5dGVzKTsKKyAgICB2b2lkKiByZXN1bHQ7CisgICAgaWYgKCFyZXR1cm5WYWx1ZS5n
ZXRWYWx1ZShyZXN1bHQpKQogICAgICAgICByZXR1cm4gMDsKLQogICAgIG1lbXNldChyZXN1bHQs
IDAsIHRvdGFsQnl0ZXMpOwotICAgICpzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIq
PihyZXN1bHQpID0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYzsKLSAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihyZXN1bHQpICsgMTsKKyAgICBmYXN0TWFs
bG9jVmFsaWRhdGUocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICByZXR1
cm4gY2FsbG9jKG5fZWxlbWVudHMsIGVsZW1lbnRfc2l6ZSk7CkBAIC0yOTAsNyArMjkzLDcgQEAg
dm9pZCogZmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSkK
IHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9D
X01BVENIX1ZBTElEQVRJT04pCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKICAg
ICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSByZXR1cm5WYWx1ZSA9IHRyeUZhc3RDYWxsb2Mobl9lbGVt
ZW50cywgZWxlbWVudF9zaXplKTsKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgcmV0dXJuVmFsdWUu
Z2V0VmFsdWUocmVzdWx0KTsKQEAgLTMxNSwxMyArMzE4LDEzIEBAIHZvaWQgZmFzdEZyZWUodm9p
ZCogcCkKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1Rf
TUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElP
TikKICAgICBpZiAoIXApCiAgICAgICAgIHJldHVybjsKLQotICAgIEFsbG9jQWxpZ25tZW50SW50
ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZShw
KTsKLSAgICBpZiAoKmhlYWRlciAhPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKQotICAgICAg
ICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgIAorICAgIGZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlRnJlZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKTsKKyAgICBJ
bnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NW
YWxpZGF0aW9uSGVhZGVyKHApOworICAgIG1lbXNldChwLCAweENDLCBoZWFkZXItPm1fc2l6ZSk7
CiAgICAgZnJlZShoZWFkZXIpOwogI2Vsc2UKICAgICBmcmVlKHApOwpAQCAtMzMyLDIwICszMzUs
MTggQEAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90
IG4pCiB7CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigpKTsKIAotI2lmIEVOQUJMRShGQVNUX01B
TExPQ19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04p
CiAgICAgaWYgKHApIHsKLSAgICAgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBuKSAgLy8gSWYgb3ZlcmZs
b3cgd291bGQgb2NjdXIuLi4KKyAgICAgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLSBJbnRlcm5hbDo6VmFsaWRhdGlvbkJ1ZmZlclNpemUgPD0gbikgIC8vIElmIG92
ZXJmbG93IHdvdWxkIG9jY3VyLi4uCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQWxs
b2NBbGlnbm1lbnRJbnRlZ2VyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFs
aWRhdGlvblZhbHVlKHApOwotICAgICAgICBpZiAoKmhlYWRlciAhPSBJbnRlcm5hbDo6QWxsb2NU
eXBlTWFsbG9jKQotICAgICAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChw
KTsKLSAgICAgICAgdm9pZCogcmVzdWx0ID0gcmVhbGxvYyhoZWFkZXIsIG4gKyBzaXplb2YoQWxs
b2NBbGlnbm1lbnRJbnRlZ2VyKSk7CisgICAgICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShwKTsKKyAg
ICAgICAgSW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqIHJlc3VsdCA9IHN0YXRpY19jYXN0PElu
dGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKj4ocmVhbGxvYyhJbnRlcm5hbDo6ZmFzdE1hbGxvY1Zh
bGlkYXRpb25IZWFkZXIocCksIG4gKyBJbnRlcm5hbDo6VmFsaWRhdGlvbkJ1ZmZlclNpemUpKTsK
ICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICAv
LyBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkIGJlY2F1c2UgdGhlIHZhbHVlIGlzIGFscmVhZHkg
dGhlcmU6Ci0gICAgICAgIC8vICpzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihy
ZXN1bHQpID0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYzsKLSAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7CisgICAgICAgIHJl
c3VsdC0+bV9zaXplID0gbjsKKyAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgMTsKKyAgICAgICAg
KmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KHJlc3VsdCkgPSBJbnRlcm5hbDo6VmFsaWRhdGlv
blN1ZmZpeDsKKyAgICAgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIGZhc3RNYWxsb2Mobik7
CkBAIC0zNTksNyArMzYwLDcgQEAgdm9pZCogZmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90IG4p
CiB7CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigpKTsKIAotI2lmIEVOQUJMRShGQVNUX01BTExP
Q19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAg
ICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgcmV0dXJuVmFsdWUgPSB0cnlGYXN0UmVhbGxvYyhwLCBu
KTsKICAgICB2b2lkKiByZXN1bHQ7CiAgICAgcmV0dXJuVmFsdWUuZ2V0VmFsdWUocmVzdWx0KTsK
QEAgLTEzMDAsNiArMTMwMSw4IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga01pbmltdW1GcmVlQ29t
bWl0dGVkUGFnZUNvdW50ID0ga01pblNwYW5MaXN0c1dpdGhTcGFucyAqICgoCiAKICNlbmRpZgog
CitzdGF0aWMgU3BpbkxvY2sgcGFnZWhlYXBfbG9jayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwor
CiBjbGFzcyBUQ01hbGxvY19QYWdlSGVhcCB7CiAgcHVibGljOgogICB2b2lkIGluaXQoKTsKQEAg
LTE1MjYsMTMgKzE1MjksMTMgQEAgdm9pZCBUQ01hbGxvY19QYWdlSGVhcDo6aW5pdGlhbGl6ZVNj
YXZlbmdlcigpCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBUQ01hbGxvY19QYWdlSGVhcDo6aXNTY2F2
ZW5nZXJTdXNwZW5kZWQoKQogewotICAgIEFTU0VSVChJc0hlbGQocGFnZWhlYXBfbG9jaykpOwor
ICAgIEFTU0VSVChwYWdlaGVhcF9sb2NrLklzSGVsZCgpKTsKICAgICByZXR1cm4gbV9zY2F2ZW5n
aW5nU3VzcGVuZGVkOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgVENNYWxsb2NfUGFnZUhlYXA6
OnNjaGVkdWxlU2NhdmVuZ2VyKCkKIHsKLSAgICBBU1NFUlQoSXNIZWxkKHBhZ2VoZWFwX2xvY2sp
KTsKKyAgICBBU1NFUlQocGFnZWhlYXBfbG9jay5Jc0hlbGQoKSk7CiAgICAgbV9zY2F2ZW5naW5n
U3VzcGVuZGVkID0gZmFsc2U7CiAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2NhdmVuZ2VUaW1lcik7
CiB9CkBAIC0xNTQ0LDcgKzE1NDcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVENNYWxsb2NfUGFn
ZUhlYXA6OnJlc2NoZWR1bGVTY2F2ZW5nZXIoKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgVENNYWxs
b2NfUGFnZUhlYXA6OnN1c3BlbmRTY2F2ZW5nZXIoKQogewotICAgIEFTU0VSVChJc0hlbGQocGFn
ZWhlYXBfbG9jaykpOworICAgIEFTU0VSVChwYWdlaGVhcF9sb2NrLklzSGVsZCgpKTsKICAgICBt
X3NjYXZlbmdpbmdTdXNwZW5kZWQgPSB0cnVlOwogICAgIGRpc3BhdGNoX3N1c3BlbmQobV9zY2F2
ZW5nZVRpbWVyKTsKIH0KQEAgLTI0MzcsNyArMjQ0MCw2IEBAIGNsYXNzIFRDTWFsbG9jX0NlbnRy
YWxfRnJlZUxpc3RQYWRkZWQgOiBwdWJsaWMgVENNYWxsb2NfQ2VudHJhbF9GcmVlTGlzdCB7CiBz
dGF0aWMgVENNYWxsb2NfQ2VudHJhbF9GcmVlTGlzdFBhZGRlZCBjZW50cmFsX2NhY2hlW2tOdW1D
bGFzc2VzXTsKIAogLy8gUGFnZS1sZXZlbCBhbGxvY2F0b3IKLXN0YXRpYyBTcGluTG9jayBwYWdl
aGVhcF9sb2NrID0gU1BJTkxPQ0tfSU5JVElBTElaRVI7CiBzdGF0aWMgQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyIHBhZ2VoZWFwX21lbW9yeVsoc2l6ZW9mKFRDTWFsbG9jX1BhZ2VIZWFwKSArIHNpemVv
ZihBbGxvY0FsaWdubWVudEludGVnZXIpIC0gMSkgLyBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRl
Z2VyKV07CiBzdGF0aWMgYm9vbCBwaGluaXRlZCA9IGZhbHNlOwogCkBAIC0yNDc1LDcgKzI0Nzcs
NyBAQCB2b2lkIFRDTWFsbG9jX1BhZ2VIZWFwOjpwZXJpb2RpY1NjYXZlbmdlKCkKIAogQUxXQVlT
X0lOTElORSB2b2lkIFRDTWFsbG9jX1BhZ2VIZWFwOjpzaWduYWxTY2F2ZW5nZXIoKQogewotICAg
IEFTU0VSVChJc0hlbGQocGFnZWhlYXBfbG9jaykpOworICAgIEFTU0VSVChwYWdlaGVhcF9sb2Nr
LklzSGVsZCgpKTsKICAgICBpZiAoaXNTY2F2ZW5nZXJTdXNwZW5kZWQoKSAmJiBzaG91bGRTY2F2
ZW5nZSgpKQogICAgICAgICBzY2hlZHVsZVNjYXZlbmdlcigpOwogfQpAQCAtMzgyMSwxNiArMzgy
MywyMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjcmFzaE9uRmFpbHVyZT4KIEFMV0FZU19JTkxJTkUKICNl
bmRpZgogdm9pZCogbWFsbG9jKHNpemVfdCBzaXplKSB7Ci0jaWYgRU5BQkxFKEZBU1RfTUFMTE9D
X01BVENIX1ZBTElEQVRJT04pCi0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBzaXplKSAgLy8gSWYgb3Zl
cmZsb3cgd291bGQgb2NjdXIuLi4KKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQor
ICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gSW50ZXJuYWw6OlZh
bGlkYXRpb25CdWZmZXJTaXplIDw9IHNpemUpICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4u
LgogICAgICAgICByZXR1cm4gMDsKLSAgICBzaXplICs9IHNpemVvZihBbGxvY0FsaWdubWVudElu
dGVnZXIpOwotICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhzaXplKTsKKyAgICB2b2lkKiBy
ZXN1bHQgPSBkb19tYWxsb2Moc2l6ZSArIEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSk7
CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgKnN0YXRpY19jYXN0
PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFs
bG9jOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJl
c3VsdCkgKyAxOworICAgIEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBzdGF0
aWNfY2FzdDxJbnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlcio+KHJlc3VsdCk7CisgICAgaGVhZGVy
LT5tX3NpemUgPSBzaXplOworICAgIGhlYWRlci0+bV90eXBlID0gSW50ZXJuYWw6OkFsbG9jVHlw
ZU1hbGxvYzsKKyAgICBoZWFkZXItPm1fcHJlZml4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElu
dGVybmFsOjpWYWxpZGF0aW9uUHJlZml4KTsKKyAgICByZXN1bHQgPSBoZWFkZXIgKyAxOworICAg
ICpJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25TdWZmaXgocmVzdWx0KSA9IEludGVybmFs
OjpWYWxpZGF0aW9uU3VmZml4OworICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShyZXN1bHQpOwogI2Vs
c2UKICAgICB2b2lkKiByZXN1bHQgPSBkb19tYWxsb2Moc2l6ZSk7CiAjZW5kaWYKQEAgLTM4NDks
MTMgKzM4NTUsMTMgQEAgdm9pZCBmcmVlKHZvaWQqIHB0cikgewogICBNYWxsb2NIb29rOjpJbnZv
a2VEZWxldGVIb29rKHB0cik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRD
SF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAgICAgaWYg
KCFwdHIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciogaGVh
ZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZShwdHIpOwotICAg
IGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCi0gICAgICAgIEludGVy
bmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocHRyKTsKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUo
cHRyKTsKKyAgICBJbnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlciogaGVhZGVyID0gSW50ZXJuYWw6
OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKHB0cik7CisgICAgbWVtc2V0KHB0ciwgMHhDQywg
aGVhZGVyLT5tX3NpemUpOwogICAgIGRvX2ZyZWUoaGVhZGVyKTsKICNlbHNlCiAgICAgZG9fZnJl
ZShwdHIpOwpAQCAtMzg3MCwxMiArMzg3NiwyMCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIGNhbGxv
YyhzaXplX3QsIHNpemVfdCk7CiAKIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG4sIHNpemVfdCBl
bGVtX3NpemUpCiB7Ci0gICAgcmV0dXJuIGNhbGxvYzx0cnVlPihuLCBlbGVtX3NpemUpOworICAg
IHZvaWQqIHJlc3VsdCA9IGNhbGxvYzx0cnVlPihuLCBlbGVtX3NpemUpOworI2lmIEVOQUJMRShX
VEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlG
YXN0Q2FsbG9jKHNpemVfdCBuLCBzaXplX3QgZWxlbV9zaXplKQogewotICAgIHJldHVybiBjYWxs
b2M8ZmFsc2U+KG4sIGVsZW1fc2l6ZSk7CisgICAgdm9pZCogcmVzdWx0ID0gY2FsbG9jPGZhbHNl
PihuLCBlbGVtX3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAg
ZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB0ZW1wbGF0ZSA8Ym9vbCBjcmFzaE9uRmFpbHVyZT4KQEAgLTM4ODgsMTggKzM5MDIsMTMg
QEAgdm9pZCogY2FsbG9jKHNpemVfdCBuLCBzaXplX3QgZWxlbV9zaXplKSB7CiAgIGlmIChuID4g
MSAmJiBlbGVtX3NpemUgJiYgKHRvdGFsQnl0ZXMgLyBlbGVtX3NpemUpICE9IG4pCiAgICAgcmV0
dXJuIDA7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKLSAgICBp
ZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIHNpemVvZihBbGxvY0FsaWdu
bWVudEludGVnZXIpIDw9IHRvdGFsQnl0ZXMpICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4u
LgotICAgICAgICByZXR1cm4gMDsKLQotICAgIHRvdGFsQnl0ZXMgKz0gc2l6ZW9mKEFsbG9jQWxp
Z25tZW50SW50ZWdlcik7Ci0gICAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHRvdGFsQnl0ZXMp
OworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgdm9pZCogcmVzdWx0ID0g
bWFsbG9jPGNyYXNoT25GYWlsdXJlPih0b3RhbEJ5dGVzKTsKICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBtZW1zZXQocmVzdWx0LCAwLCB0b3RhbEJ5dGVzKTsKLSAg
ICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFs
OjpBbGxvY1R5cGVNYWxsb2M7Ci0gICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1l
bnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7CisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7
CiAjZWxzZQogICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyh0b3RhbEJ5dGVzKTsKICAgICBp
ZiAocmVzdWx0ICE9IE5VTEwpIHsKQEAgLTM5MzQsMTIgKzM5NDMsMjYgQEAgQUxXQVlTX0lOTElO
RSB2b2lkKiByZWFsbG9jKHZvaWQqLCBzaXplX3QpOwogCiB2b2lkKiBmYXN0UmVhbGxvYyh2b2lk
KiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7Ci0gICAgcmV0dXJuIHJlYWxsb2M8dHJ1ZT4o
b2xkX3B0ciwgbmV3X3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisg
ICAgZmFzdE1hbGxvY1ZhbGlkYXRlKG9sZF9wdHIpOworI2VuZGlmCisgICAgdm9pZCogcmVzdWx0
ID0gcmVhbGxvYzx0cnVlPihvbGRfcHRyLCBuZXdfc2l6ZSk7CisjaWYgRU5BQkxFKFdURl9NQUxM
T0NfVkFMSURBVElPTikKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKKyNlbmRpZgor
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFs
bG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKLSAgICByZXR1cm4gcmVhbGxv
YzxmYWxzZT4ob2xkX3B0ciwgbmV3X3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElE
QVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKG9sZF9wdHIpOworI2VuZGlmCisgICAgdm9p
ZCogcmVzdWx0ID0gcmVhbGxvYzxmYWxzZT4ob2xkX3B0ciwgbmV3X3NpemUpOworI2lmIEVOQUJM
RShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBjcmFzaE9u
RmFpbHVyZT4KQEAgLTM5NDcsOCArMzk3MCw4IEBAIEFMV0FZU19JTkxJTkUKICNlbmRpZgogdm9p
ZCogcmVhbGxvYyh2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpIHsKICAgaWYgKG9sZF9w
dHIgPT0gTlVMTCkgewotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQot
ICAgIHZvaWQqIHJlc3VsdCA9IG1hbGxvYyhuZXdfc2l6ZSk7CisjaWYgRU5BQkxFKFdURl9NQUxM
T0NfVkFMSURBVElPTikKKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2M8Y3Jhc2hPbkZhaWx1cmU+
KG5ld19zaXplKTsKICNlbHNlCiAgICAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKG5ld19zaXpl
KTsKICNpZm5kZWYgV1RGX0NIQU5HRVMKQEAgLTM5NjUsMTQgKzM5ODgsMTQgQEAgdm9pZCogcmVh
bGxvYyh2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpIHsKICAgICByZXR1cm4gTlVMTDsK
ICAgfQogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAgaWYg
KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1l
bnRJbnRlZ2VyKSA8PSBuZXdfc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCisj
aWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBpZiAoc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSAtIEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSA8PSBu
ZXdfc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCiAgICAgICAgIHJldHVybiAw
OwotICAgIG5ld19zaXplICs9IHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpOwotICAgIEFs
bG9jQWxpZ25tZW50SW50ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRpb25WYWx1ZShvbGRfcHRyKTsKLSAgICBpZiAoKmhlYWRlciAhPSBJbnRlcm5hbDo6QWxs
b2NUeXBlTWFsbG9jKQotICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKG9s
ZF9wdHIpOworICAgIEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBJbnRlcm5h
bDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIob2xkX3B0cik7CisgICAgZmFzdE1hbGxvY1Zh
bGlkYXRlKG9sZF9wdHIpOwogICAgIG9sZF9wdHIgPSBoZWFkZXI7CisgICAgaGVhZGVyLT5tX3Np
emUgPSBuZXdfc2l6ZTsKKyAgICBuZXdfc2l6ZSArPSBJbnRlcm5hbDo6VmFsaWRhdGlvbkJ1ZmZl
clNpemU7CiAjZW5kaWYKIAogICAvLyBHZXQgdGhlIHNpemUgb2YgdGhlIG9sZCBlbnRyeQpAQCAt
NDAxMSwxMyArNDAzNCwxNSBAQCB2b2lkKiByZWFsbG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBu
ZXdfc2l6ZSkgewogICAgIC8vIHRoYXQgd2UgYWxyZWFkeSBrbm93IHRoZSBzaXplY2xhc3Mgb2Yg
b2xkX3B0ci4gIFRoZSBiZW5lZml0CiAgICAgLy8gd291bGQgYmUgc21hbGwsIHNvIGRvbid0IGJv
dGhlci4KICAgICBkb19mcmVlKG9sZF9wdHIpOwotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRD
SF9WQUxJREFUSU9OKQotICAgIG5ld19wdHIgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudElu
dGVnZXIqPihuZXdfcHRyKSArIDE7CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikK
KyAgICBuZXdfcHRyID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqPihu
ZXdfcHRyKSArIDE7CisgICAgKkludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeChu
ZXdfcHRyKSA9IEludGVybmFsOjpWYWxpZGF0aW9uU3VmZml4OwogI2VuZGlmCiAgICAgcmV0dXJu
IG5ld19wdHI7CiAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElE
QVRJT04pCi0gICAgb2xkX3B0ciA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+
KG9sZF9wdHIpICsgMTsgLy8gU2V0IG9sZF9wdHIgYmFjayB0byB0aGUgdXNlciBwb2ludGVyLgor
I2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgb2xkX3B0ciA9IHN0YXRpY19j
YXN0PEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKj4ob2xkX3B0cikgKyAxOyAvLyBTZXQgb2xk
X3B0ciBiYWNrIHRvIHRoZSB1c2VyIHBvaW50ZXIuCisgICAgKkludGVybmFsOjpmYXN0TWFsbG9j
VmFsaWRhdGlvblN1ZmZpeChvbGRfcHRyKSA9IEludGVybmFsOjpWYWxpZGF0aW9uU3VmZml4Owog
I2VuZGlmCiAgICAgcmV0dXJuIG9sZF9wdHI7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9G
YXN0TWFsbG9jLmgKaW5kZXggOTcyOWJjMzZlNGVkNjRkNjgwZGZkNGIxZGU3ZWJiNGU0MmM2OTg0
NS4uMzdjZjA4NjhlYzBjNTc1MmJiOTZiNzgwMDljYTdlN2ZhY2Q3NTQ4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTEwMyw5ICsxMDMsMjUgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICAgICBBbGxvY1R5cGVOZXcsICAgICAgICAgICAgICAgICAgIC8vIEVu
Y29tcGFzc2VzIGdsb2JhbCBvcGVyYXRvciBuZXcuCiAgICAgICAgICAgICBBbGxvY1R5cGVOZXdB
cnJheSAgICAgICAgICAgICAgIC8vIEVuY29tcGFzc2VzIGdsb2JhbCBvcGVyYXRvciBuZXdbXS4K
ICAgICAgICAgfTsKKworICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgIFZhbGlkYXRpb25QcmVm
aXggPSAweGYwMGRmMDBkLAorICAgICAgICAgICAgVmFsaWRhdGlvblN1ZmZpeCA9IDB4MGJhZGYw
MGQKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIFZhbGlkYXRpb25UYWc7
CisKKyAgICAgICAgc3RydWN0IFZhbGlkYXRpb25IZWFkZXIgeworICAgICAgICAgICAgQWxsb2NU
eXBlIG1fdHlwZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICAgICAgICAgIFZh
bGlkYXRpb25UYWcgbV9wcmVmaXg7CisgICAgICAgICAgICB1bnNpZ25lZCBtX2FsaWdubWVudDsK
KyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgY29uc3QgaW50IFZhbGlkYXRpb25CdWZmZXJT
aXplID0gc2l6ZW9mKFZhbGlkYXRpb25IZWFkZXIpICsgc2l6ZW9mKFZhbGlkYXRpb25UYWcpOwog
ICAgIH0KIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVO
QUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAKICAgICAvLyBNYWxsb2MgdmFsaWRhdGlvbiBp
cyBhIHNjaGVtZSB3aGVyZWJ5IGEgdGFnIGlzIGF0dGFjaGVkIHRvIGFuCiAgICAgLy8gYWxsb2Nh
dGlvbiB3aGljaCBpZGVudGlmaWVzIGhvdyBpdCB3YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQuCkBA
IC0xMjAsMzAgKzEzNiwzNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAvLyBpcyBpbXBsZW1lbnRl
ZC4KIAogICAgIG5hbWVzcGFjZSBJbnRlcm5hbCB7CisgICAgCisgICAgICAgIC8vIEhhbmRsZSBh
IGRldGVjdGVkIGFsbG9jL2ZyZWUgbWlzbWF0Y2guIEJ5IGRlZmF1bHQgdGhpcyBjYWxscyBDUkFT
SCgpLgorICAgICAgICB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKiBwKTsKIAotICAg
ICAgICAvLyBSZXR1cm4gdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxv
Y2F0ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5lIEFsbG9jVHlwZSBmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0aW9uVHlwZShjb25zdCB2b2lkKiBwKQorICAgICAgICBpbmxpbmUgVmFsaWRhdGlvbkhl
YWRlciogZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIodm9pZCogcCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiB0eXBlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocCkgLSAxOwotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEFsbG9jVHlwZT4oKnR5cGUpOworICAgICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VmFsaWRhdGlvbkhlYWRlcio+KHN0YXRpY19jYXN0PGNoYXIqPihwKSAtIHNp
emVvZihWYWxpZGF0aW9uSGVhZGVyKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBSZXR1cm4g
dGhlIGFkZHJlc3Mgb2YgdGhlIEFsbG9jVHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxv
Y2F0ZWQgYmxvY2sgcC4KLSAgICAgICAgaW5saW5lIEFsbG9jQWxpZ25tZW50SW50ZWdlciogZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHZvaWQqIHApCisgICAgICAgIGlubGluZSBWYWxp
ZGF0aW9uVGFnKiBmYXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeCh2b2lkKiBwKQorICAgICAgICB7
CisgICAgICAgICAgICBWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBmYXN0TWFsbG9jVmFsaWRh
dGlvbkhlYWRlcihwKTsKKyAgICAgICAgICAgIGlmIChoZWFkZXItPm1fcHJlZml4ICE9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihWYWxpZGF0aW9uUHJlZml4KSkKKyAgICAgICAgICAgICAgICBmYXN0
TWFsbG9jTWF0Y2hGYWlsZWQocCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFZhbGlkYXRpb25UYWcqPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgKyBo
ZWFkZXItPm1fc2l6ZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXR1cm4gdGhlIEFsbG9j
VHlwZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGxvY2F0ZWQgYmxvY2sgcC4KKyAgICAgICAg
aW5saW5lIEFsbG9jVHlwZSBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSh2b2lkKiBwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBbGxvY0FsaWdu
bWVudEludGVnZXIqPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgLSBzaXplb2YoQWxsb2NBbGlnbm1l
bnRJbnRlZ2VyKSk7CisgICAgICAgICAgICByZXR1cm4gZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFk
ZXIocCktPm1fdHlwZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNldCB0aGUgQWxsb2NUeXBl
IHRhZyB0byBiZSBhc3NvY2lhZ2VkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgogICAgICAg
ICBpbmxpbmUgdm9pZCBzZXRGYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVHlwZSh2b2lkKiBwLCBB
bGxvY1R5cGUgYWxsb2NUeXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBbGxvY0FsaWdubWVu
dEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAt
IDE7Ci0gICAgICAgICAgICAqdHlwZSA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdl
cj4oYWxsb2NUeXBlKTsKKyAgICAgICAgICAgIGZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKHAp
LT5tX3R5cGUgPSBhbGxvY1R5cGU7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBIYW5kbGUgYSBk
ZXRlY3RlZCBhbGxvYy9mcmVlIG1pc21hdGNoLiBCeSBkZWZhdWx0IHRoaXMgY2FsbHMgQ1JBU0go
KS4KLSAgICAgICAgdm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCogcCk7Ci0KICAgICB9
IC8vIG5hbWVzcGFjZSBJbnRlcm5hbAogCiAgICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBm
dW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KQEAgLTE1Niwx
NiArMTc4LDM0IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIC8vIFRoaXMgaXMgYSBo
aWdoZXIgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCBieSBGYXN0TWFsbG9jLXVzaW5nIGNv
ZGUuCi0gICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqIHAs
IEludGVybmFsOjpBbGxvY1R5cGUgYWxsb2NUeXBlKQorICAgIGlubGluZSB2b2lkIGZhc3RNYWxs
b2NNYXRjaFZhbGlkYXRlRnJlZSh2b2lkKiBwLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQogICAgIHsK
ICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgcmV0dXJuOworICAgIAorICAgICAgICBJbnRl
cm5hbDo6VmFsaWRhdGlvbkhlYWRlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxp
ZGF0aW9uSGVhZGVyKHApOworICAgICAgICBpZiAoaGVhZGVyLT5tX3ByZWZpeCAhPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSW50ZXJuYWw6OlZhbGlkYXRpb25QcmVmaXgpKQorICAgICAgICAgICAg
SW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKIAotICAgICAgICBpZiAoSW50ZXJu
YWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHApICE9IGFsbG9jVHlwZSkKKyAgICAg
ICAgaWYgKCpJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25TdWZmaXgocCkgIT0gSW50ZXJu
YWw6OlZhbGlkYXRpb25TdWZmaXgpCiAgICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01h
dGNoRmFpbGVkKHApOworCiAgICAgICAgIEludGVybmFsOjpzZXRGYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0aW9uVHlwZShwLCBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jKTsgIC8vIFNldCBpdCB0byB0
aGlzIHNvIHRoYXQgZmFzdEZyZWUgdGhpbmtzIGl0J3MgT0suCiAgICAgfQogCisgICAgaW5saW5l
IHZvaWQgZmFzdE1hbGxvY1ZhbGlkYXRlKHZvaWQqIHApCisgICAgeworICAgICAgICBpZiAoIXAp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBJbnRlcm5hbDo6VmFsaWRh
dGlvbkhlYWRlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVy
KHApOworICAgICAgICBpZiAoaGVhZGVyLT5tX3ByZWZpeCAhPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSW50ZXJuYWw6OlZhbGlkYXRpb25QcmVmaXgpKQorICAgICAgICAgICAgSW50ZXJuYWw6OmZh
c3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKKyAgICAgICAgCisgICAgICAgIGlmICgqSW50ZXJuYWw6
OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KHApICE9IEludGVybmFsOjpWYWxpZGF0aW9uU3Vm
Zml4KQorICAgICAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKKyAg
ICB9CisKICNlbHNlCiAKICAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1h
bGxvYyh2b2lkKiwgSW50ZXJuYWw6OkFsbG9jVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAppbmRleCBmMDNhM2Q0MmFiYjljNjQ1ZGU2ZDU3M2UzNTk3MDIzMGQ1Zjk0ZTFhLi44
NzY5ZDFiZjc4MTBkNjVlMGI0MmQ3YTFkN2JhNmFmMWQyNWFiNjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC04NzQsOCArODc0LDEyIEBACiAKIC8qIGZhc3RNYWxsb2Mg
bWF0Y2ggdmFsaWRhdGlvbiBhbGxvd3MgZm9yIHJ1bnRpbWUgdmVyaWZpY2F0aW9uIHRoYXQKICAg
IG5ldyBpcyBtYXRjaGVkIGJ5IGRlbGV0ZSwgZmFzdE1hbGxvYyBpcyBtYXRjaGVkIGJ5IGZhc3RG
cmVlLCBldGMuICovCi0jaWYgIWRlZmluZWQoRU5BQkxFX0ZBU1RfTUFMTE9DX01BVENIX1ZBTElE
QVRJT04pCi0jZGVmaW5lIEVOQUJMRV9GQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OIDAKKyNp
ZiAhZGVmaW5lZChFTkFCTEVfV1RGX01BTExPQ19WQUxJREFUSU9OKQorI2lmbmRlZiBOREVCVUcK
KyNkZWZpbmUgRU5BQkxFX1dURl9NQUxMT0NfVkFMSURBVElPTiAxCisjZWxzZQorI2RlZmluZSBF
TkFCTEVfV1RGX01BTExPQ19WQUxJREFUSU9OIDAKKyNlbmRpZgogI2VuZGlmCiAKICNpZiAhZGVm
aW5lZChFTkFCTEVfSUNPTkRBVEFCQVNFKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88089</attachid>
            <date>2011-04-04 11:57:44 -0700</date>
            <delta_ts>2011-04-04 12:49:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57502-20110404115743.patch</filename>
            <type>text/plain</type>
            <size>22921</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVi
ZTE0MmY1NGVmMGM4MWQ5ZmI4ZmViMDdlYjA2ZDQ2OGI3OWU0Y2YuLjMxNmNlODcwYTliYjdmODc5
NzljM2M3NWE3OTQ1ZWY1Nzc2NDcxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDExLTA0LTA0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBtYWxs
b2MgdmFsaWRhdGlvbiB1c2VmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3NTAyCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04gd2l0aCBhIGdlbmVyYWwKKyAgICAgICAgY29ycnVwdGlvbiBj
aGVjayB0aGF0IHRhZ3MgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGFsbCBhbGxvY2F0aW9ucwor
ICAgICAgICB0byBjaGVjayBmb3Igd3JpdGUgb3ZlcmZsb3dzIGFuZCBvdmVyd3JpdGVzIHRoZSBj
b250ZW50cyBvZgorICAgICAgICBtZW1vcnkgb24gZnJlZSBpbiBvcmRlciB0byAoaG9wZWZ1bGx5
KSBzaG93IHVwIHVzZS1hZnRlci1mcmVlIGlzc3VlcworICAgICAgICBzb29uZXIuCisKKyAgICAg
ICAgV2UgYWxzbyB0dXJuIGl0IG9uIGJ5IGRlZmF1bHQgZm9yIGRlYnVnIGJ1aWxkcy4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5jcHA6
CisgICAgICAgIChXVEY6OnRyeUZhc3RNYWxsb2MpOgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9j
KToKKyAgICAgICAgKFdURjo6dHJ5RmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OmZhc3RDYWxs
b2MpOgorICAgICAgICAoV1RGOjpmYXN0RnJlZSk6CisgICAgICAgIChXVEY6OnRyeUZhc3RSZWFs
bG9jKToKKyAgICAgICAgKFdURjo6ZmFzdFJlYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6aXNTY2F2ZW5nZXJTdXNwZW5kZWQpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6c2NoZWR1bGVTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY19Q
YWdlSGVhcDo6c3VzcGVuZFNjYXZlbmdlcik6CisgICAgICAgIChXVEY6OlRDTWFsbG9jX1BhZ2VI
ZWFwOjpzaWduYWxTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjptYWxs
b2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmcmVlKToKKyAgICAgICAgKFdURjo6
VENNYWxsb2NTdGF0czo6ZmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OlRDTWFsbG9jU3RhdHM6
OnRyeUZhc3RDYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpjYWxsb2MpOgor
ICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmYXN0UmVhbGxvYyk6CisgICAgICAgIChXVEY6
OlRDTWFsbG9jU3RhdHM6OnRyeUZhc3RSZWFsbG9jKToKKyAgICAgICAgKFdURjo6VENNYWxsb2NT
dGF0czo6cmVhbGxvYyk6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKFdU
Rjo6SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKToKKyAgICAgICAgKFdURjo6
SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKToKKyAgICAgICAgKFdURjo6ZmFzdE1hbGxvY1Zh
bGlkYXRlKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wNC0wMSAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjll
NTM1NDljZGY4OTRjMjAxYWI2YWVlZWZjOTkxYTdkOWRlODY3ZS4uZTYxZTgzMGVlMjgwZWZhMTg0
ZmM1YTNlMmU5YTk0ZWYyZWE3NzQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCkBAIC00OTIsNiArNDkyLDcgQEAgX19aTjNXVEY3eG1sQXRvbUUKIF9fWk4zV1RG
OENvbGxhdG9yMThzZXRPcmRlckxvd2VyRmlyc3RFYgogX19aTjNXVEY4Q29sbGF0b3JDMUVQS2MK
IF9fWk4zV1RGOENvbGxhdG9yRDFFdgorX19aTjNXVEY4SW50ZXJuYWwyMWZhc3RNYWxsb2NNYXRj
aEZhaWxlZEVQdgogX19aTjNXVEY4ZmFzdEZyZWVFUHYKIF9fWk4zV1RGOG1zVG9ZZWFyRWQKIF9f
Wk4zV1RGOG51bGxBdG9tRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmRlZgppbmRleCA1YzRjMzc0YWQ0YzBkNDhkY2RiNDUzMTZlZGFmY2FhYjZh
YjY4MjEyLi4xM2UyM2JlYzE2ZWI1Y2M4OTc1NjBlZDRlMmQyOGFhZWY4MGYwNWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAt
MTYxLDYgKzE2MSw3IEBAIEVYUE9SVFMKICAgICA/ZmFzdENhbGxvY0BXVEZAQFlBUEFYSUlAWgog
ICAgID9mYXN0RnJlZUBXVEZAQFlBWFBBWEBaCiAgICAgP2Zhc3RNYWxsb2NAV1RGQEBZQVBBWElA
WgorICAgID9mYXN0TWFsbG9jTWF0Y2hGYWlsZWRASW50ZXJuYWxAV1RGQEBZQVhQQVhAWgogICAg
ID9mYXN0TWFsbG9jU2l6ZUBXVEZAQFlBSVBCWEBaCiAgICAgP2Zhc3RSZWFsbG9jQFdURkBAWUFQ
QVhQQVhJQFoKICAgICA/ZmFzdFN0ckR1cEBXVEZAQFlBUEFEUEJEQFoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IDI5ZTlhMWFhZDQ3YmRjNWExNjNhMjIyNzBl
OGViNGQxMWIyYzc0OGQuLmZlZmQwOWIxZDQ1OGU2MjM3MzVjZWQxZTc1MGY4NDc2MmI3YzBiNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcApAQCAtMTYxLDEwICsx
NjEsMTMgQEAgdm9pZCBmYXN0TWFsbG9jQWxsb3coKQogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lm
IEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQogCiBuYW1lc3BhY2UgSW50ZXJu
YWwgewotCisjaWYgIUVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCit2b2lkIGZhc3RNYWxs
b2NNYXRjaEZhaWxlZCh2b2lkKik7CisjZWxzZQorQ09NUElMRV9BU1NFUlQoKChzaXplb2YoVmFs
aWRhdGlvbkhlYWRlcikgJSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSkgPT0gMCksIFZh
bGlkYXRpb25IZWFkZXJfbXVzdF9wcm9kdWNlX2NvcnJlY3RfYWxpZ25tZW50KTsKKyNlbmRpZgog
dm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCopCiB7CiAgICAgQ1JBU0goKTsKQEAgLTE3
Miw3ICsxNzUsNiBAQCB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKikKIAogfSAvLyBu
YW1lc3BhY2UgSW50ZXJuYWwKIAotI2VuZGlmCiAKIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6
ZV90IG4pIAogewpAQCAtMjIxLDE3ICsyMjMsMjAgQEAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5
RmFzdE1hbGxvYyhzaXplX3QgbikKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOwogCi0j
aWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAgaWYgKHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
KSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIuLi4KKyNpZiBFTkFCTEUoV1RGX01B
TExPQ19WQUxJREFUSU9OKQorICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpIC0gSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplIDw9IG4pICAvLyBJZiBvdmVyZmxv
dyB3b3VsZCBvY2N1ci4uLgogICAgICAgICByZXR1cm4gMDsKIAotICAgIHZvaWQqIHJlc3VsdCA9
IG1hbGxvYyhuICsgc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikpOworICAgIHZvaWQqIHJl
c3VsdCA9IG1hbGxvYyhuICsgSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplKTsKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAqc3RhdGljX2Nhc3Q8QWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0g
ICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSAr
IDE7Ci0KKyAgICBJbnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlciogaGVhZGVyID0gc3RhdGljX2Nh
c3Q8SW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqPihyZXN1bHQpOworICAgIGhlYWRlci0+bV9z
aXplID0gbjsKKyAgICBoZWFkZXItPm1fdHlwZSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7
CisgICAgaGVhZGVyLT5tX3ByZWZpeCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJbnRlcm5hbDo6
VmFsaWRhdGlvblByZWZpeCk7CisgICAgcmVzdWx0ID0gaGVhZGVyICsgMTsKKyAgICAqSW50ZXJu
YWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KHJlc3VsdCkgPSBJbnRlcm5hbDo6VmFsaWRh
dGlvblN1ZmZpeDsKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogI2Vsc2UKICAgICByZXR1cm4gbWFsbG9jKG4pOwpAQCAtMjQyLDcgKzI0Nyw3IEBA
IHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90IG4pCiB7CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigp
KTsKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJM
RShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgcmV0dXJu
VmFsdWUgPSB0cnlGYXN0TWFsbG9jKG4pOwogICAgIHZvaWQqIHJlc3VsdDsKICAgICByZXR1cm5W
YWx1ZS5nZXRWYWx1ZShyZXN1bHQpOwpAQCAtMjY3LDE5ICsyNzIsMTcgQEAgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRf
c2l6ZSkKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1Rf
TUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElP
TikKICAgICBzaXplX3QgdG90YWxCeXRlcyA9IG5fZWxlbWVudHMgKiBlbGVtZW50X3NpemU7Ci0g
ICAgaWYgKG5fZWxlbWVudHMgPiAxICYmIGVsZW1lbnRfc2l6ZSAmJiAodG90YWxCeXRlcyAvIGVs
ZW1lbnRfc2l6ZSkgIT0gbl9lbGVtZW50cyB8fCAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IHRvdGFsQnl0ZXMpKQor
ICAgIGlmIChuX2VsZW1lbnRzID4gMSAmJiBlbGVtZW50X3NpemUgJiYgKHRvdGFsQnl0ZXMgLyBl
bGVtZW50X3NpemUpICE9IG5fZWxlbWVudHMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdG90
YWxCeXRlcyArPSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsKLSAgICB2b2lkKiByZXN1
bHQgPSBtYWxsb2ModG90YWxCeXRlcyk7Ci0gICAgaWYgKCFyZXN1bHQpCisgICAgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUgcmV0dXJuVmFsdWUgPSB0cnlGYXN0TWFsbG9jKHRvdGFsQnl0ZXMpOworICAg
IHZvaWQqIHJlc3VsdDsKKyAgICBpZiAoIXJldHVyblZhbHVlLmdldFZhbHVlKHJlc3VsdCkpCiAg
ICAgICAgIHJldHVybiAwOwotCiAgICAgbWVtc2V0KHJlc3VsdCwgMCwgdG90YWxCeXRlcyk7Ci0g
ICAgKnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5h
bDo6QWxsb2NUeXBlTWFsbG9jOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25t
ZW50SW50ZWdlcio+KHJlc3VsdCkgKyAxOworICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShyZXN1bHQp
OwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIHJldHVybiBjYWxsb2Mobl9lbGVtZW50
cywgZWxlbWVudF9zaXplKTsKQEAgLTI5MCw3ICsyOTMsNyBAQCB2b2lkKiBmYXN0Q2FsbG9jKHNp
emVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKQogewogICAgIEFTU0VSVCghaXNG
b3JiaWRkZW4oKSk7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikK
KyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQogICAgIFRyeU1hbGxvY1JldHVyblZh
bHVlIHJldHVyblZhbHVlID0gdHJ5RmFzdENhbGxvYyhuX2VsZW1lbnRzLCBlbGVtZW50X3NpemUp
OwogICAgIHZvaWQqIHJlc3VsdDsKICAgICByZXR1cm5WYWx1ZS5nZXRWYWx1ZShyZXN1bHQpOwpA
QCAtMzE1LDEzICszMTgsMTMgQEAgdm9pZCBmYXN0RnJlZSh2b2lkKiBwKQogewogICAgIEFTU0VS
VCghaXNGb3JiaWRkZW4oKSk7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURB
VElPTikKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQogICAgIGlmICghcCkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBoZWFkZXIgPSBJbnRl
cm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHApOwotICAgIGlmICgqaGVhZGVy
ICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCi0gICAgICAgIEludGVybmFsOjpmYXN0TWFs
bG9jTWF0Y2hGYWlsZWQocCk7CisgICAgCisgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVl
KHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpOworICAgIEludGVybmFsOjpWYWxpZGF0aW9u
SGVhZGVyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIocCk7
CisgICAgbWVtc2V0KHAsIDB4Q0MsIGhlYWRlci0+bV9zaXplKTsKICAgICBmcmVlKGhlYWRlcik7
CiAjZWxzZQogICAgIGZyZWUocCk7CkBAIC0zMzIsMjAgKzMzNSwxOCBAQCBUcnlNYWxsb2NSZXR1
cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikKIHsKICAgICBBU1NFUlQo
IWlzRm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJ
T04pCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKICAgICBpZiAocCkgewotICAg
ICAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIHNpemVvZihBbGxv
Y0FsaWdubWVudEludGVnZXIpIDw9IG4pICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4uLgor
ICAgICAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIEludGVybmFs
OjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIu
Li4KICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIq
IGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUocCk7Ci0g
ICAgICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCi0gICAgICAg
ICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOwotICAgICAgICB2b2lkKiBy
ZXN1bHQgPSByZWFsbG9jKGhlYWRlciwgbiArIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIp
KTsKKyAgICAgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHApOworICAgICAgICBJbnRlcm5hbDo6VmFs
aWRhdGlvbkhlYWRlciogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWw6OlZhbGlkYXRpb25I
ZWFkZXIqPihyZWFsbG9jKEludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvbkhlYWRlcihwKSwg
biArIEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSkpOwogICAgICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBi
ZSBuZWVkZWQgYmVjYXVzZSB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZToKLSAgICAgICAgLy8g
KnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6
QWxsb2NUeXBlTWFsbG9jOwotICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdu
bWVudEludGVnZXIqPihyZXN1bHQpICsgMTsKKyAgICAgICAgcmVzdWx0LT5tX3NpemUgPSBuOwor
ICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAxOworICAgICAgICAqZmFzdE1hbGxvY1ZhbGlkYXRp
b25TdWZmaXgocmVzdWx0KSA9IEludGVybmFsOjpWYWxpZGF0aW9uU3VmZml4OworICAgICAgICBm
YXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
IGVsc2UgewogICAgICAgICByZXR1cm4gZmFzdE1hbGxvYyhuKTsKQEAgLTM1OSw3ICszNjAsNyBA
QCB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikKIHsKICAgICBBU1NFUlQoIWlz
Rm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04p
CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKICAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSByZXR1cm5WYWx1ZSA9IHRyeUZhc3RSZWFsbG9jKHAsIG4pOwogICAgIHZvaWQqIHJlc3Vs
dDsKICAgICByZXR1cm5WYWx1ZS5nZXRWYWx1ZShyZXN1bHQpOwpAQCAtMTMwMCw2ICsxMzAxLDgg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWluaW11bUZyZWVDb21taXR0ZWRQYWdlQ291bnQgPSBr
TWluU3Bhbkxpc3RzV2l0aFNwYW5zICogKCgKIAogI2VuZGlmCiAKK3N0YXRpYyBTcGluTG9jayBw
YWdlaGVhcF9sb2NrID0gU1BJTkxPQ0tfSU5JVElBTElaRVI7CisKIGNsYXNzIFRDTWFsbG9jX1Bh
Z2VIZWFwIHsKICBwdWJsaWM6CiAgIHZvaWQgaW5pdCgpOwpAQCAtMTUyNiwxMyArMTUyOSwxMyBA
QCB2b2lkIFRDTWFsbG9jX1BhZ2VIZWFwOjppbml0aWFsaXplU2NhdmVuZ2VyKCkKIAogQUxXQVlT
X0lOTElORSBib29sIFRDTWFsbG9jX1BhZ2VIZWFwOjppc1NjYXZlbmdlclN1c3BlbmRlZCgpCiB7
Ci0gICAgQVNTRVJUKElzSGVsZChwYWdlaGVhcF9sb2NrKSk7CisgICAgQVNTRVJUKHBhZ2VoZWFw
X2xvY2suSXNIZWxkKCkpOwogICAgIHJldHVybiBtX3NjYXZlbmdpbmdTdXNwZW5kZWQ7CiB9CiAK
IEFMV0FZU19JTkxJTkUgdm9pZCBUQ01hbGxvY19QYWdlSGVhcDo6c2NoZWR1bGVTY2F2ZW5nZXIo
KQogewotICAgIEFTU0VSVChJc0hlbGQocGFnZWhlYXBfbG9jaykpOworICAgIEFTU0VSVChwYWdl
aGVhcF9sb2NrLklzSGVsZCgpKTsKICAgICBtX3NjYXZlbmdpbmdTdXNwZW5kZWQgPSBmYWxzZTsK
ICAgICBkaXNwYXRjaF9yZXN1bWUobV9zY2F2ZW5nZVRpbWVyKTsKIH0KQEAgLTE1NDQsNyArMTU0
Nyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBUQ01hbGxvY19QYWdlSGVhcDo6cmVzY2hlZHVsZVNj
YXZlbmdlcigpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBUQ01hbGxvY19QYWdlSGVhcDo6c3VzcGVu
ZFNjYXZlbmdlcigpCiB7Ci0gICAgQVNTRVJUKElzSGVsZChwYWdlaGVhcF9sb2NrKSk7CisgICAg
QVNTRVJUKHBhZ2VoZWFwX2xvY2suSXNIZWxkKCkpOwogICAgIG1fc2NhdmVuZ2luZ1N1c3BlbmRl
ZCA9IHRydWU7CiAgICAgZGlzcGF0Y2hfc3VzcGVuZChtX3NjYXZlbmdlVGltZXIpOwogfQpAQCAt
MjQzNyw3ICsyNDQwLDYgQEAgY2xhc3MgVENNYWxsb2NfQ2VudHJhbF9GcmVlTGlzdFBhZGRlZCA6
IHB1YmxpYyBUQ01hbGxvY19DZW50cmFsX0ZyZWVMaXN0IHsKIHN0YXRpYyBUQ01hbGxvY19DZW50
cmFsX0ZyZWVMaXN0UGFkZGVkIGNlbnRyYWxfY2FjaGVba051bUNsYXNzZXNdOwogCiAvLyBQYWdl
LWxldmVsIGFsbG9jYXRvcgotc3RhdGljIFNwaW5Mb2NrIHBhZ2VoZWFwX2xvY2sgPSBTUElOTE9D
S19JTklUSUFMSVpFUjsKIHN0YXRpYyBBbGxvY0FsaWdubWVudEludGVnZXIgcGFnZWhlYXBfbWVt
b3J5WyhzaXplb2YoVENNYWxsb2NfUGFnZUhlYXApICsgc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50
ZWdlcikgLSAxKSAvIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpXTsKIHN0YXRpYyBib29s
IHBoaW5pdGVkID0gZmFsc2U7CiAKQEAgLTI0NzUsNyArMjQ3Nyw3IEBAIHZvaWQgVENNYWxsb2Nf
UGFnZUhlYXA6OnBlcmlvZGljU2NhdmVuZ2UoKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgVENNYWxs
b2NfUGFnZUhlYXA6OnNpZ25hbFNjYXZlbmdlcigpCiB7Ci0gICAgQVNTRVJUKElzSGVsZChwYWdl
aGVhcF9sb2NrKSk7CisgICAgQVNTRVJUKHBhZ2VoZWFwX2xvY2suSXNIZWxkKCkpOwogICAgIGlm
IChpc1NjYXZlbmdlclN1c3BlbmRlZCgpICYmIHNob3VsZFNjYXZlbmdlKCkpCiAgICAgICAgIHNj
aGVkdWxlU2NhdmVuZ2VyKCk7CiB9CkBAIC0zODIxLDE2ICszODIzLDIwIEBAIHRlbXBsYXRlIDxi
b29sIGNyYXNoT25GYWlsdXJlPgogQUxXQVlTX0lOTElORQogI2VuZGlmCiB2b2lkKiBtYWxsb2Mo
c2l6ZV90IHNpemUpIHsKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikK
LSAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIHNpemVvZihBbGxv
Y0FsaWdubWVudEludGVnZXIpIDw9IHNpemUpICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4u
LgorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgaWYgKHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBJbnRlcm5hbDo6VmFsaWRhdGlvbkJ1ZmZlclNpemUg
PD0gc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCiAgICAgICAgIHJldHVybiAw
OwotICAgIHNpemUgKz0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7Ci0gICAgdm9pZCog
cmVzdWx0ID0gZG9fbWFsbG9jKHNpemUpOworICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhz
aXplICsgSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplKTsKICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRl
Z2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0gICAgcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7CisgICAgSW50
ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqIGhlYWRlciA9IHN0YXRpY19jYXN0PEludGVybmFsOjpW
YWxpZGF0aW9uSGVhZGVyKj4ocmVzdWx0KTsKKyAgICBoZWFkZXItPm1fc2l6ZSA9IHNpemU7Cisg
ICAgaGVhZGVyLT5tX3R5cGUgPSBJbnRlcm5hbDo6QWxsb2NUeXBlTWFsbG9jOworICAgIGhlYWRl
ci0+bV9wcmVmaXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSW50ZXJuYWw6OlZhbGlkYXRpb25Q
cmVmaXgpOworICAgIHJlc3VsdCA9IGhlYWRlciArIDE7CisgICAgKkludGVybmFsOjpmYXN0TWFs
bG9jVmFsaWRhdGlvblN1ZmZpeChyZXN1bHQpID0gSW50ZXJuYWw6OlZhbGlkYXRpb25TdWZmaXg7
CisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7CiAjZWxzZQogICAgIHZvaWQqIHJlc3Vs
dCA9IGRvX21hbGxvYyhzaXplKTsKICNlbmRpZgpAQCAtMzg0OSwxMyArMzg1NSwxMyBAQCB2b2lk
IGZyZWUodm9pZCogcHRyKSB7CiAgIE1hbGxvY0hvb2s6Okludm9rZURlbGV0ZUhvb2socHRyKTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjaWYg
RU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKICAgICBpZiAoIXB0cikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHB0cik7Ci0gICAgaWYgKCpoZWFkZXIgIT0gSW50
ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYykKLSAgICAgICAgSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRj
aEZhaWxlZChwdHIpOworICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShwdHIpOworICAgIEludGVybmFs
OjpWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRp
b25IZWFkZXIocHRyKTsKKyAgICBtZW1zZXQocHRyLCAweENDLCBoZWFkZXItPm1fc2l6ZSk7CiAg
ICAgZG9fZnJlZShoZWFkZXIpOwogI2Vsc2UKICAgICBkb19mcmVlKHB0cik7CkBAIC0zODcwLDEy
ICszODc2LDIwIEBAIEFMV0FZU19JTkxJTkUgdm9pZCogY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsK
IAogdm9pZCogZmFzdENhbGxvYyhzaXplX3Qgbiwgc2l6ZV90IGVsZW1fc2l6ZSkKIHsKLSAgICBy
ZXR1cm4gY2FsbG9jPHRydWU+KG4sIGVsZW1fc2l6ZSk7CisgICAgdm9pZCogcmVzdWx0ID0gY2Fs
bG9jPHRydWU+KG4sIGVsZW1fc2l6ZSk7CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElP
TikKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKKyNlbmRpZgorICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG4s
IHNpemVfdCBlbGVtX3NpemUpCiB7Ci0gICAgcmV0dXJuIGNhbGxvYzxmYWxzZT4obiwgZWxlbV9z
aXplKTsKKyAgICB2b2lkKiByZXN1bHQgPSBjYWxsb2M8ZmFsc2U+KG4sIGVsZW1fc2l6ZSk7Cisj
aWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUo
cmVzdWx0KTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlIDxib29s
IGNyYXNoT25GYWlsdXJlPgpAQCAtMzg4OCwxOCArMzkwMiwxMyBAQCB2b2lkKiBjYWxsb2Moc2l6
ZV90IG4sIHNpemVfdCBlbGVtX3NpemUpIHsKICAgaWYgKG4gPiAxICYmIGVsZW1fc2l6ZSAmJiAo
dG90YWxCeXRlcyAvIGVsZW1fc2l6ZSkgIT0gbikKICAgICByZXR1cm4gMDsKIAotI2lmIEVOQUJM
RShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQotICAgIGlmIChzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpIC0gc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikgPD0gdG90
YWxCeXRlcykgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgdG90YWxCeXRlcyArPSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsKLSAg
ICB2b2lkKiByZXN1bHQgPSBkb19tYWxsb2ModG90YWxCeXRlcyk7CisjaWYgRU5BQkxFKFdURl9N
QUxMT0NfVkFMSURBVElPTikKKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2M8Y3Jhc2hPbkZhaWx1
cmU+KHRvdGFsQnl0ZXMpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIG1lbXNldChyZXN1bHQsIDAsIHRvdGFsQnl0ZXMpOwotICAgICpzdGF0aWNfY2FzdDxBbGxv
Y0FsaWdubWVudEludGVnZXIqPihyZXN1bHQpID0gSW50ZXJuYWw6OkFsbG9jVHlwZU1hbGxvYzsK
LSAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVudEludGVnZXIqPihyZXN1bHQp
ICsgMTsKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKICNlbHNlCiAgICAgdm9pZCog
cmVzdWx0ID0gZG9fbWFsbG9jKHRvdGFsQnl0ZXMpOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCkg
ewpAQCAtMzkzNCwxMiArMzk0MywyNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIHJlYWxsb2Modm9p
ZCosIHNpemVfdCk7CiAKIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBu
ZXdfc2l6ZSkKIHsKLSAgICByZXR1cm4gcmVhbGxvYzx0cnVlPihvbGRfcHRyLCBuZXdfc2l6ZSk7
CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBmYXN0TWFsbG9jVmFsaWRh
dGUob2xkX3B0cik7CisjZW5kaWYKKyAgICB2b2lkKiByZXN1bHQgPSByZWFsbG9jPHRydWU+KG9s
ZF9wdHIsIG5ld19zaXplKTsKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQorICAg
IGZhc3RNYWxsb2NWYWxpZGF0ZShyZXN1bHQpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogb2xkX3B0ciwg
c2l6ZV90IG5ld19zaXplKQogewotICAgIHJldHVybiByZWFsbG9jPGZhbHNlPihvbGRfcHRyLCBu
ZXdfc2l6ZSk7CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBmYXN0TWFs
bG9jVmFsaWRhdGUob2xkX3B0cik7CisjZW5kaWYKKyAgICB2b2lkKiByZXN1bHQgPSByZWFsbG9j
PGZhbHNlPihvbGRfcHRyLCBuZXdfc2l6ZSk7CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURB
VElPTikKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKKyNlbmRpZgorICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlIDxib29sIGNyYXNoT25GYWlsdXJlPgpAQCAtMzk0Nyw4
ICszOTcwLDggQEAgQUxXQVlTX0lOTElORQogI2VuZGlmCiB2b2lkKiByZWFsbG9jKHZvaWQqIG9s
ZF9wdHIsIHNpemVfdCBuZXdfc2l6ZSkgewogICBpZiAob2xkX3B0ciA9PSBOVUxMKSB7Ci0jaWYg
RU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAgdm9pZCogcmVzdWx0ID0g
bWFsbG9jKG5ld19zaXplKTsKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQorICAg
IHZvaWQqIHJlc3VsdCA9IG1hbGxvYzxjcmFzaE9uRmFpbHVyZT4obmV3X3NpemUpOwogI2Vsc2UK
ICAgICB2b2lkKiByZXN1bHQgPSBkb19tYWxsb2MobmV3X3NpemUpOwogI2lmbmRlZiBXVEZfQ0hB
TkdFUwpAQCAtMzk2NSwxNCArMzk4OCwxNCBAQCB2b2lkKiByZWFsbG9jKHZvaWQqIG9sZF9wdHIs
IHNpemVfdCBuZXdfc2l6ZSkgewogICAgIHJldHVybiBOVUxMOwogICB9CiAKLSNpZiBFTkFCTEUo
RkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKLSAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IG5ld19z
aXplKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIuLi4KKyNpZiBFTkFCTEUoV1RGX01BTExP
Q19WQUxJREFUSU9OKQorICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
IC0gSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplIDw9IG5ld19zaXplKSAgLy8gSWYgb3Zl
cmZsb3cgd291bGQgb2NjdXIuLi4KICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbmV3X3NpemUgKz0g
c2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcik7Ci0gICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
KiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKG9sZF9w
dHIpOwotICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCi0gICAg
ICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQob2xkX3B0cik7CisgICAgSW50ZXJu
YWw6OlZhbGlkYXRpb25IZWFkZXIqIGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRh
dGlvbkhlYWRlcihvbGRfcHRyKTsKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUob2xkX3B0cik7CiAg
ICAgb2xkX3B0ciA9IGhlYWRlcjsKKyAgICBoZWFkZXItPm1fc2l6ZSA9IG5ld19zaXplOworICAg
IG5ld19zaXplICs9IEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZTsKICNlbmRpZgogCiAg
IC8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgb2xkIGVudHJ5CkBAIC00MDExLDEzICs0MDM0LDE1IEBA
IHZvaWQqIHJlYWxsb2Modm9pZCogb2xkX3B0ciwgc2l6ZV90IG5ld19zaXplKSB7CiAgICAgLy8g
dGhhdCB3ZSBhbHJlYWR5IGtub3cgdGhlIHNpemVjbGFzcyBvZiBvbGRfcHRyLiAgVGhlIGJlbmVm
aXQKICAgICAvLyB3b3VsZCBiZSBzbWFsbCwgc28gZG9uJ3QgYm90aGVyLgogICAgIGRvX2ZyZWUo
b2xkX3B0cik7Ci0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAg
bmV3X3B0ciA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KG5ld19wdHIpICsg
MTsKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQorICAgIG5ld19wdHIgPSBzdGF0
aWNfY2FzdDxJbnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlcio+KG5ld19wdHIpICsgMTsKKyAgICAq
SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KG5ld19wdHIpID0gSW50ZXJuYWw6
OlZhbGlkYXRpb25TdWZmaXg7CiAjZW5kaWYKICAgICByZXR1cm4gbmV3X3B0cjsKICAgfSBlbHNl
IHsKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKLSAgICBvbGRfcHRy
ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ob2xkX3B0cikgKyAxOyAvLyBT
ZXQgb2xkX3B0ciBiYWNrIHRvIHRoZSB1c2VyIHBvaW50ZXIuCisjaWYgRU5BQkxFKFdURl9NQUxM
T0NfVkFMSURBVElPTikKKyAgICBvbGRfcHRyID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWw6OlZhbGlk
YXRpb25IZWFkZXIqPihvbGRfcHRyKSArIDE7IC8vIFNldCBvbGRfcHRyIGJhY2sgdG8gdGhlIHVz
ZXIgcG9pbnRlci4KKyAgICAqSW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KG9s
ZF9wdHIpID0gSW50ZXJuYWw6OlZhbGlkYXRpb25TdWZmaXg7CiAjZW5kaWYKICAgICByZXR1cm4g
b2xkX3B0cjsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0
TWFsbG9jLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCA5
NzI5YmMzNmU0ZWQ2NGQ2ODBkZmQ0YjFkZTdlYmI0ZTQyYzY5ODQ1Li4zN2NmMDg2OGVjMGM1NzUy
YmI5NmI3ODAwOWNhN2U3ZmFjZDc1NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RN
YWxsb2MuaApAQCAtMTAzLDkgKzEwMywyNSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAg
IEFsbG9jVHlwZU5ldywgICAgICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9w
ZXJhdG9yIG5ldy4KICAgICAgICAgICAgIEFsbG9jVHlwZU5ld0FycmF5ICAgICAgICAgICAgICAg
Ly8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ld1tdLgogICAgICAgICB9OworCisgICAg
ICAgIGVudW0geworICAgICAgICAgICAgVmFsaWRhdGlvblByZWZpeCA9IDB4ZjAwZGYwMGQsCisg
ICAgICAgICAgICBWYWxpZGF0aW9uU3VmZml4ID0gMHgwYmFkZjAwZAorICAgICAgICB9OworCisg
ICAgICAgIHR5cGVkZWYgdW5zaWduZWQgVmFsaWRhdGlvblRhZzsKKworICAgICAgICBzdHJ1Y3Qg
VmFsaWRhdGlvbkhlYWRlciB7CisgICAgICAgICAgICBBbGxvY1R5cGUgbV90eXBlOworICAgICAg
ICAgICAgdW5zaWduZWQgbV9zaXplOworICAgICAgICAgICAgVmFsaWRhdGlvblRhZyBtX3ByZWZp
eDsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1fYWxpZ25tZW50OworICAgICAgICB9OworCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgVmFsaWRhdGlvbkJ1ZmZlclNpemUgPSBzaXplb2YoVmFsaWRh
dGlvbkhlYWRlcikgKyBzaXplb2YoVmFsaWRhdGlvblRhZyk7CiAgICAgfQogCi0jaWYgRU5BQkxF
KEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFM
SURBVElPTikKIAogICAgIC8vIE1hbGxvYyB2YWxpZGF0aW9uIGlzIGEgc2NoZW1lIHdoZXJlYnkg
YSB0YWcgaXMgYXR0YWNoZWQgdG8gYW4KICAgICAvLyBhbGxvY2F0aW9uIHdoaWNoIGlkZW50aWZp
ZXMgaG93IGl0IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZC4KQEAgLTEyMCwzMCArMTM2LDM2IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgIC8vIGlzIGltcGxlbWVudGVkLgogCiAgICAgbmFtZXNwYWNl
IEludGVybmFsIHsKKyAgICAKKyAgICAgICAgLy8gSGFuZGxlIGEgZGV0ZWN0ZWQgYWxsb2MvZnJl
ZSBtaXNtYXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENSQVNIKCkuCisgICAgICAgIHZvaWQg
ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqIHApOwogCi0gICAgICAgIC8vIFJldHVybiB0aGUg
QWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgotICAg
ICAgICBpbmxpbmUgQWxsb2NUeXBlIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKGNvbnN0
IHZvaWQqIHApCisgICAgICAgIGlubGluZSBWYWxpZGF0aW9uSGVhZGVyKiBmYXN0TWFsbG9jVmFs
aWRhdGlvbkhlYWRlcih2b2lkKiBwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBBbGxv
Y0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2FzdDxjb25zdCBBbGxvY0FsaWdubWVu
dEludGVnZXIqPihwKSAtIDE7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWxsb2NU
eXBlPigqdHlwZSk7CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWYWxpZGF0
aW9uSGVhZGVyKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KHApIC0gc2l6ZW9mKFZhbGlkYXRpb25IZWFk
ZXIpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUg
QWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgotICAg
ICAgICBpbmxpbmUgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
aW9uVmFsdWUodm9pZCogcCkKKyAgICAgICAgaW5saW5lIFZhbGlkYXRpb25UYWcqIGZhc3RNYWxs
b2NWYWxpZGF0aW9uU3VmZml4KHZvaWQqIHApCisgICAgICAgIHsKKyAgICAgICAgICAgIFZhbGlk
YXRpb25IZWFkZXIqIGhlYWRlciA9IGZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKHApOworICAg
ICAgICAgICAgaWYgKGhlYWRlci0+bV9wcmVmaXggIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFZh
bGlkYXRpb25QcmVmaXgpKQorICAgICAgICAgICAgICAgIGZhc3RNYWxsb2NNYXRjaEZhaWxlZChw
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmFs
aWRhdGlvblRhZyo+KHN0YXRpY19jYXN0PGNoYXIqPihwKSArIGhlYWRlci0+bV9zaXplKTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFJldHVybiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVk
IHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgorICAgICAgICBpbmxpbmUgQWxsb2NUeXBlIGZh
c3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHN0YXRp
Y19jYXN0PGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYXN0TWFsbG9jVmFsaWRhdGlvbkhlYWRlcihwKS0+bV90eXBlOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gU2V0IHRoZSBBbGxvY1R5cGUgdGFnIHRvIGJlIGFzc29jaWFn
ZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCiAgICAgICAgIGlubGluZSB2b2lkIHNldEZh
c3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAsIEFsbG9jVHlwZSBhbGxvY1R5cGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciogdHlwZSA9IHN0
YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHApIC0gMTsKLSAgICAgICAgICAgICp0
eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyPihhbGxvY1R5cGUpOworICAg
ICAgICAgICAgZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIocCktPm1fdHlwZSA9IGFsbG9jVHlw
ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEhhbmRsZSBhIGRldGVjdGVkIGFsbG9jL2ZyZWUg
bWlzbWF0Y2guIEJ5IGRlZmF1bHQgdGhpcyBjYWxscyBDUkFTSCgpLgotICAgICAgICB2b2lkIGZh
c3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKiBwKTsKLQogICAgIH0gLy8gbmFtZXNwYWNlIEludGVy
bmFsCiAKICAgICAvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVsIGZ1bmN0aW9uIHdoaWNoIGlzIHVz
ZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgpAQCAtMTU2LDE2ICsxNzgsMzQgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgfQogCiAgICAgLy8gVGhpcyBpcyBhIGhpZ2hlciBsZXZlbCBmdW5jdGlv
biB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcgY29kZS4KLSAgICBpbmxpbmUgdm9p
ZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCogcCwgSW50ZXJuYWw6OkFsbG9jVHlw
ZSBhbGxvY1R5cGUpCisgICAgaW5saW5lIHZvaWQgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVl
KHZvaWQqIHAsIEludGVybmFsOjpBbGxvY1R5cGUpCiAgICAgewogICAgICAgICBpZiAoIXApCiAg
ICAgICAgICAgICByZXR1cm47CisgICAgCisgICAgICAgIEludGVybmFsOjpWYWxpZGF0aW9uSGVh
ZGVyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIocCk7Cisg
ICAgICAgIGlmIChoZWFkZXItPm1fcHJlZml4ICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJbnRl
cm5hbDo6VmFsaWRhdGlvblByZWZpeCkpCisgICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxv
Y01hdGNoRmFpbGVkKHApOwogCi0gICAgICAgIGlmIChJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGlvblR5cGUocCkgIT0gYWxsb2NUeXBlKQorICAgICAgICBpZiAoKkludGVybmFsOjpm
YXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeChwKSAhPSBJbnRlcm5hbDo6VmFsaWRhdGlvblN1ZmZp
eCkKICAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocCk7CisKICAg
ICAgICAgSW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHAsIEludGVy
bmFsOjpBbGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRvIHRoaXMgc28gdGhhdCBmYXN0RnJl
ZSB0aGlua3MgaXQncyBPSy4KICAgICB9CiAKKyAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jVmFs
aWRhdGUodm9pZCogcCkKKyAgICB7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgICAgIEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIg
PSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIocCk7CisgICAgICAgIGlmICho
ZWFkZXItPm1fcHJlZml4ICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJbnRlcm5hbDo6VmFsaWRh
dGlvblByZWZpeCkpCisgICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVk
KHApOworICAgICAgICAKKyAgICAgICAgaWYgKCpJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRp
b25TdWZmaXgocCkgIT0gSW50ZXJuYWw6OlZhbGlkYXRpb25TdWZmaXgpCisgICAgICAgICAgICBJ
bnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgIH0KKwogI2Vsc2UKIAogICAg
IGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHZvaWQqLCBJbnRlcm5h
bDo6QWxsb2NUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGU0MGIx
YTZkZjM5MzUyMzU1YmFkNWMxNjk4OWY2YTRhMGFlYjkxZWEuLmQxZmUxMTkzNDAwYWU4MTdiY2Ez
N2ZmYjU0ZWZlODc5YTc3NWQ3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
QEAgLTg3NSw4ICs4NzUsMTIgQEAKIAogLyogZmFzdE1hbGxvYyBtYXRjaCB2YWxpZGF0aW9uIGFs
bG93cyBmb3IgcnVudGltZSB2ZXJpZmljYXRpb24gdGhhdAogICAgbmV3IGlzIG1hdGNoZWQgYnkg
ZGVsZXRlLCBmYXN0TWFsbG9jIGlzIG1hdGNoZWQgYnkgZmFzdEZyZWUsIGV0Yy4gKi8KLSNpZiAh
ZGVmaW5lZChFTkFCTEVfRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKLSNkZWZpbmUgRU5B
QkxFX0ZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04gMAorI2lmICFkZWZpbmVkKEVOQUJMRV9X
VEZfTUFMTE9DX1ZBTElEQVRJT04pCisjaWZuZGVmIE5ERUJVRworI2RlZmluZSBFTkFCTEVfV1RG
X01BTExPQ19WQUxJREFUSU9OIDEKKyNlbHNlCisjZGVmaW5lIEVOQUJMRV9XVEZfTUFMTE9DX1ZB
TElEQVRJT04gMAorI2VuZGlmCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9JQ09OREFU
QUJBU0UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88103</attachid>
            <date>2011-04-04 12:49:26 -0700</date>
            <delta_ts>2011-06-18 11:41:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57502-20110404124925.patch</filename>
            <type>text/plain</type>
            <size>23854</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4NTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVi
ZTE0MmY1NGVmMGM4MWQ5ZmI4ZmViMDdlYjA2ZDQ2OGI3OWU0Y2YuLjMxNmNlODcwYTliYjdmODc5
NzljM2M3NWE3OTQ1ZWY1Nzc2NDcxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDExLTA0LTA0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBtYWxs
b2MgdmFsaWRhdGlvbiB1c2VmdWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3NTAyCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04gd2l0aCBhIGdlbmVyYWwKKyAgICAgICAgY29ycnVwdGlvbiBj
aGVjayB0aGF0IHRhZ3MgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGFsbCBhbGxvY2F0aW9ucwor
ICAgICAgICB0byBjaGVjayBmb3Igd3JpdGUgb3ZlcmZsb3dzIGFuZCBvdmVyd3JpdGVzIHRoZSBj
b250ZW50cyBvZgorICAgICAgICBtZW1vcnkgb24gZnJlZSBpbiBvcmRlciB0byAoaG9wZWZ1bGx5
KSBzaG93IHVwIHVzZS1hZnRlci1mcmVlIGlzc3VlcworICAgICAgICBzb29uZXIuCisKKyAgICAg
ICAgV2UgYWxzbyB0dXJuIGl0IG9uIGJ5IGRlZmF1bHQgZm9yIGRlYnVnIGJ1aWxkcy4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5jcHA6
CisgICAgICAgIChXVEY6OnRyeUZhc3RNYWxsb2MpOgorICAgICAgICAoV1RGOjpmYXN0TWFsbG9j
KToKKyAgICAgICAgKFdURjo6dHJ5RmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OmZhc3RDYWxs
b2MpOgorICAgICAgICAoV1RGOjpmYXN0RnJlZSk6CisgICAgICAgIChXVEY6OnRyeUZhc3RSZWFs
bG9jKToKKyAgICAgICAgKFdURjo6ZmFzdFJlYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6aXNTY2F2ZW5nZXJTdXNwZW5kZWQpOgorICAgICAgICAoV1RGOjpUQ01hbGxv
Y19QYWdlSGVhcDo6c2NoZWR1bGVTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY19Q
YWdlSGVhcDo6c3VzcGVuZFNjYXZlbmdlcik6CisgICAgICAgIChXVEY6OlRDTWFsbG9jX1BhZ2VI
ZWFwOjpzaWduYWxTY2F2ZW5nZXIpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjptYWxs
b2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmcmVlKToKKyAgICAgICAgKFdURjo6
VENNYWxsb2NTdGF0czo6ZmFzdENhbGxvYyk6CisgICAgICAgIChXVEY6OlRDTWFsbG9jU3RhdHM6
OnRyeUZhc3RDYWxsb2MpOgorICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpjYWxsb2MpOgor
ICAgICAgICAoV1RGOjpUQ01hbGxvY1N0YXRzOjpmYXN0UmVhbGxvYyk6CisgICAgICAgIChXVEY6
OlRDTWFsbG9jU3RhdHM6OnRyeUZhc3RSZWFsbG9jKToKKyAgICAgICAgKFdURjo6VENNYWxsb2NT
dGF0czo6cmVhbGxvYyk6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKFdU
Rjo6SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKToKKyAgICAgICAgKFdURjo6
SW50ZXJuYWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6SW50
ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKToKKyAgICAgICAgKFdURjo6
ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVlKToKKyAgICAgICAgKFdURjo6ZmFzdE1hbGxvY1Zh
bGlkYXRlKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMS0wNC0wMSAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYjll
NTM1NDljZGY4OTRjMjAxYWI2YWVlZWZjOTkxYTdkOWRlODY3ZS4uZTYxZTgzMGVlMjgwZWZhMTg0
ZmM1YTNlMmU5YTk0ZWYyZWE3NzQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCkBAIC00OTIsNiArNDkyLDcgQEAgX19aTjNXVEY3eG1sQXRvbUUKIF9fWk4zV1RG
OENvbGxhdG9yMThzZXRPcmRlckxvd2VyRmlyc3RFYgogX19aTjNXVEY4Q29sbGF0b3JDMUVQS2MK
IF9fWk4zV1RGOENvbGxhdG9yRDFFdgorX19aTjNXVEY4SW50ZXJuYWwyMWZhc3RNYWxsb2NNYXRj
aEZhaWxlZEVQdgogX19aTjNXVEY4ZmFzdEZyZWVFUHYKIF9fWk4zV1RGOG1zVG9ZZWFyRWQKIF9f
Wk4zV1RGOG51bGxBdG9tRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmRlZgppbmRleCA1YzRjMzc0YWQ0YzBkNDhkY2RiNDUzMTZlZGFmY2FhYjZh
YjY4MjEyLi4xM2UyM2JlYzE2ZWI1Y2M4OTc1NjBlZDRlMmQyOGFhZWY4MGYwNWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAt
MTYxLDYgKzE2MSw3IEBAIEVYUE9SVFMKICAgICA/ZmFzdENhbGxvY0BXVEZAQFlBUEFYSUlAWgog
ICAgID9mYXN0RnJlZUBXVEZAQFlBWFBBWEBaCiAgICAgP2Zhc3RNYWxsb2NAV1RGQEBZQVBBWElA
WgorICAgID9mYXN0TWFsbG9jTWF0Y2hGYWlsZWRASW50ZXJuYWxAV1RGQEBZQVhQQVhAWgogICAg
ID9mYXN0TWFsbG9jU2l6ZUBXVEZAQFlBSVBCWEBaCiAgICAgP2Zhc3RSZWFsbG9jQFdURkBAWUFQ
QVhQQVhJQFoKICAgICA/ZmFzdFN0ckR1cEBXVEZAQFlBUEFEUEJEQFoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IDI5ZTlhMWFhZDQ3YmRjNWExNjNhMjIyNzBl
OGViNGQxMWIyYzc0OGQuLjZiMjg1M2E5OTEwOWI3ZjNhMmNhNmZjMGQ3ZjVkYzQyMzMwYTk2Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcApAQCAtMTYxLDEwICsx
NjEsMTMgQEAgdm9pZCBmYXN0TWFsbG9jQWxsb3coKQogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lm
IEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQogCiBuYW1lc3BhY2UgSW50ZXJu
YWwgewotCisjaWYgIUVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCit2b2lkIGZhc3RNYWxs
b2NNYXRjaEZhaWxlZCh2b2lkKik7CisjZWxzZQorQ09NUElMRV9BU1NFUlQoKChzaXplb2YoVmFs
aWRhdGlvbkhlYWRlcikgJSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSkgPT0gMCksIFZh
bGlkYXRpb25IZWFkZXJfbXVzdF9wcm9kdWNlX2NvcnJlY3RfYWxpZ25tZW50KTsKKyNlbmRpZgog
dm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCopCiB7CiAgICAgQ1JBU0goKTsKQEAgLTE3
Miw3ICsxNzUsNiBAQCB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKikKIAogfSAvLyBu
YW1lc3BhY2UgSW50ZXJuYWwKIAotI2VuZGlmCiAKIHZvaWQqIGZhc3RaZXJvZWRNYWxsb2Moc2l6
ZV90IG4pIAogewpAQCAtMjIxLDE3ICsyMjMsMjAgQEAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5
RmFzdE1hbGxvYyhzaXplX3QgbikKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOwogCi0j
aWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAgaWYgKHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2Vy
KSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIuLi4KKyNpZiBFTkFCTEUoV1RGX01B
TExPQ19WQUxJREFUSU9OKQorICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpIC0gSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplIDw9IG4pICAvLyBJZiBvdmVyZmxv
dyB3b3VsZCBvY2N1ci4uLgogICAgICAgICByZXR1cm4gMDsKIAotICAgIHZvaWQqIHJlc3VsdCA9
IG1hbGxvYyhuICsgc2l6ZW9mKEFsbG9jQWxpZ25tZW50SW50ZWdlcikpOworICAgIHZvaWQqIHJl
c3VsdCA9IG1hbGxvYyhuICsgSW50ZXJuYWw6OlZhbGlkYXRpb25CdWZmZXJTaXplKTsKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAqc3RhdGljX2Nhc3Q8QWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0g
ICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSAr
IDE7Ci0KKyAgICBJbnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlciogaGVhZGVyID0gc3RhdGljX2Nh
c3Q8SW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIqPihyZXN1bHQpOworICAgIGhlYWRlci0+bV9z
aXplID0gbjsKKyAgICBoZWFkZXItPm1fdHlwZSA9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2M7
CisgICAgaGVhZGVyLT5tX3ByZWZpeCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJbnRlcm5hbDo6
VmFsaWRhdGlvblByZWZpeCk7CisgICAgcmVzdWx0ID0gaGVhZGVyICsgMTsKKyAgICAqSW50ZXJu
YWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KHJlc3VsdCkgPSBJbnRlcm5hbDo6VmFsaWRh
dGlvblN1ZmZpeDsKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogI2Vsc2UKICAgICByZXR1cm4gbWFsbG9jKG4pOwpAQCAtMjQyLDcgKzI0Nyw3IEBA
IHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90IG4pCiB7CiAgICAgQVNTRVJUKCFpc0ZvcmJpZGRlbigp
KTsKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJM
RShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgcmV0dXJu
VmFsdWUgPSB0cnlGYXN0TWFsbG9jKG4pOwogICAgIHZvaWQqIHJlc3VsdDsKICAgICByZXR1cm5W
YWx1ZS5nZXRWYWx1ZShyZXN1bHQpOwpAQCAtMjY3LDE5ICsyNzIsMTcgQEAgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRf
c2l6ZSkKIHsKICAgICBBU1NFUlQoIWlzRm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1Rf
TUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElP
TikKICAgICBzaXplX3QgdG90YWxCeXRlcyA9IG5fZWxlbWVudHMgKiBlbGVtZW50X3NpemU7Ci0g
ICAgaWYgKG5fZWxlbWVudHMgPiAxICYmIGVsZW1lbnRfc2l6ZSAmJiAodG90YWxCeXRlcyAvIGVs
ZW1lbnRfc2l6ZSkgIT0gbl9lbGVtZW50cyB8fCAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAtIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIDw9IHRvdGFsQnl0ZXMpKQor
ICAgIGlmIChuX2VsZW1lbnRzID4gMSAmJiBlbGVtZW50X3NpemUgJiYgKHRvdGFsQnl0ZXMgLyBl
bGVtZW50X3NpemUpICE9IG5fZWxlbWVudHMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdG90
YWxCeXRlcyArPSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKTsKLSAgICB2b2lkKiByZXN1
bHQgPSBtYWxsb2ModG90YWxCeXRlcyk7Ci0gICAgaWYgKCFyZXN1bHQpCisgICAgVHJ5TWFsbG9j
UmV0dXJuVmFsdWUgcmV0dXJuVmFsdWUgPSB0cnlGYXN0TWFsbG9jKHRvdGFsQnl0ZXMpOworICAg
IHZvaWQqIHJlc3VsdDsKKyAgICBpZiAoIXJldHVyblZhbHVlLmdldFZhbHVlKHJlc3VsdCkpCiAg
ICAgICAgIHJldHVybiAwOwotCiAgICAgbWVtc2V0KHJlc3VsdCwgMCwgdG90YWxCeXRlcyk7Ci0g
ICAgKnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5h
bDo6QWxsb2NUeXBlTWFsbG9jOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25t
ZW50SW50ZWdlcio+KHJlc3VsdCkgKyAxOworICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShyZXN1bHQp
OwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIHJldHVybiBjYWxsb2Mobl9lbGVtZW50
cywgZWxlbWVudF9zaXplKTsKQEAgLTI5MCw3ICsyOTMsNyBAQCB2b2lkKiBmYXN0Q2FsbG9jKHNp
emVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKQogewogICAgIEFTU0VSVCghaXNG
b3JiaWRkZW4oKSk7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikK
KyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQogICAgIFRyeU1hbGxvY1JldHVyblZh
bHVlIHJldHVyblZhbHVlID0gdHJ5RmFzdENhbGxvYyhuX2VsZW1lbnRzLCBlbGVtZW50X3NpemUp
OwogICAgIHZvaWQqIHJlc3VsdDsKICAgICByZXR1cm5WYWx1ZS5nZXRWYWx1ZShyZXN1bHQpOwpA
QCAtMzE1LDEzICszMTgsMTMgQEAgdm9pZCBmYXN0RnJlZSh2b2lkKiBwKQogewogICAgIEFTU0VS
VCghaXNGb3JiaWRkZW4oKSk7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURB
VElPTikKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9OKQogICAgIGlmICghcCkKICAg
ICAgICAgcmV0dXJuOwotCi0gICAgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBoZWFkZXIgPSBJbnRl
cm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblZhbHVlKHApOwotICAgIGlmICgqaGVhZGVy
ICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCi0gICAgICAgIEludGVybmFsOjpmYXN0TWFs
bG9jTWF0Y2hGYWlsZWQocCk7CisgICAgCisgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVGcmVl
KHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpOworICAgIEludGVybmFsOjpWYWxpZGF0aW9u
SGVhZGVyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIocCk7
CisgICAgbWVtc2V0KHAsIDB4Q0MsIGhlYWRlci0+bV9zaXplKTsKICAgICBmcmVlKGhlYWRlcik7
CiAjZWxzZQogICAgIGZyZWUocCk7CkBAIC0zMzIsMjAgKzMzNSwxOCBAQCBUcnlNYWxsb2NSZXR1
cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikKIHsKICAgICBBU1NFUlQo
IWlzRm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJ
T04pCisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKICAgICBpZiAocCkgewotICAg
ICAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIHNpemVvZihBbGxv
Y0FsaWdubWVudEludGVnZXIpIDw9IG4pICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1ci4uLgor
ICAgICAgICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIEludGVybmFs
OjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSA8PSBuKSAgLy8gSWYgb3ZlcmZsb3cgd291bGQgb2NjdXIu
Li4KICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBBbGxvY0FsaWdubWVudEludGVnZXIq
IGhlYWRlciA9IEludGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUocCk7Ci0g
ICAgICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCi0gICAgICAg
ICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOwotICAgICAgICB2b2lkKiBy
ZXN1bHQgPSByZWFsbG9jKGhlYWRlciwgbiArIHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIp
KTsKKyAgICAgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHApOworICAgICAgICBJbnRlcm5hbDo6VmFs
aWRhdGlvbkhlYWRlciogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWw6OlZhbGlkYXRpb25I
ZWFkZXIqPihyZWFsbG9jKEludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvbkhlYWRlcihwKSwg
biArIEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSkpOwogICAgICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBi
ZSBuZWVkZWQgYmVjYXVzZSB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZToKLSAgICAgICAgLy8g
KnN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6
QWxsb2NUeXBlTWFsbG9jOwotICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdu
bWVudEludGVnZXIqPihyZXN1bHQpICsgMTsKKyAgICAgICAgcmVzdWx0LT5tX3NpemUgPSBuOwor
ICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAxOworICAgICAgICAqZmFzdE1hbGxvY1ZhbGlkYXRp
b25TdWZmaXgocmVzdWx0KSA9IEludGVybmFsOjpWYWxpZGF0aW9uU3VmZml4OworICAgICAgICBm
YXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
IGVsc2UgewogICAgICAgICByZXR1cm4gZmFzdE1hbGxvYyhuKTsKQEAgLTM1OSw3ICszNjAsNyBA
QCB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3QgbikKIHsKICAgICBBU1NFUlQoIWlz
Rm9yYmlkZGVuKCkpOwogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04p
CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKICAgICBUcnlNYWxsb2NSZXR1cm5W
YWx1ZSByZXR1cm5WYWx1ZSA9IHRyeUZhc3RSZWFsbG9jKHAsIG4pOwogICAgIHZvaWQqIHJlc3Vs
dDsKICAgICByZXR1cm5WYWx1ZS5nZXRWYWx1ZShyZXN1bHQpOwpAQCAtMzgyLDcgKzM4Myw5IEBA
IEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkKIAogc2l6ZV90IGZh
c3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqIHApCiB7Ci0jaWYgT1MoREFSV0lOKQorI2lmIEVOQUJM
RShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgcmV0dXJuIEludGVybmFsOjpmYXN0TWFsbG9j
VmFsaWRhdGlvbkhlYWRlcihjb25zdF9jYXN0PHZvaWQqPihwKSktPm1fc2l6ZTsKKyNlbGlmIE9T
KERBUldJTikKICAgICByZXR1cm4gbWFsbG9jX3NpemUocCk7CiAjZWxpZiBPUyhXSU5ET1dTKSAm
JiAhUExBVEZPUk0oQlJFV01QKQogICAgIC8vIEJyZXcgTVAgdXNlcyBpdHMgb3duIG1lbW9yeSBh
bGxvY2F0b3IsIHNvIF9tc2l6ZSBkb2VzIG5vdCB3b3JrIG9uIHRoZSBCcmV3IE1QIHNpbXVsYXRv
ci4KQEAgLTEzMDAsNiArMTMwMyw4IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga01pbmltdW1GcmVl
Q29tbWl0dGVkUGFnZUNvdW50ID0ga01pblNwYW5MaXN0c1dpdGhTcGFucyAqICgoCiAKICNlbmRp
ZgogCitzdGF0aWMgU3BpbkxvY2sgcGFnZWhlYXBfbG9jayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVS
OworCiBjbGFzcyBUQ01hbGxvY19QYWdlSGVhcCB7CiAgcHVibGljOgogICB2b2lkIGluaXQoKTsK
QEAgLTE1MjYsMTMgKzE1MzEsMTMgQEAgdm9pZCBUQ01hbGxvY19QYWdlSGVhcDo6aW5pdGlhbGl6
ZVNjYXZlbmdlcigpCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBUQ01hbGxvY19QYWdlSGVhcDo6aXNT
Y2F2ZW5nZXJTdXNwZW5kZWQoKQogewotICAgIEFTU0VSVChJc0hlbGQocGFnZWhlYXBfbG9jaykp
OworICAgIEFTU0VSVChwYWdlaGVhcF9sb2NrLklzSGVsZCgpKTsKICAgICByZXR1cm4gbV9zY2F2
ZW5naW5nU3VzcGVuZGVkOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgVENNYWxsb2NfUGFnZUhl
YXA6OnNjaGVkdWxlU2NhdmVuZ2VyKCkKIHsKLSAgICBBU1NFUlQoSXNIZWxkKHBhZ2VoZWFwX2xv
Y2spKTsKKyAgICBBU1NFUlQocGFnZWhlYXBfbG9jay5Jc0hlbGQoKSk7CiAgICAgbV9zY2F2ZW5n
aW5nU3VzcGVuZGVkID0gZmFsc2U7CiAgICAgZGlzcGF0Y2hfcmVzdW1lKG1fc2NhdmVuZ2VUaW1l
cik7CiB9CkBAIC0xNTQ0LDcgKzE1NDksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVENNYWxsb2Nf
UGFnZUhlYXA6OnJlc2NoZWR1bGVTY2F2ZW5nZXIoKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgVENN
YWxsb2NfUGFnZUhlYXA6OnN1c3BlbmRTY2F2ZW5nZXIoKQogewotICAgIEFTU0VSVChJc0hlbGQo
cGFnZWhlYXBfbG9jaykpOworICAgIEFTU0VSVChwYWdlaGVhcF9sb2NrLklzSGVsZCgpKTsKICAg
ICBtX3NjYXZlbmdpbmdTdXNwZW5kZWQgPSB0cnVlOwogICAgIGRpc3BhdGNoX3N1c3BlbmQobV9z
Y2F2ZW5nZVRpbWVyKTsKIH0KQEAgLTI0MzcsNyArMjQ0Miw2IEBAIGNsYXNzIFRDTWFsbG9jX0Nl
bnRyYWxfRnJlZUxpc3RQYWRkZWQgOiBwdWJsaWMgVENNYWxsb2NfQ2VudHJhbF9GcmVlTGlzdCB7
CiBzdGF0aWMgVENNYWxsb2NfQ2VudHJhbF9GcmVlTGlzdFBhZGRlZCBjZW50cmFsX2NhY2hlW2tO
dW1DbGFzc2VzXTsKIAogLy8gUGFnZS1sZXZlbCBhbGxvY2F0b3IKLXN0YXRpYyBTcGluTG9jayBw
YWdlaGVhcF9sb2NrID0gU1BJTkxPQ0tfSU5JVElBTElaRVI7CiBzdGF0aWMgQWxsb2NBbGlnbm1l
bnRJbnRlZ2VyIHBhZ2VoZWFwX21lbW9yeVsoc2l6ZW9mKFRDTWFsbG9jX1BhZ2VIZWFwKSArIHNp
emVvZihBbGxvY0FsaWdubWVudEludGVnZXIpIC0gMSkgLyBzaXplb2YoQWxsb2NBbGlnbm1lbnRJ
bnRlZ2VyKV07CiBzdGF0aWMgYm9vbCBwaGluaXRlZCA9IGZhbHNlOwogCkBAIC0yNDc1LDcgKzI0
NzksNyBAQCB2b2lkIFRDTWFsbG9jX1BhZ2VIZWFwOjpwZXJpb2RpY1NjYXZlbmdlKCkKIAogQUxX
QVlTX0lOTElORSB2b2lkIFRDTWFsbG9jX1BhZ2VIZWFwOjpzaWduYWxTY2F2ZW5nZXIoKQogewot
ICAgIEFTU0VSVChJc0hlbGQocGFnZWhlYXBfbG9jaykpOworICAgIEFTU0VSVChwYWdlaGVhcF9s
b2NrLklzSGVsZCgpKTsKICAgICBpZiAoaXNTY2F2ZW5nZXJTdXNwZW5kZWQoKSAmJiBzaG91bGRT
Y2F2ZW5nZSgpKQogICAgICAgICBzY2hlZHVsZVNjYXZlbmdlcigpOwogfQpAQCAtMzgyMSwxNiAr
MzgyNSwyMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjcmFzaE9uRmFpbHVyZT4KIEFMV0FZU19JTkxJTkUK
ICNlbmRpZgogdm9pZCogbWFsbG9jKHNpemVfdCBzaXplKSB7Ci0jaWYgRU5BQkxFKEZBU1RfTUFM
TE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSA8PSBzaXplKSAgLy8gSWYg
b3ZlcmZsb3cgd291bGQgb2NjdXIuLi4KKyNpZiBFTkFCTEUoV1RGX01BTExPQ19WQUxJREFUSU9O
KQorICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0gSW50ZXJuYWw6
OlZhbGlkYXRpb25CdWZmZXJTaXplIDw9IHNpemUpICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1
ci4uLgogICAgICAgICByZXR1cm4gMDsKLSAgICBzaXplICs9IHNpemVvZihBbGxvY0FsaWdubWVu
dEludGVnZXIpOwotICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyhzaXplKTsKKyAgICB2b2lk
KiByZXN1bHQgPSBkb19tYWxsb2Moc2l6ZSArIEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6
ZSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgKnN0YXRpY19j
YXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHJlc3VsdCkgPSBJbnRlcm5hbDo6QWxsb2NUeXBl
TWFsbG9jOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+
KHJlc3VsdCkgKyAxOworICAgIEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBz
dGF0aWNfY2FzdDxJbnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlcio+KHJlc3VsdCk7CisgICAgaGVh
ZGVyLT5tX3NpemUgPSBzaXplOworICAgIGhlYWRlci0+bV90eXBlID0gSW50ZXJuYWw6OkFsbG9j
VHlwZU1hbGxvYzsKKyAgICBoZWFkZXItPm1fcHJlZml4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEludGVybmFsOjpWYWxpZGF0aW9uUHJlZml4KTsKKyAgICByZXN1bHQgPSBoZWFkZXIgKyAxOwor
ICAgICpJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25TdWZmaXgocmVzdWx0KSA9IEludGVy
bmFsOjpWYWxpZGF0aW9uU3VmZml4OworICAgIGZhc3RNYWxsb2NWYWxpZGF0ZShyZXN1bHQpOwog
I2Vsc2UKICAgICB2b2lkKiByZXN1bHQgPSBkb19tYWxsb2Moc2l6ZSk7CiAjZW5kaWYKQEAgLTM4
NDksMTMgKzM4NTcsMTMgQEAgdm9pZCBmcmVlKHZvaWQqIHB0cikgewogICBNYWxsb2NIb29rOjpJ
bnZva2VEZWxldGVIb29rKHB0cik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShGQVNUX01BTExPQ19N
QVRDSF9WQUxJREFUSU9OKQorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCiAgICAg
aWYgKCFwdHIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFsbG9jQWxpZ25tZW50SW50ZWdlciog
aGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25WYWx1ZShwdHIpOwot
ICAgIGlmICgqaGVhZGVyICE9IEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpCi0gICAgICAgIElu
dGVybmFsOjpmYXN0TWFsbG9jTWF0Y2hGYWlsZWQocHRyKTsKKyAgICBmYXN0TWFsbG9jVmFsaWRh
dGUocHRyKTsKKyAgICBJbnRlcm5hbDo6VmFsaWRhdGlvbkhlYWRlciogaGVhZGVyID0gSW50ZXJu
YWw6OmZhc3RNYWxsb2NWYWxpZGF0aW9uSGVhZGVyKHB0cik7CisgICAgbWVtc2V0KHB0ciwgMHhD
QywgaGVhZGVyLT5tX3NpemUpOwogICAgIGRvX2ZyZWUoaGVhZGVyKTsKICNlbHNlCiAgICAgZG9f
ZnJlZShwdHIpOwpAQCAtMzg3MCwxMiArMzg3OCwyMCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIGNh
bGxvYyhzaXplX3QsIHNpemVfdCk7CiAKIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG4sIHNpemVf
dCBlbGVtX3NpemUpCiB7Ci0gICAgcmV0dXJuIGNhbGxvYzx0cnVlPihuLCBlbGVtX3NpemUpOwor
ICAgIHZvaWQqIHJlc3VsdCA9IGNhbGxvYzx0cnVlPihuLCBlbGVtX3NpemUpOworI2lmIEVOQUJM
RShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0
cnlGYXN0Q2FsbG9jKHNpemVfdCBuLCBzaXplX3QgZWxlbV9zaXplKQogewotICAgIHJldHVybiBj
YWxsb2M8ZmFsc2U+KG4sIGVsZW1fc2l6ZSk7CisgICAgdm9pZCogcmVzdWx0ID0gY2FsbG9jPGZh
bHNlPihuLCBlbGVtX3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisg
ICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3VsdCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBjcmFzaE9uRmFpbHVyZT4KQEAgLTM4ODgsMTggKzM5MDQs
MTMgQEAgdm9pZCogY2FsbG9jKHNpemVfdCBuLCBzaXplX3QgZWxlbV9zaXplKSB7CiAgIGlmIChu
ID4gMSAmJiBlbGVtX3NpemUgJiYgKHRvdGFsQnl0ZXMgLyBlbGVtX3NpemUpICE9IG4pCiAgICAg
cmV0dXJuIDA7CiAKLSNpZiBFTkFCTEUoRkFTVF9NQUxMT0NfTUFUQ0hfVkFMSURBVElPTikKLSAg
ICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIHNpemVvZihBbGxvY0Fs
aWdubWVudEludGVnZXIpIDw9IHRvdGFsQnl0ZXMpICAvLyBJZiBvdmVyZmxvdyB3b3VsZCBvY2N1
ci4uLgotICAgICAgICByZXR1cm4gMDsKLQotICAgIHRvdGFsQnl0ZXMgKz0gc2l6ZW9mKEFsbG9j
QWxpZ25tZW50SW50ZWdlcik7Ci0gICAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKHRvdGFsQnl0
ZXMpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgdm9pZCogcmVzdWx0
ID0gbWFsbG9jPGNyYXNoT25GYWlsdXJlPih0b3RhbEJ5dGVzKTsKICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtZW1zZXQocmVzdWx0LCAwLCB0b3RhbEJ5dGVzKTsK
LSAgICAqc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSA9IEludGVy
bmFsOjpBbGxvY1R5cGVNYWxsb2M7Ci0gICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGln
bm1lbnRJbnRlZ2VyKj4ocmVzdWx0KSArIDE7CisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3Vs
dCk7CiAjZWxzZQogICAgIHZvaWQqIHJlc3VsdCA9IGRvX21hbGxvYyh0b3RhbEJ5dGVzKTsKICAg
ICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKQEAgLTM5MzQsMTIgKzM5NDUsMjYgQEAgQUxXQVlTX0lO
TElORSB2b2lkKiByZWFsbG9jKHZvaWQqLCBzaXplX3QpOwogCiB2b2lkKiBmYXN0UmVhbGxvYyh2
b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7Ci0gICAgcmV0dXJuIHJlYWxsb2M8dHJ1
ZT4ob2xkX3B0ciwgbmV3X3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04p
CisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKG9sZF9wdHIpOworI2VuZGlmCisgICAgdm9pZCogcmVz
dWx0ID0gcmVhbGxvYzx0cnVlPihvbGRfcHRyLCBuZXdfc2l6ZSk7CisjaWYgRU5BQkxFKFdURl9N
QUxMT0NfVkFMSURBVElPTikKKyAgICBmYXN0TWFsbG9jVmFsaWRhdGUocmVzdWx0KTsKKyNlbmRp
ZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RS
ZWFsbG9jKHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKLSAgICByZXR1cm4gcmVh
bGxvYzxmYWxzZT4ob2xkX3B0ciwgbmV3X3NpemUpOworI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZB
TElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKG9sZF9wdHIpOworI2VuZGlmCisgICAg
dm9pZCogcmVzdWx0ID0gcmVhbGxvYzxmYWxzZT4ob2xkX3B0ciwgbmV3X3NpemUpOworI2lmIEVO
QUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgZmFzdE1hbGxvY1ZhbGlkYXRlKHJlc3Vs
dCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBjcmFz
aE9uRmFpbHVyZT4KQEAgLTM5NDcsOCArMzk3Miw4IEBAIEFMV0FZU19JTkxJTkUKICNlbmRpZgog
dm9pZCogcmVhbGxvYyh2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpIHsKICAgaWYgKG9s
ZF9wdHIgPT0gTlVMTCkgewotI2lmIEVOQUJMRShGQVNUX01BTExPQ19NQVRDSF9WQUxJREFUSU9O
KQotICAgIHZvaWQqIHJlc3VsdCA9IG1hbGxvYyhuZXdfc2l6ZSk7CisjaWYgRU5BQkxFKFdURl9N
QUxMT0NfVkFMSURBVElPTikKKyAgICB2b2lkKiByZXN1bHQgPSBtYWxsb2M8Y3Jhc2hPbkZhaWx1
cmU+KG5ld19zaXplKTsKICNlbHNlCiAgICAgdm9pZCogcmVzdWx0ID0gZG9fbWFsbG9jKG5ld19z
aXplKTsKICNpZm5kZWYgV1RGX0NIQU5HRVMKQEAgLTM5NjUsMTQgKzM5OTAsMTQgQEAgdm9pZCog
cmVhbGxvYyh2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpIHsKICAgICByZXR1cm4gTlVM
TDsKICAgfQogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCi0gICAg
aWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBzaXplb2YoQWxsb2NBbGln
bm1lbnRJbnRlZ2VyKSA8PSBuZXdfc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4u
CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKKyAgICBpZiAoc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIEludGVybmFsOjpWYWxpZGF0aW9uQnVmZmVyU2l6ZSA8
PSBuZXdfc2l6ZSkgIC8vIElmIG92ZXJmbG93IHdvdWxkIG9jY3VyLi4uCiAgICAgICAgIHJldHVy
biAwOwotICAgIG5ld19zaXplICs9IHNpemVvZihBbGxvY0FsaWdubWVudEludGVnZXIpOwotICAg
IEFsbG9jQWxpZ25tZW50SW50ZWdlciogaGVhZGVyID0gSW50ZXJuYWw6OmZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRpb25WYWx1ZShvbGRfcHRyKTsKLSAgICBpZiAoKmhlYWRlciAhPSBJbnRlcm5hbDo6
QWxsb2NUeXBlTWFsbG9jKQotICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVk
KG9sZF9wdHIpOworICAgIEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBJbnRl
cm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIob2xkX3B0cik7CisgICAgZmFzdE1hbGxv
Y1ZhbGlkYXRlKG9sZF9wdHIpOwogICAgIG9sZF9wdHIgPSBoZWFkZXI7CisgICAgaGVhZGVyLT5t
X3NpemUgPSBuZXdfc2l6ZTsKKyAgICBuZXdfc2l6ZSArPSBJbnRlcm5hbDo6VmFsaWRhdGlvbkJ1
ZmZlclNpemU7CiAjZW5kaWYKIAogICAvLyBHZXQgdGhlIHNpemUgb2YgdGhlIG9sZCBlbnRyeQpA
QCAtNDAxMSwxMyArNDAzNiwxNSBAQCB2b2lkKiByZWFsbG9jKHZvaWQqIG9sZF9wdHIsIHNpemVf
dCBuZXdfc2l6ZSkgewogICAgIC8vIHRoYXQgd2UgYWxyZWFkeSBrbm93IHRoZSBzaXplY2xhc3Mg
b2Ygb2xkX3B0ci4gIFRoZSBiZW5lZml0CiAgICAgLy8gd291bGQgYmUgc21hbGwsIHNvIGRvbid0
IGJvdGhlci4KICAgICBkb19mcmVlKG9sZF9wdHIpOwotI2lmIEVOQUJMRShGQVNUX01BTExPQ19N
QVRDSF9WQUxJREFUSU9OKQotICAgIG5ld19wdHIgPSBzdGF0aWNfY2FzdDxBbGxvY0FsaWdubWVu
dEludGVnZXIqPihuZXdfcHRyKSArIDE7CisjaWYgRU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElP
TikKKyAgICBuZXdfcHRyID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWw6OlZhbGlkYXRpb25IZWFkZXIq
PihuZXdfcHRyKSArIDE7CisgICAgKkludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZp
eChuZXdfcHRyKSA9IEludGVybmFsOjpWYWxpZGF0aW9uU3VmZml4OwogI2VuZGlmCiAgICAgcmV0
dXJuIG5ld19wdHI7CiAgIH0gZWxzZSB7Ci0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZB
TElEQVRJT04pCi0gICAgb2xkX3B0ciA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdl
cio+KG9sZF9wdHIpICsgMTsgLy8gU2V0IG9sZF9wdHIgYmFjayB0byB0aGUgdXNlciBwb2ludGVy
LgorI2lmIEVOQUJMRShXVEZfTUFMTE9DX1ZBTElEQVRJT04pCisgICAgb2xkX3B0ciA9IHN0YXRp
Y19jYXN0PEludGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKj4ob2xkX3B0cikgKyAxOyAvLyBTZXQg
b2xkX3B0ciBiYWNrIHRvIHRoZSB1c2VyIHBvaW50ZXIuCisgICAgKkludGVybmFsOjpmYXN0TWFs
bG9jVmFsaWRhdGlvblN1ZmZpeChvbGRfcHRyKSA9IEludGVybmFsOjpWYWxpZGF0aW9uU3VmZml4
OwogI2VuZGlmCiAgICAgcmV0dXJuIG9sZF9wdHI7CiAgIH0KQEAgLTQyNzgsNiArNDMwNSw5IEBA
IEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCkKIAogc2l6ZV90IGZh
c3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqIHB0cikKIHsKKyNpZiBFTkFCTEUoV1RGX01BTExPQ19W
QUxJREFUSU9OKQorICAgIHJldHVybiBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFk
ZXIocCktPm1fc2l6ZTsKKyNlbHNlCiAgICAgY29uc3QgUGFnZUlEIHAgPSByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ocHRyKSA+PiBrUGFnZVNoaWZ0OwogICAgIFNwYW4qIHNwYW4gPSBwYWdl
aGVhcC0+R2V0RGVzY3JpcHRvckVuc3VyZVNhZmUocCk7CiAKQEAgLTQyOTMsNiArNDMyMyw3IEBA
IHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKiBwdHIpCiAgICAgICAgIHJldHVybiBC
eXRlU2l6ZUZvckNsYXNzKGNsKTsKIAogICAgIHJldHVybiBzcGFuLT5sZW5ndGggPDwga1BhZ2VT
aGlmdDsKKyNlbmRpZgogfQogCiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuaAppbmRleCA5NzI5YmMzNmU0ZWQ2NGQ2ODBkZmQ0YjFkZTdlYmI0ZTQyYzY5
ODQ1Li4zN2NmMDg2OGVjMGM1NzUyYmI5NmI3ODAwOWNhN2U3ZmFjZDc1NDhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMTAzLDkgKzEwMywyNSBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgICAgIEFsbG9jVHlwZU5ldywgICAgICAgICAgICAgICAgICAgLy8g
RW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ldy4KICAgICAgICAgICAgIEFsbG9jVHlwZU5l
d0FycmF5ICAgICAgICAgICAgICAgLy8gRW5jb21wYXNzZXMgZ2xvYmFsIG9wZXJhdG9yIG5ld1td
LgogICAgICAgICB9OworCisgICAgICAgIGVudW0geworICAgICAgICAgICAgVmFsaWRhdGlvblBy
ZWZpeCA9IDB4ZjAwZGYwMGQsCisgICAgICAgICAgICBWYWxpZGF0aW9uU3VmZml4ID0gMHgwYmFk
ZjAwZAorICAgICAgICB9OworCisgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgVmFsaWRhdGlvblRh
ZzsKKworICAgICAgICBzdHJ1Y3QgVmFsaWRhdGlvbkhlYWRlciB7CisgICAgICAgICAgICBBbGxv
Y1R5cGUgbV90eXBlOworICAgICAgICAgICAgdW5zaWduZWQgbV9zaXplOworICAgICAgICAgICAg
VmFsaWRhdGlvblRhZyBtX3ByZWZpeDsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1fYWxpZ25tZW50
OworICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgVmFsaWRhdGlvbkJ1ZmZl
clNpemUgPSBzaXplb2YoVmFsaWRhdGlvbkhlYWRlcikgKyBzaXplb2YoVmFsaWRhdGlvblRhZyk7
CiAgICAgfQogCi0jaWYgRU5BQkxFKEZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04pCisjaWYg
RU5BQkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKIAogICAgIC8vIE1hbGxvYyB2YWxpZGF0aW9u
IGlzIGEgc2NoZW1lIHdoZXJlYnkgYSB0YWcgaXMgYXR0YWNoZWQgdG8gYW4KICAgICAvLyBhbGxv
Y2F0aW9uIHdoaWNoIGlkZW50aWZpZXMgaG93IGl0IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZC4K
QEAgLTEyMCwzMCArMTM2LDM2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIC8vIGlzIGltcGxlbWVu
dGVkLgogCiAgICAgbmFtZXNwYWNlIEludGVybmFsIHsKKyAgICAKKyAgICAgICAgLy8gSGFuZGxl
IGEgZGV0ZWN0ZWQgYWxsb2MvZnJlZSBtaXNtYXRjaC4gQnkgZGVmYXVsdCB0aGlzIGNhbGxzIENS
QVNIKCkuCisgICAgICAgIHZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqIHApOwogCi0g
ICAgICAgIC8vIFJldHVybiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFs
bG9jYXRlZCBibG9jayBwLgotICAgICAgICBpbmxpbmUgQWxsb2NUeXBlIGZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRpb25UeXBlKGNvbnN0IHZvaWQqIHApCisgICAgICAgIGlubGluZSBWYWxpZGF0aW9u
SGVhZGVyKiBmYXN0TWFsbG9jVmFsaWRhdGlvbkhlYWRlcih2b2lkKiBwKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqIHR5cGUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBBbGxvY0FsaWdubWVudEludGVnZXIqPihwKSAtIDE7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8QWxsb2NUeXBlPigqdHlwZSk7CisgICAgICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxWYWxpZGF0aW9uSGVhZGVyKj4oc3RhdGljX2Nhc3Q8Y2hhcio+KHApIC0g
c2l6ZW9mKFZhbGlkYXRpb25IZWFkZXIpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFJldHVy
biB0aGUgYWRkcmVzcyBvZiB0aGUgQWxsb2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFs
bG9jYXRlZCBibG9jayBwLgotICAgICAgICBpbmxpbmUgQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKiBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0aW9uVmFsdWUodm9pZCogcCkKKyAgICAgICAgaW5saW5lIFZh
bGlkYXRpb25UYWcqIGZhc3RNYWxsb2NWYWxpZGF0aW9uU3VmZml4KHZvaWQqIHApCisgICAgICAg
IHsKKyAgICAgICAgICAgIFZhbGlkYXRpb25IZWFkZXIqIGhlYWRlciA9IGZhc3RNYWxsb2NWYWxp
ZGF0aW9uSGVhZGVyKHApOworICAgICAgICAgICAgaWYgKGhlYWRlci0+bV9wcmVmaXggIT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFZhbGlkYXRpb25QcmVmaXgpKQorICAgICAgICAgICAgICAgIGZh
c3RNYWxsb2NNYXRjaEZhaWxlZChwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VmFsaWRhdGlvblRhZyo+KHN0YXRpY19jYXN0PGNoYXIqPihwKSAr
IGhlYWRlci0+bV9zaXplKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJldHVybiB0aGUgQWxs
b2NUeXBlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlIGFsbG9jYXRlZCBibG9jayBwLgorICAgICAg
ICBpbmxpbmUgQWxsb2NUeXBlIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFsbG9jQWxp
Z25tZW50SW50ZWdlcio+KHN0YXRpY19jYXN0PGNoYXIqPihwKSAtIHNpemVvZihBbGxvY0FsaWdu
bWVudEludGVnZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYXN0TWFsbG9jVmFsaWRhdGlvbkhl
YWRlcihwKS0+bV90eXBlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2V0IHRoZSBBbGxvY1R5
cGUgdGFnIHRvIGJlIGFzc29jaWFnZWQgd2l0aCB0aGUgYWxsb2NhdGVkIGJsb2NrIHAuCiAgICAg
ICAgIGlubGluZSB2b2lkIHNldEZhc3RNYWxsb2NNYXRjaFZhbGlkYXRpb25UeXBlKHZvaWQqIHAs
IEFsbG9jVHlwZSBhbGxvY1R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFsbG9jQWxpZ25t
ZW50SW50ZWdlciogdHlwZSA9IHN0YXRpY19jYXN0PEFsbG9jQWxpZ25tZW50SW50ZWdlcio+KHAp
IC0gMTsKLSAgICAgICAgICAgICp0eXBlID0gc3RhdGljX2Nhc3Q8QWxsb2NBbGlnbm1lbnRJbnRl
Z2VyPihhbGxvY1R5cGUpOworICAgICAgICAgICAgZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFkZXIo
cCktPm1fdHlwZSA9IGFsbG9jVHlwZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEhhbmRsZSBh
IGRldGVjdGVkIGFsbG9jL2ZyZWUgbWlzbWF0Y2guIEJ5IGRlZmF1bHQgdGhpcyBjYWxscyBDUkFT
SCgpLgotICAgICAgICB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKiBwKTsKLQogICAg
IH0gLy8gbmFtZXNwYWNlIEludGVybmFsCiAKICAgICAvLyBUaGlzIGlzIGEgaGlnaGVyIGxldmVs
IGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgYnkgRmFzdE1hbGxvYy11c2luZyBjb2RlLgpAQCAtMTU2
LDE2ICsxNzgsMzQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAgLy8gVGhpcyBpcyBh
IGhpZ2hlciBsZXZlbCBmdW5jdGlvbiB3aGljaCBpcyB1c2VkIGJ5IEZhc3RNYWxsb2MtdXNpbmcg
Y29kZS4KLSAgICBpbmxpbmUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZUZyZWUodm9pZCog
cCwgSW50ZXJuYWw6OkFsbG9jVHlwZSBhbGxvY1R5cGUpCisgICAgaW5saW5lIHZvaWQgZmFzdE1h
bGxvY01hdGNoVmFsaWRhdGVGcmVlKHZvaWQqIHAsIEludGVybmFsOjpBbGxvY1R5cGUpCiAgICAg
ewogICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICByZXR1cm47CisgICAgCisgICAgICAgIElu
dGVybmFsOjpWYWxpZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1Zh
bGlkYXRpb25IZWFkZXIocCk7CisgICAgICAgIGlmIChoZWFkZXItPm1fcHJlZml4ICE9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihJbnRlcm5hbDo6VmFsaWRhdGlvblByZWZpeCkpCisgICAgICAgICAg
ICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOwogCi0gICAgICAgIGlmIChJbnRl
cm5hbDo6ZmFzdE1hbGxvY01hdGNoVmFsaWRhdGlvblR5cGUocCkgIT0gYWxsb2NUeXBlKQorICAg
ICAgICBpZiAoKkludGVybmFsOjpmYXN0TWFsbG9jVmFsaWRhdGlvblN1ZmZpeChwKSAhPSBJbnRl
cm5hbDo6VmFsaWRhdGlvblN1ZmZpeCkKICAgICAgICAgICAgIEludGVybmFsOjpmYXN0TWFsbG9j
TWF0Y2hGYWlsZWQocCk7CisKICAgICAgICAgSW50ZXJuYWw6OnNldEZhc3RNYWxsb2NNYXRjaFZh
bGlkYXRpb25UeXBlKHAsIEludGVybmFsOjpBbGxvY1R5cGVNYWxsb2MpOyAgLy8gU2V0IGl0IHRv
IHRoaXMgc28gdGhhdCBmYXN0RnJlZSB0aGlua3MgaXQncyBPSy4KICAgICB9CiAKKyAgICBpbmxp
bmUgdm9pZCBmYXN0TWFsbG9jVmFsaWRhdGUodm9pZCogcCkKKyAgICB7CisgICAgICAgIGlmICgh
cCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIEludGVybmFsOjpWYWxp
ZGF0aW9uSGVhZGVyKiBoZWFkZXIgPSBJbnRlcm5hbDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25IZWFk
ZXIocCk7CisgICAgICAgIGlmIChoZWFkZXItPm1fcHJlZml4ICE9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihJbnRlcm5hbDo6VmFsaWRhdGlvblByZWZpeCkpCisgICAgICAgICAgICBJbnRlcm5hbDo6
ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOworICAgICAgICAKKyAgICAgICAgaWYgKCpJbnRlcm5h
bDo6ZmFzdE1hbGxvY1ZhbGlkYXRpb25TdWZmaXgocCkgIT0gSW50ZXJuYWw6OlZhbGlkYXRpb25T
dWZmaXgpCisgICAgICAgICAgICBJbnRlcm5hbDo6ZmFzdE1hbGxvY01hdGNoRmFpbGVkKHApOwor
ICAgIH0KKwogI2Vsc2UKIAogICAgIGlubGluZSB2b2lkIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRl
TWFsbG9jKHZvaWQqLCBJbnRlcm5hbDo6QWxsb2NUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IGU0MGIxYTZkZjM5MzUyMzU1YmFkNWMxNjk4OWY2YTRhMGFlYjkxZWEu
LmQxZmUxMTkzNDAwYWU4MTdiY2EzN2ZmYjU0ZWZlODc5YTc3NWQ3MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTg3NSw4ICs4NzUsMTIgQEAKIAogLyogZmFzdE1hbGxv
YyBtYXRjaCB2YWxpZGF0aW9uIGFsbG93cyBmb3IgcnVudGltZSB2ZXJpZmljYXRpb24gdGhhdAog
ICAgbmV3IGlzIG1hdGNoZWQgYnkgZGVsZXRlLCBmYXN0TWFsbG9jIGlzIG1hdGNoZWQgYnkgZmFz
dEZyZWUsIGV0Yy4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVfRkFTVF9NQUxMT0NfTUFUQ0hfVkFM
SURBVElPTikKLSNkZWZpbmUgRU5BQkxFX0ZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT04gMAor
I2lmICFkZWZpbmVkKEVOQUJMRV9XVEZfTUFMTE9DX1ZBTElEQVRJT04pCisjaWZuZGVmIE5ERUJV
RworI2RlZmluZSBFTkFCTEVfV1RGX01BTExPQ19WQUxJREFUSU9OIDEKKyNlbHNlCisjZGVmaW5l
IEVOQUJMRV9XVEZfTUFMTE9DX1ZBTElEQVRJT04gMAorI2VuZGlmCiAjZW5kaWYKIAogI2lmICFk
ZWZpbmVkKEVOQUJMRV9JQ09OREFUQUJBU0UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>