argument-propertybag-calendar-case-insensitive.js |
---
esid: sec-temporal.zoneddatetime.from
description: The calendar name is case-insensitive
features: [Temporal]
--- |
844 |
argument-propertybag-calendar-iso-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: An ISO 8601 string can be converted to a calendar ID in Calendar
features: [Temporal]
--- |
1038 |
argument-propertybag-calendar-leap-second.js |
---
esid: sec-temporal.zoneddatetime.from
description: Leap second is a valid ISO string for a calendar in a property bag
features: [Temporal]
--- |
780 |
argument-propertybag-calendar-number.js |
---
esid: sec-temporal.zoneddatetime.from
description: A number as calendar in a property bag is not accepted
features: [Temporal]
--- |
789 |
argument-propertybag-calendar-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: A calendar ID is valid input for Calendar
features: [Temporal]
--- |
798 |
argument-propertybag-calendar-wrong-type.js |
---
esid: sec-temporal.zoneddatetime.from
description: >
Appropriate error thrown when a calendar property from a property bag cannot
be converted to a calendar ID
features: [BigInt, Symbol, Temporal]
--- |
1409 |
argument-propertybag-calendar-year-zero.js |
---
esid: sec-temporal.zoneddatetime.from
description: Negative zero, as an extended year, is rejected
features: [Temporal, arrow-function]
--- |
864 |
argument-propertybag-empty-throws.js |
---
esid: sec-temporal.zoneddatetime.from
description: Temporal.ZonedDateTime.from({}) throws.
features: [Temporal]
--- |
554 |
argument-propertybag-function-object.js |
---
esid: sec-temporal.zoneddatetime.from
description: Options may be a function object.
includes: [temporalHelpers.js]
features: [Temporal]
--- |
747 |
argument-propertybag-ignores-incorrect-properties.js |
---
esid: sec-temporal.zoneddatetime.from
description: Incorrectly-spelled properties are ignored.
includes: [temporalHelpers.js]
features: [Temporal]
--- |
768 |
argument-propertybag-invalid-offset-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: Property bag with offset property is rejected if offset is in the wrong format
features: [Temporal]
--- |
1346 |
argument-propertybag-monthcode-month.js |
---
esid: sec-temporal.zoneddatetime.from
description: ZonedDateTime can be constructed with monthCode or month; must agree.
includes: [temporalHelpers.js]
features: [Temporal]
--- |
1215 |
argument-propertybag-offset-not-agreeing-with-timezone.js |
---
esid: sec-temporal.zoneddatetime.from
description: Property bag with offset property is rejected if offset does not agree with time zone
features: [Temporal]
--- |
883 |
argument-propertybag-required-correctly-spelled-properties.js |
---
esid: sec-temporal.zoneddatetime.from
description: Options must contain at least the required correctly-spelled properties.
features: [Temporal]
--- |
1062 |
argument-propertybag-required-prop-undefined-throws.js |
---
esid: sec-temporal.zoneddatetime.from
description: from() throws if a required property is undefined.
features: [Temporal]
--- |
616 |
argument-propertybag-timezone-string-datetime.js |
---
esid: sec-temporal.zoneddatetime.from
description: Conversion of ISO date-time strings to time zone IDs
features: [Temporal]
--- |
2721 |
argument-propertybag-timezone-string-leap-second.js |
---
esid: sec-temporal.zoneddatetime.from
description: Leap second is a valid ISO string for TimeZone
features: [Temporal]
--- |
898 |
argument-propertybag-timezone-string-multiple-offsets.js |
---
esid: sec-temporal.zoneddatetime.from
description: Time zone parsing from ISO strings uses the bracketed offset, not the ISO string offset
features: [Temporal]
--- |
745 |
argument-propertybag-timezone-string-sub-minute-offset.js |
---
esid: sec-temporal.zoneddatetime.from
description: >
Time zone parsing from ISO strings does not accept sub-minute UTC offset as
time zone identifier
features: [Temporal]
--- |
783 |
argument-propertybag-timezone-string-year-zero.js |
---
esid: sec-temporal.zoneddatetime.from
description: Negative zero, as an extended year, is rejected
features: [Temporal, arrow-function]
--- |
767 |
argument-propertybag-timezone-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: Time zone IDs are valid input for a time zone
features: [Temporal]
--- |
686 |
argument-propertybag-timezone-wrong-type.js |
---
esid: sec-temporal.zoneddatetime.from
description: >
Appropriate error thrown when argument cannot be converted to a valid string
for time zone
features: [BigInt, Symbol, Temporal]
--- |
1416 |
argument-string-basic-and-extended-format.js |
---
esid: sec-temporal.zoneddatetime.from
description: Mixture of basic and extended format.
includes: [temporalHelpers.js]
features: [Temporal]
--- |
1200 |
argument-string-calendar-annotation-invalid-key.js |
---
esid: sec-temporal.zoneddatetime.from
description: Annotation keys are lowercase-only
features: [Temporal]
--- |
1139 |
argument-string-calendar-annotation.js |
---
esid: sec-temporal.zoneddatetime.from
description: Various forms of calendar annotation; critical flag has no effect
features: [Temporal]
--- |
876 |
argument-string-critical-unknown-annotation.js |
---
esid: sec-temporal.zoneddatetime.from
description: Unknown annotations with critical flag are rejected
features: [Temporal]
--- |
879 |
argument-string-date-with-utc-offset.js |
---
esid: sec-temporal.zoneddatetime.from
description: UTC offset not valid with format that does not include a time
features: [Temporal]
--- |
1162 |
argument-string-decimal-places.js |
---
esid: sec-temporal.zoneddatetime.from
description: from() can parse any number of decimal places
includes: [temporalHelpers.js]
features: [Temporal]
--- |
2132 |
argument-string-limits.js |
---
esid: sec-temporal.zoneddatetime.from
description: ISO strings at the edges of the representable range
features: [Temporal]
--- |
2736 |
argument-string-minus-sign.js |
---
esid: sec-temporal.zoneddatetime.from
description: Non-ASCII minus sign is not acceptable
features: [Temporal]
--- |
808 |
argument-string-multiple-calendar.js |
---
esid: sec-temporal.zoneddatetime.from
description: >
More than one calendar annotation is not syntactical if any have the criical
flag
features: [Temporal]
--- |
893 |
argument-string-multiple-time-zone.js |
---
esid: sec-temporal.zoneddatetime.from
description: More than one time zone annotation is not syntactical
features: [Temporal]
--- |
852 |
argument-string-negative-extended-year.js |
---
esid: sec-temporal.zoneddatetime.from
description: Can parse negative extended year
includes: [temporalHelpers.js]
features: [Temporal]
--- |
653 |
argument-string-no-junk-at-end.js |
---
esid: sec-temporal.zoneddatetime.from
description: No junk at end of string.
features: [Temporal]
--- |
547 |
argument-string-optional-parts.js |
---
esid: sec-temporal.zoneddatetime.from
description: Optional parts.
includes: [temporalHelpers.js]
features: [Temporal]
--- |
963 |
argument-string-sub-minute-offset.js |
---
esid: sec-temporal.zoneddatetime.from
description: >
ISO strings cannot have sub-minute UTC offset as a time zone identifier
features: [Temporal]
--- |
656 |
argument-string-time-separators.js |
---
esid: sec-temporal.zoneddatetime.from
description: Time separator in string argument can vary
features: [Temporal]
--- |
839 |
argument-string-time-zone-annotation.js |
---
esid: sec-temporal.zoneddatetime.from
description: Various forms of time zone annotation; critical flag has no effect
features: [Temporal]
--- |
1521 |
argument-string-unknown-annotation.js |
---
esid: sec-temporal.zoneddatetime.from
description: Various forms of unknown annotation
features: [Temporal]
--- |
970 |
argument-string-variant-decimal-separator.js |
---
esid: sec-temporal.zoneddatetime.from
description: Can parse variant decimal separator.
includes: [temporalHelpers.js]
features: [Temporal]
--- |
656 |
argument-wrong-type.js |
---
esid: sec-temporal.zoneddatetime.from
description: >
Appropriate error thrown when argument cannot be converted to a valid string
or property bag for ZonedDateTime
features: [BigInt, Symbol, Temporal]
--- |
1477 |
argument-zoneddatetime.js |
---
esid: sec-temporal.zoneddatetime.from
description: A ZonedDateTime object is copied, not returned directly
features: [Temporal]
--- |
965 |
bad-disambiguation.js |
---
esid: sec-temporal.zoneddatetime.from
description: Throw on bad value for disambiguation
features: [Temporal]
--- |
625 |
browser.js |
|
0 |
builtin.js |
---
esid: sec-temporal.zoneddatetime.from
description: Tests that Temporal.ZonedDateTime.from meets the requirements for built-in objects
info: |
Built-in functions that are not constructors do not have a "prototype" property unless
otherwise specified in the description of a particular function.
Unless specified otherwise, a built-in object that is callable as a function is a built-in
function object with the characteristics described in 10.3. Unless specified otherwise, the
[[Extensible]] internal slot of a built-in object initially has the value true.
Unless otherwise specified every built-in function and every built-in constructor has the
Function prototype object [...] as the value of its [[Prototype]] internal slot.
features: [Temporal]
--- |
1576 |
calendar-temporal-object.js |
---
esid: sec-temporal.zoneddatetime.from
description: Fast path for converting other Temporal objects to Temporal.Calendar by reading internal slots
info: |
sec-temporal.zoneddatetime.from step 3:
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
sec-temporal-totemporalzoneddatetime step 2.b:
b. Let _calendar_ be ? GetTemporalCalendarWithISODefault(_item_).
sec-temporal-gettemporalcalendarwithisodefault step 2:
2. Return ? ToTemporalCalendarWithISODefault(_calendar_).
sec-temporal-totemporalcalendarwithisodefault step 2:
3. Return ? ToTemporalCalendar(_temporalCalendarLike_).
sec-temporal-totemporalcalendar step 1.a:
a. If _temporalCalendarLike_ has an [[InitializedTemporalDate]], [[InitializedTemporalDateTime]], [[InitializedTemporalMonthDay]], [[InitializedTemporalYearMonth]], or [[InitializedTemporalZonedDateTime]] internal slot, then
i. Return _temporalCalendarLike_.[[Calendar]].
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
1649 |
constrain-has-no-effect-on-invalid-iso-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: Constrain overflow option has no effect on invalid ISO string.
features: [Temporal]
--- |
588 |
disambiguation-invalid-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: RangeError thrown when disambiguation option not one of the allowed string values
info: |
sec-getoption step 10:
10. If _values_ is not *undefined* and _values_ does not contain an element equal to _value_, throw a *RangeError* exception.
sec-temporal-totemporaldisambiguation step 1:
1. Return ? GetOption(_normalizedOptions_, *"disambiguation"*, « String », « *"compatible"*, *"earlier"*, *"later"*, *"reject"* », *"compatible"*).
sec-temporal-totemporalzoneddatetime step 5:
5. Let _disambiguation_ be ? ToTemporalDisambiguation(_options_).
sec-temporal.zoneddatetime.from step 2:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
a. ...
b. Perform ? ToTemporalDisambiguation(_options_).
c. ...
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
features: [Temporal]
--- |
1866 |
disambiguation-wrong-type.js |
---
esid: sec-temporal.zoneddatetime.from
description: Type conversions for disambiguation option
info: |
sec-getoption step 9.a:
a. Set _value_ to ? ToString(_value_).
sec-temporal-totemporaldisambiguation step 1:
1. Return ? GetOption(_normalizedOptions_, *"disambiguation"*, « String », « *"compatible"*, *"earlier"*, *"later"*, *"reject"* », *"compatible"*).
sec-temporal-totemporalzoneddatetime step 5:
5. Let _disambiguation_ be ? ToTemporalDisambiguation(_options_).
sec-temporal.zoneddatetime.from step 2:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
a. ...
b. Perform ? ToTemporalDisambiguation(_options_).
c. ...
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
1992 |
infinity-throws-rangeerror.js |
---
description: Throws if any value in the property bag is Infinity or -Infinity
esid: sec-temporal.zoneddatetime.from
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
1406 |
leap-second.js |
---
esid: sec-temporal.zoneddatetime.from
description: Leap second is a valid ISO string for ZonedDateTime
features: [Temporal]
--- |
852 |
length.js |
---
esid: sec-temporal.zoneddatetime.from
description: Temporal.ZonedDateTime.from.length is 1
info: |
Every built-in function object, including constructors, has a "length" property whose value is
an integer. Unless otherwise specified, this value is equal to the largest number of named
arguments shown in the subclause headings for the function description. Optional parameters
(which are indicated with brackets: [ ]) or rest parameters (which are shown using the form
«...name») are not included in the default argument count.
Unless otherwise specified, the "length" property of a built-in function object has the
attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
includes: [propertyHelper.js]
features: [Temporal]
--- |
1251 |
monthcode-invalid.js |
---
esid: sec-temporal.zoneddatetime.from
description: Validation of monthCode
features: [Temporal]
--- |
1485 |
name.js |
---
esid: sec-temporal.zoneddatetime.from
description: Temporal.ZonedDateTime.from.name is "from"
info: |
Every built-in function object, including constructors, that is not identified as an anonymous
function has a "name" property whose value is a String. Unless otherwise specified, this value
is the name that is given to the function in this specification.
Unless otherwise specified, the "name" property of a built-in function object, if it exists,
has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
includes: [propertyHelper.js]
features: [Temporal]
--- |
1086 |
not-a-constructor.js |
---
esid: sec-temporal.zoneddatetime.from
description: Temporal.ZonedDateTime.from does not implement [[Construct]], is not new-able
info: |
Built-in function objects that are not identified as constructors do not implement the
[[Construct]] internal method unless otherwise specified in the description of a particular
function.
includes: [isConstructor.js]
features: [Reflect.construct, Temporal]
--- |
961 |
observable-get-overflow-argument-primitive.js |
---
esid: sec-temporal.zoneddatetime.from
description: options properties are extracted with string argument.
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
1649 |
observable-get-overflow-argument-string-invalid.js |
---
esid: sec-temporal.zoneddatetime.from
description: options properties are not extracted with ISO-invalid string argument.
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
871 |
offset-does-not-match-iana-time-zone.js |
---
esid: sec-temporal.zoneddatetime.from
description: With offset 'reject', throws if offset does not match IANA time zone
features: [Temporal]
--- |
944 |
offset-invalid-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: RangeError thrown when offset option not one of the allowed string values
info: |
sec-getoption step 10:
10. If _values_ is not *undefined* and _values_ does not contain an element equal to _value_, throw a *RangeError* exception.
sec-temporal-totemporaloffset step 1:
1. Return ? GetOption(_normalizedOptions_, *"offset"*, « String », « *"prefer"*, *"use"*, *"ignore"*, *"reject"* », _fallback_).
sec-temporal-totemporalzoneddatetime step 6:
6. Let _offset_ be ? ToTemporalOffset(_options_, *"reject"*).
sec-temporal.zoneddatetime.from step 2:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
...
c. Perform ? ToTemporalOffset(_options_, *"reject"*).
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
features: [Temporal]
--- |
1700 |
offset-overrides-critical-flag.js |
---
esid: sec-temporal.zoneddatetime.from
description: >
The offset option always overrides the critical flag in a time zone annotation
features: [Temporal]
--- |
1238 |
offset-string-invalid.js |
---
esid: sec-temporal.zoneddatetime.from
description: Validation of monthCode
features: [Temporal]
--- |
1236 |
offset-undefined.js |
---
esid: sec-temporal.zoneddatetime.from
description: Fallback value for offset option
info: |
sec-getoption step 3:
3. If _value_ is *undefined*, return _fallback_.
sec-temporal-totemporaloffset step 1:
1. Return ? GetOption(_normalizedOptions_, *"offset"*, « String », « *"prefer"*, *"use"*, *"ignore"*, *"reject"* », _fallback_).
sec-temporal-totemporalzoneddatetime step 6:
6. Let _offset_ be ? ToTemporalOffset(_options_, *"reject"*).
sec-temporal.zoneddatetime.from step 2:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
...
c. Perform ? ToTemporalOffset(_options_, *"reject"*).
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
features: [Temporal]
--- |
1417 |
offset-wrong-type.js |
---
esid: sec-temporal.zoneddatetime.from
description: Type conversions for offset option
info: |
sec-getoption step 9.a:
a. Set _value_ to ? ToString(_value_).
sec-temporal-totemporaloffset step 1:
1. Return ? GetOption(_normalizedOptions_, *"offset"*, « String », « *"prefer"*, *"use"*, *"ignore"*, *"reject"* », _fallback_).
sec-temporal-totemporalzoneddatetime step 6:
6. Let _offset_ be ? ToTemporalOffset(_options_, *"reject"*).
sec-temporal.zoneddatetime.from step 2:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
...
c. Perform ? ToTemporalOffset(_options_, *"reject"*).
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
1901 |
options-object.js |
---
esid: sec-temporal.zoneddatetime.prototype.from
description: Empty object may be used as options
features: [Temporal]
--- |
854 |
options-wrong-type.js |
---
esid: sec-temporal.zoneddatetime.from
description: TypeError thrown when options argument is a primitive
features: [BigInt, Symbol, Temporal]
--- |
1096 |
order-of-operations.js |
---
esid: sec-temporal.zoneddatetime.from
description: Properties on objects passed to from() are accessed in the correct order
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
3203 |
overflow-invalid-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: RangeError thrown when overflow option not one of the allowed string values
info: |
sec-getoption step 10:
10. If _values_ is not *undefined* and _values_ does not contain an element equal to _value_, throw a *RangeError* exception.
sec-temporal-totemporaloverflow step 1:
1. Return ? GetOption(_normalizedOptions_, *"overflow"*, « String », « *"constrain"*, *"reject"* », *"constrain"*).
sec-temporal-interprettemporaldatetimefields steps 2–3:
2. Let _temporalDate_ be ? DateFromFields(_calendar_, _fields_, _options_).
3. Let _overflow_ be ? ToTemporalOverflow(_options_).
sec-temporal-totemporalzoneddatetime steps 2–3:
2. If Type(_item_) is Object, then
...
j. Let _result_ be ? InterpretTemporalDateTimeFields(_calendar_, _fields_, _options_).
3. Else,
a. Perform ? ToTemporalOverflow(_options_).
sec-temporal.zoneddatetime.from steps 2–3:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
a. Perform ? ToTemporalOverflow(_options_).
...
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
features: [Temporal]
--- |
2127 |
overflow-options.js |
---
esid: sec-temporal.zoneddatetime.from
description: Overflow options.
includes: [temporalHelpers.js]
features: [Temporal]
--- |
960 |
overflow-undefined.js |
---
esid: sec-temporal.zoneddatetime.from
description: Fallback value for overflow option
info: |
sec-getoption step 3:
3. If _value_ is *undefined*, return _fallback_.
sec-temporal-totemporaloverflow step 1:
1. Return ? GetOption(_normalizedOptions_, *"overflow"*, « String », « *"constrain"*, *"reject"* », *"constrain"*).
sec-temporal-interprettemporaldatetimefields steps 2–3:
2. Let _temporalDate_ be ? DateFromFields(_calendar_, _fields_, _options_).
3. Let _overflow_ be ? ToTemporalOverflow(_options_).
sec-temporal-totemporalzoneddatetime steps 2–3:
2. If Type(_item_) is Object, then
...
j. Let _result_ be ? InterpretTemporalDateTimeFields(_calendar_, _fields_, _options_).
3. Else,
a. Perform ? ToTemporalOverflow(_options_).
sec-temporal.zoneddatetime.from steps 2–3:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
a. Perform ? ToTemporalOverflow(_options_).
...
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
features: [Temporal]
--- |
2295 |
overflow-wrong-type.js |
---
esid: sec-temporal.zoneddatetime.from
description: Type conversions for overflow option
info: |
sec-getoption step 9.a:
a. Set _value_ to ? ToString(_value_).
sec-temporal-totemporaloverflow step 1:
1. Return ? GetOption(_normalizedOptions_, *"overflow"*, « String », « *"constrain"*, *"reject"* », *"constrain"*).
sec-temporal-interprettemporaldatetimefields steps 2–3:
2. Let _temporalDate_ be ? DateFromFields(_calendar_, _fields_, _options_).
3. Let _overflow_ be ? ToTemporalOverflow(_options_).
sec-temporal-totemporalzoneddatetime steps 2–3:
2. If Type(_item_) is Object, then
...
j. Let _result_ be ? InterpretTemporalDateTimeFields(_calendar_, _fields_, _options_).
3. Else,
a. Perform ? ToTemporalOverflow(_options_).
sec-temporal.zoneddatetime.from steps 2–3:
2. If Type(_item_) is Object and _item_ has an [[InitializedTemporalZonedDateTime]] internal slot, then
a. Perform ? ToTemporalOverflow(_options_).
...
d. Return ...
3. Return ? ToTemporalZonedDateTime(_item_, _options_).
includes: [compareArray.js, temporalHelpers.js]
features: [Temporal]
--- |
3483 |
prop-desc.js |
---
esid: sec-temporal.zoneddatetime.from
description: The "from" property of Temporal.ZonedDateTime
includes: [propertyHelper.js]
features: [Temporal]
--- |
718 |
shell.js |
---
description: |
Test if a given function is a constructor function.
defines: [isConstructor]
features: [Reflect.construct]
--- |
596 |
subclassing-ignored.js |
---
esid: sec-temporal.zoneddatetime.from
description: The receiver is never called when calling from()
includes: [temporalHelpers.js]
features: [Temporal]
--- |
1269 |
timezone-case-insensitive.js |
---
esid: sec-temporal.zoneddatetime.prototype.from
description: Time zone names are case insensitive
features: [Temporal]
--- |
658 |
year-zero.js |
---
esid: sec-temporal.zoneddatetime.from
description: Negative zero, as an extended year, is rejected
features: [Temporal, arrow-function]
--- |
781 |
zoneddatetime-string-multiple-offsets.js |
---
esid: sec-temporal.zoneddatetime.from
description: Sub-minute offset trailing zeroes allowed in ISO string but not in bracketed offset
features: [Temporal]
--- |
911 |
zoneddatetime-string.js |
---
esid: sec-temporal.zoneddatetime.from
description: Conversion of ISO date-time strings to Temporal.ZonedDateTime instances
features: [Temporal]
--- |
2522 |