<?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>107284</bug_id>
          
          <creation_ts>2013-01-18 07:39:08 -0800</creation_ts>
          <short_desc>[BlackBerry] Set spellchecking calculations on a timer to free up the WebKit thread</short_desc>
          <delta_ts>2013-01-18 10:02:55 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nima Ghanavatian">nima.ghanavatian</reporter>
          <assigned_to name="Nima Ghanavatian">nghanavatian</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>810590</commentid>
    <comment_count>0</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2013-01-18 07:39:08 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810615</commentid>
    <comment_count>1</comment_count>
      <attachid>183463</attachid>
    <who name="Nima Ghanavatian">nghanavatian</who>
    <bug_when>2013-01-18 08:08:47 -0800</bug_when>
    <thetext>Created attachment 183463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810618</commentid>
    <comment_count>2</comment_count>
      <attachid>183463</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-01-18 08:14:23 -0800</bug_when>
    <thetext>Comment on attachment 183463
Patch

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

LGTM.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.h:167
&gt; +    void callRequestCheckingFor(WTF::PassRefPtr&lt;WebCore::SpellCheckRequest&gt;);

You should not need the WTF prefix.

&gt; Source/WebKit/blackberry/WebKitSupport/SpellingHandler.cpp:81
&gt; +    WTF::RefPtr&lt;WebCore::Range&gt; rangeForSpellChecking = rangeForSpellCheckingPtr;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810660</commentid>
    <comment_count>3</comment_count>
      <attachid>183470</attachid>
    <who name="Nima Ghanavatian">nghanavatian</who>
    <bug_when>2013-01-18 08:55:47 -0800</bug_when>
    <thetext>Created attachment 183470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810663</commentid>
    <comment_count>4</comment_count>
      <attachid>183470</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-01-18 08:58:36 -0800</bug_when>
    <thetext>Comment on attachment 183470
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810673</commentid>
    <comment_count>5</comment_count>
      <attachid>183470</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-18 09:03:54 -0800</bug_when>
    <thetext>Comment on attachment 183470
Patch

Rejecting attachment 183470 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
nk #4 FAILED at 164.
Hunk #5 succeeded at 204 (offset -16 lines).
Hunk #6 FAILED at 268.
2 out of 6 hunks FAILED -- saving rejects to file Source/WebKit/blackberry/WebKitSupport/InputHandler.h.rej
patching file Source/WebKit/blackberry/WebKitSupport/SpellingHandler.cpp
patching file Source/WebKit/blackberry/WebKitSupport/SpellingHandler.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15940743</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810688</commentid>
    <comment_count>6</comment_count>
      <attachid>183477</attachid>
    <who name="Nima Ghanavatian">nghanavatian</who>
    <bug_when>2013-01-18 09:12:06 -0800</bug_when>
    <thetext>Created attachment 183477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810694</commentid>
    <comment_count>7</comment_count>
      <attachid>183477</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-01-18 09:15:21 -0800</bug_when>
    <thetext>Comment on attachment 183477
Patch

Retrying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810761</commentid>
    <comment_count>8</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2013-01-18 10:02:55 -0800</bug_when>
    <thetext>landed in r140170</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183463</attachid>
            <date>2013-01-18 08:08:47 -0800</date>
            <delta_ts>2013-01-18 08:55:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107284-20130118105946.patch</filename>
            <type>text/plain</type>
            <size>24311</size>
            <attacher name="Nima Ghanavatian">nghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAxYmRkZjdiYTRjZjcxZGE3YmM0ZGJkNzNkMTEzMTVjM2JkMGQzNmQ0Li41ZTQxNTQxOTBm
YzIyZDkwZTI1YmI5ODJjOWNkNDA0OTg5ZmUyOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsNSArMSw1MyBAQAogMjAxMy0wMS0xOCAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgogCisgICAgICAgIFtCbGFja0JlcnJ5XSBTZXQgc3BlbGxjaGVj
a2luZyBjYWxjdWxhdGlvbnMgb24gYSB0aW1lciB0byBmcmVlIHVwIHRoZSBXZWJLaXQgdGhyZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUjI4MjM1
MQorICAgICAgICBGaXJpbmcgb2ZmIHNwZWxsY2hlY2sgcmVxdWVzdHMgaXMgdGllaW5nIHVwIHRo
ZSBXZWJLaXQgdGhyZWFkIGZvciBhbgorICAgICAgICBleHRlbmRlZCBwZXJpb2Qgb2YgdGltZS4g
SW4gdGVzdGluZyB3aXRoIGxhcmdlIGJsb2NrcyBvZiB0ZXh0LCB0aGlzCisgICAgICAgIGNhbiBi
ZSBpbiB0aGUgbWF0dGVyIG9mIDUtMTAgc2Vjb25kcy4gVGhvdWdoIHdlIGFyZSB1c2luZyBhc3lu
Y2hyb25vdXMKKyAgICAgICAgc3BlbGxjaGVja2luZywgdGhlIHByb2Nlc3MgaW4gd2hpY2ggd2Ug
YnJlYWsgZG93biBibG9ja3Mgb2YgdGV4dCBiYXNlZAorICAgICAgICBvbiBpbnB1dF9zZXJ2aWNl
IGxpbWl0YXRpb25zIGlzIHRoZSBpc3N1ZS4KKyAgICAgICAgVXNpbmcgYSB0aW1lciBoZXJlIHdo
aWNoIGZpcmVzIHdpdGggYW4gYXJiaXRyYXJ5IHRpbWVvdXQgdG8gYWxsb3cgZm9yCisgICAgICAg
IGZvY3VzIGFuZCBpbnRlcmFjdGlvbiB0byBtYWludGFpbiBhdCBhIHJlYXNvbmFibGUgbGV2ZWwu
CisgICAgICAgIEZ1cnRoZXIsIHB1bGxpbmcgdGhpcyBjb2RlIG91dCBvZiBJbnB1dEhhbmRsZXIg
YW5kIGludG8gaXRzIG93biBjbGFzcy4KKworICAgICAgICBJbnRlcm5hbGx5IHJldmlld2VkIGJ5
IE1pa2UgRmVudG9uIGFuZCBHZW4gTWFrLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6
OklucHV0SGFuZGxlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxl
cjo6fklucHV0SGFuZGxlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFu
ZGxlcjo6Y2FsbFJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENo
ZWNraW5nUmVxdWVzdFByb2Nlc3NlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oklu
cHV0SGFuZGxlcjo6c2hvdWxkUmVxdWVzdFNwZWxsQ2hlY2tpbmdPcHRpb25zRm9yUG9pbnQpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZv
Y3VzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldEVs
ZW1lbnRGb2N1c2VkKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5wdXRIYW5k
bGVyKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxp
bmdIYW5kbGVyOjpTcGVsbGluZ0hhbmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpTcGVsbGluZ0hhbmRsZXI6On5TcGVsbGluZ0hhbmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6OnNwZWxsQ2hlY2tUZXh0QmxvY2spOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tS
ZXF1ZXN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxpbmdIYW5kbGVyOjpw
YXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNwZWxsaW5nSGFuZGxlcjo6Z2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0
eSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChTcGVsbGluZ0hh
bmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6Omlz
U3BlbGxDaGVja0FjdGl2ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5n
SGFuZGxlcjo6c2V0U3BlbGxDaGVja0FjdGl2ZSk6CisKKzIwMTMtMDEtMTggIE5pbWEgR2hhbmF2
YXRpYW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gQ2hl
Y2sgaWYgY29udGludW91cyBzcGVsbGNoZWNraW5nIGlzIGVuYWJsZWQgYmVmb3JlIHByb2Nlc3Np
bmcgYSByZXF1ZXN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcxNjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCAw
ZDdlZjI4NjVmNjVkMTZlMDE4NDRjOTNkMzZhOTA0NzE4MjVhOGIzLi45NDA5MDBmYTcxYTdhMjMw
Njg0MmNlOTczYzUwNzExNzgwNGU1ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJy
eS5jbWFrZQpAQCAtMTM5LDYgKzEzOSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAg
ICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcAogICAgIGJsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9TZWxlY3Rpb25PdmVybGF5LmNwcAorICAgIGJsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1
cmZhY2VQb29sLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Ub3VjaEV2ZW50SGFu
ZGxlci5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuY3BwCmluZGV4IGYxNmUwYmExZGNiZDE5ZThhMjllZGY3ZmI2YWQ3YzZkNjE5N2VmYzEu
LjFjOThiYzhkN2JjMjcyODc1MDI2MzM4OWRiYjNmMTJiZjRkZTRjYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJFZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTU1
LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTZWxlY3RQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlNl
bGVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJT
cGVsbGluZ0hhbmRsZXIuaCIKICNpbmNsdWRlICJTdWdnZXN0aW9uQm94SGFuZGxlci5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBA
IC0xNDgsMTEgKzE1MCwxMyBAQCBJbnB1dEhhbmRsZXI6OklucHV0SGFuZGxlcihXZWJQYWdlUHJp
dmF0ZSogcGFnZSkKICAgICAsIG1fc2hvdWxkTm90aWZ5V2ViVmlldyh0cnVlKQogICAgICwgbV9l
eHBlY3RlZEtleVVwQ2hhcigwKQogICAgICwgbV9kaWRTcGVsbENoZWNrV29yZChmYWxzZSkKKyAg
ICAsIG1fc3BlbGxpbmdIYW5kbGVyKG5ldyBTcGVsbGluZ0hhbmRsZXIodGhpcykpCiB7CiB9CiAK
IElucHV0SGFuZGxlcjo6fklucHV0SGFuZGxlcigpCiB7CisgICAgZGVsZXRlIG1fc3BlbGxpbmdI
YW5kbGVyOwogfQogCiBzdGF0aWMgQmxhY2tCZXJyeUlucHV0VHlwZSBjb252ZXJ0SW5wdXRUeXBl
KGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKQEAgLTU4MSw2ICs1ODUsMTIg
QEAgdm9pZCBJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCgpCiAgICAgc2VuZExlYXJuVGV4dERldGFp
bHModGV4dEluRmllbGQpOwogfQogCit2b2lkIElucHV0SGFuZGxlcjo6Y2FsbFJlcXVlc3RDaGVj
a2luZ0ZvcihQYXNzUmVmUHRyPFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0PiBzcGVsbENoZWNr
UmVxdWVzdCkKK3sKKyAgICBpZiAoU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBnZXRTcGVs
bENoZWNrZXIoKSkKKyAgICAgICAgc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3Ioc3Bl
bGxDaGVja1JlcXVlc3QpOworfQorCiB2b2lkIElucHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0PiB0ZXh0Q2hl
Y2tpbmdSZXF1ZXN0KQogewogICAgIG1fcmVxdWVzdCA9IHRleHRDaGVja2luZ1JlcXVlc3Q7CkBA
IC02MDgsNyArNjE4LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWUKICAgICAgICAgICAgIC8v
IGVudGVyIHRvIGZpbmlzaCBjb21wb3NpbmcgYSB3b3JkIGFuZCBjcmVhdGUgYSBuZXcgbGluZS4K
ICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9jdXJyZW50Rm9j
dXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c3RhcnQoKTsKICAg
ICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbiA9IFZpc2libGVTZWxl
Y3Rpb24ocHJldmlvdXNMaW5lUG9zaXRpb24oY2FyZXRQb3NpdGlvbiwgY2FyZXRQb3NpdGlvbi5s
aW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSksIGNhcmV0UG9z
aXRpb24pOwotICAgICAgICAgICAgc3BlbGxDaGVja0Jsb2NrKHZpc2libGVTZWxlY3Rpb24sIFRl
eHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCk7CisgICAgICAgICAgICBtX3NwZWxsaW5nSGFu
ZGxlci0+c3BlbGxDaGVja1RleHRCbG9jayh2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzSW5jcmVtZW50YWwpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC02NjAsNyArNjcwLDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0
UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmwKICAgICAgICAgbV9wcm9j
ZXNzaW5nVHJhbnNhY3Rpb25JZCwKICAgICAgICAgdHJhbnNhY3Rpb25JZCA9PSBtX3Byb2Nlc3Np
bmdUcmFuc2FjdGlvbklkID8gIiIgOiAiV2UgYXJlIG91dCBvZiBzeW5jIHdpdGggaW5wdXQgc2Vy
dmljZS4iKTsKIAotICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nIHx8ICFpc0FjdGl2ZVRleHRFZGl0
KCkgfHwgIURPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQobV9jdXJyZW50Rm9jdXNFbGVtZW50KSkgeworICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nIHx8
ICFpc0FjdGl2ZVRleHRFZGl0KCkgfHwgIURPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQobV9jdXJyZW50Rm9jdXNFbGVtZW50KSB8fCAhbV9wcm9jZXNz
aW5nVHJhbnNhY3Rpb25JZCkgewogICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2
ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCBDYW5j
ZWxsaW5nIHJlcXVlc3Qgd2l0aCB0cmFuc2FjdGlvbklkICVkLiIsIHRyYW5zYWN0aW9uSWQpOwog
ICAgICAgICBtX3JlcXVlc3QtPmRpZENhbmNlbCgpOwogICAgICAgICBtX3Byb2Nlc3NpbmdUcmFu
c2FjdGlvbklkID0gLTE7CkBAIC03NTYsNyArNzY2LDcgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNo
b3VsZFJlcXVlc3RTcGVsbENoZWNraW5nT3B0aW9uc0ZvclBvaW50KGNvbnN0IFBsYXRmb3JtOjpJ
bnQKIAogICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCiAgICAgICAgICJJ
bnB1dEhhbmRsZXI6OnNob3VsZFJlcXVlc3RTcGVsbENoZWNraW5nT3B0aW9uc0ZvclBvaW50IEZv
dW5kIHNwZWxsaW5nIG1hcmtlciBhdCBwb2ludCAlc1xuTWFya2VyIHN0YXJ0ICVkIGVuZCAlZCIs
Ci0gICAgICAgIHBvaW50LnRvU3RyaW5nKCkuY19zdHIoKSwKKyAgICAgICAgZG9jdW1lbnRDb250
ZW50UG9zaXRpb24udG9TdHJpbmcoKS5jX3N0cigpLAogICAgICAgICBzcGVsbENoZWNraW5nT3B0
aW9uUmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiwKICAgICAgICAgc3BlbGxDaGVja2luZ09wdGlv
blJlcXVlc3QuZW5kVGV4dFBvc2l0aW9uKTsKIApAQCAtODY1LDYgKzg3NSw5IEBAIHZvaWQgSW5w
dXRIYW5kbGVyOjpzZXRFbGVtZW50VW5mb2N1c2VkKGJvb2wgcmVmb2N1c09jY3VyaW5nKQogICAg
ICAgICAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS0+c2V0Rm9jdXNlZCh0cnVlKTsKICAgICB9CiAKKyAgICBtX3NwZWxsaW5nSGFuZGxl
ci0+c2V0U3BlbGxDaGVja0FjdGl2ZShmYWxzZSk7CisgICAgbV9wcm9jZXNzaW5nVHJhbnNhY3Rp
b25JZCA9IDA7CisKICAgICAvLyBDbGVhciB0aGUgbm9kZSBkZXRhaWxzLgogICAgIG1fY3VycmVu
dEZvY3VzRWxlbWVudCA9IDA7CiAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50VHlwZSA9IFRleHRF
ZGl0OwpAQCAtMTA1NCwxMiArMTA2NywxMiBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVu
dEZvY3VzZWQoRWxlbWVudCogZWxlbWVudCkKICNlbmRpZgogCiAgICAgLy8gQ2hlY2sgaWYgdGhl
IGZpZWxkIHNob3VsZCBiZSBzcGVsbGNoZWNrZWQuCi0gICAgaWYgKCFzaG91bGRTcGVsbENoZWNr
RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIXNob3VsZFNwZWxsQ2hlY2tFbGVtZW50KGVsZW1l
bnQpIHx8ICFpc0FjdGl2ZVRleHRFZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNw
ZWxsY2hlY2sgdGhlIGZpZWxkIGluIGl0cyBlbnRpcmV0eS4KICAgICBWaXNpYmxlU2VsZWN0aW9u
IGZvY3VzZWRCbG9jayA9IERPTVN1cHBvcnQ6OnZpc2libGVTZWxlY3Rpb25Gb3JJbnB1dEVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgc3BlbGxDaGVja0Jsb2NrKGZvY3VzZWRCbG9jaywgVGV4dENoZWNr
aW5nUHJvY2Vzc0JhdGNoKTsKKyAgICBtX3NwZWxsaW5nSGFuZGxlci0+c3BlbGxDaGVja1RleHRC
bG9jayhmb2N1c2VkQmxvY2ssIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7CiAKICNpZmRlZiBF
TkFCTEVfU1BFTExJTkdfTE9HCiAgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQgU3BlbGxjaGVja2luZyB0aGUgZmll
bGQgaW5jcmVhc2VkIHRoZSB0b3RhbCB0aW1lIHRvIGZvY3VzIHRvICVmIHNlY29uZHMuIiwgdGlt
ZXIuZWxhcHNlZCgpKTsKQEAgLTEwOTIsOTAgKzExMDUsNiBAQCB2b2lkIElucHV0SGFuZGxlcjo6
cmVkcmF3U3BlbGxDaGVja0RpYWxvZ0lmUmVxdWlyZWQoY29uc3QgYm9vbCBzaG91bGRNb3ZlRGlh
bG9nKQogICAgIH0KIH0KIAotdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayhWaXNp
YmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0
ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSkKLXsKLSAgICBpZiAoIWlzQWN0aXZlVGV4dEVkaXQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tp
bmcgPSB2aXNpYmxlU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKCFyYW5n
ZUZvclNwZWxsQ2hlY2tpbmcgfHwgIXJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpIHx8ICFy
YW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBnZXRTcGVsbENoZWNrZXIoKTsKLSAg
ICBpZiAoIXNwZWxsQ2hlY2tlcikgewotICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNwZWxs
Y2hlY2sgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50LiIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gSWYgd2UgaGF2ZSBhIGJhdGNoIHJlcXVlc3QsIHRyeSB0byBzZW5kIG9m
ZiB0aGUgZW50aXJlIGJsb2NrLgotICAgIGlmICh0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBU
ZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpIHsKLSAgICAgICAgLy8gSWYgdG90YWwgYmxvY2sgdGV4
dCBpcyB1bmRlciB0aGUgbGltaXRlZCBhbW91bnQsIHNlbmQgdGhlIGVudGlyZSBjaHVuay4KLSAg
ICAgICAgaWYgKHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpIDwgTWF4U3Bl
bGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgc3BlbGxDaGVja2VyLT5yZXF1
ZXN0Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmcsIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VGb3JTcGVsbENoZWNraW5n
LCByYW5nZUZvclNwZWxsQ2hlY2tpbmcpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIFNpbmNlIHdlIGNvdWxkbid0IGNoZWNrIHRoZSBlbnRpcmUgYmxv
Y2sgYXQgb25jZSwgc2V0IHVwIHN0YXJ0aW5nIGFuZCBlbmRpbmcgbWFya2VycyB0byBmaXJlIGlu
Y3JlbWVudGFsbHkuCi0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zID0gdmlzaWJsZVNlbGVj
dGlvbi52aXNpYmxlU3RhcnQoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkN1cnJlbnRM
aW5lID0gc3RhcnRPZkxpbmUoc3RhcnRQb3MpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkN1
cnJlbnRMaW5lID0gZW5kT2ZMaW5lKHN0YXJ0T2ZDdXJyZW50TGluZSk7Ci0KLSAgICB3aGlsZSAo
IWlzRW5kT2ZCbG9jayhzdGFydE9mQ3VycmVudExpbmUpKSB7Ci0gICAgICAgIC8vIENyZWF0ZSBh
IHNlbGVjdGlvbiB3aXRoIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyBvZiB0aGUgbGluZSwgYW5k
IGNvbnZlcnQgdG8gUmFuZ2UgdG8gY3JlYXRlIGEgU3BlbGxDaGVja1JlcXVlc3QuCi0gICAgICAg
IHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZkN1cnJlbnRM
aW5lLCBlbmRPZkN1cnJlbnRMaW5lKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotCi0gICAgICAgIGlm
IChyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSA8IE1heFNwZWxsQ2hlY2tp
bmdTdHJpbmdMZW5ndGgpIHsKLSAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50TGluZSA9IG5leHRM
aW5lUG9zaXRpb24oc3RhcnRPZkN1cnJlbnRMaW5lLCBzdGFydE9mQ3VycmVudExpbmUubGluZURp
cmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkpOwotICAgICAgICAgICAg
ZW5kT2ZDdXJyZW50TGluZSA9IGVuZE9mTGluZShzdGFydE9mQ3VycmVudExpbmUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHdvcmRzIGZyb20gdGhl
IHN0YXJ0IG9mIHRoZSBsaW5lIHRvIHRoZSBlbmQuCi0gICAgICAgICAgICByYW5nZUZvclNwZWxs
Q2hlY2tpbmcgPSBnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KHN0YXJ0
T2ZDdXJyZW50TGluZSwgZW5kT2ZDdXJyZW50TGluZSk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdl
Rm9yU3BlbGxDaGVja2luZykgewotICAgICAgICAgICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3Jt
OjpMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayBGYWlsZWQgdG8g
c2V0IHRleHQgcmFuZ2UgZm9yIHNwZWxsY2hlY2tpbmciKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGFydE9mQ3VycmVudExpbmUgPSBWaXNp
YmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5lbmRQb3NpdGlvbigpKTsKLSAgICAg
ICAgICAgIGVuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUoc3RhcnRPZkN1cnJlbnRMaW5lKTsK
LSAgICAgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IERPTVN1cHBvcnQ6OnRyaW1XaGl0
ZXNwYWNlRnJvbVJhbmdlKFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnN0
YXJ0UG9zaXRpb24oKSksIFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPmVu
ZFBvc2l0aW9uKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3Jt
OjpMb2dMZXZlbEluZm8sCi0gICAgICAgICAgICAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxv
Y2sgU3Vic3RyaW5nIHRleHQgaXMgJyVzJywgb2Ygc2l6ZSAlZCIsCi0gICAgICAgICAgICByYW5n
ZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sYXRpbjEoKS5kYXRhKCksCi0gICAgICAgICAgICBy
YW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSk7Ci0KLSAgICAgICAgLy8gQ2Fs
bCBzcGVsbGNoZWNrIHdpdGggc3Vic3RyaW5nLgotICAgICAgICBzcGVsbENoZWNrZXItPnJlcXVl
c3RDaGVja2luZ0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZywgVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcs
IHJhbmdlRm9yU3BlbGxDaGVja2luZykpOwotICAgIH0KLX0KLQotUGFzc1JlZlB0cjxSYW5nZT4g
SW5wdXRIYW5kbGVyOjpnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KFZp
c2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uLCBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24p
Ci17Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQoc3Rh
cnRQb3NpdGlvbik7Ci0KLSAgICAvLyBLZWVwIGl0ZXJhdGluZyB1bnRpbCBvbmUgb2Ygb3VyIGNh
c2VzIGlzIGhpdCwgb3Igd2UndmUgaW5jcmVtZW50ZWQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIHJp
Z2h0IHRvIHRoZSBlbmQuCi0gICAgd2hpbGUgKHN0YXJ0UG9zaXRpb24gIT0gZW5kUG9zaXRpb24p
IHsKLSAgICAgICAgLy8gQ2hlY2sgdGhlIHRleHQgbGVuZ3RoIHdpdGhpbiB0aGlzIHJhbmdlLgot
ICAgICAgICBpZiAoVmlzaWJsZVNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRPZkN1cnJlbnRX
b3JkKS50b05vcm1hbGl6ZWRSYW5nZSgpLT50ZXh0KCkubGVuZ3RoKCkgPj0gTWF4U3BlbGxDaGVj
a2luZ1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIGZp
cnN0IHdvcmQsIHJldHVybiBhIFJhbmdlIHdpdGggZW5kIGJvdW5kYXJ5IHNldCB0byB0aGUgcHJl
dmlvdXMgd29yZC4KLSAgICAgICAgICAgIGlmIChzdGFydE9mV29yZChlbmRPZkN1cnJlbnRXb3Jk
LCBMZWZ0V29yZElmT25Cb3VuZGFyeSkgIT0gc3RhcnRQb3NpdGlvbiAmJiAhRE9NU3VwcG9ydDo6
aXNFbXB0eVJhbmdlT3JBbGxTcGFjZXMoc3RhcnRQb3NpdGlvbiwgZW5kT2ZDdXJyZW50V29yZCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwg
ZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpLCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0KLSAgICAgICAgICAgIC8vIE91
ciBmaXJzdCB3b3JkIGhhcyBnb25lIG92ZXIgdGhlIGNoYXJhY3RlciBsaW1pdC4gSW5jcmVtZW50
IHRoZSBzdGFydGluZyBwb3NpdGlvbiBwYXN0IGFuIHVuY2hlY2thYmxlIHdvcmQuCi0gICAgICAg
ICAgICBzdGFydFBvc2l0aW9uID0gZW5kT2ZDdXJyZW50V29yZDsKLSAgICAgICAgICAgIGVuZE9m
Q3VycmVudFdvcmQgPSBlbmRPZldvcmQobmV4dFdvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3Jk
KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZW5kT2ZDdXJyZW50V29yZCA9PSBlbmRQb3NpdGlvbikg
ewotICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBsYXN0IHNlZ21lbnQgaWYgdGhlIGVuZCBvZiBv
dXIgd29yZCBsaWVzIGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLgotICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhl
IGN1cnJlbnQgd29yZC4KLSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQo
bmV4dFdvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3JkKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuRGF0ZVBvcHVwKEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQsIEJsYWNrQmVycnlJbnB1dFR5cGUgdHlwZSkKIHsKICAgICBp
ZiAoIWVsZW1lbnQgfHwgZWxlbWVudC0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50LT5yZWFkT25seSgp
IHx8ICFET01TdXBwb3J0Ojppc0RhdGVUaW1lSW5wdXRGaWVsZChlbGVtZW50KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5o
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgK
aW5kZXggZDg2MGNiNDA3MTY1NGFlMzM5ZGZjN2QwZTJlYjk0NjFlNzZiYjEwYy4uODMxN2QzODdk
NmIyN2RjNzgyZWU2NmQwMTJjMGE0YTczYTdkOTZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKQEAgLTQ3LDYgKzQ3
LDcgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFNw
ZWxsQ2hlY2tlcjsKK2NsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgVGV4dENoZWNraW5n
UmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247
CkBAIC02Miw2ICs2Myw3IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBTcGVsbGluZ0hhbmRsZXI7CiBjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKIAog
Y2xhc3MgSW5wdXRIYW5kbGVyIHsKQEAgLTE2Miw2ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWRyYXdTcGVsbENoZWNrRGlhbG9nSWZSZXF1aXJlZChjb25zdCBib29sIHNob3VsZE1vdmVE
aWFsb2cgPSB0cnVlKTsKIAogICAgIHZvaWQgZWxlbWVudFRvdWNoZWQoV2ViQ29yZTo6RWxlbWVu
dCopOworICAgIHZvaWQgY2FsbFJlcXVlc3RDaGVja2luZ0ZvcihXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6U3BlbGxDaGVja1JlcXVlc3Q+KTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFBlbmRpbmdL
ZXlib2FyZFN0YXRlQ2hhbmdlIHsgTm9DaGFuZ2UsIFZpc2libGUsIE5vdFZpc2libGUgfTsKQEAg
LTIxOCw4ICsyMjEsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBsZWFyblRleHQoKTsKICAgICB2
b2lkIHNlbmRMZWFyblRleHREZXRhaWxzKGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgdm9pZCBz
cGVsbENoZWNrQmxvY2soV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYsIFdlYkNvcmU6OlRleHRD
aGVja2luZ1Byb2Nlc3NUeXBlKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBnZXRS
YW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KFdlYkNvcmU6OlZpc2libGVQb3Np
dGlvbiBzdGFydFBvc2l0aW9uLCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24p
OwogICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogZ2V0U3BlbGxDaGVja2VyKCk7CiAgICAgYm9v
bCBzaG91bGRTcGVsbENoZWNrRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50KikgY29uc3Q7
CiAgICAgYm9vbCBkaWRTcGVsbENoZWNrV29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkU3BlbGxD
aGVja1dvcmQ7IH0KQEAgLTI2OCw2ICsyNjksNyBAQCBwcml2YXRlOgogICAgIGltZl9zcF90ZXh0
X3QgbV9zcGVsbENoZWNraW5nT3B0aW9uc1JlcXVlc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3NjcmVlbk9mZnNldDsKICAgICBib29sIG1fZGlkU3BlbGxDaGVja1dvcmQ7CisgICAgU3BlbGxp
bmdIYW5kbGVyKiBtX3NwZWxsaW5nSGFuZGxlcjsKIAogICAgIFdURjo6VmVjdG9yPFNwYW5uYWJs
ZUF0dHJpYnV0ZURldGFpbHM+IG1fY2FjaGVkU3Bhbm5hYmxlQXR0cmlidXRlczsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3BlbGxp
bmdIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWYwNjc2OTY0ZTI5YmUwMTcxYjYzOGFlMjYxNjMw
MTkwZTg2ZTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3BlbGxp
bmdIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJET01TdXBwb3J0LmgiCisjaW5jbHVkZSAiSW5wdXRI
YW5kbGVyLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIK
KyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCisK
KyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1JTUYuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1Mb2cuaD4KKworI2RlZmluZSBFTkFCTEVfU1BFTExJTkdfTE9HIDAKKwordXNpbmcg
bmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKKyNpZiBFTkFCTEVfU1BFTExJTkdfTE9HCisjZGVmaW5lIFNwZWxsaW5nTG9nKHNldmVyaXR5
LCBmb3JtYXQsIC4uLikgUGxhdGZvcm06OmxvZ0Fsd2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBf
X1ZBX0FSR1NfXykKKyNlbHNlCisjZGVmaW5lIFNwZWxsaW5nTG9nKHNldmVyaXR5LCBmb3JtYXQs
IC4uLikKKyNlbmRpZiAvLyBFTkFCTEVfU1BFTExJTkdfTE9HCisKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgc190aW1lb3V0ID0gMC4wNTsKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1NwZWxsaW5nSGFuZGxlcjo6U3BlbGxpbmdIYW5kbGVyKElucHV0SGFuZGxl
ciogaW5wdXRIYW5kbGVyKQorICAgIDogbV9pbnB1dEhhbmRsZXIoaW5wdXRIYW5kbGVyKSwKKyAg
ICAgIG1fdGltZXIodGhpcywgJlNwZWxsaW5nSGFuZGxlcjo6cGFyc2VCbG9ja0ZvclNwZWxsQ2hl
Y2tpbmcpLAorICAgICAgbV9pc1NwZWxsQ2hlY2tBY3RpdmUoZmFsc2UpCit7Cit9CisKK1NwZWxs
aW5nSGFuZGxlcjo6flNwZWxsaW5nSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgU3BlbGxpbmdIYW5k
bGVyOjpzcGVsbENoZWNrVGV4dEJsb2NrKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIHZpc2li
bGVTZWxlY3Rpb24sIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHRleHRDaGVja2lu
Z1Byb2Nlc3NUeXBlKQoreworICAgIC8vIENoZWNrIGlmIHRoaXMgcmVxdWVzdCBjYW4gYmUgc2Vu
dCBvZmYgaW4gb25lIG1lc3NhZ2UsIG9yIGlmIGl0IG5lZWRzIHRvIGJlIGJyb2tlbiBkb3duLgor
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5nID0gdmlzaWJsZVNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nIHx8
ICFyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKSB8fCAhcmFuZ2VGb3JTcGVsbENoZWNraW5n
LT50ZXh0KCkubGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNwZWxsY2hlY2sg
QmF0Y2ggcmVxdWVzdHMgYXJlIHVzZWQgd2hlbiBmb2N1c2luZyBhbiBlbGVtZW50LiBEdXJpbmcg
dGhpcyB0aW1lLCB3ZSBtaWdodCBoYXZlIGEgbGluZ2VyaW5nIHJlcXVlc3QKKyAgICAvLyBmcm9t
IGEgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQuCisgICAgaWYgKHRleHRDaGVja2luZ1Byb2Nl
c3NUeXBlID09IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkgeworICAgICAgICAvLyBJZiBhIHBy
ZXZpb3VzIHJlcXVlc3QgaXMgYmVpbmcgcHJvY2Vzc2VkLCBzdG9wIGl0IGJlZm9yZSBjb250aW51
ZWluZy4KKyAgICAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fdGlt
ZXIuc3RvcCgpOworICAgIH0KKworICAgIG1faXNTcGVsbENoZWNrQWN0aXZlID0gdHJ1ZTsKKwor
ICAgIC8vIElmIHdlIGhhdmUgYSBiYXRjaCByZXF1ZXN0LCB0cnkgdG8gc2VuZCBvZmYgdGhlIGVu
dGlyZSBibG9jay4KKyAgICBpZiAodGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgPT0gVGV4dENoZWNr
aW5nUHJvY2Vzc0JhdGNoKSB7CisgICAgICAgIC8vIElmIHRvdGFsIGJsb2NrIHRleHQgaXMgdW5k
ZXIgdGhlIGxpbWl0ZWQgYW1vdW50LCBzZW5kIHRoZSBlbnRpcmUgY2h1bmsuCisgICAgICAgIGlm
IChyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSA8IE1heFNwZWxsQ2hlY2tp
bmdTdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJh
bmdlRm9yU3BlbGxDaGVja2luZywgVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFNpbmNlIHdlIGNvdWxkbid0
IGNoZWNrIHRoZSBlbnRpcmUgYmxvY2sgYXQgb25jZSwgc2V0IHVwIHN0YXJ0aW5nIGFuZCBlbmRp
bmcgbWFya2VycyB0byBmaXJlIGluY3JlbWVudGFsbHkuCisgICAgbV9zdGFydE9mQ3VycmVudExp
bmUgPSBzdGFydE9mTGluZSh2aXNpYmxlU2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsKKyAgICBt
X2VuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUobV9zdGFydE9mQ3VycmVudExpbmUpOworICAg
IG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgPSB0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZTsKKwor
ICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFNwZWxsaW5nSGFuZGxlcjo6
Y3JlYXRlU3BlbGxDaGVja1JlcXVlc3QoUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VG
b3JTcGVsbENoZWNraW5nUHRyLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0ZXh0
Q2hlY2tpbmdQcm9jZXNzVHlwZSkKK3sKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpSYW5nZT4g
cmFuZ2VGb3JTcGVsbENoZWNraW5nID0gcmFuZ2VGb3JTcGVsbENoZWNraW5nUHRyOworICAgIGlm
IChpc1NwZWxsQ2hlY2tBY3RpdmUoKSkgeworICAgICAgICBtX2lucHV0SGFuZGxlci0+Y2FsbFJl
cXVlc3RDaGVja2luZ0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5
cGVTcGVsbGluZywgdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIHJhbmdlRm9yU3BlbGxDaGVja2lu
ZywgcmFuZ2VGb3JTcGVsbENoZWNraW5nKSk7CisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KHNfdGltZW91dCk7CisgICAgfQorfQorCit2b2lkIFNwZWxsaW5nSGFuZGxlcjo6cGFyc2VCbG9j
a0ZvclNwZWxsQ2hlY2tpbmcoV2ViQ29yZTo6VGltZXI8U3BlbGxpbmdIYW5kbGVyPiopCit7Cisg
ICAgaWYgKGlzRW5kT2ZEb2N1bWVudChtX3N0YXJ0T2ZDdXJyZW50TGluZSkpIHsKKyAgICAgICAg
bV9pc1NwZWxsQ2hlY2tBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIENyZWF0ZSBhIHNlbGVjdGlvbiB3aXRoIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyBv
ZiB0aGUgbGluZSwgYW5kIGNvbnZlcnQgdG8gUmFuZ2UgdG8gY3JlYXRlIGEgU3BlbGxDaGVja1Jl
cXVlc3QuCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBWaXNpYmxl
U2VsZWN0aW9uKG1fc3RhcnRPZkN1cnJlbnRMaW5lLCBtX2VuZE9mQ3VycmVudExpbmUpLnRvTm9y
bWFsaXplZFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZUZvclNwZWxsQ2hlY2tpbmcpIHsKKyAgICAg
ICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNwZWxsaW5nSGFuZGxlcjo6
c3BlbGxDaGVja0Jsb2NrIEZhaWxlZCB0byBzZXQgdGV4dCByYW5nZSBmb3Igc3BlbGxjaGVja2lu
Zy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyYW5nZUZvclNwZWxsQ2hl
Y2tpbmctPnRleHQoKS5sZW5ndGgoKSA8IE1heFNwZWxsQ2hlY2tpbmdTdHJpbmdMZW5ndGgpIHsK
KyAgICAgICAgbV9zdGFydE9mQ3VycmVudExpbmUgPSBuZXh0TGluZVBvc2l0aW9uKG1fc3RhcnRP
ZkN1cnJlbnRMaW5lLCBtX3N0YXJ0T2ZDdXJyZW50TGluZS5saW5lRGlyZWN0aW9uUG9pbnRGb3JC
bG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSk7CisgICAgICAgIG1fZW5kT2ZDdXJyZW50TGluZSA9
IGVuZE9mTGluZShtX3N0YXJ0T2ZDdXJyZW50TGluZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gSXRlcmF0ZSB0aHJvdWdoIHdvcmRzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRvIHRo
ZSBlbmQuCisgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IGdldFJhbmdlRm9yU3BlbGxD
aGVja1dpdGhGaW5lR3JhbnVsYXJpdHkobV9zdGFydE9mQ3VycmVudExpbmUsIG1fZW5kT2ZDdXJy
ZW50TGluZSk7CisgICAgICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKSB7CisgICAgICAg
ICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiU3BlbGxpbmdIYW5kbGVy
OjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNldCB0ZXh0IHJhbmdlIHdpdGggZmluZSBncmFu
dWxhcml0eS4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX3N0
YXJ0T2ZDdXJyZW50TGluZSA9IFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmct
PmVuZFBvc2l0aW9uKCkpOworICAgICAgICBtX2VuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUo
bV9zdGFydE9mQ3VycmVudExpbmUpOworICAgICAgICByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBE
T01TdXBwb3J0Ojp0cmltV2hpdGVzcGFjZUZyb21SYW5nZShWaXNpYmxlUG9zaXRpb24ocmFuZ2VG
b3JTcGVsbENoZWNraW5nLT5zdGFydFBvc2l0aW9uKCkpLCBWaXNpYmxlUG9zaXRpb24ocmFuZ2VG
b3JTcGVsbENoZWNraW5nLT5lbmRQb3NpdGlvbigpKSk7CisgICAgfQorCisgICAgU3BlbGxpbmdM
b2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgIlNwZWxsaW5nSGFuZGxlcjo6c3Bl
bGxDaGVja0Jsb2NrIFN1YnN0cmluZyB0ZXh0IGlzICclcycsIG9mIHNpemUgJWQiLAorICAgICAg
ICByYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sYXRpbjEoKS5kYXRhKCksCisgICAgICAg
IHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpKTsKKworICAgIC8vIENhbGwg
c3BlbGxjaGVjayB3aXRoIHN1YnN0cmluZy4KKyAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChy
YW5nZUZvclNwZWxsQ2hlY2tpbmcsIG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpOworfQorCitQ
YXNzUmVmUHRyPFJhbmdlPiBTcGVsbGluZ0hhbmRsZXI6OmdldFJhbmdlRm9yU3BlbGxDaGVja1dp
dGhGaW5lR3JhbnVsYXJpdHkoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24s
IFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbikKK3sKKyAgICBWaXNpYmxlUG9z
aXRpb24gZW5kT2ZDdXJyZW50V29yZCA9IGVuZE9mV29yZChzdGFydFBvc2l0aW9uKTsKKworICAg
IC8vIEtlZXAgaXRlcmF0aW5nIHVudGlsIG9uZSBvZiBvdXIgY2FzZXMgaXMgaGl0LCBvciB3ZSd2
ZSBpbmNyZW1lbnRlZCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gcmlnaHQgdG8gdGhlIGVuZC4KKyAg
ICB3aGlsZSAoc3RhcnRQb3NpdGlvbiAhPSBlbmRQb3NpdGlvbikgeworICAgICAgICAvLyBDaGVj
ayB0aGUgdGV4dCBsZW5ndGggd2l0aGluIHRoaXMgcmFuZ2UuCisgICAgICAgIGlmIChWaXNpYmxl
U2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZE9mQ3VycmVudFdvcmQpLnRvTm9ybWFsaXplZFJh
bmdlKCktPnRleHQoKS5sZW5ndGgoKSA+PSBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7
CisgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgd29yZCwgcmV0dXJuIGEg
UmFuZ2Ugd2l0aCBlbmQgYm91bmRhcnkgc2V0IHRvIHRoZSBwcmV2aW91cyB3b3JkLgorICAgICAg
ICAgICAgaWYgKHN0YXJ0T2ZXb3JkKGVuZE9mQ3VycmVudFdvcmQsIExlZnRXb3JkSWZPbkJvdW5k
YXJ5KSAhPSBzdGFydFBvc2l0aW9uICYmICFET01TdXBwb3J0Ojppc0VtcHR5UmFuZ2VPckFsbFNw
YWNlcyhzdGFydFBvc2l0aW9uLCBlbmRPZkN1cnJlbnRXb3JkKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRPZldvcmQocHJldmlvdXNX
b3JkUG9zaXRpb24oZW5kT2ZDdXJyZW50V29yZCksIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSkudG9O
b3JtYWxpemVkUmFuZ2UoKTsKKworICAgICAgICAgICAgLy8gT3VyIGZpcnN0IHdvcmQgaGFzIGdv
bmUgb3ZlciB0aGUgY2hhcmFjdGVyIGxpbWl0LiBJbmNyZW1lbnQgdGhlIHN0YXJ0aW5nIHBvc2l0
aW9uIHBhc3QgYW4gdW5jaGVja2FibGUgd29yZC4KKyAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24g
PSBlbmRPZkN1cnJlbnRXb3JkOworICAgICAgICAgICAgZW5kT2ZDdXJyZW50V29yZCA9IGVuZE9m
V29yZChuZXh0V29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpKTsKKyAgICAgICAgfSBlbHNl
IGlmIChlbmRPZkN1cnJlbnRXb3JkID09IGVuZFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7IC8vIFJldHVybiB0aGUgbGFzdCBzZWdtZW50IGlmIHRoZSBlbmQgb2Ygb3VyIHdv
cmQgbGllcyBhdCB0aGUgZW5kIG9mIHRoZSByYW5nZS4KKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZW5kT2ZDdXJyZW50V29yZCA9IGVuZE9mV29yZChuZXh0V29yZFBvc2l0aW9uKGVuZE9mQ3Vy
cmVudFdvcmQpKTsgLy8gSW5jcmVtZW50IHRoZSBjdXJyZW50IHdvcmQuCisgICAgfQorICAgIHJl
dHVybiAwOworfQorCit9IC8vIFdlYktpdAorfSAvLyBCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiODNmZWMzNjZhN2M0NzFiOWVjYThiZGM0NmI3ODE0ODY1OWE2MDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
cGVsbGluZ0hhbmRsZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICov
CisKKyNpZm5kZWYgU3BlbGxpbmdIYW5kbGVyX2gKKyNkZWZpbmUgU3BlbGxpbmdIYW5kbGVyX2gK
KworI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKKyNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgi
CisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKy8qKgorICogU3BlbGxpbmdIYW5kbGVyCisg
Ki8KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmFuZ2U7CitjbGFzcyBTcGVsbENoZWNr
ZXI7CitjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOworY2xhc3MgVmlzaWJsZVBvc2l0aW9uOworfQor
CituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5w
dXRIYW5kbGVyOworCitjbGFzcyBTcGVsbGluZ0hhbmRsZXIgeworcHVibGljOgorICAgIFNwZWxs
aW5nSGFuZGxlcihJbnB1dEhhbmRsZXIqKTsKKyAgICB+U3BlbGxpbmdIYW5kbGVyKCk7CisKKyAg
ICB2b2lkIHNwZWxsQ2hlY2tUZXh0QmxvY2soV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYsIFdl
YkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKKyAgICBib29sIGlzU3BlbGxDaGVja0Fj
dGl2ZSgpIHsgcmV0dXJuIG1faXNTcGVsbENoZWNrQWN0aXZlOyB9CisgICAgdm9pZCBzZXRTcGVs
bENoZWNrQWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1faXNTcGVsbENoZWNrQWN0aXZlID0gYWN0aXZl
OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmdQdHIsIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKKyAgICB2b2lkIHBhcnNlQmxvY2tGb3JTcGVsbENoZWNr
aW5nKFdlYkNvcmU6OlRpbWVyPFNwZWxsaW5nSGFuZGxlcj4qKTsKKyAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uLCBXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb24gZW5kUG9zaXRpb24pOworCisgICAgSW5wdXRIYW5kbGVyKiBtX2lucHV0SGFuZGxlcjsK
KworICAgIFdlYkNvcmU6OlRpbWVyPFNwZWxsaW5nSGFuZGxlcj4gbV90aW1lcjsKKyAgICBXZWJD
b3JlOjpWaXNpYmxlUG9zaXRpb24gbV9zdGFydE9mQ3VycmVudExpbmU7CisgICAgV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uIG1fZW5kT2ZDdXJyZW50TGluZTsKKyAgICBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdQcm9jZXNzVHlwZSBtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlOworICAgIGJvb2wgbV9p
c1NwZWxsQ2hlY2tBY3RpdmU7Cit9OworCit9IC8vIFdlYktpdAorfSAvLyBCbGFja0JlcnJ5CisK
KyNlbmRpZiAvLyBTcGVsbGluZ0hhbmRsZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183470</attachid>
            <date>2013-01-18 08:55:47 -0800</date>
            <delta_ts>2013-01-18 09:12:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107284-20130118114641.patch</filename>
            <type>text/plain</type>
            <size>24803</size>
            <attacher name="Nima Ghanavatian">nghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAxYmRkZjdiYTRjZjcxZGE3YmM0ZGJkNzNkMTEzMTVjM2JkMGQzNmQ0Li41ZTQxNTQxOTBm
YzIyZDkwZTI1YmI5ODJjOWNkNDA0OTg5ZmUyOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsNSArMSw1MyBAQAogMjAxMy0wMS0xOCAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgogCisgICAgICAgIFtCbGFja0JlcnJ5XSBTZXQgc3BlbGxjaGVj
a2luZyBjYWxjdWxhdGlvbnMgb24gYSB0aW1lciB0byBmcmVlIHVwIHRoZSBXZWJLaXQgdGhyZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUjI4MjM1
MQorICAgICAgICBGaXJpbmcgb2ZmIHNwZWxsY2hlY2sgcmVxdWVzdHMgaXMgdGllaW5nIHVwIHRo
ZSBXZWJLaXQgdGhyZWFkIGZvciBhbgorICAgICAgICBleHRlbmRlZCBwZXJpb2Qgb2YgdGltZS4g
SW4gdGVzdGluZyB3aXRoIGxhcmdlIGJsb2NrcyBvZiB0ZXh0LCB0aGlzCisgICAgICAgIGNhbiBi
ZSBpbiB0aGUgbWF0dGVyIG9mIDUtMTAgc2Vjb25kcy4gVGhvdWdoIHdlIGFyZSB1c2luZyBhc3lu
Y2hyb25vdXMKKyAgICAgICAgc3BlbGxjaGVja2luZywgdGhlIHByb2Nlc3MgaW4gd2hpY2ggd2Ug
YnJlYWsgZG93biBibG9ja3Mgb2YgdGV4dCBiYXNlZAorICAgICAgICBvbiBpbnB1dF9zZXJ2aWNl
IGxpbWl0YXRpb25zIGlzIHRoZSBpc3N1ZS4KKyAgICAgICAgVXNpbmcgYSB0aW1lciBoZXJlIHdo
aWNoIGZpcmVzIHdpdGggYW4gYXJiaXRyYXJ5IHRpbWVvdXQgdG8gYWxsb3cgZm9yCisgICAgICAg
IGZvY3VzIGFuZCBpbnRlcmFjdGlvbiB0byBtYWludGFpbiBhdCBhIHJlYXNvbmFibGUgbGV2ZWwu
CisgICAgICAgIEZ1cnRoZXIsIHB1bGxpbmcgdGhpcyBjb2RlIG91dCBvZiBJbnB1dEhhbmRsZXIg
YW5kIGludG8gaXRzIG93biBjbGFzcy4KKworICAgICAgICBJbnRlcm5hbGx5IHJldmlld2VkIGJ5
IE1pa2UgRmVudG9uIGFuZCBHZW4gTWFrLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6
OklucHV0SGFuZGxlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxl
cjo6fklucHV0SGFuZGxlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFu
ZGxlcjo6Y2FsbFJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENo
ZWNraW5nUmVxdWVzdFByb2Nlc3NlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oklu
cHV0SGFuZGxlcjo6c2hvdWxkUmVxdWVzdFNwZWxsQ2hlY2tpbmdPcHRpb25zRm9yUG9pbnQpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZv
Y3VzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldEVs
ZW1lbnRGb2N1c2VkKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5wdXRIYW5k
bGVyKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxp
bmdIYW5kbGVyOjpTcGVsbGluZ0hhbmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpTcGVsbGluZ0hhbmRsZXI6On5TcGVsbGluZ0hhbmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6OnNwZWxsQ2hlY2tUZXh0QmxvY2spOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tS
ZXF1ZXN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxpbmdIYW5kbGVyOjpw
YXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNwZWxsaW5nSGFuZGxlcjo6Z2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0
eSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChTcGVsbGluZ0hh
bmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6Omlz
U3BlbGxDaGVja0FjdGl2ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5n
SGFuZGxlcjo6c2V0U3BlbGxDaGVja0FjdGl2ZSk6CisKKzIwMTMtMDEtMTggIE5pbWEgR2hhbmF2
YXRpYW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gQ2hl
Y2sgaWYgY29udGludW91cyBzcGVsbGNoZWNraW5nIGlzIGVuYWJsZWQgYmVmb3JlIHByb2Nlc3Np
bmcgYSByZXF1ZXN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcxNjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCAw
ZDdlZjI4NjVmNjVkMTZlMDE4NDRjOTNkMzZhOTA0NzE4MjVhOGIzLi45NDA5MDBmYTcxYTdhMjMw
Njg0MmNlOTczYzUwNzExNzgwNGU1ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJy
eS5jbWFrZQpAQCAtMTM5LDYgKzEzOSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAg
ICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcAogICAgIGJsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9TZWxlY3Rpb25PdmVybGF5LmNwcAorICAgIGJsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1
cmZhY2VQb29sLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Ub3VjaEV2ZW50SGFu
ZGxlci5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuY3BwCmluZGV4IGYxNmUwYmExZGNiZDE5ZThhMjllZGY3ZmI2YWQ3YzZkNjE5N2VmYzEu
LjFjOThiYzhkN2JjMjcyODc1MDI2MzM4OWRiYjNmMTJiZjRkZTRjYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJFZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTU1
LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTZWxlY3RQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlNl
bGVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJT
cGVsbGluZ0hhbmRsZXIuaCIKICNpbmNsdWRlICJTdWdnZXN0aW9uQm94SGFuZGxlci5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBA
IC0xNDgsMTEgKzE1MCwxMyBAQCBJbnB1dEhhbmRsZXI6OklucHV0SGFuZGxlcihXZWJQYWdlUHJp
dmF0ZSogcGFnZSkKICAgICAsIG1fc2hvdWxkTm90aWZ5V2ViVmlldyh0cnVlKQogICAgICwgbV9l
eHBlY3RlZEtleVVwQ2hhcigwKQogICAgICwgbV9kaWRTcGVsbENoZWNrV29yZChmYWxzZSkKKyAg
ICAsIG1fc3BlbGxpbmdIYW5kbGVyKG5ldyBTcGVsbGluZ0hhbmRsZXIodGhpcykpCiB7CiB9CiAK
IElucHV0SGFuZGxlcjo6fklucHV0SGFuZGxlcigpCiB7CisgICAgZGVsZXRlIG1fc3BlbGxpbmdI
YW5kbGVyOwogfQogCiBzdGF0aWMgQmxhY2tCZXJyeUlucHV0VHlwZSBjb252ZXJ0SW5wdXRUeXBl
KGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCkKQEAgLTU4MSw2ICs1ODUsMTIg
QEAgdm9pZCBJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCgpCiAgICAgc2VuZExlYXJuVGV4dERldGFp
bHModGV4dEluRmllbGQpOwogfQogCit2b2lkIElucHV0SGFuZGxlcjo6Y2FsbFJlcXVlc3RDaGVj
a2luZ0ZvcihQYXNzUmVmUHRyPFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0PiBzcGVsbENoZWNr
UmVxdWVzdCkKK3sKKyAgICBpZiAoU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBnZXRTcGVs
bENoZWNrZXIoKSkKKyAgICAgICAgc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3Ioc3Bl
bGxDaGVja1JlcXVlc3QpOworfQorCiB2b2lkIElucHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0PiB0ZXh0Q2hl
Y2tpbmdSZXF1ZXN0KQogewogICAgIG1fcmVxdWVzdCA9IHRleHRDaGVja2luZ1JlcXVlc3Q7CkBA
IC02MDgsNyArNjE4LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWUKICAgICAgICAgICAgIC8v
IGVudGVyIHRvIGZpbmlzaCBjb21wb3NpbmcgYSB3b3JkIGFuZCBjcmVhdGUgYSBuZXcgbGluZS4K
ICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9jdXJyZW50Rm9j
dXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c3RhcnQoKTsKICAg
ICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbiA9IFZpc2libGVTZWxl
Y3Rpb24ocHJldmlvdXNMaW5lUG9zaXRpb24oY2FyZXRQb3NpdGlvbiwgY2FyZXRQb3NpdGlvbi5s
aW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSksIGNhcmV0UG9z
aXRpb24pOwotICAgICAgICAgICAgc3BlbGxDaGVja0Jsb2NrKHZpc2libGVTZWxlY3Rpb24sIFRl
eHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCk7CisgICAgICAgICAgICBtX3NwZWxsaW5nSGFu
ZGxlci0+c3BlbGxDaGVja1RleHRCbG9jayh2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzSW5jcmVtZW50YWwpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC02NjAsNyArNjcwLDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0
UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmwKICAgICAgICAgbV9wcm9j
ZXNzaW5nVHJhbnNhY3Rpb25JZCwKICAgICAgICAgdHJhbnNhY3Rpb25JZCA9PSBtX3Byb2Nlc3Np
bmdUcmFuc2FjdGlvbklkID8gIiIgOiAiV2UgYXJlIG91dCBvZiBzeW5jIHdpdGggaW5wdXQgc2Vy
dmljZS4iKTsKIAotICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nIHx8ICFpc0FjdGl2ZVRleHRFZGl0
KCkgfHwgIURPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQobV9jdXJyZW50Rm9jdXNFbGVtZW50KSkgeworICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nIHx8
ICFpc0FjdGl2ZVRleHRFZGl0KCkgfHwgIURPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQobV9jdXJyZW50Rm9jdXNFbGVtZW50KSB8fCAhbV9wcm9jZXNz
aW5nVHJhbnNhY3Rpb25JZCkgewogICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2
ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZCBDYW5j
ZWxsaW5nIHJlcXVlc3Qgd2l0aCB0cmFuc2FjdGlvbklkICVkLiIsIHRyYW5zYWN0aW9uSWQpOwog
ICAgICAgICBtX3JlcXVlc3QtPmRpZENhbmNlbCgpOwogICAgICAgICBtX3Byb2Nlc3NpbmdUcmFu
c2FjdGlvbklkID0gLTE7CkBAIC03NTYsNyArNzY2LDcgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNo
b3VsZFJlcXVlc3RTcGVsbENoZWNraW5nT3B0aW9uc0ZvclBvaW50KGNvbnN0IFBsYXRmb3JtOjpJ
bnQKIAogICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCiAgICAgICAgICJJ
bnB1dEhhbmRsZXI6OnNob3VsZFJlcXVlc3RTcGVsbENoZWNraW5nT3B0aW9uc0ZvclBvaW50IEZv
dW5kIHNwZWxsaW5nIG1hcmtlciBhdCBwb2ludCAlc1xuTWFya2VyIHN0YXJ0ICVkIGVuZCAlZCIs
Ci0gICAgICAgIHBvaW50LnRvU3RyaW5nKCkuY19zdHIoKSwKKyAgICAgICAgZG9jdW1lbnRDb250
ZW50UG9zaXRpb24udG9TdHJpbmcoKS5jX3N0cigpLAogICAgICAgICBzcGVsbENoZWNraW5nT3B0
aW9uUmVxdWVzdC5zdGFydFRleHRQb3NpdGlvbiwKICAgICAgICAgc3BlbGxDaGVja2luZ09wdGlv
blJlcXVlc3QuZW5kVGV4dFBvc2l0aW9uKTsKIApAQCAtODY1LDYgKzg3NSw5IEBAIHZvaWQgSW5w
dXRIYW5kbGVyOjpzZXRFbGVtZW50VW5mb2N1c2VkKGJvb2wgcmVmb2N1c09jY3VyaW5nKQogICAg
ICAgICAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS0+c2V0Rm9jdXNlZCh0cnVlKTsKICAgICB9CiAKKyAgICBtX3NwZWxsaW5nSGFuZGxl
ci0+c2V0U3BlbGxDaGVja0FjdGl2ZShmYWxzZSk7CisgICAgbV9wcm9jZXNzaW5nVHJhbnNhY3Rp
b25JZCA9IDA7CisKICAgICAvLyBDbGVhciB0aGUgbm9kZSBkZXRhaWxzLgogICAgIG1fY3VycmVu
dEZvY3VzRWxlbWVudCA9IDA7CiAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50VHlwZSA9IFRleHRF
ZGl0OwpAQCAtMTA1NCwxMiArMTA2NywxMiBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVu
dEZvY3VzZWQoRWxlbWVudCogZWxlbWVudCkKICNlbmRpZgogCiAgICAgLy8gQ2hlY2sgaWYgdGhl
IGZpZWxkIHNob3VsZCBiZSBzcGVsbGNoZWNrZWQuCi0gICAgaWYgKCFzaG91bGRTcGVsbENoZWNr
RWxlbWVudChlbGVtZW50KSkKKyAgICBpZiAoIXNob3VsZFNwZWxsQ2hlY2tFbGVtZW50KGVsZW1l
bnQpIHx8ICFpc0FjdGl2ZVRleHRFZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNw
ZWxsY2hlY2sgdGhlIGZpZWxkIGluIGl0cyBlbnRpcmV0eS4KICAgICBWaXNpYmxlU2VsZWN0aW9u
IGZvY3VzZWRCbG9jayA9IERPTVN1cHBvcnQ6OnZpc2libGVTZWxlY3Rpb25Gb3JJbnB1dEVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgc3BlbGxDaGVja0Jsb2NrKGZvY3VzZWRCbG9jaywgVGV4dENoZWNr
aW5nUHJvY2Vzc0JhdGNoKTsKKyAgICBtX3NwZWxsaW5nSGFuZGxlci0+c3BlbGxDaGVja1RleHRC
bG9jayhmb2N1c2VkQmxvY2ssIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7CiAKICNpZmRlZiBF
TkFCTEVfU1BFTExJTkdfTE9HCiAgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQgU3BlbGxjaGVja2luZyB0aGUgZmll
bGQgaW5jcmVhc2VkIHRoZSB0b3RhbCB0aW1lIHRvIGZvY3VzIHRvICVmIHNlY29uZHMuIiwgdGlt
ZXIuZWxhcHNlZCgpKTsKQEAgLTEwOTIsOTAgKzExMDUsNiBAQCB2b2lkIElucHV0SGFuZGxlcjo6
cmVkcmF3U3BlbGxDaGVja0RpYWxvZ0lmUmVxdWlyZWQoY29uc3QgYm9vbCBzaG91bGRNb3ZlRGlh
bG9nKQogICAgIH0KIH0KIAotdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayhWaXNp
YmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0
ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSkKLXsKLSAgICBpZiAoIWlzQWN0aXZlVGV4dEVkaXQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tp
bmcgPSB2aXNpYmxlU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKCFyYW5n
ZUZvclNwZWxsQ2hlY2tpbmcgfHwgIXJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpIHx8ICFy
YW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBnZXRTcGVsbENoZWNrZXIoKTsKLSAg
ICBpZiAoIXNwZWxsQ2hlY2tlcikgewotICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNwZWxs
Y2hlY2sgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50LiIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gSWYgd2UgaGF2ZSBhIGJhdGNoIHJlcXVlc3QsIHRyeSB0byBzZW5kIG9m
ZiB0aGUgZW50aXJlIGJsb2NrLgotICAgIGlmICh0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBU
ZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpIHsKLSAgICAgICAgLy8gSWYgdG90YWwgYmxvY2sgdGV4
dCBpcyB1bmRlciB0aGUgbGltaXRlZCBhbW91bnQsIHNlbmQgdGhlIGVudGlyZSBjaHVuay4KLSAg
ICAgICAgaWYgKHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpIDwgTWF4U3Bl
bGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgc3BlbGxDaGVja2VyLT5yZXF1
ZXN0Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmcsIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VGb3JTcGVsbENoZWNraW5n
LCByYW5nZUZvclNwZWxsQ2hlY2tpbmcpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIC8vIFNpbmNlIHdlIGNvdWxkbid0IGNoZWNrIHRoZSBlbnRpcmUgYmxv
Y2sgYXQgb25jZSwgc2V0IHVwIHN0YXJ0aW5nIGFuZCBlbmRpbmcgbWFya2VycyB0byBmaXJlIGlu
Y3JlbWVudGFsbHkuCi0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zID0gdmlzaWJsZVNlbGVj
dGlvbi52aXNpYmxlU3RhcnQoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkN1cnJlbnRM
aW5lID0gc3RhcnRPZkxpbmUoc3RhcnRQb3MpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkN1
cnJlbnRMaW5lID0gZW5kT2ZMaW5lKHN0YXJ0T2ZDdXJyZW50TGluZSk7Ci0KLSAgICB3aGlsZSAo
IWlzRW5kT2ZCbG9jayhzdGFydE9mQ3VycmVudExpbmUpKSB7Ci0gICAgICAgIC8vIENyZWF0ZSBh
IHNlbGVjdGlvbiB3aXRoIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyBvZiB0aGUgbGluZSwgYW5k
IGNvbnZlcnQgdG8gUmFuZ2UgdG8gY3JlYXRlIGEgU3BlbGxDaGVja1JlcXVlc3QuCi0gICAgICAg
IHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZkN1cnJlbnRM
aW5lLCBlbmRPZkN1cnJlbnRMaW5lKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotCi0gICAgICAgIGlm
IChyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSA8IE1heFNwZWxsQ2hlY2tp
bmdTdHJpbmdMZW5ndGgpIHsKLSAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50TGluZSA9IG5leHRM
aW5lUG9zaXRpb24oc3RhcnRPZkN1cnJlbnRMaW5lLCBzdGFydE9mQ3VycmVudExpbmUubGluZURp
cmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkpOwotICAgICAgICAgICAg
ZW5kT2ZDdXJyZW50TGluZSA9IGVuZE9mTGluZShzdGFydE9mQ3VycmVudExpbmUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHdvcmRzIGZyb20gdGhl
IHN0YXJ0IG9mIHRoZSBsaW5lIHRvIHRoZSBlbmQuCi0gICAgICAgICAgICByYW5nZUZvclNwZWxs
Q2hlY2tpbmcgPSBnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KHN0YXJ0
T2ZDdXJyZW50TGluZSwgZW5kT2ZDdXJyZW50TGluZSk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdl
Rm9yU3BlbGxDaGVja2luZykgewotICAgICAgICAgICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3Jt
OjpMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayBGYWlsZWQgdG8g
c2V0IHRleHQgcmFuZ2UgZm9yIHNwZWxsY2hlY2tpbmciKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGFydE9mQ3VycmVudExpbmUgPSBWaXNp
YmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5lbmRQb3NpdGlvbigpKTsKLSAgICAg
ICAgICAgIGVuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUoc3RhcnRPZkN1cnJlbnRMaW5lKTsK
LSAgICAgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IERPTVN1cHBvcnQ6OnRyaW1XaGl0
ZXNwYWNlRnJvbVJhbmdlKFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnN0
YXJ0UG9zaXRpb24oKSksIFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPmVu
ZFBvc2l0aW9uKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3Jt
OjpMb2dMZXZlbEluZm8sCi0gICAgICAgICAgICAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxv
Y2sgU3Vic3RyaW5nIHRleHQgaXMgJyVzJywgb2Ygc2l6ZSAlZCIsCi0gICAgICAgICAgICByYW5n
ZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sYXRpbjEoKS5kYXRhKCksCi0gICAgICAgICAgICBy
YW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSk7Ci0KLSAgICAgICAgLy8gQ2Fs
bCBzcGVsbGNoZWNrIHdpdGggc3Vic3RyaW5nLgotICAgICAgICBzcGVsbENoZWNrZXItPnJlcXVl
c3RDaGVja2luZ0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZywgVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcs
IHJhbmdlRm9yU3BlbGxDaGVja2luZykpOwotICAgIH0KLX0KLQotUGFzc1JlZlB0cjxSYW5nZT4g
SW5wdXRIYW5kbGVyOjpnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KFZp
c2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uLCBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24p
Ci17Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQoc3Rh
cnRQb3NpdGlvbik7Ci0KLSAgICAvLyBLZWVwIGl0ZXJhdGluZyB1bnRpbCBvbmUgb2Ygb3VyIGNh
c2VzIGlzIGhpdCwgb3Igd2UndmUgaW5jcmVtZW50ZWQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIHJp
Z2h0IHRvIHRoZSBlbmQuCi0gICAgd2hpbGUgKHN0YXJ0UG9zaXRpb24gIT0gZW5kUG9zaXRpb24p
IHsKLSAgICAgICAgLy8gQ2hlY2sgdGhlIHRleHQgbGVuZ3RoIHdpdGhpbiB0aGlzIHJhbmdlLgot
ICAgICAgICBpZiAoVmlzaWJsZVNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRPZkN1cnJlbnRX
b3JkKS50b05vcm1hbGl6ZWRSYW5nZSgpLT50ZXh0KCkubGVuZ3RoKCkgPj0gTWF4U3BlbGxDaGVj
a2luZ1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIGZp
cnN0IHdvcmQsIHJldHVybiBhIFJhbmdlIHdpdGggZW5kIGJvdW5kYXJ5IHNldCB0byB0aGUgcHJl
dmlvdXMgd29yZC4KLSAgICAgICAgICAgIGlmIChzdGFydE9mV29yZChlbmRPZkN1cnJlbnRXb3Jk
LCBMZWZ0V29yZElmT25Cb3VuZGFyeSkgIT0gc3RhcnRQb3NpdGlvbiAmJiAhRE9NU3VwcG9ydDo6
aXNFbXB0eVJhbmdlT3JBbGxTcGFjZXMoc3RhcnRQb3NpdGlvbiwgZW5kT2ZDdXJyZW50V29yZCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwg
ZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpLCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0KLSAgICAgICAgICAgIC8vIE91
ciBmaXJzdCB3b3JkIGhhcyBnb25lIG92ZXIgdGhlIGNoYXJhY3RlciBsaW1pdC4gSW5jcmVtZW50
IHRoZSBzdGFydGluZyBwb3NpdGlvbiBwYXN0IGFuIHVuY2hlY2thYmxlIHdvcmQuCi0gICAgICAg
ICAgICBzdGFydFBvc2l0aW9uID0gZW5kT2ZDdXJyZW50V29yZDsKLSAgICAgICAgICAgIGVuZE9m
Q3VycmVudFdvcmQgPSBlbmRPZldvcmQobmV4dFdvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3Jk
KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZW5kT2ZDdXJyZW50V29yZCA9PSBlbmRQb3NpdGlvbikg
ewotICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBsYXN0IHNlZ21lbnQgaWYgdGhlIGVuZCBvZiBv
dXIgd29yZCBsaWVzIGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLgotICAgICAgICAgICAgcmV0dXJu
IFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhl
IGN1cnJlbnQgd29yZC4KLSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQo
bmV4dFdvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3JkKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuRGF0ZVBvcHVwKEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQsIEJsYWNrQmVycnlJbnB1dFR5cGUgdHlwZSkKIHsKICAgICBp
ZiAoIWVsZW1lbnQgfHwgZWxlbWVudC0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50LT5yZWFkT25seSgp
IHx8ICFET01TdXBwb3J0Ojppc0RhdGVUaW1lSW5wdXRGaWVsZChlbGVtZW50KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5o
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgK
aW5kZXggZDg2MGNiNDA3MTY1NGFlMzM5ZGZjN2QwZTJlYjk0NjFlNzZiYjEwYy4uOTM4NjRjMDMx
NWUwMGY3NzVmZTkzZDI3OTY2OGNmYjg1OGI3MjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKQEAgLTQ3LDYgKzQ3
LDcgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFNw
ZWxsQ2hlY2tlcjsKK2NsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgVGV4dENoZWNraW5n
UmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247
CkBAIC02Miw2ICs2Myw3IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBTcGVsbGluZ0hhbmRsZXI7CiBjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKIAog
Y2xhc3MgSW5wdXRIYW5kbGVyIHsKQEAgLTE1Miw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgaW50
MzJfdCBzZXRDb21wb3NpbmdUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCosIGludDMyX3QgcmVsYXRp
dmVDdXJzb3JQb3NpdGlvbik7CiAgICAgaW50MzJfdCBjb21taXRUZXh0KHNwYW5uYWJsZV9zdHJp
bmdfdCosIGludDMyX3QgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbik7CiAKLSAgICB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXF1ZXN0Pik7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFdl
YkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+KTsKICAgICB2b2lkIHNwZWxsQ2hlY2tpbmdSZXF1
ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmxlX3N0cmluZ190Kik7
CiAgICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpbnQzMl90IHRyYW5zYWN0
aW9uSWQpOwogCkBAIC0xNjIsNiArMTY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkcmF3U3Bl
bGxDaGVja0RpYWxvZ0lmUmVxdWlyZWQoY29uc3QgYm9vbCBzaG91bGRNb3ZlRGlhbG9nID0gdHJ1
ZSk7CiAKICAgICB2b2lkIGVsZW1lbnRUb3VjaGVkKFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICB2
b2lkIGNhbGxSZXF1ZXN0Q2hlY2tpbmdGb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpTcGVsbENoZWNr
UmVxdWVzdD4pOwogCiBwcml2YXRlOgogICAgIGVudW0gUGVuZGluZ0tleWJvYXJkU3RhdGVDaGFu
Z2UgeyBOb0NoYW5nZSwgVmlzaWJsZSwgTm90VmlzaWJsZSB9OwpAQCAtMjE4LDggKzIyMSw2IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGxlYXJuVGV4dCgpOwogICAgIHZvaWQgc2VuZExlYXJuVGV4
dERldGFpbHMoY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIHNwZWxsQ2hlY2tCbG9jayhX
ZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiwgV2ViQ29yZTo6VGV4dENoZWNraW5nUHJvY2Vzc1R5
cGUpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGdldFJhbmdlRm9yU3BlbGxDaGVj
a1dpdGhGaW5lR3JhbnVsYXJpdHkoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRp
b24sIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbik7CiAgICAgV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiBnZXRTcGVsbENoZWNrZXIoKTsKICAgICBib29sIHNob3VsZFNwZWxsQ2hl
Y2tFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdDsKICAgICBib29sIGRpZFNw
ZWxsQ2hlY2tXb3JkKCkgY29uc3QgeyByZXR1cm4gbV9kaWRTcGVsbENoZWNrV29yZDsgfQpAQCAt
MjY4LDYgKzI2OSw3IEBAIHByaXZhdGU6CiAgICAgaW1mX3NwX3RleHRfdCBtX3NwZWxsQ2hlY2tp
bmdPcHRpb25zUmVxdWVzdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2NyZWVuT2Zmc2V0Owog
ICAgIGJvb2wgbV9kaWRTcGVsbENoZWNrV29yZDsKKyAgICBTcGVsbGluZ0hhbmRsZXIqIG1fc3Bl
bGxpbmdIYW5kbGVyOwogCiAgICAgV1RGOjpWZWN0b3I8U3Bhbm5hYmxlQXR0cmlidXRlRGV0YWls
cz4gbV9jYWNoZWRTcGFubmFibGVBdHRyaWJ1dGVzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUxOWE4ZTY2ZDE2YTUxODIzYTEyOTAyYjc2MTc2YTExYzYwMDljZGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVs
bGluZ0hhbmRsZXIuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVsbGluZ0hhbmRsZXIuaCIKKwor
I2luY2x1ZGUgIkRPTVN1cHBvcnQuaCIKKyNpbmNsdWRlICJJbnB1dEhhbmRsZXIuaCIKKyNpbmNs
dWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgorI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgorI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKKworI2luY2x1ZGUgPEJsYWNr
QmVycnlQbGF0Zm9ybUlNRi5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxvZy5oPgor
CisjZGVmaW5lIEVOQUJMRV9TUEVMTElOR19MT0cgMAorCit1c2luZyBuYW1lc3BhY2UgQmxhY2tC
ZXJyeTo6UGxhdGZvcm07Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIEVOQUJMRV9T
UEVMTElOR19MT0cKKyNkZWZpbmUgU3BlbGxpbmdMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBQ
bGF0Zm9ybTo6bG9nQWx3YXlzKHNldmVyaXR5LCBmb3JtYXQsICMjIF9fVkFfQVJHU19fKQorI2Vs
c2UKKyNkZWZpbmUgU3BlbGxpbmdMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKQorI2VuZGlmIC8v
IEVOQUJMRV9TUEVMTElOR19MT0cKKworc3RhdGljIGNvbnN0IGRvdWJsZSBzX3RpbWVvdXQgPSAw
LjA1OworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworU3Bl
bGxpbmdIYW5kbGVyOjpTcGVsbGluZ0hhbmRsZXIoSW5wdXRIYW5kbGVyKiBpbnB1dEhhbmRsZXIp
CisgICAgOiBtX2lucHV0SGFuZGxlcihpbnB1dEhhbmRsZXIpLAorICAgICAgbV90aW1lcih0aGlz
LCAmU3BlbGxpbmdIYW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyksCisgICAgICBt
X2lzU3BlbGxDaGVja0FjdGl2ZShmYWxzZSkKK3sKK30KKworU3BlbGxpbmdIYW5kbGVyOjp+U3Bl
bGxpbmdIYW5kbGVyKCkKK3sKK30KKwordm9pZCBTcGVsbGluZ0hhbmRsZXI6OnNwZWxsQ2hlY2tU
ZXh0QmxvY2soV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgdmlzaWJsZVNlbGVjdGlvbiwgV2Vi
Q29yZTo6VGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpCit7
CisgICAgLy8gQ2hlY2sgaWYgdGhpcyByZXF1ZXN0IGNhbiBiZSBzZW50IG9mZiBpbiBvbmUgbWVz
c2FnZSwgb3IgaWYgaXQgbmVlZHMgdG8gYmUgYnJva2VuIGRvd24uCisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSB2aXNpYmxlU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJh
bmdlKCk7CisgICAgaWYgKCFyYW5nZUZvclNwZWxsQ2hlY2tpbmcgfHwgIXJhbmdlRm9yU3BlbGxD
aGVja2luZy0+dGV4dCgpIHx8ICFyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU3BlbGxjaGVjayBCYXRjaCByZXF1ZXN0cyBh
cmUgdXNlZCB3aGVuIGZvY3VzaW5nIGFuIGVsZW1lbnQuIER1cmluZyB0aGlzIHRpbWUsIHdlIG1p
Z2h0IGhhdmUgYSBsaW5nZXJpbmcgcmVxdWVzdAorICAgIC8vIGZyb20gYSBwcmV2aW91c2x5IGZv
Y3VzZWQgZWxlbWVudC4KKyAgICBpZiAodGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgPT0gVGV4dENo
ZWNraW5nUHJvY2Vzc0JhdGNoKSB7CisgICAgICAgIC8vIElmIGEgcHJldmlvdXMgcmVxdWVzdCBp
cyBiZWluZyBwcm9jZXNzZWQsIHN0b3AgaXQgYmVmb3JlIGNvbnRpbnVlaW5nLgorICAgICAgICBp
ZiAobV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAg
fQorCisgICAgbV9pc1NwZWxsQ2hlY2tBY3RpdmUgPSB0cnVlOworCisgICAgLy8gSWYgd2UgaGF2
ZSBhIGJhdGNoIHJlcXVlc3QsIHRyeSB0byBzZW5kIG9mZiB0aGUgZW50aXJlIGJsb2NrLgorICAg
IGlmICh0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gp
IHsKKyAgICAgICAgLy8gSWYgdG90YWwgYmxvY2sgdGV4dCBpcyB1bmRlciB0aGUgbGltaXRlZCBh
bW91bnQsIHNlbmQgdGhlIGVudGlyZSBjaHVuay4KKyAgICAgICAgaWYgKHJhbmdlRm9yU3BlbGxD
aGVja2luZy0+dGV4dCgpLmxlbmd0aCgpIDwgTWF4U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aCkg
eworICAgICAgICAgICAgY3JlYXRlU3BlbGxDaGVja1JlcXVlc3QocmFuZ2VGb3JTcGVsbENoZWNr
aW5nLCBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gU2luY2Ugd2UgY291bGRuJ3QgY2hlY2sgdGhlIGVudGly
ZSBibG9jayBhdCBvbmNlLCBzZXQgdXAgc3RhcnRpbmcgYW5kIGVuZGluZyBtYXJrZXJzIHRvIGZp
cmUgaW5jcmVtZW50YWxseS4KKyAgICBtX3N0YXJ0T2ZDdXJyZW50TGluZSA9IHN0YXJ0T2ZMaW5l
KHZpc2libGVTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpOworICAgIG1fZW5kT2ZDdXJyZW50TGlu
ZSA9IGVuZE9mTGluZShtX3N0YXJ0T2ZDdXJyZW50TGluZSk7CisgICAgbV90ZXh0Q2hlY2tpbmdQ
cm9jZXNzVHlwZSA9IHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlOworCisgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgU3BlbGxpbmdIYW5kbGVyOjpjcmVhdGVTcGVsbENoZWNr
UmVxdWVzdChQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmdQ
dHIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHRleHRDaGVja2luZ1Byb2Nlc3NU
eXBlKQoreworICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5n
ID0gcmFuZ2VGb3JTcGVsbENoZWNraW5nUHRyOworICAgIGlmIChpc1NwZWxsQ2hlY2tBY3RpdmUo
KSkgeworICAgICAgICBtX2lucHV0SGFuZGxlci0+Y2FsbFJlcXVlc3RDaGVja2luZ0ZvcihTcGVs
bENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgdGV4dENoZWNr
aW5nUHJvY2Vzc1R5cGUsIHJhbmdlRm9yU3BlbGxDaGVja2luZywgcmFuZ2VGb3JTcGVsbENoZWNr
aW5nKSk7CisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KHNfdGltZW91dCk7CisgICAgfQor
fQorCit2b2lkIFNwZWxsaW5nSGFuZGxlcjo6cGFyc2VCbG9ja0ZvclNwZWxsQ2hlY2tpbmcoV2Vi
Q29yZTo6VGltZXI8U3BlbGxpbmdIYW5kbGVyPiopCit7CisgICAgaWYgKGlzRW5kT2ZEb2N1bWVu
dChtX3N0YXJ0T2ZDdXJyZW50TGluZSkpIHsKKyAgICAgICAgbV9pc1NwZWxsQ2hlY2tBY3RpdmUg
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHNlbGVj
dGlvbiB3aXRoIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyBvZiB0aGUgbGluZSwgYW5kIGNvbnZl
cnQgdG8gUmFuZ2UgdG8gY3JlYXRlIGEgU3BlbGxDaGVja1JlcXVlc3QuCisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBWaXNpYmxlU2VsZWN0aW9uKG1fc3RhcnRPZkN1
cnJlbnRMaW5lLCBtX2VuZE9mQ3VycmVudExpbmUpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAg
aWYgKCFyYW5nZUZvclNwZWxsQ2hlY2tpbmcpIHsKKyAgICAgICAgU3BlbGxpbmdMb2coUGxhdGZv
cm06OkxvZ0xldmVsSW5mbywgIlNwZWxsaW5nSGFuZGxlcjo6c3BlbGxDaGVja0Jsb2NrIEZhaWxl
ZCB0byBzZXQgdGV4dCByYW5nZSBmb3Igc3BlbGxjaGVja2luZy4iKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgo
KSA8IE1heFNwZWxsQ2hlY2tpbmdTdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgbV9zdGFydE9mQ3Vy
cmVudExpbmUgPSBuZXh0TGluZVBvc2l0aW9uKG1fc3RhcnRPZkN1cnJlbnRMaW5lLCBtX3N0YXJ0
T2ZDdXJyZW50TGluZS5saW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRp
b24oKSk7CisgICAgICAgIG1fZW5kT2ZDdXJyZW50TGluZSA9IGVuZE9mTGluZShtX3N0YXJ0T2ZD
dXJyZW50TGluZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHdv
cmRzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRvIHRoZSBlbmQuCisgICAgICAgIHJhbmdl
Rm9yU3BlbGxDaGVja2luZyA9IGdldFJhbmdlRm9yU3BlbGxDaGVja1dpdGhGaW5lR3JhbnVsYXJp
dHkobV9zdGFydE9mQ3VycmVudExpbmUsIG1fZW5kT2ZDdXJyZW50TGluZSk7CisgICAgICAgIGlm
ICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKSB7CisgICAgICAgICAgICBTcGVsbGluZ0xvZyhQbGF0
Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiU3BlbGxpbmdIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFp
bGVkIHRvIHNldCB0ZXh0IHJhbmdlIHdpdGggZmluZSBncmFudWxhcml0eS4iKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX3N0YXJ0T2ZDdXJyZW50TGluZSA9IFZp
c2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPmVuZFBvc2l0aW9uKCkpOworICAg
ICAgICBtX2VuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUobV9zdGFydE9mQ3VycmVudExpbmUp
OworICAgICAgICByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBET01TdXBwb3J0Ojp0cmltV2hpdGVz
cGFjZUZyb21SYW5nZShWaXNpYmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5zdGFy
dFBvc2l0aW9uKCkpLCBWaXNpYmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5lbmRQ
b3NpdGlvbigpKSk7CisgICAgfQorCisgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVs
SW5mbywKKyAgICAgICAgIlNwZWxsaW5nSGFuZGxlcjo6c3BlbGxDaGVja0Jsb2NrIFN1YnN0cmlu
ZyB0ZXh0IGlzICclcycsIG9mIHNpemUgJWQiLAorICAgICAgICByYW5nZUZvclNwZWxsQ2hlY2tp
bmctPnRleHQoKS5sYXRpbjEoKS5kYXRhKCksCisgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2lu
Zy0+dGV4dCgpLmxlbmd0aCgpKTsKKworICAgIC8vIENhbGwgc3BlbGxjaGVjayB3aXRoIHN1YnN0
cmluZy4KKyAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tpbmcs
IG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpOworfQorCitQYXNzUmVmUHRyPFJhbmdlPiBTcGVs
bGluZ0hhbmRsZXI6OmdldFJhbmdlRm9yU3BlbGxDaGVja1dpdGhGaW5lR3JhbnVsYXJpdHkoV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24sIFdlYkNvcmU6OlZpc2libGVQb3Np
dGlvbiBlbmRQb3NpdGlvbikKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZDdXJyZW50V29y
ZCA9IGVuZE9mV29yZChzdGFydFBvc2l0aW9uKTsKKworICAgIC8vIEtlZXAgaXRlcmF0aW5nIHVu
dGlsIG9uZSBvZiBvdXIgY2FzZXMgaXMgaGl0LCBvciB3ZSd2ZSBpbmNyZW1lbnRlZCB0aGUgc3Rh
cnRpbmcgcG9zaXRpb24gcmlnaHQgdG8gdGhlIGVuZC4KKyAgICB3aGlsZSAoc3RhcnRQb3NpdGlv
biAhPSBlbmRQb3NpdGlvbikgeworICAgICAgICAvLyBDaGVjayB0aGUgdGV4dCBsZW5ndGggd2l0
aGluIHRoaXMgcmFuZ2UuCisgICAgICAgIGlmIChWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0UG9zaXRp
b24sIGVuZE9mQ3VycmVudFdvcmQpLnRvTm9ybWFsaXplZFJhbmdlKCktPnRleHQoKS5sZW5ndGgo
KSA+PSBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7CisgICAgICAgICAgICAvLyBJZiB0
aGlzIGlzIG5vdCB0aGUgZmlyc3Qgd29yZCwgcmV0dXJuIGEgUmFuZ2Ugd2l0aCBlbmQgYm91bmRh
cnkgc2V0IHRvIHRoZSBwcmV2aW91cyB3b3JkLgorICAgICAgICAgICAgaWYgKHN0YXJ0T2ZXb3Jk
KGVuZE9mQ3VycmVudFdvcmQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSAhPSBzdGFydFBvc2l0aW9u
ICYmICFET01TdXBwb3J0Ojppc0VtcHR5UmFuZ2VPckFsbFNwYWNlcyhzdGFydFBvc2l0aW9uLCBl
bmRPZkN1cnJlbnRXb3JkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlv
bihzdGFydFBvc2l0aW9uLCBlbmRPZldvcmQocHJldmlvdXNXb3JkUG9zaXRpb24oZW5kT2ZDdXJy
ZW50V29yZCksIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKwor
ICAgICAgICAgICAgLy8gT3VyIGZpcnN0IHdvcmQgaGFzIGdvbmUgb3ZlciB0aGUgY2hhcmFjdGVy
IGxpbWl0LiBJbmNyZW1lbnQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIHBhc3QgYW4gdW5jaGVja2Fi
bGUgd29yZC4KKyAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBlbmRPZkN1cnJlbnRXb3JkOwor
ICAgICAgICAgICAgZW5kT2ZDdXJyZW50V29yZCA9IGVuZE9mV29yZChuZXh0V29yZFBvc2l0aW9u
KGVuZE9mQ3VycmVudFdvcmQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChlbmRPZkN1cnJlbnRXb3Jk
ID09IGVuZFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pLnRvTm9ybWFsaXplZFJhbmdlKCk7IC8vIFJldHVybiB0
aGUgbGFzdCBzZWdtZW50IGlmIHRoZSBlbmQgb2Ygb3VyIHdvcmQgbGllcyBhdCB0aGUgZW5kIG9m
IHRoZSByYW5nZS4KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW5kT2ZDdXJyZW50V29yZCA9
IGVuZE9mV29yZChuZXh0V29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpKTsgLy8gSW5jcmVt
ZW50IHRoZSBjdXJyZW50IHdvcmQuCisgICAgfQorICAgIHJldHVybiAwOworfQorCit9IC8vIFdl
YktpdAorfSAvLyBCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiODNmZWMz
NjZhN2M0NzFiOWVjYThiZGM0NmI3ODE0ODY1OWE2MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICovCisKKyNpZm5kZWYgU3BlbGxpbmdI
YW5kbGVyX2gKKyNkZWZpbmUgU3BlbGxpbmdIYW5kbGVyX2gKKworI2luY2x1ZGUgIlRleHRDaGVj
a2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRp
b24uaCIKKyNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKy8qKgorICogU3BlbGxpbmdIYW5kbGVyCisgKi8KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUmFuZ2U7CitjbGFzcyBTcGVsbENoZWNrZXI7CitjbGFzcyBWaXNpYmxlU2Vs
ZWN0aW9uOworY2xhc3MgVmlzaWJsZVBvc2l0aW9uOworfQorCituYW1lc3BhY2UgQmxhY2tCZXJy
eSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5wdXRIYW5kbGVyOworCitjbGFzcyBT
cGVsbGluZ0hhbmRsZXIgeworcHVibGljOgorICAgIFNwZWxsaW5nSGFuZGxlcihJbnB1dEhhbmRs
ZXIqKTsKKyAgICB+U3BlbGxpbmdIYW5kbGVyKCk7CisKKyAgICB2b2lkIHNwZWxsQ2hlY2tUZXh0
QmxvY2soV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYsIFdlYkNvcmU6OlRleHRDaGVja2luZ1By
b2Nlc3NUeXBlKTsKKyAgICBib29sIGlzU3BlbGxDaGVja0FjdGl2ZSgpIHsgcmV0dXJuIG1faXNT
cGVsbENoZWNrQWN0aXZlOyB9CisgICAgdm9pZCBzZXRTcGVsbENoZWNrQWN0aXZlKGJvb2wgYWN0
aXZlKSB7IG1faXNTcGVsbENoZWNrQWN0aXZlID0gYWN0aXZlOyB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBy
YW5nZUZvclNwZWxsQ2hlY2tpbmdQdHIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBl
KTsKKyAgICB2b2lkIHBhcnNlQmxvY2tGb3JTcGVsbENoZWNraW5nKFdlYkNvcmU6OlRpbWVyPFNw
ZWxsaW5nSGFuZGxlcj4qKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBnZXRSYW5n
ZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
biBzdGFydFBvc2l0aW9uLCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24pOwor
CisgICAgSW5wdXRIYW5kbGVyKiBtX2lucHV0SGFuZGxlcjsKKworICAgIFdlYkNvcmU6OlRpbWVy
PFNwZWxsaW5nSGFuZGxlcj4gbV90aW1lcjsKKyAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24g
bV9zdGFydE9mQ3VycmVudExpbmU7CisgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fZW5k
T2ZDdXJyZW50TGluZTsKKyAgICBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBtX3Rl
eHRDaGVja2luZ1Byb2Nlc3NUeXBlOworICAgIGJvb2wgbV9pc1NwZWxsQ2hlY2tBY3RpdmU7Cit9
OworCit9IC8vIFdlYktpdAorfSAvLyBCbGFja0JlcnJ5CisKKyNlbmRpZiAvLyBTcGVsbGluZ0hh
bmRsZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183477</attachid>
            <date>2013-01-18 09:12:06 -0800</date>
            <delta_ts>2013-01-18 09:15:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107284-20130118120305.patch</filename>
            <type>text/plain</type>
            <size>24739</size>
            <attacher name="Nima Ghanavatian">nghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCBjYzFhODNjNzMzNTJjMGY5MTQ0NDQyZjJhOWRmMjE2NzFhNzQ4NWE4Li4xM2YzNWY4NjRi
NzI2MzA1MDk0Mjk5ZTFjNjY1OWUzNjJmZWRjODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsNSArMSw1MyBAQAogMjAxMy0wMS0xOCAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgogCisgICAgICAgIFtCbGFja0JlcnJ5XSBTZXQgc3BlbGxjaGVj
a2luZyBjYWxjdWxhdGlvbnMgb24gYSB0aW1lciB0byBmcmVlIHVwIHRoZSBXZWJLaXQgdGhyZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUjI4MjM1
MQorICAgICAgICBGaXJpbmcgb2ZmIHNwZWxsY2hlY2sgcmVxdWVzdHMgaXMgdGllaW5nIHVwIHRo
ZSBXZWJLaXQgdGhyZWFkIGZvciBhbgorICAgICAgICBleHRlbmRlZCBwZXJpb2Qgb2YgdGltZS4g
SW4gdGVzdGluZyB3aXRoIGxhcmdlIGJsb2NrcyBvZiB0ZXh0LCB0aGlzCisgICAgICAgIGNhbiBi
ZSBpbiB0aGUgbWF0dGVyIG9mIDUtMTAgc2Vjb25kcy4gVGhvdWdoIHdlIGFyZSB1c2luZyBhc3lu
Y2hyb25vdXMKKyAgICAgICAgc3BlbGxjaGVja2luZywgdGhlIHByb2Nlc3MgaW4gd2hpY2ggd2Ug
YnJlYWsgZG93biBibG9ja3Mgb2YgdGV4dCBiYXNlZAorICAgICAgICBvbiBpbnB1dF9zZXJ2aWNl
IGxpbWl0YXRpb25zIGlzIHRoZSBpc3N1ZS4KKyAgICAgICAgVXNpbmcgYSB0aW1lciBoZXJlIHdo
aWNoIGZpcmVzIHdpdGggYW4gYXJiaXRyYXJ5IHRpbWVvdXQgdG8gYWxsb3cgZm9yCisgICAgICAg
IGZvY3VzIGFuZCBpbnRlcmFjdGlvbiB0byBtYWludGFpbiBhdCBhIHJlYXNvbmFibGUgbGV2ZWwu
CisgICAgICAgIEZ1cnRoZXIsIHB1bGxpbmcgdGhpcyBjb2RlIG91dCBvZiBJbnB1dEhhbmRsZXIg
YW5kIGludG8gaXRzIG93biBjbGFzcy4KKworICAgICAgICBJbnRlcm5hbGx5IHJldmlld2VkIGJ5
IE1pa2UgRmVudG9uIGFuZCBHZW4gTWFrLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnB1
dEhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6
OklucHV0SGFuZGxlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxl
cjo6fklucHV0SGFuZGxlcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFu
ZGxlcjo6Y2FsbFJlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzcGVsbENo
ZWNraW5nUmVxdWVzdFByb2Nlc3NlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oklu
cHV0SGFuZGxlcjo6c2hvdWxkUmVxdWVzdFNwZWxsQ2hlY2tpbmdPcHRpb25zRm9yUG9pbnQpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZv
Y3VzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldEVs
ZW1lbnRGb2N1c2VkKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5wdXRIYW5k
bGVyKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxp
bmdIYW5kbGVyOjpTcGVsbGluZ0hhbmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpTcGVsbGluZ0hhbmRsZXI6On5TcGVsbGluZ0hhbmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6OnNwZWxsQ2hlY2tUZXh0QmxvY2spOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tS
ZXF1ZXN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxpbmdIYW5kbGVyOjpw
YXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNwZWxsaW5nSGFuZGxlcjo6Z2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0
eSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChTcGVsbGluZ0hh
bmRsZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hhbmRsZXI6Omlz
U3BlbGxDaGVja0FjdGl2ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5n
SGFuZGxlcjo6c2V0U3BlbGxDaGVja0FjdGl2ZSk6CisKKzIwMTMtMDEtMTggIE5pbWEgR2hhbmF2
YXRpYW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gQ2hl
Y2sgaWYgY29udGludW91cyBzcGVsbGNoZWNraW5nIGlzIGVuYWJsZWQgYmVmb3JlIHByb2Nlc3Np
bmcgYSByZXF1ZXN0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDcxNjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCA4
NWUwOTY2ZTlhZjM0NzQ4ZTA0YmQ2ZTVjMTdhZGM4YWYyNjk2Y2JkLi5hZjhkMTQxYWNiOWU3YmNm
Nzk4OTMyYThhMTk5ZDI2ODZkNDNkYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJy
eS5jbWFrZQpAQCAtMTM2LDYgKzEzNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAg
ICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1JlbmRlclF1ZXVlLmNwcAogICAgIGJsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9TZWxlY3Rpb25PdmVybGF5LmNwcAorICAgIGJsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1
cmZhY2VQb29sLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Ub3VjaEV2ZW50SGFu
ZGxlci5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuY3BwCmluZGV4IDUzZmY2NzgyNjk1NjU5NDYxMjk4ZmJhYTkzYWM3MGVmOWM0ZmQ2Yzcu
LjBkOTRlYmMwYmMxNTU4NDFhMDMxMWY3ZjZhMDRjNmZkNTgyMGViOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJFZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTU1
LDYgKzU2LDcgQEAKICNpbmNsdWRlICJTZWxlY3RQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlNl
bGVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJT
cGVsbGluZ0hhbmRsZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgpAQCAtMTQz
LDExICsxNDUsMTMgQEAgSW5wdXRIYW5kbGVyOjpJbnB1dEhhbmRsZXIoV2ViUGFnZVByaXZhdGUq
IHBhZ2UpCiAgICAgLCBtX3Nob3VsZE5vdGlmeVdlYlZpZXcodHJ1ZSkKICAgICAsIG1fZXhwZWN0
ZWRLZXlVcENoYXIoMCkKICAgICAsIG1fZGlkU3BlbGxDaGVja1dvcmQoZmFsc2UpCisgICAgLCBt
X3NwZWxsaW5nSGFuZGxlcihuZXcgU3BlbGxpbmdIYW5kbGVyKHRoaXMpKQogewogfQogCiBJbnB1
dEhhbmRsZXI6On5JbnB1dEhhbmRsZXIoKQogeworICAgIGRlbGV0ZSBtX3NwZWxsaW5nSGFuZGxl
cjsKIH0KIAogc3RhdGljIEJsYWNrQmVycnlJbnB1dFR5cGUgY29udmVydElucHV0VHlwZShjb25z
dCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQpCkBAIC01NzYsNiArNTgwLDEyIEBAIHZv
aWQgSW5wdXRIYW5kbGVyOjpsZWFyblRleHQoKQogICAgIHNlbmRMZWFyblRleHREZXRhaWxzKHRl
eHRJbkZpZWxkKTsKIH0KIAordm9pZCBJbnB1dEhhbmRsZXI6OmNhbGxSZXF1ZXN0Q2hlY2tpbmdG
b3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdD4gc3BlbGxDaGVja1JlcXVl
c3QpCit7CisgICAgaWYgKFNwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gZ2V0U3BlbGxDaGVj
a2VyKCkpCisgICAgICAgIHNwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHNwZWxsQ2hl
Y2tSZXF1ZXN0KTsKK30KKwogdm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4gdGV4dENoZWNraW5n
UmVxdWVzdCkKIHsKICAgICBtX3JlcXVlc3QgPSB0ZXh0Q2hlY2tpbmdSZXF1ZXN0OwpAQCAtNjAz
LDcgKzYxMyw3IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlCiAgICAgICAgICAgICAvLyBlbnRl
ciB0byBmaW5pc2ggY29tcG9zaW5nIGEgd29yZCBhbmQgY3JlYXRlIGEgbmV3IGxpbmUuCiAgICAg
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9IG1fY3VycmVudEZvY3VzRWxl
bWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnN0YXJ0KCk7CiAgICAgICAg
ICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9u
KHByZXZpb3VzTGluZVBvc2l0aW9uKGNhcmV0UG9zaXRpb24sIGNhcmV0UG9zaXRpb24ubGluZURp
cmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkpLCBjYXJldFBvc2l0aW9u
KTsKLSAgICAgICAgICAgIHNwZWxsQ2hlY2tCbG9jayh2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hl
Y2tpbmdQcm9jZXNzSW5jcmVtZW50YWwpOworICAgICAgICAgICAgbV9zcGVsbGluZ0hhbmRsZXIt
PnNwZWxsQ2hlY2tUZXh0QmxvY2sodmlzaWJsZVNlbGVjdGlvbiwgVGV4dENoZWNraW5nUHJvY2Vz
c0luY3JlbWVudGFsKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjU1
LDcgKzY2NSw3IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nl
c3NlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQsIHNwYW5uYWJsCiAgICAgICAgIG1fcHJvY2Vzc2lu
Z1RyYW5zYWN0aW9uSWQsCiAgICAgICAgIHRyYW5zYWN0aW9uSWQgPT0gbV9wcm9jZXNzaW5nVHJh
bnNhY3Rpb25JZCA/ICIiIDogIldlIGFyZSBvdXQgb2Ygc3luYyB3aXRoIGlucHV0IHNlcnZpY2Uu
Iik7CiAKLSAgICBpZiAoIXNwYW5uYWJsZVN0cmluZyB8fCAhaXNBY3RpdmVUZXh0RWRpdCgpIHx8
ICFET01TdXBwb3J0OjplbGVtZW50SGFzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKG1f
Y3VycmVudEZvY3VzRWxlbWVudCkpIHsKKyAgICBpZiAoIXNwYW5uYWJsZVN0cmluZyB8fCAhaXNB
Y3RpdmVUZXh0RWRpdCgpIHx8ICFET01TdXBwb3J0OjplbGVtZW50SGFzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKG1fY3VycmVudEZvY3VzRWxlbWVudCkgfHwgIW1fcHJvY2Vzc2luZ1Ry
YW5zYWN0aW9uSWQpIHsKICAgICAgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsV2Fy
biwgIklucHV0SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQgQ2FuY2VsbGlu
ZyByZXF1ZXN0IHdpdGggdHJhbnNhY3Rpb25JZCAlZC4iLCB0cmFuc2FjdGlvbklkKTsKICAgICAg
ICAgbV9yZXF1ZXN0LT5kaWRDYW5jZWwoKTsKICAgICAgICAgbV9wcm9jZXNzaW5nVHJhbnNhY3Rp
b25JZCA9IC0xOwpAQCAtNzUxLDcgKzc2MSw3IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpzaG91bGRS
ZXF1ZXN0U3BlbGxDaGVja2luZ09wdGlvbnNGb3JQb2ludChjb25zdCBQbGF0Zm9ybTo6SW50CiAK
ICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAogICAgICAgICAiSW5wdXRI
YW5kbGVyOjpzaG91bGRSZXF1ZXN0U3BlbGxDaGVja2luZ09wdGlvbnNGb3JQb2ludCBGb3VuZCBz
cGVsbGluZyBtYXJrZXIgYXQgcG9pbnQgJXNcbk1hcmtlciBzdGFydCAlZCBlbmQgJWQiLAotICAg
ICAgICBwb2ludC50b1N0cmluZygpLmNfc3RyKCksCisgICAgICAgIGRvY3VtZW50Q29udGVudFBv
c2l0aW9uLnRvU3RyaW5nKCkuY19zdHIoKSwKICAgICAgICAgc3BlbGxDaGVja2luZ09wdGlvblJl
cXVlc3Quc3RhcnRUZXh0UG9zaXRpb24sCiAgICAgICAgIHNwZWxsQ2hlY2tpbmdPcHRpb25SZXF1
ZXN0LmVuZFRleHRQb3NpdGlvbik7CiAKQEAgLTg1NSw2ICs4NjUsOSBAQCB2b2lkIElucHV0SGFu
ZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZChib29sIHJlZm9jdXNPY2N1cmluZykKICAgICAgICAg
ICAgIG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9u
KCktPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgfQogCisgICAgbV9zcGVsbGluZ0hhbmRsZXItPnNl
dFNwZWxsQ2hlY2tBY3RpdmUoZmFsc2UpOworICAgIG1fcHJvY2Vzc2luZ1RyYW5zYWN0aW9uSWQg
PSAwOworCiAgICAgLy8gQ2xlYXIgdGhlIG5vZGUgZGV0YWlscy4KICAgICBtX2N1cnJlbnRGb2N1
c0VsZW1lbnQgPSAwOwogICAgIG1fY3VycmVudEZvY3VzRWxlbWVudFR5cGUgPSBUZXh0RWRpdDsK
QEAgLTk0NSwxMiArOTU4LDEyIEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNl
ZChFbGVtZW50KiBlbGVtZW50KQogI2VuZGlmCiAKICAgICAvLyBDaGVjayBpZiB0aGUgZmllbGQg
c2hvdWxkIGJlIHNwZWxsY2hlY2tlZC4KLSAgICBpZiAoIXNob3VsZFNwZWxsQ2hlY2tFbGVtZW50
KGVsZW1lbnQpKQorICAgIGlmICghc2hvdWxkU3BlbGxDaGVja0VsZW1lbnQoZWxlbWVudCkgfHwg
IWlzQWN0aXZlVGV4dEVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3BlbGxjaGVj
ayB0aGUgZmllbGQgaW4gaXRzIGVudGlyZXR5LgogICAgIFZpc2libGVTZWxlY3Rpb24gZm9jdXNl
ZEJsb2NrID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvcklucHV0RWxlbWVudChlbGVt
ZW50KTsKLSAgICBzcGVsbENoZWNrQmxvY2soZm9jdXNlZEJsb2NrLCBUZXh0Q2hlY2tpbmdQcm9j
ZXNzQmF0Y2gpOworICAgIG1fc3BlbGxpbmdIYW5kbGVyLT5zcGVsbENoZWNrVGV4dEJsb2NrKGZv
Y3VzZWRCbG9jaywgVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoKTsKIAogI2lmZGVmIEVOQUJMRV9T
UEVMTElOR19MT0cKICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5w
dXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNlZCBTcGVsbGNoZWNraW5nIHRoZSBmaWVsZCBpbmNy
ZWFzZWQgdGhlIHRvdGFsIHRpbWUgdG8gZm9jdXMgdG8gJWYgc2Vjb25kcy4iLCB0aW1lci5lbGFw
c2VkKCkpOwpAQCAtOTgzLDkwICs5OTYsNiBAQCB2b2lkIElucHV0SGFuZGxlcjo6cmVkcmF3U3Bl
bGxDaGVja0RpYWxvZ0lmUmVxdWlyZWQoY29uc3QgYm9vbCBzaG91bGRNb3ZlRGlhbG9nKQogICAg
IH0KIH0KIAotdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayhWaXNpYmxlU2VsZWN0
aW9uJiB2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0ZXh0Q2hlY2tp
bmdQcm9jZXNzVHlwZSkKLXsKLSAgICBpZiAoIWlzQWN0aXZlVGV4dEVkaXQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSB2aXNp
YmxlU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKCFyYW5nZUZvclNwZWxs
Q2hlY2tpbmcgfHwgIXJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpIHx8ICFyYW5nZUZvclNw
ZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3Bl
bGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBnZXRTcGVsbENoZWNrZXIoKTsKLSAgICBpZiAoIXNw
ZWxsQ2hlY2tlcikgewotICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZv
LCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNwZWxsY2hlY2sgdGhl
IGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gSWYgd2UgaGF2ZSBhIGJhdGNoIHJlcXVlc3QsIHRyeSB0byBzZW5kIG9mZiB0aGUgZW50
aXJlIGJsb2NrLgotICAgIGlmICh0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBUZXh0Q2hlY2tp
bmdQcm9jZXNzQmF0Y2gpIHsKLSAgICAgICAgLy8gSWYgdG90YWwgYmxvY2sgdGV4dCBpcyB1bmRl
ciB0aGUgbGltaXRlZCBhbW91bnQsIHNlbmQgdGhlIGVudGlyZSBjaHVuay4KLSAgICAgICAgaWYg
KHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpIDwgTWF4U3BlbGxDaGVja2lu
Z1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tp
bmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcs
IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VGb3JTcGVsbENoZWNraW5nLCByYW5nZUZv
clNwZWxsQ2hlY2tpbmcpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIFNpbmNlIHdlIGNvdWxkbid0IGNoZWNrIHRoZSBlbnRpcmUgYmxvY2sgYXQgb25j
ZSwgc2V0IHVwIHN0YXJ0aW5nIGFuZCBlbmRpbmcgbWFya2VycyB0byBmaXJlIGluY3JlbWVudGFs
bHkuCi0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zID0gdmlzaWJsZVNlbGVjdGlvbi52aXNp
YmxlU3RhcnQoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkN1cnJlbnRMaW5lID0gc3Rh
cnRPZkxpbmUoc3RhcnRQb3MpOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkN1cnJlbnRMaW5l
ID0gZW5kT2ZMaW5lKHN0YXJ0T2ZDdXJyZW50TGluZSk7Ci0KLSAgICB3aGlsZSAoIWlzRW5kT2ZC
bG9jayhzdGFydE9mQ3VycmVudExpbmUpKSB7Ci0gICAgICAgIC8vIENyZWF0ZSBhIHNlbGVjdGlv
biB3aXRoIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyBvZiB0aGUgbGluZSwgYW5kIGNvbnZlcnQg
dG8gUmFuZ2UgdG8gY3JlYXRlIGEgU3BlbGxDaGVja1JlcXVlc3QuCi0gICAgICAgIHJhbmdlRm9y
U3BlbGxDaGVja2luZyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZkN1cnJlbnRMaW5lLCBlbmRP
ZkN1cnJlbnRMaW5lKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotCi0gICAgICAgIGlmIChyYW5nZUZv
clNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSA8IE1heFNwZWxsQ2hlY2tpbmdTdHJpbmdM
ZW5ndGgpIHsKLSAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50TGluZSA9IG5leHRMaW5lUG9zaXRp
b24oc3RhcnRPZkN1cnJlbnRMaW5lLCBzdGFydE9mQ3VycmVudExpbmUubGluZURpcmVjdGlvblBv
aW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkpOwotICAgICAgICAgICAgZW5kT2ZDdXJy
ZW50TGluZSA9IGVuZE9mTGluZShzdGFydE9mQ3VycmVudExpbmUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHdvcmRzIGZyb20gdGhlIHN0YXJ0IG9m
IHRoZSBsaW5lIHRvIHRoZSBlbmQuCi0gICAgICAgICAgICByYW5nZUZvclNwZWxsQ2hlY2tpbmcg
PSBnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KHN0YXJ0T2ZDdXJyZW50
TGluZSwgZW5kT2ZDdXJyZW50TGluZSk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdlRm9yU3BlbGxD
aGVja2luZykgewotICAgICAgICAgICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZl
bFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayBGYWlsZWQgdG8gc2V0IHRleHQg
cmFuZ2UgZm9yIHNwZWxsY2hlY2tpbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBzdGFydE9mQ3VycmVudExpbmUgPSBWaXNpYmxlUG9zaXRp
b24ocmFuZ2VGb3JTcGVsbENoZWNraW5nLT5lbmRQb3NpdGlvbigpKTsKLSAgICAgICAgICAgIGVu
ZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUoc3RhcnRPZkN1cnJlbnRMaW5lKTsKLSAgICAgICAg
ICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IERPTVN1cHBvcnQ6OnRyaW1XaGl0ZXNwYWNlRnJv
bVJhbmdlKFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnN0YXJ0UG9zaXRp
b24oKSksIFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPmVuZFBvc2l0aW9u
KCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZl
bEluZm8sCi0gICAgICAgICAgICAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgU3Vic3Ry
aW5nIHRleHQgaXMgJyVzJywgb2Ygc2l6ZSAlZCIsCi0gICAgICAgICAgICByYW5nZUZvclNwZWxs
Q2hlY2tpbmctPnRleHQoKS5sYXRpbjEoKS5kYXRhKCksCi0gICAgICAgICAgICByYW5nZUZvclNw
ZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSk7Ci0KLSAgICAgICAgLy8gQ2FsbCBzcGVsbGNo
ZWNrIHdpdGggc3Vic3RyaW5nLgotICAgICAgICBzcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2lu
Z0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywg
VGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcsIHJhbmdlRm9y
U3BlbGxDaGVja2luZykpOwotICAgIH0KLX0KLQotUGFzc1JlZlB0cjxSYW5nZT4gSW5wdXRIYW5k
bGVyOjpnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KFZpc2libGVQb3Np
dGlvbiBzdGFydFBvc2l0aW9uLCBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24pCi17Ci0gICAg
VmlzaWJsZVBvc2l0aW9uIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQoc3RhcnRQb3NpdGlv
bik7Ci0KLSAgICAvLyBLZWVwIGl0ZXJhdGluZyB1bnRpbCBvbmUgb2Ygb3VyIGNhc2VzIGlzIGhp
dCwgb3Igd2UndmUgaW5jcmVtZW50ZWQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIHJpZ2h0IHRvIHRo
ZSBlbmQuCi0gICAgd2hpbGUgKHN0YXJ0UG9zaXRpb24gIT0gZW5kUG9zaXRpb24pIHsKLSAgICAg
ICAgLy8gQ2hlY2sgdGhlIHRleHQgbGVuZ3RoIHdpdGhpbiB0aGlzIHJhbmdlLgotICAgICAgICBp
ZiAoVmlzaWJsZVNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRPZkN1cnJlbnRXb3JkKS50b05v
cm1hbGl6ZWRSYW5nZSgpLT50ZXh0KCkubGVuZ3RoKCkgPj0gTWF4U3BlbGxDaGVja2luZ1N0cmlu
Z0xlbmd0aCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHdvcmQs
IHJldHVybiBhIFJhbmdlIHdpdGggZW5kIGJvdW5kYXJ5IHNldCB0byB0aGUgcHJldmlvdXMgd29y
ZC4KLSAgICAgICAgICAgIGlmIChzdGFydE9mV29yZChlbmRPZkN1cnJlbnRXb3JkLCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSkgIT0gc3RhcnRQb3NpdGlvbiAmJiAhRE9NU3VwcG9ydDo6aXNFbXB0eVJh
bmdlT3JBbGxTcGFjZXMoc3RhcnRQb3NpdGlvbiwgZW5kT2ZDdXJyZW50V29yZCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kT2ZXb3Jk
KHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpLCBMZWZ0V29yZElmT25Cb3Vu
ZGFyeSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0KLSAgICAgICAgICAgIC8vIE91ciBmaXJzdCB3
b3JkIGhhcyBnb25lIG92ZXIgdGhlIGNoYXJhY3RlciBsaW1pdC4gSW5jcmVtZW50IHRoZSBzdGFy
dGluZyBwb3NpdGlvbiBwYXN0IGFuIHVuY2hlY2thYmxlIHdvcmQuCi0gICAgICAgICAgICBzdGFy
dFBvc2l0aW9uID0gZW5kT2ZDdXJyZW50V29yZDsKLSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdv
cmQgPSBlbmRPZldvcmQobmV4dFdvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3JkKSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoZW5kT2ZDdXJyZW50V29yZCA9PSBlbmRQb3NpdGlvbikgewotICAgICAg
ICAgICAgLy8gUmV0dXJuIHRoZSBsYXN0IHNlZ21lbnQgaWYgdGhlIGVuZCBvZiBvdXIgd29yZCBs
aWVzIGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLgotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVT
ZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pLnRvTm9ybWFsaXplZFJhbmdlKCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIGN1cnJlbnQg
d29yZC4KLSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQobmV4dFdvcmRQ
b3NpdGlvbihlbmRPZkN1cnJlbnRXb3JkKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuRGF0ZVBvcHVwKEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQsIEJsYWNrQmVycnlJbnB1dFR5cGUgdHlwZSkKIHsKICAgICBpZiAoIWVsZW1l
bnQgfHwgZWxlbWVudC0+aXNEaXNhYmxlZE9yUmVhZE9ubHkoKSB8fCAhRE9NU3VwcG9ydDo6aXNE
YXRlVGltZUlucHV0RmllbGQoZWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCmluZGV4IGJlNDU1ODcwOTk1OTNj
OGNkMzFkOGVlMGNlYmEyMTljNDY5MDc4NDQuLmViMTIzY2YyYWEzYmQ0NzU0ZGNhMDA1MGJiN2Fi
M2RiZjRiNTdkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBOb2RlOwogY2xhc3MgUmFuZ2U7CiBjbGFzcyBTcGVsbENoZWNrZXI7CitjbGFzcyBT
cGVsbENoZWNrUmVxdWVzdDsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNp
YmxlUG9zaXRpb247CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAtNTksNiArNjAsNyBAQCBj
bGFzcyBLZXlib2FyZEV2ZW50OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU3BlbGxp
bmdIYW5kbGVyOwogY2xhc3MgV2ViUGFnZVByaXZhdGU7CiAKIGNsYXNzIElucHV0SGFuZGxlciB7
CkBAIC0xMzgsNyArMTQwLDcgQEAgcHVibGljOgogICAgIGludDMyX3Qgc2V0Q29tcG9zaW5nVGV4
dChzcGFubmFibGVfc3RyaW5nX3QqLCBpbnQzMl90IHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24pOwog
ICAgIGludDMyX3QgY29tbWl0VGV4dChzcGFubmFibGVfc3RyaW5nX3QqLCBpbnQzMl90IHJlbGF0
aXZlQ3Vyc29yUG9zaXRpb24pOwogCi0gICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4pOworICAgIHZvaWQg
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXF1ZXN0Pik7CiAgICAgdm9pZCBzcGVsbENoZWNraW5nUmVxdWVzdFByb2Nlc3NlZChpbnQzMl90
IHRyYW5zYWN0aW9uSWQsIHNwYW5uYWJsZV9zdHJpbmdfdCopOwogICAgIHZvaWQgc3BlbGxDaGVj
a2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50MzJfdCB0cmFuc2FjdGlvbklkKTsKIApAQCAtMTQ3LDYg
KzE0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGlkU3BlbGxDaGVja1N0YXRlKCkgeyBt
X2RpZFNwZWxsQ2hlY2tXb3JkID0gZmFsc2U7IH0KICAgICB2b2lkIHJlZHJhd1NwZWxsQ2hlY2tE
aWFsb2dJZlJlcXVpcmVkKGNvbnN0IGJvb2wgc2hvdWxkTW92ZURpYWxvZyA9IHRydWUpOwogCisg
ICAgdm9pZCBjYWxsUmVxdWVzdENoZWNraW5nRm9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6U3BlbGxD
aGVja1JlcXVlc3Q+KTsKKwogcHJpdmF0ZToKICAgICBlbnVtIFBlbmRpbmdLZXlib2FyZFN0YXRl
Q2hhbmdlIHsgTm9DaGFuZ2UsIFZpc2libGUsIE5vdFZpc2libGUgfTsKIApAQCAtMjAyLDggKzIw
Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxlYXJuVGV4dCgpOwogICAgIHZvaWQgc2VuZExl
YXJuVGV4dERldGFpbHMoY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIHNwZWxsQ2hlY2tC
bG9jayhXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiwgV2ViQ29yZTo6VGV4dENoZWNraW5nUHJv
Y2Vzc1R5cGUpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGdldFJhbmdlRm9yU3Bl
bGxDaGVja1dpdGhGaW5lR3JhbnVsYXJpdHkoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0
UG9zaXRpb24sIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbik7CiAgICAgV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiBnZXRTcGVsbENoZWNrZXIoKTsKICAgICBib29sIHNob3VsZFNw
ZWxsQ2hlY2tFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdDsKICAgICBib29s
IGRpZFNwZWxsQ2hlY2tXb3JkKCkgY29uc3QgeyByZXR1cm4gbV9kaWRTcGVsbENoZWNrV29yZDsg
fQpAQCAtMjM2LDYgKzIzOCw4IEBAIHByaXZhdGU6CiAgICAgaW1mX3NwX3RleHRfdCBtX3NwZWxs
Q2hlY2tpbmdPcHRpb25zUmVxdWVzdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2NyZWVuT2Zm
c2V0OwogICAgIGJvb2wgbV9kaWRTcGVsbENoZWNrV29yZDsKKyAgICBTcGVsbGluZ0hhbmRsZXIq
IG1fc3BlbGxpbmdIYW5kbGVyOworCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMDg3YTY3M2Q1MjMwNzQ2ZWJjMmJmZWU4ZjZiZWUzYjM2ODQyMWM1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3BlbGxpbmdI
YW5kbGVyLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3BlbGxpbmdIYW5kbGVyLmgiCisKKyNpbmNs
dWRlICJET01TdXBwb3J0LmgiCisjaW5jbHVkZSAiSW5wdXRIYW5kbGVyLmgiCisjaW5jbHVkZSAi
UmFuZ2UuaCIKKyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1JTUYuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cuaD4KKworI2Rl
ZmluZSBFTkFCTEVfU1BFTExJTkdfTE9HIDAKKwordXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6
OlBsYXRmb3JtOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNpZiBFTkFCTEVfU1BFTExJ
TkdfTE9HCisjZGVmaW5lIFNwZWxsaW5nTG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikgUGxhdGZv
cm06OmxvZ0Fsd2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBfX1ZBX0FSR1NfXykKKyNlbHNlCisj
ZGVmaW5lIFNwZWxsaW5nTG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikKKyNlbmRpZiAvLyBFTkFC
TEVfU1BFTExJTkdfTE9HCisKK3N0YXRpYyBjb25zdCBkb3VibGUgc190aW1lb3V0ID0gMC4wNTsK
KworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NwZWxsaW5n
SGFuZGxlcjo6U3BlbGxpbmdIYW5kbGVyKElucHV0SGFuZGxlciogaW5wdXRIYW5kbGVyKQorICAg
IDogbV9pbnB1dEhhbmRsZXIoaW5wdXRIYW5kbGVyKQorICAgICwgbV90aW1lcih0aGlzLCAmU3Bl
bGxpbmdIYW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZykKKyAgICAsIG1faXNTcGVs
bENoZWNrQWN0aXZlKGZhbHNlKQoreworfQorCitTcGVsbGluZ0hhbmRsZXI6On5TcGVsbGluZ0hh
bmRsZXIoKQoreworfQorCit2b2lkIFNwZWxsaW5nSGFuZGxlcjo6c3BlbGxDaGVja1RleHRCbG9j
ayhXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uLCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSkKK3sKKyAgICAv
LyBDaGVjayBpZiB0aGlzIHJlcXVlc3QgY2FuIGJlIHNlbnQgb2ZmIGluIG9uZSBtZXNzYWdlLCBv
ciBpZiBpdCBuZWVkcyB0byBiZSBicm9rZW4gZG93bi4KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yU3BlbGxDaGVja2luZyA9IHZpc2libGVTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsK
KyAgICBpZiAoIXJhbmdlRm9yU3BlbGxDaGVja2luZyB8fCAhcmFuZ2VGb3JTcGVsbENoZWNraW5n
LT50ZXh0KCkgfHwgIXJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBTcGVsbGNoZWNrIEJhdGNoIHJlcXVlc3RzIGFyZSB1c2Vk
IHdoZW4gZm9jdXNpbmcgYW4gZWxlbWVudC4gRHVyaW5nIHRoaXMgdGltZSwgd2UgbWlnaHQgaGF2
ZSBhIGxpbmdlcmluZyByZXF1ZXN0CisgICAgLy8gZnJvbSBhIHByZXZpb3VzbHkgZm9jdXNlZCBl
bGVtZW50LgorICAgIGlmICh0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gpIHsKKyAgICAgICAgLy8gSWYgYSBwcmV2aW91cyByZXF1ZXN0IGlzIGJlaW5n
IHByb2Nlc3NlZCwgc3RvcCBpdCBiZWZvcmUgY29udGludWVpbmcuCisgICAgICAgIGlmIChtX3Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICB9CisKKyAg
ICBtX2lzU3BlbGxDaGVja0FjdGl2ZSA9IHRydWU7CisKKyAgICAvLyBJZiB3ZSBoYXZlIGEgYmF0
Y2ggcmVxdWVzdCwgdHJ5IHRvIHNlbmQgb2ZmIHRoZSBlbnRpcmUgYmxvY2suCisgICAgaWYgKHRl
eHRDaGVja2luZ1Byb2Nlc3NUeXBlID09IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkgeworICAg
ICAgICAvLyBJZiB0b3RhbCBibG9jayB0ZXh0IGlzIHVuZGVyIHRoZSBsaW1pdGVkIGFtb3VudCwg
c2VuZCB0aGUgZW50aXJlIGNodW5rLgorICAgICAgICBpZiAocmFuZ2VGb3JTcGVsbENoZWNraW5n
LT50ZXh0KCkubGVuZ3RoKCkgPCBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7CisgICAg
ICAgICAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tpbmcsIFRl
eHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBTaW5jZSB3ZSBjb3VsZG4ndCBjaGVjayB0aGUgZW50aXJlIGJsb2Nr
IGF0IG9uY2UsIHNldCB1cCBzdGFydGluZyBhbmQgZW5kaW5nIG1hcmtlcnMgdG8gZmlyZSBpbmNy
ZW1lbnRhbGx5LgorICAgIG1fc3RhcnRPZkN1cnJlbnRMaW5lID0gc3RhcnRPZkxpbmUodmlzaWJs
ZVNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSk7CisgICAgbV9lbmRPZkN1cnJlbnRMaW5lID0gZW5k
T2ZMaW5lKG1fc3RhcnRPZkN1cnJlbnRMaW5lKTsKKyAgICBtX3RleHRDaGVja2luZ1Byb2Nlc3NU
eXBlID0gdGV4dENoZWNraW5nUHJvY2Vzc1R5cGU7CisKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBTcGVsbGluZ0hhbmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0
KFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9yU3BlbGxDaGVja2luZ1B0ciwgV2Vi
Q29yZTo6VGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpCit7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSByYW5n
ZUZvclNwZWxsQ2hlY2tpbmdQdHI7CisgICAgaWYgKGlzU3BlbGxDaGVja0FjdGl2ZSgpKSB7Cisg
ICAgICAgIG1faW5wdXRIYW5kbGVyLT5jYWxsUmVxdWVzdENoZWNraW5nRm9yKFNwZWxsQ2hlY2tS
ZXF1ZXN0OjpjcmVhdGUoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCB0ZXh0Q2hlY2tpbmdQcm9j
ZXNzVHlwZSwgcmFuZ2VGb3JTcGVsbENoZWNraW5nLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcpKTsK
KyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qoc190aW1lb3V0KTsKKyAgICB9Cit9CisKK3Zv
aWQgU3BlbGxpbmdIYW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyhXZWJDb3JlOjpU
aW1lcjxTcGVsbGluZ0hhbmRsZXI+KikKK3sKKyAgICBpZiAoaXNFbmRPZkRvY3VtZW50KG1fc3Rh
cnRPZkN1cnJlbnRMaW5lKSkgeworICAgICAgICBtX2lzU3BlbGxDaGVja0FjdGl2ZSA9IGZhbHNl
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGEgc2VsZWN0aW9uIHdp
dGggdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIG9mIHRoZSBsaW5lLCBhbmQgY29udmVydCB0byBS
YW5nZSB0byBjcmVhdGUgYSBTcGVsbENoZWNrUmVxdWVzdC4KKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlRm9yU3BlbGxDaGVja2luZyA9IFZpc2libGVTZWxlY3Rpb24obV9zdGFydE9mQ3VycmVudExp
bmUsIG1fZW5kT2ZDdXJyZW50TGluZSkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBpZiAoIXJh
bmdlRm9yU3BlbGxDaGVja2luZykgeworICAgICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLCAiU3BlbGxpbmdIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNl
dCB0ZXh0IHJhbmdlIGZvciBzcGVsbGNoZWNraW5nLiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpIDwgTWF4
U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgeworICAgICAgICBtX3N0YXJ0T2ZDdXJyZW50TGlu
ZSA9IG5leHRMaW5lUG9zaXRpb24obV9zdGFydE9mQ3VycmVudExpbmUsIG1fc3RhcnRPZkN1cnJl
bnRMaW5lLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpKTsK
KyAgICAgICAgbV9lbmRPZkN1cnJlbnRMaW5lID0gZW5kT2ZMaW5lKG1fc3RhcnRPZkN1cnJlbnRM
aW5lKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggd29yZHMgZnJv
bSB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgdG8gdGhlIGVuZC4KKyAgICAgICAgcmFuZ2VGb3JTcGVs
bENoZWNraW5nID0gZ2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShtX3N0
YXJ0T2ZDdXJyZW50TGluZSwgbV9lbmRPZkN1cnJlbnRMaW5lKTsKKyAgICAgICAgaWYgKCFyYW5n
ZUZvclNwZWxsQ2hlY2tpbmcpIHsKKyAgICAgICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpM
b2dMZXZlbFdhcm4sICJTcGVsbGluZ0hhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayBGYWlsZWQgdG8g
c2V0IHRleHQgcmFuZ2Ugd2l0aCBmaW5lIGdyYW51bGFyaXR5LiIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIG1fc3RhcnRPZkN1cnJlbnRMaW5lID0gVmlzaWJsZVBv
c2l0aW9uKHJhbmdlRm9yU3BlbGxDaGVja2luZy0+ZW5kUG9zaXRpb24oKSk7CisgICAgICAgIG1f
ZW5kT2ZDdXJyZW50TGluZSA9IGVuZE9mTGluZShtX3N0YXJ0T2ZDdXJyZW50TGluZSk7CisgICAg
ICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IERPTVN1cHBvcnQ6OnRyaW1XaGl0ZXNwYWNlRnJv
bVJhbmdlKFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnN0YXJ0UG9zaXRp
b24oKSksIFZpc2libGVQb3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPmVuZFBvc2l0aW9u
KCkpKTsKKyAgICB9CisKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAor
ICAgICAgICAiU3BlbGxpbmdIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgU3Vic3RyaW5nIHRleHQg
aXMgJyVzJywgb2Ygc2l6ZSAlZCIsCisgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4
dCgpLmxhdGluMSgpLmRhdGEoKSwKKyAgICAgICAgcmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0
KCkubGVuZ3RoKCkpOworCisgICAgLy8gQ2FsbCBzcGVsbGNoZWNrIHdpdGggc3Vic3RyaW5nLgor
ICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJhbmdlRm9yU3BlbGxDaGVja2luZywgbV90ZXh0
Q2hlY2tpbmdQcm9jZXNzVHlwZSk7Cit9CisKK1Bhc3NSZWZQdHI8UmFuZ2U+IFNwZWxsaW5nSGFu
ZGxlcjo6Z2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGVu
ZFBvc2l0aW9uKQoreworICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkN1cnJlbnRXb3JkID0gZW5k
T2ZXb3JkKHN0YXJ0UG9zaXRpb24pOworCisgICAgLy8gS2VlcCBpdGVyYXRpbmcgdW50aWwgb25l
IG9mIG91ciBjYXNlcyBpcyBoaXQsIG9yIHdlJ3ZlIGluY3JlbWVudGVkIHRoZSBzdGFydGluZyBw
b3NpdGlvbiByaWdodCB0byB0aGUgZW5kLgorICAgIHdoaWxlIChzdGFydFBvc2l0aW9uICE9IGVu
ZFBvc2l0aW9uKSB7CisgICAgICAgIC8vIENoZWNrIHRoZSB0ZXh0IGxlbmd0aCB3aXRoaW4gdGhp
cyByYW5nZS4KKyAgICAgICAgaWYgKFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5k
T2ZDdXJyZW50V29yZCkudG9Ob3JtYWxpemVkUmFuZ2UoKS0+dGV4dCgpLmxlbmd0aCgpID49IE1h
eFNwZWxsQ2hlY2tpbmdTdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMg
bm90IHRoZSBmaXJzdCB3b3JkLCByZXR1cm4gYSBSYW5nZSB3aXRoIGVuZCBib3VuZGFyeSBzZXQg
dG8gdGhlIHByZXZpb3VzIHdvcmQuCisgICAgICAgICAgICBpZiAoc3RhcnRPZldvcmQoZW5kT2ZD
dXJyZW50V29yZCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpICE9IHN0YXJ0UG9zaXRpb24gJiYgIURP
TVN1cHBvcnQ6OmlzRW1wdHlSYW5nZU9yQWxsU3BhY2VzKHN0YXJ0UG9zaXRpb24sIGVuZE9mQ3Vy
cmVudFdvcmQpKQorICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
UG9zaXRpb24sIGVuZE9mV29yZChwcmV2aW91c1dvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3Jk
KSwgTGVmdFdvcmRJZk9uQm91bmRhcnkpKS50b05vcm1hbGl6ZWRSYW5nZSgpOworCisgICAgICAg
ICAgICAvLyBPdXIgZmlyc3Qgd29yZCBoYXMgZ29uZSBvdmVyIHRoZSBjaGFyYWN0ZXIgbGltaXQu
IEluY3JlbWVudCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gcGFzdCBhbiB1bmNoZWNrYWJsZSB3b3Jk
LgorICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGVuZE9mQ3VycmVudFdvcmQ7CisgICAgICAg
ICAgICBlbmRPZkN1cnJlbnRXb3JkID0gZW5kT2ZXb3JkKG5leHRXb3JkUG9zaXRpb24oZW5kT2ZD
dXJyZW50V29yZCkpOworICAgICAgICB9IGVsc2UgaWYgKGVuZE9mQ3VycmVudFdvcmQgPT0gZW5k
UG9zaXRpb24pCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihzdGFydFBvc2l0
aW9uLCBlbmRQb3NpdGlvbikudG9Ob3JtYWxpemVkUmFuZ2UoKTsgLy8gUmV0dXJuIHRoZSBsYXN0
IHNlZ21lbnQgaWYgdGhlIGVuZCBvZiBvdXIgd29yZCBsaWVzIGF0IHRoZSBlbmQgb2YgdGhlIHJh
bmdlLgorICAgICAgICBlbHNlCisgICAgICAgICAgICBlbmRPZkN1cnJlbnRXb3JkID0gZW5kT2ZX
b3JkKG5leHRXb3JkUG9zaXRpb24oZW5kT2ZDdXJyZW50V29yZCkpOyAvLyBJbmNyZW1lbnQgdGhl
IGN1cnJlbnQgd29yZC4KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gV2ViS2l0Cit9
IC8vIEJsYWNrQmVycnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI4M2ZlYzM2NmE3YzQ3
MWI5ZWNhOGJkYzQ2Yjc4MTQ4NjU5YTYwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2lmbmRlZiBTcGVsbGluZ0hhbmRsZXJf
aAorI2RlZmluZSBTcGVsbGluZ0hhbmRsZXJfaAorCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgor
I2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworLyoqCisgKiBTcGVsbGluZ0hhbmRsZXIKKyAqLworCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSYW5nZTsKK2NsYXNzIFNwZWxsQ2hlY2tlcjsKK2NsYXNzIFZpc2libGVTZWxlY3Rpb247
CitjbGFzcyBWaXNpYmxlUG9zaXRpb247Cit9CisKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnB1dEhhbmRsZXI7CisKK2NsYXNzIFNwZWxsaW5n
SGFuZGxlciB7CitwdWJsaWM6CisgICAgU3BlbGxpbmdIYW5kbGVyKElucHV0SGFuZGxlciopOwor
ICAgIH5TcGVsbGluZ0hhbmRsZXIoKTsKKworICAgIHZvaWQgc3BlbGxDaGVja1RleHRCbG9jayhX
ZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiwgV2ViQ29yZTo6VGV4dENoZWNraW5nUHJvY2Vzc1R5
cGUpOworICAgIGJvb2wgaXNTcGVsbENoZWNrQWN0aXZlKCkgeyByZXR1cm4gbV9pc1NwZWxsQ2hl
Y2tBY3RpdmU7IH0KKyAgICB2b2lkIHNldFNwZWxsQ2hlY2tBY3RpdmUoYm9vbCBhY3RpdmUpIHsg
bV9pc1NwZWxsQ2hlY2tBY3RpdmUgPSBhY3RpdmU7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNy
ZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9y
U3BlbGxDaGVja2luZ1B0ciwgV2ViQ29yZTo6VGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpOworICAg
IHZvaWQgcGFyc2VCbG9ja0ZvclNwZWxsQ2hlY2tpbmcoV2ViQ29yZTo6VGltZXI8U3BlbGxpbmdI
YW5kbGVyPiopOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGdldFJhbmdlRm9yU3Bl
bGxDaGVja1dpdGhGaW5lR3JhbnVsYXJpdHkoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0
UG9zaXRpb24sIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbik7CisKKyAgICBJ
bnB1dEhhbmRsZXIqIG1faW5wdXRIYW5kbGVyOworCisgICAgV2ViQ29yZTo6VGltZXI8U3BlbGxp
bmdIYW5kbGVyPiBtX3RpbWVyOworICAgIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBtX3N0YXJ0
T2ZDdXJyZW50TGluZTsKKyAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gbV9lbmRPZkN1cnJl
bnRMaW5lOworICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIG1fdGV4dENoZWNr
aW5nUHJvY2Vzc1R5cGU7CisgICAgYm9vbCBtX2lzU3BlbGxDaGVja0FjdGl2ZTsKK307CisKK30g
Ly8gV2ViS2l0Cit9IC8vIEJsYWNrQmVycnkKKworI2VuZGlmIC8vIFNwZWxsaW5nSGFuZGxlcl9o
Cg==
</data>
<flag name="review"
          id="201868"
          type_id="1"
          status="+"
          setter="rwlbuis"
    />
          </attachment>
      

    </bug>

</bugzilla>