<?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>130534</bug_id>
          
          <creation_ts>2014-03-20 13:20:43 -0700</creation_ts>
          <short_desc>Move cross-port Source/WebCore/page/ code to std::unique_ptr</short_desc>
          <delta_ts>2014-04-21 10:12:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>992680</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-20 13:20:43 -0700</bug_when>
    <thetext>Move cross-port Source/WebCore/page/ code to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992696</commentid>
    <comment_count>1</comment_count>
      <attachid>227327</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-20 13:40:40 -0700</bug_when>
    <thetext>Created attachment 227327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992700</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-20 13:43:09 -0700</bug_when>
    <thetext>Attachment 227327 did not pass style-queue:


ERROR: Source/WebCore/page/Frame.cpp:165:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/Frame.cpp:166:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:770:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:771:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:777:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:778:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
Total errors found: 6 in 22 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>994316</commentid>
    <comment_count>3</comment_count>
      <attachid>227791</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-25 13:43:12 -0700</bug_when>
    <thetext>Created attachment 227791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994317</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-25 13:44:23 -0700</bug_when>
    <thetext>Attachment 227791 did not pass style-queue:


ERROR: Source/WebCore/page/Frame.cpp:165:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/Frame.cpp:166:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:770:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:771:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:777:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:778:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
Total errors found: 6 in 23 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>1001247</commentid>
    <comment_count>5</comment_count>
      <attachid>227791</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-16 11:49:04 -0700</bug_when>
    <thetext>Comment on attachment 227791
Patch

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

This looks good, but unfortunately seemed to choke in the EWS system for Mac.  Could you rebaseline and upload again so we can confirm it&apos;s okay?

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:919
&gt; +    std::unique_ptr&lt;CSPDirectiveList&gt; directives(new CSPDirectiveList(policy, type));

Why not auto directives = std::make_unique&lt;CSPDirectiveList&gt;(policy, type)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002414</commentid>
    <comment_count>6</comment_count>
      <attachid>229773</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-20 12:24:00 -0700</bug_when>
    <thetext>Created attachment 229773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002416</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-20 12:26:28 -0700</bug_when>
    <thetext>Attachment 229773 did not pass style-queue:


ERROR: Source/WebCore/page/Frame.cpp:165:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/Frame.cpp:166:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:769:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:770:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:776:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:777:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
Total errors found: 6 in 22 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>1002451</commentid>
    <comment_count>8</comment_count>
      <attachid>229773</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-20 20:46:53 -0700</bug_when>
    <thetext>Comment on attachment 229773
Patch

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

/Volumes/Data/EWS/WebKit/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm:485:60: error: reference to type &apos;const JSC::Yarr::RegularExpression&apos; could not bind to an lvalue of type &apos;JSC::Yarr::RegularExpression *&apos;

r=me as long as you fix the Mac build

&gt; Source/WebCore/page/DOMWindow.cpp:158
&gt; +        // This object gets deleted when std::unique_ptr falls out of scope..
&gt; +        std::unique_ptr&lt;PostMessageTimer&gt; timer(this);
&gt; +        m_window-&gt;postMessageTimerFired(*timer);

Not sure this is better than just calling &quot;delete this&quot; at the end of the function.

&gt; Source/WebCore/page/animation/CSSPropertyAnimation.cpp:1087
&gt; +    CSSPropertyAnimationWrapperMap();

Why not leave this private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002524</commentid>
    <comment_count>9</comment_count>
      <attachid>229797</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-21 04:09:00 -0700</bug_when>
    <thetext>Created attachment 229797
Patch for landing

Should fix the Mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002525</commentid>
    <comment_count>10</comment_count>
      <attachid>229773</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-21 04:10:38 -0700</bug_when>
    <thetext>Comment on attachment 229773
Patch

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

&gt;&gt; Source/WebCore/page/animation/CSSPropertyAnimation.cpp:1087
&gt;&gt; +    CSSPropertyAnimationWrapperMap();
&gt; 
&gt; Why not leave this private?

It was made accessible to the NeverDestroyed constructor, but I now declared NeverDestroyed&lt;CSSPropertyAnimationWrapperMap&gt; as a friend instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002526</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-21 04:11:55 -0700</bug_when>
    <thetext>Attachment 229797 did not pass style-queue:


ERROR: Source/WebCore/page/Frame.cpp:165:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/Frame.cpp:166:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:769:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:770:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:776:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:777:  Wrong number of spaces before statement. (expected: 44)  [whitespace/indent] [4]
Total errors found: 6 in 22 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>1002541</commentid>
    <comment_count>12</comment_count>
      <attachid>229797</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-21 10:12:12 -0700</bug_when>
    <thetext>Comment on attachment 229797
Patch for landing

Clearing flags on attachment: 229797

Committed r167594: &lt;http://trac.webkit.org/changeset/167594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002542</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-21 10:12:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227327</attachid>
            <date>2014-03-20 13:40:40 -0700</date>
            <delta_ts>2014-03-25 13:43:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130534-20140320134016.patch</filename>
            <type>text/plain</type>
            <size>45026</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE0LTAzLTIwICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGNyb3NzLXBvcnQg
U291cmNlL1dlYkNvcmUvcGFnZS8gY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDUzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBPd25Q
dHIgYW5kIFBhc3NPd25QdHIgaW4gY3Jvc3MtcG9ydCBjb2RlIHVuZGVyIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvIHdpdGgKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyLiBVbm5lY2Vzc2FyeSBPd25QdHIu
aCBhbmQgUGFzc093blB0ci5oIGhlYWRlciBpbmNsdXNpb25zIGFyZSByZW1vdmVkIGFzIHdlbGwu
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3kpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAgICAgKiBw
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVw
b3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmNoZWNr
SW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2
ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTUERpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAqIHBhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9ET01TZWN1cml0eVBvbGlj
eS5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c3RNZXNzYWdlVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9z
dE1lc3NhZ2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1h
dGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGls
ZWRCYWNraW5nU3RvcmVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRF
bWJlZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
U2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
U2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VUaHJvdHRsZXIuaDoKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQ
b2ludGVyTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJl
cXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxl
ci5oOiBPcGVyYXRlIHdpdGggYSBQYWdlIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4K
KyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgICog
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZm
ZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBw
ZXJNYXA6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9u
V3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBw
YWdlL21hYy9QYWdlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjaGVkdWxl
UGFpcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lG
cm9tU3RyaW5nKToKKwogMjAxNC0wMy0yMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgUHJlc2VydmUgb3JpZ2luYWwgZG9jdW1lbnQgVVJMIGZvciBYU1NBdWRp
dG9yIHJlcG9ydHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTY1OTgx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDU5MSw3ICs0NTkxLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAg
ICAgICAgIC8vIFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVEb2N1bWVudCgpLgogICAgICAgICBtX2Nvb2tpZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcs
IGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlVW5pcXVlKCkpOwotICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpjcmVhdGUodGhpcykpOworICAgICAgICBzZXRDb250ZW50U2Vj
dXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KHRoaXMp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDYxMSw3ICs0NjExLDcgQEAgdm9pZCBE
b2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAjZW5kaWYKIAogICAgIHNldFNlY3VyaXR5
T3JpZ2luKGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCkpOwotICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZSh0aGlzKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3Vy
aXR5UG9saWN5Pih0aGlzKSk7CiAKICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gdGhpcy0+
c2V0dGluZ3MoKSkgewogICAgICAgICBpZiAoIXNldHRpbmdzLT53ZWJTZWN1cml0eUVuYWJsZWQo
KSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHJldmlzaW9u
IDE2NTk4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw5ICs1MCw5IEBAIHZvaWQgU2VjdXJpdHlDb250ZXh0OjpzZXRTZWN1
cml0eU9yaWdpbigKICAgICBtX2hhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luID0gdHJ1ZTsK
IH0KIAotdm9pZCBTZWN1cml0eUNvbnRleHQ6OnNldENvbnRlbnRTZWN1cml0eVBvbGljeShQYXNz
T3duUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gY29udGVudFNlY3VyaXR5UG9saWN5KQordm9p
ZCBTZWN1cml0eUNvbnRleHQ6OnNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCiB7Ci0gICAg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgbV9j
b250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KTsK
IH0KIAogYm9vbCBTZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IFVS
TCYgdXJsKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAkocmV2
aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFNlY3VyaXR5Q29udGV4dF9o
CiAjZGVmaW5lIFNlY3VyaXR5Q29udGV4dF9oCiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03Niw3ICs3Nyw3IEBAIHByb3RlY3RlZDoKICAgICBT
ZWN1cml0eUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5TZWN1cml0eUNvbnRleHQoKTsKIAotICAg
IHZvaWQgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KFBhc3NPd25QdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5Pik7CisgICAgdm9pZCBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4pOwogCiAgICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFs
aXplU2VjdXJpdHlPcmlnaW4oKSB7IG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4gPSBm
YWxzZTsgfQogICAgIGJvb2wgaGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX2hhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luOyB9CkBAIC04NSw3ICs4Niw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luOwog
ICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fc2VjdXJpdHlPcmlnaW47Ci0gICAgT3duUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4g
bV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1
cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCShyZXZpc2lvbiAxNjU5
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgxMCw3ICs4MTAsNyBAQCBwcml2YXRlOgogY2xhc3MgQ1NQRGlyZWN0
aXZlTGlzdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q1NQRGlyZWN0aXZlTGlzdD4gY3JlYXRlKENvbnRlbnRTZWN1cml0eVBv
bGljeSosIGNvbnN0IFN0cmluZyYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSk7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVMaXN0PiBjcmVhdGUoQ29u
dGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgU3RyaW5nJiwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpIZWFkZXJUeXBlKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaGVhZGVyKCkgY29uc3QgeyByZXR1
cm4gbV9oZWFkZXI7IH0KICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgaGVh
ZGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyVHlwZTsgfQpAQCAtODU0LDcgKzg1NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQb2xpY3kpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IENTUERpcmVjdGl2ZVR5cGU+Ci0gICAgdm9pZCBzZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBPd25QdHI8Q1NQRGlyZWN0aXZlVHlwZT4mKTsK
KyAgICB2b2lkIHNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVUeXBlPiYpOwogCiAgICAgU291
cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlKFNvdXJjZUxpc3REaXJlY3RpdmUq
KSBjb25zdDsKICAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2
ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNv
bnNvbGVNZXNzYWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4
dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRl
KiA9IDApIGNvbnN0OwpAQCAtODg1LDE5ICs4ODUsMTkgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aGF2ZVNhbmRib3hQb2xpY3k7CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRY
U1NEaXNwb3NpdGlvbiBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uOwogCi0gICAgT3duUHRyPE1l
ZGlhTGlzdERpcmVjdGl2ZT4gbV9wbHVnaW5UeXBlczsKLSAgICBPd25QdHI8Tm9uY2VEaXJlY3Rp
dmU+IG1fc2NyaXB0Tm9uY2U7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fYmFz
ZVVSSTsKLSAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9jb25uZWN0U3JjOwotICAg
IE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2RlZmF1bHRTcmM7Ci0gICAgT3duUHRyPFNv
dXJjZUxpc3REaXJlY3RpdmU+IG1fZm9udFNyYzsKLSAgICBPd25QdHI8U291cmNlTGlzdERpcmVj
dGl2ZT4gbV9mb3JtQWN0aW9uOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2Zy
YW1lU3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2ltZ1NyYzsKLSAgICBP
d25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9tZWRpYVNyYzsKLSAgICBPd25QdHI8U291cmNl
TGlzdERpcmVjdGl2ZT4gbV9vYmplY3RTcmM7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3Rp
dmU+IG1fc2NyaXB0U3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX3N0eWxl
U3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUxpc3REaXJlY3RpdmU+IG1fcGx1Z2luVHlw
ZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5vbmNlRGlyZWN0aXZlPiBtX3NjcmlwdE5vbmNlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2Jhc2VVUkk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fY29ubmVjdFNyYzsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9kZWZhdWx0U3JjOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2ZvbnRTcmM7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fZm9ybUFjdGlvbjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9mcmFtZVNyYzsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9pbWdTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fbWVkaWFTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNv
dXJjZUxpc3REaXJlY3RpdmU+IG1fb2JqZWN0U3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3Vy
Y2VMaXN0RGlyZWN0aXZlPiBtX3NjcmlwdFNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNl
TGlzdERpcmVjdGl2ZT4gbV9zdHlsZVNyYzsKIAogICAgIFZlY3RvcjxVUkw+IG1fcmVwb3J0VVJJ
czsKIApAQCAtOTE0LDkgKzkxNCw5IEBAIENTUERpcmVjdGl2ZUxpc3Q6OkNTUERpcmVjdGl2ZUxp
c3QoQ29udGUKICAgICBtX3JlcG9ydE9ubHkgPSAodHlwZSA9PSBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydCB8fCB0eXBlID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UHJlZml4ZWRSZXBv
cnQpOwogfQogCi1QYXNzT3duUHRyPENTUERpcmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2ZUxpc3Q6
OmNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kqIHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFk
ZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSB0eXBlKQorc3RkOjp1bmlxdWVf
cHRyPENTUERpcmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSB0eXBlKQogewotICAgIE93blB0cjxDU1BEaXJlY3RpdmVMaXN0
PiBkaXJlY3RpdmVzID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZUxpc3QocG9saWN5LCB0eXBl
KSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENTUERpcmVjdGl2ZUxpc3Q+IGRpcmVjdGl2ZXMobmV3
IENTUERpcmVjdGl2ZUxpc3QocG9saWN5LCB0eXBlKSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2Uo
aGVhZGVyKTsKIAogICAgIGlmICghZGlyZWN0aXZlcy0+Y2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9w
ZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7CkBAIC05
MjcsNyArOTI3LDcgQEAgUGFzc093blB0cjxDU1BEaXJlY3RpdmVMaXN0PiBDU1BEaXJlY3Rpdgog
ICAgIGlmIChkaXJlY3RpdmVzLT5pc1JlcG9ydE9ubHkoKSAmJiBkaXJlY3RpdmVzLT5yZXBvcnRV
UklzKCkuaXNFbXB0eSgpKQogICAgICAgICBwb2xpY3ktPnJlcG9ydE1pc3NpbmdSZXBvcnRVUkko
aGVhZGVyKTsKIAotICAgIHJldHVybiBkaXJlY3RpdmVzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
c3RkOjptb3ZlKGRpcmVjdGl2ZXMpOwogfQogCiB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnJlcG9y
dFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZm
ZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwm
IGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFs
TnVtYmVyJiBjb250ZXh0TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdApAQCAtOTc2
LDcgKzk3Niw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVwb3IKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTdHJpbmcgc3VmZml4ID0gU3RyaW5nKCk7Ci0gICAg
aWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCisgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2Rl
ZmF1bHRTcmMuZ2V0KCkpCiAgICAgICAgIHN1ZmZpeCA9ICIgTm90ZSB0aGF0ICdzY3JpcHQtc3Jj
JyB3YXMgbm90IGV4cGxpY2l0bHkgc2V0LCBzbyAnZGVmYXVsdC1zcmMnIGlzIHVzZWQgYXMgYSBm
YWxsYmFjay4iOwogCiAgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBzY3Jp
cHRTcmMsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIg
KyBzdWZmaXggKyAiXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHN0YXRlKTsK
QEAgLTEwMTQsNyArMTAxNCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tJbmxpbmVB
bmRSZXAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTdHJpbmcgc3VmZml4ID0gU3RyaW5n
KCk7Ci0gICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCisgICAgaWYgKGRpcmVjdGl2
ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCkpCiAgICAgICAgIHN1ZmZpeCA9IG1ha2VTdHJpbmcoIiBO
b3RlIHRoYXQgJyIsIChpc1NjcmlwdCA/ICJzY3JpcHQiIDogInN0eWxlIiksICItc3JjJyB3YXMg
bm90IGV4cGxpY2l0bHkgc2V0LCBzbyAnZGVmYXVsdC1zcmMnIGlzIHVzZWQgYXMgYSBmYWxsYmFj
ay4iKTsKIAogICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgaXNTY3JpcHQg
PyBzY3JpcHRTcmMgOiBzdHlsZVNyYywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZl
LT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250
ZXh0TGluZSk7CkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNo
ZWNrU291cmNlQW5kUmVwCiAgICAgICAgIHByZWZpeCA9ICJSZWZ1c2VkIHRvIGxvYWQgdGhlIHN0
eWxlc2hlZXQgJyI7CiAKICAgICBTdHJpbmcgc3VmZml4ID0gU3RyaW5nKCk7Ci0gICAgaWYgKGRp
cmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCisgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRT
cmMuZ2V0KCkpCiAgICAgICAgIHN1ZmZpeCA9ICIgTm90ZSB0aGF0ICciICsgZWZmZWN0aXZlRGly
ZWN0aXZlICsgIicgd2FzIG5vdCBleHBsaWNpdGx5IHNldCwgc28gJ2RlZmF1bHQtc3JjJyBpcyB1
c2VkIGFzIGEgZmFsbGJhY2suIjsKIAogICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRl
eHQoKSwgZWZmZWN0aXZlRGlyZWN0aXZlLCBwcmVmaXggKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiBcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSAr
ICJcIi4iICsgc3VmZml4ICsgIlxuIiwgdXJsKTsKQEAgLTEzMTQsMTMgKzEzMTQsMTMgQEAgdm9p
ZCBDU1BEaXJlY3RpdmVMaXN0OjpwYXJzZVJlcG9ydFVSSShjbwogCiAKIHRlbXBsYXRlPGNsYXNz
IENTUERpcmVjdGl2ZVR5cGU+Ci12b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIE93blB0cjxDU1BEaXJl
Y3RpdmVUeXBlPiYgZGlyZWN0aXZlKQordm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJl
Y3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NQRGlyZWN0aXZlVHlwZT4mIGRpcmVjdGl2ZSkKIHsKICAgICBpZiAoZGlyZWN0aXZl
KSB7CiAgICAgICAgIG1fcG9saWN5LT5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUobmFtZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZlID0gYWRvcHRQdHIobmV3IENTUERp
cmVjdGl2ZVR5cGUobmFtZSwgdmFsdWUsIG1fcG9saWN5KSk7CisgICAgZGlyZWN0aXZlID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPihuYW1lLCB2YWx1ZSwgbV9wb2xpY3kpOwog
fQogCiB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OmFwcGx5U2FuZGJveFBvbGljeShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBvbGljeSkKQEAgLTE0NTksNyArMTQ1OSw3
IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGUKIAogICAgICAgICAv
LyBoZWFkZXIxLGhlYWRlcjIgT1IgaGVhZGVyMQogICAgICAgICAvLyAgICAgICAgXiAgICAgICAg
ICAgICAgICAgIF4KLSAgICAgICAgT3duUHRyPENTUERpcmVjdGl2ZUxpc3Q+IHBvbGljeSA9IENT
UERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSh0aGlzLCBTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVn
aW4pLCB0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTUERpcmVjdGl2ZUxpc3Q+IHBv
bGljeSA9IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSh0aGlzLCBTdHJpbmcoYmVnaW4sIHBvc2l0
aW9uIC0gYmVnaW4pLCB0eXBlKTsKICAgICAgICAgaWYgKCFwb2xpY3ktPmlzUmVwb3J0T25seSgp
ICYmICFwb2xpY3ktPmFsbG93RXZhbCgwLCBTdXBwcmVzc1JlcG9ydCkpCiAgICAgICAgICAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRpc2FibGVFdmFsKHBvbGljeS0+ZXZhbERpc2FibGVk
RXJyb3JNZXNzYWdlKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDE2NTk4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFBvc2l0aW9uLmg+CkBAIC00NiwxNSArNDYsMTIgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVmIGludCBTYW5kYm94RmxhZ3M7
Ci10eXBlZGVmIFZlY3RvcjxPd25QdHI8Q1NQRGlyZWN0aXZlTGlzdD4+IENTUERpcmVjdGl2ZUxp
c3RWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NQRGlyZWN0aXZlTGlz
dD4+IENTUERpcmVjdGl2ZUxpc3RWZWN0b3I7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ29udGVudFNlY3VyaXR5UG9saWN5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsK
LSAgICB9CisgICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKICAgICB+Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKICAgICB2b2lkIGNv
cHlTdGF0ZUZyb20oY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5Kik7CkBAIC0xMzcsOCArMTM0
LDYgQEAgcHVibGljOgogICAgIGJvb2wgZXhwZXJpbWVudGFsRmVhdHVyZXNFbmFibGVkKCkgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKLQogICAgIHZvaWQgbG9nVG9Db25zb2xlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IFdU
Rjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9y
ZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OwogCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NU2VjdXJpdHlQb2xpY3kuaAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw2IEBACiAjZGVmaW5lIERPTVNlY3VyaXR5UG9saWN5X2gKIAogI2luY2x1ZGUgIkNvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJ
KHJldmlzaW9uIDE2NTk4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0xNTIsOCArMTUzLDkgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQogICAgIHsKLSAgICAgICAgbV93aW5kb3ctPnBv
c3RNZXNzYWdlVGltZXJGaXJlZChhZG9wdFB0cih0aGlzKSk7Ci0gICAgICAgIC8vIFRoaXMgb2Jq
ZWN0IGlzIGRlbGV0ZWQgbm93LgorICAgICAgICAvLyBUaGlzIG9iamVjdCBnZXRzIGRlbGV0ZWQg
d2hlbiBzdGQ6OnVuaXF1ZV9wdHIgZmFsbHMgb3V0IG9mIHNjb3BlLi4KKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBvc3RNZXNzYWdlVGltZXI+IHRpbWVyKHRoaXMpOworICAgICAgICBtX3dpbmRv
dy0+cG9zdE1lc3NhZ2VUaW1lckZpcmVkKCp0aW1lcik7CiAgICAgfQogCiAgICAgUmVmUHRyPERP
TVdpbmRvdz4gbV93aW5kb3c7CkBAIC04NDEsMTQgKzg0MywxMiBAQCB2b2lkIERPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTCiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKIH0K
IAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQYXNzT3duUHRyPFBvc3RN
ZXNzYWdlVGltZXI+IHQpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBv
c3RNZXNzYWdlVGltZXImIHRpbWVyKQogewotICAgIE93blB0cjxQb3N0TWVzc2FnZVRpbWVyPiB0
aW1lcih0KTsKLQogICAgIGlmICghZG9jdW1lbnQoKSB8fCAhaXNDdXJyZW50bHlEaXNwbGF5ZWRJ
bkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0
aE9yaWdpbkNoZWNrKHRpbWVyLT50YXJnZXRPcmlnaW4oKSwgdGltZXItPmV2ZW50KGRvY3VtZW50
KCkpLCB0aW1lci0+c3RhY2tUcmFjZSgpKTsKKyAgICBkaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhP
cmlnaW5DaGVjayh0aW1lci50YXJnZXRPcmlnaW4oKSwgdGltZXIuZXZlbnQoZG9jdW1lbnQoKSks
IHRpbWVyLnN0YWNrVHJhY2UoKSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaE1lc3Nh
Z2VFdmVudFdpdGhPcmlnaW5DaGVjayhTZWN1cml0eU9yaWdpbiogaW50ZW5kZWRUYXJnZXRPcmln
aW4sIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4g
c3RhY2tUcmFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTY1OTgx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
MjM5LDcgKzIzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVz
c2FnZVBvcnRBcnJheSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cmIHNv
dXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAvLyBOZWVkZWQgZm9yIE9iamVjdGl2ZS1D
IGJpbmRpbmdzIChzZWUgYnVnIDI4Nzc0KS4KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVzc2FnZVBvcnQqLCBjb25z
dCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUGFzc093blB0cjxQb3N0TWVz
c2FnZVRpbWVyPik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBvc3RNZXNz
YWdlVGltZXImKTsKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5D
aGVjayhTZWN1cml0eU9yaWdpbiogaW50ZW5kZWRUYXJnZXRPcmlnaW4sIFBhc3NSZWZQdHI8RXZl
bnQ+LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPik7CiAKICAgICAgICAg
dm9pZCBzY3JvbGxCeShpbnQgeCwgaW50IHkpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNyArMzM2LDcgQEAgRXZl
bnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogI2lmIEVOQUJMRShDVVJTT1Jf
U1VQUE9SVCkKICAgICAsIG1fY3Vyc29yVXBkYXRlVGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6
Y3Vyc29yVXBkYXRlVGltZXJGaXJlZCkKICNlbmRpZgotICAgICwgbV9hdXRvc2Nyb2xsQ29udHJv
bGxlcihhZG9wdFB0cihuZXcgQXV0b3Njcm9sbENvbnRyb2xsZXIpKQorICAgICwgbV9hdXRvc2Ny
b2xsQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQog
ICAgICwgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwoZmFsc2UpCiAgICAgLCBtX21vdXNl
RG93bldhc0luU3ViZnJhbWUoZmFsc2UpCiAjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQpA
QCAtMzU3LDcgKzM1Nyw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFt
ZSkKICNlbmRpZgogICAgICwgbV9tb3VzZVBvc2l0aW9uSXNVbmtub3duKHRydWUpCiAgICAgLCBt
X21vdXNlRG93blRpbWVzdGFtcCgwKQotICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFj
a2VyKGFkb3B0UHRyKG5ldyBXaGVlbEV2ZW50RGVsdGFUcmFja2VyKSkKKyAgICAsIG1fcmVjZW50
V2hlZWxFdmVudERlbHRhVHJhY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFdoZWVsRXZlbnREZWx0YVRy
YWNrZXI+KCkpCiAgICAgLCBtX3dpZGdldElzTGF0Y2hlZChmYWxzZSkKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAsIG1fbW91c2VEb3duVmlldyhuaWwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgJKHJldmlzaW9uIDE2NTk4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlICJU
ZXh0R3JhbnVsYXJpdHkuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldoZWVsRXZl
bnREZWx0YVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHByaXZhdGU6CiAgICAgVGlt
ZXI8RXZlbnRIYW5kbGVyPiBtX2N1cnNvclVwZGF0ZVRpbWVyOwogI2VuZGlmCiAKLSAgICBPd25Q
dHI8QXV0b3Njcm9sbENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbENvbnRyb2xsZXI7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1dG9zY3JvbGxDb250cm9sbGVy
OwogICAgIGJvb2wgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7CiAgICAgYm9vbCBtX21v
dXNlRG93bldhc0luU3ViZnJhbWU7CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCBwcml2YXRlOgogICAg
IGRvdWJsZSBtX21vdXNlRG93blRpbWVzdGFtcDsKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbV9t
b3VzZURvd247CiAKLSAgICBPd25QdHI8V2hlZWxFdmVudERlbHRhVHJhY2tlcj4gbV9yZWNlbnRX
aGVlbEV2ZW50RGVsdGFUcmFja2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXaGVlbEV2ZW50RGVs
dGFUcmFja2VyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXI7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fbGF0Y2hlZFdoZWVsRXZlbnRFbGVtZW50OwogICAgIGJvb2wgbV93aWRnZXRJc0xh
dGNoZWQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxNjU5ODEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEw
Niw2IEBACiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jv
b3QuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNz
aW9uLmg+CkBAIC0xNjMsOCArMTYyLDggQEAgRnJhbWU6OkZyYW1lKFBhZ2UmIHBhZ2UsIEhUTUxG
cmFtZU93bmVyRQogICAgICwgbV9vd25lckVsZW1lbnQob3duZXJFbGVtZW50KQogICAgICwgbV9z
Y3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBt
X2VkaXRvcihzdGQ6Om1ha2VfdW5pcXVlPEVkaXRvcj4oKnRoaXMpKQotICAgICwgbV9zZWxlY3Rp
b24oYWRvcHRQdHIobmV3IEZyYW1lU2VsZWN0aW9uKHRoaXMpKSkKLSAgICAsIG1fZXZlbnRIYW5k
bGVyKGFkb3B0UHRyKG5ldyBFdmVudEhhbmRsZXIoKnRoaXMpKSkKKyAgICAsIG1fc2VsZWN0aW9u
KHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVTZWxlY3Rpb24+KHRoaXMpKQorICAgICwgbV9ldmVudEhh
bmRsZXIoc3RkOjptYWtlX3VuaXF1ZTxFdmVudEhhbmRsZXI+KCp0aGlzKSkKICAgICAsIG1fYW5p
bWF0aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkNvbnRyb2xsZXI+KCp0
aGlzKSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBtX292ZXJmbG93QXV0b1Njcm9sbFRpbWVy
KHRoaXMsICZGcmFtZTo6b3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXJGaXJlZCkKQEAgLTMxMiw3ICsz
MTEsNyBAQCB2b2lkIEZyYW1lOjpzZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudChpCiB9CiAjZW5k
aWYgLy8gRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKIAotc3RhdGljIFBhc3NPd25QdHI8SlND
OjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsYWJlbHMpCitzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscykKIHsK
ICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hl
cyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3Nz
IGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KQEAgLTM0MywxMCArMzQyLDEwIEBAIHN0YXRpYyBQ
YXNzT3duUHRyPEpTQzo6WWFycjo6UmVndWxhckV4cHIKICAgICAgICAgICAgIHBhdHRlcm4uYXBw
ZW5kKCJcXGIiKTsKICAgICB9CiAgICAgcGF0dGVybi5hcHBlbmQoIikiKTsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybiwgVGV4dENh
c2VJbnNlbnNpdGl2ZSkpOworICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
KHBhdHRlcm4sIFRleHRDYXNlSW5zZW5zaXRpdmUpOwogfQogCi1TdHJpbmcgRnJhbWU6OnNlYXJj
aEZvckxhYmVsc0Fib3ZlQ2VsbChKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHAs
IEhUTUxUYWJsZUNlbGxFbGVtZW50KiBjZWxsLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0
YXJ0T2ZDZWxsKQorU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoY29uc3Qg
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYgcmVnRXhwLCBIVE1MVGFibGVDZWxsRWxlbWVu
dCogY2VsbCwgc2l6ZV90KiByZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCkKIHsKICAgICBI
VE1MVGFibGVDZWxsRWxlbWVudCogYWJvdmVDZWxsID0gY2VsbC0+Y2VsbEFib3ZlKCk7CiAgICAg
aWYgKGFib3ZlQ2VsbCkgewpAQCAtMzU3LDExICszNTYsMTEgQEAgU3RyaW5nIEZyYW1lOjpzZWFy
Y2hGb3JMYWJlbHNBYm92ZUNlbGwoSgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgLy8gRm9yIGVhY2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKICAgICAgICAgICAg
IFN0cmluZyBub2RlU3RyaW5nID0gdGV4dE5vZGUtPmRhdGEoKTsKLSAgICAgICAgICAgIGludCBw
b3MgPSByZWdFeHAtPnNlYXJjaFJldihub2RlU3RyaW5nKTsKKyAgICAgICAgICAgIGludCBwb3Mg
PSByZWdFeHAuc2VhcmNoUmV2KG5vZGVTdHJpbmcpOwogICAgICAgICAgICAgaWYgKHBvcyA+PSAw
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKQog
ICAgICAgICAgICAgICAgICAgICAqcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwgPSBsZW5n
dGhTZWFyY2hlZDsKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0cmluZy5zdWJzdHJpbmco
cG9zLCByZWdFeHAtPm1hdGNoZWRMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5v
ZGVTdHJpbmcuc3Vic3RyaW5nKHBvcywgcmVnRXhwLm1hdGNoZWRMZW5ndGgoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBsZW5ndGhTZWFyY2hlZCArPSBub2RlU3RyaW5nLmxlbmd0aCgp
OwogICAgICAgICB9CkBAIC0zNzUsNyArMzc0LDcgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JM
YWJlbHNBYm92ZUNlbGwoSgogCiBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVs
ZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCogZWxlbWVudCwgc2l6
ZV90KiByZXN1bHREaXN0YW5jZSwgYm9vbCogcmVzdWx0SXNJbkNlbGxBYm92ZSkKIHsKLSAgICBP
d25QdHI8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGNyZWF0ZVJlZ0V4cEZv
ckxhYmVscyhsYWJlbHMpKTsKKyAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4
cCA9IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJlbHMpOwogICAgIC8vIFdlIHN0b3Agc2VhcmNo
aW5nIGFmdGVyIHdlJ3ZlIHNlZW4gdGhpcyBtYW55IGNoYXJzCiAgICAgY29uc3QgdW5zaWduZWQg
aW50IGNoYXJzU2VhcmNoZWRUaHJlc2hvbGQgPSA1MDA7CiAgICAgLy8gVGhpcyBpcyB0aGUgYWJz
b2x1dGUgbWF4IHdlIHNlYXJjaC4gIFdlIGFsbG93IGEgbGl0dGxlIG1vcmUgc2xvcCB0aGFuCkBA
IC00MDEsNyArNDAwLDcgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVt
ZQogICAgICAgICBpZiAobi0+aGFzVGFnTmFtZSh0ZFRhZykgJiYgIXN0YXJ0aW5nVGFibGVDZWxs
KSB7CiAgICAgICAgICAgICBzdGFydGluZ1RhYmxlQ2VsbCA9IHRvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQobik7CiAgICAgICAgIH0gZWxzZSBpZiAobi0+aGFzVGFnTmFtZSh0clRhZykgJiYgc3RhcnRp
bmdUYWJsZUNlbGwpIHsKLSAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBzZWFyY2hGb3JMYWJl
bHNBYm92ZUNlbGwocmVnRXhwLmdldCgpLCBzdGFydGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFu
Y2UpOworICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bChyZWdFeHAsIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CiAgICAgICAgICAg
ICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0SXNJ
bkNlbGxBYm92ZSkKICAgICAgICAgICAgICAgICAgICAgKnJlc3VsdElzSW5DZWxsQWJvdmUgPSB0
cnVlOwpAQCAtNDE0LDExICs0MTMsMTEgQEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNC
ZWZvcmVFbGVtZQogICAgICAgICAgICAgLy8gYWRkIDEwMCBmb3Igc2xvcCwgdG8gbWFrZSBpdCBt
b3JlIGxpa2VseSB0aGF0IHdlJ2xsIHNlYXJjaCB3aG9sZSBub2RlcwogICAgICAgICAgICAgaWYg
KGxlbmd0aFNlYXJjaGVkICsgbm9kZVN0cmluZy5sZW5ndGgoKSA+IG1heENoYXJzU2VhcmNoZWQp
CiAgICAgICAgICAgICAgICAgbm9kZVN0cmluZyA9IG5vZGVTdHJpbmcucmlnaHQoY2hhcnNTZWFy
Y2hlZFRocmVzaG9sZCAtIGxlbmd0aFNlYXJjaGVkKTsKLSAgICAgICAgICAgIGludCBwb3MgPSBy
ZWdFeHAtPnNlYXJjaFJldihub2RlU3RyaW5nKTsKKyAgICAgICAgICAgIGludCBwb3MgPSByZWdF
eHAuc2VhcmNoUmV2KG5vZGVTdHJpbmcpOwogICAgICAgICAgICAgaWYgKHBvcyA+PSAwKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdERpc3RhbmNlKQogICAgICAgICAgICAgICAgICAgICAq
cmVzdWx0RGlzdGFuY2UgPSBsZW5ndGhTZWFyY2hlZDsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZVN0cmluZy5zdWJzdHJpbmcocG9zLCByZWdFeHAtPm1hdGNoZWRMZW5ndGgoKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmcuc3Vic3RyaW5nKHBvcywgcmVnRXhwLm1hdGNo
ZWRMZW5ndGgoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsZW5ndGhTZWFyY2hlZCAr
PSBub2RlU3RyaW5nLmxlbmd0aCgpOwogICAgICAgICB9CkBAIC00MjcsNyArNDI2LDcgQEAgU3Ry
aW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZQogICAgIC8vIElmIHdlIHN0YXJ0
ZWQgaW4gYSBjZWxsLCBidXQgYmFpbGVkIGJlY2F1c2Ugd2UgZm91bmQgdGhlIHN0YXJ0IG9mIHRo
ZSBmb3JtIG9yIHRoZQogICAgIC8vIHByZXZpb3VzIGVsZW1lbnQsIHdlIHN0aWxsIG1pZ2h0IG5l
ZWQgdG8gc2VhcmNoIHRoZSByb3cgYWJvdmUgdXMgZm9yIGEgbGFiZWwuCiAgICAgaWYgKHN0YXJ0
aW5nVGFibGVDZWxsICYmICFzZWFyY2hlZENlbGxBYm92ZSkgewotICAgICAgICAgU3RyaW5nIHJl
c3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAuZ2V0KCksIHN0YXJ0aW5nVGFi
bGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSBzZWFyY2hG
b3JMYWJlbHNBYm92ZUNlbGwocmVnRXhwLCBzdGFydGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFu
Y2UpOwogICAgICAgICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChy
ZXN1bHRJc0luQ2VsbEFib3ZlKQogICAgICAgICAgICAgICAgICpyZXN1bHRJc0luQ2VsbEFib3Zl
ID0gdHJ1ZTsKQEAgLTQ0OCw3ICs0NDcsNyBAQCBzdGF0aWMgU3RyaW5nIG1hdGNoTGFiZWxzQWdh
aW5zdFN0cmluZyhjCiAgICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRpdmUpLCAiICIpOwogICAg
IG11dGFibGVTdHJpbmdUb01hdGNoLnJlcGxhY2UoJ18nLCAnICcpOwogICAgIAotICAgIE93blB0
cjxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoY3JlYXRlUmVnRXhwRm9yTGFi
ZWxzKGxhYmVscykpOworICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnRXhwID0g
Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7CiAgICAgLy8gVXNlIHRoZSBsYXJnZXN0IG1h
dGNoIHdlIGNhbiBmaW5kIGluIHRoZSB3aG9sZSBzdHJpbmcKICAgICBpbnQgcG9zOwogICAgIGlu
dCBsZW5ndGg7CkBAIC00NTYsOSArNDU1LDkgQEAgc3RhdGljIFN0cmluZyBtYXRjaExhYmVsc0Fn
YWluc3RTdHJpbmcoYwogICAgIGludCBiZXN0TGVuZ3RoID0gLTE7CiAgICAgaW50IHN0YXJ0ID0g
MDsKICAgICBkbyB7Ci0gICAgICAgIHBvcyA9IHJlZ0V4cC0+bWF0Y2gobXV0YWJsZVN0cmluZ1Rv
TWF0Y2gsIHN0YXJ0KTsKKyAgICAgICAgcG9zID0gcmVnRXhwLm1hdGNoKG11dGFibGVTdHJpbmdU
b01hdGNoLCBzdGFydCk7CiAgICAgICAgIGlmIChwb3MgIT0gLTEpIHsKLSAgICAgICAgICAgIGxl
bmd0aCA9IHJlZ0V4cC0+bWF0Y2hlZExlbmd0aCgpOworICAgICAgICAgICAgbGVuZ3RoID0gcmVn
RXhwLm1hdGNoZWRMZW5ndGgoKTsKICAgICAgICAgICAgIGlmIChsZW5ndGggPj0gYmVzdExlbmd0
aCkgewogICAgICAgICAgICAgICAgIGJlc3RQb3MgPSBwb3M7CiAgICAgICAgICAgICAgICAgYmVz
dExlbmd0aCA9IGxlbmd0aDsKQEAgLTkzOCw3ICs5MzcsNyBAQCB2b2lkIEZyYW1lOjpzZXRUaWxl
ZEJhY2tpbmdTdG9yZUVuYWJsZWQoCiAgICAgfQogICAgIGlmIChtX3RpbGVkQmFja2luZ1N0b3Jl
KQogICAgICAgICByZXR1cm47Ci0gICAgbV90aWxlZEJhY2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5l
dyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7CisgICAgbV90aWxlZEJhY2tpbmdTdG9yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KHRoaXMpOwogICAgIG1fdGlsZWRCYWNr
aW5nU3RvcmUtPnNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKHRydWUpOwogICAg
IGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVudHModHJ1
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAxNjU5ODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNp
bmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIzNSw3ICsyMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQo
Y29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICAgICAgUGFzc1JlZlB0cjxSYW5nZT4g
cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CiAKLSAgICAgICAgU3Ry
aW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
KiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0
T2ZDZWxsKTsKKyAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChjb25zdCBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXpl
X3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKTsKICAgICAgICAgU3RyaW5nIHNlYXJj
aEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxl
bWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUp
OwogICAgICAgICBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7CiAKQEAgLTI5OSw4ICszMDAsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdENvbnRy
b2xsZXI+IG1fc2NyaXB0OwogICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RWRpdG9yPiBt
X2VkaXRvcjsKLSAgICAgICAgY29uc3QgT3duUHRyPEZyYW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlv
bjsKLSAgICAgICAgY29uc3QgT3duUHRyPEV2ZW50SGFuZGxlcj4gbV9ldmVudEhhbmRsZXI7Cisg
ICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247
CisgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFdmVudEhhbmRsZXI+IG1fZXZlbnRIYW5k
bGVyOwogICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uQ29udHJvbGxlcj4g
bV9hbmltYXRpb25Db250cm9sbGVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzUxLDcgKzM1
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVk
QmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSBvdmVycmlkZSBmaW5hbDsKICAgICAgICAgdmlydHVh
bCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwogCi0gICAgICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV90aWxlZEJhY2tp
bmdTdG9yZTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX3Rp
bGVkQmFja2luZ1N0b3JlOwogI2VuZGlmCiAKICAgICAgICAgaW50IG1fYWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAJKHJldmlzaW9uIDE2NTk4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2Miw3ICsxMzYyLDcgQEAgUmVuZGVyQm94KiBGcmFt
ZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveAogdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2Jq
ZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAg
IGlmICghbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVj
dHNUb1VwZGF0ZSA9IGFkb3B0UHRyKG5ldyBMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVj
dCo+KTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50
KCk7CiAgICAgaWYgKGlzSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MRW1iZWRF
bGVtZW50KGVsZW1lbnQpKSB7CkBAIC0xNDY5LDcgKzE0NjksNyBAQCB2b2lkIEZyYW1lVmlldzo6
YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuCiAgICAgYm9vbCBoYWRTbG93UmVwYWludE9iamVjdHMg
PSBoYXNTbG93UmVwYWludE9iamVjdHMoKTsKIAogICAgIGlmICghbV9zbG93UmVwYWludE9iamVj
dHMpCi0gICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzID0gYWRvcHRQdHIobmV3IEhhc2hTZXQ8
UmVuZGVyRWxlbWVudCo+KTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAgbV9zbG93UmVwYWlu
dE9iamVjdHMtPmFkZChvKTsKIApAQCAtMTUwMyw3ICsxNTAzLDcgQEAgdm9pZCBGcmFtZVZpZXc6
OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KAogdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCogb2JqZWN0KQogewogICAgIGlmICghbV92aWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0cyA9IGFkb3B0UHRyKG5ldyBWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0KTsKKyAgICAg
ICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3ZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RzLT5hZGQob2JqZWN0KTsKQEAgLTQwMDksNyArNDAwOSw3IEBAIFN0cmluZyBG
cmFtZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNBc1QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFt
X3Njcm9sbGFibGVBcmVhcykKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBhZG9wdFB0cihu
ZXcgU2Nyb2xsYWJsZUFyZWFTZXQpOworICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CiAgICAgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFyZWEpLmlzTmV3RW50cnk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUg
IlBhaW50UGhhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJQdHIuaCIKICNpbmNsdWRlICJTY3JvbGxW
aWV3LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01ODUs
MTAgKzU4NSwxMCBAQCBwcml2YXRlOgogICAgIExheW91dFNpemUgbV9zaXplOwogICAgIExheW91
dFNpemUgbV9tYXJnaW5zOwogCi0gICAgT3duUHRyPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVk
T2JqZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGU7CisgICAgc3RkOjp1bmlxdWVfcHRy
PExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9V
cGRhdGU7CiAgICAgY29uc3QgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogCi0gICAgT3duUHRyPEhh
c2hTZXQ8UmVuZGVyRWxlbWVudCo+PiBtX3Nsb3dSZXBhaW50T2JqZWN0czsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGFzaFNldDxSZW5kZXJFbGVtZW50Kj4+IG1fc2xvd1JlcGFpbnRPYmplY3RzOwog
CiAgICAgYm9vbCBtX25lZWRzRnVsbFJlcGFpbnQ7CiAgICAgCkBAIC02ODAsOCArNjgwLDggQEAg
cHJpdmF0ZToKICAgICAvLyBUaGUgaW50cmluc2ljIGNvbnRlbnQgc2l6ZSBkZWNpZGVkIGJ5IGF1
dG9zaXppbmcuCiAgICAgSW50U2l6ZSBtX2F1dG9TaXplQ29udGVudFNpemU7CiAKLSAgICBPd25Q
dHI8U2Nyb2xsYWJsZUFyZWFTZXQ+IG1fc2Nyb2xsYWJsZUFyZWFzOwotICAgIE93blB0cjxWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PiBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxhYmxlQXJlYVNldD4gbV9zY3JvbGxhYmxlQXJlYXM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+IG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHM7CiAKICAgICBpbnQgbV9oZWFkZXJIZWlnaHQ7CiAgICAg
aW50IG1fZm9vdGVySGVpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAxNjU5
ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzksNyArMTM5LDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAg
LCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb250cm9s
bGVyPigqdGhpcywgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50KSkKICNlbmRpZgogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihQb2ludGVy
TG9ja0NvbnRyb2xsZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcG9pbnRlckxvY2tDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCiAjZW5k
aWYKICAgICAsIG1fc2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcHJv
Z3Jlc3Moc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ2xpZW50cy5wcm9n
cmVzc1RyYWNrZXJDbGllbnQpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDE2NTk4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUu
aCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTI1Niw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+KTsKICAgICBTY2hlZHVs
ZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSB7IHJldHVybiBtX3NjaGVkdWxl
ZFJ1bkxvb3BQYWlycy5nZXQoKTsgfQogCi0gICAgT3duUHRyPFNjaGVkdWxlUGFpckhhc2hTZXQ+
IG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZVBh
aXJIYXNoU2V0PiBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlyczsKICNlbmRpZgogCiAgICAgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3Q7CkBAIC00NTYsNyArNDU3LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQ29udHJvbGxlcj4g
bV9pbnNwZWN0b3JDb250cm9sbGVyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
LSAgICBPd25QdHI8UG9pbnRlckxvY2tDb250cm9sbGVyPiBtX3BvaW50ZXJMb2NrQ29udHJvbGxl
cjsKKyAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UG9pbnRlckxvY2tDb250cm9sbGVyPiBtX3Bv
aW50ZXJMb2NrQ29udHJvbGxlcjsKICNlbmRpZgogICAgIFJlZlB0cjxTY3JvbGxpbmdDb29yZGlu
YXRvcj4gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bnNvbGUuaAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8aW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29sZUNsaWVudC5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNs
dWRlICJVc2VyQWN0aXZpdHkuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDE2NTk4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDYgQEAgUG9pbnRlckxv
Y2tDb250cm9sbGVyOjpQb2ludGVyTG9ja0NvbnRybwogewogfQogCi1QYXNzT3duUHRyPFBvaW50
ZXJMb2NrQ29udHJvbGxlcj4gUG9pbnRlckxvY2tDb250cm9sbGVyOjpjcmVhdGUoUGFnZSogcGFn
ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBvaW50ZXJMb2NrQ29udHJvbGxlcihwYWdl
KSk7Ci19Ci0KIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2so
RWxlbWVudCogdGFyZ2V0KQogewogICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmluRG9jdW1l
bnQoKSB8fCBtX2RvY3VtZW50T2ZSZW1vdmVkRWxlbWVudFdoaWxlV2FpdGluZ0ZvclVubG9jaykg
ewpAQCAtNjgsNyArNjMsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBv
aW50CiAgICAgICAgIH0KICAgICAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRw
b2ludGVybG9ja2NoYW5nZUV2ZW50LCB0YXJnZXQpOwogICAgICAgICBtX2VsZW1lbnQgPSB0YXJn
ZXQ7Ci0gICAgfSBlbHNlIGlmIChtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RQb2lu
dGVyTG9jaygpKSB7CisgICAgfSBlbHNlIGlmIChtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkucmVx
dWVzdFBvaW50ZXJMb2NrKCkpIHsKICAgICAgICAgbV9sb2NrUGVuZGluZyA9IHRydWU7CiAgICAg
ICAgIG1fZWxlbWVudCA9IHRhcmdldDsKICAgICB9IGVsc2UgewpAQCAtNzgsNyArNzMsNyBAQCB2
b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50CiAKIHZvaWQgUG9pbnRlckxv
Y2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiB7Ci0gICAgcmV0dXJuIG1fcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKKyAgICByZXR1cm4g
bV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CiB9CiAKIHZv
aWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbGVtZW50UmVtb3ZlZChFbGVtZW50KiBlbGVtZW50
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCShy
ZXZpc2lvbiAxNjU5ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFBvaW50ZXJMb2Nr
Q29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9pbnRlckxvY2tDb250cm9s
bGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IGNyZWF0ZShQYWdlKik7CisgICAgZXhw
bGljaXQgUG9pbnRlckxvY2tDb250cm9sbGVyKFBhZ2UmKTsKIAogICAgIHZvaWQgcmVxdWVzdFBv
aW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCk7CiAgICAgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9j
aygpOwpAQCAtNTcsMTEgKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoTG9ja2Vk
TW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUG9pbnRlckxvY2tDb250cm9s
bGVyKFBhZ2UqKTsKICAgICB2b2lkIGNsZWFyRWxlbWVudCgpOwogICAgIHZvaWQgZW5xdWV1ZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRWxlbWVudCopOwogICAgIHZvaWQgZW5xdWV1
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRG9jdW1lbnQqKTsKLSAgICBQYWdlKiBt
X3BhZ2U7CisgICAgUGFnZSYgbV9wYWdlOwogICAgIGJvb2wgbV9sb2NrUGVuZGluZzsKICAgICBS
ZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVu
dE9mUmVtb3ZlZEVsZW1lbnRXaGlsZVdhaXRpbmdGb3JVbmxvY2s7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgIk9yaWdpbkFjY2Vz
c0VudHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Miw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBTZWN1cml0eVBvbGlj
eTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9IFNlY3VyaXR5UG9saWN5OjpBbGxv
d0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiAKIHR5cGVkZWYgVmVjdG9yPE9yaWdpbkFjY2Vzc0Vu
dHJ5PiBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBPd25Q
dHI8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwordHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4+IE9yaWdp
bkFjY2Vzc01hcDsKIAogc3RhdGljIE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkK
IHsKQEAgLTEzNiw3ICsxMzUsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nl
c3NXaGl0CiAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygp
OwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01h
cCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UHRyKG5ldyBPcmlnaW5B
Y2Nlc3NXaGl0ZUxpc3QpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIGxpc3Qt
PmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6
QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTY1OTgxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uQmFzZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCShyZXZpc2lvbiAx
NjU5ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJTdHls
ZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtNzY2LDE1ICs3NjcsMTUgQEAgcHVibGljOgogICAgIFByb3BlcnR5V3JhcHBl
clZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgQ29sb3IgKFJlbmRlclN0
eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3Qg
Q29sb3ImKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciAo
UmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6
KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVy
dHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihhZG9wdFB0cihuZXcgUHJv
cGVydHlXcmFwcGVyQ29sb3IocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKSkKLSAgICAgICAgLCBtX3Zp
c2l0ZWRXcmFwcGVyKGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVdyYXBwZXJDb2xvcihwcm9wLCB2aXNp
dGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkpCisgICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFr
ZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAg
ICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVy
Q29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9
CiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBw
cm9wLCBNYXliZUludmFsaWRDb2xvclRhZywgQ29sb3IgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgp
IGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciAoUmVuZGVyU3R5bGU6Oip2
aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIp
KGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShw
cm9wKQotICAgICAgICAsIG1fd3JhcHBlcihhZG9wdFB0cihuZXcgUHJvcGVydHlXcmFwcGVyTWF5
YmVJbnZhbGlkQ29sb3IocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKSkKLSAgICAgICAgLCBtX3Zpc2l0
ZWRXcmFwcGVyKGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihw
cm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkpCisgICAgICAgICwgbV93cmFwcGVy
KHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91
bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0
ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgdmlydHVhbCBib29sIGVxdWFs
cyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIpIGNvbnN0CkBAIC03
ODgsOCArNzg5LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPd25QdHI8QW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZT4gbV93cmFwcGVyOwotICAgIE93blB0cjxBbmltYXRp
b25Qcm9wZXJ0eVdyYXBwZXJCYXNlPiBtX3Zpc2l0ZWRXcmFwcGVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlPiBtX3dyYXBwZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2U+IG1fdmlzaXRlZFdyYXBwZXI7
CiB9OwogCiAvLyBXcmFwcGVyIGJhc2UgY2xhc3MgZm9yIGFuIGFuaW1hdGFibGUgcHJvcGVydHkg
aW4gYSBGaWxsTGF5ZXIKQEAgLTEwODAsMTIgKzEwODEsMTIgQEAgcHVibGljOgogICAgIHN0YXRp
YyBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAmIGluc3RhbmNlKCkKICAgICB7CiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGRhdGEgaXMgbmV2ZXIgZGVzdHJveWVkLiBNYXliZSB3ZSBzaG91
bGQgcmVmIGNvdW50IGl0IGFuZCB0b3NzIGl0IHdoZW4gdGhlIGxhc3QgQW5pbWF0aW9uQ29udHJv
bGxlciBpcyBkZXN0cm95ZWQ/Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChPd25QdHI8Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwPiwgbWFwLCAoKSk7Ci0gICAg
ICAgIGlmICghbWFwKQotICAgICAgICAgICAgbWFwID0gYWRvcHRQdHIobmV3IENTU1Byb3BlcnR5
QW5pbWF0aW9uV3JhcHBlck1hcCk7Ci0gICAgICAgIHJldHVybiAqbWFwOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwPiBtYXA7Cisg
ICAgICAgIHJldHVybiBtYXA7CiAgICAgfQogCisgICAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFw
cGVyTWFwKCk7CisKICAgICBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyRm9y
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIHsKICAgICAgICAgaWYgKHBy
b3BlcnR5SUQgPCBmaXJzdENTU1Byb3BlcnR5IHx8IHByb3BlcnR5SUQgPiBsYXN0Q1NTUHJvcGVy
dHkpCkBAIC0xMTEwLDEzICsxMTExLDEyIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCk7CiAgICAgdW5zaWduZWQgY2hhciYg
aW5kZXhGcm9tUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9wcm9wZXJ0eVRvSWRNYXBbcHJvcGVydHlJRCAtIGZpcnN0Q1NTUHJvcGVy
dHldOwogICAgIH0KIAotICAgIFZlY3RvcjxPd25QdHI8QW5pbWF0aW9uUHJvcGVydHlXcmFwcGVy
QmFzZT4+IG1fcHJvcGVydHlXcmFwcGVyczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFu
aW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2U+PiBtX3Byb3BlcnR5V3JhcHBlcnM7CiAgICAgdW5z
aWduZWQgY2hhciBtX3Byb3BlcnR5VG9JZE1hcFtudW1DU1NQcm9wZXJ0aWVzXTsKIAogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNJbnZhbGlkUHJvcGVydHlXcmFwcGVySW5kZXggPSBV
Q0hBUl9NQVg7CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBw
ZXJNYXA6OkNTU1Byb3BlCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYW5pbWF0YWJs
ZUxvbmdoYW5kUHJvcGVydGllc0NvdW50OyArK2kpIHsKICAgICAgICAgQW5pbWF0aW9uUHJvcGVy
dHlXcmFwcGVyQmFzZSogd3JhcHBlciA9IGFuaW1hdGFibGVMb25naGFuZFByb3BlcnR5V3JhcHBl
cnNbaV07Ci0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQoYWRvcHRQ
dHIod3JhcHBlcikpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlPih3cmFwcGVyKSk7
CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQod3JhcHBlci0+cHJvcGVydHkoKSkgPSBpOwog
ICAgIH0KIApAQCAtMTMzOCw3ICsxMzM4LDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwOjpDU1NQcm9wZQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBl
bmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChhZG9wdFB0cihuZXcg
U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5kV3JhcHBlcnMpKSk7
CisgICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIGxvbmdoYW5kV3JhcHBl
cnMpKTsKICAgICAgICAgaW5kZXhGcm9tUHJvcGVydHlJRChwcm9wZXJ0eUlEKSA9IGFuaW1hdGFi
bGVMb25naGFuZFByb3BlcnRpZXNDb3VudCArIGk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvUGFnZU1hYy5jcHAJKHJldmlzaW9uIDE2NTk4MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL1BhZ2VNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHZv
aWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHI8U2MKICAgICBSZWZQdHI8U2NoZWR1
bGVQYWlyPiBwYWlyID0gcHJwUGFpcjsKIAogICAgIGlmICghbV9zY2hlZHVsZWRSdW5Mb29wUGFp
cnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gYWRvcHRQdHIobmV3IFNjaGVk
dWxlUGFpckhhc2hTZXQpOworICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6
bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxv
b3BQYWlycy0+YWRkKHBhaXIpOwogCiAjaWYgIVBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAxNjU5ODEp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xv
YmFsU2NvcGUoKQogCiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphcHBseUNvbnRlbnRTZWN1cml0
eVBvbGljeUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBwb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQogewotICAgIHNldENv
bnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZSh0aGlzKSk7
CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNl
Y3VyaXR5UG9saWN5Pih0aGlzKSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5KCktPmRpZFJl
Y2VpdmVIZWFkZXIocG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227791</attachid>
            <date>2014-03-25 13:43:12 -0700</date>
            <delta_ts>2014-04-20 12:23:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130534-20140325134249.patch</filename>
            <type>text/plain</type>
            <size>46064</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDE0LTAzLTI1ICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGNyb3NzLXBvcnQg
U291cmNlL1dlYkNvcmUvcGFnZS8gY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDUzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBPd25Q
dHIgYW5kIFBhc3NPd25QdHIgaW4gY3Jvc3MtcG9ydCBjb2RlIHVuZGVyIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvIHdpdGgKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyLiBVbm5lY2Vzc2FyeSBPd25QdHIu
aCBhbmQgUGFzc093blB0ci5oIGhlYWRlciBpbmNsdXNpb25zIGFyZSByZW1vdmVkIGFzIHdlbGwu
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3kpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAgICAgKiBw
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVw
b3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmNoZWNr
SW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2
ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTUERpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAqIHBhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9ET01TZWN1cml0eVBvbGlj
eS5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c3RNZXNzYWdlVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9z
dE1lc3NhZ2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1h
dGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGls
ZWRCYWNraW5nU3RvcmVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRF
bWJlZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
U2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
U2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VUaHJvdHRsZXIuaDoKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQ
b2ludGVyTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJl
cXVlc3RQb2ludGVyVW5sb2NrKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxl
ci5oOiBPcGVyYXRlIHdpdGggYSBQYWdlIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4K
KyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgICog
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZm
ZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBw
ZXJNYXA6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9u
V3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBw
YWdlL21hYy9QYWdlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjaGVkdWxl
UGFpcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lG
cm9tU3RyaW5nKToKKwogMjAxNC0wMy0yNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBQbGF5aW5nIHZpZGVvIGRvZXMgbm90IGRpc2FibGUgZGlzcGxh
eSBzbGVlcC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjYyNDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTA4OCw3ICsx
MDg4LDcgQEAgX19aTjdXZWJDb3JlNUZyYW1lMTRmcmFtZUZvcldpZGdldEVQS05TXwogX19aTjdX
ZWJDb3JlNUZyYW1lMTdzZXRQYWdlWm9vbUZhY3RvckVmCiBfX1pON1dlYkNvcmU1RnJhbWUxN3Nl
dFRleHRab29tRmFjdG9yRWYKIF9fWk43V2ViQ29yZTVGcmFtZTIzdmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnRFUktOU184SW50UG9pbnRFCi1fX1pON1dlYkNvcmU1RnJhbWUyNHNlYXJjaEZvckxhYmVs
c0Fib3ZlQ2VsbEVQTjNKU0M0WWFycjE3UmVndWxhckV4cHJlc3Npb25FUE5TXzIwSFRNTFRhYmxl
Q2VsbEVsZW1lbnRFUG0KK19fWk43V2ViQ29yZTVGcmFtZTI0c2VhcmNoRm9yTGFiZWxzQWJvdmVD
ZWxsRVJLTjNKU0M0WWFycjE3UmVndWxhckV4cHJlc3Npb25FUE5TXzIwSFRNTFRhYmxlQ2VsbEVs
ZW1lbnRFUG0KIF9fWk43V2ViQ29yZTVGcmFtZTI1c2V0UGFnZUFuZFRleHRab29tRmFjdG9yc0Vm
ZgogX19aTjdXZWJDb3JlNUZyYW1lMjdyZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW9FUktOU185
RmxvYXRTaXplRVMzXwogX19aTjdXZWJDb3JlNUZyYW1lNmNyZWF0ZUVQTlNfNFBhZ2VFUE5TXzIx
SFRNTEZyYW1lT3duZXJFbGVtZW50RVBOU18xN0ZyYW1lTG9hZGVyQ2xpZW50RQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTkxLDcgKzQ1OTEsNyBAQCB2b2lk
IERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2Nj
dXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAg
IG1fY29va2llVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAgICAg
ICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7Ci0g
ICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNy
ZWF0ZSh0aGlzKSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhpcykpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00NjExLDcgKzQ2MTEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KCkKICNlbmRpZgogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQoU2Fu
ZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG1fdXJsKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRl
bnRTZWN1cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KHRoaXMpKTsKIAog
ICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKSB7CiAgICAgICAg
IGlmICghc2V0dGluZ3MtPndlYlNlY3VyaXR5RW5hYmxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUw
LDkgQEAgdm9pZCBTZWN1cml0eUNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKAogICAgIG1faGF2
ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4gPSB0cnVlOwogfQogCi12b2lkIFNlY3VyaXR5Q29u
dGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KFBhc3NPd25QdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5PiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCit2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+IGNvbnRlbnRTZWN1cml0eVBvbGljeSkKIHsKLSAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9
IHN0ZDo6bW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogfQogCiBib29sIFNlY3VyaXR5Q29u
dGV4dDo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpZm5kZWYgU2VjdXJpdHlDb250ZXh0X2gKICNkZWZpbmUgU2VjdXJpdHlDb250
ZXh0X2gKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTc2LDcgKzc3LDcgQEAgcHJvdGVjdGVkOgogICAgIFNlY3VyaXR5Q29udGV4dCgpOwogICAg
IHZpcnR1YWwgflNlY3VyaXR5Q29udGV4dCgpOwogCi0gICAgdm9pZCBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koUGFzc093blB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+KTsKKyAgICB2b2lkIHNl
dENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9s
aWN5Pik7CiAKICAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVTZWN1cml0eU9yaWdpbigpIHsg
bV9oYXZlSW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbiA9IGZhbHNlOyB9CiAgICAgYm9vbCBoYXZl
SW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faGF2ZUluaXRpYWxp
emVkU2VjdXJpdHlPcmlnaW47IH0KQEAgLTg1LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW47CiAgICAgU2FuZGJveEZsYWdzIG1fc2Fu
ZGJveEZsYWdzOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsK
LSAgICBPd25QdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAxNjYy
NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEwLDcg
KzgxMCw3IEBAIHByaXZhdGU6CiBjbGFzcyBDU1BEaXJlY3RpdmVMaXN0IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDU1BEaXJl
Y3RpdmVMaXN0PiBjcmVhdGUoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgU3RyaW5nJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENTUERpcmVjdGl2ZUxpc3Q+IGNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBj
b25zdCBTdHJpbmcmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOwogCiAgICAg
Y29uc3QgU3RyaW5nJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcjsgfQogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBoZWFkZXJUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9oZWFkZXJUeXBlOyB9CkBAIC04NTQsNyArODU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGFwcGx5U2FuZGJveFBvbGljeShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2Fu
ZGJveFBvbGljeSk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ1NQRGlyZWN0aXZlVHlwZT4KLSAg
ICB2b2lkIHNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIE93blB0cjxDU1BEaXJlY3RpdmVUeXBlPiYpOworICAgIHZvaWQgc2V0Q1NQRGlyZWN0
aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgc3RkOjp1bmlxdWVf
cHRyPENTUERpcmVjdGl2ZVR5cGU+Jik7CiAKICAgICBTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVy
YXRpdmVEaXJlY3RpdmUoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwogICAgIHZvaWQgcmVw
b3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBl
ZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFVS
TCYgYmxvY2tlZFVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmco
KSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51
bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CkBAIC04ODUs
MTkgKzg4NSwxOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXZlU2FuZGJveFBvbGljeTsKICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIG1fcmVmbGVj
dGVkWFNTRGlzcG9zaXRpb247CiAKLSAgICBPd25QdHI8TWVkaWFMaXN0RGlyZWN0aXZlPiBtX3Bs
dWdpblR5cGVzOwotICAgIE93blB0cjxOb25jZURpcmVjdGl2ZT4gbV9zY3JpcHROb25jZTsKLSAg
ICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9iYXNlVVJJOwotICAgIE93blB0cjxTb3Vy
Y2VMaXN0RGlyZWN0aXZlPiBtX2Nvbm5lY3RTcmM7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJl
Y3RpdmU+IG1fZGVmYXVsdFNyYzsKLSAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9m
b250U3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2Zvcm1BY3Rpb247Ci0g
ICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fZnJhbWVTcmM7Ci0gICAgT3duUHRyPFNv
dXJjZUxpc3REaXJlY3RpdmU+IG1faW1nU3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0
aXZlPiBtX21lZGlhU3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX29iamVj
dFNyYzsKLSAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zY3JpcHRTcmM7Ci0gICAg
T3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fc3R5bGVTcmM7CisgICAgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhTGlzdERpcmVjdGl2ZT4gbV9wbHVnaW5UeXBlczsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Tm9uY2VEaXJlY3RpdmU+IG1fc2NyaXB0Tm9uY2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNv
dXJjZUxpc3REaXJlY3RpdmU+IG1fYmFzZVVSSTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNl
TGlzdERpcmVjdGl2ZT4gbV9jb25uZWN0U3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VM
aXN0RGlyZWN0aXZlPiBtX2RlZmF1bHRTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxp
c3REaXJlY3RpdmU+IG1fZm9udFNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlTGlzdERp
cmVjdGl2ZT4gbV9mb3JtQWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGly
ZWN0aXZlPiBtX2ZyYW1lU3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0
aXZlPiBtX2ltZ1NyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlTGlzdERpcmVjdGl2ZT4g
bV9tZWRpYVNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9v
YmplY3RTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fc2Ny
aXB0U3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX3N0eWxl
U3JjOwogCiAgICAgVmVjdG9yPFVSTD4gbV9yZXBvcnRVUklzOwogCkBAIC05MTQsOSArOTE0LDkg
QEAgQ1NQRGlyZWN0aXZlTGlzdDo6Q1NQRGlyZWN0aXZlTGlzdChDb250ZQogICAgIG1fcmVwb3J0
T25seSA9ICh0eXBlID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0IHx8IHR5cGUgPT0g
Q29udGVudFNlY3VyaXR5UG9saWN5OjpQcmVmaXhlZFJlcG9ydCk7CiB9CiAKLVBhc3NPd25QdHI8
Q1NQRGlyZWN0aXZlTGlzdD4gQ1NQRGlyZWN0aXZlTGlzdDo6Y3JlYXRlKENvbnRlbnRTZWN1cml0
eVBvbGljeSogcG9saWN5LCBjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlIHR5cGUpCitzdGQ6OnVuaXF1ZV9wdHI8Q1NQRGlyZWN0aXZlTGlzdD4g
Q1NQRGlyZWN0aXZlTGlzdDo6Y3JlYXRlKENvbnRlbnRTZWN1cml0eVBvbGljeSogcG9saWN5LCBj
b25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIHR5
cGUpCiB7Ci0gICAgT3duUHRyPENTUERpcmVjdGl2ZUxpc3Q+IGRpcmVjdGl2ZXMgPSBhZG9wdFB0
cihuZXcgQ1NQRGlyZWN0aXZlTGlzdChwb2xpY3ksIHR5cGUpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q1NQRGlyZWN0aXZlTGlzdD4gZGlyZWN0aXZlcyhuZXcgQ1NQRGlyZWN0aXZlTGlzdChwb2xp
Y3ksIHR5cGUpKTsKICAgICBkaXJlY3RpdmVzLT5wYXJzZShoZWFkZXIpOwogCiAgICAgaWYgKCFk
aXJlY3RpdmVzLT5jaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVj
dGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkpIHsKQEAgLTkyNyw3ICs5MjcsNyBAQCBQYXNzT3du
UHRyPENTUERpcmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2CiAgICAgaWYgKGRpcmVjdGl2ZXMtPmlz
UmVwb3J0T25seSgpICYmIGRpcmVjdGl2ZXMtPnJlcG9ydFVSSXMoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHBvbGljeS0+cmVwb3J0TWlzc2luZ1JlcG9ydFVSSShoZWFkZXIpOwogCi0gICAgcmV0dXJu
IGRpcmVjdGl2ZXMucmVsZWFzZSgpOworICAgIHJldHVybiBzdGQ6Om1vdmUoZGlyZWN0aXZlcyk7
CiB9CiAKIHZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0
IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3Ry
aW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0CkBAIC05NzYsNyArOTc2LDcgQEAgYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjpjaGVja0V2YWxBbmRSZXBvcgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIFN0cmluZyBzdWZmaXggPSBTdHJpbmcoKTsKLSAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVm
YXVsdFNyYykKKyAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSkKICAgICAg
ICAgc3VmZml4ID0gIiBOb3RlIHRoYXQgJ3NjcmlwdC1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBz
ZXQsIHNvICdkZWZhdWx0LXNyYycgaXMgdXNlZCBhcyBhIGZhbGxiYWNrLiI7CiAKICAgICByZXBv
cnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2Ug
KyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIFVSTCgp
LCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOwpAQCAtMTAxNCw3ICsxMDE0LDcgQEAg
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0lubGluZUFuZFJlcAogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIFN0cmluZyBzdWZmaXggPSBTdHJpbmcoKTsKLSAgICBpZiAoZGlyZWN0aXZl
ID09IG1fZGVmYXVsdFNyYykKKyAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQo
KSkKICAgICAgICAgc3VmZml4ID0gbWFrZVN0cmluZygiIE5vdGUgdGhhdCAnIiwgKGlzU2NyaXB0
ID8gInNjcmlwdCIgOiAic3R5bGUiKSwgIi1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNv
ICdkZWZhdWx0LXNyYycgaXMgdXNlZCBhcyBhIGZhbGxiYWNrLiIpOwogCiAgICAgcmVwb3J0Vmlv
bGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBpc1NjcmlwdCA/IHNjcmlwdFNyYyA6IHN0eWxlU3Jj
LCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi4iICsgc3Vm
Zml4ICsgIlxuIiwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKQEAgLTEwNTUsNyAr
MTA1NSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VBbmRSZXAKICAgICAg
ICAgcHJlZml4ID0gIlJlZnVzZWQgdG8gbG9hZCB0aGUgc3R5bGVzaGVldCAnIjsKIAogICAgIFN0
cmluZyBzdWZmaXggPSBTdHJpbmcoKTsKLSAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNy
YykKKyAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSkKICAgICAgICAgc3Vm
Zml4ID0gIiBOb3RlIHRoYXQgJyIgKyBlZmZlY3RpdmVEaXJlY3RpdmUgKyAiJyB3YXMgbm90IGV4
cGxpY2l0bHkgc2V0LCBzbyAnZGVmYXVsdC1zcmMnIGlzIHVzZWQgYXMgYSBmYWxsYmFjay4iOwog
CiAgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBlZmZlY3RpdmVEaXJlY3Rp
dmUsIHByZWZpeCArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJl
Y2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBk
aXJlY3RpdmU6IFwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBzdWZmaXggKyAiXG4i
LCB1cmwpOwpAQCAtMTMxNCwxMyArMTMxNCwxMyBAQCB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnBh
cnNlUmVwb3J0VVJJKGNvCiAKIAogdGVtcGxhdGU8Y2xhc3MgQ1NQRGlyZWN0aXZlVHlwZT4KLXZv
aWQgQ1NQRGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgT3duUHRyPENTUERpcmVjdGl2ZVR5cGU+JiBkaXJlY3RpdmUp
Cit2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVUeXBl
PiYgZGlyZWN0aXZlKQogewogICAgIGlmIChkaXJlY3RpdmUpIHsKICAgICAgICAgbV9wb2xpY3kt
PnJlcG9ydER1cGxpY2F0ZURpcmVjdGl2ZShuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBkaXJlY3RpdmUgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlVHlwZShuYW1lLCB2YWx1
ZSwgbV9wb2xpY3kpKTsKKyAgICBkaXJlY3RpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPENTUERpcmVj
dGl2ZVR5cGU+KG5hbWUsIHZhbHVlLCBtX3BvbGljeSk7CiB9CiAKIHZvaWQgQ1NQRGlyZWN0aXZl
TGlzdDo6YXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBzYW5kYm94UG9saWN5KQpAQCAtMTQ1OSw3ICsxNDU5LDcgQEAgdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmRpZFJlY2VpdmVIZQogCiAgICAgICAgIC8vIGhlYWRlcjEsaGVhZGVyMiBPUiBo
ZWFkZXIxCiAgICAgICAgIC8vICAgICAgICBeICAgICAgICAgICAgICAgICAgXgotICAgICAgICBP
d25QdHI8Q1NQRGlyZWN0aXZlTGlzdD4gcG9saWN5ID0gQ1NQRGlyZWN0aXZlTGlzdDo6Y3JlYXRl
KHRoaXMsIFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdpbiksIHR5cGUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q1NQRGlyZWN0aXZlTGlzdD4gcG9saWN5ID0gQ1NQRGlyZWN0aXZlTGlz
dDo6Y3JlYXRlKHRoaXMsIFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdpbiksIHR5cGUpOwog
ICAgICAgICBpZiAoIXBvbGljeS0+aXNSZXBvcnRPbmx5KCkgJiYgIXBvbGljeS0+YWxsb3dFdmFs
KDAsIFN1cHByZXNzUmVwb3J0KSkKICAgICAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+ZGlzYWJsZUV2YWwocG9saWN5LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAkocmV2aXNp
b24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KQEAgLTQ2LDE1
ICs0NiwxMiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKIHR5cGVkZWYgaW50IFNhbmRib3hGbGFnczsKLXR5cGVkZWYgVmVjdG9yPE93blB0
cjxDU1BEaXJlY3RpdmVMaXN0Pj4gQ1NQRGlyZWN0aXZlTGlzdFZlY3RvcjsKK3R5cGVkZWYgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVMaXN0Pj4gQ1NQRGlyZWN0aXZlTGlzdFZl
Y3RvcjsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZW50U2VjdXJp
dHlQb2xpY3k+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50U2VjdXJp
dHlQb2xpY3koc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIH0KKyAgICBleHBsaWNpdCBD
b250ZW50U2VjdXJpdHlQb2xpY3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIH5Db250
ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIHZvaWQgY29weVN0YXRlRnJvbShjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqKTsKQEAgLTEzNyw4ICsxMzQsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBleHBlcmltZW50YWxGZWF0dXJlc0VuYWJsZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBDb250ZW50U2VjdXJpdHlQb2xpY3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwot
CiAgICAgdm9pZCBsb2dUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250
ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3Rh
dGUqID0gMCkgY29uc3Q7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9s
aWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGlj
eS5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5
UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgRE9NU2Vj
dXJpdHlQb2xpY3lfaAogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTY2MjQ3KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
NiArMTAyLDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5Lmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
QEAgLTE1Miw4ICsxNTMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBm
aXJlZCgpCiAgICAgewotICAgICAgICBtX3dpbmRvdy0+cG9zdE1lc3NhZ2VUaW1lckZpcmVkKGFk
b3B0UHRyKHRoaXMpKTsKLSAgICAgICAgLy8gVGhpcyBvYmplY3QgaXMgZGVsZXRlZCBub3cuCisg
ICAgICAgIC8vIFRoaXMgb2JqZWN0IGdldHMgZGVsZXRlZCB3aGVuIHN0ZDo6dW5pcXVlX3B0ciBm
YWxscyBvdXQgb2Ygc2NvcGUuLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9zdE1lc3NhZ2VU
aW1lcj4gdGltZXIodGhpcyk7CisgICAgICAgIG1fd2luZG93LT5wb3N0TWVzc2FnZVRpbWVyRmly
ZWQoKnRpbWVyKTsKICAgICB9CiAKICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dpbmRvdzsKQEAg
LTg0MSwxNCArODQzLDEyIEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRy
PFMKICAgICB0aW1lci0+c3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIERPTVdpbmRvdzo6cG9z
dE1lc3NhZ2VUaW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdCkKK3ZvaWQg
RE9NV2luZG93Ojpwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYgdGltZXIp
CiB7Ci0gICAgT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+IHRpbWVyKHQpOwotCiAgICAgaWYgKCFk
b2N1bWVudCgpIHx8ICFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2sodGltZXItPnRh
cmdldE9yaWdpbigpLCB0aW1lci0+ZXZlbnQoZG9jdW1lbnQoKSksIHRpbWVyLT5zdGFja1RyYWNl
KCkpOworICAgIGRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKHRpbWVyLnRhcmdl
dE9yaWdpbigpLCB0aW1lci5ldmVudChkb2N1bWVudCgpKSwgdGltZXIuc3RhY2tUcmFjZSgpKTsK
IH0KIAogdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNr
KFNlY3VyaXR5T3JpZ2luKiBpbnRlbmRlZFRhcmdldE9yaWdpbiwgUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNyArMjM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXRPcmlnaW4sIERPTVdpbmRvdyYgc291cmNlLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgICAgIC8vIE5lZWRlZCBmb3IgT2JqZWN0aXZlLUMgYmluZGluZ3MgKHNlZSBidWcgMjg3
NzQpLgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2lu
LCBET01XaW5kb3cmIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RN
ZXNzYWdlVGltZXJGaXJlZChQYXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+KTsKKyAgICAgICAg
dm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYpOwogICAgICAgICB2
b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKFNlY3VyaXR5T3JpZ2luKiBp
bnRlbmRlZFRhcmdldE9yaWdpbiwgUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8SW5zcGVj
dG9yOjpTY3JpcHRDYWxsU3RhY2s+KTsKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBp
bnQgeSkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZp
c2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxl
cihGcmFtZSYgZnJhbWUpCiAjaWYgRU5BQkxFKENVUlNPUl9TVVBQT1JUKQogICAgICwgbV9jdXJz
b3JVcGRhdGVUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpjdXJzb3JVcGRhdGVUaW1lckZpcmVk
KQogI2VuZGlmCi0gICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBBdXRv
c2Nyb2xsQ29udHJvbGxlcikpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFr
ZV91bmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCiAgICAgLCBtX21vdXNlRG93bk1heVN0
YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZShmYWxz
ZSkKICNpZiAhRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC0zNTcsNyArMzU3LDcgQEAgRXZl
bnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogI2VuZGlmCiAgICAgLCBtX21v
dXNlUG9zaXRpb25Jc1Vua25vd24odHJ1ZSkKICAgICAsIG1fbW91c2VEb3duVGltZXN0YW1wKDAp
Ci0gICAgLCBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXIoYWRvcHRQdHIobmV3IFdoZWVs
RXZlbnREZWx0YVRyYWNrZXIpKQorICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2Vy
KHN0ZDo6bWFrZV91bmlxdWU8V2hlZWxFdmVudERlbHRhVHJhY2tlcj4oKSkKICAgICAsIG1fd2lk
Z2V0SXNMYXRjaGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9tb3VzZURv
d25WaWV3KG5pbCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24g
MTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsOCArMzgsOCBAQAogI2luY2x1ZGUgIlRleHRHcmFudWxhcml0eS5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudERlbHRhVHJhY2tlci5oIgorI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBA
IC00NjUsNyArNDY1LDcgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1fY3Vy
c29yVXBkYXRlVGltZXI7CiAjZW5kaWYKIAotICAgIE93blB0cjxBdXRvc2Nyb2xsQ29udHJvbGxl
cj4gbV9hdXRvc2Nyb2xsQ29udHJvbGxlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b3Njcm9s
bENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbENvbnRyb2xsZXI7CiAgICAgYm9vbCBtX21vdXNlRG93
bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBib29sIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZTsK
IApAQCAtNTIyLDcgKzUyMiw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbW91c2VEb3duVGlt
ZXN0YW1wOwogICAgIFBsYXRmb3JtTW91c2VFdmVudCBtX21vdXNlRG93bjsKIAotICAgIE93blB0
cjxXaGVlbEV2ZW50RGVsdGFUcmFja2VyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YVRyYWNrZXI+IG1fcmVjZW50V2hl
ZWxFdmVudERlbHRhVHJhY2tlcjsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9sYXRjaGVkV2hlZWxF
dmVudEVsZW1lbnQ7CiAgICAgYm9vbCBtX3dpZGdldElzTGF0Y2hlZDsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDYgQEAKICNpbmNsdWRlICJucHJ1
bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2luY2x1ZGUgPGJpbmRp
bmdzL1NjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KQEAgLTE2Myw4ICsxNjIs
OCBAQCBGcmFtZTo6RnJhbWUoUGFnZSYgcGFnZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgLCBtX293
bmVyRWxlbWVudChvd25lckVsZW1lbnQpCiAgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdENvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fZWRpdG9yKHN0ZDo6bWFrZV91bmlx
dWU8RWRpdG9yPigqdGhpcykpCi0gICAgLCBtX3NlbGVjdGlvbihhZG9wdFB0cihuZXcgRnJhbWVT
ZWxlY3Rpb24odGhpcykpKQotICAgICwgbV9ldmVudEhhbmRsZXIoYWRvcHRQdHIobmV3IEV2ZW50
SGFuZGxlcigqdGhpcykpKQorICAgICwgbV9zZWxlY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxGcmFt
ZVNlbGVjdGlvbj4odGhpcykpCisgICAgLCBtX2V2ZW50SGFuZGxlcihzdGQ6Om1ha2VfdW5pcXVl
PEV2ZW50SGFuZGxlcj4oKnRoaXMpKQogICAgICwgbV9hbmltYXRpb25Db250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8QW5pbWF0aW9uQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIFBMQVRGT1JNKElP
UykKICAgICAsIG1fb3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXIodGhpcywgJkZyYW1lOjpvdmVyZmxv
d0F1dG9TY3JvbGxUaW1lckZpcmVkKQpAQCAtMzEyLDcgKzMxMSw3IEBAIHZvaWQgRnJhbWU6OnNl
bmRPcmllbnRhdGlvbkNoYW5nZUV2ZW50KGkKIH0KICNlbmRpZiAvLyBFTkFCTEUoT1JJRU5UQVRJ
T05fRVZFTlRTKQogCi1zdGF0aWMgUGFzc093blB0cjxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNz
aW9uPiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscykK
K3N0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVs
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzKQogewogICAgIC8vIFJFVklFVy0gdmVyc2lv
biBvZiB0aGlzIGNhbGwgaW4gRnJhbWVNYWMubW0gY2FjaGVzIGJhc2VkIG9uIHRoZSBOU0FycmF5
IHB0cnMgYmVpbmcKICAgICAvLyB0aGUgc2FtZSBhY3Jvc3MgY2FsbHMuICBXZSBjYW4ndCBkbyB0
aGF0LgpAQCAtMzQ0LDEwICszNDMsMTAgQEAgc3RhdGljIFBhc3NPd25QdHI8SlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcgogICAgICAgICAgICAgcGF0dGVybi5hcHBlbmRMaXRlcmFsKCJcXGIiKTsKICAg
ICB9CiAgICAgcGF0dGVybi5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmluZygpLCBUZXh0Q2FzZUlu
c2Vuc2l0aXZlKSk7CisgICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0
dGVybi50b1N0cmluZygpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIH0KIAotU3RyaW5nIEZyYW1l
OjpzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiog
cmVnRXhwLCBIVE1MVGFibGVDZWxsRWxlbWVudCogY2VsbCwgc2l6ZV90KiByZXN1bHREaXN0YW5j
ZUZyb21TdGFydE9mQ2VsbCkKK1N0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxs
KGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ0V4cCwgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCiB7
CiAgICAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIGFib3ZlQ2VsbCA9IGNlbGwtPmNlbGxBYm92ZSgp
OwogICAgIGlmIChhYm92ZUNlbGwpIHsKQEAgLTM1OCwxMSArMzU3LDExIEBAIFN0cmluZyBGcmFt
ZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKEoKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIC8vIEZvciBlYWNoIHRleHQgY2h1bmssIHJ1biB0aGUgcmVnZXhwCiAgICAg
ICAgICAgICBTdHJpbmcgbm9kZVN0cmluZyA9IHRleHROb2RlLT5kYXRhKCk7Ci0gICAgICAgICAg
ICBpbnQgcG9zID0gcmVnRXhwLT5zZWFyY2hSZXYobm9kZVN0cmluZyk7CisgICAgICAgICAgICBp
bnQgcG9zID0gcmVnRXhwLnNlYXJjaFJldihub2RlU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChw
b3MgPj0gMCkgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHREaXN0YW5jZUZyb21TdGFydE9m
Q2VsbCkKICAgICAgICAgICAgICAgICAgICAgKnJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxs
ID0gbGVuZ3RoU2VhcmNoZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmcuc3Vi
c3RyaW5nKHBvcywgcmVnRXhwLT5tYXRjaGVkTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHJl
dHVybiBub2RlU3RyaW5nLnN1YnN0cmluZyhwb3MsIHJlZ0V4cC5tYXRjaGVkTGVuZ3RoKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbGVuZ3RoU2VhcmNoZWQgKz0gbm9kZVN0cmluZy5s
ZW5ndGgoKTsKICAgICAgICAgfQpAQCAtMzc2LDcgKzM3NSw3IEBAIFN0cmluZyBGcmFtZTo6c2Vh
cmNoRm9yTGFiZWxzQWJvdmVDZWxsKEoKIAogU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNC
ZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqIGVsZW1l
bnQsIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpCiB7
Ci0gICAgT3duUHRyPEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHJlZ0V4cChjcmVhdGVS
ZWdFeHBGb3JMYWJlbHMobGFiZWxzKSk7CisgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biByZWdFeHAgPSBjcmVhdGVSZWdFeHBGb3JMYWJlbHMobGFiZWxzKTsKICAgICAvLyBXZSBzdG9w
IHNlYXJjaGluZyBhZnRlciB3ZSd2ZSBzZWVuIHRoaXMgbWFueSBjaGFycwogICAgIGNvbnN0IHVu
c2lnbmVkIGludCBjaGFyc1NlYXJjaGVkVGhyZXNob2xkID0gNTAwOwogICAgIC8vIFRoaXMgaXMg
dGhlIGFic29sdXRlIG1heCB3ZSBzZWFyY2guICBXZSBhbGxvdyBhIGxpdHRsZSBtb3JlIHNsb3Ag
dGhhbgpAQCAtNDAyLDcgKzQwMSw3IEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVm
b3JlRWxlbWUKICAgICAgICAgaWYgKG4tPmhhc1RhZ05hbWUodGRUYWcpICYmICFzdGFydGluZ1Rh
YmxlQ2VsbCkgewogICAgICAgICAgICAgc3RhcnRpbmdUYWJsZUNlbGwgPSB0b0hUTUxUYWJsZUNl
bGxFbGVtZW50KG4pOwogICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUodHJUYWcpICYm
IHN0YXJ0aW5nVGFibGVDZWxsKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2VhcmNo
Rm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cC5nZXQoKSwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3Vs
dERpc3RhbmNlKTsKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBzZWFyY2hGb3JMYWJlbHNB
Ym92ZUNlbGwocmVnRXhwLCBzdGFydGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFuY2UpOwogICAg
ICAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdElzSW5DZWxsQWJvdmUpCiAgICAgICAgICAgICAgICAgICAgICpyZXN1bHRJc0luQ2VsbEFi
b3ZlID0gdHJ1ZTsKQEAgLTQxNSwxMSArNDE0LDExIEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9y
TGFiZWxzQmVmb3JlRWxlbWUKICAgICAgICAgICAgIC8vIGFkZCAxMDAgZm9yIHNsb3AsIHRvIG1h
a2UgaXQgbW9yZSBsaWtlbHkgdGhhdCB3ZSdsbCBzZWFyY2ggd2hvbGUgbm9kZXMKICAgICAgICAg
ICAgIGlmIChsZW5ndGhTZWFyY2hlZCArIG5vZGVTdHJpbmcubGVuZ3RoKCkgPiBtYXhDaGFyc1Nl
YXJjaGVkKQogICAgICAgICAgICAgICAgIG5vZGVTdHJpbmcgPSBub2RlU3RyaW5nLnJpZ2h0KGNo
YXJzU2VhcmNoZWRUaHJlc2hvbGQgLSBsZW5ndGhTZWFyY2hlZCk7Ci0gICAgICAgICAgICBpbnQg
cG9zID0gcmVnRXhwLT5zZWFyY2hSZXYobm9kZVN0cmluZyk7CisgICAgICAgICAgICBpbnQgcG9z
ID0gcmVnRXhwLnNlYXJjaFJldihub2RlU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChwb3MgPj0g
MCkgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHREaXN0YW5jZSkKICAgICAgICAgICAgICAg
ICAgICAgKnJlc3VsdERpc3RhbmNlID0gbGVuZ3RoU2VhcmNoZWQ7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG5vZGVTdHJpbmcuc3Vic3RyaW5nKHBvcywgcmVnRXhwLT5tYXRjaGVkTGVuZ3RoKCkp
OworICAgICAgICAgICAgICAgIHJldHVybiBub2RlU3RyaW5nLnN1YnN0cmluZyhwb3MsIHJlZ0V4
cC5tYXRjaGVkTGVuZ3RoKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGVuZ3RoU2Vh
cmNoZWQgKz0gbm9kZVN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgfQpAQCAtNDI4LDcgKzQyNyw3
IEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWUKICAgICAvLyBJZiB3
ZSBzdGFydGVkIGluIGEgY2VsbCwgYnV0IGJhaWxlZCBiZWNhdXNlIHdlIGZvdW5kIHRoZSBzdGFy
dCBvZiB0aGUgZm9ybSBvciB0aGUKICAgICAvLyBwcmV2aW91cyBlbGVtZW50LCB3ZSBzdGlsbCBt
aWdodCBuZWVkIHRvIHNlYXJjaCB0aGUgcm93IGFib3ZlIHVzIGZvciBhIGxhYmVsLgogICAgIGlm
IChzdGFydGluZ1RhYmxlQ2VsbCAmJiAhc2VhcmNoZWRDZWxsQWJvdmUpIHsKLSAgICAgICAgIFN0
cmluZyByZXN1bHQgPSBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwocmVnRXhwLmdldCgpLCBzdGFy
dGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFuY2UpOworICAgICAgICBTdHJpbmcgcmVzdWx0ID0g
c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cCwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3Vs
dERpc3RhbmNlKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0SXNJbkNlbGxBYm92ZSkKICAgICAgICAgICAgICAgICAqcmVzdWx0SXNJbkNl
bGxBYm92ZSA9IHRydWU7CkBAIC00NDksNyArNDQ4LDcgQEAgc3RhdGljIFN0cmluZyBtYXRjaExh
YmVsc0FnYWluc3RTdHJpbmcoYwogICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24oIlxcZCIsIFRleHRDYXNlU2Vuc2l0aXZlKSwgIiAi
KTsKICAgICBtdXRhYmxlU3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKICAgICAKLSAg
ICBPd25QdHI8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGNyZWF0ZVJlZ0V4
cEZvckxhYmVscyhsYWJlbHMpKTsKKyAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJl
Z0V4cCA9IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJlbHMpOwogICAgIC8vIFVzZSB0aGUgbGFy
Z2VzdCBtYXRjaCB3ZSBjYW4gZmluZCBpbiB0aGUgd2hvbGUgc3RyaW5nCiAgICAgaW50IHBvczsK
ICAgICBpbnQgbGVuZ3RoOwpAQCAtNDU3LDkgKzQ1Niw5IEBAIHN0YXRpYyBTdHJpbmcgbWF0Y2hM
YWJlbHNBZ2FpbnN0U3RyaW5nKGMKICAgICBpbnQgYmVzdExlbmd0aCA9IC0xOwogICAgIGludCBz
dGFydCA9IDA7CiAgICAgZG8gewotICAgICAgICBwb3MgPSByZWdFeHAtPm1hdGNoKG11dGFibGVT
dHJpbmdUb01hdGNoLCBzdGFydCk7CisgICAgICAgIHBvcyA9IHJlZ0V4cC5tYXRjaChtdXRhYmxl
U3RyaW5nVG9NYXRjaCwgc3RhcnQpOwogICAgICAgICBpZiAocG9zICE9IC0xKSB7Ci0gICAgICAg
ICAgICBsZW5ndGggPSByZWdFeHAtPm1hdGNoZWRMZW5ndGgoKTsKKyAgICAgICAgICAgIGxlbmd0
aCA9IHJlZ0V4cC5tYXRjaGVkTGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAobGVuZ3RoID49IGJl
c3RMZW5ndGgpIHsKICAgICAgICAgICAgICAgICBiZXN0UG9zID0gcG9zOwogICAgICAgICAgICAg
ICAgIGJlc3RMZW5ndGggPSBsZW5ndGg7CkBAIC05NDYsMTIgKzk0NSwxMiBAQCB2b2lkIEZyYW1l
OjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpCiB2b2lkIEZyYW1lOjpzZXRUaWxlZEJhY2tp
bmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIGlmICghZW5hYmxlZCkgewotICAg
ICAgICBtX3RpbGVkQmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fdGlsZWRCYWNraW5n
U3RvcmUgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3RpbGVk
QmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47Ci0gICAgbV90aWxlZEJhY2tpbmdTdG9yZSA9
IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7CisgICAgbV90aWxlZEJhY2tp
bmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KHRoaXMpOwogICAg
IG1fdGlsZWRCYWNraW5nU3RvcmUtPnNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29w
KHRydWUpOwogICAgIGlmIChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJl
Q29udGVudHModHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAxNjYyNDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKKyNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIz
NSw3ICsyMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1
bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICAgICAgUGFzc1Jl
ZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CiAK
LSAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChKU0M6OllhcnI6OlJlZ3Vs
YXJFeHByZXNzaW9uKiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3Rh
bmNlRnJvbVN0YXJ0T2ZDZWxsKTsKKyAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3Zl
Q2VsbChjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKTsKICAgICAgICAg
U3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElz
SW5DZWxsQWJvdmUpOwogICAgICAgICBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7CiAKQEAgLTI5OSw4ICszMDAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8RWRpdG9yPiBtX2VkaXRvcjsKLSAgICAgICAgY29uc3QgT3duUHRyPEZyYW1lU2VsZWN0aW9u
PiBtX3NlbGVjdGlvbjsKLSAgICAgICAgY29uc3QgT3duUHRyPEV2ZW50SGFuZGxlcj4gbV9ldmVu
dEhhbmRsZXI7CisgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGcmFtZVNlbGVjdGlvbj4g
bV9zZWxlY3Rpb247CisgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFdmVudEhhbmRsZXI+
IG1fZXZlbnRIYW5kbGVyOwogICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9u
Q29udHJvbGxlcj4gbV9hbmltYXRpb25Db250cm9sbGVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQpA
QCAtMzUxLDcgKzM1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJ
bnRSZWN0IHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QoKSBvdmVycmlkZSBmaW5hbDsKICAg
ICAgICAgdmlydHVhbCBDb2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4g
bV90aWxlZEJhY2tpbmdTdG9yZTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2lu
Z1N0b3JlPiBtX3RpbGVkQmFja2luZ1N0b3JlOwogI2VuZGlmCiAKICAgICAgICAgaW50IG1fYWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgUmVu
ZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveAogdm9pZCBGcmFtZVZpZXc6OmFk
ZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2Jq
ZWN0KQogewogICAgIGlmICghbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAgbV9l
bWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IGFkb3B0UHRyKG5ldyBMaXN0SGFzaFNldDxSZW5kZXJF
bWJlZGRlZE9iamVjdCo+KTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAog
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1l
T3duZXJFbGVtZW50KCk7CiAgICAgaWYgKGlzSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkgfHwg
aXNIVE1MRW1iZWRFbGVtZW50KGVsZW1lbnQpKSB7CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCB2b2lk
IEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuCiAgICAgYm9vbCBoYWRTbG93UmVw
YWludE9iamVjdHMgPSBoYXNTbG93UmVwYWludE9iamVjdHMoKTsKIAogICAgIGlmICghbV9zbG93
UmVwYWludE9iamVjdHMpCi0gICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzID0gYWRvcHRQdHIo
bmV3IEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+KTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVj
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAg
bV9zbG93UmVwYWludE9iamVjdHMtPmFkZChvKTsKIApAQCAtMTUxMiw3ICsxNTEyLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KAogdm9pZCBGcmFtZVZpZXc6OmFk
ZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCogb2JqZWN0KQogewogICAg
IGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cyA9IGFkb3B0UHRyKG5ldyBWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
U2V0KTsKKyAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3Zp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5hZGQob2JqZWN0KTsKQEAgLTQwMjUsNyArNDAyNSw3
IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNBc1QKIGJvb2wgRnJhbWVW
aWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7
CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMg
PSBhZG9wdFB0cihuZXcgU2Nyb2xsYWJsZUFyZWFTZXQpOworICAgICAgICBtX3Njcm9sbGFibGVB
cmVhcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CiAgICAgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFyZWEpLmlzTmV3RW50cnk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBA
QAogI2luY2x1ZGUgIlBhaW50UGhhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJQdHIuaCIKICNpbmNs
dWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02MDMsMTAgKzYwMywxMCBAQCBwcml2YXRlOgogICAgIExheW91dFNpemUgbV9zaXpl
OwogICAgIExheW91dFNpemUgbV9tYXJnaW5zOwogCi0gICAgT3duUHRyPExpc3RIYXNoU2V0PFJl
bmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGU7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRk
ZWRPYmplY3RzVG9VcGRhdGU7CiAgICAgY29uc3QgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogCi0g
ICAgT3duUHRyPEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+PiBtX3Nsb3dSZXBhaW50T2JqZWN0czsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxSZW5kZXJFbGVtZW50Kj4+IG1fc2xvd1JlcGFp
bnRPYmplY3RzOwogCiAgICAgYm9vbCBtX25lZWRzRnVsbFJlcGFpbnQ7CiAgICAgCkBAIC02OTgs
OCArNjk4LDggQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgaW50cmluc2ljIGNvbnRlbnQgc2l6ZSBk
ZWNpZGVkIGJ5IGF1dG9zaXppbmcuCiAgICAgSW50U2l6ZSBtX2F1dG9TaXplQ29udGVudFNpemU7
CiAKLSAgICBPd25QdHI8U2Nyb2xsYWJsZUFyZWFTZXQ+IG1fc2Nyb2xsYWJsZUFyZWFzOwotICAg
IE93blB0cjxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PiBtX3ZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxhYmxlQXJlYVNldD4gbV9zY3Jv
bGxhYmxlQXJlYXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RTZXQ+IG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHM7CiAKICAgICBpbnQgbV9oZWFkZXJI
ZWlnaHQ7CiAgICAgaW50IG1fZm9vdGVySGVpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50KSkKICNl
bmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29udHJv
bGxlcihQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fcG9pbnRl
ckxvY2tDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigq
dGhpcykpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fcHJvZ3Jlc3Moc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdl
Q2xpZW50cy5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRl
ICJWaWV3U3RhdGUuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTI1Niw3ICsyNTcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdmVTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+KTsK
ICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSB7IHJldHVy
biBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy5nZXQoKTsgfQogCi0gICAgT3duUHRyPFNjaGVkdWxl
UGFpckhhc2hTZXQ+IG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTY2hlZHVsZVBhaXJIYXNoU2V0PiBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlyczsKICNlbmRpZgog
CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3Q7CkBAIC00NTks
NyArNDYwLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
Q29udHJvbGxlcj4gbV9pbnNwZWN0b3JDb250cm9sbGVyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKLSAgICBPd25QdHI8UG9pbnRlckxvY2tDb250cm9sbGVyPiBtX3BvaW50ZXJM
b2NrQ29udHJvbGxlcjsKKyAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UG9pbnRlckxvY2tDb250
cm9sbGVyPiBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcjsKICNlbmRpZgogICAgIFJlZlB0cjxTY3Jv
bGxpbmdDb29yZGluYXRvcj4gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGUuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uc29sZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5j
bHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQ29u
c29sZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMx
LDYgQEAKICNpbmNsdWRlICJVc2VyQWN0aXZpdHkuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2Nr
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDYg
QEAgUG9pbnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9ja0NvbnRybwogewogfQogCi1QYXNz
T3duUHRyPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4gUG9pbnRlckxvY2tDb250cm9sbGVyOjpjcmVh
dGUoUGFnZSogcGFnZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBvaW50ZXJMb2NrQ29u
dHJvbGxlcihwYWdlKSk7Ci19Ci0KIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0
UG9pbnRlckxvY2soRWxlbWVudCogdGFyZ2V0KQogewogICAgIGlmICghdGFyZ2V0IHx8ICF0YXJn
ZXQtPmluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50T2ZSZW1vdmVkRWxlbWVudFdoaWxlV2FpdGlu
Z0ZvclVubG9jaykgewpAQCAtNjgsNyArNjMsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6cmVxdWVzdFBvaW50CiAgICAgICAgIH0KICAgICAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFt
ZXMoKS53ZWJraXRwb2ludGVybG9ja2NoYW5nZUV2ZW50LCB0YXJnZXQpOwogICAgICAgICBtX2Vs
ZW1lbnQgPSB0YXJnZXQ7Ci0gICAgfSBlbHNlIGlmIChtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LnJlcXVlc3RQb2ludGVyTG9jaygpKSB7CisgICAgfSBlbHNlIGlmIChtX3BhZ2UuY2hyb21lKCku
Y2xpZW50KCkucmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKICAgICAgICAgbV9sb2NrUGVuZGluZyA9
IHRydWU7CiAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKICAgICB9IGVsc2UgewpAQCAtNzgs
NyArNzMsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50CiAKIHZv
aWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiB7Ci0gICAg
cmV0dXJuIG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFBvaW50ZXJVbmxvY2soKTsK
KyAgICByZXR1cm4gbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RQb2ludGVyVW5sb2Nr
KCk7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbGVtZW50UmVtb3ZlZChFbGVt
ZW50KiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRy
b2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29u
dHJvbGxlci5oCShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNz
IFBvaW50ZXJMb2NrQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9pbnRl
ckxvY2tDb250cm9sbGVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IGNyZWF0ZShQYWdl
Kik7CisgICAgZXhwbGljaXQgUG9pbnRlckxvY2tDb250cm9sbGVyKFBhZ2UmKTsKIAogICAgIHZv
aWQgcmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCk7CiAgICAgdm9pZCByZXF1ZXN0
UG9pbnRlclVubG9jaygpOwpAQCAtNTcsMTEgKzU3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
c3BhdGNoTG9ja2VkTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUG9pbnRl
ckxvY2tDb250cm9sbGVyKFBhZ2UqKTsKICAgICB2b2lkIGNsZWFyRWxlbWVudCgpOwogICAgIHZv
aWQgZW5xdWV1ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRWxlbWVudCopOwogICAg
IHZvaWQgZW5xdWV1ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRG9jdW1lbnQqKTsK
LSAgICBQYWdlKiBtX3BhZ2U7CisgICAgUGFnZSYgbV9wYWdlOwogICAgIGJvb2wgbV9sb2NrUGVu
ZGluZzsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OwogICAgIFJlZlB0cjxEb2N1bWVu
dD4gbV9kb2N1bWVudE9mUmVtb3ZlZEVsZW1lbnRXaGlsZVdhaXRpbmdGb3JVbmxvY2s7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMTY2MjQ3KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDggKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
Ik9yaWdpbkFjY2Vzc0VudHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00Miw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBT
ZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9IFNlY3VyaXR5
UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiAKIHR5cGVkZWYgVmVjdG9yPE9y
aWdpbkFjY2Vzc0VudHJ5PiBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBPd25QdHI8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwor
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vzc1doaXRl
TGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAogc3RhdGljIE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2lu
QWNjZXNzTWFwKCkKIHsKQEAgLTEzNiw3ICsxMzUsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0CiAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdp
bi50b1N0cmluZygpOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9y
aWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UHRy
KG5ldyBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBP
cmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29s
LCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5B
Y2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93
U3ViZG9tYWlucykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTY2MjQ3KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uQmFzZS5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CShyZXZpc2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNp
bmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNzY2LDE1ICs3NjcsMTUgQEAgcHVibGljOgogICAgIFBy
b3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgQ29s
b3IgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNl
dHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2xvciAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihhZG9w
dFB0cihuZXcgUHJvcGVydHlXcmFwcGVyQ29sb3IocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKSkKLSAg
ICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVdyYXBwZXJDb2xv
cihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkpCisgICAgICAgICwgbV93cmFw
cGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwg
c2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJv
cGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQog
ICAgIHsKICAgICB9CiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NT
UHJvcGVydHlJRCBwcm9wLCBNYXliZUludmFsaWRDb2xvclRhZywgQ29sb3IgKFJlbmRlclN0eWxl
OjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29s
b3ImKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciAoUmVu
ZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZp
c2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlX
cmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihhZG9wdFB0cihuZXcgUHJvcGVy
dHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3IocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKSkKLSAgICAg
ICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUlu
dmFsaWRDb2xvcihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkpCisgICAgICAg
ICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlk
Q29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVy
KHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgdmlydHVh
bCBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIp
IGNvbnN0CkBAIC03ODgsOCArNzg5LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBPd25QdHI8QW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZT4gbV93cmFwcGVyOwotICAgIE93
blB0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlPiBtX3Zpc2l0ZWRXcmFwcGVyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlPiBtX3dyYXBwZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2U+IG1fdmlz
aXRlZFdyYXBwZXI7CiB9OwogCiAvLyBXcmFwcGVyIGJhc2UgY2xhc3MgZm9yIGFuIGFuaW1hdGFi
bGUgcHJvcGVydHkgaW4gYSBGaWxsTGF5ZXIKQEAgLTEwODAsMTIgKzEwODEsMTIgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAmIGluc3RhbmNlKCkK
ICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRhdGEgaXMgbmV2ZXIgZGVzdHJveWVkLiBN
YXliZSB3ZSBzaG91bGQgcmVmIGNvdW50IGl0IGFuZCB0b3NzIGl0IHdoZW4gdGhlIGxhc3QgQW5p
bWF0aW9uQ29udHJvbGxlciBpcyBkZXN0cm95ZWQ/Ci0gICAgICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChPd25QdHI8Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwPiwgbWFw
LCAoKSk7Ci0gICAgICAgIGlmICghbWFwKQotICAgICAgICAgICAgbWFwID0gYWRvcHRQdHIobmV3
IENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCk7Ci0gICAgICAgIHJldHVybiAqbWFwOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwPiBtYXA7CisgICAgICAgIHJldHVybiBtYXA7CiAgICAgfQogCisgICAgQ1NTUHJvcGVydHlB
bmltYXRpb25XcmFwcGVyTWFwKCk7CisKICAgICBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNl
KiB3cmFwcGVyRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIHsKICAg
ICAgICAgaWYgKHByb3BlcnR5SUQgPCBmaXJzdENTU1Byb3BlcnR5IHx8IHByb3BlcnR5SUQgPiBs
YXN0Q1NTUHJvcGVydHkpCkBAIC0xMTEwLDEzICsxMTExLDEyIEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCk7CiAgICAgdW5z
aWduZWQgY2hhciYgaW5kZXhGcm9tUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
CiAgICAgewogICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVRvSWRNYXBbcHJvcGVydHlJRCAtIGZp
cnN0Q1NTUHJvcGVydHldOwogICAgIH0KIAotICAgIFZlY3RvcjxPd25QdHI8QW5pbWF0aW9uUHJv
cGVydHlXcmFwcGVyQmFzZT4+IG1fcHJvcGVydHlXcmFwcGVyczsKKyAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2U+PiBtX3Byb3BlcnR5V3JhcHBl
cnM7CiAgICAgdW5zaWduZWQgY2hhciBtX3Byb3BlcnR5VG9JZE1hcFtudW1DU1NQcm9wZXJ0aWVz
XTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNJbnZhbGlkUHJvcGVydHlXcmFw
cGVySW5kZXggPSBVQ0hBUl9NQVg7CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBDU1NQcm9wZXJ0eUFu
aW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVydGllc0NvdW50OyArK2kpIHsKICAgICAgICAgQW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSogd3JhcHBlciA9IGFuaW1hdGFibGVMb25naGFuZFBy
b3BlcnR5V3JhcHBlcnNbaV07Ci0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRB
cHBlbmQoYWRvcHRQdHIod3JhcHBlcikpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5j
aGVja2VkQXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNl
Pih3cmFwcGVyKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQod3JhcHBlci0+cHJvcGVy
dHkoKSkgPSBpOwogICAgIH0KIApAQCAtMTMzOCw3ICsxMzM4LDcgQEAgQ1NTUHJvcGVydHlBbmlt
YXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51
bmNoZWNrZWRBcHBlbmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChh
ZG9wdFB0cihuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5k
V3JhcHBlcnMpKSk7CisgICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIGxv
bmdoYW5kV3JhcHBlcnMpKTsKICAgICAgICAgaW5kZXhGcm9tUHJvcGVydHlJRChwcm9wZXJ0eUlE
KSA9IGFuaW1hdGFibGVMb25naGFuZFByb3BlcnRpZXNDb3VudCArIGk7CiAgICAgfQogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAJKHJldmlzaW9uIDE2NjI0NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHI8U2MKICAgICBS
ZWZQdHI8U2NoZWR1bGVQYWlyPiBwYWlyID0gcHJwUGFpcjsKIAogICAgIGlmICghbV9zY2hlZHVs
ZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gYWRvcHRQ
dHIobmV3IFNjaGVkdWxlUGFpckhhc2hTZXQpOworICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIpOwogCiAjaWYgIVBMQVRGT1JNKElPUykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCShyZXZp
c2lvbiAxNjYyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIFdvcmtlckdsb2JhbFNjb3Bl
Ojp+V29ya2VyR2xvYmFsU2NvcGUoKQogCiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphcHBseUNv
bnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBwb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQog
ewotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNy
ZWF0ZSh0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5Pih0aGlzKSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmRpZFJlY2VpdmVIZWFkZXIocG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBl
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229773</attachid>
            <date>2014-04-20 12:24:00 -0700</date>
            <delta_ts>2014-04-21 04:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130534-20140420122337.patch</filename>
            <type>text/plain</type>
            <size>43967</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE0LTAzLTIzICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGNyb3NzLXBvcnQg
U291cmNlL1dlYkNvcmUvcGFnZS8gY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDUzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBPd25Q
dHIgYW5kIFBhc3NPd25QdHIgaW4gY3Jvc3MtcG9ydCBjb2RlIHVuZGVyIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvIHdpdGgKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyLiBVbm5lY2Vzc2FyeSBPd25QdHIu
aCBhbmQgUGFzc093blB0ci5oIGhlYWRlciBpbmNsdXNpb25zIGFyZSByZW1vdmVkIGFzIHdlbGwu
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3kpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAgICAgKiBw
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVw
b3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmNoZWNr
SW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2
ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTUERpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAqIHBhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9ET01TZWN1cml0eVBvbGlj
eS5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c3RNZXNzYWdlVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9z
dE1lc3NhZ2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1h
dGNoTGFiZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGls
ZWRCYWNraW5nU3RvcmVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRF
bWJlZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
U2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
U2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VUaHJvdHRsZXIuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5o
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9w
ZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFw
cGVyTWFwKToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YXBwbHlD
b250ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKToKKwogMjAxNC0wNC0xOSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaGVzIGluIEhUTUxGb3Jt
RWxlbWVudDo6c3VibWl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2NzU2
NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTA5LDcgKzExMDksNyBAQCBfX1pON1dlYkNvcmU1RnJhbWUxNGZyYW1lRm9yV2lkZ2V0RVBLTlNf
CiBfX1pON1dlYkNvcmU1RnJhbWUxN3NldFBhZ2Vab29tRmFjdG9yRWYKIF9fWk43V2ViQ29yZTVG
cmFtZTE3c2V0VGV4dFpvb21GYWN0b3JFZgogX19aTjdXZWJDb3JlNUZyYW1lMjN2aXNpYmxlUG9z
aXRpb25Gb3JQb2ludEVSS05TXzhJbnRQb2ludEUKLV9fWk43V2ViQ29yZTVGcmFtZTI0c2VhcmNo
Rm9yTGFiZWxzQWJvdmVDZWxsRVBOM0pTQzRZYXJyMTdSZWd1bGFyRXhwcmVzc2lvbkVQTlNfMjBI
VE1MVGFibGVDZWxsRWxlbWVudEVQbQorX19aTjdXZWJDb3JlNUZyYW1lMjRzZWFyY2hGb3JMYWJl
bHNBYm92ZUNlbGxFUktOM0pTQzRZYXJyMTdSZWd1bGFyRXhwcmVzc2lvbkVQTlNfMjBIVE1MVGFi
bGVDZWxsRWxlbWVudEVQbQogX19aTjdXZWJDb3JlNUZyYW1lMjVzZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzRWZmCiBfX1pON1dlYkNvcmU1RnJhbWUyN3Jlc2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRp
b0VSS05TXzlGbG9hdFNpemVFUzNfCiBfX1pON1dlYkNvcmU1RnJhbWU2Y3JlYXRlRVBOU180UGFn
ZUVQTlNfMjFIVE1MRnJhbWVPd25lckVsZW1lbnRFUE5TXzE3RnJhbWVMb2FkZXJDbGllbnRFCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE2NzU2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MTksNyArNDYxOSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICAvLyBUaGlz
IGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoKS4K
ICAgICAgICAgbV9jb29raWVVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygp
KTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1
ZSgpKTsKLSAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBv
bGljeTo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5Pih0aGlzKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTQ2MzksNyArNDYzOSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRT
ZWN1cml0eUNvbnRleHQoKQogI2VuZGlmCiAKICAgICBzZXRTZWN1cml0eU9yaWdpbihpc1NhbmRi
b3hlZChTYW5kYm94T3JpZ2luKSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xp
Y3koQ29udGVudFNlY3VyaXR5UG9saWN5OjpjcmVhdGUodGhpcykpOworICAgIHNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhp
cykpOwogCiAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkpIHsK
ICAgICAgICAgaWYgKCFzZXR0aW5ncy0+d2ViU2VjdXJpdHlFbmFibGVkKCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCShyZXZpc2lvbiAxNjc1NjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsOSArNTAsOSBAQCB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oCiAg
ICAgbV9oYXZlSW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbiA9IHRydWU7CiB9CiAKLXZvaWQgU2Vj
dXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koUGFzc093blB0cjxDb250ZW50
U2VjdXJpdHlQb2xpY3k+IGNvbnRlbnRTZWN1cml0eVBvbGljeSkKK3ZvaWQgU2VjdXJpdHlDb250
ZXh0OjpzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1
cml0eVBvbGljeT4gY29udGVudFNlY3VyaXR5UG9saWN5KQogewotICAgIG1fY29udGVudFNlY3Vy
aXR5UG9saWN5ID0gY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIG1fY29udGVudFNlY3VyaXR5
UG9saWN5ID0gc3RkOjptb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiB9CiAKIGJvb2wgU2Vj
dXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBVUkwmIHVybCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgJKHJldmlzaW9uIDE2NzU2NikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTZWN1cml0eUNvbnRleHRfaAogI2RlZmluZSBTZWN1
cml0eUNvbnRleHRfaAogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNzYsNyArNzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2VjdXJpdHlDb250ZXh0
KCk7CiAgICAgdmlydHVhbCB+U2VjdXJpdHlDb250ZXh0KCk7CiAKLSAgICB2b2lkIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShQYXNzT3duUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4pOworICAg
IHZvaWQgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KTsKIAogICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVNlY3VyaXR5T3Jp
Z2luKCkgeyBtX2hhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luID0gZmFsc2U7IH0KICAgICBi
b29sIGhhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9oYXZl
SW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbjsgfQpAQCAtODUsNyArODYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXZlSW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbjsKICAgICBTYW5kYm94Rmxh
Z3MgbV9zYW5kYm94RmxhZ3M7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5
T3JpZ2luOwotICAgIE93blB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3Vy
aXR5UG9saWN5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1f
Y29udGVudFNlY3VyaXR5UG9saWN5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHJldmlz
aW9uIDE2NzU2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMTY3NTY2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MTAsNyArODEwLDggQEAgcHJpdmF0ZToKIGNsYXNzIENTUERpcmVjdGl2ZUxpc3QgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENTUERpcmVjdGl2ZUxpc3Q+IGNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBjb25zdCBT
dHJpbmcmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q1NQRGlyZWN0aXZlTGlzdD4gY3JlYXRlKENvbnRlbnRTZWN1cml0eVBv
bGljeSosIGNvbnN0IFN0cmluZyYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSk7
CisgICAgQ1NQRGlyZWN0aXZlTGlzdChDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOwogCiAgICAgY29uc3QgU3RyaW5nJiBoZWFkZXIoKSBj
b25zdCB7IHJldHVybiBtX2hlYWRlcjsgfQogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSBoZWFkZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXJUeXBlOyB9CkBAIC04
NDEsOCArODQyLDYgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxVUkw+JiByZXBvcnRVUklz
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBvcnRVUklzOyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NQRGly
ZWN0aXZlTGlzdChDb250ZW50U2VjdXJpdHlQb2xpY3kqLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUpOwotCiAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGJv
b2wgcGFyc2VEaXJlY3RpdmUoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBT
dHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpOwpAQCAtODU0LDcgKzg1Myw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhcHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHNhbmRib3hQb2xpY3kpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIENTUERpcmVjdGl2
ZVR5cGU+Ci0gICAgdm9pZCBzZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBPd25QdHI8Q1NQRGlyZWN0aXZlVHlwZT4mKTsKKyAgICB2b2lkIHNl
dENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIHN0
ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVUeXBlPiYpOwogCiAgICAgU291cmNlTGlzdERpcmVj
dGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlKFNvdXJjZUxpc3REaXJlY3RpdmUqKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0
IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdl
LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJM
ID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6
Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0
OwpAQCAtODg1LDE5ICs4ODQsMTkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGF2ZVNhbmRib3hQ
b2xpY3k7CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlv
biBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uOwogCi0gICAgT3duUHRyPE1lZGlhTGlzdERpcmVj
dGl2ZT4gbV9wbHVnaW5UeXBlczsKLSAgICBPd25QdHI8Tm9uY2VEaXJlY3RpdmU+IG1fc2NyaXB0
Tm9uY2U7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fYmFzZVVSSTsKLSAgICBP
d25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9jb25uZWN0U3JjOwotICAgIE93blB0cjxTb3Vy
Y2VMaXN0RGlyZWN0aXZlPiBtX2RlZmF1bHRTcmM7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJl
Y3RpdmU+IG1fZm9udFNyYzsKLSAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9mb3Jt
QWN0aW9uOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2ZyYW1lU3JjOwotICAg
IE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2ltZ1NyYzsKLSAgICBPd25QdHI8U291cmNl
TGlzdERpcmVjdGl2ZT4gbV9tZWRpYVNyYzsKLSAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2
ZT4gbV9vYmplY3RTcmM7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fc2NyaXB0
U3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX3N0eWxlU3JjOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYUxpc3REaXJlY3RpdmU+IG1fcGx1Z2luVHlwZXM7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5vbmNlRGlyZWN0aXZlPiBtX3NjcmlwdE5vbmNlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2Jhc2VVUkk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fY29ubmVjdFNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9kZWZhdWx0U3JjOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2ZvbnRTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNv
dXJjZUxpc3REaXJlY3RpdmU+IG1fZm9ybUFjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291
cmNlTGlzdERpcmVjdGl2ZT4gbV9mcmFtZVNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNl
TGlzdERpcmVjdGl2ZT4gbV9pbWdTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxpc3RE
aXJlY3RpdmU+IG1fbWVkaWFTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxpc3REaXJl
Y3RpdmU+IG1fb2JqZWN0U3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0
aXZlPiBtX3NjcmlwdFNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlTGlzdERpcmVjdGl2
ZT4gbV9zdHlsZVNyYzsKIAogICAgIFZlY3RvcjxVUkw+IG1fcmVwb3J0VVJJczsKIApAQCAtOTE0
LDkgKzkxMyw5IEBAIENTUERpcmVjdGl2ZUxpc3Q6OkNTUERpcmVjdGl2ZUxpc3QoQ29udGUKICAg
ICBtX3JlcG9ydE9ubHkgPSAodHlwZSA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydCB8
fCB0eXBlID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UHJlZml4ZWRSZXBvcnQpOwogfQogCi1Q
YXNzT3duUHRyPENTUERpcmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250
ZW50U2VjdXJpdHlQb2xpY3kqIHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSB0eXBlKQorc3RkOjp1bmlxdWVfcHRyPENTUERpcmVj
dGl2ZUxpc3Q+IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kq
IHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSB0eXBlKQogewotICAgIE93blB0cjxDU1BEaXJlY3RpdmVMaXN0PiBkaXJlY3RpdmVz
ID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZUxpc3QocG9saWN5LCB0eXBlKSk7CisgICAgYXV0
byBkaXJlY3RpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVMaXN0Pihwb2xpY3ks
IHR5cGUpOwogICAgIGRpcmVjdGl2ZXMtPnBhcnNlKGhlYWRlcik7CiAKICAgICBpZiAoIWRpcmVj
dGl2ZXMtPmNoZWNrRXZhbChkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZl
cy0+bV9zY3JpcHRTcmMuZ2V0KCkpKSkgewpAQCAtOTI3LDcgKzkyNiw3IEBAIFBhc3NPd25QdHI8
Q1NQRGlyZWN0aXZlTGlzdD4gQ1NQRGlyZWN0aXYKICAgICBpZiAoZGlyZWN0aXZlcy0+aXNSZXBv
cnRPbmx5KCkgJiYgZGlyZWN0aXZlcy0+cmVwb3J0VVJJcygpLmlzRW1wdHkoKSkKICAgICAgICAg
cG9saWN5LT5yZXBvcnRNaXNzaW5nUmVwb3J0VVJJKGhlYWRlcik7CiAKLSAgICByZXR1cm4gZGly
ZWN0aXZlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRpcmVjdGl2ZXM7CiB9CiAKIHZvaWQgQ1NQ
RGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4
dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJM
LCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpIGNvbnN0CkBAIC05NzYsNyArOTc1LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0Ojpj
aGVja0V2YWxBbmRSZXBvcgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFN0cmluZyBzdWZm
aXggPSBTdHJpbmcoKTsKLSAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYykKKyAgICBp
ZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSkKICAgICAgICAgc3VmZml4ID0gIiBO
b3RlIHRoYXQgJ3NjcmlwdC1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0
LXNyYycgaXMgdXNlZCBhcyBhIGZhbGxiYWNrLiI7CiAKICAgICByZXBvcnRWaW9sYXRpb24oZGly
ZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0
aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIFVSTCgpLCBjb250ZXh0VVJMLCBj
b250ZXh0TGluZSwgc3RhdGUpOwpAQCAtMTAxNCw3ICsxMDEzLDcgQEAgYm9vbCBDU1BEaXJlY3Rp
dmVMaXN0OjpjaGVja0lubGluZUFuZFJlcAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFN0
cmluZyBzdWZmaXggPSBTdHJpbmcoKTsKLSAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNy
YykKKyAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSkKICAgICAgICAgc3Vm
Zml4ID0gbWFrZVN0cmluZygiIE5vdGUgdGhhdCAnIiwgKGlzU2NyaXB0ID8gInNjcmlwdCIgOiAi
c3R5bGUiKSwgIi1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycg
aXMgdXNlZCBhcyBhIGZhbGxiYWNrLiIpOwogCiAgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2
ZS0+dGV4dCgpLCBpc1NjcmlwdCA/IHNjcmlwdFNyYyA6IHN0eWxlU3JjLCBjb25zb2xlTWVzc2Fn
ZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi4iICsgc3VmZml4ICsgIlxuIiwgVVJM
KCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKQEAgLTEwNTUsNyArMTA1NCw3IEBAIGJvb2wg
Q1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VBbmRSZXAKICAgICAgICAgcHJlZml4ID0gIlJl
ZnVzZWQgdG8gbG9hZCB0aGUgc3R5bGVzaGVldCAnIjsKIAogICAgIFN0cmluZyBzdWZmaXggPSBT
dHJpbmcoKTsKLSAgICBpZiAoZGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYykKKyAgICBpZiAoZGly
ZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSkKICAgICAgICAgc3VmZml4ID0gIiBOb3RlIHRo
YXQgJyIgKyBlZmZlY3RpdmVEaXJlY3RpdmUgKyAiJyB3YXMgbm90IGV4cGxpY2l0bHkgc2V0LCBz
byAnZGVmYXVsdC1zcmMnIGlzIHVzZWQgYXMgYSBmYWxsYmFjay4iOwogCiAgICAgcmVwb3J0Vmlv
bGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBlZmZlY3RpdmVEaXJlY3RpdmUsIHByZWZpeCArIHVy
bC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgdmlvbGF0
ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6IFwiIiAr
IGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBzdWZmaXggKyAiXG4iLCB1cmwpOwpAQCAtMTMx
NCwxMyArMTMxMywxMyBAQCB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnBhcnNlUmVwb3J0VVJJKGNv
CiAKIAogdGVtcGxhdGU8Y2xhc3MgQ1NQRGlyZWN0aXZlVHlwZT4KLXZvaWQgQ1NQRGlyZWN0aXZl
TGlzdDo6c2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgT3duUHRyPENTUERpcmVjdGl2ZVR5cGU+JiBkaXJlY3RpdmUpCit2b2lkIENTUERpcmVj
dGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVUeXBlPiYgZGlyZWN0aXZlKQog
ewogICAgIGlmIChkaXJlY3RpdmUpIHsKICAgICAgICAgbV9wb2xpY3ktPnJlcG9ydER1cGxpY2F0
ZURpcmVjdGl2ZShuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkaXJlY3RpdmUg
PSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlVHlwZShuYW1lLCB2YWx1ZSwgbV9wb2xpY3kpKTsK
KyAgICBkaXJlY3RpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KG5hbWUs
IHZhbHVlLCBtX3BvbGljeSk7CiB9CiAKIHZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6YXBwbHlTYW5k
Ym94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94UG9saWN5
KQpAQCAtMTQ1OSw3ICsxNDU4LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJl
Y2VpdmVIZQogCiAgICAgICAgIC8vIGhlYWRlcjEsaGVhZGVyMiBPUiBoZWFkZXIxCiAgICAgICAg
IC8vICAgICAgICBeICAgICAgICAgICAgICAgICAgXgotICAgICAgICBPd25QdHI8Q1NQRGlyZWN0
aXZlTGlzdD4gcG9saWN5ID0gQ1NQRGlyZWN0aXZlTGlzdDo6Y3JlYXRlKHRoaXMsIFN0cmluZyhi
ZWdpbiwgcG9zaXRpb24gLSBiZWdpbiksIHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q1NQRGlyZWN0aXZlTGlzdD4gcG9saWN5ID0gQ1NQRGlyZWN0aXZlTGlzdDo6Y3JlYXRlKHRoaXMs
IFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdpbiksIHR5cGUpOwogICAgICAgICBpZiAoIXBv
bGljeS0+aXNSZXBvcnRPbmx5KCkgJiYgIXBvbGljeS0+YWxsb3dFdmFsKDAsIFN1cHByZXNzUmVw
b3J0KSkKICAgICAgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGlzYWJsZUV2YWwo
cG9saWN5LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAkocmV2aXNpb24gMTY3NTY2KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KQEAgLTQ2LDE1ICs0NiwxMiBAQCBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVk
ZWYgaW50IFNhbmRib3hGbGFnczsKLXR5cGVkZWYgVmVjdG9yPE93blB0cjxDU1BEaXJlY3RpdmVM
aXN0Pj4gQ1NQRGlyZWN0aXZlTGlzdFZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxDU1BEaXJlY3RpdmVMaXN0Pj4gQ1NQRGlyZWN0aXZlTGlzdFZlY3RvcjsKIAogY2xhc3Mg
Q29udGVudFNlY3VyaXR5UG9saWN5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50U2VjdXJpdHlQb2xpY3koc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpOwotICAgIH0KKyAgICBleHBsaWNpdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIH5Db250ZW50U2VjdXJpdHlQb2xp
Y3koKTsKIAogICAgIHZvaWQgY29weVN0YXRlRnJvbShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3kqKTsKQEAgLTEzNyw4ICsxMzQsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBleHBlcmltZW50YWxG
ZWF0dXJlc0VuYWJsZWQoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb250ZW50
U2VjdXJpdHlQb2xpY3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiAgICAgdm9pZCBsb2dU
b0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwg
PSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6
T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7
CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9saWN5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAx
Njc1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9saWN5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgRE9NU2VjdXJpdHlQb2xpY3lfaAog
CiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTY3NTY2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5o
PgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTE1Miw4ICsxNTMs
OSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpCiAgICAgewot
ICAgICAgICBtX3dpbmRvdy0+cG9zdE1lc3NhZ2VUaW1lckZpcmVkKGFkb3B0UHRyKHRoaXMpKTsK
LSAgICAgICAgLy8gVGhpcyBvYmplY3QgaXMgZGVsZXRlZCBub3cuCisgICAgICAgIC8vIFRoaXMg
b2JqZWN0IGdldHMgZGVsZXRlZCB3aGVuIHN0ZDo6dW5pcXVlX3B0ciBmYWxscyBvdXQgb2Ygc2Nv
cGUuLgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdGltZXIodGhp
cyk7CisgICAgICAgIG1fd2luZG93LT5wb3N0TWVzc2FnZVRpbWVyRmlyZWQoKnRpbWVyKTsKICAg
ICB9CiAKICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3dpbmRvdzsKQEAgLTg0MSwxNCArODQzLDEy
IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFMKICAgICB0aW1lci0+
c3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZp
cmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdCkKK3ZvaWQgRE9NV2luZG93Ojpwb3N0
TWVzc2FnZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYgdGltZXIpCiB7Ci0gICAgT3duUHRy
PFBvc3RNZXNzYWdlVGltZXI+IHRpbWVyKHQpOwotCiAgICAgaWYgKCFkb2N1bWVudCgpIHx8ICFp
c0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlz
cGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2sodGltZXItPnRhcmdldE9yaWdpbigpLCB0
aW1lci0+ZXZlbnQoZG9jdW1lbnQoKSksIHRpbWVyLT5zdGFja1RyYWNlKCkpOworICAgIGRpc3Bh
dGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKHRpbWVyLnRhcmdldE9yaWdpbigpLCB0aW1l
ci5ldmVudChkb2N1bWVudCgpKSwgdGltZXIuc3RhY2tUcmFjZSgpKTsKIH0KIAogdm9pZCBET01X
aW5kb3c6OmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKFNlY3VyaXR5T3JpZ2lu
KiBpbnRlbmRlZFRhcmdldE9yaWdpbiwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFBhc3NSZWZQ
dHI8U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCShyZXZpc2lvbiAxNjc1NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNyArMjM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydEFycmF5KiwgY29uc3QgU3RyaW5nJiB0YXJnZXRP
cmlnaW4sIERPTVdpbmRvdyYgc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIE5l
ZWRlZCBmb3IgT2JqZWN0aXZlLUMgYmluZGluZ3MgKHNlZSBidWcgMjg3NzQpLgogICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cmIHNv
dXJjZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVGltZXJGaXJl
ZChQYXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+KTsKKyAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRpbWVyRmlyZWQoUG9zdE1lc3NhZ2VUaW1lciYpOwogICAgICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKFNlY3VyaXR5T3JpZ2luKiBpbnRlbmRlZFRhcmdldE9y
aWdpbiwgUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+KTsKIAogICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNjc1NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzNiw3ICszMzYsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJhbWUp
CiAjaWYgRU5BQkxFKENVUlNPUl9TVVBQT1JUKQogICAgICwgbV9jdXJzb3JVcGRhdGVUaW1lcih0
aGlzLCAmRXZlbnRIYW5kbGVyOjpjdXJzb3JVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCi0gICAg
LCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBBdXRvc2Nyb2xsQ29udHJvbGxl
cikpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Nj
cm9sbENvbnRyb2xsZXI+KCkpCiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChm
YWxzZSkKICAgICAsIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKICNpZiAhRU5BQkxF
KElPU19UT1VDSF9FVkVOVFMpCkBAIC0zNTcsNyArMzU3LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVu
dEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogI2VuZGlmCiAgICAgLCBtX21vdXNlUG9zaXRpb25Jc1Vu
a25vd24odHJ1ZSkKICAgICAsIG1fbW91c2VEb3duVGltZXN0YW1wKDApCi0gICAgLCBtX3JlY2Vu
dFdoZWVsRXZlbnREZWx0YVRyYWNrZXIoYWRvcHRQdHIobmV3IFdoZWVsRXZlbnREZWx0YVRyYWNr
ZXIpKQorICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyKHN0ZDo6bWFrZV91bmlx
dWU8V2hlZWxFdmVudERlbHRhVHJhY2tlcj4oKSkKICAgICAsIG1fd2lkZ2V0SXNMYXRjaGVkKGZh
bHNlKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9tb3VzZURvd25WaWV3KG5pbCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMTY3NTY2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCAr
MzgsOCBAQAogI2luY2x1ZGUgIlRleHRHcmFudWxhcml0eS5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSAiV2hlZWxFdmVudERlbHRhVHJhY2tlci5oIgorI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC00NjQsNyArNDY0LDcg
QEAgcHJpdmF0ZToKICAgICBUaW1lcjxFdmVudEhhbmRsZXI+IG1fY3Vyc29yVXBkYXRlVGltZXI7
CiAjZW5kaWYKIAotICAgIE93blB0cjxBdXRvc2Nyb2xsQ29udHJvbGxlcj4gbV9hdXRvc2Nyb2xs
Q29udHJvbGxlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b3Njcm9sbENvbnRyb2xsZXI+IG1f
YXV0b3Njcm9sbENvbnRyb2xsZXI7CiAgICAgYm9vbCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Nj
cm9sbDsKICAgICBib29sIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZTsKIApAQCAtNTIxLDcgKzUy
MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbW91c2VEb3duVGltZXN0YW1wOwogICAgIFBs
YXRmb3JtTW91c2VFdmVudCBtX21vdXNlRG93bjsKIAotICAgIE93blB0cjxXaGVlbEV2ZW50RGVs
dGFUcmFja2VyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdoZWVsRXZlbnREZWx0YVRyYWNrZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhVHJh
Y2tlcjsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9sYXRjaGVkV2hlZWxFdmVudEVsZW1lbnQ7CiAg
ICAgYm9vbCBtX3dpZGdldElzTGF0Y2hlZDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJl
dmlzaW9uIDE2NzU2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYsNyArMTA2LDYgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgog
I2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2luY2x1ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KQEAgLTE2Myw4ICsxNjIsOCBAQCBGcmFtZTo6RnJh
bWUoUGFnZSYgcGFnZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgLCBtX293bmVyRWxlbWVudChvd25l
ckVsZW1lbnQpCiAgICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdENvbnRyb2xs
ZXI+KCp0aGlzKSkKICAgICAsIG1fZWRpdG9yKHN0ZDo6bWFrZV91bmlxdWU8RWRpdG9yPigqdGhp
cykpCi0gICAgLCBtX3NlbGVjdGlvbihhZG9wdFB0cihuZXcgRnJhbWVTZWxlY3Rpb24odGhpcykp
KQotICAgICwgbV9ldmVudEhhbmRsZXIoYWRvcHRQdHIobmV3IEV2ZW50SGFuZGxlcigqdGhpcykp
KQorICAgICwgbV9zZWxlY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVNlbGVjdGlvbj4odGhp
cykpCisgICAgLCBtX2V2ZW50SGFuZGxlcihzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50SGFuZGxlcj4o
KnRoaXMpKQogICAgICwgbV9hbmltYXRpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QW5p
bWF0aW9uQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fb3Zl
cmZsb3dBdXRvU2Nyb2xsVGltZXIodGhpcywgJkZyYW1lOjpvdmVyZmxvd0F1dG9TY3JvbGxUaW1l
ckZpcmVkKQpAQCAtMzEyLDcgKzMxMSw3IEBAIHZvaWQgRnJhbWU6OnNlbmRPcmllbnRhdGlvbkNo
YW5nZUV2ZW50KGkKIH0KICNlbmRpZiAvLyBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogCi1z
dGF0aWMgUGFzc093blB0cjxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBjcmVhdGVSZWdF
eHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscykKK3N0YXRpYyBKU0M6Ollh
cnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgbGFiZWxzKQogewogICAgIC8vIFJFVklFVy0gdmVyc2lvbiBvZiB0aGlzIGNhbGwg
aW4gRnJhbWVNYWMubW0gY2FjaGVzIGJhc2VkIG9uIHRoZSBOU0FycmF5IHB0cnMgYmVpbmcKICAg
ICAvLyB0aGUgc2FtZSBhY3Jvc3MgY2FsbHMuICBXZSBjYW4ndCBkbyB0aGF0LgpAQCAtMzQ0LDEw
ICszNDMsMTAgQEAgc3RhdGljIFBhc3NPd25QdHI8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcgogICAg
ICAgICAgICAgcGF0dGVybi5hcHBlbmRMaXRlcmFsKCJcXGIiKTsKICAgICB9CiAgICAgcGF0dGVy
bi5hcHBlbmQoJyknKTsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmluZygpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKSk7Cisg
ICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50b1N0cmluZygp
LCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKIH0KIAotU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJl
bHNBYm92ZUNlbGwoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwLCBIVE1MVGFi
bGVDZWxsRWxlbWVudCogY2VsbCwgc2l6ZV90KiByZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2Vs
bCkKK1N0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKGNvbnN0IEpTQzo6WWFy
cjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ0V4cCwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIGNlbGws
IHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCiB7CiAgICAgSFRNTFRhYmxl
Q2VsbEVsZW1lbnQqIGFib3ZlQ2VsbCA9IGNlbGwtPmNlbGxBYm92ZSgpOwogICAgIGlmIChhYm92
ZUNlbGwpIHsKQEAgLTM1OCwxMSArMzU3LDExIEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFi
ZWxzQWJvdmVDZWxsKEoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIC8v
IEZvciBlYWNoIHRleHQgY2h1bmssIHJ1biB0aGUgcmVnZXhwCiAgICAgICAgICAgICBTdHJpbmcg
bm9kZVN0cmluZyA9IHRleHROb2RlLT5kYXRhKCk7Ci0gICAgICAgICAgICBpbnQgcG9zID0gcmVn
RXhwLT5zZWFyY2hSZXYobm9kZVN0cmluZyk7CisgICAgICAgICAgICBpbnQgcG9zID0gcmVnRXhw
LnNlYXJjaFJldihub2RlU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChwb3MgPj0gMCkgewogICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCkKICAgICAgICAg
ICAgICAgICAgICAgKnJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsID0gbGVuZ3RoU2VhcmNo
ZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmcuc3Vic3RyaW5nKHBvcywgcmVn
RXhwLT5tYXRjaGVkTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBub2RlU3RyaW5n
LnN1YnN0cmluZyhwb3MsIHJlZ0V4cC5tYXRjaGVkTGVuZ3RoKCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgbGVuZ3RoU2VhcmNoZWQgKz0gbm9kZVN0cmluZy5sZW5ndGgoKTsKICAgICAg
ICAgfQpAQCAtMzc2LDcgKzM3NSw3IEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJv
dmVDZWxsKEoKIAogU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqIGVsZW1lbnQsIHNpemVfdCogcmVz
dWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpCiB7Ci0gICAgT3duUHRyPEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHJlZ0V4cChjcmVhdGVSZWdFeHBGb3JMYWJlbHMo
bGFiZWxzKSk7CisgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAgPSBjcmVh
dGVSZWdFeHBGb3JMYWJlbHMobGFiZWxzKTsKICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyBhZnRl
ciB3ZSd2ZSBzZWVuIHRoaXMgbWFueSBjaGFycwogICAgIGNvbnN0IHVuc2lnbmVkIGludCBjaGFy
c1NlYXJjaGVkVGhyZXNob2xkID0gNTAwOwogICAgIC8vIFRoaXMgaXMgdGhlIGFic29sdXRlIG1h
eCB3ZSBzZWFyY2guICBXZSBhbGxvdyBhIGxpdHRsZSBtb3JlIHNsb3AgdGhhbgpAQCAtNDAyLDcg
KzQwMSw3IEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWUKICAgICAg
ICAgaWYgKG4tPmhhc1RhZ05hbWUodGRUYWcpICYmICFzdGFydGluZ1RhYmxlQ2VsbCkgewogICAg
ICAgICAgICAgc3RhcnRpbmdUYWJsZUNlbGwgPSB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KG4pOwog
ICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUodHJUYWcpICYmIHN0YXJ0aW5nVGFibGVD
ZWxsKSB7Ci0gICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVD
ZWxsKHJlZ0V4cC5nZXQoKSwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKKyAg
ICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwocmVnRXhw
LCBzdGFydGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFuY2UpOwogICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdElzSW5DZWxsQWJv
dmUpCiAgICAgICAgICAgICAgICAgICAgICpyZXN1bHRJc0luQ2VsbEFib3ZlID0gdHJ1ZTsKQEAg
LTQxNSwxMSArNDE0LDExIEBAIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxl
bWUKICAgICAgICAgICAgIC8vIGFkZCAxMDAgZm9yIHNsb3AsIHRvIG1ha2UgaXQgbW9yZSBsaWtl
bHkgdGhhdCB3ZSdsbCBzZWFyY2ggd2hvbGUgbm9kZXMKICAgICAgICAgICAgIGlmIChsZW5ndGhT
ZWFyY2hlZCArIG5vZGVTdHJpbmcubGVuZ3RoKCkgPiBtYXhDaGFyc1NlYXJjaGVkKQogICAgICAg
ICAgICAgICAgIG5vZGVTdHJpbmcgPSBub2RlU3RyaW5nLnJpZ2h0KGNoYXJzU2VhcmNoZWRUaHJl
c2hvbGQgLSBsZW5ndGhTZWFyY2hlZCk7Ci0gICAgICAgICAgICBpbnQgcG9zID0gcmVnRXhwLT5z
ZWFyY2hSZXYobm9kZVN0cmluZyk7CisgICAgICAgICAgICBpbnQgcG9zID0gcmVnRXhwLnNlYXJj
aFJldihub2RlU3RyaW5nKTsKICAgICAgICAgICAgIGlmIChwb3MgPj0gMCkgewogICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHREaXN0YW5jZSkKICAgICAgICAgICAgICAgICAgICAgKnJlc3VsdERp
c3RhbmNlID0gbGVuZ3RoU2VhcmNoZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHJp
bmcuc3Vic3RyaW5nKHBvcywgcmVnRXhwLT5tYXRjaGVkTGVuZ3RoKCkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBub2RlU3RyaW5nLnN1YnN0cmluZyhwb3MsIHJlZ0V4cC5tYXRjaGVkTGVuZ3Ro
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbGVuZ3RoU2VhcmNoZWQgKz0gbm9kZVN0
cmluZy5sZW5ndGgoKTsKICAgICAgICAgfQpAQCAtNDI4LDcgKzQyNyw3IEBAIFN0cmluZyBGcmFt
ZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWUKICAgICAvLyBJZiB3ZSBzdGFydGVkIGluIGEg
Y2VsbCwgYnV0IGJhaWxlZCBiZWNhdXNlIHdlIGZvdW5kIHRoZSBzdGFydCBvZiB0aGUgZm9ybSBv
ciB0aGUKICAgICAvLyBwcmV2aW91cyBlbGVtZW50LCB3ZSBzdGlsbCBtaWdodCBuZWVkIHRvIHNl
YXJjaCB0aGUgcm93IGFib3ZlIHVzIGZvciBhIGxhYmVsLgogICAgIGlmIChzdGFydGluZ1RhYmxl
Q2VsbCAmJiAhc2VhcmNoZWRDZWxsQWJvdmUpIHsKLSAgICAgICAgIFN0cmluZyByZXN1bHQgPSBz
ZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwocmVnRXhwLmdldCgpLCBzdGFydGluZ1RhYmxlQ2VsbCwg
cmVzdWx0RGlzdGFuY2UpOworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxz
QWJvdmVDZWxsKHJlZ0V4cCwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0SXNJ
bkNlbGxBYm92ZSkKICAgICAgICAgICAgICAgICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9IHRydWU7
CkBAIC00NDksNyArNDQ4LDcgQEAgc3RhdGljIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RTdHJp
bmcoYwogICAgIHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24oIlxcZCIsIFRleHRDYXNlU2Vuc2l0aXZlKSwgIiAiKTsKICAgICBtdXRhYmxl
U3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKICAgICAKLSAgICBPd25QdHI8SlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJl
bHMpKTsKKyAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCA9IGNyZWF0ZVJl
Z0V4cEZvckxhYmVscyhsYWJlbHMpOwogICAgIC8vIFVzZSB0aGUgbGFyZ2VzdCBtYXRjaCB3ZSBj
YW4gZmluZCBpbiB0aGUgd2hvbGUgc3RyaW5nCiAgICAgaW50IHBvczsKICAgICBpbnQgbGVuZ3Ro
OwpAQCAtNDU3LDkgKzQ1Niw5IEBAIHN0YXRpYyBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0U3Ry
aW5nKGMKICAgICBpbnQgYmVzdExlbmd0aCA9IC0xOwogICAgIGludCBzdGFydCA9IDA7CiAgICAg
ZG8gewotICAgICAgICBwb3MgPSByZWdFeHAtPm1hdGNoKG11dGFibGVTdHJpbmdUb01hdGNoLCBz
dGFydCk7CisgICAgICAgIHBvcyA9IHJlZ0V4cC5tYXRjaChtdXRhYmxlU3RyaW5nVG9NYXRjaCwg
c3RhcnQpOwogICAgICAgICBpZiAocG9zICE9IC0xKSB7Ci0gICAgICAgICAgICBsZW5ndGggPSBy
ZWdFeHAtPm1hdGNoZWRMZW5ndGgoKTsKKyAgICAgICAgICAgIGxlbmd0aCA9IHJlZ0V4cC5tYXRj
aGVkTGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAobGVuZ3RoID49IGJlc3RMZW5ndGgpIHsKICAg
ICAgICAgICAgICAgICBiZXN0UG9zID0gcG9zOwogICAgICAgICAgICAgICAgIGJlc3RMZW5ndGgg
PSBsZW5ndGg7CkBAIC05NDYsMTIgKzk0NSwxMiBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNv
bnN0IEludFNpemUmIHZpCiB2b2lkIEZyYW1lOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogewogICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICBtX3RpbGVkQmFj
a2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fdGlsZWRCYWNraW5nU3RvcmUgPSBudWxscHRy
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3RpbGVkQmFja2luZ1N0b3JlKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV90aWxlZEJhY2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBU
aWxlZEJhY2tpbmdTdG9yZSh0aGlzKSk7CisgICAgbV90aWxlZEJhY2tpbmdTdG9yZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KHRoaXMpOwogICAgIG1fdGlsZWRCYWNraW5n
U3RvcmUtPnNldENvbW1pdFRpbGVVcGRhdGVzT25JZGxlRXZlbnRMb29wKHRydWUpOwogICAgIGlm
IChtX3ZpZXcpCiAgICAgICAgIG1fdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVudHModHJ1ZSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiAxNjc1NjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNs
dWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIzNSw3ICsyMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQoY29u
c3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICAgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFu
Z2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CiAKLSAgICAgICAgU3RyaW5n
IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKiwg
SFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZD
ZWxsKTsKKyAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChjb25zdCBKU0M6
OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3Qq
IHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKTsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZv
ckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVu
dCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwog
ICAgICAgICBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7CiAKQEAgLTI5OSw4ICszMDAsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdENvbnRyb2xs
ZXI+IG1fc2NyaXB0OwogICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RWRpdG9yPiBtX2Vk
aXRvcjsKLSAgICAgICAgY29uc3QgT3duUHRyPEZyYW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsK
LSAgICAgICAgY29uc3QgT3duUHRyPEV2ZW50SGFuZGxlcj4gbV9ldmVudEhhbmRsZXI7CisgICAg
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247Cisg
ICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxFdmVudEhhbmRsZXI+IG1fZXZlbnRIYW5kbGVy
OwogICAgICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uQ29udHJvbGxlcj4gbV9h
bmltYXRpb25Db250cm9sbGVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzUxLDcgKzM1Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBJbnRSZWN0IHRpbGVkQmFj
a2luZ1N0b3JlVmlzaWJsZVJlY3QoKSBvdmVycmlkZSBmaW5hbDsKICAgICAgICAgdmlydHVhbCBD
b2xvciB0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsOwogCi0gICAgICAgIE93blB0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV90aWxlZEJhY2tpbmdT
dG9yZTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX3RpbGVk
QmFja2luZ1N0b3JlOwogI2VuZGlmCiAKICAgICAgICAgaW50IG1fYWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHJldmlzaW9uIDE2NzU2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgUmVuZGVyQm94KiBGcmFtZVZp
ZXc6OmVtYmVkZGVkQ29udGVudEJveAogdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0
VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlm
ICghbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNU
b1VwZGF0ZSA9IGFkb3B0UHRyKG5ldyBMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+
KTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93
bmVyRWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7
CiAgICAgaWYgKGlzSFRNTE9iamVjdEVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MRW1iZWRFbGVt
ZW50KGVsZW1lbnQpKSB7CkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRk
U2xvd1JlcGFpbnRPYmplY3QoUmVuCiAgICAgYm9vbCBoYWRTbG93UmVwYWludE9iamVjdHMgPSBo
YXNTbG93UmVwYWludE9iamVjdHMoKTsKIAogICAgIGlmICghbV9zbG93UmVwYWludE9iamVjdHMp
Ci0gICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzID0gYWRvcHRQdHIobmV3IEhhc2hTZXQ8UmVu
ZGVyRWxlbWVudCo+KTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAgbV9zbG93UmVwYWludE9i
amVjdHMtPmFkZChvKTsKIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJl
bW92ZVNsb3dSZXBhaW50T2JqZWN0KAogdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCogb2JqZWN0KQogewogICAgIGlmICghbV92aWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
cyA9IGFkb3B0UHRyKG5ldyBWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0KTsKKyAgICAgICAg
bV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzLT5hZGQob2JqZWN0KTsKQEAgLTM5ODksNyArMzk4OSw3IEBAIFN0cmluZyBGcmFt
ZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNBc1QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3JvbGxh
YmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Nj
cm9sbGFibGVBcmVhcykKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBhZG9wdFB0cihuZXcg
U2Nyb2xsYWJsZUFyZWFTZXQpOworICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CiAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWFzLT5hZGQoc2Nyb2xsYWJsZUFyZWEpLmlzTmV3RW50cnk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMTY3NTY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlBh
aW50UGhhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJQdHIuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3
LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MDIsMTAg
KzYwMiwxMCBAQCBwcml2YXRlOgogICAgIExheW91dFNpemUgbV9zaXplOwogICAgIExheW91dFNp
emUgbV9tYXJnaW5zOwogCi0gICAgT3duUHRyPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2Jq
ZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExp
c3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRkZWRPYmplY3RzVG9VcGRh
dGU7CiAgICAgY29uc3QgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogCi0gICAgT3duUHRyPEhhc2hT
ZXQ8UmVuZGVyRWxlbWVudCo+PiBtX3Nsb3dSZXBhaW50T2JqZWN0czsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGFzaFNldDxSZW5kZXJFbGVtZW50Kj4+IG1fc2xvd1JlcGFpbnRPYmplY3RzOwogCiAg
ICAgYm9vbCBtX25lZWRzRnVsbFJlcGFpbnQ7CiAgICAgCkBAIC02OTcsOCArNjk3LDggQEAgcHJp
dmF0ZToKICAgICAvLyBUaGUgaW50cmluc2ljIGNvbnRlbnQgc2l6ZSBkZWNpZGVkIGJ5IGF1dG9z
aXppbmcuCiAgICAgSW50U2l6ZSBtX2F1dG9TaXplQ29udGVudFNpemU7CiAKLSAgICBPd25QdHI8
U2Nyb2xsYWJsZUFyZWFTZXQ+IG1fc2Nyb2xsYWJsZUFyZWFzOwotICAgIE93blB0cjxWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0U2V0PiBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxhYmxlQXJlYVNldD4gbV9zY3JvbGxhYmxlQXJlYXM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+IG1fdmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdHM7CiAKICAgICBpbnQgbV9oZWFkZXJIZWlnaHQ7CiAgICAgaW50
IG1fZm9vdGVySGVpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDE2NzU2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIK
ICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KQEAgLTI1Nyw3ICsyNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+KTsKICAgICBTY2hlZHVsZVBh
aXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSB7IHJldHVybiBtX3NjaGVkdWxlZFJ1
bkxvb3BQYWlycy5nZXQoKTsgfQogCi0gICAgT3duUHRyPFNjaGVkdWxlUGFpckhhc2hTZXQ+IG1f
c2NoZWR1bGVkUnVuTG9vcFBhaXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZVBhaXJI
YXNoU2V0PiBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlyczsKICNlbmRpZgogCiAgICAgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VUaHJvdHRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VUaHJvdHRsZXIuaAkocmV2aXNpb24gMTY3NTY2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlVGhyb3R0bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRl
ICJVc2VyQWN0aXZpdHkuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCShyZXZpc2lvbiAxNjc1
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQyLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Rh
dGljIFNlY3VyaXR5UG9saWN5OjpMb2NhbExvYWRQb2xpY3kgbG9jYWxMb2FkUG9saWN5ID0gU2Vj
dXJpdHlQb2xpY3k6OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seTsKIAogdHlwZWRlZiBWZWN0
b3I8T3JpZ2luQWNjZXNzRW50cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKLXR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIE93blB0cjxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+PiBPcmlnaW5BY2Nlc3NN
YXA7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8T3JpZ2luQWNjZXNz
V2hpdGVMaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwogCiBzdGF0aWMgT3JpZ2luQWNjZXNzTWFwJiBv
cmlnaW5BY2Nlc3NNYXAoKQogewpAQCAtMTM2LDcgKzEzNSw3IEBAIHZvaWQgU2VjdXJpdHlQb2xp
Y3k6OmFkZE9yaWdpbkFjY2Vzc1doaXQKICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gc291cmNl
T3JpZ2luLnRvU3RyaW5nKCk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRv
cHRQdHIobmV3IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKIAog
ICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9y
aWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlz
YWxsb3dTdWJkb21haW5zKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNjc1NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJBbmltYXRpb25CYXNlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAJKHJldmlzaW9uIDE2NzU2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBA
QAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03NjUsMTUgKzc2NiwxNSBAQCBwdWJsaWM6CiAg
ICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9w
LCBDb2xvciAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
Ojoqc2V0dGVyKShjb25zdCBDb2xvciYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbG9yIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAg
OiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVy
KGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVdyYXBwZXJDb2xvcihwcm9wLCBnZXR0ZXIsIHNldHRlcikp
KQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoYWRvcHRQdHIobmV3IFByb3BlcnR5V3JhcHBl
ckNvbG9yKHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKSkKKyAgICAgICAgLCBt
X3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0
dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1
ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRl
cikpCiAgICAgewogICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xv
cihDU1NQcm9wZXJ0eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9yVGFnLCBDb2xvciAoUmVuZGVy
U3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25z
dCBDb2xvciYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9y
IChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
OjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKGFkb3B0UHRyKG5ldyBQ
cm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcihwcm9wLCBnZXR0ZXIsIHNldHRlcikpKQot
ICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoYWRvcHRQdHIobmV3IFByb3BlcnR5V3JhcHBlck1h
eWJlSW52YWxpZENvbG9yKHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKSkKKyAg
ICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUlu
dmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4o
cHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewogICAgIH0KICAgICB2
aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHls
ZSogYikgY29uc3QKQEAgLTc4Nyw4ICs3ODgsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIE93blB0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlPiBtX3dyYXBwZXI7Ci0g
ICAgT3duUHRyPEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2U+IG1fdmlzaXRlZFdyYXBwZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2U+IG1fd3Jh
cHBlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZT4g
bV92aXNpdGVkV3JhcHBlcjsKIH07CiAKIC8vIFdyYXBwZXIgYmFzZSBjbGFzcyBmb3IgYW4gYW5p
bWF0YWJsZSBwcm9wZXJ0eSBpbiBhIEZpbGxMYXllcgpAQCAtMTA3OSwxMiArMTA4MCwxMiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCYgaW5zdGFu
Y2UoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZGF0YSBpcyBuZXZlciBkZXN0cm95
ZWQuIE1heWJlIHdlIHNob3VsZCByZWYgY291bnQgaXQgYW5kIHRvc3MgaXQgd2hlbiB0aGUgbGFz
dCBBbmltYXRpb25Db250cm9sbGVyIGlzIGRlc3Ryb3llZD8KLSAgICAgICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA+
LCBtYXAsICgpKTsKLSAgICAgICAgaWYgKCFtYXApCi0gICAgICAgICAgICBtYXAgPSBhZG9wdFB0
cihuZXcgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKTsKLSAgICAgICAgcmV0dXJuICpt
YXA7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDU1NQcm9wZXJ0eUFuaW1hdGlvbldy
YXBwZXJNYXA+IG1hcDsKKyAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9CiAKKyAgICBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKTsKKwogICAgIEFuaW1hdGlvblByb3BlcnR5V3JhcHBl
ckJhc2UqIHdyYXBwZXJGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAg
ewogICAgICAgICBpZiAocHJvcGVydHlJRCA8IGZpcnN0Q1NTUHJvcGVydHkgfHwgcHJvcGVydHlJ
RCA+IGxhc3RDU1NQcm9wZXJ0eSkKQEAgLTExMDksMTMgKzExMTAsMTIgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKTsKICAg
ICB1bnNpZ25lZCBjaGFyJiBpbmRleEZyb21Qcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Byb3BlcnR5VG9JZE1hcFtwcm9wZXJ0eUlE
IC0gZmlyc3RDU1NQcm9wZXJ0eV07CiAgICAgfQogCi0gICAgVmVjdG9yPE93blB0cjxBbmltYXRp
b25Qcm9wZXJ0eVdyYXBwZXJCYXNlPj4gbV9wcm9wZXJ0eVdyYXBwZXJzOworICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZT4+IG1fcHJvcGVydHlX
cmFwcGVyczsKICAgICB1bnNpZ25lZCBjaGFyIG1fcHJvcGVydHlUb0lkTWFwW251bUNTU1Byb3Bl
cnRpZXNdOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY0ludmFsaWRQcm9wZXJ0
eVdyYXBwZXJJbmRleCA9IFVDSEFSX01BWDsKQEAgLTEzMTMsNyArMTMxMyw3IEBAIENTU1Byb3Bl
cnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGUKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQ7ICsraSkgewogICAgICAg
ICBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyID0gYW5pbWF0YWJsZUxvbmdo
YW5kUHJvcGVydHlXcmFwcGVyc1tpXTsKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hl
Y2tlZEFwcGVuZChhZG9wdFB0cih3cmFwcGVyKSk7CisgICAgICAgIG1fcHJvcGVydHlXcmFwcGVy
cy51bmNoZWNrZWRBcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblByb3BlcnR5V3JhcHBl
ckJhc2U+KHdyYXBwZXIpKTsKICAgICAgICAgaW5kZXhGcm9tUHJvcGVydHlJRCh3cmFwcGVyLT5w
cm9wZXJ0eSgpKSA9IGk7CiAgICAgfQogCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBDU1NQcm9wZXJ0
eUFuaW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlCiAgICAgICAgICAgICBsb25naGFuZFdyYXBw
ZXJzLnVuY2hlY2tlZEFwcGVuZChtX3Byb3BlcnR5V3JhcHBlcnNbd3JhcHBlckluZGV4XS5nZXQo
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBw
ZW5kKGFkb3B0UHRyKG5ldyBTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXIocHJvcGVydHlJRCwgbG9u
Z2hhbmRXcmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJ
RCwgbG9uZ2hhbmRXcmFwcGVycykpOwogICAgICAgICBpbmRleEZyb21Qcm9wZXJ0eUlEKHByb3Bl
cnR5SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVydGllc0NvdW50ICsgaTsKICAgICB9CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLmNwcAkocmV2aXNpb24gMTY3NTY2KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDcgQEAgdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTYwog
ICAgIFJlZlB0cjxTY2hlZHVsZVBhaXI+IHBhaXIgPSBwcnBQYWlyOwogCiAgICAgaWYgKCFtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycykKLSAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBh
ZG9wdFB0cihuZXcgU2NoZWR1bGVQYWlySGFzaFNldCk7CisgICAgICAgIG1fc2NoZWR1bGVkUnVu
TG9vcFBhaXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOwogICAg
IG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpcik7CiAKICNpZiAhUExBVEZPUk0oSU9T
KQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJ
KHJldmlzaW9uIDE2NzU2NikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgV29ya2VyR2xvYmFs
U2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFw
cGx5Q29udGVudFNlY3VyaXR5UG9saWN5RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUpCiB7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6Y3JlYXRlKHRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KHRoaXMpKTsKICAgICBjb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+ZGlkUmVjZWl2ZUhlYWRlcihwb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVR5cGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjc1NjkpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxNC0wNC0yMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgTW92ZSBjcm9zcy1wb3J0IFNvdXJjZS9XZWJDb3JlL3BhZ2UvIGNvZGUgdG8gc3RkOjp1
bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzA1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoc2VhcmNoRm9y
TGFiZWxzQmVmb3JlRWxlbWVudCk6IFBhc3MgYSBSZWdFeHAgcmVmZXJlbmNlIHRvIEZyYW1lOjpz
ZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoKS4KKwogMjAxNC0wNC0xOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gV2ViVmlldyBhZGp1c3RzIHRoZSBjdXJz
b3IgZXZlbiB3aGVuIGFub3RoZXIgd2luZG93IGlzIGluIGZyb250CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNp
b24gMTY3NTY2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgTlNTdHJp
bmcqIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsCiAgICAgICAgIH0gZWxzZSBpZiAobi0+aGFzVGFn
TmFtZSh0ZFRhZykgJiYgIXN0YXJ0aW5nVGFibGVDZWxsKSB7CiAgICAgICAgICAgICBzdGFydGlu
Z1RhYmxlQ2VsbCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4obik7CiAgICAg
ICAgIH0gZWxzZSBpZiAobi0+aGFzVGFnTmFtZSh0clRhZykgJiYgc3RhcnRpbmdUYWJsZUNlbGwp
IHsKLSAgICAgICAgICAgIE5TU3RyaW5nKiByZXN1bHQgPSBmcmFtZS0+c2VhcmNoRm9yTGFiZWxz
QWJvdmVDZWxsKHJlZ0V4cCwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKKyAg
ICAgICAgICAgIE5TU3RyaW5nKiByZXN1bHQgPSBmcmFtZS0+c2VhcmNoRm9yTGFiZWxzQWJvdmVD
ZWxsKCpyZWdFeHAsIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ICYmIFtyZXN1bHQgbGVuZ3RoXSA+IDApIHsKICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0SXNJbkNlbGxBYm92ZSkKICAgICAgICAgICAgICAgICAgICAgKnJlc3VsdElz
SW5DZWxsQWJvdmUgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229797</attachid>
            <date>2014-04-21 04:09:00 -0700</date>
            <delta_ts>2014-04-21 10:12:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-130534-20140421040836.patch</filename>
            <type>text/plain</type>
            <size>44534</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzU5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE0LTA0LTIxICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIGNyb3NzLXBvcnQg
U291cmNlL1dlYkNvcmUvcGFnZS8gY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDUzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBPd25QdHIg
YW5kIFBhc3NPd25QdHIgaW4gY3Jvc3MtcG9ydCBjb2RlIHVuZGVyIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvIHdpdGgKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyLiBVbm5lY2Vzc2FyeSBPd25QdHIuaCBh
bmQgUGFzc093blB0ci5oIGhlYWRlciBpbmNsdXNpb25zIGFyZSByZW1vdmVkIGFzIHdlbGwuCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3kpOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAgICAgKiBwYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBwYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tFdmFsQW5kUmVwb3J0
VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrSW5s
aW5lQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxp
c3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
UERpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAqIHBhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9ET01TZWN1cml0eVBvbGljeS5o
OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc3RN
ZXNzYWdlVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1l
c3NhZ2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAq
IHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAq
IHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNo
TGFiZWxzQWdhaW5zdFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0VGlsZWRC
YWNraW5nU3RvcmVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRFbWJl
ZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xv
d1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2Ny
b2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2VUaHJvdHRsZXIuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0
eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwKToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmFkZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YXBwbHlDb250
ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKToKKwogMjAxNC0wNC0yMSAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgaU9TIGFuZCBub24taU9TIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKCkgZnVuY3Rpb25zIHNob3VsZCB1c2Ugc3RkOjptYWtl
X3VuaXF1ZTw+KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjc1ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTExMCw3
ICsxMTEwLDcgQEAgX19aTjdXZWJDb3JlNUZyYW1lMTRmcmFtZUZvcldpZGdldEVQS05TXwogX19a
TjdXZWJDb3JlNUZyYW1lMTdzZXRQYWdlWm9vbUZhY3RvckVmCiBfX1pON1dlYkNvcmU1RnJhbWUx
N3NldFRleHRab29tRmFjdG9yRWYKIF9fWk43V2ViQ29yZTVGcmFtZTIzdmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnRFUktOU184SW50UG9pbnRFCi1fX1pON1dlYkNvcmU1RnJhbWUyNHNlYXJjaEZvckxh
YmVsc0Fib3ZlQ2VsbEVQTjNKU0M0WWFycjE3UmVndWxhckV4cHJlc3Npb25FUE5TXzIwSFRNTFRh
YmxlQ2VsbEVsZW1lbnRFUG0KK19fWk43V2ViQ29yZTVGcmFtZTI0c2VhcmNoRm9yTGFiZWxzQWJv
dmVDZWxsRVJLTjNKU0M0WWFycjE3UmVndWxhckV4cHJlc3Npb25FUE5TXzIwSFRNTFRhYmxlQ2Vs
bEVsZW1lbnRFUG0KIF9fWk43V2ViQ29yZTVGcmFtZTI1c2V0UGFnZUFuZFRleHRab29tRmFjdG9y
c0VmZgogX19aTjdXZWJDb3JlNUZyYW1lMjdyZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW9FUktO
U185RmxvYXRTaXplRVMzXwogX19aTjdXZWJDb3JlNUZyYW1lNmNyZWF0ZUVQTlNfNFBhZ2VFUE5T
XzIxSFRNTEZyYW1lT3duZXJFbGVtZW50RVBOU18xN0ZyYW1lTG9hZGVyQ2xpZW50RQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNjc1ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjE5LDcgKzQ2MTksNyBAQCB2
b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4g
b2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAg
ICAgIG1fY29va2llVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAg
ICAgICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7
Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmNyZWF0ZSh0aGlzKSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1h
a2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhpcykpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00NjM5LDcgKzQ2MzksNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJp
dHlDb250ZXh0KCkKICNlbmRpZgogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQo
U2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENv
bnRlbnRTZWN1cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KHRoaXMpKTsK
IAogICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKSB7CiAgICAg
ICAgIGlmICghc2V0dGluZ3MtPndlYlNlY3VyaXR5RW5hYmxlZCgpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAkocmV2aXNpb24gMTY3NTg5KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkg
KzUwLDkgQEAgdm9pZCBTZWN1cml0eUNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKAogICAgIG1f
aGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4gPSB0cnVlOwogfQogCi12b2lkIFNlY3VyaXR5
Q29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KFBhc3NPd25QdHI8Q29udGVudFNlY3Vy
aXR5UG9saWN5PiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCit2b2lkIFNlY3VyaXR5Q29udGV4dDo6
c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQ
b2xpY3k+IGNvbnRlbnRTZWN1cml0eVBvbGljeSkKIHsKLSAgICBtX2NvbnRlbnRTZWN1cml0eVBv
bGljeSA9IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eSA9IHN0ZDo6bW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogfQogCiBib29sIFNlY3VyaXR5
Q29udGV4dDo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiAxNjc1ODkpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNpZm5kZWYgU2VjdXJpdHlDb250ZXh0X2gKICNkZWZpbmUgU2VjdXJpdHlD
b250ZXh0X2gKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTc2LDcgKzc3LDcgQEAgcHJvdGVjdGVkOgogICAgIFNlY3VyaXR5Q29udGV4dCgpOwog
ICAgIHZpcnR1YWwgflNlY3VyaXR5Q29udGV4dCgpOwogCi0gICAgdm9pZCBzZXRDb250ZW50U2Vj
dXJpdHlQb2xpY3koUGFzc093blB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+KTsKKyAgICB2b2lk
IHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5Pik7CiAKICAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVTZWN1cml0eU9yaWdpbigp
IHsgbV9oYXZlSW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbiA9IGZhbHNlOyB9CiAgICAgYm9vbCBo
YXZlSW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faGF2ZUluaXRp
YWxpemVkU2VjdXJpdHlPcmlnaW47IH0KQEAgLTg1LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW47CiAgICAgU2FuZGJveEZsYWdzIG1f
c2FuZGJveEZsYWdzOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdp
bjsKLSAgICBPd25QdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBv
bGljeTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAx
Njc1ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmlu
Z3MuaCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDE2NzU4OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEw
LDcgKzgxMCw4IEBAIHByaXZhdGU6CiBjbGFzcyBDU1BEaXJlY3RpdmVMaXN0IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDU1BE
aXJlY3RpdmVMaXN0PiBjcmVhdGUoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3QgU3RyaW5n
JiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPENTUERpcmVjdGl2ZUxpc3Q+IGNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kq
LCBjb25zdCBTdHJpbmcmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOworICAg
IENTUERpcmVjdGl2ZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpIZWFkZXJUeXBlKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaGVhZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9oZWFkZXI7IH0KICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUgaGVhZGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyVHlwZTsgfQpAQCAtODQxLDgg
Kzg0Miw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8VVJMPiYgcmVwb3J0VVJJcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwb3J0VVJJczsgfQogCiBwcml2YXRlOgotICAgIENTUERpcmVjdGl2
ZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlKTsKLQogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIHBh
cnNlRGlyZWN0aXZlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIHZhbHVlKTsKQEAgLTg1NCw3ICs4NTMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgYXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBzYW5kYm94UG9saWN5KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBDU1BEaXJlY3RpdmVUeXBl
PgotICAgIHZvaWQgc2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgT3duUHRyPENTUERpcmVjdGl2ZVR5cGU+Jik7CisgICAgdm9pZCBzZXRDU1BE
aXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBzdGQ6OnVu
aXF1ZV9wdHI8Q1NQRGlyZWN0aXZlVHlwZT4mKTsKIAogICAgIFNvdXJjZUxpc3REaXJlY3RpdmUq
IG9wZXJhdGl2ZURpcmVjdGl2ZShTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7CiAgICAgdm9p
ZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJp
bmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29u
c3QgVVJMJiBibG9ja2VkVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0
cmluZygpLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRp
bmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSAwKSBjb25zdDsKQEAg
LTg4NSwxOSArODg0LDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVTYW5kYm94UG9saWN5
OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gbV9y
ZWZsZWN0ZWRYU1NEaXNwb3NpdGlvbjsKIAotICAgIE93blB0cjxNZWRpYUxpc3REaXJlY3RpdmU+
IG1fcGx1Z2luVHlwZXM7Ci0gICAgT3duUHRyPE5vbmNlRGlyZWN0aXZlPiBtX3NjcmlwdE5vbmNl
OwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX2Jhc2VVUkk7Ci0gICAgT3duUHRy
PFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fY29ubmVjdFNyYzsKLSAgICBPd25QdHI8U291cmNlTGlz
dERpcmVjdGl2ZT4gbV9kZWZhdWx0U3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZl
PiBtX2ZvbnRTcmM7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fZm9ybUFjdGlv
bjsKLSAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9mcmFtZVNyYzsKLSAgICBPd25Q
dHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9pbWdTcmM7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3RE
aXJlY3RpdmU+IG1fbWVkaWFTcmM7Ci0gICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1f
b2JqZWN0U3JjOwotICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX3NjcmlwdFNyYzsK
LSAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zdHlsZVNyYzsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFMaXN0RGlyZWN0aXZlPiBtX3BsdWdpblR5cGVzOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxOb25jZURpcmVjdGl2ZT4gbV9zY3JpcHROb25jZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9iYXNlVVJJOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
b3VyY2VMaXN0RGlyZWN0aXZlPiBtX2Nvbm5lY3RTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNv
dXJjZUxpc3REaXJlY3RpdmU+IG1fZGVmYXVsdFNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291
cmNlTGlzdERpcmVjdGl2ZT4gbV9mb250U3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VM
aXN0RGlyZWN0aXZlPiBtX2Zvcm1BY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxp
c3REaXJlY3RpdmU+IG1fZnJhbWVTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxpc3RE
aXJlY3RpdmU+IG1faW1nU3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0
aXZlPiBtX21lZGlhU3JjOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VMaXN0RGlyZWN0aXZl
PiBtX29iamVjdFNyYzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U291cmNlTGlzdERpcmVjdGl2ZT4g
bV9zY3JpcHRTcmM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1f
c3R5bGVTcmM7CiAKICAgICBWZWN0b3I8VVJMPiBtX3JlcG9ydFVSSXM7CiAKQEAgLTkxNCw5ICs5
MTMsOSBAQCBDU1BEaXJlY3RpdmVMaXN0OjpDU1BEaXJlY3RpdmVMaXN0KENvbnRlCiAgICAgbV9y
ZXBvcnRPbmx5ID0gKHR5cGUgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnQgfHwgdHlw
ZSA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlByZWZpeGVkUmVwb3J0KTsKIH0KIAotUGFzc093
blB0cjxDU1BEaXJlY3RpdmVMaXN0PiBDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29udGVudFNl
Y3VyaXR5UG9saWN5KiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUgdHlwZSkKK3N0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVM
aXN0PiBDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29udGVudFNlY3VyaXR5UG9saWN5KiBwb2xp
Y3ksIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUgdHlwZSkKIHsKLSAgICBPd25QdHI8Q1NQRGlyZWN0aXZlTGlzdD4gZGlyZWN0aXZlcyA9IGFk
b3B0UHRyKG5ldyBDU1BEaXJlY3RpdmVMaXN0KHBvbGljeSwgdHlwZSkpOworICAgIGF1dG8gZGly
ZWN0aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBl
KTsKICAgICBkaXJlY3RpdmVzLT5wYXJzZShoZWFkZXIpOwogCiAgICAgaWYgKCFkaXJlY3RpdmVz
LT5jaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMtPm1f
c2NyaXB0U3JjLmdldCgpKSkpIHsKQEAgLTkyNyw3ICs5MjYsNyBAQCBQYXNzT3duUHRyPENTUERp
cmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2CiAgICAgaWYgKGRpcmVjdGl2ZXMtPmlzUmVwb3J0T25s
eSgpICYmIGRpcmVjdGl2ZXMtPnJlcG9ydFVSSXMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHBvbGlj
eS0+cmVwb3J0TWlzc2luZ1JlcG9ydFVSSShoZWFkZXIpOwogCi0gICAgcmV0dXJuIGRpcmVjdGl2
ZXMucmVsZWFzZSgpOworICAgIHJldHVybiBkaXJlY3RpdmVzOwogfQogCiB2b2lkIENTUERpcmVj
dGl2ZUxpc3Q6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNv
bnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
KSBjb25zdApAQCAtOTc2LDcgKzk3NSw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tF
dmFsQW5kUmVwb3IKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTdHJpbmcgc3VmZml4ID0g
U3RyaW5nKCk7Ci0gICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCisgICAgaWYgKGRp
cmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCkpCiAgICAgICAgIHN1ZmZpeCA9ICIgTm90ZSB0
aGF0ICdzY3JpcHQtc3JjJyB3YXMgbm90IGV4cGxpY2l0bHkgc2V0LCBzbyAnZGVmYXVsdC1zcmMn
IGlzIHVzZWQgYXMgYSBmYWxsYmFjay4iOwogCiAgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2
ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+
dGV4dCgpICsgIlwiLiIgKyBzdWZmaXggKyAiXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4
dExpbmUsIHN0YXRlKTsKQEAgLTEwMTQsNyArMTAxMyw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlz
dDo6Y2hlY2tJbmxpbmVBbmRSZXAKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTdHJpbmcg
c3VmZml4ID0gU3RyaW5nKCk7Ci0gICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCisg
ICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCkpCiAgICAgICAgIHN1ZmZpeCA9
IG1ha2VTdHJpbmcoIiBOb3RlIHRoYXQgJyIsIChpc1NjcmlwdCA/ICJzY3JpcHQiIDogInN0eWxl
IiksICItc3JjJyB3YXMgbm90IGV4cGxpY2l0bHkgc2V0LCBzbyAnZGVmYXVsdC1zcmMnIGlzIHVz
ZWQgYXMgYSBmYWxsYmFjay4iKTsKIAogICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRl
eHQoKSwgaXNTY3JpcHQgPyBzY3JpcHRTcmMgOiBzdHlsZVNyYywgY29uc29sZU1lc3NhZ2UgKyAi
XCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIFVSTCgpLCBj
b250ZXh0VVJMLCBjb250ZXh0TGluZSk7CkBAIC0xMDU1LDcgKzEwNTQsNyBAQCBib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwCiAgICAgICAgIHByZWZpeCA9ICJSZWZ1c2Vk
IHRvIGxvYWQgdGhlIHN0eWxlc2hlZXQgJyI7CiAKICAgICBTdHJpbmcgc3VmZml4ID0gU3RyaW5n
KCk7Ci0gICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCisgICAgaWYgKGRpcmVjdGl2
ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCkpCiAgICAgICAgIHN1ZmZpeCA9ICIgTm90ZSB0aGF0ICci
ICsgZWZmZWN0aXZlRGlyZWN0aXZlICsgIicgd2FzIG5vdCBleHBsaWNpdGx5IHNldCwgc28gJ2Rl
ZmF1bHQtc3JjJyBpcyB1c2VkIGFzIGEgZmFsbGJhY2suIjsKIAogICAgIHJlcG9ydFZpb2xhdGlv
bihkaXJlY3RpdmUtPnRleHQoKSwgZWZmZWN0aXZlRGlyZWN0aXZlLCBwcmVmaXggKyB1cmwuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRo
ZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiBcIiIgKyBkaXJl
Y3RpdmUtPnRleHQoKSArICJcIi4iICsgc3VmZml4ICsgIlxuIiwgdXJsKTsKQEAgLTEzMTQsMTMg
KzEzMTMsMTMgQEAgdm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpwYXJzZVJlcG9ydFVSSShjbwogCiAK
IHRlbXBsYXRlPGNsYXNzIENTUERpcmVjdGl2ZVR5cGU+Ci12b2lkIENTUERpcmVjdGl2ZUxpc3Q6
OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IE93blB0cjxDU1BEaXJlY3RpdmVUeXBlPiYgZGlyZWN0aXZlKQordm9pZCBDU1BEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NQRGlyZWN0aXZlVHlwZT4mIGRpcmVjdGl2ZSkKIHsKICAg
ICBpZiAoZGlyZWN0aXZlKSB7CiAgICAgICAgIG1fcG9saWN5LT5yZXBvcnREdXBsaWNhdGVEaXJl
Y3RpdmUobmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZlID0gYWRv
cHRQdHIobmV3IENTUERpcmVjdGl2ZVR5cGUobmFtZSwgdmFsdWUsIG1fcG9saWN5KSk7CisgICAg
ZGlyZWN0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPihuYW1lLCB2YWx1
ZSwgbV9wb2xpY3kpOwogfQogCiB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OmFwcGx5U2FuZGJveFBv
bGljeShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBvbGljeSkKQEAg
LTE0NTksNyArMTQ1OCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZl
SGUKIAogICAgICAgICAvLyBoZWFkZXIxLGhlYWRlcjIgT1IgaGVhZGVyMQogICAgICAgICAvLyAg
ICAgICAgXiAgICAgICAgICAgICAgICAgIF4KLSAgICAgICAgT3duUHRyPENTUERpcmVjdGl2ZUxp
c3Q+IHBvbGljeSA9IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSh0aGlzLCBTdHJpbmcoYmVnaW4s
IHBvc2l0aW9uIC0gYmVnaW4pLCB0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTUERp
cmVjdGl2ZUxpc3Q+IHBvbGljeSA9IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSh0aGlzLCBTdHJp
bmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pLCB0eXBlKTsKICAgICAgICAgaWYgKCFwb2xpY3kt
PmlzUmVwb3J0T25seSgpICYmICFwb2xpY3ktPmFsbG93RXZhbCgwLCBTdXBwcmVzc1JlcG9ydCkp
CiAgICAgICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmRpc2FibGVFdmFsKHBvbGlj
eS0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDE2NzU4OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CkBAIC00NiwxNSArNDYsMTIgQEAgY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVmIGlu
dCBTYW5kYm94RmxhZ3M7Ci10eXBlZGVmIFZlY3RvcjxPd25QdHI8Q1NQRGlyZWN0aXZlTGlzdD4+
IENTUERpcmVjdGl2ZUxpc3RWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Q1NQRGlyZWN0aXZlTGlzdD4+IENTUERpcmVjdGl2ZUxpc3RWZWN0b3I7CiAKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGVudFNlY3VyaXR5UG9saWN5KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpKTsKLSAgICB9CisgICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB+Q29udGVudFNlY3VyaXR5UG9saWN5KCk7
CiAKICAgICB2b2lkIGNvcHlTdGF0ZUZyb20oY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5Kik7
CkBAIC0xMzcsOCArMTM0LDYgQEAgcHVibGljOgogICAgIGJvb2wgZXhwZXJpbWVudGFsRmVhdHVy
ZXNFbmFibGVkKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudFNlY3Vy
aXR5UG9saWN5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQogICAgIHZvaWQgbG9nVG9Db25z
b2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3Ry
aW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OwogCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VjdXJpdHlQb2xpY3kuaAkocmV2aXNpb24gMTY3NTg5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIERPTVNlY3VyaXR5UG9saWN5X2gKIAogI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDE2NzU4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBACiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNp
bmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgorI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0xNTIsOCArMTUzLDkgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQogICAgIHsKLSAgICAg
ICAgbV93aW5kb3ctPnBvc3RNZXNzYWdlVGltZXJGaXJlZChhZG9wdFB0cih0aGlzKSk7Ci0gICAg
ICAgIC8vIFRoaXMgb2JqZWN0IGlzIGRlbGV0ZWQgbm93LgorICAgICAgICAvLyBUaGlzIG9iamVj
dCBnZXRzIGRlbGV0ZWQgd2hlbiBzdGQ6OnVuaXF1ZV9wdHIgZmFsbHMgb3V0IG9mIHNjb3BlLi4K
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvc3RNZXNzYWdlVGltZXI+IHRpbWVyKHRoaXMpOwor
ICAgICAgICBtX3dpbmRvdy0+cG9zdE1lc3NhZ2VUaW1lckZpcmVkKCp0aW1lcik7CiAgICAgfQog
CiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV93aW5kb3c7CkBAIC04NDEsMTQgKzg0MywxMiBAQCB2
b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTCiAgICAgdGltZXItPnN0YXJ0
T25lU2hvdCgwKTsKIH0KIAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQ
YXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+IHQpCit2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2VUaW1lckZpcmVkKFBvc3RNZXNzYWdlVGltZXImIHRpbWVyKQogewotICAgIE93blB0cjxQb3N0
TWVzc2FnZVRpbWVyPiB0aW1lcih0KTsKLQogICAgIGlmICghZG9jdW1lbnQoKSB8fCAhaXNDdXJy
ZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNo
TWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKHRpbWVyLT50YXJnZXRPcmlnaW4oKSwgdGltZXIt
PmV2ZW50KGRvY3VtZW50KCkpLCB0aW1lci0+c3RhY2tUcmFjZSgpKTsKKyAgICBkaXNwYXRjaE1l
c3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayh0aW1lci50YXJnZXRPcmlnaW4oKSwgdGltZXIuZXZl
bnQoZG9jdW1lbnQoKSksIHRpbWVyLnN0YWNrVHJhY2UoKSk7CiB9CiAKIHZvaWQgRE9NV2luZG93
OjpkaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhTZWN1cml0eU9yaWdpbiogaW50
ZW5kZWRUYXJnZXRPcmlnaW4sIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPFNj
cmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
cmV2aXNpb24gMTY3NTg5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2lu
LCBET01XaW5kb3cmIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICAvLyBOZWVkZWQg
Zm9yIE9iamVjdGl2ZS1DIGJpbmRpbmdzIChzZWUgYnVnIDI4Nzc0KS4KICAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgTWVz
c2FnZVBvcnQqLCBjb25zdCBTdHJpbmcmIHRhcmdldE9yaWdpbiwgRE9NV2luZG93JiBzb3VyY2Us
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUGFz
c093blB0cjxQb3N0TWVzc2FnZVRpbWVyPik7CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1l
ckZpcmVkKFBvc3RNZXNzYWdlVGltZXImKTsKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VF
dmVudFdpdGhPcmlnaW5DaGVjayhTZWN1cml0eU9yaWdpbiogaW50ZW5kZWRUYXJnZXRPcmlnaW4s
IFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
Pik7CiAKICAgICAgICAgdm9pZCBzY3JvbGxCeShpbnQgeCwgaW50IHkpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTY3NTg5KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYs
NyArMzM2LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogI2lm
IEVOQUJMRShDVVJTT1JfU1VQUE9SVCkKICAgICAsIG1fY3Vyc29yVXBkYXRlVGltZXIodGhpcywg
JkV2ZW50SGFuZGxlcjo6Y3Vyc29yVXBkYXRlVGltZXJGaXJlZCkKICNlbmRpZgotICAgICwgbV9h
dXRvc2Nyb2xsQ29udHJvbGxlcihhZG9wdFB0cihuZXcgQXV0b3Njcm9sbENvbnRyb2xsZXIpKQor
ICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxD
b250cm9sbGVyPigpKQogICAgICwgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwoZmFsc2Up
CiAgICAgLCBtX21vdXNlRG93bldhc0luU3ViZnJhbWUoZmFsc2UpCiAjaWYgIUVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5k
bGVyKEZyYW1lJiBmcmFtZSkKICNlbmRpZgogICAgICwgbV9tb3VzZVBvc2l0aW9uSXNVbmtub3du
KHRydWUpCiAgICAgLCBtX21vdXNlRG93blRpbWVzdGFtcCgwKQotICAgICwgbV9yZWNlbnRXaGVl
bEV2ZW50RGVsdGFUcmFja2VyKGFkb3B0UHRyKG5ldyBXaGVlbEV2ZW50RGVsdGFUcmFja2VyKSkK
KyAgICAsIG1fcmVjZW50V2hlZWxFdmVudERlbHRhVHJhY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFdo
ZWVsRXZlbnREZWx0YVRyYWNrZXI+KCkpCiAgICAgLCBtX3dpZGdldElzTGF0Y2hlZChmYWxzZSkK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIG1fbW91c2VEb3duVmlldyhuaWwpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDE2NzU4OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDgg
QEAKICNpbmNsdWRlICJUZXh0R3JhbnVsYXJpdHkuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgIldoZWVsRXZlbnREZWx0YVRyYWNrZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHBy
aXZhdGU6CiAgICAgVGltZXI8RXZlbnRIYW5kbGVyPiBtX2N1cnNvclVwZGF0ZVRpbWVyOwogI2Vu
ZGlmCiAKLSAgICBPd25QdHI8QXV0b3Njcm9sbENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbENvbnRy
b2xsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1dG9z
Y3JvbGxDb250cm9sbGVyOwogICAgIGJvb2wgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7
CiAgICAgYm9vbCBtX21vdXNlRG93bldhc0luU3ViZnJhbWU7CiAKQEAgLTUyMSw3ICs1MjEsNyBA
QCBwcml2YXRlOgogICAgIGRvdWJsZSBtX21vdXNlRG93blRpbWVzdGFtcDsKICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgbV9tb3VzZURvd247CiAKLSAgICBPd25QdHI8V2hlZWxFdmVudERlbHRhVHJh
Y2tlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXaGVlbEV2ZW50RGVsdGFUcmFja2VyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXI7
CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fbGF0Y2hlZFdoZWVsRXZlbnRFbGVtZW50OwogICAgIGJv
b2wgbV93aWRnZXRJc0xhdGNoZWQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lv
biAxNjc1ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA2LDcgKzEwNiw2IEBACiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNs
dWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx5YXJy
L1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC0xNjMsOCArMTYyLDggQEAgRnJhbWU6OkZyYW1lKFBh
Z2UmIHBhZ2UsIEhUTUxGcmFtZU93bmVyRQogICAgICwgbV9vd25lckVsZW1lbnQob3duZXJFbGVt
ZW50KQogICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRDb250cm9sbGVyPigq
dGhpcykpCiAgICAgLCBtX2VkaXRvcihzdGQ6Om1ha2VfdW5pcXVlPEVkaXRvcj4oKnRoaXMpKQot
ICAgICwgbV9zZWxlY3Rpb24oYWRvcHRQdHIobmV3IEZyYW1lU2VsZWN0aW9uKHRoaXMpKSkKLSAg
ICAsIG1fZXZlbnRIYW5kbGVyKGFkb3B0UHRyKG5ldyBFdmVudEhhbmRsZXIoKnRoaXMpKSkKKyAg
ICAsIG1fc2VsZWN0aW9uKHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVTZWxlY3Rpb24+KHRoaXMpKQor
ICAgICwgbV9ldmVudEhhbmRsZXIoc3RkOjptYWtlX3VuaXF1ZTxFdmVudEhhbmRsZXI+KCp0aGlz
KSkKICAgICAsIG1fYW5pbWF0aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlv
bkNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBtX292ZXJmbG93
QXV0b1Njcm9sbFRpbWVyKHRoaXMsICZGcmFtZTo6b3ZlcmZsb3dBdXRvU2Nyb2xsVGltZXJGaXJl
ZCkKQEAgLTMxMiw3ICszMTEsNyBAQCB2b2lkIEZyYW1lOjpzZW5kT3JpZW50YXRpb25DaGFuZ2VF
dmVudChpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKIAotc3RhdGlj
IFBhc3NPd25QdHI8SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbj4gY3JlYXRlUmVnRXhwRm9y
TGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMpCitzdGF0aWMgSlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGxhYmVscykKIHsKICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZy
YW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8g
dGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KQEAgLTM0NCwxMCArMzQz
LDEwIEBAIHN0YXRpYyBQYXNzT3duUHRyPEpTQzo6WWFycjo6UmVndWxhckV4cHIKICAgICAgICAg
ICAgIHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7CiAgICAgfQogICAgIHBhdHRlcm4uYXBw
ZW5kKCcpJyk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uKHBhdHRlcm4udG9TdHJpbmcoKSwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOworICAgIHJl
dHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKHBhdHRlcm4udG9TdHJpbmcoKSwgVGV4
dENhc2VJbnNlbnNpdGl2ZSk7CiB9CiAKLVN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJv
dmVDZWxsKEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cCwgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCitT
dHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChjb25zdCBKU0M6OllhcnI6OlJl
Z3VsYXJFeHByZXNzaW9uJiByZWdFeHAsIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBjZWxsLCBzaXpl
X3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKQogewogICAgIEhUTUxUYWJsZUNlbGxF
bGVtZW50KiBhYm92ZUNlbGwgPSBjZWxsLT5jZWxsQWJvdmUoKTsKICAgICBpZiAoYWJvdmVDZWxs
KSB7CkBAIC0zNTgsMTEgKzM1NywxMSBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fi
b3ZlQ2VsbChKCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAvLyBGb3Ig
ZWFjaCB0ZXh0IGNodW5rLCBydW4gdGhlIHJlZ2V4cAogICAgICAgICAgICAgU3RyaW5nIG5vZGVT
dHJpbmcgPSB0ZXh0Tm9kZS0+ZGF0YSgpOwotICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC0+
c2VhcmNoUmV2KG5vZGVTdHJpbmcpOworICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC5zZWFy
Y2hSZXYobm9kZVN0cmluZyk7CiAgICAgICAgICAgICBpZiAocG9zID49IDApIHsKICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCiAgICAgICAgICAgICAg
ICAgICAgICpyZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCA9IGxlbmd0aFNlYXJjaGVkOwot
ICAgICAgICAgICAgICAgIHJldHVybiBub2RlU3RyaW5nLnN1YnN0cmluZyhwb3MsIHJlZ0V4cC0+
bWF0Y2hlZExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0cmluZy5zdWJz
dHJpbmcocG9zLCByZWdFeHAubWF0Y2hlZExlbmd0aCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGxlbmd0aFNlYXJjaGVkICs9IG5vZGVTdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgIH0K
QEAgLTM3Niw3ICszNzUsNyBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bChKCiAKIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50KiBlbGVtZW50LCBzaXplX3QqIHJlc3VsdERp
c3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKQogewotICAgIE93blB0cjxKU0M6Ollh
cnI6OlJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGxhYmVs
cykpOworICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnRXhwID0gY3JlYXRlUmVn
RXhwRm9yTGFiZWxzKGxhYmVscyk7CiAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgYWZ0ZXIgd2Un
dmUgc2VlbiB0aGlzIG1hbnkgY2hhcnMKICAgICBjb25zdCB1bnNpZ25lZCBpbnQgY2hhcnNTZWFy
Y2hlZFRocmVzaG9sZCA9IDUwMDsKICAgICAvLyBUaGlzIGlzIHRoZSBhYnNvbHV0ZSBtYXggd2Ug
c2VhcmNoLiAgV2UgYWxsb3cgYSBsaXR0bGUgbW9yZSBzbG9wIHRoYW4KQEAgLTQwMiw3ICs0MDEs
NyBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lCiAgICAgICAgIGlm
IChuLT5oYXNUYWdOYW1lKHRkVGFnKSAmJiAhc3RhcnRpbmdUYWJsZUNlbGwpIHsKICAgICAgICAg
ICAgIHN0YXJ0aW5nVGFibGVDZWxsID0gdG9IVE1MVGFibGVDZWxsRWxlbWVudChuKTsKICAgICAg
ICAgfSBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKHRyVGFnKSAmJiBzdGFydGluZ1RhYmxlQ2VsbCkg
ewotICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChy
ZWdFeHAuZ2V0KCksIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CisgICAgICAg
ICAgICBTdHJpbmcgcmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cCwgc3Rh
cnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHRJc0luQ2VsbEFib3ZlKQog
ICAgICAgICAgICAgICAgICAgICAqcmVzdWx0SXNJbkNlbGxBYm92ZSA9IHRydWU7CkBAIC00MTUs
MTEgKzQxNCwxMSBAQCBTdHJpbmcgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lCiAg
ICAgICAgICAgICAvLyBhZGQgMTAwIGZvciBzbG9wLCB0byBtYWtlIGl0IG1vcmUgbGlrZWx5IHRo
YXQgd2UnbGwgc2VhcmNoIHdob2xlIG5vZGVzCiAgICAgICAgICAgICBpZiAobGVuZ3RoU2VhcmNo
ZWQgKyBub2RlU3RyaW5nLmxlbmd0aCgpID4gbWF4Q2hhcnNTZWFyY2hlZCkKICAgICAgICAgICAg
ICAgICBub2RlU3RyaW5nID0gbm9kZVN0cmluZy5yaWdodChjaGFyc1NlYXJjaGVkVGhyZXNob2xk
IC0gbGVuZ3RoU2VhcmNoZWQpOwotICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC0+c2VhcmNo
UmV2KG5vZGVTdHJpbmcpOworICAgICAgICAgICAgaW50IHBvcyA9IHJlZ0V4cC5zZWFyY2hSZXYo
bm9kZVN0cmluZyk7CiAgICAgICAgICAgICBpZiAocG9zID49IDApIHsKICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0RGlzdGFuY2UpCiAgICAgICAgICAgICAgICAgICAgICpyZXN1bHREaXN0YW5j
ZSA9IGxlbmd0aFNlYXJjaGVkOwotICAgICAgICAgICAgICAgIHJldHVybiBub2RlU3RyaW5nLnN1
YnN0cmluZyhwb3MsIHJlZ0V4cC0+bWF0Y2hlZExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbm9kZVN0cmluZy5zdWJzdHJpbmcocG9zLCByZWdFeHAubWF0Y2hlZExlbmd0aCgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxlbmd0aFNlYXJjaGVkICs9IG5vZGVTdHJpbmcu
bGVuZ3RoKCk7CiAgICAgICAgIH0KQEAgLTQyOCw3ICs0MjcsNyBAQCBTdHJpbmcgRnJhbWU6OnNl
YXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lCiAgICAgLy8gSWYgd2Ugc3RhcnRlZCBpbiBhIGNlbGws
IGJ1dCBiYWlsZWQgYmVjYXVzZSB3ZSBmb3VuZCB0aGUgc3RhcnQgb2YgdGhlIGZvcm0gb3IgdGhl
CiAgICAgLy8gcHJldmlvdXMgZWxlbWVudCwgd2Ugc3RpbGwgbWlnaHQgbmVlZCB0byBzZWFyY2gg
dGhlIHJvdyBhYm92ZSB1cyBmb3IgYSBsYWJlbC4KICAgICBpZiAoc3RhcnRpbmdUYWJsZUNlbGwg
JiYgIXNlYXJjaGVkQ2VsbEFib3ZlKSB7Ci0gICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2VhcmNo
Rm9yTGFiZWxzQWJvdmVDZWxsKHJlZ0V4cC5nZXQoKSwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3Vs
dERpc3RhbmNlKTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNlYXJjaEZvckxhYmVsc0Fib3Zl
Q2VsbChyZWdFeHAsIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CiAgICAgICAg
IGlmICghcmVzdWx0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKHJlc3VsdElzSW5DZWxs
QWJvdmUpCiAgICAgICAgICAgICAgICAgKnJlc3VsdElzSW5DZWxsQWJvdmUgPSB0cnVlOwpAQCAt
NDQ5LDcgKzQ0OCw3IEBAIHN0YXRpYyBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGMK
ICAgICByZXBsYWNlKG11dGFibGVTdHJpbmdUb01hdGNoLCBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uKCJcXGQiLCBUZXh0Q2FzZVNlbnNpdGl2ZSksICIgIik7CiAgICAgbXV0YWJsZVN0cmlu
Z1RvTWF0Y2gucmVwbGFjZSgnXycsICcgJyk7CiAgICAgCi0gICAgT3duUHRyPEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24+IHJlZ0V4cChjcmVhdGVSZWdFeHBGb3JMYWJlbHMobGFiZWxzKSk7
CisgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdFeHAgPSBjcmVhdGVSZWdFeHBG
b3JMYWJlbHMobGFiZWxzKTsKICAgICAvLyBVc2UgdGhlIGxhcmdlc3QgbWF0Y2ggd2UgY2FuIGZp
bmQgaW4gdGhlIHdob2xlIHN0cmluZwogICAgIGludCBwb3M7CiAgICAgaW50IGxlbmd0aDsKQEAg
LTQ1Nyw5ICs0NTYsOSBAQCBzdGF0aWMgU3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhj
CiAgICAgaW50IGJlc3RMZW5ndGggPSAtMTsKICAgICBpbnQgc3RhcnQgPSAwOwogICAgIGRvIHsK
LSAgICAgICAgcG9zID0gcmVnRXhwLT5tYXRjaChtdXRhYmxlU3RyaW5nVG9NYXRjaCwgc3RhcnQp
OworICAgICAgICBwb3MgPSByZWdFeHAubWF0Y2gobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIHN0YXJ0
KTsKICAgICAgICAgaWYgKHBvcyAhPSAtMSkgewotICAgICAgICAgICAgbGVuZ3RoID0gcmVnRXhw
LT5tYXRjaGVkTGVuZ3RoKCk7CisgICAgICAgICAgICBsZW5ndGggPSByZWdFeHAubWF0Y2hlZExl
bmd0aCgpOwogICAgICAgICAgICAgaWYgKGxlbmd0aCA+PSBiZXN0TGVuZ3RoKSB7CiAgICAgICAg
ICAgICAgICAgYmVzdFBvcyA9IHBvczsKICAgICAgICAgICAgICAgICBiZXN0TGVuZ3RoID0gbGVu
Z3RoOwpAQCAtOTQ2LDEyICs5NDUsMTIgQEAgdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJ
bnRTaXplJiB2aQogdm9pZCBGcmFtZTo6c2V0VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIHsKICAgICBpZiAoIWVuYWJsZWQpIHsKLSAgICAgICAgbV90aWxlZEJhY2tpbmdT
dG9yZS5jbGVhcigpOworICAgICAgICBtX3RpbGVkQmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV90aWxlZEJhY2tpbmdTdG9yZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fdGlsZWRCYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRC
YWNraW5nU3RvcmUodGhpcykpOworICAgIG1fdGlsZWRCYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPih0aGlzKTsKICAgICBtX3RpbGVkQmFja2luZ1N0b3Jl
LT5zZXRDb21taXRUaWxlVXBkYXRlc09uSWRsZUV2ZW50TG9vcCh0cnVlKTsKICAgICBpZiAobV92
aWV3KQogICAgICAgICBtX3ZpZXctPnNldFBhaW50c0VudGlyZUNvbnRlbnRzKHRydWUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMTY3NTg5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTmF2
aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAi
VXNlclNjcmlwdFR5cGVzLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yMzUsNyArMjM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0IElu
dFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwogCi0gICAgICAgIFN0cmluZyBzZWFy
Y2hGb3JMYWJlbHNBYm92ZUNlbGwoSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiosIEhUTUxU
YWJsZUNlbGxFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCk7
CisgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoY29uc3QgSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbiYsIEhUTUxUYWJsZUNlbGxFbGVtZW50Kiwgc2l6ZV90KiByZXN1
bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCk7CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJl
bHNCZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqLCBz
aXplX3QqIHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAg
ICAgU3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxhYmVscywgRWxlbWVudCopOwogCkBAIC0yOTksOCArMzAwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRDb250cm9sbGVyPiBt
X3NjcmlwdDsKICAgICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEVkaXRvcj4gbV9lZGl0b3I7
Ci0gICAgICAgIGNvbnN0IE93blB0cjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247Ci0gICAg
ICAgIGNvbnN0IE93blB0cjxFdmVudEhhbmRsZXI+IG1fZXZlbnRIYW5kbGVyOworICAgICAgICBj
b25zdCBzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVTZWxlY3Rpb24+IG1fc2VsZWN0aW9uOworICAgICAg
ICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRIYW5kbGVyPiBtX2V2ZW50SGFuZGxlcjsKICAg
ICAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbkNvbnRyb2xsZXI+IG1fYW5pbWF0
aW9uQ29udHJvbGxlcjsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTM1MSw3ICszNTIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlZEJhY2tpbmdT
dG9yZVZpc2libGVSZWN0KCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgICAgIHZpcnR1YWwgQ29sb3Ig
dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
IAotICAgICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fdGlsZWRCYWNraW5nU3RvcmU7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV90aWxlZEJhY2tp
bmdTdG9yZTsKICNlbmRpZgogCiAgICAgICAgIGludCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zU3VzcGVuZGVkQ291bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShy
ZXZpc2lvbiAxNjc1ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzODIsNyArMTM4Miw3IEBAIFJlbmRlckJveCogRnJhbWVWaWV3Ojpl
bWJlZGRlZENvbnRlbnRCb3gKIHZvaWQgRnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBk
YXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKIHsKICAgICBpZiAoIW1f
ZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUpCi0gICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRh
dGUgPSBhZG9wdFB0cihuZXcgTGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPik7Cisg
ICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RI
YXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwogICAg
IGlmIChpc0hUTUxPYmplY3RFbGVtZW50KGVsZW1lbnQpIHx8IGlzSFRNTEVtYmVkRWxlbWVudChl
bGVtZW50KSkgewpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dS
ZXBhaW50T2JqZWN0KFJlbgogICAgIGJvb2wgaGFkU2xvd1JlcGFpbnRPYmplY3RzID0gaGFzU2xv
d1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAoIW1fc2xvd1JlcGFpbnRPYmplY3RzKQotICAg
ICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IGFkb3B0UHRyKG5ldyBIYXNoU2V0PFJlbmRlckVs
ZW1lbnQqPik7CisgICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2V0PFJlbmRlckVsZW1lbnQqPj4oKTsKIAogICAgIG1fc2xvd1JlcGFpbnRPYmplY3Rz
LT5hZGQobyk7CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVT
bG93UmVwYWludE9iamVjdCgKIHZvaWQgRnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0KFJlbmRlckVsZW1lbnQqIG9iamVjdCkKIHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMpCi0gICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBh
ZG9wdFB0cihuZXcgVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldCk7CisgICAgICAgIG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RTZXQ+KCk7CiAKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHMtPmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0cy0+YWRkKG9iamVjdCk7CkBAIC0zOTg5LDcgKzM5ODksNyBAQCBTdHJpbmcgRnJhbWVWaWV3
Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUCiBib29sIEZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewogICAgIGlmICghbV9zY3JvbGxh
YmxlQXJlYXMpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0gYWRvcHRQdHIobmV3IFNjcm9s
bGFibGVBcmVhU2V0KTsKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOwogICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy0+
YWRkKHNjcm9sbGFibGVBcmVhKS5pc05ld0VudHJ5OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgJKHJldmlzaW9uIDE2NzU4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJQYWludFBo
YXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUHRyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgor
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAyLDEwICs2MDIs
MTAgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRTaXplIG1fc2l6ZTsKICAgICBMYXlvdXRTaXplIG1f
bWFyZ2luczsKIAotICAgIE93blB0cjxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+
PiBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMaXN0SGFz
aFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PiBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlOwog
ICAgIGNvbnN0IFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKIAotICAgIE93blB0cjxIYXNoU2V0PFJl
bmRlckVsZW1lbnQqPj4gbV9zbG93UmVwYWludE9iamVjdHM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+PiBtX3Nsb3dSZXBhaW50T2JqZWN0czsKIAogICAgIGJv
b2wgbV9uZWVkc0Z1bGxSZXBhaW50OwogICAgIApAQCAtNjk3LDggKzY5Nyw4IEBAIHByaXZhdGU6
CiAgICAgLy8gVGhlIGludHJpbnNpYyBjb250ZW50IHNpemUgZGVjaWRlZCBieSBhdXRvc2l6aW5n
LgogICAgIEludFNpemUgbV9hdXRvU2l6ZUNvbnRlbnRTaXplOwogCi0gICAgT3duUHRyPFNjcm9s
bGFibGVBcmVhU2V0PiBtX3Njcm9sbGFibGVBcmVhczsKLSAgICBPd25QdHI8Vmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdFNldD4gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0czsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsYWJsZUFyZWFTZXQ+IG1fc2Nyb2xsYWJsZUFyZWFzOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PiBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzOwogCiAgICAgaW50IG1faGVhZGVySGVpZ2h0OwogICAgIGludCBtX2Zv
b3RlckhlaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxNjc1ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAjaW5j
bHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CkBAIC0yNTcsNyArMjU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU2No
ZWR1bGVQYWlyKFBhc3NSZWZQdHI8U2NoZWR1bGVQYWlyPik7CiAgICAgU2NoZWR1bGVQYWlySGFz
aFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgeyByZXR1cm4gbV9zY2hlZHVsZWRSdW5Mb29w
UGFpcnMuZ2V0KCk7IH0KIAotICAgIE93blB0cjxTY2hlZHVsZVBhaXJIYXNoU2V0PiBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlyczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVQYWlySGFzaFNl
dD4gbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnM7CiAjZW5kaWYKIAogICAgIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlVGhyb3R0bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhy
b3R0bGVyLmgJKHJldmlzaW9uIDE2NzU4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRo
cm90dGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw2IEBACiAjaW5jbHVkZSAiVXNl
ckFjdGl2aXR5LmgiCiAjaW5jbHVkZSAiVmlld1N0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gMTY3NTg5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDggKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
Ik9yaWdpbkFjY2Vzc0VudHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00Miw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBT
ZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9IFNlY3VyaXR5
UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiAKIHR5cGVkZWYgVmVjdG9yPE9y
aWdpbkFjY2Vzc0VudHJ5PiBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBPd25QdHI8T3JpZ2luQWNjZXNzV2hpdGVMaXN0Pj4gT3JpZ2luQWNjZXNzTWFwOwor
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPE9yaWdpbkFjY2Vzc1doaXRl
TGlzdD4+IE9yaWdpbkFjY2Vzc01hcDsKIAogc3RhdGljIE9yaWdpbkFjY2Vzc01hcCYgb3JpZ2lu
QWNjZXNzTWFwKCkKIHsKQEAgLTEzNiw3ICsxMzUsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0CiAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdp
bi50b1N0cmluZygpOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9y
aWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UHRy
KG5ldyBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBP
cmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29s
LCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5B
Y2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93
U3ViZG9tYWlucykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTY3NTg5KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uQmFzZS5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CShyZXZpc2lvbiAxNjc1ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNp
bmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNzY1LDE1ICs3NjYsMTUgQEAgcHVibGljOgogICAgIFBy
b3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgQ29s
b3IgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNl
dHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2xvciAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihhZG9w
dFB0cihuZXcgUHJvcGVydHlXcmFwcGVyQ29sb3IocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKSkKLSAg
ICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVdyYXBwZXJDb2xv
cihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkpCisgICAgICAgICwgbV93cmFw
cGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwg
c2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJv
cGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQog
ICAgIHsKICAgICB9CiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NT
UHJvcGVydHlJRCBwcm9wLCBNYXliZUludmFsaWRDb2xvclRhZywgQ29sb3IgKFJlbmRlclN0eWxl
OjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29s
b3ImKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciAoUmVu
ZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZp
c2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlX
cmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihhZG9wdFB0cihuZXcgUHJvcGVy
dHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3IocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKSkKLSAgICAg
ICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKGFkb3B0UHRyKG5ldyBQcm9wZXJ0eVdyYXBwZXJNYXliZUlu
dmFsaWRDb2xvcihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkpCisgICAgICAg
ICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlk
Q29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVy
KHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgdmlydHVh
bCBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIp
IGNvbnN0CkBAIC03ODcsOCArNzg4LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBPd25QdHI8QW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZT4gbV93cmFwcGVyOwotICAgIE93
blB0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlPiBtX3Zpc2l0ZWRXcmFwcGVyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlPiBtX3dyYXBwZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2U+IG1fdmlz
aXRlZFdyYXBwZXI7CiB9OwogCiAvLyBXcmFwcGVyIGJhc2UgY2xhc3MgZm9yIGFuIGFuaW1hdGFi
bGUgcHJvcGVydHkgaW4gYSBGaWxsTGF5ZXIKQEAgLTEwNzksMTAgKzEwODAsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCYgaW5zdGFuY2UoKQog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgZGF0YSBpcyBuZXZlciBkZXN0cm95ZWQuIE1h
eWJlIHdlIHNob3VsZCByZWYgY291bnQgaXQgYW5kIHRvc3MgaXQgd2hlbiB0aGUgbGFzdCBBbmlt
YXRpb25Db250cm9sbGVyIGlzIGRlc3Ryb3llZD8KLSAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKE93blB0cjxDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA+LCBtYXAs
ICgpKTsKLSAgICAgICAgaWYgKCFtYXApCi0gICAgICAgICAgICBtYXAgPSBhZG9wdFB0cihuZXcg
Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKTsKLSAgICAgICAgcmV0dXJuICptYXA7Cisg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJN
YXA+IG1hcDsKKyAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9CiAKICAgICBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlKiB3cmFwcGVyRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEKQpAQCAtMTExNSwxMCArMTExNCwxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9w
cm9wZXJ0eVRvSWRNYXBbcHJvcGVydHlJRCAtIGZpcnN0Q1NTUHJvcGVydHldOwogICAgIH0KIAot
ICAgIFZlY3RvcjxPd25QdHI8QW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZT4+IG1fcHJvcGVy
dHlXcmFwcGVyczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblByb3BlcnR5
V3JhcHBlckJhc2U+PiBtX3Byb3BlcnR5V3JhcHBlcnM7CiAgICAgdW5zaWduZWQgY2hhciBtX3By
b3BlcnR5VG9JZE1hcFtudW1DU1NQcm9wZXJ0aWVzXTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBjaGFyIGNJbnZhbGlkUHJvcGVydHlXcmFwcGVySW5kZXggPSBVQ0hBUl9NQVg7CisKKyAg
ICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxDU1NQcm9wZXJ0eUFuaW1hdGlvbldy
YXBwZXJNYXA+OwogfTsKIAogQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9w
ZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKQpAQCAtMTMxMyw3ICsxMzE0LDcgQEAgQ1NTUHJvcGVy
dHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGFuaW1hdGFibGVMb25naGFuZFByb3BlcnRpZXNDb3VudDsgKytpKSB7CiAgICAgICAg
IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIgPSBhbmltYXRhYmxlTG9uZ2hh
bmRQcm9wZXJ0eVdyYXBwZXJzW2ldOwotICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVj
a2VkQXBwZW5kKGFkb3B0UHRyKHdyYXBwZXIpKTsKKyAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJz
LnVuY2hlY2tlZEFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uUHJvcGVydHlXcmFwcGVy
QmFzZT4od3JhcHBlcikpOwogICAgICAgICBpbmRleEZyb21Qcm9wZXJ0eUlEKHdyYXBwZXItPnBy
b3BlcnR5KCkpID0gaTsKICAgICB9CiAKQEAgLTEzMzQsNyArMTMzNSw3IEBAIENTU1Byb3BlcnR5
QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGUKICAgICAgICAgICAgIGxvbmdoYW5kV3JhcHBl
cnMudW5jaGVja2VkQXBwZW5kKG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVySW5kZXhdLmdldCgp
KTsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBl
bmQoYWRvcHRQdHIobmV3IFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBsb25n
aGFuZFdyYXBwZXJzKSkpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlE
LCBsb25naGFuZFdyYXBwZXJzKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVy
dHlJRCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMuY3BwCShyZXZpc2lvbiAxNjc1ODkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCB2b2lkIFBhZ2U6OmFkZFNjaGVkdWxlUGFpcihQYXNzUmVmUHRyPFNjCiAg
ICAgUmVmUHRyPFNjaGVkdWxlUGFpcj4gcGFpciA9IHBycFBhaXI7CiAKICAgICBpZiAoIW1fc2No
ZWR1bGVkUnVuTG9vcFBhaXJzKQotICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IGFk
b3B0UHRyKG5ldyBTY2hlZHVsZVBhaXJIYXNoU2V0KTsKKyAgICAgICAgbV9zY2hlZHVsZWRSdW5M
b29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAg
bV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMtPmFkZChwYWlyKTsKIAogI2lmICFQTEFURk9STShJT1Mp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAko
cmV2aXNpb24gMTY3NTg5KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBXb3JrZXJHbG9iYWxT
Y29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YXBw
bHlDb250ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgcG9saWN5LCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlw
ZSkKIHsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koQ29udGVudFNlY3VyaXR5UG9saWN5
OjpjcmVhdGUodGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4odGhpcykpOwogICAgIGNvbnRlbnRTZWN1cml0
eVBvbGljeSgpLT5kaWRSZWNlaXZlSGVhZGVyKHBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzU4OSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE0LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAg
ICAgICBNb3ZlIGNyb3NzLXBvcnQgU291cmNlL1dlYkNvcmUvcGFnZS8gY29kZSB0byBzdGQ6OnVu
aXF1ZV9wdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChzZWFyY2hGb3JMYWJl
bHNCZWZvcmVFbGVtZW50KTogUGFzcyBhIFJlZ0V4cCByZWZlcmVuY2UgdG8gRnJhbWU6OnNlYXJj
aEZvckxhYmVsc0Fib3ZlQ2VsbCgpLgorCiAyMDE0LTA0LTE5ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBXZWJWaWV3IGFkanVzdHMgdGhlIGN1cnNvciBl
dmVuIHdoZW4gYW5vdGhlciB3aW5kb3cgaXMgaW4gZnJvbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lvbiAx
Njc1ODkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRpYyBOU1N0cmluZyog
c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWwKICAgICAgICAgfSBlbHNlIGlmIChuLT5oYXNUYWdOYW1l
KHRkVGFnKSAmJiAhc3RhcnRpbmdUYWJsZUNlbGwpIHsKICAgICAgICAgICAgIHN0YXJ0aW5nVGFi
bGVDZWxsID0gc3RhdGljX2Nhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQqPihuKTsKICAgICAgICAg
fSBlbHNlIGlmIChuLT5oYXNUYWdOYW1lKHRyVGFnKSAmJiBzdGFydGluZ1RhYmxlQ2VsbCkgewot
ICAgICAgICAgICAgTlNTdHJpbmcqIHJlc3VsdCA9IGZyYW1lLT5zZWFyY2hGb3JMYWJlbHNBYm92
ZUNlbGwocmVnRXhwLCBzdGFydGluZ1RhYmxlQ2VsbCwgcmVzdWx0RGlzdGFuY2UpOworICAgICAg
ICAgICAgTlNTdHJpbmcqIHJlc3VsdCA9IGZyYW1lLT5zZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwo
KnJlZ0V4cCwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKICAgICAgICAgICAg
IGlmIChyZXN1bHQgJiYgW3Jlc3VsdCBsZW5ndGhdID4gMCkgewogICAgICAgICAgICAgICAgIGlm
IChyZXN1bHRJc0luQ2VsbEFib3ZlKQogICAgICAgICAgICAgICAgICAgICAqcmVzdWx0SXNJbkNl
bGxBYm92ZSA9IHRydWU7CkBAIC00ODIsNyArNDgyLDcgQEAgc3RhdGljIE5TU3RyaW5nKiBzZWFy
Y2hGb3JMYWJlbHNCZWZvcmVFbAogICAgIC8vIElmIHdlIHN0YXJ0ZWQgaW4gYSBjZWxsLCBidXQg
YmFpbGVkIGJlY2F1c2Ugd2UgZm91bmQgdGhlIHN0YXJ0IG9mIHRoZSBmb3JtIG9yIHRoZQogICAg
IC8vIHByZXZpb3VzIGVsZW1lbnQsIHdlIHN0aWxsIG1pZ2h0IG5lZWQgdG8gc2VhcmNoIHRoZSBy
b3cgYWJvdmUgdXMgZm9yIGEgbGFiZWwuCiAgICAgaWYgKHN0YXJ0aW5nVGFibGVDZWxsICYmICFz
ZWFyY2hlZENlbGxBYm92ZSkgewotICAgICAgICBOU1N0cmluZyogcmVzdWx0ID0gZnJhbWUtPnNl
YXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChyZWdFeHAsIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHRE
aXN0YW5jZSk7CisgICAgICAgIE5TU3RyaW5nKiByZXN1bHQgPSBmcmFtZS0+c2VhcmNoRm9yTGFi
ZWxzQWJvdmVDZWxsKCpyZWdFeHAsIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7
CiAgICAgICAgIGlmIChyZXN1bHQgJiYgW3Jlc3VsdCBsZW5ndGhdID4gMCkgewogICAgICAgICAg
ICAgaWYgKHJlc3VsdElzSW5DZWxsQWJvdmUpCiAgICAgICAgICAgICAgICAgKnJlc3VsdElzSW5D
ZWxsQWJvdmUgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>