<?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>27823</bug_id>
          
          <creation_ts>2009-07-29 17:43:57 -0700</creation_ts>
          <short_desc>Remove XBM support</short_desc>
          <delta_ts>2010-01-12 11:53:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Peter Kasting">pkasting</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135752</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-29 17:43:57 -0700</bug_when>
    <thetext>Mozilla has removed XBM support on https://bugzilla.mozilla.org/show_bug.cgi?id=504822 , and noted that IE removed it in IE6.  We might as well rip it out too (at least in the cross-platform image decoders).

Added bonus: this will obsolete bug 26527.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179441</commentid>
    <comment_count>1</comment_count>
      <attachid>46292</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-11 11:23:09 -0800</bug_when>
    <thetext>Created attachment 46292
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179448</commentid>
    <comment_count>2</comment_count>
      <attachid>46292</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-01-11 11:41:35 -0800</bug_when>
    <thetext>Comment on attachment 46292
patch v1

This will break some builds. You need to update the build-system files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179449</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-11 11:42:41 -0800</bug_when>
    <thetext>Oh yeah.  Good catch.  (I feel silly now.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179492</commentid>
    <comment_count>4</comment_count>
      <attachid>46301</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-11 12:48:27 -0800</bug_when>
    <thetext>Created attachment 46301
patch v2

Now with more build file fixup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179907</commentid>
    <comment_count>5</comment_count>
      <attachid>46301</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-12 11:33:11 -0800</bug_when>
    <thetext>Comment on attachment 46301
patch v2

Looks like apply-patch can&apos;t handle rm dirs?

rs=me.

Good luck landing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179921</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-12 11:53:13 -0800</bug_when>
    <thetext>Landed in r53152.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46292</attachid>
            <date>2010-01-11 11:23:09 -0800</date>
            <delta_ts>2010-01-11 12:48:27 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15658</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEtMTEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBYQk0gc3VwcG9ydCBmcm9tIHRoZSBvcGVuLXNvdXJjZSBpbWFnZSBkZWNvZGVycy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODIzCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3hibTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmg6IFJlbW92ZWQuCisKIDIw
MTAtMDEtMDggIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSlBFR0ltYWdlRGVjb2Rlci5oIgogI2luY2x1
ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1
ZGUgIlhCTUltYWdlRGVjb2Rlci5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01Niwx
NCArNTUsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYQogCiBJ
bWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKLSAgICAvLyBYQk1zIHJlcXVpcmUgOCBieXRlcyBvZiBpbmZvLgotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBtYXhNYXJrZXJMZW5ndGggPSA4OwotCisgICAgLy8gV2UgbmVlZCBhdCBs
ZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBraW5kIG9mIGltYWdlIHdlJ3JlIGRlYWxp
bmcgd2l0aC4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4TWFya2VyTGVuZ3RoID0gNDsK
ICAgICBjaGFyIGNvbnRlbnRzW21heE1hcmtlckxlbmd0aF07CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gY29weUZyb21TaGFyZWRCdWZmZXIoY29udGVudHMsIG1heE1hcmtlckxlbmd0aCwgZGF0YSwg
MCk7Ci0KLSAgICAvLyBXZSBuZWVkIGF0IGxlYXN0IDQgYnl0ZXMgdG8gZmlndXJlIG91dCB3aGF0
IGtpbmQgb2YgaW1hZ2Ugd2UncmUgZGVhbGluZyB3aXRoLgotICAgIGlmIChsZW5ndGggPCA0KQor
ICAgIGlmIChsZW5ndGggPCBtYXhNYXJrZXJMZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciogdUNvbnRlbnRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oY29udGVudHMpOwpAQCAtOTUsMTAgKzkxLDYgQEAgSW1hZ2VEZWNv
ZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdAogICAgICAgICAhbWVtY21wKGNvbnRlbnRz
LCAiXDAwMFwwMDBcMDAyXDAwMCIsIDQpKQogICAgICAgICByZXR1cm4gbmV3IElDT0ltYWdlRGVj
b2RlcigpOwogCi0gICAgLy8gWEJNcyByZXF1aXJlIDggYnl0ZXMgb2YgaW5mby4KLSAgICBpZiAo
bGVuZ3RoID49IDggJiYgc3RybmNtcChjb250ZW50cywgIiNkZWZpbmUgIiwgOCkgPT0gMCkKLSAg
ICAgICAgcmV0dXJuIG5ldyBYQk1JbWFnZURlY29kZXIoKTsKLQogICAgIC8vIEdpdmUgdXAuIFdl
IGRvbid0IGtub3cgd2hhdCB0aGUgaGVjayB0aGlzIGlzLgogICAgIHJldHVybiAwOwogfQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1J
bWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiA1MzA4NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMveGJtL1hCTUltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
Mjc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhCTUlt
YWdlRGVjb2Rlci5oIgotCi0jaW5jbHVkZSAiQVNDSUlDVHlwZS5oIgotCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgotI2luY2x1ZGUgPGNzdGRpbz4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1YQk1J
bWFnZURlY29kZXI6OlhCTUltYWdlRGVjb2RlcigpCi0gICAgOiBtX2RlY29kZU9mZnNldCgwKQot
ICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCi0gICAgLCBtX2RlY29kZWRIZWFkZXIoZmFs
c2UpCi0gICAgLCBtX2RhdGFUeXBlKFVua25vd24pCi0gICAgLCBtX2JpdHNEZWNvZGVkKDApCi17
Ci19Ci0KLXZvaWQgWEJNSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgbV94Ym1TdHJpbmcgPSBkYXRhLT5idWZmZXIoKTsKLSAg
ICBtX3hibVN0cmluZy5hcHBlbmQoJ1wwJyk7Ci0KLSAgICBtX2FsbERhdGFSZWNlaXZlZCA9IGFs
bERhdGFSZWNlaXZlZDsKLX0KLQotYm9vbCBYQk1JbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJs
ZSgpCi17Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpICYmICFtX2Zh
aWxlZCkKLSAgICAgICAgZGVjb2RlKHRydWUpOwotCi0gICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6
aXNTaXplQXZhaWxhYmxlKCk7Ci19Ci0KLVJHQkEzMkJ1ZmZlciogWEJNSW1hZ2VEZWNvZGVyOjpm
cmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQotewotICAgIGlmIChpbmRleCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKLQotICAgIC8vIEF0dGVtcHQgdG8g
Z2V0IHRoZSBzaXplIGlmIHdlIGRvbid0IGhhdmUgaXQgeWV0LgotICAgIGlmICghSW1hZ2VEZWNv
ZGVyOjppc1NpemVBdmFpbGFibGUoKSkKLSAgICAgICAgZGVjb2RlKHRydWUpOwotICAgIAotICAg
IC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlmIG5lZWRlZC4KLSAgICBSR0JBMzJCdWZm
ZXImIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKLSAgICBpZiAoIWZhaWxlZCgpICYm
IEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKLSAgICAgICAgJiYgKGJ1ZmZlci5zdGF0
dXMoKSA9PSBSR0JBMzJCdWZmZXI6OkZyYW1lRW1wdHkpKSB7Ci0gICAgICAgIGlmICghYnVmZmVy
LnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpIHsKLSAgICAgICAgICAg
IG1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAg
ICAgIGJ1ZmZlci5zZXRTdGF0dXMoUkdCQTMyQnVmZmVyOjpGcmFtZVBhcnRpYWwpOwotCi0gICAg
ICAgIC8vIEZvciBYQk1zLCB0aGUgZnJhbWUgYWx3YXlzIGZpbGxzIHRoZSBlbnRpcmUgaW1hZ2Uu
Ci0gICAgICAgIGJ1ZmZlci5zZXRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7Ci0g
ICAgfQotICAgICAgICAKLSAgICAvLyBLZWVwIHRyeWluZyB0byBkZWNvZGUgdW50aWwgd2UndmUg
Z290IHRoZSBlbnRpcmUgaW1hZ2UuCi0gICAgaWYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBSR0JBMzJC
dWZmZXI6OkZyYW1lUGFydGlhbCkKLSAgICAgICAgZGVjb2RlKGZhbHNlKTsKLQotICAgIHJldHVy
biAmYnVmZmVyOwotfQotCi1ib29sIFhCTUltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVhZGVyKCkKLXsK
LSAgICBBU1NFUlQobV9kZWNvZGVPZmZzZXQgPD0gbV94Ym1TdHJpbmcuc2l6ZSgpKTsKLSAgICBB
U1NFUlQoIW1fZGVjb2RlZEhlYWRlcik7Ci0KLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9IG1feGJt
U3RyaW5nLmRhdGEoKTsKLQotICAgIC8vIEF0IGxlYXN0IDIgIiNkZWZpbmUgPHN0cmluZz4gPHVu
c2lnbmVkPiIgc2VxdWVuY2VzIGFyZSByZXF1aXJlZC4gVGhlc2UKLSAgICAvLyBzcGVjaWZ5IHRo
ZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBpbWFnZS4KLSAgICBpbnQgd2lkdGgsIGhlaWdodDsK
LSAgICBpZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgaW50
IGNvdW50OwotICAgICAgICBpZiAoc3NjYW5mKCZpbnB1dFttX2RlY29kZU9mZnNldF0sICIjZGVm
aW5lICUqcyAlaSAjZGVmaW5lICUqcyAlaSVuIiwKLSAgICAgICAgICAgICAgICAgICAmd2lkdGgs
ICZoZWlnaHQsICZjb3VudCkgIT0gMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBuZWVkIHRvIGZvbGxvdyBzb21lIHJ1bGVzLgot
ICAgICAgICBpZiAod2lkdGggPCAwIHx8IHdpZHRoID4gbWF4RGltZW5zaW9uIHx8IGhlaWdodCA8
IDAgfHwgaGVpZ2h0ID4gbWF4RGltZW5zaW9uKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGlzIGhh
cHBlbnMsIGRlY29kaW5nIHNob3VsZCBub3QgY29udGludWUuCi0gICAgICAgICAgICBzZXRGYWls
ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkgewotICAgICAgICAgICAgc2V0RmFpbGVkKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgbV9kZWNvZGVPZmZz
ZXQgKz0gY291bnQ7Ci0gICAgICAgIEFTU0VSVChtX2RlY29kZU9mZnNldCA8PSBtX3hibVN0cmlu
Zy5zaXplKCkpOwotICAgIH0KLQotICAgIEFTU0VSVChJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWls
YWJsZSgpKTsKLQotICAgIC8vIE5vdyB3ZSdyZSBsb29raW5nIGZvciBzb21ldGhpbmcgdGhhdCB0
ZWxscyB1cyB0aGF0IHdlJ3ZlIHNlZW4gYWxsIG9mIHRoZQotICAgIC8vICIjZGVmaW5lIDxzdHJp
bmc+IDx1bnNpZ25lZD4iIHNlcXVlbmNlcyB0aGF0IHdlJ3JlIGdvaW5nIHRvLiBNb3ppbGxhCi0g
ICAgLy8ganVzdCBsb29rcyBmb3IgIiBjaGFyICIgb3IgIiBzaG9ydCAiLiBXZSdsbCBkbyB0aGUg
c2FtZS4KLSAgICBpZiAobV9kYXRhVHlwZSA9PSBVbmtub3duKSB7Ci0gICAgICAgIGNvbnN0IGNo
YXIqIHgxMWhpbnQgPSAiIGNoYXIgIjsKLSAgICAgICAgY29uc3QgY2hhciogeDExSGludExvY2F0
aW9uID0gc3Ryc3RyKCZpbnB1dFttX2RlY29kZU9mZnNldF0sIHgxMWhpbnQpOwotICAgICAgICBp
ZiAoeDExSGludExvY2F0aW9uKSB7Ci0gICAgICAgICAgICBtX2RhdGFUeXBlID0gWDExOwotICAg
ICAgICAgICAgbV9kZWNvZGVPZmZzZXQgKz0gKCh4MTFIaW50TG9jYXRpb24gLSAmaW5wdXRbbV9k
ZWNvZGVPZmZzZXRdKSArIHN0cmxlbih4MTFoaW50KSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBjb25zdCBjaGFyKiB4MTBoaW50ID0gIiBzaG9ydCAiOwotICAgICAgICAgICAgY29u
c3QgY2hhciogeDEwSGludExvY2F0aW9uID0gc3Ryc3RyKCZpbnB1dFttX2RlY29kZU9mZnNldF0s
IHgxMGhpbnQpOwotICAgICAgICAgICAgaWYgKHgxMEhpbnRMb2NhdGlvbikgewotICAgICAgICAg
ICAgICAgIG1fZGF0YVR5cGUgPSBYMTA7Ci0gICAgICAgICAgICAgICAgbV9kZWNvZGVPZmZzZXQg
Kz0gKCh4MTBIaW50TG9jYXRpb24gLSAmaW5wdXRbbV9kZWNvZGVPZmZzZXRdKSArIHN0cmxlbih4
MTBoaW50KSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1fZGVjb2RlT2Zmc2V0IDw9IG1feGJtU3Ry
aW5nLnNpemUoKSk7Ci0gICAgfQotCi0gICAgLy8gRmluZCB0aGUgc3RhcnQgb2YgdGhlIGRhdGEu
IEFnYWluLCB3ZSBkbyB3aGF0IG1vemlsbGEgZG9lcyBhbmQganVzdAotICAgIC8vIGxvb2sgZm9y
IGEgJ3snIGluIHRoZSBpbnB1dC4KLSAgICBjb25zdCBjaGFyKiBmb3VuZCA9IHN0cmNocigmaW5w
dXRbbV9kZWNvZGVPZmZzZXRdLCAneycpOwotICAgIGlmICghZm91bmQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vIEFkdmFuY2UgdG8gY2hhcmFjdGVyIGFmdGVyIHRoZSAneycKLSAg
ICBtX2RlY29kZU9mZnNldCArPSAoKGZvdW5kIC0gJmlucHV0W21fZGVjb2RlT2Zmc2V0XSkgKyAx
KTsKLSAgICBBU1NFUlQobV9kZWNvZGVPZmZzZXQgPD0gbV94Ym1TdHJpbmcuc2l6ZSgpKTsKLSAg
ICBtX2RlY29kZWRIZWFkZXIgPSB0cnVlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFRo
ZSBkYXRhIGluIGFuIFhCTSBmaWxlIGlzIHByb3ZpZGVkIGFzIGFuIGFycmF5IG9mIGVpdGhlciAi
Y2hhciIgb3IgInNob3J0IgotLy8gdmFsdWVzLiBUaGVzZSB2YWx1ZXMgYXJlIGRlY29kZWQgb25l
IGF0IGEgdGltZSB1c2luZyBzdHJ0b3VsKCkgYW5kIHRoZSBiaXRzCi0vLyBhcmUgdXNlZCB0byBz
ZXQgdGhlIGFscGhhIHZhbHVlIGZvciB0aGUgaW1hZ2UuCi0vLwotLy8gVGhlIHZhbHVlIGZvciB0
aGUgY29sb3IgaXMgYWx3YXlzIHNldCB0byBSR0IoMCwwLDApLCB0aGUgYWxwaGEgdmFsdWUgdGFr
ZXMKLS8vIGNhcmUgb2Ygd2hldGhlciBvciBub3QgdGhlIHBpeGVsIHNob3dzIHVwLgotLy8KLS8v
IFNpbmNlIHRoZSBkYXRhIG1heSBhcnJpdmUgaW4gY2h1bmtzLCBhbmQgbWFueSBwcmVmaXhlcyBv
ZiB2YWxpZCBudW1iZXJzIGFyZQotLy8gdGhlbXNlbHZlcyB2YWxpZCBudW1iZXJzLCB0aGlzIGNv
ZGUgbmVlZHMgdG8gY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCi0vLyB2YWx1ZSBpcyBub3Qg
dHJ1bmNhdGVkLiBUaGlzIGlzIGRvbmUgYnkgY29uc3VtaW5nIHNwYWNlIGFmdGVyIHRoZSB2YWx1
ZQotLy8gcmVhZCB1bnRpbCBhICcsJyBvciBhICd9JyBvY2N1cnMuIEluIGEgdmFsaWQgWEJNLCBv
bmUgb2YgdGhlc2UgY2hhcmFjdGVycwotLy8gd2lsbCBvY2N1ciBhZnRlciBlYWNoIHZhbHVlLgot
Ly8KLS8vIFRoZSBjaGVja3MgYWZ0ZXIgc3RydG91bCBhcmUgYmFzZWQgb24gTW96aWxsYSdzIG5z
WEJNRGVjb2Rlci5jcHAuCi1ib29sIFhCTUltYWdlRGVjb2Rlcjo6ZGVjb2RlRGF0dW0odWludDE2
X3QqIHJlc3VsdCkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9IG1feGJtU3RyaW5nLmRhdGEo
KTsKLSAgICBjaGFyKiBlbmRQdHI7Ci0gICAgY29uc3QgdWludDE2X3QgdmFsdWUgPSBzdHJ0b3Vs
KCZpbnB1dFttX2RlY29kZU9mZnNldF0sICZlbmRQdHIsIDApOwotCi0gICAgLy8gRW5kIG9mIGlu
cHV0IG9yIGNvdWxkbid0IGRlY29kZSBhbnl0aGluZywgY2FuJ3QgZ28gYW55IGZ1cnRoZXIuCi0g
ICAgaWYgKGVuZFB0ciA9PSAmaW5wdXRbbV9kZWNvZGVPZmZzZXRdIHx8ICEqZW5kUHRyKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBQb3NzaWJseSBhIGhleCB2YWx1ZSB0cnVuY2F0
ZWQgYXQgIjB4Ii4gTmVlZCBtb3JlIGRhdGEuCi0gICAgaWYgKHZhbHVlID09IDAgJiYgKCplbmRQ
dHIgPT0gJ3gnIHx8ICplbmRQdHIgPT0gJ1gnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gU2tpcCB3aGl0ZXNwYWNlCi0gICAgd2hpbGUgKCplbmRQdHIgJiYgaXNBU0NJSVNwYWNl
KCplbmRQdHIpKQotICAgICAgICArK2VuZFB0cjsKLQotICAgIC8vIE91dCBvZiBpbnB1dCwgZG9u
J3Qga25vdyB3aGF0IGNvbWVzIG5leHQuCi0gICAgaWYgKCEqZW5kUHRyKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgbmV4dCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIg
aXMgbm90IG9uZSBvZiB0aGVzZSwgaXQncyBhbiBlcnJvci4KLSAgICAvLyBFdmVyeSB2YWxpZCBl
bnRyeSBpbiB0aGUgZGF0YSBhcnJheSBuZWVkcyB0byBiZSBmb2xsb3dlZCBieSAnLCcgb3IgJ30n
LgotICAgIGlmICgqZW5kUHRyICE9ICcsJyAmJiAqZW5kUHRyICE9ICd9JykgewotICAgICAgICBz
ZXRGYWlsZWQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIEF0IHRo
aXMgcG9pbnQgd2UgaGF2ZSBhIHZhbHVlLgotICAgICpyZXN1bHQgPSB2YWx1ZTsKLQotICAgIC8v
IFNraXAgb3ZlciB0aGUgZGVjb2RlZCB2YWx1ZSBwbHVzIHRoZSBkZWxpbWl0ZXIgKCcsJyBvciAn
fScpLgotICAgIG1fZGVjb2RlT2Zmc2V0ICs9ICgoZW5kUHRyIC0gJmlucHV0W21fZGVjb2RlT2Zm
c2V0XSkgKyAxKTsKLSAgICBBU1NFUlQobV9kZWNvZGVPZmZzZXQgPD0gbV94Ym1TdHJpbmcuc2l6
ZSgpKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFhCTUltYWdlRGVjb2Rlcjo6ZGVj
b2RlRGF0YSgpCi17Ci0gICAgQVNTRVJUKG1fZGVjb2RlT2Zmc2V0IDw9IG1feGJtU3RyaW5nLnNp
emUoKSk7Ci0gICAgQVNTRVJUKG1fZGVjb2RlZEhlYWRlciAmJiAhbV9mcmFtZUJ1ZmZlckNhY2hl
LmlzRW1wdHkoKSk7Ci0KLSAgICBSR0JBMzJCdWZmZXImIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNh
Y2hlWzBdOwotCi0gICAgQVNTRVJUKGZyYW1lLnN0YXR1cygpID09IFJHQkEzMkJ1ZmZlcjo6RnJh
bWVQYXJ0aWFsKTsKLQotICAgIGNvbnN0IGludCBiaXRzUGVyUm93ID0gc2l6ZSgpLndpZHRoKCk7
Ci0KLSAgICBBU1NFUlQobV9kYXRhVHlwZSAhPSBVbmtub3duKTsKLQotICAgIHdoaWxlIChtX2Jp
dHNEZWNvZGVkIDwgKHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhlaWdodCgpKSkgewotICAgICAg
ICB1aW50MTZfdCB2YWx1ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVEYXR1bSgmdmFsdWUpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGludCB4ID0gbV9iaXRzRGVjb2RlZCAl
IGJpdHNQZXJSb3c7Ci0gICAgICAgIGNvbnN0IGludCB5ID0gbV9iaXRzRGVjb2RlZCAvIGJpdHNQ
ZXJSb3c7Ci0KLSAgICAgICAgLy8gSG93IG1hbnkgYml0cyB3aWxsIGJlIHdyaXR0ZW4/Ci0gICAg
ICAgIGNvbnN0IGludCBiaXRzID0gc3RkOjptaW4oYml0c1BlclJvdyAtIHgsIChtX2RhdGFUeXBl
ID09IFgxMSkgPyA4IDogMTYpOwotCi0gICAgICAgIC8vIE9ubHkgdGhlIGFscGhhIGNoYW5uZWwg
bWF0dGVycyBoZXJlLCBzbyB0aGUgY29sb3IgdmFsdWVzIGFyZSBhbHdheXMKLSAgICAgICAgLy8g
c2V0IHRvIDAuCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYml0czsgKytpKQotICAgICAg
ICAgICAgZnJhbWUuc2V0UkdCQSh4KyssIHksIDAsIDAsIDAsIHZhbHVlICYgKDEgPDwgaSkgPyAy
NTUgOiAwKTsKLQotICAgICAgICBtX2JpdHNEZWNvZGVkICs9IGJpdHM7Ci0gICAgfQotCi0gICAg
ZnJhbWUuc2V0U3RhdHVzKFJHQkEzMkJ1ZmZlcjo6RnJhbWVDb21wbGV0ZSk7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotLy8gRGVjb2RlIGFzIG11Y2ggYXMgd2UgY2FuIG9mIHRoZSBYQk0gZmls
ZS4KLXZvaWQgWEJNSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBzaXplT25seSkKLXsKLSAgICBp
ZiAoZmFpbGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgZGVjb2RlUmVzdWx0ID0g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1fZGVjb2RlZEhlYWRlcikKLSAgICAgICAgZGVjb2RlUmVzdWx0
ID0gZGVjb2RlSGVhZGVyKCk7Ci0KLSAgICBpZiAobV9kZWNvZGVkSGVhZGVyICYmICFzaXplT25s
eSkKLSAgICAgICAgZGVjb2RlUmVzdWx0ID0gZGVjb2RlRGF0YSgpOwotCi0gICAgLy8gVGhlIGhl
YWRlciBvciB0aGUgZGF0YSBjb3VsZCBub3QgYmUgZGVjb2RlZCwgYnV0IHRoZXJlIGlzIG5vIG1v
cmUKLSAgICAvLyBkYXRhOiBkZWNvZGluZyBoYXMgZmFpbGVkLgotICAgIGlmICghZGVjb2RlUmVz
dWx0ICYmIG1fYWxsRGF0YVJlY2VpdmVkKQotICAgICAgICBzZXRGYWlsZWQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDUzMDg1KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwg
MjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFhCTUltYWdlRGVj
b2Rlcl9oCi0jZGVmaW5lIFhCTUltYWdlRGVjb2Rlcl9oCi0KLSNpbmNsdWRlICJJbWFnZURlY29k
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVz
IHRoZSBYQk0gaW1hZ2UgZm9ybWF0LgotICAgIGNsYXNzIFhCTUltYWdlRGVjb2RlciA6IHB1Ymxp
YyBJbWFnZURlY29kZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgWEJNSW1hZ2VEZWNvZGVyKCk7
Ci0gICAgICAgIHZpcnR1YWwgflhCTUltYWdlRGVjb2RlcigpIHt9Ci0KLSAgICAgICAgdmlydHVh
bCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiAieGJtIjsgfQotCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwotICAgICAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgc2l6ZSBpbmZvcm1h
dGlvbiBoYXMgYmVlbiBkZWNvZGVkIHlldC4KLSAgICAgICAgdmlydHVhbCBib29sIGlzU2l6ZUF2
YWlsYWJsZSgpOwotICAgICAgICB2aXJ0dWFsIFJHQkEzMkJ1ZmZlciogZnJhbWVCdWZmZXJBdElu
ZGV4KHNpemVfdCBpbmRleCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAvLyBSZXN0cmljdHMg
aW1hZ2Ugc2l6ZSB0byBzb21ldGhpbmcgInJlYXNvbmFibGUiLgotICAgICAgICAvLyBUaGlzIHBy
b3RlY3RzIGFnYWlucyByaWRpY3Vsb3VzbHkgbGFyZ2UgWEJNcyBhbmQgcHJldmVudHMgYmFkIHRo
aW5ncwotICAgICAgICAvLyBsaWtlIG92ZXJmbG93IG9mIG1fYml0c0RlY29kZWQuCi0gICAgICAg
IHN0YXRpYyBjb25zdCBpbnQgbWF4RGltZW5zaW9uID0gNjU1MzU7Ci0KLSAgICAgICAgLy8gSW4g
WDEwLCBhbiBhcnJheSBvZiB0eXBlICJzaG9ydCIgaXMgdXNlZCB0byBkZWNsYXJlIHRoZSBpbWFn
ZSBiaXRzLAotICAgICAgICAvLyBidXQgaW4gWDExLCB0aGUgdHlwZSBpcyAiY2hhciIuCi0gICAg
ICAgIGVudW0gRGF0YVR5cGUgewotICAgICAgICAgICAgVW5rbm93biwKLSAgICAgICAgICAgIFgx
MCwKLSAgICAgICAgICAgIFgxMSwKLSAgICAgICAgfTsKLQotICAgICAgICBib29sIGRlY29kZUhl
YWRlcigpOwotICAgICAgICBib29sIGRlY29kZURhdHVtKHVpbnQxNl90KiByZXN1bHQpOwotICAg
ICAgICBib29sIGRlY29kZURhdGEoKTsKLSAgICAgICAgdm9pZCBkZWNvZGUoYm9vbCBzaXplT25s
eSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IENvcHlpbmcgYWxsIHRoZSBYQk0gZGF0YSBqdXN0IHNv
IHdlIGNhbiBOVUxMLXRlcm1pbmF0ZSwganVzdAotICAgICAgICAvLyBzbyB3ZSBjYW4gdXNlIHNz
Y2FuZigpIGFuZCBmcmllbmRzLCBpcyBsYW1lLiAgVGhlIGRlY29kZXIgc2hvdWxkIGJlCi0gICAg
ICAgIC8vIHJld3JpdHRlbiB0byBvcGVyYXRlIG9uIG1fZGF0YSBkaXJlY3RseS4KLSAgICAgICAg
VmVjdG9yPGNoYXI+IG1feGJtU3RyaW5nOyAgLy8gTnVsbC10ZXJtaW5hdGVkIGNvcHkgb2YgdGhl
IFhCTSBkYXRhLgotICAgICAgICBzaXplX3QgbV9kZWNvZGVPZmZzZXQ7ICAgIC8vIFRoZSBjdXJy
ZW50IG9mZnNldCBpbiBtX3hibVN0cmluZyBmb3IgZGVjb2RpbmcuCi0gICAgICAgIGJvb2wgbV9h
bGxEYXRhUmVjZWl2ZWQ7Ci0gICAgICAgIGJvb2wgbV9kZWNvZGVkSGVhZGVyOwotICAgICAgICBl
bnVtIERhdGFUeXBlIG1fZGF0YVR5cGU7Ci0gICAgICAgIGludCBtX2JpdHNEZWNvZGVkOwotICAg
IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCg==
</data>
<flag name="review"
          id="28535"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46301</attachid>
            <date>2010-01-11 12:48:27 -0800</date>
            <delta_ts>2010-01-12 11:33:11 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20413</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMTEgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBYQk0gc3VwcG9ydCBmcm9tIHRoZSBvcGVuLXNvdXJjZSBpbWFnZSBkZWNvZGVycy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODIzCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZVNv
dXJjZXMuYmtsOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMveGJtOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURlY29kZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURlY29kZXIuaDogUmVt
b3ZlZC4KKwogMjAxMC0wMS0xMSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5Acmlt
LmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIEF0dGVtcHQgdG8gZml4IHdpbmRvd3MgYnVp
bGRzLCBieSByZW1vdmluZyB0aGUgbm8tbG9uZ2VyIGV4aXN0YW50IEpTU1ZHUG9pbnRMaXN0Q3Vz
dG9tLmNwcCBmcm9tIEpTQmluZGluZ3NBbGxJbk9uZS5jcHAuCkluZGV4OiBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9u
IDUzMDg1KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNiBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljbyBcCiAJLUkkKHNyY2RpcikvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnIFwKIAktSSQoc3JjZGlyKS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZyBcCi0JLUkkKHNyY2RpcikvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy94Ym0gXAogCS1JJChzcmNkaXIpL1dlYkNvcmUvcGxhdGZvcm0vbW9jayBcCiAJLUkk
KHNyY2RpcikvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrIFwKIAktSSQoc3JjZGlyKS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbCBcCkBAIC0yMDM0LDggKzIwMzMsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5oIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFn
ZURlY29kZXIuY3BwIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1J
bWFnZURlY29kZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTMwODUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMjMzNiw4ICsyMzM2LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3d4L0ltYWdlRGVjb2Rlcld4LmNwcCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMveGJtL1hCTUltYWdlRGVjb2Rlci5j
cHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURl
Y29kZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvemxpYi9jcmMz
Mi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy96bGliL2RlZmxhdGUu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvemxpYi9pbmZmYXN0Lmgn
LApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTk1MywxMCArOTUzLDYgQEAgVGhpcyBmaWxl
IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAogICAgIDwvc2V0PgogCi0gICAgPHNldCBh
cHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX1hCTSI+Ci0gICAgICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURlY29kZXIuY3BwCi0gICAgPC9zZXQ+Ci0KICAgICA8
c2V0IGFwcGVuZD0iMSIgdmFyPSJXRUJDT1JFX1NPVVJDRVNfUkVOREVSSU5HIj4KICAgICAgICAg
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKICAgICAgICAgcmVuZGVyaW5nL2JyZWFrX2xp
bmVzLmNwcApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biA1MzA4NSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI2MTU1LDgzICsyNjE1NSw2IEBACiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQk8L0ZpbHRlcj4NCi0JCQkJPEZpbHRlcg0KLQkJCQkJ
TmFtZT0ieGJtIg0KLQkJCQkJPg0KLQkJCQkJPEZpbGUNCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXHhibVxYQk1JbWFnZURlY29kZXIuY3BwIg0KLQkJCQkJ
CT4NCi0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQkJTmFtZT0iRGVidWd8V2luMzIi
DQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxU
b29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCQkvPg0KLQkJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJ
CU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
LQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KLQkJCQkJCQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQotCQkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KLQkJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJ
CQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJ
CQkJCQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8L0ZpbGU+DQotCQkJ
CQk8RmlsZQ0KLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNc
eGJtXFhCTUltYWdlRGVjb2Rlci5oIg0KLQkJCQkJCT4NCi0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCi0JCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0N1c3Rv
bUJ1aWxkVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0K
LQkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJCS8+DQotCQkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQkJTmFt
ZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxk
VG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiDQotCQkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJ
CQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KLQkJCQkJPC9GaWxlPg0KLQkJCQk8L0ZpbHRlcj4NCi0JCQk8L0ZpbHRl
cj4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9ImFuaW1hdGlvbiINCiAJCQkJPg0KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAJKHJl
dmlzaW9uIDUzMDg1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSlBF
R0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlhCTUltYWdlRGVjb2Rlci5oIgogCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCkBAIC01NiwxNCArNTUsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGNvcHlG
cm9tU2hhcmVkQnVmZmVyKGNoYQogCiBJbWFnZURlY29kZXIqIEltYWdlRGVjb2Rlcjo6Y3JlYXRl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICAvLyBYQk1zIHJlcXVpcmUgOCBieXRl
cyBvZiBpbmZvLgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhNYXJrZXJMZW5ndGggPSA4
OwotCisgICAgLy8gV2UgbmVlZCBhdCBsZWFzdCA0IGJ5dGVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBr
aW5kIG9mIGltYWdlIHdlJ3JlIGRlYWxpbmcgd2l0aC4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4TWFya2VyTGVuZ3RoID0gNDsKICAgICBjaGFyIGNvbnRlbnRzW21heE1hcmtlckxlbmd0
aF07CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29weUZyb21TaGFyZWRCdWZmZXIoY29udGVudHMs
IG1heE1hcmtlckxlbmd0aCwgZGF0YSwgMCk7Ci0KLSAgICAvLyBXZSBuZWVkIGF0IGxlYXN0IDQg
Ynl0ZXMgdG8gZmlndXJlIG91dCB3aGF0IGtpbmQgb2YgaW1hZ2Ugd2UncmUgZGVhbGluZyB3aXRo
LgotICAgIGlmIChsZW5ndGggPCA0KQorICAgIGlmIChsZW5ndGggPCBtYXhNYXJrZXJMZW5ndGgp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogdUNvbnRlbnRz
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oY29udGVudHMpOwpAQCAt
OTUsMTAgKzkxLDYgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdAog
ICAgICAgICAhbWVtY21wKGNvbnRlbnRzLCAiXDAwMFwwMDBcMDAyXDAwMCIsIDQpKQogICAgICAg
ICByZXR1cm4gbmV3IElDT0ltYWdlRGVjb2RlcigpOwogCi0gICAgLy8gWEJNcyByZXF1aXJlIDgg
Ynl0ZXMgb2YgaW5mby4KLSAgICBpZiAobGVuZ3RoID49IDggJiYgc3RybmNtcChjb250ZW50cywg
IiNkZWZpbmUgIiwgOCkgPT0gMCkKLSAgICAgICAgcmV0dXJuIG5ldyBYQk1JbWFnZURlY29kZXIo
KTsKLQogICAgIC8vIEdpdmUgdXAuIFdlIGRvbid0IGtub3cgd2hhdCB0aGUgaGVjayB0aGlzIGlz
LgogICAgIHJldHVybiAwOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3hibS9YQk1JbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiA1MzA4NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMveGJtL1hCTUltYWdlRGVjb2Rlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMp
IDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlhCTUltYWdlRGVjb2Rlci5oIgotCi0jaW5jbHVkZSAiQVNDSUlD
VHlwZS5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdGRpbz4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1YQk1JbWFnZURlY29kZXI6OlhCTUltYWdlRGVjb2RlcigpCi0g
ICAgOiBtX2RlY29kZU9mZnNldCgwKQotICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCi0g
ICAgLCBtX2RlY29kZWRIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2RhdGFUeXBlKFVua25vd24pCi0g
ICAgLCBtX2JpdHNEZWNvZGVkKDApCi17Ci19Ci0KLXZvaWQgWEJNSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi17Ci0gICAgSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgbV94Ym1TdHJp
bmcgPSBkYXRhLT5idWZmZXIoKTsKLSAgICBtX3hibVN0cmluZy5hcHBlbmQoJ1wwJyk7Ci0KLSAg
ICBtX2FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKLX0KLQotYm9vbCBYQk1JbWFn
ZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCi17Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpICYmICFtX2ZhaWxlZCkKLSAgICAgICAgZGVjb2RlKHRydWUpOwotCi0g
ICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCk7Ci19Ci0KLVJHQkEzMkJ1
ZmZlciogWEJNSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQot
ewotICAgIGlmIChpbmRleCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgx
KTsKLQotICAgIC8vIEF0dGVtcHQgdG8gZ2V0IHRoZSBzaXplIGlmIHdlIGRvbid0IGhhdmUgaXQg
eWV0LgotICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkKLSAgICAgICAg
ZGVjb2RlKHRydWUpOwotICAgIAotICAgIC8vIEluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIGlm
IG5lZWRlZC4KLSAgICBSR0JBMzJCdWZmZXImIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVsw
XTsKLSAgICBpZiAoIWZhaWxlZCgpICYmIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkK
LSAgICAgICAgJiYgKGJ1ZmZlci5zdGF0dXMoKSA9PSBSR0JBMzJCdWZmZXI6OkZyYW1lRW1wdHkp
KSB7Ci0gICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5o
ZWlnaHQoKSkpIHsKLSAgICAgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoUkdCQTMyQnVmZmVy
OjpGcmFtZVBhcnRpYWwpOwotCi0gICAgICAgIC8vIEZvciBYQk1zLCB0aGUgZnJhbWUgYWx3YXlz
IGZpbGxzIHRoZSBlbnRpcmUgaW1hZ2UuCi0gICAgICAgIGJ1ZmZlci5zZXRSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgc2l6ZSgpKSk7Ci0gICAgfQotICAgICAgICAKLSAgICAvLyBLZWVwIHRyeWlu
ZyB0byBkZWNvZGUgdW50aWwgd2UndmUgZ290IHRoZSBlbnRpcmUgaW1hZ2UuCi0gICAgaWYgKGJ1
ZmZlci5zdGF0dXMoKSA9PSBSR0JBMzJCdWZmZXI6OkZyYW1lUGFydGlhbCkKLSAgICAgICAgZGVj
b2RlKGZhbHNlKTsKLQotICAgIHJldHVybiAmYnVmZmVyOwotfQotCi1ib29sIFhCTUltYWdlRGVj
b2Rlcjo6ZGVjb2RlSGVhZGVyKCkKLXsKLSAgICBBU1NFUlQobV9kZWNvZGVPZmZzZXQgPD0gbV94
Ym1TdHJpbmcuc2l6ZSgpKTsKLSAgICBBU1NFUlQoIW1fZGVjb2RlZEhlYWRlcik7Ci0KLSAgICBj
b25zdCBjaGFyKiBpbnB1dCA9IG1feGJtU3RyaW5nLmRhdGEoKTsKLQotICAgIC8vIEF0IGxlYXN0
IDIgIiNkZWZpbmUgPHN0cmluZz4gPHVuc2lnbmVkPiIgc2VxdWVuY2VzIGFyZSByZXF1aXJlZC4g
VGhlc2UKLSAgICAvLyBzcGVjaWZ5IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBpbWFnZS4K
LSAgICBpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZh
aWxhYmxlKCkpIHsKLSAgICAgICAgaW50IGNvdW50OwotICAgICAgICBpZiAoc3NjYW5mKCZpbnB1
dFttX2RlY29kZU9mZnNldF0sICIjZGVmaW5lICUqcyAlaSAjZGVmaW5lICUqcyAlaSVuIiwKLSAg
ICAgICAgICAgICAgICAgICAmd2lkdGgsICZoZWlnaHQsICZjb3VudCkgIT0gMikKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBuZWVk
IHRvIGZvbGxvdyBzb21lIHJ1bGVzLgotICAgICAgICBpZiAod2lkdGggPCAwIHx8IHdpZHRoID4g
bWF4RGltZW5zaW9uIHx8IGhlaWdodCA8IDAgfHwgaGVpZ2h0ID4gbWF4RGltZW5zaW9uKSB7Ci0g
ICAgICAgICAgICAvLyBJZiB0aGlzIGhhcHBlbnMsIGRlY29kaW5nIHNob3VsZCBub3QgY29udGlu
dWUuCi0gICAgICAgICAgICBzZXRGYWlsZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSkgewotICAg
ICAgICAgICAgc2V0RmFpbGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgbV9kZWNvZGVPZmZzZXQgKz0gY291bnQ7Ci0gICAgICAgIEFTU0VSVChtX2Rl
Y29kZU9mZnNldCA8PSBtX3hibVN0cmluZy5zaXplKCkpOwotICAgIH0KLQotICAgIEFTU0VSVChJ
bWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpKTsKLQotICAgIC8vIE5vdyB3ZSdyZSBsb29r
aW5nIGZvciBzb21ldGhpbmcgdGhhdCB0ZWxscyB1cyB0aGF0IHdlJ3ZlIHNlZW4gYWxsIG9mIHRo
ZQotICAgIC8vICIjZGVmaW5lIDxzdHJpbmc+IDx1bnNpZ25lZD4iIHNlcXVlbmNlcyB0aGF0IHdl
J3JlIGdvaW5nIHRvLiBNb3ppbGxhCi0gICAgLy8ganVzdCBsb29rcyBmb3IgIiBjaGFyICIgb3Ig
IiBzaG9ydCAiLiBXZSdsbCBkbyB0aGUgc2FtZS4KLSAgICBpZiAobV9kYXRhVHlwZSA9PSBVbmtu
b3duKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHgxMWhpbnQgPSAiIGNoYXIgIjsKLSAgICAgICAg
Y29uc3QgY2hhciogeDExSGludExvY2F0aW9uID0gc3Ryc3RyKCZpbnB1dFttX2RlY29kZU9mZnNl
dF0sIHgxMWhpbnQpOwotICAgICAgICBpZiAoeDExSGludExvY2F0aW9uKSB7Ci0gICAgICAgICAg
ICBtX2RhdGFUeXBlID0gWDExOwotICAgICAgICAgICAgbV9kZWNvZGVPZmZzZXQgKz0gKCh4MTFI
aW50TG9jYXRpb24gLSAmaW5wdXRbbV9kZWNvZGVPZmZzZXRdKSArIHN0cmxlbih4MTFoaW50KSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiB4MTBoaW50ID0gIiBz
aG9ydCAiOwotICAgICAgICAgICAgY29uc3QgY2hhciogeDEwSGludExvY2F0aW9uID0gc3Ryc3Ry
KCZpbnB1dFttX2RlY29kZU9mZnNldF0sIHgxMGhpbnQpOwotICAgICAgICAgICAgaWYgKHgxMEhp
bnRMb2NhdGlvbikgewotICAgICAgICAgICAgICAgIG1fZGF0YVR5cGUgPSBYMTA7Ci0gICAgICAg
ICAgICAgICAgbV9kZWNvZGVPZmZzZXQgKz0gKCh4MTBIaW50TG9jYXRpb24gLSAmaW5wdXRbbV9k
ZWNvZGVPZmZzZXRdKSArIHN0cmxlbih4MTBoaW50KSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1f
ZGVjb2RlT2Zmc2V0IDw9IG1feGJtU3RyaW5nLnNpemUoKSk7Ci0gICAgfQotCi0gICAgLy8gRmlu
ZCB0aGUgc3RhcnQgb2YgdGhlIGRhdGEuIEFnYWluLCB3ZSBkbyB3aGF0IG1vemlsbGEgZG9lcyBh
bmQganVzdAotICAgIC8vIGxvb2sgZm9yIGEgJ3snIGluIHRoZSBpbnB1dC4KLSAgICBjb25zdCBj
aGFyKiBmb3VuZCA9IHN0cmNocigmaW5wdXRbbV9kZWNvZGVPZmZzZXRdLCAneycpOwotICAgIGlm
ICghZm91bmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEFkdmFuY2UgdG8gY2hh
cmFjdGVyIGFmdGVyIHRoZSAneycKLSAgICBtX2RlY29kZU9mZnNldCArPSAoKGZvdW5kIC0gJmlu
cHV0W21fZGVjb2RlT2Zmc2V0XSkgKyAxKTsKLSAgICBBU1NFUlQobV9kZWNvZGVPZmZzZXQgPD0g
bV94Ym1TdHJpbmcuc2l6ZSgpKTsKLSAgICBtX2RlY29kZWRIZWFkZXIgPSB0cnVlOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLS8vIFRoZSBkYXRhIGluIGFuIFhCTSBmaWxlIGlzIHByb3ZpZGVk
IGFzIGFuIGFycmF5IG9mIGVpdGhlciAiY2hhciIgb3IgInNob3J0IgotLy8gdmFsdWVzLiBUaGVz
ZSB2YWx1ZXMgYXJlIGRlY29kZWQgb25lIGF0IGEgdGltZSB1c2luZyBzdHJ0b3VsKCkgYW5kIHRo
ZSBiaXRzCi0vLyBhcmUgdXNlZCB0byBzZXQgdGhlIGFscGhhIHZhbHVlIGZvciB0aGUgaW1hZ2Uu
Ci0vLwotLy8gVGhlIHZhbHVlIGZvciB0aGUgY29sb3IgaXMgYWx3YXlzIHNldCB0byBSR0IoMCww
LDApLCB0aGUgYWxwaGEgdmFsdWUgdGFrZXMKLS8vIGNhcmUgb2Ygd2hldGhlciBvciBub3QgdGhl
IHBpeGVsIHNob3dzIHVwLgotLy8KLS8vIFNpbmNlIHRoZSBkYXRhIG1heSBhcnJpdmUgaW4gY2h1
bmtzLCBhbmQgbWFueSBwcmVmaXhlcyBvZiB2YWxpZCBudW1iZXJzIGFyZQotLy8gdGhlbXNlbHZl
cyB2YWxpZCBudW1iZXJzLCB0aGlzIGNvZGUgbmVlZHMgdG8gY2hlY2sgdG8gbWFrZSBzdXJlIHRo
YXQgdGhlCi0vLyB2YWx1ZSBpcyBub3QgdHJ1bmNhdGVkLiBUaGlzIGlzIGRvbmUgYnkgY29uc3Vt
aW5nIHNwYWNlIGFmdGVyIHRoZSB2YWx1ZQotLy8gcmVhZCB1bnRpbCBhICcsJyBvciBhICd9JyBv
Y2N1cnMuIEluIGEgdmFsaWQgWEJNLCBvbmUgb2YgdGhlc2UgY2hhcmFjdGVycwotLy8gd2lsbCBv
Y2N1ciBhZnRlciBlYWNoIHZhbHVlLgotLy8KLS8vIFRoZSBjaGVja3MgYWZ0ZXIgc3RydG91bCBh
cmUgYmFzZWQgb24gTW96aWxsYSdzIG5zWEJNRGVjb2Rlci5jcHAuCi1ib29sIFhCTUltYWdlRGVj
b2Rlcjo6ZGVjb2RlRGF0dW0odWludDE2X3QqIHJlc3VsdCkKLXsKLSAgICBjb25zdCBjaGFyKiBp
bnB1dCA9IG1feGJtU3RyaW5nLmRhdGEoKTsKLSAgICBjaGFyKiBlbmRQdHI7Ci0gICAgY29uc3Qg
dWludDE2X3QgdmFsdWUgPSBzdHJ0b3VsKCZpbnB1dFttX2RlY29kZU9mZnNldF0sICZlbmRQdHIs
IDApOwotCi0gICAgLy8gRW5kIG9mIGlucHV0IG9yIGNvdWxkbid0IGRlY29kZSBhbnl0aGluZywg
Y2FuJ3QgZ28gYW55IGZ1cnRoZXIuCi0gICAgaWYgKGVuZFB0ciA9PSAmaW5wdXRbbV9kZWNvZGVP
ZmZzZXRdIHx8ICEqZW5kUHRyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBQb3Nz
aWJseSBhIGhleCB2YWx1ZSB0cnVuY2F0ZWQgYXQgIjB4Ii4gTmVlZCBtb3JlIGRhdGEuCi0gICAg
aWYgKHZhbHVlID09IDAgJiYgKCplbmRQdHIgPT0gJ3gnIHx8ICplbmRQdHIgPT0gJ1gnKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gU2tpcCB3aGl0ZXNwYWNlCi0gICAgd2hpbGUg
KCplbmRQdHIgJiYgaXNBU0NJSVNwYWNlKCplbmRQdHIpKQotICAgICAgICArK2VuZFB0cjsKLQot
ICAgIC8vIE91dCBvZiBpbnB1dCwgZG9uJ3Qga25vdyB3aGF0IGNvbWVzIG5leHQuCi0gICAgaWYg
KCEqZW5kUHRyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJZiB0aGUgbmV4dCBu
b24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgbm90IG9uZSBvZiB0aGVzZSwgaXQncyBhbiBlcnJv
ci4KLSAgICAvLyBFdmVyeSB2YWxpZCBlbnRyeSBpbiB0aGUgZGF0YSBhcnJheSBuZWVkcyB0byBi
ZSBmb2xsb3dlZCBieSAnLCcgb3IgJ30nLgotICAgIGlmICgqZW5kUHRyICE9ICcsJyAmJiAqZW5k
UHRyICE9ICd9JykgewotICAgICAgICBzZXRGYWlsZWQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhIHZhbHVlLgotICAgICpy
ZXN1bHQgPSB2YWx1ZTsKLQotICAgIC8vIFNraXAgb3ZlciB0aGUgZGVjb2RlZCB2YWx1ZSBwbHVz
IHRoZSBkZWxpbWl0ZXIgKCcsJyBvciAnfScpLgotICAgIG1fZGVjb2RlT2Zmc2V0ICs9ICgoZW5k
UHRyIC0gJmlucHV0W21fZGVjb2RlT2Zmc2V0XSkgKyAxKTsKLSAgICBBU1NFUlQobV9kZWNvZGVP
ZmZzZXQgPD0gbV94Ym1TdHJpbmcuc2l6ZSgpKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIFhCTUltYWdlRGVjb2Rlcjo6ZGVjb2RlRGF0YSgpCi17Ci0gICAgQVNTRVJUKG1fZGVjb2Rl
T2Zmc2V0IDw9IG1feGJtU3RyaW5nLnNpemUoKSk7Ci0gICAgQVNTRVJUKG1fZGVjb2RlZEhlYWRl
ciAmJiAhbV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSk7Ci0KLSAgICBSR0JBMzJCdWZmZXIm
IGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwotCi0gICAgQVNTRVJUKGZyYW1lLnN0YXR1
cygpID09IFJHQkEzMkJ1ZmZlcjo6RnJhbWVQYXJ0aWFsKTsKLQotICAgIGNvbnN0IGludCBiaXRz
UGVyUm93ID0gc2l6ZSgpLndpZHRoKCk7Ci0KLSAgICBBU1NFUlQobV9kYXRhVHlwZSAhPSBVbmtu
b3duKTsKLQotICAgIHdoaWxlIChtX2JpdHNEZWNvZGVkIDwgKHNpemUoKS53aWR0aCgpICogc2l6
ZSgpLmhlaWdodCgpKSkgewotICAgICAgICB1aW50MTZfdCB2YWx1ZTsKLSAgICAgICAgaWYgKCFk
ZWNvZGVEYXR1bSgmdmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGludCB4ID0gbV9iaXRzRGVjb2RlZCAlIGJpdHNQZXJSb3c7Ci0gICAgICAgIGNvbnN0IGludCB5
ID0gbV9iaXRzRGVjb2RlZCAvIGJpdHNQZXJSb3c7Ci0KLSAgICAgICAgLy8gSG93IG1hbnkgYml0
cyB3aWxsIGJlIHdyaXR0ZW4/Ci0gICAgICAgIGNvbnN0IGludCBiaXRzID0gc3RkOjptaW4oYml0
c1BlclJvdyAtIHgsIChtX2RhdGFUeXBlID09IFgxMSkgPyA4IDogMTYpOwotCi0gICAgICAgIC8v
IE9ubHkgdGhlIGFscGhhIGNoYW5uZWwgbWF0dGVycyBoZXJlLCBzbyB0aGUgY29sb3IgdmFsdWVz
IGFyZSBhbHdheXMKLSAgICAgICAgLy8gc2V0IHRvIDAuCi0gICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYml0czsgKytpKQotICAgICAgICAgICAgZnJhbWUuc2V0UkdCQSh4KyssIHksIDAsIDAs
IDAsIHZhbHVlICYgKDEgPDwgaSkgPyAyNTUgOiAwKTsKLQotICAgICAgICBtX2JpdHNEZWNvZGVk
ICs9IGJpdHM7Ci0gICAgfQotCi0gICAgZnJhbWUuc2V0U3RhdHVzKFJHQkEzMkJ1ZmZlcjo6RnJh
bWVDb21wbGV0ZSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gRGVjb2RlIGFzIG11Y2gg
YXMgd2UgY2FuIG9mIHRoZSBYQk0gZmlsZS4KLXZvaWQgWEJNSW1hZ2VEZWNvZGVyOjpkZWNvZGUo
Ym9vbCBzaXplT25seSkKLXsKLSAgICBpZiAoZmFpbGVkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGJvb2wgZGVjb2RlUmVzdWx0ID0gZmFsc2U7Ci0KLSAgICBpZiAoIW1fZGVjb2RlZEhlYWRl
cikKLSAgICAgICAgZGVjb2RlUmVzdWx0ID0gZGVjb2RlSGVhZGVyKCk7Ci0KLSAgICBpZiAobV9k
ZWNvZGVkSGVhZGVyICYmICFzaXplT25seSkKLSAgICAgICAgZGVjb2RlUmVzdWx0ID0gZGVjb2Rl
RGF0YSgpOwotCi0gICAgLy8gVGhlIGhlYWRlciBvciB0aGUgZGF0YSBjb3VsZCBub3QgYmUgZGVj
b2RlZCwgYnV0IHRoZXJlIGlzIG5vIG1vcmUKLSAgICAvLyBkYXRhOiBkZWNvZGluZyBoYXMgZmFp
bGVkLgotICAgIGlmICghZGVjb2RlUmVzdWx0ICYmIG1fYWxsRGF0YVJlY2VpdmVkKQotICAgICAg
ICBzZXRGYWlsZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94Ym0vWEJNSW1hZ2VEZWNvZGVy
LmgJKHJldmlzaW9uIDUzMDg1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy94
Ym0vWEJNSW1hZ2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFhCTUltYWdlRGVjb2Rlcl9oCi0jZGVmaW5lIFhCTUltYWdlRGVjb2Rlcl9o
Ci0KLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0g
ICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBYQk0gaW1hZ2UgZm9ybWF0LgotICAgIGNsYXNz
IFhCTUltYWdlRGVjb2RlciA6IHB1YmxpYyBJbWFnZURlY29kZXIgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgWEJNSW1hZ2VEZWNvZGVyKCk7Ci0gICAgICAgIHZpcnR1YWwgflhCTUltYWdlRGVjb2Rl
cigpIHt9Ci0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dCB7IHJldHVybiAieGJtIjsgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgICAgICAvLyBXaGV0aGVy
IG9yIG5vdCB0aGUgc2l6ZSBpbmZvcm1hdGlvbiBoYXMgYmVlbiBkZWNvZGVkIHlldC4KLSAgICAg
ICAgdmlydHVhbCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpOwotICAgICAgICB2aXJ0dWFsIFJHQkEz
MkJ1ZmZlciogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCk7Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICAvLyBSZXN0cmljdHMgaW1hZ2Ugc2l6ZSB0byBzb21ldGhpbmcgInJlYXNvbmFi
bGUiLgotICAgICAgICAvLyBUaGlzIHByb3RlY3RzIGFnYWlucyByaWRpY3Vsb3VzbHkgbGFyZ2Ug
WEJNcyBhbmQgcHJldmVudHMgYmFkIHRoaW5ncwotICAgICAgICAvLyBsaWtlIG92ZXJmbG93IG9m
IG1fYml0c0RlY29kZWQuCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4RGltZW5zaW9uID0g
NjU1MzU7Ci0KLSAgICAgICAgLy8gSW4gWDEwLCBhbiBhcnJheSBvZiB0eXBlICJzaG9ydCIgaXMg
dXNlZCB0byBkZWNsYXJlIHRoZSBpbWFnZSBiaXRzLAotICAgICAgICAvLyBidXQgaW4gWDExLCB0
aGUgdHlwZSBpcyAiY2hhciIuCi0gICAgICAgIGVudW0gRGF0YVR5cGUgewotICAgICAgICAgICAg
VW5rbm93biwKLSAgICAgICAgICAgIFgxMCwKLSAgICAgICAgICAgIFgxMSwKLSAgICAgICAgfTsK
LQotICAgICAgICBib29sIGRlY29kZUhlYWRlcigpOwotICAgICAgICBib29sIGRlY29kZURhdHVt
KHVpbnQxNl90KiByZXN1bHQpOwotICAgICAgICBib29sIGRlY29kZURhdGEoKTsKLSAgICAgICAg
dm9pZCBkZWNvZGUoYm9vbCBzaXplT25seSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IENvcHlpbmcg
YWxsIHRoZSBYQk0gZGF0YSBqdXN0IHNvIHdlIGNhbiBOVUxMLXRlcm1pbmF0ZSwganVzdAotICAg
ICAgICAvLyBzbyB3ZSBjYW4gdXNlIHNzY2FuZigpIGFuZCBmcmllbmRzLCBpcyBsYW1lLiAgVGhl
IGRlY29kZXIgc2hvdWxkIGJlCi0gICAgICAgIC8vIHJld3JpdHRlbiB0byBvcGVyYXRlIG9uIG1f
ZGF0YSBkaXJlY3RseS4KLSAgICAgICAgVmVjdG9yPGNoYXI+IG1feGJtU3RyaW5nOyAgLy8gTnVs
bC10ZXJtaW5hdGVkIGNvcHkgb2YgdGhlIFhCTSBkYXRhLgotICAgICAgICBzaXplX3QgbV9kZWNv
ZGVPZmZzZXQ7ICAgIC8vIFRoZSBjdXJyZW50IG9mZnNldCBpbiBtX3hibVN0cmluZyBmb3IgZGVj
b2RpbmcuCi0gICAgICAgIGJvb2wgbV9hbGxEYXRhUmVjZWl2ZWQ7Ci0gICAgICAgIGJvb2wgbV9k
ZWNvZGVkSGVhZGVyOwotICAgICAgICBlbnVtIERhdGFUeXBlIG1fZGF0YVR5cGU7Ci0gICAgICAg
IGludCBtX2JpdHNEZWNvZGVkOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCg==
</data>
<flag name="review"
          id="28546"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>