<?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>80107</bug_id>
          
          <creation_ts>2012-03-01 23:39:48 -0800</creation_ts>
          <short_desc>[BlackBerry] upstream CredentialManager and CredentialTransformData implementation</short_desc>
          <delta_ts>2013-01-04 09:20:11 -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>
          <dependson>79650</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jonathan Dong">jonathan.dong.webkit</reporter>
          <assigned_to name="Jonathan Dong">jonathan.dong.webkit</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>eric</cc>
    
    <cc>leo.yang.c</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569326</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-03-01 23:39:48 -0800</bug_when>
    <thetext>file: Source/WebKit/blackberry/WebCore/CredentialManager.[h|cpp], Source/WebKit/blackberry/WebCore/CredentialTransformData.[h|cpp]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569339</commentid>
    <comment_count>1</comment_count>
      <attachid>129829</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-03-01 23:57:54 -0800</bug_when>
    <thetext>Created attachment 129829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570323</commentid>
    <comment_count>2</comment_count>
      <attachid>130038</attachid>
    <who name="Jonathan Dong">jonathan.dong.webkit</who>
    <bug_when>2012-03-04 17:52:15 -0800</bug_when>
    <thetext>Created attachment 130038
patch for cq</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570364</commentid>
    <comment_count>3</comment_count>
      <attachid>130038</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-04 19:29:43 -0800</bug_when>
    <thetext>Comment on attachment 130038
patch for cq

Clearing flags on attachment: 130038

Committed r109698: &lt;http://trac.webkit.org/changeset/109698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800007</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 00:50:57 -0800</bug_when>
    <thetext>Attachment 129829 was posted by a committer and has review+, assigning to Jonathan Dong for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800258</commentid>
    <comment_count>5</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-01-04 09:20:11 -0800</bug_when>
    <thetext>This was landed in r109698, closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129829</attachid>
            <date>2012-03-01 23:57:54 -0800</date>
            <delta_ts>2012-03-04 10:10:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80107-20120302155751.patch</filename>
            <type>text/plain</type>
            <size>20933</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI1ZDNmNzhhODEyNjBkOTM0
ZjlmMjk4ZmI3MDJlYzc0OWVmZDkxMzYuLmFmODY1ODZmNTQ3Y2M5MDVhMzAwN2M1MDc4ZWZlZmJm
ZjA5YjkzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDMtMDEgIEpvbmF0aGFu
IERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBbQmxh
Y2tCZXJyeV0gdXBzdHJlYW0gQ3JlZGVudGlhbE1hbmFnZXIgYW5kIENyZWRlbnRpYWxUcmFuc2Zv
cm1EYXRhIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MDEwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluaXRpYWwgdXBzdHJlYW0gb2YgQ3JlZGVudGlhbE1hbmFnZXIuW2h8Y3Bw
XSBhbmQKKyAgICAgICAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuW2h8Y3BwXS4KKyAgICAgICAg
Tm8gbmV3IHRlc3QuCisKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisKIDIw
MTItMDItMjQgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF1bRFJUXSBJbXBsZW1lbnQgc2V0VmFsdWVGb3JVc2VyIGFuZCBzZXRB
dXRvZmlsbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMDM1MzgxYzg4NjAw
NDRhMjVjNDk4ZTA5OTdiNzU3NzI1Zjc5NGY2OS4uYTk3ZjhiZTM1OTk2ZTcwZGRjNjZjODY0NmQy
OTBiYmVlOTEyNzRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzcgQEAKKzIwMTItMDMtMDEgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBbQmxhY2tCZXJyeV0gdXBzdHJlYW0gQ3JlZGVudGlhbE1h
bmFnZXIgYW5kIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDEwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWwgdXBzdHJlYW0g
b2YgQ3JlZGVudGlhbE1hbmFnZXIuW2h8Y3BwXSBhbmQKKyAgICAgICAgQ3JlZGVudGlhbFRyYW5z
Zm9ybURhdGEuW2h8Y3BwXS4KKyAgICAgICAgTm8gbmV3IHRlc3QuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsTWFuYWdlcjo6Q3JlZGVudGlhbE1hbmFn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbE1hbmFnZXI6OmF1dG9maWxsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbE1hbmFnZXI6
OmF1dG9maWxsUGFzc3dvcmRGb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsTWFu
YWdlcjo6c2F2ZUNyZWRlbnRpYWxJZkNvbmZpcm1lZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ3JlZGVudGlhbE1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDcmVkZW50aWFsTWFuYWdlcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOjpDcmVkZW50aWFsVHJhbnNmb3JtRGF0
YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxUcmFu
c2Zvcm1EYXRhOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFRyYW5zZm9ybURh
dGE6OmNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFRyYW5zZm9ybURh
dGE6OnNldENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFRyYW5zZm9y
bURhdGE6OmZpbmRQYXNzd29yZEZvcm1GaWVsZHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDcmVkZW50aWFsVHJhbnNmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVk
ZW50aWFsVHJhbnNmb3JtRGF0YTo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50
aWFsVHJhbnNmb3JtRGF0YTo6cHJvdGVjdGlvblNwYWNlKToKKwogMjAxMi0wMy0wMSAgTWlrZSBG
ZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgogCiAgICAgICAgIEF1dG9jb21wbGV0ZSBhdHRyaWJ1
dGUgc2hvdWxkIGFwcGx5IHRvIHRleHRhcmVhJ3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0Jl
cnJ5LmNtYWtlCmluZGV4IDVkNWM4YjM1MjAxNzE4OGVlNTM2OTYwOGM3Y2UzODQ5NzBkOTIyZjYu
LmIwZDA3NTQ2YTc5Nzc2ZjAxZGU1NDRhODliYjg4ZWI2MWM0MjgxYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC01MSw2ICs1MSw4IEBAIExJU1QoQVBQRU5EIFdl
YktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRC
bGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xpZW50RXh0ZW5z
aW9uLmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRC
bGFja0JlcnJ5LmNwcAorICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1h
bmFnZXIuY3BwCisgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNm
b3JtRGF0YS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNs
aWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9EZXZpY2VP
cmllbnRhdGlvbkNsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9EcmFnQ2xpZW50QmxhY2tCZXJyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk3ZTdkZTZmOGJmMGY4Nzk4Yzc4YjMzNDIzMzhiYjE1MzcyZGUwYzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3Jl
ZGVudGlhbE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEJM
QUNLQkVSUllfQ1JFREVOVElBTF9QRVJTSVNUKQorI2luY2x1ZGUgIkNyZWRlbnRpYWxNYW5hZ2Vy
LmgiCisKKyNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiQ3Jl
ZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnkuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VDbGllbnQuaCIKKyNpbmNs
dWRlICJXZWJQYWdlX3AuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcgQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ2xpZW50OwordXNpbmcgQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJTdHJpbmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3JlZGVudGlhbE1hbmFnZXI6OkNy
ZWRlbnRpYWxNYW5hZ2VyKEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeSogZnJhbWVMb2FkZXJD
bGllbnQpCisgICAgOiBtX2ZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyQ2xpZW50KQorewor
ICAgIEFTU0VSVChtX2ZyYW1lTG9hZGVyQ2xpZW50KTsKK30KKwordm9pZCBDcmVkZW50aWFsTWFu
YWdlcjo6YXV0b2ZpbGxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHByb3RlY3Rpb25TcGFjZSwgV2ViU3RyaW5nJiB1c2VybmFtZSwgV2ViU3RyaW5nJiBwYXNz
d29yZCkKK3sKKyAgICBpZiAoQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+aGFz
TmV2ZXJSZW1lbWJlcihwcm90ZWN0aW9uU3BhY2UpKQorICAgICAgICByZXR1cm47CisKKyAgICBD
cmVkZW50aWFsIHNhdmVkQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3Rh
bmNlKCktPmdldExvZ2luKHByb3RlY3Rpb25TcGFjZSk7CisgICAgdXNlcm5hbWUgPSBzYXZlZENy
ZWRlbnRpYWwudXNlcigpOworICAgIHBhc3N3b3JkID0gc2F2ZWRDcmVkZW50aWFsLnBhc3N3b3Jk
KCk7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbE1hbmFnZXI6OmF1dG9maWxsUGFzc3dvcmRGb3JtcyhQ
YXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBkb2NGb3JtcykKK3sKKyAgICBBU1NFUlQoZG9jRm9y
bXMpOworCisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBmb3JtcyA9IGRvY0Zvcm1zOworICAg
IHNpemVfdCBzb3VyY2VMZW5ndGggPSBmb3Jtcy0+bGVuZ3RoKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkgeworICAgICAgICBOb2RlKiBub2RlID0gZm9y
bXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkg
eworICAgICAgICAgICAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEgZGF0YShzdGF0aWNfY2FzdDxI
VE1MRm9ybUVsZW1lbnQqPihub2RlKSk7CisgICAgICAgICAgICBpZiAoIWRhdGEuaXNWYWxpZCgp
IHx8ICFDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5oYXNMb2dpbihkYXRhLnVy
bCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIENyZWRlbnRpYWwgc2F2ZWRDcmVkZW50aWFsID0gQ3JlZGVudGlhbEJhY2tp
bmdTdG9yZTo6aW5zdGFuY2UoKS0+Z2V0TG9naW4oZGF0YS51cmwoKSk7CisgICAgICAgICAgICBk
YXRhLnNldENyZWRlbnRpYWwoc2F2ZWRDcmVkZW50aWFsKTsKKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBDcmVkZW50aWFsTWFuYWdlcjo6c2F2ZUNyZWRlbnRpYWxJZkNvbmZpcm1lZChjb25z
dCBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIWRhdGEuaXNWYWxp
ZCgpIHx8IGRhdGEuY3JlZGVudGlhbCgpLmlzRW1wdHkoKSB8fCBDcmVkZW50aWFsQmFja2luZ1N0
b3JlOjppbnN0YW5jZSgpLT5oYXNOZXZlclJlbWVtYmVyKGRhdGEucHJvdGVjdGlvblNwYWNlKCkp
KQorICAgICAgICByZXR1cm47CisKKyAgICBDcmVkZW50aWFsIHNhdmVkQ3JlZGVudGlhbCA9IENy
ZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3RhbmNlKCktPmdldExvZ2luKGRhdGEudXJsKCkpOwor
ICAgIGlmIChzYXZlZENyZWRlbnRpYWwgPT0gZGF0YS5jcmVkZW50aWFsKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFdlYlBhZ2VDbGllbnQ6OlNhdmVDcmVkZW50aWFsVHlwZSB0eXBlID0gbV9m
cmFtZUxvYWRlckNsaWVudC0+bV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPm5vdGlmeVNob3Vs
ZFNhdmVDcmVkZW50aWFsKHNhdmVkQ3JlZGVudGlhbC5pc0VtcHR5KCkpOworICAgIGlmICh0eXBl
ID09IFdlYlBhZ2VDbGllbnQ6OlNhdmVDcmVkZW50aWFsWWVzKSB7CisgICAgICAgIGlmIChzYXZl
ZENyZWRlbnRpYWwuaXNFbXB0eSgpKQorICAgICAgICAgICAgQ3JlZGVudGlhbEJhY2tpbmdTdG9y
ZTo6aW5zdGFuY2UoKS0+YWRkTG9naW4oZGF0YS51cmwoKSwgZGF0YS5wcm90ZWN0aW9uU3BhY2Uo
KSwgZGF0YS5jcmVkZW50aWFsKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBDcmVkZW50
aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT51cGRhdGVMb2dpbihkYXRhLnVybCgpLCBkYXRh
LnByb3RlY3Rpb25TcGFjZSgpLCBkYXRhLmNyZWRlbnRpYWwoKSk7CisgICAgfSBlbHNlIGlmICh0
eXBlID09IFdlYlBhZ2VDbGllbnQ6OlNhdmVDcmVkZW50aWFsTmV2ZXJGb3JUaGlzU2l0ZSkgewor
ICAgICAgICBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5hZGROZXZlclJlbWVt
YmVyKGRhdGEudXJsKCksIGRhdGEucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICBDcmVkZW50
aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5yZW1vdmVMb2dpbihkYXRhLnVybCgpLCBkYXRh
LnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShCTEFDS0JFUlJZX0NSRURFTlRJQUxfUEVSU0lTVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFs
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQzOWYxMGMwZDliYmY5NWMxNTQwZGU3MWViYmQ2
NjdiM2I3ZmY1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBDcmVkZW50aWFsTWFu
YWdlcl9oCisjZGVmaW5lIENyZWRlbnRpYWxNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShCTEFDS0JF
UlJZX0NSRURFTlRJQUxfUEVSU0lTVCkKKworI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTdHJpbmc7Cit9Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTsKK2NsYXNzIEtVUkw7Citj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CitjbGFzcyBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YTsKKwor
Y2xhc3MgQ3JlZGVudGlhbE1hbmFnZXIgeworcHVibGljOgorICAgIENyZWRlbnRpYWxNYW5hZ2Vy
KEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeSopOworCisgICAgdm9pZCBhdXRvZmlsbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViU3RyaW5nJiB1c2VybmFtZSwgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJTdHJpbmcm
IHBhc3N3b3JkKTsKKyAgICB2b2lkIGF1dG9maWxsUGFzc3dvcmRGb3JtcyhQYXNzUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBkb2NGb3Jtcyk7CisgICAgdm9pZCBzYXZlQ3JlZGVudGlhbElmQ29uZmly
bWVkKGNvbnN0IENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhJik7CisKK3ByaXZhdGU6CisgICAgRnJh
bWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5KiBtX2ZyYW1lTG9hZGVyQ2xpZW50OworfTsKKworfSAv
LyBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQkxBQ0tCRVJSWV9DUkVERU5USUFMX1BFUlNJ
U1QpCisKKyNlbmRpZiAvLyBDcmVkZW50aWFsTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxU
cmFuc2Zvcm1EYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzIyYWUyYTIyODlhMDEzMWQ3ZjA5NWMyOTkx
N2JiNzYwNWIyZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcApAQCAtMCwwICsxLDIz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyAvKgorICogVGhpcyBtZXRob2RzIGFyZSBiYXNlZCBvbiBDaHJv
bWl1bSBjb2RlcyBpbgorICogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFzc3dvcmRG
b3JtVXRpbHMuY3BwCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyZWRl
bnRpYWxUcmFuc2Zvcm1EYXRhLmgiCisKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworLy8g
TWF4aW11bSBudW1iZXIgb2YgcGFzc3dvcmQgZmllbGRzIHdlIHdpbGwgb2JzZXJ2ZSBiZWZvcmUg
dGhyb3dpbmcgb3VyCisvLyBoYW5kcyBpbiB0aGUgYWlyIGFuZCBnaXZpbmcgdXAgd2l0aCBhIGdp
dmVuIGZvcm0uCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFBhc3N3b3JkcyA9IDM7CisKKy8vIEhl
bHBlciBtZXRob2QgdG8gY2xlYXIgdXJsIG9mIHVubmVlZGVkIHBhcnRzLgorS1VSTCBzdHJpcFVS
TChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgS1VSTCBzdHJpcHBlZFVSTCA9IHVybDsKKyAgICBz
dHJpcHBlZFVSTC5zZXRVc2VyKFN0cmluZygpKTsKKyAgICBzdHJpcHBlZFVSTC5zZXRQYXNzKFN0
cmluZygpKTsKKyAgICBzdHJpcHBlZFVSTC5zZXRRdWVyeShTdHJpbmcoKSk7CisgICAgc3RyaXBw
ZWRVUkwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZygpKTsKKyAgICByZXR1cm4gc3RyaXBw
ZWRVUkw7Cit9CisKKy8vIEhlbHBlciBtZXRob2QgdG8gZGV0ZXJtaW5lIHdoaWNoIHBhc3N3b3Jk
IGlzIHRoZSBtYWluIG9uZSwgYW5kIHdoaWNoIGlzCisvLyBhbiBvbGQgcGFzc3dvcmQgKGUuZyBv
biBhICJtYWtlIG5ldyBwYXNzd29yZCIgZm9ybSksIGlmIGFueS4KK2Jvb2wgbG9jYXRlU3BlY2lm
aWNQYXNzd29yZHMoVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiYgcGFzc3dvcmRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiogcGFzc3dvcmQpCit7Cisg
ICAgQVNTRVJUKHBhc3N3b3JkKTsKKworICAgIHN3aXRjaCAocGFzc3dvcmRzLnNpemUoKSkgewor
ICAgIGNhc2UgMToKKyAgICAgICAgLy8gU2luZ2xlIHBhc3N3b3JkLCBlYXN5LgorICAgICAgICAq
cGFzc3dvcmQgPSBwYXNzd29yZHNbMF07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAg
ICAgICAgaWYgKHBhc3N3b3Jkc1swXS0+dmFsdWUoKSA9PSBwYXNzd29yZHNbMV0tPnZhbHVlKCkp
CisgICAgICAgICAgICAvLyBUcmVhdCB0d28gaWRlbnRpY2FsIHBhc3N3b3JkcyBhcyBhIHNpbmds
ZSBwYXNzd29yZC4KKyAgICAgICAgICAgICpwYXNzd29yZCA9IHBhc3N3b3Jkc1swXTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAvLyBBc3N1bWUgZmlyc3QgaXMgb2xkIHBhc3N3b3JkLCBz
ZWNvbmQgaXMgbmV3IChubyBjaG9pY2UgYnV0IHRvIGd1ZXNzKS4KKyAgICAgICAgICAgICpwYXNz
d29yZCA9IHBhc3N3b3Jkc1sxXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IDM6CisgICAgICAgIGlmIChwYXNzd29yZHNbMF0tPnZhbHVlKCkgPT0gcGFzc3dvcmRzWzFdLT52
YWx1ZSgpCisgICAgICAgICAgICAmJiBwYXNzd29yZHNbMF0tPnZhbHVlKCkgPT0gcGFzc3dvcmRz
WzJdLT52YWx1ZSgpKSB7CisgICAgICAgICAgICAvLyBBbGwgdGhyZWUgcGFzc3dvcmRzIHRoZSBz
YW1lPyBKdXN0IHRyZWF0IGFzIG9uZSBhbmQgaG9wZS4KKyAgICAgICAgICAgICpwYXNzd29yZCA9
IHBhc3N3b3Jkc1swXTsKKyAgICAgICAgfSBlbHNlIGlmIChwYXNzd29yZHNbMF0tPnZhbHVlKCkg
PT0gcGFzc3dvcmRzWzFdLT52YWx1ZSgpKSB7CisgICAgICAgICAgICAvLyBUd28gdGhlIHNhbWUg
YW5kIG9uZSBkaWZmZXJlbnQgLT4gb2xkIHBhc3N3b3JkIGlzIGR1cGxpY2F0ZWQgb25lLgorICAg
ICAgICAgICAgKnBhc3N3b3JkID0gcGFzc3dvcmRzWzJdOworICAgICAgICB9IGVsc2UgaWYgKHBh
c3N3b3Jkc1sxXS0+dmFsdWUoKSA9PSBwYXNzd29yZHNbMl0tPnZhbHVlKCkpCisgICAgICAgICAg
ICAqcGFzc3dvcmQgPSBwYXNzd29yZHNbMV07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
Ly8gVGhyZWUgZGlmZmVyZW50IHBhc3N3b3Jkcywgb3IgZmlyc3QgYW5kIGxhc3QgbWF0Y2ggd2l0
aCBtaWRkbGUKKyAgICAgICAgICAgIC8vIGRpZmZlcmVudC4gTm8gaWRlYSB3aGljaCBpcyB3aGlj
aCwgc28gbm8gbHVjay4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZQorCitDcmVkZW50aWFsVHJhbnNm
b3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9ybURhdGEoSFRNTEZvcm1FbGVtZW50KiBmb3JtKQor
ICAgIDogbV91c2VyTmFtZUVsZW1lbnQoMCkKKyAgICAsIG1fcGFzc3dvcmRFbGVtZW50KDApCisg
ICAgLCBtX2lzVmFsaWQoZmFsc2UpCit7CisgICAgQVNTRVJUKGZvcm0pOworCisgICAgLy8gR2V0
IHRoZSBkb2N1bWVudCBVUkwKKyAgICBLVVJMIGZ1bGxPcmlnaW4oUGFyc2VkVVJMU3RyaW5nLCBm
b3JtLT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgpKTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUg
Y2Fub25pY2FsIGFjdGlvbiBVUkwKKyAgICBTdHJpbmcgYWN0aW9uID0gZm9ybS0+YWN0aW9uKCk7
CisgICAgaWYgKGFjdGlvbi5pc051bGwoKSkKKyAgICAgICAgYWN0aW9uID0gIiI7IC8vIG1pc3Np
bmcgJ2FjdGlvbicgYXR0cmlidXRlIGltcGxpZXMgY3VycmVudCBVUkwKKyAgICBLVVJMIGZ1bGxB
Y3Rpb24gPSBmb3JtLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhY3Rpb24pOworICAgIGlmICgh
ZnVsbEFjdGlvbi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZmluZFBh
c3N3b3JkRm9ybUZpZWxkcyhmb3JtKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91cmwgPSBz
dHJpcFVSTChmdWxsT3JpZ2luKTsKKyAgICBtX2FjdGlvbiA9IHN0cmlwVVJMKGZ1bGxBY3Rpb24p
OworICAgIG1fcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKG1fdXJsLmhvc3QoKSwg
bV91cmwucG9ydCgpLCBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQLCAiRm9ybSIsIFByb3RlY3Rp
b25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRNTEZvcm0pOworICAgIG1fY3JlZGVudGlhbCA9
IENyZWRlbnRpYWwobV91c2VyTmFtZUVsZW1lbnQtPnZhbHVlKCksIG1fcGFzc3dvcmRFbGVtZW50
LT52YWx1ZSgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQpOworCisgICAgbV9pc1Zh
bGlkID0gdHJ1ZTsKK30KKworQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OkNyZWRlbnRpYWxUcmFu
c2Zvcm1EYXRhKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCisgICAgOiBtX3VybCh1cmwp
CisgICAgLCBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpCisgICAgLCBtX2NyZWRl
bnRpYWwoY3JlZGVudGlhbCkKKyAgICAsIG1fdXNlck5hbWVFbGVtZW50KDApCisgICAgLCBtX3Bh
c3N3b3JkRWxlbWVudCgwKQorICAgICwgbV9pc1ZhbGlkKHRydWUpCit7Cit9CisKK0tVUkwgQ3Jl
ZGVudGlhbFRyYW5zZm9ybURhdGE6OnVybCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzVmFsaWQp
CisgICAgICAgIHJldHVybiBLVVJMKCk7CisKKyAgICBpZiAobV9wcm90ZWN0aW9uU3BhY2UuYXV0
aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZUhUTUxGb3JtKQorICAgICAgICByZXR1cm4gbV9hY3Rpb247CisgICAgcmV0dXJuIG1fdXJsOwor
fQorCitDcmVkZW50aWFsIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOjpjcmVkZW50aWFsKCkgY29u
c3QKK3sKKyAgICBpZiAobV9jcmVkZW50aWFsLmlzRW1wdHkoKSAmJiBtX3VzZXJOYW1lRWxlbWVu
dCAmJiBtX3Bhc3N3b3JkRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG1fY3JlZGVudGlhbCA9IENy
ZWRlbnRpYWwobV91c2VyTmFtZUVsZW1lbnQtPnZhbHVlKCksIG1fcGFzc3dvcmRFbGVtZW50LT52
YWx1ZSgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQpOworICAgIHJldHVybiBtX2Ny
ZWRlbnRpYWw7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OnNldENyZWRlbnRp
YWwoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jcmVkZW50aWFsID0gY3JlZGVudGlhbDsKKyAgICBt
X3VzZXJOYW1lRWxlbWVudC0+c2V0VmFsdWUoY3JlZGVudGlhbC51c2VyKCkpOworICAgIG1fcGFz
c3dvcmRFbGVtZW50LT5zZXRWYWx1ZShjcmVkZW50aWFsLnBhc3N3b3JkKCkpOworfQorCitib29s
IENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOjpmaW5kUGFzc3dvcmRGb3JtRmllbGRzKEhUTUxGb3Jt
RWxlbWVudCogZm9ybSkKK3sKKyAgICBBU1NFUlQoZm9ybSk7CisKKyAgICBpbnQgZmlyc3RQYXNz
d29yZEluZGV4ID0gMDsKKyAgICAvLyBGaXJzdCwgZmluZCB0aGUgcGFzc3dvcmQgZmllbGRzIGFu
ZCBhY3RpdmF0ZWQgc3VibWl0IGJ1dHRvbi4KKyAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Kj4mIGZvcm1FbGVtZW50cyA9IGZvcm0tPmFzc29jaWF0ZWRFbGVtZW50cygpOwor
ICAgIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4gcGFzc3dvcmRzOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICghZm9y
bUVsZW1lbnRzW2ldLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1FbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KGZvcm1FbGVtZW50c1tpXSk7CisgICAgICAg
IGlmICghZm9ybUVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCA9IGZvcm1FbGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAgICAgICBpZiAoIWlucHV0
RWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlmICgocGFzc3dvcmRzLnNpemUoKSA8IG1heFBhc3N3b3JkcykKKyAgICAgICAg
ICAgICYmIGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkKKyAgICAgICAgICAgICYmIGlu
cHV0RWxlbWVudC0+c2hvdWxkQXV0b2NvbXBsZXRlKCkpIHsKKyAgICAgICAgICAgIGlmIChwYXNz
d29yZHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGZpcnN0UGFzc3dvcmRJbmRleCA9IGk7
CisgICAgICAgICAgICBwYXNzd29yZHMuYXBwZW5kKGlucHV0RWxlbWVudCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoIXBhc3N3b3Jkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gVGhl
biwgc2VhcmNoIGJhY2t3YXJkcyBmb3IgdGhlIHVzZXJuYW1lIGZpZWxkLgorICAgICAgICBmb3Ig
KGludCBpID0gZmlyc3RQYXNzd29yZEluZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAg
ICAgIGlmICghZm9ybUVsZW1lbnRzW2ldLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCog
Zm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oZm9ybUVs
ZW1lbnRzW2ldKTsKKyAgICAgICAgICAgIGlmICghZm9ybUVsZW1lbnQtPmhhc0xvY2FsTmFtZShI
VE1MTmFtZXM6OmlucHV0VGFnKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZm9ybUVsZW1lbnQtPnRvSW5w
dXRFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNFbmFibGVkRm9y
bUNvbnRyb2woKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8g
VmFyaW91cyBpbnB1dCB0eXBlcyBzdWNoIGFzIHRleHQsIHVybCwgZW1haWwgY2FuIGJlIGEgdXNl
cm5hbWUgZmllbGQuCisgICAgICAgICAgICBpZiAoKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQo
KSAmJiAhaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgICAgICAgICAm
JiAoaW5wdXRFbGVtZW50LT5zaG91bGRBdXRvY29tcGxldGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBtX3VzZXJOYW1lRWxlbWVudCA9IGlucHV0RWxlbWVudDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIW1fdXNlck5hbWVF
bGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxvY2F0ZVNwZWNpZmlj
UGFzc3dvcmRzKHBhc3N3b3JkcywgJihtX3Bhc3N3b3JkRWxlbWVudCkpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVk
ZW50aWFsVHJhbnNmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5YzU3NzZiYmI2
ZDkwMTIyMzFjOTNiMDc4YTg0NTAwMjE4YzM0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2lmbmRlZiBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YV9oCisjZGVmaW5lIENyZWRlbnRpYWxU
cmFuc2Zvcm1EYXRhX2gKKworI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJIVE1M
Rm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTEZvcm1FbGVtZW50Owor
CitzdHJ1Y3QgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEgeworICAgIC8vIElmIHRoZSBwcm92aWRl
ZCBmb3JtIGlzIHN1aXRhYmxlIGZvciBwYXNzd29yZCBjb21wbGV0aW9uLCBpc1ZhbGlkKCkgd2ls
bAorICAgIC8vIHJldHVybiB0cnVlOworICAgIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhKEhUTUxG
b3JtRWxlbWVudCopOworICAgIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhKGNvbnN0IEtVUkwmLCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJik7CisKKyAgICAvLyBJZiBj
cmVhdGlvbiBmYWlsZWQsIHJldHVybiBmYWxzZS4KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBtX2lzVmFsaWQ7IH0KKworICAgIEtVUkwgdXJsKCkgY29uc3Q7CisgICAgUHJvdGVj
dGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdGVjdGlvblNw
YWNlOyB9CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRD
cmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmKTsKKworcHJpdmF0ZToKKyAgICBib29sIGZpbmRQ
YXNzd29yZEZvcm1GaWVsZHMoSFRNTEZvcm1FbGVtZW50Kik7CisKKyAgICBLVVJMIG1fdXJsOwor
ICAgIEtVUkwgbV9hY3Rpb247CisgICAgUHJvdGVjdGlvblNwYWNlIG1fcHJvdGVjdGlvblNwYWNl
OworICAgIG11dGFibGUgQ3JlZGVudGlhbCBtX2NyZWRlbnRpYWw7CisgICAgSFRNTElucHV0RWxl
bWVudCogbV91c2VyTmFtZUVsZW1lbnQ7CisgICAgSFRNTElucHV0RWxlbWVudCogbV9wYXNzd29y
ZEVsZW1lbnQ7CisgICAgYm9vbCBtX2lzVmFsaWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="132624"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130038</attachid>
            <date>2012-03-04 17:52:15 -0800</date>
            <delta_ts>2012-03-04 19:29:43 -0800</delta_ts>
            <desc>patch for cq</desc>
            <filename>bug-80107-20120305095205.patch</filename>
            <type>text/plain</type>
            <size>20999</size>
            <attacher name="Jonathan Dong">jonathan.dong.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Njg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI1ZDNmNzhhODEyNjBkOTM0
ZjlmMjk4ZmI3MDJlYzc0OWVmZDkxMzYuLjMzZmQ2MmMxM2I0Y2Y1MjgxNTU4ZTg3NmY5YjQxOTgz
YzExN2MxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDMtMDQgIEpvbmF0aGFu
IERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBbQmxh
Y2tCZXJyeV0gdXBzdHJlYW0gQ3JlZGVudGlhbE1hbmFnZXIgYW5kIENyZWRlbnRpYWxUcmFuc2Zv
cm1EYXRhIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04MDEwNworCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMu
CisKKyAgICAgICAgSW5pdGlhbCB1cHN0cmVhbSBvZiBDcmVkZW50aWFsTWFuYWdlci5baHxjcHBd
IGFuZAorICAgICAgICBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5baHxjcHBdLgorICAgICAgICBO
byBuZXcgdGVzdC4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAx
Mi0wMi0yNCAgR3J6ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXVtEUlRdIEltcGxlbWVudCBzZXRWYWx1ZUZvclVzZXIgYW5kIHNldEF1
dG9maWxsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAyNTc1YWUyZWFjN2Nh
MGI3YzYwZjc2ZDM0MWI3N2ExY2YwOTBmOTc1Li4zMmY4MzczODIxOGNjZGFhMzlhNzkwNWRkNDQ3
OTBiYTM5ZDc4ZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NyBAQAorMjAxMi0wMy0wNCAgSm9uYXRoYW4gRG9uZyAgPGpvbmF0aGFuLmRvbmdAdG9yY2htb2Jp
bGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSB1cHN0cmVhbSBDcmVkZW50aWFsTWFu
YWdlciBhbmQgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTA3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBJbml0aWFsIHVwc3RyZWFtIG9m
IENyZWRlbnRpYWxNYW5hZ2VyLltofGNwcF0gYW5kCisgICAgICAgIENyZWRlbnRpYWxUcmFuc2Zv
cm1EYXRhLltofGNwcF0uCisgICAgICAgIE5vIG5ldyB0ZXN0LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbE1hbmFnZXI6OkNyZWRlbnRpYWxNYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxNYW5hZ2VyOjphdXRvZmlsbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxNYW5hZ2VyOjph
dXRvZmlsbFBhc3N3b3JkRm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbE1hbmFn
ZXI6OnNhdmVDcmVkZW50aWFsSWZDb25maXJtZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0NyZWRlbnRpYWxNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ3JlZGVudGlhbE1hbmFnZXIpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDcmVkZW50aWFsVHJhbnNmb3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9ybURhdGEp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsVHJhbnNm
b3JtRGF0YTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRh
OjpjcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRh
OjpzZXRDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxUcmFuc2Zvcm1E
YXRhOjpmaW5kUGFzc3dvcmRGb3JtRmllbGRzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
cmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVu
dGlhbFRyYW5zZm9ybURhdGE6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFRyYW5zZm9ybURhdGE6OnByb3RlY3Rpb25TcGFjZSk6CisKIDIwMTItMDMtMDQgIEFudG9uaW8g
R29tZXMgIDxhZ29tZXNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRml4ZWQgcG9z
aXRpb25lZCBlbGVtZW50IG5vdCBjb3JyZWN0bHkgcG9zaXRpb25lZCBhZnRlciBvcmllbnRhdGlv
biBjaGFuZ2UsIHdoZW4gdmlld3BvcnQgbWV0YXRhZyBpcyB1c2VkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IDVkNWM4YjM1MjAxNzE4OGVlNTM2OTYwOGM3Y2UzODQ5
NzBkOTIyZjYuLmIwZDA3NTQ2YTc5Nzc2ZjAxZGU1NDRhODliYjg4ZWI2MWM0MjgxYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC01MSw2ICs1MSw4IEBAIExJU1Qo
QVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2xp
ZW50RXh0ZW5zaW9uLmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRCbGFja0JlcnJ5LmNwcAorICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3Jl
ZGVudGlhbE1hbmFnZXIuY3BwCisgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50
aWFsVHJhbnNmb3JtRGF0YS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Rldmlj
ZU1vdGlvbkNsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50QmxhY2tCZXJyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFn
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTdkZTZmOGJmMGY4Nzk4Yzc4YjMzNDIzMzhiYjE1MzcyZGUw
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKEJMQUNLQkVSUllfQ1JFREVOVElBTF9QRVJTSVNUKQorI2luY2x1ZGUgIkNyZWRlbnRp
YWxNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgiCisjaW5j
bHVkZSAiQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudEJsYWNrQmVycnkuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYlBhZ2VDbGllbnQu
aCIKKyNpbmNsdWRlICJXZWJQYWdlX3AuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNp
bmcgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ2xpZW50OwordXNpbmcgQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJTdHJpbmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3JlZGVudGlhbE1h
bmFnZXI6OkNyZWRlbnRpYWxNYW5hZ2VyKEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeSogZnJh
bWVMb2FkZXJDbGllbnQpCisgICAgOiBtX2ZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyQ2xp
ZW50KQoreworICAgIEFTU0VSVChtX2ZyYW1lTG9hZGVyQ2xpZW50KTsKK30KKwordm9pZCBDcmVk
ZW50aWFsTWFuYWdlcjo6YXV0b2ZpbGxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgV2ViU3RyaW5nJiB1c2VybmFtZSwgV2ViU3Ry
aW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoQ3JlZGVudGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFu
Y2UoKS0+aGFzTmV2ZXJSZW1lbWJlcihwcm90ZWN0aW9uU3BhY2UpKQorICAgICAgICByZXR1cm47
CisKKyAgICBDcmVkZW50aWFsIHNhdmVkQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxCYWNraW5nU3Rv
cmU6Omluc3RhbmNlKCktPmdldExvZ2luKHByb3RlY3Rpb25TcGFjZSk7CisgICAgdXNlcm5hbWUg
PSBzYXZlZENyZWRlbnRpYWwudXNlcigpOworICAgIHBhc3N3b3JkID0gc2F2ZWRDcmVkZW50aWFs
LnBhc3N3b3JkKCk7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbE1hbmFnZXI6OmF1dG9maWxsUGFzc3dv
cmRGb3JtcyhQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBkb2NGb3JtcykKK3sKKyAgICBBU1NF
UlQoZG9jRm9ybXMpOworCisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBmb3JtcyA9IGRvY0Zv
cm1zOworICAgIHNpemVfdCBzb3VyY2VMZW5ndGggPSBmb3Jtcy0+bGVuZ3RoKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkgeworICAgICAgICBOb2RlKiBu
b2RlID0gZm9ybXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVs
ZW1lbnQoKSkgeworICAgICAgICAgICAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEgZGF0YShzdGF0
aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihub2RlKSk7CisgICAgICAgICAgICBpZiAoIWRhdGEu
aXNWYWxpZCgpIHx8ICFDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5oYXNMb2dp
bihkYXRhLnVybCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIENyZWRlbnRpYWwgc2F2ZWRDcmVkZW50aWFsID0gQ3JlZGVu
dGlhbEJhY2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+Z2V0TG9naW4oZGF0YS51cmwoKSk7CisgICAg
ICAgICAgICBkYXRhLnNldENyZWRlbnRpYWwoc2F2ZWRDcmVkZW50aWFsKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBDcmVkZW50aWFsTWFuYWdlcjo6c2F2ZUNyZWRlbnRpYWxJZkNvbmZp
cm1lZChjb25zdCBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YSYgZGF0YSkKK3sKKyAgICBpZiAoIWRh
dGEuaXNWYWxpZCgpIHx8IGRhdGEuY3JlZGVudGlhbCgpLmlzRW1wdHkoKSB8fCBDcmVkZW50aWFs
QmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5oYXNOZXZlclJlbWVtYmVyKGRhdGEucHJvdGVjdGlv
blNwYWNlKCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBDcmVkZW50aWFsIHNhdmVkQ3JlZGVu
dGlhbCA9IENyZWRlbnRpYWxCYWNraW5nU3RvcmU6Omluc3RhbmNlKCktPmdldExvZ2luKGRhdGEu
dXJsKCkpOworICAgIGlmIChzYXZlZENyZWRlbnRpYWwgPT0gZGF0YS5jcmVkZW50aWFsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYlBhZ2VDbGllbnQ6OlNhdmVDcmVkZW50aWFsVHlwZSB0
eXBlID0gbV9mcmFtZUxvYWRlckNsaWVudC0+bV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPm5v
dGlmeVNob3VsZFNhdmVDcmVkZW50aWFsKHNhdmVkQ3JlZGVudGlhbC5pc0VtcHR5KCkpOworICAg
IGlmICh0eXBlID09IFdlYlBhZ2VDbGllbnQ6OlNhdmVDcmVkZW50aWFsWWVzKSB7CisgICAgICAg
IGlmIChzYXZlZENyZWRlbnRpYWwuaXNFbXB0eSgpKQorICAgICAgICAgICAgQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZTo6aW5zdGFuY2UoKS0+YWRkTG9naW4oZGF0YS51cmwoKSwgZGF0YS5wcm90ZWN0
aW9uU3BhY2UoKSwgZGF0YS5jcmVkZW50aWFsKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT51cGRhdGVMb2dpbihkYXRhLnVy
bCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpLCBkYXRhLmNyZWRlbnRpYWwoKSk7CisgICAgfSBl
bHNlIGlmICh0eXBlID09IFdlYlBhZ2VDbGllbnQ6OlNhdmVDcmVkZW50aWFsTmV2ZXJGb3JUaGlz
U2l0ZSkgeworICAgICAgICBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5hZGRO
ZXZlclJlbWVtYmVyKGRhdGEudXJsKCksIGRhdGEucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAg
ICBDcmVkZW50aWFsQmFja2luZ1N0b3JlOjppbnN0YW5jZSgpLT5yZW1vdmVMb2dpbihkYXRhLnVy
bCgpLCBkYXRhLnByb3RlY3Rpb25TcGFjZSgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShCTEFDS0JFUlJZX0NSRURFTlRJQUxfUEVSU0lT
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9D
cmVkZW50aWFsTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQzOWYxMGMwZDliYmY5NWMxNTQw
ZGU3MWViYmQ2NjdiM2I3ZmY1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBDcmVk
ZW50aWFsTWFuYWdlcl9oCisjZGVmaW5lIENyZWRlbnRpYWxNYW5hZ2VyX2gKKworI2lmIEVOQUJM
RShCTEFDS0JFUlJZX0NSRURFTlRJQUxfUEVSU0lTVCkKKworI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIEJsYWNrQmVy
cnkgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTdHJpbmc7Cit9Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTsKK2NsYXNz
IEtVUkw7CitjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CitjbGFzcyBDcmVkZW50aWFsVHJhbnNmb3Jt
RGF0YTsKKworY2xhc3MgQ3JlZGVudGlhbE1hbmFnZXIgeworcHVibGljOgorICAgIENyZWRlbnRp
YWxNYW5hZ2VyKEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeSopOworCisgICAgdm9pZCBhdXRv
ZmlsbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEJsYWNr
QmVycnk6OldlYktpdDo6V2ViU3RyaW5nJiB1c2VybmFtZSwgQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJTdHJpbmcmIHBhc3N3b3JkKTsKKyAgICB2b2lkIGF1dG9maWxsUGFzc3dvcmRGb3JtcyhQYXNz
UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBkb2NGb3Jtcyk7CisgICAgdm9pZCBzYXZlQ3JlZGVudGlh
bElmQ29uZmlybWVkKGNvbnN0IENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhJik7CisKK3ByaXZhdGU6
CisgICAgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5KiBtX2ZyYW1lTG9hZGVyQ2xpZW50Owor
fTsKKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQkxBQ0tCRVJSWV9DUkVERU5U
SUFMX1BFUlNJU1QpCisKKyNlbmRpZiAvLyBDcmVkZW50aWFsTWFuYWdlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5z
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Ny
ZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzIyYWUyYTIyODlhMDEzMWQ3
ZjA5NWMyOTkxN2JiNzYwNWIyZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcApAQCAt
MCwwICsxLDIzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyAvKgorICogVGhpcyBtZXRob2RzIGFyZSBiYXNl
ZCBvbiBDaHJvbWl1bSBjb2RlcyBpbgorICogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFzc3dvcmRGb3JtVXRpbHMuY3BwCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmgiCisKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgeworLy8gTWF4aW11bSBudW1iZXIgb2YgcGFzc3dvcmQgZmllbGRzIHdlIHdpbGwgb2JzZXJ2
ZSBiZWZvcmUgdGhyb3dpbmcgb3VyCisvLyBoYW5kcyBpbiB0aGUgYWlyIGFuZCBnaXZpbmcgdXAg
d2l0aCBhIGdpdmVuIGZvcm0uCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFBhc3N3b3JkcyA9IDM7
CisKKy8vIEhlbHBlciBtZXRob2QgdG8gY2xlYXIgdXJsIG9mIHVubmVlZGVkIHBhcnRzLgorS1VS
TCBzdHJpcFVSTChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgS1VSTCBzdHJpcHBlZFVSTCA9IHVy
bDsKKyAgICBzdHJpcHBlZFVSTC5zZXRVc2VyKFN0cmluZygpKTsKKyAgICBzdHJpcHBlZFVSTC5z
ZXRQYXNzKFN0cmluZygpKTsKKyAgICBzdHJpcHBlZFVSTC5zZXRRdWVyeShTdHJpbmcoKSk7Cisg
ICAgc3RyaXBwZWRVUkwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKFN0cmluZygpKTsKKyAgICByZXR1
cm4gc3RyaXBwZWRVUkw7Cit9CisKKy8vIEhlbHBlciBtZXRob2QgdG8gZGV0ZXJtaW5lIHdoaWNo
IHBhc3N3b3JkIGlzIHRoZSBtYWluIG9uZSwgYW5kIHdoaWNoIGlzCisvLyBhbiBvbGQgcGFzc3dv
cmQgKGUuZyBvbiBhICJtYWtlIG5ldyBwYXNzd29yZCIgZm9ybSksIGlmIGFueS4KK2Jvb2wgbG9j
YXRlU3BlY2lmaWNQYXNzd29yZHMoVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiYgcGFzc3dvcmRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiogcGFzc3dv
cmQpCit7CisgICAgQVNTRVJUKHBhc3N3b3JkKTsKKworICAgIHN3aXRjaCAocGFzc3dvcmRzLnNp
emUoKSkgeworICAgIGNhc2UgMToKKyAgICAgICAgLy8gU2luZ2xlIHBhc3N3b3JkLCBlYXN5Lgor
ICAgICAgICAqcGFzc3dvcmQgPSBwYXNzd29yZHNbMF07CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMjoKKyAgICAgICAgaWYgKHBhc3N3b3Jkc1swXS0+dmFsdWUoKSA9PSBwYXNzd29yZHNbMV0t
PnZhbHVlKCkpCisgICAgICAgICAgICAvLyBUcmVhdCB0d28gaWRlbnRpY2FsIHBhc3N3b3JkcyBh
cyBhIHNpbmdsZSBwYXNzd29yZC4KKyAgICAgICAgICAgICpwYXNzd29yZCA9IHBhc3N3b3Jkc1sw
XTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBBc3N1bWUgZmlyc3QgaXMgb2xkIHBh
c3N3b3JkLCBzZWNvbmQgaXMgbmV3IChubyBjaG9pY2UgYnV0IHRvIGd1ZXNzKS4KKyAgICAgICAg
ICAgICpwYXNzd29yZCA9IHBhc3N3b3Jkc1sxXTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBjYXNlIDM6CisgICAgICAgIGlmIChwYXNzd29yZHNbMF0tPnZhbHVlKCkgPT0gcGFzc3dv
cmRzWzFdLT52YWx1ZSgpCisgICAgICAgICAgICAmJiBwYXNzd29yZHNbMF0tPnZhbHVlKCkgPT0g
cGFzc3dvcmRzWzJdLT52YWx1ZSgpKSB7CisgICAgICAgICAgICAvLyBBbGwgdGhyZWUgcGFzc3dv
cmRzIHRoZSBzYW1lPyBKdXN0IHRyZWF0IGFzIG9uZSBhbmQgaG9wZS4KKyAgICAgICAgICAgICpw
YXNzd29yZCA9IHBhc3N3b3Jkc1swXTsKKyAgICAgICAgfSBlbHNlIGlmIChwYXNzd29yZHNbMF0t
PnZhbHVlKCkgPT0gcGFzc3dvcmRzWzFdLT52YWx1ZSgpKSB7CisgICAgICAgICAgICAvLyBUd28g
dGhlIHNhbWUgYW5kIG9uZSBkaWZmZXJlbnQgLT4gb2xkIHBhc3N3b3JkIGlzIGR1cGxpY2F0ZWQg
b25lLgorICAgICAgICAgICAgKnBhc3N3b3JkID0gcGFzc3dvcmRzWzJdOworICAgICAgICB9IGVs
c2UgaWYgKHBhc3N3b3Jkc1sxXS0+dmFsdWUoKSA9PSBwYXNzd29yZHNbMl0tPnZhbHVlKCkpCisg
ICAgICAgICAgICAqcGFzc3dvcmQgPSBwYXNzd29yZHNbMV07CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgLy8gVGhyZWUgZGlmZmVyZW50IHBhc3N3b3Jkcywgb3IgZmlyc3QgYW5kIGxhc3Qg
bWF0Y2ggd2l0aCBtaWRkbGUKKyAgICAgICAgICAgIC8vIGRpZmZlcmVudC4gTm8gaWRlYSB3aGlj
aCBpcyB3aGljaCwgc28gbm8gbHVjay4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZQorCitDcmVkZW50
aWFsVHJhbnNmb3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9ybURhdGEoSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQorICAgIDogbV91c2VyTmFtZUVsZW1lbnQoMCkKKyAgICAsIG1fcGFzc3dvcmRFbGVt
ZW50KDApCisgICAgLCBtX2lzVmFsaWQoZmFsc2UpCit7CisgICAgQVNTRVJUKGZvcm0pOworCisg
ICAgLy8gR2V0IHRoZSBkb2N1bWVudCBVUkwKKyAgICBLVVJMIGZ1bGxPcmlnaW4oUGFyc2VkVVJM
U3RyaW5nLCBmb3JtLT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgpKTsKKworICAgIC8vIENhbGN1
bGF0ZSB0aGUgY2Fub25pY2FsIGFjdGlvbiBVUkwKKyAgICBTdHJpbmcgYWN0aW9uID0gZm9ybS0+
YWN0aW9uKCk7CisgICAgaWYgKGFjdGlvbi5pc051bGwoKSkKKyAgICAgICAgYWN0aW9uID0gIiI7
IC8vIG1pc3NpbmcgJ2FjdGlvbicgYXR0cmlidXRlIGltcGxpZXMgY3VycmVudCBVUkwKKyAgICBL
VVJMIGZ1bGxBY3Rpb24gPSBmb3JtLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhY3Rpb24pOwor
ICAgIGlmICghZnVsbEFjdGlvbi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghZmluZFBhc3N3b3JkRm9ybUZpZWxkcyhmb3JtKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV91cmwgPSBzdHJpcFVSTChmdWxsT3JpZ2luKTsKKyAgICBtX2FjdGlvbiA9IHN0cmlwVVJMKGZ1
bGxBY3Rpb24pOworICAgIG1fcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKG1fdXJs
Lmhvc3QoKSwgbV91cmwucG9ydCgpLCBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQLCAiRm9ybSIs
IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRNTEZvcm0pOworICAgIG1fY3Jl
ZGVudGlhbCA9IENyZWRlbnRpYWwobV91c2VyTmFtZUVsZW1lbnQtPnZhbHVlKCksIG1fcGFzc3dv
cmRFbGVtZW50LT52YWx1ZSgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQpOworCisg
ICAgbV9pc1ZhbGlkID0gdHJ1ZTsKK30KKworQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OkNyZWRl
bnRpYWxUcmFuc2Zvcm1EYXRhKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNl
JiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCisgICAgOiBt
X3VybCh1cmwpCisgICAgLCBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpCisgICAg
LCBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKKyAgICAsIG1fdXNlck5hbWVFbGVtZW50KDApCisg
ICAgLCBtX3Bhc3N3b3JkRWxlbWVudCgwKQorICAgICwgbV9pc1ZhbGlkKHRydWUpCit7Cit9CisK
K0tVUkwgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OnVybCgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2lzVmFsaWQpCisgICAgICAgIHJldHVybiBLVVJMKCk7CisKKyAgICBpZiAobV9wcm90ZWN0aW9u
U3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZUhUTUxGb3JtKQorICAgICAgICByZXR1cm4gbV9hY3Rpb247CisgICAgcmV0dXJu
IG1fdXJsOworfQorCitDcmVkZW50aWFsIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOjpjcmVkZW50
aWFsKCkgY29uc3QKK3sKKyAgICBpZiAobV9jcmVkZW50aWFsLmlzRW1wdHkoKSAmJiBtX3VzZXJO
YW1lRWxlbWVudCAmJiBtX3Bhc3N3b3JkRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG1fY3JlZGVu
dGlhbCA9IENyZWRlbnRpYWwobV91c2VyTmFtZUVsZW1lbnQtPnZhbHVlKCksIG1fcGFzc3dvcmRF
bGVtZW50LT52YWx1ZSgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQpOworICAgIHJl
dHVybiBtX2NyZWRlbnRpYWw7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OnNl
dENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBpZiAoIW1f
aXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jcmVkZW50aWFsID0gY3JlZGVudGlh
bDsKKyAgICBtX3VzZXJOYW1lRWxlbWVudC0+c2V0VmFsdWUoY3JlZGVudGlhbC51c2VyKCkpOwor
ICAgIG1fcGFzc3dvcmRFbGVtZW50LT5zZXRWYWx1ZShjcmVkZW50aWFsLnBhc3N3b3JkKCkpOwor
fQorCitib29sIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOjpmaW5kUGFzc3dvcmRGb3JtRmllbGRz
KEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK3sKKyAgICBBU1NFUlQoZm9ybSk7CisKKyAgICBpbnQg
Zmlyc3RQYXNzd29yZEluZGV4ID0gMDsKKyAgICAvLyBGaXJzdCwgZmluZCB0aGUgcGFzc3dvcmQg
ZmllbGRzIGFuZCBhY3RpdmF0ZWQgc3VibWl0IGJ1dHRvbi4KKyAgICBjb25zdCBWZWN0b3I8Rm9y
bUFzc29jaWF0ZWRFbGVtZW50Kj4mIGZvcm1FbGVtZW50cyA9IGZvcm0tPmFzc29jaWF0ZWRFbGVt
ZW50cygpOworICAgIFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4gcGFzc3dvcmRzOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZm9ybUVsZW1lbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAg
IGlmICghZm9ybUVsZW1lbnRzW2ldLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1FbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KGZvcm1FbGVtZW50c1tpXSk7
CisgICAgICAgIGlmICghZm9ybUVsZW1lbnQtPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OmlucHV0
VGFnKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQq
IGlucHV0RWxlbWVudCA9IGZvcm1FbGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAgICAgICBp
ZiAoIWlucHV0RWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGlmICgocGFzc3dvcmRzLnNpemUoKSA8IG1heFBhc3N3b3JkcykK
KyAgICAgICAgICAgICYmIGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkKKyAgICAgICAg
ICAgICYmIGlucHV0RWxlbWVudC0+c2hvdWxkQXV0b2NvbXBsZXRlKCkpIHsKKyAgICAgICAgICAg
IGlmIChwYXNzd29yZHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGZpcnN0UGFzc3dvcmRJ
bmRleCA9IGk7CisgICAgICAgICAgICBwYXNzd29yZHMuYXBwZW5kKGlucHV0RWxlbWVudCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXBhc3N3b3Jkcy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgLy8gVGhlbiwgc2VhcmNoIGJhY2t3YXJkcyBmb3IgdGhlIHVzZXJuYW1lIGZpZWxkLgorICAg
ICAgICBmb3IgKGludCBpID0gZmlyc3RQYXNzd29yZEluZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHsK
KyAgICAgICAgICAgIGlmICghZm9ybUVsZW1lbnRzW2ldLT5pc0Zvcm1Db250cm9sRWxlbWVudCgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudCogZm9ybUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Kj4oZm9ybUVsZW1lbnRzW2ldKTsKKyAgICAgICAgICAgIGlmICghZm9ybUVsZW1lbnQtPmhhc0xv
Y2FsTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gZm9ybUVsZW1l
bnQtPnRvSW5wdXRFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNF
bmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgLy8gVmFyaW91cyBpbnB1dCB0eXBlcyBzdWNoIGFzIHRleHQsIHVybCwgZW1haWwgY2Fu
IGJlIGEgdXNlcm5hbWUgZmllbGQuCisgICAgICAgICAgICBpZiAoKGlucHV0RWxlbWVudC0+aXNU
ZXh0RmllbGQoKSAmJiAhaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAg
ICAgICAgICAmJiAoaW5wdXRFbGVtZW50LT5zaG91bGRBdXRvY29tcGxldGUoKSkpIHsKKyAgICAg
ICAgICAgICAgICBtX3VzZXJOYW1lRWxlbWVudCA9IGlucHV0RWxlbWVudDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIW1f
dXNlck5hbWVFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWxvY2F0
ZVNwZWNpZmljUGFzc3dvcmRzKHBhc3N3b3JkcywgJihtX3Bhc3N3b3JkRWxlbWVudCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5
YzU3NzZiYmI2ZDkwMTIyMzFjOTNiMDc4YTg0NTAwMjE4YzM0YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNm
b3JtRGF0YS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2lmbmRlZiBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YV9oCisjZGVmaW5lIENy
ZWRlbnRpYWxUcmFuc2Zvcm1EYXRhX2gKKworI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKKyNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHJv
dGVjdGlvblNwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTEZvcm1F
bGVtZW50OworCitzdHJ1Y3QgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEgeworICAgIC8vIElmIHRo
ZSBwcm92aWRlZCBmb3JtIGlzIHN1aXRhYmxlIGZvciBwYXNzd29yZCBjb21wbGV0aW9uLCBpc1Zh
bGlkKCkgd2lsbAorICAgIC8vIHJldHVybiB0cnVlOworICAgIENyZWRlbnRpYWxUcmFuc2Zvcm1E
YXRhKEhUTUxGb3JtRWxlbWVudCopOworICAgIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhKGNvbnN0
IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJik7CisKKyAg
ICAvLyBJZiBjcmVhdGlvbiBmYWlsZWQsIHJldHVybiBmYWxzZS4KKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KKworICAgIEtVUkwgdXJsKCkgY29uc3Q7Cisg
ICAgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dGVjdGlvblNwYWNlOyB9CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmKTsKKworcHJpdmF0ZToKKyAgICBi
b29sIGZpbmRQYXNzd29yZEZvcm1GaWVsZHMoSFRNTEZvcm1FbGVtZW50Kik7CisKKyAgICBLVVJM
IG1fdXJsOworICAgIEtVUkwgbV9hY3Rpb247CisgICAgUHJvdGVjdGlvblNwYWNlIG1fcHJvdGVj
dGlvblNwYWNlOworICAgIG11dGFibGUgQ3JlZGVudGlhbCBtX2NyZWRlbnRpYWw7CisgICAgSFRN
TElucHV0RWxlbWVudCogbV91c2VyTmFtZUVsZW1lbnQ7CisgICAgSFRNTElucHV0RWxlbWVudCog
bV9wYXNzd29yZEVsZW1lbnQ7CisgICAgYm9vbCBtX2lzVmFsaWQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>