<?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>45797</bug_id>
          
          <creation_ts>2010-09-14 17:57:12 -0700</creation_ts>
          <short_desc>[BREWMP] Port TextCodec</short_desc>
          <delta_ts>2010-10-16 14:05:45 -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>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>
          
          <blocked>33564</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beergun</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279289</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-14 17:57:12 -0700</bug_when>
    <thetext>Implement TextCodec with Brew MP&apos;s ICharsetConv.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279293</commentid>
    <comment_count>1</comment_count>
      <attachid>67628</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-09-14 18:10:40 -0700</bug_when>
    <thetext>Created attachment 67628
Patch

Support only UTF-8 for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288498</commentid>
    <comment_count>2</comment_count>
      <attachid>69523</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-01 14:45:27 -0700</bug_when>
    <thetext>Created attachment 69523
Patch

Append L&apos;?&apos; on AEE_BADITEM when stopOnError is set. Otherwise, Acid 3 test 70 fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294497</commentid>
    <comment_count>3</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-14 17:41:36 -0700</bug_when>
    <thetext>Refer to https://brewmobileplatform.qualcomm.com/devnet/resources/devEx/library/references/c/bmp_sdk_api_ref/HTML/APIReference/system/Text/Interfaces/ICharsetConv/ICharsetConv.htm for ICharsetConv</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294507</commentid>
    <comment_count>4</comment_count>
      <attachid>69523</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-14 17:56:03 -0700</bug_when>
    <thetext>Comment on attachment 69523
Patch

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

&gt; WebCore/platform/text/brew/TextCodecBrew.cpp:195
&gt; +

This blank line seems unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295161</commentid>
    <comment_count>5</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-16 14:05:11 -0700</bug_when>
    <thetext>Manually committed r69917: http://trac.webkit.org/changeset/69917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295162</commentid>
    <comment_count>6</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-16 14:05:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67628</attachid>
            <date>2010-09-14 18:10:40 -0700</date>
            <delta_ts>2010-10-01 14:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>TextCodec.patch</filename>
            <type>text/plain</type>
            <size>13502</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDktMTQgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IFRleHRDb2RlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDU3OTcKKworICAgICAgICBJbXBsZW1lbnQgVGV4dENvZGVjIHdp
dGggQnJldyBNUCdzIElDaGFyc2V0Q29udi4KKyAgICAgICAgT25seSBVVEYtOCBpcyBzdXBwb3J0
ZWQgZm9yIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6ZW5jb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkQmFzZVRleHRDb2RlY01hcHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvYnJldy9UZXh0
Q29kZWNCcmV3LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXdUZXh0Q29kZWNCcmV3
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0JyZXc6OnJlZ2lzdGVyQmFzZUVuY29kaW5n
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjQnJldzo6cmVnaXN0ZXJCYXNlQ29k
ZWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0JyZXc6OnJlZ2lzdGVyRXh0ZW5kZWRF
bmNvZGluZ05hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0JyZXc6OnJlZ2lzdGVy
RXh0ZW5kZWRDb2RlY3MpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjQnJldzo6VGV4dENv
ZGVjQnJldyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNCcmV3Ojp+VGV4dENvZGVjQnJl
dyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNCcmV3OjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjQnJldzo6ZW5jb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L2JyZXcvVGV4dENvZGVjQnJldy5oOiBBZGRlZC4KKwogMjAxMC0wOS0xNCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEF0dGVtcHRlZCBDaHJvbWl1bSBidWlsZCBm
aXguICBUaGUgY29tcGlsZXIgY2FuJ3QgdGVsbCB0aGF0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEVuY29kaW5nLmNwcAkocmV2aXNpb24gNjc1MTgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMCBA
QCBDU3RyaW5nIFRleHRFbmNvZGluZzo6ZW5jb2RlKGNvbnN0IFVDaGFyCiAgICAgLy8gbm9ybWFs
aXphdGlvbiB3aWxsIGJlIGRvbmUgYnkgV2luZG93cyBDRSBBUEkKICAgICBPd25QdHI8VGV4dENv
ZGVjPiB0ZXh0Q29kZWMgPSBuZXdUZXh0Q29kZWMoKnRoaXMpOwogICAgIHJldHVybiB0ZXh0Q29k
ZWMuZ2V0KCkgPyB0ZXh0Q29kZWMtPmVuY29kZShjaGFyYWN0ZXJzLCBsZW5ndGgsIGhhbmRsaW5n
KSA6IENTdHJpbmcoKTsKKyNlbGlmIFVTRShCUkVXTVBfVU5JQ09ERSkKKyAgICAvLyBGSVhNRTog
bm90IHN1cmUgaWYgQnJldyBNUCBub3JtYWxpemVzIHRoZSBpbnB1dCBzdHJpbmcgYXV0b21hdGlj
YWxseQorICAgIE93blB0cjxUZXh0Q29kZWM+IHRleHRDb2RlYyA9IG5ld1RleHRDb2RlYygqdGhp
cyk7CisgICAgcmV0dXJuIHRleHRDb2RlYy5nZXQoKSA/IHRleHRDb2RlYy0+ZW5jb2RlKGNoYXJh
Y3RlcnMsIGxlbmd0aCwgaGFuZGxpbmcpIDogQ1N0cmluZygpOwogI2VuZGlmCiB9CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAkocmV2
aXNpb24gNjc1MTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiVGV4dENv
ZGVjTGF0aW4xLmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjVXNlckRlZmluZWQuaCIKICNpbmNsdWRl
ICJUZXh0Q29kZWNVVEYxNi5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUg
PHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgpAQCAtNTEsNiArNTIsOSBAQAogI2lmIFVTRShHTElCX1VO
SUNPREUpCiAjaW5jbHVkZSAiZ3RrL1RleHRDb2RlY0d0ay5oIgogI2VuZGlmCisjaWYgVVNFKEJS
RVdNUF9VTklDT0RFKQorI2luY2x1ZGUgImJyZXcvVGV4dENvZGVjQnJldy5oIgorI2VuZGlmCiAj
aWYgT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkKICNpbmNsdWRlICJUZXh0Q29kZWNXaW5DRS5o
IgogI2VuZGlmCkBAIC0yMzUsNiArMjM5LDExIEBAIHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRD
b2RlY01hcHMoKQogICAgIFRleHRDb2RlY0d0azo6cmVnaXN0ZXJCYXNlQ29kZWNzKGFkZFRvVGV4
dENvZGVjTWFwKTsKICNlbmRpZgogCisjaWYgVVNFKEJSRVdNUF9VTklDT0RFKQorICAgIFRleHRD
b2RlY0JyZXc6OnJlZ2lzdGVyQmFzZUVuY29kaW5nTmFtZXMoYWRkVG9UZXh0RW5jb2RpbmdOYW1l
TWFwKTsKKyAgICBUZXh0Q29kZWNCcmV3OjpyZWdpc3RlckJhc2VDb2RlY3MoYWRkVG9UZXh0Q29k
ZWNNYXApOworI2VuZGlmCisKICNpZiBPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKQogICAgIFRl
eHRDb2RlY1dpbkNFOjpyZWdpc3RlckJhc2VFbmNvZGluZ05hbWVzKGFkZFRvVGV4dEVuY29kaW5n
TmFtZU1hcCk7CiAgICAgVGV4dENvZGVjV2luQ0U6OnJlZ2lzdGVyQmFzZUNvZGVjcyhhZGRUb1Rl
eHRDb2RlY01hcCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvYnJldy9UZXh0Q29kZWNC
cmV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvYnJldy9UZXh0Q29k
ZWNCcmV3LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9icmV3L1Rl
eHRDb2RlY0JyZXcuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dENvZGVjQnJldy5oIgor
CisjaW5jbHVkZSAiQUVFQXBwR2VuLmgiCisjaW5jbHVkZSAiQUVFSUNoYXJzZXRDb252LmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBOb3Qgc3VyZSBpZiB0aGVyZSBh
cmUgQnJldyBNUCBkZXZpY2VzIHdoaWNoIHVzZSBiaWcgZW5kaWFuLgorY29uc3QgY2hhciogV2Vi
Q29yZTo6VGV4dENvZGVjQnJldzo6bV9pbnRlcm5hbEVuY29kaW5nTmFtZSA9ICJVVEYtMTZMRSI7
CisKK3N0YXRpYyBQYXNzT3duUHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjQnJldyhjb25zdCBU
ZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKK3sKKyAgICByZXR1cm4gbmV3IFRl
eHRDb2RlY0JyZXcoZW5jb2RpbmcpOworfQorCit2b2lkIFRleHRDb2RlY0JyZXc6OnJlZ2lzdGVy
QmFzZUVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKK3sKKyAg
ICByZWdpc3RyYXIoIlVURi04IiwgIlVURi04Iik7Cit9CisKK3ZvaWQgVGV4dENvZGVjQnJldzo6
cmVnaXN0ZXJCYXNlQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCit7CisgICAg
cmVnaXN0cmFyKCJVVEYtOCIsIG5ld1RleHRDb2RlY0JyZXcsIDApOworfQorCit2b2lkIFRleHRD
b2RlY0JyZXc6OnJlZ2lzdGVyRXh0ZW5kZWRFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lz
dHJhciByZWdpc3RyYXIpCit7CisgICAgLy8gRklYTUU6IE5vdCBzdXJlIGhvdyB0byBlbnVtZXJh
dGUgYWxsIGF2YWlsYWJsZSBlbmNvZGluZ3MuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBUZXh0Q29kZWNCcmV3OjpyZWdpc3RlckV4dGVuZGVkQ29kZWNzKFRleHRDb2RlY1JlZ2lz
dHJhciByZWdpc3RyYXIpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworVGV4dENvZGVj
QnJldzo6VGV4dENvZGVjQnJldyhjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQorICAgIDog
bV9jaGFyc2V0Q29udmVydGVyKDApCisgICAgLCBtX2VuY29kaW5nKGVuY29kaW5nKQorICAgICwg
bV9udW1CdWZmZXJlZEJ5dGVzKDApCit7CisgICAgU3RyaW5nIGZvcm1hdCA9IFN0cmluZzo6Zm9y
bWF0KCIlcz4lcyIsIGVuY29kaW5nLm5hbWUoKSwgbV9pbnRlcm5hbEVuY29kaW5nTmFtZSk7CisK
KyAgICBJU2hlbGwqIHNoZWxsID0gcmVpbnRlcnByZXRfY2FzdDxBRUVBcHBsZXQqPihHRVRBUFBJ
TlNUQU5DRSgpKS0+bV9wSVNoZWxsOworICAgIEFFRUNMU0lEIGNsYXNzSUQgPSBJU0hFTExfR2V0
SGFuZGxlcihzaGVsbCwgQUVFSUlEX0lDaGFyc2V0Q29udiwgZm9ybWF0LmxhdGluMSgpLmRhdGEo
KSk7CisgICAgSVNIRUxMX0NyZWF0ZUluc3RhbmNlKHNoZWxsLCBjbGFzc0lELCByZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJm1fY2hhcnNldENvbnZlcnRlcikpOworCisgICAgQVNTRVJUKG1fY2hh
cnNldENvbnZlcnRlcik7Cit9CisKK1RleHRDb2RlY0JyZXc6On5UZXh0Q29kZWNCcmV3KCkKK3sK
KyAgICBpZiAobV9jaGFyc2V0Q29udmVydGVyKQorICAgICAgICBJQ2hhcnNldENvbnZfUmVsZWFz
ZShtX2NoYXJzZXRDb252ZXJ0ZXIpOworfQorCitTdHJpbmcgVGV4dENvZGVjQnJldzo6ZGVjb2Rl
KGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sIHN0b3BP
bkVycm9yLCBib29sJiBzYXdFcnJvcikKK3sKKyAgICBpbnQgY29kZSA9IElDaGFyc2V0Q29udl9J
bml0aWFsaXplKG1fY2hhcnNldENvbnZlcnRlciwgbV9lbmNvZGluZy5uYW1lKCksIG1faW50ZXJu
YWxFbmNvZGluZ05hbWUsIDApOworICAgIEFTU0VSVChjb2RlID09IEFFRV9TVUNDRVNTKTsKKwor
ICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBwcmVm
aXhlZEJ5dGVzKGxlbmd0aCk7CisKKyAgICBpbnQgc3JjU2l6ZTsKKyAgICB1bnNpZ25lZCBjaGFy
KiBzcmNCZWdpbjsKKworICAgIGlmIChtX251bUJ1ZmZlcmVkQnl0ZXMpIHsKKyAgICAgICAgc3Jj
U2l6ZSA9IGxlbmd0aCArIG1fbnVtQnVmZmVyZWRCeXRlczsKKyAgICAgICAgcHJlZml4ZWRCeXRl
cy5ncm93KHNyY1NpemUpOworICAgICAgICBtZW1jcHkocHJlZml4ZWRCeXRlcy5kYXRhKCksIG1f
YnVmZmVyZWRCeXRlcywgbV9udW1CdWZmZXJlZEJ5dGVzKTsKKyAgICAgICAgbWVtY3B5KHByZWZp
eGVkQnl0ZXMuZGF0YSgpICsgbV9udW1CdWZmZXJlZEJ5dGVzLCBieXRlcywgbGVuZ3RoKTsKKwor
ICAgICAgICBzcmNCZWdpbiA9IHByZWZpeGVkQnl0ZXMuZGF0YSgpOworCisgICAgICAgIC8vIGFs
bCBidWZmZXJlZCBieXRlcyBhcmUgY29uc3VtZWQgbm93CisgICAgICAgIG1fbnVtQnVmZmVyZWRC
eXRlcyA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3JjU2l6ZSA9IGxlbmd0aDsKKyAgICAg
ICAgc3JjQmVnaW4gPSBjb25zdF9jYXN0PHVuc2lnbmVkIGNoYXIqPihyZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihieXRlcykpOworICAgIH0KKworICAgIHVuc2lnbmVkIGNo
YXIqIHNyYyA9IHNyY0JlZ2luOworICAgIHVuc2lnbmVkIGNoYXIqIHNyY0VuZCA9IHNyY0JlZ2lu
ICsgc3JjU2l6ZTsKKworICAgIFZlY3RvcjxVQ2hhcj4gZHN0QnVmZmVyKHNyY1NpemUpOworCisg
ICAgd2hpbGUgKHNyYyA8IHNyY0VuZCkgeworICAgICAgICBpbnQgbnVtQ2hhcnNDb252ZXJ0ZWQ7
CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRzdEJlZ2luID0gcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oZHN0QnVmZmVyLmRhdGEoKSk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRz
dCA9IGRzdEJlZ2luOworICAgICAgICBpbnQgZHN0U2l6ZSA9IGRzdEJ1ZmZlci5zaXplKCkgKiBz
aXplb2YoVUNoYXIpOworCisgICAgICAgIGNvZGUgPSBJQ2hhcnNldENvbnZfQ2hhcnNldENvbnZl
cnQobV9jaGFyc2V0Q29udmVydGVyLCAmc3JjLCAmc3JjU2l6ZSwgJmRzdCwgJmRzdFNpemUsICZu
dW1DaGFyc0NvbnZlcnRlZCk7CisgICAgICAgIEFTU0VSVChjb2RlICE9IEFFRV9FTk9TVUNIKTsK
KworICAgICAgICBpZiAoY29kZSA9PSBBRUVfRUJVRkZFUlRPT1NNQUxMKSB7CisgICAgICAgICAg
ICAvLyBJbmNyZWFzZSB0aGUgYnVmZmVyIGFuZCB0cnkgaXQgYWdhaW4uCisgICAgICAgICAgICBk
c3RCdWZmZXIuZ3Jvdyhkc3RCdWZmZXIuc2l6ZSgpICogMik7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb2RlID09IEFFRV9FQkFESVRFTSkgeworICAg
ICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOworICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBzcmMrKzsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChjb2RlID09IEFFRV9FSU5DT01QTEVURUlURU0pIHsKKyAgICAgICAgICAg
IGlmIChmbHVzaCkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiUGFydGlhbCBieXRlcyBh
dCBlbmQgb2YgaW5wdXQgd2hpbGUgZmx1c2ggcmVxdWVzdGVkLiIpOworICAgICAgICAgICAgICAg
IHNhd0Vycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IHNyY0VuZCAtIHNy
YzsKKyAgICAgICAgICAgIG1lbWNweShtX2J1ZmZlcmVkQnl0ZXMsIHNyYywgbV9udW1CdWZmZXJl
ZEJ5dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaW50IG51
bUNoYXJzID0gKGRzdCAtIGRzdEJlZ2luKSAvIHNpemVvZihVQ2hhcik7CisgICAgICAgIGlmIChu
dW1DaGFycyA+IDApCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRzdEJ1ZmZlci5kYXRhKCks
IG51bUNoYXJzKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwor
fQorCitDU3RyaW5nIFRleHRDb2RlY0JyZXc6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGVIYW5kbGluZyBoYW5kbGluZykKK3sKKyAgICBp
ZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgdW5zaWduZWQgaW50IHJlcGxh
Y2VtZW50Q2hhcmFjdGVyID0gJz8nOworCisgICAgLy8gRklYTUU6IEltcG9zc2libGUgdG8gaGFu
ZGxlIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzIG9yIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5j
b2RhYmxlcyB3aXRoIElDaGFyc2V0Q29udi4KKyAgICBpbnQgY29kZSA9IElDaGFyc2V0Q29udl9J
bml0aWFsaXplKG1fY2hhcnNldENvbnZlcnRlciwgbV9pbnRlcm5hbEVuY29kaW5nTmFtZSwgbV9l
bmNvZGluZy5uYW1lKCksIHJlcGxhY2VtZW50Q2hhcmFjdGVyKTsKKyAgICBBU1NFUlQoY29kZSA9
PSBBRUVfU1VDQ0VTUyk7CisKKyAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OworCisgICAgaW50IHNy
Y1NpemUgPSBsZW5ndGggKiBzaXplb2YoVUNoYXIpOworICAgIHVuc2lnbmVkIGNoYXIqIHNyY0Jl
Z2luID0gY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oY2hhcmFjdGVycykpOworICAgIHVuc2lnbmVkIGNoYXIqIHNyYyA9IHNy
Y0JlZ2luOworICAgIHVuc2lnbmVkIGNoYXIqIHNyY0VuZCA9IHNyY0JlZ2luICsgc3JjU2l6ZTsK
KworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBkc3RCdWZmZXIobGVuZ3RoICogc2l6ZW9mKFVD
aGFyKSk7CisKKyAgICB3aGlsZSAoc3JjIDwgc3JjRW5kKSB7CisgICAgICAgIGludCBudW1DaGFy
c0NvbnZlcnRlZDsKKyAgICAgICAgdW5zaWduZWQgY2hhciogZHN0QmVnaW4gPSBkc3RCdWZmZXIu
ZGF0YSgpOworICAgICAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSBkc3RCZWdpbjsKKyAgICAgICAg
aW50IGRzdFNpemUgPSBkc3RCdWZmZXIuc2l6ZSgpOworCisgICAgICAgIGNvZGUgPSBJQ2hhcnNl
dENvbnZfQ2hhcnNldENvbnZlcnQobV9jaGFyc2V0Q29udmVydGVyLCAmc3JjLCAmc3JjU2l6ZSwg
JmRzdCwgJmRzdFNpemUsICZudW1DaGFyc0NvbnZlcnRlZCk7CisgICAgICAgIEFTU0VSVChjb2Rl
ICE9IEFFRV9FSU5DT01QTEVURUlURU0pOworCisgICAgICAgIGlmIChjb2RlID09IEFFRV9FTk9T
VUNIKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkNvbnZlcnNpb24gZXJyb3IsIENvZGU9JWQi
LCBjb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChjb2RlID09IEFFRV9FQlVGRkVSVE9PU01BTEwpIHsKKyAgICAgICAgICAgIC8v
IEluY3JlYXNlIHRoZSBidWZmZXIgYW5kIHRyeSBpdCBhZ2Fpbi4KKyAgICAgICAgICAgIGRzdEJ1
ZmZlci5ncm93KGRzdEJ1ZmZlci5zaXplKCkgKiAyKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvZGUgPT0gQUVFX0VCQURJVEVNKQorICAgICAgICAg
ICAgc3JjICs9IHNpemVvZihVQ2hhcik7IC8vIFNraXAgdGhlIGludmFsaWQgY2hhcmFjdGVyCisK
KyAgICAgICAgaW50IG51bUJ5dGVzID0gZHN0IC0gZHN0QmVnaW47CisgICAgICAgIGlmIChudW1C
eXRlcyA+IDApCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRzdEJ1ZmZlci5kYXRhKCksIG51
bUJ5dGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ1N0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1
bHQuc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2JyZXcvVGV4dENvZGVjQnJldy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vdGV4dC9icmV3L1RleHRDb2RlY0JyZXcuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9icmV3L1RleHRDb2RlY0JyZXcuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRleHRDb2RlY0JyZXdfaAorI2Rl
ZmluZSBUZXh0Q29kZWNCcmV3X2gKKworI2luY2x1ZGUgIlRleHRDb2RlYy5oIgorI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgorCit0eXBlZGVmIHN0cnVjdCBJQ2hhcnNldENvbnYgSUNoYXJzZXRD
b252OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRDb2RlY0JyZXcgOiBwdWJs
aWMgVGV4dENvZGVjIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJhc2VFbmNv
ZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhcik7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJCYXNlQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhcik7CisKKyAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckV4dGVuZGVkRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIpOworICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5kZWRDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyKTsKKwor
ICAgIFRleHRDb2RlY0JyZXcoY29uc3QgVGV4dEVuY29kaW5nJik7CisgICAgdmlydHVhbCB+VGV4
dENvZGVjQnJldygpOworCisgICAgdmlydHVhbCBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIqLCBz
aXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJv
cik7CisgICAgdmlydHVhbCBDU3RyaW5nIGVuY29kZShjb25zdCBVQ2hhciosIHNpemVfdCBsZW5n
dGgsIFVuZW5jb2RhYmxlSGFuZGxpbmcpOworCitwcml2YXRlOgorICAgIFRleHRFbmNvZGluZyBt
X2VuY29kaW5nOworICAgIHNpemVfdCBtX251bUJ1ZmZlcmVkQnl0ZXM7CisgICAgdW5zaWduZWQg
Y2hhciBtX2J1ZmZlcmVkQnl0ZXNbMTZdOyAvLyBiaWdnZXIgdGhhbiBhbnkgc2luZ2xlIG11bHRp
LWJ5dGUgY2hhcmFjdGVyCisgICAgSUNoYXJzZXRDb252KiBtX2NoYXJzZXRDb252ZXJ0ZXI7CisK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogbV9pbnRlcm5hbEVuY29kaW5nTmFtZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRleHRDb2RlY0JyZXdfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69523</attachid>
            <date>2010-10-01 14:45:27 -0700</date>
            <delta_ts>2010-10-16 14:04:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>TextCodec.patch</filename>
            <type>text/plain</type>
            <size>13534</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODg5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMTAtMDEgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQlJFV01QXSBQb3J0IFRleHRDb2RlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDU3OTcKKworICAgICAgICBJbXBsZW1lbnQgVGV4dENvZGVjIHdp
dGggQnJldyBNUCdzIElDaGFyc2V0Q29udi4KKyAgICAgICAgT25seSBVVEYtOCBpcyBzdXBwb3J0
ZWQgZm9yIG5vdy4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6ZW5jb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkQmFzZVRleHRDb2RlY01hcHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvYnJldy9UZXh0
Q29kZWNCcmV3LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXdUZXh0Q29kZWNCcmV3
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0JyZXc6OnJlZ2lzdGVyQmFzZUVuY29kaW5n
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjQnJldzo6cmVnaXN0ZXJCYXNlQ29k
ZWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0JyZXc6OnJlZ2lzdGVyRXh0ZW5kZWRF
bmNvZGluZ05hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0JyZXc6OnJlZ2lzdGVy
RXh0ZW5kZWRDb2RlY3MpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjQnJldzo6VGV4dENv
ZGVjQnJldyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNCcmV3Ojp+VGV4dENvZGVjQnJl
dyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNCcmV3OjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjQnJldzo6ZW5jb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L2JyZXcvVGV4dENvZGVjQnJldy5oOiBBZGRlZC4KKwogMjAxMC0xMC0wMSAgS3dhbmcgWXVsIFNl
byAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEJyZXcgTVAg
YnVpbGQgZml4LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAJKHJl
dmlzaW9uIDY4ODkyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTAgQEAgQ1N0cmluZyBUZXh0RW5jb2Rpbmc6
OmVuY29kZShjb25zdCBVQ2hhcgogICAgIC8vIG5vcm1hbGl6YXRpb24gd2lsbCBiZSBkb25lIGJ5
IFdpbmRvd3MgQ0UgQVBJCiAgICAgT3duUHRyPFRleHRDb2RlYz4gdGV4dENvZGVjID0gbmV3VGV4
dENvZGVjKCp0aGlzKTsKICAgICByZXR1cm4gdGV4dENvZGVjLmdldCgpID8gdGV4dENvZGVjLT5l
bmNvZGUoY2hhcmFjdGVycywgbGVuZ3RoLCBoYW5kbGluZykgOiBDU3RyaW5nKCk7CisjZWxpZiBV
U0UoQlJFV01QX1VOSUNPREUpCisgICAgLy8gRklYTUU6IG5vdCBzdXJlIGlmIEJyZXcgTVAgbm9y
bWFsaXplcyB0aGUgaW5wdXQgc3RyaW5nIGF1dG9tYXRpY2FsbHkKKyAgICBPd25QdHI8VGV4dENv
ZGVjPiB0ZXh0Q29kZWMgPSBuZXdUZXh0Q29kZWMoKnRoaXMpOworICAgIHJldHVybiB0ZXh0Q29k
ZWMuZ2V0KCkgPyB0ZXh0Q29kZWMtPmVuY29kZShjaGFyYWN0ZXJzLCBsZW5ndGgsIGhhbmRsaW5n
KSA6IENTdHJpbmcoKTsKICNlbmRpZgogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDY4ODkyKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlRleHRDb2RlY0xhdGluMS5oIgogI2luY2x1ZGUg
IlRleHRDb2RlY1VzZXJEZWZpbmVkLmgiCiAjaW5jbHVkZSAiVGV4dENvZGVjVVRGMTYuaCIKKyNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4K
QEAgLTUxLDYgKzUyLDkgQEAKICNpZiBVU0UoR0xJQl9VTklDT0RFKQogI2luY2x1ZGUgImd0ay9U
ZXh0Q29kZWNHdGsuaCIKICNlbmRpZgorI2lmIFVTRShCUkVXTVBfVU5JQ09ERSkKKyNpbmNsdWRl
ICJicmV3L1RleHRDb2RlY0JyZXcuaCIKKyNlbmRpZgogI2lmIE9TKFdJTkNFKSAmJiAhUExBVEZP
Uk0oUVQpCiAjaW5jbHVkZSAiVGV4dENvZGVjV2luQ0UuaCIKICNlbmRpZgpAQCAtMjM1LDYgKzIz
OSwxMSBAQCBzdGF0aWMgdm9pZCBidWlsZEJhc2VUZXh0Q29kZWNNYXBzKCkKICAgICBUZXh0Q29k
ZWNHdGs6OnJlZ2lzdGVyQmFzZUNvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CiAjZW5kaWYKIAor
I2lmIFVTRShCUkVXTVBfVU5JQ09ERSkKKyAgICBUZXh0Q29kZWNCcmV3OjpyZWdpc3RlckJhc2VF
bmNvZGluZ05hbWVzKGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcCk7CisgICAgVGV4dENvZGVjQnJl
dzo6cmVnaXN0ZXJCYXNlQ29kZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsKKyNlbmRpZgorCiAjaWYg
T1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkKICAgICBUZXh0Q29kZWNXaW5DRTo6cmVnaXN0ZXJC
YXNlRW5jb2RpbmdOYW1lcyhhZGRUb1RleHRFbmNvZGluZ05hbWVNYXApOwogICAgIFRleHRDb2Rl
Y1dpbkNFOjpyZWdpc3RlckJhc2VDb2RlY3MoYWRkVG9UZXh0Q29kZWNNYXApOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2JyZXcvVGV4dENvZGVjQnJldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2JyZXcvVGV4dENvZGVjQnJldy5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvYnJldy9UZXh0Q29kZWNCcmV3LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFu
eSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRleHRDb2RlY0JyZXcuaCIKKworI2luY2x1ZGUgIkFFRUFwcEdlbi5o
IgorI2luY2x1ZGUgIkFFRUlDaGFyc2V0Q29udi5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBGSVhNRTogTm90IHN1cmUgaWYgdGhlcmUgYXJlIEJyZXcgTVAgZGV2aWNlcyB3aGlj
aCB1c2UgYmlnIGVuZGlhbi4KK2NvbnN0IGNoYXIqIFdlYkNvcmU6OlRleHRDb2RlY0JyZXc6Om1f
aW50ZXJuYWxFbmNvZGluZ05hbWUgPSAiVVRGLTE2TEUiOworCitzdGF0aWMgUGFzc093blB0cjxU
ZXh0Q29kZWM+IG5ld1RleHRDb2RlY0JyZXcoY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywg
Y29uc3Qgdm9pZCopCit7CisgICAgcmV0dXJuIG5ldyBUZXh0Q29kZWNCcmV3KGVuY29kaW5nKTsK
K30KKwordm9pZCBUZXh0Q29kZWNCcmV3OjpyZWdpc3RlckJhc2VFbmNvZGluZ05hbWVzKEVuY29k
aW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCit7CisgICAgcmVnaXN0cmFyKCJVVEYtOCIsICJV
VEYtOCIpOworfQorCit2b2lkIFRleHRDb2RlY0JyZXc6OnJlZ2lzdGVyQmFzZUNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQoreworICAgIHJlZ2lzdHJhcigiVVRGLTgiLCBuZXdU
ZXh0Q29kZWNCcmV3LCAwKTsKK30KKwordm9pZCBUZXh0Q29kZWNCcmV3OjpyZWdpc3RlckV4dGVu
ZGVkRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQoreworICAg
IC8vIEZJWE1FOiBOb3Qgc3VyZSBob3cgdG8gZW51bWVyYXRlIGFsbCBhdmFpbGFibGUgZW5jb2Rp
bmdzLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgVGV4dENvZGVjQnJldzo6cmVn
aXN0ZXJFeHRlbmRlZENvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1RleHRDb2RlY0JyZXc6OlRleHRDb2RlY0JyZXcoY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKKyAgICA6IG1fY2hhcnNldENvbnZlcnRlcigwKQor
ICAgICwgbV9lbmNvZGluZyhlbmNvZGluZykKKyAgICAsIG1fbnVtQnVmZmVyZWRCeXRlcygwKQor
eworICAgIFN0cmluZyBmb3JtYXQgPSBTdHJpbmc6OmZvcm1hdCgiJXM+JXMiLCBlbmNvZGluZy5u
YW1lKCksIG1faW50ZXJuYWxFbmNvZGluZ05hbWUpOworCisgICAgSVNoZWxsKiBzaGVsbCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QUVFQXBwbGV0Kj4oR0VUQVBQSU5TVEFOQ0UoKSktPm1fcElTaGVsbDsK
KyAgICBBRUVDTFNJRCBjbGFzc0lEID0gSVNIRUxMX0dldEhhbmRsZXIoc2hlbGwsIEFFRUlJRF9J
Q2hhcnNldENvbnYsIGZvcm1hdC5sYXRpbjEoKS5kYXRhKCkpOworICAgIElTSEVMTF9DcmVhdGVJ
bnN0YW5jZShzaGVsbCwgY2xhc3NJRCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX2NoYXJz
ZXRDb252ZXJ0ZXIpKTsKKworICAgIEFTU0VSVChtX2NoYXJzZXRDb252ZXJ0ZXIpOworfQorCitU
ZXh0Q29kZWNCcmV3Ojp+VGV4dENvZGVjQnJldygpCit7CisgICAgaWYgKG1fY2hhcnNldENvbnZl
cnRlcikKKyAgICAgICAgSUNoYXJzZXRDb252X1JlbGVhc2UobV9jaGFyc2V0Q29udmVydGVyKTsK
K30KKworU3RyaW5nIFRleHRDb2RlY0JyZXc6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6
ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbCBzdG9wT25FcnJvciwgYm9vbCYgc2F3RXJyb3Ip
Cit7CisgICAgaW50IGNvZGUgPSBJQ2hhcnNldENvbnZfSW5pdGlhbGl6ZShtX2NoYXJzZXRDb252
ZXJ0ZXIsIG1fZW5jb2RpbmcubmFtZSgpLCBtX2ludGVybmFsRW5jb2RpbmdOYW1lLCAwKTsKKyAg
ICBBU1NFUlQoY29kZSA9PSBBRUVfU1VDQ0VTUyk7CisKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcHJlZml4ZWRCeXRlcyhsZW5ndGgpOworCisg
ICAgaW50IHNyY1NpemU7CisgICAgdW5zaWduZWQgY2hhciogc3JjQmVnaW47CisKKyAgICBpZiAo
bV9udW1CdWZmZXJlZEJ5dGVzKSB7CisgICAgICAgIHNyY1NpemUgPSBsZW5ndGggKyBtX251bUJ1
ZmZlcmVkQnl0ZXM7CisgICAgICAgIHByZWZpeGVkQnl0ZXMuZ3JvdyhzcmNTaXplKTsKKyAgICAg
ICAgbWVtY3B5KHByZWZpeGVkQnl0ZXMuZGF0YSgpLCBtX2J1ZmZlcmVkQnl0ZXMsIG1fbnVtQnVm
ZmVyZWRCeXRlcyk7CisgICAgICAgIG1lbWNweShwcmVmaXhlZEJ5dGVzLmRhdGEoKSArIG1fbnVt
QnVmZmVyZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7CisKKyAgICAgICAgc3JjQmVnaW4gPSBwcmVm
aXhlZEJ5dGVzLmRhdGEoKTsKKworICAgICAgICAvLyBhbGwgYnVmZmVyZWQgYnl0ZXMgYXJlIGNv
bnN1bWVkIG5vdworICAgICAgICBtX251bUJ1ZmZlcmVkQnl0ZXMgPSAwOworICAgIH0gZWxzZSB7
CisgICAgICAgIHNyY1NpemUgPSBsZW5ndGg7CisgICAgICAgIHNyY0JlZ2luID0gY29uc3RfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4o
Ynl0ZXMpKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjaGFyKiBzcmMgPSBzcmNCZWdpbjsKKyAg
ICB1bnNpZ25lZCBjaGFyKiBzcmNFbmQgPSBzcmNCZWdpbiArIHNyY1NpemU7CisKKyAgICBWZWN0
b3I8VUNoYXI+IGRzdEJ1ZmZlcihzcmNTaXplKTsKKworICAgIHdoaWxlIChzcmMgPCBzcmNFbmQp
IHsKKyAgICAgICAgaW50IG51bUNoYXJzQ29udmVydGVkOworICAgICAgICB1bnNpZ25lZCBjaGFy
KiBkc3RCZWdpbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRzdEJ1ZmZlci5k
YXRhKCkpOworICAgICAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSBkc3RCZWdpbjsKKyAgICAgICAg
aW50IGRzdFNpemUgPSBkc3RCdWZmZXIuc2l6ZSgpICogc2l6ZW9mKFVDaGFyKTsKKworICAgICAg
ICBjb2RlID0gSUNoYXJzZXRDb252X0NoYXJzZXRDb252ZXJ0KG1fY2hhcnNldENvbnZlcnRlciwg
JnNyYywgJnNyY1NpemUsICZkc3QsICZkc3RTaXplLCAmbnVtQ2hhcnNDb252ZXJ0ZWQpOworICAg
ICAgICBBU1NFUlQoY29kZSAhPSBBRUVfRU5PU1VDSCk7CisKKyAgICAgICAgaWYgKGNvZGUgPT0g
QUVFX0VCVUZGRVJUT09TTUFMTCkgeworICAgICAgICAgICAgLy8gSW5jcmVhc2UgdGhlIGJ1ZmZl
ciBhbmQgdHJ5IGl0IGFnYWluLgorICAgICAgICAgICAgZHN0QnVmZmVyLmdyb3coZHN0QnVmZmVy
LnNpemUoKSAqIDIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoY29kZSA9PSBBRUVfRUJBRElURU0pIHsKKyAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikgeworICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoTCc/Jyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHNyYysrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvZGUgPT0gQUVF
X0VJTkNPTVBMRVRFSVRFTSkgeworICAgICAgICAgICAgaWYgKGZsdXNoKSB7CisgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJQYXJ0aWFsIGJ5dGVzIGF0IGVuZCBvZiBpbnB1dCB3aGlsZSBmbHVz
aCByZXF1ZXN0ZWQuIik7CisgICAgICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bV9udW1CdWZmZXJlZEJ5dGVzID0gc3JjRW5kIC0gc3JjOworICAgICAgICAgICAgbWVtY3B5KG1f
YnVmZmVyZWRCeXRlcywgc3JjLCBtX251bUJ1ZmZlcmVkQnl0ZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbnVtQ2hhcnMgPSAoZHN0IC0gZHN0QmVnaW4p
IC8gc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgaWYgKG51bUNoYXJzID4gMCkKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoZHN0QnVmZmVyLmRhdGEoKSwgbnVtQ2hhcnMpOworICAgIH0KKworICAg
IHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Cit9CisKK0NTdHJpbmcgVGV4dENvZGVjQnJl
dzo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29k
YWJsZUhhbmRsaW5nIGhhbmRsaW5nKQoreworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1
cm4gIiI7CisKKyAgICB1bnNpZ25lZCBpbnQgcmVwbGFjZW1lbnRDaGFyYWN0ZXIgPSAnPyc7CisK
KyAgICAvLyBGSVhNRTogSW1wb3NzaWJsZSB0byBoYW5kbGUgRW50aXRpZXNGb3JVbmVuY29kYWJs
ZXMgb3IgVVJMRW5jb2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzIHdpdGggSUNoYXJzZXRDb252
LgorICAgIGludCBjb2RlID0gSUNoYXJzZXRDb252X0luaXRpYWxpemUobV9jaGFyc2V0Q29udmVy
dGVyLCBtX2ludGVybmFsRW5jb2RpbmdOYW1lLCBtX2VuY29kaW5nLm5hbWUoKSwgcmVwbGFjZW1l
bnRDaGFyYWN0ZXIpOworICAgIEFTU0VSVChjb2RlID09IEFFRV9TVUNDRVNTKTsKKworICAgIFZl
Y3RvcjxjaGFyPiByZXN1bHQ7CisKKyAgICBpbnQgc3JjU2l6ZSA9IGxlbmd0aCAqIHNpemVvZihV
Q2hhcik7CisgICAgdW5zaWduZWQgY2hhciogc3JjQmVnaW4gPSBjb25zdF9jYXN0PHVuc2lnbmVk
IGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjaGFyYWN0ZXJz
KSk7CisgICAgdW5zaWduZWQgY2hhciogc3JjID0gc3JjQmVnaW47CisgICAgdW5zaWduZWQgY2hh
ciogc3JjRW5kID0gc3JjQmVnaW4gKyBzcmNTaXplOworCisgICAgVmVjdG9yPHVuc2lnbmVkIGNo
YXI+IGRzdEJ1ZmZlcihsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKworICAgIHdoaWxlIChzcmMg
PCBzcmNFbmQpIHsKKyAgICAgICAgaW50IG51bUNoYXJzQ29udmVydGVkOworICAgICAgICB1bnNp
Z25lZCBjaGFyKiBkc3RCZWdpbiA9IGRzdEJ1ZmZlci5kYXRhKCk7CisgICAgICAgIHVuc2lnbmVk
IGNoYXIqIGRzdCA9IGRzdEJlZ2luOworICAgICAgICBpbnQgZHN0U2l6ZSA9IGRzdEJ1ZmZlci5z
aXplKCk7CisKKyAgICAgICAgY29kZSA9IElDaGFyc2V0Q29udl9DaGFyc2V0Q29udmVydChtX2No
YXJzZXRDb252ZXJ0ZXIsICZzcmMsICZzcmNTaXplLCAmZHN0LCAmZHN0U2l6ZSwgJm51bUNoYXJz
Q29udmVydGVkKTsKKyAgICAgICAgQVNTRVJUKGNvZGUgIT0gQUVFX0VJTkNPTVBMRVRFSVRFTSk7
CisKKyAgICAgICAgaWYgKGNvZGUgPT0gQUVFX0VOT1NVQ0gpIHsKKyAgICAgICAgICAgIExPR19F
UlJPUigiQ29udmVyc2lvbiBlcnJvciwgQ29kZT0lZCIsIGNvZGUpOworICAgICAgICAgICAgcmV0
dXJuIENTdHJpbmcoKTsKKworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvZGUgPT0gQUVFX0VC
VUZGRVJUT09TTUFMTCkgeworICAgICAgICAgICAgLy8gSW5jcmVhc2UgdGhlIGJ1ZmZlciBhbmQg
dHJ5IGl0IGFnYWluLgorICAgICAgICAgICAgZHN0QnVmZmVyLmdyb3coZHN0QnVmZmVyLnNpemUo
KSAqIDIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
Y29kZSA9PSBBRUVfRUJBRElURU0pCisgICAgICAgICAgICBzcmMgKz0gc2l6ZW9mKFVDaGFyKTsg
Ly8gU2tpcCB0aGUgaW52YWxpZCBjaGFyYWN0ZXIKKworICAgICAgICBpbnQgbnVtQnl0ZXMgPSBk
c3QgLSBkc3RCZWdpbjsKKyAgICAgICAgaWYgKG51bUJ5dGVzID4gMCkKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoZHN0QnVmZmVyLmRhdGEoKSwgbnVtQnl0ZXMpOworICAgIH0KKworICAgIHJl
dHVybiBDU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvYnJldy9UZXh0Q29k
ZWNCcmV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2JyZXcvVGV4dENv
ZGVjQnJldy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2JyZXcvVGV4
dENvZGVjQnJldy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgVGV4dENvZGVjQnJld19oCisjZGVmaW5lIFRleHRDb2RlY0JyZXdfaAorCisj
aW5jbHVkZSAiVGV4dENvZGVjLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisKK3R5cGVk
ZWYgc3RydWN0IElDaGFyc2V0Q29udiBJQ2hhcnNldENvbnY7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVGV4dENvZGVjQnJldyA6IHB1YmxpYyBUZXh0Q29kZWMgeworcHVibGljOgor
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmFzZUVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVn
aXN0cmFyKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJhc2VDb2RlY3MoVGV4dENvZGVjUmVn
aXN0cmFyKTsKKworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5kZWRFbmNvZGluZ05hbWVz
KEVuY29kaW5nTmFtZVJlZ2lzdHJhcik7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRlbmRl
ZENvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIpOworCisgICAgVGV4dENvZGVjQnJldyhjb25zdCBU
ZXh0RW5jb2RpbmcmKTsKKyAgICB2aXJ0dWFsIH5UZXh0Q29kZWNCcmV3KCk7CisKKyAgICB2aXJ0
dWFsIFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gs
IGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKTsKKyAgICB2aXJ0dWFsIENTdHJpbmcg
ZW5jb2RlKGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGVIYW5kbGluZyk7
CisKK3ByaXZhdGU6CisgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CisgICAgc2l6ZV90IG1f
bnVtQnVmZmVyZWRCeXRlczsKKyAgICB1bnNpZ25lZCBjaGFyIG1fYnVmZmVyZWRCeXRlc1sxNl07
IC8vIGJpZ2dlciB0aGFuIGFueSBzaW5nbGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIKKyAgICBJQ2hh
cnNldENvbnYqIG1fY2hhcnNldENvbnZlcnRlcjsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBt
X2ludGVybmFsRW5jb2RpbmdOYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVGV4dENvZGVjQnJld19oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>