<?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>31440</bug_id>
          
          <creation_ts>2009-11-12 14:44:22 -0800</creation_ts>
          <short_desc>Add Chromium&apos;s DatabaseTracker implementation to WebKit</short_desc>
          <delta_ts>2009-11-13 13:12:19 -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>New Bugs</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="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>163064</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-11-12 14:44:22 -0800</bug_when>
    <thetext>Add Chromium&apos;s DatabaseTracker implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163070</commentid>
    <comment_count>1</comment_count>
      <attachid>43103</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-11-12 14:57:38 -0800</bug_when>
    <thetext>Created attachment 43103
patch

Somebody from Apple (Brady, Anders?) should REALLY take a look at the changes to DatabaseTracker.h. Chromium doesn&apos;t need a lot of things declared in DatabaseTracker.h, so I #ifdef&apos;d them out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163123</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-11-12 17:39:26 -0800</bug_when>
    <thetext>I would prefer to maintain the symmetry between these two method names...


class QuotaTracker
    void getDatabaseSizeAndSpaceAvailableToOrigin(
        const String&amp; originIdentifier, const String&amp; databaseName,
        unsigned long long* databaseSize, unsigned long long* spaceAvailable);
    void updateDatabaseSizeAndSpaceAvailableToOrigin(
        const String&amp; originIdentifier, const String&amp; databaseName,
        unsigned long long databaseSize, unsigned long long spaceAvailable);


... otherwise lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163222</commentid>
    <comment_count>3</comment_count>
      <attachid>43133</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-11-12 22:13:14 -0800</bug_when>
    <thetext>Created attachment 43133
patch

Addressed Michael&apos;s comment regarding naming inconsistency in QuotaTracker.{h|cpp}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163351</commentid>
    <comment_count>4</comment_count>
      <attachid>43133</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-13 09:46:54 -0800</bug_when>
    <thetext>Comment on attachment 43133
patch

I don&apos;t like how DatabaseTracker is so fragmented by the ifdefs. It&apos;s fine for now, but ideally this really needs to be abstracted by purpose and the lines of implementation drawn along that. Can you file a bug on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163389</commentid>
    <comment_count>5</comment_count>
      <attachid>43175</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-11-13 11:43:22 -0800</bug_when>
    <thetext>Created attachment 43175
patch

Commented out DatabaseTrackerChromium::removeOpenDatabase(). Its current implementation is causing some subtle problems when running layout tests in test_shell, and we don&apos;t even use this information yet anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163396</commentid>
    <comment_count>6</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-11-13 11:47:21 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 43133 [details])
&gt; I don&apos;t like how DatabaseTracker is so fragmented by the ifdefs. It&apos;s fine for
&gt; now, but ideally this really needs to be abstracted by purpose and the lines of
&gt; implementation drawn along that. Can you file a bug on this?

Done. Filed bug 31482.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163437</commentid>
    <comment_count>7</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-11-13 12:25:42 -0800</bug_when>
    <thetext>Landed as r50961.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163461</commentid>
    <comment_count>8</comment_count>
      <attachid>43175</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-13 13:12:19 -0800</bug_when>
    <thetext>Comment on attachment 43175
patch

clearing r=? since it looks like this was landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43103</attachid>
            <date>2009-11-12 14:57:38 -0800</date>
            <delta_ts>2009-11-12 22:13:14 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16233</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDkwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMTEtMTIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgQ2hyb21pdW0ncyBEYXRhYmFzZVRyYWNrZXIgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQwCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBzdG9yYWdl
L2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgICogc3Rv
cmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVvdGFU
cmFja2VyOjp1cGRhdGVEYXRhYmFzZVNpemUpOgorICAgICAgICAqIHN0b3JhZ2UvY2hyb21pdW0v
UXVvdGFUcmFja2VyLmg6CisKIDIwMDktMTEtMTIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlcGxhY2Ugd29ybGRJRHMgd2l0aCB3b3JsZCBvYmplY3RzCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gNTA4OTMpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzA5OSw2ICszMDk5LDExIEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL2JyZWFrX2xp
bmVzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgnLAorICAgICAgICAg
ICAgJ3N0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VPYnNlcnZlci5oJywKKyAgICAgICAgICAgICdz
dG9yYWdlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwJywKKyAgICAgICAgICAgICdzdG9y
YWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL2Nocm9t
aXVtL1NRTFRyYW5zYWN0aW9uQ2xpZW50Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdzdG9y
YWdlL0RhdGFiYXNlLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZS5oJywKICAg
ICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAnLApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQAogICAgICAgJy4u
L3JlbmRlcmluZycsCiAgICAgICAnLi4vcmVuZGVyaW5nL3N0eWxlJywKICAgICAgICcuLi9zdG9y
YWdlJywKKyAgICAgICcuLi9zdG9yYWdlL2Nocm9taXVtJywKICAgICAgICcuLi9zdmcnLAogICAg
ICAgJy4uL3N2Zy9hbmltYXRpb24nLAogICAgICAgJy4uL3N2Zy9ncmFwaGljcycsCkBAIC02NzIs
NiArNjczLDEzIEBACiAKICAgICAgICAgIyBFeGNsdWRlIHNvbWUgREItcmVsYXRlZCBmaWxlcy4K
ICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCdd
LAorICAgICAgICBbJ2V4Y2x1ZGUnLCAnc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwJ10sCisg
ICAgICAgIFsnZXhjbHVkZScsICdzdG9yYWdlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oJ10sCisg
ICAgICAgIFsnZXhjbHVkZScsICdzdG9yYWdlL09yaWdpblF1b3RhTWFuYWdlci5jcHAnXSwKKyAg
ICAgICAgWydleGNsdWRlJywgJ3N0b3JhZ2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmgnXSwKKyAgICAg
ICAgWydleGNsdWRlJywgJ3N0b3JhZ2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwJ10sCisgICAgICAg
IFsnZXhjbHVkZScsICdzdG9yYWdlL09yaWdpblVzYWdlUmVjb3JkLmgnXSwKKyAgICAgICAgWydl
eGNsdWRlJywgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwJ10sCiAgICAgICBdLAog
ICAgICAgJ3NvdXJjZXMhJzogWwogICAgICAgICAjIEEgZmV3IHRoaW5ncyBjYW4ndCBiZSBleGNs
dWRlZCBieSBwYXR0ZXJucy4gIExpc3QgdGhlbSBpbmRpdmlkdWFsbHkuCkluZGV4OiBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDEgKzMxLDU2IEBACiAKICNp
ZiBFTkFCTEUoREFUQUJBU0UpCiAKLSNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1
ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKLWNsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVu
dDsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgT3JpZ2luUXVvdGFNYW5hZ2VyOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCitjbGFzcyBEYXRhYmFzZVRy
YWNrZXJDbGllbnQ7CitjbGFzcyBPcmlnaW5RdW90YU1hbmFnZXI7CisKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkhhc2g7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5UcmFpdHM7CisjZW5kaWYgLy8gIVBM
QVRGT1JNKENIUk9NSVVNKQogCiBjbGFzcyBEYXRhYmFzZVRyYWNrZXIgewogcHVibGljOgotICAg
IHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwotICAgIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgc3RhdGljIERhdGFi
YXNlVHJhY2tlciYgdHJhY2tlcigpOwogCiAgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShE
b2N1bWVudCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB2b2lkIHNldERhdGFiYXNlRGV0YWls
cyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICBTdHJpbmcgZnVsbFBh
dGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBj
cmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRydWUpOwogCisgICAgdm9pZCBhZGRPcGVuRGF0YWJhc2Uo
RGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSopOworCisg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFz
ZSopOworCitwcml2YXRlOgorICAgIERhdGFiYXNlVHJhY2tlcigpOworCisjaWYgIVBMQVRGT1JN
KENIUk9NSVVNKQorcHVibGljOgorICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNv
bnN0IFN0cmluZyYpOworICAgIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkg
Y29uc3Q7CisKICAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
PiYgcmVzdWx0KTsKICAgICBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKIAogICAgIERhdGFiYXNlRGV0YWlscyBkZXRh
aWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopOwogCi0g
ICAgdm9pZCBhZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqKTsKLSAgICB2b2lkIHJlbW92ZU9wZW5E
YXRhYmFzZShEYXRhYmFzZSopOwotCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlRm9yRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiwgU2VjdXJpdHlPcmlnaW4qKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKQEAgLTgyLDE1ICs5NywxMCBA
QCBwdWJsaWM6CiAKICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG9yaWdpblF1b3RhTWFuYWdlcigp
OwogCi0gICAgc3RhdGljIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlcigpOwogCiAgICAgYm9vbCBo
YXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCi0gICAgdW5zaWduZWQgbG9uZyBs
b25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSopOwotCiBwcml2YXRlOgot
ICAgIERhdGFiYXNlVHJhY2tlcigpOwotCiAgICAgU3RyaW5nIHRyYWNrZXJEYXRhYmFzZVBhdGgo
KSBjb25zdDsKICAgICB2b2lkIG9wZW5UcmFja2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNO
b3RFeGlzdCk7CiAKQEAgLTEzMCw2ICsxNDAsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZv
aWQgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlEYXRh
YmFzZXNDaGFuZ2VkKHZvaWQqKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ0hST01JVU0pCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0v
RGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDUwODkzKQor
KysgV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTY4LDcgKzY5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0
YWlscwogCiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCkKIHsKLSAgICByZXR1
cm4gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIvIiArIG5hbWU7CisgICAgcmV0dXJu
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLyIgKyBuYW1lICsgIiMiOwogfQogCiB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSkK
QEAgLTgzLDcgKzg0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZQogICAgIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlQ2xvc2VkKGRhdGFiYXNlKTsKIH0KIAot
dW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNl
KGNvbnN0IERhdGFiYXNlKiBkYXRhYmFzZSkgY29uc3QKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSogZGF0YWJh
c2UpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZS0+ZG9jdW1lbnQo
KS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIHNwYWNlQXZhaWxhYmxlID0gMDsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9R
dW90YVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9R
dW90YVRyYWNrZXIuY3BwCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYkNvcmUvc3RvcmFnZS9jaHJv
bWl1bS9RdW90YVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZv
aWQgUXVvdGFUcmFja2VyOjpnZXREYXRhYmFzZVNpemVBbmRTcGEKICAgICAqc3BhY2VBdmFpbGFi
bGUgPSBtX3NwYWNlQXZhaWxhYmxlVG9PcmlnaW5zLmdldChvcmlnaW5JZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZUFuZE9yaWdpblNwYWNlKAor
dm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZSgKICAgICBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLAogICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBkYXRhYmFzZVNpemUsIHVuc2lnbmVkIGxvbmcgbG9uZyBzcGFjZUF2YWls
YWJsZSkKIHsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vUXVvdGFUcmFja2VyLmgJKHJl
dmlzaW9uIDUwODkzKQorKysgV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldERh
dGFiYXNlU2l6ZUFuZFNwYWNlQXZhaWxhYmxlVG9PcmlnaW4oCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsCiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyogZGF0YWJhc2VTaXplLCB1bnNpZ25lZCBsb25nIGxvbmcqIHNw
YWNlQXZhaWxhYmxlKTsKLSAgICB2b2lkIHVwZGF0ZURhdGFiYXNlU2l6ZUFuZFNwYWNlQXZhaWxh
YmxlVG9PcmlnaW4oCisgICAgdm9pZCB1cGRhdGVEYXRhYmFzZVNpemUoCiAgICAgICAgIGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsCiAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZVNpemUsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBzcGFjZUF2YWlsYWJsZSk7CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTA5MDcpCisr
KyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMDktMTEtMTIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgQ2hy
b21pdW0ncyBEYXRhYmFzZVRyYWNrZXIgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQwCisKKyAgICAgICAgKiBXZWJL
aXQuZ3lwOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAg
KiBzcmMvRGF0YWJhc2VPYnNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VPcGVuZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VPYnNlcnZlcjo6ZGF0YWJhc2VNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU9ic2VydmVyOjpkYXRhYmFzZUNsb3NlZCk6CisgICAgICAgICogc3JjL1dlYkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2U6Om5hbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJEYXRhYmFzZTo6ZGlzcGxheU5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZTo6ZXN0aW1hdGVkU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlOjpzZWN1cml0
eU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZVNp
emUpOgorICAgICAgICAqIHNyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
Y3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50aWZpZXIpOgorCiAyMDA5LTExLTEyICBBZGFtIEJh
cnRoICA8YWJhcnRoPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDcgQEAKICAgICAgICAgICAgICAg
ICAnc3JjL0Nocm9taXVtVGhyZWFkaW5nLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Db250
ZXh0TWVudUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0NvbnRleHRNZW51
Q2xpZW50SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9EcmFnQ2xpZW50SW1wbC5jcHAnLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NCwxMCArNTQ0LDcgQEAg
dm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwcmludChGcmFtZSogZnJhbQogCiB2b2lkIENocm9tZUNs
aWVudEltcGw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lKQogewotICAgIC8vIHNldCBhIHJlYXNvbmFibGUgcXVvdGEgZm9yIG5v
dyAtLSA1TWIgc2hvdWxkIGJlIGVub3VnaCBmb3IgYW55Ym9keQotICAgIC8vIFRPRE8oZGdsYXpr
b3YpOiB0aGlzIHNob3VsZCBiZSBjb25maWd1cmFibGUKLSAgICBTZWN1cml0eU9yaWdpbiogb3Jp
Z2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCAxMDI0ICogMTAyNCAqIDUpOworICAg
IC8vIENocm9taXVtIHVzZXJzIGNhbm5vdCBjdXJyZW50bHkgY2hhbmdlIHRoZSBkZWZhdWx0IHF1
b3RhCiB9CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU9ic2VydmVy
LmgiCisKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIldlYkRhdGFiYXNlLmgiCisj
aW5jbHVkZSAiV2ViRGF0YWJhc2VPYnNlcnZlci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJh
c2VPcGVuZWQoRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlT3BlbmVkKFdlYkRhdGFi
YXNlKGRhdGFiYXNlKSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VNb2Rp
ZmllZChEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+ZGF0YWJhc2VNb2RpZmllZChXZWJEYXRhYmFz
ZShkYXRhYmFzZSkpOworfQorCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlQ2xvc2Vk
KERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5kYXRhYmFzZUNsb3NlZChXZWJEYXRhYmFzZShkYXRh
YmFzZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gNTA4OTMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiUXVvdGFUcmFja2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCkBAIC02NSwzNyArNjYsMjYgQEAgdm9pZCBXZWJEYXRhYmFzZTo6YXNzaWduKGNvbnN0
IFdlYkRhdGFiYQogCiBXZWJTdHJpbmcgV2ViRGF0YWJhc2U6Om5hbWUoKSBjb25zdAogewotICAg
IGlmIChtX3ByaXZhdGUpCi0gICAgICAgIHJldHVybiBtX3ByaXZhdGUtPnN0cmluZ0lkZW50aWZp
ZXIoKTsKLQotICAgIHJldHVybiBXZWJTdHJpbmc6OmZyb21VVEY4KCJudWxsIik7CisgICAgQVNT
RVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3RyaW5nSWRlbnRpZmllcigp
OwogfQogCiBXZWJTdHJpbmcgV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkgY29uc3QKIHsKLS8v
IEZJWE1FOiBhZGQgdGhlIERhdGFiYXNlOjpkaXNwbGF5TmFtZSgpIG1ldGhvZC4KLS8vICAgICBp
ZiAobV9wcml2YXRlKQotLy8gICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5kaXNwbGF5TmFtZSgp
OwotCi0gICAgcmV0dXJuIFdlYlN0cmluZzo6ZnJvbVVURjgoIm51bGwiKTsKKyAgICBBU1NFUlQo
bV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5kaXNwbGF5TmFtZSgpOwogfQogCiB1
bnNpZ25lZCBsb25nIFdlYkRhdGFiYXNlOjplc3RpbWF0ZWRTaXplKCkgY29uc3QKIHsKLS8vIEZJ
WE1FOiBhZGQgdGhlIERhdGFiYXNlOjplc3RpbWF0ZWRTaXplKCkgbWV0aG9kLgotLy8gICAgaWYg
KG1fcHJpdmF0ZSkKLS8vICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5lc3RpbWF0ZWRTaXplKCk7
Ci0KLSAgICByZXR1cm4gLTE7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+ZXN0aW1hdGVkU2l6ZSgpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbiBXZWJEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogewotLy8gRklYTUU6IGFkZCB0aGUgRGF0YWJh
c2U6OnRocmVhZFNhZmVTZWN1cml0eU9yaWdpbigpIG1ldGhvZC4KLS8vICAgICBpZiAobV9wcml2
YXRlKQotLy8gICAgICAgICByZXR1cm4gV2ViU2VjdXJpdHlPcmlnaW4obV9wcml2YXRlLT50aHJl
YWRTYWZlU2VjdXJpdHlPcmlnaW4oKSk7Ci0KLSAgICByZXR1cm4gV2ViU2VjdXJpdHlPcmlnaW4o
KTsKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gV2ViU2VjdXJpdHlPcmlnaW4o
bV9wcml2YXRlLT5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFzZTo6c2V0
T2JzZXJ2ZXIoV2ViRGF0YWJhc2VPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC0xMTIsOSArMTAyLDgg
QEAgdm9pZCBXZWJEYXRhYmFzZTo6dXBkYXRlRGF0YWJhc2VTaXplKAogICAgIGNvbnN0IFdlYlN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgV2ViU3RyaW5nJiBkYXRhYmFzZU5hbWUsCiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFiYXNlU2l6ZSwgdW5zaWduZWQgbG9uZyBsb25nIHNw
YWNlQXZhaWxhYmxlKQogewotLy8gRklYTUU6IGFkZCB0aGUgUXVvdGFUcmFja2VyIGNsYXNzLgot
Ly8gICAgIFdlYkNvcmU6OlF1b3RhVHJhY2tlcjo6aW5zdGFuY2UoKS51cGRhdGVEYXRhYmFzZVNp
emUoCi0vLyAgICAgICAgIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VT
aXplLCBzcGFjZUF2YWlsYWJsZSk7CisgICAgV2ViQ29yZTo6UXVvdGFUcmFja2VyOjppbnN0YW5j
ZSgpLnVwZGF0ZURhdGFiYXNlU2l6ZSgKKyAgICAgICAgb3JpZ2luSWRlbnRpZmllciwgZGF0YWJh
c2VOYW1lLCBkYXRhYmFzZVNpemUsIHNwYWNlQXZhaWxhYmxlKTsKIH0KIAogV2ViRGF0YWJhc2U6
OldlYkRhdGFiYXNlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxEYXRhYmFzZT4mIGRhdGFiYXNlKQpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9u
IDUwODkzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgxLDIwICs4MSwxNCBAQCBib29sIFdlYlNlY3VyaXR5T3JpZ2luOjpp
c0VtcHR5KCkgY29uc3QKIAogV2ViU3RyaW5nIFdlYlNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygp
IGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qgc3VwcG9ydCBjYWxsaW5nIHRo
aXMgbWV0aG9kIHdoZW4gbV9wcml2YXRlIGlzIG51bGwuCi0gICAgaWYgKG1fcHJpdmF0ZSkKLSAg
ICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dG9TdHJpbmcoKTsKLQotICAgIHJldHVybiBXZWJTdHJp
bmc6OmZyb21VVEY4KCJudWxsIik7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+dG9TdHJpbmcoKTsKIH0KIAogV2ViU3RyaW5nIFdlYlNlY3VyaXR5T3JpZ2lu
OjpkYXRhYmFzZUlkZW50aWZpZXIoKQogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IHN1
cHBvcnQgY2FsbGluZyB0aGlzIG1ldGhvZCB3aGVuIG1fcHJpdmF0ZSBpcyBudWxsLgotICAgIGlm
IChtX3ByaXZhdGUpCi0gICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmRhdGFiYXNlSWRlbnRpZmll
cigpOwotCi0gICAgcmV0dXJuIFdlYlN0cmluZzo6ZnJvbVVURjgoIm51bGwiKTsKKyAgICBBU1NF
UlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5kYXRhYmFzZUlkZW50aWZpZXIo
KTsKIH0KIAogV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mIG9yaWdpbikK
</data>
<flag name="commit-queue"
          id="24767"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43133</attachid>
            <date>2009-11-12 22:13:14 -0800</date>
            <delta_ts>2009-11-13 11:43:22 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15587</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDkwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMTEtMTIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgQ2hyb21pdW0ncyBEYXRhYmFzZVRyYWNrZXIgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQwCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBzdG9yYWdl
L2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgICogc3Rv
cmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVvdGFU
cmFja2VyOjp1cGRhdGVEYXRhYmFzZVNpemUpOgorICAgICAgICAqIHN0b3JhZ2UvY2hyb21pdW0v
UXVvdGFUcmFja2VyLmg6CisKIDIwMDktMTEtMTIgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlcGxhY2Ugd29ybGRJRHMgd2l0aCB3b3JsZCBvYmplY3RzCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gNTA4OTMpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMzA5OSw2ICszMDk5LDExIEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL2JyZWFrX2xp
bmVzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgnLAorICAgICAgICAg
ICAgJ3N0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VPYnNlcnZlci5oJywKKyAgICAgICAgICAgICdz
dG9yYWdlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcCcsCisgICAgICAgICAg
ICAnc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwJywKKyAgICAgICAgICAgICdzdG9y
YWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL2Nocm9t
aXVtL1NRTFRyYW5zYWN0aW9uQ2xpZW50Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdzdG9y
YWdlL0RhdGFiYXNlLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZS5oJywKICAg
ICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAnLApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQAogICAgICAgJy4u
L3JlbmRlcmluZycsCiAgICAgICAnLi4vcmVuZGVyaW5nL3N0eWxlJywKICAgICAgICcuLi9zdG9y
YWdlJywKKyAgICAgICcuLi9zdG9yYWdlL2Nocm9taXVtJywKICAgICAgICcuLi9zdmcnLAogICAg
ICAgJy4uL3N2Zy9hbmltYXRpb24nLAogICAgICAgJy4uL3N2Zy9ncmFwaGljcycsCkBAIC02NzIs
NiArNjczLDEzIEBACiAKICAgICAgICAgIyBFeGNsdWRlIHNvbWUgREItcmVsYXRlZCBmaWxlcy4K
ICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCdd
LAorICAgICAgICBbJ2V4Y2x1ZGUnLCAnc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwJ10sCisg
ICAgICAgIFsnZXhjbHVkZScsICdzdG9yYWdlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oJ10sCisg
ICAgICAgIFsnZXhjbHVkZScsICdzdG9yYWdlL09yaWdpblF1b3RhTWFuYWdlci5jcHAnXSwKKyAg
ICAgICAgWydleGNsdWRlJywgJ3N0b3JhZ2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmgnXSwKKyAgICAg
ICAgWydleGNsdWRlJywgJ3N0b3JhZ2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwJ10sCisgICAgICAg
IFsnZXhjbHVkZScsICdzdG9yYWdlL09yaWdpblVzYWdlUmVjb3JkLmgnXSwKKyAgICAgICAgWydl
eGNsdWRlJywgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwJ10sCiAgICAgICBdLAog
ICAgICAgJ3NvdXJjZXMhJzogWwogICAgICAgICAjIEEgZmV3IHRoaW5ncyBjYW4ndCBiZSBleGNs
dWRlZCBieSBwYXR0ZXJucy4gIExpc3QgdGhlbSBpbmRpdmlkdWFsbHkuCkluZGV4OiBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDEgKzMxLDU2IEBACiAKICNp
ZiBFTkFCTEUoREFUQUJBU0UpCiAKLSNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1
ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKLWNsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVu
dDsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgT3JpZ2luUXVvdGFNYW5hZ2VyOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCitjbGFzcyBEYXRhYmFzZVRy
YWNrZXJDbGllbnQ7CitjbGFzcyBPcmlnaW5RdW90YU1hbmFnZXI7CisKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkhhc2g7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5UcmFpdHM7CisjZW5kaWYgLy8gIVBM
QVRGT1JNKENIUk9NSVVNKQogCiBjbGFzcyBEYXRhYmFzZVRyYWNrZXIgewogcHVibGljOgotICAg
IHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwotICAgIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgc3RhdGljIERhdGFi
YXNlVHJhY2tlciYgdHJhY2tlcigpOwogCiAgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFzZShE
b2N1bWVudCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB2b2lkIHNldERhdGFiYXNlRGV0YWls
cyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICBTdHJpbmcgZnVsbFBh
dGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBj
cmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRydWUpOwogCisgICAgdm9pZCBhZGRPcGVuRGF0YWJhc2Uo
RGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSopOworCisg
ICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFz
ZSopOworCitwcml2YXRlOgorICAgIERhdGFiYXNlVHJhY2tlcigpOworCisjaWYgIVBMQVRGT1JN
KENIUk9NSVVNKQorcHVibGljOgorICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNv
bnN0IFN0cmluZyYpOworICAgIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkg
Y29uc3Q7CisKICAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
PiYgcmVzdWx0KTsKICAgICBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKIAogICAgIERhdGFiYXNlRGV0YWlscyBkZXRh
aWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopOwogCi0g
ICAgdm9pZCBhZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqKTsKLSAgICB2b2lkIHJlbW92ZU9wZW5E
YXRhYmFzZShEYXRhYmFzZSopOwotCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlRm9yRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiwgU2VjdXJpdHlPcmlnaW4qKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKQEAgLTgyLDE1ICs5NywxMCBA
QCBwdWJsaWM6CiAKICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG9yaWdpblF1b3RhTWFuYWdlcigp
OwogCi0gICAgc3RhdGljIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlcigpOwogCiAgICAgYm9vbCBo
YXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCi0gICAgdW5zaWduZWQgbG9uZyBs
b25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSopOwotCiBwcml2YXRlOgot
ICAgIERhdGFiYXNlVHJhY2tlcigpOwotCiAgICAgU3RyaW5nIHRyYWNrZXJEYXRhYmFzZVBhdGgo
KSBjb25zdDsKICAgICB2b2lkIG9wZW5UcmFja2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNO
b3RFeGlzdCk7CiAKQEAgLTEzMCw2ICsxNDAsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZv
aWQgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlEYXRh
YmFzZXNDaGFuZ2VkKHZvaWQqKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ0hST01JVU0pCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0v
RGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDUwODkzKQor
KysgV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTY4LDcgKzY5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNlRGV0
YWlscwogCiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCkKIHsKLSAgICByZXR1
cm4gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIvIiArIG5hbWU7CisgICAgcmV0dXJu
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLyIgKyBuYW1lICsgIiMiOwogfQogCiB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSkK
QEAgLTgzLDcgKzg0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFz
ZQogICAgIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlQ2xvc2VkKGRhdGFiYXNlKTsKIH0KIAot
dW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNl
KGNvbnN0IERhdGFiYXNlKiBkYXRhYmFzZSkgY29uc3QKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSogZGF0YWJh
c2UpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZS0+ZG9jdW1lbnQo
KS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIHNwYWNlQXZhaWxhYmxlID0gMDsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9R
dW90YVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9R
dW90YVRyYWNrZXIuY3BwCShyZXZpc2lvbiA1MDg5MykKKysrIFdlYkNvcmUvc3RvcmFnZS9jaHJv
bWl1bS9RdW90YVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZv
aWQgUXVvdGFUcmFja2VyOjpnZXREYXRhYmFzZVNpemVBbmRTcGEKICAgICAqc3BhY2VBdmFpbGFi
bGUgPSBtX3NwYWNlQXZhaWxhYmxlVG9PcmlnaW5zLmdldChvcmlnaW5JZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZUFuZE9yaWdpblNwYWNlKAor
dm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0ZURhdGFiYXNlU2l6ZUFuZFNwYWNlQXZhaWxhYmxlVG9P
cmlnaW4oCiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YWJhc2VTaXplLCB1bnNp
Z25lZCBsb25nIGxvbmcgc3BhY2VBdmFpbGFibGUpCiB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDUwOTA3KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI4IEBACisyMDA5LTExLTEyICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkaW5nIENocm9taXVtJ3MgRGF0YWJhc2VUcmFja2VyIGltcGxlbWVudGF0aW9uLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ0MAorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSk6CisgICAgICAgICogc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlT3BlbmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlTW9kaWZpZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6ZGF0YWJhc2VDbG9zZWQpOgorICAgICAgICAqIHNyYy9X
ZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlOjpuYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRGF0YWJhc2U6OmVzdGltYXRlZFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRh
YmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZTo6dXBk
YXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAgKiBzcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKToKKwogMjAwOS0x
MS0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aD4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJp
IEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNTA4OTMpCisrKyBXZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9DaHJvbWl1bVRocmVhZGluZy5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9EYXRhYmFz
ZU9ic2VydmVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9ET01VdGlsaXRpZXNQcml2YXRl
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvRHJhZ0NsaWVudEltcGwuY3BwJywKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTA4OTMpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQs
MTAgKzU0NCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cHJpbnQoRnJhbWUqIGZyYW0KIAog
dm9pZCBDaHJvbWVDbGllbnRJbXBsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqIGZyYW1l
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKLSAgICAvLyBzZXQgYSByZWFzb25hYmxl
IHF1b3RhIGZvciBub3cgLS0gNU1iIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFueWJvZHkKLSAgICAv
LyBUT0RPKGRnbGF6a292KTogdGhpcyBzaG91bGQgYmUgY29uZmlndXJhYmxlCi0gICAgU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwot
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbiwgMTAyNCAqIDEw
MjQgKiA1KTsKKyAgICAvLyBDaHJvbWl1bSB1c2VycyBjYW5ub3QgY3VycmVudGx5IGNoYW5nZSB0
aGUgZGVmYXVsdCBxdW90YQogfQogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VPYnNlcnZlci5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJE
YXRhYmFzZS5oIgorI2luY2x1ZGUgIldlYkRhdGFiYXNlT2JzZXJ2ZXIuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIERhdGFiYXNlT2Jz
ZXJ2ZXI6OmRhdGFiYXNlT3BlbmVkKERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5kYXRhYmFzZU9w
ZW5lZChXZWJEYXRhYmFzZShkYXRhYmFzZSkpOworfQorCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6
OmRhdGFiYXNlTW9kaWZpZWQoRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlTW9kaWZp
ZWQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpKTsKK30KKwordm9pZCBEYXRhYmFzZU9ic2VydmVyOjpk
YXRhYmFzZUNsb3NlZChEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+ZGF0YWJhc2VDbG9zZWQoV2Vi
RGF0YWJhc2UoZGF0YWJhc2UpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDUwODkzKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlF1b3RhVHJhY2tlci5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgpAQCAtNjUsMzcgKzY2LDI2IEBAIHZvaWQgV2ViRGF0YWJhc2U6
OmFzc2lnbihjb25zdCBXZWJEYXRhYmEKIAogV2ViU3RyaW5nIFdlYkRhdGFiYXNlOjpuYW1lKCkg
Y29uc3QKIHsKLSAgICBpZiAobV9wcml2YXRlKQotICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5z
dHJpbmdJZGVudGlmaWVyKCk7Ci0KLSAgICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOCgibnVs
bCIpOworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0cmlu
Z0lkZW50aWZpZXIoKTsKIH0KIAogV2ViU3RyaW5nIFdlYkRhdGFiYXNlOjpkaXNwbGF5TmFtZSgp
IGNvbnN0CiB7Ci0vLyBGSVhNRTogYWRkIHRoZSBEYXRhYmFzZTo6ZGlzcGxheU5hbWUoKSBtZXRo
b2QuCi0vLyAgICAgaWYgKG1fcHJpdmF0ZSkKLS8vICAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
ZGlzcGxheU5hbWUoKTsKLQotICAgIHJldHVybiBXZWJTdHJpbmc6OmZyb21VVEY4KCJudWxsIik7
CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZGlzcGxheU5h
bWUoKTsKIH0KIAogdW5zaWduZWQgbG9uZyBXZWJEYXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIGNv
bnN0CiB7Ci0vLyBGSVhNRTogYWRkIHRoZSBEYXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIG1ldGhv
ZC4KLS8vICAgIGlmIChtX3ByaXZhdGUpCi0vLyAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZXN0
aW1hdGVkU2l6ZSgpOwotCi0gICAgcmV0dXJuIC0xOworICAgIEFTU0VSVChtX3ByaXZhdGUpOwor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmVzdGltYXRlZFNpemUoKTsKIH0KIAogV2ViU2VjdXJpdHlP
cmlnaW4gV2ViRGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLS8vIEZJWE1FOiBh
ZGQgdGhlIERhdGFiYXNlOjp0aHJlYWRTYWZlU2VjdXJpdHlPcmlnaW4oKSBtZXRob2QuCi0vLyAg
ICAgaWYgKG1fcHJpdmF0ZSkKLS8vICAgICAgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1f
cHJpdmF0ZS0+dGhyZWFkU2FmZVNlY3VyaXR5T3JpZ2luKCkpOwotCi0gICAgcmV0dXJuIFdlYlNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIFdlYlNl
Y3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiB9CiAKIHZvaWQgV2Vi
RGF0YWJhc2U6OnNldE9ic2VydmVyKFdlYkRhdGFiYXNlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAt
MTEyLDkgKzEwMiw4IEBAIHZvaWQgV2ViRGF0YWJhc2U6OnVwZGF0ZURhdGFiYXNlU2l6ZSgKICAg
ICBjb25zdCBXZWJTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYlN0cmluZyYgZGF0
YWJhc2VOYW1lLAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZVNpemUsIHVuc2lnbmVk
IGxvbmcgbG9uZyBzcGFjZUF2YWlsYWJsZSkKIHsKLS8vIEZJWE1FOiBhZGQgdGhlIFF1b3RhVHJh
Y2tlciBjbGFzcy4KLS8vICAgICBXZWJDb3JlOjpRdW90YVRyYWNrZXI6Omluc3RhbmNlKCkudXBk
YXRlRGF0YWJhc2VTaXplKAotLy8gICAgICAgICBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5h
bWUsIGRhdGFiYXNlU2l6ZSwgc3BhY2VBdmFpbGFibGUpOworICAgIFdlYkNvcmU6OlF1b3RhVHJh
Y2tlcjo6aW5zdGFuY2UoKS51cGRhdGVEYXRhYmFzZVNpemVBbmRTcGFjZUF2YWlsYWJsZVRvT3Jp
Z2luKAorICAgICAgICBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRhdGFiYXNlU2l6
ZSwgc3BhY2VBdmFpbGFibGUpOwogfQogCiBXZWJEYXRhYmFzZTo6V2ViRGF0YWJhc2UoY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPERhdGFiYXNlPiYgZGF0YWJhc2UpCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gNTA4OTMpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEs
MjAgKzgxLDE0IEBAIGJvb2wgV2ViU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAogCiBX
ZWJTdHJpbmcgV2ViU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIG5vdCBzdXBwb3J0IGNhbGxpbmcgdGhpcyBtZXRob2Qgd2hlbiBtX3By
aXZhdGUgaXMgbnVsbC4KLSAgICBpZiAobV9wcml2YXRlKQotICAgICAgICByZXR1cm4gbV9wcml2
YXRlLT50b1N0cmluZygpOwotCi0gICAgcmV0dXJuIFdlYlN0cmluZzo6ZnJvbVVURjgoIm51bGwi
KTsKKyAgICBBU1NFUlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT50b1N0cmlu
ZygpOwogfQogCiBXZWJTdHJpbmcgV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmll
cigpCiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qgc3VwcG9ydCBjYWxsaW5nIHRoaXMg
bWV0aG9kIHdoZW4gbV9wcml2YXRlIGlzIG51bGwuCi0gICAgaWYgKG1fcHJpdmF0ZSkKLSAgICAg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7Ci0KLSAgICByZXR1cm4g
V2ViU3RyaW5nOjpmcm9tVVRGOCgibnVsbCIpOworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmRhdGFiYXNlSWRlbnRpZmllcigpOwogfQogCiBXZWJTZWN1cml0
eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiYgb3JpZ2luKQo=
</data>
<flag name="review"
          id="24821"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="24822"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43175</attachid>
            <date>2009-11-13 11:43:22 -0800</date>
            <delta_ts>2009-11-13 13:12:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15917</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDk1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMTEtMTIgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpbmcgQ2hyb21pdW0ncyBEYXRhYmFzZVRyYWNrZXIgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQwCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBzdG9yYWdl
L2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6CisgICAgICAgICogc3Rv
cmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVvdGFU
cmFja2VyOjp1cGRhdGVEYXRhYmFzZVNpemUpOgorICAgICAgICAqIHN0b3JhZ2UvY2hyb21pdW0v
UXVvdGFUcmFja2VyLmg6CisKIDIwMDktMTEtMTMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQkocmV2aXNpb24gNTA5NTYpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMzEwMCw2ICszMTAwLDExIEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL2JyZWFr
X2xpbmVzLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3Bw
JywKICAgICAgICAgICAgICdzdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgnLAorICAgICAg
ICAgICAgJ3N0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VPYnNlcnZlci5oJywKKyAgICAgICAgICAg
ICdzdG9yYWdlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNwcCcsCisgICAgICAg
ICAgICAnc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwJywKKyAgICAgICAgICAgICdz
dG9yYWdlL2Nocm9taXVtL1F1b3RhVHJhY2tlci5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL2No
cm9taXVtL1NRTFRyYW5zYWN0aW9uQ2xpZW50Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdz
dG9yYWdlL0RhdGFiYXNlLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EYXRhYmFzZS5oJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAnLApJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiA1MDk1NikKKysrIFdlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQAogICAgICAg
Jy4uL3JlbmRlcmluZycsCiAgICAgICAnLi4vcmVuZGVyaW5nL3N0eWxlJywKICAgICAgICcuLi9z
dG9yYWdlJywKKyAgICAgICcuLi9zdG9yYWdlL2Nocm9taXVtJywKICAgICAgICcuLi9zdmcnLAog
ICAgICAgJy4uL3N2Zy9hbmltYXRpb24nLAogICAgICAgJy4uL3N2Zy9ncmFwaGljcycsCkBAIC02
NzIsNiArNjczLDEzIEBACiAKICAgICAgICAgIyBFeGNsdWRlIHNvbWUgREItcmVsYXRlZCBmaWxl
cy4KICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNw
cCddLAorICAgICAgICBbJ2V4Y2x1ZGUnLCAnc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwJ10s
CisgICAgICAgIFsnZXhjbHVkZScsICdzdG9yYWdlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oJ10s
CisgICAgICAgIFsnZXhjbHVkZScsICdzdG9yYWdlL09yaWdpblF1b3RhTWFuYWdlci5jcHAnXSwK
KyAgICAgICAgWydleGNsdWRlJywgJ3N0b3JhZ2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmgnXSwKKyAg
ICAgICAgWydleGNsdWRlJywgJ3N0b3JhZ2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwJ10sCisgICAg
ICAgIFsnZXhjbHVkZScsICdzdG9yYWdlL09yaWdpblVzYWdlUmVjb3JkLmgnXSwKKyAgICAgICAg
WydleGNsdWRlJywgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwJ10sCiAgICAgICBd
LAogICAgICAgJ3NvdXJjZXMhJzogWwogICAgICAgICAjIEEgZmV3IHRoaW5ncyBjYW4ndCBiZSBl
eGNsdWRlZCBieSBwYXR0ZXJucy4gIExpc3QgdGhlbSBpbmRpdmlkdWFsbHkuCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiA1MDk1NikKKysrIFdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDEgKzMxLDU2IEBACiAK
ICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKLSNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorI2lu
Y2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRhYmFzZTsKLWNsYXNzIERhdGFiYXNlVHJhY2tlckNs
aWVudDsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgT3JpZ2luUXVvdGFNYW5hZ2VyOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiAKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCitjbGFzcyBEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ7CitjbGFzcyBPcmlnaW5RdW90YU1hbmFnZXI7CisKIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkhhc2g7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5UcmFpdHM7CisjZW5kaWYgLy8g
IVBMQVRGT1JNKENIUk9NSVVNKQogCiBjbGFzcyBEYXRhYmFzZVRyYWNrZXIgewogcHVibGljOgot
ICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwotICAgIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgc3RhdGljIERh
dGFiYXNlVHJhY2tlciYgdHJhY2tlcigpOwogCiAgICAgYm9vbCBjYW5Fc3RhYmxpc2hEYXRhYmFz
ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICB2b2lkIHNldERhdGFiYXNlRGV0
YWlscyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKICAgICBTdHJpbmcgZnVs
bFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9v
bCBjcmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRydWUpOwogCisgICAgdm9pZCBhZGRPcGVuRGF0YWJh
c2UoRGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSopOwor
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRh
YmFzZSopOworCitwcml2YXRlOgorICAgIERhdGFiYXNlVHJhY2tlcigpOworCisjaWYgIVBMQVRG
T1JNKENIUk9NSVVNKQorcHVibGljOgorICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KCkgY29uc3Q7CisKICAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gPiYgcmVzdWx0KTsKICAgICBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKIAogICAgIERhdGFiYXNlRGV0YWlscyBk
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopOwog
Ci0gICAgdm9pZCBhZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UqKTsKLSAgICB2b2lkIHJlbW92ZU9w
ZW5EYXRhYmFzZShEYXRhYmFzZSopOwotCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlRm9y
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiwgU2VjdXJpdHlPcmlnaW4qKTsKICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKQEAgLTgyLDE1ICs5Nywx
MCBAQCBwdWJsaWM6CiAKICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG9yaWdpblF1b3RhTWFuYWdl
cigpOwogCi0gICAgc3RhdGljIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlcigpOwogCiAgICAgYm9v
bCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogCi0gICAgdW5zaWduZWQgbG9u
ZyBsb25nIGdldE1heFNpemVGb3JEYXRhYmFzZShjb25zdCBEYXRhYmFzZSopOwotCiBwcml2YXRl
OgotICAgIERhdGFiYXNlVHJhY2tlcigpOwotCiAgICAgU3RyaW5nIHRyYWNrZXJEYXRhYmFzZVBh
dGgoKSBjb25zdDsKICAgICB2b2lkIG9wZW5UcmFja2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRv
ZXNOb3RFeGlzdCk7CiAKQEAgLTEzMCw2ICsxNDAsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGlj
IHZvaWQgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlE
YXRhYmFzZXNDaGFuZ2VkKHZvaWQqKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oQ0hST01JVU0pCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvY2hyb21p
dW0vRGF0YWJhc2VUcmFja2VyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Rv
cmFnZS9jaHJvbWl1bS9EYXRhYmFzZVRyYWNrZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDUwOTU2
KQorKysgV2ViQ29yZS9zdG9yYWdlL2Nocm9taXVtL0RhdGFiYXNlVHJhY2tlckNocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTY4LDcgKzY5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldERhdGFiYXNl
RGV0YWlscwogCiBTdHJpbmcgRGF0YWJhc2VUcmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCkKIHsKLSAgICBy
ZXR1cm4gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIvIiArIG5hbWU7CisgICAgcmV0
dXJuIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkgKyAiLyIgKyBuYW1lICsgIiMiOwogfQog
CiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFz
ZSkKQEAgLTc5LDExICs4MCwxMyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFi
YXNlKERhCiAKIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoRGF0YWJh
c2UqIGRhdGFiYXNlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgRGF0YWJh
c2VPYnNlcnZlcjo6ZGF0YWJhc2VDbG9zZWQoZGF0YWJhc2UpOworICAgIC8vIEZJWE1FOiBvbmNl
IHdlIGtub3cgaG93IHRvIHVzZSB0aGlzIGluZm9ybWF0aW9uLCBmaWd1cmUgb3V0CisgICAgLy8g
ICAgICAgIGhvdyB0byBnZXQgdGhpcyBtZXRob2QgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZAor
ICAgIC8vQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvL0RhdGFiYXNlT2JzZXJ2ZXI6OmRh
dGFiYXNlQ2xvc2VkKGRhdGFiYXNlKTsKIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNl
VHJhY2tlcjo6Z2V0TWF4U2l6ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlKiBkYXRhYmFzZSkg
Y29uc3QKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JE
YXRhYmFzZShjb25zdCBEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhy
ZWFkSUQoKSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNwYWNlQXZhaWxhYmxlID0gMDsKSW5k
ZXg6IFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCShyZXZpc2lvbiA1
MDk1NikKKysrIFdlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9RdW90YVRyYWNrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgUXVvdGFUcmFja2VyOjpnZXREYXRhYmFz
ZVNpemVBbmRTcGEKICAgICAqc3BhY2VBdmFpbGFibGUgPSBtX3NwYWNlQXZhaWxhYmxlVG9Pcmln
aW5zLmdldChvcmlnaW5JZGVudGlmaWVyKTsKIH0KIAotdm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0
ZURhdGFiYXNlU2l6ZUFuZE9yaWdpblNwYWNlKAordm9pZCBRdW90YVRyYWNrZXI6OnVwZGF0ZURh
dGFiYXNlU2l6ZUFuZFNwYWNlQXZhaWxhYmxlVG9PcmlnaW4oCiAgICAgY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwKICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgZGF0YWJhc2VTaXplLCB1bnNpZ25lZCBsb25nIGxvbmcgc3BhY2VBdmFpbGFi
bGUpCiB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwOTU2KQorKysgV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDA5LTExLTEy
ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIENocm9taXVtJ3MgRGF0YWJh
c2VUcmFja2VyIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ0MAorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogc3JjL0RhdGFiYXNl
T2JzZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6
OmRhdGFiYXNlT3BlbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OmRh
dGFiYXNlTW9kaWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6ZGF0
YWJhc2VDbG9zZWQpOgorICAgICAgICAqIHNyYy9XZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFiYXNlOjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2U6
OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2U6OmVzdGltYXRlZFNp
emUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZTo6dXBkYXRlRGF0YWJhc2VTaXplKToKKyAgICAgICAg
KiBzcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0
eU9yaWdpbjo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbjo6
ZGF0YWJhc2VJZGVudGlmaWVyKToKKwogMjAwOS0xMS0xMyAgWWFhciBTY2huaXRtYW4gIDx5YWFy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNTA5NTYpCisrKyBXZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9DaHJvbWl1bVRocmVhZGluZy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvQ29u
dGV4dE1lbnVDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Db250ZXh0TWVu
dUNsaWVudEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9EYXRhYmFzZU9ic2VydmVyLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9ET01VdGlsaXRpZXNQcml2YXRlLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvRHJhZ0NsaWVudEltcGwuY3BwJywKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTA5NTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsMTAgKzU0NCw3IEBA
IHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cHJpbnQoRnJhbWUqIGZyYW0KIAogdm9pZCBDaHJvbWVD
bGllbnRJbXBsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSkKIHsKLSAgICAvLyBzZXQgYSByZWFzb25hYmxlIHF1b3RhIGZvciBu
b3cgLS0gNU1iIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFueWJvZHkKLSAgICAvLyBUT0RPKGRnbGF6
a292KTogdGhpcyBzaG91bGQgYmUgY29uZmlndXJhYmxlCi0gICAgU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbiwgMTAyNCAqIDEwMjQgKiA1KTsKKyAg
ICAvLyBDaHJvbWl1bSB1c2VycyBjYW5ub3QgY3VycmVudGx5IGNoYW5nZSB0aGUgZGVmYXVsdCBx
dW90YQogfQogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VPYnNlcnZl
ci5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIldlYkRhdGFiYXNlT2JzZXJ2ZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFi
YXNlT3BlbmVkKERhdGFiYXNlKiBkYXRhYmFzZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5kYXRhYmFzZU9wZW5lZChXZWJEYXRh
YmFzZShkYXRhYmFzZSkpOworfQorCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OmRhdGFiYXNlTW9k
aWZpZWQoRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPmRhdGFiYXNlTW9kaWZpZWQoV2ViRGF0YWJh
c2UoZGF0YWJhc2UpKTsKK30KKwordm9pZCBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNsb3Nl
ZChEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+ZGF0YWJhc2VDbG9zZWQoV2ViRGF0YWJhc2UoZGF0
YWJhc2UpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDUwOTU2KQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJEYXRhYmFzZVRocmVhZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlF1b3RhVHJhY2tlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIldlYlN0
cmluZy5oIgpAQCAtNjUsMzcgKzY2LDI2IEBAIHZvaWQgV2ViRGF0YWJhc2U6OmFzc2lnbihjb25z
dCBXZWJEYXRhYmEKIAogV2ViU3RyaW5nIFdlYkRhdGFiYXNlOjpuYW1lKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9wcml2YXRlKQotICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5zdHJpbmdJZGVudGlm
aWVyKCk7Ci0KLSAgICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOCgibnVsbCIpOworICAgIEFT
U0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0cmluZ0lkZW50aWZpZXIo
KTsKIH0KIAogV2ViU3RyaW5nIFdlYkRhdGFiYXNlOjpkaXNwbGF5TmFtZSgpIGNvbnN0CiB7Ci0v
LyBGSVhNRTogYWRkIHRoZSBEYXRhYmFzZTo6ZGlzcGxheU5hbWUoKSBtZXRob2QuCi0vLyAgICAg
aWYgKG1fcHJpdmF0ZSkKLS8vICAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZGlzcGxheU5hbWUo
KTsKLQotICAgIHJldHVybiBXZWJTdHJpbmc6OmZyb21VVEY4KCJudWxsIik7CisgICAgQVNTRVJU
KG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZGlzcGxheU5hbWUoKTsKIH0KIAog
dW5zaWduZWQgbG9uZyBXZWJEYXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIGNvbnN0CiB7Ci0vLyBG
SVhNRTogYWRkIHRoZSBEYXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSgpIG1ldGhvZC4KLS8vICAgIGlm
IChtX3ByaXZhdGUpCi0vLyAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZXN0aW1hdGVkU2l6ZSgp
OwotCi0gICAgcmV0dXJuIC0xOworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBt
X3ByaXZhdGUtPmVzdGltYXRlZFNpemUoKTsKIH0KIAogV2ViU2VjdXJpdHlPcmlnaW4gV2ViRGF0
YWJhc2U6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKIHsKLS8vIEZJWE1FOiBhZGQgdGhlIERhdGFi
YXNlOjp0aHJlYWRTYWZlU2VjdXJpdHlPcmlnaW4oKSBtZXRob2QuCi0vLyAgICAgaWYgKG1fcHJp
dmF0ZSkKLS8vICAgICAgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2luKG1fcHJpdmF0ZS0+dGhy
ZWFkU2FmZVNlY3VyaXR5T3JpZ2luKCkpOwotCi0gICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2lu
KCk7CisgICAgQVNTRVJUKG1fcHJpdmF0ZSk7CisgICAgcmV0dXJuIFdlYlNlY3VyaXR5T3JpZ2lu
KG1fcHJpdmF0ZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2U6OnNl
dE9ic2VydmVyKFdlYkRhdGFiYXNlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtMTEyLDkgKzEwMiw4
IEBAIHZvaWQgV2ViRGF0YWJhc2U6OnVwZGF0ZURhdGFiYXNlU2l6ZSgKICAgICBjb25zdCBXZWJT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYlN0cmluZyYgZGF0YWJhc2VOYW1lLAog
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZVNpemUsIHVuc2lnbmVkIGxvbmcgbG9uZyBz
cGFjZUF2YWlsYWJsZSkKIHsKLS8vIEZJWE1FOiBhZGQgdGhlIFF1b3RhVHJhY2tlciBjbGFzcy4K
LS8vICAgICBXZWJDb3JlOjpRdW90YVRyYWNrZXI6Omluc3RhbmNlKCkudXBkYXRlRGF0YWJhc2VT
aXplKAotLy8gICAgICAgICBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRhdGFiYXNl
U2l6ZSwgc3BhY2VBdmFpbGFibGUpOworICAgIFdlYkNvcmU6OlF1b3RhVHJhY2tlcjo6aW5zdGFu
Y2UoKS51cGRhdGVEYXRhYmFzZVNpemVBbmRTcGFjZUF2YWlsYWJsZVRvT3JpZ2luKAorICAgICAg
ICBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5hbWUsIGRhdGFiYXNlU2l6ZSwgc3BhY2VBdmFp
bGFibGUpOwogfQogCiBXZWJEYXRhYmFzZTo6V2ViRGF0YWJhc2UoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPERhdGFiYXNlPiYgZGF0YWJhc2UpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gNTA5NTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMjAgKzgxLDE0IEBA
IGJvb2wgV2ViU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAogCiBXZWJTdHJpbmcgV2Vi
U2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG5vdCBzdXBwb3J0IGNhbGxpbmcgdGhpcyBtZXRob2Qgd2hlbiBtX3ByaXZhdGUgaXMgbnVs
bC4KLSAgICBpZiAobV9wcml2YXRlKQotICAgICAgICByZXR1cm4gbV9wcml2YXRlLT50b1N0cmlu
ZygpOwotCi0gICAgcmV0dXJuIFdlYlN0cmluZzo6ZnJvbVVURjgoIm51bGwiKTsKKyAgICBBU1NF
UlQobV9wcml2YXRlKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT50b1N0cmluZygpOwogfQogCiBX
ZWJTdHJpbmcgV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpCiB7Ci0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBub3Qgc3VwcG9ydCBjYWxsaW5nIHRoaXMgbWV0aG9kIHdoZW4g
bV9wcml2YXRlIGlzIG51bGwuCi0gICAgaWYgKG1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7Ci0KLSAgICByZXR1cm4gV2ViU3RyaW5nOjpm
cm9tVVRGOCgibnVsbCIpOworICAgIEFTU0VSVChtX3ByaXZhdGUpOworICAgIHJldHVybiBtX3By
aXZhdGUtPmRhdGFiYXNlSWRlbnRpZmllcigpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6V2Vi
U2VjdXJpdHlPcmlnaW4oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiYgb3JpZ2luKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>