<?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>66984</bug_id>
          
          <creation_ts>2011-08-25 14:46:00 -0700</creation_ts>
          <short_desc>Enum-ify ResourceLoaderOptions/ThreadableLoaderOptions</short_desc>
          <delta_ts>2011-08-26 10:41:46 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>457154</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-25 14:46:00 -0700</bug_when>
    <thetext>Follow-up to https://bugs.webkit.org/show_bug.cgi?id=63301.

We have long lists of booleans that get passed all around and are easy to get wrong.  They&apos;d be more readable as enums.

I&apos;m targeting sendLoadCallbacks, sniffContent, and shoulBufferData in ResourceLoaderOptions, and allowCredentials in ThreadableLoaderOptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457156</commentid>
    <comment_count>1</comment_count>
      <attachid>105252</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-25 14:51:50 -0700</bug_when>
    <thetext>Created attachment 105252
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457176</commentid>
    <comment_count>2</comment_count>
      <attachid>105252</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-25 15:23:27 -0700</bug_when>
    <thetext>Comment on attachment 105252
patch

Attachment 105252 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9508591</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457180</commentid>
    <comment_count>3</comment_count>
      <attachid>105260</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-25 15:26:53 -0700</bug_when>
    <thetext>Created attachment 105260
Update Notification.cpp too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457261</commentid>
    <comment_count>4</comment_count>
      <attachid>105260</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-08-25 16:59:06 -0700</bug_when>
    <thetext>Comment on attachment 105260
Update Notification.cpp too

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

&gt; Source/WebCore/loader/cache/CachedResourceRequest.cpp:128
&gt; +                                                                                        ResourceLoaderOptions(sendResourceLoadCallbacks ? SendCallbacks : DoNotSendCallbacks, SniffContent, BufferData));

You may want to consider making this function take the enum instead of a bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457298</commentid>
    <comment_count>5</comment_count>
      <attachid>105260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 17:45:12 -0700</bug_when>
    <thetext>Comment on attachment 105260
Update Notification.cpp too

Attachment 105260 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9507684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457366</commentid>
    <comment_count>6</comment_count>
      <attachid>105260</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-25 21:18:12 -0700</bug_when>
    <thetext>Comment on attachment 105260
Update Notification.cpp too

Attachment 105260 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9495842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457572</commentid>
    <comment_count>7</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-26 09:15:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 105260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105260&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceRequest.cpp:128
&gt; &gt; +                                                                                        ResourceLoaderOptions(sendResourceLoadCallbacks ? SendCallbacks : DoNotSendCallbacks, SniffContent, BufferData));
&gt; 
&gt; You may want to consider making this function take the enum instead of a bool.

I&apos;m going to do that as a part of my next attempt at https://bugs.webkit.org/show_bug.cgi?id=66018.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457581</commentid>
    <comment_count>8</comment_count>
      <attachid>105363</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-08-26 09:32:57 -0700</bug_when>
    <thetext>Created attachment 105363
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457628</commentid>
    <comment_count>9</comment_count>
      <attachid>105363</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 10:41:41 -0700</bug_when>
    <thetext>Comment on attachment 105363
Patch for landing

Clearing flags on attachment: 105363

Committed r93886: &lt;http://trac.webkit.org/changeset/93886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457629</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 10:41:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105252</attachid>
            <date>2011-08-25 14:51:50 -0700</date>
            <delta_ts>2011-08-25 15:26:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>enum.txt</filename>
            <type>text/plain</type>
            <size>34564</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxM
b2FkZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsMTIgKzIyNiwx
MiBAQAogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOyAvLyBBbHdh
eXMgc2VuZCBjYWxsYmFja3MuCi0gICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBtX29wdGlvbnMu
c25pZmZDb250ZW50OwotICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IG1fb3B0aW9ucy5h
bGxvd0NyZWRlbnRpYWxzOworICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2Fs
bGJhY2tzOyAvLyBBbHdheXMgc2VuZCBjYWxsYmFja3MuCisgICAgb3B0aW9ucy5zbmlmZkNvbnRl
bnQgPSBtX29wdGlvbnMuc25pZmZDb250ZW50ID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNv
bnRlbnQ7CisgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9vcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzOwogICAgIG9wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID0gbV9vcHRpb25zLmZvcmNlUHJl
ZmxpZ2h0ID8gRm9yY2VQcmVmbGlnaHQgOiBDb25zaWRlclByZWZsaWdodDsKICAgICBvcHRpb25z
LmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeT4obV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7Ci0g
ICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gZmFsc2U7CisgICAgb3B0aW9ucy5zaG91bGRC
dWZmZXJEYXRhID0gRG9Ob3RCdWZmZXJEYXRhOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiB3ZWJjb3JlUmVxdWVzdCA9IHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKTsKICAgICBEb2N1
bWVudCogd2ViY29yZURvY3VtZW50ID0gbV9mcmFtZUltcGwtPmZyYW1lKCktPmRvY3VtZW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4MjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDExLTA4LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgVXNlIGVudW1zIGluc3RlYWQgb2YgYm9vbHMgZm9yIFRocmVhZGFibGVMb2FkZXJPcHRp
b25zCisgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRlZFVSTExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSk6CisKIDIwMTEt
MDgtMjUgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEVu
YWJsZSBpbmNyZW1lbnRhbCBsaW5raW5nIGZvciBjb21wb25lbnQgYnVpbGQgb24gQ2hyb21pdW0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNyArMzY0LDYgQEAKIF9f
Wk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKIF9fWk43
V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyNnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlRXYKIF9f
Wk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9yRXYKLV9fWk43V2ViQ29y
ZTE0UmVzb3VyY2VMb2FkZXIxOXNldFNob3VsZEJ1ZmZlckRhdGFFYgogX19aTjdXZWJDb3JlMTRT
VkdTTUlMRWxlbWVudDEzaXNTTUlMRWxlbWVudEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxNFNj
aGVtZVJlZ2lzdHJ5MjRyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWxFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MjVyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlRVJL
TjNXVEY2U3RyaW5nRQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEwICs4NiwxMCBAQAogICAg
IHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOwotICAg
IG9wdGlvbnMuc25pZmZDb250ZW50ID0gZmFsc2U7CisgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxi
YWNrcyA9IFNlbmRDYWxsYmFja3M7CisgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNu
aWZmQ29udGVudDsKICAgICBvcHRpb25zLnByZWZsaWdodFBvbGljeSA9IENvbnNpZGVyUHJlZmxp
Z2h0OwotICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IHRydWU7CisgICAgb3B0aW9ucy5h
bGxvd0NyZWRlbnRpYWxzID0gQWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBvcHRpb25zLmNy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IERlbnlDcm9zc09yaWdpblJlcXVlc3RzOwogCiAgICAg
aWYgKG1fY2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0w
OC0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5n
ZSBhIGJ1bmNoIG9mIG5vbmRlc2NyaXB0IGJvb2xzIHRvCisgICAgICAgIGRlc2NyaXB0aXZlIGVu
dW1zIGluIFJlc291cmNlTG9hZGVyT3B0aW9ucyBhbmQKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Njk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UgaW50ZW5kZWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oOgor
ICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9j
Zi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL1Jlc291cmNl
TG9hZGVyTWFjLm1tOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KwogMjAxMS0wOC0yNSAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xpdmVpcmFAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSb2xsb3V0IHI5Mzc5OTogQ2F1c2VkIGJhZCBjbGlwcGluZyBvbiB0aGUg
Ym90dG9tIG9mIHRhbGwgZ2x5cGhzIGluc2lkZSBhIGJ1dHRvbiBsYWJlbApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxMCArMTEzLDEw
IEBACiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJMYXN0LUV2ZW50LUlEIiwg
bV9sYXN0RXZlbnRJZCk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwot
ICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOwotICAgIG9wdGlvbnMuc25pZmZD
b250ZW50ID0gZmFsc2U7Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gdHJ1ZTsKLSAg
ICBvcHRpb25zLnNob3VsZEJ1ZmZlckRhdGEgPSBmYWxzZTsKKyAgICBvcHRpb25zLnNlbmRMb2Fk
Q2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsKKyAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IERv
Tm90U25pZmZDb250ZW50OworICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHM7CisgICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gRG9Ob3RCdWZm
ZXJEYXRhOwogCiAgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBVU0UoU09VUCkKQEAgLTkxLDYgKzkwLDExIEBA
CiBjbGFzcyBTY2hlZHVsZVBhaXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKK2VudW0gU3RvcmVk
Q3JlZGVudGlhbHMgeworICAgIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsCisgICAgRG9Ob3RBbGxv
d1N0b3JlZENyZWRlbnRpYWxzCit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVGlt
ZXI7CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VI
YW5kbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsOSBAQAogICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAKICAgICBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50
aWFscyA9IHRydWU7CisgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gQWxsb3dTdG9yZWRD
cmVkZW50aWFsczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IGNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeTsKLSAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gdHJ1
ZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsKIAogICAg
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGlj
X2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwg
KnRoaXMsIG9wdGlvbnMpOwogfQpAQCAtOTAsOSArOTAsOSBAQAogICAgICAgICByZXR1cm47CiAK
ICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuYWxsb3dD
cmVkZW50aWFscyA9IHRydWU7CisgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gQWxsb3dT
dG9yZWRDcmVkZW50aWFsczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9
IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKLSAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID0gdHJ1ZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsK
IAogICAgIC8vIER1cmluZyBjcmVhdGUsIGNhbGxiYWNrcyBtYXkgaGFwcGVuIHdoaWNoIHJlbW92
ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QuCiAgICAgUmVmUHRyPFdvcmtlclNj
cmlwdExvYWRlcj4gcHJvdGVjdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAKICAgICAg
ICAgICAgIC8vIEluIGEgcGx1Z2luIGRvY3VtZW50LCB0aGUgbWFpbiByZXNvdXJjZSBpcyB0aGUg
cGx1Z2luLiBJZiB3ZSBoYXZlIGEgbnVsbCB3aWRnZXQsIHRoYXQgbWVhbnMKICAgICAgICAgICAg
IC8vIHRoZSBsb2FkaW5nIG9mIHRoZSBwbHVnaW4gd2FzIGNhbmNlbGxlZCwgd2hpY2ggZ2l2ZXMg
dXMgYSBudWxsIG1haW5SZXNvdXJjZUxvYWRlcigpLCBzbyB3ZQogICAgICAgICAgICAgLy8gbmVl
ZCB0byBoYXZlIHRoaXMgY2FsbCBpbiBhIG51bGwgY2hlY2sgb2YgdGhlIHdpZGdldCBvciBvZiBt
YWluUmVzb3VyY2VMb2FkZXIoKS4KLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNldFNob3VsZEJ1ZmZlckRh
dGEoZmFsc2UpOworICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVyRGF0YShEb05vdEJ1
ZmZlckRhdGEpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmxvYWRlcigpLT5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVy
RGF0YShmYWxzZSk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVyRGF0YShEb05vdEJ1ZmZlckRh
dGEpOwogfQogCiB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTAsMTAgKzY1MCwxMCBAQAogICAg
ICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZHMobV9yZXF1ZXN0SGVhZGVycyk7CiAKICAg
ICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExvYWRD
YWxsYmFja3MgPSB0cnVlOwotICAgIG9wdGlvbnMuc25pZmZDb250ZW50ID0gZmFsc2U7CisgICAg
b3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7CisgICAgb3B0aW9ucy5z
bmlmZkNvbnRlbnQgPSBEb05vdFNuaWZmQ29udGVudDsKICAgICBvcHRpb25zLnByZWZsaWdodFBv
bGljeSA9IHVwbG9hZEV2ZW50cyA/IEZvcmNlUHJlZmxpZ2h0IDogQ29uc2lkZXJQcmVmbGlnaHQ7
Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9zYW1lT3JpZ2luUmVxdWVzdCB8fCBt
X2luY2x1ZGVDcmVkZW50aWFsczsKKyAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSAobV9z
YW1lT3JpZ2luUmVxdWVzdCB8fCBtX2luY2x1ZGVDcmVkZW50aWFscykgPyBBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIG9wdGlvbnMuY3Jv
c3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gVXNlQWNjZXNzQ29udHJvbDsKICAgICBvcHRpb25zLnNl
Y3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAkocmV2aXNpb24gOTM4MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDEyICszMywyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCitlbnVt
IFNlbmRDYWxsYmFja1BvbGljeSB7CisgICAgU2VuZENhbGxiYWNrcywKKyAgICBEb05vdFNlbmRD
YWxsYmFja3MKK307CisKK2VudW0gQ29udGVudFNuaWZmaW5nUG9saWN5IHsKKyAgICBTbmlmZkNv
bnRlbnQsCisgICAgRG9Ob3RTbmlmZkNvbnRlbnQKK307CisKK2VudW0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeSB7CisgICAgQnVmZmVyRGF0YSwKKyAgICBEb05vdEJ1ZmZlckRhdGEKK307CisKIHN0cnVj
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIDog
c2VuZExvYWRDYWxsYmFja3MoZmFsc2UpLCBzbmlmZkNvbnRlbnQoZmFsc2UpLCBzaG91bGRCdWZm
ZXJEYXRhKHRydWUpIHsgfQotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhib29sIHNlbmRMb2Fk
Q2FsbGJhY2tzQXJnLCBib29sIHNuaWZmQ29udGVudEFyZywgYm9vbCBzaG91bGRCdWZmZXJEYXRh
QXJnKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRMb2FkQ2FsbGJhY2tzQXJnKSwgc25pZmZDb250
ZW50KHNuaWZmQ29udGVudEFyZyksIHNob3VsZEJ1ZmZlckRhdGEoc2hvdWxkQnVmZmVyRGF0YUFy
ZykgeyB9Ci0gICAgYm9vbCBzZW5kTG9hZENhbGxiYWNrczsKLSAgICBib29sIHNuaWZmQ29udGVu
dDsKLSAgICBib29sIHNob3VsZEJ1ZmZlckRhdGE7CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25z
KCkgOiBzZW5kTG9hZENhbGxiYWNrcyhEb05vdFNlbmRDYWxsYmFja3MpLCBzbmlmZkNvbnRlbnQo
RG9Ob3RTbmlmZkNvbnRlbnQpLCBzaG91bGRCdWZmZXJEYXRhKEJ1ZmZlckRhdGEpIHsgfQorICAg
IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFj
a3NBcmcsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRlbnRBcmcsIERhdGFCdWZmZXJp
bmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YUFyZykgOiBzZW5kTG9hZENhbGxiYWNrcyhzZW5kTG9h
ZENhbGxiYWNrc0FyZyksIHNuaWZmQ29udGVudChzbmlmZkNvbnRlbnRBcmcpLCBzaG91bGRCdWZm
ZXJEYXRhKHNob3VsZEJ1ZmZlckRhdGFBcmcpIHsgfQorICAgIFNlbmRDYWxsYmFja1BvbGljeSBz
ZW5kTG9hZENhbGxiYWNrczsKKyAgICBDb250ZW50U25pZmZpbmdQb2xpY3kgc25pZmZDb250ZW50
OworICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jl
c291cmNlTG9hZGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvUmVzb3VyY2VMb2FkZXJNYWMubW0JKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTAs
NyArOTAsNyBAQAogICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBt
b3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAg
ICAgICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAgICAgLy8gQ291bGQg
YmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCi0gICAgICAgIGlmIChtX3NlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MgJiYgbV9mcmFtZSkKKyAgICAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCiAgICAgICAgICAg
ICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaWRSZWNlaXZlRGF0YSh0aGlzLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKSwgZGF0YUxlbiwg
ZGF0YUxlbik7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3
ICsxNzksNyBAQAogYm9vbCBDYWNoZWRSZXNvdXJjZTo6cGFzc2VzQWNjZXNzQ29udHJvbENoZWNr
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBTdHJpbmcgZXJyb3JEZXNj
cmlwdGlvbjsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKG1f
cmVzcG9uc2UsIHJlc291cmNlUmVxdWVzdCgpLmFsbG93Q29va2llcygpLCBzZWN1cml0eU9yaWdp
biwgZXJyb3JEZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBhc3Nlc0FjY2Vzc0Nv
bnRyb2xDaGVjayhtX3Jlc3BvbnNlLCByZXNvdXJjZVJlcXVlc3QoKS5hbGxvd0Nvb2tpZXMoKSA/
IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIHNl
Y3VyaXR5T3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKTsKIH0KIAogYm9vbCBDYWNoZWRSZXNvdXJj
ZTo6aXNFeHBpcmVkKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCShyZXZpc2lvbiA5MzgyMikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQsOCArMTI0LDggQEAKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0
eSBwcmlvcml0eSA9IHJlc291cmNlLT5sb2FkUHJpb3JpdHkoKTsKICAgICByZXNvdXJjZVJlcXVl
c3Quc2V0UHJpb3JpdHkocHJpb3JpdHkpOwogCi0gICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVy
PiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxv
YWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZyYW1lKCksCi0gICAgICAgIHJl
cXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcHJpb3JpdHksIHNlY3VyaXR5Q2hlY2ssIFJl
c291cmNlTG9hZGVyT3B0aW9ucyhzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzLCB0cnVlLCB0cnVl
KSk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRT
Y2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PmRvY3VtZW50KCktPmZyYW1lKCksIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcHJp
b3JpdHksIHNlY3VyaXR5Q2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVz
b3VyY2VMb2FkZXJPcHRpb25zKHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPyBTZW5kQ2FsbGJh
Y2tzIDogRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEpKTsKICAg
ICBpZiAoIWxvYWRlciB8fCBsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFdoYXQgaWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRp
bmcgZm9yIHRoaXMgcmV2YWxpZGF0aW9uPwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAi
Q2Fubm90IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKEZyYW1lKiBmcmFtZSwg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IFJlc291cmNl
TG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnModHJ1ZSwgdHJ1ZSwgdHJ1ZSkpCisg
ICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxs
YmFja3MsIFNuaWZmQ29udGVudCwgRG9Ob3RCdWZmZXJEYXRhKSkKICAgICAsIG1fY2xpZW50KGNs
aWVudCkKIHsKIH0KQEAgLTQ4LDcgKzQ4LDYgQEAKIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI+IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZy
YW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyPiBsb2FkZXIoYWRvcHRSZWYobmV3IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKGZy
YW1lLCBjbGllbnQpKSk7Ci0gICAgbG9hZGVyLT5zZXRTaG91bGRCdWZmZXJEYXRhKGZhbHNlKTsK
ICAgICBsb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFkZFBsdWdJblN0cmVhbUxvYWRlcihsb2Fk
ZXIuZ2V0KCkpOwogICAgIGlmICghbG9hZGVyLT5pbml0KHJlcXVlc3QpKQogICAgICAgICByZXR1
cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sLmgJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaWZuZGVmIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbF9oCiAjZGVmaW5lIENyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbF9oCiAKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQxLDEw
ICs0MiwxMCBAQAogYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RIZWFkZXJXaGl0
ZWxpc3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIGJvb2wgaXNP
bkFjY2Vzc0NvbnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcmKTsKIAot
dm9pZCB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChSZXNvdXJjZVJlcXVlc3QmLCBTZWN1
cml0eU9yaWdpbiosIGJvb2wgYWxsb3dDcmVkZW50aWFscyk7Ci1SZXNvdXJjZVJlcXVlc3QgY3Jl
YXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
U2VjdXJpdHlPcmlnaW4qLCBib29sIGFsbG93Q3JlZGVudGlhbHMpOwordm9pZCB1cGRhdGVSZXF1
ZXN0Rm9yQWNjZXNzQ29udHJvbChSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdpbiosIFN0
b3JlZENyZWRlbnRpYWxzKTsKK1Jlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJl
ZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdpbiosIFN0
b3JlZENyZWRlbnRpYWxzKTsKIAotYm9vbCBwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTZWN1cml0eU9yaWdp
biosIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbik7Citib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xD
aGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU3RvcmVkQ3JlZGVudGlhbHMsIFNlY3VyaXR5
T3JpZ2luKiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlX2gKIAogI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTQxLDcgKzQyLDcgQEAKICAgICBjbGFz
cyBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlSXRlbShib29sIGNyZWRlbnRpYWxzKQorICAgICAgICBDcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlSXRlbShTdG9yZWRDcmVkZW50aWFscyBjcmVkZW50aWFscykK
ICAgICAgICAgICAgIDogbV9hYnNvbHV0ZUV4cGlyeVRpbWUoMCkKICAgICAgICAgICAgICwgbV9j
cmVkZW50aWFscyhjcmVkZW50aWFscykKICAgICAgICAgewpAQCAtNTAsNyArNTEsNyBAQAogICAg
ICAgICBib29sIHBhcnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBTdHJpbmcmIGVycm9yRGVz
Y3JpcHRpb24pOwogICAgICAgICBib29sIGFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKGNvbnN0IFN0
cmluZyYsIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbikgY29uc3Q7CiAgICAgICAgIGJvb2wgYWxs
b3dzQ3Jvc3NPcmlnaW5IZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBTdHJpbmcmIGVycm9y
RGVzY3JpcHRpb24pIGNvbnN0OwotICAgICAgICBib29sIGFsbG93c1JlcXVlc3QoYm9vbCBpbmNs
dWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiByZXF1ZXN0SGVhZGVycykgY29uc3Q7CisgICAgICAgIGJvb2wgYWxsb3dzUmVxdWVzdChTdG9y
ZWRDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IHJlcXVlc3RIZWFkZXJzKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYg
SGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gSGVhZGVyc1NldDsKQEAgLTU5LDcgKzYw
LDcgQEAKICAgICAgICAgLy8gdG8gc3RhcnQgYSB0aW1lciBmb3IgdGhlIGV4cGlyYXRpb24gZGVs
dGEgdGhhdCByZW1vdmVzIHRoaXMgZnJvbSB0aGUgY2FjaGUgd2hlbgogICAgICAgICAvLyBpdCBm
aXJlcy4KICAgICAgICAgZG91YmxlIG1fYWJzb2x1dGVFeHBpcnlUaW1lOwotICAgICAgICBib29s
IG1fY3JlZGVudGlhbHM7CisgICAgICAgIFN0b3JlZENyZWRlbnRpYWxzIG1fY3JlZGVudGlhbHM7
CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX21ldGhvZHM7CiAgICAgICAgIEhlYWRlcnNTZXQg
bV9oZWFkZXJzOwogICAgIH07CkBAIC03MCw3ICs3MSw3IEBACiAgICAgICAgIHN0YXRpYyBDcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlJiBzaGFyZWQoKTsKIAogICAgICAgICB2b2lkIGFw
cGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4pOwotICAgICAgICBib29sIGNhblNr
aXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmLCBib29sIGluY2x1
ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IHJlcXVlc3RIZWFkZXJzKTsKKyAgICAgICAgYm9vbCBjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyk7CiAKICAgICAg
ICAgdm9pZCBlbXB0eSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3Vy
Y2VMb2FkZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nm
L1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQAogCiBib29sIFJlc291cmNlTG9hZGVyOjpzaG91bGRDYWNoZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkK
IHsKLSAgICBpZiAoIW1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcykKKyAgICBpZiAobV9vcHRp
b25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90U2VuZENhbGxiYWNrcykKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlID0gQ0ZDYWNoZWRVUkxSZXNw
b25zZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYw
LDcgKzE2MCw3IEBACiAgICAgfQogCiAgICAgaWYgKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKQot
ICAgICAgICBtX2hhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobV9mcmFtZS0+bG9hZGVy
KCktPm5ldHdvcmtpbmdDb250ZXh0KCksIG1fcmVxdWVzdCwgdGhpcywgbV9kZWZlcnNMb2FkaW5n
LCBtX29wdGlvbnMuc25pZmZDb250ZW50KTsKKyAgICAgICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlKG1fZnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLCBtX3Jl
cXVlc3QsIHRoaXMsIG1fZGVmZXJzTG9hZGluZywgbV9vcHRpb25zLnNuaWZmQ29udGVudCA9PSBT
bmlmZkNvbnRlbnQpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5n
KGJvb2wgZGVmZXJzKQpAQCAtMTgyLDcgKzE4Miw3IEBACiAgICAgcmV0dXJuIG1fZnJhbWUtPmxv
YWRlcigpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpzZXRTaG91bGRCdWZmZXJEYXRhKGJv
b2wgc2hvdWxkQnVmZmVyRGF0YSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldFNob3VsZEJ1ZmZl
ckRhdGEoRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhKQogeyAKICAgICBtX29w
dGlvbnMuc2hvdWxkQnVmZmVyRGF0YSA9IHNob3VsZEJ1ZmZlckRhdGE7IAogCkBAIC0xOTQsNyAr
MTk0LDcgQEAKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoLCBib29sIGFsbEF0T25jZSkKIHsKLSAgICBpZiAoIW1fb3B0aW9ucy5zaG91
bGRCdWZmZXJEYXRhKQorICAgIGlmIChtX29wdGlvbnMuc2hvdWxkQnVmZmVyRGF0YSA9PSBEb05v
dEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhbGxBdE9uY2UpIHsKQEAg
LTIzNCw3ICsyMzQsNyBAQAogCiAgICAgQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsK
IAotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MpIHsKKyAgICBpZiAobV9vcHRp
b25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja3MpIHsKICAgICAgICAgaWYgKCFt
X2lkZW50aWZpZXIpIHsKICAgICAgICAgICAgIG1faWRlbnRpZmllciA9IG1fZnJhbWUtPnBhZ2Uo
KS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgICAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
bV9pZGVudGlmaWVyLCBkb2N1bWVudExvYWRlcigpLCByZXF1ZXN0KTsKQEAgLTI3Nyw3ICsyNzcs
NyBAQAogICAgIGlmIChGb3JtRGF0YSogZGF0YSA9IG1fcmVxdWVzdC5odHRwQm9keSgpKQogICAg
ICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7CiAgICAgICAgIAotICAg
IGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MpCisgICAgaWYgKG1fb3B0aW9ucy5zZW5k
TG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzKQogICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7CiB9CiAKQEAg
LTMwMywxMyArMzAzLDEzIEBACiAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdp
dGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5n
LgogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICBpZiAobV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzICYmIG1fZnJhbWUpCisgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxi
YWNrcyA9PSBTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCiAgICAgICAgIGZyYW1lTG9hZGVyKCkt
Pm5vdGlmaWVyKCktPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCwgc3RhdGljX2Nh
c3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3
aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAg
ICBpZiAoIW1fb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhKQorICAgIGlmIChtX29wdGlvbnMuc2hv
dWxkQnVmZmVyRGF0YSA9PSBEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEFTU0VSVCghbV9yZXNvdXJjZURhdGEpOwpAQCAtMzM3LDcgKzMzNyw3IEBACiAgICAgaWYgKG1f
Y2FsbGVkRGlkRmluaXNoTG9hZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2FsbGVkRGlkRmlu
aXNoTG9hZCA9IHRydWU7Ci0gICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcykKKyAg
ICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja3MpCiAgICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZpbmlzaExvYWQodGhpcywgZmluaXNo
VGltZSk7CiB9CiAKQEAgLTM1NCw3ICszNTQsNyBAQAogICAgIGlmIChGb3JtRGF0YSogZGF0YSA9
IG1fcmVxdWVzdC5odHRwQm9keSgpKQogICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxl
c0lmTmVlZGVkKCk7CiAKLSAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzICYmICFt
X2NhbGxlZERpZEZpbmlzaExvYWQpCisgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNr
cyA9PSBTZW5kQ2FsbGJhY2tzICYmICFtX2NhbGxlZERpZEZpbmlzaExvYWQpCiAgICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZhaWxUb0xvYWQodGhpcywgZXJyb3IpOwogCiAg
ICAgcmVsZWFzZVJlc291cmNlcygpOwpAQCAtNDAyLDcgKzQwMiw3IEBACiAgICAgICAgICAgICBt
X2hhbmRsZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2Fk
Q2FsbGJhY2tzICYmIG1faWRlbnRpZmllciAmJiAhbV9jYWxsZWREaWRGaW5pc2hMb2FkKQorICAg
ICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja3MgJiYg
bV9pZGVudGlmaWVyICYmICFtX2NhbGxlZERpZEZpbmlzaExvYWQpCiAgICAgICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaWRGYWlsVG9Mb2FkKHRoaXMsIG5vbk51bGxFcnJvcik7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcihG
cmFtZSogZnJhbWUpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJP
cHRpb25zKHRydWUsIHRydWUsIHRydWUpKQorICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJl
c291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRh
dGEpKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6Omhh
bmRsZURhdGFMb2FkTm93KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkK
ICAgICAsIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDEyICsx
MzUsMTIgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzUmVxdWVzdChib29sIGluY2x1ZGVDcmVkZW50aWFscywg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KSBjb25zdAorYm9vbCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dz
UmVxdWVzdChTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykgY29uc3QKIHsK
ICAgICBTdHJpbmcgaWdub3JlZEV4cGxhbmF0aW9uOwogICAgIGlmIChtX2Fic29sdXRlRXhwaXJ5
VGltZSA8IGN1cnJlbnRUaW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoaW5j
bHVkZUNyZWRlbnRpYWxzICYmICFtX2NyZWRlbnRpYWxzKQorICAgIGlmIChpbmNsdWRlQ3JlZGVu
dGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscyAmJiBtX2NyZWRlbnRpYWxzID09IERvTm90
QWxsb3dTdG9yZWRDcmVkZW50aWFscykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QobWV0aG9kLCBpZ25vcmVkRXhwbGFuYXRpb24pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjcsNyArMTY3LDcgQEAKICAgICB9CiB9CiAKLWJvb2wg
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KQorYm9vbCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpjYW5Ta2lwUHJlZmxpZ2h0
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxz
IGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIHJlcXVlc3RIZWFkZXJzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRIYXNoTWFwOjppdGVyYXRvciBjYWNoZUl0ID0g
bV9wcmVmbGlnaHRIYXNoTWFwLmZpbmQoc3RkOjptYWtlX3BhaXIob3JpZ2luLCB1cmwpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHJl
dmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVk
dWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBACiBwdWJsaWM6CiAgICAgZnJp
ZW5kIFJlc291cmNlTG9hZFNjaGVkdWxlciogcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCk7CiAKLSAg
ICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hlZHVsZVN1YnJlc291cmNlTG9hZChG
cmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdywgU2VjdXJpdHlD
aGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiA9IFJlc291cmNlTG9hZGVyT3B0aW9ucyh0cnVlLCB0cnVlLCB0cnVlKSk7CisgICAgUGFzc1Jl
ZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBT
dWJyZXNvdXJjZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
TG9hZFByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xp
Y3kgPSBEb1NlY3VyaXR5Q2hlY2ssIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNv
dXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRh
KSk7CiAgICAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gc2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkKEZyYW1lKiwgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGFkZE1haW5SZXNvdXJjZUxvYWQo
UmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDkzODIyKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw3ICsxMzksNyBAQAogCiAgICAgICAgIGJvb2wgcmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX3JlYWNoZWRUZXJtaW5hbFN0YXRlOyB9CiAKLSAgICAgICAgdm9p
ZCBzZXRTaG91bGRCdWZmZXJEYXRhKGJvb2wgc2hvdWxkQnVmZmVyRGF0YSk7CisgICAgICAgIHZv
aWQgc2V0U2hvdWxkQnVmZmVyRGF0YShEYXRhQnVmZmVyaW5nUG9saWN5KTsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgUmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCShyZXZp
c2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgVGhyZWFkYWJsZUxvYWRl
cl9oCiAjZGVmaW5lIFRocmVhZGFibGVMb2FkZXJfaAogCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDUsMTEgKzQ2
LDYgQEAKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudDsKLQotICAgIGVu
dW0gU3RvcmVkQ3JlZGVudGlhbHMgewotICAgICAgICBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLAot
ICAgICAgICBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMKLSAgICB9OwogICAgIAogICAgIGVu
dW0gQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IHsKICAgICAgICAgRGVueUNyb3NzT3JpZ2luUmVx
dWVzdHMsCkBAIC02NCw4ICs2MCw4IEBACiAgICAgfTsKIAogICAgIHN0cnVjdCBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewotICAgICAgICBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpIDogYWxsb3dDcmVkZW50aWFscyhmYWxzZSksIHByZWZs
aWdodFBvbGljeShDb25zaWRlclByZWZsaWdodCksIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeShE
ZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgeyB9Ci0gICAgICAgIGJvb2wgYWxsb3dDcmVkZW50aWFs
czsgIC8vIFdoZXRoZXIgSFRUUCBjcmVkZW50aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3aXRo
IHRoZSByZXF1ZXN0LgorICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpIDogYWxsb3dD
cmVkZW50aWFscyhEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpLCBwcmVmbGlnaHRQb2xpY3ko
Q29uc2lkZXJQcmVmbGlnaHQpLCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3koRGVueUNyb3NzT3Jp
Z2luUmVxdWVzdHMpIHsgfQorICAgICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0NyZWRlbnRp
YWxzOyAvLyBXaGV0aGVyIEhUVFAgY3JlZGVudGlhbHMgYW5kIGNvb2tpZXMgYXJlIHNlbnQgd2l0
aCB0aGUgcmVxdWVzdC4KICAgICAgICAgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeTsg
Ly8gSWYgQWNjZXNzQ29udHJvbCBpcyB1c2VkLCBob3cgdG8gZGV0ZXJtaW5lIGlmIGEgcHJlZmxp
Z2h0IGlzIG5lZWRlZC4KICAgICAgICAgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeTsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNp
b24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAKIAogICAgICAgICBTdHJpbmcgY3Jvc3NPcmln
aW5Nb2RlID0gbV9lbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3Nvcmln
aW5BdHRyKTsKICAgICAgICAgaWYgKCFjcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkpIHsKLSAgICAg
ICAgICAgIGJvb2wgYWxsb3dDcmVkZW50aWFscyA9IGVxdWFsSWdub3JpbmdDYXNlKGNyb3NzT3Jp
Z2luTW9kZSwgInVzZS1jcmVkZW50aWFscyIpOworICAgICAgICAgICAgU3RvcmVkQ3JlZGVudGlh
bHMgYWxsb3dDcmVkZW50aWFscyA9IGVxdWFsSWdub3JpbmdDYXNlKGNyb3NzT3JpZ2luTW9kZSwg
InVzZS1jcmVkZW50aWFscyIpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dT
dG9yZWRDcmVkZW50aWFsczsKICAgICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250
cm9sKHJlcXVlc3QsIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxz
KTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkyLDcgKzI5Miw3IEBACiB7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIGxvYWRlciA9
PSBtX2xvYWRlciB8fCAhbV9sb2FkZXIpOwogCi0gICAgaWYgKCFtX29wdGlvbnMuYWxsb3dDcmVk
ZW50aWFscykgeworICAgIGlmIChtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9PSBEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMpIHsKICAgICAgICAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzQ1LDEwICszNDUs
MTAgQEAKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IG1fb3B0aW9u
czsKICAgICAgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkgewogICAgICAgICAgICAgLy8gRG9uJ3Qg
c25pZmYgY29udGVudCBvciBzZW5kIGxvYWQgY2FsbGJhY2tzIGZvciB0aGUgcHJlZmxpZ2h0IHJl
cXVlc3QuCi0gICAgICAgICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gZmFsc2U7Ci0g
ICAgICAgICAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IGZhbHNlOworICAgICAgICAgICAgb3B0
aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IERvTm90U2VuZENhbGxiYWNrczsKKyAgICAgICAgICAg
IG9wdGlvbnMuc25pZmZDb250ZW50ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgICAgICAgICAv
LyBLZWVwIGJ1ZmZlcmluZyB0aGUgZGF0YSBmb3IgdGhlIHByZWZsaWdodCByZXF1ZXN0LgotICAg
ICAgICAgICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gdHJ1ZTsKKyAgICAgICAgICAgIG9w
dGlvbnMuc2hvdWxkQnVmZmVyRGF0YSA9IEJ1ZmZlckRhdGE7CiAgICAgICAgIH0KIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCkBAIC0zNjgsMTQgKzM2OCwxMiBAQAogICAgIH0KICAgICAKICAgICAv
LyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBw
b3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFN0b3JlZENyZWRlbnRpYWxzIHN0
b3JlZENyZWRlbnRpYWxzID0gbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPyBBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwotCiAgICAgVmVjdG9y
PGNoYXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwogICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQgbG9uZz46Om1heCgpOwogICAgIGlmIChtX2RvY3VtZW50LT5mcmFt
ZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCkt
PmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgc3RvcmVkQ3JlZGVudGlhbHMsIGVy
cm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBtX2RvY3VtZW50LT5m
cmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCBtX29w
dGlvbnMuYWxsb3dDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIAogICAgIC8v
IE5vIGV4Y2VwdGlvbiBmb3IgZmlsZTovLy8gcmVzb3VyY2VzLCBzZWUgPHJkYXI6Ly9wcm9ibGVt
LzQ5NjIyOTg+LgogICAgIC8vIEFsc28sIGlmIHdlIGhhdmUgYW4gSFRUUCByZXNwb25zZSwgdGhl
biBpdCB3YXNuJ3QgYSBuZXR3b3JrIGVycm9yIGluIGZhY3QuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAkocmV2aXNpb24g
OTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTQgKzk3LDE0IEBACiAgICAgcmV0dXJuIGFsbG93
ZWRDcm9zc09yaWdpblJlc3BvbnNlSGVhZGVycy0+Y29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQg
dXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgYWxsb3dDcmVkZW50aWFscykKK3Zv
aWQgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93
Q3JlZGVudGlhbHMpCiB7CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwotICAgIHJl
cXVlc3Quc2V0QWxsb3dDb29raWVzKGFsbG93Q3JlZGVudGlhbHMpOworICAgIHJlcXVlc3Quc2V0
QWxsb3dDb29raWVzKGFsbG93Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscyk7
CiAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsK
IH0KIAotUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luLCBib29sIGFsbG93Q3JlZGVudGlhbHMpCitSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNj
ZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93
Q3JlZGVudGlhbHMpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QocmVx
dWVzdC51cmwoKSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocHJlZmxpZ2h0
UmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4sIGFsbG93Q3JlZGVudGlhbHMpOwpAQCAtMTMzLDEyICsx
MzMsMTIgQEAKICAgICByZXR1cm4gcHJlZmxpZ2h0UmVxdWVzdDsKIH0KIAotYm9vbCBwYXNzZXNB
Y2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wg
aW5jbHVkZUNyZWRlbnRpYWxzLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFN0cmlu
ZyYgZXJyb3JEZXNjcmlwdGlvbikKK2Jvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3Jl
ZGVudGlhbHMsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgU3RyaW5nJiBlcnJvckRl
c2NyaXB0aW9uKQogewogICAgIC8vIEEgd2lsZGNhcmQgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3Jp
Z2luIGNhbiBub3QgYmUgdXNlZCBpZiBjcmVkZW50aWFscyBhcmUgdG8gYmUgc2VudCwKICAgICAv
LyBldmVuIHdpdGggQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgc2V0IHRvIHRydWUu
CiAgICAgY29uc3QgU3RyaW5nJiBhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nID0gcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iKTsKLSAgICBpZiAo
YWNjZXNzQ29udHJvbE9yaWdpblN0cmluZyA9PSAiKiIgJiYgIWluY2x1ZGVDcmVkZW50aWFscykK
KyAgICBpZiAoYWNjZXNzQ29udHJvbE9yaWdpblN0cmluZyA9PSAiKiIgJiYgaW5jbHVkZUNyZWRl
bnRpYWxzID09IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscykKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBpZiAoc2VjdXJpdHlPcmlnaW4tPmlzVW5pcXVlKCkpIHsKQEAgLTE1Niw3ICsx
NTYsNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGluY2x1ZGVD
cmVkZW50aWFscykgeworICAgIGlmIChpbmNsdWRlQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRD
cmVkZW50aWFscykgewogICAgICAgICBjb25zdCBTdHJpbmcmIGFjY2Vzc0NvbnRyb2xDcmVkZW50
aWFsc1N0cmluZyA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQWNjZXNzLUNvbnRyb2wtQWxs
b3ctQ3JlZGVudGlhbHMiKTsKICAgICAgICAgaWYgKGFjY2Vzc0NvbnRyb2xDcmVkZW50aWFsc1N0
cmluZyAhPSAidHJ1ZSIpIHsKICAgICAgICAgICAgIGVycm9yRGVzY3JpcHRpb24gPSAiQ3JlZGVu
dGlhbHMgZmxhZyBpcyB0cnVlLCBidXQgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMg
aXMgbm90IFwidHJ1ZVwiLiI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAko
cmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsOSBAQAogI2luY2x1ZGUgIkljb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKKyNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE5vdGlmaWVy
LmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJUaHJlYWRhYmxlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cg==
</data>
<flag name="commit-queue"
          id="101345"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105260</attachid>
            <date>2011-08-25 15:26:53 -0700</date>
            <delta_ts>2011-08-26 09:32:52 -0700</delta_ts>
            <desc>Update Notification.cpp too</desc>
            <filename>enum2.txt</filename>
            <type>text/plain</type>
            <size>35277</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxM
b2FkZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsMTIgKzIyNiwx
MiBAQAogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOyAvLyBBbHdh
eXMgc2VuZCBjYWxsYmFja3MuCi0gICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBtX29wdGlvbnMu
c25pZmZDb250ZW50OwotICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IG1fb3B0aW9ucy5h
bGxvd0NyZWRlbnRpYWxzOworICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2Fs
bGJhY2tzOyAvLyBBbHdheXMgc2VuZCBjYWxsYmFja3MuCisgICAgb3B0aW9ucy5zbmlmZkNvbnRl
bnQgPSBtX29wdGlvbnMuc25pZmZDb250ZW50ID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNv
bnRlbnQ7CisgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9vcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzOwogICAgIG9wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID0gbV9vcHRpb25zLmZvcmNlUHJl
ZmxpZ2h0ID8gRm9yY2VQcmVmbGlnaHQgOiBDb25zaWRlclByZWZsaWdodDsKICAgICBvcHRpb25z
LmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeT4obV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7Ci0g
ICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gZmFsc2U7CisgICAgb3B0aW9ucy5zaG91bGRC
dWZmZXJEYXRhID0gRG9Ob3RCdWZmZXJEYXRhOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiB3ZWJjb3JlUmVxdWVzdCA9IHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKTsKICAgICBEb2N1
bWVudCogd2ViY29yZURvY3VtZW50ID0gbV9mcmFtZUltcGwtPmZyYW1lKCktPmRvY3VtZW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4MjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDExLTA4LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgVXNlIGVudW1zIGluc3RlYWQgb2YgYm9vbHMgZm9yIFRocmVhZGFibGVMb2FkZXJPcHRp
b25zCisgICAgICAgIHZhcmlhYmxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRlZFVSTExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSk6CisKIDIwMTEt
MDgtMjUgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEVu
YWJsZSBpbmNyZW1lbnRhbCBsaW5raW5nIGZvciBjb21wb25lbnQgYnVpbGQgb24gQ2hyb21pdW0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNyArMzY0LDYgQEAKIF9f
Wk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKIF9fWk43
V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyNnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlRXYKIF9f
Wk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9yRXYKLV9fWk43V2ViQ29y
ZTE0UmVzb3VyY2VMb2FkZXIxOXNldFNob3VsZEJ1ZmZlckRhdGFFYgogX19aTjdXZWJDb3JlMTRT
VkdTTUlMRWxlbWVudDEzaXNTTUlMRWxlbWVudEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxNFNj
aGVtZVJlZ2lzdHJ5MjRyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWxFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MjVyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlRVJL
TjNXVEY2U3RyaW5nRQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEwICs4NiwxMCBAQAogICAg
IHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOwotICAg
IG9wdGlvbnMuc25pZmZDb250ZW50ID0gZmFsc2U7CisgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxi
YWNrcyA9IFNlbmRDYWxsYmFja3M7CisgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNu
aWZmQ29udGVudDsKICAgICBvcHRpb25zLnByZWZsaWdodFBvbGljeSA9IENvbnNpZGVyUHJlZmxp
Z2h0OwotICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IHRydWU7CisgICAgb3B0aW9ucy5h
bGxvd0NyZWRlbnRpYWxzID0gQWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBvcHRpb25zLmNy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IERlbnlDcm9zc09yaWdpblJlcXVlc3RzOwogCiAgICAg
aWYgKG1fY2xpZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM4MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0w
OC0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5n
ZSBhIGJ1bmNoIG9mIG5vbmRlc2NyaXB0IGJvb2xzIHRvCisgICAgICAgIGRlc2NyaXB0aXZlIGVu
dW1zIGluIFJlc291cmNlTG9hZGVyT3B0aW9ucyBhbmQKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Njk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UgaW50ZW5kZWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAqIGh0bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oOgor
ICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9j
Zi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvbWFjL1Jlc291cmNl
TG9hZGVyTWFjLm1tOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KwogMjAxMS0wOC0yNSAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xpdmVpcmFAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSb2xsb3V0IHI5Mzc5OTogQ2F1c2VkIGJhZCBjbGlwcGluZyBvbiB0aGUg
Ym90dG9tIG9mIHRhbGwgZ2x5cGhzIGluc2lkZSBhIGJ1dHRvbiBsYWJlbApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxMCArMTEzLDEw
IEBACiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJMYXN0LUV2ZW50LUlEIiwg
bV9sYXN0RXZlbnRJZCk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwot
ICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOwotICAgIG9wdGlvbnMuc25pZmZD
b250ZW50ID0gZmFsc2U7Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gdHJ1ZTsKLSAg
ICBvcHRpb25zLnNob3VsZEJ1ZmZlckRhdGEgPSBmYWxzZTsKKyAgICBvcHRpb25zLnNlbmRMb2Fk
Q2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsKKyAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IERv
Tm90U25pZmZDb250ZW50OworICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHM7CisgICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gRG9Ob3RCdWZm
ZXJEYXRhOwogCiAgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBVU0UoU09VUCkKQEAgLTkxLDYgKzkwLDExIEBA
CiBjbGFzcyBTY2hlZHVsZVBhaXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKK2VudW0gU3RvcmVk
Q3JlZGVudGlhbHMgeworICAgIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsCisgICAgRG9Ob3RBbGxv
d1N0b3JlZENyZWRlbnRpYWxzCit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgVGlt
ZXI7CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VI
YW5kbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsOSBAQAogICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAKICAgICBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50
aWFscyA9IHRydWU7CisgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gQWxsb3dTdG9yZWRD
cmVkZW50aWFsczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IGNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeTsKLSAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gdHJ1
ZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsKIAogICAg
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGlj
X2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwg
KnRoaXMsIG9wdGlvbnMpOwogfQpAQCAtOTAsOSArOTAsOSBAQAogICAgICAgICByZXR1cm47CiAK
ICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuYWxsb3dD
cmVkZW50aWFscyA9IHRydWU7CisgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gQWxsb3dT
dG9yZWRDcmVkZW50aWFsczsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9
IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKLSAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID0gdHJ1ZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsK
IAogICAgIC8vIER1cmluZyBjcmVhdGUsIGNhbGxiYWNrcyBtYXkgaGFwcGVuIHdoaWNoIHJlbW92
ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QuCiAgICAgUmVmUHRyPFdvcmtlclNj
cmlwdExvYWRlcj4gcHJvdGVjdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAKICAgICAg
ICAgICAgIC8vIEluIGEgcGx1Z2luIGRvY3VtZW50LCB0aGUgbWFpbiByZXNvdXJjZSBpcyB0aGUg
cGx1Z2luLiBJZiB3ZSBoYXZlIGEgbnVsbCB3aWRnZXQsIHRoYXQgbWVhbnMKICAgICAgICAgICAg
IC8vIHRoZSBsb2FkaW5nIG9mIHRoZSBwbHVnaW4gd2FzIGNhbmNlbGxlZCwgd2hpY2ggZ2l2ZXMg
dXMgYSBudWxsIG1haW5SZXNvdXJjZUxvYWRlcigpLCBzbyB3ZQogICAgICAgICAgICAgLy8gbmVl
ZCB0byBoYXZlIHRoaXMgY2FsbCBpbiBhIG51bGwgY2hlY2sgb2YgdGhlIHdpZGdldCBvciBvZiBt
YWluUmVzb3VyY2VMb2FkZXIoKS4KLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNldFNob3VsZEJ1ZmZlckRh
dGEoZmFsc2UpOworICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVyRGF0YShEb05vdEJ1
ZmZlckRhdGEpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5jcHAJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmxvYWRlcigpLT5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVy
RGF0YShmYWxzZSk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+c2V0U2hvdWxkQnVmZmVyRGF0YShEb05vdEJ1ZmZlckRh
dGEpOwogfQogCiB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjYsOCArMTY2LDggQEAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgbV9z
dGF0ZSA9IExvYWRpbmc7CiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKLSAg
ICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gZmFsc2U7Ci0gICAgb3B0aW9ucy5zbmlmZkNv
bnRlbnQgPSBmYWxzZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9Ob3RTZW5k
Q2FsbGJhY2tzOworICAgIG9wdGlvbnMuc25pZmZDb250ZW50ID0gRG9Ob3RTbmlmZkNvbnRlbnQ7
CiAgICAgb3B0aW9ucy5wcmVmbGlnaHRQb2xpY3kgPSBDb25zaWRlclByZWZsaWdodDsKICAgICBv
cHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIG9w
dGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gQWxsb3dDcm9zc09yaWdpblJlcXVlc3Rz
OwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiA5Mzgy
MikKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1MCwxMCArNjUwLDEwIEBACiAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZp
ZWxkcyhtX3JlcXVlc3RIZWFkZXJzKTsKIAogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9w
dGlvbnM7Ci0gICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHRydWU7Ci0gICAgb3B0aW9u
cy5zbmlmZkNvbnRlbnQgPSBmYWxzZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0g
U2VuZENhbGxiYWNrczsKKyAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IERvTm90U25pZmZDb250
ZW50OwogICAgIG9wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID0gdXBsb2FkRXZlbnRzID8gRm9yY2VQ
cmVmbGlnaHQgOiBDb25zaWRlclByZWZsaWdodDsKLSAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlh
bHMgPSBtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IG1faW5jbHVkZUNyZWRlbnRpYWxzOworICAgIG9w
dGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IG1faW5jbHVk
ZUNyZWRlbnRpYWxzKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVk
Q3JlZGVudGlhbHM7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBVc2VB
Y2Nlc3NDb250cm9sOwogICAgIG9wdGlvbnMuc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdp
bigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0
aW9ucy5oCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlck9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDI3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKK2VudW0gU2VuZENhbGxiYWNrUG9saWN5IHsKKyAgICBT
ZW5kQ2FsbGJhY2tzLAorICAgIERvTm90U2VuZENhbGxiYWNrcworfTsKKworZW51bSBDb250ZW50
U25pZmZpbmdQb2xpY3kgeworICAgIFNuaWZmQ29udGVudCwKKyAgICBEb05vdFNuaWZmQ29udGVu
dAorfTsKKworZW51bSBEYXRhQnVmZmVyaW5nUG9saWN5IHsKKyAgICBCdWZmZXJEYXRhLAorICAg
IERvTm90QnVmZmVyRGF0YQorfTsKKwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyB7Ci0g
ICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKCkgOiBzZW5kTG9hZENhbGxiYWNrcyhmYWxzZSksIHNu
aWZmQ29udGVudChmYWxzZSksIHNob3VsZEJ1ZmZlckRhdGEodHJ1ZSkgeyB9Ci0gICAgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zKGJvb2wgc2VuZExvYWRDYWxsYmFja3NBcmcsIGJvb2wgc25pZmZDb250
ZW50QXJnLCBib29sIHNob3VsZEJ1ZmZlckRhdGFBcmcpIDogc2VuZExvYWRDYWxsYmFja3Moc2Vu
ZExvYWRDYWxsYmFja3NBcmcpLCBzbmlmZkNvbnRlbnQoc25pZmZDb250ZW50QXJnKSwgc2hvdWxk
QnVmZmVyRGF0YShzaG91bGRCdWZmZXJEYXRhQXJnKSB7IH0KLSAgICBib29sIHNlbmRMb2FkQ2Fs
bGJhY2tzOwotICAgIGJvb2wgc25pZmZDb250ZW50OwotICAgIGJvb2wgc2hvdWxkQnVmZmVyRGF0
YTsKKyAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKERvTm90
U2VuZENhbGxiYWNrcyksIHNuaWZmQ29udGVudChEb05vdFNuaWZmQ29udGVudCksIHNob3VsZEJ1
ZmZlckRhdGEoQnVmZmVyRGF0YSkgeyB9CisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRD
YWxsYmFja1BvbGljeSBzZW5kTG9hZENhbGxiYWNrc0FyZywgQ29udGVudFNuaWZmaW5nUG9saWN5
IHNuaWZmQ29udGVudEFyZywgRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhQXJn
KSA6IHNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRMb2FkQ2FsbGJhY2tzQXJnKSwgc25pZmZDb250ZW50
KHNuaWZmQ29udGVudEFyZyksIHNob3VsZEJ1ZmZlckRhdGEoc2hvdWxkQnVmZmVyRGF0YUFyZykg
eyB9CisgICAgU2VuZENhbGxiYWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzOworICAgIENvbnRl
bnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRlbnQ7CisgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBz
aG91bGRCdWZmZXJEYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQkocmV2
aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgIC8vIEZJWE1F
OiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2Rl
IHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2Rh
eSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGlu
IHByYWN0aWNlLgogICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9j
YWwgZmlsZS4KLSAgICAgICAgaWYgKG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyAmJiBtX2Zy
YW1lKQorICAgICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxs
YmFja3MgJiYgbV9mcmFtZSkKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkt
PmRpZFJlY2VpdmVEYXRhKHRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0
YUdldEJ5dGVQdHIoZGF0YSkpLCBkYXRhTGVuLCBkYXRhTGVuKTsKICAgICB9CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBACiBib29sIENhY2hlZFJlc291
cmNlOjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uOwotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2sobV9yZXNwb25zZSwgcmVzb3VyY2VSZXF1ZXN0KCku
YWxsb3dDb29raWVzKCksIHNlY3VyaXR5T3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKG1fcmVzcG9uc2UsIHJlc291
cmNlUmVxdWVzdCgpLmFsbG93Q29va2llcygpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERv
Tm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRp
b24pOwogfQogCiBib29sIENhY2hlZFJlc291cmNlOjppc0V4cGlyZWQoKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw4ICsxMjQs
OCBAQAogICAgIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5ID0gcmVzb3VyY2UtPmxvYWRQ
cmlvcml0eSgpOwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShwcmlvcml0eSk7CiAK
LSAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVk
dWxlcigpLT5zY2hlZHVsZVN1YnJlc291cmNlTG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSwKLSAgICAgICAgcmVxdWVzdC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0
LCBwcmlvcml0eSwgc2VjdXJpdHlDaGVjaywgUmVzb3VyY2VMb2FkZXJPcHRpb25zKHNlbmRSZXNv
dXJjZUxvYWRDYWxsYmFja3MsIHRydWUsIHRydWUpKTsKKyAgICBSZWZQdHI8U3VicmVzb3VyY2VM
b2FkZXI+IGxvYWRlciA9IHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zY2hlZHVsZVN1YnJlc291
cmNlTG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgcmVxdWVz
dC5nZXQoKSwgcmVzb3VyY2VSZXF1ZXN0LCBwcmlvcml0eSwgc2VjdXJpdHlDaGVjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoc2VuZFJlc291
cmNlTG9hZENhbGxiYWNrcyA/IFNlbmRDYWxsYmFja3MgOiBEb05vdFNlbmRDYWxsYmFja3MsIFNu
aWZmQ29udGVudCwgQnVmZmVyRGF0YSkpOwogICAgIGlmICghbG9hZGVyIHx8IGxvYWRlci0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAvLyBGSVhNRTogV2hhdCBpZiByZXNvdXJj
ZXMgaW4gb3RoZXIgZnJhbWVzIHdlcmUgd2FpdGluZyBmb3IgdGhpcyByZXZhbGlkYXRpb24/CiAg
ICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5ub3Qgc3RhcnQgbG9hZGluZyAnJXMnIiwg
cmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJ
KHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIoRnJhbWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNs
aWVudCogY2xpZW50KQotICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVy
T3B0aW9ucyh0cnVlLCB0cnVlLCB0cnVlKSkKKyAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBEb05vdEJ1
ZmZlckRhdGEpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewogfQpAQCAtNDgsNyArNDgsNiBA
QAogUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmNyZWF0ZShGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAg
ICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxvYWRlcihhZG9wdFJlZihuZXcg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIoZnJhbWUsIGNsaWVudCkpKTsKLSAgICBsb2FkZXIt
PnNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOwogICAgIGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+YWRkUGx1Z0luU3RyZWFtTG9hZGVyKGxvYWRlci5nZXQoKSk7CiAgICAgaWYgKCFsb2FkZXIt
PmluaXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAkocmV2aXNpb24gOTM4MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sX2gKICNkZWZpbmUgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sX2gKIAorI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDEsMTAgKzQyLDEwIEBACiBib29sIGlzT25BY2Nlc3ND
b250cm9sU2ltcGxlUmVxdWVzdEhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpOwogYm9vbCBpc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVhZGVy
V2hpdGVsaXN0KGNvbnN0IFN0cmluZyYpOwogCi12b2lkIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3ND
b250cm9sKFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd0NyZWRl
bnRpYWxzKTsKLVJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdpbiosIGJvb2wgYWxsb3dD
cmVkZW50aWFscyk7Cit2b2lkIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKFJlc291cmNl
UmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luKiwgU3RvcmVkQ3JlZGVudGlhbHMpOworUmVzb3VyY2VS
ZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luKiwgU3RvcmVkQ3JlZGVudGlhbHMpOwogCi1ib29sIHBh
c3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCBpbmNs
dWRlQ3JlZGVudGlhbHMsIFNlY3VyaXR5T3JpZ2luKiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9u
KTsKK2Jvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBTdG9yZWRDcmVkZW50aWFscywgU2VjdXJpdHlPcmlnaW4qLCBTdHJpbmcmIGVycm9yRGVzY3Jp
cHRpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaAko
cmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVm
aW5lIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVfaAogCiAjaW5jbHVkZSAiS1VSTEhh
c2guaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgpAQCAtNDEsNyArNDIsNyBAQAogICAgIGNsYXNzIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGVJdGVtIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW0pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6Ci0gICAgICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtKGJvb2wgY3Jl
ZGVudGlhbHMpCisgICAgICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtKFN0
b3JlZENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzKQogICAgICAgICAgICAgOiBtX2Fic29sdXRlRXhw
aXJ5VGltZSgwKQogICAgICAgICAgICAgLCBtX2NyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKQogICAg
ICAgICB7CkBAIC01MCw3ICs1MSw3IEBACiAgICAgICAgIGJvb2wgcGFyc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbik7CiAgICAgICAgIGJvb2wgYWxs
b3dzQ3Jvc3NPcmlnaW5NZXRob2QoY29uc3QgU3RyaW5nJiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0
aW9uKSBjb25zdDsKICAgICAgICAgYm9vbCBhbGxvd3NDcm9zc09yaWdpbkhlYWRlcnMoY29uc3Qg
SFRUUEhlYWRlck1hcCYsIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbikgY29uc3Q7Ci0gICAgICAg
IGJvb2wgYWxsb3dzUmVxdWVzdChib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBhbGxvd3NSZXF1ZXN0KFN0b3JlZENyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPiBIZWFkZXJzU2V0OwpAQCAtNTksNyArNjAsNyBAQAogICAgICAgICAvLyB0byBzdGFydCBh
IHRpbWVyIGZvciB0aGUgZXhwaXJhdGlvbiBkZWx0YSB0aGF0IHJlbW92ZXMgdGhpcyBmcm9tIHRo
ZSBjYWNoZSB3aGVuCiAgICAgICAgIC8vIGl0IGZpcmVzLgogICAgICAgICBkb3VibGUgbV9hYnNv
bHV0ZUV4cGlyeVRpbWU7Ci0gICAgICAgIGJvb2wgbV9jcmVkZW50aWFsczsKKyAgICAgICAgU3Rv
cmVkQ3JlZGVudGlhbHMgbV9jcmVkZW50aWFsczsKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1f
bWV0aG9kczsKICAgICAgICAgSGVhZGVyc1NldCBtX2hlYWRlcnM7CiAgICAgfTsKQEAgLTcwLDcg
KzcxLDcgQEAKICAgICAgICAgc3RhdGljIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUm
IHNoYXJlZCgpOwogCiAgICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGVJdGVtPik7Ci0gICAgICAgIGJvb2wgY2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgS1VSTCYsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpOworICAgICAgICBi
b29sIGNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmLCBT
dG9yZWRDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIHJlcXVlc3RIZWFkZXJzKTsKIAogICAgICAgICB2b2lkIGVtcHR5KCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHJl
dmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1Jlc291cmNlTG9hZGVy
Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewotICAgIGlmICghbV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzKQorICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gRG9O
b3RTZW5kQ2FsbGJhY2tzKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIENGVVJMUmVzcG9uc2VS
ZWYgcmVzcG9uc2UgPSBDRkNhY2hlZFVSTFJlc3BvbnNlR2V0V3JhcHBlZFJlc3BvbnNlKGNhY2hl
ZFJlc3BvbnNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAKICAgICB9CiAKICAgICBp
ZiAoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpCi0gICAgICAgIG1faGFuZGxlID0gUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZShtX2ZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKSwgbV9y
ZXF1ZXN0LCB0aGlzLCBtX2RlZmVyc0xvYWRpbmcsIG1fb3B0aW9ucy5zbmlmZkNvbnRlbnQpOwor
ICAgICAgICBtX2hhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUobV9mcmFtZS0+bG9hZGVy
KCktPm5ldHdvcmtpbmdDb250ZXh0KCksIG1fcmVxdWVzdCwgdGhpcywgbV9kZWZlcnNMb2FkaW5n
LCBtX29wdGlvbnMuc25pZmZDb250ZW50ID09IFNuaWZmQ29udGVudCk7CiB9CiAKIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkBAIC0xODIsNyArMTgy
LDcgQEAKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkZXI6OnNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCBzaG91bGRCdWZmZXJEYXRhKQordm9pZCBS
ZXNvdXJjZUxvYWRlcjo6c2V0U2hvdWxkQnVmZmVyRGF0YShEYXRhQnVmZmVyaW5nUG9saWN5IHNo
b3VsZEJ1ZmZlckRhdGEpCiB7IAogICAgIG1fb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gc2hv
dWxkQnVmZmVyRGF0YTsgCiAKQEAgLTE5NCw3ICsxOTQsNyBAQAogCiB2b2lkIFJlc291cmNlTG9h
ZGVyOjphZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGJvb2wgYWxsQXRPbmNl
KQogewotICAgIGlmICghbV9vcHRpb25zLnNob3VsZEJ1ZmZlckRhdGEpCisgICAgaWYgKG1fb3B0
aW9ucy5zaG91bGRCdWZmZXJEYXRhID09IERvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGFsbEF0T25jZSkgewpAQCAtMjM0LDcgKzIzNCw3IEBACiAKICAgICBBU1NF
UlQoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwogCi0gICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9h
ZENhbGxiYWNrcykgeworICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrcykgewogICAgICAgICBpZiAoIW1faWRlbnRpZmllcikgewogICAgICAgICAgICAg
bV9pZGVudGlmaWVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJ
ZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5hc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVy
KCksIHJlcXVlc3QpOwpAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgaWYgKEZvcm1EYXRhKiBkYXRh
ID0gbV9yZXF1ZXN0Lmh0dHBCb2R5KCkpCiAgICAgICAgIGRhdGEtPnJlbW92ZUdlbmVyYXRlZEZp
bGVzSWZOZWVkZWQoKTsKICAgICAgICAgCi0gICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxi
YWNrcykKKyAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFj
a3MpCiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZFJlY2VpdmVSZXNwb25z
ZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIApAQCAtMzAzLDEzICszMDMsMTMgQEAKICAgICAvLyBG
SVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMg
Y29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2Rh
eSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGlu
IHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBm
aWxlLgotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgJiYgbV9mcmFtZSkKKyAg
ICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja3MgJiYgbV9m
cmFtZSkKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlkUmVjZWl2ZURhdGEo
dGhpcywgZGF0YSwgbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7
CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTdG9wQnVmZmVyaW5nRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIGlmICghbV9vcHRpb25zLnNob3VsZEJ1ZmZl
ckRhdGEpCisgICAgaWYgKG1fb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID09IERvTm90QnVmZmVy
RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX3Jlc291cmNlRGF0YSk7CkBA
IC0zMzcsNyArMzM3LDcgQEAKICAgICBpZiAobV9jYWxsZWREaWRGaW5pc2hMb2FkKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9jYWxsZWREaWRGaW5pc2hMb2FkID0gdHJ1ZTsKLSAgICBpZiAobV9v
cHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzKQorICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrcykKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS0+ZGlkRmluaXNoTG9hZCh0aGlzLCBmaW5pc2hUaW1lKTsKIH0KIApAQCAtMzU0LDcgKzM1NCw3
IEBACiAgICAgaWYgKEZvcm1EYXRhKiBkYXRhID0gbV9yZXF1ZXN0Lmh0dHBCb2R5KCkpCiAgICAg
ICAgIGRhdGEtPnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWVkZWQoKTsKIAotICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgJiYgIW1fY2FsbGVkRGlkRmluaXNoTG9hZCkKKyAgICBp
ZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja3MgJiYgIW1fY2Fs
bGVkRGlkRmluaXNoTG9hZCkKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlk
RmFpbFRvTG9hZCh0aGlzLCBlcnJvcik7CiAKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CkBAIC00
MDIsNyArNDAyLDcgQEAKICAgICAgICAgICAgIG1faGFuZGxlID0gMDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgJiYgbV9pZGVudGlmaWVyICYm
ICFtX2NhbGxlZERpZEZpbmlzaExvYWQpCisgICAgICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRD
YWxsYmFja3MgPT0gU2VuZENhbGxiYWNrcyAmJiBtX2lkZW50aWZpZXIgJiYgIW1fY2FsbGVkRGlk
RmluaXNoTG9hZCkKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZh
aWxUb0xvYWQodGhpcywgbm9uTnVsbEVycm9yKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1haW5SZXNvdXJj
ZUxvYWRlcjo6TWFpblJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSkKLSAgICA6IFJlc291cmNl
TG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnModHJ1ZSwgdHJ1ZSwgdHJ1ZSkpCisg
ICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxs
YmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSkpCiAgICAgLCBtX2RhdGFMb2FkVGltZXIo
dGhpcywgJk1haW5SZXNvdXJjZUxvYWRlcjo6aGFuZGxlRGF0YUxvYWROb3cpCiAgICAgLCBtX2xv
YWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNlKQogICAgICwgbV93YWl0aW5nRm9yQ29udGVudFBv
bGljeShmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAJKHJldmlzaW9uIDkzODIyKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTIgKzEzNSwxMiBAQAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjphbGxvd3NSZXF1
ZXN0KGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
SFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpIGNvbnN0Citib29sIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjphbGxvd3NSZXF1ZXN0KFN0b3JlZENyZWRlbnRpYWxzIGlu
Y2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIHJlcXVlc3RIZWFkZXJzKSBjb25zdAogewogICAgIFN0cmluZyBpZ25vcmVkRXhwbGFuYXRp
b247CiAgICAgaWYgKG1fYWJzb2x1dGVFeHBpcnlUaW1lIDwgY3VycmVudFRpbWUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpbmNsdWRlQ3JlZGVudGlhbHMgJiYgIW1fY3JlZGVu
dGlhbHMpCisgICAgaWYgKGluY2x1ZGVDcmVkZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzICYmIG1fY3JlZGVudGlhbHMgPT0gRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFhbGxvd3NDcm9zc09yaWdpbk1ldGhvZChtZXRo
b2QsIGlnbm9yZWRFeHBsYW5hdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2Nyw3
ICsxNjcsNyBAQAogICAgIH0KIH0KIAotYm9vbCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlOjpjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiB1
cmwsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
SFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpCitib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IEtVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHMgaW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dEhhc2hNYXA6Oml0ZXJhdG9yIGNhY2hlSXQgPSBtX3ByZWZsaWdodEhhc2hNYXAuZmluZChzdGQ6
Om1ha2VfcGFpcihvcmlnaW4sIHVybCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAkocmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAKIHB1YmxpYzoKICAgICBmcmllbmQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2Fk
ZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGll
bnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291
cmNlTG9hZFByaW9yaXR5TG93LCBTZWN1cml0eUNoZWNrUG9saWN5ID0gRG9TZWN1cml0eUNoZWNr
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zKHRy
dWUsIHRydWUsIHRydWUpKTsKKyAgICBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBzY2hl
ZHVsZVN1YnJlc291cmNlTG9hZChGcmFtZSosIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50KiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eUxvdywgU2VjdXJpdHlDaGVja1BvbGljeSA9IERvU2VjdXJpdHlDaGVjaywgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJiA9IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJh
Y2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEpKTsKICAgICBQYXNzUmVmUHRyPE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZvaWQgYWRkTWFpblJlc291cmNlTG9hZChSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQg
cmVtb3ZlKFJlc291cmNlTG9hZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaAkocmV2aXNpb24gOTM4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBACiAKICAgICAg
ICAgYm9vbCByZWFjaGVkVGVybWluYWxTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhY2hlZFRl
cm1pbmFsU3RhdGU7IH0KIAotICAgICAgICB2b2lkIHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCBz
aG91bGRCdWZmZXJEYXRhKTsKKyAgICAgICAgdm9pZCBzZXRTaG91bGRCdWZmZXJEYXRhKERhdGFC
dWZmZXJpbmdQb2xpY3kpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBSZXNvdXJjZUxvYWRl
cihGcmFtZSosIFJlc291cmNlTG9hZGVyT3B0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9UaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDkzODIyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogI2lmbmRlZiBUaHJlYWRhYmxlTG9hZGVyX2gKICNkZWZpbmUgVGhyZWFkYWJsZUxvYWRl
cl9oCiAKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CkBAIC00NSwxMSArNDYsNiBAQAogICAgIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50OwotCi0gICAgZW51bSBTdG9yZWRDcmVkZW50aWFscyB7Ci0gICAg
ICAgIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsCi0gICAgICAgIERvTm90QWxsb3dTdG9yZWRDcmVk
ZW50aWFscwotICAgIH07CiAgICAgCiAgICAgZW51bSBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kg
ewogICAgICAgICBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cywKQEAgLTY0LDggKzYwLDggQEAKICAg
ICB9OwogCiAgICAgc3RydWN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zIDogcHVibGljIFJlc291
cmNlTG9hZGVyT3B0aW9ucyB7Ci0gICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zKCkgOiBh
bGxvd0NyZWRlbnRpYWxzKGZhbHNlKSwgcHJlZmxpZ2h0UG9saWN5KENvbnNpZGVyUHJlZmxpZ2h0
KSwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KERlbnlDcm9zc09yaWdpblJlcXVlc3RzKSB7IH0K
LSAgICAgICAgYm9vbCBhbGxvd0NyZWRlbnRpYWxzOyAgLy8gV2hldGhlciBIVFRQIGNyZWRlbnRp
YWxzIGFuZCBjb29raWVzIGFyZSBzZW50IHdpdGggdGhlIHJlcXVlc3QuCisgICAgICAgIFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zKCkgOiBhbGxvd0NyZWRlbnRpYWxzKERvTm90QWxsb3dTdG9yZWRD
cmVkZW50aWFscyksIHByZWZsaWdodFBvbGljeShDb25zaWRlclByZWZsaWdodCksIGNyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeShEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgeyB9CisgICAgICAgIFN0
b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHM7IC8vIFdoZXRoZXIgSFRUUCBjcmVkZW50
aWFscyBhbmQgY29va2llcyBhcmUgc2VudCB3aXRoIHRoZSByZXF1ZXN0LgogICAgICAgICBQcmVm
bGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5OyAvLyBJZiBBY2Nlc3NDb250cm9sIGlzIHVzZWQs
IGhvdyB0byBkZXRlcm1pbmUgaWYgYSBwcmVmbGlnaHQgaXMgbmVlZGVkLgogICAgICAgICBDcm9z
c09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5OwogICAgICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBA
QAogCiAgICAgICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBtX2VsZW1lbnQtPmZhc3RHZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpOwogICAgICAgICBpZiAoIWNyb3Nz
T3JpZ2luTW9kZS5pc051bGwoKSkgewotICAgICAgICAgICAgYm9vbCBhbGxvd0NyZWRlbnRpYWxz
ID0gZXF1YWxJZ25vcmluZ0Nhc2UoY3Jvc3NPcmlnaW5Nb2RlLCAidXNlLWNyZWRlbnRpYWxzIik7
CisgICAgICAgICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzID0gZXF1YWxJ
Z25vcmluZ0Nhc2UoY3Jvc3NPcmlnaW5Nb2RlLCAidXNlLWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgICAgICAg
ICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdCwgZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCksIGFsbG93Q3JlZGVudGlhbHMpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCShy
ZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9hZGVyIHx8ICFtX2xvYWRlcik7CiAK
LSAgICBpZiAoIW1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKSB7CisgICAgaWYgKG1fb3B0aW9u
cy5hbGxvd0NyZWRlbnRpYWxzID09IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscykgewogICAg
ICAgICBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9IGZhbHNlOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zNDUsMTAgKzM0NSwxMCBAQAogICAgICAgICBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyBvcHRpb25zID0gbV9vcHRpb25zOwogICAgICAgICBpZiAobV9hY3R1YWxSZXF1
ZXN0KSB7CiAgICAgICAgICAgICAvLyBEb24ndCBzbmlmZiBjb250ZW50IG9yIHNlbmQgbG9hZCBj
YWxsYmFja3MgZm9yIHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KLSAgICAgICAgICAgIG9wdGlvbnMu
c2VuZExvYWRDYWxsYmFja3MgPSBmYWxzZTsKLSAgICAgICAgICAgIG9wdGlvbnMuc25pZmZDb250
ZW50ID0gZmFsc2U7CisgICAgICAgICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gRG9O
b3RTZW5kQ2FsbGJhY2tzOworICAgICAgICAgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05v
dFNuaWZmQ29udGVudDsKICAgICAgICAgICAgIC8vIEtlZXAgYnVmZmVyaW5nIHRoZSBkYXRhIGZv
ciB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCi0gICAgICAgICAgICBvcHRpb25zLnNob3VsZEJ1ZmZl
ckRhdGEgPSB0cnVlOworICAgICAgICAgICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gQnVm
ZmVyRGF0YTsKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTM2OCwxNCAr
MzY4LDEyIEBACiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVz
dHMuCi0gICAgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMgPSBtX29wdGlvbnMu
YWxsb3dDcmVkZW50aWFscyA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHM7Ci0KICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKICAgICBSZXNvdXJjZUVy
cm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPjo6bWF4
KCk7CiAgICAgaWYgKG1fZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBt
X2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShy
ZXF1ZXN0LCBzdG9yZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICAg
ICAgaWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLCBlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpOwogCiAgICAgLy8gTm8gZXhjZXB0aW9uIGZvciBmaWxlOi8vLyBy
ZXNvdXJjZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2MjI5OD4uCiAgICAgLy8gQWxzbywgaWYg
d2UgaGF2ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0IHdhc24ndCBhIG5ldHdvcmsgZXJyb3Ig
aW4gZmFjdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuY3BwCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nywx
NCArOTcsMTQgQEAKICAgICByZXR1cm4gYWxsb3dlZENyb3NzT3JpZ2luUmVzcG9uc2VIZWFkZXJz
LT5jb250YWlucyhuYW1lKTsKIH0KIAotdm9pZCB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJv
bChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgYm9vbCBhbGxvd0NyZWRlbnRpYWxzKQordm9pZCB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29u
dHJvbChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbiwgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscykKIHsKICAgICByZXF1ZXN0
LnJlbW92ZUNyZWRlbnRpYWxzKCk7Ci0gICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMoYWxsb3dD
cmVkZW50aWFscyk7CisgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMoYWxsb3dDcmVkZW50aWFs
cyA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICByZXF1ZXN0LnNldEhUVFBPcmlnaW4o
c2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkpOwogfQogCi1SZXNvdXJjZVJlcXVlc3QgY3JlYXRl
QWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGJvb2wgYWxsb3dDcmVkZW50aWFs
cykKK1Jlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbiwgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscykKIHsKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LnVybCgpKTsKICAgICB1cGRhdGVSZXF1
ZXN0Rm9yQWNjZXNzQ29udHJvbChwcmVmbGlnaHRSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbiwgYWxs
b3dDcmVkZW50aWFscyk7CkBAIC0xMzMsMTIgKzEzMywxMiBAQAogICAgIHJldHVybiBwcmVmbGln
aHRSZXF1ZXN0OwogfQogCi1ib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKQorYm9vbCBw
YXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFN0b3JlZENyZWRlbnRpYWxzIGluY2x1ZGVDcmVkZW50aWFscywgU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luLCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCiB7CiAgICAgLy8gQSB3aWxk
Y2FyZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gY2FuIG5vdCBiZSB1c2VkIGlmIGNyZWRl
bnRpYWxzIGFyZSB0byBiZSBzZW50LAogICAgIC8vIGV2ZW4gd2l0aCBBY2Nlc3MtQ29udHJvbC1B
bGxvdy1DcmVkZW50aWFscyBzZXQgdG8gdHJ1ZS4KICAgICBjb25zdCBTdHJpbmcmIGFjY2Vzc0Nv
bnRyb2xPcmlnaW5TdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkFjY2Vzcy1Db250
cm9sLUFsbG93LU9yaWdpbiIpOwotICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nID09
ICIqIiAmJiAhaW5jbHVkZUNyZWRlbnRpYWxzKQorICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2lu
U3RyaW5nID09ICIqIiAmJiBpbmNsdWRlQ3JlZGVudGlhbHMgPT0gRG9Ob3RBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChzZWN1cml0eU9yaWdp
bi0+aXNVbmlxdWUoKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBACiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoaW5jbHVkZUNyZWRlbnRpYWxzKSB7CisgICAgaWYgKGluY2x1
ZGVDcmVkZW50aWFscyA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSB7CiAgICAgICAgIGNvbnN0
IFN0cmluZyYgYWNjZXNzQ29udHJvbENyZWRlbnRpYWxzU3RyaW5nID0gcmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyIpOwogICAgICAgICBp
ZiAoYWNjZXNzQ29udHJvbENyZWRlbnRpYWxzU3RyaW5nICE9ICJ0cnVlIikgewogICAgICAgICAg
ICAgZXJyb3JEZXNjcmlwdGlvbiA9ICJDcmVkZW50aWFscyBmbGFnIGlzIHRydWUsIGJ1dCBBY2Nl
c3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyBpcyBub3QgXCJ0cnVlXCIuIjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA5MzgyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw5ICszOCw5
IEBACiAjaW5jbHVkZSAiSWNvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29uVVJMLmgiCiAj
aW5jbHVkZSAiUG9saWN5Q2hlY2tlci5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRl
ci5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105363</attachid>
            <date>2011-08-26 09:32:57 -0700</date>
            <delta_ts>2011-08-26 10:41:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66984-20110826093256.patch</filename>
            <type>text/plain</type>
            <size>37704</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzODgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDgtMjUgIE5hdGUgQ2hh
cGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgYSBidW5jaCBvZiBu
b25kZXNjcmlwdCBib29scyB0bworICAgICAgICBkZXNjcmlwdGl2ZSBlbnVtcyBpbiBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgYW5kCisgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5v
IGZ1bmN0aW9uYWxpdHkgY2hhbmdlIGludGVuZGVkLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKiBo
dG1sL01lZGlhRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3Bw
OgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHA6CisgICAgICAgICogbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9NYWlu
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5o
OgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA6CisgICAgICAgICogbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisKIDIwMTEtMDgtMjYgIEFs
ZXhlaSBTdml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21p
dW0gTWFjOiBVc2UgYSBjdXN0b20gcGF0dGVybiBpbWFnZSBmb3IgcnViYmVyIGJhbmRpbmcgb3Zl
cmhhbmcgYXJlYQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDkzODgwKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM2NCw3ICsz
NjQsNiBAQCBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uQzFFUE5TXzVGcmFtCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmluZ0V2CiBfX1pON1dlYkNv
cmUxNFJlc291cmNlSGFuZGxlMjZzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZUV2CiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2Ci1fX1pON1dlYkNvcmUxNFJl
c291cmNlTG9hZGVyMTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKIF9fWk43V2ViQ29yZTE0U1ZHU01J
TEVsZW1lbnQxM2lzU01JTEVsZW1lbnRFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlMTRTY2hlbWVS
ZWdpc3RyeTI0cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI1cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZUVSS04zV1RG
NlN0cmluZ0UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5Mzg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
CiAjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKICNpbmNsdWRlICJOUFY4T2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCShyZXZpc2lvbiA5Mzg4MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEwICs4
NiwxMCBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1CiAgICAgcmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKIAogICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
IG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHRydWU7Ci0gICAgb3B0
aW9ucy5zbmlmZkNvbnRlbnQgPSBmYWxzZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID0gU2VuZENhbGxiYWNrczsKKyAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IERvTm90U25pZmZD
b250ZW50OwogICAgIG9wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID0gQ29uc2lkZXJQcmVmbGlnaHQ7
Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gdHJ1ZTsKKyAgICBvcHRpb25zLmFsbG93
Q3JlZGVudGlhbHMgPSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIG9wdGlvbnMuY3Jvc3NP
cmlnaW5SZXF1ZXN0UG9saWN5ID0gRGVueUNyb3NzT3JpZ2luUmVxdWVzdHM7CiAKICAgICBpZiAo
bV9jbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAJKHJldmlz
aW9uIDkzODgwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlRG9jdW1lbnQKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBm
cmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRl
cigpLT5zZXRTaG91bGRCdWZmZXJEYXRhKGZhbHNlKTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpLT5zZXRTaG91bGRCdWZm
ZXJEYXRhKERvTm90QnVmZmVyRGF0YSk7CiB9CiAKIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6
YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDkzODgwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMiw3ICsxMzIsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhE
CiAgICAgICAgICAgICAvLyBJbiBhIHBsdWdpbiBkb2N1bWVudCwgdGhlIG1haW4gcmVzb3VyY2Ug
aXMgdGhlIHBsdWdpbi4gSWYgd2UgaGF2ZSBhIG51bGwgd2lkZ2V0LCB0aGF0IG1lYW5zCiAgICAg
ICAgICAgICAvLyB0aGUgbG9hZGluZyBvZiB0aGUgcGx1Z2luIHdhcyBjYW5jZWxsZWQsIHdoaWNo
IGdpdmVzIHVzIGEgbnVsbCBtYWluUmVzb3VyY2VMb2FkZXIoKSwgc28gd2UKICAgICAgICAgICAg
IC8vIG5lZWQgdG8gaGF2ZSB0aGlzIGNhbGwgaW4gYSBudWxsIGNoZWNrIG9mIHRoZSB3aWRnZXQg
b3Igb2YgbWFpblJlc291cmNlTG9hZGVyKCkuCi0gICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkt
PmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZUxvYWRlcigpLT5zZXRTaG91bGRC
dWZmZXJEYXRhKGZhbHNlKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCktPnNldFNob3VsZEJ1ZmZlckRhdGEo
RG9Ob3RCdWZmZXJEYXRhKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9u
IDkzODgwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDE0ICs5NywxNCBAQCBib29sIGlzT25BY2Nlc3ND
b250cm9sUmVzcG9uc2VIZWFkZXJXaGl0CiAgICAgcmV0dXJuIGFsbG93ZWRDcm9zc09yaWdpblJl
c3BvbnNlSGVhZGVycy0+Y29udGFpbnMobmFtZSk7CiB9CiAKLXZvaWQgdXBkYXRlUmVxdWVzdEZv
ckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIGJvb2wgYWxsb3dDcmVkZW50aWFscykKK3ZvaWQgdXBkYXRlUmVxdWVz
dEZvckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMpCiB7
CiAgICAgcmVxdWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwotICAgIHJlcXVlc3Quc2V0QWxsb3dD
b29raWVzKGFsbG93Q3JlZGVudGlhbHMpOworICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKGFs
bG93Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAgICAgcmVxdWVzdC5z
ZXRIVFRQT3JpZ2luKHNlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpKTsKIH0KIAotUmVzb3VyY2VS
ZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBib29sIGFs
bG93Q3JlZGVudGlhbHMpCitSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNjZXNzQ29udHJvbFByZWZs
aWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMpCiB7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QocmVxdWVzdC51cmwoKSk7CiAg
ICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocHJlZmxpZ2h0UmVxdWVzdCwgc2VjdXJp
dHlPcmlnaW4sIGFsbG93Q3JlZGVudGlhbHMpOwpAQCAtMTMzLDEyICsxMzMsMTIgQEAgUmVzb3Vy
Y2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbAogICAgIHJldHVybiBwcmVmbGlnaHRS
ZXF1ZXN0OwogfQogCi1ib29sIHBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKQorYm9vbCBwYXNz
ZXNBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFN0
b3JlZENyZWRlbnRpYWxzIGluY2x1ZGVDcmVkZW50aWFscywgU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luLCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pCiB7CiAgICAgLy8gQSB3aWxkY2Fy
ZCBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4gY2FuIG5vdCBiZSB1c2VkIGlmIGNyZWRlbnRp
YWxzIGFyZSB0byBiZSBzZW50LAogICAgIC8vIGV2ZW4gd2l0aCBBY2Nlc3MtQ29udHJvbC1BbGxv
dy1DcmVkZW50aWFscyBzZXQgdG8gdHJ1ZS4KICAgICBjb25zdCBTdHJpbmcmIGFjY2Vzc0NvbnRy
b2xPcmlnaW5TdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9s
LUFsbG93LU9yaWdpbiIpOwotICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3RyaW5nID09ICIq
IiAmJiAhaW5jbHVkZUNyZWRlbnRpYWxzKQorICAgIGlmIChhY2Nlc3NDb250cm9sT3JpZ2luU3Ry
aW5nID09ICIqIiAmJiBpbmNsdWRlQ3JlZGVudGlhbHMgPT0gRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChzZWN1cml0eU9yaWdpbi0+
aXNVbmlxdWUoKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgcGFzc2VzQWNjZXNzQ29udHJv
bENoZWNrKGNvbnN0IFJlc28KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlm
IChpbmNsdWRlQ3JlZGVudGlhbHMpIHsKKyAgICBpZiAoaW5jbHVkZUNyZWRlbnRpYWxzID09IEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBhY2Nlc3NDb250
cm9sQ3JlZGVudGlhbHNTdHJpbmcgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkFjY2Vzcy1D
b250cm9sLUFsbG93LUNyZWRlbnRpYWxzIik7CiAgICAgICAgIGlmIChhY2Nlc3NDb250cm9sQ3Jl
ZGVudGlhbHNTdHJpbmcgIT0gInRydWUiKSB7CiAgICAgICAgICAgICBlcnJvckRlc2NyaXB0aW9u
ID0gIkNyZWRlbnRpYWxzIGZsYWcgaXMgdHJ1ZSwgYnV0IEFjY2Vzcy1Db250cm9sLUFsbG93LUNy
ZWRlbnRpYWxzIGlzIG5vdCBcInRydWVcIi4iOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAkocmV2aXNpb24gOTM4ODApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
X2gKICNkZWZpbmUgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sX2gKIAorI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIApAQCAtNDEsMTAgKzQyLDEwIEBAIGJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xT
aW1wbGVSZXF1ZXN0TWV0aG8KIGJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xTaW1wbGVSZXF1ZXN0SGVh
ZGVyV2hpdGVsaXN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiBi
b29sIGlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3QoY29uc3QgU3RyaW5n
Jik7CiAKLXZvaWQgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0
JiwgU2VjdXJpdHlPcmlnaW4qLCBib29sIGFsbG93Q3JlZGVudGlhbHMpOwotUmVzb3VyY2VSZXF1
ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd0NyZWRlbnRpYWxzKTsKK3ZvaWQgdXBk
YXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlPcmln
aW4qLCBTdG9yZWRDcmVkZW50aWFscyk7CitSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNjZXNzQ29u
dHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlPcmln
aW4qLCBTdG9yZWRDcmVkZW50aWFscyk7CiAKLWJvb2wgcGFzc2VzQWNjZXNzQ29udHJvbENoZWNr
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU2VjdXJp
dHlPcmlnaW4qLCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24pOworYm9vbCBwYXNzZXNBY2Nlc3ND
b250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFN0b3JlZENyZWRlbnRpYWxzLCBT
ZWN1cml0eU9yaWdpbiosIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAkocmV2aXNpb24gOTM4ODApCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMiArMTM1LDEyIEBAIGJvb2wgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbTo6YWxsb3dzUmVxdWVzdChib29sIGluY2x1
ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IHJlcXVlc3RIZWFkZXJzKSBjb25zdAorYm9vbCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlSXRlbTo6YWxsb3dzUmVxdWVzdChTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlh
bHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVh
ZGVycykgY29uc3QKIHsKICAgICBTdHJpbmcgaWdub3JlZEV4cGxhbmF0aW9uOwogICAgIGlmICht
X2Fic29sdXRlRXhwaXJ5VGltZSA8IGN1cnJlbnRUaW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoaW5jbHVkZUNyZWRlbnRpYWxzICYmICFtX2NyZWRlbnRpYWxzKQorICAgIGlm
IChpbmNsdWRlQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscyAmJiBtX2NyZWRl
bnRpYWxzID09IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghYWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QobWV0aG9kLCBpZ25vcmVkRXhw
bGFuYXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9p
ZCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjphcAogICAgIH0KIH0KIAotYm9vbCBD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMp
Citib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQo
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHMg
aW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRl
ck1hcCYgcmVxdWVzdEhlYWRlcnMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXA6Oml0ZXJhdG9yIGNhY2hlSXQgPSBt
X3ByZWZsaWdodEhhc2hNYXAuZmluZChzdGQ6Om1ha2VfcGFpcihvcmlnaW4sIHVybCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZS5oCShyZXZpc2lvbiA5Mzg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKICNkZWZpbmUgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZV9oCiAK
ICNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbSB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVt
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbShib29sIGNyZWRlbnRpYWxzKQorICAgICAgICBD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbShTdG9yZWRDcmVkZW50aWFscyBjcmVk
ZW50aWFscykKICAgICAgICAgICAgIDogbV9hYnNvbHV0ZUV4cGlyeVRpbWUoMCkKICAgICAgICAg
ICAgICwgbV9jcmVkZW50aWFscyhjcmVkZW50aWFscykKICAgICAgICAgewpAQCAtNTAsNyArNTEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcGFyc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbik7CiAgICAgICAgIGJvb2wgYWxs
b3dzQ3Jvc3NPcmlnaW5NZXRob2QoY29uc3QgU3RyaW5nJiwgU3RyaW5nJiBlcnJvckRlc2NyaXB0
aW9uKSBjb25zdDsKICAgICAgICAgYm9vbCBhbGxvd3NDcm9zc09yaWdpbkhlYWRlcnMoY29uc3Qg
SFRUUEhlYWRlck1hcCYsIFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbikgY29uc3Q7Ci0gICAgICAg
IGJvb2wgYWxsb3dzUmVxdWVzdChib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBhbGxvd3NSZXF1ZXN0KFN0b3JlZENyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdHlwZWRlZiBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPiBIZWFkZXJzU2V0OwpAQCAtNTksNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIHRvIHN0YXJ0IGEgdGltZXIgZm9yIHRoZSBleHBpcmF0aW9uIGRlbHRhIHRoYXQg
cmVtb3ZlcyB0aGlzIGZyb20gdGhlIGNhY2hlIHdoZW4KICAgICAgICAgLy8gaXQgZmlyZXMuCiAg
ICAgICAgIGRvdWJsZSBtX2Fic29sdXRlRXhwaXJ5VGltZTsKLSAgICAgICAgYm9vbCBtX2NyZWRl
bnRpYWxzOworICAgICAgICBTdG9yZWRDcmVkZW50aWFscyBtX2NyZWRlbnRpYWxzOwogICAgICAg
ICBIYXNoU2V0PFN0cmluZz4gbV9tZXRob2RzOwogICAgICAgICBIZWFkZXJzU2V0IG1faGVhZGVy
czsKICAgICB9OwpAQCAtNzAsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHN0YXRpYyBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlJiBzaGFyZWQoKTsKIAogICAg
ICAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiwg
UGFzc093blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4pOwotICAgICAg
ICBib29sIGNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwm
LCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKTsKKyAgICAgICAgYm9vbCBjYW5Ta2lwUHJlZmxp
Z2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHMs
IGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVy
cyk7CiAKICAgICAgICAgdm9pZCBlbXB0eSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gOTM4ODAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpnZXRTaG91bGQKIHsKICAgICBBU1NFUlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09
IG1fbG9hZGVyIHx8ICFtX2xvYWRlcik7CiAKLSAgICBpZiAoIW1fb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzKSB7CisgICAgaWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID09IERvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFscykgewogICAgICAgICBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNDUsMTAgKzM0NSwx
MCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlCiAgICAgICAgIFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBtX29wdGlvbnM7CiAgICAgICAgIGlmICht
X2FjdHVhbFJlcXVlc3QpIHsKICAgICAgICAgICAgIC8vIERvbid0IHNuaWZmIGNvbnRlbnQgb3Ig
c2VuZCBsb2FkIGNhbGxiYWNrcyBmb3IgdGhlIHByZWZsaWdodCByZXF1ZXN0LgotICAgICAgICAg
ICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IGZhbHNlOwotICAgICAgICAgICAgb3B0aW9u
cy5zbmlmZkNvbnRlbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIG9wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPSBEb05vdFNlbmRDYWxsYmFja3M7CisgICAgICAgICAgICBvcHRpb25zLnNuaWZmQ29u
dGVudCA9IERvTm90U25pZmZDb250ZW50OwogICAgICAgICAgICAgLy8gS2VlcCBidWZmZXJpbmcg
dGhlIGRhdGEgZm9yIHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KLSAgICAgICAgICAgIG9wdGlvbnMu
c2hvdWxkQnVmZmVyRGF0YSA9IHRydWU7CisgICAgICAgICAgICBvcHRpb25zLnNob3VsZEJ1ZmZl
ckRhdGEgPSBCdWZmZXJEYXRhOwogICAgICAgICB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpA
QCAtMzY4LDE0ICszNjgsMTIgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXF1ZQogICAgIH0KICAgICAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMu
c25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgot
ICAgIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzID0gbV9vcHRpb25zLmFsbG93
Q3JlZGVudGlhbHMgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzOwotCiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz46Om1heCgpOwog
ICAgIGlmIChtX2RvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gbV9kb2N1
bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVz
dCwgc3RvcmVkQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgICAgIGlk
ZW50aWZpZXIgPSBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShyZXF1ZXN0LCBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscywgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKTsKIAogICAgIC8vIE5vIGV4Y2VwdGlvbiBmb3IgZmlsZTovLy8gcmVzb3Vy
Y2VzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5NjIyOTg+LgogICAgIC8vIEFsc28sIGlmIHdlIGhh
dmUgYW4gSFRUUCByZXNwb25zZSwgdGhlbiBpdCB3YXNuJ3QgYSBuZXR3b3JrIGVycm9yIGluIGZh
Y3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gOTM4ODAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsOSArMzgsOSBAQAogI2luY2x1ZGUgIkljb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
SWNvblVSTC5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZE5vdGlmaWVyLmgiCiAjaW5jbHVkZSAi
U3ViZnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJldmlzaW9u
IDkzODgwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21F
bGVtZW50KCkKIAogICAgICAgICBTdHJpbmcgY3Jvc3NPcmlnaW5Nb2RlID0gbV9lbGVtZW50LT5m
YXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKICAgICAgICAgaWYg
KCFjcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dDcmVk
ZW50aWFscyA9IGVxdWFsSWdub3JpbmdDYXNlKGNyb3NzT3JpZ2luTW9kZSwgInVzZS1jcmVkZW50
aWFscyIpOworICAgICAgICAgICAgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9
IGVxdWFsSWdub3JpbmdDYXNlKGNyb3NzT3JpZ2luTW9kZSwgInVzZS1jcmVkZW50aWFscyIpID8g
QWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAg
ICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJlcXVlc3QsIGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxzKTsKICAgICAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNp
b24gOTM4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBNYWluUmVzb3VyY2VMb2FkZXI6Ok1haW5SZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUpCi0g
ICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKHRydWUsIHRy
dWUsIHRydWUpKQorICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0
aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEpKQogICAgICwgbV9k
YXRhTG9hZFRpbWVyKHRoaXMsICZNYWluUmVzb3VyY2VMb2FkZXI6OmhhbmRsZURhdGFMb2FkTm93
KQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fd2FpdGlu
Z0ZvckNvbnRlbnRQb2xpY3koZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAJKHJldmlzaW9uIDkzODgwKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIoRnJh
bWUqIGZyYW1lLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50KQotICAg
IDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyh0cnVlLCB0cnVl
LCB0cnVlKSkKKyAgICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBEb05vdEJ1ZmZlckRhdGEpKQogICAgICwg
bV9jbGllbnQoY2xpZW50KQogewogfQpAQCAtNDgsNyArNDgsNiBAQCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6fk5ldHNjYXBlUGx1CiBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyPiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cj4gbG9hZGVyKGFkb3B0UmVmKG5ldyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcihmcmFtZSwg
Y2xpZW50KSkpOwotICAgIGxvYWRlci0+c2V0U2hvdWxkQnVmZmVyRGF0YShmYWxzZSk7CiAgICAg
bG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hZGRQbHVnSW5TdHJlYW1Mb2FkZXIobG9hZGVyLmdl
dCgpKTsKICAgICBpZiAoIWxvYWRlci0+aW5pdChyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuIDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
CShyZXZpc2lvbiA5Mzg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIgewogcHVibGljOgogICAgIGZyaWVuZCBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpOwogCi0gICAgUGFzc1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBTdWJyZXNvdXJjZUxvYWRl
ckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0g
UmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFNlY3VyaXR5Q2hlY2tQb2xpY3kgPSBEb1NlY3VyaXR5
Q2hlY2ssIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgPSBSZXNvdXJjZUxvYWRlck9wdGlv
bnModHJ1ZSwgdHJ1ZSwgdHJ1ZSkpOworICAgIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZyYW1lKiwgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxvYWRQcmlvcml0eSA9IFJlc291cmNl
TG9hZFByaW9yaXR5TG93LCBTZWN1cml0eUNoZWNrUG9saWN5ID0gRG9TZWN1cml0eUNoZWNrLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRD
YWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSkpOwogICAgIFBhc3NSZWZQdHI8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSos
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdm9pZCBhZGRNYWluUmVzb3VyY2VMb2FkKFJlc291cmNlTG9hZGVyKik7CiAgICAg
dm9pZCByZW1vdmUoUmVzb3VyY2VMb2FkZXIqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTM4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIH0KIAogICAgIGlmICghbV9yZWFj
aGVkVGVybWluYWxTdGF0ZSkKLSAgICAgICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlKG1fZnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLCBtX3JlcXVlc3QsIHRo
aXMsIG1fZGVmZXJzTG9hZGluZywgbV9vcHRpb25zLnNuaWZmQ29udGVudCk7CisgICAgICAgIG1f
aGFuZGxlID0gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShtX2ZyYW1lLT5sb2FkZXIoKS0+bmV0d29y
a2luZ0NvbnRleHQoKSwgbV9yZXF1ZXN0LCB0aGlzLCBtX2RlZmVyc0xvYWRpbmcsIG1fb3B0aW9u
cy5zbmlmZkNvbnRlbnQgPT0gU25pZmZDb250ZW50KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKQEAgLTE4Miw3ICsxODIsNyBAQCBGcmFt
ZUxvYWRlciogUmVzb3VyY2VMb2FkZXI6OmZyYW1lTG9hZGVyCiAgICAgcmV0dXJuIG1fZnJhbWUt
PmxvYWRlcigpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpzZXRTaG91bGRCdWZmZXJEYXRh
KGJvb2wgc2hvdWxkQnVmZmVyRGF0YSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OnNldFNob3VsZEJ1
ZmZlckRhdGEoRGF0YUJ1ZmZlcmluZ1BvbGljeSBzaG91bGRCdWZmZXJEYXRhKQogeyAKICAgICBt
X29wdGlvbnMuc2hvdWxkQnVmZmVyRGF0YSA9IHNob3VsZEJ1ZmZlckRhdGE7IAogCkBAIC0xOTQs
NyArMTk0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0U2hvdWxkQnVmZmVyRGF0YQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgs
IGJvb2wgYWxsQXRPbmNlKQogewotICAgIGlmICghbV9vcHRpb25zLnNob3VsZEJ1ZmZlckRhdGEp
CisgICAgaWYgKG1fb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID09IERvTm90QnVmZmVyRGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGFsbEF0T25jZSkgewpAQCAtMjM0LDcgKzIzNCw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKIAogICAgIEFTU0VS
VCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAKLSAgICBpZiAobV9vcHRpb25zLnNlbmRMb2Fk
Q2FsbGJhY2tzKSB7CisgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5k
Q2FsbGJhY2tzKSB7CiAgICAgICAgIGlmICghbV9pZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBt
X2lkZW50aWZpZXIgPSBtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlk
ZW50aWZpZXIoKTsKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXIo
KSwgcmVxdWVzdCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKAogICAgIGlmIChGb3JtRGF0YSogZGF0YSA9IG1fcmVxdWVzdC5odHRw
Qm9keSgpKQogICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7CiAg
ICAgICAgIAotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MpCisgICAgaWYgKG1f
b3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzKQogICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9yZXNwb25z
ZSk7CiB9CiAKQEAgLTMwMywxMyArMzAzLDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhKGNvbnMKICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBt
b3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAg
ICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVl
ZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlz
c3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgotICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRD
YWxsYmFja3MgJiYgbV9mcmFtZSkKKyAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID09IFNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90
aWZpZXIoKS0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoLCBzdGF0aWNfY2FzdDxp
bnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
dG9wQnVmZmVyaW5nRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIGlm
ICghbV9vcHRpb25zLnNob3VsZEJ1ZmZlckRhdGEpCisgICAgaWYgKG1fb3B0aW9ucy5zaG91bGRC
dWZmZXJEYXRhID09IERvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKCFtX3Jlc291cmNlRGF0YSk7CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZ09uZQogICAgIGlmIChtX2NhbGxlZERpZEZpbmlzaExvYWQp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2NhbGxlZERpZEZpbmlzaExvYWQgPSB0cnVlOwotICAg
IGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MpCisgICAgaWYgKG1fb3B0aW9ucy5zZW5k
TG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzKQogICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLT5kaWRGaW5pc2hMb2FkKHRoaXMsIGZpbmlzaFRpbWUpOwogfQogCkBAIC0zNTQs
NyArMzU0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdQogICAg
IGlmIChGb3JtRGF0YSogZGF0YSA9IG1fcmVxdWVzdC5odHRwQm9keSgpKQogICAgICAgICBkYXRh
LT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7CiAKLSAgICBpZiAobV9vcHRpb25zLnNl
bmRMb2FkQ2FsbGJhY2tzICYmICFtX2NhbGxlZERpZEZpbmlzaExvYWQpCisgICAgaWYgKG1fb3B0
aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzICYmICFtX2NhbGxlZERpZEZp
bmlzaExvYWQpCiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZhaWxUb0xv
YWQodGhpcywgZXJyb3IpOwogCiAgICAgcmVsZWFzZVJlc291cmNlcygpOwpAQCAtNDAyLDcgKzQw
Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNhbmNlbChjb25zdCBSZXNvdXIKICAgICAgICAg
ICAgIG1faGFuZGxlID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX29wdGlvbnMuc2Vu
ZExvYWRDYWxsYmFja3MgJiYgbV9pZGVudGlmaWVyICYmICFtX2NhbGxlZERpZEZpbmlzaExvYWQp
CisgICAgICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNr
cyAmJiBtX2lkZW50aWZpZXIgJiYgIW1fY2FsbGVkRGlkRmluaXNoTG9hZCkKICAgICAgICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZhaWxUb0xvYWQodGhpcywgbm9uTnVsbEVy
cm9yKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CShyZXZpc2lvbiA5Mzg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIGJvb2wgcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3JlYWNoZWRUZXJtaW5hbFN0YXRlOyB9CiAKLSAgICAgICAgdm9pZCBzZXRTaG91bGRCdWZmZXJE
YXRhKGJvb2wgc2hvdWxkQnVmZmVyRGF0YSk7CisgICAgICAgIHZvaWQgc2V0U2hvdWxkQnVmZmVy
RGF0YShEYXRhQnVmZmVyaW5nUG9saWN5KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVz
b3VyY2VMb2FkZXIoRnJhbWUqLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAkocmV2aXNpb24gOTM4
ODApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDEyICszMywyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgCitlbnVtIFNlbmRDYWxsYmFja1BvbGljeSB7CisgICAgU2VuZENhbGxiYWNrcywKKyAgICBE
b05vdFNlbmRDYWxsYmFja3MKK307CisKK2VudW0gQ29udGVudFNuaWZmaW5nUG9saWN5IHsKKyAg
ICBTbmlmZkNvbnRlbnQsCisgICAgRG9Ob3RTbmlmZkNvbnRlbnQKK307CisKK2VudW0gRGF0YUJ1
ZmZlcmluZ1BvbGljeSB7CisgICAgQnVmZmVyRGF0YSwKKyAgICBEb05vdEJ1ZmZlckRhdGEKK307
CisKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewotICAgIFJlc291cmNlTG9hZGVyT3B0
aW9ucygpIDogc2VuZExvYWRDYWxsYmFja3MoZmFsc2UpLCBzbmlmZkNvbnRlbnQoZmFsc2UpLCBz
aG91bGRCdWZmZXJEYXRhKHRydWUpIHsgfQotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhib29s
IHNlbmRMb2FkQ2FsbGJhY2tzQXJnLCBib29sIHNuaWZmQ29udGVudEFyZywgYm9vbCBzaG91bGRC
dWZmZXJEYXRhQXJnKSA6IHNlbmRMb2FkQ2FsbGJhY2tzKHNlbmRMb2FkQ2FsbGJhY2tzQXJnKSwg
c25pZmZDb250ZW50KHNuaWZmQ29udGVudEFyZyksIHNob3VsZEJ1ZmZlckRhdGEoc2hvdWxkQnVm
ZmVyRGF0YUFyZykgeyB9Ci0gICAgYm9vbCBzZW5kTG9hZENhbGxiYWNrczsKLSAgICBib29sIHNu
aWZmQ29udGVudDsKLSAgICBib29sIHNob3VsZEJ1ZmZlckRhdGE7CisgICAgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zKCkgOiBzZW5kTG9hZENhbGxiYWNrcyhEb05vdFNlbmRDYWxsYmFja3MpLCBzbmlm
ZkNvbnRlbnQoRG9Ob3RTbmlmZkNvbnRlbnQpLCBzaG91bGRCdWZmZXJEYXRhKEJ1ZmZlckRhdGEp
IHsgfQorICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExv
YWRDYWxsYmFja3NBcmcsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRlbnRBcmcsIERh
dGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YUFyZykgOiBzZW5kTG9hZENhbGxiYWNr
cyhzZW5kTG9hZENhbGxiYWNrc0FyZyksIHNuaWZmQ29udGVudChzbmlmZkNvbnRlbnRBcmcpLCBz
aG91bGRCdWZmZXJEYXRhKHNob3VsZEJ1ZmZlckRhdGFBcmcpIHsgfQorICAgIFNlbmRDYWxsYmFj
a1BvbGljeSBzZW5kTG9hZENhbGxiYWNrczsKKyAgICBDb250ZW50U25pZmZpbmdQb2xpY3kgc25p
ZmZDb250ZW50OworICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgc2hvdWxkQnVmZmVyRGF0YTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9uIDkzODgwKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2lmbmRlZiBUaHJlYWRhYmxlTG9hZGVyX2gKICNkZWZpbmUgVGhyZWFkYWJsZUxvYWRlcl9o
CiAKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVy
T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CkBAIC00NSwxMSArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQ7Ci0KLSAgICBlbnVtIFN0b3JlZENy
ZWRlbnRpYWxzIHsKLSAgICAgICAgQWxsb3dTdG9yZWRDcmVkZW50aWFscywKLSAgICAgICAgRG9O
b3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzCi0gICAgfTsKICAgICAKICAgICBlbnVtIENyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeSB7CiAgICAgICAgIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLApAQCAt
NjQsOCArNjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewot
ICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpIDogYWxsb3dDcmVkZW50aWFscyhmYWxz
ZSksIHByZWZsaWdodFBvbGljeShDb25zaWRlclByZWZsaWdodCksIGNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeShEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cykgeyB9Ci0gICAgICAgIGJvb2wgYWxsb3dD
cmVkZW50aWFsczsgIC8vIFdoZXRoZXIgSFRUUCBjcmVkZW50aWFscyBhbmQgY29va2llcyBhcmUg
c2VudCB3aXRoIHRoZSByZXF1ZXN0LgorICAgICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucygp
IDogYWxsb3dDcmVkZW50aWFscyhEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpLCBwcmVmbGln
aHRQb2xpY3koQ29uc2lkZXJQcmVmbGlnaHQpLCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3koRGVu
eUNyb3NzT3JpZ2luUmVxdWVzdHMpIHsgfQorICAgICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxv
d0NyZWRlbnRpYWxzOyAvLyBXaGV0aGVyIEhUVFAgY3JlZGVudGlhbHMgYW5kIGNvb2tpZXMgYXJl
IHNlbnQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICAgICAgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdo
dFBvbGljeTsgLy8gSWYgQWNjZXNzQ29udHJvbCBpcyB1c2VkLCBob3cgdG8gZGV0ZXJtaW5lIGlm
IGEgcHJlZmxpZ2h0IGlzIG5lZWRlZC4KICAgICAgICAgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5
IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gOTM4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoKCkKIGJvb2wgQ2FjaGVkUmVzb3Vy
Y2U6OnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmln
aW4pCiB7CiAgICAgU3RyaW5nIGVycm9yRGVzY3JpcHRpb247Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhtX3Jlc3BvbnNlLCByZXNvdXJjZVJlcXVlc3QoKS5h
bGxvd0Nvb2tpZXMoKSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pOworICAgIHJl
dHVybiBXZWJDb3JlOjpwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2sobV9yZXNwb25zZSwgcmVzb3Vy
Y2VSZXF1ZXN0KCkuYWxsb3dDb29raWVzKCkgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9O
b3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBzZWN1cml0eU9yaWdpbiwgZXJyb3JEZXNjcmlwdGlv
bik7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmlzRXhwaXJlZCgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcAkocmV2aXNpb24gOTM4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDggKzEyNCw4
IEBAIFBhc3NPd25QdHI8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0PiBDYWNoZWQKICAgICBSZXNvdXJj
ZUxvYWRQcmlvcml0eSBwcmlvcml0eSA9IHJlc291cmNlLT5sb2FkUHJpb3JpdHkoKTsKICAgICBy
ZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkocHJpb3JpdHkpOwogCi0gICAgUmVmUHRyPFN1YnJl
c291cmNlTG9hZGVyPiBsb2FkZXIgPSByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVT
dWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZyYW1lKCks
Ci0gICAgICAgIHJlcXVlc3QuZ2V0KCksIHJlc291cmNlUmVxdWVzdCwgcHJpb3JpdHksIHNlY3Vy
aXR5Q2hlY2ssIFJlc291cmNlTG9hZGVyT3B0aW9ucyhzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
LCB0cnVlLCB0cnVlKSk7CisgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBy
ZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmRvY3VtZW50KCktPmZyYW1lKCksIHJlcXVlc3QuZ2V0KCksIHJlc291cmNl
UmVxdWVzdCwgcHJpb3JpdHksIHNlY3VyaXR5Q2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Mg
PyBTZW5kQ2FsbGJhY2tzIDogRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZl
ckRhdGEpKTsKICAgICBpZiAoIWxvYWRlciB8fCBsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRl
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1l
cyB3ZXJlIHdhaXRpbmcgZm9yIHRoaXMgcmV2YWxpZGF0aW9uPwogICAgICAgICBMT0coUmVzb3Vy
Y2VMb2FkaW5nLCAiQ2Fubm90IHN0YXJ0IGxvYWRpbmcgJyVzJyIsIHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nm
L1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcAkocmV2aXNpb24gOTM4ODApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIFJlc291cmNl
TG9hZGVyOjpzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKLSAgICBpZiAoIW1fb3B0aW9ucy5zZW5kTG9h
ZENhbGxiYWNrcykKKyAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IERvTm90
U2VuZENhbGxiYWNrcykKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDRlVSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlID0gQ0ZDYWNoZWRVUkxSZXNwb25zZUdldFdyYXBwZWRSZXNwb25zZShjYWNoZWRS
ZXNwb25zZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VM
b2FkZXJNYWMubW0JKHJldmlzaW9uIDkzODgwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9SZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5CiAgICAgICAgIC8vIEZJWE1F
OiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBjb2Rl
IHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2Rh
eSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGlu
IHByYWN0aWNlLgogICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9j
YWwgZmlsZS4KLSAgICAgICAgaWYgKG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyAmJiBtX2Zy
YW1lKQorICAgICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID09IFNlbmRDYWxs
YmFja3MgJiYgbV9mcmFtZSkKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkt
PmRpZFJlY2VpdmVEYXRhKHRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0
YUdldEJ5dGVQdHIoZGF0YSkpLCBkYXRhTGVuLCBkYXRhTGVuKTsKICAgICB9CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lv
biA5Mzg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpz
dGFydExvYWRpbmcoKQogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICBtX3N0YXRl
ID0gTG9hZGluZzsKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBmYWxzZTsKLSAgICBvcHRpb25zLnNuaWZmQ29udGVu
dCA9IGZhbHNlOworICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBEb05vdFNlbmRDYWxs
YmFja3M7CisgICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNuaWZmQ29udGVudDsKICAg
ICBvcHRpb25zLnByZWZsaWdodFBvbGljeSA9IENvbnNpZGVyUHJlZmxpZ2h0OwogICAgIG9wdGlv
bnMuYWxsb3dDcmVkZW50aWFscyA9IEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgb3B0aW9u
cy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkocmV2aXNpb24gOTM4ODApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDEwICsxMTMsMTAgQEAgdm9pZCBFdmVudFNvdXJjZTo6Y29ubmVjdCgpCiAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKCJMYXN0LUV2ZW50LUlEIiwgbV9sYXN0RXZlbnRJZCk7CiAK
ICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExv
YWRDYWxsYmFja3MgPSB0cnVlOwotICAgIG9wdGlvbnMuc25pZmZDb250ZW50ID0gZmFsc2U7Ci0g
ICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gdHJ1ZTsKLSAgICBvcHRpb25zLnNob3VsZEJ1
ZmZlckRhdGEgPSBmYWxzZTsKKyAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENh
bGxiYWNrczsKKyAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IERvTm90U25pZmZDb250ZW50Owor
ICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7Cisg
ICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gRG9Ob3RCdWZmZXJEYXRhOwogCiAgICAgbV9s
b2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gOTM4ODApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKICNpZiBVU0UoU09VUCkKQEAgLTkxLDYgKzkwLDExIEBAIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTY2hlZHVsZVBhaXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKK2VudW0g
U3RvcmVkQ3JlZGVudGlhbHMgeworICAgIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsCisgICAgRG9O
b3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzCit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgVGltZXI7CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVz
b3VyY2VIYW5kbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCShyZXZpc2lvbiA5Mzg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsOSBAQCB2
b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzCiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKIAogICAgIFRocmVhZGFibGVM
b2FkZXJPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gdHJ1
ZTsKKyAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
OwogICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gY3Jvc3NPcmlnaW5SZXF1
ZXN0UG9saWN5OwotICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOworICAgIG9w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2FsbGJhY2tzOwogCiAgICAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzdGF0aWNfY2FzdDxXb3Jr
ZXJDb250ZXh0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksICpyZXF1ZXN0LCAqdGhpcywgb3B0
aW9ucyk7CiB9CkBAIC05MCw5ICs5MCw5IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2Fk
QXN5bmNocm9ub3UKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMgb3B0aW9uczsKLSAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSB0cnVlOworICAgIG9w
dGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgb3B0
aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3k7
Ci0gICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHRydWU7CisgICAgb3B0aW9ucy5zZW5k
TG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7CiAKICAgICAvLyBEdXJpbmcgY3JlYXRlLCBj
YWxsYmFja3MgbWF5IGhhcHBlbiB3aGljaCByZW1vdmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRo
aXMgb2JqZWN0LgogICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IHByb3RlY3QodGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDkzODgw
KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUwLDEwICs2NTAsMTAgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVz
dChFeGNlcAogICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZHMobV9yZXF1ZXN0SGVh
ZGVycyk7CiAKICAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlv
bnMuc2VuZExvYWRDYWxsYmFja3MgPSB0cnVlOwotICAgIG9wdGlvbnMuc25pZmZDb250ZW50ID0g
ZmFsc2U7CisgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7Cisg
ICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNuaWZmQ29udGVudDsKICAgICBvcHRpb25z
LnByZWZsaWdodFBvbGljeSA9IHVwbG9hZEV2ZW50cyA/IEZvcmNlUHJlZmxpZ2h0IDogQ29uc2lk
ZXJQcmVmbGlnaHQ7Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9zYW1lT3JpZ2lu
UmVxdWVzdCB8fCBtX2luY2x1ZGVDcmVkZW50aWFsczsKKyAgICBvcHRpb25zLmFsbG93Q3JlZGVu
dGlhbHMgPSAobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCBtX2luY2x1ZGVDcmVkZW50aWFscykgPyBB
bGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAg
IG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gVXNlQWNjZXNzQ29udHJvbDsKICAg
ICBvcHRpb25zLnNlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW4oKTsKIApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzODgwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0w
OC0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzZSBl
bnVtcyBpbnN0ZWFkIG9mIGJvb2xzIGZvciBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucworICAgICAg
ICB2YXJpYWJsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02Njk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgorCisgICAgICAg
ICogc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lh
dGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA4LTI1ICBKZXJlbXkg
QXB0aG9ycCAgPGplcmVteWFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBFbmFibGUgZnVsbHNjcmVl
biBBUEkgaW4gQ2hyb21pdW0gYnkgZGVmYXVsdC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCShyZXZpc2lvbiA5Mzg4MCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjYsMTIgKzIyNiwxMiBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2Fk
ZXI6OmxvYWRBc3luY2hyb25vCiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAogICAgIFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9
IHRydWU7IC8vIEFsd2F5cyBzZW5kIGNhbGxiYWNrcy4KLSAgICBvcHRpb25zLnNuaWZmQ29udGVu
dCA9IG1fb3B0aW9ucy5zbmlmZkNvbnRlbnQ7Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxz
ID0gbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHM7CisgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxi
YWNrcyA9IFNlbmRDYWxsYmFja3M7IC8vIEFsd2F5cyBzZW5kIGNhbGxiYWNrcy4KKyAgICBvcHRp
b25zLnNuaWZmQ29udGVudCA9IG1fb3B0aW9ucy5zbmlmZkNvbnRlbnQgPyBTbmlmZkNvbnRlbnQg
OiBEb05vdFNuaWZmQ29udGVudDsKKyAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSBtX29w
dGlvbnMuYWxsb3dDcmVkZW50aWFscyA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFs
bG93U3RvcmVkQ3JlZGVudGlhbHM7CiAgICAgb3B0aW9ucy5wcmVmbGlnaHRQb2xpY3kgPSBtX29w
dGlvbnMuZm9yY2VQcmVmbGlnaHQgPyBGb3JjZVByZWZsaWdodCA6IENvbnNpZGVyUHJlZmxpZ2h0
OwogICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5PihtX29wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1
ZXN0UG9saWN5KTsKLSAgICBvcHRpb25zLnNob3VsZEJ1ZmZlckRhdGEgPSBmYWxzZTsKKyAgICBv
cHRpb25zLnNob3VsZEJ1ZmZlckRhdGEgPSBEb05vdEJ1ZmZlckRhdGE7CiAKICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHdlYmNvcmVSZXF1ZXN0ID0gcmVxdWVzdC50b1Jlc291cmNlUmVxdWVz
dCgpOwogICAgIERvY3VtZW50KiB3ZWJjb3JlRG9jdW1lbnQgPSBtX2ZyYW1lSW1wbC0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1
bWVudC5jcHAJKHJldmlzaW9uIDkzODgwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTm9kZUxpc3QuaCIKLQorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50VHlwZS5o
IgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>