<?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>44016</bug_id>
          
          <creation_ts>2010-08-14 16:00:13 -0700</creation_ts>
          <short_desc>Add ability to post arbitrary input events from the InjectedBundle (for EventSender)</short_desc>
          <delta_ts>2017-05-27 08:31:35 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>264757</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-14 16:00:13 -0700</bug_when>
    <thetext>Add ability to post arbitrary input events from the InjectedBundle (for EventSender).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264759</commentid>
    <comment_count>1</comment_count>
      <attachid>64431</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-14 16:02:06 -0700</bug_when>
    <thetext>Created attachment 64431
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264761</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-14 16:08:36 -0700</bug_when>
    <thetext>Attachment 64431 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleMouseEvent.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/InjectedBundleMouseEvent.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleWheelEvent.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/InjectedBundleKeyboardEvent.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/InjectedBundleWheelEvent.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:63:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:64:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:65:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:75:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:76:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:77:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleKeyboardEvent.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 12 in 27 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>265056</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-16 06:11:10 -0700</bug_when>
    <thetext>I was working on a similar approach when I became unsure if it made sense. It seems that WebCore really needs an NSEvent for input methods - or we need a much deeper refactoring for them to work.

I&apos;m not sure if adding injected bundle interfaces is helpful at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283259</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-22 14:45:37 -0700</bug_when>
    <thetext>One thing I&apos;d like to preserve in eventSender is an ability to create native events (such as NSEvent), to test how they are handled. Testing only WebCore seems particularly insufficient in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283477</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-22 19:49:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; One thing I&apos;d like to preserve in eventSender is an ability to create native events (such as NSEvent), to test how they are handled. Testing only WebCore seems particularly insufficient in this case.

My plan was to add a function for each platform that takes a platform specific event (NSEvent on mac) and creates a WKBundleFooEvent from it, this way we could test the conversion (and we wouldn&apos;t have to do the manual conversion ourselves in the test runner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333306</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-12 14:30:45 -0800</bug_when>
    <thetext>What&apos;s the status of this patch?  It&apos;s been in the review queue for a while.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334964</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-01-15 16:31:01 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; What&apos;s the status of this patch?  It&apos;s been in the review queue for a while.

Apparently not a lot of love :(.  I am taking it out of the queue for now, and will come back to when I am more focused on EventSender again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64431</attachid>
            <date>2010-08-14 16:02:06 -0700</date>
            <delta_ts>2011-01-15 16:30:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>events.diff</filename>
            <type>text/plain</type>
            <size>74826</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTM3NCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMTAtMDgtMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJp
bGl0eSB0byBwb3N0IGFyYml0cmFyeSBpbnB1dCBldmVudHMgZnJvbSB0aGUgSW5qZWN0ZWRCdW5k
bGUgKGZvciBFdmVudFNlbmRlcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ0MDE2CisKKyAgICAgICAgQWRkIGJhc2ljIHdyYXBwZXJzIGZvciBtb3Vz
ZS93aGVlbC9rZXlib2FyZCBldmVudHMuIFdlIHdpbGwgcHJvYmFibHkgd2FudCB0byBzaW1wbGlm
eQorICAgICAgICB0aGUgY3JlYXRlIGZ1bmN0aW9ucywgYnV0IGZvciBub3cgdGhleSByZXF1aXJl
IGFsbCB0aGUgaW5mb3JtYXRpb24gb25lIHdvdWxkIG5lZWQgZm9yIGFuCisgICAgICAgIGV2ZW50
LgorCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQVBJQ2FzdC5oOgorICAgICAgICAodG9XZWJFdmVudE1vZGlmaWVycyk6CisgICAg
ICAgICh0b1dlYk1vdXNlRXZlbnRUeXBlKToKKyAgICAgICAgKHRvV2ViTW91c2VFdmVudEJ1dHRv
bik6CisgICAgICAgICh0b1dlYldoZWVsRXZlbnRHcmFudWxhcml0eSk6CisgICAgICAgICh0b1dl
YktleWJvYXJkRXZlbnRUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQmFzZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVFdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVLZXlib2FyZEV2
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVNb3VzZUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU1vdXNlRXZlbnQuaDogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVXaGVl
bEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVdoZWVsRXZlbnQuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50OjpJbmplY3RlZEJ1bmRs
ZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUtleWJvYXJk
RXZlbnQ6On5JbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudDo6d2ViS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudDo6dHlw
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1v
dXNlRXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVNb3Vz
ZUV2ZW50OjpJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZU1vdXNlRXZlbnQ6On5JbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTW91c2VFdmVudDo6d2ViTW91c2VF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTW91c2VFdmVudDo6dHlwZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydFRleHQpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVX
aGVlbEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlV2hl
ZWxFdmVudDo6SW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVXaGVlbEV2ZW50Ojp+SW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlV2hlZWxFdmVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQ6OndlYldoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQ6OnR5cGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cG9zdE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojpwb3N0V2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvc3RLZXlib2Fy
ZEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW91c2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OndoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjprZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhc3NNb3VzZUV2ZW50VG9X
ZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGFzc1doZWVsRXZlbnRUb1dlYkNv
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYXNzS2V5RXZlbnRUb1dlYkNvcmUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogd2luL1dl
YktpdDIudmNwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2U6CisKIDIw
MTAtMDgtMTQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24gaW4gU3dlZGVuLgpJbmRleDogV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJl
dmlzaW9uIDY1MzcxKQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDYgKzU5LDkgQEAgcHVibGljOgogICAgICAgICBUeXBlQnVuZGxlUGFnZSwKICAg
ICAgICAgVHlwZUJ1bmRsZVNjcmlwdFdvcmxkLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRs
ZSwKKyAgICAgICAgVHlwZUJ1bmRsZU1vdXNlRXZlbnQsCisgICAgICAgIFR5cGVCdW5kbGVXaGVl
bEV2ZW50LAorICAgICAgICBUeXBlQnVuZGxlS2V5Ym9hcmRFdmVudCwKIAogICAgICAgICAvLyBQ
bGF0Zm9ybSBzcGVjaWZpYwogICAgICAgICBUeXBlVmlldwpJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUG9saWN5Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQb2xpY3lDbGllbnQuY3BwCShyZXZpc2lvbiA2NTM3MSkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlBvbGljeUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgYm9v
bCBXZWJQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdgogICAgIGlmICghbV9wYWdlUG9s
aWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fcGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHRvUmVmKHBhZ2UpLCB0b1dLKHR5cGUpLCB0b1VSTFJlZih1cmwuaW1wbCgpKSwg
dG9SZWYoZnJhbWUpLCB0b1JlZihsaXN0ZW5lciksIG1fcGFnZVBvbGljeUNsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICBtX3BhZ2VQb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbih0b1JlZihwYWdlKSwgdG9SZWYodHlwZSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCB0b1Jl
ZihmcmFtZSksIHRvUmVmKGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNsaWVudEluZm8p
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgV2ViUG9saWN5
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXcKICAgICBpZiAoIW1fcGFnZVBvbGljeUNsaWVudC5k
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIG1fcGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9S
ZWYocGFnZSksIHRvV0sodHlwZSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCB0b1JlZihmcmFtZSks
IHRvUmVmKGxpc3RlbmVyKSwgbV9wYWdlUG9saWN5Q2xpZW50LmNsaWVudEluZm8pOworICAgIG1f
cGFnZVBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9SZWYocGFn
ZSksIHRvUmVmKHR5cGUpLCB0b1VSTFJlZih1cmwuaW1wbCgpKSwgdG9SZWYoZnJhbWUpLCB0b1Jl
ZihsaXN0ZW5lciksIG1fcGFnZVBvbGljeUNsaWVudC5jbGllbnRJbmZvKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9u
IDY1MzcxKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBpbmxpbmUgV0tUeXBlSUQgdG9SZWYoV2ViS2l0OjpB
UElPYmplY3Q6CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdLVHlwZUlEPih0eXBlKTsKIH0KIAot
aW5saW5lIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSB0b1dLKFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBl
IHR5cGUpCitpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHRvUmVmKFdlYkNvcmU6Ok5hdmln
YXRpb25UeXBlIHR5cGUpCiB7CiAgICAgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHdrVHlwZSA9IGtX
S0ZyYW1lTmF2aWdhdGlvblR5cGVPdGhlcjsKIApJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY1MzcxKQorKysgV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIs
MTcgQEAKIAkJQkMyMEVDMDcxMTZFRjdGRjAwMDk0QTUwIC8qIFdLU3RyaW5nQ0YuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMEVDMDUxMTZFRjdG
RjAwMDk0QTUwIC8qIFdLU3RyaW5nQ0YuY3BwICovOyB9OwogCQlCQzIwRUQ2NjExNkY5NzExMDAw
OTRBNTAgLyogV0tVUkxDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyMEVENjQxMTZGOTcxMTAwMDk0QTUwIC8qIFdLVVJMQ0YuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDMjBFRDY3MTE2Rjk3MTEw
MDA5NEE1MCAvKiBXS1VSTENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjBFRDY1MTE2Rjk3MTEwMDA5NEE1MCAvKiBXS1VSTENGLmNwcCAqLzsg
fTsKKwkJQkMyMTY2RDExMjBGNEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMTY2Q0YxMjBG
NEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VFdmVudC5oICovOyB9OworCQlCQzIxNjZEMjEy
MEY0Qzg5MDBDN0M2NUQgLyogV0tCdW5kbGVNb3VzZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjE2NkQwMTIwRjRDODkwMEM3QzY1RCAv
KiBXS0J1bmRsZU1vdXNlRXZlbnQuY3BwICovOyB9OworCQlCQzIxNjg3OTEyMEZDRUJDMDBDN0M2
NUQgLyogSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjE2ODc1MTIwRkNFQkMwMEM3QzY1RCAvKiBJ
bmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuY3BwICovOyB9OworCQlCQzIxNjg3QTEyMEZDRUJD
MDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIxNjg3NjEyMEZDRUJDMDBDN0M2NUQg
LyogSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmggKi87IH07CisJCUJDMjE2ODdCMTIwRkNF
QkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMTY4NzcxMjBGQ0VCQzAwQzdDNjVE
IC8qIEluamVjdGVkQnVuZGxlV2hlZWxFdmVudC5jcHAgKi87IH07CisJCUJDMjE2ODdDMTIwRkNF
QkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjE2ODc4MTIwRkNFQkMwMEM3QzY1RCAv
KiBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuaCAqLzsgfTsKKwkJQkMyMTY4ODIxMjBGRDBFMzAw
QzdDNjVEIC8qIFdLQnVuZGxlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMjE2ODdEMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUV2ZW50
LmggKi87IH07CisJCUJDMjE2ODgzMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUtleWJvYXJk
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMyMTY4N0UxMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAgKi87
IH07CisJCUJDMjE2ODg0MTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUtleWJvYXJkRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjE2ODdG
MTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUtleWJvYXJkRXZlbnQuaCAqLzsgfTsKKwkJQkMy
MTY4ODUxMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlV2hlZWxFdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIxNjg4MDEyMEZEMEUzMDBD
N0M2NUQgLyogV0tCdW5kbGVXaGVlbEV2ZW50LmNwcCAqLzsgfTsKKwkJQkMyMTY4ODYxMjBGRDBF
MzAwQzdDNjVEIC8qIFdLQnVuZGxlV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMTY4ODExMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVu
ZGxlV2hlZWxFdmVudC5oICovOyB9OwogCQlCQzI2NTFGNjExODI1RUY4MDAyNDNFMTIgLyogQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI2NTFGNTExODI1RUY4MDAyNDNFMTIgLyogQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gKi87IH07CiAJCUJDMjY1MjE2MTE4MjYwODEw
MDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjY1MjEyMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5n
QXJlYVByb3h5LmNwcCAqLzsgfTsKIAkJQkMyNjUyMTcxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdp
bmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi87IH07
CkBAIC0yMjUsNiArMjM2LDggQEAKIAkJQkM4NzgwRkMxMTYxQzJCODAwQ0MyNzY4IC8qIFBsYXRm
b3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDODc4MEZCMTE2MUMyQjgwMENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmggKi87IH07CiAJCUJDODdERkFBMTAxODEwMTQwMDU2NDIxNiAvKiBsaWJpY3Vj
b3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM4N0RGQTkxMDE4MTAxNDAwNTY0MjE2IC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CiAJ
CUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1JldGFpblB0ci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QTUwMTQxMTc2NUY1NjAwNzU3NTcz
IC8qIFdLUmV0YWluUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkM4RkQ5MDExMjBFNkRENzAwRjNFNzFBIC8qIEluamVjdGVkQnVuZGxlTW91
c2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4RkQ4RkYxMjBFNkRENzAwRjNFNzFBIC8qIEluamVjdGVkQnVuZGxlTW91c2VFdmVudC5oICov
OyB9OworCQlCQzhGRDkwMjEyMEU2REQ3MDBGM0U3MUEgLyogSW5qZWN0ZWRCdW5kbGVNb3VzZUV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
OEZEOTAwMTIwRTZERDcwMEYzRTcxQSAvKiBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuY3BwICov
OyB9OwogCQlCQzk2M0Q2QjExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2M0Q2QTExM0REMTkyMDA1
NzRCRTIgLyogV2ViUGFnZS5jcHAgKi87IH07CiAJCUJDOTYzRDZFMTEzREQxQTUwMDU3NEJFMiAv
KiBXZWJQYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM5NjNENkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi87IH07CiAJ
CUJDOUIzOEExMTBGNTM4QkUwMDQ0M0ExNSAvKiBXZWJGcmFtZVByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlCMzg5RjEwRjUzOEJFMDA0NDNB
MTUgLyogV2ViRnJhbWVQcm94eS5oICovOyB9OwpAQCAtNTI0LDYgKzUzNywxNyBAQAogCQlCQzIw
RUMwNTExNkVGN0ZGMDAwOTRBNTAgLyogV0tTdHJpbmdDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1N0cmluZ0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMEVENjQxMTZGOTcxMTAwMDk0QTUwIC8qIFdLVVJMQ0YuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzIwRUQ2NTExNkY5NzExMDAwOTRBNTAgLyogV0tVUkxDRi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VSTENGLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkMyMTY2Q0YxMjBGNEM4OTAwQzdDNjVEIC8qIFdLQnVuZGxlTW91c2VF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZU1vdXNlRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyMTY2RDAxMjBGNEM4OTAwQzdD
NjVEIC8qIFdLQnVuZGxlTW91c2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0J1bmRsZU1vdXNlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzIxNjg3NTEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVLZXlib2Fy
ZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlS2V5Ym9hcmRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MjE2ODc2MTIwRkNFQkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjE2ODc3MTIwRkNFQkMwMEM3
QzY1RCAvKiBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyMTY4NzgxMjBGQ0VCQzAwQzdDNjVEIC8qIEluamVjdGVk
QnVuZGxlV2hlZWxFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmpl
Y3RlZEJ1bmRsZVdoZWVsRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMy
MTY4N0QxMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzIxNjg3RTEyMEZEMEUzMDBDN0M2NUQgLyogV0tCdW5kbGVLZXlib2FyZEV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlS2V5Ym9h
cmRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMjE2ODdGMTIwRkQw
RTMwMEM3QzY1RCAvKiBXS0J1bmRsZUtleWJvYXJkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVLZXlib2FyZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMjE2ODgwMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVsRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVXaGVl
bEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyMTY4ODExMjBGRDBF
MzAwQzdDNjVEIC8qIFdLQnVuZGxlV2hlZWxFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0J1bmRsZVdoZWVsRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDMjY1MjEyMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2NTIxMzExODI2MDgxMDAyNDNFMTIg
LyogRHJhd2luZ0FyZWFQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
cmF3aW5nQXJlYVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjcsNiAr
NTkxLDggQEAKIAkJQkM4N0RGQTkxMDE4MTAxNDAwNTY0MjE2IC8qIGxpYmljdWNvcmUuZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmljdWNvcmUuZHlsaWI7IHBhdGggPSAvdXNyL2xp
Yi9saWJpY3Vjb3JlLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlCQzhB
NTAxMDExNzY1QUY3MDA3NTc1NzMgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
eG1sOyBuYW1lID0gSW5mby5wbGlzdDsgcGF0aCA9IFdlYlByb2Nlc3MvSW5mby5wbGlzdDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QTUwMTQxMTc2NUY1NjAwNzU3NTczIC8qIFdL
UmV0YWluUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmV0YWluUHRy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOEZEOEZGMTIwRTZERDcwMEYzRTcx
QSAvKiBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDOEZEOTAwMTIwRTZERDcwMEYzRTcxQSAvKiBJbmplY3RlZEJ1bmRsZU1vdXNl
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVNb3VzZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5NjNE
NkExMTNERDE5MjAwNTc0QkUyIC8qIFdlYlBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDOTYzRDZEMTEzREQxQTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM5QjM4OUYxMEY1MzhCRTAwNDQzQTE1IC8qIFdlYkZyYW1lUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJhbWVQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE5Myw2ICsxMjE5LDEyIEBACiAJCQkJQkNBOEM2
QUUxMUUzQzA4NzAwODEyRkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggKi8sCiAJ
CQkJQkMxNERGNzYxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQu
Y3BwICovLAogCQkJCUJDMTRERjc1MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkLmggKi8sCisJCQkJQkM4RkQ5MDAxMjBFNkRENzAwRjNFNzFBIC8qIEluamVjdGVk
QnVuZGxlTW91c2VFdmVudC5jcHAgKi8sCisJCQkJQkM4RkQ4RkYxMjBFNkRENzAwRjNFNzFBIC8q
IEluamVjdGVkQnVuZGxlTW91c2VFdmVudC5oICovLAorCQkJCUJDMjE2ODc1MTIwRkNFQkMwMEM3
QzY1RCAvKiBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuY3BwICovLAorCQkJCUJDMjE2ODc2
MTIwRkNFQkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuaCAqLywKKwkJ
CQlCQzIxNjg3NzEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmNw
cCAqLywKKwkJCQlCQzIxNjg3ODEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVXaGVl
bEV2ZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEluamVjdGVkQnVuZGxlOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyMzYsNiArMTI2OCwxMyBAQAogCQkJCUUxRUU1NUYzMTFG
OEYxODkwMENDQkVFNCAvKiBXS0J1bmRsZVJhbmdlLmggKi8sCiAJCQkJQkMxNERGOUMxMjBCNjM1
RjAwODI2QzBDIC8qIFdLQnVuZGxlU2NyaXB0V29ybGQuY3BwICovLAogCQkJCUJDMTRERjlEMTIw
QjYzNUYwMDgyNkMwQyAvKiBXS0J1bmRsZVNjcmlwdFdvcmxkLmggKi8sCisJCQkJQkMyMTY4N0Qx
MjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlRXZlbnQuaCAqLywKKwkJCQlCQzIxNjZEMDEyMEY0
Qzg5MDBDN0M2NUQgLyogV0tCdW5kbGVNb3VzZUV2ZW50LmNwcCAqLywKKwkJCQlCQzIxNjZDRjEy
MEY0Qzg5MDBDN0M2NUQgLyogV0tCdW5kbGVNb3VzZUV2ZW50LmggKi8sCisJCQkJQkMyMTY4ODAx
MjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlV2hlZWxFdmVudC5jcHAgKi8sCisJCQkJQkMyMTY4
ODExMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlV2hlZWxFdmVudC5oICovLAorCQkJCUJDMjE2
ODdFMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUtleWJvYXJkRXZlbnQuY3BwICovLAorCQkJ
CUJDMjE2ODdGMTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZUtleWJvYXJkRXZlbnQuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDg0
LDYgKzE1MjMsMTMgQEAKIAkJCQlCQzE0REY3NzEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGOUYxMjBCNjM1RjAw
ODI2QzBDIC8qIFdLQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTRF
MTBBMTIwQjkwNUUwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzhGRDkwMTEyMEU2REQ3MDBGM0U3MUEgLyogSW5qZWN0ZWRCdW5k
bGVNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzIxNjZEMTEyMEY0Qzg5MDBDN0M2
NUQgLyogV0tCdW5kbGVNb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzIxNjg3QTEy
MEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQzIxNjg3QzEyMEZDRUJDMDBDN0M2NUQgLyogSW5qZWN0ZWRCdW5kbGVXaGVl
bEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzIxNjg4MjEyMEZEMEUzMDBDN0M2NUQgLyog
V0tCdW5kbGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyMTY4ODQxMjBGRDBFMzAwQzdD
NjVEIC8qIFdLQnVuZGxlS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyMTY4
ODYxMjBGRDBFMzAwQzdDNjVEIC8qIFdLQnVuZGxlV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFNDY5NTQxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRTQ2OTU2MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ2OTVBMTIxNEVERjQwMDBC
OThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTcw
Niw2ICsxNzUyLDEyIEBACiAJCQkJQkMxNERGNzgxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxNERGOUUxMjBCNjM1
RjAwODI2QzBDIC8qIFdLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMxNEUxMDkxMjBCOTA1RTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM4RkQ5MDIxMjBFNkRENzAwRjNFNzFBIC8qIEluamVj
dGVkQnVuZGxlTW91c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzIxNjZEMjEyMEY0
Qzg5MDBDN0M2NUQgLyogV0tCdW5kbGVNb3VzZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUJDMjE2ODc5MTIwRkNFQkMwMEM3QzY1RCAvKiBJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkMyMTY4N0IxMjBGQ0VCQzAwQzdDNjVEIC8qIEluamVj
dGVkQnVuZGxlV2hlZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzIxNjg4MzEyMEZE
MEUzMDBDN0M2NUQgLyogV0tCdW5kbGVLZXlib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUJDMjE2ODg1MTIwRkQwRTMwMEM3QzY1RCAvKiBXS0J1bmRsZVdoZWVsRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNFNDY5NTMxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1DbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNDY5NTUxMjE0RTZDQjAwMEI5OEVCIC8qIFdl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0
Njk1OTEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVLZXlib2FyZEV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0luamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudDo6SW5qZWN0ZWRCdW5k
bGVLZXlib2FyZEV2ZW50KFdlYkV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0
ZXh0LCBjb25zdCBXVEY6OlN0cmluZyYgdW5tb2RpZmllZFRleHQsIGNvbnN0IFdURjo6U3RyaW5n
JiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmly
dHVhbEtleUNvZGUsIGJvb2wgaXNBdXRvUmVwZWF0LCBib29sIGlzS2V5cGFkLCBib29sIGlzU3lz
dGVtS2V5LCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkK
KyAgICA6IG1fd2ViS2V5Ym9hcmRFdmVudCh0eXBlLCB0ZXh0LCB1bm1vZGlmaWVkVGV4dCwga2V5
SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwg
aXNBdXRvUmVwZWF0LCBpc0tleXBhZCwgaXNTeXN0ZW1LZXksIG1vZGlmaWVycywgdGltZXN0YW1w
KQoreworfQorCitJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQ6On5JbmplY3RlZEJ1bmRsZUtl
eWJvYXJkRXZlbnQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkQnVuZGxl
S2V5Ym9hcmRFdmVudF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudF9oCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50IDogcHVibGlj
IEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5
cGVCdW5kbGVLZXlib2FyZEV2ZW50OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVLZXlib2FyZEV2ZW50PiBjcmVhdGUoV2ViRXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgV1RG
OjpTdHJpbmcmIHRleHQsIGNvbnN0IFdURjo6U3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3Qg
V1RGOjpTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGlu
dCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQs
IGJvb2wgaXNTeXN0ZW1LZXksIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUg
dGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1
bmRsZUtleWJvYXJkRXZlbnQodHlwZSwgdGV4dCwgdW5tb2RpZmllZFRleHQsIGtleUlkZW50aWZp
ZXIsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgbmF0aXZlVmlydHVhbEtleUNvZGUsIGlzQXV0b1Jl
cGVhdCwgaXNLZXlwYWQsIGlzU3lzdGVtS2V5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCkpOworICAg
IH0KKworICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudCgpOworCisgICAg
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViS2V5Ym9hcmRFdmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViS2V5Ym9hcmRFdmVudDsgfQorCitwcml2YXRlOgorICAgIEluamVjdGVkQnVuZGxlS2V5
Ym9hcmRFdmVudChXZWJFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dCwg
Y29uc3QgV1RGOjpTdHJpbmcmIHVubW9kaWZpZWRUZXh0LCBjb25zdCBXVEY6OlN0cmluZyYga2V5
SWRlbnRpZmllciwgaW50IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxL
ZXlDb2RlLCBib29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtl
eSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOworCisg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBX
ZWJLZXlib2FyZEV2ZW50IG1fd2ViS2V5Ym9hcmRFdmVudDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50X2gKSW5kZXg6
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1vdXNlRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTW91c2VFdmVudC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVNb3VzZUV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbmplY3RlZEJ1bmRs
ZU1vdXNlRXZlbnQ6OkluamVjdGVkQnVuZGxlTW91c2VFdmVudChXZWJFdmVudDo6VHlwZSB0eXBl
LCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uLCBpbnQgeCwgaW50IHksIGludCBnbG9iYWxY
LCBpbnQgZ2xvYmFsWSwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwg
aW50IGNsaWNrQ291bnQsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGlt
ZXN0YW1wKQorICAgIDogbV93ZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgeCwgeSwgZ2xvYmFs
WCwgZ2xvYmFsWSwgZGVsdGFYLCBkZWx0YVksIGRlbHRhWiwgY2xpY2tDb3VudCwgbW9kaWZpZXJz
LCB0aW1lc3RhbXApCit7Cit9CisKK0luamVjdGVkQnVuZGxlTW91c2VFdmVudDo6fkluamVjdGVk
QnVuZGxlTW91c2VFdmVudCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTW91c2VFdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU1vdXNlRXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVNb3Vz
ZUV2ZW50X2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50X2gKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZU1vdXNl
RXZlbnQ7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQ+
IGNyZWF0ZShXZWJFdmVudDo6VHlwZSB0eXBlLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9u
LCBpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgZmxvYXQgZGVsdGFYLCBm
bG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIFdlYkV2ZW50OjpNb2Rp
ZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCB4LCB5
LCBnbG9iYWxYLCBnbG9iYWxZLCBkZWx0YVgsIGRlbHRhWSwgZGVsdGFaLCBjbGlja0NvdW50LCBt
b2RpZmllcnMsIHRpbWVzdGFtcCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkluamVjdGVkQnVu
ZGxlTW91c2VFdmVudCgpOworCisgICAgY29uc3QgV2ViTW91c2VFdmVudCYgd2ViTW91c2VFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViTW91c2VFdmVudDsgfQorCitwcml2YXRlOgorICAgIElu
amVjdGVkQnVuZGxlTW91c2VFdmVudChXZWJFdmVudDo6VHlwZSB0eXBlLCBXZWJNb3VzZUV2ZW50
OjpCdXR0b24gYnV0dG9uLCBpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwg
ZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQs
IFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKworICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgV2Vi
TW91c2VFdmVudCBtX3dlYk1vdXNlRXZlbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlTW91c2VFdmVudF9oCkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gNjUzNzEpCisrKyBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTQgKzYzLDE0IEBAIGJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpzaG8KIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpzaG91bGRJbnNlcnROb2RlKFdlYlBhZ2UqIHBhZ2UsIE5vZGUqIG5vZGUsIFJhbmdlKiBy
YW5nZVRvUmVwbGFjZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKIHsKICAgICBpZiAobV9j
bGllbnQuc2hvdWxkSW5zZXJ0Tm9kZSkKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZElu
c2VydE5vZGUodG9SZWYocGFnZSksIHRvUmVmKG5vZGUpLCB0b1JlZihyYW5nZVRvUmVwbGFjZSks
IHRvV0soYWN0aW9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIHJldHVybiBtX2Ns
aWVudC5zaG91bGRJbnNlcnROb2RlKHRvUmVmKHBhZ2UpLCB0b1JlZihub2RlKSwgdG9SZWYocmFu
Z2VUb1JlcGxhY2UpLCB0b1JlZihhY3Rpb24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNo
b3VsZEluc2VydFRleHQoV2ViUGFnZSogcGFnZSwgU3RyaW5nSW1wbCogdGV4dCwgUmFuZ2UqIHJh
bmdlVG9SZXBsYWNlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQogewogICAgIGlmIChtX2Ns
aWVudC5zaG91bGRJbnNlcnRUZXh0KQotICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxkSW5z
ZXJ0VGV4dCh0b1JlZihwYWdlKSwgdG9SZWYodGV4dCksIHRvUmVmKHJhbmdlVG9SZXBsYWNlKSwg
dG9XSyhhY3Rpb24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgcmV0dXJuIG1fY2xp
ZW50LnNob3VsZEluc2VydFRleHQodG9SZWYocGFnZSksIHRvUmVmKHRleHQpLCB0b1JlZihyYW5n
ZVRvUmVwbGFjZSksIHRvUmVmKGFjdGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50OjpzaG8KIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpz
aG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYlBhZ2UqIHBhZ2UsIFJhbmdlKiBmcm9tUmFuZ2Us
IFJhbmdlKiB0b1JhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3Rpbmcp
CiB7CiAgICAgaWYgKG1fY2xpZW50LnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UpCi0gICAgICAg
IHJldHVybiBtX2NsaWVudC5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKHRvUmVmKHBhZ2UpLCB0
b1JlZihmcm9tUmFuZ2UpLCB0b1JlZih0b1JhbmdlKSwgdG9XSyhhZmZpbml0eSksIHN0aWxsU2Vs
ZWN0aW5nLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNo
b3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UodG9SZWYocGFnZSksIHRvUmVmKGZyb21SYW5nZSksIHRv
UmVmKHRvUmFuZ2UpLCB0b1JlZihhZmZpbml0eSksIHN0aWxsU2VsZWN0aW5nLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlV2hlZWxFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlV2hl
ZWxFdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0luamVjdGVkQnVuZGxlV2hlZWxFdmVudDo6SW5q
ZWN0ZWRCdW5kbGVXaGVlbEV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9i
YWxZLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgd2hlZWxUaWNrc1gsIGZsb2F0
IHdoZWVsVGlja3NZLCBXZWJXaGVlbEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2Vi
RXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgOiBtX3dl
YldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCB4LCB5LCBnbG9iYWxYLCBnbG9iYWxZLCBkZWx0
YVgsIGRlbHRhWSwgd2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZLCBncmFudWxhcml0eSwgbW9kaWZp
ZXJzLCB0aW1lc3RhbXApCit7Cit9CisKK0luamVjdGVkQnVuZGxlV2hlZWxFdmVudDo6fkluamVj
dGVkQnVuZGxlV2hlZWxFdmVudCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlV2hlZWxF
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVX
aGVlbEV2ZW50X2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50X2gKKworI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQgOiBwdWJsaWMgQVBJT2JqZWN0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZVdo
ZWVsRXZlbnQ7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVdoZWVsRXZl
bnQ+IGNyZWF0ZShpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgZmxvYXQg
ZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tz
WSwgV2ViV2hlZWxFdmVudDo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkV2ZW50OjpNb2Rp
ZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQoeCwgeSwgZ2xvYmFsWCwgZ2xv
YmFsWSwgZGVsdGFYLCBkZWx0YVksIHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSwgZ3JhbnVsYXJp
dHksIG1vZGlmaWVycywgdGltZXN0YW1wKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SW5qZWN0
ZWRCdW5kbGVXaGVlbEV2ZW50KCk7CisKKyAgICBjb25zdCBXZWJXaGVlbEV2ZW50JiB3ZWJXaGVl
bEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV93ZWJXaGVlbEV2ZW50OyB9CisKK3ByaXZhdGU6Cisg
ICAgSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGlu
dCBnbG9iYWxZLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgd2hlZWxUaWNrc1gs
IGZsb2F0IHdoZWVsVGlja3NZLCBXZWJXaGVlbEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0
eSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOworCisg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBX
ZWJXaGVlbEV2ZW50IG1fd2ViV2hlZWxFdmVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50X2gKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVB
UElDYXN0LmgJKHJldmlzaW9uIDY1MzcxKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsy
NiwxMyBAQAogI2lmbmRlZiBXS0J1bmRsZUFQSUNhc3RfaAogI2RlZmluZSBXS0J1bmRsZUFQSUNh
c3RfaAogCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXS0J1bmRsZUJhc2UuaCIK
KyNpbmNsdWRlICJXS0J1bmRsZUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJXS0J1bmRsZU1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJXS0J1bmRs
ZVBhZ2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVXaGVlbEV2ZW50LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9FZGl0b3JJbnNlcnRBY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRB
ZmZpbml0eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvWm9vbU1vZGUuaD4KQEAgLTQyLDggKzQ2LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZTsKK2NsYXNzIEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudDsKK2NsYXNzIElu
amVjdGVkQnVuZGxlTW91c2VFdmVudDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsK
IGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CitjbGFzcyBJbmplY3RlZEJ1bmRsZVdo
ZWVsRXZlbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKQEAgLTUzLDE0ICs2
MCwyMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVBUElUeXBlSW5mbzxXS0J1CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBCdW5kbGVBUElUeXBlSW5mbzxXS0J1bmRsZVJlZj4gICAgICAgICAgICAgICAg
ICAgICAgICB7IHR5cGVkZWYgSW5qZWN0ZWRCdW5kbGUqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8
PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88V0tCdW5kbGVOb2RlSGFuZGxlUmVmPiAgICAgICAg
ICAgICAgeyB0eXBlZGVmIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSogSW1wbFR5cGU7IH07CiB0
ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVBUElUeXBlSW5mbzxXS0J1bmRsZVNjcmlwdFdvcmxkUmVm
PiAgICAgICAgICAgICB7IHR5cGVkZWYgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogSW1wbFR5
cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVBUElUeXBlSW5mbzxXS0J1bmRsZU1vdXNl
RXZlbnRSZWY+ICAgICAgICAgICAgICB7IHR5cGVkZWYgSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50
KiBJbXBsVHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVu
ZGxlV2hlZWxFdmVudFJlZj4gICAgICAgICAgICAgIHsgdHlwZWRlZiBJbmplY3RlZEJ1bmRsZVdo
ZWVsRXZlbnQqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUlu
Zm88V0tCdW5kbGVLZXlib2FyZEV2ZW50UmVmPiAgICAgICAgICAgeyB0eXBlZGVmIEluamVjdGVk
QnVuZGxlS2V5Ym9hcmRFdmVudCogSW1wbFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5k
bGVBUElUeXBlSW5mbzxXS0J1bmRsZU5vZGVSZWY+ICAgICAgICAgICAgICAgICAgICB7IHR5cGVk
ZWYgV2ViQ29yZTo6Tm9kZSogSW1wbFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVB
UElUeXBlSW5mbzxXS0J1bmRsZVJhbmdlUmVmPiAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYg
V2ViQ29yZTo6UmFuZ2UqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJ
VHlwZUluZm88V0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmPiAgICAgeyB0eXBlZGVmIFdl
YkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qIEltcGxUeXBlOyB9OwogCisKIHRlbXBsYXRlPHR5
cGVuYW1lIEltcGxUeXBlPiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvIHsgfTsKIHRlbXBsYXRl
PD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxJbmplY3RlZEJ1bmRsZSo+ICAgICAgICAgICAg
ICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZVJlZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSo+ICAgICAgICAg
eyB0eXBlZGVmIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBz
dHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqPiAgICAg
ICAgeyB0eXBlZGVmIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgQVBJVHlwZTsgfTsKK3RlbXBsYXRl
PD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQqPiAg
ICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZU1vdXNlRXZlbnRSZWYgQVBJVHlwZTsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQq
PiAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZVdoZWVsRXZlbnRSZWYgQVBJVHlwZTsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxJbmplY3RlZEJ1bmRsZUtleWJvYXJk
RXZlbnQqPiAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZUtleWJvYXJkRXZlbnRSZWYgQVBJVHlwZTsg
fTsKIHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJGcmFtZSo+ICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZUZyYW1lUmVmIEFQSVR5cGU7IH07
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88V2ViUGFnZSo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tCdW5kbGVQYWdlUmVmIEFQSVR5cGU7IH07CiB0
ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88V2ViQ29yZTo6Q1NTU3R5bGVEZWNs
YXJhdGlvbio+ICAgICB7IHR5cGVkZWYgV0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmIEFQ
SVR5cGU7IH07CkBAIC04MywzMiArOTcsMjcgQEAgaW5saW5lIHR5cGVuYW1lIFdlYktpdDo6QnVu
ZGxlSW1wbFR5cGVJbgogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHR5cGVuYW1lIFdlYktp
dDo6QnVuZGxlSW1wbFR5cGVJbmZvPFQ+OjpBUElUeXBlPih0KTsKIH0KIAotaW5saW5lIFdLSW5z
ZXJ0QWN0aW9uVHlwZSB0b1dLKFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCitp
bmxpbmUgV0tJbnNlcnRBY3Rpb25UeXBlIHRvUmVmKFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlv
biBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIFdlYkNvcmU6OkVk
aXRvckluc2VydEFjdGlvblR5cGVkOgogICAgICAgICByZXR1cm4ga1dLSW5zZXJ0QWN0aW9uVHlw
ZWQ7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9u
UGFzdGVkOgogICAgICAgICByZXR1cm4ga1dLSW5zZXJ0QWN0aW9uUGFzdGVkOwotICAgICAgICBi
cmVhazsKICAgICBjYXNlIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbkRyb3BwZWQ6CiAgICAg
ICAgIHJldHVybiBrV0tJbnNlcnRBY3Rpb25Ecm9wcGVkOwotICAgICAgICBicmVhazsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGtXS0luc2VydEFjdGlvblR5
cGVkOwogfQogCi1pbmxpbmUgV0tBZmZpbml0eVR5cGUgdG9XSyhXZWJDb3JlOjpFQWZmaW5pdHkg
YWZmaW5pdHkpCitpbmxpbmUgV0tBZmZpbml0eVR5cGUgdG9SZWYoV2ViQ29yZTo6RUFmZmluaXR5
IGFmZmluaXR5KQogewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsKICAgICBjYXNlIFdlYkNvcmU6
OlVQU1RSRUFNOgogICAgICAgICByZXR1cm4ga1dLQWZmaW5pdHlVcHN0cmVhbTsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpET1dOU1RSRUFNOgogICAgICAgICByZXR1cm4ga1dL
QWZmaW5pdHlEb3duc3RyZWFtOwotICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGtXS0FmZmluaXR5VXBzdHJlYW07CkBAIC0xMjcsNCAr
MTM2LDgwIEBAIGlubGluZSBXZWJDb3JlOjpab29tTW9kZSB0b1pvb21Nb2RlKFdLQnUKICAgICBy
ZXR1cm4gV2ViQ29yZTo6Wm9vbVRleHRPbmx5OwogfQogCitpbmxpbmUgV2ViS2l0OjpXZWJFdmVu
dDo6TW9kaWZpZXJzIHRvV2ViRXZlbnRNb2RpZmllcnMoV0tCdW5kbGVFdmVudE1vZGlmaWVycyB3
a01vZGlmaWVycykKK3sKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmICh3a01v
ZGlmaWVycyAmIGtXS0J1bmRsZUV2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIG1vZGlm
aWVycyB8PSBXZWJLaXQ6OldlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAod2tNb2RpZmllcnMg
JiBrV0tCdW5kbGVFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIG1vZGlmaWVycyB8
PSBXZWJLaXQ6OldlYkV2ZW50OjpDb250cm9sS2V5OworICAgIGlmICh3a01vZGlmaWVycyAmIGtX
S0J1bmRsZUV2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICBtb2RpZmllcnMgfD0gV2ViS2l0
OjpXZWJFdmVudDo6QWx0S2V5OworICAgIGlmICh3a01vZGlmaWVycyAmIGtXS0J1bmRsZUV2ZW50
TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFdlYktpdDo6V2ViRXZlbnQ6
Ok1ldGFLZXk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVycz4obW9kaWZpZXJzKTsKK30KKworaW5saW5lIFdlYktpdDo6V2ViRXZlbnQ6OlR5cGUgdG9X
ZWJNb3VzZUV2ZW50VHlwZShXS0J1bmRsZU1vdXNlRXZlbnRUeXBlIHdrVHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHdrVHlwZSkgeworICAgIGNhc2Uga1dLQnVuZGxlTW91c2VFdmVudFR5cGVVcDoKKyAg
ICAgICAgcmV0dXJuIFdlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlVXA7CisgICAgY2FzZSBrV0tCdW5k
bGVNb3VzZUV2ZW50VHlwZURvd246CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYkV2ZW50OjpN
b3VzZURvd247CisgICAgY2FzZSBrV0tCdW5kbGVNb3VzZUV2ZW50VHlwZU1vdmU6CisgICAgICAg
IHJldHVybiBXZWJLaXQ6OldlYkV2ZW50OjpNb3VzZU1vdmU7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViRXZlbnQ6Ok1vdXNlTW92ZTsK
K30KKworaW5saW5lIFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9uIHRvV2ViTW91c2VFdmVu
dEJ1dHRvbihXS0J1bmRsZU1vdXNlRXZlbnRCdXR0b24gd2tCdXR0b24pCit7CisgICAgc3dpdGNo
ICh3a0J1dHRvbikgeworICAgIGNhc2Uga1dLQnVuZGxlTW91c2VFdmVudEJ1dHRvbk5vQnV0dG9u
OgorICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKKyAgICBj
YXNlIGtXS0J1bmRsZU1vdXNlRXZlbnRCdXR0b25MZWZ0OgorICAgICAgICByZXR1cm4gV2ViS2l0
OjpXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOworICAgIGNhc2Uga1dLQnVuZGxlTW91c2VFdmVu
dEJ1dHRvbk1pZGRsZToKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViTW91c2VFdmVudDo6TWlk
ZGxlQnV0dG9uOworICAgIGNhc2Uga1dLQnVuZGxlTW91c2VFdmVudEJ1dHRvblJpZ2h0OgorICAg
ICAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKyAgICB9CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2
ZW50OjpOb0J1dHRvbjsKK30KKworaW5saW5lIFdlYktpdDo6V2ViV2hlZWxFdmVudDo6R3JhbnVs
YXJpdHkgdG9XZWJXaGVlbEV2ZW50R3JhbnVsYXJpdHkoV0tCdW5kbGVXaGVlbEV2ZW50R3JhbnVs
YXJpdHkgd2tHcmFudWxhcml0eSkKK3sKKyAgICBzd2l0Y2ggKHdrR3JhbnVsYXJpdHkpIHsKKyAg
ICBjYXNlIGtXS0J1bmRsZVdoZWVsRXZlbnRHcmFudWxhcml0eVBhZ2U6CisgICAgICAgIHJldHVy
biBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQ7CisgICAgY2Fz
ZSBrV0tCdW5kbGVXaGVlbEV2ZW50R3JhbnVsYXJpdHlQaXhlbDoKKyAgICAgICAgcmV0dXJuIFdl
YktpdDo6V2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViV2hlZWxFdmVu
dDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7Cit9CisKK2lubGluZSBXZWJLaXQ6OldlYkV2ZW50
OjpUeXBlIHRvV2ViS2V5Ym9hcmRFdmVudFR5cGUoV0tCdW5kbGVLZXlib2FyZEV2ZW50VHlwZSB3
a1R5cGUpCit7CisgICAgc3dpdGNoICh3a1R5cGUpIHsKKyAgICBjYXNlIGtXS0J1bmRsZUtleWJv
YXJkRXZlbnRUeXBlS2V5RG93bjoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViRXZlbnQ6Oktl
eURvd247CisgICAgY2FzZSBrV0tCdW5kbGVLZXlib2FyZEV2ZW50VHlwZUtleVVwOgorICAgICAg
ICByZXR1cm4gV2ViS2l0OjpXZWJFdmVudDo6S2V5VXA7CisgICAgY2FzZSBrV0tCdW5kbGVLZXli
b2FyZEV2ZW50VHlwZVJhd0tleURvd246CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYkV2ZW50
OjpSYXdLZXlEb3duOworICAgIGNhc2Uga1dLQnVuZGxlS2V5Ym9hcmRFdmVudFR5cGVDaGFyOgor
ICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJFdmVudDo6Q2hhcjsKKyAgICB9CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJFdmVudDo6S2V5RG93bjsK
K30KKwogI2VuZGlmIC8vIFdLQnVuZGxlQVBJQ2FzdF9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFzZS5oCShyZXZp
c2lvbiA2NTM3MSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOSBAQCB0eXBlZGVmIHN0
cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS0J1
bmRsZU5vZGVIYW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJlZjsKIHR5cGVkZWYgc3RydWN0IE9w
YXF1ZVdLQnVuZGxlUGFnZSogV0tCdW5kbGVQYWdlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
V0tCdW5kbGVTY3JpcHRXb3JsZCogV0tCdW5kbGVTY3JpcHRXb3JsZFJlZjsKK3R5cGVkZWYgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlTW91c2VFdmVudCogV0tCdW5kbGVNb3VzZUV2ZW50UmVmOwordHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVXaGVlbEV2ZW50KiBXS0J1bmRsZVdoZWVsRXZlbnRS
ZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS0J1bmRsZUtleWJvYXJkRXZlbnQqIFdLQnVuZGxl
S2V5Ym9hcmRFdmVudFJlZjsKIAogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01DU1NT
dHlsZURlY2xhcmF0aW9uKiBXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY7CiB0eXBlZGVm
IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGUqIFdLQnVuZGxlTm9kZVJlZjsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUV2ZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
RXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxlRXZlbnRfaAorI2RlZmluZSBXS0J1bmRsZUV2ZW50
X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1
bmRsZUJhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CitlbnVtIHsKKyAgICBrV0tCdW5kbGVFdmVudE1vZGlmaWVyc1NoaWZ0S2V5ID0gMSA8PCAwLAor
ICAgIGtXS0J1bmRsZUV2ZW50TW9kaWZpZXJzQ29udHJvbEtleSA9IDEgPDwgMSwKKyAgICBrV0tC
dW5kbGVFdmVudE1vZGlmaWVyc0FsdEtleSA9IDEgPDwgMiwKKyAgICBrV0tCdW5kbGVFdmVudE1v
ZGlmaWVyc01ldGFLZXkgPSAxIDw8IDMKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLQnVuZGxlRXZl
bnRNb2RpZmllcnM7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAv
KiBXS0J1bmRsZUV2ZW50X2ggKi8KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUtleWJvYXJkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUtleWJvYXJkRXZlbnQu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tCdW5kbGVLZXlib2FyZEV2ZW50LmgiCisKKyNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworV0tUeXBlSUQgV0tCdW5kbGVLZXlib2FyZEV2ZW50R2V0VHlwZUlEKCkKK3sKKyAg
ICByZXR1cm4gdG9SZWYoSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50OjpBUElUeXBlKTsKK30K
KworV0tCdW5kbGVLZXlib2FyZEV2ZW50UmVmIFdLQnVuZGxlS2V5Ym9hcmRFdmVudENyZWF0ZShX
S0J1bmRsZUtleWJvYXJkRXZlbnRUeXBlIHR5cGUsIFdLU3RyaW5nUmVmIHRleHQsIFdLU3RyaW5n
UmVmIHVubW9kaWZpZWRUZXh0LCBXS1N0cmluZ1JlZiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93
c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGJvb2wgaXNBdXRvUmVw
ZWF0LCBib29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBXS0J1bmRsZUV2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKK3sKKyAgICBSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVLZXlib2FyZEV2ZW50PiBrZXlib2FyZEV2ZW50ID0gSW5qZWN0ZWRCdW5kbGVLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUodG9XZWJLZXlib2FyZEV2ZW50VHlwZSh0eXBlKSwgdG9XSyh0ZXh0KS0+
c3RyaW5nKCksIHRvV0sodW5tb2RpZmllZFRleHQpLT5zdHJpbmcoKSwgdG9XSyhrZXlJZGVudGlm
aWVyKS0+c3RyaW5nKCksIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgbmF0aXZlVmlydHVhbEtleUNv
ZGUsIGlzQXV0b1JlcGVhdCwgaXNLZXlwYWQsIGlzU3lzdGVtS2V5LCB0b1dlYkV2ZW50TW9kaWZp
ZXJzKG1vZGlmaWVycyksIHRpbWVzdGFtcCk7CisgICAgcmV0dXJuIHRvUmVmKGtleWJvYXJkRXZl
bnQucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7Cit9CisKK1dLQnVuZGxlS2V5Ym9hcmRFdmVudFJl
ZiBXS0J1bmRsZUtleWJvYXJkRXZlbnRSZXRhaW4oV0tCdW5kbGVLZXlib2FyZEV2ZW50UmVmIGtl
eWJvYXJkRXZlbnRSZWYpCit7CisgICAgdG9XSyhrZXlib2FyZEV2ZW50UmVmKS0+cmVmKCk7Cisg
ICAgcmV0dXJuIGtleWJvYXJkRXZlbnRSZWY7Cit9CisKK3ZvaWQgV0tCdW5kbGVLZXlib2FyZEV2
ZW50UmVsZWFzZShXS0J1bmRsZUtleWJvYXJkRXZlbnRSZWYga2V5Ym9hcmRFdmVudFJlZikKK3sK
KyAgICB0b1dLKGtleWJvYXJkRXZlbnRSZWYpLT5kZXJlZigpOworfQorCkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVLZXlib2FyZEV2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlS2V5Ym9hcmRFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlS2V5Ym9hcmRFdmVudC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0J1bmRsZUtleWJvYXJk
RXZlbnRfaAorI2RlZmluZSBXS0J1bmRsZUtleWJvYXJkRXZlbnRfaAorCisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFzZS5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGVFdmVudC5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK2VudW0geworICAgIGtXS0J1bmRsZUtleWJvYXJkRXZlbnRUeXBl
S2V5RG93biA9IDAsCisgICAga1dLQnVuZGxlS2V5Ym9hcmRFdmVudFR5cGVLZXlVcCA9IDEsCisg
ICAga1dLQnVuZGxlS2V5Ym9hcmRFdmVudFR5cGVSYXdLZXlEb3duID0gMiwKKyAgICBrV0tCdW5k
bGVLZXlib2FyZEV2ZW50VHlwZUNoYXIgPSAzCit9OwordHlwZWRlZiB1aW50MzJfdCBXS0J1bmRs
ZUtleWJvYXJkRXZlbnRUeXBlOworCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVLZXlib2Fy
ZEV2ZW50R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0J1bmRsZUtleWJvYXJkRXZlbnRSZWYg
V0tCdW5kbGVLZXlib2FyZEV2ZW50Q3JlYXRlKFdLQnVuZGxlS2V5Ym9hcmRFdmVudFR5cGUgdHlw
ZSwgV0tTdHJpbmdSZWYgdGV4dCwgV0tTdHJpbmdSZWYgdW5tb2RpZmllZFRleHQsIFdLU3RyaW5n
UmVmIGtleUlkZW50aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVW
aXJ0dWFsS2V5Q29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNT
eXN0ZW1LZXksIFdLQnVuZGxlRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0
YW1wKTsKKworV0tfRVhQT1JUIFdLQnVuZGxlS2V5Ym9hcmRFdmVudFJlZiBXS0J1bmRsZUtleWJv
YXJkRXZlbnRSZXRhaW4oV0tCdW5kbGVLZXlib2FyZEV2ZW50UmVmIGtleWJvYXJkRXZlbnQpOwor
V0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVLZXlib2FyZEV2ZW50UmVsZWFzZShXS0J1bmRsZUtleWJv
YXJkRXZlbnRSZWYga2V5Ym9hcmRFdmVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisKKyNlbmRpZiAvKiBXS0J1bmRsZUtleWJvYXJkRXZlbnRfaCAqLwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTW91c2VFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVNb3VzZUV2ZW50LmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS0J1bmRsZU1vdXNlRXZl
bnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTW91c2VFdmVudC5oIgorI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRsZU1vdXNlRXZlbnRHZXRUeXBlSUQoKQor
eworICAgIHJldHVybiB0b1JlZihJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQ6OkFQSVR5cGUpOwor
fQorCitXS0J1bmRsZU1vdXNlRXZlbnRSZWYgV0tCdW5kbGVNb3VzZUV2ZW50Q3JlYXRlKFdLQnVu
ZGxlTW91c2VFdmVudFR5cGUgdHlwZSwgV0tCdW5kbGVNb3VzZUV2ZW50QnV0dG9uIGJ1dHRvbiwg
aW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIGZsb2F0IGRlbHRhWCwgZmxv
YXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBXS0J1bmRsZUV2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKK3sKKyAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVNb3VzZUV2ZW50PiBtb3VzZUV2ZW50ID0gSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50
OjpjcmVhdGUodG9XZWJNb3VzZUV2ZW50VHlwZSh0eXBlKSwgdG9XZWJNb3VzZUV2ZW50QnV0dG9u
KGJ1dHRvbiksIHgsIHksIGdsb2JhbFgsIGdsb2JhbFksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVos
IGNsaWNrQ291bnQsIHRvV2ViRXZlbnRNb2RpZmllcnMobW9kaWZpZXJzKSwgdGltZXN0YW1wKTsK
KyAgICByZXR1cm4gdG9SZWYobW91c2VFdmVudC5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKK30K
KworV0tCdW5kbGVNb3VzZUV2ZW50UmVmIFdLQnVuZGxlTW91c2VFdmVudFJldGFpbihXS0J1bmRs
ZU1vdXNlRXZlbnRSZWYgbW91c2VFdmVudFJlZikKK3sKKyAgICB0b1dLKG1vdXNlRXZlbnRSZWYp
LT5yZWYoKTsKKyAgICByZXR1cm4gbW91c2VFdmVudFJlZjsKK30KKwordm9pZCBXS0J1bmRsZU1v
dXNlRXZlbnRSZWxlYXNlKFdLQnVuZGxlTW91c2VFdmVudFJlZiBtb3VzZUV2ZW50UmVmKQorewor
ICAgIHRvV0sobW91c2VFdmVudFJlZiktPmRlcmVmKCk7Cit9CisKSW5kZXg6IFdlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU1vdXNlRXZlbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVN
b3VzZUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVNb3VzZUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxlTW91c2VFdmVudF9oCisjZGVmaW5l
IFdLQnVuZGxlTW91c2VFdmVudF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZUV2ZW50Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwor
ZW51bSB7CisgICAga1dLQnVuZGxlTW91c2VFdmVudFR5cGVVcCA9IDAsCisgICAga1dLQnVuZGxl
TW91c2VFdmVudFR5cGVEb3duID0gMSwKKyAgICBrV0tCdW5kbGVNb3VzZUV2ZW50VHlwZU1vdmUg
PSAyCit9OwordHlwZWRlZiB1aW50MzJfdCBXS0J1bmRsZU1vdXNlRXZlbnRUeXBlOworCitlbnVt
IHsKKyAgICBrV0tCdW5kbGVNb3VzZUV2ZW50QnV0dG9uTm9CdXR0b24gPSAtMSwKKyAgICBrV0tC
dW5kbGVNb3VzZUV2ZW50QnV0dG9uTGVmdCA9IDAsCisgICAga1dLQnVuZGxlTW91c2VFdmVudEJ1
dHRvbk1pZGRsZSA9IDEsCisgICAga1dLQnVuZGxlTW91c2VFdmVudEJ1dHRvblJpZ2h0ID0gMiwK
K307Cit0eXBlZGVmIHVpbnQzMl90IFdLQnVuZGxlTW91c2VFdmVudEJ1dHRvbjsKKworV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLQnVuZGxlTW91c2VFdmVudEdldFR5cGVJRCgpOworCitXS19FWFBPUlQg
V0tCdW5kbGVNb3VzZUV2ZW50UmVmIFdLQnVuZGxlTW91c2VFdmVudENyZWF0ZShXS0J1bmRsZU1v
dXNlRXZlbnRUeXBlIHR5cGUsIFdLQnVuZGxlTW91c2VFdmVudEJ1dHRvbiBidXR0b24sIGludCB4
LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRl
bHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3VudCwgV0tCdW5kbGVFdmVudE1vZGlmaWVy
cyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOworCitXS19FWFBPUlQgV0tCdW5kbGVNb3Vz
ZUV2ZW50UmVmIFdLQnVuZGxlTW91c2VFdmVudFJldGFpbihXS0J1bmRsZU1vdXNlRXZlbnRSZWYg
bW91c2VFdmVudCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZU1vdXNlRXZlbnRSZWxlYXNlKFdL
QnVuZGxlTW91c2VFdmVudFJlZiBtb3VzZUV2ZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQnVuZGxlTW91c2VFdmVudF9oICovCkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAkocmV2aXNpb24gNjUzNzEpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYg
KzEwNywyMSBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFpvb21Nb2RlKFdLQnVuZGxlUGFnCiAgICAg
dG9XSyhwYWdlUmVmKS0+c2V0Wm9vbU1vZGUodG9ab29tTW9kZSh6b29tTW9kZSkpOwogfQogCit2
b2lkIFdLQnVuZGxlUGFnZVBvc3RNb3VzZUV2ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZU1vdXNlRXZlbnRSZWYgbW91c2VFdmVudFJlZikKK3sKKyAgICB0b1dLKHBhZ2VSZWYp
LT5wb3N0TW91c2VFdmVudCh0b1dLKG1vdXNlRXZlbnRSZWYpKTsKK30KKwordm9pZCBXS0J1bmRs
ZVBhZ2VQb3N0V2hlZWxFdmVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVXaGVl
bEV2ZW50UmVmIHdoZWVsRXZlbnRSZWYpCit7CisgICAgdG9XSyhwYWdlUmVmKS0+cG9zdFdoZWVs
RXZlbnQodG9XSyh3aGVlbEV2ZW50UmVmKSk7Cit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlUG9zdEtl
eWJvYXJkRXZlbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlS2V5Ym9hcmRFdmVu
dFJlZiBrZXlib2FyZEV2ZW50UmVmKQoreworICAgIHRvV0socGFnZVJlZiktPnBvc3RLZXlib2Fy
ZEV2ZW50KHRvV0soa2V5Ym9hcmRFdmVudFJlZikpOworfQorCiB2b2lkIFdLQnVuZGxlUGFnZVN0
b3BMb2FkaW5nKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHRvV0socGFnZVJlZikt
PnN0b3BMb2FkaW5nKCk7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmgJKHJldmlzaW9u
IDY1MzcxKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTAgQEAgV0tfRVhQ
T1JUIGZsb2F0IFdLQnVuZGxlUGFnZUdldFpvb21GYWN0bwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVQYWdlU2V0Wm9vbUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgZmxvYXQgem9vbUZhY3Rv
cik7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRab29tTW9kZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVQYWdlWm9vbU1vZGUgem9vbU1vZGUpOwogCitXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVBhZ2VQb3N0TW91c2VFdmVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVNb3VzZUV2ZW50UmVmIG1vdXNlRXZlbnQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdl
UG9zdFdoZWVsRXZlbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlV2hlZWxFdmVudFJl
ZiB3aGVlbEV2ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVBvc3RLZXlib2FyZEV2
ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUtleWJvYXJkRXZlbnRSZWYga2V5Ym9h
cmRFdmVudCk7CisKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVN0b3BMb2FkaW5nKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVXaGVlbEV2ZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVXaGVlbEV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVdoZWVsRXZlbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLQnVuZGxlV2hlZWxFdmVudC5o
IgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQnVuZGxlV2hlZWxFdmVudEdldFR5cGVJRCgpCit7Cisg
ICAgcmV0dXJuIHRvUmVmKEluamVjdGVkQnVuZGxlV2hlZWxFdmVudDo6QVBJVHlwZSk7Cit9CisK
K1dLQnVuZGxlV2hlZWxFdmVudFJlZiBXS0J1bmRsZVdoZWVsRXZlbnRDcmVhdGUoaW50IHgsIGlu
dCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZ
LCBmbG9hdCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ksIFdLQnVuZGxlV2hlZWxFdmVu
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXS0J1bmRsZUV2ZW50TW9kaWZpZXJzIG1vZGlmaWVy
cywgZG91YmxlIHRpbWVzdGFtcCkKK3sKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVXaGVlbEV2
ZW50PiB3aGVlbEV2ZW50ID0gSW5qZWN0ZWRCdW5kbGVXaGVlbEV2ZW50OjpjcmVhdGUoeCwgeSwg
Z2xvYmFsWCwgZ2xvYmFsWSwgZGVsdGFYLCBkZWx0YVksIHdoZWVsVGlja3NYLCB3aGVlbFRpY2tz
WSwgdG9XZWJXaGVlbEV2ZW50R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCB0b1dlYkV2ZW50TW9k
aWZpZXJzKG1vZGlmaWVycyksIHRpbWVzdGFtcCk7CisgICAgcmV0dXJuIHRvUmVmKHdoZWVsRXZl
bnQucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7Cit9CisKK1dLQnVuZGxlV2hlZWxFdmVudFJlZiBX
S0J1bmRsZVdoZWVsRXZlbnRSZXRhaW4oV0tCdW5kbGVXaGVlbEV2ZW50UmVmIHdoZWVsRXZlbnRS
ZWYpCit7CisgICAgdG9XSyh3aGVlbEV2ZW50UmVmKS0+cmVmKCk7CisgICAgcmV0dXJuIHdoZWVs
RXZlbnRSZWY7Cit9CisKK3ZvaWQgV0tCdW5kbGVXaGVlbEV2ZW50UmVsZWFzZShXS0J1bmRsZVdo
ZWVsRXZlbnRSZWYgd2hlZWxFdmVudFJlZikKK3sKKyAgICB0b1dLKHdoZWVsRXZlbnRSZWYpLT5k
ZXJlZigpOworfQorCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVXaGVlbEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlV2hlZWxFdmVudC5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlV2hlZWxF
dmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS0J1bmRsZVdoZWVsRXZlbnRfaAorI2RlZmluZSBXS0J1bmRsZVdoZWVsRXZlbnRfaAorCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFz
ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVFdmVudC5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0geworICAgIGtXS0J1bmRsZVdoZWVs
RXZlbnRHcmFudWxhcml0eVBhZ2UgPSAwLAorICAgIGtXS0J1bmRsZVdoZWVsRXZlbnRHcmFudWxh
cml0eVBpeGVsID0gMQorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tCdW5kbGVXaGVlbEV2ZW50R3Jh
bnVsYXJpdHk7CisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZVdoZWVsRXZlbnRHZXRUeXBl
SUQoKTsKKworV0tfRVhQT1JUIFdLQnVuZGxlV2hlZWxFdmVudFJlZiBXS0J1bmRsZVdoZWVsRXZl
bnRDcmVhdGUoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIGZsb2F0IGRl
bHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ks
IFdLQnVuZGxlV2hlZWxFdmVudEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXS0J1bmRsZUV2ZW50
TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisKK1dLX0VYUE9SVCBXS0J1
bmRsZVdoZWVsRXZlbnRSZWYgV0tCdW5kbGVXaGVlbEV2ZW50UmV0YWluKFdLQnVuZGxlV2hlZWxF
dmVudFJlZiB3aGVlbEV2ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlV2hlZWxFdmVudFJl
bGVhc2UoV0tCdW5kbGVXaGVlbEV2ZW50UmVmIHdoZWVsRXZlbnQpOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCdW5kbGVXaGVlbEV2ZW50X2ggKi8KSW5k
ZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA2NTM3MSkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWEuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTW91c2VF
dmVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlV2hlZWxFdmVudC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VJRC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudC5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCkBAIC0zMzUsNiArMzM4LDIx
IEBAIHZvaWQgV2ViUGFnZTo6c2V0Wm9vbU1vZGUoWm9vbU1vZGUgbW9kZSkKIAogLy8gRXZlbnRz
IAogCit2b2lkIFdlYlBhZ2U6OnBvc3RNb3VzZUV2ZW50KEluamVjdGVkQnVuZGxlTW91c2VFdmVu
dCogbW91c2VFdmVudCkKK3sKKyAgICBwYXNzTW91c2VFdmVudFRvV2ViQ29yZShtb3VzZUV2ZW50
LT53ZWJNb3VzZUV2ZW50KCkpOworfQorCit2b2lkIFdlYlBhZ2U6OnBvc3RXaGVlbEV2ZW50KElu
amVjdGVkQnVuZGxlV2hlZWxFdmVudCogd2hlZWxFdmVudCkKK3sKKyAgICBwYXNzV2hlZWxFdmVu
dFRvV2ViQ29yZSh3aGVlbEV2ZW50LT53ZWJXaGVlbEV2ZW50KCkpOworfQorCit2b2lkIFdlYlBh
Z2U6OnBvc3RLZXlib2FyZEV2ZW50KEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudCoga2V5Ym9h
cmRFdmVudCkKK3sKKyAgICBwYXNzS2V5RXZlbnRUb1dlYkNvcmUoa2V5Ym9hcmRFdmVudC0+d2Vi
S2V5Ym9hcmRFdmVudCgpKTsKK30KKwogc3RhdGljIGNvbnN0IFdlYkV2ZW50KiBnX2N1cnJlbnRF
dmVudCA9IDA7CiAKIC8vIEZJWE1FOiBXZWJQYWdlOjpjdXJyZW50RXZlbnQgaXMgdXNlZCBieSB0
aGUgcGx1Zy1pbiBjb2RlIHRvIGF2b2lkIGhhdmluZyB0byBjb252ZXJ0IGZyb20gRE9NIGV2ZW50
cyBiYWNrIHRvCkBAIC0zNjQsMTUgKzM4MiwyOSBAQCBwcml2YXRlOgogCiB2b2lkIFdlYlBhZ2U6
Om1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCkKIHsKLSAgICBDdXJy
ZW50RXZlbnQgY3VycmVudEV2ZW50KG1vdXNlRXZlbnQpOwotCiAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVF
dmVudCwgbV9wYWdlSUQsIENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90Pihtb3VzZUV2
ZW50LnR5cGUoKSkpKTsKKyAgICBwYXNzTW91c2VFdmVudFRvV2ViQ29yZShtb3VzZUV2ZW50KTsK
K30KKwordm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdl
YlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVFdmVudCwgbV9wYWdlSUQsIENvcmVJUEM6Oklu
KHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aGVlbEV2ZW50LnR5cGUoKSkpKTsKKyAgICBwYXNzV2hl
ZWxFdmVudFRvV2ViQ29yZSh3aGVlbEV2ZW50KTsKK30KKwordm9pZCBXZWJQYWdlOjprZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRS
ZWNlaXZlRXZlbnQsIG1fcGFnZUlELCBDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
a2V5Ym9hcmRFdmVudC50eXBlKCkpKSk7CisgICAgcGFzc0tleUV2ZW50VG9XZWJDb3JlKGtleWJv
YXJkRXZlbnQpOworfQogCit2b2lkIFdlYlBhZ2U6OnBhc3NNb3VzZUV2ZW50VG9XZWJDb3JlKGNv
bnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCit7CisgICAgQ3VycmVudEV2ZW50IGN1cnJl
bnRFdmVudChtb3VzZUV2ZW50KTsKICAgICBpZiAoIW1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+
dmlldygpKQogICAgICAgICByZXR1cm47CiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgcGxhdGZv
cm1Nb3VzZUV2ZW50ID0gcGxhdGZvcm0obW91c2VFdmVudCk7Ci0gICAgCiAgICAgc3dpdGNoIChw
bGF0Zm9ybU1vdXNlRXZlbnQuZXZlbnRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpN
b3VzZUV2ZW50UHJlc3NlZDoKICAgICAgICAgICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChwbGF0Zm9ybU1vdXNlRXZlbnQp
OwpAQCAtMzg5LDExICs0MjEsOSBAQCB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnQoY29uc3QgV2Vi
TW91c2VFCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCkKK3ZvaWQgV2ViUGFnZTo6cGFzc1doZWVsRXZlbnRUb1dlYkNv
cmUoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBDdXJyZW50RXZlbnQg
Y3VycmVudEV2ZW50KHdoZWVsRXZlbnQpOwotCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVFdmVudCwgbV9w
YWdlSUQsIENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aGVlbEV2ZW50LnR5cGUo
KSkpKTsKICAgICBpZiAoIW1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTQwMSwxMiArNDMxLDkgQEAgdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50
KGNvbnN0IFdlYldoZWVsRQogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1XaGVlbEV2ZW50KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQor
dm9pZCBXZWJQYWdlOjpwYXNzS2V5RXZlbnRUb1dlYkNvcmUoY29uc3QgV2ViS2V5Ym9hcmRFdmVu
dCYga2V5Ym9hcmRFdmVudCkKIHsKICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50KGtleWJv
YXJkRXZlbnQpOwotCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
KFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVFdmVudCwgbV9wYWdlSUQsIENvcmVJUEM6
OkluKHN0YXRpY19jYXN0PHVpbnQzMl90PihrZXlib2FyZEV2ZW50LnR5cGUoKSkpKTsKLQogICAg
IGlmICghbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpCiAgICAgICAgIHJldHVybjsK
IApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNjUzNzEp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDYgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIERyYXdpbmdBcmVhOworY2xhc3MgSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50
OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVNb3VzZUV2ZW50OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVX
aGVlbEV2ZW50OwogY2xhc3MgV2ViRXZlbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYktl
eWJvYXJkRXZlbnQ7CkBAIC0xMTksNiArMTIyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFpv
b21GYWN0b3IoZmxvYXQpOwogICAgIHZvaWQgc2V0Wm9vbU1vZGUoV2ViQ29yZTo6Wm9vbU1vZGUp
OwogCisgICAgdm9pZCBwb3N0TW91c2VFdmVudChJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQqKTsK
KyAgICB2b2lkIHBvc3RXaGVlbEV2ZW50KEluamVjdGVkQnVuZGxlV2hlZWxFdmVudCopOworICAg
IHZvaWQgcG9zdEtleWJvYXJkRXZlbnQoSW5qZWN0ZWRCdW5kbGVLZXlib2FyZEV2ZW50Kik7CisK
ICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCkBAIC0xNDgsMTUgKzE1NSwxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QWN0aXZlKGJv
b2wpOwogICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKTsKICAgICB2b2lkIHNldElzSW5XaW5kb3co
Ym9vbCk7Ci0gICAgdm9pZCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAgICB2
b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpOwotICAgIHZvaWQga2V5RXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFdURjo6U3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBn
ZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsK
ICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KTsKICAgICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkZyYW1l
KiwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
bik7CiAKKyAgICB2b2lkIG1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZv
aWQgd2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jik7CisgICAgdm9pZCBrZXlFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CisgICAgdm9pZCBwYXNzTW91c2VFdmVudFRvV2ViQ29y
ZShjb25zdCBXZWJNb3VzZUV2ZW50Jik7CisgICAgdm9pZCBwYXNzV2hlZWxFdmVudFRvV2ViQ29y
ZShjb25zdCBXZWJXaGVlbEV2ZW50Jik7CisgICAgdm9pZCBwYXNzS2V5RXZlbnRUb1dlYkNvcmUo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworCiAgICAgV2ViQ29yZTo6UGFnZSogbV9wYWdlOwog
ICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9tYWluRnJhbWU7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
V2ViRnJhbWUqPiBtX2ZyYW1lTWFwOwpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDY1Mzcx
KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1OSw2
ICs3NTksMzAgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVu
ZGxlXEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
KwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVu
ZGxlXEluamVjdGVkQnVuZGxlS2V5Ym9hcmRFdmVudC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmls
ZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3Rl
ZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZUtleWJvYXJkRXZlbnQuaCINCisJCQkJCT4NCisJCQkJPC9G
aWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVj
dGVkQnVuZGxlXEluamVjdGVkQnVuZGxlTW91c2VFdmVudC5jcHAiDQorCQkJCQk+DQorCQkJCTwv
RmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmpl
Y3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZU1vdXNlRXZlbnQuaCINCisJCQkJCT4NCisJCQkJPC9G
aWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVj
dGVkQnVuZGxlXEluamVjdGVkQnVuZGxlV2hlZWxFdmVudC5jcHAiDQorCQkJCQk+DQorCQkJCTwv
RmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmpl
Y3RlZEJ1bmRsZVxJbmplY3RlZEJ1bmRsZVdoZWVsRXZlbnQuaCINCisJCQkJCT4NCisJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsdGVyDQogCQkJCQlOYW1lPSJBUEkiDQogCQkJCQk+DQpAQCAtODQ1LDYg
Kzg2OSwzNCBAQAogCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1
bmRsZVxBUElcY1xXS0J1bmRsZVNjcmlwdFdvcmxkLmgiDQogCQkJCQkJCT4NCiAJCQkJCQk8L0Zp
bGU+DQorCQkJCQkJPEZpbGUNCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXElu
amVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlRXZlbnQuaCINCisJCQkJCQkJPg0KKwkJCQkJCTwv
RmlsZT4NCisJCQkJCQk8RmlsZQ0KKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3Nc
SW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVLZXlib2FyZEV2ZW50LmNwcCINCisJCQkJCQkJ
Pg0KKwkJCQkJCTwvRmlsZT4NCisJCQkJCQk8RmlsZQ0KKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVLZXlib2FyZEV2ZW50Lmgi
DQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUNCisJCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlTW91c2VF
dmVudC5jcHAiDQorCQkJCQkJCT4NCisJCQkJCQk8L0ZpbGU+DQorCQkJCQkJPEZpbGUNCisJCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVu
ZGxlTW91c2VFdmVudC5oIg0KKwkJCQkJCQk+DQorCQkJCQkJPC9GaWxlPg0KKwkJCQkJCTxGaWxl
DQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElc
Y1xXS0J1bmRsZVdoZWVsRXZlbnQuY3BwIg0KKwkJCQkJCQk+DQorCQkJCQkJPC9GaWxlPg0KKwkJ
CQkJCTxGaWxlDQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1
bmRsZVxBUElcY1xXS0J1bmRsZVdoZWVsRXZlbnQuaCINCisJCQkJCQkJPg0KKwkJCQkJCTwvRmls
ZT4NCiAJCQkJCTwvRmlsdGVyPg0KIAkJCQk8L0ZpbHRlcj4NCiAJCQkJPEZpbHRlcg0KSW5kZXg6
IFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHJldmlzaW9uIDY1MzcxKQorKysgV2ViS2l0Mi93
aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCwxMiBA
QCBhbGw6CiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcd2luXFdLVmlldy5oIiAi
JChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5c
V2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZS5oIiAiJChXRUJLSVRPVVRQ
VVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJ
bmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZUJhc2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxp
bmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRC
dW5kbGVcQVBJXGNcV0tCdW5kbGVFdmVudC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVc
V2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxB
UElcY1xXS0J1bmRsZUZyYW1lLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQy
IgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdL
QnVuZGxlRnJhbWVQcml2YXRlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQy
IgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdL
QnVuZGxlSW5pdGlhbGl6ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
KyAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1
bmRsZUtleWJvYXJkRXZlbnQuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIi
CisgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tC
dW5kbGVNb3VzZUV2ZW50LmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgog
ICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVu
ZGxlTm9kZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29w
eSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU5vZGVI
YW5kbGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlLmgi
ICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgpAQCAtNDAsNiArNDMsNyBAQCBh
bGw6CiAgICAgeGNvcHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNc
V0tCdW5kbGVQcml2YXRlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgog
ICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVu
ZGxlUmFuZ2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNv
cHkgL3kgL2QgIi4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVTY3Jp
cHRXb3JsZC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29w
eSAveSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVdoZWVs
RXZlbnQuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgLWRlbCAi
JChXRUJLSVRPVVRQVVRESVIpXGJ1aWxkZmFpbGVkIgogCiBjbGVhbjoK
</data>

          </attachment>
      

    </bug>

</bugzilla>