Problem in GSDecimalCompare
Daniel Boyd <[email protected]> Wed, 6 Dec 2023 17:25:41 +0000 (UTC)
| Newsgroups | gmane.comp.lib.gnustep.bugs |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Webmail-42--7e3383d5-0eea-4396-bb00-082713c587b2
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=utf-8;
format=flowed
I believe I may have found a bug in GSDecimalCompare in NSDecimal.m If you=
run this code: NSDecimalNumber * d1 =3D [NSDecimalNumber zero]; NSDecimal=
Number * d2 =3D [NSDecimalNumber decimalNumberWithString: @"0.02"]; NSComp=
arisonResult test =3D [d1 compare: d2]; NSLog(@"%@", test =3D=3D NSOrdered=
Ascending ? @"Ascending" : test =3D=3D NSOrderedDescending ? @"Descending"=
: @"Same"); The output should be "Ascending", but is actually "Descending=
". I have included an analysis of the issue provided by ChatGPT: Given the=
representation of 0.02 and 0.00 in the GSDecimal format as you described,=
let's analyze how the GSDecimalCompare function behaves with these inputs=
: 0.02 in GSDecimal : Length: 1 Exponent: -2 cMantissa: [2] 0.00 in GSDeci=
mal : Length: 0 Exponent: 0 cMantissa: [] Analysis: Exponent and Length Ca=
lculation : For 0.02 , s1 is 1 - 2 =3D -1. For 0.00 , s2 is 0 + 0 =3D 0. T=
he GSDecimalCompare function will then compare s1 and s2 . Same Sign, Chec=
k Size : Since s1 (-1) is less than s2 (0), the function will return NSOrd=
eredAscending if 0.02 is not negative, which seems to be the case here. Th=
is means the function considers 0.02 to be smaller than 0.00 , which is in=
correct. Comparing Digits (cMantissa) : Since 0.00 has a length of 0, the =
digit comparison loop in GSDecimalCompare is skipped. This is a crucial po=
int because it does not compare the actual digits if one of the numbers ha=
s a length of 0. Conclusion: The issue seems to be arising from how the GS=
DecimalCompare function handles the case where one of the numbers ( 0.00 )=
has a length of 0. It leads to skipping the digit comparison and making a=
decision based solely on the exponent and length calculations, which in t=
his case, misleadingly indicates that 0.02 is smaller than 0.00 . Suggeste=
d Fix: A potential fix in the GSDecimalCompare function could involve addi=
ng a check for cases where one operand has a length of 0. Specifically, if=
one operand has a length of 0 (indicating it's 0.00 ), and the other oper=
and has a non-zero length, the function should return NSOrderedDescending =
if the non-zero length operand is positive, and NSOrderedAscending if it's=
negative. This logic should be placed before the digit comparison loop. I=
have also included a patch which appears to correct the issue at least in=
this particular scenario.
--Apple-Webmail-42--7e3383d5-0eea-4396-bb00-082713c587b2
Content-Type: multipart/mixed;
type="text/html";
boundary=Apple-Webmail-64--7e3383d5-0eea-4396-bb00-082713c587b2
--Apple-Webmail-64--7e3383d5-0eea-4396-bb00-082713c587b2
Content-Type: multipart/related;
type="text/html";
boundary=Apple-Webmail-86--7e3383d5-0eea-4396-bb00-082713c587b2
--Apple-Webmail-86--7e3383d5-0eea-4396-bb00-082713c587b2
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
charset=utf-8;
<html><body><div>I believe I may have found a bug in GSDecimalCompare in NSDecimal.m<b=
r></div><div><br></div><div>If you run this code:<br></div><div><br></div>=
<div>NSDecimalNumber * d1 =3D [NSDecimalNumber zero];<br></div><div>NSDeci=
malNumber * d2 =3D [NSDecimalNumber decimalNumberWithString: @"0.02"];<br>=
</div><div><br></div><div>NSComparisonResult test =3D [d1 compare: d2];<br=
></div><div>NSLog(@"%@", test =3D=3D NSOrderedAscending ? @"Ascending" : t=
est =3D=3D NSOrderedDescending ? @"Descending" : @"Same");<br></div><div><=
br></div><div>The output should be "Ascending", but is actually "Descendin=
g".<br></div><div><br></div><div>I have included an analysis of the issue =
provided by ChatGPT:<br></div><p style=3D"border: 0px solid rgb(217, 217, =
227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacin=
g-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-ske=
w-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --=
tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --t=
w-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to=
-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; -=
-tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ri=
ng-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(=
69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow:=
0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 t=
ransparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscal=
e: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw=
-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-bac=
kdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; -=
-tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; =
--tw-backdrop-sepia: ; margin: 0px 0px 1.25em; color: rgb(55, 65, 81); fon=
t-family: S=C3=B6hne, ui-sans-serif, system-ui, -apple-system, "Segoe=
UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, &=
quot;Helvetica Neue", Arial, "Apple Color Emoji", "Seg=
oe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji&quo=
t;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; f=
ont-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphan=
s: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2=
; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre-wrap=
; text-decoration-thickness: initial; text-decoration-style: initial; text=
-decoration-color: initial;">Given the representation of <code style=3D"bo=
rder: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-sp=
acing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-=
y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --t=
w-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-s=
nap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-vi=
a-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-ze=
ro: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction=
: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color=
: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 =
transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transpare=
nt; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; =
--tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-=
saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-b=
ackdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ;=
--tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity=
: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=
=B6hne Mono", Monaco, "Andale Mono", "Ubuntu Mono"=
;, monospace !important; font-size: 0.875em; color: var(--tw-prose-code); =
font-weight: 600;">0.02</code> and <code style=3D"border: 0px solid rgb(21=
7, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-borde=
r-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; =
--tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan=
-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proxim=
ity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gra=
dient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-fig=
ure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ;=
--tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-colo=
r: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring=
-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colore=
d: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-=
grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia=
: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; =
--tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rot=
ate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-satu=
rate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mono", M=
onaco, "Andale Mono", "Ubuntu Mono", monospace !import=
ant; font-size: 0.875em; color: var(--tw-prose-code); font-weight: 600;">0=
.00</code> in the <code style=3D"border: 0px solid rgb(217, 217, 227); box=
-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; -=
-tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; -=
-tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y:=
; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradien=
t-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position=
: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numer=
ic-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset=
-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164=
,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 tran=
sparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparen=
t; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw=
-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-sha=
dow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-con=
trast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backd=
rop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-back=
drop-sepia: ; font-family: "S=C3=B6hne Mono", Monaco, "Anda=
le Mono", "Ubuntu Mono", monospace !important; font-size: 0=
.875em; color: var(--tw-prose-code); font-weight: 600;">GSDecimal</code> f=
ormat as you described, let's analyze how the <code style=3D"border: 0px s=
olid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0;=
--tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-=
rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: =
1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictn=
ess: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position:=
; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-=
numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ri=
ng-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --t=
w-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent=
; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-sh=
adow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contra=
st: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ;=
--tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-bri=
ghtness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backd=
rop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-ba=
ckdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mo=
no", Monaco, "Andale Mono", "Ubuntu Mono", monosp=
ace !important; font-size: 0.875em; color: var(--tw-prose-code); font-weig=
ht: 600;">GSDecimalCompare</code> function behaves with these inputs:<br><=
/p><ol style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-b=
ox; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: =
0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --=
tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoo=
m: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: =
; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal:=
; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --t=
w-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw=
-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-o=
ffset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-sha=
dow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; -=
-tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --=
tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backd=
rop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-bac=
kdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --t=
w-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; lis=
t-style: none; margin: 1.25em 0px; padding: 0px; counter-reset: list-numbe=
r 0; display: flex; flex-direction: column; color: rgb(55, 65, 81); font-f=
amily: S=C3=B6hne, ui-sans-serif, system-ui, -apple-system, "Segoe UI=
", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, &quo=
t;Helvetica Neue", Arial, "Apple Color Emoji", "Segoe =
UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";=
font-size: 16px; font-style: normal; font-variant-ligatures: normal; font=
-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: =
2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; w=
ord-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre-wrap; t=
ext-decoration-thickness: initial; text-decoration-style: initial; text-de=
coration-color: initial;"><li style=3D"border: 0px solid rgb(217, 217, 227=
); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y=
: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x=
: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-=
pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-g=
radient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-po=
sition: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw=
-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-=
offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,=
89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 =
0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 tran=
sparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: =
; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-dr=
op-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdr=
op-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw=
-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --t=
w-backdrop-sepia: ; margin-bottom: 0px; margin-top: 0px; padding-left: 0.3=
75em; counter-increment: list-number 1; display: block; min-height: 28px;"=
><p style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box;=
--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; =
--tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-=
scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: =
; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; -=
-tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; =
--tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-n=
umeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ri=
ng-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offs=
et-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow=
: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw=
-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-=
invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop=
-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdr=
op-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-b=
ackdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin=
: 0px;"><b style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: bord=
er-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate=
-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0=
; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch=
-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-positi=
on: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordi=
nal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ;=
--tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; =
--tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ri=
ng-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw=
-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur:=
; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: =
; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-b=
ackdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw=
-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ;=
--tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ;=
font-weight: 600; color: var(--tw-prose-bold);">0.02 in <code style=3D"bo=
rder: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-sp=
acing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-=
y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --t=
w-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-s=
nap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-vi=
a-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-ze=
ro: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction=
: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color=
: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 =
transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transpare=
nt; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; =
--tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-=
saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-b=
ackdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ;=
--tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity=
: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=
=B6hne Mono", Monaco, "Andale Mono", "Ubuntu Mono"=
;, monospace !important; font-size: 0.875em; color: var(--tw-prose-code); =
font-weight: 600;">GSDecimal</code></b>:<br></p><ul style=3D"border: 0px s=
olid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0;=
--tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-=
rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: =
1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictn=
ess: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position:=
; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-=
numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ri=
ng-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --t=
w-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent=
; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-sh=
adow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contra=
st: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ;=
--tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-bri=
ghtness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backd=
rop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-ba=
ckdrop-saturate: ; --tw-backdrop-sepia: ; list-style: disc; margin: 0px 0p=
x 0px 1rem; padding: 0px; display: flex; flex-direction: column;"><li styl=
e=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-bo=
rder-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-tra=
nslate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x:=
1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-s=
croll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-grad=
ient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-sla=
shed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-f=
raction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offse=
t-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shado=
w: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 tr=
ansparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightn=
ess: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: =
; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ;=
--tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grays=
cale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-=
opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin: 0px; p=
adding-left: 0.375em; display: block; min-height: 28px;">Length: 1<br></li=
><li style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box=
; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0;=
--tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw=
-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom:=
; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; =
--tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ;=
--tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-=
numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-r=
ing-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-off=
set-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shado=
w: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --t=
w-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw=
-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdro=
p-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backd=
rop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-=
backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margi=
n: 0px; padding-left: 0.375em; display: block; min-height: 28px;">Exponent=
: -2<br></li><li style=3D"border: 0px solid rgb(217, 217, 227); box-sizing=
: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-tra=
nslate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-ske=
w-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw=
-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-=
position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --t=
w-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spac=
ing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:=
0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); -=
-tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent=
; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw=
-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-ro=
tate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; =
--tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: =
; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-inv=
ert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-se=
pia: ; margin: 0px; padding-left: 0.375em; display: block; min-height: 28p=
x;">cMantissa: [2]<br></li></ul></li><li style=3D"border: 0px solid rgb(21=
7, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-borde=
r-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; =
--tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan=
-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proxim=
ity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gra=
dient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-fig=
ure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ;=
--tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-colo=
r: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring=
-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colore=
d: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-=
grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia=
: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; =
--tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rot=
ate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-satu=
rate: ; --tw-backdrop-sepia: ; margin-bottom: 0px; margin-top: 0px; paddin=
g-left: 0.375em; counter-increment: list-number 1; display: block; min-hei=
ght: 28px;"><p style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: =
border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-trans=
late-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-=
y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-p=
inch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-po=
sition: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-=
ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacin=
g: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0=
px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --t=
w-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; =
--tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-b=
lur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rota=
te: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --=
tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; =
--tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-inver=
t: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepi=
a: ; margin: 0px;"><b style=3D"border: 0px solid rgb(217, 217, 227); box-s=
izing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --t=
w-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --t=
w-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ;=
--tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-=
from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: =
; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric=
-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-w=
idth: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.=
5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transp=
arent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent;=
--tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-h=
ue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shado=
w: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contr=
ast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdro=
p-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdr=
op-sepia: ; font-weight: 600; color: var(--tw-prose-bold);">0.00 in <code =
style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --t=
w-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw=
-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scal=
e-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --=
tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-=
gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw=
-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numer=
ic-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-o=
ffset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-s=
hadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 =
0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-bri=
ghtness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-inve=
rt: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blu=
r: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-g=
rayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backd=
rop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-famil=
y: "S=C3=B6hne Mono", Monaco, "Andale Mono", "Ubu=
ntu Mono", monospace !important; font-size: 0.875em; color: var(--tw-=
prose-code); font-weight: 600;">GSDecimal</code></b>:<br></p><ul style=3D"=
border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-=
spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translat=
e-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; -=
-tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll=
-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-=
via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-=
zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fracti=
on: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-col=
or: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 =
0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transpa=
rent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: =
; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --t=
w-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw=
-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale:=
; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opaci=
ty: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; list-style: disc; m=
argin: 0px 0px 0px 1rem; padding: 0px; display: flex; flex-direction: colu=
mn;"><li style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border=
-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x=
: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; =
--tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-z=
oom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position=
: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordina=
l: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; -=
-tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --=
tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring=
-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-s=
hadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ;=
--tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; =
--tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-bac=
kdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-b=
ackdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; -=
-tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; m=
argin: 0px; padding-left: 0.375em; display: block; min-height: 28px;">Leng=
th: 0<br></li><li style=3D"border: 0px solid rgb(217, 217, 227); box-sizin=
g: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-tr=
anslate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-sk=
ew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --t=
w-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from=
-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --=
tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spa=
cing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width=
: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); =
--tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparen=
t; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --t=
w-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-r=
otate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ;=
--tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast:=
; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-in=
vert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-s=
epia: ; margin: 0px; padding-left: 0.375em; display: block; min-height: 28=
px;">Exponent: 0<br></li><li style=3D"border: 0px solid rgb(217, 217, 227)=
; box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y:=
0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x:=
0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-p=
an-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gr=
adient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-pos=
ition: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-=
numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-o=
ffset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,8=
9,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0=
transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 trans=
parent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ;=
--tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-dro=
p-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdro=
p-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-=
backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw=
-backdrop-sepia: ; margin: 0px; padding-left: 0.375em; display: block; min=
-height: 28px;">cMantissa: []<br></li></ul></li></ol><h3 style=3D"border: =
0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-=
x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; =
--tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scal=
e-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-st=
rictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-posi=
tion: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; =
--tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --=
tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff=
; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transp=
arent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --=
tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-c=
ontrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-satura=
te: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdro=
p-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-=
backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --=
tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-size: 1.25em; font-wei=
ght: 600; margin: 1rem 0px 0.5rem; line-height: 1.6; color: var(--tw-prose=
-headings); font-family: S=C3=B6hne, ui-sans-serif, system-ui, -apple-syst=
em, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans"=
, sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji&q=
uot;, "Segoe UI Emoji", "Segoe UI Symbol", "Noto =
Color Emoji"; font-style: normal; font-variant-ligatures: normal; fon=
t-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: st=
art; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;=
-webkit-text-stroke-width: 0px; white-space: pre-wrap; text-decoration-th=
ickness: initial; text-decoration-style: initial; text-decoration-color: i=
nitial;">Analysis:<br></h3><ul style=3D"border: 0px solid rgb(217, 217, 22=
7); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-=
y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-=
x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw=
-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-=
gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-p=
osition: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --t=
w-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring=
-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69=
,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0=
0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 tra=
nsparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale:=
; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-d=
rop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backd=
rop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --t=
w-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --=
tw-backdrop-sepia: ; list-style: disc; margin: 0px 0px 1.25em; padding: 0p=
x; display: flex; flex-direction: column; color: rgb(55, 65, 81); font-fam=
ily: S=C3=B6hne, ui-sans-serif, system-ui, -apple-system, "Segoe UI&q=
uot;, Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "=
Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI=
Emoji", "Segoe UI Symbol", "Noto Color Emoji"; f=
ont-size: 16px; font-style: normal; font-variant-ligatures: normal; font-v=
ariant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2;=
text-align: start; text-indent: 0px; text-transform: none; widows: 2; wor=
d-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre-wrap; tex=
t-decoration-thickness: initial; text-decoration-style: initial; text-deco=
ration-color: initial;"><li style=3D"border: 0px solid rgb(217, 217, 227);=
box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: =
0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: =
0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pa=
n-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gra=
dient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-posi=
tion: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-n=
umeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-of=
fset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89=
,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 =
transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transp=
arent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; =
--tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop=
-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop=
-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-b=
ackdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-=
backdrop-sepia: ; margin: 0px; padding-left: 0.375em; display: block; min-=
height: 28px;"><p style=3D"border: 0px solid rgb(217, 217, 227); box-sizin=
g: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-tr=
anslate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-sk=
ew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --t=
w-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from=
-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --=
tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spa=
cing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width=
: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); =
--tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparen=
t; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --t=
w-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-r=
otate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ;=
--tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast:=
; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-in=
vert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-s=
epia: ; margin: 0px;"><b style=3D"border: 0px solid rgb(217, 217, 227); bo=
x-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; =
--tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; =
--tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y=
: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradie=
nt-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-positio=
n: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-nume=
ric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offse=
t-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,16=
4,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 tra=
nsparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transpare=
nt; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --t=
w-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-sh=
adow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-co=
ntrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-back=
drop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-bac=
kdrop-sepia: ; font-weight: 600; color: var(--tw-prose-bold);">Exponent an=
d Length Calculation</b>: For <code style=3D"border: 0px solid rgb(217, 21=
7, 227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spa=
cing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-=
skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ;=
--tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; =
--tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient=
-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: =
; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw=
-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rg=
ba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shad=
ow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 =
0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grays=
cale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; -=
-tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-=
backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: =
; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate:=
; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mono", Monaco=
, "Andale Mono", "Ubuntu Mono", monospace !important; =
font-size: 0.875em; color: var(--tw-prose-code); font-weight: 600;">0.02</=
code>, <code style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: bo=
rder-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-transla=
te-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y:=
0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pin=
ch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-posi=
tion: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-or=
dinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing:=
; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px=
; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-=
ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --=
tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blu=
r: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate=
: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw=
-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --=
tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert:=
; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia:=
; font-family: "S=C3=B6hne Mono", Monaco, "Andale Mono&quo=
t;, "Ubuntu Mono", monospace !important; font-size: 0.875em; col=
or: var(--tw-prose-code); font-weight: 600;">s1</code> is 1 - 2 =3D -1. Fo=
r <code style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-=
box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x:=
0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; -=
-tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zo=
om: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position:=
; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal=
: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --=
tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --t=
w-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-=
offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-sh=
adow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; =
--tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; -=
-tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-back=
drop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-ba=
ckdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --=
tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; fo=
nt-family: "S=C3=B6hne Mono", Monaco, "Andale Mono", &=
quot;Ubuntu Mono", monospace !important; font-size: 0.875em; color: v=
ar(--tw-prose-code); font-weight: 600;">0.00</code>, <code style=3D"border=
: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacin=
g-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0=
; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-sc=
ale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-=
strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-po=
sition: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: =
; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; =
--tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #f=
ff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 tran=
sparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; =
--tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw=
-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-satu=
rate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backd=
rop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --t=
w-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; =
--tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6=
hne Mono", Monaco, "Andale Mono", "Ubuntu Mono", =
monospace !important; font-size: 0.875em; color: var(--tw-prose-code); fon=
t-weight: 600;">s2</code> is 0 + 0 =3D 0. The <code style=3D"border: 0px s=
olid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0;=
--tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-=
rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: =
1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictn=
ess: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position:=
; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-=
numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ri=
ng-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --t=
w-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent=
; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-sh=
adow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contra=
st: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ;=
--tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-bri=
ghtness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backd=
rop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-ba=
ckdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mo=
no", Monaco, "Andale Mono", "Ubuntu Mono", monosp=
ace !important; font-size: 0.875em; color: var(--tw-prose-code); font-weig=
ht: 600;">GSDecimalCompare</code> function will then compare <code style=3D=
"border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border=
-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-transla=
te-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; =
--tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scrol=
l-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient=
-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed=
-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fract=
ion: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-co=
lor: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0=
0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transp=
arent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness:=
; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --=
tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --t=
w-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale=
: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opac=
ity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "=
;S=C3=B6hne Mono", Monaco, "Andale Mono", "Ubuntu Mono=
", monospace !important; font-size: 0.875em; color: var(--tw-prose-co=
de); font-weight: 600;">s1</code> and <code style=3D"border: 0px solid rgb=
(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-bo=
rder-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: =
0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-=
pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: pro=
ximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-=
gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-=
figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset=
: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-c=
olor: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-r=
ing-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-col=
ored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --=
tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-se=
pia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness:=
; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-=
rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-s=
aturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mono"=
, Monaco, "Andale Mono", "Ubuntu Mono", monospace !imp=
ortant; font-size: 0.875em; color: var(--tw-prose-code); font-weight: 600;=
">s2</code>.<br></p></li><li style=3D"border: 0px solid rgb(217, 217, 227)=
; box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y:=
0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x:=
0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-p=
an-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gr=
adient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-pos=
ition: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-=
numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-o=
ffset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,8=
9,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0=
transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 trans=
parent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ;=
--tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-dro=
p-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdro=
p-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-=
backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw=
-backdrop-sepia: ; margin: 0px; padding-left: 0.375em; display: block; min=
-height: 28px;"><p style=3D"border: 0px solid rgb(217, 217, 227); box-sizi=
ng: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-t=
ranslate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-s=
kew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --=
tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-fro=
m-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; -=
-tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-sp=
acing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-widt=
h: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5);=
--tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transpare=
nt; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --=
tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-=
rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: =
; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast=
: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-i=
nvert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-=
sepia: ; margin: 0px;"><b style=3D"border: 0px solid rgb(217, 217, 227); b=
ox-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0;=
--tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0;=
--tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-=
y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradi=
ent-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-positi=
on: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-num=
eric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offs=
et-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,1=
64,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 tr=
ansparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transpar=
ent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --=
tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-s=
hadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-c=
ontrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-bac=
kdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-ba=
ckdrop-sepia: ; font-weight: 600; color: var(--tw-prose-bold);">Same Sign,=
Check Size</b>: Since <code style=3D"border: 0px solid rgb(217, 217, 227)=
; box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y:=
0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x:=
0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-p=
an-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gr=
adient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-pos=
ition: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-=
numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-o=
ffset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,8=
9,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0=
transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 trans=
parent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ;=
--tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-dro=
p-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdro=
p-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-=
backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw=
-backdrop-sepia: ; font-family: "S=C3=B6hne Mono", Monaco, "=
;Andale Mono", "Ubuntu Mono", monospace !important; font-si=
ze: 0.875em; color: var(--tw-prose-code); font-weight: 600;">s1</code> (-1=
) is less than <code style=3D"border: 0px solid rgb(217, 217, 227); box-si=
zing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw=
-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw=
-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; =
--tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-f=
rom-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ;=
--tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-=
spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-wi=
dth: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5=
); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transpa=
rent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; =
--tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hu=
e-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow=
: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contra=
st: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop=
-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdro=
p-sepia: ; font-family: "S=C3=B6hne Mono", Monaco, "Andale =
Mono", "Ubuntu Mono", monospace !important; font-size: 0.87=
5em; color: var(--tw-prose-code); font-weight: 600;">s2</code> (0), the fu=
nction will return <code style=3D"border: 0px solid rgb(217, 217, 227); bo=
x-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; =
--tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; =
--tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y=
: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradie=
nt-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-positio=
n: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-nume=
ric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offse=
t-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,16=
4,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 tra=
nsparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transpare=
nt; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --t=
w-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-sh=
adow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-co=
ntrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-back=
drop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-bac=
kdrop-sepia: ; font-family: "S=C3=B6hne Mono", Monaco, "And=
ale Mono", "Ubuntu Mono", monospace !important; font-size: =
0.875em; color: var(--tw-prose-code); font-weight: 600;">NSOrderedAscendin=
g</code> if <code style=3D"border: 0px solid rgb(217, 217, 227); box-sizin=
g: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-tr=
anslate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-sk=
ew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --t=
w-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from=
-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --=
tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spa=
cing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width=
: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); =
--tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparen=
t; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --t=
w-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-r=
otate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ;=
--tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast:=
; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-in=
vert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-s=
epia: ; font-family: "S=C3=B6hne Mono", Monaco, "Andale Mon=
o", "Ubuntu Mono", monospace !important; font-size: 0.875em=
; color: var(--tw-prose-code); font-weight: 600;">0.02</code> is not negat=
ive, which seems to be the case here. This means the function considers <c=
ode style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box;=
--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; =
--tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-=
scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: =
; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; -=
-tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; =
--tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-n=
umeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ri=
ng-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offs=
et-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow=
: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw=
-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-=
invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop=
-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdr=
op-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-b=
ackdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-f=
amily: "S=C3=B6hne Mono", Monaco, "Andale Mono", "=
;Ubuntu Mono", monospace !important; font-size: 0.875em; color: var(-=
-tw-prose-code); font-weight: 600;">0.02</code> to be smaller than <code s=
tyle=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw=
-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-=
translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale=
-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --t=
w-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-g=
radient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-=
slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeri=
c-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-of=
fset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-sh=
adow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0=
transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brig=
htness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-inver=
t: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur=
: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-gr=
ayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdr=
op-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family=
: "S=C3=B6hne Mono", Monaco, "Andale Mono", "Ubun=
tu Mono", monospace !important; font-size: 0.875em; color: var(--tw-p=
rose-code); font-weight: 600;">0.00</code>, which is incorrect.<br></p></l=
i><li style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-bo=
x; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0=
; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --t=
w-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom=
: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ;=
--tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: =
; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw=
-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-=
ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-of=
fset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shad=
ow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --=
tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --t=
w-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdr=
op-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-back=
drop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw=
-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; marg=
in: 0px; padding-left: 0.375em; display: block; min-height: 28px;"><p styl=
e=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-bo=
rder-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-tra=
nslate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x:=
1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-s=
croll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-grad=
ient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-sla=
shed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-f=
raction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offse=
t-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shado=
w: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 tr=
ansparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightn=
ess: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: =
; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ;=
--tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grays=
cale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-=
opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin: 0px;">=
<b style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box; =
--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; -=
-tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-s=
cale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ;=
--tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --=
tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; -=
-tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-nu=
meric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-rin=
g-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offse=
t-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow:=
0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-=
brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-i=
nvert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-=
blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdro=
p-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-ba=
ckdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-we=
ight: 600; color: var(--tw-prose-bold);">Comparing Digits (cMantissa)</b>:=
Since <code style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: bo=
rder-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-transla=
te-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y:=
0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pin=
ch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-posi=
tion: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-or=
dinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing:=
; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px=
; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-=
ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --=
tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blu=
r: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate=
: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw=
-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --=
tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert:=
; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia:=
; font-family: "S=C3=B6hne Mono", Monaco, "Andale Mono&quo=
t;, "Ubuntu Mono", monospace !important; font-size: 0.875em; col=
or: var(--tw-prose-code); font-weight: 600;">0.00</code> has a length of 0=
, the digit comparison loop in <code style=3D"border: 0px solid rgb(217, 2=
17, 227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-sp=
acing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw=
-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: =
; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity;=
--tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradien=
t-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure:=
; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --t=
w-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: r=
gba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-sha=
dow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0=
0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-gray=
scale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; =
--tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw=
-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate:=
; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate=
: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mono", Monac=
o, "Andale Mono", "Ubuntu Mono", monospace !important;=
font-size: 0.875em; color: var(--tw-prose-code); font-weight: 600;">GSDec=
imalCompare</code> is skipped. This is a crucial point because it does not=
compare the actual digits if one of the numbers has a length of 0.<br></p=
></li></ul><h3 style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: =
border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-trans=
late-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-=
y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-p=
inch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-po=
sition: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-=
ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacin=
g: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0=
px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --t=
w-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; =
--tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-b=
lur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rota=
te: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --=
tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; =
--tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-inver=
t: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepi=
a: ; font-size: 1.25em; font-weight: 600; margin: 1rem 0px 0.5rem; line-he=
ight: 1.6; color: var(--tw-prose-headings); font-family: S=C3=B6hne, ui-sa=
ns-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, =
Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", =
Arial, "Apple Color Emoji", "Segoe UI Emoji", "Se=
goe UI Symbol", "Noto Color Emoji"; font-style: normal; fon=
t-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: no=
rmal; orphans: 2; text-align: start; text-indent: 0px; text-transform: non=
e; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-spa=
ce: pre-wrap; text-decoration-thickness: initial; text-decoration-style: i=
nitial; text-decoration-color: initial;">Conclusion:<br></h3><p style=3D"b=
order: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-s=
pacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate=
-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --=
tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-=
snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-v=
ia-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-z=
ero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fractio=
n: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-colo=
r: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0=
transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transpar=
ent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ;=
--tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw=
-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-=
backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: =
; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacit=
y: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin: 0px 0px 1.25=
em; color: rgb(55, 65, 81); font-family: S=C3=B6hne, ui-sans-serif, system=
-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "=
;Noto Sans", sans-serif, "Helvetica Neue", Arial, "App=
le Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol&qu=
ot;, "Noto Color Emoji"; font-size: 16px; font-style: normal; fo=
nt-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;=
letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; =
text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-wi=
dth: 0px; white-space: pre-wrap; text-decoration-thickness: initial; text-=
decoration-style: initial; text-decoration-color: initial;">The issue seem=
s to be arising from how the <code style=3D"border: 0px solid rgb(217, 217=
, 227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spac=
ing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-s=
kew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; =
--tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; -=
-tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-=
to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ;=
--tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-=
ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb=
a(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shado=
w: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0=
transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-graysc=
ale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --=
tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-b=
ackdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ;=
--tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: =
; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mono", Monaco,=
"Andale Mono", "Ubuntu Mono", monospace !important; f=
ont-size: 0.875em; color: var(--tw-prose-code); font-weight: 600;">GSDecim=
alCompare</code> function handles the case where one of the numbers (<code=
style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --=
tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --t=
w-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-sca=
le-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; -=
-tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw=
-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --t=
w-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-nume=
ric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-=
offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-=
shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0=
0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-br=
ightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-inv=
ert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-bl=
ur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-=
grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-back=
drop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-fami=
ly: "S=C3=B6hne Mono", Monaco, "Andale Mono", "Ub=
untu Mono", monospace !important; font-size: 0.875em; color: var(--tw=
-prose-code); font-weight: 600;">0.00</code>) has a <code style=3D"border:=
0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing=
-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0;=
--tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-sca=
le-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-s=
trictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-pos=
ition: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ;=
--tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; -=
-tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #ff=
f; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 trans=
parent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; -=
-tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-=
contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-satur=
ate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdr=
op-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw=
-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; -=
-tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6=
hne Mono", Monaco, "Andale Mono", "Ubuntu Mono", =
monospace !important; font-size: 0.875em; color: var(--tw-prose-code); fon=
t-weight: 600;">length</code> of 0. It leads to skipping the digit compari=
son and making a decision based solely on the exponent and length calculat=
ions, which in this case, misleadingly indicates that <code style=3D"borde=
r: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spaci=
ng-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: =
0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-s=
cale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap=
-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-p=
osition: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero:=
; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ;=
--tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #=
fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 tra=
nsparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent;=
--tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --t=
w-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-sat=
urate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-back=
drop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --=
tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ;=
--tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6=
hne Mono", Monaco, "Andale Mono", "Ubuntu Mono", =
monospace !important; font-size: 0.875em; color: var(--tw-prose-code); fon=
t-weight: 600;">0.02</code> is smaller than <code style=3D"border: 0px sol=
id rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0; -=
-tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-ro=
tate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1;=
--tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictnes=
s: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ;=
--tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-nu=
meric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring=
-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-=
ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; =
--tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shad=
ow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast=
: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; -=
-tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brigh=
tness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdro=
p-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-back=
drop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=B6hne Mono=
", Monaco, "Andale Mono", "Ubuntu Mono", monospac=
e !important; font-size: 0.875em; color: var(--tw-prose-code); font-weight=
: 600;">0.00</code>.<br></p><h3 style=3D"border: 0px solid rgb(217, 217, 2=
27); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing=
-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew=
-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --t=
w-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw=
-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-=
position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --=
tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-rin=
g-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(6=
9,89,164,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: =
0 0 transparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 tr=
ansparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale=
: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-=
drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-back=
drop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --=
tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; -=
-tw-backdrop-sepia: ; font-size: 1.25em; font-weight: 600; margin: 1rem 0p=
x 0.5rem; line-height: 1.6; color: var(--tw-prose-headings); font-family: =
S=C3=B6hne, ui-sans-serif, system-ui, -apple-system, "Segoe UI",=
Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helve=
tica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoj=
i", "Segoe UI Symbol", "Noto Color Emoji"; font-s=
tyle: normal; font-variant-ligatures: normal; font-variant-caps: normal; l=
etter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; te=
xt-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-widt=
h: 0px; white-space: pre-wrap; text-decoration-thickness: initial; text-de=
coration-style: initial; text-decoration-color: initial;">Suggested Fix:<b=
r></h3><p style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: borde=
r-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-=
x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0;=
--tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-=
zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-positio=
n: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordin=
al: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; =
--tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; -=
-tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-rin=
g-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --tw-=
shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blur: =
; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ;=
--tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-ba=
ckdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-=
backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; =
--tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; =
margin: 0px; color: rgb(55, 65, 81); font-family: S=C3=B6hne, ui-sans-seri=
f, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantare=
ll, "Noto Sans", sans-serif, "Helvetica Neue", Arial, =
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI =
Symbol", "Noto Color Emoji"; font-size: 16px; font-style: n=
ormal; font-variant-ligatures: normal; font-variant-caps: normal; font-wei=
ght: 400; letter-spacing: normal; orphans: 2; text-align: start; text-inde=
nt: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-=
stroke-width: 0px; white-space: pre-wrap; text-decoration-thickness: initi=
al; text-decoration-style: initial; text-decoration-color: initial;">A pot=
ential fix in the <code style=3D"border: 0px solid rgb(217, 217, 227); box=
-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; -=
-tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; -=
-tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y:=
; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradien=
t-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position=
: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numer=
ic-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset=
-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164=
,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 tran=
sparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparen=
t; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw=
-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-sha=
dow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-con=
trast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backd=
rop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-back=
drop-sepia: ; font-family: "S=C3=B6hne Mono", Monaco, "Anda=
le Mono", "Ubuntu Mono", monospace !important; font-size: 0=
.875em; color: var(--tw-prose-code); font-weight: 600;">GSDecimalCompare</=
code> function could involve adding a check for cases where one operand ha=
s a length of 0. Specifically, if one operand has a length of 0 (indicatin=
g it's <code style=3D"border: 0px solid rgb(217, 217, 227); box-sizing: bo=
rder-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-transla=
te-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y:=
0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pin=
ch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-posi=
tion: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-or=
dinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing:=
; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px=
; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-=
ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 transparent; --=
tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transparent; --tw-blu=
r: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate=
: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw=
-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --=
tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert:=
; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia:=
; font-family: "S=C3=B6hne Mono", Monaco, "Andale Mono&quo=
t;, "Ubuntu Mono", monospace !important; font-size: 0.875em; col=
or: var(--tw-prose-code); font-weight: 600;">0.00</code>), and the other o=
perand has a non-zero length, the function should return <code style=3D"bo=
rder: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-sp=
acing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-=
y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --t=
w-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-s=
nap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-vi=
a-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-ze=
ro: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction=
: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color=
: #fff; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-shadow: 0 0 =
transparent; --tw-ring-shadow: 0 0 transparent; --tw-shadow: 0 0 transpare=
nt; --tw-shadow-colored: 0 0 transparent; --tw-blur: ; --tw-brightness: ; =
--tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-=
saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-b=
ackdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ;=
--tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity=
: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; font-family: "S=C3=
=B6hne Mono", Monaco, "Andale Mono", "Ubuntu Mono"=
;, monospace !important; font-size: 0.875em; color: var(--tw-prose-code); =
font-weight: 600;">NSOrderedDescending</code> if the non-zero length opera=
nd is positive, and <code style=3D"border: 0px solid rgb(217, 217, 227); b=
ox-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0;=
--tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0;=
--tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-=
y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradi=
ent-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-positi=
on: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-num=
eric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offs=
et-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(69,89,1=
64,.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 tr=
ansparent; --tw-shadow: 0 0 transparent; --tw-shadow-colored: 0 0 transpar=
ent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --=
tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-s=
hadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-c=
ontrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-bac=
kdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-ba=
ckdrop-sepia: ; font-family: "S=C3=B6hne Mono", Monaco, "An=
dale Mono", "Ubuntu Mono", monospace !important; font-size:=
0.875em; color: var(--tw-prose-code); font-weight: 600;">NSOrderedAscendi=
ng</code> if it's negative. This logic should be placed before the digit c=
omparison loop.<br></p><div><br></div><div>I have also included a patch wh=
ich appears to correct the issue at least in this particular scenario.<br>=
</div><div><br></div></body></html>
--Apple-Webmail-86--7e3383d5-0eea-4396-bb00-082713c587b2--
--Apple-Webmail-64--7e3383d5-0eea-4396-bb00-082713c587b2
Content-Transfer-Encoding: BASE64
Content-Disposition: attachment;
filename="NSDecimal_patch.m"
Content-Type: application/octet-stream;
name="NSDecimal_patch.m"
Content-Id: <[email protected]>
LyoqCiAgIE5TRGVjaW1hbCBmdW5jdGlvbnMKICAgQ29weXJpZ2h0IChDKSAyMDAwIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKICAgV3JpdHRlbiBieTogRnJlZCBLaWVmZXIg
PEZyZWRLaWVmZXJAZ214LmRlPgogICBDcmVhdGVkOiBKdWx5IDIwMDAKCiAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBHTlVzdGVwIEJhc2UgTGlicmFyeS4KCiAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwogICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKICAgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAgQm9zdG9u
LCBNQSAwMjExMCBVU0EuCgogICA8dGl0bGU+TlNEZWNpbWFsIGNsYXNzIHJlZmVyZW5jZTwv
dGl0bGU+CiAgICREYXRlJCAkUmV2aXNpb24kCiAgICovCgojaW1wb3J0ICJjb21tb24uaCIK
I2luY2x1ZGUgPG1hdGguaD4KI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgfHwgIWRlZmluZWQo
R05VX1JVTlRJTUUpCiNpbmNsdWRlIDxjdHlwZS5oPgojZW5kaWYKI2ltcG9ydCAiRm91bmRh
dGlvbi9OU0RlY2ltYWwuaCIKI2ltcG9ydCAiRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaCIK
I2ltcG9ydCAiRm91bmRhdGlvbi9OU1VzZXJEZWZhdWx0cy5oIgoKI2lmbmRlZiBOQU4KI2Rl
ZmluZSBOQU4gMC4wCiNlbmRpZiAKCi8qCiAgVGhpcyBmaWxlIHByb3ZpZGVzIHR3byBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlIE5TRGVjaW1hbCBmdW5jdGlvbnMuCiAgT25lIGlzIGJhc2Vk
IG9uIHB1cmUgc2ltcGxlIGRlY2ltYWwgbWF0aGVtYXRpY3MsIGFzIHdlIGFsbCBsZWFybmVk
IGl0CiAgaW4gc2Nob29sLiBUaGlzIHZlcnNpb24gaXMgcmF0aGVyIHNsb3cgYW5kIG1heSBi
ZSBpbmV4YWN0IGluIHRoZSBleHRyZW1lCiAgY2FzZXMuCiAgVEhJUyBJUyBURVNURUQgQU5E
IFdPUktJTkcuCgogIFRoZSBzZWNvbmQgaW1wbGVtZW5hdGlvbiByZXF1aXJlcyB0aGUgR01Q
IGxpYnJhcnksIHRoZSBHTlUgbWF0aCBwYWNrYWdlLAogIHRvIGRvIHRoZSBoYXJkIHdvcmsu
IFRoaXMgaXMgdmVyeSBmYXN0IGFuZCBhY2N1cmF0ZS4gQnV0IGFzIEdNUCBpcyBub3QKICBh
dmFpbGFibGUgb24gYWxsIGNvbXB1dGVycyB0aGlzIGhhcyB0byBiZSBzd2l0Y2hlZCBvbiBh
dCBjb21waWxlIHRpbWUuCiAgVEhJUyBJUyBTVElMTCBOT1QgSU1QTEVNRU5URUQuCgogIFRo
ZSBkYXRhIHN0cnVjdHVyZSB1c2VkIGZvciBOU0RlY2ltYWxzIGlzIGEgYml0IHN0cmFuZ2Uu
IEl0IGFsc28gZG9lcyBub3QKICBjb3JyZXNwb25kIHRvIHRoZSBkZXNjcmlwdGlvbiBpbiB0
aGUgT3BlblN0ZXAgc3BlY2lmaWNhdGlvbi4gQnV0IHRoaXMgaXMKICBub3QgY29uc2lzdGVu
dCwgc28gYSBkZWNpc2lvbiBoYWQgdG8gYmUgbWFkZS4KICBUaGUgbWFudGlzc2EgcGFydCAo
SSBrbm93IEQuIEtudXRoIGRvZXMgbm90IGxpa2UgdGhpcyB0ZXJtLCBidXQgaXQgaXMgdXNl
ZAogIGluIHRoZSBzcGVjaWZpY2F0aW9uIHNvIHdlIHN0YXkgd2l0aCBpdCkgY29uc2lzdHMg
b2YgdXAgdG8gMzggZGlnaXRzLCB0aGlzCiAgYXJlIHN0b3JlZCBhcyBhbiBpbnRlZ2VyIChp
biBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9yIGxpbXBzIGRlcGVuZGluZyBvbiB0aGUKICBV
U0VfR01QIGZsYWcpLiBBbmQgdGhlIGV4cG9uZW50IGlzIHN0b3JlZCBpbiBhIHNpZ25lZCBj
aGFyYWN0ZXIuIEFzIGEgcmVzdWx0CiAgdGhlIG51bWJlcnMgdGhhdCBjYW4gYmUgcmVwcmVz
ZW50ZWQgYXJlIHRoZSByYW5nZXMgZnJvbSAtOSgzOCB0aW1lcykqMTAqKjEyNwogIHRvICAt
MSoxMCoqLTEyOCwgdGhlIG51bWJlciAwIGFuZCAxKjEwKiotMTI4IHRvIDkoMzggdGltZXMp
KjEwKioxMjcuCiAgVGhpcyBtZWFucyB3ZSBoYXZlIG1vcmUgYmlnIG51bWJlcnMgdGhhbiBv
bmUgd291bGQgZXhwZWN0IChhbG1vc3QgdXAgdG8gMTAqKjE2NSkKICBidXQgc21hbGwgbnVt
YmVycyBjYW4gb25seSBiZSByZXByZXNlbnRlZCB3aXRoIGxpbWl0ZWQgZXhhY3RuZXNzIChv
bmUgZGlnaXQKICBmb3IgLTEyOCwgdHdvIGZvciAtMTI3IGFuZCBzbyBvbikuCiAgSSB0aGlu
ayB0aGlzIGlzIGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBi
dXQgb3RoZXIKICBpbnRlcnByZXRhdGlvbnMgYXJlIGFsc28gdmFsaWQuIChDaGFuZ2luZyB0
aGUgZXhwb25lbnQgZWl0aGVyIGFic29sdXQKICBbZWcgbWludXMgMzhdIG9yIHJlbGF0aXZl
IHRvIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBtYW50aXNzYSBbbWludXMgbGVuZ3Ro
XS4pCgogKi8KCiNpZglVU0VfR01QCgovLyBEZWZpbmUgR1NEZWNpbWFsIGFzIHVzaW5nIGEg
Y2hhcmFjdGVyIHZlY3Rvcgp0eXBlZGVmIHN0cnVjdCB7CiAgc2lnbmVkIGNoYXIJZXhwb25l
bnQ7CS8qIFNpZ25lZCBleHBvbmVudCAtIC0xMjggdG8gMTI3CSovCiAgQk9PTAlpc05lZ2F0
aXZlOwkvKiBJcyB0aGlzIG5lZ2F0aXZlPwkJCSovCiAgQk9PTAl2YWxpZE51bWJlcjsJLyog
SXMgdGhpcyBhIHZhbGlkIG51bWJlcj8JCSovCiAgdW5zaWduZWQgY2hhcglsZW5ndGg7CQkv
KiBkaWdpdHMgaW4gbWFudGlzc2EuCQkJKi8KICB1bnNpZ25lZCBjaGFyICBjTWFudGlzc2Fb
MipOU0RlY2ltYWxNYXhEaWdpdF07IC8qIE1ha2UgdGhpcyBiaWcgZW5vdWdoIGZvciBtdWx0
aXBsaWNhdGlvbiAqLwp9IEdTRGVjaW1hbDsKCnN0YXRpYyBOU0RlY2ltYWwgemVybyA9IHsw
LCBOTywgWUVTLCAwLCB7MH19OwpzdGF0aWMgTlNEZWNpbWFsIG9uZSA9IHswLCBOTywgWUVT
LCAxLCB7MX19OwoKI2RlZmluZSBOU0RFQ0lNQUxfSVNfWkVSTyhudW0pICgwID09IG51bS0+
c2l6ZSkKI2RlZmluZSBHU0RFQ0lNQUxfSVNfWkVSTyhudW0pICgwID09IG51bS0+bGVuZ3Ro
KQoKI2Vsc2UKCi8vIE1ha2UgR1NEZWNpbWFsIGEgc3lub255bSBvZiBOU0RlY2ltYWwKLyoq
IDxjb2RlPgp0eXBlZGVmIHN0cnVjdCB7PGJyLz4KICBzaWduZWQgY2hhcglleHBvbmVudDsg
ICAvLyBTaWduZWQgZXhwb25lbnQgLSAtMTI4IHRvIDEyNzxici8+CiAgQk9PTAlpc05lZ2F0
aXZlOyAgICAgICAgIC8vIElzIHRoaXMgbmVnYXRpdmU/PGJyLz4KICBCT09MCXZhbGlkTnVt
YmVyOyAgICAgICAgLy8gSXMgdGhpcyBhIHZhbGlkIG51bWJlcj88YnIvPgogIHVuc2lnbmVk
IGNoYXIJbGVuZ3RoOwkgICAgLy8gZGlnaXRzIGluIG1hbnRpc3NhLjxici8+CiAgdW5zaWdu
ZWQgY2hhciAgY01hbnRpc3NhWzIqTlNEZWNpbWFsTWF4RGlnaXRdOzxici8+Cn08YnIvPgo8
L2NvZGU+ICovCnR5cGVkZWYgTlNEZWNpbWFsIEdTRGVjaW1hbDsKCnN0YXRpYyBOU0RlY2lt
YWwgemVybyA9IHswLCBOTywgWUVTLCAwLCB7MH19OwpzdGF0aWMgTlNEZWNpbWFsIG9uZSA9
IHswLCBOTywgWUVTLCAxLCB7MX19OwoKI2RlZmluZSBOU0RFQ0lNQUxfSVNfWkVSTyhudW0p
ICgwID09IG51bS0+bGVuZ3RoKQojZGVmaW5lIEdTREVDSU1BTF9JU19aRVJPKG51bSkgKDAg
PT0gbnVtLT5sZW5ndGgpCgojZW5kaWYKCgpHU19ERUNMQVJFIHZvaWQKTlNEZWNpbWFsQ29w
eShOU0RlY2ltYWwgKmRlc3RpbmF0aW9uLCBjb25zdCBOU0RlY2ltYWwgKnNvdXJjZSkKewog
IG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBzaXplb2YoTlNEZWNpbWFsKSk7Cn0KCnN0
YXRpYyB2b2lkCkdTRGVjaW1hbENvbXBhY3QoR1NEZWNpbWFsICpudW1iZXIpCnsKICBpbnQg
aSwgajsKCiAgLy9OU0xvZyhAIkNvbXBhY3Qgc3RhcnQgJUAgIiwgTlNEZWNpbWFsU3RyaW5n
KG51bWJlciwgbmlsKSk7CiAgaWYgKCFudW1iZXItPnZhbGlkTnVtYmVyKQogICAgcmV0dXJu
OwoKICAvLyBDdXQgb2ZmIGxlYWRpbmcgMCdzCiAgZm9yIChpID0gMDsgaSA8IG51bWJlci0+
bGVuZ3RoOyBpKyspCiAgICB7CiAgICAgIGlmIChudW1iZXItPmNNYW50aXNzYVtpXSAhPSAw
KQoJYnJlYWs7CiAgICB9CiAgaWYgKGkgPiAwKQogICAgewogICAgICBmb3IgKGogPSAwOyBq
IDwgbnVtYmVyLT5sZW5ndGgtaTsgaisrKQoJewoJICBudW1iZXItPmNNYW50aXNzYVtqXSA9
IG51bWJlci0+Y01hbnRpc3NhW2oraV07Cgl9CiAgICAgIG51bWJlci0+bGVuZ3RoIC09IGk7
CiAgICB9CgogIC8vIEN1dCBvZmYgdHJhaWxpbmcgMCdzCiAgZm9yIChpID0gbnVtYmVyLT5s
ZW5ndGgtMTsgaSA+PSAwOyBpLS0pCiAgICB7CiAgICAgIGlmICgwID09IG51bWJlci0+Y01h
bnRpc3NhW2ldKQogICAgICAgIHsKCSAgaWYgKDEyNyA9PSBudW1iZXItPmV4cG9uZW50KQoJ
ICAgIHsKCSAgICAgIC8vIE92ZXJmbG93IGluIGNvbXBhY3RpbmchIQoJICAgICAgLy8gTGVh
dmUgdGhlIHJlbWFpbmluZyAwcyB0aGVyZS4KCSAgICAgIGJyZWFrOwoJICAgIH0KCSAgbnVt
YmVyLT5sZW5ndGgtLTsKCSAgbnVtYmVyLT5leHBvbmVudCsrOwoJfQogICAgICBlbHNlCgli
cmVhazsKICAgIH0KCiAgaWYgKEdTREVDSU1BTF9JU19aRVJPKG51bWJlcikpCiAgICB7CiAg
ICAgIG51bWJlci0+ZXhwb25lbnQgPSAwOwogICAgICBudW1iZXItPmlzTmVnYXRpdmUgPSBO
TzsKICAgIH0KICAvL05TTG9nKEAiQ29tcGFjdCBlbmQgJUAgIiwgTlNEZWNpbWFsU3RyaW5n
KG51bWJlciwgbmlsKSk7Cn0KCnN0YXRpYyBOU0NvbXBhcmlzb25SZXN1bHQKR1NEZWNpbWFs
Q29tcGFyZShjb25zdCBHU0RlY2ltYWwgKmxlZnRPcGVyYW5kLCBjb25zdCBHU0RlY2ltYWwg
KnJpZ2h0T3BlcmFuZCkKewogIGludCBpLCBsOwogIGludCBzMSA9IGxlZnRPcGVyYW5kLT5l
eHBvbmVudCArIGxlZnRPcGVyYW5kLT5sZW5ndGg7CiAgaW50IHMyID0gcmlnaHRPcGVyYW5k
LT5leHBvbmVudCArIHJpZ2h0T3BlcmFuZC0+bGVuZ3RoOwoKICBpZiAobGVmdE9wZXJhbmQt
PnZhbGlkTnVtYmVyICE9IHJpZ2h0T3BlcmFuZC0+dmFsaWROdW1iZXIpCiAgICB7CiAgICAg
IGlmIChyaWdodE9wZXJhbmQtPnZhbGlkTnVtYmVyKQoJcmV0dXJuIE5TT3JkZXJlZERlc2Nl
bmRpbmc7CiAgICAgIGVsc2UKCXJldHVybiBOU09yZGVyZWRBc2NlbmRpbmc7CiAgICB9Cgog
IGlmIChsZWZ0T3BlcmFuZC0+aXNOZWdhdGl2ZSAhPSByaWdodE9wZXJhbmQtPmlzTmVnYXRp
dmUpCiAgICB7CiAgICAgIGlmIChyaWdodE9wZXJhbmQtPmlzTmVnYXRpdmUpCglyZXR1cm4g
TlNPcmRlcmVkRGVzY2VuZGluZzsKICAgICAgZWxzZQoJcmV0dXJuIE5TT3JkZXJlZEFzY2Vu
ZGluZzsKICAgIH0KCiAgLy8gRml4IGZvciBoYW5kbGluZyB6ZXJvIGxlbmd0aAogIGlmIChs
ZWZ0T3BlcmFuZC0+bGVuZ3RoID09IDAgfHwgcmlnaHRPcGVyYW5kLT5sZW5ndGggPT0gMCkg
CiAgICB7CiAgICAgIGlmIChsZWZ0T3BlcmFuZC0+bGVuZ3RoID09IDAgJiYgcmlnaHRPcGVy
YW5kLT5sZW5ndGggPT0gMCkgCiAgICAgICAgcmV0dXJuIE5TT3JkZXJlZFNhbWU7CiAgICAg
IGVsc2UgaWYgKGxlZnRPcGVyYW5kLT5sZW5ndGggPT0gMCkgCiAgICAgICAgcmV0dXJuIHJp
Z2h0T3BlcmFuZC0+aXNOZWdhdGl2ZSA/IE5TT3JkZXJlZERlc2NlbmRpbmcgOiBOU09yZGVy
ZWRBc2NlbmRpbmc7CiAgICAgIGVsc2UKICAgICAgICByZXR1cm4gbGVmdE9wZXJhbmQtPmlz
TmVnYXRpdmUgPyBOU09yZGVyZWRBc2NlbmRpbmcgOiBOU09yZGVyZWREZXNjZW5kaW5nOwog
ICAgfSAKCiAgLy8gU2FtZSBzaWduLCBjaGVjayBzaXplCiAgaWYgKHMxIDwgczIpCiAgICB7
CiAgICAgIGlmIChyaWdodE9wZXJhbmQtPmlzTmVnYXRpdmUpCglyZXR1cm4gTlNPcmRlcmVk
RGVzY2VuZGluZzsKICAgICAgZWxzZQoJcmV0dXJuIE5TT3JkZXJlZEFzY2VuZGluZzsKICAg
IH0KICBpZiAoczEgPiBzMikKICAgIHsKICAgICAgaWYgKHJpZ2h0T3BlcmFuZC0+aXNOZWdh
dGl2ZSkKCXJldHVybiBOU09yZGVyZWRBc2NlbmRpbmc7CiAgICAgIGVsc2UKCXJldHVybiBO
U09yZGVyZWREZXNjZW5kaW5nOwogICAgfQoKICAvLyBTYW1lIHNpemUsIGNoZWNrIGRpZ2l0
cwogIGwgPSBNSU4obGVmdE9wZXJhbmQtPmxlbmd0aCwgcmlnaHRPcGVyYW5kLT5sZW5ndGgp
OwogIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspCiAgICB7CiAgICAgIGludCBkID0gcmlnaHRP
cGVyYW5kLT5jTWFudGlzc2FbaV0gLSBsZWZ0T3BlcmFuZC0+Y01hbnRpc3NhW2ldOwoKICAg
ICAgaWYgKGQgPiAwKQogICAgICAgIHsKCSAgaWYgKHJpZ2h0T3BlcmFuZC0+aXNOZWdhdGl2
ZSkKCSAgICByZXR1cm4gTlNPcmRlcmVkRGVzY2VuZGluZzsKCSAgZWxzZQoJICAgIHJldHVy
biBOU09yZGVyZWRBc2NlbmRpbmc7Cgl9CiAgICAgIGlmIChkIDwgMCkKICAgICAgICB7Cgkg
IGlmIChyaWdodE9wZXJhbmQtPmlzTmVnYXRpdmUpCgkgICAgcmV0dXJuIE5TT3JkZXJlZEFz
Y2VuZGluZzsKCSAgZWxzZQoJICAgIHJldHVybiBOU09yZGVyZWREZXNjZW5kaW5nOwoJfQog
ICAgfQoKICAvLyBTYW1lIGRpZ2l0cywgY2hlY2sgbGVuZ3RoCiAgaWYgKGxlZnRPcGVyYW5k
LT5sZW5ndGggPiByaWdodE9wZXJhbmQtPmxlbmd0aCkKICAgIHsKICAgICAgaWYgKHJpZ2h0
T3BlcmFuZC0+aXNOZWdhdGl2ZSkKCXJldHVybiBOU09yZGVyZWRBc2NlbmRpbmc7CiAgICAg
IGVsc2UKCXJldHVybiBOU09yZGVyZWREZXNjZW5kaW5nOwogICAgfQoKICBpZiAobGVmdE9w
ZXJhbmQtPmxlbmd0aCA8IHJpZ2h0T3BlcmFuZC0+bGVuZ3RoKQogICAgewogICAgICBpZiAo
cmlnaHRPcGVyYW5kLT5pc05lZ2F0aXZlKQoJcmV0dXJuIE5TT3JkZXJlZERlc2NlbmRpbmc7
CiAgICAgIGVsc2UKCXJldHVybiBOU09yZGVyZWRBc2NlbmRpbmc7CiAgICB9CgogIHJldHVy
biBOU09yZGVyZWRTYW1lOwp9CgpzdGF0aWMgTlNDb21wYXJpc29uUmVzdWx0Ck5TU2ltcGxl
Q29tcGFyZShjb25zdCBOU0RlY2ltYWwgKmxlZnRPcGVyYW5kLCBjb25zdCBOU0RlY2ltYWwg
KnJpZ2h0T3BlcmFuZCk7CgpzdGF0aWMgdm9pZApHU0RlY2ltYWxSb3VuZChHU0RlY2ltYWwg
KnJlc3VsdCwgaW50IHNjYWxlLCBOU1JvdW5kaW5nTW9kZSBtb2RlKQp7CiAgaW50IGk7CiAg
Ly8gbGFzdCB2YWxpZCBkaWdpdCBpbiBudW1iZXIKICBpbnQgbCA9IHNjYWxlICsgcmVzdWx0
LT5leHBvbmVudCArIHJlc3VsdC0+bGVuZ3RoOwoKICBpZiAoTlNEZWNpbWFsTm9TY2FsZSA9
PSBzY2FsZSkKICAgICAgcmV0dXJuOwoKICBpZiAoIXJlc3VsdC0+dmFsaWROdW1iZXIpCiAg
ICByZXR1cm47CgogIGlmIChyZXN1bHQtPmxlbmd0aCA8PSBsKQogICAgcmV0dXJuOwogIGVs
c2UgaWYgKGwgPCAwKQogICAgewogICAgICByZXN1bHQtPmxlbmd0aCA9IDA7CiAgICAgIHJl
c3VsdC0+ZXhwb25lbnQgPSAwOwogICAgICByZXN1bHQtPmlzTmVnYXRpdmUgPSBOTzsKICAg
ICAgcmV0dXJuOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgaW50IGMsIG47CiAgICAgIEJP
T0wgdXA7CgogICAgICBpZiAobCA9PSAwKQogICAgICAgIHsKICAgICAgICAgIGludCB4Owog
ICAgICAgICAgICAgCiAgICAgICAgICB4ID0gcmVzdWx0LT5sZW5ndGg7CiAgICAgICAgICBy
ZXN1bHQtPmxlbmd0aCArPSAxOwogICAgICAgICAgbCArPSAxOwogICAgICAgICAgd2hpbGUg
KHggPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHJlc3VsdC0+Y01hbnRpc3Nh
W3hdID0gcmVzdWx0LT5jTWFudGlzc2FbeC0xXTsKICAgICAgICAgICAgICAgeC0tOwogICAg
ICAgICAgICB9CiAgICAgICAgICByZXN1bHQtPmNNYW50aXNzYVswXSA9IDA7CiAgICAgICAg
fQoKICAgICAgLy8gQWRqdXN0IGxlbmd0aCBhbmQgZXhwb25lbnQKICAgICAgcmVzdWx0LT5l
eHBvbmVudCArPSByZXN1bHQtPmxlbmd0aCAtIGw7CiAgICAgIHJlc3VsdC0+bGVuZ3RoID0g
bDsKCiAgICAgIHN3aXRjaCAobW9kZSkKICAgICAgICB7CgkgIGNhc2UgTlNSb3VuZERvd246
CgkgICAgdXAgPSByZXN1bHQtPmlzTmVnYXRpdmU7CgkgICAgYnJlYWs7CgkgIGNhc2UgTlNS
b3VuZFVwOgoJICAgIHVwID0gIXJlc3VsdC0+aXNOZWdhdGl2ZTsKCSAgICBicmVhazsKCSAg
Y2FzZSBOU1JvdW5kUGxhaW46CgkgICAgbiA9IHJlc3VsdC0+Y01hbnRpc3NhW2xdOwoJICAg
IHVwID0gKG4gPj0gNSk7CgkgICAgYnJlYWs7CgkgIGNhc2UgTlNSb3VuZEJhbmtlcnM6Cgkg
ICAgbiA9IHJlc3VsdC0+Y01hbnRpc3NhW2xdOwoJICAgIGlmIChuID4gNSkKICAgICAgICAg
ICAgICB7CgkgICAgICAgIHVwID0gWUVTOwogICAgICAgICAgICAgIH0KCSAgICBlbHNlIGlm
IChuIDwgNSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB1cCA9IE5POwogICAg
ICAgICAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7CgkJYyA9IHJlc3VsdC0+Y01hbnRpc3Nh
W2wtMV07CgkJdXAgPSAoKGMgJSAyKSAhPSAwKTsKCSAgICAgIH0KCSAgICBicmVhazsKCSAg
ZGVmYXVsdDogLy8gTm8gd2F5IHRvIGdldCBoZXJlCgkgICAgdXAgPSBOTzsKCSAgICBicmVh
azsKCX0KCiAgICAgIGlmICh1cCkKICAgICAgewoJZm9yIChpID0gbC0xOyBpID49IDA7IGkt
LSkKCSAgewoJICAgIGlmIChyZXN1bHQtPmNNYW50aXNzYVtpXSAhPSA5KQoJICAgICAgewoJ
CXJlc3VsdC0+Y01hbnRpc3NhW2ldKys7CgkJYnJlYWs7CgkgICAgICB9CgkgICAgcmVzdWx0
LT5jTWFudGlzc2FbaV0gPSAwOwoJICB9CgkvLyBGaW5hbCBvdmVyZmxvdz8KCWlmICgtMSA9
PSBpKQoJICB7CgkgICAgLy8gQXMgYWxsIGRpZ2l0cyBhcmUgemVyb3MsIGp1c3QgY2hhbmdl
IHRoZSBmaXJzdAoJICAgIHJlc3VsdC0+Y01hbnRpc3NhWzBdID0gMTsKCSAgICBpZiAoMTI3
ID09IHJlc3VsdC0+ZXhwb25lbnQpCgkgICAgICB7CgkJLy8gT3ZlcmZsb3cgaW4gcm91bmRp
bmchIQoJCS8vIEFkZCBvbmUgemVybyBhZGQgdGhlIGVuZC4gVGhlcmUgbXVzdCBiZSBzcGFj
ZSBhcwoJCS8vIHdlIGp1c3QgY3V0IG9mZiBzb21lIGRpZ2l0cy4KCQlyZXN1bHQtPmNNYW50
aXNzYVtsXSA9IDA7CgkJcmVzdWx0LT5sZW5ndGgrKzsKCSAgICAgIH0KCSAgICBlbHNlCgkg
ICAgICByZXN1bHQtPmV4cG9uZW50Kys7CgkgIH0KICAgICAgfQogICAgfQoKICBHU0RlY2lt
YWxDb21wYWN0KHJlc3VsdCk7Cn0KCnN0YXRpYyBOU0NhbGN1bGF0aW9uRXJyb3IKR1NEZWNp
bWFsTm9ybWFsaXplKEdTRGVjaW1hbCAqbjEsIEdTRGVjaW1hbCAqbjIsIE5TUm91bmRpbmdN
b2RlIG1vZGUpCnsKICAvLyBCb3RoIGFyZSB2YWxpZCBudW1iZXJzIGFuZCB0aGUgZXhwb25l
bnRzIGFyZSBub3QgZXF1YWwKICBpbnQgZTEgPSBuMS0+ZXhwb25lbnQ7CiAgaW50IGUyID0g
bjItPmV4cG9uZW50OwogIGludCBpLCBsOwoKICAvLyBtYWtlIHN1cmUgbjIgaGFzIHRoZSBi
aWdnZXIgZXhwb25lbnQKICBpZiAoZTEgPiBlMikKICAgIHsKICAgICAgR1NEZWNpbWFsICp0
OwoKICAgICAgdCA9IG4xOwogICAgICBuMSA9IG4yOwogICAgICBuMiA9IHQ7CiAgICAgIGkg
PSBlMjsKICAgICAgZTIgPSBlMTsKICAgICAgZTEgPSBpOwogICAgfQoKICAvLyBBZGQgemVy
b3MgdG8gbjIsIGFzIGZhciBhcyBwb3NzaWJsZQogIGwgPSBNSU4oTlNEZWNpbWFsTWF4RGln
aXQgLSBuMi0+bGVuZ3RoLCBlMiAtIGUxKTsKICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKQog
ICAgewogICAgICBuMi0+Y01hbnRpc3NhW2kgKyBuMi0+bGVuZ3RoXSA9IDA7CiAgICB9CiAg
bjItPmxlbmd0aCArPSBsOwogIG4yLT5leHBvbmVudCAtPSBsOwoKICBpZiAobCAhPSBlMiAt
IGUxKQogICAgewogICAgICAvLyBSb3VuZCBvZiBzb21lIGRpZ2l0cyBmcm9tIG4xIHRvIGlu
Y3JlYXNlIGV4cG9uZW50CiAgICAgIEdTRGVjaW1hbFJvdW5kKG4xLCAtbjItPmV4cG9uZW50
LCBtb2RlKTsKICAgICAgaWYgKG4xLT5leHBvbmVudCAhPSBuMi0+ZXhwb25lbnQpCgl7Cgkg
IC8vIFNvbWUgemVyb3Mgd2hlcmUgY3V0IG9mIGFnYWluIGJ5IGNvbXBhY3RpbmcKCSAgbCA9
IE1JTihOU0RlY2ltYWxNYXhEaWdpdCAtIG4xLT5sZW5ndGgsIG4xLT5leHBvbmVudCAtIG4y
LT5leHBvbmVudCk7CgkgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspCgkgICAgewoJCW4xLT5j
TWFudGlzc2FbKE5TSW50ZWdlciluMS0+bGVuZ3RoXSA9IDA7CgkJbjEtPmxlbmd0aCsrOwoJ
ICAgIH0KCSAgbjEtPmV4cG9uZW50ID0gbjItPmV4cG9uZW50OwoJfQogICAgICByZXR1cm4g
TlNDYWxjdWxhdGlvbkxvc3NPZlByZWNpc2lvbjsKICAgIH0KCiAgcmV0dXJuIE5TQ2FsY3Vs
YXRpb25Ob0Vycm9yOwp9CgpzdGF0aWMgTlNDYWxjdWxhdGlvbkVycm9yCkdTU2ltcGxlQWRk
KE5TRGVjaW1hbCAqcmVzdWx0LCBjb25zdCBOU0RlY2ltYWwgKmxlZnQsIGNvbnN0IE5TRGVj
aW1hbCAqcmlnaHQsCgkgICAgTlNSb3VuZGluZ01vZGUgbW9kZSk7CgpHU19ERUNMQVJFIE5T
Q2FsY3VsYXRpb25FcnJvcgpOU0RlY2ltYWxBZGQoTlNEZWNpbWFsICpyZXN1bHQsIGNvbnN0
IE5TRGVjaW1hbCAqbGVmdCwgY29uc3QgTlNEZWNpbWFsICpyaWdodCwKCSAgICAgTlNSb3Vu
ZGluZ01vZGUgbW9kZSkKewogIE5TQ2FsY3VsYXRpb25FcnJvciBlcnJvciA9IE5TQ2FsY3Vs
YXRpb25Ob0Vycm9yOwogIE5TQ2FsY3VsYXRpb25FcnJvciBlcnJvcjE7CiAgTlNEZWNpbWFs
IG4xOwogIE5TRGVjaW1hbCBuMjsKICBOU0NvbXBhcmlzb25SZXN1bHQgY29tcDsKCiAgaWYg
KCFsZWZ0LT52YWxpZE51bWJlciB8fCAhcmlnaHQtPnZhbGlkTnVtYmVyKQogICAgewogICAg
ICByZXN1bHQtPnZhbGlkTnVtYmVyID0gTk87CiAgICAgIHJldHVybiBlcnJvcjsKICAgIH0K
CiAgLy8gY2hlY2sgZm9yIHplcm8KICBpZiAoTlNERUNJTUFMX0lTX1pFUk8obGVmdCkpCiAg
ICB7CiAgICAgIE5TRGVjaW1hbENvcHkocmVzdWx0LCByaWdodCk7CiAgICAgIHJldHVybiBl
cnJvcjsKICAgIH0KICBpZiAoTlNERUNJTUFMX0lTX1pFUk8ocmlnaHQpKQogICAgewogICAg
ICBOU0RlY2ltYWxDb3B5KHJlc3VsdCwgbGVmdCk7CiAgICAgIHJldHVybiBlcnJvcjsKICAg
IH0KCiAgLy8gRm9yIGRpZmZlcmVudCBzaWducyB1c2Ugc3VidHJhY3Rpb24KICBpZiAobGVm
dC0+aXNOZWdhdGl2ZSAhPSByaWdodC0+aXNOZWdhdGl2ZSkKICAgIHsKICAgICAgaWYgKGxl
ZnQtPmlzTmVnYXRpdmUpCiAgICAgICAgewoJICBOU0RlY2ltYWxDb3B5KCZuMSwgbGVmdCk7
CgkgIG4xLmlzTmVnYXRpdmUgPSBOTzsKCSAgcmV0dXJuIE5TRGVjaW1hbFN1YnRyYWN0KHJl
c3VsdCwgcmlnaHQsICZuMSwgbW9kZSk7Cgl9CiAgICAgIGVsc2UKICAgICAgICB7CgkgIE5T
RGVjaW1hbENvcHkoJm4xLCByaWdodCk7CgkgIG4xLmlzTmVnYXRpdmUgPSBOTzsKCSAgcmV0
dXJuIE5TRGVjaW1hbFN1YnRyYWN0KHJlc3VsdCwgbGVmdCwgJm4xLCBtb2RlKTsKCX0KICAg
IH0KCiAgTlNEZWNpbWFsQ29weSgmbjEsIGxlZnQpOwogIE5TRGVjaW1hbENvcHkoJm4yLCBy
aWdodCk7CiAgZXJyb3IgPSBOU0RlY2ltYWxOb3JtYWxpemUoJm4xLCAmbjIsIG1vZGUpOwog
IGNvbXAgPSBOU1NpbXBsZUNvbXBhcmUoJm4xLCAmbjIpOwovKgogIE5TTG9nKEAiQWRkIGxl
ZnQgJUAgcmlnaHQgJUAiLCBOU0RlY2ltYWxTdHJpbmcobGVmdCwgbmlsKSwKCU5TRGVjaW1h
bFN0cmluZyhyaWdodCwgbmlsKSk7CiAgTlNMb2coQCJBZGQgbjEgJUAgbjIgJUAgY29tcCAl
ZCIsIE5TRGVjaW1hbFN0cmluZygmbjEsIG5pbCksCglOU0RlY2ltYWxTdHJpbmcoJm4yLCBu
aWwpLCBjb21wKTsKKi8KICAvLyBib3RoIG5lZ2F0aXZlLCBtYWtlIHBvc2l0aXZlCiAgaWYg
KGxlZnQtPmlzTmVnYXRpdmUpCiAgICB7CiAgICAgIG4xLmlzTmVnYXRpdmUgPSBOTzsKICAg
ICAgbjIuaXNOZWdhdGl2ZSA9IE5POwogICAgICAvLyBTaW1wbGVDb21wYXJlIGRvZXMgbm90
IGxvb2sgYXQgc2lnbgogICAgICBpZiAoTlNPcmRlcmVkRGVzY2VuZGluZyA9PSBjb21wKQog
ICAgICAgIHsKCSAgZXJyb3IxID0gR1NTaW1wbGVBZGQocmVzdWx0LCAmbjEsICZuMiwgbW9k
ZSk7Cgl9CiAgICAgIGVsc2UKICAgICAgICB7CgkgIGVycm9yMSA9IEdTU2ltcGxlQWRkKHJl
c3VsdCwgJm4yLCAmbjEsIG1vZGUpOwoJfQogICAgICByZXN1bHQtPmlzTmVnYXRpdmUgPSBZ
RVM7CiAgICAgIGlmIChOU0NhbGN1bGF0aW9uVW5kZXJmbG93ID09IGVycm9yMSkKCWVycm9y
MSA9IE5TQ2FsY3VsYXRpb25PdmVyZmxvdzsKICAgICAgZWxzZSBpZiAoTlNDYWxjdWxhdGlv
bk92ZXJmbG93ID09IGVycm9yMSkKCWVycm9yMSA9IE5TQ2FsY3VsYXRpb25VbmRlcmZsb3c7
CiAgICB9CiAgZWxzZQogICAgewogICAgICBpZiAoTlNPcmRlcmVkQXNjZW5kaW5nID09IGNv
bXApCiAgICAgICAgewoJICBlcnJvcjEgPSBHU1NpbXBsZUFkZChyZXN1bHQsICZuMiwgJm4x
LCBtb2RlKTsKCX0KICAgICAgZWxzZQogICAgICAgIHsKCSAgZXJyb3IxID0gR1NTaW1wbGVB
ZGQocmVzdWx0LCAmbjEsICZuMiwgbW9kZSk7Cgl9CiAgICB9CgogIE5TRGVjaW1hbENvbXBh
Y3QocmVzdWx0KTsKCiAgaWYgKE5TQ2FsY3VsYXRpb25Ob0Vycm9yID09IGVycm9yMSkKICAg
IHJldHVybiBlcnJvcjsKICBlbHNlCiAgICByZXR1cm4gZXJyb3IxOwp9CgpzdGF0aWMgTlND
YWxjdWxhdGlvbkVycm9yCkdTU2ltcGxlU3VidHJhY3QoTlNEZWNpbWFsICpyZXN1bHQsIGNv
bnN0IE5TRGVjaW1hbCAqbGVmdCwKCQkgY29uc3QgTlNEZWNpbWFsICpyaWdodCwgTlNSb3Vu
ZGluZ01vZGUgbW9kZSk7CgpHU19ERUNMQVJFIE5TQ2FsY3VsYXRpb25FcnJvcgpOU0RlY2lt
YWxTdWJ0cmFjdChOU0RlY2ltYWwgKnJlc3VsdCwgY29uc3QgTlNEZWNpbWFsICpsZWZ0LAoJ
CSAgY29uc3QgTlNEZWNpbWFsICpyaWdodCwgTlNSb3VuZGluZ01vZGUgbW9kZSkKewogIE5T
Q2FsY3VsYXRpb25FcnJvciBlcnJvciA9IE5TQ2FsY3VsYXRpb25Ob0Vycm9yOwogIE5TQ2Fs
Y3VsYXRpb25FcnJvciBlcnJvcjE7CiAgTlNEZWNpbWFsIG4xOwogIE5TRGVjaW1hbCBuMjsK
ICBOU0NvbXBhcmlzb25SZXN1bHQgY29tcDsKCiAgaWYgKCFsZWZ0LT52YWxpZE51bWJlciB8
fCAhcmlnaHQtPnZhbGlkTnVtYmVyKQogICAgewogICAgICByZXN1bHQtPnZhbGlkTnVtYmVy
ID0gTk87CiAgICAgIHJldHVybiBlcnJvcjsKICAgIH0KCiAgaWYgKE5TREVDSU1BTF9JU19a
RVJPKHJpZ2h0KSkKICAgIHsKICAgICAgTlNEZWNpbWFsQ29weShyZXN1bHQsIGxlZnQpOwog
ICAgICByZXR1cm4gZXJyb3I7CiAgICB9CiAgaWYgKE5TREVDSU1BTF9JU19aRVJPKGxlZnQp
KQogICAgewogICAgICBOU0RlY2ltYWxDb3B5KHJlc3VsdCwgcmlnaHQpOwogICAgICByZXN1
bHQtPmlzTmVnYXRpdmUgPSAhcmVzdWx0LT5pc05lZ2F0aXZlOwogICAgICByZXR1cm4gZXJy
b3I7CiAgICB9CgogIC8vIEZvciBkaWZmZXJlbnQgc2lnbnMgdXNlIGFkZGl0aW9uCiAgaWYg
KGxlZnQtPmlzTmVnYXRpdmUgIT0gcmlnaHQtPmlzTmVnYXRpdmUpCiAgICB7CiAgICAgIGlm
IChsZWZ0LT5pc05lZ2F0aXZlKQogICAgICAgIHsKCSAgTlNEZWNpbWFsQ29weSgmbjEsIGxl
ZnQpOwoJICBuMS5pc05lZ2F0aXZlID0gTk87CgkgIGVycm9yMSA9IE5TRGVjaW1hbEFkZChy
ZXN1bHQsICZuMSwgcmlnaHQsIG1vZGUpOwoJICByZXN1bHQtPmlzTmVnYXRpdmUgPSBZRVM7
CgkgIGlmIChOU0NhbGN1bGF0aW9uVW5kZXJmbG93ID09IGVycm9yMSkKCSAgICBlcnJvcjEg
PSBOU0NhbGN1bGF0aW9uT3ZlcmZsb3c7CgkgIGVsc2UgaWYgKE5TQ2FsY3VsYXRpb25PdmVy
ZmxvdyA9PSBlcnJvcjEpCgkgICAgZXJyb3IxID0gTlNDYWxjdWxhdGlvblVuZGVyZmxvdzsK
CSAgcmV0dXJuIGVycm9yMTsKCX0KICAgICAgZWxzZQogICAgICAgIHsKCSAgTlNEZWNpbWFs
Q29weSgmbjEsIHJpZ2h0KTsKCSAgbjEuaXNOZWdhdGl2ZSA9IE5POwoJICByZXR1cm4gTlNE
ZWNpbWFsQWRkKHJlc3VsdCwgbGVmdCwgJm4xLCBtb2RlKTsKCX0KICAgIH0KCiAgTlNEZWNp
bWFsQ29weSgmbjEsIGxlZnQpOwogIE5TRGVjaW1hbENvcHkoJm4yLCByaWdodCk7CiAgZXJy
b3IgPSBOU0RlY2ltYWxOb3JtYWxpemUoJm4xLCAmbjIsIG1vZGUpOwoKICBjb21wID0gTlNE
ZWNpbWFsQ29tcGFyZShsZWZ0LCByaWdodCk7Ci8qCiAgTlNMb2coQCJTdWIgbGVmdCAlQCBy
aWdodCAlQCIsIE5TRGVjaW1hbFN0cmluZyhsZWZ0LCBuaWwpLAoJTlNEZWNpbWFsU3RyaW5n
KHJpZ2h0LCBuaWwpKTsKICBOU0xvZyhAIlN1YiBuMSAlQCBuMiAlQCBjb21wICVkIiwgTlNE
ZWNpbWFsU3RyaW5nKCZuMSwgbmlsKSwKCU5TRGVjaW1hbFN0cmluZygmbjIsIG5pbCksIGNv
bXApOwoqLwoKICBpZiAoTlNPcmRlcmVkU2FtZSA9PSBjb21wKQogICAgewogICAgICBOU0Rl
Y2ltYWxDb3B5KHJlc3VsdCwgJnplcm8pOwogICAgICByZXR1cm4gTlNDYWxjdWxhdGlvbk5v
RXJyb3I7CiAgICB9CgogIC8vIGJvdGggbmVnYXRpdmUsIG1ha2UgcG9zaXRpdmUgYW5kIGNo
YW5nZSBvcmRlcgogIGlmIChsZWZ0LT5pc05lZ2F0aXZlKQogICAgewogICAgICBuMS5pc05l
Z2F0aXZlID0gTk87CiAgICAgIG4yLmlzTmVnYXRpdmUgPSBOTzsKICAgICAgaWYgKE5TT3Jk
ZXJlZEFzY2VuZGluZyA9PSBjb21wKQogICAgICAgIHsKCSAgZXJyb3IxID0gR1NTaW1wbGVT
dWJ0cmFjdChyZXN1bHQsICZuMSwgJm4yLCBtb2RlKTsKCSAgcmVzdWx0LT5pc05lZ2F0aXZl
ID0gWUVTOwoJfQogICAgICBlbHNlCiAgICAgICAgewoJICBlcnJvcjEgPSBHU1NpbXBsZVN1
YnRyYWN0KHJlc3VsdCwgJm4yLCAmbjEsIG1vZGUpOwoJfQogICAgfQogIGVsc2UKICAgIHsK
ICAgICAgaWYgKE5TT3JkZXJlZEFzY2VuZGluZyA9PSBjb21wKQogICAgICAgIHsKCSAgZXJy
b3IxID0gR1NTaW1wbGVTdWJ0cmFjdChyZXN1bHQsICZuMiwgJm4xLCBtb2RlKTsKCSAgcmVz
dWx0LT5pc05lZ2F0aXZlID0gWUVTOwoJfQogICAgICBlbHNlCiAgICAgICAgewoJICBlcnJv
cjEgPSBHU1NpbXBsZVN1YnRyYWN0KHJlc3VsdCwgJm4xLCAmbjIsIG1vZGUpOwoJfQogICAg
fQoKICBOU0RlY2ltYWxDb21wYWN0KHJlc3VsdCk7CgogIGlmIChOU0NhbGN1bGF0aW9uTm9F
cnJvciA9PSBlcnJvcjEpCiAgICByZXR1cm4gZXJyb3I7CiAgZWxzZQogICAgcmV0dXJuIGVy
cm9yMTsKfQoKc3RhdGljIE5TQ2FsY3VsYXRpb25FcnJvcgpHU1NpbXBsZU11bHRpcGx5KE5T
RGVjaW1hbCAqcmVzdWx0LCBOU0RlY2ltYWwgKmwsIE5TRGVjaW1hbCAqciwKCQkgTlNSb3Vu
ZGluZ01vZGUgbW9kZSk7CgpHU19ERUNMQVJFIE5TQ2FsY3VsYXRpb25FcnJvcgpOU0RlY2lt
YWxNdWx0aXBseShOU0RlY2ltYWwgKnJlc3VsdCwgY29uc3QgTlNEZWNpbWFsICpsLCBjb25z
dCBOU0RlY2ltYWwgKnIsCgkJICBOU1JvdW5kaW5nTW9kZSBtb2RlKQp7CiAgTlNDYWxjdWxh
dGlvbkVycm9yIGVycm9yID0gTlNDYWxjdWxhdGlvbk5vRXJyb3I7CiAgTlNEZWNpbWFsIG4x
OwogIE5TRGVjaW1hbCBuMjsKICBpbnQgZXhwID0gbC0+ZXhwb25lbnQgKyByLT5leHBvbmVu
dDsKICBCT09MIG5lZyA9IGwtPmlzTmVnYXRpdmUgIT0gci0+aXNOZWdhdGl2ZTsKICBOU0Nv
bXBhcmlzb25SZXN1bHQgY29tcDsKCiAgaWYgKCFsLT52YWxpZE51bWJlciB8fCAhci0+dmFs
aWROdW1iZXIpCiAgICB7CiAgICAgIHJlc3VsdC0+dmFsaWROdW1iZXIgPSBOTzsKICAgICAg
cmV0dXJuIGVycm9yOwogICAgfQoKICAvLyBjaGVjayBmb3IgemVybwogIGlmIChOU0RFQ0lN
QUxfSVNfWkVSTyhsKSB8fCBOU0RFQ0lNQUxfSVNfWkVSTyhyKSkKICAgIHsKICAgICAgTlNE
ZWNpbWFsQ29weShyZXN1bHQsICZ6ZXJvKTsKICAgICAgcmV0dXJuIGVycm9yOwogICAgfQoK
ICBpZiAoZXhwID4gMTI3KQogICAgewogICAgICByZXN1bHQtPnZhbGlkTnVtYmVyID0gTk87
CiAgICAgIGlmIChuZWcpCglyZXR1cm4gTlNDYWxjdWxhdGlvblVuZGVyZmxvdzsKICAgICAg
ZWxzZQoJcmV0dXJuIE5TQ2FsY3VsYXRpb25PdmVyZmxvdzsKICAgIH0KCiAgTlNEZWNpbWFs
Q29weSgmbjEsIGwpOwogIE5TRGVjaW1hbENvcHkoJm4yLCByKTsKICBuMS5leHBvbmVudCA9
IDA7CiAgbjIuZXhwb25lbnQgPSAwOwogIG4xLmlzTmVnYXRpdmUgPSBOTzsKICBuMi5pc05l
Z2F0aXZlID0gTk87CiAgY29tcCA9IE5TU2ltcGxlQ29tcGFyZSgmbjEsICZuMik7CgogIGlm
IChOU09yZGVyZWREZXNjZW5kaW5nID09IGNvbXApCiAgICB7CiAgICAgIGVycm9yID0gR1NT
aW1wbGVNdWx0aXBseShyZXN1bHQsICZuMSwgJm4yLCBtb2RlKTsKICAgIH0KICBlbHNlCiAg
ICB7CiAgICAgIGVycm9yID0gR1NTaW1wbGVNdWx0aXBseShyZXN1bHQsICZuMiwgJm4xLCBt
b2RlKTsKICAgIH0KCiAgTlNEZWNpbWFsQ29tcGFjdChyZXN1bHQpOwogIGlmIChyZXN1bHQt
PmV4cG9uZW50ICsgZXhwID4gMTI3KQogICAgewogICAgICByZXN1bHQtPnZhbGlkTnVtYmVy
ID0gTk87CiAgICAgIGlmIChuZWcpCglyZXR1cm4gTlNDYWxjdWxhdGlvblVuZGVyZmxvdzsK
ICAgICAgZWxzZQoJcmV0dXJuIE5TQ2FsY3VsYXRpb25PdmVyZmxvdzsKICAgIH0KICBlbHNl
IGlmIChyZXN1bHQtPmV4cG9uZW50ICsgZXhwIDwgLTEyOCkKICAgIHsKICAgICAgLy8gV2Ug
bXVzdCBjdXQgb2ZmIHNvbWUgZGlnaXRzCiAgICAgIE5TRGVjaW1hbFJvdW5kKHJlc3VsdCwg
cmVzdWx0LCBleHArMTI4LCBtb2RlKTsKICAgICAgZXJyb3IgPSBOU0NhbGN1bGF0aW9uTG9z
c09mUHJlY2lzaW9uOwoKICAgICAgaWYgKHJlc3VsdC0+ZXhwb25lbnQgKyBleHAgPCAtMTI4
KQogICAgICAgIHsKCSAgTlNEZWNpbWFsQ29weShyZXN1bHQsICZ6ZXJvKTsKCSAgcmV0dXJu
IGVycm9yOwogICAgICAgIH0KICAgIH0KCiAgcmVzdWx0LT5leHBvbmVudCArPSBleHA7CiAg
cmVzdWx0LT5pc05lZ2F0aXZlID0gbmVnOwoKICByZXR1cm4gZXJyb3I7Cn0KCnN0YXRpYyBO
U0NhbGN1bGF0aW9uRXJyb3IKR1NTaW1wbGVEaXZpZGUoTlNEZWNpbWFsICpyZXN1bHQsIGNv
bnN0IE5TRGVjaW1hbCAqbCwgY29uc3QgTlNEZWNpbWFsICpyLAogIE5TUm91bmRpbmdNb2Rl
IG1vZGUpOwoKR1NfREVDTEFSRSBOU0NhbGN1bGF0aW9uRXJyb3IKTlNEZWNpbWFsRGl2aWRl
KE5TRGVjaW1hbCAqcmVzdWx0LCBjb25zdCBOU0RlY2ltYWwgKmwsIGNvbnN0IE5TRGVjaW1h
bCAqcnIsCiAgTlNSb3VuZGluZ01vZGUgbW9kZSkKewogIE5TQ2FsY3VsYXRpb25FcnJvciBl
cnJvciA9IE5TQ2FsY3VsYXRpb25Ob0Vycm9yOwogIE5TRGVjaW1hbCBuMTsKICBOU0RlY2lt
YWwgbjI7CiAgaW50IGV4cCA9IGwtPmV4cG9uZW50IC0gcnItPmV4cG9uZW50OwogIEJPT0wg
bmVnID0gbC0+aXNOZWdhdGl2ZSAhPSByci0+aXNOZWdhdGl2ZTsKCiAgaWYgKCFsLT52YWxp
ZE51bWJlciB8fCAhcnItPnZhbGlkTnVtYmVyKQogICAgewogICAgICByZXN1bHQtPnZhbGlk
TnVtYmVyID0gTk87CiAgICAgIHJldHVybiBOU0NhbGN1bGF0aW9uTm9FcnJvcjsKICAgIH0K
CiAgLy8gQ2hlY2sgZm9yIHplcm8KICBpZiAoTlNERUNJTUFMX0lTX1pFUk8ocnIpKQogICAg
ewogICAgICByZXN1bHQtPnZhbGlkTnVtYmVyID0gTk87CiAgICAgIHJldHVybiBOU0NhbGN1
bGF0aW9uRGl2aWRlQnlaZXJvOwogICAgfQogIGlmIChOU0RFQ0lNQUxfSVNfWkVSTyhsKSkK
ICAgIHsKICAgICAgTlNEZWNpbWFsQ29weShyZXN1bHQsICZ6ZXJvKTsKICAgICAgcmV0dXJu
IGVycm9yOwogICAgfQoKICAvLyBTaG91bGQgYWxzbyBjaGVjayBmb3Igb25lCgogIE5TRGVj
aW1hbENvcHkoJm4xLCBsKTsKICBuMS5leHBvbmVudCA9IDA7CiAgbjEuaXNOZWdhdGl2ZSA9
IE5POwogIE5TRGVjaW1hbENvcHkoJm4yLCBycik7CiAgbjIuZXhwb25lbnQgPSAwOwogIG4y
LmlzTmVnYXRpdmUgPSBOTzsKCiAgZXJyb3IgPSBHU1NpbXBsZURpdmlkZShyZXN1bHQsICZu
MSwgJm4yLCBtb2RlKTsKICBOU0RlY2ltYWxDb21wYWN0KHJlc3VsdCk7CgogIGlmIChyZXN1
bHQtPmV4cG9uZW50ICsgZXhwID4gMTI3KQogICAgewogICAgICByZXN1bHQtPnZhbGlkTnVt
YmVyID0gTk87CiAgICAgIGlmIChuZWcpCglyZXR1cm4gTlNDYWxjdWxhdGlvblVuZGVyZmxv
dzsKICAgICAgZWxzZQoJcmV0dXJuIE5TQ2FsY3VsYXRpb25PdmVyZmxvdzsKICAgIH0KICBl
bHNlIGlmIChyZXN1bHQtPmV4cG9uZW50ICsgZXhwIDwgLTEyOCkKICAgIHsKICAgICAgLy8g
V2UgbXVzdCBjdXQgb2ZmIHNvbWUgZGlnaXRzCiAgICAgIE5TRGVjaW1hbFJvdW5kKHJlc3Vs
dCwgcmVzdWx0LCBleHArMTI4LCBtb2RlKTsKICAgICAgZXJyb3IgPSBOU0NhbGN1bGF0aW9u
TG9zc09mUHJlY2lzaW9uOwoKICAgICAgaWYgKHJlc3VsdC0+ZXhwb25lbnQgKyBleHAgPCAt
MTI4KQogICAgICAgIHsKCSAgTlNEZWNpbWFsQ29weShyZXN1bHQsICZ6ZXJvKTsKCSAgcmV0
dXJuIGVycm9yOwogICAgICAgIH0KICAgIH0KCiAgcmVzdWx0LT5leHBvbmVudCArPSBleHA7
CiAgcmVzdWx0LT5pc05lZ2F0aXZlID0gbmVnOwoKICByZXR1cm4gZXJyb3I7Cn0KCkdTX0RF
Q0xBUkUgTlNDYWxjdWxhdGlvbkVycm9yCk5TRGVjaW1hbFBvd2VyKE5TRGVjaW1hbCAqcmVz
dWx0LCBjb25zdCBOU0RlY2ltYWwgKm4sIE5TVUludGVnZXIgcG93ZXIsIE5TUm91bmRpbmdN
b2RlIG1vZGUpCnsKICBOU0NhbGN1bGF0aW9uRXJyb3IgZXJyb3IgPSBOU0NhbGN1bGF0aW9u
Tm9FcnJvcjsKICB1bnNpZ25lZCBpbnQgZSA9IHBvd2VyOwogIE5TRGVjaW1hbCBuMTsKICBC
T09MIG5lZyA9IChuLT5pc05lZ2F0aXZlICYmIChwb3dlciAlIDIpKTsKCiAgTlNEZWNpbWFs
Q29weSgmbjEsIG4pOwogIG4xLmlzTmVnYXRpdmUgPSBOTzsKICBOU0RlY2ltYWxDb3B5KHJl
c3VsdCwgJm9uZSk7Ci8vICBOU0RlY2ltYWxDb3B5KHJlc3VsdCwgJnplcm8pOwovLyAgcmVz
dWx0LT5sZW5ndGggPSAxOwovLyAgcmVzdWx0LT5jTWFudGlzc2FbMF0gPSAxOwoKICB3aGls
ZSAoZSkKICAgIHsKICAgICAgaWYgKGUgJiAxKQogICAgICAgIHsKCSAgZXJyb3IgPSBOU0Rl
Y2ltYWxNdWx0aXBseShyZXN1bHQsIHJlc3VsdCwgJm4xLCBtb2RlKTsKCSAgaWYgKE5TQ2Fs
Y3VsYXRpb25Ob0Vycm9yICE9IGVycm9yKQoJICAgIHsKCSAgICAgIGJyZWFrOwoJICAgIH0K
CX0KICAgICAgLy8ga2VlcCBvbiBzcXVhcmluZyB0aGUgbnVtYmVyCiAgICAgIGVycm9yID0g
TlNEZWNpbWFsTXVsdGlwbHkoJm4xLCAmbjEsICZuMSwgbW9kZSk7CiAgICAgIGlmIChOU0Nh
bGN1bGF0aW9uTm9FcnJvciAhPSBlcnJvcikKCXsKCSAgYnJlYWs7Cgl9CiAgICAgIGUgPj49
IDE7CiAgICB9CgogIHJlc3VsdC0+aXNOZWdhdGl2ZSA9IG5lZzsKICBOU0RlY2ltYWxDb21w
YWN0KHJlc3VsdCk7CgogIHJldHVybiBlcnJvcjsKfQoKR1NfREVDTEFSRSBOU0NhbGN1bGF0
aW9uRXJyb3IKTlNEZWNpbWFsTXVsdGlwbHlCeVBvd2VyT2YxMChOU0RlY2ltYWwgKnJlc3Vs
dCwgY29uc3QgTlNEZWNpbWFsICpuLCBzaG9ydCBwb3dlciwgTlNSb3VuZGluZ01vZGUgbW9k
ZSkKewogIGludCBwOwoKICBOU0RlY2ltYWxDb3B5KHJlc3VsdCwgbik7CiAgcCA9IHJlc3Vs
dC0+ZXhwb25lbnQgKyBwb3dlcjsKICBpZiAocCA+IDEyNykKICAgIHsKICAgICAgcmVzdWx0
LT52YWxpZE51bWJlciA9IE5POwogICAgICByZXR1cm4gTlNDYWxjdWxhdGlvbk92ZXJmbG93
OwogICAgfQogIGlmIChwIDwgLTEyOCkKICAgIHsKICAgICAgcmVzdWx0LT52YWxpZE51bWJl
ciA9IE5POwogICAgICByZXR1cm4gTlNDYWxjdWxhdGlvblVuZGVyZmxvdzsKICAgIH0KICBy
ZXN1bHQtPmV4cG9uZW50ICs9IHBvd2VyOwogIHJldHVybiBOU0NhbGN1bGF0aW9uTm9FcnJv
cjsKfQoKc3RhdGljIE5TU3RyaW5nKgpHU0RlY2ltYWxTdHJpbmcoY29uc3QgR1NEZWNpbWFs
ICpudW1iZXIsIE5TRGljdGlvbmFyeSAqbG9jYWxlKQp7CiAgaW50IGk7CiAgaW50IGQ7CiAg
TlNTdHJpbmcgKnM7CiAgTlNNdXRhYmxlU3RyaW5nICpzdHJpbmc7CiAgTlNTdHJpbmcgKnNl
cDsKICBpbnQgc2l6ZTsKCiAgaWYgKCFudW1iZXItPnZhbGlkTnVtYmVyKQogICAgcmV0dXJu
IEAiTmFOIjsKCiAgaWYgKChuaWwgPT0gbG9jYWxlKSB8fAogICAgICAoc2VwID0gW2xvY2Fs
ZSBvYmplY3RGb3JLZXk6IE5TRGVjaW1hbFNlcGFyYXRvcl0pID09IG5pbCkKICAgIHNlcCA9
IEAiLiI7CgogIHN0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aENhcGFjaXR5
OiA0NV07CgogIGlmICghbnVtYmVyLT5sZW5ndGgpCiAgICB7CiAgICAgIFtzdHJpbmcgYXBw
ZW5kU3RyaW5nOiBAIjAiXTsKICAgICAgW3N0cmluZyBhcHBlbmRTdHJpbmc6IHNlcF07CiAg
ICAgIFtzdHJpbmcgYXBwZW5kU3RyaW5nOiBAIjAiXTsKICAgICAgcmV0dXJuIHN0cmluZzsK
ICAgIH0KCiAgaWYgKG51bWJlci0+aXNOZWdhdGl2ZSkKICAgIFtzdHJpbmcgYXBwZW5kU3Ry
aW5nOiBAIi0iXTsKCiAgc2l6ZSA9IG51bWJlci0+bGVuZ3RoICsgbnVtYmVyLT5leHBvbmVu
dDsKICBpZiAoKG51bWJlci0+bGVuZ3RoIDw9IDYpICYmICgwIDwgc2l6ZSkgJiYgKHNpemUg
PCA3KSkKICAgIHsKICAgICAgLy8gRm9yIHNtYWxsIG51bWJlcnMgdXNlIHRoZSBub3JtYWwg
Zm9ybWF0CiAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXItPmxlbmd0aDsgaSsrKQogICAg
ICAgIHsKCSAgaWYgKHNpemUgPT0gaSkKCSAgICBbc3RyaW5nIGFwcGVuZFN0cmluZzogc2Vw
XTsKCSAgZCA9IG51bWJlci0+Y01hbnRpc3NhW2ldOwoJICBzID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6IEAiJWQiLCBkXTsKCSAgW3N0cmluZyBhcHBlbmRTdHJpbmc6IHNdOwoJ
fQogICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyLT5leHBvbmVudDsgaSsrKQogICAgICAg
IHsKCSAgW3N0cmluZyBhcHBlbmRTdHJpbmc6IEAiMCJdOwoJfQogICAgfQogIGVsc2UgaWYg
KChudW1iZXItPmxlbmd0aCA8PSA2KSAmJiAoMCA+PSBzaXplKSAmJiAoc2l6ZSA+IC0zKSkK
ICAgIHsKICAgICAgLy8gRm9yIHNtYWxsIG51bWJlcnMgdXNlIHRoZSBub3JtYWwgZm9ybWF0
CiAgICAgIFtzdHJpbmcgYXBwZW5kU3RyaW5nOiBAIjAiXTsKICAgICAgW3N0cmluZyBhcHBl
bmRTdHJpbmc6IHNlcF07CgogICAgICBmb3IgKGkgPSAwOyBpID4gc2l6ZTsgaS0tKQogICAg
ICAgIHsKCSAgW3N0cmluZyBhcHBlbmRTdHJpbmc6IEAiMCJdOwoJfQogICAgICBmb3IgKGkg
PSAwOyBpIDwgbnVtYmVyLT5sZW5ndGg7IGkrKykKICAgICAgICB7CgkgIGQgPSBudW1iZXIt
PmNNYW50aXNzYVtpXTsKCSAgcyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OiBAIiVk
IiwgZF07CgkgIFtzdHJpbmcgYXBwZW5kU3RyaW5nOiBzXTsKCX0KICAgIH0KICBlbHNlCiAg
ICB7CiAgICAgIC8vIFNjaWVudGlmaWMgZm9ybWF0CiAgICAgIGZvciAoaSA9IDA7IGkgPCBu
dW1iZXItPmxlbmd0aDsgaSsrKQogICAgICAgIHsKCSAgaWYgKDEgPT0gaSkKCSAgICBbc3Ry
aW5nIGFwcGVuZFN0cmluZzogc2VwXTsKCSAgZCA9IG51bWJlci0+Y01hbnRpc3NhW2ldOwoJ
ICBzID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6IEAiJWQiLCBkXTsKCSAgW3N0cmlu
ZyBhcHBlbmRTdHJpbmc6IHNdOwoJfQogICAgICBpZiAoc2l6ZSAhPSAxKQogICAgICAgIHsK
CSAgcyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OiBAIkUlZCIsIHNpemUtMV07Cgkg
IFtzdHJpbmcgYXBwZW5kU3RyaW5nOiBzXTsKCX0KICAgIH0KCiAgcmV0dXJuIHN0cmluZzsK
fQoKLy8gR05Vc3RlcCBleHRlbnNpb25zIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG9m
IE5TRGVjaW1hbE51bWJlciB0b3RhbHkKLy8gaW5kZXBlbmRlbnQgZm9yIE5TRGVjaW1hbHMg
aW50ZXJuYWwgcmVwcmVzZW50YXRpb24KCi8vIEdpdmUgYmFjayB0aGUgYmlnZ2VzdCBOU0Rl
Y2ltYWwKR1NfREVDTEFSRSB2b2lkCk5TRGVjaW1hbE1heChOU0RlY2ltYWwgKnJlc3VsdCkK
ewogIC8vIEZJWE1FOiB0aGlzIGlzIHRvbyBzbWFsbAogIE5TRGVjaW1hbEZyb21Db21wb25l
bnRzKHJlc3VsdCwgOSwgMTI3LCBOTyk7Cn0KCi8vIEdpdmUgYmFjayB0aGUgc21hbGxlc3Qg
TlNEZWNpbWFsCkdTX0RFQ0xBUkUgdm9pZApOU0RlY2ltYWxNaW4oTlNEZWNpbWFsICpyZXN1
bHQpCnsKICAvLyBUaGlzIGlzIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBub3QgdGhlIHNtYWxs
ZXN0IHBvc2l0aXZlIG51bWJlcgogIC8vIEZJWE1FOiB0aGlzIGlzIHRvbyBiaWcKICBOU0Rl
Y2ltYWxGcm9tQ29tcG9uZW50cyhyZXN1bHQsIDksIDEyNywgWUVTKTsKfQoKLy8gR2l2ZSBi
YWNrIHRoZSB2YWx1ZSBvZiBhIE5TRGVjaW1hbCBhcyBhIGRvdWJsZQpzdGF0aWMgZG91Ymxl
CkdTRGVjaW1hbERvdWJsZShHU0RlY2ltYWwgKm51bWJlcikKewogIGRvdWJsZSBkID0gMC4w
OwogIGludCBpOwoKICBpZiAoIW51bWJlci0+dmFsaWROdW1iZXIpCiAgICByZXR1cm4gTkFO
OwoKICAvLyBTdW0gdXAgdGhlIGRpZ2l0cwogIGZvciAoaSA9IDA7IGkgPCBudW1iZXItPmxl
bmd0aDsgaSsrKQogICAgewogICAgICBkICo9IDEwOwogICAgICBkICs9IG51bWJlci0+Y01h
bnRpc3NhW2ldOwogICAgfQoKICAvLyBtdWx0aXBseSB3aXRoIHRoZSBleHBvbmVudAogIC8v
IFRoZXJlIGlzIGFsc28gYSBHTlUgZXh0ZW5zaW9uIHBvdzEwISEKICBkICo9IHBvdygxMCwg
bnVtYmVyLT5leHBvbmVudCk7CgogIGlmIChudW1iZXItPmlzTmVnYXRpdmUpCiAgICBkID0g
LWQ7CgogIHJldHVybiBkOwp9CgoKLy8gQ3JlYXRlIGEgTlNEZWNpbWFsIHdpdGggYSBjTWFu
dGlzc2EsIGV4cG9uZW50IGFuZCBhIG5lZ2F0aXZlIGZsYWcKc3RhdGljIHZvaWQKR1NEZWNp
bWFsRnJvbUNvbXBvbmVudHMoR1NEZWNpbWFsICpyZXN1bHQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBtYW50aXNzYSwKCQkJc2hvcnQgZXhwb25lbnQsIEJPT0wgbmVnYXRpdmUpCnsKICB1bnNp
Z25lZCBjaGFyIGRpZ2l0OwogIGludCBpLCBqOwogIHJlc3VsdC0+aXNOZWdhdGl2ZSA9IG5l
Z2F0aXZlOwogIHJlc3VsdC0+ZXhwb25lbnQgPSBleHBvbmVudDsKICByZXN1bHQtPnZhbGlk
TnVtYmVyID0gWUVTOwoKICBpID0gMDsKICB3aGlsZSAobWFudGlzc2EpCiAgICB7CiAgICAg
IGRpZ2l0ID0gbWFudGlzc2EgJSAxMDsKICAgICAgLy8gU3RvcmUgdGhlIGRpZ2l0IHN0YXJ0
aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgYXJyYXkKICAgICAgcmVzdWx0LT5jTWFudGlzc2Fb
TlNEZWNpbWFsTWF4RGlnaXQtaS0xXSA9IGRpZ2l0OwogICAgICBtYW50aXNzYSA9IG1hbnRp
c3NhIC8gMTA7CiAgICAgIGkrKzsKICAgIH0KCiAgZm9yIChqID0gMDsgaiA8IGk7IGorKykK
ICAgIHsKICAgICAgLy8gTW92ZSB0aGUgZGlnaXRzIHRvIHRoZSBiZWdpbm5pbmcKICAgICAg
cmVzdWx0LT5jTWFudGlzc2Fbal0gPSByZXN1bHQtPmNNYW50aXNzYVtqICsgTlNEZWNpbWFs
TWF4RGlnaXQtaV07CiAgICB9CgogIHJlc3VsdC0+bGVuZ3RoID0gaTsKCiAgR1NEZWNpbWFs
Q29tcGFjdChyZXN1bHQpOwp9CgovLyBDcmVhdGUgYSBOU0RlY2ltYWwgZnJvbSBhIHN0cmlu
ZyB1c2luZyB0aGUgbG9jYWwKc3RhdGljIHZvaWQKR1NEZWNpbWFsRnJvbVN0cmluZyhHU0Rl
Y2ltYWwgKnJlc3VsdCwgTlNTdHJpbmcgKm51bWJlclZhbHVlLAoJCSAgICBOU0RpY3Rpb25h
cnkgKmxvY2FsZSkKewogIE5TUmFuZ2UgZm91bmQ7CiAgTlNTdHJpbmcgKnNlcCA9IFtsb2Nh
bGUgb2JqZWN0Rm9yS2V5OiBOU0RlY2ltYWxTZXBhcmF0b3JdOwogIGNvbnN0IGNoYXIgKnM7
CiAgaW50IGk7CgogIGlmIChuaWwgPT0gc2VwKQogICAgc2VwID0gQCIuIjsKCiAgcmVzdWx0
LT5pc05lZ2F0aXZlID0gTk87CiAgcmVzdWx0LT5leHBvbmVudCA9IDA7CiAgcmVzdWx0LT52
YWxpZE51bWJlciA9IFlFUzsKICByZXN1bHQtPmxlbmd0aCA9IDA7CgogIGZvdW5kID0gW251
bWJlclZhbHVlIHJhbmdlT2ZTdHJpbmc6IHNlcF07CiAgaWYgKGZvdW5kLmxlbmd0aCkKICAg
IHsKICAgICAgcyA9IFtbbnVtYmVyVmFsdWUgc3Vic3RyaW5nVG9JbmRleDogZm91bmQubG9j
YXRpb25dIGxvc3N5Q1N0cmluZ107CiAgICAgIGlmICgnLScgPT0gKnMpCiAgICAgICAgewoJ
ICByZXN1bHQtPmlzTmVnYXRpdmUgPSBZRVM7CgkgIHMrKzsKCX0KICAgICAgd2hpbGUgKCgq
cykgJiYgKCFpc2RpZ2l0KCpzKSkpIHMrKzsKICAgICAgaSA9IDA7CiAgICAgIHdoaWxlICgo
KnMpICYmIChpc2RpZ2l0KCpzKSkpCiAgICAgICAgewoJICByZXN1bHQtPmNNYW50aXNzYVtp
KytdID0gKnMgLSAnMCc7CgkgIHJlc3VsdC0+bGVuZ3RoKys7CgkgIHMrKzsKCX0KICAgICAg
cyA9IFtbbnVtYmVyVmFsdWUgc3Vic3RyaW5nRnJvbUluZGV4OiBOU01heFJhbmdlKGZvdW5k
KV0gbG9zc3lDU3RyaW5nXTsKICAgICAgd2hpbGUgKCgqcykgJiYgKGlzZGlnaXQoKnMpKSkK
ICAgICAgICB7CgkgIHJlc3VsdC0+Y01hbnRpc3NhW2krK10gPSAqcyAtICcwJzsKCSAgcmVz
dWx0LT5sZW5ndGgrKzsKCSAgcmVzdWx0LT5leHBvbmVudC0tOwoJICBzKys7Cgl9CQogICAg
fQogIGVsc2UKICAgIHsKICAgICAgcyA9IFtudW1iZXJWYWx1ZSBsb3NzeUNTdHJpbmddOwog
ICAgICBpZiAoJy0nID09ICpzKQogICAgICAgIHsKCSAgcmVzdWx0LT5pc05lZ2F0aXZlID0g
WUVTOwoJICBzKys7Cgl9CiAgICAgIHdoaWxlICgoKnMpICYmICghaXNkaWdpdCgqcykpKSBz
Kys7CiAgICAgIGkgPSAwOwogICAgICB3aGlsZSAoKCpzKSAmJiAoaXNkaWdpdCgqcykpKQog
ICAgICAgIHsKCSAgcmVzdWx0LT5jTWFudGlzc2FbaSsrXSA9ICpzIC0gJzAnOwoJICByZXN1
bHQtPmxlbmd0aCsrOwoJICBzKys7Cgl9CiAgICB9CgogIGlmICgoKnMgPT0gJ2UnKSB8fCAo
KnMgPT0gJ0UnKSkKICAgIHsKICAgICAgcysrOwogICAgICByZXN1bHQtPmV4cG9uZW50ICs9
IGF0b2kocyk7CiAgICB9CgogIGlmICghcmVzdWx0LT5sZW5ndGgpCiAgICByZXN1bHQtPnZh
bGlkTnVtYmVyID0gTk87CgogIEdTRGVjaW1hbENvbXBhY3QocmVzdWx0KTsKfQoKI2lmCVVT
RV9HTVAKCnN0YXRpYyB2b2lkIENoYXJ2ZWNUb0RlY2ltYWwoY29uc3QgR1NEZWNpbWFsICpt
LCBOU0RlY2ltYWwgKm4pCnsKICAvLyBDb252ZXJ0IGZyb20gYSBHU0RlY2ltYWwgdG8gYSBO
U0RlY2ltYWwKICBuLT5leHBvbmVudCA9IG0tPmV4cG9uZW50OwogIG4tPmlzTmVnYXRpdmUg
PSBtLT5pc05lZ2F0aXZlOwogIG4tPnZhbGlkTnVtYmVyID0gbS0+dmFsaWROdW1iZXI7Cgog
IGlmICgwID09IG0tPmxlbmd0aCkKICAgIG4tPnNpemUgPSAwOwogIGVsc2UKICAgIHsKICAg
ICAgbi0+c2l6ZSA9IG1wbl9zZXRfc3RyKG4tPmxNYW50aXNzYSwgbS0+Y01hbnRpc3NhLCBt
LT5sZW5ndGgsIDEwKTsKICAgIH0KfQoKc3RhdGljIHZvaWQgRGVjaW1hbFRvQ2hhcnZlYyhj
b25zdCBOU0RlY2ltYWwgKm4sIEdTRGVjaW1hbCAqbSkKewogIC8vIENvbnZlcnQgZnJvbSBh
IE5TRGVjaW1hbCB0byBhIEdTRGVjaW1hbAogIG0tPmV4cG9uZW50ID0gbi0+ZXhwb25lbnQ7
CiAgbS0+aXNOZWdhdGl2ZSA9IG4tPmlzTmVnYXRpdmU7CiAgbS0+dmFsaWROdW1iZXIgPSBu
LT52YWxpZE51bWJlcjsKCiAgaWYgKDAgPT0gbi0+c2l6ZSkKICAgIHsKICAgICAgbS0+bGVu
Z3RoID0gMDsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIE5TRGVjaW1hbCBuMTsKCiAgICAg
IE5TRGVjaW1hbENvcHkoJm4xLCBuKTsKICAgICAgbS0+bGVuZ3RoID0gbXBuX2dldF9zdHIo
bS0+Y01hbnRpc3NhLCAxMCwgbjEubE1hbnRpc3NhLCBuLT5zaXplKTsKICAgICAgLy8gRG8g
YSBjb21wYWN0IG9ubHkgaWYgdGhlIGZpcnN0IGRpZ2l0IGlzIHplcm8KICAgICAgaWYgKDAg
PT0gbS0+Y01hbnRpc3NhWzBdKQoJR1NEZWNpbWFsQ29tcGFjdChtKTsKICAgIH0KfQoKR1Nf
REVDTEFSRSB2b2lkCk5TRGVjaW1hbENvbXBhY3QoTlNEZWNpbWFsICpudW1iZXIpCnsKICBH
U0RlY2ltYWwgbTsKCiAgRGVjaW1hbFRvQ2hhcnZlYyhudW1iZXIsICZtKTsKICBHU0RlY2lt
YWxDb21wYWN0KCZtKTsKICAvLyBGSVhNRTogSGVyZSB3ZSBuZWVkIGEgY2hlY2sgaWYgdGhl
IHN0cmluZyBmaXRzIGludG8gYSBHU0RlY2ltYWwsCiAgLy8gaWYgbm90IHdlIG11c3Qgcm91
bmQgc29tZSBsaW1icyBvZmYuCiAgaWYgKE5TRGVjaW1hbE1heERpZ2l0IDwgbS5sZW5ndGgp
CiAgICBHU0RlY2ltYWxSb3VuZCgmbSwgTlNEZWNpbWFsTWF4RGlnaXQgLSBtLmV4cG9uZW50
LCBOU1JvdW5kUGxhaW4pOwogIENoYXJ2ZWNUb0RlY2ltYWwoJm0sIG51bWJlcik7Cn0KCkdT
X0RFQ0xBUkUgTlNDb21wYXJpc29uUmVzdWx0Ck5TRGVjaW1hbENvbXBhcmUoY29uc3QgTlNE
ZWNpbWFsICpsZWZ0T3BlcmFuZCwgY29uc3QgTlNEZWNpbWFsICpyaWdodE9wZXJhbmQpCnsK
ICBHU0RlY2ltYWwgbTE7CiAgR1NEZWNpbWFsIG0yOwoKICBEZWNpbWFsVG9DaGFydmVjKGxl
ZnRPcGVyYW5kLCAmbTEpOwogIERlY2ltYWxUb0NoYXJ2ZWMocmlnaHRPcGVyYW5kLCAmbTIp
OwogIHJldHVybiBHU0RlY2ltYWxDb21wYXJlKCZtMSwgJm0yKTsKfQoKc3RhdGljIE5TQ29t
cGFyaXNvblJlc3VsdApOU1NpbXBsZUNvbXBhcmUoY29uc3QgTlNEZWNpbWFsICpsZWZ0T3Bl
cmFuZCwgY29uc3QgTlNEZWNpbWFsICpyaWdodE9wZXJhbmQpCnsKICAvLyBUaGlzIG9ubHkg
Y2hlY2tzIHRoZSBzaXplIG9mIHRoZSBvcGVyYW5kcy4KICBpZiAobGVmdE9wZXJhbmQtPnNp
emUgPT0gcmlnaHRPcGVyYW5kLT5zaXplKQogICAgcmV0dXJuIE5TT3JkZXJlZFNhbWU7CiAg
ZWxzZSBpZiAobGVmdE9wZXJhbmQtPnNpemUgPiByaWdodE9wZXJhbmQtPnNpemUpCiAgICBy
ZXR1cm4gTlNPcmRlcmVkRGVzY2VuZGluZzsKICBlbHNlCiAgICByZXR1cm4gTlNPcmRlcmVk
QXNjZW5kaW5nOwp9Cgp2b2lkCk5TRGVjaW1hbFJvdW5kKE5TRGVjaW1hbCAqcmVzdWx0LCBj
b25zdCBOU0RlY2ltYWwgKm51bWJlciwgTlNJbnRlZ2VyIHNjYWxlLAoJICAgICAgIE5TUm91
bmRpbmdNb2RlIG1vZGUpCnsKICBHU0RlY2ltYWwgbTsKCiAgRGVjaW1hbFRvQ2hhcnZlYyhu
dW1iZXIsICZtKTsKICBHU0RlY2ltYWxSb3VuZCgmbSwgc2NhbGUsIG1vZGUpOwogIENoYXJ2
ZWNUb0RlY2ltYWwoJm0sIHJlc3VsdCk7Cn0KCkdTX0RFQ0xBUkUgTlNDYWxjdWxhdGlvbkVy
cm9yCk5TRGVjaW1hbE5vcm1hbGl6ZShOU0RlY2ltYWwgKm4xLCBOU0RlY2ltYWwgKm4yLCBO
U1JvdW5kaW5nTW9kZSBtb2RlKQp7CiAgTlNDYWxjdWxhdGlvbkVycm9yIGVycm9yOwogIEdT
RGVjaW1hbCBtMTsKICBHU0RlY2ltYWwgbTI7CgogIGlmICghbjEtPnZhbGlkTnVtYmVyIHx8
ICFuMi0+dmFsaWROdW1iZXIpCiAgICByZXR1cm4gTlNDYWxjdWxhdGlvbk5vRXJyb3I7Cgog
IC8vIERvIHRoZXkgaGF2ZSB0aGUgc2FtZSBleHBvbmVudCBhbHJlYWR5PwogIGlmIChuMS0+
ZXhwb25lbnQgPT0gbjItPmV4cG9uZW50KQogICAgcmV0dXJuIE5TQ2FsY3VsYXRpb25Ob0Vy
cm9yOwoKICBEZWNpbWFsVG9DaGFydmVjKG4xLCAmbTEpOwogIERlY2ltYWxUb0NoYXJ2ZWMo
bjIsICZtMik7Ci8qCiAgTlNMb2coQCJOb3JtYWxpemUgbjEgJUAgbjIgJUAiLCBOU0RlY2lt
YWxTdHJpbmcobjEsIG5pbCksCglOU0RlY2ltYWxTdHJpbmcobjIsIG5pbCkpOwogIE5TTG9n
KEAiTm9ybWFsaXplIG0xICVAIG0yICVAIiwgR1NEZWNpbWFsU3RyaW5nKCZtMSwgbmlsKSwK
CUdTRGVjaW1hbFN0cmluZygmbTIsIG5pbCkpOwoqLwogIGVycm9yID0gR1NEZWNpbWFsTm9y
bWFsaXplKCZtMSwgJm0yLCBtb2RlKTsKICBDaGFydmVjVG9EZWNpbWFsKCZtMSwgbjEpOwog
IENoYXJ2ZWNUb0RlY2ltYWwoJm0yLCBuMik7Ci8qCiAgTlNMb2coQCJOb3JtYWxpemVkIG0x
ICVAIG0yICVAIiwgR1NEZWNpbWFsU3RyaW5nKCZtMSwgbmlsKSwKCUdTRGVjaW1hbFN0cmlu
ZygmbTIsIG5pbCkpOwogIE5TTG9nKEAiTm9ybWFsaXplZCBuMSAlQCBuMiAlQCIsIE5TRGVj
aW1hbFN0cmluZyhuMSwgbmlsKSwKCU5TRGVjaW1hbFN0cmluZyhuMiwgbmlsKSk7CiovCn0K
CnN0YXRpYyBOU0NhbGN1bGF0aW9uRXJyb3IKR1NTaW1wbGVBZGQoTlNEZWNpbWFsICpyZXN1
bHQsIGNvbnN0IE5TRGVjaW1hbCAqbGVmdCwgY29uc3QgTlNEZWNpbWFsICpyaWdodCwKCSAg
ICAgTlNSb3VuZGluZ01vZGUgbW9kZSkKewogIE5TQ2FsY3VsYXRpb25FcnJvciBlcnJvciA9
IE5TQ2FsY3VsYXRpb25Ob0Vycm9yOwogIG1wX2xpbWJfdCBjYXJyeTsKCiAgTlNEZWNpbWFs
Q29weShyZXN1bHQsIGxlZnQpOwogIGlmICgwID09IHJpZ2h0LT5zaXplKQogICAgcmV0dXJu
IGVycm9yOwoKICBjYXJyeSA9IG1wbl9hZGQocmVzdWx0LT5sTWFudGlzc2EsIGxlZnQtPmxN
YW50aXNzYSwgbGVmdC0+c2l6ZSwKCQkgIHJpZ2h0LT5sTWFudGlzc2EsIHJpZ2h0LT5zaXpl
KTsKICByZXN1bHQtPnNpemUgPSBsZWZ0LT5zaXplOwoKICAvLyBjaGVjayBjYXJyeQogIGlm
IChjYXJyeSkKICAgewogICAgIHJlc3VsdC0+bE1hbnRpc3NhW3Jlc3VsdC0+c2l6ZV0gPSBj
YXJyeTsKICAgICByZXN1bHQtPnNpemUrKzsKICAgfQoKICByZXR1cm4gZXJyb3I7Cn0KCnN0
YXRpYyBOU0NhbGN1bGF0aW9uRXJyb3IKR1NTaW1wbGVTdWJ0cmFjdChOU0RlY2ltYWwgKnJl
c3VsdCwgY29uc3QgTlNEZWNpbWFsICpsZWZ0LAoJCSBjb25zdCBOU0RlY2ltYWwgKnJpZ2h0
LCBOU1JvdW5kaW5nTW9kZSBtb2RlKQp7CiAgTlNDYWxjdWxhdGlvbkVycm9yIGVycm9yID0g
TlNDYWxjdWxhdGlvbk5vRXJyb3I7CiAgbXBfbGltYl90IGJvcnJvdzsKLyoKICBOU0xvZyhA
IlNpbXBsZVN1YiBsZWZ0ICVAIHJpZ2h0ICVAIHNpemUgJWQiLCBOU0RlY2ltYWxTdHJpbmco
bGVmdCwgbmlsKSwKCU5TRGVjaW1hbFN0cmluZyhyaWdodCwgbmlsKSwgcmlnaHQtPnNpemUp
OwoqLwogIE5TRGVjaW1hbENvcHkocmVzdWx0LCBsZWZ0KTsKICBpZiAoMCA9PSByaWdodC0+
c2l6ZSkKICAgIHJldHVybiBlcnJvcjsKCiAgYm9ycm93ID0gbXBuX3N1YihyZXN1bHQtPmxN
YW50aXNzYSwgbGVmdC0+bE1hbnRpc3NhLCBsZWZ0LT5zaXplLAoJCSAgcmlnaHQtPmxNYW50
aXNzYSwgcmlnaHQtPnNpemUpOwogIHJlc3VsdC0+c2l6ZSA9IGxlZnQtPnNpemU7CgogIC8v
IGNoZWNrIGJvcnJvdwogIGlmIChib3Jyb3cpCiAgICBOU0xvZyhAIkltcG9zc2libGUgZXJy
b3IgaW4gc3VidHJhY3Rpb24iKTsKCiAgcmV0dXJuIGVycm9yOwp9CgpzdGF0aWMgTlNDYWxj
dWxhdGlvbkVycm9yCkdTU2ltcGxlTXVsdGlwbHkoTlNEZWNpbWFsICpyZXN1bHQsIE5TRGVj
aW1hbCAqbGVmdCwgTlNEZWNpbWFsICpyaWdodCwgTlNSb3VuZGluZ01vZGUgbW9kZSkKewog
IE5TQ2FsY3VsYXRpb25FcnJvciBlcnJvciA9IE5TQ2FsY3VsYXRpb25Ob0Vycm9yOwogIG1w
X2xpbWJfdCBsaW1iOwovKgogIE5TTG9nKEAiU2ltcGxlTXVsIGxlZnQgJUAgcmlnaHQgJUAg
c2l6ZSAlZCIsIE5TRGVjaW1hbFN0cmluZyhsZWZ0LCBuaWwpLAoJTlNEZWNpbWFsU3RyaW5n
KHJpZ2h0LCBuaWwpLCByaWdodC0+c2l6ZSk7CiovCiAgTlNEZWNpbWFsQ29weShyZXN1bHQs
ICZ6ZXJvKTsKICAvLyBGSVhNRTogTWFrZSBzdXJlIHJlc3VsdCBpcyBiaWcgZW5vdWd0aAog
IGxpbWIgPSBtcG5fbXVsKHJlc3VsdC0+bE1hbnRpc3NhLCBsZWZ0LT5sTWFudGlzc2EsIGxl
ZnQtPnNpemUsCgkJCSByaWdodC0+bE1hbnRpc3NhLCByaWdodC0+c2l6ZSk7CgogIGlmIChs
aW1iKQogICAgewogICAgICByZXN1bHQtPnNpemUgPSBsZWZ0LT5zaXplICsgcmlnaHQtPnNp
emU7CiAgICB9CiAgZWxzZQogICAgewogICAgICAvL05TTG9nKEAiTGltYiBub3Qgc2V0Iik7
CiAgICAgIHJlc3VsdC0+c2l6ZSA9IGxlZnQtPnNpemUgKyByaWdodC0+c2l6ZSAtIDE7CiAg
ICB9Ci8vICBOU0xvZyhAIlNpbXBsZU11bCByZXN1bHQgJUAiLCBOU0RlY2ltYWxTdHJpbmco
cmVzdWx0LCBuaWwpKTsKCiAgcmV0dXJuIGVycm9yOwp9CgpzdGF0aWMgTlNDYWxjdWxhdGlv
bkVycm9yCkdTU2ltcGxlRGl2aWRlKE5TRGVjaW1hbCAqcmVzdWx0LCBjb25zdCBOU0RlY2lt
YWwgKmxlZnQsIGNvbnN0IE5TRGVjaW1hbCAqcmlnaHQsCgkgICAgICAgTlNSb3VuZGluZ01v
ZGUgbW9kZSkKewogIE5TQ2FsY3VsYXRpb25FcnJvciBlcnJvciA9IE5TQ2FsY3VsYXRpb25O
b0Vycm9yOwogIG1wX2xpbWJfdCBsaW1iOwogIG1wX3NpemVfdCB4ID0gMzggKyByaWdodC0+
c2l6ZSAtIGxlZnQtPnNpemU7CiAgTlNEZWNpbWFsIG47CgogIE5TRGVjaW1hbENvcHkoJm4s
IGxlZnQpOwoKICAvLyBGSVhNRTogSSBkb24ndCB1bmRlcnN0YW5kIGhvdyB0byBkbyB0aGlz
CiAgbGltYiA9IG1wbl9kaXZyZW0gKHJlc3VsdC0+bE1hbnRpc3NhLCB4LCBuLmxNYW50aXNz
YSwgbGVmdC0+c2l6ZSwKCQkgICAgIHJpZ2h0LT5sTWFudGlzc2EsIHJpZ2h0LT5zaXplKTsK
CiAgcmV0dXJuIGVycm9yOwp9CgpHU19ERUNMQVJFIE5TU3RyaW5nKgpOU0RlY2ltYWxTdHJp
bmcoY29uc3QgTlNEZWNpbWFsICpkZWNpbWFsLCBOU0RpY3Rpb25hcnkgKmxvY2FsZSkKewog
IEdTRGVjaW1hbCBuOwoKICBEZWNpbWFsVG9DaGFydmVjKGRlY2ltYWwsICZuKTsKICByZXR1
cm4gR1NEZWNpbWFsU3RyaW5nKCZuLCBsb2NhbGUpOwp9CgpHU19ERUNMQVJFIGRvdWJsZQpO
U0RlY2ltYWxEb3VibGUoTlNEZWNpbWFsICpudW1iZXIpCnsKICBHU0RlY2ltYWwgbjsKCiAg
RGVjaW1hbFRvQ2hhcnZlYyhudW1iZXIsICZuKTsKICByZXR1cm4gR1NEZWNpbWFsRG91Ymxl
KCZuKTsKfQoKR1NfREVDTEFSRSB2b2lkCk5TRGVjaW1hbEZyb21Db21wb25lbnRzKE5TRGVj
aW1hbCAqcmVzdWx0LCB1bnNpZ25lZCBsb25nIGxvbmcgbWFudGlzc2EsCgkJCXNob3J0IGV4
cG9uZW50LCBCT09MIG5lZ2F0aXZlKQp7CiAgR1NEZWNpbWFsIG47CiAgLy9HU0RlY2ltYWwg
bjE7CgogIEdTRGVjaW1hbEZyb21Db21wb25lbnRzKCZuLCBtYW50aXNzYSwgZXhwb25lbnQs
IG5lZ2F0aXZlKTsKICBDaGFydmVjVG9EZWNpbWFsKCZuLCByZXN1bHQpOwogIC8vTlNMb2co
QCJHU0RlY2ltYWwgMTogJUAiLCBHU0RlY2ltYWxTdHJpbmcoJm4sIG5pbCkpOwogIC8vTlNM
b2coQCJOU0RlY2ltYWwgMTogJUAiLCBOU0RlY2ltYWxTdHJpbmcocmVzdWx0LCBuaWwpKTsK
ICAvL0RlY2ltYWxUb0NoYXJ2ZWMocmVzdWx0LCAmbjEpOwogIC8vTlNMb2coQCJHU0RlY2lt
YWwgMjogJUAiLCBHU0RlY2ltYWxTdHJpbmcoJm4xLCBuaWwpKTsKICAvL05TTG9nKEAiTlNE
ZWNpbWFsIDI6ICVAIiwgTlNEZWNpbWFsU3RyaW5nKHJlc3VsdCwgbmlsKSk7Cn0KCkdTX0RF
Q0xBUkUgdm9pZApOU0RlY2ltYWxGcm9tU3RyaW5nKE5TRGVjaW1hbCAqcmVzdWx0LCBOU1N0
cmluZyAqbnVtYmVyVmFsdWUsCgkJICAgIE5TRGljdGlvbmFyeSAqbG9jYWxlKQp7CiAgR1NE
ZWNpbWFsIG47CgogIEdTRGVjaW1hbEZyb21TdHJpbmcoJm4sIG51bWJlclZhbHVlLCBsb2Nh
bGUpOwogIENoYXJ2ZWNUb0RlY2ltYWwoJm4sIHJlc3VsdCk7Cn0KCiNlbHNlCgovLyBGaXJz
dCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGluIE5TRGVjaW1h
bC5oCgpHU19ERUNMQVJFIHZvaWQKTlNEZWNpbWFsQ29tcGFjdChOU0RlY2ltYWwgKm51bWJl
cikKewogIEdTRGVjaW1hbENvbXBhY3QobnVtYmVyKTsKfQoKR1NfREVDTEFSRSBOU0NvbXBh
cmlzb25SZXN1bHQKTlNEZWNpbWFsQ29tcGFyZShjb25zdCBOU0RlY2ltYWwgKmxlZnRPcGVy
YW5kLCBjb25zdCBOU0RlY2ltYWwgKnJpZ2h0T3BlcmFuZCkKewogIHJldHVybiBHU0RlY2lt
YWxDb21wYXJlKGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpOwp9CgpHU19ERUNMQVJFIHZv
aWQKTlNEZWNpbWFsUm91bmQoTlNEZWNpbWFsICpyZXN1bHQsIGNvbnN0IE5TRGVjaW1hbCAq
bnVtYmVyLCBOU0ludGVnZXIgc2NhbGUsCgkgICAgICAgTlNSb3VuZGluZ01vZGUgbW9kZSkK
ewogIE5TRGVjaW1hbENvcHkocmVzdWx0LCBudW1iZXIpOwoKICBHU0RlY2ltYWxSb3VuZChy
ZXN1bHQsIHNjYWxlLCBtb2RlKTsKfQoKR1NfREVDTEFSRSBOU0NhbGN1bGF0aW9uRXJyb3IK
TlNEZWNpbWFsTm9ybWFsaXplKE5TRGVjaW1hbCAqbjEsIE5TRGVjaW1hbCAqbjIsIE5TUm91
bmRpbmdNb2RlIG1vZGUpCnsKICBpZiAoIW4xLT52YWxpZE51bWJlciB8fCAhbjItPnZhbGlk
TnVtYmVyKQogICAgcmV0dXJuIE5TQ2FsY3VsYXRpb25Ob0Vycm9yOwoKICAvLyBEbyB0aGV5
IGhhdmUgdGhlIHNhbWUgZXhwb25lbnQgYWxyZWFkeT8KICBpZiAobjEtPmV4cG9uZW50ID09
IG4yLT5leHBvbmVudCkKICAgIHJldHVybiBOU0NhbGN1bGF0aW9uTm9FcnJvcjsKCiAgcmV0
dXJuIEdTRGVjaW1hbE5vcm1hbGl6ZShuMSwgbjIsIG1vZGUpOwp9CgpzdGF0aWMgTlNDb21w
YXJpc29uUmVzdWx0Ck5TU2ltcGxlQ29tcGFyZShjb25zdCBOU0RlY2ltYWwgKmxlZnRPcGVy
YW5kLCBjb25zdCBOU0RlY2ltYWwgKnJpZ2h0T3BlcmFuZCkKewogIC8vIFRoaXMgb25seSBj
aGVja3MgdGhlIGxlbmd0aCBvZiB0aGUgb3BlcmFuZHMuCiAgaWYgKGxlZnRPcGVyYW5kLT5s
ZW5ndGggPT0gcmlnaHRPcGVyYW5kLT5sZW5ndGgpCiAgICByZXR1cm4gTlNPcmRlcmVkU2Ft
ZTsKICBlbHNlIGlmIChsZWZ0T3BlcmFuZC0+bGVuZ3RoID4gcmlnaHRPcGVyYW5kLT5sZW5n
dGgpCiAgICByZXR1cm4gTlNPcmRlcmVkRGVzY2VuZGluZzsKICBlbHNlCiAgICByZXR1cm4g
TlNPcmRlcmVkQXNjZW5kaW5nOwp9CgpzdGF0aWMgTlNDYWxjdWxhdGlvbkVycm9yCkdTU2lt
cGxlQWRkKE5TRGVjaW1hbCAqcmVzdWx0LCBjb25zdCBOU0RlY2ltYWwgKmxlZnQsIGNvbnN0
IE5TRGVjaW1hbCAqcmlnaHQsCgkgICAgTlNSb3VuZGluZ01vZGUgbW9kZSkKewogIC8vIGxl
ZnQgYW5kIHJpZ2h0IGFyZSBib3RoIHZhbGlkIGFuZCBwb3NpdGl2ZSwgbm9uLXplcm8uIFRo
ZSBoYXZlIGJlZW4gbm9ybWFsaXplZCBhbmQKICAvLyBsZWZ0IGlzIGJpZ2dlciB0aGFuIHJp
Z2h0LiByZXN1bHQsIGxlZnQgYW5kIHJpZ2h0IGFsbCBwb2ludCB0byBkaWZmZXJlbnQgZW50
aXRpZXMuCiAgLy8gUmVzdWx0IHdpbGwgbm90IGJlIGNvbXBhY3RlZC4KICBOU0NhbGN1bGF0
aW9uRXJyb3IgZXJyb3IgPSBOU0NhbGN1bGF0aW9uTm9FcnJvcjsKICBpbnQgaSwgaiwgbCwg
ZDsKICBpbnQgY2FycnkgPSAwOwoKICBOU0RlY2ltYWxDb3B5KHJlc3VsdCwgbGVmdCk7CiAg
aiA9IGxlZnQtPmxlbmd0aCAtIHJpZ2h0LT5sZW5ndGg7CiAgbCA9IHJpZ2h0LT5sZW5ndGg7
CgogIC8vIEFkZCBhbGwgdGhlIGRpZ2l0cwogIGZvciAoaSA9IGwtMTsgaSA+PSAwOyBpLS0p
CiAgICB7CiAgICAgIGQgPSByaWdodC0+Y01hbnRpc3NhW2ldICsgcmVzdWx0LT5jTWFudGlz
c2FbaSArIGpdICsgY2Fycnk7CiAgICAgIGlmIChkID49IDEwKQogICAgICAgIHsKCSAgZCA9
IGQgJSAxMDsKCSAgY2FycnkgPSAxOwoJfQogICAgICBlbHNlCgljYXJyeSA9IDA7CgogICAg
ICByZXN1bHQtPmNNYW50aXNzYVtpICsgal0gPSBkOwogICAgfQoKICBpZiAoY2FycnkpCiAg
ICB7CiAgICAgIGZvciAoaSA9IGotMTsgaSA+PSAwOyBpLS0pCgl7CgkgIGlmIChyZXN1bHQt
PmNNYW50aXNzYVtpXSAhPSA5KQoJICAgIHsKCSAgICAgIHJlc3VsdC0+Y01hbnRpc3NhW2ld
Kys7CgkgICAgICBjYXJyeSA9IDA7CgkgICAgICBicmVhazsKCSAgICB9CgkgIHJlc3VsdC0+
Y01hbnRpc3NhW2ldID0gMDsKCX0KCiAgICAgIGlmIChjYXJyeSkKCXsKCSAgLy8gVGhlIG51
bWJlciBtdXN0IGJlIHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0CgkgIGlmIChOU0RlY2ltYWxNYXhE
aWdpdCA9PSByZXN1bHQtPmxlbmd0aCkKCSAgICB7CgkgICAgICBOU0RlY2ltYWxSb3VuZChy
ZXN1bHQsIHJlc3VsdCwKCQkJICAgICBOU0RlY2ltYWxNYXhEaWdpdCAtIDEgLSByZXN1bHQt
PmV4cG9uZW50LAoJCQkgICAgIG1vZGUpOwoJICAgIH0KCgkgIGlmICgxMjcgPT0gcmVzdWx0
LT5leHBvbmVudCkKCSAgICB7CgkgICAgICByZXN1bHQtPnZhbGlkTnVtYmVyID0gTk87Cgkg
ICAgICBlcnJvciA9IE5TQ2FsY3VsYXRpb25PdmVyZmxvdzsKCSAgICB9CgoJICBmb3IgKGkg
PSByZXN1bHQtPmxlbmd0aC0xOyBpID49IDA7IGktLSkKCSAgICB7CgkgICAgICByZXN1bHQt
PmNNYW50aXNzYVtpKzFdID0gcmVzdWx0LT5jTWFudGlzc2FbaV07CgkgICAgfQoJICByZXN1
bHQtPmNNYW50aXNzYVswXSA9IDE7CgkgIHJlc3VsdC0+bGVuZ3RoKys7Cgl9CiAgICB9Cgog
IHJldHVybiBlcnJvcjsKfQoKc3RhdGljIE5TQ2FsY3VsYXRpb25FcnJvcgpHU1NpbXBsZVN1
YnRyYWN0KE5TRGVjaW1hbCAqcmVzdWx0LCBjb25zdCBOU0RlY2ltYWwgKmxlZnQsCgkJIGNv
bnN0IE5TRGVjaW1hbCAqcmlnaHQsIE5TUm91bmRpbmdNb2RlIG1vZGUpCnsKICAvLyBsZWZ0
IGFuZCByaWdodCBhcmUgYm90aCB2YWxpZCBhbmQgcG9zaXRpdmUsIG5vbi16ZXJvLiBUaGUg
aGF2ZSBiZWVuIG5vcm1hbGl6ZWQgYW5kCiAgLy8gbGVmdCBpcyBiaWdnZXIgdGhhbiByaWdo
dC4gcmVzdWx0LCBsZWZ0IGFuZCByaWdodCBhbGwgcG9pbnQgdG8gZGlmZmVyZW50IGVudGl0
aWVzLgogIC8vIFJlc3VsdCB3aWxsIG5vdCBiZSBjb21wYWN0ZWQuCiAgTlNDYWxjdWxhdGlv
bkVycm9yIGVycm9yID0gTlNDYWxjdWxhdGlvbk5vRXJyb3I7CiAgaW50IGksIGosIGwsIGQ7
CiAgaW50IGJvcnJvdyA9IDA7CgogIGogPSBsZWZ0LT5sZW5ndGggLSByaWdodC0+bGVuZ3Ro
OwogIE5TRGVjaW1hbENvcHkocmVzdWx0LCBsZWZ0KTsKICBsID0gcmlnaHQtPmxlbmd0aDsK
CiAgLy8gTm93IHN1YnRyYWN0IGFsbCBkaWdpdHMKICBmb3IgKGkgPSBsLTE7IGkgPj0gMDsg
aS0tKQogICAgewogICAgICBkID0gcmVzdWx0LT5jTWFudGlzc2FbaSArIGpdIC0gcmlnaHQt
PmNNYW50aXNzYVtpXSAtIGJvcnJvdzsKICAgICAgaWYgKGQgPCAwKQogICAgICAgIHsKCSAg
ZCA9IGQgKyAxMDsKCSAgYm9ycm93ID0gMTsKCX0KICAgICAgZWxzZQoJYm9ycm93ID0gMDsK
CiAgICAgIHJlc3VsdC0+Y01hbnRpc3NhW2kgKyBqXSA9IGQ7CiAgICB9CgogIGlmIChib3Jy
b3cpCiAgICB7CiAgICAgIGZvciAoaSA9IGotMTsgaSA+PSAwOyBpLS0pCgl7CgkgIGlmIChy
ZXN1bHQtPmNNYW50aXNzYVtpXSAhPSAwKQoJICAgIHsKCSAgICAgIHJlc3VsdC0+Y01hbnRp
c3NhW2ldLS07CgkgICAgICBicmVhazsKCSAgICB9CgkgIHJlc3VsdC0+Y01hbnRpc3NhW2ld
ID0gOTsKCX0KCiAgICAgIGlmICgtMSA9PSBpKQoJewoJICBOU0xvZyhAIkltcG9zc2libGUg
ZXJyb3IgaW4gc3VidHJhY3Rpb24gbGVmdDogJUAsIHJpZ2h0OiAlQCIsCgkJTlNEZWNpbWFs
U3RyaW5nKGxlZnQsIG5pbCksIE5TRGVjaW1hbFN0cmluZyhyaWdodCwgbmlsKSk7Cgl9CiAg
ICB9CgogIHJldHVybiBlcnJvcjsKfQoKc3RhdGljIE5TQ2FsY3VsYXRpb25FcnJvcgpHU1Np
bXBsZU11bHRpcGx5KE5TRGVjaW1hbCAqcmVzdWx0LCBOU0RlY2ltYWwgKmwsIE5TRGVjaW1h
bCAqciwgTlNSb3VuZGluZ01vZGUgbW9kZSkKewogIE5TQ2FsY3VsYXRpb25FcnJvciBlcnJv
ciA9IE5TQ2FsY3VsYXRpb25Ob0Vycm9yOwogIE5TQ2FsY3VsYXRpb25FcnJvciBlcnJvcjE7
CiAgaW50IGksIGosIGQsIGU7CiAgaW50IGNhcnJ5ID0gMDsKICBOU0RlY2ltYWwgbjsKICBp
bnQgZXhwID0gMDsKCiAgTlNEZWNpbWFsQ29weShyZXN1bHQsICZ6ZXJvKTsKICBuLnZhbGlk
TnVtYmVyID0gWUVTOwogIG4uaXNOZWdhdGl2ZSA9IE5POwoKICAvLyBpZiBsLT5sZW5ndGgg
PSAzOCByb3VuZCBvbmUgb2ZmCiAgaWYgKE5TRGVjaW1hbE1heERpZ2l0ID09IGwtPmxlbmd0
aCkKICAgIHsKICAgICAgZXhwID0gLWwtPmV4cG9uZW50OwogICAgICBOU0RlY2ltYWxSb3Vu
ZChsLCBsLCAtMS1sLT5leHBvbmVudCwgbW9kZSk7CiAgICAgIC8vIFRoaXMgbWlnaHQgY2hh
bmdlZCBtb3JlIHRoYW4gb25lCiAgICAgIGV4cCArPSBsLT5leHBvbmVudDsKICAgIH0KCiAg
Ly8gRG8gZXZlcnkgZGlnaXQgb2YgdGhlIHNlY29uZCBudW1iZXIKICBmb3IgKGkgPSAwOyBp
IDwgci0+bGVuZ3RoOyBpKyspCiAgICB7CiAgICAgIG4ubGVuZ3RoID0gbC0+bGVuZ3RoKzE7
CiAgICAgIG4uZXhwb25lbnQgPSByLT5sZW5ndGggLSBpIC0gMTsKICAgICAgY2FycnkgPSAw
OwogICAgICBkID0gci0+Y01hbnRpc3NhW2ldOwoKICAgICAgaWYgKDAgPT0gZCkKCWNvbnRp
bnVlOwoKICAgICAgZm9yIChqID0gbC0+bGVuZ3RoLTE7IGogPj0gMDsgai0tKQogICAgICAg
IHsKCSAgZSA9IGwtPmNNYW50aXNzYVtqXSAqIGQgKyBjYXJyeTsKCgkgIGlmIChlID49IDEw
KQoJICAgIHsKCSAgICAgIGNhcnJ5ID0gZSAvIDEwOwoJICAgICAgZSA9IGUgJSAxMDsKCSAg
ICB9CgkgIGVsc2UKCSAgICBjYXJyeSA9IDA7CgkgIC8vIFRoaXMgaXMgb25lIG9mZiB0byBh
bGxvdyBmaW5hbCBjYXJyeQoJICBuLmNNYW50aXNzYVtqKzFdID0gZTsKCX0KICAgICAgbi5j
TWFudGlzc2FbMF0gPSBjYXJyeTsKICAgICAgTlNEZWNpbWFsQ29tcGFjdCgmbik7CiAgICAg
IGVycm9yMSA9IE5TRGVjaW1hbEFkZChyZXN1bHQsIHJlc3VsdCwgJm4sIG1vZGUpOwogICAg
ICBpZiAoTlNDYWxjdWxhdGlvbk5vRXJyb3IgIT0gZXJyb3IxKQoJZXJyb3IgPSBlcnJvcjE7
CiAgICB9CgogIGlmIChyZXN1bHQtPmV4cG9uZW50ICsgZXhwID4gMTI3KQogICAgewogICAg
ICAvLyBUaGlzIHNob3VsZCBhbG1vc3QgbmV2ZXIgaGFwcGVuCiAgICAgIHJlc3VsdC0+dmFs
aWROdW1iZXIgPSBOTzsKICAgICAgcmV0dXJuIE5TQ2FsY3VsYXRpb25PdmVyZmxvdzsKICAg
IH0KICByZXN1bHQtPmV4cG9uZW50ICs9IGV4cDsKICByZXR1cm4gZXJyb3I7Cn0KCnN0YXRp
YyBOU0NhbGN1bGF0aW9uRXJyb3IKR1NTaW1wbGVEaXZpZGUoTlNEZWNpbWFsICpyZXN1bHQs
IGNvbnN0IE5TRGVjaW1hbCAqbCwgY29uc3QgTlNEZWNpbWFsICpyLAoJICAgICAgIE5TUm91
bmRpbmdNb2RlIG1vZGUpCnsKICBOU0NhbGN1bGF0aW9uRXJyb3IgZXJyb3IgPSBOU0NhbGN1
bGF0aW9uTm9FcnJvcjsKICBOU0NhbGN1bGF0aW9uRXJyb3IgZXJyb3IxOwogIGludCBrOwog
IGludCB1c2VkOyAvLyBIb3cgbWFueSBkaWdpdHMgb2YgbCBoYXZlIGJlZW4gdXNlZD8KICBO
U0RlY2ltYWwgbjE7CgogIE5TRGVjaW1hbENvcHkoJm4xLCAmemVybyk7CiAgTlNEZWNpbWFs
Q29weShyZXN1bHQsICZ6ZXJvKTsKICBrID0gMDsKICB1c2VkID0gMDsKCiAgd2hpbGUgKChr
IDwgbC0+bGVuZ3RoKSB8fCAobjEubGVuZ3RoKSkKICAgIHsKICAgICAgd2hpbGUgKE5TT3Jk
ZXJlZEFzY2VuZGluZyA9PSBOU0RlY2ltYWxDb21wYXJlKCZuMSwgcikpCiAgICAgICAgewoJ
ICBpZiAoTlNEZWNpbWFsTWF4RGlnaXQtMSA9PSBrKQoJICAgIGJyZWFrOwoJICBpZiAobjEu
ZXhwb25lbnQpCgkgICAgewogICAgICAgICAgICAgIC8vIFB1dCBiYWNrIHplcm9zIHJlbW92
ZWQgYnkgY29tcGFjdGluZwoJICAgICAgbjEuY01hbnRpc3NhWyhOU0ludGVnZXIpbjEubGVu
Z3RoXSA9IDA7CgkgICAgICBuMS5sZW5ndGgrKzsKCSAgICAgIG4xLmV4cG9uZW50LS07Cgkg
ICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgaWYgKHVzZWQgPCBsLT5sZW5ndGgpCgkgICAg
ICAgIHsKCQkgIC8vIEZpbGwgdXAgd2l0aCBvd24gZGlnaXRzCgkJICBpZiAobjEubGVuZ3Ro
IHx8IGwtPmNNYW50aXNzYVt1c2VkXSkKCQkgICAgewoJCSAgICAgIC8vIG9ubHkgYWRkIDAg
aWYgdGhlcmUgaXMgYWxyZWFkeSBzb21ldGhpbmcKCQkgICAgICBuMS5jTWFudGlzc2FbKE5T
SW50ZWdlciluMS5sZW5ndGhdID0gbC0+Y01hbnRpc3NhW3VzZWRdOwoJCSAgICAgIG4xLmxl
bmd0aCsrOwoJCSAgICB9CgkJICB1c2VkKys7CgkJfQoJICAgICAgZWxzZQoJICAgICAgICB7
CgkJICBpZiAoLTEyOCA9PSByZXN1bHQtPmV4cG9uZW50KQoJCSAgICB7CgkJICAgICAgLy8g
dXNlIHRoaXMgYXMgYW4gZW5kIGZsYWcKCQkgICAgICBrID0gTlNEZWNpbWFsTWF4RGlnaXQt
MTsKCQkgICAgICBicmVhazsKCQkgICAgfQoJCSAgLy8gQm9ycm93IG9uZSBkaWdpdAoJCSAg
bjEuY01hbnRpc3NhWyhOU0ludGVnZXIpbjEubGVuZ3RoXSA9IDA7CgkJICBuMS5sZW5ndGgr
KzsKCQkgIHJlc3VsdC0+ZXhwb25lbnQtLTsKCQl9CgkgICAgICBrKys7CgkgICAgICByZXN1
bHQtPmNNYW50aXNzYVtrLTFdID0gMDsKCSAgICAgIHJlc3VsdC0+bGVuZ3RoKys7CgkgICAg
fQoJfQoKICAgICAgaWYgKE5TRGVjaW1hbE1heERpZ2l0LTEgPT0gaykKICAgICAgICB7Cgkg
IGVycm9yID0gTlNDYWxjdWxhdGlvbkxvc3NPZlByZWNpc2lvbjsKCSAgYnJlYWs7Cgl9Cgog
ICAgICBlcnJvcjEgPSBOU0RlY2ltYWxTdWJ0cmFjdCgmbjEsICZuMSwgciwgbW9kZSk7CiAg
ICAgIGlmIChOU0NhbGN1bGF0aW9uTm9FcnJvciAhPSBlcnJvcjEpCgllcnJvciA9IGVycm9y
MTsKICAgICAgcmVzdWx0LT5jTWFudGlzc2Fbay0xXSsrOwogICAgfQoKICByZXR1cm4gZXJy
b3I7Cn0KCkdTX0RFQ0xBUkUgTlNTdHJpbmcqCk5TRGVjaW1hbFN0cmluZyhjb25zdCBOU0Rl
Y2ltYWwgKmRlY2ltYWwsIE5TRGljdGlvbmFyeSAqbG9jYWxlKQp7CiAgcmV0dXJuIEdTRGVj
aW1hbFN0cmluZyhkZWNpbWFsLCBsb2NhbGUpOwp9CgovLyBHTlVzdGVwIGV4dGVuc2lvbnMg
dG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgTlNEZWNpbWFsTnVtYmVyIHRvdGFseQov
LyBpbmRlcGVuZGVudCBmb3IgTlNEZWNpbWFscyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgoK
R1NfREVDTEFSRSBkb3VibGUKTlNEZWNpbWFsRG91YmxlKE5TRGVjaW1hbCAqbnVtYmVyKQp7
CiAgcmV0dXJuIEdTRGVjaW1hbERvdWJsZShudW1iZXIpOwp9CgpHU19ERUNMQVJFIHZvaWQK
TlNEZWNpbWFsRnJvbUNvbXBvbmVudHMoTlNEZWNpbWFsICpyZXN1bHQsIHVuc2lnbmVkIGxv
bmcgbG9uZyBtYW50aXNzYSwKCQkgICAgICBzaG9ydCBleHBvbmVudCwgQk9PTCBuZWdhdGl2
ZSkKewogIEdTRGVjaW1hbEZyb21Db21wb25lbnRzKHJlc3VsdCwgbWFudGlzc2EsIGV4cG9u
ZW50LCBuZWdhdGl2ZSk7Cn0KCkdTX0RFQ0xBUkUgdm9pZApOU0RlY2ltYWxGcm9tU3RyaW5n
KE5TRGVjaW1hbCAqcmVzdWx0LCBOU1N0cmluZyAqbnVtYmVyVmFsdWUsCgkJICAgIE5TRGlj
dGlvbmFyeSAqbG9jYWxlKQp7CiAgR1NEZWNpbWFsRnJvbVN0cmluZyhyZXN1bHQsIG51bWJl
clZhbHVlLCBsb2NhbGUpOwp9CgojZW5kaWYK
--Apple-Webmail-64--7e3383d5-0eea-4396-bb00-082713c587b2--
--Apple-Webmail-42--7e3383d5-0eea-4396-bb00-082713c587b2--