<?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>93866</bug_id>
          
          <creation_ts>2012-08-13 10:49:29 -0700</creation_ts>
          <short_desc>[BlackBerry] Queue spellcheck requests with char-count limitations</short_desc>
          <delta_ts>2012-08-14 13:45:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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">nima.ghanavatian</assigned_to>
          <cc>mifenton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>693815</commentid>
    <comment_count>0</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-08-13 10:49:29 -0700</bug_when>
    <thetext>We would like to have shorter limitations than simply by-paragraph for spellcheck requests.
Also, we should spellcheck the entire field on focus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694986</commentid>
    <comment_count>1</comment_count>
      <attachid>158335</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-08-14 08:08:36 -0700</bug_when>
    <thetext>Created attachment 158335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695165</commentid>
    <comment_count>2</comment_count>
      <attachid>158335</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-08-14 11:12:30 -0700</bug_when>
    <thetext>Comment on attachment 158335
Patch

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

Looks good, some minor issues to fix.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:789
&gt; +    BlackBerry::Platform::StopWatch m_timer;

We generally do not use m_ for static local vars.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:796
&gt; +    Frame* frame = element-&gt;document()-&gt;frame();

Could element-&gt;document() be null?

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:857
&gt; +        // If total block text is under the limitted amount, send the entire chunk.

limited I think.

&gt; Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp:899
&gt; +    RefPtr&lt;Range&gt; rangeForSpellChecking = 0;

I dont think the = 0 is needed, should be the default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695200</commentid>
    <comment_count>3</comment_count>
      <attachid>158383</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-08-14 11:38:06 -0700</bug_when>
    <thetext>Created attachment 158383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695223</commentid>
    <comment_count>4</comment_count>
      <attachid>158383</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-08-14 12:03:05 -0700</bug_when>
    <thetext>Comment on attachment 158383
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695347</commentid>
    <comment_count>5</comment_count>
      <attachid>158383</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 13:45:29 -0700</bug_when>
    <thetext>Comment on attachment 158383
Patch

Clearing flags on attachment: 158383

Committed r125598: &lt;http://trac.webkit.org/changeset/125598&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695348</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 13:45:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158335</attachid>
            <date>2012-08-14 08:08:36 -0700</date>
            <delta_ts>2012-08-14 11:38:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93866-20120814110318.patch</filename>
            <type>text/plain</type>
            <size>16970</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCBmNjk0MWU2ODlmMWM2NWQ1OTNjMzhjN2JkZDVjODQ0OGJkZWE4ZTExLi40NTlkODI3OThm
ZTViZGU2NjY3ODhhYThlMGI4N2M1MDMyMTBlMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNy0zMCAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBRdWV1ZSBzcGVsbGNo
ZWNrIHJlcXVlc3RzIHdpdGggY2hhci1jb3VudCBsaW1pdGF0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUjE4NDE5NgorICAgICAgICBNYWtpbmcg
c3BlbGxjaGVjayBhIGxpdHRsZSBtb3JlIGdyYW51bGFyIHNvIGFzIHRvIHdvcmsgYXJvdW5kCisg
ICAgICAgIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgaW5wdXRzZXJ2aWNlLgorICAgICAgICBBbHNv
LCBzcGVsbGNoZWNrIHRoZSBlbnRpcmUgZmllbGQgb24gZm9jdXMgb25seSBpZgorICAgICAgICBz
cGVsbGNoZWNrPSJvbiIgaXMgZXhwbGljaXRseSBzZXQuCisKKyAgICAgICAgSW50ZXJuYWxseSBy
ZXZpZXdlZCBieSBNaWtlIEZlbnRvbi4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oklu
cHV0SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQpOgorCiAyMDEyLTA4LTE0
ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAg
ICBbQmxhY2tCZXJyeV0gRW5hYmxlIEROUyBwcmVmZXRjaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCA5OTQxMWYw
MWY0Y2VkNjRlYmEzM2UwMDRmNDE4MTg3NGYzZjY0MGM4Li5iMWNhMGE5ZDk4MWM4MDQyODA2MWU1
YzQ0ZGZkNDZjNTJkNTI4NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtMTk4LDYgKzE5OCwxMSBAQCBBdHRy
aWJ1dGVTdGF0ZSBlbGVtZW50U3VwcG9ydHNBdXRvY29tcGxldGUoY29uc3QgRWxlbWVudCogZWxl
bWVudCkKICAgICByZXR1cm4gZWxlbWVudEF0dHJpYnV0ZVN0YXRlKGVsZW1lbnQsIEhUTUxOYW1l
czo6YXV0b2NvbXBsZXRlQXR0cik7CiB9CiAKK0F0dHJpYnV0ZVN0YXRlIGVsZW1lbnRTdXBwb3J0
c1NwZWxsQ2hlY2soY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVu
dEF0dHJpYnV0ZVN0YXRlKGVsZW1lbnQsIEhUTUxOYW1lczo6c3BlbGxjaGVja0F0dHIpOworfQor
CiBBdHRyaWJ1dGVTdGF0ZSBlbGVtZW50QXR0cmlidXRlU3RhdGUoY29uc3QgRWxlbWVudCogZWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKICAgICAvLyBGaXJz
dCB3ZSBjaGVjayB0aGUgaW5wdXQgaXRlbSBpdHNlbGYuIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90
IGRlZmluZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9ET01TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9ET01TdXBwb3J0LmgKaW5kZXggMzg2OTlkYzFmODFlMzFkZGVlN2I2ZTBjOThiMjMyMTRkNmY3
MjBmZC4uNWRlN2Y3MzFmNTRlYzFlYTZjNmM2MGJhNDgzODRhZmMxNjcwYjc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuaApA
QCAtNjAsNiArNjAsNyBAQCBib29sIGlzQ29sb3JJbnB1dEZpZWxkKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnQqKTsKIEF0dHJpYnV0ZVN0YXRlIGVsZW1lbnRBdHRyaWJ1dGVTdGF0ZShjb25zdCBXZWJD
b3JlOjpFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYpOwogQXR0cmlidXRl
U3RhdGUgZWxlbWVudFN1cHBvcnRzQXV0b2NvcnJlY3QoY29uc3QgV2ViQ29yZTo6RWxlbWVudCop
OwogQXR0cmlidXRlU3RhdGUgZWxlbWVudFN1cHBvcnRzQXV0b2NvbXBsZXRlKGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnQqKTsKK0F0dHJpYnV0ZVN0YXRlIGVsZW1lbnRTdXBwb3J0c1NwZWxsQ2hlY2so
Y29uc3QgV2ViQ29yZTo6RWxlbWVudCopOwogCiBXVEY6OlN0cmluZyBpbnB1dEVsZW1lbnRUZXh0
KFdlYkNvcmU6OkVsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKaW5kZXggMWQwYTVkMjY1NjRlM2M5
MzE1YmZlNDY5Y2FjYmI1NzNlZTEwYmNiYi4uM2Y0NzE4NWQwYTk4NGYxN2JiYzk4ODE3NTMxNTU0
MjliYjUwOGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkVkaXRvckNsaWVudEJsYWNrQmVycnku
aCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNTcsOSArNTgsMTEgQEAKICNpbmNsdWRlICJTcGVsbENo
ZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYlBh
Z2VDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cu
aD4KQEAgLTcyLDYgKzc1LDcgQEAKICNkZWZpbmUgRU5BQkxFX1NQRUxMSU5HX0xPRyAwCiAKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhMZWFyblRleHREYXRhU2l6ZSA9IDUwMDsKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoID0gMjUwOwogCiB1c2lu
ZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTUzMSwyOCArNTM1LDQ5IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlCiAgICAgUmVm
UHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+IHJlcXVlc3QgPSB0ZXh0Q2hlY2tpbmdS
ZXF1ZXN0OwogCiAgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0gcmVxdWVzdC0+c2VxdWVuY2UoKTsK
LSAgICBpbnQgcmVxdWVzdExlbmd0aCA9IHJlcXVlc3QtPnRleHQoKS5sZW5ndGgoKTsKLSAgICBp
ZiAoIXJlcXVlc3RMZW5ndGggLyogfHwgcmVxdWVzdExlbmd0aCA+IG1heFNwZWxsQ2hlY2tTdHJp
bmdMZW5ndGggKi8pIHsKKworICAgIC8vIENoZWNrIGlmIGZpZWxkIGV4cGxpY2l0bHkgYXNrZWQg
Zm9yIHNwZWxsY2hlY2tpbmcuCisgICAgaWYgKERPTVN1cHBvcnQ6OmVsZW1lbnRTdXBwb3J0c1Nw
ZWxsQ2hlY2sobV9jdXJyZW50Rm9jdXNFbGVtZW50LmdldCgpKSAhPSBET01TdXBwb3J0OjpPbikg
eworICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChzZXF1ZW5jZUlkLCB0cnVl
IC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCByZXF1ZXN0TGVuZ3RoID0gcmVxdWVzdC0+dGV4dCgpLmxlbmd0aCgpOworCisgICAgaWYg
KHJlcXVlc3RMZW5ndGggPCAyKSB7CiAgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2Vs
bGVkKHNlcXVlbmNlSWQsIHRydWUgLyogaXNTZXF1ZW5jZUlkICovKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGlmIChyZXF1ZXN0TGVuZ3RoID4gTWF4U3BlbGxDaGVja2luZ1N0cmlu
Z0xlbmd0aCkgeworICAgICAgICAvLyBDYW5jZWwgdGhpcyByZXF1ZXN0IGFuZCBzZW5kIGl0IG9m
ZiBpbiBuZXdseSBjcmVhdGVkIGNodW5rcy4KKyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RD
YW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOworICAgICAgICBp
ZiAobV9jdXJyZW50Rm9jdXNFbGVtZW50ICYmIG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1l
bnQoKSAmJiBtX2N1cnJlbnRGb2N1c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV9j
dXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKSkgewor
ICAgICAgICAgICAgLy8gQ29udmVydCBmcm9tIHBvc2l0aW9uIGJhY2sgdG8gc2VsZWN0aW9uIHNv
IHdlIGNhbiBleHBhbmQgdGhlIHJhbmdlIHRvIGluY2x1ZGUgdGhlIHByZXZpb3VzIGxpbmUuIFRo
aXMgc2hvdWxkIGhhbmRsZSBjYXNlcyB3aGVuIHRoZSB1c2VyIGhpdHMKKyAgICAgICAgICAgIC8v
IGVudGVyIHRvIGZpbmlzaCBjb21wb3NpbmcgYSB3b3JkIGFuZCBjcmVhdGUgYSBuZXcgbGluZS4K
KyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9jdXJyZW50Rm9j
dXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c3RhcnQoKTsKKyAg
ICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbiA9IFZpc2libGVTZWxl
Y3Rpb24ocHJldmlvdXNMaW5lUG9zaXRpb24oY2FyZXRQb3NpdGlvbiwgY2FyZXRQb3NpdGlvbi5s
aW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSksIGNhcmV0UG9z
aXRpb24pOworICAgICAgICAgICAgc3BlbGxDaGVja0Jsb2NrKHZpc2libGVTZWxlY3Rpb24sIFRl
eHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIHdjaGFyX3QqIGNoZWNraW5nU3RyaW5nID0gKHdjaGFyX3QqKW1hbGxv
YyhzaXplb2Yod2NoYXJfdCkgKiAocmVxdWVzdExlbmd0aCArIDEpKTsKICAgICBpZiAoIWNoZWNr
aW5nU3RyaW5nKSB7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2dBbHdheXMoQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nIENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmluZy4iKTsK
KyAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJbnB1dEhhbmRsZXI6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nIENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmluZy4iKTsK
ICAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAv
KiBpc1NlcXVlbmNlSWQgKi8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IHN0
cmluZ0xlbmd0aCA9IDA7Ci0gICAgaWYgKCFjb252ZXJ0U3RyaW5nVG9XY2hhcihyZXF1ZXN0LT50
ZXh0KCksIGNoZWNraW5nU3RyaW5nLCByZXF1ZXN0TGVuZ3RoICsgMSwgJnN0cmluZ0xlbmd0aCkp
IHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5cyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcgRmFpbGVkIHRvIGNvbnZlcnQgU3RyaW5nIHRvIHdjaGFyIHR5cGUuIik7CisgICAg
aW50IHBhcmFncmFwaExlbmd0aCA9IDA7CisgICAgaWYgKCFjb252ZXJ0U3RyaW5nVG9XY2hhcihy
ZXF1ZXN0LT50ZXh0KCksIGNoZWNraW5nU3RyaW5nLCByZXF1ZXN0TGVuZ3RoICsgMSwgJnBhcmFn
cmFwaExlbmd0aCkpIHsKKyAgICAgICAgbG9nQWx3YXlzKExvZ0xldmVsQ3JpdGljYWwsICJJbnB1
dEhhbmRsZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nIEZhaWxlZCB0byBjb252ZXJ0IFN0cmlu
ZyB0byB3Y2hhciB0eXBlLiIpOwogICAgICAgICBmcmVlKGNoZWNraW5nU3RyaW5nKTsKICAgICAg
ICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1Nl
cXVlbmNlSWQgKi8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50MzJfdCB0cmFu
c2FjdGlvbklkID0gbV93ZWJQYWdlLT5tX2NsaWVudC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nQXN5
bmMoY2hlY2tpbmdTdHJpbmcsIHN0cmluZ0xlbmd0aCk7CisgICAgaW50MzJfdCB0cmFuc2FjdGlv
bklkID0gbV93ZWJQYWdlLT5tX2NsaWVudC0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nQXN5bmMoY2hl
Y2tpbmdTdHJpbmcsIHBhcmFncmFwaExlbmd0aCk7CiAgICAgZnJlZShjaGVja2luZ1N0cmluZyk7
CiAKICAgICAvLyBJZiB0aGUgY2FsbCB0byB0aGUgaW5wdXQgc2VydmljZSBkaWQgbm90IGdvIHRo
cm91Z2gsIHRoZW4gY2FuY2VsIHRoZSByZXF1ZXN0IHNvIHdlIGRvbid0IGJsb2NrIGVuZGxlc3Ns
eS4KQEAgLTYyMCwxMyArNjQ1LDIwIEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5n
UmVxdWVzdFByb2Nlc3NlZChpbnQzMl90IHRyYW5zYWN0aW9uSWQsIHNwYW5uYWJsCiAgICAgLy8g
dHJhbnNhY3Rpb25JZCBoZXJlIGlzIGZvciB1c2Ugd2l0aCB0aGUgaW5wdXQgc2VydmljZS4gV2Ug
bmVlZCB0byB0cmFuc2xhdGUgdGhpcyB0byBzZXF1ZW5jZUlkIHVzZWQgd2l0aCBTcGVsbENoZWNr
ZXIuCiAgICAgaW50MzJfdCBzZXF1ZW5jZUlkID0gY29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVl
bmNlSWQodHJhbnNhY3Rpb25JZCk7CiAKLSAgICBTcGVsbENoZWNrZXIqIHNwID0gZ2V0U3BlbGxD
aGVja2VyKCk7Ci0gICAgaWYgKCFzcCB8fCAhc2VxdWVuY2VJZCkgewotICAgICAgICBJbnB1dExv
ZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0UHJvY2Vz
c2VkIGZhaWxlZCB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IHdpdGggc2VxdWVuY2VJZCAlZCIsIHNl
cXVlbmNlSWQpOworICAgIFNwZWxsQ2hlY2tlciogc3BlbGxDaGVja2VyID0gZ2V0U3BlbGxDaGVj
a2VyKCk7CisgICAgaWYgKCFzcGVsbENoZWNrZXIgfHwgIXNlcXVlbmNlSWQpIHsKKyAgICAgICAg
U3BlbGxpbmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzcGVsbENoZWNraW5nUmVx
dWVzdFByb2Nlc3NlZCBGYWlsZWQgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCB3aXRoIHNlcXVlbmNl
SWQgJWQiLCBzZXF1ZW5jZUlkKTsKICAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxs
ZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHNwLT5kaWRDaGVja1N1Y2NlZWRlZChzZXF1ZW5jZUlkLCByZXN1bHRzKTsK
KyAgICBzcGVsbENoZWNrZXItPmRpZENoZWNrU3VjY2VlZGVkKHNlcXVlbmNlSWQsIHJlc3VsdHMp
OworfQorCit2b2lkIElucHV0SGFuZGxlcjo6Y2FuY2VsQWxsU3BlbGxDaGVja2luZ1JlcXVlc3Rz
KCkKK3sKKyAgICBmb3IgKHN0ZDo6bWFwPGludDMyX3QsIGludDMyX3Q+OjppdGVyYXRvciBpdCA9
IG1fc2VxdWVuY2VNYXAuYmVnaW4oKTsgaXQgIT0gbV9zZXF1ZW5jZU1hcC5lbmQoKTsgKytpdCkK
KyAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaXQtPnNlY29uZCwgdHJ1ZSAv
KiBpc1NlcXVlbmNlSWQgKi8pOworICAgIG1fc2VxdWVuY2VNYXAuY2xlYXIoKTsKIH0KIAogdm9p
ZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKGludDMyX3QgaWQs
IGJvb2wgaXNTZXF1ZW5jZUlkKQpAQCAtNjM1LDEyICs2NjcsMTIgQEAgdm9pZCBJbnB1dEhhbmRs
ZXI6OnNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKGludDMyX3QgaWQsIGJvb2wgaXNTZXF1
ZW5jZUlkKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQzMl90IHNlcXVlbmNlSWQgPSBpc1Nl
cXVlbmNlSWQgPyBpZCA6IGNvbnZlcnRUcmFuc2FjdGlvbklkVG9TZXF1ZW5jZUlkKGlkKTsKLSAg
ICBTcGVsbENoZWNrZXIqIHNwID0gZ2V0U3BlbGxDaGVja2VyKCk7Ci0gICAgaWYgKCFzcCkgewot
ICAgICAgICBJbnB1dExvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tp
bmdSZXF1ZXN0Q2FuY2VsbGVkIGZhaWxlZCB0byBjYW5jZWwgdGhlIHJlcXVlc3Qgd2l0aCBzZXF1
ZW5jZUlkICVkIiwgc2VxdWVuY2VJZCk7CisgICAgU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIg
PSBnZXRTcGVsbENoZWNrZXIoKTsKKyAgICBpZiAoIXNwZWxsQ2hlY2tlcikgeworICAgICAgICBT
cGVsbGluZ0xvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tpbmdSZXF1
ZXN0Q2FuY2VsbGVkIGZhaWxlZCB0byBjYW5jZWwgdGhlIHJlcXVlc3Qgd2l0aCBzZXF1ZW5jZUlk
ICVkIiwgc2VxdWVuY2VJZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc3AtPmRpZENo
ZWNrQ2FuY2VsZWQoc2VxdWVuY2VJZCk7CisgICAgc3BlbGxDaGVja2VyLT5kaWRDaGVja0NhbmNl
bGVkKHNlcXVlbmNlSWQpOwogfQogCiBTcGVsbENoZWNrZXIqIElucHV0SGFuZGxlcjo6Z2V0U3Bl
bGxDaGVja2VyKCkKQEAgLTcxOSw2ICs3NTEsOSBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxl
bWVudFVuZm9jdXNlZChib29sIHJlZm9jdXNPY2N1cmluZykKICAgICAgICAgLy8gSWYgdGhlIGZy
YW1lIHNlbGVjdGlvbiBpc24ndCBmb2N1c2VkLCBmb2N1cyBpdC4KICAgICAgICAgaWYgKCFtX2N1
cnJlbnRGb2N1c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0Zv
Y3VzZWQoKSkKICAgICAgICAgICAgIG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldEZvY3VzZWQodHJ1ZSk7CisKKyAgICAgICAgLy8gQ2Fu
Y2VsIGFueSBzcGVsbGNoZWNrIHJlcXVlc3RzIHRoYXQgbWlnaHQgYmUgb25nb2luZy4KKyAgICAg
ICAgY2FuY2VsQWxsU3BlbGxDaGVja2luZ1JlcXVlc3RzKCk7CiAgICAgfQogCiAgICAgLy8gQ2xl
YXIgdGhlIG5vZGUgZGV0YWlscy4KQEAgLTc0OCwxMCArNzgzLDIyIEBAIHZvaWQgSW5wdXRIYW5k
bGVyOjpzZXRJbnB1dE1vZGVFbmFibGVkKGJvb2wgYWN0aXZlKQogdm9pZCBJbnB1dEhhbmRsZXI6
OnNldEVsZW1lbnRGb2N1c2VkKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKERPTVN1
cHBvcnQ6OmlzVGV4dEJhc2VkQ29udGVudEVkaXRhYmxlRWxlbWVudChlbGVtZW50KSk7Ci0gICAg
QVNTRVJUKGVsZW1lbnQtPmRvY3VtZW50KCkgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KSk7CisgICAgQVNTRVJUKGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKSAmJiBlbGVtZW50
LT5kb2N1bWVudCgpLT5mcmFtZSgpKTsKKworI2lmZGVmIEVOQUJMRV9TUEVMTElOR19MT0cKKyAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RvcFdhdGNoIG1fdGltZXI7CisgICAgbV90aW1lci5z
dGFydCgpOworI2VuZGlmCisKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYg
KCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVsZW1lbnQtPmRvY3VtZW50KCkt
PmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWQoKSAhPSBpc0lucHV0TW9kZUVuYWJsZWQo
KSkKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNl
dEZvY3VzZWQoaXNJbnB1dE1vZGVFbmFibGVkKCkpOworICAgIGlmIChmcmFtZS0+c2VsZWN0aW9u
KCktPmlzRm9jdXNlZCgpICE9IGlzSW5wdXRNb2RlRW5hYmxlZCgpKQorICAgICAgICBmcmFtZS0+
c2VsZWN0aW9uKCktPnNldEZvY3VzZWQoaXNJbnB1dE1vZGVFbmFibGVkKCkpOwogCiAgICAgLy8g
Q2xlYXIgdGhlIGV4aXN0aW5nIGZvY3VzIG5vZGUgZGV0YWlscy4KICAgICBzZXRFbGVtZW50VW5m
b2N1c2VkKHRydWUgLypyZWZvY3VzT2NjdXJpbmcqLyk7CkBAIC03NzQsNiArODIxLDkxIEBAIHZv
aWQgSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNlZChFbGVtZW50KiBlbGVtZW50KQogCiAg
ICAgaWYgKCFtX2RlbGF5S2V5Ym9hcmRWaXNpYmlsaXR5Q2hhbmdlKQogICAgICAgICBub3RpZnlD
bGllbnRPZktleWJvYXJkVmlzaWJpbGl0eUNoYW5nZSh0cnVlKTsKKworI2lmZGVmIEVOQUJMRV9T
UEVMTElOR19MT0cKKyAgICBTcGVsbGluZ0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OnNldEVsZW1lbnRGb2N1c2VkIEZvY3VzaW5nIHRoZSBmaWVsZCB0b29rICVmIHNlY29uZHMuIiwg
bV90aW1lci5lbGFwc2VkKCkpOworI2VuZGlmCisKKyAgICAvLyBDaGVjayBpZiB0aGUgZmllbGQg
ZXhwbGljaXRseSBhc2tzIGZvciBzcGVsbGNoZWNraW5nLgorICAgIGlmIChET01TdXBwb3J0Ojpl
bGVtZW50U3VwcG9ydHNTcGVsbENoZWNrKGVsZW1lbnQpICE9IERPTVN1cHBvcnQ6Ok9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBTcGVsbGNoZWNrIHRoZSBmaWVsZCBpbiBpdHMgZW50aXJl
dHkuCisgICAgVmlzaWJsZVNlbGVjdGlvbiBmb2N1c2VkQmxvY2sgPSBET01TdXBwb3J0Ojp2aXNp
YmxlU2VsZWN0aW9uRm9ySW5wdXRFbGVtZW50KGVsZW1lbnQpOworICAgIHNwZWxsQ2hlY2tCbG9j
ayhmb2N1c2VkQmxvY2ssIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7CisKKyNpZmRlZiBFTkFC
TEVfU1BFTExJTkdfTE9HCisgICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5k
bGVyOjpzZXRFbGVtZW50Rm9jdXNlZCBTcGVsbGNoZWNraW5nIHRoZSBmaWVsZCBpbmNyZWFzZWQg
dGhlIHRvdGFsIHRpbWUgdG8gZm9jdXMgdG8gJWYgc2Vjb25kcy4iLCBtX3RpbWVyLmVsYXBzZWQo
KSk7CisjZW5kaWYKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayhWaXNp
YmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0
ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSkKK3sKKyAgICBpZiAoIWlzQWN0aXZlVGV4dEVkaXQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBnZXRT
cGVsbENoZWNrZXIoKTsKKyAgICBpZiAoIXNwZWxsQ2hlY2tlcikgeworICAgICAgICBTcGVsbGlu
Z0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9jayBGYWlsZWQg
dG8gc3BlbGxjaGVjayB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yU3BlbGxDaGVja2luZyA9
IHZpc2libGVTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKworICAgIC8vIElmIHdlIGhh
dmUgYSBiYXRjaCByZXF1ZXN0LCB0cnkgdG8gc2VuZCBvZmYgdGhlIGVudGlyZSBibG9jay4KKyAg
ICBpZiAodGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgPT0gVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNo
KSB7CisgICAgICAgIC8vIElmIHRvdGFsIGJsb2NrIHRleHQgaXMgdW5kZXIgdGhlIGxpbWl0dGVk
IGFtb3VudCwgc2VuZCB0aGUgZW50aXJlIGNodW5rLgorICAgICAgICBpZiAocmFuZ2VGb3JTcGVs
bENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkgPCBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVuZ3Ro
KSB7CisgICAgICAgICAgICBzcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihTcGVsbENo
ZWNrUmVxdWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgVGV4dENoZWNraW5n
UHJvY2Vzc0JhdGNoLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcsIHJhbmdlRm9yU3BlbGxDaGVja2lu
ZykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gU2lu
Y2Ugd2UgY291bGRuJ3QgY2hlY2sgdGhlIGVudGlyZSBibG9jayBhdCBvbmNlLCBzZXQgdXAgc3Rh
cnRpbmcgYW5kIGVuZGluZyBtYXJrZXJzIHRvIGZpcmUgaW5jcmVtZW50YWxseS4KKyAgICBWaXNp
YmxlUG9zaXRpb24gc3RhcnRQb3MgPSB2aXNpYmxlU2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwor
ICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mQ3VycmVudExpbmUgPSBzdGFydE9mTGluZShzdGFy
dFBvcyk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUo
c3RhcnRQb3MpOworCisgICAgd2hpbGUgKHN0YXJ0T2ZDdXJyZW50TGluZSAhPSBlbmRPZkN1cnJl
bnRMaW5lKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIHNlbGVjdGlvbiB3aXRoIHRoZSBzdGFydCBh
bmQgZW5kIHBvaW50cyBvZiB0aGUgbGluZSwgYW5kIGNvbnZlcnQgdG8gUmFuZ2UgdG8gY3JlYXRl
IGEgU3BlbGxDaGVja1JlcXVlc3QuCisgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IFZp
c2libGVTZWxlY3Rpb24oc3RhcnRPZkN1cnJlbnRMaW5lLCBlbmRPZkN1cnJlbnRMaW5lKS50b05v
cm1hbGl6ZWRSYW5nZSgpOworCisgICAgICAgIGlmIChyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRl
eHQoKS5sZW5ndGgoKSA+PSBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7CisgICAgICAg
ICAgICAvLyBJdGVyYXRlIHRocm91Z2ggd29yZHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpbmUg
dG8gdGhlIGVuZC4KKyAgICAgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IGdldFJhbmdl
Rm9yU3BlbGxDaGVja1dpdGhGaW5lR3JhbnVsYXJpdHkoc3RhcnRPZkN1cnJlbnRMaW5lLCBlbmRP
ZkN1cnJlbnRMaW5lKTsKKyAgICAgICAgICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKSB7
CisgICAgICAgICAgICAgICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVy
OjpzcGVsbENoZWNrQmxvY2sgRmFpbGVkIHRvIHNldCB0ZXh0IHJhbmdlIGZvciBzcGVsbGNoZWNr
aW5nIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgc3RhcnRPZkN1cnJlbnRMaW5lID0gVmlzaWJsZVBvc2l0aW9uKHJhbmdlRm9yU3BlbGxDaGVj
a2luZy0+ZW5kUG9zaXRpb24oKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGFy
dE9mQ3VycmVudExpbmUgPSBuZXh0TGluZVBvc2l0aW9uKHN0YXJ0T2ZDdXJyZW50TGluZSwgc3Rh
cnRPZkN1cnJlbnRMaW5lLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdh
dGlvbigpKTsKKyAgICAgICAgICAgIGVuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUoc3RhcnRP
ZkN1cnJlbnRMaW5lKTsKKyAgICAgICAgICAgIC8vIElmIHdlIGFyZSBhdCB0aGUgbGFzdCBsaW5l
LCBuZXh0TGluZVBvc2l0aW9uIHdpbGwgcmV0dXJuIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9m
IHRoZSBsaW5lLiBJZiB3ZSdyZSBub3QgYXQgdGhlIGVuZCwgd3JhcCB3aXRoIGEgY2FsbCB0byBz
dGFydE9mTGluZSB0byBiZSBzYWZlLgorICAgICAgICAgICAgaWYgKHN0YXJ0T2ZDdXJyZW50TGlu
ZSAhPSBlbmRPZkN1cnJlbnRMaW5lKQorICAgICAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50TGlu
ZSA9IHN0YXJ0T2ZMaW5lKHN0YXJ0T2ZDdXJyZW50TGluZSk7CisgICAgICAgIH0KKworICAgICAg
ICBTcGVsbGluZ0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hlY2tCbG9j
ayBTdWJzdHJpbmcgdGV4dCBpcyAnJXMnLCBvZiBzaXplICVkIiwgcmFuZ2VGb3JTcGVsbENoZWNr
aW5nLT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpLCByYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQo
KS5sZW5ndGgoKSk7CisKKyAgICAgICAgLy8gQ2FsbCBzcGVsbGNoZWNrIHdpdGggc3Vic3RyaW5n
LgorICAgICAgICBzcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihTcGVsbENoZWNrUmVx
dWVzdDo6Y3JlYXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgVGV4dENoZWNraW5nUHJvY2Vz
c0JhdGNoLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcsIHJhbmdlRm9yU3BlbGxDaGVja2luZykpOwor
ICAgIH0KK30KKworUGFzc1JlZlB0cjxSYW5nZT4gSW5wdXRIYW5kbGVyOjpnZXRSYW5nZUZvclNw
ZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5KFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9u
LCBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVu
ZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQoc3RhcnRQb3NpdGlvbik7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSAwOworICAgIHdoaWxlIChlbmRPZkN1cnJlbnRX
b3JkICE9IGVuZFBvc2l0aW9uKSB7CisgICAgICAgIHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IFZp
c2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kT2ZDdXJyZW50V29yZCkudG9Ob3JtYWxp
emVkUmFuZ2UoKTsKKyAgICAgICAgLy8gSWYgd2UgZXhjZWVkIHRoZSBNYXhTcGVsbENoZWNraW5n
U3RyaW5nTGVuZ3RoIGxpbWl0LCB0aGVuIGdvIGJhY2sgb25lIHdvcmQgYW5kIHJldHVybiB0aGlz
IHJhbmdlLgorICAgICAgICBpZiAocmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0KCkubGVuZ3Ro
KCkgPj0gTWF4U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBW
aXNpYmxlU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZE9mV29yZChwcmV2aW91c1dvcmRQb3Np
dGlvbihlbmRPZkN1cnJlbnRXb3JkKSkpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisKKyAgICAgICAg
ZW5kT2ZDdXJyZW50V29yZCA9IGVuZE9mV29yZChuZXh0V29yZFBvc2l0aW9uKGVuZE9mQ3VycmVu
dFdvcmQpKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgSW5wdXRIYW5kbGVyOjpv
cGVuRGF0ZVBvcHVwKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQsIEJsYWNrQmVycnlJbnB1dFR5
cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvSW5wdXRIYW5kbGVyLmgKaW5kZXggMzY3MjY0MDBkMDg3ZWE1NGY0YmMxM2ZjMzU0MjhlNzg5
MWQ5NTlkNC4uODY5Y2ZjMjczZDhhMTY1N2I1OWFmYjA0YWNiYjU3OWRhZTVhZDk2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5k
bGVyLmgKQEAgLTE5LDYgKzE5LDggQEAKICNpZm5kZWYgSW5wdXRIYW5kbGVyX2gKICNkZWZpbmUg
SW5wdXRIYW5kbGVyX2gKIAorI2luY2x1ZGUgIlRleHRDaGVja2luZy5oIgorCiAjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtSW5wdXRFdmVudHMuaD4KIAogI2luY2x1ZGUgPGltZi9ldmVudHMu
aD4KQEAgLTM4LDggKzQwLDExIEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiBjbGFzcyBIVE1M
U2VsZWN0RWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOworY2xhc3MgUmFuZ2U7
CiBjbGFzcyBTcGVsbENoZWNrZXI7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OworY2xhc3Mg
VmlzaWJsZVBvc2l0aW9uOworY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIH0KIAogbmFtZXNwYWNl
IEJsYWNrQmVycnkgewpAQCAtMTg5LDYgKzE5NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsZWFy
blRleHQoKTsKICAgICB2b2lkIHNlbmRMZWFyblRleHREZXRhaWxzKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgaW50MzJfdCBjb252ZXJ0VHJhbnNhY3Rpb25JZFRvU2VxdWVuY2VJZChpbnQzMl90
IHRyYW5zYWN0aW9uSWQpOworICAgIHZvaWQgc3BlbGxDaGVja0Jsb2NrKFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgUGFz
c1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gZ2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFu
dWxhcml0eShXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKTsKKyAgICB2b2lkIGNhbmNlbEFsbFNwZWxsQ2hl
Y2tpbmdSZXF1ZXN0cygpOwogICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogZ2V0U3BlbGxDaGVj
a2VyKCk7CiAKICAgICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158383</attachid>
            <date>2012-08-14 11:38:06 -0700</date>
            <delta_ts>2012-08-14 13:45:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93866-20120814143248.patch</filename>
            <type>text/plain</type>
            <size>16763</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCBmNjk0MWU2ODlmMWM2NWQ1OTNjMzhjN2JkZDVjODQ0OGJkZWE4ZTExLi40NTlkODI3OThm
ZTViZGU2NjY3ODhhYThlMGI4N2M1MDMyMTBlMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNy0zMCAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBRdWV1ZSBzcGVsbGNo
ZWNrIHJlcXVlc3RzIHdpdGggY2hhci1jb3VudCBsaW1pdGF0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM4NjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQUjE4NDE5NgorICAgICAgICBNYWtpbmcg
c3BlbGxjaGVjayBhIGxpdHRsZSBtb3JlIGdyYW51bGFyIHNvIGFzIHRvIHdvcmsgYXJvdW5kCisg
ICAgICAgIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgaW5wdXRzZXJ2aWNlLgorICAgICAgICBBbHNv
LCBzcGVsbGNoZWNrIHRoZSBlbnRpcmUgZmllbGQgb24gZm9jdXMgb25seSBpZgorICAgICAgICBz
cGVsbGNoZWNrPSJvbiIgaXMgZXhwbGljaXRseSBzZXQuCisKKyAgICAgICAgSW50ZXJuYWxseSBy
ZXZpZXdlZCBieSBNaWtlIEZlbnRvbi4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oklu
cHV0SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RQcm9jZXNzZWQpOgorCiAyMDEyLTA4LTE0
ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAg
ICBbQmxhY2tCZXJyeV0gRW5hYmxlIEROUyBwcmVmZXRjaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCA5OTQxMWYw
MWY0Y2VkNjRlYmEzM2UwMDRmNDE4MTg3NGYzZjY0MGM4Li5iMWNhMGE5ZDk4MWM4MDQyODA2MWU1
YzQ0ZGZkNDZjNTJkNTI4NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtMTk4LDYgKzE5OCwxMSBAQCBBdHRy
aWJ1dGVTdGF0ZSBlbGVtZW50U3VwcG9ydHNBdXRvY29tcGxldGUoY29uc3QgRWxlbWVudCogZWxl
bWVudCkKICAgICByZXR1cm4gZWxlbWVudEF0dHJpYnV0ZVN0YXRlKGVsZW1lbnQsIEhUTUxOYW1l
czo6YXV0b2NvbXBsZXRlQXR0cik7CiB9CiAKK0F0dHJpYnV0ZVN0YXRlIGVsZW1lbnRTdXBwb3J0
c1NwZWxsQ2hlY2soY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVu
dEF0dHJpYnV0ZVN0YXRlKGVsZW1lbnQsIEhUTUxOYW1lczo6c3BlbGxjaGVja0F0dHIpOworfQor
CiBBdHRyaWJ1dGVTdGF0ZSBlbGVtZW50QXR0cmlidXRlU3RhdGUoY29uc3QgRWxlbWVudCogZWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKICAgICAvLyBGaXJz
dCB3ZSBjaGVjayB0aGUgaW5wdXQgaXRlbSBpdHNlbGYuIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90
IGRlZmluZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9ET01TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9ET01TdXBwb3J0LmgKaW5kZXggMzg2OTlkYzFmODFlMzFkZGVlN2I2ZTBjOThiMjMyMTRkNmY3
MjBmZC4uNWRlN2Y3MzFmNTRlYzFlYTZjNmM2MGJhNDgzODRhZmMxNjcwYjc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuaApA
QCAtNjAsNiArNjAsNyBAQCBib29sIGlzQ29sb3JJbnB1dEZpZWxkKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnQqKTsKIEF0dHJpYnV0ZVN0YXRlIGVsZW1lbnRBdHRyaWJ1dGVTdGF0ZShjb25zdCBXZWJD
b3JlOjpFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYpOwogQXR0cmlidXRl
U3RhdGUgZWxlbWVudFN1cHBvcnRzQXV0b2NvcnJlY3QoY29uc3QgV2ViQ29yZTo6RWxlbWVudCop
OwogQXR0cmlidXRlU3RhdGUgZWxlbWVudFN1cHBvcnRzQXV0b2NvbXBsZXRlKGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnQqKTsKK0F0dHJpYnV0ZVN0YXRlIGVsZW1lbnRTdXBwb3J0c1NwZWxsQ2hlY2so
Y29uc3QgV2ViQ29yZTo6RWxlbWVudCopOwogCiBXVEY6OlN0cmluZyBpbnB1dEVsZW1lbnRUZXh0
KFdlYkNvcmU6OkVsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKaW5kZXggMWQwYTVkMjY1NjRlM2M5
MzE1YmZlNDY5Y2FjYmI1NzNlZTEwYmNiYi4uMzFmNjQ2YjBhYTZlYmVhODYxOGVlMjczZDk2YWFm
NzNlZTJhYjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC01Nyw5ICs1NywxMSBAQAogI2luY2x1ZGUg
IlNwZWxsQ2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgogI2luY2x1ZGUgIldl
YlNldHRpbmdzLmgiCisjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogCiAjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybUxvZy5oPgpAQCAtNzIsNiArNzQsNyBAQAogI2RlZmluZSBFTkFCTEVfU1BFTExJTkdfTE9H
IDAKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heExlYXJuVGV4dERhdGFTaXplID0gNTAwOwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heFNwZWxsQ2hlY2tpbmdTdHJpbmdMZW5ndGggPSAyNTA7
CiAKIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtNTMxLDI4ICs1MzQsNDkgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWUK
ICAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4gcmVxdWVzdCA9IHRleHRD
aGVja2luZ1JlcXVlc3Q7CiAKICAgICBpbnQzMl90IHNlcXVlbmNlSWQgPSByZXF1ZXN0LT5zZXF1
ZW5jZSgpOwotICAgIGludCByZXF1ZXN0TGVuZ3RoID0gcmVxdWVzdC0+dGV4dCgpLmxlbmd0aCgp
OwotICAgIGlmICghcmVxdWVzdExlbmd0aCAvKiB8fCByZXF1ZXN0TGVuZ3RoID4gbWF4U3BlbGxD
aGVja1N0cmluZ0xlbmd0aCAqLykgeworCisgICAgLy8gQ2hlY2sgaWYgZmllbGQgZXhwbGljaXRs
eSBhc2tlZCBmb3Igc3BlbGxjaGVja2luZy4KKyAgICBpZiAoRE9NU3VwcG9ydDo6ZWxlbWVudFN1
cHBvcnRzU3BlbGxDaGVjayhtX2N1cnJlbnRGb2N1c0VsZW1lbnQuZ2V0KCkpICE9IERPTVN1cHBv
cnQ6Ok9uKSB7CisgICAgICAgIHNwZWxsQ2hlY2tpbmdSZXF1ZXN0Q2FuY2VsbGVkKHNlcXVlbmNl
SWQsIHRydWUgLyogaXNTZXF1ZW5jZUlkICovKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIHJlcXVlc3RMZW5ndGggPSByZXF1ZXN0LT50ZXh0KCkubGVuZ3RoKCk7CisK
KyAgICBpZiAocmVxdWVzdExlbmd0aCA8IDIpIHsKICAgICAgICAgc3BlbGxDaGVja2luZ1JlcXVl
c3RDYW5jZWxsZWQoc2VxdWVuY2VJZCwgdHJ1ZSAvKiBpc1NlcXVlbmNlSWQgKi8pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKHJlcXVlc3RMZW5ndGggPiBNYXhTcGVsbENoZWNr
aW5nU3RyaW5nTGVuZ3RoKSB7CisgICAgICAgIC8vIENhbmNlbCB0aGlzIHJlcXVlc3QgYW5kIHNl
bmQgaXQgb2ZmIGluIG5ld2x5IGNyZWF0ZWQgY2h1bmtzLgorICAgICAgICBzcGVsbENoZWNraW5n
UmVxdWVzdENhbmNlbGxlZChzZXF1ZW5jZUlkLCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7Cisg
ICAgICAgIGlmIChtX2N1cnJlbnRGb2N1c0VsZW1lbnQgJiYgbV9jdXJyZW50Rm9jdXNFbGVtZW50
LT5kb2N1bWVudCgpICYmIG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KSAmJiBtX2N1cnJlbnRGb2N1c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlv
bigpKSB7CisgICAgICAgICAgICAvLyBDb252ZXJ0IGZyb20gcG9zaXRpb24gYmFjayB0byBzZWxl
Y3Rpb24gc28gd2UgY2FuIGV4cGFuZCB0aGUgcmFuZ2UgdG8gaW5jbHVkZSB0aGUgcHJldmlvdXMg
bGluZS4gVGhpcyBzaG91bGQgaGFuZGxlIGNhc2VzIHdoZW4gdGhlIHVzZXIgaGl0cworICAgICAg
ICAgICAgLy8gZW50ZXIgdG8gZmluaXNoIGNvbXBvc2luZyBhIHdvcmQgYW5kIGNyZWF0ZSBhIG5l
dyBsaW5lLgorICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGNhcmV0UG9zaXRpb24gPSBtX2N1
cnJlbnRGb2N1c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zdGFy
dCgpOworICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxlU2VsZWN0aW9uID0gVmlz
aWJsZVNlbGVjdGlvbihwcmV2aW91c0xpbmVQb3NpdGlvbihjYXJldFBvc2l0aW9uLCBjYXJldFBv
c2l0aW9uLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpKSwg
Y2FyZXRQb3NpdGlvbik7CisgICAgICAgICAgICBzcGVsbENoZWNrQmxvY2sodmlzaWJsZVNlbGVj
dGlvbiwgVGV4dENoZWNraW5nUHJvY2Vzc0luY3JlbWVudGFsKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgd2NoYXJfdCogY2hlY2tpbmdTdHJpbmcgPSAod2NoYXJf
dCopbWFsbG9jKHNpemVvZih3Y2hhcl90KSAqIChyZXF1ZXN0TGVuZ3RoICsgMSkpOwogICAgIGlm
ICghY2hlY2tpbmdTdHJpbmcpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fs
d2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxl
cjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3Ry
aW5nLiIpOworICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxDcml0aWNhbCwgIklucHV0SGFuZGxl
cjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3Ry
aW5nLiIpOwogICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChzZXF1ZW5jZUlk
LCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpbnQgc3RyaW5nTGVuZ3RoID0gMDsKLSAgICBpZiAoIWNvbnZlcnRTdHJpbmdUb1djaGFyKHJl
cXVlc3QtPnRleHQoKSwgY2hlY2tpbmdTdHJpbmcsIHJlcXVlc3RMZW5ndGggKyAxLCAmc3RyaW5n
TGVuZ3RoKSkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiSW5wdXRIYW5kbGVyOjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyBGYWlsZWQgdG8gY29udmVydCBTdHJpbmcgdG8gd2NoYXIgdHlwZS4i
KTsKKyAgICBpbnQgcGFyYWdyYXBoTGVuZ3RoID0gMDsKKyAgICBpZiAoIWNvbnZlcnRTdHJpbmdU
b1djaGFyKHJlcXVlc3QtPnRleHQoKSwgY2hlY2tpbmdTdHJpbmcsIHJlcXVlc3RMZW5ndGggKyAx
LCAmcGFyYWdyYXBoTGVuZ3RoKSkgeworICAgICAgICBsb2dBbHdheXMoTG9nTGV2ZWxDcml0aWNh
bCwgIklucHV0SGFuZGxlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcgRmFpbGVkIHRvIGNvbnZl
cnQgU3RyaW5nIHRvIHdjaGFyIHR5cGUuIik7CiAgICAgICAgIGZyZWUoY2hlY2tpbmdTdHJpbmcp
OwogICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChzZXF1ZW5jZUlkLCB0cnVl
IC8qIGlzU2VxdWVuY2VJZCAqLyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbnQz
Ml90IHRyYW5zYWN0aW9uSWQgPSBtX3dlYlBhZ2UtPm1fY2xpZW50LT5jaGVja1NwZWxsaW5nT2ZT
dHJpbmdBc3luYyhjaGVja2luZ1N0cmluZywgc3RyaW5nTGVuZ3RoKTsKKyAgICBpbnQzMl90IHRy
YW5zYWN0aW9uSWQgPSBtX3dlYlBhZ2UtPm1fY2xpZW50LT5jaGVja1NwZWxsaW5nT2ZTdHJpbmdB
c3luYyhjaGVja2luZ1N0cmluZywgcGFyYWdyYXBoTGVuZ3RoKTsKICAgICBmcmVlKGNoZWNraW5n
U3RyaW5nKTsKIAogICAgIC8vIElmIHRoZSBjYWxsIHRvIHRoZSBpbnB1dCBzZXJ2aWNlIGRpZCBu
b3QgZ28gdGhyb3VnaCwgdGhlbiBjYW5jZWwgdGhlIHJlcXVlc3Qgc28gd2UgZG9uJ3QgYmxvY2sg
ZW5kbGVzc2x5LgpAQCAtNjIwLDEzICs2NDQsMjAgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNwZWxs
Q2hlY2tpbmdSZXF1ZXN0UHJvY2Vzc2VkKGludDMyX3QgdHJhbnNhY3Rpb25JZCwgc3Bhbm5hYmwK
ICAgICAvLyB0cmFuc2FjdGlvbklkIGhlcmUgaXMgZm9yIHVzZSB3aXRoIHRoZSBpbnB1dCBzZXJ2
aWNlLiBXZSBuZWVkIHRvIHRyYW5zbGF0ZSB0aGlzIHRvIHNlcXVlbmNlSWQgdXNlZCB3aXRoIFNw
ZWxsQ2hlY2tlci4KICAgICBpbnQzMl90IHNlcXVlbmNlSWQgPSBjb252ZXJ0VHJhbnNhY3Rpb25J
ZFRvU2VxdWVuY2VJZCh0cmFuc2FjdGlvbklkKTsKIAotICAgIFNwZWxsQ2hlY2tlciogc3AgPSBn
ZXRTcGVsbENoZWNrZXIoKTsKLSAgICBpZiAoIXNwIHx8ICFzZXF1ZW5jZUlkKSB7Ci0gICAgICAg
IElucHV0TG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVl
c3RQcm9jZXNzZWQgZmFpbGVkIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3Qgd2l0aCBzZXF1ZW5jZUlk
ICVkIiwgc2VxdWVuY2VJZCk7CisgICAgU3BlbGxDaGVja2VyKiBzcGVsbENoZWNrZXIgPSBnZXRT
cGVsbENoZWNrZXIoKTsKKyAgICBpZiAoIXNwZWxsQ2hlY2tlciB8fCAhc2VxdWVuY2VJZCkgewor
ICAgICAgICBTcGVsbGluZ0xvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNwZWxsQ2hl
Y2tpbmdSZXF1ZXN0UHJvY2Vzc2VkIEZhaWxlZCB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IHdpdGgg
c2VxdWVuY2VJZCAlZCIsIHNlcXVlbmNlSWQpOwogICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVz
dENhbmNlbGxlZChzZXF1ZW5jZUlkLCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgc3AtPmRpZENoZWNrU3VjY2VlZGVkKHNlcXVlbmNlSWQsIHJl
c3VsdHMpOworICAgIHNwZWxsQ2hlY2tlci0+ZGlkQ2hlY2tTdWNjZWVkZWQoc2VxdWVuY2VJZCwg
cmVzdWx0cyk7Cit9CisKK3ZvaWQgSW5wdXRIYW5kbGVyOjpjYW5jZWxBbGxTcGVsbENoZWNraW5n
UmVxdWVzdHMoKQoreworICAgIGZvciAoc3RkOjptYXA8aW50MzJfdCwgaW50MzJfdD46Oml0ZXJh
dG9yIGl0ID0gbV9zZXF1ZW5jZU1hcC5iZWdpbigpOyBpdCAhPSBtX3NlcXVlbmNlTWFwLmVuZCgp
OyArK2l0KQorICAgICAgICBzcGVsbENoZWNraW5nUmVxdWVzdENhbmNlbGxlZChpdC0+c2Vjb25k
LCB0cnVlIC8qIGlzU2VxdWVuY2VJZCAqLyk7CisgICAgbV9zZXF1ZW5jZU1hcC5jbGVhcigpOwog
fQogCiB2b2lkIElucHV0SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50
MzJfdCBpZCwgYm9vbCBpc1NlcXVlbmNlSWQpCkBAIC02MzUsMTIgKzY2NiwxMiBAQCB2b2lkIElu
cHV0SGFuZGxlcjo6c3BlbGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQoaW50MzJfdCBpZCwgYm9v
bCBpc1NlcXVlbmNlSWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGludDMyX3Qgc2VxdWVuY2VJ
ZCA9IGlzU2VxdWVuY2VJZCA/IGlkIDogY29udmVydFRyYW5zYWN0aW9uSWRUb1NlcXVlbmNlSWQo
aWQpOwotICAgIFNwZWxsQ2hlY2tlciogc3AgPSBnZXRTcGVsbENoZWNrZXIoKTsKLSAgICBpZiAo
IXNwKSB7Ci0gICAgICAgIElucHV0TG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6c3Bl
bGxDaGVja2luZ1JlcXVlc3RDYW5jZWxsZWQgZmFpbGVkIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCB3
aXRoIHNlcXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKKyAgICBTcGVsbENoZWNrZXIqIHNwZWxs
Q2hlY2tlciA9IGdldFNwZWxsQ2hlY2tlcigpOworICAgIGlmICghc3BlbGxDaGVja2VyKSB7Cisg
ICAgICAgIFNwZWxsaW5nTG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6c3BlbGxDaGVj
a2luZ1JlcXVlc3RDYW5jZWxsZWQgZmFpbGVkIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCB3aXRoIHNl
cXVlbmNlSWQgJWQiLCBzZXF1ZW5jZUlkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBz
cC0+ZGlkQ2hlY2tDYW5jZWxlZChzZXF1ZW5jZUlkKTsKKyAgICBzcGVsbENoZWNrZXItPmRpZENo
ZWNrQ2FuY2VsZWQoc2VxdWVuY2VJZCk7CiB9CiAKIFNwZWxsQ2hlY2tlciogSW5wdXRIYW5kbGVy
OjpnZXRTcGVsbENoZWNrZXIoKQpAQCAtNzE5LDYgKzc1MCw5IEBAIHZvaWQgSW5wdXRIYW5kbGVy
OjpzZXRFbGVtZW50VW5mb2N1c2VkKGJvb2wgcmVmb2N1c09jY3VyaW5nKQogICAgICAgICAvLyBJ
ZiB0aGUgZnJhbWUgc2VsZWN0aW9uIGlzbid0IGZvY3VzZWQsIGZvY3VzIGl0LgogICAgICAgICBp
ZiAoIW1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9u
KCktPmlzRm9jdXNlZCgpKQogICAgICAgICAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1
bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0Rm9jdXNlZCh0cnVlKTsKKworICAgICAg
ICAvLyBDYW5jZWwgYW55IHNwZWxsY2hlY2sgcmVxdWVzdHMgdGhhdCBtaWdodCBiZSBvbmdvaW5n
LgorICAgICAgICBjYW5jZWxBbGxTcGVsbENoZWNraW5nUmVxdWVzdHMoKTsKICAgICB9CiAKICAg
ICAvLyBDbGVhciB0aGUgbm9kZSBkZXRhaWxzLgpAQCAtNzQ4LDEwICs3ODIsMjIgQEAgdm9pZCBJ
bnB1dEhhbmRsZXI6OnNldElucHV0TW9kZUVuYWJsZWQoYm9vbCBhY3RpdmUpCiB2b2lkIElucHV0
SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NF
UlQoRE9NU3VwcG9ydDo6aXNUZXh0QmFzZWRDb250ZW50RWRpdGFibGVFbGVtZW50KGVsZW1lbnQp
KTsKLSAgICBBU1NFUlQoZWxlbWVudC0+ZG9jdW1lbnQoKSAmJiBlbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpKTsKKyAgICBBU1NFUlQoZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpICYm
IGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpOworCisjaWZkZWYgRU5BQkxFX1NQRUxMSU5H
X0xPRworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdG9wV2F0Y2ggdGltZXI7CisgICAgdGlt
ZXIuc3RhcnQoKTsKKyNlbmRpZgorCisgICAgaWYgKCFlbGVtZW50IHx8ICEoZWxlbWVudC0+ZG9j
dW1lbnQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQt
PmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0Zv
Y3VzZWQoKSAhPSBpc0lucHV0TW9kZUVuYWJsZWQoKSkKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldEZvY3VzZWQoaXNJbnB1dE1vZGVFbmFibGVk
KCkpOworICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzRm9jdXNlZCgpICE9IGlzSW5wdXRN
b2RlRW5hYmxlZCgpKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldEZvY3VzZWQoaXNJ
bnB1dE1vZGVFbmFibGVkKCkpOwogCiAgICAgLy8gQ2xlYXIgdGhlIGV4aXN0aW5nIGZvY3VzIG5v
ZGUgZGV0YWlscy4KICAgICBzZXRFbGVtZW50VW5mb2N1c2VkKHRydWUgLypyZWZvY3VzT2NjdXJp
bmcqLyk7CkBAIC03NzQsNiArODIwLDkxIEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50
Rm9jdXNlZChFbGVtZW50KiBlbGVtZW50KQogCiAgICAgaWYgKCFtX2RlbGF5S2V5Ym9hcmRWaXNp
YmlsaXR5Q2hhbmdlKQogICAgICAgICBub3RpZnlDbGllbnRPZktleWJvYXJkVmlzaWJpbGl0eUNo
YW5nZSh0cnVlKTsKKworI2lmZGVmIEVOQUJMRV9TUEVMTElOR19MT0cKKyAgICBTcGVsbGluZ0xv
ZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkIEZvY3VzaW5n
IHRoZSBmaWVsZCB0b29rICVmIHNlY29uZHMuIiwgdGltZXIuZWxhcHNlZCgpKTsKKyNlbmRpZgor
CisgICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIGV4cGxpY2l0bHkgYXNrcyBmb3Igc3BlbGxjaGVj
a2luZy4KKyAgICBpZiAoRE9NU3VwcG9ydDo6ZWxlbWVudFN1cHBvcnRzU3BlbGxDaGVjayhlbGVt
ZW50KSAhPSBET01TdXBwb3J0OjpPbikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU3BlbGxj
aGVjayB0aGUgZmllbGQgaW4gaXRzIGVudGlyZXR5LgorICAgIFZpc2libGVTZWxlY3Rpb24gZm9j
dXNlZEJsb2NrID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvcklucHV0RWxlbWVudChl
bGVtZW50KTsKKyAgICBzcGVsbENoZWNrQmxvY2soZm9jdXNlZEJsb2NrLCBUZXh0Q2hlY2tpbmdQ
cm9jZXNzQmF0Y2gpOworCisjaWZkZWYgRU5BQkxFX1NQRUxMSU5HX0xPRworICAgIFNwZWxsaW5n
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQgU3BlbGxj
aGVja2luZyB0aGUgZmllbGQgaW5jcmVhc2VkIHRoZSB0b3RhbCB0aW1lIHRvIGZvY3VzIHRvICVm
IHNlY29uZHMuIiwgdGltZXIuZWxhcHNlZCgpKTsKKyNlbmRpZgorfQorCit2b2lkIElucHV0SGFu
ZGxlcjo6c3BlbGxDaGVja0Jsb2NrKFZpc2libGVTZWxlY3Rpb24mIHZpc2libGVTZWxlY3Rpb24s
IFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKQoreworICAg
IGlmICghaXNBY3RpdmVUZXh0RWRpdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTcGVsbENo
ZWNrZXIqIHNwZWxsQ2hlY2tlciA9IGdldFNwZWxsQ2hlY2tlcigpOworICAgIGlmICghc3BlbGxD
aGVja2VyKSB7CisgICAgICAgIFNwZWxsaW5nTG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxl
cjo6c3BlbGxDaGVja0Jsb2NrIEZhaWxlZCB0byBzcGVsbGNoZWNrIHRoZSBjdXJyZW50IGZvY3Vz
ZWQgZWxlbWVudC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5nID0gdmlzaWJsZVNlbGVjdGlvbi50b05vcm1hbGl6ZWRS
YW5nZSgpOworCisgICAgLy8gSWYgd2UgaGF2ZSBhIGJhdGNoIHJlcXVlc3QsIHRyeSB0byBzZW5k
IG9mZiB0aGUgZW50aXJlIGJsb2NrLgorICAgIGlmICh0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9
PSBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpIHsKKyAgICAgICAgLy8gSWYgdG90YWwgYmxvY2sg
dGV4dCBpcyB1bmRlciB0aGUgbGltaXRlZCBhbW91bnQsIHNlbmQgdGhlIGVudGlyZSBjaHVuay4K
KyAgICAgICAgaWYgKHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpIDwgTWF4
U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgeworICAgICAgICAgICAgc3BlbGxDaGVja2VyLT5y
ZXF1ZXN0Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdU
eXBlU3BlbGxpbmcsIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VGb3JTcGVsbENoZWNr
aW5nLCByYW5nZUZvclNwZWxsQ2hlY2tpbmcpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIFNpbmNlIHdlIGNvdWxkbid0IGNoZWNrIHRoZSBlbnRpcmUg
YmxvY2sgYXQgb25jZSwgc2V0IHVwIHN0YXJ0aW5nIGFuZCBlbmRpbmcgbWFya2VycyB0byBmaXJl
IGluY3JlbWVudGFsbHkuCisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zID0gdmlzaWJsZVNl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZkN1cnJl
bnRMaW5lID0gc3RhcnRPZkxpbmUoc3RhcnRQb3MpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRP
ZkN1cnJlbnRMaW5lID0gZW5kT2ZMaW5lKHN0YXJ0UG9zKTsKKworICAgIHdoaWxlIChzdGFydE9m
Q3VycmVudExpbmUgIT0gZW5kT2ZDdXJyZW50TGluZSkgeworICAgICAgICAvLyBDcmVhdGUgYSBz
ZWxlY3Rpb24gd2l0aCB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgb2YgdGhlIGxpbmUsIGFuZCBj
b252ZXJ0IHRvIFJhbmdlIHRvIGNyZWF0ZSBhIFNwZWxsQ2hlY2tSZXF1ZXN0LgorICAgICAgICBy
YW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZDdXJyZW50TGlu
ZSwgZW5kT2ZDdXJyZW50TGluZSkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKworICAgICAgICBpZiAo
cmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkgPj0gTWF4U3BlbGxDaGVja2lu
Z1N0cmluZ0xlbmd0aCkgeworICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHdvcmRzIGZy
b20gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRvIHRoZSBlbmQuCisgICAgICAgICAgICByYW5nZUZv
clNwZWxsQ2hlY2tpbmcgPSBnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmluZUdyYW51bGFyaXR5
KHN0YXJ0T2ZDdXJyZW50TGluZSwgZW5kT2ZDdXJyZW50TGluZSk7CisgICAgICAgICAgICBpZiAo
IXJhbmdlRm9yU3BlbGxDaGVja2luZykgeworICAgICAgICAgICAgICAgIFNwZWxsaW5nTG9nKExv
Z0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6c3BlbGxDaGVja0Jsb2NrIEZhaWxlZCB0byBzZXQg
dGV4dCByYW5nZSBmb3Igc3BlbGxjaGVja2luZyIpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50TGluZSA9IFZpc2libGVQ
b3NpdGlvbihyYW5nZUZvclNwZWxsQ2hlY2tpbmctPmVuZFBvc2l0aW9uKCkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgc3RhcnRPZkN1cnJlbnRMaW5lID0gbmV4dExpbmVQb3NpdGlv
bihzdGFydE9mQ3VycmVudExpbmUsIHN0YXJ0T2ZDdXJyZW50TGluZS5saW5lRGlyZWN0aW9uUG9p
bnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSk7CisgICAgICAgICAgICBlbmRPZkN1cnJl
bnRMaW5lID0gZW5kT2ZMaW5lKHN0YXJ0T2ZDdXJyZW50TGluZSk7CisgICAgICAgICAgICAvLyBJ
ZiB3ZSBhcmUgYXQgdGhlIGxhc3QgbGluZSwgbmV4dExpbmVQb3NpdGlvbiB3aWxsIHJldHVybiB0
aGUgcG9zaXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4gSWYgd2UncmUgbm90IGF0IHRoZSBl
bmQsIHdyYXAgd2l0aCBhIGNhbGwgdG8gc3RhcnRPZkxpbmUgdG8gYmUgc2FmZS4KKyAgICAgICAg
ICAgIGlmIChzdGFydE9mQ3VycmVudExpbmUgIT0gZW5kT2ZDdXJyZW50TGluZSkKKyAgICAgICAg
ICAgICAgICBzdGFydE9mQ3VycmVudExpbmUgPSBzdGFydE9mTGluZShzdGFydE9mQ3VycmVudExp
bmUpOworICAgICAgICB9CisKKyAgICAgICAgU3BlbGxpbmdMb2coTG9nTGV2ZWxJbmZvLCAiSW5w
dXRIYW5kbGVyOjpzcGVsbENoZWNrQmxvY2sgU3Vic3RyaW5nIHRleHQgaXMgJyVzJywgb2Ygc2l6
ZSAlZCIsIHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxhdGluMSgpLmRhdGEoKSwgcmFu
Z2VGb3JTcGVsbENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkpOworCisgICAgICAgIC8vIENhbGwg
c3BlbGxjaGVjayB3aXRoIHN1YnN0cmluZy4KKyAgICAgICAgc3BlbGxDaGVja2VyLT5yZXF1ZXN0
Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdUeXBlU3Bl
bGxpbmcsIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCwgcmFuZ2VGb3JTcGVsbENoZWNraW5nLCBy
YW5nZUZvclNwZWxsQ2hlY2tpbmcpKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8UmFuZ2U+IElu
cHV0SGFuZGxlcjo6Z2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShWaXNp
YmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKQor
eworICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZkN1cnJlbnRXb3JkID0gZW5kT2ZXb3JkKHN0YXJ0
UG9zaXRpb24pOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5nOworICAg
IHdoaWxlIChlbmRPZkN1cnJlbnRXb3JkICE9IGVuZFBvc2l0aW9uKSB7CisgICAgICAgIHJhbmdl
Rm9yU3BlbGxDaGVja2luZyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kT2ZD
dXJyZW50V29yZCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICAgICAgLy8gSWYgd2UgZXhjZWVk
IHRoZSBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoIGxpbWl0LCB0aGVuIGdvIGJhY2sgb25l
IHdvcmQgYW5kIHJldHVybiB0aGlzIHJhbmdlLgorICAgICAgICBpZiAocmFuZ2VGb3JTcGVsbENo
ZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkgPj0gTWF4U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aCkK
KyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0UG9zaXRpb24sIGVuZE9m
V29yZChwcmV2aW91c1dvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3JkKSkpLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7CisKKyAgICAgICAgZW5kT2ZDdXJyZW50V29yZCA9IGVuZE9mV29yZChuZXh0V29y
ZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAK
IGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuRGF0ZVBvcHVwKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1l
bnQsIEJsYWNrQmVycnlJbnB1dFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKaW5kZXggMzY3MjY0MDBkMDg3
ZWE1NGY0YmMxM2ZjMzU0MjhlNzg5MWQ5NTlkNC4uODY5Y2ZjMjczZDhhMTY1N2I1OWFmYjA0YWNi
YjU3OWRhZTVhZDk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKQEAgLTE5LDYgKzE5LDggQEAKICNpZm5kZWYgSW5w
dXRIYW5kbGVyX2gKICNkZWZpbmUgSW5wdXRIYW5kbGVyX2gKIAorI2luY2x1ZGUgIlRleHRDaGVj
a2luZy5oIgorCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtSW5wdXRFdmVudHMuaD4KIAog
I2luY2x1ZGUgPGltZi9ldmVudHMuaD4KQEAgLTM4LDggKzQwLDExIEBAIGNsYXNzIEhUTUxJbnB1
dEVsZW1lbnQ7CiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBOb2RlOworY2xhc3MgUmFuZ2U7CiBjbGFzcyBTcGVsbENoZWNrZXI7CiBjbGFzcyBUZXh0Q2hl
Y2tpbmdSZXF1ZXN0OworY2xhc3MgVmlzaWJsZVBvc2l0aW9uOworY2xhc3MgVmlzaWJsZVNlbGVj
dGlvbjsKIH0KIAogbmFtZXNwYWNlIEJsYWNrQmVycnkgewpAQCAtMTg5LDYgKzE5NCw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBsZWFyblRleHQoKTsKICAgICB2b2lkIHNlbmRMZWFyblRleHREZXRh
aWxzKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgaW50MzJfdCBjb252ZXJ0VHJhbnNhY3Rpb25J
ZFRvU2VxdWVuY2VJZChpbnQzMl90IHRyYW5zYWN0aW9uSWQpOworICAgIHZvaWQgc3BlbGxDaGVj
a0Jsb2NrKFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQ
cm9jZXNzVHlwZSk7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gZ2V0UmFuZ2VGb3JT
cGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gc3Rh
cnRQb3NpdGlvbiwgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKTsKKyAgICB2
b2lkIGNhbmNlbEFsbFNwZWxsQ2hlY2tpbmdSZXF1ZXN0cygpOwogICAgIFdlYkNvcmU6OlNwZWxs
Q2hlY2tlciogZ2V0U3BlbGxDaGVja2VyKCk7CiAKICAgICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQ
YWdlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>