<?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>134613</bug_id>
          
          <creation_ts>2014-07-03 15:23:43 -0700</creation_ts>
          <short_desc>When showing the selection menu, include menu options for all selected phone numbers</short_desc>
          <delta_ts>2015-02-14 23:41:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1020384</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-03 15:23:43 -0700</bug_when>
    <thetext>When showing the selection menu, include menu options for all selected phone numbers.

&lt;rdar://problem/16983434&gt; and &lt;rdar://problem/16874568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020389</commentid>
    <comment_count>1</comment_count>
      <attachid>234374</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-03 15:32:52 -0700</bug_when>
    <thetext>Created attachment 234374
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020391</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-03 15:34:35 -0700</bug_when>
    <thetext>Attachment 234374 did not pass style-queue:


ERROR: Source/WebKit2/Platform/mac/StringUtilities.mm:50:  The parameter name &quot;allocator&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Platform/mac/StringUtilities.mm:53:  The parameter name &quot;number&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Platform/mac/StringUtilities.mm:56:  The parameter name &quot;number&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/Platform/mac/StringUtilities.mm:57:  Missing space after ,  [whitespace/comma] [3]
ERROR: Source/WebKit2/Platform/mac/MenuUtilities.mm:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 5 in 17 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>1020394</commentid>
    <comment_count>3</comment_count>
      <attachid>234376</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-03 15:55:23 -0700</bug_when>
    <thetext>Created attachment 234376
Patch v2 - Fixed style errors and rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020395</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-03 15:56:05 -0700</bug_when>
    <thetext>Attachment 234376 did not pass style-queue:


ERROR: Source/WebKit2/Platform/mac/StringUtilities.mm:57:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 17 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>1020396</commentid>
    <comment_count>5</comment_count>
      <attachid>234376</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-03 16:14:19 -0700</bug_when>
    <thetext>Comment on attachment 234376
Patch v2 - Fixed style errors and rebased

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

&gt; Source/WebCore/English.lproj/Localizable.strings:122
&gt; +&quot;Call â%@â Using iPhone&quot; = &quot;Call â%@â Using iPhone&quot;;

I don&apos;t think this string belongs in WebCore (or WebKit at all).

&gt; Source/WebKit2/Platform/mac/MenuUtilities.mm:67
&gt; +        items= [NSMutableArray array];

non-centered =

&gt; Source/WebKit2/Platform/mac/MenuUtilities.mm:121
&gt; +    return (NSMenuItem *)processMenuForTelephoneNumber(telephoneNumber, ExpectedProcessMenuResult::DialItem);
&gt; +}
&gt; +
&gt; +NSArray *menuItemsForTelephoneNumber(const String&amp; telephoneNumber)
&gt; +{
&gt; +    return (NSArray *)processMenuForTelephoneNumber(telephoneNumber, ExpectedProcessMenuResult::MenuArray);

this seems like over-sharing of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020409</commentid>
    <comment_count>6</comment_count>
      <attachid>234382</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-03 17:14:44 -0700</bug_when>
    <thetext>Created attachment 234382
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020416</commentid>
    <comment_count>7</comment_count>
      <attachid>234382</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-03 17:35:27 -0700</bug_when>
    <thetext>Comment on attachment 234382
Patch v3

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

&gt; Source/WebCore/English.lproj/Localizable.strings:122
&gt; +&quot;Call â%@â Using iPhone&quot; = &quot;Call â%@â Using iPhone&quot;;

Sam/Dan/Anders have vetoed my objection to this, so I guess it&apos;s ok :)

&gt; Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:408
&gt; +            NSMenuItem *item = menuItemForTelephoneNumber(telephoneNumber);
&gt; +            if (item)

merge these lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020418</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-03 17:40:19 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170782</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020424</commentid>
    <comment_count>9</comment_count>
      <attachid>234382</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-03 18:10:46 -0700</bug_when>
    <thetext>Comment on attachment 234382
Patch v3

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

&gt; Source/WebKit2/Platform/mac/StringUtilities.mm:42
&gt; +#if ENABLE(TELEPHONE_NUMBER_DETECTION) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101000

I missed how empty this file was before you added this stuff, and its name. Why is this here instead of next to the only caller?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020434</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-03 20:39:22 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 234382 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234382&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/mac/StringUtilities.mm:42
&gt; &gt; +#if ENABLE(TELEPHONE_NUMBER_DETECTION) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101000
&gt; 
&gt; I missed how empty this file was before you added this stuff, and its name. Why is this here instead of next to the only caller?

No reason besides the fact that an earlier version of the patch had two callers in two different files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069290</commentid>
    <comment_count>11</comment_count>
      <attachid>234382</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-02-14 23:41:19 -0800</bug_when>
    <thetext>Comment on attachment 234382
Patch v3

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

&gt; Source/WebKit2/Platform/mac/StringUtilities.mm:51
&gt; +// These functions are declared with __attribute__((visibility (&quot;default&quot;)))
&gt; +// We currently don&apos;t have a way to soft link such functions, so we forward declare them again here.
&gt; +CFPhoneNumberRef CFPhoneNumberCreate(CFAllocatorRef, CFStringRef, CFStringRef);
&gt; +SOFT_LINK(PhoneNumbers, CFPhoneNumberCreate, CFPhoneNumberRef, (CFAllocatorRef allocator, CFStringRef digits, CFStringRef countryCode), (allocator, digits, countryCode));

Could you please elaborate on why this is needed? The first thing SOFT_LINK does is declare the function.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234374</attachid>
            <date>2014-07-03 15:32:52 -0700</date>
            <delta_ts>2014-07-03 15:55:23 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30714</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYWI0YmM1Li5mZTcwOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDctMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFdoZW4gc2hvd2luZyB0aGUgc2VsZWN0aW9uIG1lbnUsIGluY2x1ZGUgbWVudSBvcHRpb25z
IGZvciBhbGwgc2VsZWN0ZWQgcGhvbmUgbnVtYmVycy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE2OTgzNDM0PiwgPHJkYXI6Ly9wcm9ibGVtLzE2ODc0NTY4PiwgYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nczoKKworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyYW5n
ZXNPdmVybGFwKTogRml4IHJldmVyc2VkIGFyZ3VtZW50cyB0aGF0IGNhdXNlZCBzb21lIHR5cGVz
IG9mIG92ZXJsYXBzIHRvIG5vdCBiZSBkZXRlY3RlZC4KKwogMjAxNC0wNy0wMiAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgRW5jb2Rl
ckFkYXB0ZXIvRGVjb2RlckFkYXB0ZXIgZm9yIEZvcm1EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggM2EzY2M3Zi4uODZlNzUx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5z
dHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncwpAQCAtMTE4LDYgKzExOCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiQm9sZCAo
VW5kbyBhY3Rpb24gbmFtZSkiID0gIkJvbGQiOwogCisvKiBtZW51IGl0ZW0gZm9yIG1ha2luZyBh
IHRlbGVwaG9uZSBjYWxsIHRvIGEgdGVsZXBob25lIG51bWJlciAqLworIkNhbGwg4oCcJUDigJ0g
VXNpbmcgaVBob25lIiA9ICJDYWxsIOKAnCVA4oCdIFVzaW5nIGlQaG9uZSI7CisKIC8qIEZpbGUg
VXBsb2FkIGFsZXJ0IHNoZWV0IGJ1dHRvbiBzdHJpbmcgdG8gY2FuY2VsICovCiAiQ2FuY2VsIChm
aWxlIHVwbG9hZCBhY3Rpb24gc2hlZXQpIiA9ICJDYW5jZWwiOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApp
bmRleCA5YjJkNGU5Li4xNGJiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTIwMDgsMTEgKzIw
MDgsMTEgQEAgYm9vbCByYW5nZXNPdmVybGFwKGNvbnN0IFJhbmdlKiBhLCBjb25zdCBSYW5nZSog
YikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBFbmQgb2YgZmlyc3QgcmFuZ2UgaXMg
aW5zaWRlIHNlY29uZCByYW5nZS4KLSAgICBpZiAoYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJh
bmdlOjpFTkRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04pID49IDAgJiYgZW5kVG9F
bmQgPD0gMCkKKyAgICBpZiAoYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9U
T19FTkQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04pID49IDAgJiYgZW5kVG9FbmQgPD0gMCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBTdGFydCBvZiBmaXJzdCByYW5nZSBpcyBpbnNp
ZGUgc2Vjb25kIHJhbmdlLgotICAgIGlmIChzdGFydFRvU3RhcnQgPj0gMCAmJiBhLT5jb21wYXJl
Qm91bmRhcnlQb2ludHMoUmFuZ2U6OlNUQVJUX1RPX0VORCwgYiwgQVNTRVJUX05PX0VYQ0VQVElP
TikgPD0gMCkKKyAgICBpZiAoc3RhcnRUb1N0YXJ0ID49IDAgJiYgYS0+Y29tcGFyZUJvdW5kYXJ5
UG9pbnRzKFJhbmdlOjpFTkRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04pIDw9IDAp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGNjZDljNDcuLjA1NzMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1MSBAQAogMjAxNC0wNy0w
MyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgV2hlbiBzaG93
aW5nIHRoZSBzZWxlY3Rpb24gbWVudSwgaW5jbHVkZSBtZW51IG9wdGlvbnMgZm9yIGFsbCBzZWxl
Y3RlZCBwaG9uZSBudW1iZXJzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY5ODM0MzQ+LCA8
cmRhcjovL3Byb2JsZW0vMTY4NzQ1Njg+LCBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgc29tZSB0ZWxlcGhvbmUgbnVtYmVyIG1lbnUgbG9naWMgZnJvbSBX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UgaGVyZS4KKyAgICAgICAgQWxzbyBwcm92aWRlIHV0aWxpdHkg
dG8gZ2V0IGp1c3QgdGhlIG9uZSBtZW51IGl0ZW0gcmVsZXZhbnQgdG8gYSB0ZWxlcGhvbmUgbnVt
YmVyLgorICAgICAgICAqIFBsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLmg6CisgICAgICAgICog
UGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpw
cm9jZXNzTWVudUZvclRlbGVwaG9uZU51bWJlcik6CisgICAgICAgIChXZWJLaXQ6Om1lbnVJdGVt
Rm9yVGVsZXBob25lTnVtYmVyKToKKyAgICAgICAgKFdlYktpdDo6bWVudUl0ZW1zRm9yVGVsZXBo
b25lTnVtYmVyKToKKworICAgICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2Vi
S2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6IFJldHVybiBhIGxvY2FsaXplZCBmb3Jt
YXR0ZWQgcGhvbmUgbnVtYmVyLgorCisgICAgICAgIEFkZCBhIG1lbWJlciB0byB0cmFjayB0aGUg
c2VsZWN0ZWQgcGhvbmUgbnVtYmVyczoKKyAgICAgICAgKiBTaGFyZWQvQ29udGV4dE1lbnVDb250
ZXh0RGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TWVudUNvbnRleHREYXRhOjpDb250
ZXh0TWVudUNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDb250ZXh0
RGF0YTo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzZXR1cFNlcnZpY2Vz
TWVudSk6IEFsc28gYWRkIG1lbnUgaXRlbXMgZm9yIGVhY2ggcGhvbmUgbnVtYmVyIHRoYXQgaXMK
KyAgICAgICAgICBpbiB0aGUgc2VsZWN0aW9uLgorCisgICAgICAgIFN3aXRjaCBhd2F5IGZyb20g
YSBXS1NJIG1ldGhvZCwgYW5kIHJlbW92ZSBhIGxvdCBvZiB1bm5lZWRlZCBmb3J3YXJkIGRlY2xh
cmF0aW9ucyBhbmQgc29mdCBsaW5raW5nOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dUZWxlcGhv
bmVOdW1iZXJNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93U2VsZWN0
aW9uU2VydmljZU1lbnUpOgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyOjpkcmF3U2VsZWN0aW9uSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZXNP
dmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2spOiBQYXNzIHRoZSBwaG9uZSBudW1iZXJzIGFs
b25nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayk6IFBhc3MgdGhlIHBob25lIG51
bWJlcnMgYWxvbmcuCisKKzIwMTQtMDctMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCiAgICAgICAgIEZvbGxvd3VwIHRvICJyZWN0cyBzZW50IHRvIFNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIgYXJlIHdyb25nIgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM0NTY4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL21hYy9NZW51VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTWVu
dVV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNjE1MGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTWVudVV0aWxp
dGllcy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lbnVVdGlsaXRp
ZXNfaAorI2RlZmluZSBNZW51VXRpbGl0aWVzX2gKKworI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgor
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisj
aWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorTlNNZW51SXRlbSAqbWVudUl0ZW1Gb3JUZWxlcGhv
bmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1iZXJTdHJpbmcpOworTlNBcnJheSAq
bWVudUl0ZW1zRm9yVGVsZXBob25lTnVtYmVyKGNvbnN0IFN0cmluZyYgdGVsZXBob25lTnVtYmVy
KTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIE1lbnVVdGls
aXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVVdGls
aXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjhmMGVmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW0KQEAgLTAs
MCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1l
bnVVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+
CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKworI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAK
K1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0b3JzKQorU09GVF9MSU5LX0NM
QVNTKERhdGFEZXRlY3RvcnMsIEREQWN0aW9uKQorU09GVF9MSU5LX0NMQVNTKERhdGFEZXRlY3Rv
cnMsIEREQWN0aW9uc01hbmFnZXIpCitTT0ZUX0xJTktfQ09OU1RBTlQoRGF0YURldGVjdG9ycywg
RERCaW5kZXJQaG9uZU51bWJlcktleSwgQ0ZTdHJpbmdSZWYpCisKK0BpbnRlcmZhY2UgRERBY3Rp
b24gOiBOU09iamVjdAorQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcgKmFjdGlvblVUSTsK
K0BlbmQKKwordHlwZWRlZiB2b2lkKiBEREFjdGlvbkNvbnRleHQ7CisKK0BpbnRlcmZhY2UgRERB
Y3Rpb25zTWFuYWdlciA6IE5TT2JqZWN0CisrIChEREFjdGlvbnNNYW5hZ2VyICopc2hhcmVkTWFu
YWdlcjsKKy0gKE5TQXJyYXkgKiltZW51SXRlbXNGb3JWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB0
eXBlOihDRlN0cmluZ1JlZil0eXBlIHNlcnZpY2U6KE5TU3RyaW5nICopc2VydmljZSBjb250ZXh0
OihEREFjdGlvbkNvbnRleHQgKiljb250ZXh0OworQGVuZAorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorCitlbnVtIGNsYXNzIEV4cGVj
dGVkUHJvY2Vzc01lbnVSZXN1bHQgeworICAgIERpYWxJdGVtLAorICAgIE1lbnVBcnJheQorfTsK
Kworc3RhdGljIGlkIHByb2Nlc3NNZW51Rm9yVGVsZXBob25lTnVtYmVyKGNvbnN0IFN0cmluZyYg
dGVsZXBob25lTnVtYmVyLCBFeHBlY3RlZFByb2Nlc3NNZW51UmVzdWx0IGV4cGVjdGVkUmVzdWx0
KQoreworICAgIE5TTXV0YWJsZUFycmF5ICppdGVtczsKKyAgICBOU011dGFibGVBcnJheSAqZmFj
ZVRpbWVJdGVtczsKKworICAgIGlmIChleHBlY3RlZFJlc3VsdCA9PSBFeHBlY3RlZFByb2Nlc3NN
ZW51UmVzdWx0OjpNZW51QXJyYXkpIHsKKyAgICAgICAgaXRlbXM9IFtOU011dGFibGVBcnJheSBh
cnJheV07CisgICAgICAgIGZhY2VUaW1lSXRlbXM9IFtOU011dGFibGVBcnJheSBhcnJheV07Cisg
ICAgfQorCisgICAgTlNNZW51SXRlbSAqZGlhbEl0ZW0gPSBuaWw7CisKKyAgICBOU0FycmF5ICpw
cm9wb3NlZE1lbnUgPSBbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJd
IG1lbnVJdGVtc0ZvclZhbHVlOihOU1N0cmluZyAqKXRlbGVwaG9uZU51bWJlciB0eXBlOmdldERE
QmluZGVyUGhvbmVOdW1iZXJLZXkoKSBzZXJ2aWNlOm5pbCBjb250ZXh0Om5pbF07CisgICAgZm9y
IChOU01lbnVJdGVtICppdGVtIGluIHByb3Bvc2VkTWVudSkgeworICAgICAgICBOU0RpY3Rpb25h
cnkgKnJlcHJlc2VudGVkT2JqZWN0ID0gaXRlbS5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAg
aWYgKCFbcmVwcmVzZW50ZWRPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNz
XV0pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBEREFjdGlvbiAqYWN0aW9uT2Jq
ZWN0ID0gW3JlcHJlc2VudGVkT2JqZWN0IG9iamVjdEZvcktleTpAIkREQWN0aW9uIl07CisgICAg
ICAgIGlmICghW2FjdGlvbk9iamVjdCBpc0tpbmRPZkNsYXNzOmdldEREQWN0aW9uQ2xhc3MoKV0p
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoW2FjdGlvbk9iamVjdC5hY3Rp
b25VVEkgaGFzUHJlZml4OkAiY29tLmFwcGxlLmRpYWwiXSkgeworICAgICAgICAgICAgaXRlbS50
aXRsZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIkNhbGwg4oCc
JUDigJ0gVXNpbmcgaVBob25lIiwgIm1lbnUgaXRlbSBmb3IgbWFraW5nIGEgdGVsZXBob25lIGNh
bGwgdG8gYSB0ZWxlcGhvbmUgbnVtYmVyIiksIGZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKHRl
bGVwaG9uZU51bWJlcildOworICAgICAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0ID09IEV4cGVj
dGVkUHJvY2Vzc01lbnVSZXN1bHQ6OkRpYWxJdGVtKQorICAgICAgICAgICAgICAgIHJldHVybiBp
dGVtOworCisgICAgICAgICAgICBkaWFsSXRlbSA9IGl0ZW07CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdCA9PSBFeHBlY3RlZFBy
b2Nlc3NNZW51UmVzdWx0OjpNZW51QXJyYXkgJiYgW2FjdGlvbk9iamVjdC5hY3Rpb25VVEkgaGFz
UHJlZml4OkAiY29tLmFwcGxlLmZhY2V0aW1lIl0pCisgICAgICAgICAgICBbZmFjZVRpbWVJdGVt
cyBhZGRPYmplY3Q6aXRlbV07CisgICAgfQorCisgICAgaWYgKGV4cGVjdGVkUmVzdWx0ID09IEV4
cGVjdGVkUHJvY2Vzc01lbnVSZXN1bHQ6OkRpYWxJdGVtKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHdlJ3JlIGJ1aWxkaW5nIHRoZSBtZW51IGFy
cmF5LgorICAgIEFTU0VSVChleHBlY3RlZFJlc3VsdCA9PSBFeHBlY3RlZFByb2Nlc3NNZW51UmVz
dWx0OjpNZW51QXJyYXkpOworCisgICAgaWYgKGRpYWxJdGVtKQorICAgICAgICBbaXRlbXMgYWRk
T2JqZWN0OmRpYWxJdGVtXTsKKworICAgIGlmIChmYWNlVGltZUl0ZW1zLmNvdW50KSB7CisgICAg
ICAgIGlmIChpdGVtcy5jb3VudCkKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6W05TTWVu
dUl0ZW0gc2VwYXJhdG9ySXRlbV1dOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0c0Zyb21BcnJh
eTpmYWNlVGltZUl0ZW1zXTsKKyAgICB9CisKKyAgICByZXR1cm4gaXRlbXMuY291bnQgPyBpdGVt
cyA6IG5pbDsKK30KKworTlNNZW51SXRlbSAqbWVudUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIoY29u
c3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1iZXIpCit7CisgICAgcmV0dXJuIChOU01lbnVJdGVtICop
cHJvY2Vzc01lbnVGb3JUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyLCBFeHBlY3RlZFBy
b2Nlc3NNZW51UmVzdWx0OjpEaWFsSXRlbSk7Cit9CisKK05TQXJyYXkgKm1lbnVJdGVtc0ZvclRl
bGVwaG9uZU51bWJlcihjb25zdCBTdHJpbmcmIHRlbGVwaG9uZU51bWJlcikKK3sKKyAgICByZXR1
cm4gKE5TQXJyYXkgKilwcm9jZXNzTWVudUZvclRlbGVwaG9uZU51bWJlcih0ZWxlcGhvbmVOdW1i
ZXIsIEV4cGVjdGVkUHJvY2Vzc01lbnVSZXN1bHQ6Ok1lbnVBcnJheSk7Cit9CisjZW5kaWYKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3Ry
aW5nVXRpbGl0aWVzLmgKaW5kZXggMTQzODU3Ni4uOTZlZmM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaApAQCAtMzIsNyArMzIsMTEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgdXNlIFN0cmluZzo6b3Bl
cmF0b3IgTlNTdHJpbmcqKCkgc2luY2UgdGhhdCBmdW5jdGlvbgogLy8gZXhwZWN0cyB0byBiZSBj
YWxsZWQgb24gdGhlIHRocmVhZCBydW5uaW5nIFdlYkNvcmUuCi1OU1N0cmluZyogbnNTdHJpbmdG
cm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK05TU3RyaW5nICpuc1N0cmluZ0Zyb21X
ZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOworCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAw
MAorTlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5h
bFBob25lTnVtYmVyKTsKKyNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDMxMTJhMjQuLmVjZmJiY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbXBvcnQgIldLU3RyaW5n
Q0YuaCIKKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9PYmpj
UnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM4
LDQgKzM5LDM5IEBAIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcuaXNFbXB0eSgpID8gQCIiIDogQ0ZCcmlk
Z2luZ1JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9BUEkoc3RyaW5nLmltcGwoKSkp
KTsKIH0KIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKKworU09GVF9MSU5LX1BSSVZBVEVf
RlJBTUVXT1JLKFBob25lTnVtYmVycyk7CisKK3R5cGVkZWYgc3RydWN0IF9fQ0ZQaG9uZU51bWJl
ciogQ0ZQaG9uZU51bWJlclJlZjsKKworLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBkZWNsYXJlZCB3
aXRoIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQorLy8gV2UgY3VycmVu
dGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gc29mdCBsaW5rIHN1Y2ggZnVuY3Rpb25zLCBzbyB3ZSBm
b3J3YXJkIGRlY2xhcmUgdGhlbSBhZ2FpbiBoZXJlLgorQ0ZQaG9uZU51bWJlclJlZiBDRlBob25l
TnVtYmVyQ3JlYXRlKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgZGlnaXRz
LCBDRlN0cmluZ1JlZiBjb3VudHJ5Q29kZSk7CitTT0ZUX0xJTksoUGhvbmVOdW1iZXJzLCBDRlBo
b25lTnVtYmVyQ3JlYXRlLCBDRlBob25lTnVtYmVyUmVmLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2Nh
dG9yLCBDRlN0cmluZ1JlZiBkaWdpdHMsIENGU3RyaW5nUmVmIGNvdW50cnlDb2RlKSwgKGFsbG9j
YXRvciwgZGlnaXRzLCBjb3VudHJ5Q29kZSkpOworCitDRlN0cmluZ1JlZiBDRlBob25lTnVtYmVy
Q29weUZvcm1hdHRlZFJlcHJlc2VudGF0aW9uKENGUGhvbmVOdW1iZXJSZWYgbnVtYmVyKTsKK1NP
RlRfTElOSyhQaG9uZU51bWJlcnMsIENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50
YXRpb24sIENGU3RyaW5nUmVmLCAoQ0ZQaG9uZU51bWJlclJlZiBwaG9uZU51bWJlciksIChwaG9u
ZU51bWJlcikpOworCitDRlN0cmluZ1JlZiBDRlBob25lTnVtYmVyQ29weVVuZm9ybWF0dGVkUmVw
cmVzZW50YXRpb24oQ0ZQaG9uZU51bWJlclJlZiBudW1iZXIpOworU09GVF9MSU5LKFBob25lTnVt
YmVycywgQ0ZQaG9uZU51bWJlckNvcHlVbmZvcm1hdHRlZFJlcHJlc2VudGF0aW9uLCBDRlN0cmlu
Z1JlZiwoQ0ZQaG9uZU51bWJlclJlZiBwaG9uZU51bWJlciksIChwaG9uZU51bWJlcikpOworCisK
K05TU3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1N0cmluZyAqb3JpZ2luYWxQ
aG9uZU51bWJlcikKK3sKKyAgICBOU1N0cmluZyAqY291bnRyeUNvZGUgPSBbW1tOU0xvY2FsZSBj
dXJyZW50TG9jYWxlXSBvYmplY3RGb3JLZXk6TlNMb2NhbGVDb3VudHJ5Q29kZV0gbG93ZXJjYXNl
U3RyaW5nXTsKKworICAgIFJldGFpblB0cjxDRlBob25lTnVtYmVyUmVmPiBwaG9uZU51bWJlciA9
IGFkb3B0Q0YoQ0ZQaG9uZU51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZTdHJp
bmdSZWYpb3JpZ2luYWxQaG9uZU51bWJlciwgKENGU3RyaW5nUmVmKWNvdW50cnlDb2RlKSk7Cisg
ICAgaWYgKCFwaG9uZU51bWJlcikKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsUGhvbmVOdW1iZXI7
CisKKyAgICBDRlN0cmluZ1JlZiBwaG9uZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5
Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpOworICAgIGlmICghcGhv
bmVOdW1iZXJTdHJpbmcpCisgICAgICAgIHBob25lTnVtYmVyU3RyaW5nID0gQ0ZQaG9uZU51bWJl
ckNvcHlVbmZvcm1hdHRlZFJlcHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKTsKKworICAg
IHJldHVybiBbKE5TU3RyaW5nICopcGhvbmVOdW1iZXJTdHJpbmcgYXV0b3JlbGVhc2VdOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaAppbmRleCA4NTcyZDQ3Li4zMjAzNTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgK
QEAgLTU3LDE0ICs1NywxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YSYgd2ViSGl0VGVzdFJlc3VsdERhdGEoKSBjb25zdCB7IHJldHVybiBtX3dlYkhpdFRlc3RS
ZXN1bHREYXRhOyB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSAgICBDb250ZXh0
TWVudUNvbnRleHREYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2VsZWN0aW9uRGF0YSwgYm9v
bCBpc0VkaXRhYmxlKQorICAgIENvbnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzZWxlY3Rpb25EYXRhLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VsZWN0ZWRUZWxl
cGhvbmVOdW1iZXJzLCBib29sIGlzRWRpdGFibGUpCiAgICAgICAgIDogbV9pc1RlbGVwaG9uZU51
bWJlckNvbnRleHQoZmFsc2UpCiAgICAgICAgICwgbV9jb250cm9sbGVkU2VsZWN0aW9uRGF0YShz
ZWxlY3Rpb25EYXRhKQorICAgICAgICAsIG1fc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzKHNlbGVj
dGVkVGVsZXBob25lTnVtYmVycykKICAgICAgICAgLCBtX3NlbGVjdGlvbklzRWRpdGFibGUoaXNF
ZGl0YWJsZSkKICAgICB7IH0KIAogICAgIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBj
b250cm9sbGVkSW1hZ2VIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZUhh
bmRsZTsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY29udHJvbGxlZFNlbGVjdGlvbkRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRTZWxlY3Rpb25EYXRhOyB9CisgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHNlbGVjdGVkVGVsZXBob25lTnVtYmVycygpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzOyB9CiAKICAgICBib29sIGNvbnRyb2xsZWRE
YXRhSXNFZGl0YWJsZSgpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNTZXJ2aWNlc01lbnUoKSBjb25z
dCB7IHJldHVybiAhbV9jb250cm9sbGVkSW1hZ2VIYW5kbGUuaXNOdWxsKCkgfHwgIW1fY29udHJv
bGxlZFNlbGVjdGlvbkRhdGEuaXNFbXB0eSgpOyB9CkBAIC04NSw2ICs4Nyw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgbV9jb250cm9sbGVkSW1hZ2VIYW5kbGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fY29udHJv
bGxlZFNlbGVjdGlvbkRhdGE7CisgICAgVmVjdG9yPFN0cmluZz4gbV9zZWxlY3RlZFRlbGVwaG9u
ZU51bWJlcnM7CiAgICAgYm9vbCBtX3NlbGVjdGlvbklzRWRpdGFibGU7CiAjZW5kaWYKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjYwNWQxYi4uZjlmZjNi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTA5Nyw3ICsx
MDk3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
Ci0gICAgdm9pZCBzaG93U2VsZWN0aW9uU2VydmljZU1lbnUoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBzZWxlY3Rpb25Bc1JURkQsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKKyAgICB2b2lkIHNob3dTZWxlY3Rpb25TZXJ2aWNlTWVudShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHNlbGVjdGlvbkFzUlRGRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRlbGVw
aG9uZU51bWJlcnMsIGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
ICNlbmRpZgogCiAgICAgLy8gU2VhcmNoIHBvcHVwIHJlc3VsdHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDk3MGRmOWYuLmJm
YWFkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMzk0LDcgKzM5NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotICAgIFNob3dTZWxlY3Rp
b25TZXJ2aWNlTWVudShJUEM6OkRhdGFSZWZlcmVuY2Ugc2VsZWN0aW9uQXNSVEZELCBib29sIGlz
RWRpdGFibGUsIFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorICAgIFNob3dTZWxlY3Rpb25TZXJ2
aWNlTWVudShJUEM6OkRhdGFSZWZlcmVuY2Ugc2VsZWN0aW9uQXNSVEZELCBWZWN0b3I8U3RyaW5n
PiB0ZWxlcGhvbmVOdW1iZXJzLCBib29sIGlzRWRpdGFibGUsIFdlYkNvcmU6OkludFBvaW50IHBv
aW50KQogI2VuZGlmCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCAxZmZi
ZTZlLi5mODQwZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJNZW51VXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbC5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0
bWFwLmgiCiAjaW1wb3J0ICJTdHJpbmdVdGlsaXRpZXMuaCIKQEAgLTM5OCw2ICszOTksMTcgQEAg
dm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpzZXR1cFNlcnZpY2VzTWVudShjb25zdCBDb250
ZXh0TWVudUNvbnRleHREYXRhJiBjb24KIAogICAgIG1fc2VydmljZXNNZW51ID0gW3BpY2tlciBt
ZW51XTsKIAorICAgIC8vIEV4cGxpY2l0bHkgYWRkIGEgbWVudSBpdGVtIGZvciBlYWNoIHRlbGVw
aG9uZSBudW1iZXIgdGhhdCBpcyBpbiB0aGUgc2VsZWN0aW9uLgorICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMgPSBjb250ZXh0LnNlbGVjdGVkVGVsZXBo
b25lTnVtYmVycygpOworICAgIGlmICghc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzLmlzRW1wdHko
KSkgeworICAgICAgICBbbV9zZXJ2aWNlc01lbnUuZ2V0KCkgYWRkSXRlbTpbTlNNZW51SXRlbSBz
ZXBhcmF0b3JJdGVtXV07CisgICAgICAgIGZvciAoYXV0byYgdGVsZXBob25lTnVtYmVyIDogc2Vs
ZWN0ZWRUZWxlcGhvbmVOdW1iZXJzKSB7CisgICAgICAgICAgICBOU01lbnVJdGVtICppdGVtID0g
bWVudUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTsKKyAgICAgICAgICAg
IGlmIChpdGVtKQorICAgICAgICAgICAgICAgIFttX3NlcnZpY2VzTWVudS5nZXQoKSBhZGRJdGVt
Oml0ZW1dOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc2Vydmlj
ZXMgbWVudSwgdGhlbiB0aGUgZXhpc3Rpbmcgc2VydmljZXMgb24gdGhlIHN5c3RlbSBoYXZlIGNo
YW5nZWQuCiAgICAgLy8gQXNrIHRoZSBVSVByb2Nlc3MgdG8gcmVmcmVzaCB0aGF0IGxpc3Qgb2Yg
c2VydmljZXMuCiAgICAgLy8gSWYgPHJkYXI6Ly9wcm9ibGVtLzE2Nzc2ODMxPiBpcyByZXNvbHZl
ZCB0aGVuIHdlIGNhbiBtb3JlIGFjY3VyYXRlbHkga2VlcCB0aGUgbGlzdCB1cCB0byBkYXRlIHdp
dGhvdXQgdGhpcyBjYWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCA3YTI2YmY4Li5kNmMxZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzUsNiArMzUsNyBAQAog
I2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiRWRpdGluZ1JhbmdlLmgi
CiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgorI2ltcG9ydCAiTWVudVV0aWxpdGllcy5oIgogI2lt
cG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgog
I2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKQEAgLTQ5LDEwICs1MCw4IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8
V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckFnZW50Lmg+Ci0jaW1wb3J0IDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRl
Lmg+CkBAIC02MSwxNyArNjAsNiBAQAogLSAodm9pZClzcGVha1N0cmluZzooTlNTdHJpbmcgKilz
dHJpbmc7CiBAZW5kCiAKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChEYXRh
RGV0ZWN0b3JzKQotU09GVF9MSU5LX0NMQVNTKERhdGFEZXRlY3RvcnMsIEREQWN0aW9uc01hbmFn
ZXIpCi1TT0ZUX0xJTktfQ09OU1RBTlQoRGF0YURldGVjdG9ycywgRERCaW5kZXJQaG9uZU51bWJl
cktleSwgQ0ZTdHJpbmdSZWYpCi0KLXR5cGVkZWYgdm9pZCogRERBY3Rpb25Db250ZXh0OwotCi1A
aW50ZXJmYWNlIEREQWN0aW9uc01hbmFnZXIgOiBOU09iamVjdAotKyAoRERBY3Rpb25zTWFuYWdl
ciAqKSBzaGFyZWRNYW5hZ2VyOwotLSAoTlNBcnJheSAqKSBtZW51SXRlbXNGb3JWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSB0eXBlOihDRlN0cmluZ1JlZil0eXBlIHNlcnZpY2U6KE5TU3RyaW5nICop
c2VydmljZSBjb250ZXh0OihEREFjdGlvbkNvbnRleHQgKiljb250ZXh0OwotQGVuZAotCiAjZGVm
aW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9u
LCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTY0Nyw4ICs2MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlG
b2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJgogI2lmIEVOQUJMRShURUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93VGVsZXBob25l
TnVtYmVyTWVudShjb25zdCBTdHJpbmcmIHRlbGVwaG9uZU51bWJlciwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50KQogewotICAgIE5TQXJyYXkgKm1lbnVJdGVtcyA9IFtbZ2V0RERBY3Rp
b25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gbWVudUl0ZW1zRm9yVmFsdWU6KE5TU3Ry
aW5nICopdGVsZXBob25lTnVtYmVyIHR5cGU6Z2V0RERCaW5kZXJQaG9uZU51bWJlcktleSgpIHNl
cnZpY2U6bmlsIGNvbnRleHQ6bmlsXTsKLSAgICBtZW51SXRlbXMgPSBXS1RlbGVwaG9uZU51bWJl
ck1lbnVGcm9tUHJvcG9zZWRNZW51KG1lbnVJdGVtcywgdGVsZXBob25lTnVtYmVyKTsKKyAgICBO
U0FycmF5ICptZW51SXRlbXMgPSBtZW51SXRlbXNGb3JUZWxlcGhvbmVOdW1iZXIodGVsZXBob25l
TnVtYmVyKTsKIAogICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBpdGVtczsKICAg
ICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gbWVudUl0ZW1zKSB7CkBAIC02NjcsMTAgKzY1NCwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1RlbGVwaG9uZU51bWJlck1lbnUoY29uc3QgU3Ry
aW5nJiB0ZWxlcGhvbmVOdW1iZXIsIGNvbnN0CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQotdm9pZCBXZWJQYWdlUHJveHk6OnNob3dTZWxlY3Rpb25TZXJ2aWNlTWVudShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHNlbGVjdGlvbkFzUlRGRCwgYm9vbCBpc0VkaXRhYmxl
LCBjb25zdCBJbnRQb2ludCYgcG9pbnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NlbGVjdGlv
blNlcnZpY2VNZW51KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgc2VsZWN0aW9uQXNSVEZELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVycywgYm9vbCBpc0VkaXRhYmxlLCBj
b25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURh
dGE+IGl0ZW1zOwotICAgIENvbnRleHRNZW51Q29udGV4dERhdGEgY29udGV4dERhdGEoc2VsZWN0
aW9uQXNSVEZELnZlY3RvcigpLCBpc0VkaXRhYmxlKTsKKyAgICBDb250ZXh0TWVudUNvbnRleHRE
YXRhIGNvbnRleHREYXRhKHNlbGVjdGlvbkFzUlRGRC52ZWN0b3IoKSwgdGVsZXBob25lTnVtYmVy
cywgaXNFZGl0YWJsZSk7CiAKICAgICBpbnRlcm5hbFNob3dDb250ZXh0TWVudShwb2ludCwgY29u
dGV4dERhdGEsIGl0ZW1zLCBDb250ZXh0TWVudUNsaWVudEVsaWdpYmlsaXR5OjpOb3RFbGlnaWJs
ZUZvckNsaWVudCwgbnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmZlOWJlOC4uNGNkNGM1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTE0
LDYgKzkxNCw4IEBACiAJCTUxOEU4RjBDMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEU4
RjAzMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuaCAqLzsgfTsKIAkJNTE4RThG
MEQxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4RThGMDUxNkIyMDkzNzAwRTkxNDI5IC8qIERv
d25sb2FkTWFjLm1tICovOyB9OwogCQk1MTkyRDU3NjE5NjFGRDAzMDBDRDE5QUEgLyogU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxOTJENTc1MTk2MUZEMDMwMENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLm1tICovOyB9OworCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE5MzNERUIxOTY1RUIyNDAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNTE5
MzNERjAxOTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTkzM0RFQzE5NjVFQjI0MDA4QUMzRUEg
LyogTWVudVV0aWxpdGllcy5tbSAqLzsgfTsKIAkJNTFBNEQ1QTkxNkNBQzRGRjAwMEU2MTVFIC8q
IFN0YXRpc3RpY3NSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVz
dC5jcHAgKi87IH07CiAJCTUxQTU1NUY1MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51
SXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUE1NTVGMzEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwICovOyB9Owog
CQk1MUE1NTVGNjEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU1NUY0MTI4QzZDNDcw
MDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTE2LDYgKzI5MTgsOCBAQAogCQk1MThFOEYwNTE2
QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE5MkQ1NzExOTYxRkEyRjAwQ0QxOUFBIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTkyRDU3NTE5NjFGRDAzMDBDRDE5QUEgLyogU2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxOTMzREVCMTk2NUVCMjQwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbnVVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE5MzNERUMxOTY1RUIyNDAwOEFDM0VBIC8qIE1lbnVVdGls
aXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW51VXRp
bGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE0RDVBODE2Q0FDNEZG
MDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhdGlzdGljc1JlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUE1NTVGMzEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDb250ZXh0TWVudUl0
ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE1NTVGNDEyOEM2QzQ3MDA5
QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tDb250ZXh0TWVudUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQyNTYsNiArNDI2MCw4IEBACiAJCQkJQkNFMDkzNzUxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVy
SG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJMUEyNEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1h
Y2hVdGlsaXRpZXMuY3BwICovLAogCQkJCTFBMjRCNUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNo
VXRpbGl0aWVzLmggKi8sCisJCQkJNTE5MzNERUIxOTY1RUIyNDAwOEFDM0VBIC8qIE1lbnVVdGls
aXRpZXMuaCAqLywKKwkJCQk1MTkzM0RFQzE5NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0aWxpdGll
cy5tbSAqLywKIAkJCQkxQTI0QkYzOTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFj
LmNwcCAqLywKIAkJCQkyOTZCRDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVz
LmggKi8sCiAJCQkJMjk2QkQ4NUMxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5t
bSAqLywKQEAgLTc2MzIsNiArNzYzOCw3IEBACiAJCQkJQkM1Qzc1QzgxNDk1NERBNjAwQkM0Nzc1
IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5NzE0
NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0I5RTI0QjExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5NTc4OUMxOEFENEYxOTAwQjlFRDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZv
cm1EZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTU1NUY2MTI4QzZDNDcw
MDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNTU2
MDExMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTAwNyw2ICs5MDE0LDcgQEAKIAkJCQk1MUE0RDVBOTE2Q0FDNEZGMDAwRTYxNUUg
LyogU3RhdGlzdGljc1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMzMwNkUxNkIx
RDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUNFQ0QyNDE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTE5MzNERjAxOTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFN
YXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0NEI5NUIxNkI3M0Y5
RjAwQjdCQkQ4IC8qIFN0b3JhZ2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjMx
QTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IGM5N2VhMWQuLjM3MTk4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODI3LDcgKzgyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAKICAgICBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyJiBzZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyKCk7CiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcm
IG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKLSAgICB2b2lkIGhhbmRsZVNlbGVj
dGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50Jik7CisgICAgdm9pZCBoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVy
cywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBib29sIHNlcnZpY2VDb250cm9sc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VDb250cm9sc0VuYWJsZWQ7IH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggNTZmNWU2Yy4uYjdj
MWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9T
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtMjc4LDcgKzI3
OCwxMSBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5KiBvdmVybGF5LCBXZWJDb3JlOjpHcmFwaGljcwogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyOjpkcmF3U2VsZWN0aW9uSGlnaGxpZ2h0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAg
ICAgQVNTRVJUKCFtX2RyYXdpbmdUZWxlcGhvbmVOdW1iZXJIaWdobGlnaHQpOwotICAgIEFTU0VS
VChtX2N1cnJlbnRTZWxlY3Rpb25SZWN0cy5zaXplKCkpOworCisgICAgLy8gSXQncyBwb3NzaWJs
ZSB0byBlbmQgdXAgZHJhd2luZyB0aGUgc2VsZWN0aW9uIGhpZ2hsaWdodCBiZWZvcmUgd2UndmUg
YWN0dWFsbHkgcmVjZWl2ZWQgdGhlIHNlbGVjdGlvbiByZWN0cy4KKyAgICAvLyBJZiB0aGF0IGhh
cHBlbnMgd2UnbGwgZW5kIHVwIGhlcmUgYWdhaW4gb25jZSB3ZSBoYXZlIHRoZSByZWN0cy4KKyAg
ICBpZiAobV9jdXJyZW50U2VsZWN0aW9uUmVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CiAKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gaW5zdGFsbGVkIHNlbGVjdGlvbiBzZXJ2aWNlcyBh
bmQgd2UgaGF2ZSBubyBwaG9uZSBudW1iZXJzIGRldGVjdGVkLCB0aGVuIHdlIGhhdmUgbm90aGlu
ZyB0byBkcmF3LgogICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuaGFzU2VsZWN0aW9uU2Vy
dmljZXMoKSAmJiBtX2N1cnJlbnRUZWxlcGhvbmVOdW1iZXJSYW5nZXMuaXNFbXB0eSgpKQpAQCAt
NDMwLDggKzQzNCwxMiBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmhhbmRsZUNs
aWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKICAgICAgICAgQVNTRVJUKG1fY3Vy
cmVudFRlbGVwaG9uZU51bWJlclJhbmdlcy5zaXplKCkgPT0gMSk7CiAgICAgICAgIG1fd2ViUGFn
ZS0+aGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2sobV9jdXJyZW50VGVsZXBob25lTnVtYmVyUmFu
Z2VzWzBdLT50ZXh0KCksIHBvaW50KTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRTog
SW5jbHVkZSBhbGwgc2VsZWN0ZWQgdGVsZXBob25lIG51bWJlcnMgc28gdGhleSBjYW4gYmUgYWRk
ZWQgdG8gdGhlIG1lbnUgYXMgd2VsbC4KLSAgICAgICAgbV93ZWJQYWdlLT5oYW5kbGVTZWxlY3Rp
b25TZXJ2aWNlQ2xpY2sobV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zZWxlY3Rp
b24oKSwgcG9pbnQpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBzZWxlY3RlZFRlbGVwaG9uZU51
bWJlcnM7CisgICAgICAgIHNlbGVjdGVkVGVsZXBob25lTnVtYmVycy5yZXNlcnZlQ2FwYWNpdHko
bV9jdXJyZW50VGVsZXBob25lTnVtYmVyUmFuZ2VzLnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0
byYgcmFuZ2UgOiBtX2N1cnJlbnRUZWxlcGhvbmVOdW1iZXJSYW5nZXMpCisgICAgICAgICAgICBz
ZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMuYXBwZW5kKHJhbmdlLT50ZXh0KCkpOworCisgICAgICAg
IG1fd2ViUGFnZS0+aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkuc2VsZWN0aW9uKCksIHNlbGVjdGVkVGVsZXBob25lTnVtYmVycywg
cG9pbnQpOwogICAgIH0KIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA2N2MyNzU1Li42ZjhiZjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVRlbGVwaG9uZU51
bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBJbnRQb2ludCYgcAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLXZvaWQgV2ViUGFnZTo6aGFuZGxlU2Vs
ZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IEludFBv
aW50JiBwb2ludCkKK3ZvaWQgV2ViUGFnZTo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZy
YW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwaG9uZU51bWJl
cnMsIGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
c2VsZWN0aW9uLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKICAgICBpZiAoIXJhbmdlKQpAQCAt
MTAzNiw3ICsxMDM2LDcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xp
Y2soRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgSW50UG8KICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbc2VsZWN0aW9uRGF0YSBieXRlc10pLCBbc2VsZWN0aW9uRGF0YSBsZW5ndGhd
KTsKICAgICBib29sIGlzRWRpdGFibGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDb250ZW50
UmljaGx5RWRpdGFibGUoKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hv
d1NlbGVjdGlvblNlcnZpY2VNZW51KGRhdGEsIGlzRWRpdGFibGUsIHBvaW50KSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93U2VsZWN0aW9uU2VydmljZU1lbnUoZGF0YSwg
cGhvbmVOdW1iZXJzLCBpc0VkaXRhYmxlLCBwb2ludCkpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234376</attachid>
            <date>2014-07-03 15:55:23 -0700</date>
            <delta_ts>2014-07-03 17:14:44 -0700</delta_ts>
            <desc>Patch v2 - Fixed style errors and rebased</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30627</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDFiMDM4Li4wZDhjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDctMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFdoZW4gc2hvd2luZyB0aGUgc2VsZWN0aW9uIG1lbnUsIGluY2x1ZGUgbWVudSBvcHRpb25z
IGZvciBhbGwgc2VsZWN0ZWQgcGhvbmUgbnVtYmVycy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE2OTgzNDM0PiwgPHJkYXI6Ly9wcm9ibGVtLzE2ODc0NTY4PiwgYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nczoKKworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyYW5n
ZXNPdmVybGFwKTogRml4IHJldmVyc2VkIGFyZ3VtZW50cyB0aGF0IGNhdXNlZCBzb21lIHR5cGVz
IG9mIG92ZXJsYXBzIHRvIG5vdCBiZSBkZXRlY3RlZC4KKwogMjAxNC0wNy0wMyAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdURjo6bW92ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXgg
M2EzY2M3Zi4uODZlNzUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncwpAQCAtMTE4LDYgKzExOCw5IEBACiAvKiBVbmRvIGFjdGlvbiBu
YW1lICovCiAiQm9sZCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkJvbGQiOwogCisvKiBtZW51IGl0
ZW0gZm9yIG1ha2luZyBhIHRlbGVwaG9uZSBjYWxsIHRvIGEgdGVsZXBob25lIG51bWJlciAqLwor
IkNhbGwg4oCcJUDigJ0gVXNpbmcgaVBob25lIiA9ICJDYWxsIOKAnCVA4oCdIFVzaW5nIGlQaG9u
ZSI7CisKIC8qIEZpbGUgVXBsb2FkIGFsZXJ0IHNoZWV0IGJ1dHRvbiBzdHJpbmcgdG8gY2FuY2Vs
ICovCiAiQ2FuY2VsIChmaWxlIHVwbG9hZCBhY3Rpb24gc2hlZXQpIiA9ICJDYW5jZWwiOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcAppbmRleCA5YjJkNGU5Li4xNGJiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
QEAgLTIwMDgsMTEgKzIwMDgsMTEgQEAgYm9vbCByYW5nZXNPdmVybGFwKGNvbnN0IFJhbmdlKiBh
LCBjb25zdCBSYW5nZSogYikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBFbmQgb2Yg
Zmlyc3QgcmFuZ2UgaXMgaW5zaWRlIHNlY29uZCByYW5nZS4KLSAgICBpZiAoYS0+Y29tcGFyZUJv
dW5kYXJ5UG9pbnRzKFJhbmdlOjpFTkRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04p
ID49IDAgJiYgZW5kVG9FbmQgPD0gMCkKKyAgICBpZiAoYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRz
KFJhbmdlOjpTVEFSVF9UT19FTkQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04pID49IDAgJiYgZW5k
VG9FbmQgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBTdGFydCBvZiBmaXJz
dCByYW5nZSBpcyBpbnNpZGUgc2Vjb25kIHJhbmdlLgotICAgIGlmIChzdGFydFRvU3RhcnQgPj0g
MCAmJiBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNUQVJUX1RPX0VORCwgYiwgQVNT
RVJUX05PX0VYQ0VQVElPTikgPD0gMCkKKyAgICBpZiAoc3RhcnRUb1N0YXJ0ID49IDAgJiYgYS0+
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpFTkRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19F
WENFUFRJT04pIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDFmZTQ0MGYuLjcyNTQ0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTE2OCw2ICsx
NjgsNTIgQEAKIAogMjAxNC0wNy0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2hlbiBzaG93aW5nIHRoZSBzZWxlY3Rpb24gbWVudSwgaW5jbHVkZSBtZW51
IG9wdGlvbnMgZm9yIGFsbCBzZWxlY3RlZCBwaG9uZSBudW1iZXJzLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTY5ODM0MzQ+LCA8cmRhcjovL3Byb2JsZW0vMTY4NzQ1Njg+LCBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDYxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgc29tZSB0ZWxlcGhvbmUgbnVt
YmVyIG1lbnUgbG9naWMgZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgaGVyZS4KKyAgICAgICAg
QWxzbyBwcm92aWRlIHV0aWxpdHkgdG8gZ2V0IGp1c3QgdGhlIG9uZSBtZW51IGl0ZW0gcmVsZXZh
bnQgdG8gYSB0ZWxlcGhvbmUgbnVtYmVyLgorICAgICAgICAqIFBsYXRmb3JtL21hYy9NZW51VXRp
bGl0aWVzLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW06IEFkZGVk
LgorICAgICAgICAoV2ViS2l0Ojpwcm9jZXNzTWVudUZvclRlbGVwaG9uZU51bWJlcik6CisgICAg
ICAgIChXZWJLaXQ6Om1lbnVJdGVtRm9yVGVsZXBob25lTnVtYmVyKToKKyAgICAgICAgKFdlYktp
dDo6bWVudUl0ZW1zRm9yVGVsZXBob25lTnVtYmVyKToKKworICAgICAgICAqIFBsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6IFJl
dHVybiBhIGxvY2FsaXplZCBmb3JtYXR0ZWQgcGhvbmUgbnVtYmVyLgorCisgICAgICAgIEFkZCBh
IG1lbWJlciB0byB0cmFjayB0aGUgc2VsZWN0ZWQgcGhvbmUgbnVtYmVyczoKKyAgICAgICAgKiBT
aGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0
TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzKToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzZXR1cFNlcnZpY2VzTWVudSk6IEFsc28gYWRkIG1lbnUgaXRlbXMgZm9yIGVhY2gg
cGhvbmUgbnVtYmVyIHRoYXQgaXMKKyAgICAgICAgICBpbiB0aGUgc2VsZWN0aW9uLgorCisgICAg
ICAgIFN3aXRjaCBhd2F5IGZyb20gYSBXS1NJIG1ldGhvZCwgYW5kIHJlbW92ZSBhIGxvdCBvZiB1
bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucyBhbmQgc29mdCBsaW5raW5nOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNob3dUZWxlcGhvbmVOdW1iZXJNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzaG93U2VsZWN0aW9uU2VydmljZU1lbnUpOgorCisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpkcmF3U2VsZWN0aW9uSGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2spOiBQYXNz
IHRoZSBwaG9uZSBudW1iZXJzIGFsb25nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGlj
ayk6IFBhc3MgdGhlIHBob25lIG51bWJlcnMgYWxvbmcuCisKKzIwMTQtMDctMDMgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIEZvbGxvd3VwIHRvICJyZWN0cyBz
ZW50IHRvIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIgYXJlIHdyb25nIgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NTY4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjYwNjE1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lbnVVdGlsaXRpZXNfaAorI2RlZmluZSBNZW51VXRpbGl0aWVzX2gKKworI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorTlNNZW51SXRl
bSAqbWVudUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1i
ZXJTdHJpbmcpOworTlNBcnJheSAqbWVudUl0ZW1zRm9yVGVsZXBob25lTnVtYmVyKGNvbnN0IFN0
cmluZyYgdGVsZXBob25lTnVtYmVyKTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIE1lbnVVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvTWVudVV0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
MzIzOWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01l
bnVVdGlsaXRpZXMubW0KQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIk1lbnVVdGlsaXRpZXMuaCIKKworI2ltcG9ydCAiU3RyaW5nVXRp
bGl0aWVzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorCisjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTAwMAorU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKERhdGFE
ZXRlY3RvcnMpCitTT0ZUX0xJTktfQ0xBU1MoRGF0YURldGVjdG9ycywgRERBY3Rpb24pCitTT0ZU
X0xJTktfQ0xBU1MoRGF0YURldGVjdG9ycywgRERBY3Rpb25zTWFuYWdlcikKK1NPRlRfTElOS19D
T05TVEFOVChEYXRhRGV0ZWN0b3JzLCBEREJpbmRlclBob25lTnVtYmVyS2V5LCBDRlN0cmluZ1Jl
ZikKKworQGludGVyZmFjZSBEREFjdGlvbiA6IE5TT2JqZWN0CitAcHJvcGVydHkgKHJlYWRvbmx5
KSBOU1N0cmluZyAqYWN0aW9uVVRJOworQGVuZAorCit0eXBlZGVmIHZvaWQqIEREQWN0aW9uQ29u
dGV4dDsKKworQGludGVyZmFjZSBEREFjdGlvbnNNYW5hZ2VyIDogTlNPYmplY3QKKysgKEREQWN0
aW9uc01hbmFnZXIgKilzaGFyZWRNYW5hZ2VyOworLSAoTlNBcnJheSAqKW1lbnVJdGVtc0ZvclZh
bHVlOihOU1N0cmluZyAqKXZhbHVlIHR5cGU6KENGU3RyaW5nUmVmKXR5cGUgc2VydmljZTooTlNT
dHJpbmcgKilzZXJ2aWNlIGNvbnRleHQ6KEREQWN0aW9uQ29udGV4dCAqKWNvbnRleHQ7CitAZW5k
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MDAwCisKK2VudW0gY2xhc3MgRXhwZWN0ZWRQcm9jZXNzTWVudVJlc3VsdCB7CisgICAgRGlhbEl0
ZW0sCisgICAgTWVudUFycmF5Cit9OworCitzdGF0aWMgaWQgcHJvY2Vzc01lbnVGb3JUZWxlcGhv
bmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1iZXIsIEV4cGVjdGVkUHJvY2Vzc01l
bnVSZXN1bHQgZXhwZWN0ZWRSZXN1bHQpCit7CisgICAgTlNNdXRhYmxlQXJyYXkgKml0ZW1zOwor
ICAgIE5TTXV0YWJsZUFycmF5ICpmYWNlVGltZUl0ZW1zOworCisgICAgaWYgKGV4cGVjdGVkUmVz
dWx0ID09IEV4cGVjdGVkUHJvY2Vzc01lbnVSZXN1bHQ6Ok1lbnVBcnJheSkgeworICAgICAgICBp
dGVtcz0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICAgICAgZmFjZVRpbWVJdGVtcz0gW05T
TXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICB9CisKKyAgICBOU01lbnVJdGVtICpkaWFsSXRlbSA9
IG5pbDsKKworICAgIE5TQXJyYXkgKnByb3Bvc2VkTWVudSA9IFtbZ2V0RERBY3Rpb25zTWFuYWdl
ckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gbWVudUl0ZW1zRm9yVmFsdWU6KE5TU3RyaW5nICopdGVs
ZXBob25lTnVtYmVyIHR5cGU6Z2V0RERCaW5kZXJQaG9uZU51bWJlcktleSgpIHNlcnZpY2U6bmls
IGNvbnRleHQ6bmlsXTsKKyAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gcHJvcG9zZWRNZW51
KSB7CisgICAgICAgIE5TRGljdGlvbmFyeSAqcmVwcmVzZW50ZWRPYmplY3QgPSBpdGVtLnJlcHJl
c2VudGVkT2JqZWN0OworICAgICAgICBpZiAoIVtyZXByZXNlbnRlZE9iamVjdCBpc0tpbmRPZkNs
YXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIEREQWN0aW9uICphY3Rpb25PYmplY3QgPSBbcmVwcmVzZW50ZWRPYmplY3Qgb2JqZWN0Rm9y
S2V5OkAiRERBY3Rpb24iXTsKKyAgICAgICAgaWYgKCFbYWN0aW9uT2JqZWN0IGlzS2luZE9mQ2xh
c3M6Z2V0RERBY3Rpb25DbGFzcygpXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGlmIChbYWN0aW9uT2JqZWN0LmFjdGlvblVUSSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuZGlhbCJd
KSB7CisgICAgICAgICAgICBpdGVtLnRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
V0VCX1VJX1NUUklORygiQ2FsbCDigJwlQOKAnSBVc2luZyBpUGhvbmUiLCAibWVudSBpdGVtIGZv
ciBtYWtpbmcgYSB0ZWxlcGhvbmUgY2FsbCB0byBhIHRlbGVwaG9uZSBudW1iZXIiKSwgZm9ybWF0
dGVkUGhvbmVOdW1iZXJTdHJpbmcodGVsZXBob25lTnVtYmVyKV07CisgICAgICAgICAgICBpZiAo
ZXhwZWN0ZWRSZXN1bHQgPT0gRXhwZWN0ZWRQcm9jZXNzTWVudVJlc3VsdDo6RGlhbEl0ZW0pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisKKyAgICAgICAgICAgIGRpYWxJdGVtID0gaXRl
bTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV4cGVj
dGVkUmVzdWx0ID09IEV4cGVjdGVkUHJvY2Vzc01lbnVSZXN1bHQ6Ok1lbnVBcnJheSAmJiBbYWN0
aW9uT2JqZWN0LmFjdGlvblVUSSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuZmFjZXRpbWUiXSkKKyAg
ICAgICAgICAgIFtmYWNlVGltZUl0ZW1zIGFkZE9iamVjdDppdGVtXTsKKyAgICB9CisKKyAgICBp
ZiAoZXhwZWN0ZWRSZXN1bHQgPT0gRXhwZWN0ZWRQcm9jZXNzTWVudVJlc3VsdDo6RGlhbEl0ZW0p
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgd2Un
cmUgYnVpbGRpbmcgdGhlIG1lbnUgYXJyYXkuCisgICAgQVNTRVJUKGV4cGVjdGVkUmVzdWx0ID09
IEV4cGVjdGVkUHJvY2Vzc01lbnVSZXN1bHQ6Ok1lbnVBcnJheSk7CisKKyAgICBpZiAoZGlhbEl0
ZW0pCisgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6ZGlhbEl0ZW1dOworCisgICAgaWYgKGZhY2VU
aW1lSXRlbXMuY291bnQpIHsKKyAgICAgICAgaWYgKGl0ZW1zLmNvdW50KQorICAgICAgICAgICAg
W2l0ZW1zIGFkZE9iamVjdDpbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07CisgICAgICAgIFtp
dGVtcyBhZGRPYmplY3RzRnJvbUFycmF5OmZhY2VUaW1lSXRlbXNdOworICAgIH0KKworICAgIHJl
dHVybiBpdGVtcy5jb3VudCA/IGl0ZW1zIDogbmlsOworfQorCitOU01lbnVJdGVtICptZW51SXRl
bUZvclRlbGVwaG9uZU51bWJlcihjb25zdCBTdHJpbmcmIHRlbGVwaG9uZU51bWJlcikKK3sKKyAg
ICByZXR1cm4gKE5TTWVudUl0ZW0gKilwcm9jZXNzTWVudUZvclRlbGVwaG9uZU51bWJlcih0ZWxl
cGhvbmVOdW1iZXIsIEV4cGVjdGVkUHJvY2Vzc01lbnVSZXN1bHQ6OkRpYWxJdGVtKTsKK30KKwor
TlNBcnJheSAqbWVudUl0ZW1zRm9yVGVsZXBob25lTnVtYmVyKGNvbnN0IFN0cmluZyYgdGVsZXBo
b25lTnVtYmVyKQoreworICAgIHJldHVybiAoTlNBcnJheSAqKXByb2Nlc3NNZW51Rm9yVGVsZXBo
b25lTnVtYmVyKHRlbGVwaG9uZU51bWJlciwgRXhwZWN0ZWRQcm9jZXNzTWVudVJlc3VsdDo6TWVu
dUFycmF5KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAppbmRleCAxNDM4NTc2Li45NmVm
YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5o
CkBAIC0zMiw3ICszMiwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gTk9URTogVGhpcyBk
b2VzIG5vdCB1c2UgU3RyaW5nOjpvcGVyYXRvciBOU1N0cmluZyooKSBzaW5jZSB0aGF0IGZ1bmN0
aW9uCiAvLyBleHBlY3RzIHRvIGJlIGNhbGxlZCBvbiB0aGUgdGhyZWFkIHJ1bm5pbmcgV2ViQ29y
ZS4KLU5TU3RyaW5nKiBuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOwor
TlNTdHJpbmcgKm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoY29uc3QgU3RyaW5nJik7CisKKyNp
ZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCitOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJT
dHJpbmcoTlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVOdW1iZXIpOworI2VuZGlmCiAKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KaW5kZXggMzEx
MmEyNC4uMDhjNDA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0
cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5n
VXRpbGl0aWVzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldLU2hhcmVkQVBJQ2Fz
dC5oIgogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2lu
Zy5oPgogI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgsNCArMzksMzkgQEAgTlNTdHJpbmcgKm5zU3RyaW5nRnJv
bVdlYkNvcmVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZy5p
c0VtcHR5KCkgPyBAIiIgOiBDRkJyaWRnaW5nUmVsZWFzZShXS1N0cmluZ0NvcHlDRlN0cmluZygw
LCB0b0FQSShzdHJpbmcuaW1wbCgpKSkpOwogfQogCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAw
MAorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoUGhvbmVOdW1iZXJzKTsKKwordHlwZWRl
ZiBzdHJ1Y3QgX19DRlBob25lTnVtYmVyKiBDRlBob25lTnVtYmVyUmVmOworCisvLyBUaGVzZSBm
dW5jdGlvbnMgYXJlIGRlY2xhcmVkIHdpdGggX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRl
ZmF1bHQiKSkpCisvLyBXZSBjdXJyZW50bHkgZG9uJ3QgaGF2ZSBhIHdheSB0byBzb2Z0IGxpbmsg
c3VjaCBmdW5jdGlvbnMsIHNvIHdlIGZvcndhcmQgZGVjbGFyZSB0aGVtIGFnYWluIGhlcmUuCitD
RlBob25lTnVtYmVyUmVmIENGUGhvbmVOdW1iZXJDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIENGU3Ry
aW5nUmVmLCBDRlN0cmluZ1JlZik7CitTT0ZUX0xJTksoUGhvbmVOdW1iZXJzLCBDRlBob25lTnVt
YmVyQ3JlYXRlLCBDRlBob25lTnVtYmVyUmVmLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBD
RlN0cmluZ1JlZiBkaWdpdHMsIENGU3RyaW5nUmVmIGNvdW50cnlDb2RlKSwgKGFsbG9jYXRvciwg
ZGlnaXRzLCBjb3VudHJ5Q29kZSkpOworCitDRlN0cmluZ1JlZiBDRlBob25lTnVtYmVyQ29weUZv
cm1hdHRlZFJlcHJlc2VudGF0aW9uKENGUGhvbmVOdW1iZXJSZWYpOworU09GVF9MSU5LKFBob25l
TnVtYmVycywgQ0ZQaG9uZU51bWJlckNvcHlGb3JtYXR0ZWRSZXByZXNlbnRhdGlvbiwgQ0ZTdHJp
bmdSZWYsIChDRlBob25lTnVtYmVyUmVmIHBob25lTnVtYmVyKSwgKHBob25lTnVtYmVyKSk7CisK
K0NGU3RyaW5nUmVmIENGUGhvbmVOdW1iZXJDb3B5VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbihD
RlBob25lTnVtYmVyUmVmKTsKK1NPRlRfTElOSyhQaG9uZU51bWJlcnMsIENGUGhvbmVOdW1iZXJD
b3B5VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbiwgQ0ZTdHJpbmdSZWYsKENGUGhvbmVOdW1iZXJS
ZWYgcGhvbmVOdW1iZXIpLCAocGhvbmVOdW1iZXIpKTsKKworCitOU1N0cmluZyAqZm9ybWF0dGVk
UGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVOdW1iZXIpCit7CisgICAg
TlNTdHJpbmcgKmNvdW50cnlDb2RlID0gW1tbTlNMb2NhbGUgY3VycmVudExvY2FsZV0gb2JqZWN0
Rm9yS2V5Ok5TTG9jYWxlQ291bnRyeUNvZGVdIGxvd2VyY2FzZVN0cmluZ107CisKKyAgICBSZXRh
aW5QdHI8Q0ZQaG9uZU51bWJlclJlZj4gcGhvbmVOdW1iZXIgPSBhZG9wdENGKENGUGhvbmVOdW1i
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENGU3RyaW5nUmVmKW9yaWdpbmFsUGhvbmVO
dW1iZXIsIChDRlN0cmluZ1JlZiljb3VudHJ5Q29kZSkpOworICAgIGlmICghcGhvbmVOdW1iZXIp
CisgICAgICAgIHJldHVybiBvcmlnaW5hbFBob25lTnVtYmVyOworCisgICAgQ0ZTdHJpbmdSZWYg
cGhvbmVOdW1iZXJTdHJpbmcgPSBDRlBob25lTnVtYmVyQ29weUZvcm1hdHRlZFJlcHJlc2VudGF0
aW9uKHBob25lTnVtYmVyLmdldCgpKTsKKyAgICBpZiAoIXBob25lTnVtYmVyU3RyaW5nKQorICAg
ICAgICBwaG9uZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5VW5mb3JtYXR0ZWRSZXBy
ZXNlbnRhdGlvbihwaG9uZU51bWJlci5nZXQoKSk7CisKKyAgICByZXR1cm4gWyhOU1N0cmluZyAq
KXBob25lTnVtYmVyU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShU
RUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEwMDAKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
bnRleHRNZW51Q29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db250ZXh0TWVu
dUNvbnRleHREYXRhLmgKaW5kZXggODU3MmQ0Ny4uMzIwMzUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCkBAIC01NywxNCArNTcsMTYgQEAg
cHVibGljOgogICAgIGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6OkRhdGEmIHdlYkhpdFRlc3RSZXN1
bHREYXRhKCkgY29uc3QgeyByZXR1cm4gbV93ZWJIaXRUZXN0UmVzdWx0RGF0YTsgfQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0gICAgQ29udGV4dE1lbnVDb250ZXh0RGF0YShjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNlbGVjdGlvbkRhdGEsIGJvb2wgaXNFZGl0YWJsZSkKKyAgICBD
b250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2VsZWN0aW9uRGF0
YSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNlbGVjdGVkVGVsZXBob25lTnVtYmVycywgYm9vbCBp
c0VkaXRhYmxlKQogICAgICAgICA6IG1faXNUZWxlcGhvbmVOdW1iZXJDb250ZXh0KGZhbHNlKQog
ICAgICAgICAsIG1fY29udHJvbGxlZFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSkKKyAgICAg
ICAgLCBtX3NlbGVjdGVkVGVsZXBob25lTnVtYmVycyhzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMp
CiAgICAgICAgICwgbV9zZWxlY3Rpb25Jc0VkaXRhYmxlKGlzRWRpdGFibGUpCiAgICAgeyB9CiAK
ICAgICBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udHJvbGxlZEltYWdlSGFuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sbGVkSW1hZ2VIYW5kbGU7IH0KICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNvbnRyb2xsZWRTZWxlY3Rpb25EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9jb250cm9sbGVkU2VsZWN0aW9uRGF0YTsgfQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
ZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkVGVsZXBo
b25lTnVtYmVyczsgfQogCiAgICAgYm9vbCBjb250cm9sbGVkRGF0YUlzRWRpdGFibGUoKSBjb25z
dDsKICAgICBib29sIG5lZWRzU2VydmljZXNNZW51KCkgY29uc3QgeyByZXR1cm4gIW1fY29udHJv
bGxlZEltYWdlSGFuZGxlLmlzTnVsbCgpIHx8ICFtX2NvbnRyb2xsZWRTZWxlY3Rpb25EYXRhLmlz
RW1wdHkoKTsgfQpAQCAtODUsNiArODcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG1fY29udHJvbGxlZEltYWdl
SGFuZGxlOwogICAgIFZlY3Rvcjx1aW50OF90PiBtX2NvbnRyb2xsZWRTZWxlY3Rpb25EYXRhOwor
ICAgIFZlY3RvcjxTdHJpbmc+IG1fc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzOwogICAgIGJvb2wg
bV9zZWxlY3Rpb25Jc0VkaXRhYmxlOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDI2MDVkMWIuLmY5ZmYzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotICAgIHZvaWQgc2hvd1NlbGVj
dGlvblNlcnZpY2VNZW51KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgc2VsZWN0aW9uQXNSVEZE
LCBib29sIGlzRWRpdGFibGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBz
aG93U2VsZWN0aW9uU2VydmljZU1lbnUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBzZWxlY3Rp
b25Bc1JURkQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBib29sIGlz
RWRpdGFibGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5kaWYKIAogICAgIC8vIFNl
YXJjaCBwb3B1cCByZXN1bHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5NzBkZjlmLi5iZmFhZDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTM5NCw3
ICszOTQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU0VSVklDRV9DT05UUk9MUykKLSAgICBTaG93U2VsZWN0aW9uU2VydmljZU1lbnUoSVBDOjpE
YXRhUmVmZXJlbmNlIHNlbGVjdGlvbkFzUlRGRCwgYm9vbCBpc0VkaXRhYmxlLCBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCkKKyAgICBTaG93U2VsZWN0aW9uU2VydmljZU1lbnUoSVBDOjpEYXRhUmVm
ZXJlbmNlIHNlbGVjdGlvbkFzUlRGRCwgVmVjdG9yPFN0cmluZz4gdGVsZXBob25lTnVtYmVycywg
Ym9vbCBpc0VkaXRhYmxlLCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggMWZmYmU2ZS4uZjg0MGYzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94
eU1hYy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAi
RGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiTWVudVV0aWxpdGllcy5oIgogI2ltcG9ydCAiUGFn
ZUNsaWVudEltcGwuaCIKICNpbXBvcnQgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2ltcG9ydCAiU3Ry
aW5nVXRpbGl0aWVzLmgiCkBAIC0zOTgsNiArMzk5LDE3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6c2V0dXBTZXJ2aWNlc01lbnUoY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYg
Y29uCiAKICAgICBtX3NlcnZpY2VzTWVudSA9IFtwaWNrZXIgbWVudV07CiAKKyAgICAvLyBFeHBs
aWNpdGx5IGFkZCBhIG1lbnUgaXRlbSBmb3IgZWFjaCB0ZWxlcGhvbmUgbnVtYmVyIHRoYXQgaXMg
aW4gdGhlIHNlbGVjdGlvbi4KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VsZWN0ZWRUZWxl
cGhvbmVOdW1iZXJzID0gY29udGV4dC5zZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMoKTsKKyAgICBp
ZiAoIXNlbGVjdGVkVGVsZXBob25lTnVtYmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgW21fc2Vy
dmljZXNNZW51LmdldCgpIGFkZEl0ZW06W05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV1dOworICAg
ICAgICBmb3IgKGF1dG8mIHRlbGVwaG9uZU51bWJlciA6IHNlbGVjdGVkVGVsZXBob25lTnVtYmVy
cykgeworICAgICAgICAgICAgTlNNZW51SXRlbSAqaXRlbSA9IG1lbnVJdGVtRm9yVGVsZXBob25l
TnVtYmVyKHRlbGVwaG9uZU51bWJlcik7CisgICAgICAgICAgICBpZiAoaXRlbSkKKyAgICAgICAg
ICAgICAgICBbbV9zZXJ2aWNlc01lbnUuZ2V0KCkgYWRkSXRlbTppdGVtXTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIC8vIElmIHRoZXJlIGlzIG5vIHNlcnZpY2VzIG1lbnUsIHRoZW4gdGhlIGV4
aXN0aW5nIHNlcnZpY2VzIG9uIHRoZSBzeXN0ZW0gaGF2ZSBjaGFuZ2VkLgogICAgIC8vIEFzayB0
aGUgVUlQcm9jZXNzIHRvIHJlZnJlc2ggdGhhdCBsaXN0IG9mIHNlcnZpY2VzLgogICAgIC8vIElm
IDxyZGFyOi8vcHJvYmxlbS8xNjc3NjgzMT4gaXMgcmVzb2x2ZWQgdGhlbiB3ZSBjYW4gbW9yZSBh
Y2N1cmF0ZWx5IGtlZXAgdGhlIGxpc3QgdXAgdG8gZGF0ZSB3aXRob3V0IHRoaXMgY2FsbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXgg
MDZhZTc4My4uNDY0ODViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIkRpY3Rpb25hcnlQ
b3B1cEluZm8uaCIKICNpbXBvcnQgIkVkaXRpbmdSYW5nZS5oIgogI2ltcG9ydCAiRWRpdG9yU3Rh
dGUuaCIKKyNpbXBvcnQgIk1lbnVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJv
YXJkRXZlbnQuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJ
bXBsLmgiCkBAIC00OSwxMCArNTAsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1VzZXJBZ2VudC5oPgotI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzLmg+CkBAIC02MiwxNyArNjEsNiBAQAogLSAodm9p
ZClzcGVha1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CiBAZW5kCiAKLVNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SS19PUFRJT05BTChEYXRhRGV0ZWN0b3JzKQotU09GVF9MSU5LX0NMQVNTKERh
dGFEZXRlY3RvcnMsIEREQWN0aW9uc01hbmFnZXIpCi1TT0ZUX0xJTktfQ09OU1RBTlQoRGF0YURl
dGVjdG9ycywgRERCaW5kZXJQaG9uZU51bWJlcktleSwgQ0ZTdHJpbmdSZWYpCi0KLXR5cGVkZWYg
dm9pZCogRERBY3Rpb25Db250ZXh0OwotCi1AaW50ZXJmYWNlIEREQWN0aW9uc01hbmFnZXIgOiBO
U09iamVjdAotKyAoRERBY3Rpb25zTWFuYWdlciAqKSBzaGFyZWRNYW5hZ2VyOwotLSAoTlNBcnJh
eSAqKSBtZW51SXRlbXNGb3JWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSB0eXBlOihDRlN0cmluZ1Jl
Zil0eXBlIHNlcnZpY2U6KE5TU3RyaW5nICopc2VydmljZSBjb250ZXh0OihEREFjdGlvbkNvbnRl
eHQgKiljb250ZXh0OwotQGVuZAotCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBN
RVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBwcm9jZXNzKCkuY29ubmVjdGlvbigpKQogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY5MCw4ICs2NzgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHNlYXJjaAogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKIHZvaWQg
V2ViUGFnZVByb3h5OjpzaG93VGVsZXBob25lTnVtYmVyTWVudShjb25zdCBTdHJpbmcmIHRlbGVw
aG9uZU51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQogewotICAgIE5TQXJy
YXkgKm1lbnVJdGVtcyA9IFtbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdl
cl0gbWVudUl0ZW1zRm9yVmFsdWU6KE5TU3RyaW5nICopdGVsZXBob25lTnVtYmVyIHR5cGU6Z2V0
RERCaW5kZXJQaG9uZU51bWJlcktleSgpIHNlcnZpY2U6bmlsIGNvbnRleHQ6bmlsXTsKLSAgICBt
ZW51SXRlbXMgPSBXS1RlbGVwaG9uZU51bWJlck1lbnVGcm9tUHJvcG9zZWRNZW51KG1lbnVJdGVt
cywgdGVsZXBob25lTnVtYmVyKTsKKyAgICBOU0FycmF5ICptZW51SXRlbXMgPSBtZW51SXRlbXNG
b3JUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTsKIAogICAgIFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiBpdGVtczsKICAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gbWVu
dUl0ZW1zKSB7CkBAIC03MTAsMTAgKzY5NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1Rl
bGVwaG9uZU51bWJlck1lbnUoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1iZXIsIGNvbnN0CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotdm9pZCBXZWJQYWdlUHJveHk6
OnNob3dTZWxlY3Rpb25TZXJ2aWNlTWVudShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHNlbGVj
dGlvbkFzUlRGRCwgYm9vbCBpc0VkaXRhYmxlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2hvd1NlbGVjdGlvblNlcnZpY2VNZW51KGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgc2VsZWN0aW9uQXNSVEZELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25l
TnVtYmVycywgYm9vbCBpc0VkaXRhYmxlLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAg
VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0ZW1zOwotICAgIENvbnRleHRNZW51Q29u
dGV4dERhdGEgY29udGV4dERhdGEoc2VsZWN0aW9uQXNSVEZELnZlY3RvcigpLCBpc0VkaXRhYmxl
KTsKKyAgICBDb250ZXh0TWVudUNvbnRleHREYXRhIGNvbnRleHREYXRhKHNlbGVjdGlvbkFzUlRG
RC52ZWN0b3IoKSwgdGVsZXBob25lTnVtYmVycywgaXNFZGl0YWJsZSk7CiAKICAgICBpbnRlcm5h
bFNob3dDb250ZXh0TWVudShwb2ludCwgY29udGV4dERhdGEsIGl0ZW1zLCBDb250ZXh0TWVudUNs
aWVudEVsaWdpYmlsaXR5OjpOb3RFbGlnaWJsZUZvckNsaWVudCwgbnVsbHB0cik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OTY0NTE1NS4uNDBkN2U1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTE0LDYgKzkxNCw4IEBACiAJCTUxOEU4RjBDMTZCMjA5
MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEU4RjAzMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9h
ZE1hbmFnZXIuaCAqLzsgfTsKIAkJNTE4RThGMEQxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2Fk
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4
RThGMDUxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1tICovOyB9OwogCQk1MTkyRDU3
NjE5NjFGRDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOTJENTc1MTk2MUZEMDMw
MENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tICovOyB9OworCQk1MTkzM0RF
RjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5MzNERUIxOTY1RUIyNDAwOEFDM0VBIC8qIE1l
bnVVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNTE5MzNERjAxOTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVV
dGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTkzM0RFQzE5NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5tbSAqLzsgfTsKIAkJ
NTFBNEQ1QTkxNkNBQzRGRjAwMEU2MTVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTRENUE4MTZDQUM0RkYw
MDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi87IH07CiAJCTUxQTU1NUY1MTI4QzZD
NDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE1NTVGMzEyOEM2QzQ3MDA5QUJDRUMgLyogV0tD
b250ZXh0TWVudUl0ZW0uY3BwICovOyB9OwogCQk1MUE1NTVGNjEyOEM2QzQ3MDA5QUJDRUMgLyog
V0tDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQTU1NUY0MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTE1
LDYgKzI5MTcsOCBAQAogCQk1MThFOEYwNTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE5MkQ1NzExOTYxRkEyRjAwQ0QxOUFB
IC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNP
dmVybGF5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTkyRDU3
NTE5NjFGRDAzMDBDRDE5QUEgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOTMzREVCMTk2NUVCMjQwMDhB
QzNFQSAvKiBNZW51VXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lbnVVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE5MzNERUMx
OTY1RUIyNDAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZW51VXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGlzdGljc1JlcXVl
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE1NTVGMzEyOEM2QzQ3MDA5
QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUE1NTVGNDEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyNTQsNiArNDI1OCw4IEBACiAJCQkJQkNFMDkz
NzUxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJMUEy
NEI1RjAxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuY3BwICovLAogCQkJCTFBMjRC
NUYxMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggKi8sCisJCQkJNTE5MzNERUIx
OTY1RUIyNDAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCAqLywKKwkJCQk1MTkzM0RFQzE5NjVF
QjI0MDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5tbSAqLywKIAkJCQkxQTI0QkYzOTEyMDg5NkE2
MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCAqLywKIAkJCQkyOTZCRDg1QjE1MDE5QkMz
MDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8sCiAJCQkJMjk2QkQ4NUMxNTAxOUJDMzAw
NzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLywKQEAgLTc2MjEsNiArNzYyNyw3IEBACiAJ
CQkJQkM1Qzc1QzgxNDk1NERBNjAwQkM0Nzc1IC8qIFdLQ29ubmVjdGlvbkludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9u
UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RTI0QjExMjBFMTVDMDBBMTM3RTAgLyogV0tD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyog
TWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NTc4OUMxOEFENEYxOTAwQjlF
RDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxQTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBNTU2MDExMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4
dE1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODk5Niw2ICs5MDAzLDcgQEAKIAkJ
CQk1MUE0RDVBOTE2Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFEMzMwNkUxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1w
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFQ0QyNDE3MTYyREIxMDAxRkM5RUYgLyogU3Rv
cmFnZUFyZWFNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE5MzNERjAxOTY1RUIzMTAwOEFD
M0VBIC8qIE1lbnVVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4
Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE0NEI5NUIxNkI3M0Y5RjAwQjdCQkQ4IC8qIFN0b3JhZ2VNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjMxQTk2MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdl
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM5N2VhMWQuLjM3MTk4ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODI3LDcg
KzgyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAKICAgICBTZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyJiBzZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKCk7CiAgICAgdm9pZCBoYW5kbGVUZWxlcGhv
bmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKLSAgICB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBoYW5kbGVT
ZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVycywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
ICAgICBib29sIHNlcnZpY2VDb250cm9sc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZp
Y2VDb250cm9sc0VuYWJsZWQ7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIubW0KaW5kZXggNTZmNWU2Yy4uYjdjMWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5tbQpAQCAtMjc4LDcgKzI3OCwxMSBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGF5KiBvdmVybGF5LCBXZWJDb3JlOjpHcmFwaGlj
cwogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpkcmF3U2VsZWN0aW9uSGlnaGxpZ2h0
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgQVNTRVJUKCFtX2RyYXdpbmdUZWxlcGhvbmVO
dW1iZXJIaWdobGlnaHQpOwotICAgIEFTU0VSVChtX2N1cnJlbnRTZWxlY3Rpb25SZWN0cy5zaXpl
KCkpOworCisgICAgLy8gSXQncyBwb3NzaWJsZSB0byBlbmQgdXAgZHJhd2luZyB0aGUgc2VsZWN0
aW9uIGhpZ2hsaWdodCBiZWZvcmUgd2UndmUgYWN0dWFsbHkgcmVjZWl2ZWQgdGhlIHNlbGVjdGlv
biByZWN0cy4KKyAgICAvLyBJZiB0aGF0IGhhcHBlbnMgd2UnbGwgZW5kIHVwIGhlcmUgYWdhaW4g
b25jZSB3ZSBoYXZlIHRoZSByZWN0cy4KKyAgICBpZiAobV9jdXJyZW50U2VsZWN0aW9uUmVjdHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gaW5z
dGFsbGVkIHNlbGVjdGlvbiBzZXJ2aWNlcyBhbmQgd2UgaGF2ZSBubyBwaG9uZSBudW1iZXJzIGRl
dGVjdGVkLCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkcmF3LgogICAgIGlmICghV2ViUHJvY2Vz
czo6c2hhcmVkKCkuaGFzU2VsZWN0aW9uU2VydmljZXMoKSAmJiBtX2N1cnJlbnRUZWxlcGhvbmVO
dW1iZXJSYW5nZXMuaXNFbXB0eSgpKQpAQCAtNDMwLDggKzQzNCwxMiBAQCB2b2lkIFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OmhhbmRsZUNsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCkKICAgICAgICAgQVNTRVJUKG1fY3VycmVudFRlbGVwaG9uZU51bWJlclJhbmdlcy5zaXpl
KCkgPT0gMSk7CiAgICAgICAgIG1fd2ViUGFnZS0+aGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2so
bV9jdXJyZW50VGVsZXBob25lTnVtYmVyUmFuZ2VzWzBdLT50ZXh0KCksIHBvaW50KTsKICAgICB9
IGVsc2UgewotICAgICAgICAvLyBGSVhNRTogSW5jbHVkZSBhbGwgc2VsZWN0ZWQgdGVsZXBob25l
IG51bWJlcnMgc28gdGhleSBjYW4gYmUgYWRkZWQgdG8gdGhlIG1lbnUgYXMgd2VsbC4KLSAgICAg
ICAgbV93ZWJQYWdlLT5oYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2sobV93ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5zZWxlY3Rpb24oKSwgcG9pbnQpOworICAgICAgICBWZWN0b3I8
U3RyaW5nPiBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnM7CisgICAgICAgIHNlbGVjdGVkVGVsZXBo
b25lTnVtYmVycy5yZXNlcnZlQ2FwYWNpdHkobV9jdXJyZW50VGVsZXBob25lTnVtYmVyUmFuZ2Vz
LnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX2N1cnJlbnRUZWxlcGhvbmVO
dW1iZXJSYW5nZXMpCisgICAgICAgICAgICBzZWxlY3RlZFRlbGVwaG9uZU51bWJlcnMuYXBwZW5k
KHJhbmdlLT50ZXh0KCkpOworCisgICAgICAgIG1fd2ViUGFnZS0+aGFuZGxlU2VsZWN0aW9uU2Vy
dmljZUNsaWNrKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2VsZWN0aW9uKCks
IHNlbGVjdGVkVGVsZXBob25lTnVtYmVycywgcG9pbnQpOwogICAgIH0KIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpp
bmRleCA2N2MyNzU1Li42ZjhiZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lk
IFdlYlBhZ2U6OmhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVy
LCBjb25zdCBJbnRQb2ludCYgcAogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykKLXZvaWQgV2ViUGFnZTo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2VsZWN0
aW9uJiBzZWxlY3Rpb24sIGNvbnN0IEludFBvaW50JiBwb2ludCkKK3ZvaWQgV2ViUGFnZTo6aGFu
ZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwaG9uZU51bWJlcnMsIGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLmZpcnN0UmFu
Z2UoKTsKICAgICBpZiAoIXJhbmdlKQpAQCAtMTAzNiw3ICsxMDM2LDcgQEAgdm9pZCBXZWJQYWdl
OjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
Y29uc3QgSW50UG8KICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSA9IElQQzo6RGF0YVJlZmVy
ZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbc2VsZWN0aW9uRGF0YSBieXRl
c10pLCBbc2VsZWN0aW9uRGF0YSBsZW5ndGhdKTsKICAgICBib29sIGlzRWRpdGFibGUgPSBzZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKIAotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1NlbGVjdGlvblNlcnZpY2VNZW51KGRhdGEsIGlz
RWRpdGFibGUsIHBvaW50KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93
U2VsZWN0aW9uU2VydmljZU1lbnUoZGF0YSwgcGhvbmVOdW1iZXJzLCBpc0VkaXRhYmxlLCBwb2lu
dCkpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234382</attachid>
            <date>2014-07-03 17:14:44 -0700</date>
            <delta_ts>2014-07-03 18:10:46 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30626</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NDFiMDM4Li4wZDhjYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDctMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFdoZW4gc2hvd2luZyB0aGUgc2VsZWN0aW9uIG1lbnUsIGluY2x1ZGUgbWVudSBvcHRpb25z
IGZvciBhbGwgc2VsZWN0ZWQgcGhvbmUgbnVtYmVycy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE2OTgzNDM0PiwgPHJkYXI6Ly9wcm9ibGVtLzE2ODc0NTY4PiwgYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nczoKKworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyYW5n
ZXNPdmVybGFwKTogRml4IHJldmVyc2VkIGFyZ3VtZW50cyB0aGF0IGNhdXNlZCBzb21lIHR5cGVz
IG9mIG92ZXJsYXBzIHRvIG5vdCBiZSBkZXRlY3RlZC4KKwogMjAxNC0wNy0wMyAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdURjo6bW92ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXgg
M2EzY2M3Zi4uODZlNzUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncwpAQCAtMTE4LDYgKzExOCw5IEBACiAvKiBVbmRvIGFjdGlvbiBu
YW1lICovCiAiQm9sZCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIkJvbGQiOwogCisvKiBtZW51IGl0
ZW0gZm9yIG1ha2luZyBhIHRlbGVwaG9uZSBjYWxsIHRvIGEgdGVsZXBob25lIG51bWJlciAqLwor
IkNhbGwg4oCcJUDigJ0gVXNpbmcgaVBob25lIiA9ICJDYWxsIOKAnCVA4oCdIFVzaW5nIGlQaG9u
ZSI7CisKIC8qIEZpbGUgVXBsb2FkIGFsZXJ0IHNoZWV0IGJ1dHRvbiBzdHJpbmcgdG8gY2FuY2Vs
ICovCiAiQ2FuY2VsIChmaWxlIHVwbG9hZCBhY3Rpb24gc2hlZXQpIiA9ICJDYW5jZWwiOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcAppbmRleCA5YjJkNGU5Li4xNGJiZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
QEAgLTIwMDgsMTEgKzIwMDgsMTEgQEAgYm9vbCByYW5nZXNPdmVybGFwKGNvbnN0IFJhbmdlKiBh
LCBjb25zdCBSYW5nZSogYikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBFbmQgb2Yg
Zmlyc3QgcmFuZ2UgaXMgaW5zaWRlIHNlY29uZCByYW5nZS4KLSAgICBpZiAoYS0+Y29tcGFyZUJv
dW5kYXJ5UG9pbnRzKFJhbmdlOjpFTkRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04p
ID49IDAgJiYgZW5kVG9FbmQgPD0gMCkKKyAgICBpZiAoYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRz
KFJhbmdlOjpTVEFSVF9UT19FTkQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04pID49IDAgJiYgZW5k
VG9FbmQgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBTdGFydCBvZiBmaXJz
dCByYW5nZSBpcyBpbnNpZGUgc2Vjb25kIHJhbmdlLgotICAgIGlmIChzdGFydFRvU3RhcnQgPj0g
MCAmJiBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNUQVJUX1RPX0VORCwgYiwgQVNT
RVJUX05PX0VYQ0VQVElPTikgPD0gMCkKKyAgICBpZiAoc3RhcnRUb1N0YXJ0ID49IDAgJiYgYS0+
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpFTkRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19F
WENFUFRJT04pIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDFmZTQ0MGYuLjcyNTQ0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTE2OCw2ICsx
NjgsNTIgQEAKIAogMjAxNC0wNy0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2hlbiBzaG93aW5nIHRoZSBzZWxlY3Rpb24gbWVudSwgaW5jbHVkZSBtZW51
IG9wdGlvbnMgZm9yIGFsbCBzZWxlY3RlZCBwaG9uZSBudW1iZXJzLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTY5ODM0MzQ+LCA8cmRhcjovL3Byb2JsZW0vMTY4NzQ1Njg+LCBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDYxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgc29tZSB0ZWxlcGhvbmUgbnVt
YmVyIG1lbnUgbG9naWMgZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgaGVyZS4KKyAgICAgICAg
QWxzbyBwcm92aWRlIHV0aWxpdHkgdG8gZ2V0IGp1c3QgdGhlIG9uZSBtZW51IGl0ZW0gcmVsZXZh
bnQgdG8gYSB0ZWxlcGhvbmUgbnVtYmVyLgorICAgICAgICAqIFBsYXRmb3JtL21hYy9NZW51VXRp
bGl0aWVzLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW06IEFkZGVk
LgorICAgICAgICAoV2ViS2l0Ojpwcm9jZXNzTWVudUZvclRlbGVwaG9uZU51bWJlcik6CisgICAg
ICAgIChXZWJLaXQ6Om1lbnVJdGVtRm9yVGVsZXBob25lTnVtYmVyKToKKyAgICAgICAgKFdlYktp
dDo6bWVudUl0ZW1zRm9yVGVsZXBob25lTnVtYmVyKToKKworICAgICAgICAqIFBsYXRmb3JtL21h
Yy9TdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6IFJl
dHVybiBhIGxvY2FsaXplZCBmb3JtYXR0ZWQgcGhvbmUgbnVtYmVyLgorCisgICAgICAgIEFkZCBh
IG1lbWJlciB0byB0cmFjayB0aGUgc2VsZWN0ZWQgcGhvbmUgbnVtYmVyczoKKyAgICAgICAgKiBT
aGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0
TWVudUNvbnRleHREYXRhOjpDb250ZXh0TWVudUNvbnRleHREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6Q29udGV4dE1lbnVDb250ZXh0RGF0YTo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzKToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzZXR1cFNlcnZpY2VzTWVudSk6IEFsc28gYWRkIG1lbnUgaXRlbXMgZm9yIGVhY2gg
cGhvbmUgbnVtYmVyIHRoYXQgaXMKKyAgICAgICAgICBpbiB0aGUgc2VsZWN0aW9uLgorCisgICAg
ICAgIFN3aXRjaCBhd2F5IGZyb20gYSBXS1NJIG1ldGhvZCwgYW5kIHJlbW92ZSBhIGxvdCBvZiB1
bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucyBhbmQgc29mdCBsaW5raW5nOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNob3dUZWxlcGhvbmVOdW1iZXJNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzaG93U2VsZWN0aW9uU2VydmljZU1lbnUpOgorCisgICAgICAgICogV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpkcmF3U2VsZWN0aW9uSGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2spOiBQYXNz
IHRoZSBwaG9uZSBudW1iZXJzIGFsb25nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGlj
ayk6IFBhc3MgdGhlIHBob25lIG51bWJlcnMgYWxvbmcuCisKKzIwMTQtMDctMDMgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIEZvbGxvd3VwIHRvICJyZWN0cyBz
ZW50IHRvIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIgYXJlIHdyb25nIgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NTY4CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjYwNjE1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9tYWMvTWVudVV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE1lbnVVdGlsaXRpZXNfaAorI2RlZmluZSBNZW51VXRpbGl0aWVzX2gKKworI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorTlNNZW51SXRl
bSAqbWVudUl0ZW1Gb3JUZWxlcGhvbmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1i
ZXJTdHJpbmcpOworTlNBcnJheSAqbWVudUl0ZW1zRm9yVGVsZXBob25lTnVtYmVyKGNvbnN0IFN0
cmluZyYgdGVsZXBob25lTnVtYmVyKTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIE1lbnVVdGlsaXRpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvTWVudVV0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
ZDM0MDJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01l
bnVVdGlsaXRpZXMubW0KQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIk1lbnVVdGlsaXRpZXMuaCIKKworI2ltcG9ydCAiU3RyaW5nVXRp
bGl0aWVzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorCisjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTAwMAorU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKERhdGFE
ZXRlY3RvcnMpCitTT0ZUX0xJTktfQ0xBU1MoRGF0YURldGVjdG9ycywgRERBY3Rpb24pCitTT0ZU
X0xJTktfQ0xBU1MoRGF0YURldGVjdG9ycywgRERBY3Rpb25zTWFuYWdlcikKK1NPRlRfTElOS19D
T05TVEFOVChEYXRhRGV0ZWN0b3JzLCBEREJpbmRlclBob25lTnVtYmVyS2V5LCBDRlN0cmluZ1Jl
ZikKKworQGludGVyZmFjZSBEREFjdGlvbiA6IE5TT2JqZWN0CitAcHJvcGVydHkgKHJlYWRvbmx5
KSBOU1N0cmluZyAqYWN0aW9uVVRJOworQGVuZAorCit0eXBlZGVmIHZvaWQqIEREQWN0aW9uQ29u
dGV4dDsKKworQGludGVyZmFjZSBEREFjdGlvbnNNYW5hZ2VyIDogTlNPYmplY3QKKysgKEREQWN0
aW9uc01hbmFnZXIgKilzaGFyZWRNYW5hZ2VyOworLSAoTlNBcnJheSAqKW1lbnVJdGVtc0ZvclZh
bHVlOihOU1N0cmluZyAqKXZhbHVlIHR5cGU6KENGU3RyaW5nUmVmKXR5cGUgc2VydmljZTooTlNT
dHJpbmcgKilzZXJ2aWNlIGNvbnRleHQ6KEREQWN0aW9uQ29udGV4dCAqKWNvbnRleHQ7CitAZW5k
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MDAwCisKK3N0YXRpYyBOU1N0cmluZyAqbWVudUl0ZW1UaXRsZUZvclRlbGVwaG9uZU51bWJlcihj
b25zdCBTdHJpbmcmIHRlbGVwaG9uZU51bWJlcikKK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiQ2FsbCDigJwlQOKAnSBVc2luZyBpUGhvbmUi
LCAibWVudSBpdGVtIGZvciBtYWtpbmcgYSB0ZWxlcGhvbmUgY2FsbCB0byBhIHRlbGVwaG9uZSBu
dW1iZXIiKSwgZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcodGVsZXBob25lTnVtYmVyKV07Cit9
CisKK05TTWVudUl0ZW0gKm1lbnVJdGVtRm9yVGVsZXBob25lTnVtYmVyKGNvbnN0IFN0cmluZyYg
dGVsZXBob25lTnVtYmVyKQoreworICAgIE5TQXJyYXkgKnByb3Bvc2VkTWVudSA9IFtbZ2V0RERB
Y3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl0gbWVudUl0ZW1zRm9yVmFsdWU6KE5T
U3RyaW5nICopdGVsZXBob25lTnVtYmVyIHR5cGU6Z2V0RERCaW5kZXJQaG9uZU51bWJlcktleSgp
IHNlcnZpY2U6bmlsIGNvbnRleHQ6bmlsXTsKKyAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4g
cHJvcG9zZWRNZW51KSB7CisgICAgICAgIE5TRGljdGlvbmFyeSAqcmVwcmVzZW50ZWRPYmplY3Qg
PSBpdGVtLnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICBpZiAoIVtyZXByZXNlbnRlZE9iamVj
dCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIEREQWN0aW9uICphY3Rpb25PYmplY3QgPSBbcmVwcmVzZW50ZWRPYmpl
Y3Qgb2JqZWN0Rm9yS2V5OkAiRERBY3Rpb24iXTsKKyAgICAgICAgaWYgKCFbYWN0aW9uT2JqZWN0
IGlzS2luZE9mQ2xhc3M6Z2V0RERBY3Rpb25DbGFzcygpXSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChbYWN0aW9uT2JqZWN0LmFjdGlvblVUSSBoYXNQcmVmaXg6QCJjb20u
YXBwbGUuZGlhbCJdKSB7CisgICAgICAgICAgICBpdGVtLnRpdGxlID0gbWVudUl0ZW1UaXRsZUZv
clRlbGVwaG9uZU51bWJlcih0ZWxlcGhvbmVOdW1iZXIpOworICAgICAgICAgICAgcmV0dXJuIGl0
ZW07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCitOU0FycmF5ICpt
ZW51SXRlbXNGb3JUZWxlcGhvbmVOdW1iZXIoY29uc3QgU3RyaW5nJiB0ZWxlcGhvbmVOdW1iZXIp
Cit7CisgICAgTlNNdXRhYmxlQXJyYXkgKml0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KyAgICBOU011dGFibGVBcnJheSAqZmFjZVRpbWVJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07CisgICAgTlNNZW51SXRlbSAqZGlhbEl0ZW0gPSBuaWw7CisKKyAgICBOU0FycmF5ICpwcm9w
b3NlZE1lbnUgPSBbW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdIG1l
bnVJdGVtc0ZvclZhbHVlOihOU1N0cmluZyAqKXRlbGVwaG9uZU51bWJlciB0eXBlOmdldEREQmlu
ZGVyUGhvbmVOdW1iZXJLZXkoKSBzZXJ2aWNlOm5pbCBjb250ZXh0Om5pbF07CisgICAgZm9yIChO
U01lbnVJdGVtICppdGVtIGluIHByb3Bvc2VkTWVudSkgeworICAgICAgICBOU0RpY3Rpb25hcnkg
KnJlcHJlc2VudGVkT2JqZWN0ID0gaXRlbS5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgaWYg
KCFbcmVwcmVzZW50ZWRPYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBEREFjdGlvbiAqYWN0aW9uT2JqZWN0
ID0gW3JlcHJlc2VudGVkT2JqZWN0IG9iamVjdEZvcktleTpAIkREQWN0aW9uIl07CisgICAgICAg
IGlmICghW2FjdGlvbk9iamVjdCBpc0tpbmRPZkNsYXNzOmdldEREQWN0aW9uQ2xhc3MoKV0pCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoW2FjdGlvbk9iamVjdC5hY3Rpb25V
VEkgaGFzUHJlZml4OkAiY29tLmFwcGxlLmRpYWwiXSkgeworICAgICAgICAgICAgaXRlbS50aXRs
ZSA9IG1lbnVJdGVtVGl0bGVGb3JUZWxlcGhvbmVOdW1iZXIodGVsZXBob25lTnVtYmVyKTsKKyAg
ICAgICAgICAgIGRpYWxJdGVtID0gaXRlbTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKFthY3Rpb25PYmplY3QuYWN0aW9uVVRJIGhhc1ByZWZpeDpAImNv
bS5hcHBsZS5mYWNldGltZSJdKQorICAgICAgICAgICAgW2ZhY2VUaW1lSXRlbXMgYWRkT2JqZWN0
Oml0ZW1dOworICAgIH0KKworICAgIGlmIChkaWFsSXRlbSkKKyAgICAgICAgW2l0ZW1zIGFkZE9i
amVjdDpkaWFsSXRlbV07CisKKyAgICBpZiAoZmFjZVRpbWVJdGVtcy5jb3VudCkgeworICAgICAg
ICBpZiAoaXRlbXMuY291bnQpCisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OltOU01lbnVJ
dGVtIHNlcGFyYXRvckl0ZW1dXTsKKyAgICAgICAgW2l0ZW1zIGFkZE9iamVjdHNGcm9tQXJyYXk6
ZmFjZVRpbWVJdGVtc107CisgICAgfQorCisgICAgcmV0dXJuIGl0ZW1zLmNvdW50ID8gaXRlbXMg
OiBuaWw7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKaW5kZXggMTQzODU3Ni4uOTZlZmM3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaApA
QCAtMzIsNyArMzIsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIE5PVEU6IFRoaXMgZG9l
cyBub3QgdXNlIFN0cmluZzo6b3BlcmF0b3IgTlNTdHJpbmcqKCkgc2luY2UgdGhhdCBmdW5jdGlv
bgogLy8gZXhwZWN0cyB0byBiZSBjYWxsZWQgb24gdGhlIHRocmVhZCBydW5uaW5nIFdlYkNvcmUu
Ci1OU1N0cmluZyogbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK05T
U3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYpOworCisjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTAwMAorTlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3Ry
aW5nKE5TU3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVyKTsKKyNlbmRpZgogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDMxMTJh
MjQuLjJjNzc0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJp
bmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3Qu
aCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcu
aD4KICNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTM4LDQgKzM5LDM5IEBAIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21X
ZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBzdHJpbmcuaXNF
bXB0eSgpID8gQCIiIDogQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwg
dG9BUEkoc3RyaW5nLmltcGwoKSkpKTsKIH0KIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAK
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFBob25lTnVtYmVycyk7CisKK3R5cGVkZWYg
c3RydWN0IF9fQ0ZQaG9uZU51bWJlciogQ0ZQaG9uZU51bWJlclJlZjsKKworLy8gVGhlc2UgZnVu
Y3Rpb25zIGFyZSBkZWNsYXJlZCB3aXRoIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQorLy8gV2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gc29mdCBsaW5rIHN1
Y2ggZnVuY3Rpb25zLCBzbyB3ZSBmb3J3YXJkIGRlY2xhcmUgdGhlbSBhZ2FpbiBoZXJlLgorQ0ZQ
aG9uZU51bWJlclJlZiBDRlBob25lTnVtYmVyQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBDRlN0cmlu
Z1JlZiwgQ0ZTdHJpbmdSZWYpOworU09GVF9MSU5LKFBob25lTnVtYmVycywgQ0ZQaG9uZU51bWJl
ckNyZWF0ZSwgQ0ZQaG9uZU51bWJlclJlZiwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZT
dHJpbmdSZWYgZGlnaXRzLCBDRlN0cmluZ1JlZiBjb3VudHJ5Q29kZSksIChhbGxvY2F0b3IsIGRp
Z2l0cywgY291bnRyeUNvZGUpKTsKKworQ0ZTdHJpbmdSZWYgQ0ZQaG9uZU51bWJlckNvcHlGb3Jt
YXR0ZWRSZXByZXNlbnRhdGlvbihDRlBob25lTnVtYmVyUmVmKTsKK1NPRlRfTElOSyhQaG9uZU51
bWJlcnMsIENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24sIENGU3RyaW5n
UmVmLCAoQ0ZQaG9uZU51bWJlclJlZiBwaG9uZU51bWJlciksIChwaG9uZU51bWJlcikpOworCitD
RlN0cmluZ1JlZiBDRlBob25lTnVtYmVyQ29weVVuZm9ybWF0dGVkUmVwcmVzZW50YXRpb24oQ0ZQ
aG9uZU51bWJlclJlZik7CitTT0ZUX0xJTksoUGhvbmVOdW1iZXJzLCBDRlBob25lTnVtYmVyQ29w
eVVuZm9ybWF0dGVkUmVwcmVzZW50YXRpb24sIENGU3RyaW5nUmVmLCAoQ0ZQaG9uZU51bWJlclJl
ZiBwaG9uZU51bWJlciksIChwaG9uZU51bWJlcikpOworCisKK05TU3RyaW5nICpmb3JtYXR0ZWRQ
aG9uZU51bWJlclN0cmluZyhOU1N0cmluZyAqb3JpZ2luYWxQaG9uZU51bWJlcikKK3sKKyAgICBO
U1N0cmluZyAqY291bnRyeUNvZGUgPSBbW1tOU0xvY2FsZSBjdXJyZW50TG9jYWxlXSBvYmplY3RG
b3JLZXk6TlNMb2NhbGVDb3VudHJ5Q29kZV0gbG93ZXJjYXNlU3RyaW5nXTsKKworICAgIFJldGFp
blB0cjxDRlBob25lTnVtYmVyUmVmPiBwaG9uZU51bWJlciA9IGFkb3B0Q0YoQ0ZQaG9uZU51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZTdHJpbmdSZWYpb3JpZ2luYWxQaG9uZU51
bWJlciwgKENGU3RyaW5nUmVmKWNvdW50cnlDb2RlKSk7CisgICAgaWYgKCFwaG9uZU51bWJlcikK
KyAgICAgICAgcmV0dXJuIG9yaWdpbmFsUGhvbmVOdW1iZXI7CisKKyAgICBDRlN0cmluZ1JlZiBw
aG9uZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRp
b24ocGhvbmVOdW1iZXIuZ2V0KCkpOworICAgIGlmICghcGhvbmVOdW1iZXJTdHJpbmcpCisgICAg
ICAgIHBob25lTnVtYmVyU3RyaW5nID0gQ0ZQaG9uZU51bWJlckNvcHlVbmZvcm1hdHRlZFJlcHJl
c2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKTsKKworICAgIHJldHVybiBbKE5TU3RyaW5nICop
cGhvbmVOdW1iZXJTdHJpbmcgYXV0b3JlbGVhc2VdOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTAwMAorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvbnRleHRNZW51
Q29udGV4dERhdGEuaAppbmRleCA4NTcyZDQ3Li4zMjAzNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db250ZXh0TWVudUNvbnRleHREYXRhLmgKQEAgLTU3LDE0ICs1NywxNiBAQCBw
dWJsaWM6CiAgICAgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgd2ViSGl0VGVzdFJlc3Vs
dERhdGEoKSBjb25zdCB7IHJldHVybiBtX3dlYkhpdFRlc3RSZXN1bHREYXRhOyB9CiAKICNpZiBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSAgICBDb250ZXh0TWVudUNvbnRleHREYXRhKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgc2VsZWN0aW9uRGF0YSwgYm9vbCBpc0VkaXRhYmxlKQorICAgIENv
bnRleHRNZW51Q29udGV4dERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzZWxlY3Rpb25EYXRh
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzLCBib29sIGlz
RWRpdGFibGUpCiAgICAgICAgIDogbV9pc1RlbGVwaG9uZU51bWJlckNvbnRleHQoZmFsc2UpCiAg
ICAgICAgICwgbV9jb250cm9sbGVkU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhKQorICAgICAg
ICAsIG1fc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzKHNlbGVjdGVkVGVsZXBob25lTnVtYmVycykK
ICAgICAgICAgLCBtX3NlbGVjdGlvbklzRWRpdGFibGUoaXNFZGl0YWJsZSkKICAgICB7IH0KIAog
ICAgIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250cm9sbGVkSW1hZ2VIYW5kbGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xsZWRJbWFnZUhhbmRsZTsgfQogICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY29udHJvbGxlZFNlbGVjdGlvbkRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRyb2xsZWRTZWxlY3Rpb25EYXRhOyB9CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNl
bGVjdGVkVGVsZXBob25lTnVtYmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWRUZWxlcGhv
bmVOdW1iZXJzOyB9CiAKICAgICBib29sIGNvbnRyb2xsZWREYXRhSXNFZGl0YWJsZSgpIGNvbnN0
OwogICAgIGJvb2wgbmVlZHNTZXJ2aWNlc01lbnUoKSBjb25zdCB7IHJldHVybiAhbV9jb250cm9s
bGVkSW1hZ2VIYW5kbGUuaXNOdWxsKCkgfHwgIW1fY29udHJvbGxlZFNlbGVjdGlvbkRhdGEuaXNF
bXB0eSgpOyB9CkBAIC04NSw2ICs4Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9jb250cm9sbGVkSW1hZ2VI
YW5kbGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fY29udHJvbGxlZFNlbGVjdGlvbkRhdGE7Cisg
ICAgVmVjdG9yPFN0cmluZz4gbV9zZWxlY3RlZFRlbGVwaG9uZU51bWJlcnM7CiAgICAgYm9vbCBt
X3NlbGVjdGlvbklzRWRpdGFibGU7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggMjYwNWQxYi4uZjlmZjNiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0gICAgdm9pZCBzaG93U2VsZWN0
aW9uU2VydmljZU1lbnUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBzZWxlY3Rpb25Bc1JURkQs
IGJvb2wgaXNFZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHNo
b3dTZWxlY3Rpb25TZXJ2aWNlTWVudShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHNlbGVjdGlv
bkFzUlRGRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRlbGVwaG9uZU51bWJlcnMsIGJvb2wgaXNF
ZGl0YWJsZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICNlbmRpZgogCiAgICAgLy8gU2Vh
cmNoIHBvcHVwIHJlc3VsdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDk3MGRmOWYuLmJmYWFkNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzk0LDcg
KzM5NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShTRVJWSUNFX0NPTlRST0xTKQotICAgIFNob3dTZWxlY3Rpb25TZXJ2aWNlTWVudShJUEM6OkRh
dGFSZWZlcmVuY2Ugc2VsZWN0aW9uQXNSVEZELCBib29sIGlzRWRpdGFibGUsIFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50KQorICAgIFNob3dTZWxlY3Rpb25TZXJ2aWNlTWVudShJUEM6OkRhdGFSZWZl
cmVuY2Ugc2VsZWN0aW9uQXNSVEZELCBWZWN0b3I8U3RyaW5nPiB0ZWxlcGhvbmVOdW1iZXJzLCBi
b29sIGlzRWRpdGFibGUsIFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogI2VuZGlmCiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCAxZmZiZTZlLi5mODQwZjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5
TWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJE
YXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJNZW51VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQYWdl
Q2xpZW50SW1wbC5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJTdHJp
bmdVdGlsaXRpZXMuaCIKQEAgLTM5OCw2ICszOTksMTcgQEAgdm9pZCBXZWJDb250ZXh0TWVudVBy
b3h5TWFjOjpzZXR1cFNlcnZpY2VzTWVudShjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiBj
b24KIAogICAgIG1fc2VydmljZXNNZW51ID0gW3BpY2tlciBtZW51XTsKIAorICAgIC8vIEV4cGxp
Y2l0bHkgYWRkIGEgbWVudSBpdGVtIGZvciBlYWNoIHRlbGVwaG9uZSBudW1iZXIgdGhhdCBpcyBp
biB0aGUgc2VsZWN0aW9uLgorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWxlY3RlZFRlbGVw
aG9uZU51bWJlcnMgPSBjb250ZXh0LnNlbGVjdGVkVGVsZXBob25lTnVtYmVycygpOworICAgIGlm
ICghc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBbbV9zZXJ2
aWNlc01lbnUuZ2V0KCkgYWRkSXRlbTpbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07CisgICAg
ICAgIGZvciAoYXV0byYgdGVsZXBob25lTnVtYmVyIDogc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJz
KSB7CisgICAgICAgICAgICBOU01lbnVJdGVtICppdGVtID0gbWVudUl0ZW1Gb3JUZWxlcGhvbmVO
dW1iZXIodGVsZXBob25lTnVtYmVyKTsKKyAgICAgICAgICAgIGlmIChpdGVtKQorICAgICAgICAg
ICAgICAgIFttX3NlcnZpY2VzTWVudS5nZXQoKSBhZGRJdGVtOml0ZW1dOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc2VydmljZXMgbWVudSwgdGhlbiB0aGUgZXhp
c3Rpbmcgc2VydmljZXMgb24gdGhlIHN5c3RlbSBoYXZlIGNoYW5nZWQuCiAgICAgLy8gQXNrIHRo
ZSBVSVByb2Nlc3MgdG8gcmVmcmVzaCB0aGF0IGxpc3Qgb2Ygc2VydmljZXMuCiAgICAgLy8gSWYg
PHJkYXI6Ly9wcm9ibGVtLzE2Nzc2ODMxPiBpcyByZXNvbHZlZCB0aGVuIHdlIGNhbiBtb3JlIGFj
Y3VyYXRlbHkga2VlcCB0aGUgbGlzdCB1cCB0byBkYXRlIHdpdGhvdXQgdGhpcyBjYWxsLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAw
NmFlNzgzLi40NjQ4NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiRGljdGlvbmFyeVBv
cHVwSW5mby5oIgogI2ltcG9ydCAiRWRpdGluZ1JhbmdlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0
ZS5oIgorI2ltcG9ydCAiTWVudVV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oIgogI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiUGFnZUNsaWVudElt
cGwuaCIKQEAgLTQ5LDEwICs1MCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvVXNlckFnZW50Lmg+Ci0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
ICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHMuaD4KQEAgLTYyLDE3ICs2MSw2IEBACiAtICh2b2lk
KXNwZWFrU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKIEBlbmQKIAotU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX09QVElPTkFMKERhdGFEZXRlY3RvcnMpCi1TT0ZUX0xJTktfQ0xBU1MoRGF0
YURldGVjdG9ycywgRERBY3Rpb25zTWFuYWdlcikKLVNPRlRfTElOS19DT05TVEFOVChEYXRhRGV0
ZWN0b3JzLCBEREJpbmRlclBob25lTnVtYmVyS2V5LCBDRlN0cmluZ1JlZikKLQotdHlwZWRlZiB2
b2lkKiBEREFjdGlvbkNvbnRleHQ7Ci0KLUBpbnRlcmZhY2UgRERBY3Rpb25zTWFuYWdlciA6IE5T
T2JqZWN0Ci0rIChEREFjdGlvbnNNYW5hZ2VyICopIHNoYXJlZE1hbmFnZXI7Ci0tIChOU0FycmF5
ICopIG1lbnVJdGVtc0ZvclZhbHVlOihOU1N0cmluZyAqKXZhbHVlIHR5cGU6KENGU3RyaW5nUmVm
KXR5cGUgc2VydmljZTooTlNTdHJpbmcgKilzZXJ2aWNlIGNvbnRleHQ6KEREQWN0aW9uQ29udGV4
dCAqKWNvbnRleHQ7Ci1AZW5kCi0KICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1F
U1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9uKCkpCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjkwLDggKzY3OCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogdm9pZCBX
ZWJQYWdlUHJveHk6OnNob3dUZWxlcGhvbmVOdW1iZXJNZW51KGNvbnN0IFN0cmluZyYgdGVsZXBo
b25lTnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgTlNBcnJh
eSAqbWVudUl0ZW1zID0gW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2Vy
XSBtZW51SXRlbXNGb3JWYWx1ZTooTlNTdHJpbmcgKil0ZWxlcGhvbmVOdW1iZXIgdHlwZTpnZXRE
REJpbmRlclBob25lTnVtYmVyS2V5KCkgc2VydmljZTpuaWwgY29udGV4dDpuaWxdOwotICAgIG1l
bnVJdGVtcyA9IFdLVGVsZXBob25lTnVtYmVyTWVudUZyb21Qcm9wb3NlZE1lbnUobWVudUl0ZW1z
LCB0ZWxlcGhvbmVOdW1iZXIpOworICAgIE5TQXJyYXkgKm1lbnVJdGVtcyA9IG1lbnVJdGVtc0Zv
clRlbGVwaG9uZU51bWJlcih0ZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgVmVjdG9yPFdlYkNvbnRl
eHRNZW51SXRlbURhdGE+IGl0ZW1zOwogICAgIGZvciAoTlNNZW51SXRlbSAqaXRlbSBpbiBtZW51
SXRlbXMpIHsKQEAgLTcxMCwxMCArNjk3LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93VGVs
ZXBob25lTnVtYmVyTWVudShjb25zdCBTdHJpbmcmIHRlbGVwaG9uZU51bWJlciwgY29uc3QKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1NlbGVjdGlvblNlcnZpY2VNZW51KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgc2VsZWN0
aW9uQXNSVEZELCBib29sIGlzRWRpdGFibGUsIGNvbnN0IEludFBvaW50JiBwb2ludCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzaG93U2VsZWN0aW9uU2VydmljZU1lbnUoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBzZWxlY3Rpb25Bc1JURkQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVO
dW1iZXJzLCBib29sIGlzRWRpdGFibGUsIGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXM7Ci0gICAgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSBjb250ZXh0RGF0YShzZWxlY3Rpb25Bc1JURkQudmVjdG9yKCksIGlzRWRpdGFibGUp
OworICAgIENvbnRleHRNZW51Q29udGV4dERhdGEgY29udGV4dERhdGEoc2VsZWN0aW9uQXNSVEZE
LnZlY3RvcigpLCB0ZWxlcGhvbmVOdW1iZXJzLCBpc0VkaXRhYmxlKTsKIAogICAgIGludGVybmFs
U2hvd0NvbnRleHRNZW51KHBvaW50LCBjb250ZXh0RGF0YSwgaXRlbXMsIENvbnRleHRNZW51Q2xp
ZW50RWxpZ2liaWxpdHk6Ok5vdEVsaWdpYmxlRm9yQ2xpZW50LCBudWxscHRyKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
NjQ1MTU1Li40MGQ3ZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MTQsNiArOTE0LDggQEAKIAkJNTE4RThGMEMxNkIyMDkz
NzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4RThGMDMxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2Fk
TWFuYWdlci5oICovOyB9OwogCQk1MThFOEYwRDE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThF
OEYwNTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRNYWMubW0gKi87IH07CiAJCTUxOTJENTc2
MTk2MUZEMDMwMENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5MkQ1NzUxOTYxRkQwMzAw
Q0QxOUFBIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gKi87IH07CisJCTUxOTMzREVG
MTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTkzM0RFQjE5NjVFQjI0MDA4QUMzRUEgLyogTWVu
dVV0aWxpdGllcy5oICovOyB9OworCQk1MTkzM0RGMDE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0
aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxOTMzREVDMTk2NUVCMjQwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLm1tICovOyB9OwogCQk1
MUE0RDVBOTE2Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNEQ1QTgxNkNBQzRGRjAw
MEU2MTVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNTFBNTU1RjUxMjhDNkM0
NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU1NUYzMTI4QzZDNDcwMDlBQkNFQyAvKiBXS0Nv
bnRleHRNZW51SXRlbS5jcHAgKi87IH07CiAJCTUxQTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBX
S0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBNTU1RjQxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5MTUs
NiArMjkxNyw4IEBACiAJCTUxOEU4RjA1MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERvd25sb2FkTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTkyRDU3MTE5NjFGQTJGMDBDRDE5QUEg
LyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOTJENTc1
MTk2MUZEMDMwMENEMTlBQSAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VydmljZXNPdmVybGF5Q29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE5MzNERUIxOTY1RUIyNDAwOEFD
M0VBIC8qIE1lbnVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVudVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTkzM0RFQzE5
NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lbnVVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aXN0aWNzUmVxdWVz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTU1NUYzMTI4QzZDNDcwMDlB
QkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0NvbnRleHRNZW51SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQTU1NUY0MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRNZW51SXRlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1NCw2ICs0MjU4LDggQEAKIAkJCQlCQ0UwOTM3
NTE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSAqLywKIAkJCQkxQTI0
QjVGMDExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5jcHAgKi8sCiAJCQkJMUEyNEI1
RjExMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCAqLywKKwkJCQk1MTkzM0RFQjE5
NjVFQjI0MDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oICovLAorCQkJCTUxOTMzREVDMTk2NUVC
MjQwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLm1tICovLAogCQkJCTFBMjRCRjM5MTIwODk2QTYw
MEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlNYWMuY3BwICovLAogCQkJCTI5NkJEODVCMTUwMTlCQzMw
MDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCAqLywKIAkJCQkyOTZCRDg1QzE1MDE5QkMzMDA3
MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovLApAQCAtNzYyMSw2ICs3NjI3LDcgQEAKIAkJ
CQlCQzVDNzVDODE0OTU0REE2MDBCQzQ3NzUgLyogV0tDb25uZWN0aW9uSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNEE2Mjk3MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25S
ZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdFMCAvKiBXS0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBN
ZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk1Nzg5QzE4QUQ0RjE5MDBCOUVE
MkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBNTU1RjYxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0
TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTk2LDYgKzkwMDMsNyBAQAogCQkJ
CTUxQTRENUE5MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUQzMzA2RTE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBs
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQ0VDRDI0MTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9y
YWdlQXJlYU1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTkzM0RGMDE5NjVFQjMxMDA4QUMz
RUEgLyogTWVudVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMzM0REVEMTZERThG
ODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTQ0Qjk1QjE2QjczRjlGMDBCN0JCRDggLyogU3RvcmFnZU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMzFBOTYxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzk3ZWExZC4uMzcxOThlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04MjcsNyAr
ODI3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUo
VEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pIAogICAgIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXImIHNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoKTsKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9u
ZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOwotICAgIHZvaWQgaGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1l
U2VsZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIGhhbmRsZVNl
bGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwog
ICAgIGJvb2wgc2VydmljZUNvbnRyb2xzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vydmlj
ZUNvbnRyb2xzRW5hYmxlZDsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbQppbmRleCA1NmY1ZTZjLi5iN2MxZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLm1tCkBAIC0yNzgsNyArMjc4LDExIEBAIHZvaWQgU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkqIG92ZXJsYXksIFdlYkNvcmU6OkdyYXBoaWNz
CiB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmRyYXdTZWxlY3Rpb25IaWdobGlnaHQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBBU1NFUlQoIW1fZHJhd2luZ1RlbGVwaG9uZU51
bWJlckhpZ2hsaWdodCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFNlbGVjdGlvblJlY3RzLnNpemUo
KSk7CisKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIGVuZCB1cCBkcmF3aW5nIHRoZSBzZWxlY3Rp
b24gaGlnaGxpZ2h0IGJlZm9yZSB3ZSd2ZSBhY3R1YWxseSByZWNlaXZlZCB0aGUgc2VsZWN0aW9u
IHJlY3RzLgorICAgIC8vIElmIHRoYXQgaGFwcGVucyB3ZSdsbCBlbmQgdXAgaGVyZSBhZ2FpbiBv
bmNlIHdlIGhhdmUgdGhlIHJlY3RzLgorICAgIGlmIChtX2N1cnJlbnRTZWxlY3Rpb25SZWN0cy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHRoZXJlIGFyZSBubyBpbnN0
YWxsZWQgc2VsZWN0aW9uIHNlcnZpY2VzIGFuZCB3ZSBoYXZlIG5vIHBob25lIG51bWJlcnMgZGV0
ZWN0ZWQsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRyYXcuCiAgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaGFyZWQoKS5oYXNTZWxlY3Rpb25TZXJ2aWNlcygpICYmIG1fY3VycmVudFRlbGVwaG9uZU51
bWJlclJhbmdlcy5pc0VtcHR5KCkpCkBAIC00MzAsOCArNDM0LDEyIEBAIHZvaWQgU2VydmljZXNP
dmVybGF5Q29udHJvbGxlcjo6aGFuZGxlQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50KQogICAgICAgICBBU1NFUlQobV9jdXJyZW50VGVsZXBob25lTnVtYmVyUmFuZ2VzLnNpemUo
KSA9PSAxKTsKICAgICAgICAgbV93ZWJQYWdlLT5oYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayht
X2N1cnJlbnRUZWxlcGhvbmVOdW1iZXJSYW5nZXNbMF0tPnRleHQoKSwgcG9pbnQpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbmNsdWRlIGFsbCBzZWxlY3RlZCB0ZWxlcGhvbmUg
bnVtYmVycyBzbyB0aGV5IGNhbiBiZSBhZGRlZCB0byB0aGUgbWVudSBhcyB3ZWxsLgotICAgICAg
ICBtX3dlYlBhZ2UtPmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhtX3dlYlBhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnNlbGVjdGlvbigpLCBwb2ludCk7CisgICAgICAgIFZlY3RvcjxT
dHJpbmc+IHNlbGVjdGVkVGVsZXBob25lTnVtYmVyczsKKyAgICAgICAgc2VsZWN0ZWRUZWxlcGhv
bmVOdW1iZXJzLnJlc2VydmVDYXBhY2l0eShtX2N1cnJlbnRUZWxlcGhvbmVOdW1iZXJSYW5nZXMu
c2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiByYW5nZSA6IG1fY3VycmVudFRlbGVwaG9uZU51
bWJlclJhbmdlcykKKyAgICAgICAgICAgIHNlbGVjdGVkVGVsZXBob25lTnVtYmVycy5hcHBlbmQo
cmFuZ2UtPnRleHQoKSk7CisKKyAgICAgICAgbV93ZWJQYWdlLT5oYW5kbGVTZWxlY3Rpb25TZXJ2
aWNlQ2xpY2sobV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5zZWxlY3Rpb24oKSwg
c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJzLCBwb2ludCk7CiAgICAgfQogfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDY3YzI3NTUuLjZmOGJmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEwMjIsNyArMTAyMiw3IEBAIHZvaWQg
V2ViUGFnZTo6aGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1iZXIs
IGNvbnN0IEludFBvaW50JiBwCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xT
KQotdm9pZCBXZWJQYWdlOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soRnJhbWVTZWxlY3Rp
b24mIHNlbGVjdGlvbiwgY29uc3QgSW50UG9pbnQmIHBvaW50KQordm9pZCBXZWJQYWdlOjpoYW5k
bGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBob25lTnVtYmVycywgY29uc3QgSW50UG9pbnQmIHBvaW50KQogewog
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuZmlyc3RSYW5n
ZSgpOwogICAgIGlmICghcmFuZ2UpCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIFdlYlBhZ2U6
OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBj
b25zdCBJbnRQbwogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhID0gSVBDOjpEYXRhUmVmZXJl
bmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtzZWxlY3Rpb25EYXRhIGJ5dGVz
XSksIFtzZWxlY3Rpb25EYXRhIGxlbmd0aF0pOwogICAgIGJvb2wgaXNFZGl0YWJsZSA9IHNlbGVj
dGlvbi5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93U2VsZWN0aW9uU2VydmljZU1lbnUoZGF0YSwgaXNF
ZGl0YWJsZSwgcG9pbnQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dT
ZWxlY3Rpb25TZXJ2aWNlTWVudShkYXRhLCBwaG9uZU51bWJlcnMsIGlzRWRpdGFibGUsIHBvaW50
KSk7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="258918"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>