<?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>18508</bug_id>
          
          <creation_ts>2008-04-15 01:07:59 -0700</creation_ts>
          <short_desc>SquirrelFish crashes due to bad scope chain on some SunSpider tests</short_desc>
          <delta_ts>2008-04-24 17:52:43 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>77664</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-15 01:07:59 -0700</bug_when>
    <thetext>Some SunSpider tests (3d-raytrace, string-unpack-code) crash due to keeping around a ScopeChain* that points into the register file, but the register file can move in memory when it grows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77665</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-15 01:09:44 -0700</bug_when>
    <thetext>A possible solution is to pass around ScopeChainNode* instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77669</commentid>
    <comment_count>2</comment_count>
      <attachid>20548</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-15 01:46:08 -0700</bug_when>
    <thetext>Created attachment 20548
the fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77671</commentid>
    <comment_count>3</comment_count>
      <attachid>20548</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-04-15 01:54:59 -0700</bug_when>
    <thetext>Comment on attachment 20548
the fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78841</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-04-24 17:52:43 -0700</bug_when>
    <thetext>Landed in r31897.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20548</attachid>
            <date>2008-04-15 01:46:08 -0700</date>
            <delta_ts>2008-04-15 01:54:59 -0700</delta_ts>
            <desc>the fix</desc>
            <filename>scope-chain-fix.patch.txt</filename>
            <type>text/plain</type>
            <size>27507</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMxODk2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMDgtMDQt
MTUgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIC0gZml4ZWQgIlNxdWlycmVs
RmlzaCBjcmFzaGVzIGR1ZSB0byBiYWQgc2NvcGUgY2hhaW4gb24gc29tZSBTdW5TcGlkZXIgdGVz
dHMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUw
OAorCisgICAgICAgIDNkLXJheXRyYWNlIGFuZCBzdHJpbmctdW5wYWNrLWNvZGUgbm93IHJ1bi4K
KyAgICAgICAgCisgICAgICAgIFRoZSBiYXNpYyBhcHByb2FjaCBpcyB0byBwYXNzIGFyb3VuZCBT
Y29wZUNoYWluTm9kZSogaW5zdGVhZCBvZgorICAgICAgICBTY29wZUNoYWluKiwgd2hpY2ggaW4g
YWRkaXRpb24gdG8gbm90IGJlY29taW5nIHN1ZGRlbmx5IGFuIGludmFsaWQKKyAgICAgICAgcG9p
bnRlciBhbHNvIHNhdmVzIGFuIGluZGlyZWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBp
cyBhbiAwLjQlIHNwZWVkdXAgb24gU3VuU3BpZGVyIC0tc3F1aXJyZWxmaXNoICgxLjglIG9uIC0t
dWJlbmNoKQorICAgICAgICAKKyAgICAgICAgKiBWTS9NYWNoaW5lLmNwcDoKKyAgICAgICAgKEtK
Uzo6cmVzb2x2ZSk6CisgICAgICAgIChLSlM6OnJlc29sdmVCYXNlKToKKyAgICAgICAgKEtKUzo6
cmVzb2x2ZUJhc2VBbmRGdW5jKToKKyAgICAgICAgKEtKUzo6aW5pdGlhbGl6ZUNhbGxGcmFtZSk6
CisgICAgICAgIChLSlM6OnNjb3BlQ2hhaW5Gb3JDYWxsKToKKyAgICAgICAgKEtKUzo6TWFjaGlu
ZTo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEtKUzo6TWFjaGluZTo6dGhyb3dFeGNlcHRp
b24pOgorICAgICAgICAoS0pTOjpNYWNoaW5lOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6TWFj
aGluZTo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIFZNL01hY2hpbmUuaDoKKyAgICAgICAg
KiBWTS9SZWdpc3Rlci5oOgorICAgICAgICAoS0pTOjpSZWdpc3Rlcjo6KToKKyAgICAgICAgKiBr
anMvbm9kZXMuY3BwOgorICAgICAgICAoS0pTOjpFdmFsTm9kZTo6Z2VuZXJhdGVDb2RlKToKKyAg
ICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Z2VuZXJhdGVDb2RlKToKKyAgICAgICAgKEtK
Uzo6UHJvZ3JhbU5vZGU6OmdlbmVyYXRlQ29kZSk6CisgICAgICAgIChLSlM6OlByb2dyYW1Ob2Rl
Ojpwcm9jZXNzRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEtKUzo6RXZhbE5vZGU6OnByb2Nlc3NE
ZWNsYXJhdGlvbnMpOgorICAgICAgICAoS0pTOjpGdW5jRGVjbE5vZGU6Om1ha2VGdW5jdGlvbik6
CisgICAgICAgIChLSlM6OkZ1bmNFeHByTm9kZTo6bWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKiBr
anMvbm9kZXMuaDoKKyAgICAgICAgKEtKUzo6UHJvZ3JhbU5vZGU6Oik6CisgICAgICAgIChLSlM6
OkV2YWxOb2RlOjopOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkJvZHlOb2RlOjopOgorICAgICAg
ICAqIGtqcy9vYmplY3QuaDoKKyAgICAgICAgKiBranMvc2NvcGVfY2hhaW4uaDoKKyAgICAgICAg
KEtKUzo6U2NvcGVDaGFpbk5vZGU6OlNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKEtKUzo6U2Nv
cGVDaGFpbk5vZGU6OmRlcmVmKToKKyAgICAgICAgKEtKUzo6U2NvcGVDaGFpbkl0ZXJhdG9yOjpT
Y29wZUNoYWluSXRlcmF0b3IpOgorICAgICAgICAoS0pTOjpTY29wZUNoYWluSXRlcmF0b3I6Om9w
ZXJhdG9yKik6CisgICAgICAgIChLSlM6OlNjb3BlQ2hhaW5JdGVyYXRvcjo6b3BlcmF0b3ItPik6
CisgICAgICAgIChLSlM6OlNjb3BlQ2hhaW46OlNjb3BlQ2hhaW4pOgorICAgICAgICAoS0pTOjpT
Y29wZUNoYWluOjpub2RlKToKKyAgICAgICAgKEtKUzo6U2NvcGVDaGFpbjo6ZGVyZWYpOgorICAg
ICAgICAoS0pTOjpTY29wZUNoYWluOjpyZWYpOgorICAgICAgICAoS0pTOjpTY29wZUNoYWluTm9k
ZTo6cmVmKToKKyAgICAgICAgKEtKUzo6U2NvcGVDaGFpbk5vZGU6OnJlbGVhc2UpOgorICAgICAg
ICAoS0pTOjpTY29wZUNoYWluTm9kZTo6YmVnaW4pOgorICAgICAgICAoS0pTOjpTY29wZUNoYWlu
Tm9kZTo6ZW5kKToKKwogMjAwOC0wNC0xNCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogVk0vTWFjaGlu
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVk0vTWFjaGluZS5jcHAJKHJldmlzaW9uIDMxODk2KQorKysg
Vk0vTWFjaGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw3ICsyMzUsNyBAQCBib29sIE1h
Y2hpbmU6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiAjZW5kaWYKIH0KIAotc3RhdGljIE5FVkVS
X0lOTElORSBib29sIHJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogdlBDLCBS
ZWdpc3RlciogciwgU2NvcGVDaGFpbiogc2NvcGVDaGFpbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTVmFsdWUqJiBleGNlcHRpb25WYWx1ZSkKK3N0YXRpYyBib29sIE5FVkVSX0lOTElORSByZXNv
bHZlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHZQQywgUmVnaXN0ZXIqIHIsIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSomIGV4
Y2VwdGlvblZhbHVlKQogewogICAgIGludCByMCA9ICh2UEMgKyAxKS0+dS5vcGVyYW5kOwogICAg
IGludCBpZDAgPSAodlBDICsgMiktPnUub3BlcmFuZDsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0
aWMgTkVWRVJfSU5MSU5FIGJvb2wgcmVzb2x2ZShFeGVjU3RhCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgdm9pZCBORVZFUl9JTkxJTkUgcmVzb2x2ZUJhc2UoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogdlBDLCBSZWdpc3RlciogciwgU2NvcGVDaGFpbiogc2NvcGVDaGFpbiwg
Q29kZUJsb2NrKiBjb2RlQmxvY2spCitzdGF0aWMgdm9pZCBORVZFUl9JTkxJTkUgcmVzb2x2ZUJh
c2UoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogdlBDLCBSZWdpc3RlciogciwgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4sIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIGludCBy
MCA9ICh2UEMgKyAxKS0+dS5vcGVyYW5kOwogICAgIGludCBpZDAgPSAodlBDICsgMiktPnUub3Bl
cmFuZDsKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgdm9pZCBORVZFUl9JTkxJTkUgcmVzb2x2
ZUJhc2UoRXhlCiAgICAgcltyMF0udS5qc1ZhbHVlID0gYmFzZTsKIH0KIAotc3RhdGljIHZvaWQg
TkVWRVJfSU5MSU5FIHJlc29sdmVCYXNlQW5kRnVuYyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiB2UEMsIFJlZ2lzdGVyKiByLCBTY29wZUNoYWluKiBzY29wZUNoYWluLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaykKK3N0YXRpYyB2b2lkIE5FVkVSX0lOTElORSByZXNvbHZlQmFzZUFuZEZ1bmMo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogdlBDLCBSZWdpc3RlciogciwgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4sIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIGludCByMCA9
ICh2UEMgKyAxKS0+dS5vcGVyYW5kOwogICAgIGludCByMSA9ICh2UEMgKyAyKS0+dS5vcGVyYW5k
OwpAQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyB2b2lkIE5FVkVSX0lOTElORSByZXNvbHZlQmFz
ZUFuZEYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gRklYTUU6IHRocm93IGFuIHVuZGVm
aW5lZCB2YXJpYWJsZSBleGNlcHRpb24KIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIGluaXRpYWxp
emVDYWxsRnJhbWUoUmVnaXN0ZXIqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uKiB2UEMsIFNjb3BlQ2hhaW4qIHNjb3BlQ2hhaW4sIGludCByZWdpc3Rlck9mZnNl
dCwgaW50IHJldHVyblZhbHVlUmVnaXN0ZXIsIGludCBhcmd2LCBpbnQgY2FsbGVkQXNDb25zdHJ1
Y3RvcikKK0FMV0FZU19JTkxJTkUgdm9pZCBpbml0aWFsaXplQ2FsbEZyYW1lKFJlZ2lzdGVyKiBj
YWxsRnJhbWUsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogdlBDLCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgcmV0dXJuVmFsdWVS
ZWdpc3RlciwgaW50IGFyZ3YsIGludCBjYWxsZWRBc0NvbnN0cnVjdG9yKQogewogICAgIGNhbGxG
cmFtZVtNYWNoaW5lOjpDYWxsZXJDb2RlQmxvY2tdLnUuY29kZUJsb2NrID0gY29kZUJsb2NrOwog
ICAgIGNhbGxGcmFtZVtNYWNoaW5lOjpSZXR1cm5WUENdLnUudlBDID0gdlBDICsgMTsKQEAgLTM2
NCwyMSArMzY0LDE5IEBAIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXIqIHNsaWRlUmVnaXN0ZXJXaW4K
ICAgICByZXR1cm4gcjsKIH0KIAotQUxXQVlTX0lOTElORSBTY29wZUNoYWluKiBzY29wZUNoYWlu
Rm9yQ2FsbChDb2RlQmxvY2sqIG5ld0NvZGVCbG9jaywgU2NvcGVDaGFpbiogY2FsbERhdGFTY29w
ZUNoYWluLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFJlZ2lzdGVyKiBjYWxsRnJh
bWUsIFJlZ2lzdGVyKiogcmVnaXN0ZXJCYXNlLCBSZWdpc3RlciogcikKK0FMV0FZU19JTkxJTkUg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Gb3JDYWxsKENvZGVCbG9jayogbmV3Q29kZUJsb2Nr
LCBTY29wZUNoYWluKiBjYWxsRGF0YVNjb3BlQ2hhaW4sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0
aW9uQm9keSwgUmVnaXN0ZXIqIGNhbGxGcmFtZSwgUmVnaXN0ZXIqKiByZWdpc3RlckJhc2UsIFJl
Z2lzdGVyKiByKQogewotICAgIFNjb3BlQ2hhaW4qIHNjb3BlQ2hhaW47Ci0KICAgICBpZiAobmV3
Q29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24pIHsKICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFNjb3BlQ2hhaW4pIDw9IHNpemVvZihjYWxsRnJhbWVbTWFjaGluZTo6T3B0aW9uYWxDYWxs
ZWVTY29wZUNoYWluXSksIFNjb3BlQ2hhaW5fZml0c19pbl9yZWdpc3Rlcik7Ci0gICAgICAgIHNj
b3BlQ2hhaW4gPSBuZXcgKCZjYWxsRnJhbWVbTWFjaGluZTo6T3B0aW9uYWxDYWxsZWVTY29wZUNo
YWluXSkgU2NvcGVDaGFpbigqY2FsbERhdGFTY29wZUNoYWluKTsKLSAgICAgICAgc2NvcGVDaGFp
bi0+cHVzaChuZXcgSlNBY3RpdmF0aW9uKGZ1bmN0aW9uQm9keSwgcmVnaXN0ZXJCYXNlLCByIC0g
KCpyZWdpc3RlckJhc2UpKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNjb3BlQ2hhaW4gPSBjYWxs
RGF0YVNjb3BlQ2hhaW47CisgICAgICAgIFNjb3BlQ2hhaW4qIHNjID0gbmV3ICgmY2FsbEZyYW1l
W01hY2hpbmU6Ok9wdGlvbmFsQ2FsbGVlU2NvcGVDaGFpbl0pIFNjb3BlQ2hhaW4oKmNhbGxEYXRh
U2NvcGVDaGFpbik7CisgICAgICAgIHNjLT5wdXNoKG5ldyBKU0FjdGl2YXRpb24oZnVuY3Rpb25C
b2R5LCByZWdpc3RlckJhc2UsIHIgLSAoKnJlZ2lzdGVyQmFzZSkpKTsKKyAgICAgICAgcmV0dXJu
IHNjLT5ub2RlKCk7CisgICAgfSAKIAotICAgIHJldHVybiBzY29wZUNoYWluOworICAgIHJldHVy
biBjYWxsRGF0YVNjb3BlQ2hhaW4tPm5vZGUoKTsKIH0KIAotTkVWRVJfSU5MSU5FIEluc3RydWN0
aW9uKiBNYWNoaW5lOjp1bndpbmRDYWxsRnJhbWUoQ29kZUJsb2NrKiYgY29kZUJsb2NrLCBKU1Zh
bHVlKiomIGssIFNjb3BlQ2hhaW4qJiBzY29wZUNoYWluLCBSZWdpc3RlcioqIHJlZ2lzdGVyQmFz
ZSwgUmVnaXN0ZXIqJiByKQorTkVWRVJfSU5MSU5FIEluc3RydWN0aW9uKiBNYWNoaW5lOjp1bndp
bmRDYWxsRnJhbWUoQ29kZUJsb2NrKiYgY29kZUJsb2NrLCBKU1ZhbHVlKiomIGssIFNjb3BlQ2hh
aW5Ob2RlKiYgc2NvcGVDaGFpbiwgUmVnaXN0ZXIqKiByZWdpc3RlckJhc2UsIFJlZ2lzdGVyKiYg
cikKIHsKICAgICBpZiAoaXNHbG9iYWxDYWxsRnJhbWUocmVnaXN0ZXJCYXNlLCByKSkgewogICAg
ICAgICBjb2RlQmxvY2sgPSAwOwpAQCAtNDAxLDcgKzM5OSw3IEBAIE5FVkVSX0lOTElORSBJbnN0
cnVjdGlvbiogTWFjaGluZTo6dW53aW4KICAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIGFjdGl2YXRp
b24gaWYnbiBpdCdzIG5lY2Vzc2FyeQogICAgICAgICBBU1NFUlQoKCppdGVyKS0+aXNBY3RpdmF0
aW9uT2JqZWN0KCkpOwogICAgICAgICBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPigqaXRlcikt
PmNvcHlSZWdpc3RlcnMoKTsKLSAgICAgICAgc2NvcGVDaGFpbi0+flNjb3BlQ2hhaW4oKTsKKyAg
ICAgICAgc2NvcGVDaGFpbi0+ZGVyZWYoKTsKICAgICB9CiAgICAgCiAgICAgY29kZUJsb2NrID0g
Y2FsbEZyYW1lW0NhbGxlckNvZGVCbG9ja10udS5jb2RlQmxvY2s7CkBAIC00MTQsNyArNDEyLDcg
QEAgTkVWRVJfSU5MSU5FIEluc3RydWN0aW9uKiBNYWNoaW5lOjp1bndpbgogICAgIHJldHVybiBj
YWxsRnJhbWVbUmV0dXJuVlBDXS51LnZQQzsKIH0KIAotTkVWRVJfSU5MSU5FIEluc3RydWN0aW9u
KiBNYWNoaW5lOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIGV4Y2Vw
dGlvblZhbHVlLCBDb2RlQmxvY2sqJiBjb2RlQmxvY2ssIEpTVmFsdWUqKiYgaywgU2NvcGVDaGFp
biomIHNjb3BlQ2hhaW4sIFJlZ2lzdGVyKiogcmVnaXN0ZXJCYXNlLCBSZWdpc3RlciomIHIsIGNv
bnN0IEluc3RydWN0aW9uKiB2UEMpCitORVZFUl9JTkxJTkUgSW5zdHJ1Y3Rpb24qIE1hY2hpbmU6
OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogZXhjZXB0aW9uVmFsdWUs
IENvZGVCbG9jayomIGNvZGVCbG9jaywgSlNWYWx1ZSoqJiBrLCBTY29wZUNoYWluTm9kZSomIHNj
b3BlQ2hhaW4sIFJlZ2lzdGVyKiogcmVnaXN0ZXJCYXNlLCBSZWdpc3RlciomIHIsIGNvbnN0IElu
c3RydWN0aW9uKiB2UEMpCiB7CiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlLT5pc09iamVjdCgpKSB7
CiAgICAgICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGV4
Y2VwdGlvblZhbHVlKTsKQEAgLTQzMiw5ICs0MzAsMTEgQEAgTkVWRVJfSU5MSU5FIEluc3RydWN0
aW9uKiBNYWNoaW5lOjp0aHJvdwogICAgICAgICAgICAgdlBDID0gdW53aW5kQ2FsbEZyYW1lKGNv
ZGVCbG9jaywgaywgc2NvcGVDaGFpbiwgcmVnaXN0ZXJCYXNlLCByKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CisKICAgICAgICAgLy8gTm93IHVud2luZCB0aGUgc2NvcGUgY2hh
aW4KKyAgICAgICAgU2NvcGVDaGFpbiBzYyhzY29wZUNoYWluKTsKICAgICAgICAgLy8gU3RlcCAx
KSB3b3JrIG91dCBob3cgZGVlcCB0aGUgc2NvcGUgY2hhaW4gaXMKLSAgICAgICAgaW50IHNjb3Bl
RGVwdGggPSBzY29wZUNoYWluLT5kZXB0aCgpOworICAgICAgICBpbnQgc2NvcGVEZXB0aCA9IHNj
LmRlcHRoKCk7CiAgICAgICAgIAogICAgICAgICAvLyBTdGVwIDIpIHJlZHVjZSB0byB0aGUgZXhw
ZWN0IGRlcHRoCiAgICAgICAgIGludCBzY29wZURlbHRhID0gc2NvcGVEZXB0aCAtIGV4cGVjdGVk
RGVwdGg7CkBAIC00NDIsNyArNDQyLDEwIEBAIE5FVkVSX0lOTElORSBJbnN0cnVjdGlvbiogTWFj
aGluZTo6dGhyb3cKICAgICAgICAgLy8gU3RlcCAzKSBDcnkgOi0oCiAgICAgICAgIEFTU0VSVChz
Y29wZURlbHRhID49IDApOwogICAgICAgICB3aGlsZSAoc2NvcGVEZWx0YS0tKQotICAgICAgICAg
ICAgc2NvcGVDaGFpbi0+cG9wKCk7CisgICAgICAgICAgICBzYy5wb3AoKTsKKworICAgICAgICBz
Y29wZUNoYWluID0gc2Mubm9kZSgpOworICAgICAgICAKICAgICAgICAgcmV0dXJuIGhhbmRsZXJW
UEM7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtNDY0LDE4ICs0NjcsMTggQEAgSlNWYWx1ZSog
TWFjaGluZTo6ZXhlY3V0ZShQcm9ncmFtTm9kZSogcAogewogICAgIFJlZ2lzdGVyRmlsZSogcmVn
aXN0ZXJGaWxlID0gcmVnaXN0ZXJGaWxlU3RhY2stPnB1c2hSZWdpc3RlckZpbGUoKTsKIAotICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gJnByb2dyYW1Ob2RlLT5jb2RlKCpzY29wZUNoYWluKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZwcm9ncmFtTm9kZS0+Y29kZShzY29wZUNoYWlu
LT5ub2RlKCkpOwogICAgIHJlZ2lzdGVyRmlsZS0+YWRkR2xvYmFsU2xvdHMoY29kZUJsb2NrLT5u
dW1WYXJzKTsKICAgICByZWdpc3RlckZpbGUtPmdyb3coY29kZUJsb2NrLT5udW1UZW1wb3Jhcmll
cyk7CiAgICAgUmVnaXN0ZXIqIHIgPSAoKnJlZ2lzdGVyRmlsZS0+YmFzZVBvaW50ZXIoKSk7CiAK
LSAgICBKU1ZhbHVlKiByZXN1bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsIGV4ZWMsIHJlZ2lz
dGVyRmlsZSwgciwgc2NvcGVDaGFpbiwgY29kZUJsb2NrLCBleGNlcHRpb24pOworICAgIEpTVmFs
dWUqIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwgZXhlYywgcmVnaXN0ZXJGaWxlLCBy
LCBzY29wZUNoYWluLT5ub2RlKCksIGNvZGVCbG9jaywgZXhjZXB0aW9uKTsKIAogICAgIHJlZ2lz
dGVyRmlsZVN0YWNrLT5wb3BSZWdpc3RlckZpbGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1KU1ZhbHVlKiBNYWNoaW5lOjpleGVjdXRlKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9k
eU5vZGUsIGNvbnN0IExpc3QmIGFyZ3MsIEpTT2JqZWN0KiB0aGlzT2JqLCBFeGVjU3RhdGUqIGV4
ZWMsIFJlZ2lzdGVyRmlsZVN0YWNrKiByZWdpc3RlckZpbGVTdGFjaywgU2NvcGVDaGFpbiogc2Nv
cGVDaGFpbiwgSlNWYWx1ZSoqIGV4Y2VwdGlvbikKK0pTVmFsdWUqIE1hY2hpbmU6OmV4ZWN1dGUo
RnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5Tm9kZSwgY29uc3QgTGlzdCYgYXJncywgSlNP
YmplY3QqIHRoaXNPYmosIEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlU3RhY2sqIHJlZ2lz
dGVyRmlsZVN0YWNrLCBTY29wZUNoYWluKiBzYywgSlNWYWx1ZSoqIGV4Y2VwdGlvbikKIHsKICAg
ICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSA9IHJlZ2lzdGVyRmlsZVN0YWNrLT5jdXJyZW50
KCk7CiAKQEAgLTUwMCwxMyArNTAzLDE0IEBAIEpTVmFsdWUqIE1hY2hpbmU6OmV4ZWN1dGUoRnVu
Y3Rpb25Cb2R5Tm8KICAgICBmb3IgKExpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXJncy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqKytkc3QpLnUuanNWYWx1ZSA9ICppdDsK
IAotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmZ1bmN0aW9uQm9keU5vZGUtPmNvZGUo
KnNjb3BlQ2hhaW4pOworICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gc2MtPm5vZGUo
KTsKKyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZmdW5jdGlvbkJvZHlOb2RlLT5jb2Rl
KHNjb3BlQ2hhaW4pOwogICAgIFJlZ2lzdGVyKiByID0gc2xpZGVSZWdpc3RlcldpbmRvd0ZvckNh
bGwobmV3Q29kZUJsb2NrLCByZWdpc3RlckZpbGUsIHJlZ2lzdGVyQmFzZSwgcmVnaXN0ZXJPZmZz
ZXQsIGFyZ3YsIGFyZ2MpOwotICAgIHNjb3BlQ2hhaW4gPSBzY29wZUNoYWluRm9yQ2FsbChuZXdD
b2RlQmxvY2ssIHNjb3BlQ2hhaW4sIGZ1bmN0aW9uQm9keU5vZGUsIGNhbGxGcmFtZSwgcmVnaXN0
ZXJCYXNlLCByKTsgICAgICAgICAgICAKKyAgICBzY29wZUNoYWluID0gc2NvcGVDaGFpbkZvckNh
bGwobmV3Q29kZUJsb2NrLCBzYywgZnVuY3Rpb25Cb2R5Tm9kZSwgY2FsbEZyYW1lLCByZWdpc3Rl
ckJhc2UsIHIpOyAgICAgICAgICAgIAogICAgIHJldHVybiBwcml2YXRlRXhlY3V0ZShOb3JtYWws
IGV4ZWMsIHJlZ2lzdGVyRmlsZSwgciwgc2NvcGVDaGFpbiwgbmV3Q29kZUJsb2NrLCBleGNlcHRp
b24pOwogfQogCi1KU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFn
IGZsYWcsIEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIFJlZ2lz
dGVyKiByLCBTY29wZUNoYWluKiBzY29wZUNoYWluLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNW
YWx1ZSoqIGV4Y2VwdGlvbikKK0pTVmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1
dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmls
ZSwgUmVnaXN0ZXIqIHIsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNWYWx1ZSoqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBPbmUtdGltZSBpbml0aWFs
aXphdGlvbiBvZiBvdXIgYWRkcmVzcyB0YWJsZXMuIFdlIGhhdmUgdG8gcHV0IHRoaXMgY29kZQog
ICAgIC8vIGhlcmUgYmVjYXVzZSBvdXIgbGFiZWxzIGFyZSBvbmx5IGluIHNjb3BlIGluc2lkZSB0
aGlzIGZ1bmN0aW9uLgpAQCAtMTAxOCw3ICsxMDIyLDcgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJp
dmF0ZUV4ZWN1dGUoRXhlY3V0aQogICAgICAgICBpbnQgcjAgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7
CiAgICAgICAgIGludCBmMCA9ICgrK3ZQQyktPnUub3BlcmFuZDsKIAotICAgICAgICByW3IwXS51
LmpzVmFsdWUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uc1tmMF0tPm1ha2VGdW5jdGlvbihleGVjLCAq
c2NvcGVDaGFpbik7CisgICAgICAgIHJbcjBdLnUuanNWYWx1ZSA9IGNvZGVCbG9jay0+ZnVuY3Rp
b25zW2YwXS0+bWFrZUZ1bmN0aW9uKGV4ZWMsIHNjb3BlQ2hhaW4pOwogCiAgICAgICAgICsrdlBD
OwogICAgICAgICBORVhUX09QQ09ERTsKQEAgLTEwMjcsNyArMTAzMSw3IEBAIEpTVmFsdWUqIE1h
Y2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGkKICAgICAgICAgaW50IHIwID0gKCsrdlBDKS0+
dS5vcGVyYW5kOwogICAgICAgICBpbnQgZjAgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CiAKLSAgICAg
ICAgcltyMF0udS5qc1ZhbHVlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHJlc3Npb25zW2YwXS0+
bWFrZUZ1bmN0aW9uKGV4ZWMsICpzY29wZUNoYWluKTsKKyAgICAgICAgcltyMF0udS5qc1ZhbHVl
ID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHJlc3Npb25zW2YwXS0+bWFrZUZ1bmN0aW9uKGV4ZWMs
IHNjb3BlQ2hhaW4pOwogCiAgICAgICAgICsrdlBDOwogICAgICAgICBORVhUX09QQ09ERTsKQEAg
LTEwNTAsMTEgKzEwNTQsMTEgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhl
Y3V0aQogCiAgICAgICAgICAgICByW2FyZ3ZdLnUuanNWYWx1ZSA9IHIyID09IG1pc3NpbmdTeW1i
b2xNYXJrZXIoKSA/IGpzTnVsbCgpIDogcltyMl0udS5qc1ZhbHVlOyAvLyAidGhpcyIgdmFsdWUK
ICAgICAgICAgICAgIGluaXRpYWxpemVDYWxsRnJhbWUoY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHZQ
Qywgc2NvcGVDaGFpbiwgcmVnaXN0ZXJPZmZzZXQsIHIwLCBhcmd2LCAwKTsKLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBTY29wZUNoYWluKiBjYWxsRGF0YVNjb3BlQ2hhaW4gPSBjYWxsRGF0
YS5qcy5zY29wZUNoYWluOwogICAgICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25C
b2R5Tm9kZSA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uQm9keTsKIAotICAgICAgICAgICAgY29kZUJs
b2NrID0gJmZ1bmN0aW9uQm9keU5vZGUtPmNvZGUoKmNhbGxEYXRhU2NvcGVDaGFpbik7CisgICAg
ICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25Cb2R5Tm9kZS0+Y29kZShjYWxsRGF0YVNjb3Bl
Q2hhaW4tPm5vZGUoKSk7CiAgICAgICAgICAgICByID0gc2xpZGVSZWdpc3RlcldpbmRvd0ZvckNh
bGwoY29kZUJsb2NrLCByZWdpc3RlckZpbGUsIHJlZ2lzdGVyQmFzZSwgcmVnaXN0ZXJPZmZzZXQs
IGFyZ3YsIGFyZ2MpOwogICAgICAgICAgICAgc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW5Gb3JDYWxs
KGNvZGVCbG9jaywgY2FsbERhdGFTY29wZUNoYWluLCBmdW5jdGlvbkJvZHlOb2RlLCBjYWxsRnJh
bWUsIHJlZ2lzdGVyQmFzZSwgcik7ICAgICAgICAgICAgCiAgICAgICAgICAgICBrID0gY29kZUJs
b2NrLT5qc1ZhbHVlcy5kYXRhKCk7CkBAIC0xMDk5LDkgKzExMDMsOSBAQCBKU1ZhbHVlKiBNYWNo
aW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpCiAgICAgICAgIEpTVmFsdWUqIHJldHVyblZhbHVl
ID0gcltyMV0udS5qc1ZhbHVlOwogICAgICAgICAKICAgICAgICAgaWYgKG9sZENvZGVCbG9jay0+
bmVlZHNBY3RpdmF0aW9uKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc2NvcGVDaGFpbi0+dG9wKCkt
PmlzQWN0aXZhdGlvbk9iamVjdCgpKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTQWN0aXZh
dGlvbio+KHNjb3BlQ2hhaW4tPnRvcCgpKS0+Y29weVJlZ2lzdGVycygpOwotICAgICAgICAgICAg
c2NvcGVDaGFpbi0+flNjb3BlQ2hhaW4oKTsKKyAgICAgICAgICAgIEFTU0VSVChzY29wZUNoYWlu
LT5vYmplY3QtPmlzQWN0aXZhdGlvbk9iamVjdCgpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEpTQWN0aXZhdGlvbio+KHNjb3BlQ2hhaW4tPm9iamVjdCktPmNvcHlSZWdpc3RlcnMoKTsKKyAg
ICAgICAgICAgIHNjb3BlQ2hhaW4tPmRlcmVmKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
Y2FsbEZyYW1lW0NhbGxlZEFzQ29uc3RydWN0b3JdLnUuaSAmJiAhcmV0dXJuVmFsdWUtPmlzT2Jq
ZWN0KCkpIHsKQEAgLTExNTQsNyArMTE1OCw3IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZhdGVF
eGVjdXRlKEV4ZWN1dGkKICAgICAgICAgICAgIFNjb3BlQ2hhaW4qIGNhbGxEYXRhU2NvcGVDaGFp
biA9IGNvbnN0cnVjdERhdGEuanMuc2NvcGVDaGFpbjsKICAgICAgICAgICAgIEZ1bmN0aW9uQm9k
eU5vZGUqIGZ1bmN0aW9uQm9keU5vZGUgPSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uQm9keTsK
IAotICAgICAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uQm9keU5vZGUtPmNvZGUoKmNhbGxE
YXRhU2NvcGVDaGFpbik7CisgICAgICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25Cb2R5Tm9k
ZS0+Y29kZShjYWxsRGF0YVNjb3BlQ2hhaW4tPm5vZGUoKSk7CiAgICAgICAgICAgICByID0gc2xp
ZGVSZWdpc3RlcldpbmRvd0ZvckNhbGwoY29kZUJsb2NrLCByZWdpc3RlckZpbGUsIHJlZ2lzdGVy
QmFzZSwgcmVnaXN0ZXJPZmZzZXQsIGFyZ3YsIGFyZ2MpOwogICAgICAgICAgICAgc2NvcGVDaGFp
biA9IHNjb3BlQ2hhaW5Gb3JDYWxsKGNvZGVCbG9jaywgY2FsbERhdGFTY29wZUNoYWluLCBmdW5j
dGlvbkJvZHlOb2RlLCBjYWxsRnJhbWUsIHJlZ2lzdGVyQmFzZSwgcik7ICAgICAgICAgICAgCiAg
ICAgICAgICAgICBrID0gY29kZUJsb2NrLT5qc1ZhbHVlcy5kYXRhKCk7CkBAIC0xMTkxLDEyICsx
MTk1LDE4IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGkKICAgICAg
ICAgSlNPYmplY3QqIG8gPSB2LT50b09iamVjdChleGVjKTsKICAgICAgICAgVk1fQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAgICAgICAgIAotICAgICAgICBzY29wZUNoYWluLT5wdXNoKG8pOworICAgICAg
ICBTY29wZUNoYWluIHNjKHNjb3BlQ2hhaW4pOworICAgICAgICBzYy5wdXNoKG8pOworICAgICAg
ICBzY29wZUNoYWluID0gc2Mubm9kZSgpOworCiAgICAgICAgICsrdlBDOwogICAgICAgICBORVhU
X09QQ09ERTsKICAgICB9CiAgICAgQkVHSU5fT1BDT0RFKG9wX3BvcF9zY29wZSkgewotICAgICAg
ICBzY29wZUNoYWluLT5wb3AoKTsKKyAgICAgICAgU2NvcGVDaGFpbiBzYyhzY29wZUNoYWluKTsK
KyAgICAgICAgc2MucG9wKCk7CisgICAgICAgIHNjb3BlQ2hhaW4gPSBzYy5ub2RlKCk7CisKICAg
ICAgICAgKyt2UEM7CiAgICAgICAgIE5FWFRfT1BDT0RFOwogICAgIH0KQEAgLTEyMjYsOCArMTIz
NiwxMyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpCiAgICAgQkVH
SU5fT1BDT0RFKG9wX2ptcF9zY29wZXMpIHsKICAgICAgICAgaW50IHNjb3BlRGVsdGEgPSAoKyt2
UEMpLT51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBvZmZzZXQgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzY29wZURlbHRhKTsKKyNpZiAwCisgICAgICAgIFNjb3Bl
Q2hhaW4gc2Moc2NvcGVDaGFpbik7CiAgICAgICAgIHdoaWxlIChzY29wZURlbHRhLS0pCi0gICAg
ICAgICAgICBzY29wZUNoYWluLT5wb3AoKTsKKyAgICAgICAgICAgIHNjLnBvcCgpOworICAgICAg
ICBzY29wZUNoYWluID0gc2Mubm9kZSgpOworI2VuZGlmCiAgICAgICAgIHZQQyArPSBvZmZzZXQ7
CiAgICAgICAgIE5FWFRfT1BDT0RFOwogICAgIH0KSW5kZXg6IFZNL01hY2hpbmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBWTS9NYWNoaW5lLmgJKHJldmlzaW9uIDMxODk2KQorKysgVk0vTWFjaGluZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxMCArODIsMTAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJu
IH0gRXhlY3V0aW9uRmxhZzsKIAotICAgICAgICBORVZFUl9JTkxJTkUgSW5zdHJ1Y3Rpb24qIHVu
d2luZENhbGxGcmFtZShDb2RlQmxvY2sqJiwgSlNWYWx1ZSoqJiwgU2NvcGVDaGFpbiomLCBSZWdp
c3RlcioqLCBSZWdpc3RlciomKTsKLSAgICAgICAgTkVWRVJfSU5MSU5FIEluc3RydWN0aW9uKiB0
aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKiwgQ29kZUJsb2NrKiYsIEpTVmFsdWUq
KiYsIFNjb3BlQ2hhaW4qJiwgUmVnaXN0ZXIqKiwgUmVnaXN0ZXIqJiwgY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIEluc3RydWN0aW9uKiB1bndpbmRDYWxsRnJhbWUo
Q29kZUJsb2NrKiYsIEpTVmFsdWUqKiYsIFNjb3BlQ2hhaW5Ob2RlKiYsIFJlZ2lzdGVyKiosIFJl
Z2lzdGVyKiYpOworICAgICAgICBORVZFUl9JTkxJTkUgSW5zdHJ1Y3Rpb24qIHRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUqLCBDb2RlQmxvY2sqJiwgSlNWYWx1ZSoqJiwgU2NvcGVD
aGFpbk5vZGUqJiwgUmVnaXN0ZXIqKiwgUmVnaXN0ZXIqJiwgY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
IAotICAgICAgICBKU1ZhbHVlKiBwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnLCBFeGVjU3Rh
dGUqID0gMCwgUmVnaXN0ZXJGaWxlKiA9IDAsIFJlZ2lzdGVyKiA9IDAsIFNjb3BlQ2hhaW4qID0g
MCwgQ29kZUJsb2NrKiA9IDAsIEpTVmFsdWUqKiBleGNlcHRpb24gPSAwKTsKKyAgICAgICAgSlNW
YWx1ZSogcHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZywgRXhlY1N0YXRlKiA9IDAsIFJlZ2lz
dGVyRmlsZSogPSAwLCBSZWdpc3RlciogPSAwLCBTY29wZUNoYWluTm9kZSogPSAwLCBDb2RlQmxv
Y2sqID0gMCwgSlNWYWx1ZSoqIGV4Y2VwdGlvbiA9IDApOwogCiAgICAgICAgIHZvaWQgZHVtcENh
bGxGcmFtZShjb25zdCBDb2RlQmxvY2sqLCBjb25zdCBTY29wZUNoYWluKiwgUmVnaXN0ZXJGaWxl
KiwgY29uc3QgUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wUmVnaXN0ZXJzKGNvbnN0IENv
ZGVCbG9jayosIFJlZ2lzdGVyRmlsZSosIGNvbnN0IFJlZ2lzdGVyKik7CkluZGV4OiBWTS9SZWdp
c3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFZNL1JlZ2lzdGVyLmgJKHJldmlzaW9uIDMxODk2KQorKysg
Vk0vUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOwogICAgIGNsYXNzIEpTVmFsdWU7Ci0gICAgY2xhc3MgU2NvcGVDaGFpbjsKKyAgICBjbGFz
cyBTY29wZUNoYWluTm9kZTsKICAgICAKICAgICBzdHJ1Y3QgUmVnaXN0ZXIgewogICAgICAgICB1
bmlvbiB7CkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICAgICAgSW5z
dHJ1Y3Rpb24qIHZQQzsKICAgICAgICAgICAgIEpTVmFsdWUqIGpzVmFsdWU7CiAgICAgICAgICAg
ICBKU09iamVjdCoganNPYmplY3Q7Ci0gICAgICAgICAgICBTY29wZUNoYWluKiBzY29wZUNoYWlu
OworICAgICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW47CiAgICAgICAgICAgICBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwogICAgICAgICAg
ICAgUmVnaXN0ZXIqIHI7CiAgICAgICAgICAgICBpbnQgaTsKSW5kZXg6IGtqcy9ub2Rlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2pzL25vZGVzLmNwcAkocmV2aXNpb24gMzE4OTYpCisrKyBranMvbm9k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTk0LDggKzU1OTQsOSBAQCBFdmFsTm9kZTo6fkV2
YWxOb2RlKCkKIHsKIH0KIAotdm9pZCBFdmFsTm9kZTo6Z2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW4m
IHNjb3BlQ2hhaW4pCit2b2lkIEV2YWxOb2RlOjpnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbk5vZGUq
IHNjKQogeworICAgIFNjb3BlQ2hhaW4gc2NvcGVDaGFpbihzYyk7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4oc2NvcGVDaGFp
bi5ib3R0b20oKSk7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7
CiAgICAgCkBAIC01NjMzLDEwICs1NjM0LDExIEBAIEZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9u
Qm9keU5vZGU6OmNyZWEKICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoY2hpbGRyZW4s
IHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUpOwogfQogCi12b2lk
IEZ1bmN0aW9uQm9keU5vZGU6OmdlbmVyYXRlQ29kZShTY29wZUNoYWluJiBzY29wZUNoYWluKQor
dm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqIHNjKQog
ewogICAgIG1fY29kZS5zZXQobmV3IENvZGVCbG9jayh1c2VzRXZhbCgpLCBuZWVkc0Nsb3N1cmUo
KSkpOwogCisgICAgU2NvcGVDaGFpbiBzY29wZUNoYWluKHNjKTsKICAgICBDb2RlR2VuZXJhdG9y
IGdlbmVyYXRvcih0aGlzLCBzY29wZUNoYWluLCAmbV9zeW1ib2xUYWJsZSwgbV9jb2RlLmdldCgp
LCBtX3ZhclN0YWNrLCBtX2Z1bmN0aW9uU3RhY2ssIG1fcGFyYW1ldGVycyk7CiAgICAgZ2VuZXJh
dG9yLmdlbmVyYXRlKCk7CiAKQEAgLTU2NjIsOCArNTY2NCw5IEBAIFJlZ2lzdGVySUQqIFByb2dy
YW1Ob2RlOjplbWl0Q29kZShDb2RlR2UKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBQcm9ncmFt
Tm9kZTo6Z2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW4mIHNjb3BlQ2hhaW4pCit2b2lkIFByb2dyYW1O
b2RlOjpnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqIHNjKQogeworICAgIFNjb3BlQ2hhaW4g
c2NvcGVDaGFpbihzYyk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4oc2NvcGVDaGFpbi5ib3R0b20oKSk7CiAgICAgQVNTRVJU
KGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CiAgICAgCkBAIC01NzcyLDcgKzU3NzUs
NyBAQCB2b2lkIFByb2dyYW1Ob2RlOjpwcm9jZXNzRGVjbGFyYXRpb25zKEV4CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMCwgc2l6ZSA9IG1fZnVuY3Rpb25TdGFjay5zaXplKCk7IGkgPCBzaXplOyAr
K2kpIHsKICAgICAgICAgRnVuY0RlY2xOb2RlKiBub2RlID0gbV9mdW5jdGlvblN0YWNrW2ldOwot
ICAgICAgICBMb2NhbFN0b3JhZ2VFbnRyeSBlbnRyeSA9IExvY2FsU3RvcmFnZUVudHJ5KG5vZGUt
Pm1ha2VGdW5jdGlvbihleGVjLCBleGVjLT5zY29wZUNoYWluKCkpLCBtaW5BdHRyaWJ1dGVzKTsK
KyAgICAgICAgTG9jYWxTdG9yYWdlRW50cnkgZW50cnkgPSBMb2NhbFN0b3JhZ2VFbnRyeShub2Rl
LT5tYWtlRnVuY3Rpb24oZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpLm5vZGUoKSksIG1pbkF0dHJp
YnV0ZXMpOwogICAgICAgICBzaXplX3QgaW5kZXggPSBtX2Z1bmN0aW9uSW5kZXhlc1tpXTsKIAog
ICAgICAgICBpZiAoaW5kZXggPT0gbG9jYWxTdG9yYWdlLnNpemUoKSkKQEAgLTU4MjIsNyArNTgy
NSw3IEBAIHZvaWQgRXZhbE5vZGU6OnByb2Nlc3NEZWNsYXJhdGlvbnMoRXhlY1MKIAogICAgIGZv
ciAoaSA9IDAsIHNpemUgPSBtX2Z1bmN0aW9uU3RhY2suc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7
CiAgICAgICAgIEZ1bmNEZWNsTm9kZSogZnVuY0RlY2wgPSBtX2Z1bmN0aW9uU3RhY2tbaV07Ci0g
ICAgICAgIHZhcmlhYmxlT2JqZWN0LT5pbml0aWFsaXplVmFyaWFibGUoZXhlYywgZnVuY0RlY2wt
Pm1faWRlbnQsIGZ1bmNEZWNsLT5tYWtlRnVuY3Rpb24oZXhlYywgZXhlYy0+c2NvcGVDaGFpbigp
KSwgMCk7CisgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5pbml0aWFsaXplVmFyaWFibGUoZXhlYywg
ZnVuY0RlY2wtPm1faWRlbnQsIGZ1bmNEZWNsLT5tYWtlRnVuY3Rpb24oZXhlYywgZXhlYy0+c2Nv
cGVDaGFpbigpLm5vZGUoKSksIDApOwogICAgIH0KIH0KIApAQCAtNTg4NSw5ICs1ODg4LDkgQEAg
dm9pZCBGdW5jRGVjbE5vZGU6OmFkZFBhcmFtcygpCiAgICAgICAgIG1fYm9keS0+cGFyYW1ldGVy
cygpLmFwcGVuZChwLT5pZGVudCgpKTsKIH0KIAotRnVuY3Rpb25JbXAqIEZ1bmNEZWNsTm9kZTo6
bWFrZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbikKK0Z1
bmN0aW9uSW1wKiBGdW5jRGVjbE5vZGU6Om1ha2VGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQogewotICAgIEZ1bmN0aW9uSW1wKiBmdW5jID0gbmV3
IEZ1bmN0aW9uSW1wKGV4ZWMsIG1faWRlbnQsIG1fYm9keS5nZXQoKSwgc2NvcGVDaGFpbik7Cisg
ICAgRnVuY3Rpb25JbXAqIGZ1bmMgPSBuZXcgRnVuY3Rpb25JbXAoZXhlYywgbV9pZGVudCwgbV9i
b2R5LmdldCgpLCBTY29wZUNoYWluKHNjb3BlQ2hhaW4pKTsKIAogICAgIEpTT2JqZWN0KiBwcm90
byA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0Q29uc3RydWN0b3IoKS0+Y29u
c3RydWN0KGV4ZWMsIGV4ZWMtPmVtcHR5TGlzdCgpKTsKICAgICBwcm90by0+cHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZnVuYywgRG9udEVudW0pOwpAQCAtNTkx
Myw3ICs1OTE2LDcgQEAgUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0Q29kZShDb2RlRwog
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihkc3QgPyBkc3Qg
OiBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHRoaXMpOwogfQogCi1GdW5jdGlvbkltcCogRnVu
Y0V4cHJOb2RlOjptYWtlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluJiBzY29w
ZUNoYWluKQorRnVuY3Rpb25JbXAqIEZ1bmNFeHByTm9kZTo6bWFrZUZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCiB7CiAgICAgYm9vbCBuYW1lZCA9
ICFtX2lkZW50LmlzTnVsbCgpOwogICAgIEpTT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0g
MDsKQEAgLTU5MjYsNyArNTkyOSw3IEBAIEZ1bmN0aW9uSW1wKiBGdW5jRXhwck5vZGU6Om1ha2VG
dW5jdGlvbigKICAgICAgICAgZXhlYy0+cHVzaFNjb3BlKGZ1bmN0aW9uU2NvcGVPYmplY3QpOwog
ICAgIH0KIAotICAgIEZ1bmN0aW9uSW1wKiBmdW5jID0gbmV3IEZ1bmN0aW9uSW1wKGV4ZWMsIG1f
aWRlbnQsIG1fYm9keS5nZXQoKSwgc2NvcGVDaGFpbik7CisgICAgRnVuY3Rpb25JbXAqIGZ1bmMg
PSBuZXcgRnVuY3Rpb25JbXAoZXhlYywgbV9pZGVudCwgbV9ib2R5LmdldCgpLCBTY29wZUNoYWlu
KHNjb3BlQ2hhaW4pKTsKICAgICBKU09iamVjdCogcHJvdG8gPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPm9iamVjdENvbnN0cnVjdG9yKCktPmNvbnN0cnVjdChleGVjLCBleGVjLT5lbXB0
eUxpc3QoKSk7CiAgICAgcHJvdG8tPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIGZ1bmMsIERvbnRFbnVtKTsKICAgICBmdW5jLT5wdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG8sIERvbnREZWxldGUpOwpJbmRleDoga2pzL25v
ZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2pzL25vZGVzLmgJKHJldmlzaW9uIDMxODk2KQorKysga2pz
L25vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5NDksNyArMjk0OSw3IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCBKU1ZhbHVlKiBleGVjdXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAKLSAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgY29kZShTY29w
ZUNoYWluJiBzY29wZUNoYWluKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFByb2dyYW1Db2RlQmxv
Y2smIGNvZGUoU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIEtKU19GQVNUX0NBTEwKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2NvZGUpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVD
b2RlKHNjb3BlQ2hhaW4pOwpAQCAtMjk1OSw3ICsyOTU5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgUHJvZ3JhbU5vZGUoU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSkgS0pT
X0ZBU1RfQ0FMTDsKIAotICAgICAgICB2b2lkIGdlbmVyYXRlQ29kZShTY29wZUNoYWluJikgS0pT
X0ZBU1RfQ0FMTDsKKyAgICAgICAgdm9pZCBnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqKSBL
SlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CiAKICAgICAgICAgdm9p
ZCBpbml0aWFsaXplU3ltYm9sVGFibGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKQEAgLTI5
NzgsNyArMjk3OCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICAKICAgICAgICAgdmlydHVh
bCBKU1ZhbHVlKiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAKLSAgICAgICAg
UHJvZ3JhbUNvZGVCbG9jayYgY29kZShTY29wZUNoYWluJiBzY29wZUNoYWluKSBLSlNfRkFTVF9D
QUxMCisgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGNvZGUoU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW4pIEtKU19GQVNUX0NBTEwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NvZGUp
CiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb2RlKHNjb3BlQ2hhaW4pOwpAQCAtMjk4OSw3ICsy
OTg5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIEV2YWxOb2RlKFNvdXJjZUVsZW1lbnRz
KiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Ns
b3N1cmUpIEtKU19GQVNUX0NBTEw7CiAKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHByb2Nl
c3NEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdm9pZCBn
ZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbiYpIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZvaWQgZ2Vu
ZXJhdGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKikgS0pTX0ZBU1RfQ0FMTDsKIAogICAgICAgICBPd25Q
dHI8UHJvZ3JhbUNvZGVCbG9jaz4gbV9jb2RlOwogICAgIH07CkBAIC0zMDA2LDcgKzMwMDYsNyBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgCiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSgpIHsgcmV0dXJuIG1fc3ltYm9sVGFibGU7IH0gLy8gRklYTUU6IFJlbW92ZSB0aGlzCiAg
ICAgICAgIAotICAgICAgICBDb2RlQmxvY2smIGNvZGUoU2NvcGVDaGFpbiYgc2NvcGVDaGFpbikg
S0pTX0ZBU1RfQ0FMTAorICAgICAgICBDb2RlQmxvY2smIGNvZGUoU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pIEtKU19GQVNUX0NBTEwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Nv
ZGUpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDb2RlKHNjb3BlQ2hhaW4pOwpAQCAtMzAxOSw3
ICszMDE5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFsLCBi
b29sIG5lZWRzQ2xvc3VyZSkgS0pTX0ZBU1RfQ0FMTDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgZ2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW4mKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2
b2lkIGdlbmVyYXRlQ29kZShTY29wZUNoYWluTm9kZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICAg
IAogICAgICAgICBWZWN0b3I8SWRlbnRpZmllcj4gbV9wYXJhbWV0ZXJzOwogICAgICAgICBTeW1i
b2xUYWJsZSBtX3N5bWJvbFRhYmxlOwpAQCAtMzAzNyw3ICszMDM3LDcgQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIEZ1
bmN0aW9uSW1wKiBtYWtlRnVuY3Rpb24oRXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYpIEtKU19GQVNU
X0NBTEw7CisgICAgICAgIEZ1bmN0aW9uSW1wKiBtYWtlRnVuY3Rpb24oRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0
dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNNZW1iZXI7IH0K
QEAgLTMwNzYsNyArMzA3Niw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgICAgIHZpcnR1YWwg
SlNWYWx1ZSogZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAg
ICAgICAgRnVuY3Rpb25JbXAqIG1ha2VGdW5jdGlvbihFeGVjU3RhdGUqLCBTY29wZUNoYWluJikg
S0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgRnVuY3Rpb25JbXAqIG1ha2VGdW5jdGlvbihFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopIEtKU19GQVNUX0NBTEw7CiAKICAgICAgICAgSWRlbnRpZmll
ciBtX2lkZW50OwogCkluZGV4OiBranMvb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL29iamVj
dC5oCShyZXZpc2lvbiAzMTg5NikKKysrIGtqcy9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQ2LDE5ICs1NDYsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgdm9pZCBTY29wZUNoYWluOjpyZWxlYXNl
KCkKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IGRlcmVmKCksCi0g
ICAgLy8gRGVyZWYgZW5zdXJlcyB0aGVzZSBjb25kaXRpb25zIGFyZSB0cnVlLgotICAgIEFTU0VS
VChfbm9kZSAmJiBfbm9kZS0+cmVmQ291bnQgPT0gMCk7Ci0gICAgU2NvcGVDaGFpbk5vZGUgKm4g
PSBfbm9kZTsKLSAgICBkbyB7Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2RlICpuZXh0ID0gbi0+bmV4
dDsKLSAgICAgICAgZGVsZXRlIG47Ci0gICAgICAgIG4gPSBuZXh0OwotICAgIH0gd2hpbGUgKG4g
JiYgLS1uLT5yZWZDb3VudCA9PSAwKTsKLX0KLQogaW5saW5lIEpTVmFsdWUqIEpTT2JqZWN0Ojp0
b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAog
ewogICAgIHJldHVybiBkZWZhdWx0VmFsdWUoZXhlYywgcHJlZmVycmVkVHlwZSk7CkluZGV4OiBr
anMvc2NvcGVfY2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvc2NvcGVfY2hhaW4uaAkocmV2aXNp
b24gMzE4OTYpCisrKyBranMvc2NvcGVfY2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjMg
KzI4LDMyIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xh
c3MgRXhlY1N0YXRlOworICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICAKICAgICBj
bGFzcyBTY29wZUNoYWluTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTY29wZUNoYWluTm9k
ZShTY29wZUNoYWluTm9kZSAqbiwgSlNPYmplY3QgKm8pCisgICAgICAgIFNjb3BlQ2hhaW5Ob2Rl
KFNjb3BlQ2hhaW5Ob2RlKiBuLCBKU09iamVjdCogbykKICAgICAgICAgICAgIDogbmV4dChuKSwg
b2JqZWN0KG8pLCByZWZDb3VudCgxKSB7IH0KIAotICAgICAgICBTY29wZUNoYWluTm9kZSAqbmV4
dDsKLSAgICAgICAgSlNPYmplY3QgKm9iamVjdDsKKyAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5l
eHQ7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3Q7CiAgICAgICAgIGludCByZWZDb3VudDsKKwor
ICAgICAgICB2b2lkIGRlcmVmKCkgeyBpZiAoLS1yZWZDb3VudCA9PSAwKSByZWxlYXNlKCk7IH0K
KyAgICAgICAgdm9pZCByZWYoKTsKKworICAgICAgICB2b2lkIHJlbGVhc2UoKTsKKworICAgICAg
ICBTY29wZUNoYWluSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgICAgICAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGVuZCgpIGNvbnN0OwogICAgIH07CiAKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0
b3IgewogICAgIHB1YmxpYzoKLSAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yKFNjb3BlQ2hhaW5O
b2RlICpub2RlKSA6IG1fbm9kZShub2RlKSB7fQorICAgICAgICBTY29wZUNoYWluSXRlcmF0b3Io
Y29uc3QgU2NvcGVDaGFpbk5vZGUqIG5vZGUpIDogbV9ub2RlKG5vZGUpIHt9CiAKLSAgICAgICAg
SlNPYmplY3QgKiBjb25zdCAmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+b2Jq
ZWN0OyB9Ci0gICAgICAgIEpTT2JqZWN0ICogY29uc3QgKiBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gJihvcGVyYXRvciooKSk7IH0KKyAgICAgICAgSlNPYmplY3QqIGNvbnN0ICYgb3BlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5vYmplY3Q7IH0KKyAgICAgICAgSlNPYmplY3Qq
IGNvbnN0ICogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CiAg
ICAgCiAgICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgbV9ub2RlID0g
bV9ub2RlLT5uZXh0OyByZXR1cm4gKnRoaXM7IH0KIApAQCAtNTQsNyArNjMsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjb3BlQ2hhaW5JdGVyYXRv
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZSAhPSBvdGhlci5tX25vZGU7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2RlICptX25vZGU7CisgICAgICAgIGNvbnN0
IFNjb3BlQ2hhaW5Ob2RlKiBtX25vZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIFNjb3BlQ2hhaW4g
ewpAQCAtNzcsNiArODYsMTIgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHsKICAgICAgICAg
fQogCisgICAgICAgIGV4cGxpY2l0IFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIG5vZGUpCisg
ICAgICAgICAgICA6IF9ub2RlKG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlZigpOwor
ICAgICAgICB9CisgICAgCiAgICAgICAgIFNjb3BlQ2hhaW4gJm9wZXJhdG9yPShjb25zdCBTY29w
ZUNoYWluICYpOwogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFfbm9k
ZTsgfQpAQCAtMTAzLDE4ICsxMTgsMTcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHZvaWQg
cHJpbnQoKTsKICNlbmRpZgogICAgICAgICAKKyAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5vZGUo
KSB7IHJldHVybiBfbm9kZTsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2Rl
ICpfbm9kZTsKKyAgICAgICAgU2NvcGVDaGFpbk5vZGUqIF9ub2RlOwogICAgICAgICAKLSAgICAg
ICAgdm9pZCBkZXJlZigpIHsgaWYgKF9ub2RlICYmIC0tX25vZGUtPnJlZkNvdW50ID09IDApIHJl
bGVhc2UoKTsgfQotICAgICAgICB2b2lkIHJlZigpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAg
dm9pZCByZWxlYXNlKCk7CisgICAgICAgIHZvaWQgZGVyZWYoKSB7IGlmIChfbm9kZSkgX25vZGUt
PmRlcmVmKCk7IH0KKyAgICAgICAgdm9pZCByZWYoKSBjb25zdCB7IGlmIChfbm9kZSkgX25vZGUt
PnJlZigpOyB9CiAgICAgfTsKIAotaW5saW5lIHZvaWQgU2NvcGVDaGFpbjo6cmVmKCkgY29uc3QK
K2lubGluZSB2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpyZWYoKQogewotICAgIGZvciAoU2NvcGVDaGFp
bk5vZGUgKm4gPSBfbm9kZTsgbjsgbiA9IG4tPm5leHQpIHsKKyAgICBmb3IgKFNjb3BlQ2hhaW5O
b2RlKiBuID0gdGhpczsgbjsgbiA9IG4tPm5leHQpIHsKICAgICAgICAgaWYgKG4tPnJlZkNvdW50
KysgIT0gMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE3OSw2ICsxOTMsMjkgQEAg
aW5saW5lIHZvaWQgU2NvcGVDaGFpbjo6cG9wSW5saW5lU2NvcGVObwogICAgIF9ub2RlID0gX25v
ZGUtPm5leHQ7CiB9CiAKK2lubGluZSB2b2lkIFNjb3BlQ2hhaW5Ob2RlOjpyZWxlYXNlKCkKK3sK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IGRlcmVmKCksCisgICAgLy8g
RGVyZWYgZW5zdXJlcyB0aGVzZSBjb25kaXRpb25zIGFyZSB0cnVlLgorICAgIEFTU0VSVChyZWZD
b3VudCA9PSAwKTsKKyAgICBTY29wZUNoYWluTm9kZSogbiA9IHRoaXM7CisgICAgZG8geworICAg
ICAgICBTY29wZUNoYWluTm9kZSogbmV4dCA9IG4tPm5leHQ7CisgICAgICAgIGRlbGV0ZSBuOwor
ICAgICAgICBuID0gbmV4dDsKKyAgICB9IHdoaWxlIChuICYmIC0tbi0+cmVmQ291bnQgPT0gMCk7
Cit9CisKK2lubGluZSBTY29wZUNoYWluSXRlcmF0b3IgU2NvcGVDaGFpbk5vZGU6OmJlZ2luKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gU2NvcGVDaGFpbkl0ZXJhdG9yKHRoaXMpOyAKK30KKworaW5s
aW5lIFNjb3BlQ2hhaW5JdGVyYXRvciBTY29wZUNoYWluTm9kZTo6ZW5kKCkgY29uc3QKK3sgCisg
ICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVyYXRvcigwKTsgCit9CisKIH0gLy8gbmFtZXNwYWNlIEtK
UwogCiAjZW5kaWYgLy8gS0pTX1NDT1BFX0NIQUlOX0gK
</data>
<flag name="review"
          id="8961"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>