<?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>68764</bug_id>
          
          <creation_ts>2011-09-24 13:42:18 -0700</creation_ts>
          <short_desc>Allocate new objects unmarked</short_desc>
          <delta_ts>2011-09-28 03:30:39 -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>New Bugs</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>68788</dependson>
    
    <dependson>68990</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>472797</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-24 13:42:18 -0700</bug_when>
    <thetext>Allocate new objects unmarked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472815</commentid>
    <comment_count>1</comment_count>
      <attachid>108589</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-24 14:40:17 -0700</bug_when>
    <thetext>Created attachment 108589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472819</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-24 15:14:37 -0700</bug_when>
    <thetext>Committed r95912: &lt;http://trac.webkit.org/changeset/95912&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108589</attachid>
            <date>2011-09-24 14:40:17 -0700</date>
            <delta_ts>2011-09-24 15:01:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68764-20110924144015.patch</filename>
            <type>text/plain</type>
            <size>44750</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQ4IEBA
CisyMDExLTA5LTI0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWxsb2NhdGUgbmV3IG9iamVjdHMgdW5tYXJrZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NzY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgcHJlLXJlcXVpc2l0ZSB0
byB1c2luZyB0aGUgbWFyayBiaXQgdG8gZGV0ZXJtaW5lIG9iamVjdCBhZ2UuCisKKyAgICAgICAg
fjIlIHY4IHNwZWVkdXAsIG1vc3RseSBkdWUgdG8gYSAxMiUgdjgtc3BsYXkgc3BlZWR1cC4KKwor
ICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjppc0xpdmVDZWxsKTogVGhlc2Ug
dHdvIGZ1bmN0aW9ucyBhcmUgdGhlIHJlYXNvbiBmb3IKKyAgICAgICAgdGhpcyBwYXRjaC4gVGhl
eSBjYW4gbm93IGRldGVybWluZSBvYmplY3QgbGl2ZW5lc3Mgd2l0aG91dCByZWx5aW5nIG9uCisg
ICAgICAgIG5ld2x5IGFsbG9jYXRlZCBvYmplY3RzIGhhdmluZyB0aGVpciBtYXJrIGJpdHMgc2V0
LiBFYWNoIE1hcmtlZEJsb2NrCisgICAgICAgIG5vdyBoYXMgYSBzdGF0ZSB2YXJpYWJsZSB0aGF0
IHRlbGxzIHVzIGhvdyB0byBkZXRlcm1pbmUgd2hldGhlciBpdHMKKyAgICAgICAgY2VsbHMgYXJl
IGxpdmUuIChUaGlzIG5ldyBzdGF0ZSB2YXJpYWJsZSBzdXBlcmNlZGVzIHRoZSBvbGQgb25lIGFi
b3V0CisgICAgICAgIGRlc3RydWN0b3Igc3RhdGUuIFRoZSByZXN0IG9mIHRoaXMgcGF0Y2ggaXMg
anVzdCByZWZhY3RvcmluZyB0byBzdXBwb3J0CisgICAgICAgIHRoZSBpbnZhcmlhbnRzIG9mIHRo
aXMgbmV3IHN0YXRlIHZhcmlhYmxlIHdpdGhvdXQgaW50cm9kdWNpbmcgYQorICAgICAgICBwZXJm
b3JtYW5jZSByZWdyZXNzaW9uLikKKworICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6ZGlkQ29u
c3VtZUZyZWVMaXN0KTogTmV3IGZ1bmN0aW9uIGZvciB1cGRhdGluZyBpbnRlcmFsCisgICAgICAg
IHN0YXRlIHdoZW4gYSBibG9jayBiZWNvbWVzIGZ1bGx5IGFsbG9jYXRlZC4KKworICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcyk6IEZvbGRlZCBhIHN0YXRlIGNoYW5nZSB0byAn
TWFya2VkJyBpbnRvCisgICAgICAgIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSwgbG9naWNhbGx5LCBj
bGVhcmluZyBhbGwgbWFyayBiaXRzIGlzIHRoZSBmaXJzdAorICAgICAgICBzdGVwIGluIHNheWlu
ZyAibWFyayBiaXRzIG5vdyBleGFjdGx5IHJlZmxlY3Qgb2JqZWN0IGxpdmVuZXNzIi4KKworICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bWFya0NvdW50SXNaZXJvKTogUmVuYW1lZCBmcm9tIGlz
RW1wdHkoKSB0byBjbGFyaWZ5CisgICAgICAgIHRoYXQgdGhpcyBmdW5jdGlvbiBvbmx5IHRlbGxz
IHlvdSBhYm91dCB0aGUgbWFyayBiaXRzLCBzbyBpdCdzIG9ubHkKKyAgICAgICAgbWVhbmluZ2Z1
bCBpZiB5b3UndmUgcHV0IHRoZSBtYXJrIGJpdHMgaW50byBhIG1lYW5pbmdmdWwgc3RhdGUgYmVm
b3JlCisgICAgICAgIGNhbGxpbmcgaXQuCisKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmZv
ckVhY2hDZWxsKTogQ2hhbmdlZCB0byB1c2UgaXNMaXZlKCkgaGVscGVyIGZ1bmN0aW9uCisgICAg
ICAgIGluc3RlYWQgb2YgdGVzdGluZyBtYXJrIGJpdHMsIHNpbmNlIG1hcmsgYml0cyBhcmUgbm90
IGFsd2F5cyB0aGUgcmlnaHQKKyAgICAgICAgd2F5IHRvIGZpbmQgb3V0IGlmIGFuIG9iamVjdCBp
cyBsaXZlIGFueW1vcmUuIChOZXcgb2JqZWN0cyBhcmUgbGl2ZSwgYnV0CisgICAgICAgIG5vdCBt
YXJrZWQuKQorCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpyZWN5Y2xlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Ok1hcmtl
ZEJsb2NrKTogRm9sZGVkIGFsbCBpbml0aWFsaXphdGlvbiAtLSBldmVuCisgICAgICAgIGluaXRp
YWxpemF0aW9uIHdoZW4gcmVjeWNsaW5nIGFuIG9sZCBibG9jayAtLSBpbnRvIHRoZSBNYXJrZWRC
bG9jaworICAgICAgICBjb25zdHJ1Y3RvciwgZm9yIHNpbXBsaWNpdHkuCisKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmNhbGxEZXN0cnVjdG9yKTogSW5saW5lZCBmb3Igc3BlZWQuIEFsd2F5
cyBjaGVjayBmb3IKKyAgICAgICAgYSB6YXBwZWQgY2VsbCBiZWZvcmUgcnVubmluZyBhIGRlc3Ry
dWN0b3IsIGFuZCBhbHdheXMgemFwIGFmdGVyCisgICAgICAgIHJ1bm5pbmcgYSBkZXN0cnVjdG9y
LiBUaGlzIGRvZXMgbm90IHNlZW0gdG8gYmUgZXhwZW5zaXZlLCBhbmQgdGhlCisgICAgICAgIGFs
dGVybmF0aXZlIGp1c3QgY3JlYXRlcyBhIHRvby1jb25mdXNpbmcgbWF0cml4IG9mIHBvc3NpYmxl
IGNlbGwgc3RhdGVzCisgICAgICAgICgoem9tYmllIHVuZGVzdHJ1Y3RlZCBjZWxsICsgem9tYmll
IGRlc3RydWN0ZWQgY2VsbCArIHphcHBlZCBkZXN0cnVjdGVkCisgICAgICAgIGNlbGwpICogNSEg
cGVybXV0YXRpb25zIGZvciBwcm9ncmVzc2luZyB0aHJvdWdoIGJsb2NrIHN0YXRlcyA9ICJPaCBt
eSEiKS4KKworICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRTd2VlcCk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzd2VlcCk6IE1haW50YWluZWQgYW5kIGV4cGFuZGVk
IGEgcHJlLWV4aXN0aW5nCisgICAgICAgIG9wdGltaXphdGlvbiB0byB1c2UgdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb24gdG8gY29uc3RhbnQgZm9sZCBsb3RzIG9mCisgICAgICAgIGJyYW5jaGVzIGFu
ZCBlbGlkZSBjZXJ0YWluIG9wZXJhdGlvbnMgZW50aXJlbHkgZHVyaW5nIGEgc3dlZXAuIE1lcmdl
ZAorICAgICAgICBmb3VyIG9yIGZpdmUgZnVuY3Rpb25zIHRoYXQgd2VyZSBsb2dpY2FsbHkgYWJv
dXQgc3dlZXBpbmcgaW50byB0aGlzIG9uZQorICAgICAgICBmdW5jdGlvbiBwYWlyLCBzbyB0aGVy
ZSdzIG9ubHkgb25lIHdheSB0byBkbyB0aGluZ3Mgbm93LCBpdCdzCisgICAgICAgIGF1dG9tYXRp
Y2FsbHkgY29ycmVjdCwgYW5kIGl0J3MgYWx3YXlzIGZhc3QuCisKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OnphcEZyZWVMaXN0KTogUmVuYW1lZCB0aGlzIGZ1bmN0aW9uIHRvIGJlIG1vcmUg
ZXhwbGljaXQKKyAgICAgICAgYWJvdXQgZXhhY3RseSB3aGF0IGl0IGRvZXMsIGFuZCB0byBob25v
ciB0aGUgbmV3IGJsb2NrIHN0YXRlIHN5c3RlbS4KKworICAgICAgICAqIGhlYXAvQWxsb2NhdGlv
blNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjphbGxvY2F0ZUJsb2Nr
KTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6
ZnJlZUJsb2Nrcyk6IFVwZGF0ZWQgZm9yIGNoYW5nZWQgaW50ZXJmYWNlLgorCisgICAgICAgIChK
U0M6OlRha2VJZlVubWFya2VkOjpUYWtlSWZVbm1hcmtlZCk6CisgICAgICAgIChKU0M6OlRha2VJ
ZlVubWFya2VkOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VGFrZUlmVW5tYXJrZWQ6OnJl
dHVyblZhbHVlKTogSnVzdCBsaWtlIGlzRW1wdHkoKSBhYm92ZSwgcmVuYW1lZAorICAgICAgICB0
byBjbGFyaWZ5IHRoYXQgdGhpcyBmdW5jdG9yIG9ubHkgdGVzdHMgdGhlIG1hcmsgYml0cywgc28g
aXQncyBvbmx5CisgICAgICAgIHZhbGlkIGlmIHlvdSd2ZSBwdXQgdGhlIG1hcmsgYml0cyBpbnRv
IGEgbWVhbmluZ2Z1bCBzdGF0ZSBiZWZvcmUKKyAgICAgICAgY2FsbGluZyBpdC4KKyAgICAgICAg
CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2hyaW5rKTogVXBkYXRlZCBmb3IgcmVu
YW1lLgorCisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6
QWxsb2NhdGlvblNwYWNlOjpjYW5vbmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKTogUmVuYW1lZCB0
byBiZSBhCisgICAgICAgIGxpdHRsZSBtb3JlIHNwZWNpZmljIGFib3V0IHdoYXQgd2UncmUgbWFr
aW5nIGNhbm9uaWNhbC4KKworICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OmZvckVhY2hD
ZWxsKTogVXBkYXRlZCBmb3IgcmVuYW1lLgorCisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFj
ZTo6Zm9yRWFjaEJsb2NrKTogTm8gbmVlZCB0byBjYW5vbmljYWxpemUgY2VsbAorICAgICAgICBs
aXZlbmVzcyBkYXRhIGJlZm9yZSBpdGVyYXRpbmcgYmxvY2tzIC0tIGNsaWVudHMgdGhhdCB3YW50
IGl0ZXJhdGVkCisgICAgICAgIGJsb2NrcyB0byBoYXZlIHZhbGlkIGNlbGwgbGlldmVuZXNzIGRh
dGEgc2hvdWxkIG1ha2UgdGhpcyBjYWxsIGZvcgorICAgICAgICB0aGVtc2VsdmVzLiAoQW5kIG5v
dCBhbGwgY2xpZW50cyB3YW50IGl0LikKKworICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9v
dHMuY3BwOgorICAgICAgICAoSlNDOjpDb25zZXJ2YXRpdmVSb290czo6Z2VuZXJpY0FkZFBvaW50
ZXIpOiBVcGRhdGVkIGZvciByZW5hbWUuIFJlbW92ZWQKKyAgICAgICAgb2Jzb2xldGUgY29tbWVu
dC4KKworICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkNvdW50RnVuY3Rv
cjo6Q2xlYXJNYXJrczo6b3BlcmF0b3IoKSk6IFJlbW92ZWQgY2FsbCB0byBub3RpZnkuLi4oKQor
ICAgICAgICBiZWNhdXNlIGNsZWFyTWFya3MoKSBub3cgZG9lcyB0aGF0IGltcGxpY2l0bHkuCisK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZGVzdHJveSk6IE1ha2Ugc3VyZSB0byBjYW5vbmljYWxpemUg
YmVmb3JlIHRlYXItZG93biwgc2luY2UKKyAgICAgICAgdGVhci1kb3duIHRlc3RzIGNlbGwgbGl2
ZW5lc3Mgd2hlbiBydW5uaW5nIGRlc3RydWN0b3JzLgorCisgICAgICAgIChKU0M6OkhlYXA6Om1h
cmtSb290cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOiBNb3ZlZCB3ZWFrIHJlZmVy
ZW5jZSBoYXJ2ZXN0aW5nIG91dCBvZiBtYXJrUm9vdHMoKQorICAgICAgICBhbmQgaW50byBjb2xs
ZWN0LCBzaW5jZSBpdCBzdHJpY3RseSBkZXBlbmRzIG9uIHJvb3QgbWFya2luZywgYW5kIGRvZXMK
KyAgICAgICAgbm90IGNvbnRyaWJ1dGUgdG8gcm9vdCBtYXJraW5nLgorCisgICAgICAgIChKU0M6
OkhlYXA6OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEpOiBSZW5hbWVkIHRvIGJlIGEgbGl0
dGxlIG1vcmUKKyAgICAgICAgc3BlY2lmaWMgYWJvdXQgd2hhdCB3ZSdyZSBtYWtpbmcgY2Fub25p
Y2FsLgorCisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVh
Y2hQcm90ZWN0ZWRDZWxsKTogTm8gbmVlZCB0byBjYW5vbmljYWxpemUgY2VsbCBsaXZlbmVzcwor
ICAgICAgICBkYXRhIGJlZm9yZSBpdGVyYXRpbmcgcHJvdGVjdGVkIGNlbGxzLCBzaW5jZSB3ZSBr
bm93IHRoZXkncmUgYWxsIGxpdmUsCisgICAgICAgIGFuZCBkb24ndCBuZWVkIHRvIHRlc3QgZm9y
IGl0LgorCisgICAgICAgICogaGVhcC9Mb2NhbC5oOgorICAgICAgICAoSlNDOjo6OnNldCk6IENh
bid0IG1ha2UgdGhlIHNhbWUgQVNTRVJUIHdlIHVzZWQgdG8gYmVjYXVzZSB3ZSBqdXN0IGRvbid0
CisgICAgICAgIGhhdmUgdGhlIG1hcmsgYml0cyBmb3IgaXQgYW55bW9yZS4gUGVyaGFwcyB3ZSBj
YW4gYnJpbmcgdGhpcyBBU1NFUlQgYmFjaworICAgICAgICBpbiBhIHdlYWtlciBmb3JtIGluIHRo
ZSBmdXR1cmUuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnJl
bW92ZUJsb2NrKTogVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZS4KKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEpOiBSZW5hbWVkIHRvIGJl
IGEgbGl0dGxlIG1vcmUKKyAgICAgICAgc3BlY2lmaWMgYWJvdXQgd2hhdCB3ZSdyZSBtYWtpbmcg
Y2Fub25pY2FsLgorCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6U2l6
ZUNsYXNzOjpTaXplQ2xhc3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
OjpyZXNldEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6
OnphcEZyZWVMaXN0KTogU2ltcGxpZmllZCB0aGlzIGFsbG9jYXRvcgorICAgICAgICBmdW5jdGlv
bmFsaXR5IGEgYml0LiBXZSBub3cgdHJhY2sgb25seSBvbmUgYmxvY2sgLS0gImN1cnJlbnRCbG9j
ayIgLS0KKyAgICAgICAgYW5kIHJlbHkgb24gaXRzIGludGVybmFsIHN0YXRlIHRvIGtub3cgd2hl
dGhlciBpdCBoYXMgbW9yZSBjZWxscyB0bworICAgICAgICBhbGxvY2F0ZS4KKworICAgICAgICAq
IGhlYXAvV2Vhay5oOgorICAgICAgICAoSlNDOjpXZWFrOjpzZXQpOiBDYW4ndCBtYWtlIHRoZSBz
YW1lIEFTU0VSVCB3ZSB1c2VkIHRvIGJlY2F1c2Ugd2UganVzdCBkb24ndAorICAgICAgICBoYXZl
IHRoZSBtYXJrIGJpdHMgZm9yIGl0IGFueW1vcmUuIFBlcmhhcHMgd2UgY2FuIGJyaW5nIHRoaXMg
QVNTRVJUIGJhY2sKKyAgICAgICAgaW4gYSB3ZWFrZXIgZm9ybSBpbiB0aGUgZnV0dXJlLgorCisg
ICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2cHRyKToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjp6YXApOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzWmFw
cGVkKToKKyAgICAgICAgKEpTQzo6aXNaYXBwZWQpOiBNYWRlIHphcHBpbmcgYSBwcm9wZXJ0eSBv
ZiBKU0NlbGwsIGZvciBhIGxpdHRsZSBhYnN0cmFjdGlvbi4KKyAgICAgICAgSW4gdGhlIGZ1dHVy
ZSwgZXhhY3RseSBob3cgYSBKU0NlbGwgemFwcyBpdHNlbGYgd2lsbCBjaGFuZ2UsIGFzIHRoZQor
ICAgICAgICBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBKU0NlbGwgY2hhbmdlcy4KKwogMjAx
MS0wOS0yMyAgWXVxaWFuZyBYaWFuICA8eXVxaWFuZy54aWFuQGludGVsLmNvbT4KIAogICAgICAg
ICBBZGQgSlNWQUxVRTMyXzY0IHN1cHBvcnQgdG8gREZHIEpJVApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiA5NTkwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgTWFya2VkQmxvY2sqIEFsbG9jYXRpb25TcGFjZTo6
YWxsb2NhdGVCbAogICAgICAgICAgICAgYmxvY2sgPSAwOwogICAgIH0KICAgICBpZiAoYmxvY2sp
Ci0gICAgICAgIGJsb2NrLT5pbml0Rm9yQ2VsbFNpemUoY2VsbFNpemUpOworICAgICAgICBibG9j
ayA9IE1hcmtlZEJsb2NrOjpyZWN5Y2xlKGJsb2NrLCBjZWxsU2l6ZSk7CiAgICAgZWxzZSBpZiAo
YWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgZWxzZQpAQCAtMTE2LDE4ICsxMTYsMTggQEAgdm9pZCBBbGxvY2F0aW9uU3BhY2U6OmZy
ZWVCbG9ja3MoTWFya2VkQgogICAgICAgICBuZXh0ID0gYmxvY2stPm5leHQoKTsKICAgICAgICAg
CiAgICAgICAgIG1fYmxvY2tzLnJlbW92ZShibG9jayk7Ci0gICAgICAgIGJsb2NrLT5yZXNldCgp
OworICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
aGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKICAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9ja3MuYXBw
ZW5kKGJsb2NrKTsKICAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOwogICAg
IH0KIH0KIAotY2xhc3MgVGFrZUlmRW1wdHkgeworY2xhc3MgVGFrZUlmVW5tYXJrZWQgewogcHVi
bGljOgogICAgIHR5cGVkZWYgTWFya2VkQmxvY2sqIFJldHVyblR5cGU7CiAgICAgCi0gICAgVGFr
ZUlmRW1wdHkoTWFya2VkU3BhY2UqKTsKKyAgICBUYWtlSWZVbm1hcmtlZChNYXJrZWRTcGFjZSop
OwogICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayopOwogICAgIFJldHVyblR5cGUgcmV0
dXJuVmFsdWUoKTsKICAgICAKQEAgLTEzNiwyMSArMTM2LDIxIEBAIHByaXZhdGU6CiAgICAgRG91
Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gbV9lbXB0aWVzOwogfTsKIAotaW5saW5lIFRha2VJ
ZkVtcHR5OjpUYWtlSWZFbXB0eShNYXJrZWRTcGFjZSogbmV3U3BhY2UpCitpbmxpbmUgVGFrZUlm
VW5tYXJrZWQ6OlRha2VJZlVubWFya2VkKE1hcmtlZFNwYWNlKiBuZXdTcGFjZSkKICAgICA6IG1f
bWFya2VkU3BhY2UobmV3U3BhY2UpCiB7CiB9CiAKLWlubGluZSB2b2lkIFRha2VJZkVtcHR5Ojpv
cGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKK2lubGluZSB2b2lkIFRha2VJZlVubWFya2Vk
OjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKIHsKLSAgICBpZiAoIWJsb2NrLT5pc0Vt
cHR5KCkpCisgICAgaWYgKCFibG9jay0+bWFya0NvdW50SXNaZXJvKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBtX21hcmtlZFNwYWNlLT5yZW1vdmVCbG9jayhibG9jayk7CiAgICAgbV9l
bXB0aWVzLmFwcGVuZChibG9jayk7CiB9CiAKLWlubGluZSBUYWtlSWZFbXB0eTo6UmV0dXJuVHlw
ZSBUYWtlSWZFbXB0eTo6cmV0dXJuVmFsdWUoKQoraW5saW5lIFRha2VJZlVubWFya2VkOjpSZXR1
cm5UeXBlIFRha2VJZlVubWFya2VkOjpyZXR1cm5WYWx1ZSgpCiB7CiAgICAgcmV0dXJuIG1fZW1w
dGllcy5oZWFkKCk7CiB9CkBAIC0xNTgsOCArMTU4LDggQEAgaW5saW5lIFRha2VJZkVtcHR5OjpS
ZXR1cm5UeXBlIFRha2VJZkVtcAogdm9pZCBBbGxvY2F0aW9uU3BhY2U6OnNocmluaygpCiB7CiAg
ICAgLy8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1wdGllcyB0byBhdm9pZCBtb2Rp
ZnlpbmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgotICAgIFRha2VJZkVtcHR5IHRha2VJ
ZkVtcHR5KCZtX21hcmtlZFNwYWNlKTsKLSAgICBmcmVlQmxvY2tzKGZvckVhY2hCbG9jayh0YWtl
SWZFbXB0eSkpOworICAgIFRha2VJZlVubWFya2VkIHRha2VJZlVubWFya2VkKCZtX21hcmtlZFNw
YWNlKTsKKyAgICBmcmVlQmxvY2tzKGZvckVhY2hCbG9jayh0YWtlSWZVbm1hcmtlZCkpOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2Uu
aAkocmV2aXNpb24gOTU5MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBm
b3JFYWNoQmxvY2soRnVuY3RvciYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5
cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CiAgICAgCi0gICAgdm9p
ZCBjYW5vbmljYWxpemVCbG9ja3MoKSB7IG1fbWFya2VkU3BhY2UuY2Fub25pY2FsaXplQmxvY2tz
KCk7IH0KKyAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKSB7IG1fbWFya2Vk
U3BhY2UuY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOyB9CiAgICAgdm9pZCByZXNldEFs
bG9jYXRvcigpIHsgbV9tYXJrZWRTcGFjZS5yZXNldEFsbG9jYXRvcigpOyB9CiAgICAgCiAgICAg
dm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKQEAgLTc4LDcgKzc4LDggQEAgcHJpdmF0ZToKIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5
cGUgQWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQogewotICAg
IGNhbm9uaWNhbGl6ZUJsb2NrcygpOworICAgIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEo
KTsKKwogICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CiAgICAg
Zm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQogICAgICAgICAoKml0KS0+Zm9yRWFjaENlbGwoZnVuY3Rvcik7CkBAIC05Myw3ICs5
NCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEKIAogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
QWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBj
YW5vbmljYWxpemVCbG9ja3MoKTsKICAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNl
dCgpLmVuZCgpOwogICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgZnVuY3RvcigqaXQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAkocmV2
aXNpb24gOTU5MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVS
b290cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogCisjaW5jbHVkZSAiSlNDZWxs
LmgiCiAjaW5jbHVkZSAiSmV0dGlzb25lZENvZGVCbG9ja3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTgyLDEwICs4NCw3IEBAIGlubGluZSB2b2lk
IENvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWQKICAgICBpZiAoIW1fYmxvY2tzLT5zZXQoKS5j
b250YWlucyhjYW5kaWRhdGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUaGUgY29uc2Vy
dmF0aXZlIHNldCBpbnZlcnRzIHRoZSB0eXBpY2FsIG1lYW5pbmcgb2YgbWFyayBiaXRzOiBXZSBv
bmx5Ci0gICAgLy8gdmlzaXQgbWFya2VkIHBvaW50ZXJzLCBhbmQgb3VyIHZpc2l0IGNsZWFycyB0
aGUgbWFyayBiaXQuIFRoaXMgZWZmaWNpZW50bHkKLSAgICAvLyBzaWZ0cyBvdXQgcG9pbnRlcnMg
dG8gZGVhZCBvYmplY3RzIGFuZCBkdXBsaWNhdGUgcG9pbnRlcnMuCi0gICAgaWYgKCFjYW5kaWRh
dGUtPnRlc3RBbmRDbGVhck1hcmtlZChwKSkKKyAgICBpZiAoIWNhbmRpZGF0ZS0+aXNMaXZlQ2Vs
bChwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fc2l6ZSA9PSBtX2NhcGFjaXR5KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDk1OTA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Myw3ICsxMTMsNiBAQCBzdHJ1Y3QgQ2xlYXJNYXJrcyA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuCiBp
bmxpbmUgdm9pZCBDbGVhck1hcmtzOjpvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKIHsK
ICAgICBibG9jay0+Y2xlYXJNYXJrcygpOwotICAgIGJsb2NrLT5ub3RpZnlNYXlIYXZlRnJlc2hG
cmVlQ2VsbHMoKTsKIH0KIAogc3RydWN0IFN3ZWVwIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9y
IHsKQEAgLTI2OCwxMCArMjY3LDExIEBAIHZvaWQgSGVhcDo6ZGVzdHJveSgpCiAgICAgZGVsZXRl
IG1fbWFya0xpc3RTZXQ7CiAgICAgbV9tYXJrTGlzdFNldCA9IDA7CiAKKyAgICBjYW5vbmljYWxp
emVDZWxsTGl2ZW5lc3NEYXRhKCk7CiAgICAgY2xlYXJNYXJrcygpOworCiAgICAgbV9oYW5kbGVI
ZWFwLmZpbmFsaXplV2Vha0hhbmRsZXMoKTsKICAgICBtX2dsb2JhbERhdGEtPnNtYWxsU3RyaW5n
cy5maW5hbGl6ZVNtYWxsU3RyaW5ncygpOwotCiAgICAgc2hyaW5rKCk7CiAgICAgQVNTRVJUKCFz
aXplKCkpOwogICAgIApAQCAtNTE0LDEwICs1MTQsNiBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygp
CiAgICAgLy8gSWYgdGhlIHNldCBvZiBvcGFxdWUgcm9vdHMgaGFzIGdyb3duLCBtb3JlIHdlYWsg
aGFuZGxlcyBtYXkgaGF2ZSBiZWNvbWUgcmVhY2hhYmxlLgogICAgIH0gd2hpbGUgKGxhc3RPcGFx
dWVSb290Q291bnQgIT0gdmlzaXRvci5vcGFxdWVSb290Q291bnQoKSk7CiAKLSAgICAvLyBOZWVk
IHRvIGNhbGwgdGhpcyBoZXJlIGJlY2F1c2Ugd2VhayBoYW5kbGUgcHJvY2Vzc2luZyBjb3VsZCBh
ZGQgd2VhawotICAgIC8vIHJlZmVyZW5jZSBoYXJ2ZXN0ZXJzLgotICAgIGhhcnZlc3RXZWFrUmVm
ZXJlbmNlcygpOwotCiAgICAgdmlzaXRvci5yZXNldCgpOwogCiAgICAgbV9vcGVyYXRpb25JblBy
b2dyZXNzID0gTm9PcGVyYXRpb247CkBAIC01ODksOSArNTg1LDEwIEBAIHZvaWQgSGVhcDo6Y29s
bGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICBBU1NFUlQobV9pc1NhZmVUb0NvbGxlY3Qp
OwogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0JFR0lOKCk7CiAgICAgCi0gICAgY2Fub25pY2FsaXpl
QmxvY2tzKCk7Ci0gICAgCisgICAgY2Fub25pY2FsaXplQ2VsbExpdmVuZXNzRGF0YSgpOwogICAg
IG1hcmtSb290cygpOworCisgICAgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgbV9oYW5k
bGVIZWFwLmZpbmFsaXplV2Vha0hhbmRsZXMoKTsKICAgICBtX2dsb2JhbERhdGEtPnNtYWxsU3Ry
aW5ncy5maW5hbGl6ZVNtYWxsU3RyaW5ncygpOwogCkBAIC02MTUsOSArNjEyLDkgQEAgdm9pZCBI
ZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICgqbV9hY3Rpdml0eUNhbGxi
YWNrKSgpOwogfQogCi12b2lkIEhlYXA6OmNhbm9uaWNhbGl6ZUJsb2NrcygpCit2b2lkIEhlYXA6
OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKQogewotICAgIG1fb2JqZWN0U3BhY2UuY2Fu
b25pY2FsaXplQmxvY2tzKCk7CisgICAgbV9vYmplY3RTcGFjZS5jYW5vbmljYWxpemVDZWxsTGl2
ZW5lc3NEYXRhKCk7CiB9CiAKIHZvaWQgSGVhcDo6cmVzZXRBbGxvY2F0b3IoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gOTU5MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNNYXJrZWQoY29uc3Qgdm9pZCop
OwogICAgICAgICBzdGF0aWMgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKLSAg
ICAgICAgc3RhdGljIGJvb2wgdGVzdEFuZENsZWFyTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKIAogICAgICAgICBzdGF0aWMg
dm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlNWYWx1ZSk7CkBAIC0xMzUsOSArMTM0
LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNWYWxpZEFsbG9jYXRpb24o
c2l6ZV90KTsKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXpl
X3QpOwotICAgICAgICB2b2lkIGNhbm9uaWNhbGl6ZUJsb2NrcygpOwotICAgICAgICB2b2lkIHJl
c2V0QWxsb2NhdG9yKCk7CiAKKyAgICAgICAgLy8gQ2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBh
bnkgb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8ga25vdyB3aGljaCBjZWxscworICAgICAgICAvLyBp
biB0aGUgaGVhcCBhcmUgbGl2ZS4gKEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVm
b3JlCisgICAgICAgIC8vIGNvbnNlcnZhdGl2ZSBtYXJraW5nLCBlYWdlciBzd2VlcGluZywgb3Ig
aXRlcmF0aW5nIHRoZSBjZWxscyBpbiBhIE1hcmtlZEJsb2NrLikKKyAgICAgICAgdm9pZCBjYW5v
bmljYWxpemVDZWxsTGl2ZW5lc3NEYXRhKCk7CisKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRv
cigpOwogICAgICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqKTsKIAogICAgICAgICB2
b2lkIGNsZWFyTWFya3MoKTsKQEAgLTIyMywxMSArMjI2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHJldHVybiBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPnRlc3RBbmRTZXRNYXJr
ZWQoY2VsbCk7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSGVhcDo6dGVzdEFuZENsZWFyTWFy
a2VkKGNvbnN0IHZvaWQqIGNlbGwpCi0gICAgewotICAgICAgICByZXR1cm4gTWFya2VkQmxvY2s6
OmJsb2NrRm9yKGNlbGwpLT50ZXN0QW5kQ2xlYXJNYXJrZWQoY2VsbCk7Ci0gICAgfQotCiAgICAg
aW5saW5lIHZvaWQgSGVhcDo6c2V0TWFya2VkKGNvbnN0IHZvaWQqIGNlbGwpCiAgICAgewogICAg
ICAgICBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPnNldE1hcmtlZChjZWxsKTsKQEAgLTI3
NCw3ICsyNzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEhlYXA6OmZvckVhY2hQ
cm90ZWN0ZWRDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBjYW5vbmljYWxp
emVCbG9ja3MoKTsKICAgICAgICAgUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBlbmQgPSBtX3By
b3RlY3RlZFZhbHVlcy5lbmQoKTsKICAgICAgICAgZm9yIChQcm90ZWN0Q291bnRTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV9wcm90ZWN0ZWRWYWx1ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICAgICAgZnVuY3RvcihpdC0+Zmlyc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTG9jYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbC5oCShyZXZpc2lvbiA5NTkwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xv
Y2FsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSBMb2NhbDxUPiYgTAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lk
IExvY2FsPFQ+OjpzZXQoRXh0ZXJuYWxUeXBlIGV4dGVybmFsVHlwZSkKIHsKICAgICBBU1NFUlQo
c2xvdCgpKTsKLSAgICBBU1NFUlQoIUhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFsdWUoZXh0ZXJuYWxU
eXBlKSB8fCAhSGFuZGxlVHlwZXM8VD46OnRvSlNWYWx1ZShleHRlcm5hbFR5cGUpLmlzQ2VsbCgp
IHx8IEhlYXA6OmlzTWFya2VkKEhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFsdWUoZXh0ZXJuYWxUeXBl
KS5hc0NlbGwoKSkpOwogICAgICpzbG90KCkgPSBleHRlcm5hbFR5cGU7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDk1OTA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwxOTYgKzQwLDExNyBAQCBNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNy
ZWF0ZShIZWFwKiBoCiAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGlvbi5iYXNlKCkpIE1hcmtlZEJs
b2NrKGFsbG9jYXRpb24sIGhlYXAsIGNlbGxTaXplKTsKIH0KIAorTWFya2VkQmxvY2sqIE1hcmtl
ZEJsb2NrOjpyZWN5Y2xlKE1hcmtlZEJsb2NrKiBibG9jaywgc2l6ZV90IGNlbGxTaXplKQorewor
ICAgIHJldHVybiBuZXcgKGJsb2NrKSBNYXJrZWRCbG9jayhibG9jay0+bV9hbGxvY2F0aW9uLCBi
bG9jay0+bV9oZWFwLCBjZWxsU2l6ZSk7Cit9CisKIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3ko
TWFya2VkQmxvY2sqIGJsb2NrKQogewogICAgIGJsb2NrLT5tX2FsbG9jYXRpb24uZGVhbGxvY2F0
ZSgpOwogfQogCiBNYXJrZWRCbG9jazo6TWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25B
bGlnbmVkJiBhbGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNpemUpCi0gICAgOiBt
X2luTmV3U3BhY2UoZmFsc2UpCisgICAgOiBtX2F0b21zUGVyQ2VsbCgoY2VsbFNpemUgKyBhdG9t
U2l6ZSAtIDEpIC8gYXRvbVNpemUpCisgICAgLCBtX2VuZEF0b20oYXRvbXNQZXJCbG9jayAtIG1f
YXRvbXNQZXJDZWxsICsgMSkKKyAgICAsIG1fc3RhdGUoTmV3KSAvLyBBbGwgY2VsbHMgc3RhcnQg
b3V0IHVubWFya2VkLgogICAgICwgbV9hbGxvY2F0aW9uKGFsbG9jYXRpb24pCiAgICAgLCBtX2hl
YXAoaGVhcCkKIHsKLSAgICBpbml0Rm9yQ2VsbFNpemUoY2VsbFNpemUpOworICAgIEhFQVBfTE9H
X0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6Omlu
aXRGb3JDZWxsU2l6ZShzaXplX3QgY2VsbFNpemUpCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
Y2FsbERlc3RydWN0b3IoSlNDZWxsKiBjZWxsLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cikKIHsK
LSAgICBtX2F0b21zUGVyQ2VsbCA9IChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6
ZTsKLSAgICBtX2VuZEF0b20gPSBhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxOwot
ICAgIHNldERlc3RydWN0b3JTdGF0ZShTb21lRnJlZUNlbGxzU3RpbGxIYXZlT2JqZWN0cyk7Ci19
Ci0KLXRlbXBsYXRlPE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yU3RhdGUgc3BlY2lhbGl6ZWREZXN0
cnVjdG9yU3RhdGU+Ci12b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqIGNl
bGwsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKQotewotICAgIGlmIChzcGVjaWFsaXplZERlc3Ry
dWN0b3JTdGF0ZSA9PSBGcmVlQ2VsbHNEb250SGF2ZU9iamVjdHMpCisgICAgLy8gQSBwcmV2aW91
cyBlYWdlciBzd2VlcCBtYXkgYWxyZWFkeSBoYXZlIHJ1biBjZWxsJ3MgZGVzdHJ1Y3Rvci4KKyAg
ICBpZiAoY2VsbC0+aXNaYXBwZWQoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgdm9pZCogdnB0
ciA9IGNlbGwtPnZwdHIoKTsKLSAgICBpZiAoc3BlY2lhbGl6ZWREZXN0cnVjdG9yU3RhdGUgPT0g
QWxsRnJlZUNlbGxzSGF2ZU9iamVjdHMgfHwgdnB0cikgewogI2lmIEVOQUJMRShTSU1QTEVfSEVB
UF9QUk9GSUxJTkcpCi0gICAgICAgIG1faGVhcC0+bV9kZXN0cm95ZWRUeXBlQ291bnRzLmNvdW50
VlB0cih2cHRyKTsKKyAgICBtX2hlYXAtPm1fZGVzdHJveWVkVHlwZUNvdW50cy5jb3VudFZQdHIo
dnB0cik7CiAjZW5kaWYKLSAgICAgICAgaWYgKHZwdHIgPT0ganNGaW5hbE9iamVjdFZQdHIpIHsK
LSAgICAgICAgICAgIEpTRmluYWxPYmplY3QqIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNG
aW5hbE9iamVjdCo+KGNlbGwpOwotICAgICAgICAgICAgb2JqZWN0LT5KU0ZpbmFsT2JqZWN0Ojp+
SlNGaW5hbE9iamVjdCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNlbGwtPn5KU0Nl
bGwoKTsKLSAgICB9Ci19CisgICAgaWYgKHZwdHIgPT0ganNGaW5hbE9iamVjdFZQdHIpCisgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SlNGaW5hbE9iamVjdCo+KGNlbGwpLT5KU0ZpbmFsT2JqZWN0
Ojp+SlNGaW5hbE9iamVjdCgpOworICAgIGVsc2UKKyAgICAgICAgY2VsbC0+fkpTQ2VsbCgpOwog
Ci10ZW1wbGF0ZTxNYXJrZWRCbG9jazo6RGVzdHJ1Y3RvclN0YXRlIHNwZWNpYWxpemVkRGVzdHJ1
Y3RvclN0YXRlPgotdm9pZCBNYXJrZWRCbG9jazo6c3BlY2lhbGl6ZWRSZXNldCgpCi17Ci0gICAg
dm9pZCoganNGaW5hbE9iamVjdFZQdHIgPSBtX2hlYXAtPmdsb2JhbERhdGEoKS0+anNGaW5hbE9i
amVjdFZQdHI7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0
b207IGkgKz0gbV9hdG9tc1BlckNlbGwpCi0gICAgICAgIGNhbGxEZXN0cnVjdG9yPHNwZWNpYWxp
emVkRGVzdHJ1Y3RvclN0YXRlPihyZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KCZhdG9tcygpW2ld
KSwganNGaW5hbE9iamVjdFZQdHIpOworICAgIGNlbGwtPnphcCgpOwogfQogCi12b2lkIE1hcmtl
ZEJsb2NrOjpyZXNldCgpCit0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6QmxvY2tTdGF0ZSBibG9ja1N0
YXRlLCBNYXJrZWRCbG9jazo6U3dlZXBNb2RlIHN3ZWVwTW9kZT4KK01hcmtlZEJsb2NrOjpGcmVl
Q2VsbCogTWFya2VkQmxvY2s6OnNwZWNpYWxpemVkU3dlZXAoKQogewotICAgIHN3aXRjaCAoZGVz
dHJ1Y3RvclN0YXRlKCkpIHsKLSAgICBjYXNlIEZyZWVDZWxsc0RvbnRIYXZlT2JqZWN0czoKLSAg
ICBjYXNlIFNvbWVGcmVlQ2VsbHNTdGlsbEhhdmVPYmplY3RzOgotICAgICAgICBzcGVjaWFsaXpl
ZFJlc2V0PFNvbWVGcmVlQ2VsbHNTdGlsbEhhdmVPYmplY3RzPigpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlQoZGVzdHJ1Y3RvclN0YXRlKCkgPT0gQWxsRnJl
ZUNlbGxzSGF2ZU9iamVjdHMpOwotICAgICAgICBzcGVjaWFsaXplZFJlc2V0PEFsbEZyZWVDZWxs
c0hhdmVPYmplY3RzPigpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19CisgICAgQVNTRVJUKGJs
b2NrU3RhdGUgIT0gQWxsb2NhdGVkICYmIGJsb2NrU3RhdGUgIT0gRnJlZUxpc3RlZCk7CiAKLXRl
bXBsYXRlPE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yU3RhdGUgc3BlY2lhbGl6ZWREZXN0cnVjdG9y
U3RhdGU+Ci12b2lkIE1hcmtlZEJsb2NrOjpzcGVjaWFsaXplZFN3ZWVwKCkKLXsKLSAgICBpZiAo
c3BlY2lhbGl6ZWREZXN0cnVjdG9yU3RhdGUgIT0gRnJlZUNlbGxzRG9udEhhdmVPYmplY3RzKSB7
Ci0gICAgICAgIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyID0gbV9oZWFwLT5nbG9iYWxEYXRhKCkt
PmpzRmluYWxPYmplY3RWUHRyOwotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IGZp
cnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7Ci0gICAgICAg
ICAgICBpZiAobV9tYXJrcy5nZXQoaSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlND
ZWxsKj4oJmF0b21zKClbaV0pOwotICAgICAgICAgICAgY2FsbERlc3RydWN0b3I8c3BlY2lhbGl6
ZWREZXN0cnVjdG9yU3RhdGU+KGNlbGwsIGpzRmluYWxPYmplY3RWUHRyKTsKLSAgICAgICAgICAg
IGNlbGwtPnNldFZQdHIoMCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNldERlc3Ry
dWN0b3JTdGF0ZShGcmVlQ2VsbHNEb250SGF2ZU9iamVjdHMpOwotICAgIH0KLX0KLQotdm9pZCBN
YXJrZWRCbG9jazo6c3dlZXAoKQotewotICAgIEhFQVBfREVCVUdfQkxPQ0sodGhpcyk7Ci0gICAg
Ci0gICAgc3dpdGNoIChkZXN0cnVjdG9yU3RhdGUoKSkgewotICAgIGNhc2UgRnJlZUNlbGxzRG9u
dEhhdmVPYmplY3RzOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNvbWVGcmVlQ2VsbHNTdGls
bEhhdmVPYmplY3RzOgotICAgICAgICBzcGVjaWFsaXplZFN3ZWVwPFNvbWVGcmVlQ2VsbHNTdGls
bEhhdmVPYmplY3RzPigpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlQoZGVzdHJ1Y3RvclN0YXRlKCkgPT0gQWxsRnJlZUNlbGxzSGF2ZU9iamVjdHMpOwotICAg
ICAgICBzcGVjaWFsaXplZFN3ZWVwPEFsbEZyZWVDZWxsc0hhdmVPYmplY3RzPigpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yU3Rh
dGUgc3BlY2lhbGl6ZWREZXN0cnVjdG9yU3RhdGU+Ci1BTFdBWVNfSU5MSU5FIE1hcmtlZEJsb2Nr
OjpGcmVlQ2VsbCogTWFya2VkQmxvY2s6OnByb2R1Y2VGcmVlTGlzdCgpCi17Ci0gICAgLy8gVGhp
cyByZXR1cm5zIGEgZnJlZSBsaXN0IHRoYXQgaXMgb3JkZXJlZCBpbiByZXZlcnNlIHRocm91Z2gg
dGhlIGJsb2NrLgorICAgIC8vIFRoaXMgcHJvZHVjZXMgYSBmcmVlIGxpc3QgdGhhdCBpcyBvcmRl
cmVkIGluIHJldmVyc2UgdGhyb3VnaCB0aGUgYmxvY2suCiAgICAgLy8gVGhpcyBpcyBmaW5lLCBz
aW5jZSB0aGUgYWxsb2NhdGlvbiBjb2RlIG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQog
ICAgIC8vIG9yZGVyIG9mIHRoZSBmcmVlIGxpc3QuCi0gICAgCisgICAgRnJlZUNlbGwqIGhlYWQg
PSAwOwogICAgIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyID0gbV9oZWFwLT5nbG9iYWxEYXRhKCkt
PmpzRmluYWxPYmplY3RWUHRyOwotICAgIAotICAgIEZyZWVDZWxsKiByZXN1bHQgPSAwOwotICAg
IAogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBt
X2F0b21zUGVyQ2VsbCkgewotICAgICAgICBpZiAoIW1fbWFya3MudGVzdEFuZFNldChpKSkgewot
ICAgICAgICAgICAgSlNDZWxsKiBjZWxsID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPigmYXRv
bXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAoc3BlY2lhbGl6ZWREZXN0cnVjdG9yU3RhdGUgIT0g
RnJlZUNlbGxzRG9udEhhdmVPYmplY3RzKQotICAgICAgICAgICAgICAgIGNhbGxEZXN0cnVjdG9y
PHNwZWNpYWxpemVkRGVzdHJ1Y3RvclN0YXRlPihjZWxsLCBqc0ZpbmFsT2JqZWN0VlB0cik7Cisg
ICAgICAgIGlmIChibG9ja1N0YXRlID09IE1hcmtlZCAmJiBtX21hcmtzLmdldChpKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SlNDZWxsKj4oJmF0b21zKClbaV0pOworICAgICAgICBpZiAoYmxvY2tTdGF0ZSA9PSBaYXBw
ZWQgJiYgIWNlbGwtPmlzWmFwcGVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBpZiAoYmxvY2tTdGF0ZSAhPSBOZXcpCisgICAgICAgICAgICBjYWxsRGVzdHJ1Y3RvcihjZWxs
LCBqc0ZpbmFsT2JqZWN0VlB0cik7CisKKyAgICAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2VlcFRv
RnJlZUxpc3QpIHsKICAgICAgICAgICAgIEZyZWVDZWxsKiBmcmVlQ2VsbCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RnJlZUNlbGwqPihjZWxsKTsKLSAgICAgICAgICAgIGZyZWVDZWxsLT5uZXh0ID0gcmVz
dWx0OwotICAgICAgICAgICAgcmVzdWx0ID0gZnJlZUNlbGw7CisgICAgICAgICAgICBmcmVlQ2Vs
bC0+bmV4dCA9IGhlYWQ7CisgICAgICAgICAgICBoZWFkID0gZnJlZUNlbGw7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyBpcyBzbmVha3k6IGlmIHdlJ3JlIHByb2R1Y2luZyBh
IGZyZWUgbGlzdCB0aGVuIHdlIGludGVuZCB0bwotICAgIC8vIGZpbGwgdXAgdGhlIGZyZWUgY2Vs
bHMgaW4gdGhlIGJsb2NrIHdpdGggb2JqZWN0cywgd2hpY2ggbWVhbnMgdGhhdAotICAgIC8vIGlm
IHdlIGhhdmUgYSBuZXcgR0MgdGhlbiBhbGwgb2YgdGhlIGZyZWUgc3R1ZmYgaW4gdGhpcyBibG9j
ayB3aWxsCi0gICAgLy8gY29tcHJpc2Ugb2JqZWN0cyByYXRoZXIgdGhhbiBlbXB0eSBjZWxscy4K
LSAgICBzZXREZXN0cnVjdG9yU3RhdGUoQWxsRnJlZUNlbGxzSGF2ZU9iamVjdHMpOwogCi0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBtX3N0YXRlID0gKChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVM
aXN0KSA/IEZyZWVMaXN0ZWQgOiBaYXBwZWQpOworICAgIHJldHVybiBoZWFkOwogfQogCi1NYXJr
ZWRCbG9jazo6RnJlZUNlbGwqIE1hcmtlZEJsb2NrOjpsYXp5U3dlZXAoKQorTWFya2VkQmxvY2s6
OkZyZWVDZWxsKiBNYXJrZWRCbG9jazo6c3dlZXAoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAg
ICAvLyBUaGlzIHJldHVybnMgYSBmcmVlIGxpc3QgdGhhdCBpcyBvcmRlcmVkIGluIHJldmVyc2Ug
dGhyb3VnaCB0aGUgYmxvY2suCi0gICAgLy8gVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUgYWxsb2Nh
dGlvbiBjb2RlIG1ha2VzIG5vIGFzc3VtcHRpb25zIGFib3V0IHRoZQotICAgIC8vIG9yZGVyIG9m
IHRoZSBmcmVlIGxpc3QuCi0gICAgCi0gICAgSEVBUF9ERUJVR19CTE9DSyh0aGlzKTsKLSAgICAK
LSAgICBzd2l0Y2ggKGRlc3RydWN0b3JTdGF0ZSgpKSB7Ci0gICAgY2FzZSBGcmVlQ2VsbHNEb250
SGF2ZU9iamVjdHM6Ci0gICAgICAgIHJldHVybiBwcm9kdWNlRnJlZUxpc3Q8RnJlZUNlbGxzRG9u
dEhhdmVPYmplY3RzPigpOwotICAgIGNhc2UgU29tZUZyZWVDZWxsc1N0aWxsSGF2ZU9iamVjdHM6
Ci0gICAgICAgIHJldHVybiBwcm9kdWNlRnJlZUxpc3Q8U29tZUZyZWVDZWxsc1N0aWxsSGF2ZU9i
amVjdHM+KCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGRlc3RydWN0b3JTdGF0ZSgp
ID09IEFsbEZyZWVDZWxsc0hhdmVPYmplY3RzKTsKLSAgICAgICAgcmV0dXJuIHByb2R1Y2VGcmVl
TGlzdDxBbGxGcmVlQ2VsbHNIYXZlT2JqZWN0cz4oKTsKKyAgICBIRUFQX0xPR19CTE9DS19TVEFU
RV9UUkFOU0lUSU9OKHRoaXMpOworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBO
ZXc6CisgICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KTsKKyAgICAg
ICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8TmV3LCBTd2VlcFRvRnJlZUxpc3Q+KCk7CisgICAg
Y2FzZSBGcmVlTGlzdGVkOgorICAgICAgICAvLyBIYXBwZW5zIHdoZW4gYSBibG9jayB0cmFuc2l0
aW9ucyB0byBmdWxseSBhbGxvY2F0ZWQuCisgICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dl
ZXBUb0ZyZWVMaXN0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBBbGxvY2F0ZWQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNl
IE1hcmtlZDoKKyAgICAgICAgcmV0dXJuIHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3QKKyAg
ICAgICAgICAgID8gc3BlY2lhbGl6ZWRTd2VlcDxNYXJrZWQsIFN3ZWVwVG9GcmVlTGlzdD4oKQor
ICAgICAgICAgICAgOiBzcGVjaWFsaXplZFN3ZWVwPE1hcmtlZCwgU3dlZXBPbmx5PigpOworICAg
IGNhc2UgWmFwcGVkOgorICAgICAgICByZXR1cm4gc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dAorICAgICAgICAgICAgPyBzcGVjaWFsaXplZFN3ZWVwPFphcHBlZCwgU3dlZXBUb0ZyZWVMaXN0
PigpCisgICAgICAgICAgICA6IHNwZWNpYWxpemVkU3dlZXA8WmFwcGVkLCBTd2VlcE9ubHk+KCk7
CiAgICAgfQogfQogCi1NYXJrZWRCbG9jazo6RnJlZUNlbGwqIE1hcmtlZEJsb2NrOjpibGVzc05l
d0Jsb2NrKCkKK3ZvaWQgTWFya2VkQmxvY2s6OnphcEZyZWVMaXN0KEZyZWVDZWxsKiBmaXJzdEZy
ZWVDZWxsKQogewotICAgIC8vIFRoaXMgcmV0dXJucyBhIGZyZWUgbGlzdCB0aGF0IGlzIG9yZGVy
ZWQgaW4gcmV2ZXJzZSB0aHJvdWdoIHRoZSBibG9jaywKLSAgICAvLyBhcyBpbiBsYXp5U3dlZXAo
KSBhYm92ZS4KLSAgICAKLSAgICBIRUFQX0RFQlVHX0JMT0NLKHRoaXMpOworICAgIEhFQVBfTE9H
X0JMT0NLX1NUQVRFX1RSQU5TSVRJT04odGhpcyk7CiAKLSAgICBGcmVlQ2VsbCogcmVzdWx0ID0g
MDsKLSAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2VuZEF0b207IGkgKz0g
bV9hdG9tc1BlckNlbGwpIHsKLSAgICAgICAgbV9tYXJrcy5zZXQoaSk7Ci0gICAgICAgIEZyZWVD
ZWxsKiBmcmVlQ2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnJlZUNlbGwqPigmYXRvbXMoKVtpXSk7
Ci0gICAgICAgIGZyZWVDZWxsLT5uZXh0ID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSBmcmVl
Q2VsbDsKLSAgICB9Ci0gICAgCi0gICAgLy8gU2VlIHByb2R1Y2VGcmVlTGlzdCgpLiBJZiB3ZSdy
ZSBoZXJlIHRoZW4gd2UgaW50ZW5kIHRvIGZpbGwgdGhlCi0gICAgLy8gYmxvY2sgd2l0aCBvYmpl
Y3RzLCBzbyBvbmNlIGEgR0MgaGFwcGVucywgYWxsIGZyZWUgY2VsbHMgd2lsbCBiZQotICAgIC8v
IG9jY3VwaWVkIGJ5IG9iamVjdHMuCi0gICAgc2V0RGVzdHJ1Y3RvclN0YXRlKEFsbEZyZWVDZWxs
c0hhdmVPYmplY3RzKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgTWFya2VkQmxv
Y2s6OmNhbm9uaWNhbGl6ZUJsb2NrKEZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsKQotewotICAgIEhF
QVBfREVCVUdfQkxPQ0sodGhpcyk7Ci0gICAgCi0gICAgQVNTRVJUKGRlc3RydWN0b3JTdGF0ZSgp
ID09IEFsbEZyZWVDZWxsc0hhdmVPYmplY3RzKTsKLSAgICAKLSAgICBpZiAoZmlyc3RGcmVlQ2Vs
bCkgewotICAgICAgICBmb3IgKEZyZWVDZWxsKiBjdXJyZW50ID0gZmlyc3RGcmVlQ2VsbDsgY3Vy
cmVudDspIHsKLSAgICAgICAgICAgIEZyZWVDZWxsKiBuZXh0ID0gY3VycmVudC0+bmV4dDsKLSAg
ICAgICAgICAgIHNpemVfdCBpID0gYXRvbU51bWJlcihjdXJyZW50KTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgbV9tYXJrcy5jbGVhcihpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Y3VycmVudC0+c2V0Tm9PYmplY3QoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY3VycmVu
dCA9IG5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNldERlc3RydWN0b3JTdGF0
ZShTb21lRnJlZUNlbGxzU3RpbGxIYXZlT2JqZWN0cyk7CisgICAgLy8gUm9sbCBiYWNrIHRvIGEg
Y29oZXJlbnQgc3RhdGUgZm9yIEhlYXAgaW50cm9zcGVjdGlvbi4gQ2VsbHMgbmV3bHkKKyAgICAv
LyBhbGxvY2F0ZWQgZnJvbSBvdXIgZnJlZSBsaXN0IGFyZSBub3QgY3VycmVudGx5IG1hcmtlZCwg
c28gd2UgbmVlZCBhbm90aGVyCisgICAgLy8gd2F5IHRvIHRlbGwgd2hhdCdzIGxpdmUgdnMgZGVh
ZC4gV2UgdXNlIHphcHBpbmcgZm9yIHRoYXQuCisKKyAgICBGcmVlQ2VsbCogbmV4dDsKKyAgICBm
b3IgKEZyZWVDZWxsKiBjdXJyZW50ID0gZmlyc3RGcmVlQ2VsbDsgY3VycmVudDsgY3VycmVudCA9
IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGN1cnJlbnQtPm5leHQ7CisgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8SlNDZWxsKj4oY3VycmVudCktPnphcCgpOwogICAgIH0KKworICAgIG1fc3RhdGUg
PSBaYXBwZWQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiA5NTkwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICsz
NCwxMiBAQAogI2RlZmluZSBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUyAwCiAKICNp
ZiBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OUwotI2RlZmluZSBIRUFQX0RFQlVHX0JM
T0NLKGJsb2NrKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBwcmludGYoIiVzOiVkICVzOiBibG9jayAlcyA9ICVwXG4iLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNU
SU9OX18sICNibG9jaywgKGJsb2NrKSk7ICAgICAgXAorI2RlZmluZSBIRUFQX0xPR19CTE9DS19T
VEFURV9UUkFOU0lUSU9OKGJsb2NrKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcHJpbnRmKCIlczolZCAlczogYmxvY2sgJXMgPSAlcCwgJWRcbiIsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICBfX0ZJ
TEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgI2Jsb2NrLCAoYmxvY2spLCAoYmxvY2spLT5t
X3N0YXRlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogI2Vsc2UKLSNkZWZpbmUgSEVBUF9ERUJV
R19CTE9DSyhibG9jaykgKCh2b2lkKTApCisjZGVmaW5lIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RS
QU5TSVRJT04oYmxvY2spICgodm9pZCkwKQogI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NTIsNiArNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IEtC
ID0gMTAyNDsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1CID0gMTAyNCAqIDEwMjQ7CiAgICAg
CisgICAgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqKTsKKyAgICAKICAgICAvLyBBIG1hcmtl
ZCBibG9jayBpcyBhIHBhZ2UtYWxpZ25lZCBjb250YWluZXIgZm9yIGhlYXAtYWxsb2NhdGVkIG9i
amVjdHMuCiAgICAgLy8gT2JqZWN0cyBhcmUgYWxsb2NhdGVkIHdpdGhpbiBjZWxscyBvZiB0aGUg
bWFya2VkIGJsb2NrLiBGb3IgYSBnaXZlbgogICAgIC8vIG1hcmtlZCBibG9jaywgYWxsIGNlbGxz
IGhhdmUgdGhlIHNhbWUgc2l6ZS4gT2JqZWN0cyBzbWFsbGVyIHRoYW4gdGhlCkBAIC03NSwxMyAr
NzcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdHJ1Y3QgRnJlZUNlbGwgewogICAg
ICAgICAgICAgRnJlZUNlbGwqIG5leHQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZvaWQg
c2V0Tm9PYmplY3QoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVs
aWVzIG9uIEZyZWVDZWxsIG5vdCBoYXZpbmcgYSB2dGFibGUsIGFuZCB0aGUgbmV4dCBmaWVsZAot
ICAgICAgICAgICAgICAgIC8vIGZhbGxpbmcgZXhhY3RseSB3aGVyZSBhIHZ0YWJsZSB3b3VsZCBo
YXZlIGJlZW4uCi0gICAgICAgICAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgIH07CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgVm9pZEZ1bmN0b3IgewpAQCAtOTAsNiAr
ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAgICAgICBzdGF0aWMgTWFy
a2VkQmxvY2sqIGNyZWF0ZShIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICAgICAgc3RhdGlj
IE1hcmtlZEJsb2NrKiByZWN5Y2xlKE1hcmtlZEJsb2NrKiwgc2l6ZV90IGNlbGxTaXplKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShNYXJrZWRCbG9jayopOwogCiAgICAgICAgIHN0YXRp
YyBib29sIGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOwpAQCAtOTgsMzYgKzk0LDIwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgSGVhcCogaGVhcCgpIGNvbnN0OwogICAg
ICAgICAKLSAgICAgICAgYm9vbCBpbk5ld1NwYWNlKCk7Ci0gICAgICAgIHZvaWQgc2V0SW5OZXdT
cGFjZShib29sKTsKLQogICAgICAgICB2b2lkKiBhbGxvY2F0ZSgpOwotICAgICAgICB2b2lkIHN3
ZWVwKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGlzIGludm9rZXMgZGVzdHJ1Y3RvcnMgb24g
YWxsIGNlbGxzIHRoYXQgYXJlIG5vdCBtYXJrZWQsIG1hcmtzCi0gICAgICAgIC8vIHRoZW0sIGFu
ZCByZXR1cm5zIGEgbGlua2VkIGxpc3Qgb2YgdGhvc2UgY2VsbHMuCi0gICAgICAgIEZyZWVDZWxs
KiBsYXp5U3dlZXAoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIE5vdGlmeSB0aGUgYmxvY2sgdGhh
dCBkZXN0cnVjdG9ycyBtYXkgaGF2ZSB0byBiZSBjYWxsZWQgYWdhaW4uCi0gICAgICAgIHZvaWQg
bm90aWZ5TWF5SGF2ZUZyZXNoRnJlZUNlbGxzKCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIGlu
aXRGb3JDZWxsU2l6ZShzaXplX3QgY2VsbFNpemUpOwotICAgICAgICAKLSAgICAgICAgLy8gVGhl
c2Ugc2hvdWxkIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBhIGJsb2NrIGlzIGNyZWF0ZWQu
Ci0gICAgICAgIC8vIEJsZXNzaW5nIGZvciBmYXN0IHBhdGggY3JlYXRlcyBhIGxpbmtlZCBsaXN0
LCB3aGlsZSBibGVzc2luZyBmb3IKLSAgICAgICAgLy8gc2xvdyBwYXRoIGNyZWF0ZXMgZHVtbXkg
Y2VsbHMuCi0gICAgICAgIEZyZWVDZWxsKiBibGVzc05ld0Jsb2NrKCk7Ci0gICAgICAgIAotICAg
ICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGlzIHVubWFya3MgYWxs
IGNlbGxzIG9uIHRoZSBmcmVlIGxpc3QsIGFuZCBhbGxvY2F0ZXMgZHVtbXkgSlNDZWxscwotICAg
ICAgICAvLyBpbiB0aGVpciBwbGFjZS4KLSAgICAgICAgdm9pZCBjYW5vbmljYWxpemVCbG9jayhG
cmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCk7Ci0gICAgICAgIAotICAgICAgICBib29sIGlzRW1wdHko
KTsKKworICAgICAgICBlbnVtIFN3ZWVwTW9kZSB7IFN3ZWVwT25seSwgU3dlZXBUb0ZyZWVMaXN0
IH07CisgICAgICAgIEZyZWVDZWxsKiBzd2VlcChTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOworCisg
ICAgICAgIC8vIFdoaWxlIGFsbG9jYXRpbmcgZnJvbSBhIGZyZWUgbGlzdCwgTWFya2VkQmxvY2sg
dGVtcG9yYXJpbHkgaGFzIGJvZ3VzCisgICAgICAgIC8vIGNlbGwgbGl2ZW5lc3MgZGF0YS4gVG8g
cmVzdG9yZSBhY2N1cmF0ZSBjZWxsIGxpdmVuZXNzIGRhdGEsIGNhbGwgb25lCisgICAgICAgIC8v
IG9mIHRoZXNlIGZ1bmN0aW9uczoKKyAgICAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsg
Ly8gQ2FsbCB0aGlzIG9uY2UgeW91J3ZlIGFsbG9jYXRlZCBhbGwgdGhlIGl0ZW1zIGluIHRoZSBm
cmVlIGxpc3QuCisgICAgICAgIHZvaWQgemFwRnJlZUxpc3QoRnJlZUNlbGwqIGZpcnN0RnJlZUNl
bGwpOyAvLyBDYWxsIHRoaXMgdG8gdW5kbyB0aGUgZnJlZSBsaXN0LgogCiAgICAgICAgIHZvaWQg
Y2xlYXJNYXJrcygpOwogICAgICAgICBzaXplX3QgbWFya0NvdW50KCk7CisgICAgICAgIGJvb2wg
bWFya0NvdW50SXNaZXJvKCk7IC8vIEZhc3RlciB0aGFuIG1hcmtDb3VudCgpLgogCiAgICAgICAg
IHNpemVfdCBjZWxsU2l6ZSgpOwogCkBAIC0xMzYsNyArMTE2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgYm9vbCBpc01hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIGJvb2wgdGVz
dEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIGJvb2wgdGVzdEFuZENsZWFyTWFy
a2VkKGNvbnN0IHZvaWQqKTsKKyAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7Cisg
ICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgc2V0TWFy
a2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKEdHQykKQEAgLTE2MCw0NyAr
MTQxLDI1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBhdG9tTWFzayA9IH4oYXRvbVNpemUgLSAxKTsgLy8gYXRvbVNpemUgbXVz
dCBiZSBhIHBvd2VyIG9mIHR3by4KLSAgICAgICAgCi0gICAgICAgIGVudW0gRGVzdHJ1Y3RvclN0
YXRlIHsgRnJlZUNlbGxzRG9udEhhdmVPYmplY3RzLCBTb21lRnJlZUNlbGxzU3RpbGxIYXZlT2Jq
ZWN0cywgQWxsRnJlZUNlbGxzSGF2ZU9iamVjdHMgfTsKKworICAgICAgICBlbnVtIEJsb2NrU3Rh
dGUgeyBOZXcsIEZyZWVMaXN0ZWQsIEFsbG9jYXRlZCwgTWFya2VkLCBaYXBwZWQgfTsKIAogICAg
ICAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6ZV07CiAKICAgICAgICAgTWFya2VkQmxvY2so
Y29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVfdCBjZWxsU2l6ZSk7CiAg
ICAgICAgIEF0b20qIGF0b21zKCk7Ci0KICAgICAgICAgc2l6ZV90IGF0b21OdW1iZXIoY29uc3Qg
dm9pZCopOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3RvclN0YXRlIGRlc3Ry
dWN0b3JTdGF0ZT4KICAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqLCB2b2lkKiBq
c0ZpbmFsT2JqZWN0VlB0cik7CisgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9k
ZT4gRnJlZUNlbGwqIHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCi0gICAgICAgIHRlbXBs
YXRlPERlc3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3RhdGU+Ci0gICAgICAgIHZvaWQgc3BlY2lh
bGl6ZWRSZXNldCgpOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3RvclN0YXRl
IGRlc3RydWN0b3JTdGF0ZT4KLSAgICAgICAgdm9pZCBzcGVjaWFsaXplZFN3ZWVwKCk7Ci0gICAg
ICAgIAotICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdG9yU3RhdGUgZGVzdHJ1Y3RvclN0YXRlPgot
ICAgICAgICBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIHByb2R1Y2VGcmVlTGlzdCgpOwotICAgICAg
ICAKLSAgICAgICAgdm9pZCBzZXREZXN0cnVjdG9yU3RhdGUoRGVzdHJ1Y3RvclN0YXRlIGRlc3Ry
dWN0b3JTdGF0ZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9kZXN0cnVjdG9yU3RhdGUgPSBz
dGF0aWNfY2FzdDxpbnQ4X3Q+KGRlc3RydWN0b3JTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIERlc3RydWN0b3JTdGF0ZSBkZXN0cnVjdG9yU3RhdGUoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVzdHJ1Y3RvclN0YXRlPihtX2Rlc3RydWN0
b3JTdGF0ZSk7Ci0gICAgICAgIH0KLQogI2lmIEVOQUJMRShHR0MpCiAgICAgICAgIENhcmRTZXQ8
Ynl0ZXNQZXJDYXJkLCBibG9ja1NpemU+IG1fY2FyZHM7CiAjZW5kaWYKIAotICAgICAgICBzaXpl
X3QgbV9lbmRBdG9tOyAvLyBUaGlzIGlzIGEgZnV6enkgZW5kLiBBbHdheXMgdGVzdCBmb3IgPCBt
X2VuZEF0b20uCiAgICAgICAgIHNpemVfdCBtX2F0b21zUGVyQ2VsbDsKKyAgICAgICAgc2l6ZV90
IG1fZW5kQXRvbTsgLy8gVGhpcyBpcyBhIGZ1enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9l
bmRBdG9tLgogICAgICAgICBXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPiBtX21hcmtzOwotICAg
ICAgICBib29sIG1faW5OZXdTcGFjZTsKLSAgICAgICAgaW50OF90IG1fZGVzdHJ1Y3RvclN0YXRl
OyAvLyB1c2UgZ2V0dGVycy9zZXR0ZXJzIGZvciB0aGlzLCBwYXJ0aWN1bGFybHkgc2luY2Ugd2Ug
bWF5IHdhbnQgdG8gY29tcGFjdCB0aGlzIChlZmZlY3RpdmVseSBsb2coMykvbG9nKDIpLWJpdCkg
ZmllbGQgaW50byBvdGhlciBmaWVsZHMKKyAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwogICAg
ICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgbV9hbGxvY2F0aW9uOwogICAgICAgICBIZWFwKiBt
X2hlYXA7CiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX3ByZXY7CkBAIC0yMzIsNTIgKzE5MSwzNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1faGVhcDsKICAgICB9CiAKLSAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aW5OZXdTcGFjZSgpCisgICAgaW5saW5lIHZvaWQgTWFy
a2VkQmxvY2s6OmRpZENvbnN1bWVGcmVlTGlzdCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9p
bk5ld1NwYWNlOwotICAgIH0KLSAgICAKLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0
SW5OZXdTcGFjZShib29sIGluTmV3U3BhY2UpCi0gICAgewotICAgICAgICBtX2luTmV3U3BhY2Ug
PSBpbk5ld1NwYWNlOwotICAgIH0KLSAgICAKLSAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
bm90aWZ5TWF5SGF2ZUZyZXNoRnJlZUNlbGxzKCkKLSAgICB7Ci0gICAgICAgIEhFQVBfREVCVUdf
QkxPQ0sodGhpcyk7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhdCB0aGUg
YmVnaW5uaW5nIG9mIEdDLiBJZiB0aGlzIGJsb2NrIGlzCi0gICAgICAgIC8vIEFsbEZyZWVDZWxs
c0hhdmVPYmplY3RzLCB0aGVuIGl0IG1lYW5zIHRoYXQgd2UgZmlsbGVkIHVwCi0gICAgICAgIC8v
IHRoZSBibG9jayBpbiB0aGlzIGNvbGxlY3Rpb24uIElmIGl0J3MgaW4gYW55IG90aGVyIHN0YXRl
LAotICAgICAgICAvLyB0aGVuIHRoaXMgY29sbGVjdGlvbiB3aWxsIHBvdGVudGlhbGx5IHByb2R1
Y2UgbmV3IGZyZWUKLSAgICAgICAgLy8gY2VsbHM7IG5ldyBmcmVlIGNlbGxzIGFsd2F5cyBoYXZl
IG9iamVjdHMuIEhlbmNlIGlmIHRoZQotICAgICAgICAvLyBzdGF0ZSBjdXJyZW50bHkgY2xhaW1z
IHRoYXQgdGhlcmUgYXJlIG5vIG9iamVjdHMgaW4gZnJlZQotICAgICAgICAvLyBjZWxscyB0aGVu
IHdlIG5lZWQgdG8gYnVtcCBpdCBvdmVyLiBPdGhlcndpc2UgbGVhdmUgaXQgYmUuCi0gICAgICAg
IC8vIFRoaXMgYWxsIGNydWNpYWxseSByZWxpZXMgb24gdGhlIGNvbGxlY3RvciBjYW5vbmljYWxp
emluZwotICAgICAgICAvLyBibG9ja3MgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UsIGFzIGNh
bm9uaWNhbGl6ZUJsb2NrcwotICAgICAgICAvLyB3aWxsIGNvcnJlY3RseSBzZXQgU29tZUZyZWVD
ZWxsc1N0aWxsSGF2ZU9iamVjdHMgZm9yCi0gICAgICAgIC8vIGJsb2NrcyB0aGF0IHdlcmUgb25s
eSBwYXJ0aWFsbHkgZmlsbGVkIGR1cmluZyB0aGlzCi0gICAgICAgIC8vIG11dGF0aW9uIGN5Y2xl
LgotICAgICAgICAKLSAgICAgICAgaWYgKGRlc3RydWN0b3JTdGF0ZSgpID09IEZyZWVDZWxsc0Rv
bnRIYXZlT2JqZWN0cykKLSAgICAgICAgICAgIHNldERlc3RydWN0b3JTdGF0ZShTb21lRnJlZUNl
bGxzU3RpbGxIYXZlT2JqZWN0cyk7Ci0gICAgfQorICAgICAgICBIRUFQX0xPR19CTE9DS19TVEFU
RV9UUkFOU0lUSU9OKHRoaXMpOwogCi0gICAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzRW1w
dHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbWFya3MuaXNFbXB0eSgpOworICAgICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKKyAgICAgICAgbV9zdGF0ZSA9IEFsbG9jYXRl
ZDsKICAgICB9CiAKICAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCiAg
ICAgeworICAgICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworCisg
ICAgICAgIEFTU0VSVChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVMaXN0ZWQpOwog
ICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CisKKyAgICAgICAgLy8gVGhpcyB3aWxsIGJlY29t
ZSB0cnVlIGF0IHRoZSBlbmQgb2YgdGhlIG1hcmsgcGhhc2UuIFdlIHNldCBpdCBub3cgdG8KKyAg
ICAgICAgLy8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KKyAgICAgICAgbV9z
dGF0ZSA9IE1hcmtlZDsKICAgICB9Ci0gICAgCisKICAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZEJs
b2NrOjptYXJrQ291bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFya3MuY291bnQoKTsK
ICAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bWFya0NvdW50SXNaZXJvKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX21hcmtzLmlzRW1wdHkoKTsKKyAgICB9CisKICAgICBp
bmxpbmUgc2l6ZV90IE1hcmtlZEJsb2NrOjpjZWxsU2l6ZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gbV9hdG9tc1BlckNlbGwgKiBhdG9tU2l6ZTsKQEAgLTMwOCwyMiArMjUxLDQ0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9tYXJrcy50ZXN0QW5kU2V0KGF0b21OdW1iZXIo
cCkpOwogICAgIH0KIAotICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjp0ZXN0QW5kQ2xlYXJN
YXJrZWQoY29uc3Qgdm9pZCogcCkKKyAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6c2V0TWFy
a2VkKGNvbnN0IHZvaWQqIHApCiAgICAgewotICAgICAgICByZXR1cm4gbV9tYXJrcy50ZXN0QW5k
Q2xlYXIoYXRvbU51bWJlcihwKSk7CisgICAgICAgIG1fbWFya3Muc2V0KGF0b21OdW1iZXIocCkp
OwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpzZXRNYXJrZWQoY29uc3Qg
dm9pZCogcCkKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlKGNvbnN0IEpTQ2Vs
bCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1fbWFya3Muc2V0KGF0b21OdW1iZXIocCkpOworICAg
ICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICAgICAgY2FzZSBBbGxvY2F0ZWQ6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBaYXBwZWQ6CisgICAgICAgICAgICByZXR1
cm4gIWlzWmFwcGVkKGNlbGwpOworICAgICAgICBjYXNlIE1hcmtlZDoKKyAgICAgICAgICAgIHJl
dHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKGNlbGwpKTsKKworICAgICAgICBjYXNlIE5ldzoK
KyAgICAgICAgY2FzZSBGcmVlTGlzdGVkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQorICAgIHsK
KyAgICAgICAgaWYgKChhdG9tTnVtYmVyKHApIC0gZmlyc3RBdG9tKCkpICUgbV9hdG9tc1BlckNl
bGwpIC8vIEZpbHRlcnMgcG9pbnRlcnMgdG8gY2VsbCBtaWRkbGVzLgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBpc0xpdmUoc3RhdGljX2Nhc3Q8Y29uc3QgSlND
ZWxsKj4ocCkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgdm9pZCBNYXJrZWRCbG9jazo6Zm9yRWFjaENlbGwoRnVuY3RvciYgZnVuY3RvcikKICAgICB7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSAr
PSBtX2F0b21zUGVyQ2VsbCkgewotICAgICAgICAgICAgaWYgKCFtX21hcmtzLmdldChpKSkKKyAg
ICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oJmF0b21z
KClbaV0pOworICAgICAgICAgICAgaWYgKCFpc0xpdmUoY2VsbCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBmdW5jdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4o
JmF0b21zKClbaV0pKTsKKworICAgICAgICAgICAgZnVuY3RvcihjZWxsKTsKICAgICAgICAgfQog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cAkocmV2aXNpb24gOTU5MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIxICs0NCwxOSBAQCBNYXJrZWRTcGFjZTo6
TWFya2VkU3BhY2UoSGVhcCogaGVhcCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6YWRkQmxvY2soU2l6
ZUNsYXNzJiBzaXplQ2xhc3MsIE1hcmtlZEJsb2NrKiBibG9jaykKIHsKLSAgICBibG9jay0+c2V0
SW5OZXdTcGFjZSh0cnVlKTsKLSAgICBzaXplQ2xhc3MubmV4dEJsb2NrID0gYmxvY2s7Ci0gICAg
c2l6ZUNsYXNzLmJsb2NrTGlzdC5hcHBlbmQoYmxvY2spOwogICAgIEFTU0VSVCghc2l6ZUNsYXNz
LmN1cnJlbnRCbG9jayk7CiAgICAgQVNTRVJUKCFzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCk7CisK
KyAgICBzaXplQ2xhc3MuYmxvY2tMaXN0LmFwcGVuZChibG9jayk7CiAgICAgc2l6ZUNsYXNzLmN1
cnJlbnRCbG9jayA9IGJsb2NrOwotICAgIHNpemVDbGFzcy5maXJzdEZyZWVDZWxsID0gYmxvY2st
PmJsZXNzTmV3QmxvY2soKTsKKyAgICBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGJsb2NrLT5z
d2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKIH0KIAogdm9pZCBNYXJrZWRTcGFj
ZTo6cmVtb3ZlQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQogewotICAgIGJsb2NrLT5zZXRJbk5l
d1NwYWNlKGZhbHNlKTsKICAgICBTaXplQ2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0Zvcihi
bG9jay0+Y2VsbFNpemUoKSk7Ci0gICAgaWYgKHNpemVDbGFzcy5uZXh0QmxvY2sgPT0gYmxvY2sp
Ci0gICAgICAgIHNpemVDbGFzcy5uZXh0QmxvY2sgPSBibG9jay0+bmV4dCgpOworICAgIGlmIChz
aXplQ2xhc3MuY3VycmVudEJsb2NrID09IGJsb2NrKQorICAgICAgICBzaXplQ2xhc3MuY3VycmVu
dEJsb2NrID0gMDsKICAgICBzaXplQ2xhc3MuYmxvY2tMaXN0LnJlbW92ZShibG9jayk7CiB9CiAK
QEAgLTczLDEzICs3MSwxMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcigpCiAg
ICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkucmVzZXRBbGxvY2F0b3IoKTsKIH0KIAotdm9p
ZCBNYXJrZWRTcGFjZTo6Y2Fub25pY2FsaXplQmxvY2tzKCkKK3ZvaWQgTWFya2VkU3BhY2U6OmNh
bm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKQogewogICAgIGZvciAoc2l6ZV90IGNlbGxTaXpl
ID0gcHJlY2lzZVN0ZXA7IGNlbGxTaXplIDwgcHJlY2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gcHJl
Y2lzZVN0ZXApCi0gICAgICAgIHNpemVDbGFzc0ZvcihjZWxsU2l6ZSkuY2Fub25pY2FsaXplQmxv
Y2soKTsKKyAgICAgICAgc2l6ZUNsYXNzRm9yKGNlbGxTaXplKS56YXBGcmVlTGlzdCgpOwogCiAg
ICAgZm9yIChzaXplX3QgY2VsbFNpemUgPSBpbXByZWNpc2VTdGVwOyBjZWxsU2l6ZSA8IGltcHJl
Y2lzZUN1dG9mZjsgY2VsbFNpemUgKz0gaW1wcmVjaXNlU3RlcCkKLSAgICAgICAgc2l6ZUNsYXNz
Rm9yKGNlbGxTaXplKS5jYW5vbmljYWxpemVCbG9jaygpOworICAgICAgICBzaXplQ2xhc3NGb3Io
Y2VsbFNpemUpLnphcEZyZWVMaXN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiA5NTkwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDExICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFNpemVDbGFzcyB7CiAg
ICAgICAgIFNpemVDbGFzcygpOwogICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7Ci0gICAg
ICAgIHZvaWQgY2Fub25pY2FsaXplQmxvY2soKTsKKyAgICAgICAgdm9pZCB6YXBGcmVlTGlzdCgp
OwogCiAgICAgICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbDsKICAgICAg
ICAgTWFya2VkQmxvY2sqIGN1cnJlbnRCbG9jazsKLSAgICAgICAgTWFya2VkQmxvY2sqIG5leHRC
bG9jazsKICAgICAgICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gYmxvY2tMaXN0Owog
ICAgICAgICBzaXplX3QgY2VsbFNpemU7CiAgICAgfTsKQEAgLTY5LDcgKzY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkQmxvY2soU2l6ZUNsYXNzJiwgTWFya2VkQmxvY2sqKTsKICAgICB2b2lk
IHJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrKik7CiAgICAgCi0gICAgdm9pZCBjYW5vbmljYWxpemVC
bG9ja3MoKTsKKyAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKIAogICAg
IHNpemVfdCB3YXRlck1hcmsoKTsKICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwpAQCAtMTI0
LDM5ICsxMjMsMjEgQEAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZShTaXplQwog
ewogICAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IHNpemVDbGFzcy5m
aXJzdEZyZWVDZWxsOwogICAgIGlmICghZmlyc3RGcmVlQ2VsbCkgewotICAgICAgICAvLyBUaGVy
ZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXMgZm9yIHdoeSB3ZSBnb3QgaGVyZToKLSAgICAgICAgLy8g
MSkgV2UndmUgZXhoYXVzdGVkIHRoZSBhbGxvY2F0aW9uIGNhY2hlIGZvciBjdXJyZW50QmxvY2ss
IGluIHdoaWNoIGNhc2UKLSAgICAgICAgLy8gICAgY3VycmVudEJsb2NrID09IG5leHRCbG9jaywg
YW5kIHdlIGtub3cgdGhhdCB0aGVyZSBpcyBubyByZWFzb24gdG8KLSAgICAgICAgLy8gICAgcmVw
ZWF0IGEgbGF6eSBzd2VlcCBvZiBuZXh0QmxvY2sgYmVjYXVzZSB3ZSB3b24ndCBmaW5kIGFueXRo
aW5nLgotICAgICAgICAvLyAyKSBBbGxvY2F0aW9uIGNhY2hlcyBoYXZlIGJlZW4gY2xlYXJlZCwg
aW4gd2hpY2ggY2FzZSBuZXh0QmxvY2sgbWF5Ci0gICAgICAgIC8vICAgIGhhdmUgKGFuZCBtb3N0
IGxpa2VseSBkb2VzIGhhdmUpIGZyZWUgY2VsbHMsIHNvIHdlIGFsbW9zdCBjZXJ0YWlubHkKLSAg
ICAgICAgLy8gICAgc2hvdWxkIGRvIGEgbGF6eVN3ZWVwIGZvciBuZXh0QmxvY2suIFRoaXMgYWxz
byBpbXBsaWVzIHRoYXQKLSAgICAgICAgLy8gICAgY3VycmVudEJsb2NrID09IDAuCi0gICAgICAg
IAotICAgICAgICBpZiAoc2l6ZUNsYXNzLmN1cnJlbnRCbG9jaykgewotICAgICAgICAgICAgQVNT
RVJUKHNpemVDbGFzcy5jdXJyZW50QmxvY2sgPT0gc2l6ZUNsYXNzLm5leHRCbG9jayk7Ci0gICAg
ICAgICAgICBtX3dhdGVyTWFyayArPSBzaXplQ2xhc3MubmV4dEJsb2NrLT5jYXBhY2l0eSgpOwot
ICAgICAgICAgICAgc2l6ZUNsYXNzLm5leHRCbG9jayA9IHNpemVDbGFzcy5uZXh0QmxvY2stPm5l
eHQoKTsKLSAgICAgICAgICAgIHNpemVDbGFzcy5jdXJyZW50QmxvY2sgPSAwOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBzaXplQ2xhc3Mu
bmV4dEJsb2NrIDsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkgewotICAgICAgICAgICAg
Zmlyc3RGcmVlQ2VsbCA9IGJsb2NrLT5sYXp5U3dlZXAoKTsKLSAgICAgICAgICAgIGlmIChmaXJz
dEZyZWVDZWxsKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBm
aXJzdEZyZWVDZWxsOwotICAgICAgICAgICAgICAgIHNpemVDbGFzcy5jdXJyZW50QmxvY2sgPSBi
bG9jazsKKyAgICAgICAgZm9yIChNYXJrZWRCbG9jayomIGJsb2NrID0gc2l6ZUNsYXNzLmN1cnJl
bnRCbG9jazsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkgeworICAgICAgICAgICAgZmly
c3RGcmVlQ2VsbCA9IGJsb2NrLT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsK
KyAgICAgICAgICAgIGlmIChmaXJzdEZyZWVDZWxsKQogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIG1fd2F0ZXJNYXJrICs9
IGJsb2NrLT5jYXBhY2l0eSgpOworICAgICAgICAgICAgYmxvY2stPmRpZENvbnN1bWVGcmVlTGlz
dCgpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghZmlyc3RGcmVlQ2VsbCkK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICAKKwogICAgIEFTU0VSVChmaXJzdEZy
ZWVDZWxsKTsKLSAgICAKKwogICAgIHNpemVDbGFzcy5maXJzdEZyZWVDZWxsID0gZmlyc3RGcmVl
Q2VsbC0+bmV4dDsKICAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsKIH0KQEAgLTE5MywyNiArMTc0
LDIzIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW4KIGlubGluZSBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpTaXplQ2xhc3MoKQogICAgIDogZmlyc3RGcmVlQ2VsbCgw
KQogICAgICwgY3VycmVudEJsb2NrKDApCi0gICAgLCBuZXh0QmxvY2soMCkKICAgICAsIGNlbGxT
aXplKDApCiB7CiB9CiAKIGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OnJlc2V0
QWxsb2NhdG9yKCkKIHsKLSAgICBuZXh0QmxvY2sgPSBibG9ja0xpc3QuaGVhZCgpOworICAgIGN1
cnJlbnRCbG9jayA9IGJsb2NrTGlzdC5oZWFkKCk7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmNhbm9uaWNhbGl6ZUJsb2NrKCkKK2lubGluZSB2b2lkIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OnphcEZyZWVMaXN0KCkKIHsKLSAgICBpZiAoY3VycmVudEJsb2NrKSB7
Ci0gICAgICAgIGN1cnJlbnRCbG9jay0+Y2Fub25pY2FsaXplQmxvY2soZmlyc3RGcmVlQ2VsbCk7
Ci0gICAgICAgIGZpcnN0RnJlZUNlbGwgPSAwOworICAgIGlmICghY3VycmVudEJsb2NrKSB7Cisg
ICAgICAgIEFTU0VSVCghZmlyc3RGcmVlQ2VsbCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCi0gICAgQVNTRVJUKCFmaXJzdEZyZWVDZWxsKTsKLSAgICAKLSAgICBjdXJyZW50QmxvY2sg
PSAwOworCisgICAgY3VycmVudEJsb2NrLT56YXBGcmVlTGlzdChmaXJzdEZyZWVDZWxsKTsKICAg
ICBmaXJzdEZyZWVDZWxsID0gMDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsu
aAkocmV2aXNpb24gOTU5MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgQVNTRVJUKHNsb3QoKSk7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBIYW5kbGVUeXBlczxU
Pjo6dG9KU1ZhbHVlKGV4dGVybmFsVHlwZSk7Ci0gICAgICAgIEFTU0VSVCghdmFsdWUgfHwgIXZh
bHVlLmlzQ2VsbCgpIHx8IEhlYXA6OmlzTWFya2VkKHZhbHVlLmFzQ2VsbCgpKSk7CiAgICAgICAg
IEhhbmRsZUhlYXA6OmhlYXBGb3Ioc2xvdCgpKS0+d3JpdGVCYXJyaWVyKHNsb3QoKSwgdmFsdWUp
OwogICAgICAgICAqc2xvdCgpID0gdmFsdWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDk1OTA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDggKzk2LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIHRvVGhpc09iamVj
dChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSBnZXRKU051bWJlcigpIGNvbnN0
OwotICAgICAgICB2b2lkKiB2cHRyKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
Pih0aGlzKTsgfQotICAgICAgICB2b2lkIHNldFZQdHIodm9pZCogdnB0cikgeyAqcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KHRoaXMpID0gdnB0cjsgfQorCisgICAgICAgIHZvaWQqIHZwdHIoKSBj
b25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKiBjb25zdCo+KHRoaXMpOyB9Cisg
ICAgICAgIHZvaWQgemFwKCkgeyAqcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqKj4odGhpcykg
PSAwOyB9CisgICAgICAgIGJvb2wgaXNaYXBwZWQoKSBjb25zdCB7IHJldHVybiAhKnJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90KiBjb25zdCo+KHRoaXMpOyB9CiAKICAgICAgICAgLy8gRklYTUU6
IFJlbmFtZSBnZXRPd25Qcm9wZXJ0eVNsb3QgdG8gdmlydHVhbEdldE93blByb3BlcnR5U2xvdCwg
YW5kCiAgICAgICAgIC8vIGZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QgdG8gZ2V0T3duUHJvcGVydHlT
bG90LiBDYWxsZXJzIHNob3VsZCBhbHdheXMKQEAgLTM0Niw2ICszNDgsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIGhlYXAuYWxsb2NhdGUoc2l6ZW9mKFQpKTsK
ICAgICB9CisgICAgCisgICAgaW5saW5lIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKiBjZWxs
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNlbGwtPmlzWmFwcGVkKCk7CisgICAgfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5MDkpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wOS0yNCAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG9jYXRlIG5l
dyBvYmplY3RzIHVubWFya2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02ODc2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgTWFkZSB0aGlzIGZsYWt5IHRlc3QgbGVzcyBmbGFreS4gKEp1c3Qg
ZW5vdWdoIHRvIG1ha2UgbXkgcGF0Y2ggbm90IGZhaWwuKQorCisgICAgICAgICogZmFzdC9kb20v
Z2MtMTAuaHRtbDogQ291bnQgb2JqZWN0cyBpbW1lZGlhdGVseSBhZnRlciBHQyB0byBnZXQgYW4K
KyAgICAgICAgZXhhY3QgY291bnQuIENhbGwgJ3JlbG9hZCcgYSBmZXcgdGltZXMgdG8gaW1wcm92
ZSB0ZXN0IGNvdmVyYWdlLiBQcmVsb2FkCisgICAgICAgIHByb3BlcnRpZXMgaW4gY2FzZSB0aGV5
J3JlIGxhemlseSBpbnN0YW50aWF0ZWQsIHdoaWNoIHdvdWxkIGNoYW5nZQorICAgICAgICBvYmpl
Y3QgY291bnQgbnVtYmVycy4gQWxzbywgdXNlIHRoZSAndmFyJyBrZXl3b3JkIGxpa2UgYSBnb29k
IGxpdHRsZQorICAgICAgICBKYXZhU2NyaXB0ZXIuCisKIDIwMTEtMDktMjQgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCBTbm93IExlb3BhcmQtc3BlY2lm
aWMgZXhwZWN0ZWQgcmVzdWx0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTEwLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTAuaHRtbAkocmV2aXNp
b24gOTU5MDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMiwyMiArMTIsMjQgQEAgZnVuY3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpIAog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdy
YXBoKTsKIH0KIAotdmFyIGJlZm9yZSxhZnRlcjsKIHZhciB0aHJlc2hvbGQgPSA1OwogCiBmdW5j
dGlvbiB0ZXN0KCkKIHsKICAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKICAgICB7CisgICAg
ICAgIGdsb2JhbCA9IHdpbmRvdy5mcmFtZXMubXlmcmFtZS5sb2NhdGlvbi5yZWxvYWQ7IC8vIEVh
Z2VybHkgY29uc3RydWN0IHRoZXNlIHByb3BlcnRpZXMgc28gdGhleSBkb24ndCBpbmZsdWVuY2Ug
dGVzdCBvdXRjb21lLgorCiAgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAg
IHZhciBiZWZvcmUgPSBHQ0NvbnRyb2xsZXIuZ2V0SlNPYmplY3RDb3VudCgpOworCisgICAgICAg
IHdpbmRvdy5mcmFtZXMubXlmcmFtZS5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7CiAgICAgICAgIHdp
bmRvdy5mcmFtZXMubXlmcmFtZS5sb2NhdGlvbi5yZWxvYWQodHJ1ZSk7Ci0gICAgICAgIGJlZm9y
ZSA9IEdDQ29udHJvbGxlci5nZXRKU09iamVjdENvdW50KCk7Ci0gICAgICAgIAogICAgICAgICB3
aW5kb3cuZnJhbWVzLm15ZnJhbWUubG9jYXRpb24ucmVsb2FkKHRydWUpOwogCiAgICAgICAgIEdD
Q29udHJvbGxlci5jb2xsZWN0KCk7Ci0gICAgICAgIGFmdGVyID0gR0NDb250cm9sbGVyLmdldEpT
T2JqZWN0Q291bnQoKTsKLSAgICAgICAgCisgICAgICAgIHZhciBhZnRlciA9IEdDQ29udHJvbGxl
ci5nZXRKU09iamVjdENvdW50KCk7CisKICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSB3ZSBjYW5u
b3QgZG8gYSBzdHJpY3QgY2hlY2sgaGVyZSBiZWNhdXNlIHRoZXJlIGlzIHN0aWxsIHZlcnkgbWlu
b3IgKDMpIEpTIG9iamVjdCBpbmNyZWFzZSwKICAgICAgICAgLy8gbGlrZWx5IGR1ZSB0byB0ZW1w
b3JhcnkgSlMgb2JqZWN0cyBiZWluZyBjcmVhdGVkIGR1cmluZyBmdXJ0aGVyIGV4ZWN1dGlvbiBv
ZiB0aGlzIHRlc3QgZnVuY3Rpb24uCiAgICAgICAgIC8vIEhvd2V2ZXIsIHRoZSBpZnJhbWUgZG9j
dW1lbnQgbGVha2luZyBldmVyeXRoaW5nIGhhcyBhbiBhZGRpdGlvbiBvZiB+MjUgb2JqZWN0cyBl
dmVyeQo=
</data>
<flag name="review"
          id="105594"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>