<?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>109840</bug_id>
          
          <creation_ts>2013-02-14 09:10:00 -0800</creation_ts>
          <short_desc>[Mac] adjust caption color user preference calculation</short_desc>
          <delta_ts>2013-02-14 13:55:59 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>833127</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-14 09:10:00 -0800</bug_when>
    <thetext>Mark user caption color overrides as &quot;!important&quot; if either the color or opacity do not allow overrides.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833131</commentid>
    <comment_count>1</comment_count>
      <attachid>188369</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-14 09:16:42 -0800</bug_when>
    <thetext>Created attachment 188369
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833132</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-14 09:17:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/13201278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833137</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 09:19:37 -0800</bug_when>
    <thetext>Attachment 188369 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;]&quot; exit_code: 1
Total errors found: 0 in 0 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833151</commentid>
    <comment_count>4</comment_count>
      <attachid>188371</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-14 09:33:42 -0800</bug_when>
    <thetext>Created attachment 188371
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833385</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-14 13:55:52 -0800</bug_when>
    <thetext>Committed in http://trac.webkit.org/r142910.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>188369</attachid>
            <date>2013-02-14 09:16:42 -0800</date>
            <delta_ts>2013-02-14 09:33:11 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>CaptionUserPreferencesMac.mm</filename>
            <type>text/plain</type>
            <size>21527</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
ICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgogKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAogKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAogKi8KCiNpbXBvcnQgImNvbmZpZy5oIgoKI2lmIEVOQUJMRShWSURF
T19UUkFDSykKCiNpbXBvcnQgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaCIKCiNpbXBvcnQg
IkNvbG9yTWFjLmgiCiNpbXBvcnQgIkNvcmVUZXh0L0NvcmVUZXh0LmgiCiNpbXBvcnQgIkRPTVdy
YXBwZXJXb3JsZC5oIgojaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKI2ltcG9ydCAiS1VSTC5o
IgojaW1wb3J0ICJMYW5ndWFnZS5oIgojaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiNpbXBv
cnQgIkxvZ2dpbmcuaCIKI2ltcG9ydCAiUGFnZUdyb3VwLmgiCiNpbXBvcnQgIlNvZnRMaW5raW5n
LmgiCiNpbXBvcnQgIlRleHRUcmFja0N1ZS5oIgojaW1wb3J0ICJVc2VyU3R5bGVTaGVldFR5cGVz
LmgiCiNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgoKI2lmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKI2ltcG9y
dCAiTWVkaWFBY2Nlc3NpYmlsaXR5L01lZGlhQWNjZXNzaWJpbGl0eS5oIgojZW5kaWYKCiNpZiBN
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCgpTT0ZUX0xJTktfRlJBTUVXT1JL
X09QVElPTkFMKE1lZGlhQWNjZXNzaWJpbGl0eSkKClNPRlRfTElOSyhNZWRpYUFjY2Vzc2liaWxp
dHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRTaG93Q2FwdGlvbnMsIGJvb2wsIChNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluIGRvbWFpbiksIChkb21haW4pKQpTT0ZUX0xJTksoTWVkaWFBY2Nlc3Np
YmlsaXR5LCBNQUNhcHRpb25BcHBlYXJhbmNlU2V0U2hvd0NhcHRpb25zLCB2b2lkLCAoTUFDYXB0
aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIGJvb2wgc2hvd0NhcHRpb25zKSwgKGRvbWFpbiwg
c2hvd0NhcHRpb25zKSkKU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBw
ZWFyYW5jZUNvcHlGb3JlZ3JvdW5kQ29sb3IsIENHQ29sb3JSZWYsIChNQUNhcHRpb25BcHBlYXJh
bmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciks
IChkb21haW4sIGJlaGF2aW9yKSkKU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0
aW9uQXBwZWFyYW5jZUNvcHlCYWNrZ3JvdW5kQ29sb3IsIENHQ29sb3JSZWYsIChNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhh
dmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwg
TUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlXaW5kb3dDb2xvciwgQ0dDb2xvclJlZiwgKE1BQ2FwdGlv
bkFwcGVhcmFuY2VEb21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJl
aGF2aW9yKSwgKGRvbWFpbiwgYmVoYXZpb3IpKQpTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5
LCBNQUNhcHRpb25BcHBlYXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHksIENHRmxvYXQsIChNQUNh
cHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
ICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJp
bGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5LCBDR0Zsb2F0LCAo
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpClNPRlRfTElOSyhNZWRpYUFjY2Vz
c2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5LCBDR0Zsb2F0LCAo
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpClNPRlRfTElOSyhNZWRpYUFjY2Vz
c2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVz
LCBDR0Zsb2F0LCAoTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4sIE1BQ2FwdGlvbkFw
cGVhcmFuY2VCZWhhdmlvciAqYmVoYXZpb3IpLCAoZG9tYWluLCBiZWhhdmlvcikpClNPRlRfTElO
SyhNZWRpYUFjY2Vzc2liaWxpdHksIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5Rm9udERlc2NyaXB0
b3JGb3JTdHlsZSwgQ1RGb250RGVzY3JpcHRvclJlZiwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VEb21h
aW4gZG9tYWluLCAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yICpiZWhhdmlvciwgTUFDYXB0
aW9uQXBwZWFyYW5jZUZvbnRTdHlsZSBmb250U3R5bGUpLCAoZG9tYWluLCBiZWhhdmlvciwgZm9u
dFN0eWxlKSkKU09GVF9MSU5LKE1lZGlhQWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5j
ZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSwgQ0dGbG9hdCwgKE1BQ2FwdGlvbkFwcGVhcmFuY2VE
b21haW4gZG9tYWluLCBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgKmJlaGF2aW9yKSwgKGRv
bWFpbiwgYmVoYXZpb3IpKQpTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBNQUNhcHRpb25B
cHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSwgTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5
bGUsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgTUFDYXB0aW9uQXBwZWFyYW5j
ZUJlaGF2aW9yICpiZWhhdmlvciksIChkb21haW4sIGJlaGF2aW9yKSkKU09GVF9MSU5LKE1lZGlh
QWNjZXNzaWJpbGl0eSwgTUFDYXB0aW9uQXBwZWFyYW5jZUFkZFNlbGVjdGVkTGFuZ3VhZ2UsIGJv
b2wsIChNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluIGRvbWFpbiwgQ0ZTdHJpbmdSZWYgbGFuZ3Vh
Z2UpLCAoZG9tYWluLCBsYW5ndWFnZSkpOwpTT0ZUX0xJTksoTWVkaWFBY2Nlc3NpYmlsaXR5LCBN
QUNhcHRpb25BcHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzLCBDRkFycmF5UmVmLCAoTUFD
YXB0aW9uQXBwZWFyYW5jZURvbWFpbiBkb21haW4pLCAoZG9tYWluKSk7CgpTT0ZUX0xJTktfUE9J
TlRFUihNZWRpYUFjY2Vzc2liaWxpdHksIGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgQ0ZTdHJpbmdSZWYpCiNkZWZpbmUga01BWENhcHRpb25BcHBlYXJh
bmNlU2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uIGdldGtNQVhDYXB0aW9uQXBwZWFyYW5jZVNl
dHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbigpCgojZW5kaWYKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7
CgpuYW1lc3BhY2UgV2ViQ29yZSB7CgojaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MApzdGF0aWMgdm9pZCB1c2VyQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZT
dHJpbmdSZWYsIGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQp7CiAgICBzdGF0aWNfY2Fz
dDxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKj4ob2JzZXJ2ZXIpLT5jYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKCk7Cn0KI2VuZGlmCgpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjKFBhZ2VHcm91cCogZ3JvdXApCiAgICA6IENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMoZ3JvdXApCiNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
CiAgICAsIG1fbGlzdGVuaW5nRm9yUHJlZmVyZW5jZUNoYW5nZXMoZmFsc2UpCiNlbmRpZgp7Cn0K
CkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6On5DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjKCkK
ewojaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgaWYgKGtNQVhD
YXB0aW9uQXBwZWFyYW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikKICAgICAgICBDRk5v
dGlmaWNhdGlvbkNlbnRlclJlbW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9j
YWxDZW50ZXIoKSwgdGhpcywga01BWENhcHRpb25BcHBlYXJhbmNlU2V0dGluZ3NDaGFuZ2VkTm90
aWZpY2F0aW9uLCBOVUxMKTsKI2VuZGlmCn0KCiNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCmJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlclByZWZlcnND
YXB0aW9ucygpIGNvbnN0CnsKICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2li
aWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVz
ZXJQcmVmZXJzQ2FwdGlvbnMoKTsKCiAgICByZXR1cm4gTUFDYXB0aW9uQXBwZWFyYW5jZUdldFNo
b3dDYXB0aW9ucyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIpOwp9Cgp2b2lkIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJl
bmNlKQp7CiAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFy
eSgpKSB7CiAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0
aW9ucyhwcmVmZXJlbmNlKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgTUFDYXB0aW9uQXBw
ZWFyYW5jZVNldFNob3dDYXB0aW9ucyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIHBy
ZWZlcmVuY2UpOwp9Cgpib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMoKSBjb25zdAp7CiAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFB
Y2Nlc3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCk7CgogICAgcmV0dXJuIHRydWU7Cn0KCnZv
aWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikK
ewogICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MobGlzdGVuZXIpOwoKICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFy
eSgpKQogICAgICAgIHJldHVybjsKCiAgICBpZiAoIWtNQVhDYXB0aW9uQXBwZWFyYW5jZVNldHRp
bmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikKICAgICAgICByZXR1cm47CgogICAgaWYgKCFtX2xpc3Rl
bmluZ0ZvclByZWZlcmVuY2VDaGFuZ2VzKSB7CiAgICAgICAgbV9saXN0ZW5pbmdGb3JQcmVmZXJl
bmNlQ2hhbmdlcyA9IHRydWU7CiAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZl
cihDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIHVzZXJDYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2ssIGtNQVhDYXB0aW9uQXBwZWFy
YW5jZVNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgTlVMTCwgQ0ZOb3RpZmljYXRpb25TdXNw
ZW5zaW9uQmVoYXZpb3JDb2FsZXNjZSk7CiAgICB9CiAgICAKICAgIHVwZGF0ZUNhcHRpb25TdHls
ZVNoZWV0T3ZlcmlkZSgpOwp9Cgp2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWQoKQp7CiAgICBpZiAoaGF2ZVByZWZlcmVuY2VDaGFuZ2VMaXN0
ZW5lcnMoKSkKICAgICAgICB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKCiAgICBD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7Cn0KClN0
cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1dpbmRvd0NTUygpIGNvbnN0
CnsKICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKICAgIFJldGFpblB0
cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weVdpbmRv
d0NvbG9yKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKSk7CgogICAg
Q29sb3Igd2luZG93Q29sb3IoY29sb3IuZ2V0KCkpOwogICAgaWYgKCF3aW5kb3dDb2xvci5pc1Zh
bGlkKCkpCiAgICAgICAgd2luZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CgogICAgYm9v
bCBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNl
VmFsdWU7CiAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNlR2V0V2luZG93
T3BhY2l0eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CiAgICBp
ZiAoIWltcG9ydGFudCkKICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CiAgICBTdHJpbmcgd2luZG93U3R5bGUgPSBjb2xv
clByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDb2xvcih3aW5kb3dDb2xv
ci5yZWQoKSwgd2luZG93Q29sb3IuZ3JlZW4oKSwgd2luZG93Q29sb3IuYmx1ZSgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwgaW1wb3J0YW50KTsKCiAgICBpZiAoIW9wYWNpdHkp
CiAgICAgICAgcmV0dXJuIHdpbmRvd1N0eWxlOwoKICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgIGJ1aWxkZXIuYXBwZW5kKHdpbmRvd1N0eWxlKTsKICAgIGJ1aWxkZXIuYXBwZW5kKGdldFBy
b3BlcnR5TmFtZVN0cmluZyhDU1NQcm9wZXJ0eVBhZGRpbmcpKTsKICAgIGJ1aWxkZXIuYXBwZW5k
KCI6IC40ZW0gIWltcG9ydGFudDsiKTsKICAgIAogICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKfQoKU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zQmFja2dyb3Vu
ZENTUygpIGNvbnN0CnsKICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1l
IGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAgLy8gYW5kIHdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrLWZ1dHVyZS1ub2Rlcy4KICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRC
YWNrZ3JvdW5kQ29sb3IsIChDb2xvcigwLCAwLCAwLCAwLjggKiAyNTUpKSk7CgogICAgTUFDYXB0
aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOwoKICAgIFJldGFpblB0cjxDR0NvbG9yUmVm
PiBjb2xvcihBZG9wdENGLCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUJhY2tncm91bmRDb2xvcihr
TUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOwogICAgQ29sb3IgYmFj
a2dyb3VuZENvbG9yKGNvbG9yLmdldCgpKTsKICAgIGlmICghYmFja2dyb3VuZENvbG9yLmlzVmFs
aWQoKSkKICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dyb3VuZENvbG9yOwoK
ICAgIGJvb2wgaW1wb3J0YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvclVzZVZhbHVlOwogICAgQ0dGbG9hdCBvcGFjaXR5ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdl
dEJhY2tncm91bmRPcGFjaXR5KGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgMCk7CiAg
ICBpZiAoIWltcG9ydGFudCkKICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0
aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CiAgICBTdHJpbmcgYmFja2dyb3VuZFN0eWxl
ID0gY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3IoYmFj
a2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENv
bG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1KSksIGltcG9ydGFudCk7
CgogICAgaWYgKCFvcGFjaXR5KQogICAgICAgIHJldHVybiBiYWNrZ3JvdW5kU3R5bGU7CiAgICAK
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgIGJ1aWxkZXIuYXBwZW5kKGJhY2tncm91bmRT
dHlsZSk7CiAgICBidWlsZGVyLmFwcGVuZChnZXRQcm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVy
dHlQYWRkaW5nKSk7CiAgICBidWlsZGVyLmFwcGVuZCgiOiAwcHgiKTsKICAgIGlmIChiZWhhdmlv
ciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpCiAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIiAhaW1wb3J0YW50Iik7CiAgICBidWlsZGVyLmFwcGVuZCgnOycpOwogICAgCiAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwp9CgpDb2xvciBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uc1RleHRDb2xvcihib29sJiBpbXBvcnRhbnQpIGNvbnN0CnsKICAgIE1B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKICAgIFJldGFpblB0cjxDR0NvbG9y
UmVmPiBjb2xvcihBZG9wdENGLCBNQUNhcHRpb25BcHBlYXJhbmNlQ29weUZvcmVncm91bmRDb2xv
cihrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcikpOwogICAgQ29sb3Ig
dGV4dENvbG9yKGNvbG9yLmdldCgpKTsKICAgIGlmICghdGV4dENvbG9yLmlzVmFsaWQoKSkKICAg
ICAgICAvLyBUaGlzIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgb25lIHNw
ZWNpZmllZCBpbiBtZWRpYUNvbnRyb2xzLmNzcyBmb3IgLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNr
LWNvbnRhaW5lci4KICAgICAgICB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7CiAgICAKICAgIGlt
cG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1
ZTsKICAgIENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRGb3JlZ3JvdW5k
T3BhY2l0eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CiAgICBp
ZiAoIWltcG9ydGFudCkKICAgICAgICBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9u
QXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CiAgICByZXR1cm4gQ29sb3IodGV4dENvbG9yLnJl
ZCgpLCB0ZXh0Q29sb3IuZ3JlZW4oKSwgdGV4dENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50
PihvcGFjaXR5ICogMjU1KSk7Cn0KICAgIApTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6Y2FwdGlvbnNUZXh0Q29sb3JDU1MoKSBjb25zdAp7CiAgICBib29sIGltcG9ydGFudDsKICAg
IENvbG9yIHRleHRDb2xvciA9IGNhcHRpb25zVGV4dENvbG9yKGltcG9ydGFudCk7CgogICAgaWYg
KCF0ZXh0Q29sb3IuaXNWYWxpZCgpKQogICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwoKICAg
IHJldHVybiBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5Q29sb3IsIHRleHRDb2xvciwgaW1w
b3J0YW50KTsKfQogICAgClN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp3aW5kb3dS
b3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCkgY29uc3QKewogICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJl
aGF2aW9yIGJlaGF2aW9yOwogICAgQ0dGbG9hdCByYWRpdXMgPSBNQUNhcHRpb25BcHBlYXJhbmNl
R2V0V2luZG93Um91bmRlZENvcm5lclJhZGl1cyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVz
ZXIsICZiZWhhdmlvcik7CiAgICBpZiAoIXJhZGl1cykKICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKCiAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICBidWlsZGVyLmFwcGVuZChnZXRQ
cm9wZXJ0eU5hbWVTdHJpbmcoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpKTsKICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCI6JS4wMmZweCIsIHJhZGl1cykpOwogICAgaWYgKGJlaGF2
aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKICAgICAgICBidWls
ZGVyLmFwcGVuZCgiICFpbXBvcnRhbnQiKTsKICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CgogICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKfQogICAgCkNvbG9yIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWM6OmNhcHRpb25zRWRnZUNvbG9yRm9yVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0
Q29sb3IpIGNvbnN0CnsKICAgIGludCBkaXN0YW5jZUZyb21XaGl0ZSA9IGRpZmZlcmVuY2VTcXVh
cmVkKHRleHRDb2xvciwgQ29sb3I6OndoaXRlKTsKICAgIGludCBkaXN0YW5jZUZyb21CbGFjayA9
IGRpZmZlcmVuY2VTcXVhcmVkKHRleHRDb2xvciwgQ29sb3I6OmJsYWNrKTsKICAgIAogICAgaWYg
KGRpc3RhbmNlRnJvbVdoaXRlIDwgZGlzdGFuY2VGcm9tQmxhY2spCiAgICAgICAgcmV0dXJuIHRl
eHRDb2xvci5kYXJrKCk7CiAgICAKICAgIHJldHVybiB0ZXh0Q29sb3IubGlnaHQoKTsKfQoKU3Ry
aW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29s
b3IoQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29sb3ImIHRl
eHRDb2xvciwgYm9vbCBpbXBvcnRhbnQpIGNvbnN0CnsKICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgIAogICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGlkKSk7CiAg
ICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgYnVpbGRlci5hcHBlbmQodmFsdWUpOwogICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKICAgIGJ1aWxkZXIuYXBwZW5kKGNhcHRpb25zRWRnZUNvbG9yRm9y
VGV4dENvbG9yKHRleHRDb2xvcikuc2VyaWFsaXplZCgpKTsKICAgIGlmIChpbXBvcnRhbnQpCiAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIiAhaW1wb3J0YW50Iik7CiAgICBidWlsZGVyLmFwcGVuZCgn
OycpOwogICAgCiAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwp9CgpTdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Y29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlEIGlkLCBj
b25zdCBDb2xvciYgY29sb3IsIGJvb2wgaW1wb3J0YW50KSBjb25zdAp7CiAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAKICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmlu
ZyhpZCkpOwogICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgIGJ1aWxkZXIuYXBwZW5kKGNvbG9y
LnNlcmlhbGl6ZWQoKSk7CiAgICBpZiAoaW1wb3J0YW50KQogICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIgIWltcG9ydGFudCIpOwogICAgYnVpbGRlci5hcHBlbmQoJzsnKTsKICAgIAogICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKfQoKU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zVGV4dEVkZ2VDU1MoKSBjb25zdAp7CiAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgZWRnZVN0eWxlUmFpc2VkLCAoIiAtLjA1ZW0gLS4wNWVtIDAgIiwgU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGVkZ2VTdHlsZURlcHJlc3NlZCwgKCIgLjA1ZW0gLjA1ZW0gMCAiLCBTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgZWRnZVN0eWxlRHJvcFNoYWRvdywgKCIgLjA3NWVtIC4wNzVlbSAwICIsIFN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBlZGdlU3R5bGVVbmlmb3JtLCAoIiAuMDNlbSAiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CgogICAgYm9vbCB1bnVzZWQ7CiAgICBDb2xvciBjb2xvciA9IGNhcHRpb25zVGV4dENv
bG9yKHVudXNlZCk7CiAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKICAgICAgICBjb2xvci5zZXRO
YW1lZENvbG9yKCJibGFjayIpOwogICAgY29sb3IgPSBjYXB0aW9uc0VkZ2VDb2xvckZvclRleHRD
b2xvcihjb2xvcik7CgogICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9yOwog
ICAgTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGUgdGV4dEVkZ2VTdHlsZSA9IE1BQ2Fw
dGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
VXNlciwgJmJlaGF2aW9yKTsKICAgIHN3aXRjaCAodGV4dEVkZ2VTdHlsZSkgewogICAgICAgIGNh
c2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlVW5kZWZpbmVkOgogICAgICAgIGNh
c2Uga01BQ2FwdGlvbkFwcGVhcmFuY2VUZXh0RWRnZVN0eWxlTm9uZToKICAgICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgIAogICAgICAgIGNhc2Uga01BQ2FwdGlvbkFw
cGVhcmFuY2VUZXh0RWRnZVN0eWxlUmFpc2VkOgogICAgICAgICAgICByZXR1cm4gY3NzUHJvcGVy
dHlXaXRoVGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eVRleHRTaGFkb3csIGVkZ2VTdHlsZVJhaXNl
ZCwgY29sb3IsIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1
ZSk7CiAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRFZGdlU3R5bGVEZXByZXNz
ZWQ6CiAgICAgICAgICAgIHJldHVybiBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1By
b3BlcnR5VGV4dFNoYWRvdywgZWRnZVN0eWxlRGVwcmVzc2VkLCBjb2xvciwgYmVoYXZpb3IgPT0g
a01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKICAgICAgICBjYXNlIGtNQUNh
cHRpb25BcHBlYXJhbmNlVGV4dEVkZ2VTdHlsZURyb3BTaGFkb3c6CiAgICAgICAgICAgIHJldHVy
biBjc3NQcm9wZXJ0eVdpdGhUZXh0RWRnZUNvbG9yKENTU1Byb3BlcnR5VGV4dFNoYWRvdywgZWRn
ZVN0eWxlRHJvcFNoYWRvdywgY29sb3IsIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNl
QmVoYXZpb3JVc2VWYWx1ZSk7CiAgICAgICAgY2FzZSBrTUFDYXB0aW9uQXBwZWFyYW5jZVRleHRF
ZGdlU3R5bGVVbmlmb3JtOgogICAgICAgICAgICByZXR1cm4gY3NzUHJvcGVydHlXaXRoVGV4dEVk
Z2VDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIGVkZ2VTdHlsZVVuaWZvcm0sIGNv
bG9yLCBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWUpOwog
ICAgICAgICAgICAKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CiAgICAKICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwp9CgpTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNEZWZhdWx0
Rm9udENTUygpIGNvbnN0CnsKICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlv
cjsKICAgIAogICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZvbnQoQWRvcHRDRiwg
TUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlGb250RGVzY3JpcHRvckZvclN0eWxlKGtNQUNhcHRpb25B
cHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yLCBrTUFDYXB0aW9uQXBwZWFyYW5jZUZvbnRT
dHlsZURlZmF1bHQpKTsKICAgIGlmICghZm9udCkKICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKCiAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBuYW1lKEFkb3B0Q0YsIENURm9udERlc2NyaXB0
b3JDb3B5QXR0cmlidXRlKGZvbnQuZ2V0KCksIGtDVEZvbnROYW1lQXR0cmlidXRlKSk7CiAgICBp
ZiAoIW5hbWUpCiAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAKICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKICAgIAogICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3Ry
aW5nKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOwogICAgYnVpbGRlci5hcHBlbmQoIjogXCIiKTsK
ICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihuYW1lLmdldCgpKSk7
CiAgICBidWlsZGVyLmFwcGVuZCgnIicpOwogICAgaWYgKGJlaGF2aW9yID09IGtNQUNhcHRpb25B
cHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZSkKICAgICAgICBidWlsZGVyLmFwcGVuZCgiICFpbXBv
cnRhbnQiKTsKICAgIGJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAKICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7Cn0KClN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CnsKICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFN
ZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CgogICAgU3RyaW5nQnVpbGRl
ciBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKCiAgICBTdHJpbmcgYmFja2dyb3VuZCA9IGNh
cHRpb25zQmFja2dyb3VuZENTUygpOwogICAgaWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSkgewog
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlOjphbGxO
b2Rlc1NoYWRvd1BzZXVkb0lkKCkpOwogICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZCgneycpOwogICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChi
YWNrZ3JvdW5kKTsKICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30n
KTsKICAgIH0KCiAgICBTdHJpbmcgd2luZG93Q29sb3IgPSBjYXB0aW9uc1dpbmRvd0NTUygpOwog
ICAgU3RyaW5nIHdpbmRvd0Nvcm5lclJhZGl1cyA9IHdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXND
U1MoKTsKICAgIFN0cmluZyBjYXB0aW9uc0NvbG9yID0gY2FwdGlvbnNUZXh0Q29sb3JDU1MoKTsK
ICAgIFN0cmluZyBlZGdlU3R5bGUgPSBjYXB0aW9uc1RleHRFZGdlQ1NTKCk7CiAgICBTdHJpbmcg
Zm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCk7CiAgICBpZiAoIWNhcHRpb25zQ29s
b3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb2xvci5pc0VtcHR5KCkgfHwgIXdpbmRvd0Nvcm5lclJh
ZGl1cy5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1w
dHkoKSkgewogICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVv
OjoiKTsKICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNr
Q3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKICAgICAgICBjYXB0aW9u
c092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKCiAgICAgICAgaWYgKCF3aW5kb3dDb2xv
ci5pc0VtcHR5KCkpCiAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCh3aW5kb3dDb2xvcik7CiAgICAgICAgaWYgKCF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgp
KQogICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQod2luZG93Q29y
bmVyUmFkaXVzKTsKICAgICAgICBpZiAoIWNhcHRpb25zQ29sb3IuaXNFbXB0eSgpKQogICAgICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY2FwdGlvbnNDb2xvcik7CiAg
ICAgICAgaWYgKCFlZGdlU3R5bGUuaXNFbXB0eSgpKQogICAgICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoZWRnZVN0eWxlKTsKICAgICAgICBpZiAoIWZvbnROYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGZv
bnROYW1lKTsKCiAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9Jyk7
CiAgICB9CgogICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGVTZXR0aW5nIHN5dGxlIHRvOlxuJXMiLCBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwoKICAgIHJldHVybiBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC50b1N0cmluZygpOwp9CgpmbG9hdCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBpbXBvcnRhbnQpIGNvbnN0
CnsKICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkp
CiAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNhcHRpb25Gb250U2l6ZVNj
YWxlKGltcG9ydGFudCk7CgogICAgTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yIGJlaGF2aW9y
OwogICAgQ0dGbG9hdCBjaGFyYWN0ZXJTY2FsZSA9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNh
cHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7CiAgICBDR0Zsb2F0IHNjYWxlQWRqdXN0bWVu
dCA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUoa01BQ2FwdGlv
bkFwcGVhcmFuY2VEb21haW5Vc2VyLCAmYmVoYXZpb3IpOwoKICAgIGlmICghc2NhbGVBZGp1c3Rt
ZW50KQogICAgICAgIHJldHVybiBjaGFyYWN0ZXJTY2FsZTsKCiAgICBpbXBvcnRhbnQgPSBiZWhh
dmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CiNpZiBkZWZpbmVk
KF9fTFA2NF9fKSAmJiBfX0xQNjRfXwogICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
c2NhbGVBZGp1c3RtZW50ICogY2hhcmFjdGVyU2NhbGUpOwojZWxzZQogICAgcmV0dXJuIHNjYWxl
QWRqdXN0bWVudCAqIGNoYXJhY3RlclNjYWxlOwojZW5kaWYKfQoKdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQp7CiAgICAvLyBJ
ZGVudGlmeSBvdXIgb3ZlcnJpZGUgc3R5bGUgc2hlZXQgd2l0aCBhIHVuaXF1ZSBVUkwgLSBhIG5l
dyBzY2hlbWUgYW5kIGEgVVVJRC4KICAgIERFRklORV9TVEFUSUNfTE9DQUwoS1VSTCwgY2FwdGlv
bnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlk
ZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CiAgICAKICAgIHBhZ2VH
cm91cCgpLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMKTsKICAgIAogICAgU3RyaW5nIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKICAgIGlmIChj
YXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5pc0VtcHR5KCkpCiAgICAgICAgcmV0dXJuOwogICAg
CiAgICBwYWdlR3JvdXAoKS0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCwgY2FwdGlvbnNTdHlsZVNoZWV0
VVJMLCBWZWN0b3I8U3RyaW5nPigpLAogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4oKSwgSW5q
ZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxldmVsLCBJbmplY3RJbkV4aXN0aW5nRG9j
dW1lbnRzKTsKfQoKdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVmZXJyZWRM
YW5ndWFnZShTdHJpbmcgbGFuZ3VhZ2UpCnsKICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRp
YUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
OjpzZXRQcmVmZXJyZWRMYW5ndWFnZShsYW5ndWFnZSk7CiAgICAgICAgcmV0dXJuOwogICAgfQoK
ICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VBZGRTZWxlY3RlZExhbmd1YWdlKGtNQUNhcHRpb25BcHBl
YXJhbmNlRG9tYWluVXNlciwgbGFuZ3VhZ2UuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cn0KClZl
Y3RvcjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJlZExhbmd1YWdl
cygpIGNvbnN0CnsKICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlM
aWJyYXJ5KCkpCiAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJl
ZExhbmd1YWdlcygpOwoKICAgIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtTGFuZ3VhZ2VzID0gcGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlk
ZSA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogICAgaWYgKCFvdmVycmlkZS5p
c0VtcHR5KCkpIHsKICAgICAgICBpZiAocGxhdGZvcm1MYW5ndWFnZXMuc2l6ZSgpICE9IG92ZXJy
aWRlLnNpemUoKSkKICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRlOwogICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb3ZlcnJpZGUuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgaWYgKG92
ZXJyaWRlW2ldICE9IHBsYXRmb3JtTGFuZ3VhZ2VzW2ldKQogICAgICAgICAgICAgICAgcmV0dXJu
IG92ZXJyaWRlOwogICAgICAgIH0KICAgIH0KCiAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSAw
OwogICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlcyhBZG9wdENGLCBNQUNhcHRpb25B
cHBlYXJhbmNlQ29weVNlbGVjdGVkTGFuZ3VhZ2VzKGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWlu
VXNlcikpOwogICAgaWYgKGxhbmd1YWdlcykKICAgICAgICBsYW5ndWFnZUNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CgogICAgaWYgKCFsYW5ndWFnZUNvdW50KQogICAg
ICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5ndWFnZXMoKTsK
CiAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwogICAgdXNlclByZWZl
cnJlZExhbmd1YWdlcy5yZXNlcnZlQ2FwYWNpdHkobGFuZ3VhZ2VDb3VudCArIHBsYXRmb3JtTGFu
Z3VhZ2VzLnNpemUoKSk7CiAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50
OyBpKyspCiAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkp
OwoKICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2VzKTsK
CiAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKfQojZW5kaWYKClN0cmluZyBDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjOjpkaXNwbGF5TmFtZUZvclRyYWNrKFRleHRUcmFjayogdHJh
Y2spIGNvbnN0CnsKICAgIFN0cmluZyBsYWJlbCA9IHRyYWNrLT5sYWJlbCgpOwogICAgU3RyaW5n
IGxhbmd1YWdlID0gdHJhY2stPmxhbmd1YWdlKCk7CiAgICBTdHJpbmcgcHJlZmVycmVkTGFuZ3Vh
Z2UgPSBkZWZhdWx0TGFuZ3VhZ2UoKTsKICAgIFN0cmluZ0J1aWxkZXIgZGlzcGxheU5hbWU7Cgog
ICAgaWYgKGxhYmVsLmlzRW1wdHkoKSAmJiBsYW5ndWFnZS5pc0VtcHR5KCkpIHsKICAgICAgICBk
aXNwbGF5TmFtZS5hcHBlbmQodGV4dFRyYWNrTm9MYWJlbFRleHQoKSk7CiAgICAgICAgcmV0dXJu
IGRpc3BsYXlOYW1lLnRvU3RyaW5nKCk7CiAgICB9CgogICAgaWYgKCFsYWJlbC5pc0VtcHR5KCkp
CiAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxhYmVsKTsKCiAgICBBdG9taWNTdHJpbmcgbG9j
YWxlRGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZUZvckxhbmd1YWdlTG9jYWxlKGxhbmd1YWdlKTsK
ICAgIGlmICghbGFiZWwuY29udGFpbnMobG9jYWxlRGlzcGxheU5hbWUpKSB7CiAgICAgICAgaWYg
KGRpc3BsYXlOYW1lLmxlbmd0aCgpID4gMCkKICAgICAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5k
KCIgIik7CiAgICAgICAgZGlzcGxheU5hbWUuYXBwZW5kKGxvY2FsZURpc3BsYXlOYW1lKTsKICAg
IH0KCiAgICBpZiAodHJhY2stPmtpbmQoKSA9PSB0cmFjay0+Y2FwdGlvbnNLZXl3b3JkKCkpIHsK
ICAgICAgICBpZiAodHJhY2stPmlzQ2xvc2VkQ2FwdGlvbnMoKSkKICAgICAgICAgICAgZGlzcGxh
eU5hbWUuYXBwZW5kKCIgQ0MiKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGRpc3BsYXlOYW1l
LmFwcGVuZCgiIFNESCIpOwogICAgfQoKICAgIHJldHVybiBkaXNwbGF5TmFtZS50b1N0cmluZygp
Owp9Cgp9CgojZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188371</attachid>
            <date>2013-02-14 09:33:42 -0800</date>
            <delta_ts>2013-02-14 13:55:59 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_1.txt</filename>
            <type>text/plain</type>
            <size>3755</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Mjg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIGFkanVzdCBj
YXB0aW9uIGNvbG9yIHVzZXIgcHJlZmVyZW5jZSBjYWxjdWxhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODQwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBpdCBpc24ndCBw
b3NzaWJsZSB0byB0ZXN0IHRoaXMgd2l0aCBEUlQuCisKKyAgICAgICAgKiBwYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpjYXB0aW9uc1dpbmRvd0NTUyk6IFRoZSBjb2xvciBpcyAiaW1wb3J0YW50IiBp
ZiBlaXRoZXIgdGhlCisgICAgICAgICAgICBjb2xvciBvciBvcGFjaXR5IGFyZSBzdXBwb3NlZCB0
byBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zQmFja2dyb3VuZENTUyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNUZXh0Q29sb3IpOiBEaXR0by4KKwogMjAxMy0w
Mi0wOCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGV4cG9zZSBkaWR7QmVnaW4sQ2FuY2VsfUZyYW1lKCkgYW5kIHt3aWxsLGRp
ZH1Db21wb3NpdGUoKSBvbiBXZWJEZWJUb29sc0FnZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCShyZXZpc2lvbiAxNDI4MDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE2MSw4ICsxNjEsMTEgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWM6OmNhcHRpbwogICAgIGlmICghd2luZG93Q29sb3IuaXNWYWxpZCgpKQogICAgICAg
ICB3aW5kb3dDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudDsKIAorICAgIGJvb2wgaW1wb3J0YW50
ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOwogICAg
IENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRXaW5kb3dPcGFjaXR5KGtN
QUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKLSAgICBTdHJpbmcgd2lu
ZG93U3R5bGUgPSBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBD
b2xvcih3aW5kb3dDb2xvci5yZWQoKSwgd2luZG93Q29sb3IuZ3JlZW4oKSwgd2luZG93Q29sb3Iu
Ymx1ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwgYmVoYXZpb3IgPT0ga01B
Q2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlKTsKKyAgICBpZiAoIWltcG9ydGFudCkK
KyAgICAgICAgaW1wb3J0YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvclVzZVZhbHVlOworICAgIFN0cmluZyB3aW5kb3dTdHlsZSA9IGNvbG9yUHJvcGVydHlDU1Mo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENvbG9yKHdpbmRvd0NvbG9yLnJlZCgpLCB3aW5k
b3dDb2xvci5ncmVlbigpLCB3aW5kb3dDb2xvci5ibHVlKCksIHN0YXRpY19jYXN0PGludD4ob3Bh
Y2l0eSAqIDI1NSkpLCBpbXBvcnRhbnQpOwogCiAgICAgaWYgKCFvcGFjaXR5KQogICAgICAgICBy
ZXR1cm4gd2luZG93U3R5bGU7CkBAIC0xODgsOCArMTkxLDExIEBAIFN0cmluZyBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpjYXB0aW8KICAgICBpZiAoIWJhY2tncm91bmRDb2xvci5pc1ZhbGlk
KCkpCiAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3I7CiAK
KyAgICBib29sIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVo
YXZpb3JVc2VWYWx1ZTsKICAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJhbmNl
R2V0QmFja2dyb3VuZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAwKTsK
LSAgICBTdHJpbmcgYmFja2dyb3VuZFN0eWxlID0gY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwgQ29sb3IoYmFja2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5k
Q29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50Pihv
cGFjaXR5ICogMjU1KSksIGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JV
c2VWYWx1ZSk7CisgICAgaWYgKCFpbXBvcnRhbnQpCisgICAgICAgIGltcG9ydGFudCA9IGJlaGF2
aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JVc2VWYWx1ZTsKKyAgICBTdHJpbmcg
YmFja2dyb3VuZFN0eWxlID0gY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwgQ29sb3IoYmFja2dyb3VuZENvbG9yLnJlZCgpLCBiYWNrZ3JvdW5kQ29sb3IuZ3JlZW4o
KSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwgc3RhdGljX2Nhc3Q8aW50PihvcGFjaXR5ICogMjU1
KSksIGltcG9ydGFudCk7CiAKICAgICBpZiAoIW9wYWNpdHkpCiAgICAgICAgIHJldHVybiBiYWNr
Z3JvdW5kU3R5bGU7CkBAIC0yMTQsOCArMjIwLDEwIEBAIENvbG9yIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWM6OmNhcHRpb24KICAgICAgICAgLy8gVGhpcyBkZWZhdWx0IHZhbHVlIG11c3QgYmUg
dGhlIHNhbWUgYXMgdGhlIG9uZSBzcGVjaWZpZWQgaW4gbWVkaWFDb250cm9scy5jc3MgZm9yIC13
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIuCiAgICAgICAgIHRleHRDb2xvciA9IENv
bG9yOjp3aGl0ZTsKICAgICAKLSAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBlYXJh
bmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyLCAm
YmVoYXZpb3IpOwogICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJh
bmNlQmVoYXZpb3JVc2VWYWx1ZTsKKyAgICBDR0Zsb2F0IG9wYWNpdHkgPSBNQUNhcHRpb25BcHBl
YXJhbmNlR2V0Rm9yZWdyb3VuZE9wYWNpdHkoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2Vy
LCAmYmVoYXZpb3IpOworICAgIGlmICghaW1wb3J0YW50KQorICAgICAgICBpbXBvcnRhbnQgPSBi
ZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9yVXNlVmFsdWU7CiAgICAgcmV0
dXJuIENvbG9yKHRleHRDb2xvci5yZWQoKSwgdGV4dENvbG9yLmdyZWVuKCksIHRleHRDb2xvci5i
bHVlKCksIHN0YXRpY19jYXN0PGludD4ob3BhY2l0eSAqIDI1NSkpOwogfQogICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>