<?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>166452</bug_id>
          
          <creation_ts>2016-12-22 17:21:53 -0800</creation_ts>
          <short_desc>reduce PassRefPtr use in WebKit2</short_desc>
          <delta_ts>2016-12-27 18:49:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1262483</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-22 17:21:53 -0800</bug_when>
    <thetext>reduce PassRefPtr use in WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262552</commentid>
    <comment_count>1</comment_count>
      <attachid>297709</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-23 08:53:23 -0800</bug_when>
    <thetext>Created attachment 297709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262553</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-23 08:55:20 -0800</bug_when>
    <thetext>Attachment 297709 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:64:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262651</commentid>
    <comment_count>3</comment_count>
      <attachid>297739</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-24 00:07:15 -0800</bug_when>
    <thetext>Created attachment 297739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262652</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-24 00:10:01 -0800</bug_when>
    <thetext>Attachment 297739 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:64:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262793</commentid>
    <comment_count>5</comment_count>
      <attachid>297778</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-26 21:49:27 -0800</bug_when>
    <thetext>Created attachment 297778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262794</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-26 21:51:37 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262795</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-26 21:51:51 -0800</bug_when>
    <thetext>Attachment 297778 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:64:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262797</commentid>
    <comment_count>8</comment_count>
      <attachid>297778</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-26 23:11:36 -0800</bug_when>
    <thetext>Comment on attachment 297778
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262890</commentid>
    <comment_count>9</comment_count>
      <attachid>297778</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-27 18:49:08 -0800</bug_when>
    <thetext>Comment on attachment 297778
Patch

Clearing flags on attachment: 297778

Committed r210181: &lt;http://trac.webkit.org/changeset/210181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262891</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-27 18:49:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297709</attachid>
            <date>2016-12-23 08:53:23 -0800</date>
            <delta_ts>2016-12-24 00:07:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166452-20161223085218.patch</filename>
            <type>text/plain</type>
            <size>24162</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDEyNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE2LTEyLTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgcmVkdWNlIFBh
c3NSZWZQdHIgdXNlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NjQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAg
IChXS0ltYWdlQ3JlYXRlQ0dJbWFnZSk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2UpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9Vc2VyRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OldlYkltYWdl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2U6OmJpdG1hcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDpdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlIHJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczpdKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmRvY3VtZW50RnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxGcmFtZUVsZW1l
bnRDb250ZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6Omh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVy
ZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRC
b3R0b21PdmVyaGFuZ0ltYWdlKToKKwogMjAxNi0xMi0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxsIGRlcmVmIHVuZGVyIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3Vu
ZApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlz
aW9uIDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOgogICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFu
ZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKLWJvb2wgU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbiBwcm90ZWN0aW9uKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5k
bGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHJldmlzaW9uIDIxMDA1NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CiAKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCi0g
ICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0g
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworICAgIGJvb2wgY3JlYXRlSGFu
ZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdDsKIAogICAgIH5TaGFyZWFibGVCaXRtYXAoKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcs
OCArMjE3LDggQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jbwogICAg
ICAgICBhdXRvJiBpbWFnZSA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYkltYWdlJj4ob2JqZWN0KTsK
IAogICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIEFTU0VS
VCghaW1hZ2UuYml0bWFwKCkgfHwgaW1hZ2UuYml0bWFwKCktPmlzQmFja2VkQnlTaGFyZWRNZW1v
cnkoKSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCkgfHwgIWltYWdlLmJpdG1hcCgpLT5p
c0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUo
aGFuZGxlKSkgeworICAgICAgICBBU1NFUlQoaW1hZ2UuYml0bWFwKCkuaXNCYWNrZWRCeVNoYXJl
ZE1lbW9yeSgpKTsKKyAgICAgICAgaWYgKCFpbWFnZS5iaXRtYXAoKS5pc0JhY2tlZEJ5U2hhcmVk
TWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUpKSB7CiAgICAg
ICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBubyBhbGxvY2F0ZWQgYml0bWFwIG9y
IGlzIG5vdCBzaGFyZWFibGUuCiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC00MjAsNyArNDIwLDExIEBAIGJvb2wgVXNlckRhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY28KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpj
cmVhdGUoU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKSk7CisgICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKKyAgICAgICAgaWYgKCFiaXRt
YXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmVzdWx0ID0gV2ViSW1h
Z2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCShyZXZpc2lvbiAyMTAwNTYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwyMiArMzIsMjggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPFdlYkltYWdlPiBXZWJJ
bWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQog
ewotICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxlKQotICAgICAgICByZXR1
cm4gV2ViSW1hZ2U6OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXpl
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpKTsKLSAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1
cHBvcnRzQWxwaGEpKTsKKyAgICBpZiAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJlYWJsZSkg
eworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIGlmICghYml0
bWFwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXZWJJbWFn
ZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCkKK1JlZjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShSZWY8U2hh
cmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYklt
YWdlKGJpdG1hcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkltYWdlKFdURk1vdmUo
Yml0bWFwKSkpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCkKLSAgICA6IG1fYml0bWFwKGJpdG1hcCkKK1dlYkltYWdlOjpXZWJJbWFn
ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKKyAgICA6IG1fYml0bWFwKFdURk1vdmUo
Yml0bWFwKSkKIHsKLSAgICBBU1NFUlQobV9iaXRtYXApOwogfQogCiBXZWJJbWFnZTo6fldlYklt
YWdlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oCShyZXZpc2lvbiAyMTAwNTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTUgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJJbWFnZV9oCi0jZGVmaW5lIFdlYkltYWdlX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIEludFNpemU7CitjbGFzcyBJbnRTaXplOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQyLDIwICs0MSwxOSBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIGNs
YXNzIFdlYkltYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
SW1hZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IEltYWdlT3B0aW9ucyk7CisgICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFy
ZWFibGVCaXRtYXA+JiYpOwogICAgIH5XZWJJbWFnZSgpOwogICAgIAogICAgIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUoKSBjb25zdDsKIAotICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFw
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KKyAgICBTaGFyZWFibGVCaXRtYXAm
IGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVhYmxl
Qml0bWFwJiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFdlYkltYWdlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisgICAgV2Vi
SW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBtX2JpdG1hcDsKKyAgICBSZWY8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSW1hZ2VfaApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDIx
MDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwyMyArMzgsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBDR0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVDR0ltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7
CiAgICAgV2ViSW1hZ2UqIHdlYkltYWdlID0gdG9JbXBsKGltYWdlUmVmKTsKLSAgICBpZiAoIXdl
YkltYWdlIHx8ICF3ZWJJbWFnZS0+Yml0bWFwKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlm
ICghd2ViSW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHdlYklt
YWdlLT5iaXRtYXAoKS0+bWFrZUNHSW1hZ2VDb3B5KCkubGVha1JlZigpOworICAgIHJldHVybiB3
ZWJJbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCkubGVha1JlZigpOwogfQogCiBXS0lt
YWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0lt
YWdlT3B0aW9ucyBvcHRpb25zKQogewogICAgIGlmICghaW1hZ2VSZWYpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBJbnRTaXplIGltYWdlU2l6
ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2VSZWYpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlUmVmKSk7
CiAgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdl
T3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgaWYgKCF3ZWJJbWFnZS0+Yml0bWFwKCkpCi0gICAgICAg
IHJldHVybiAwOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFw
KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0g
d2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIEZsb2F0UmVj
dCByZWN0KEZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGVhclJlY3QocmVjdCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MzQs
NyArNDQzNCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ291bnRTdHJpbmdNYXRjaGVzCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4
KQogewotICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQo
dGhpcywgV2ViSW1hZ2U6OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb250ZW50SW1h
Z2VIYW5kbGUpKS5nZXQoKSwgbWF0Y2hJbmRleCk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZShjb250ZW50SW1hZ2VIYW5kbGUpOworICAgIGlmICghYml0bWFwKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fZmluZE1hdGNoZXNDbGllbnQtPmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQodGhpcywg
V2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSkucHRyKCksIG1hdGNoSW5k
ZXgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEluZGljYXRvcihjb25zdCBUZXh0
SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9yRGF0YSwgdWludDY0X3QgbGlmZXRpbWUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5t
bQkocmV2aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0OCwxMSArMjQ4LDExIEBAIC0g
KHZvaWQpZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDooV2ViSW0KICAgICBpZiAoX2ltYWdlUmVw
bHlDYWxsYmFja3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIHNp
emUgPSBpbWFnZS0+Yml0bWFwKCktPnNpemUoKTsKKyAgICBJbnRTaXplIHNpemUgPSBpbWFnZS0+
Yml0bWFwKCkuc2l6ZSgpOwogICAgIHNpemUuc2NhbGUoMSAvIF9wYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKIAogICAgIGF1dG8gaW1hZ2VDYWxsYmFjayA9IF9pbWFnZVJlcGx5Q2FsbGJhY2tz
LnRha2VGaXJzdCgpOwotICAgIGltYWdlQ2FsbGJhY2soYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCktPm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6
ZTpzaXplXSkuZ2V0KCkpOworICAgIGltYWdlQ2FsbGJhY2soYWRvcHROUyhbW05TSW1hZ2UgYWxs
b2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2UoKS5nZXQoKSBz
aXplOnNpemVdKS5nZXQoKSk7CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLVGV4dEZpbmRlck1hdGNo
IGNhbGxiYWNrcwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAkocmV2
aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzQsNyArNTM0
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZQogCiAgICAgUmVm
UHRyPFdlYkltYWdlPiBpbWFnZSA9IHBhZ2UtPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoc25h
cHNob3RSZWN0LCAxLCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUpOwogICAgIGlmIChpbWFnZSkK
LSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0
ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxi
YWNrSUQsIGhhbmRsZSwgU3RyaW5nKCkpLCAwKTsgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0JKHJl
dmlzaW9uIDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDEwICs2OCwxMCBAQCAtIChXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWh0bWxJ
RnJhbWVFCiAtIChVSUltYWdlICopcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOihXS1NuYXBzaG90
T3B0aW9ucylvcHRpb25zCiB7CiAgICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IF9ub2RlSGFu
ZGxlLT5yZW5kZXJlZEltYWdlKG9wdGlvbnMpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5i
aXRtYXAoKSkKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFtbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbWFnZS0+Yml0bWFwKCktPm1h
a2VDR0ltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbVUlJbWFnZSBh
bGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgp
XSBhdXRvcmVsZWFzZV07CiB9CiAjZW5kaWYKIApAQCAtNzksMTAgKzc5LDEwIEBAIC0gKFVJSW1h
Z2UgKilyZW5kZXJlZEltYWdlV2l0aE9wdGlvbnM6KFcKIC0gKE5TSW1hZ2UgKilyZW5kZXJlZElt
YWdlV2l0aE9wdGlvbnM6KFdLU25hcHNob3RPcHRpb25zKW9wdGlvbnMKIHsKICAgICBSZWZQdHI8
V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2Uob3B0aW9ucyk7Ci0g
ICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmJpdG1hcCgpKQorICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOmltYWdlLT5iaXRtYXAoKS0+bWFrZUNHSW1hZ2UoKS5nZXQoKSBzaXplOk5TWmVyb1Np
emVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6TlNaZXJvU2l6
ZV0gYXV0b3JlbGVhc2VdOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAkocmV2aXNpb24gMjEwMDU2KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDE3ICsxMzQsMTUgQEAgSW50UmVjdCBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcgogICAgIHJldHVybiBtX25vZGUtPnBpeGVs
U25hcHBlZFJlbmRlclJlY3QoaXNSZXBsYWNlZCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorc3RhdGljIFJlZlB0cjxXZWJJbWFnZT4g
aW1hZ2VGb3JSZWN0KEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
bmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSByZWN0
LnNpemUoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lVmlldy0+ZnJhbWUoKS5wYWdl
KCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYml0bWFwU2l6ZS5zY2FsZShzY2FsZUZhY3Rv
cik7CiAKICAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBz
bmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgaWYgKCFzbmFwc2hv
dC0+Yml0bWFwKCkpCi0gICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRl
eHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1
dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgYml0bWFwU2l6ZSkpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihzY2FsZUZhY3Rvcik7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXJlY3Qu
eCgpLCAtcmVjdC55KCkpOwpAQCAtMTY3LDcgKzE2NSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QKICAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFw
c2hvdE9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IG1fbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUp
CkBAIC0xOTMsNyArMTkxLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVO
b2RlSAogICAgIHJldHVybiBpbWFnZTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSgpCitSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjp2
aXNpYmxlUmFuZ2UoKQogewogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydCA9IGZpcnN0UG9zaXRp
b25Jbk5vZGUobV9ub2RlLnB0cigpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gbGFzdFBv
c2l0aW9uSW5Ob2RlKG1fbm9kZS5wdHIoKSk7CkBAIC0yODYsNyArMjg0LDcgQEAgYm9vbCBJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmlzVGV4dEZpZQogICAgIHJldHVybiBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PihtX25vZGUuZ2V0KCkpLmlzVGV4dCgpOwogfQogCi1QYXNzUmVmUHRyPElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sVGFi
bGVDZWxsRWxlbWVudENlbGxBYm92ZSgpCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
PiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3Zl
KCkKIHsKICAgICBpZiAoIWlzPEhUTUxUYWJsZUNlbGxFbGVtZW50PihtX25vZGUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTI5NCw3ICsyOTIsNyBAQCBQYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZT4gSW5qCiAgICAgcmV0dXJuIGdldE9yQ3JlYXRlKGRvd25jYXN0PEhU
TUxUYWJsZUNlbGxFbGVtZW50PihtX25vZGUuZ2V0KCkpLmNlbGxBYm92ZSgpKTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpkb2N1bWVudEZyYW1l
KCkKK1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpkb2N1bWVudEZy
YW1lKCkKIHsKICAgICBpZiAoIW1fbm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0zMDYsNyArMzA0LDcgQEAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5q
ZWN0ZWRCdW5kbGVOb2RlSAogICAgIHJldHVybiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJh
bWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
Omh0bWxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQorUmVmUHRyPFdlYkZyYW1lPiBJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQogewogICAg
IGlmICghaXM8SFRNTEZyYW1lRWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0zMTgsNyArMzE2LDcgQEAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5k
bGVOb2RlSAogICAgIHJldHVybiBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogfQog
Ci1QYXNzUmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxJRnJh
bWVFbGVtZW50Q29udGVudEZyYW1lKCkKK1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpCiB7CiAgICAgaWYgKCFp
czxIVE1MSUZyYW1lRWxlbWVudD4obV9ub2RlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAkocmV2aXNp
b24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIwICsy
MywxOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlX2gKLSNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIElu
dFJlY3Q7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBlbnVtIGNsYXNzIEF1dG9GaWxsQnV0dG9uVHlw
ZSA6IHVpbnQ4X3Q7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK2VudW0gY2xhc3MgQXV0
b0ZpbGxCdXR0b25UeXBlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02
Myw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlOiBUaGVzZSBzaG91bGQgb25seSBiZSBv
cGVyYXRpb25zIHRoYXQgYXJlIG5vdCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgV2ViQ29y
ZTo6SW50UmVjdCBlbGVtZW50Qm91bmRzKCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZW5kZXJS
ZWN0KGJvb2wqKTsKLSAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiByZW5kZXJlZEltYWdlKFNuYXBz
aG90T3B0aW9ucyk7Ci0gICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiB2
aXNpYmxlUmFuZ2UoKTsKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNo
b3RPcHRpb25zKTsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gdmlzaWJs
ZVJhbmdlKCk7CiAgICAgdm9pZCBzZXRIVE1MSW5wdXRFbGVtZW50VmFsdWVGb3JVc2VyKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0SFRNTElucHV0RWxlbWVudFNwZWxsY2hlY2tFbmFibGVk
KGJvb2wpOwogICAgIGJvb2wgaXNIVE1MSW5wdXRFbGVtZW50QXV0b0ZpbGxlZCgpIGNvbnN0OwpA
QCAtNzYsMTEgKzc0LDExIEBAIHB1YmxpYzoKICAgICBib29sIGh0bWxUZXh0QXJlYUVsZW1lbnRM
YXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKICAgICBib29sIGlzVGV4dEZpZWxkKCkgY29uc3Q7CiAg
ICAgCi0gICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IGh0bWxUYWJsZUNl
bGxFbGVtZW50Q2VsbEFib3ZlKCk7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZT4gaHRtbFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUoKTsKIAotICAgIFBhc3NSZWZQdHI8V2Vi
RnJhbWU+IGRvY3VtZW50RnJhbWUoKTsKLSAgICBQYXNzUmVmUHRyPFdlYkZyYW1lPiBodG1sRnJh
bWVFbGVtZW50Q29udGVudEZyYW1lKCk7Ci0gICAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gaHRtbElG
cmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKKyAgICBSZWZQdHI8V2ViRnJhbWU+IGRvY3VtZW50
RnJhbWUoKTsKKyAgICBSZWZQdHI8V2ViRnJhbWU+IGh0bWxGcmFtZUVsZW1lbnRDb250ZW50RnJh
bWUoKTsKKyAgICBSZWZQdHI8V2ViRnJhbWU+IGh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1l
KCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+
IGNyZWF0ZShXZWJDb3JlOjpOb2RlJik7CkBAIC05MCw1ICs4OCwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcAkocmV2aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1
bmRsZVJhbmdlCiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVj
dGlvbik7CiAKLSAgICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiYWNraW5nU3RvcmUpOworICAg
IHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJhY2tpbmdTdG9yZS5yZWxlYXNlTm9uTnVsbCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4NTksNyArMTg1OSw3IEBAIHZvaWQgV2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qgc25h
cHMKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoaW1hZ2Up
Ci0gICAgICAgIGltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGltYWdlLT5iaXRtYXAoKS5jcmVh
dGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNh
bGxiYWNrSUQpKTsKIH0KQEAgLTE5MDAsMTAgKzE5MDAsOCBAQCBQYXNzUmVmUHRyPFdlYkltYWdl
PiBXZWJQYWdlOjpzbmFwc2hvdEF0CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzdGQ6Om1heCho
b3Jpem9udGFsU2NhbGVGYWN0b3IsIHZlcnRpY2FsU2NhbGVGYWN0b3IpOwogCiAgICAgYXV0byBz
bmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFwU2l6ZSwgc25hcHNob3RPcHRpb25zVG9J
bWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIGlmICghc25hcHNob3QtPmJpdG1hcCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNo
b3QtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBhdXRvIGdyYXBoaWNz
Q29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAog
ICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUHJpbnRpbmcpIHsKICAgICAgICAgUHJp
bnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoKmNvcmVGcmFtZSwgKmdyYXBo
aWNzQ29udGV4dCwgc25hcHNob3RSZWN0LnNpemUoKSk7CkBAIC0xOTY5LDEwICsxOTY3LDggQEAg
UGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RObwogICAgIH0KIAogICAgIGF1
dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKHNuYXBzaG90U2l6ZSwgc25hcHNob3RPcHRp
b25zVG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIGlmICghc25hcHNob3QtPmJpdG1hcCgp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0g
c25hcHNob3QtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBhdXRvIGdy
YXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKIAogICAgIGlmICghKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2Nh
bGVGYWN0b3IpKSB7CiAgICAgICAgIGRvdWJsZSBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVQYWdl
KCktPmRldmljZVNjYWxlRmFjdG9yKCk7CkBAIC00MjY2LDYgKzQyNjIsMTAgQEAgdm9pZCBXZWJQ
YWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZgogI2VuZGlmCiAKICAgICAgICAgYXV0byBi
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIGlmICghYml0bWFwKSB7CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogICAgICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CiAKICAgICAgICAgZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19jYXN0
PGZsb2F0PihpbWFnZVNpemUud2lkdGgoKSkgLyByZWN0LndpZHRoKCk7CkBAIC00MjgzLDE0ICs0
MjgzLDE0IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGYKICAgICAg
ICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFJlY3QoKmdyYXBoaWNzQ29udGV4dCwgcmVjdCk7
CiAgICAgICAgIH0KIAotICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoV1RGTW92ZShi
aXRtYXApKTsKKyAgICAgICAgaW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICB9CiAjZW5kaWYKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZTsKIAogICAgIGlmIChpbWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLT5jcmVh
dGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAg
ICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpJbWFnZUNhbGxiYWNrKGhhbmRsZSwgY2FsbGJhY2tJRCkpOwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2
aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzM1LDcgKzIzMzUsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uCiAgICAgICAgICAgICAgICAgICAgIGlm
IChyZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RW5zdXJlIHRoYXQgdGhlIGltYWdlIGNvbnRhaW5zIGF0IG1vc3QgNjAwSyBwaXhlbHMsIHNvIHRo
YXQgaXQgaXMgbm90IHRvbyBiaWcuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRy
PFdlYkltYWdlPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZSgqZWxlbWVudCwgU25hcHNob3RPcHRp
b25zU2hhcmVhYmxlLCA2MDAgKiAxMDI0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmZvLmltYWdlID0gc25hcHNob3QtPmJpdG1hcCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZm8uaW1hZ2UgPSAmc25hcHNob3QtPmJpdG1hcCgpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0
b3IpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzg2
LDcgKzc4Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0VG9wT3ZlcmhhbmdJbWFnZShQYXNzUmUKICAg
ICBsYXllci0+c2V0U2l6ZShpbWFnZS0+c2l6ZSgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24o
RmxvYXRQb2ludCgwLCAtaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSkpOwogCi0gICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBpbWFnZS0+Yml0bWFwKCktPm1ha2VDR0ltYWdlQ29weSgp
OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gaW1hZ2UtPmJpdG1hcCgpLm1h
a2VDR0ltYWdlQ29weSgpOwogICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAo
aWQpY2dJbWFnZS5nZXQoKTsKIH0KIApAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgV2ViUGFnZTo6
c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShQYXMKIAogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5z
aXplKCkpOwogICAgIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gaW1hZ2Ut
PmJpdG1hcCgpLT5tYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y2dJbWFnZSA9IGltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKTsKICAgICBsYXllci0+
cGxhdGZvcm1MYXllcigpLmNvbnRlbnRzID0gKGlkKWNnSW1hZ2UuZ2V0KCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297739</attachid>
            <date>2016-12-24 00:07:15 -0800</date>
            <delta_ts>2016-12-26 21:49:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166452-20161224000608.patch</filename>
            <type>text/plain</type>
            <size>25310</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDEyNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE2LTEyLTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgcmVkdWNlIFBh
c3NSZWZQdHIgdXNlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NjQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAg
IChXS0ltYWdlQ3JlYXRlQ0dJbWFnZSk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2UpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9Vc2VyRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OldlYkltYWdl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2U6OmJpdG1hcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDpdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlIHJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczpdKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmRvY3VtZW50RnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxGcmFtZUVsZW1l
bnRDb250ZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6Omh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVy
ZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRC
b3R0b21PdmVyaGFuZ0ltYWdlKToKKwogMjAxNi0xMi0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxsIGRlcmVmIHVuZGVyIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3Vu
ZApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlz
aW9uIDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOgogICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFu
ZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKLWJvb2wgU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbiBwcm90ZWN0aW9uKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5k
bGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHJldmlzaW9uIDIxMDA1NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CiAKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCi0g
ICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0g
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworICAgIGJvb2wgY3JlYXRlSGFu
ZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdDsKIAogICAgIH5TaGFyZWFibGVCaXRtYXAoKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcs
OCArMjE3LDggQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jbwogICAg
ICAgICBhdXRvJiBpbWFnZSA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYkltYWdlJj4ob2JqZWN0KTsK
IAogICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIEFTU0VS
VCghaW1hZ2UuYml0bWFwKCkgfHwgaW1hZ2UuYml0bWFwKCktPmlzQmFja2VkQnlTaGFyZWRNZW1v
cnkoKSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCkgfHwgIWltYWdlLmJpdG1hcCgpLT5p
c0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUo
aGFuZGxlKSkgeworICAgICAgICBBU1NFUlQoaW1hZ2UuYml0bWFwKCkuaXNCYWNrZWRCeVNoYXJl
ZE1lbW9yeSgpKTsKKyAgICAgICAgaWYgKCFpbWFnZS5iaXRtYXAoKS5pc0JhY2tlZEJ5U2hhcmVk
TWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUpKSB7CiAgICAg
ICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBubyBhbGxvY2F0ZWQgYml0bWFwIG9y
IGlzIG5vdCBzaGFyZWFibGUuCiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC00MjAsNyArNDIwLDExIEBAIGJvb2wgVXNlckRhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY28KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpj
cmVhdGUoU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKSk7CisgICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKKyAgICAgICAgaWYgKCFiaXRt
YXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmVzdWx0ID0gV2ViSW1h
Z2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCShyZXZpc2lvbiAyMTAwNTYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwyMiArMzIsMjggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPFdlYkltYWdlPiBXZWJJ
bWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQog
ewotICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxlKQotICAgICAgICByZXR1
cm4gV2ViSW1hZ2U6OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXpl
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpKTsKLSAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1
cHBvcnRzQWxwaGEpKTsKKyAgICBpZiAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJlYWJsZSkg
eworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIGlmICghYml0
bWFwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXZWJJbWFn
ZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCkKK1JlZjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShSZWY8U2hh
cmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYklt
YWdlKGJpdG1hcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkltYWdlKFdURk1vdmUo
Yml0bWFwKSkpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCkKLSAgICA6IG1fYml0bWFwKGJpdG1hcCkKK1dlYkltYWdlOjpXZWJJbWFn
ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKKyAgICA6IG1fYml0bWFwKFdURk1vdmUo
Yml0bWFwKSkKIHsKLSAgICBBU1NFUlQobV9iaXRtYXApOwogfQogCiBXZWJJbWFnZTo6fldlYklt
YWdlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oCShyZXZpc2lvbiAyMTAwNTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTUgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJJbWFnZV9oCi0jZGVmaW5lIFdlYkltYWdlX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIEludFNpemU7CitjbGFzcyBJbnRTaXplOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQyLDIwICs0MSwxOSBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIGNs
YXNzIFdlYkltYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
SW1hZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IEltYWdlT3B0aW9ucyk7CisgICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFy
ZWFibGVCaXRtYXA+JiYpOwogICAgIH5XZWJJbWFnZSgpOwogICAgIAogICAgIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUoKSBjb25zdDsKIAotICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFw
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KKyAgICBTaGFyZWFibGVCaXRtYXAm
IGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVhYmxl
Qml0bWFwJiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFdlYkltYWdlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisgICAgV2Vi
SW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBtX2JpdG1hcDsKKyAgICBSZWY8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSW1hZ2VfaApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAJ
KHJldmlzaW9uIDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNCArMzksMTQgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBjYWlyb19zdXJmYWNlX3QqIFdLSW1hZ2VDcmVhdGVDYWlyb1N1
cmZhY2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICAvLyBXZSBjYW5ub3QgcGFzcyBhIFJl
ZlB0ciB0aHJvdWdoIHRoZSBBUEkgaGVyZSwgc28gd2UganVzdCBsZWFrIHRoZSByZWZlcmVuY2Uu
Ci0gICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLT5jcmVhdGVDYWlyb1N1cmZh
Y2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3Jl
YXRlRnJvbUNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRp
b25zIG9wdGlvbnMpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJm
YWNlKSk7CiAgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJ
bWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1dG8gZ3JhcGhp
Y3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwog
CiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpOwogICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAkocmV2
aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2UoV0tJbWFnZVJlZiBpbWFn
ZVJlZikKIHsKICAgICBXZWJJbWFnZSogd2ViSW1hZ2UgPSB0b0ltcGwoaW1hZ2VSZWYpOwotICAg
IGlmICghd2ViSW1hZ2UgfHwgIXdlYkltYWdlLT5iaXRtYXAoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKCF3ZWJJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gd2ViSW1hZ2UtPmJpdG1hcCgpLT5tYWtlQ0dJbWFnZUNvcHkoKS5sZWFrUmVmKCk7CisgICAg
cmV0dXJuIHdlYkltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5sZWFrUmVmKCk7CiB9
CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VS
ZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFpbWFnZVJlZikKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIEludFNpemUg
aW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2VSZWYpKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUs
IHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKLSAgICBpZiAoIXdlYkltYWdlLT5iaXRtYXAoKSkK
LSAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdl
LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAg
RmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgwLCAwKSwgaW1hZ2VTaXplKTsKICAgICBncmFwaGlj
c0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsKICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRp
dmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQzNCw3ICs0NDM0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb3VudFN0cmluZ01h
dGNoZXMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1h
dGNoSW5kZXgpCiB7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1hZ2VGb3JNYXRj
aFJlc3VsdCh0aGlzLCBXZWJJbWFnZTo6Y3JlYXRlKFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNv
bnRlbnRJbWFnZUhhbmRsZSkpLmdldCgpLCBtYXRjaEluZGV4KTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnRlbnRJbWFnZUhhbmRsZSk7CisgICAgaWYgKCFi
aXRtYXApIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3Vs
dCh0aGlzLCBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSwg
bWF0Y2hJbmRleCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yKGNv
bnN0IFRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0b3JEYXRhLCB1aW50NjRfdCBsaWZldGltZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDExICsyNDgs
MTEgQEAgLSAodm9pZClkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0OihXZWJJbQogICAgIGlmIChf
aW1hZ2VSZXBseUNhbGxiYWNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIElu
dFNpemUgc2l6ZSA9IGltYWdlLT5iaXRtYXAoKS0+c2l6ZSgpOworICAgIEludFNpemUgc2l6ZSA9
IGltYWdlLT5iaXRtYXAoKS5zaXplKCk7CiAgICAgc2l6ZS5zY2FsZSgxIC8gX3BhZ2UtPmRldmlj
ZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgYXV0byBpbWFnZUNhbGxiYWNrID0gX2ltYWdlUmVwbHlD
YWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAgaW1hZ2VDYWxsYmFjayhhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS0+bWFrZUNHSW1hZ2UoKS5n
ZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7CisgICAgaW1hZ2VDYWxsYmFjayhhZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZSgp
LmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tUZXh0Rmlu
ZGVyTWF0Y2ggY2FsbGJhY2tzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
NCw3ICs1MzQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlCiAK
ICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gcGFnZS0+c2NhbGVkU25hcHNob3RXaXRoT3B0
aW9ucyhzbmFwc2hvdFJlY3QsIDEsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZSk7CiAgICAgaWYg
KGltYWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBpbWFnZS0+Yml0bWFw
KCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNo
b3QoY2FsbGJhY2tJRCwgaGFuZGxlLCBTdHJpbmcoKSksIDApOyAgICAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRs
ZS5tbQkocmV2aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEwIEBAIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
ICopaHRtbElGcmFtZUUKIC0gKFVJSW1hZ2UgKilyZW5kZXJlZEltYWdlV2l0aE9wdGlvbnM6KFdL
U25hcHNob3RPcHRpb25zKW9wdGlvbnMKIHsKICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0g
X25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2Uob3B0aW9ucyk7Ci0gICAgaWYgKCFpbWFnZSB8fCAh
aW1hZ2UtPmJpdG1hcCgpKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRt
YXAoKS0+bWFrZUNHSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tV
SUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdl
KCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KICNlbmRpZgogCkBAIC03OSwxMCArNzksMTAgQEAg
LSAoVUlJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooVwogLSAoTlNJbWFnZSAqKXJl
bmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucwogewogICAg
IFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBfbm9kZUhhbmRsZS0+cmVuZGVyZWRJbWFnZShvcHRp
b25zKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Yml0bWFwKCkpCisgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLT5tYWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6
TlNaZXJvU2l6ZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCkuZ2V0KCkgc2l6ZTpO
U1plcm9TaXplXSBhdXRvcmVsZWFzZV07CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTcgKzEzNCwxNSBAQCBJ
bnRSZWN0IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyCiAgICAgcmV0dXJuIG1fbm9k
ZS0+cGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChpc1JlcGxhY2VkKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3Qg
SW50UmVjdCYgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCitzdGF0aWMgUmVmUHRyPFdl
YkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIEludFNpemUgYml0bWFwU2l6
ZSA9IHJlY3Quc2l6ZSgpOwogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZnJhbWVWaWV3LT5mcmFt
ZSgpLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBiaXRtYXBTaXplLnNjYWxlKHNj
YWxlRmFjdG9yKTsKIAogICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1h
cFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKLSAgICBpZiAo
IXNuYXBzaG90LT5iaXRtYXAoKSkKLSAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGdyYXBo
aWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7
CisgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCkuY3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QoSW50UmVjdChJ
bnRQb2ludCgpLCBiaXRtYXBTaXplKSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURldmlj
ZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKTsKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0
ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CkBAIC0xNjcsNyArMTY1LDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdAogICAgIHJldHVybiBzbmFwc2hvdDsKIH0KIAot
UGFzc1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZElt
YWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9ub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSkKQEAgLTE5Myw3ICsxOTEsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBJbmplY3Rl
ZEJ1bmRsZU5vZGVICiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6dmlzaWJsZVJhbmdl
KCkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU6OnZpc2libGVSYW5nZSgpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gZmly
c3RQb3NpdGlvbkluTm9kZShtX25vZGUucHRyKCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBlbmQg
PSBsYXN0UG9zaXRpb25Jbk5vZGUobV9ub2RlLnB0cigpKTsKQEAgLTI4Niw3ICsyODQsNyBAQCBi
b29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNUZXh0RmllCiAgICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuaXNUZXh0KCk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
Omh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKCkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbFRhYmxlQ2VsbEVsZW1lbnRD
ZWxsQWJvdmUoKQogewogICAgIGlmICghaXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KG1fbm9kZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjk0LDcgKzI5Miw3IEBAIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmoKICAgICByZXR1cm4gZ2V0T3JDcmVhdGUoZG93
bmNhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuY2VsbEFib3ZlKCkpOwog
fQogCi1QYXNzUmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmRvY3Vt
ZW50RnJhbWUoKQorUmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmRv
Y3VtZW50RnJhbWUoKQogewogICAgIGlmICghbV9ub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwNiw3ICszMDQsNyBAQCBQYXNzUmVmUHRyPFdlYkZy
YW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVICiAgICAgcmV0dXJuIFdlYkZyYW1lOjpmcm9tQ29yZUZy
YW1lKCpmcmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpCitSZWZQdHI8V2ViRnJhbWU+
IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgp
CiB7CiAgICAgaWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTMxOCw3ICszMTYsNyBAQCBQYXNzUmVmUHRyPFdlYkZyYW1lPiBJbmpl
Y3RlZEJ1bmRsZU5vZGVICiAgICAgcmV0dXJuIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFt
ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQorUmVmUHRyPFdlYkZyYW1lPiBJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCkKIHsKICAg
ICBpZiAoIWlzPEhUTUxJRnJhbWVFbGVtZW50PihtX25vZGUpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5o
CShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsMjAgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVfaAotI2RlZmluZSBJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Y2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBOb2RlOwotICAgIGVudW0gY2xhc3MgQXV0b0ZpbGxC
dXR0b25UeXBlIDogdWludDhfdDsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBOb2RlOworZW51bSBj
bGFzcyBBdXRvRmlsbEJ1dHRvblR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYzLDggKzYxLDggQEAgcHVibGljOgogICAgIC8vIE5vdGU6IFRoZXNlIHNob3VsZCBv
bmx5IGJlIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAg
ICBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRCb3VuZHMoKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IHJlbmRlclJlY3QoYm9vbCopOwotICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1h
Z2UoU25hcHNob3RPcHRpb25zKTsKLSAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU+IHZpc2libGVSYW5nZSgpOworICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVuZGVyZWRJbWFn
ZShTbmFwc2hvdE9wdGlvbnMpOworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PiB2aXNpYmxlUmFuZ2UoKTsKICAgICB2b2lkIHNldEhUTUxJbnB1dEVsZW1lbnRWYWx1ZUZvclVz
ZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRIVE1MSW5wdXRFbGVtZW50U3BlbGxjaGVj
a0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBpc0hUTUxJbnB1dEVsZW1lbnRBdXRvRmlsbGVkKCkg
Y29uc3Q7CkBAIC03NiwxMSArNzQsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaHRtbFRleHRBcmVh
RWxlbWVudExhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpOwogICAgIGJvb2wgaXNUZXh0RmllbGQoKSBj
b25zdDsKICAgICAKLSAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gaHRt
bFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUoKTsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBodG1sVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZSgpOwogCi0gICAgUGFzc1Jl
ZlB0cjxXZWJGcmFtZT4gZG9jdW1lbnRGcmFtZSgpOwotICAgIFBhc3NSZWZQdHI8V2ViRnJhbWU+
IGh0bWxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKLSAgICBQYXNzUmVmUHRyPFdlYkZyYW1l
PiBodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOworICAgIFJlZlB0cjxXZWJGcmFtZT4g
ZG9jdW1lbnRGcmFtZSgpOworICAgIFJlZlB0cjxXZWJGcmFtZT4gaHRtbEZyYW1lRWxlbWVudENv
bnRlbnRGcmFtZSgpOworICAgIFJlZlB0cjxXZWJGcmFtZT4gaHRtbElGcmFtZUVsZW1lbnRDb250
ZW50RnJhbWUoKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6Ok5vZGUmKTsKQEAgLTkwLDUgKzg4LDMgQEAgcHJpdmF0
ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IElu
amVjdGVkQnVuZGxlUmFuZ2UKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
b2xkU2VsZWN0aW9uKTsKIAotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKGJhY2tpbmdTdG9y
ZSk7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3JlLnJlbGVhc2VOb25O
dWxsKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIxMDA1NikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTg1OSw3ICsxODU5LDcgQEAgdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50
UmVjdCBzbmFwcwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlm
IChpbWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaW1hZ2UtPmJpdG1h
cCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbWFnZUNhbGxiYWNrKGhh
bmRsZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMTkwMCwxMCArMTkwMCw4IEBAIFBhc3NSZWZQdHI8
V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXQKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHN0
ZDo6bWF4KGhvcml6b250YWxTY2FsZUZhY3RvciwgdmVydGljYWxTY2FsZUZhY3Rvcik7CiAKICAg
ICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXplLCBzbmFwc2hvdE9w
dGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgaWYgKCFzbmFwc2hvdC0+Yml0bWFw
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1dG8g
Z3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOwogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQcmludGluZykgewogICAg
ICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcygqY29yZUZyYW1l
LCAqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6ZSgpKTsKQEAgLTE5NjksMTAgKzE5
NjcsOCBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vCiAgICAgfQog
CiAgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNob3RTaXplLCBzbmFw
c2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgaWYgKCFzbmFwc2hvdC0+
Yml0bWFwKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVE
ZXZpY2VTY2FsZUZhY3RvcikpIHsKICAgICAgICAgZG91YmxlIGRldmljZVNjYWxlRmFjdG9yID0g
Y29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKQEAgLTQyNjYsNiArNDI2MiwxMCBAQCB2
b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmCiAjZW5kaWYKIAogICAgICAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6
ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICAgICAgaWYgKCFiaXRtYXAp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKQEAgLTQy
ODMsMTQgKzQyODMsMTQgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3Qg
ZgogICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdCgqZ3JhcGhpY3NDb250ZXh0
LCByZWN0KTsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShX
VEZNb3ZlKGJpdG1hcCkpOworICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoYml0bWFw
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICNlbmRpZgogCiAgICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOwogCiAgICAgaWYgKGltYWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFw
KCktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9u
bHkpOworICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkltYWdlQ2FsbGJhY2soaGFuZGxlLCBjYWxsYmFja0lEKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMzUsNyArMjMzNSw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb24KICAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90KSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgY29udGFpbnMgYXQgbW9zdCA2MDBLIHBpeGVs
cywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJpZy4KICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gc25hcHNob3ROb2RlKCplbGVtZW50LCBTbmFw
c2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm8uaW1hZ2UgPSBzbmFwc2hvdC0+Yml0bWFwKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mby5pbWFnZSA9ICZzbmFwc2hvdC0+Yml0bWFwKCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVzdC5pbmNsdWRlTGlu
a0luZGljYXRvcikgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRUb3BPdmVyaGFuZ0ltYWdlKFBh
c3NSZQogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkpOwogICAgIGxheWVyLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDAsIC1pbWFnZS0+c2l6ZSgpLmhlaWdodCgpKSk7CiAKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGltYWdlLT5iaXRtYXAoKS0+bWFrZUNHSW1h
Z2VDb3B5KCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBpbWFnZS0+Yml0
bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCk7CiAgICAgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5jb250
ZW50cyA9IChpZCljZ0ltYWdlLmdldCgpOwogfQogCkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFBhcwogCiAgICAgbGF5ZXItPnNldFNpemUo
aW1hZ2UtPnNpemUoKSk7CiAgICAgCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Ug
PSBpbWFnZS0+Yml0bWFwKCktPm1ha2VDR0ltYWdlQ29weSgpOworICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlID0gaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpOwogICAg
IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoaWQpY2dJbWFnZS5nZXQoKTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297778</attachid>
            <date>2016-12-26 21:49:27 -0800</date>
            <delta_ts>2016-12-27 18:49:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166452-20161226214828.patch</filename>
            <type>text/plain</type>
            <size>26177</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDEyNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE2LTEyLTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgcmVkdWNlIFBh
c3NSZWZQdHIgdXNlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NjQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHA6CisgICAgICAg
IChXS0ltYWdlQ3JlYXRlQ0dJbWFnZSk6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbUNHSW1h
Z2UpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9Vc2VyRGF0YS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OldlYkltYWdl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2U6OmJpdG1hcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDpdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlIHJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczpdKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmRvY3VtZW50RnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxGcmFtZUVsZW1l
bnRDb250ZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6Omh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVy
ZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBz
aG90Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRC
b3R0b21PdmVyaGFuZ0ltYWdlKToKKwogMjAxNi0xMi0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxsIGRlcmVmIHVuZGVyIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3Vu
ZApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlz
aW9uIDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOgogICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFu
ZGxlLm1fZmxhZ3MsIFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CiB9CiAKLWJvb2wgU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbiBwcm90ZWN0aW9uKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShIYW5k
bGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHJldmlzaW9uIDIxMDA1NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CiAKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCi0g
ICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0g
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworICAgIGJvb2wgY3JlYXRlSGFu
ZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKSBjb25zdDsKIAogICAgIH5TaGFyZWFibGVCaXRtYXAoKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcs
OCArMjE3LDggQEAgdm9pZCBVc2VyRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jbwogICAg
ICAgICBhdXRvJiBpbWFnZSA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYkltYWdlJj4ob2JqZWN0KTsK
IAogICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIEFTU0VS
VCghaW1hZ2UuYml0bWFwKCkgfHwgaW1hZ2UuYml0bWFwKCktPmlzQmFja2VkQnlTaGFyZWRNZW1v
cnkoKSk7Ci0gICAgICAgIGlmICghaW1hZ2UuYml0bWFwKCkgfHwgIWltYWdlLmJpdG1hcCgpLT5p
c0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUo
aGFuZGxlKSkgeworICAgICAgICBBU1NFUlQoaW1hZ2UuYml0bWFwKCkuaXNCYWNrZWRCeVNoYXJl
ZE1lbW9yeSgpKTsKKyAgICAgICAgaWYgKCFpbWFnZS5iaXRtYXAoKS5pc0JhY2tlZEJ5U2hhcmVk
TWVtb3J5KCkgfHwgIWltYWdlLmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUpKSB7CiAgICAg
ICAgICAgICAvLyBJbml0aWFsIGZhbHNlIGluZGljYXRlcyBubyBhbGxvY2F0ZWQgYml0bWFwIG9y
IGlzIG5vdCBzaGFyZWFibGUuCiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC00MjAsNyArNDIwLDExIEBAIGJvb2wgVXNlckRhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY28KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdlYkltYWdlOjpj
cmVhdGUoU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKSk7CisgICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKKyAgICAgICAgaWYgKCFiaXRt
YXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmVzdWx0ID0gV2ViSW1h
Z2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCShyZXZpc2lvbiAyMTAwNTYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwyMiArMzIsMjggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPFdlYkltYWdlPiBXZWJJ
bWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBvcHRpb25zKQog
ewotICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmVhYmxlKQotICAgICAgICByZXR1
cm4gV2ViSW1hZ2U6OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXpl
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpKTsKLSAgICByZXR1cm4gV2ViSW1hZ2U6
OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1
cHBvcnRzQWxwaGEpKTsKKyAgICBpZiAob3B0aW9ucyAmIEltYWdlT3B0aW9uc1NoYXJlYWJsZSkg
eworICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgICAgIGlmICghYml0
bWFwKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXZWJJbWFn
ZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgYXV0byBiaXRt
YXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShzaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXAucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYkltYWdlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCkKK1JlZjxXZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShSZWY8U2hh
cmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYklt
YWdlKGJpdG1hcCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkltYWdlKFdURk1vdmUo
Yml0bWFwKSkpOwogfQogCi1XZWJJbWFnZTo6V2ViSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCkKLSAgICA6IG1fYml0bWFwKGJpdG1hcCkKK1dlYkltYWdlOjpXZWJJbWFn
ZShSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCkKKyAgICA6IG1fYml0bWFwKFdURk1vdmUo
Yml0bWFwKSkKIHsKLSAgICBBU1NFUlQobV9iaXRtYXApOwogfQogCiBXZWJJbWFnZTo6fldlYklt
YWdlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oCShyZXZpc2lvbiAyMTAwNTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTUgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJJbWFnZV9oCi0jZGVmaW5lIFdlYkltYWdlX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIEludFNpemU7CitjbGFzcyBJbnRTaXplOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQyLDIwICs0MSwxOSBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIGNs
YXNzIFdlYkltYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
SW1hZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBJbWFnZU9wdGlvbnMpOwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFdlYkltYWdlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IEltYWdlT3B0aW9ucyk7CisgICAgc3RhdGljIFJlZjxXZWJJbWFnZT4gY3JlYXRlKFJlZjxTaGFy
ZWFibGVCaXRtYXA+JiYpOwogICAgIH5XZWJJbWFnZSgpOwogICAgIAogICAgIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUoKSBjb25zdDsKIAotICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFw
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KKyAgICBTaGFyZWFibGVCaXRtYXAm
IGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwLmdldCgpOyB9CisgICAgY29uc3QgU2hhcmVhYmxl
Qml0bWFwJiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcC5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFdlYkltYWdlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisgICAgV2Vi
SW1hZ2UoUmVmPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBtX2JpdG1hcDsKKyAgICBSZWY8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSW1hZ2VfaApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAJ
KHJldmlzaW9uIDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNCArMzksMTQgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBjYWlyb19zdXJmYWNlX3QqIFdLSW1hZ2VDcmVhdGVDYWlyb1N1
cmZhY2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICAvLyBXZSBjYW5ub3QgcGFzcyBhIFJl
ZlB0ciB0aHJvdWdoIHRoZSBBUEkgaGVyZSwgc28gd2UganVzdCBsZWFrIHRoZSByZWZlcmVuY2Uu
Ci0gICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLT5jcmVhdGVDYWlyb1N1cmZh
Y2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3Jl
YXRlRnJvbUNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRp
b25zIG9wdGlvbnMpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJm
YWNlKSk7CiAgICAgYXV0byB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0
b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSB3ZWJJ
bWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGF1dG8gZ3JhcGhp
Y3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwog
CiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpOwogICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAkocmV2
aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDIzICszOCwyMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2UoV0tJbWFnZVJlZiBpbWFn
ZVJlZikKIHsKICAgICBXZWJJbWFnZSogd2ViSW1hZ2UgPSB0b0ltcGwoaW1hZ2VSZWYpOwotICAg
IGlmICghd2ViSW1hZ2UgfHwgIXdlYkltYWdlLT5iaXRtYXAoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKCF3ZWJJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gd2ViSW1hZ2UtPmJpdG1hcCgpLT5tYWtlQ0dJbWFnZUNvcHkoKS5sZWFrUmVmKCk7CisgICAg
cmV0dXJuIHdlYkltYWdlLT5iaXRtYXAoKS5tYWtlQ0dJbWFnZUNvcHkoKS5sZWFrUmVmKCk7CiB9
CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VS
ZWYsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFpbWFnZVJlZikKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIEludFNpemUg
aW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZVJlZiksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2VSZWYpKTsKICAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUs
IHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKLSAgICBpZiAoIXdlYkltYWdlLT5iaXRtYXAoKSkK
LSAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdl
LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgYXV0byBncmFwaGljc0Nv
bnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAg
RmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgwLCAwKSwgaW1hZ2VTaXplKTsKICAgICBncmFwaGlj
c0NvbnRleHQtPmNsZWFyUmVjdChyZWN0KTsKICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdOYXRp
dmVJbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCByZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQzNCw3ICs0NDM0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb3VudFN0cmluZ01h
dGNoZXMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldEltYWdlRm9yRmluZE1hdGNoKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIHVpbnQzMl90IG1h
dGNoSW5kZXgpCiB7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1hZ2VGb3JNYXRj
aFJlc3VsdCh0aGlzLCBXZWJJbWFnZTo6Y3JlYXRlKFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNv
bnRlbnRJbWFnZUhhbmRsZSkpLmdldCgpLCBtYXRjaEluZGV4KTsKKyAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnRlbnRJbWFnZUhhbmRsZSk7CisgICAgaWYgKCFi
aXRtYXApIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudC0+ZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3Vs
dCh0aGlzLCBXZWJJbWFnZTo6Y3JlYXRlKGJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpKS5wdHIoKSwg
bWF0Y2hJbmRleCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0SW5kaWNhdG9yKGNv
bnN0IFRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2F0b3JEYXRhLCB1aW50NjRfdCBsaWZldGltZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQxNCwxMCArMzQx
NCw3IEBAIHZvaWQgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChXZWIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBpbWFnZSA9
IHdlYkltYWdlLT5iaXRtYXAoKSkKLSAgICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2su
Z2V0KCksIGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGNhaXJvX3N1cmZhY2VfZGVzdHJveSkpOwotICAgIGVsc2UK
LSAgICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIDAsIDApOworICAgIGdf
dGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRl
Q2Fpcm9TdXJmYWNlKCkubGVha1JlZigpLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5
PihjYWlyb19zdXJmYWNlX2Rlc3Ryb3kpKTsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCB3
ZWJLaXRTbmFwc2hvdE9wdGlvbnNUb1NuYXBzaG90T3B0aW9ucyhXZWJLaXRTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tUZXh0Rmlu
ZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tUZXh0RmluZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjQ4LDExICsyNDgsMTEgQEAgLSAodm9pZClkaWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0OihXZWJJ
bQogICAgIGlmIChfaW1hZ2VSZXBseUNhbGxiYWNrcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEludFNpemUgc2l6ZSA9IGltYWdlLT5iaXRtYXAoKS0+c2l6ZSgpOworICAgIElu
dFNpemUgc2l6ZSA9IGltYWdlLT5iaXRtYXAoKS5zaXplKCk7CiAgICAgc2l6ZS5zY2FsZSgxIC8g
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgYXV0byBpbWFnZUNhbGxiYWNrID0g
X2ltYWdlUmVwbHlDYWxsYmFja3MudGFrZUZpcnN0KCk7Ci0gICAgaW1hZ2VDYWxsYmFjayhhZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS0+bWFr
ZUNHSW1hZ2UoKS5nZXQoKSBzaXplOnNpemVdKS5nZXQoKSk7CisgICAgaW1hZ2VDYWxsYmFjayhh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmltYWdlLT5iaXRtYXAoKS5t
YWtlQ0dJbWFnZSgpLmdldCgpIHNpemU6c2l6ZV0pLmdldCgpKTsKIH0KIAogI3ByYWdtYSBtYXJr
IC0gV0tUZXh0RmluZGVyTWF0Y2ggY2FsbGJhY2tzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OnRha2VTY3JlCiAKICAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gcGFnZS0+c2NhbGVkU25h
cHNob3RXaXRoT3B0aW9ucyhzbmFwc2hvdFJlY3QsIDEsIFNuYXBzaG90T3B0aW9uc1NoYXJlYWJs
ZSk7CiAgICAgaWYgKGltYWdlKQotICAgICAgICBpbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRs
ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBp
bWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CiAKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
VGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCBTdHJpbmcoKSksIDApOyAgICAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZS5tbQkocmV2aXNpb24gMjEwMDU2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhh
bmRsZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEwIEBAIC0gKFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lICopaHRtbElGcmFtZUUKIC0gKFVJSW1hZ2UgKilyZW5kZXJlZEltYWdlV2l0
aE9wdGlvbnM6KFdLU25hcHNob3RPcHRpb25zKW9wdGlvbnMKIHsKICAgICBSZWZQdHI8V2ViSW1h
Z2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1hZ2Uob3B0aW9ucyk7Ci0gICAgaWYg
KCFpbWFnZSB8fCAhaW1hZ2UtPmJpdG1hcCgpKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdl
OmltYWdlLT5iaXRtYXAoKS0+bWFrZUNHSW1hZ2UoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgp
Lm1ha2VDR0ltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KICNlbmRpZgogCkBAIC03OSwx
MCArNzksMTAgQEAgLSAoVUlJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooVwogLSAo
TlNJbWFnZSAqKXJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0
aW9ucwogewogICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBfbm9kZUhhbmRsZS0+cmVuZGVy
ZWRJbWFnZShvcHRpb25zKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Yml0bWFwKCkpCisg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLT5tYWtlQ0dJbWFnZSgp
LmdldCgpIHNpemU6TlNaZXJvU2l6ZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlKCku
Z2V0KCkgc2l6ZTpOU1plcm9TaXplXSBhdXRvcmVsZWFzZV07CiB9CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCShyZXZpc2lv
biAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTcg
KzEzNCwxNSBAQCBJbnRSZWN0IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6cmVuZGVyCiAgICAg
cmV0dXJuIG1fbm9kZS0+cGl4ZWxTbmFwcGVkUmVuZGVyUmVjdChpc1JlcGxhY2VkKTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1l
VmlldywgY29uc3QgSW50UmVjdCYgcmVjdCwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCitzdGF0
aWMgUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNv
bnN0IEludFJlY3QmIHJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIEludFNp
emUgYml0bWFwU2l6ZSA9IHJlY3Quc2l6ZSgpOwogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZnJh
bWVWaWV3LT5mcmFtZSgpLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBiaXRtYXBT
aXplLnNjYWxlKHNjYWxlRmFjdG9yKTsKIAogICAgIGF1dG8gc25hcHNob3QgPSBXZWJJbWFnZTo6
Y3JlYXRlKGJpdG1hcFNpemUsIHNuYXBzaG90T3B0aW9uc1RvSW1hZ2VPcHRpb25zKG9wdGlvbnMp
KTsKLSAgICBpZiAoIXNuYXBzaG90LT5iaXRtYXAoKSkKLSAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CisgICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFw
KCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSk7CiAgICAgZ3JhcGhpY3NDb250ZXh0
LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKTsKICAgICBncmFwaGljc0NvbnRl
eHQtPnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CkBAIC0xNjcsNyArMTY1LDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdAogICAgIHJldHVybiBzbmFw
c2hvdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
OjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPFdlYkltYWdl
PiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25z
IG9wdGlvbnMpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9ub2RlLT5kb2N1bWVudCgpLmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTE5Myw3ICsxOTEsNyBAQCBQYXNzUmVmUHRyPFdlYklt
YWdlPiBJbmplY3RlZEJ1bmRsZU5vZGVICiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1QYXNzUmVm
UHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
dmlzaWJsZVJhbmdlKCkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU6OnZpc2libGVSYW5nZSgpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluTm9kZShtX25vZGUucHRyKCkpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBlbmQgPSBsYXN0UG9zaXRpb25Jbk5vZGUobV9ub2RlLnB0cigpKTsKQEAgLTI4Niw3
ICsyODQsNyBAQCBib29sIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aXNUZXh0RmllCiAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuaXNUZXh0KCk7
CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU6Omh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKCkKK1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbFRhYmxl
Q2VsbEVsZW1lbnRDZWxsQWJvdmUoKQogewogICAgIGlmICghaXM8SFRNTFRhYmxlQ2VsbEVsZW1l
bnQ+KG1fbm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjk0LDcgKzI5Miw3IEBA
IFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmoKICAgICByZXR1cm4gZ2V0
T3JDcmVhdGUoZG93bmNhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KG1fbm9kZS5nZXQoKSkuY2Vs
bEFib3ZlKCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU6OmRvY3VtZW50RnJhbWUoKQorUmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU6OmRvY3VtZW50RnJhbWUoKQogewogICAgIGlmICghbV9ub2RlLT5pc0RvY3VtZW50
Tm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMwNiw3ICszMDQsNyBAQCBQYXNz
UmVmUHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVICiAgICAgcmV0dXJuIFdlYkZyYW1l
Ojpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpCitSZWZQ
dHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbEZyYW1lRWxlbWVudENv
bnRlbnRGcmFtZSgpCiB7CiAgICAgaWYgKCFpczxIVE1MRnJhbWVFbGVtZW50PihtX25vZGUpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMxOCw3ICszMTYsNyBAQCBQYXNzUmVmUHRyPFdl
YkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVICiAgICAgcmV0dXJuIFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCpmcmFtZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZTo6aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQorUmVmUHRyPFdlYkZy
YW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZy
YW1lKCkKIHsKICAgICBpZiAoIWlzPEhUTUxJRnJhbWVFbGVtZW50PihtX25vZGUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsMjAgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVfaAotI2RlZmlu
ZSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBOb2RlOwotICAgIGVudW0gY2xh
c3MgQXV0b0ZpbGxCdXR0b25UeXBlIDogdWludDhfdDsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBO
b2RlOworZW51bSBjbGFzcyBBdXRvRmlsbEJ1dHRvblR5cGUgOiB1aW50OF90OwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTYzLDggKzYxLDggQEAgcHVibGljOgogICAgIC8vIE5vdGU6IFRo
ZXNlIHNob3VsZCBvbmx5IGJlIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IGV4cG9zZWQgdG8gSmF2
YVNjcmlwdC4KICAgICBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRCb3VuZHMoKTsKICAgICBXZWJD
b3JlOjpJbnRSZWN0IHJlbmRlclJlY3QoYm9vbCopOwotICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+
IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKLSAgICBQYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU+IHZpc2libGVSYW5nZSgpOworICAgIFJlZlB0cjxXZWJJbWFnZT4g
cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMpOworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlPiB2aXNpYmxlUmFuZ2UoKTsKICAgICB2b2lkIHNldEhUTUxJbnB1dEVsZW1l
bnRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRIVE1MSW5wdXRFbGVt
ZW50U3BlbGxjaGVja0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBpc0hUTUxJbnB1dEVsZW1lbnRB
dXRvRmlsbGVkKCkgY29uc3Q7CkBAIC03NiwxMSArNzQsMTEgQEAgcHVibGljOgogICAgIGJvb2wg
aHRtbFRleHRBcmVhRWxlbWVudExhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpOwogICAgIGJvb2wgaXNU
ZXh0RmllbGQoKSBjb25zdDsKICAgICAKLSAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZT4gaHRtbFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUoKTsKKyAgICBSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBodG1sVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZSgpOwog
Ci0gICAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gZG9jdW1lbnRGcmFtZSgpOwotICAgIFBhc3NSZWZQ
dHI8V2ViRnJhbWU+IGh0bWxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKLSAgICBQYXNzUmVm
UHRyPFdlYkZyYW1lPiBodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOworICAgIFJlZlB0
cjxXZWJGcmFtZT4gZG9jdW1lbnRGcmFtZSgpOworICAgIFJlZlB0cjxXZWJGcmFtZT4gaHRtbEZy
YW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOworICAgIFJlZlB0cjxXZWJGcmFtZT4gaHRtbElGcmFt
ZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgUmVmPEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6Ok5vZGUmKTsKQEAgLTkwLDUgKzg4
LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIFBhc3NSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2UKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKIAotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRl
KGJhY2tpbmdTdG9yZSk7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoYmFja2luZ1N0b3Jl
LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDIxMDA1NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg1OSw3ICsxODU5LDcgQEAgdm9pZCBXZWJQYWdlOjp0YWtl
U25hcHNob3QoSW50UmVjdCBzbmFwcwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFu
ZGxlOwogICAgIGlmIChpbWFnZSkKLSAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5k
bGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAg
aW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbWFn
ZUNhbGxiYWNrKGhhbmRsZSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMTkwMCwxMCArMTkwMCw4IEBA
IFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90QXQKICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IHN0ZDo6bWF4KGhvcml6b250YWxTY2FsZUZhY3RvciwgdmVydGljYWxTY2FsZUZh
Y3Rvcik7CiAKICAgICBhdXRvIHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRtYXBTaXpl
LCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgaWYgKCFzbmFw
c2hvdC0+Yml0bWFwKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBncmFw
aGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
OworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCgpOwogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQcmlu
dGluZykgewogICAgICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmll
cygqY29yZUZyYW1lLCAqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3Quc2l6ZSgpKTsKQEAg
LTE5NjksMTAgKzE5NjcsOCBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hv
dE5vCiAgICAgfQogCiAgICAgYXV0byBzbmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUoc25hcHNo
b3RTaXplLCBzbmFwc2hvdE9wdGlvbnNUb0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7Ci0gICAgaWYg
KCFzbmFwc2hvdC0+Yml0bWFwKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOworICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikpIHsKICAgICAgICAgZG91YmxlIGRldmljZVNj
YWxlRmFjdG9yID0gY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKQEAgLTQyNjYsNiAr
NDI2MiwxMCBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmCiAjZW5k
aWYKIAogICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICAgICAg
aWYgKCFiaXRtYXApIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0g
Yml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgICAgICBmbG9hdCBwcmludGlu
Z1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdlU2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lk
dGgoKTsKQEAgLTQyODMsMTQgKzQyODMsMTQgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1h
Z2UodWludDY0X3QgZgogICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdCgqZ3Jh
cGhpY3NDb250ZXh0LCByZWN0KTsKICAgICAgICAgfQogCi0gICAgICAgIGltYWdlID0gV2ViSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKGJpdG1hcCkpOworICAgICAgICBpbWFnZSA9IFdlYkltYWdlOjpj
cmVhdGUoYml0bWFwLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICNlbmRpZgogCiAgICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogCiAgICAgaWYgKGltYWdlKQotICAgICAgICBp
bWFnZS0+Yml0bWFwKCktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOworICAgICAgICBpbWFnZS0+Yml0bWFwKCkuY3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlQ2FsbGJhY2soaGFuZGxlLCBjYWxsYmFja0lEKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyMTAwNTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMzUs
NyArMjMzNSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb24KICAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3QuaW5jbHVkZVNuYXBzaG90KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaW1hZ2UgY29udGFpbnMgYXQgbW9z
dCA2MDBLIHBpeGVscywgc28gdGhhdCBpdCBpcyBub3QgdG9vIGJpZy4KICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChSZWZQdHI8V2ViSW1hZ2U+IHNuYXBzaG90ID0gc25hcHNob3ROb2RlKCpl
bGVtZW50LCBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGUsIDYwMCAqIDEwMjQpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZm8uaW1hZ2UgPSBzbmFwc2hvdC0+Yml0bWFwKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5pbWFnZSA9ICZzbmFwc2hvdC0+Yml0bWFwKCk7
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWVz
dC5pbmNsdWRlTGlua0luZGljYXRvcikgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMjEwMDU2KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRUb3BPdmVy
aGFuZ0ltYWdlKFBhc3NSZQogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkpOwogICAg
IGxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIC1pbWFnZS0+c2l6ZSgpLmhlaWdodCgp
KSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGltYWdlLT5iaXRtYXAo
KS0+bWFrZUNHSW1hZ2VDb3B5KCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Ug
PSBpbWFnZS0+Yml0bWFwKCkubWFrZUNHSW1hZ2VDb3B5KCk7CiAgICAgbGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKS5jb250ZW50cyA9IChpZCljZ0ltYWdlLmdldCgpOwogfQogCkBAIC04MDIsNyArODAy
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRCb3R0b21PdmVyaGFuZ0ltYWdlKFBhcwogCiAgICAgbGF5
ZXItPnNldFNpemUoaW1hZ2UtPnNpemUoKSk7CiAgICAgCi0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNnSW1hZ2UgPSBpbWFnZS0+Yml0bWFwKCktPm1ha2VDR0ltYWdlQ29weSgpOworICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdl
Q29weSgpOwogICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoaWQpY2dJbWFn
ZS5nZXQoKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>