Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

UniPay III & UniPay 1.5 Document: NEO IDG Supplement for Goose Run

...

NEO IDG_Rev 118.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.44.docx

...

VP3300 USB NEO v1.01.061
1. Update command 2C-02 for FeliCa Test.

...

NEO IDG_Rev 118.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.43.docx

...

VP3300 USB NEO v1.01.060
1. Add tag 9C in response data of discover zip
2. Fixed discover card can not read on iphone.

...

NEO IDG_Rev 118.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.43.docx

...

VP3300 USB NEO v1.01.059
Fixed JIRA issue:
1. TS-7858 Add Default Transaction Type in Group0. If active command does not have tag9C, the reader will
used the tag to replace tag 9C and add to active command.

...

...

NEO IDG_Rev 118.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.41.docx

...

VP3300 USB NEO v1.01.058
1. Fixed JIRA issues:
GRN-166: [NEO v1.01.057][VP3300 USB][AppleVAS/ SmartTap] After sent AT cmd w/ integration tags (Apple VAS only + SmartTap any terminal mode) -> tapped MChip card, reader did not return payment data.
GRN-167: [NEO v1.01.057][VP3300 USB][AppleVAS] After sent AT cmd w/ AppleVAS tag (VAS only) -> tapped Android phone, reader returned payment data.

...

...

NEO IDG_Rev 118.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.41.docx

...

VP3300 USB NEO v1.01.057
1. Fixed JIRA issues:
GRN-165: [NEO v1.01.056][VP3300 USB][AppleVAS] After sent AT cmd w/ AppleVAS tags (VAS only) -> tapped CL card, reader returned payment data.

...

...

NEO IDG_Rev 118.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.40.docx

...

VP3300 USB NEO v1.01.056
1. Fixed JIRA issues:
GRN-149: [NEO v1.01.054][VP3300 USB] ACT command(02-01) --> Tap AppleVAS_MyPanera on reader -->Provide touch ID --> No RX returned
GRN-160: [NEO v1.01.055][VP3300 USB][AppleVAS/ SmartTap] After sent AT cmd w/ specific tags (AppleVAS only + SmartTap Payment only) -> tapped CL card, reader did not return payment data.
GRN-161: [NEO v1.01.055][VP3300 USB][SmartTap] After sent AT cmd w/ SmartTap tag (Get VAS OVER Payment) -> tapped CL card, reader did not return payment data.
GRN-162: [NEO v1.01.055][VP3300 USB][AppleVAS/ SmartTap] After sent AT cmd w/ specific tags (AppleVAS or Pay + SmartTap VAS Only) -> tapped CL card, reader did not return payment data.
GRN-163: [NEO v1.01.055][VP3300 USB]Reset to default(04-F0) --> ACT command(02-01) with 02-01 Apple VAS Only + ST Get VAS Only--> Tap SmartTap --> Transaction will fail

...

...

NEO IDG_Rev 118.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.40.docx

...

VP3300 USB NEO v1.01.055
1. Fixed JIRA issues:
GRN-149: [NEO v1.01.054][VP3300 USB] ACT command(02-01) --> Tap AppleVAS_MyPanera on reader -->Provide touch ID --> No RX returned
GRN-150: [NEO v1.01.054][VP3300 USB] ACT command(02-01) --> Tap ApplePay_MasterCard(****1471) on reader --> Reader return incorrect response
GRN-151: [NEO v1.01.054][VP3300 USB] In the different ApplePay_Only and SmartTap combination, the reponse of ACT(02-01) is inconsistent.
GRN-152: [NEO v1.01.054][VP3300 USB] ACT command(02-01) with 02-01 Apple Pay Only + ST Get VAS Only--> Tap VISA qVSDC test card --> Reader return status code 0x0A (Fail)
GRN-153: [NEO v1.01.054][VP3300 USB] ACT command(02-01) with 02-01 Apple VAS Only + ST Get VAS Only--> Tap SmartTap2.1 --> Reader return incorrect response
GRN-154: [NEO v1.01.054][VP3300 USB ][SmartTap] After sent AT cmd w/ SmartTap tag -> tapped Android phone (case 0.18), sometimes reader was reboot automatically.
GRN-155: [NEO v1.01.054][VP3300 USB ][AppleVAS] After placed VISA qVSDC card on reader -> sent AT cmd w/ AppleVAS tag, sometimes reader kept beeping.
GRN-156: [NEO v1.01.054][VP3300 USB ][CT] After sent AT cmd w/ AppleVAS & SmartTap tags both -> inserted card, reader did not return "A3" status code.
GRN-157: [NEO v1.01.054][VP3300 USB ][MSR] After sent AT cmd w/ AppleVAS & SmartTap tags both -> swiped card, reader kept returning strange data until cmd timeout.
GRN-158: [NEO v1.01.054][VP3300 USB ][AppleVAS] After sent AT cmd w/ AppleVAS tag (VAS only) -> tapped ViVOtech card, reader returned nothing and LED 0 was displayed steady on status always.
GRN-159: [NEO v1.01.054][VP3300 USB ][AppleVAS] After sent AT cmd w/ AppleVAS tag (VAS or/ and PAY) -> tapped ViVOtech card, reader returned timeout RX w/ incorrect time.

...

...

NEO IDG_Rev 116.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.39.docx

...

VP3300 USB NEO v1.01.054
1. Support AppleVAS and SmartTap 2.1 transaction in one ACT command.

...

...

NEO IDG_Rev 116.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.37.docx

...

VP3300 USB NEO v1.01.053
1. Fixed JIRA issue:
GRN-146: [NEO v1.01.052][VP3300 USB] Set Auto poll --> Insert ICC card --> Activate transaction --> Reader return status code 0x0B
GRN-147: [NEO v1.01.052][VP3300 USB] Set Auto poll --> Insert IDT STD MSR card --> Activate transaction --> Reader return nothing --> Remove card --> Return status code 0x08 (Timeout)

...

...

NEO IDG_Rev 116.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.37.docx

...

VP3300 USB NEO v1.01.052
1. Fixed JIRA issue:
CS-1453: 4880 - WorldNet/ Via touch - Have AUTO mode support all 3 interfaces (chip, swipe, tap)

...

...

NEO IDG_Rev 111.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.35.docx

...

VP3300 USB NEO v1.01.051
1. Fixed JIRA issues:
FUI-210: After AT cmd 02-01 (or 02-40) was timeout -> sent AT cmd again, AT cmd can not work anymore.
FUI-211: Activate transaction(02-01) or (02-40) then Tap VISA qVSDC card -> Activate transaction again -> Reader return status code 0x0B

...

...

NEO IDG_Rev 111.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.35.docx

...

VP3300 USB NEO v1.01.050
1. Fixed JIRA issues:
TS-6106/CS-1121/GRN-87: VP4880C - FW#28| Slow transaction for both MC and Visa cards
BTM-33: Bootloader version error
BTM-30: Activate transaction-> Tap Master Card-> Don't remove card and activate transaction again, no response returned
BTM-29: Card shall not be read in activating a transaction when it has not been removed from RF field since the previous transaction was done

VP3300 USB-BL-V3.00.012
1. Fixed JIRA issues:
BTM-33: Bootloader version error

...

...

NEO IDG_Rev 111.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.34.docx

...

VP4880 USB NEO v1.01.049
1. reader return status code 0xA3 when process Activate transaction(02-01/02-40) and user insert CT card.
2. Update FW version and naming:
FW version : NEO v1.01 -> VP3300 USB NEO v1.01
FW full version : VP4880 NEO v1.01.xxx -> VP3300 USB NEO v1.01.xxx
HW_VERSION : HW,VP4880\r\nK21F Rev -> HW,VP3300 USB\r\nK21F Rev
3. Update USB product string:
product string : Goose Run -> VP3300 USB

VP3300 USB-BL-V3.00.011
1. Update BL version:
BL version : GOOSE_RUN-BL-V3.00.xxx -> VP3300 USB-BL-V3.00.xxx
2. Update USB product string:
product string : ID TECH Goose Run -> VP3300 USB

...

NEO IDG_Rev 111.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.33.docx

...

NEO IDG_Rev 108.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.33.docx

...

20170613
VP4880 NEO v1.01.037.C
1. add SmartTap 2.1(NOT include "SmartTap & Payment" configuration and "secure" function)

...

NEO IDG_Rev 108.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.33.docx

...

VP4880 NEO v1.01.034
1. Fixed JIRA issues:
GRN-91: Reader return unknown value 0x20 when get data Encryption Key Variant Type (C7-30).
GRN-92: Reader return incorrect Key Variant Type
GRN-93: [Quick Chip Mode] After set Quick Chip Mode = 03h (CT/ MSR only) -> inserted EMV T=0 card, reader returned nothing.
GRN-94: [Quick Chip Mode] After set Quick Chip Mode = 02h (All interfaces) -> tapped bank card, sometimes it was hard to read card.

...

NEO IDG_Rev 108.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.33.docx

Tool for PIN variant:

KIII-EncryptAndDecrypt_exe.zip

...

VP4880 NEO v1.01.033
1. Fixed JIRA issues:
GRN-90: [Quick Chip Mode] Reader spent about 3~4 sec to read CL card after tapped it. That may confuse user.
2. Update Poll Mode configuration:
0x00: Auto Poll
0x01: Poll on Demand
0x02: Quick Chip (CT + CL + MSR Enable)
0x03: Quick Chip (CT + MSR Enable)
0x04: Quick Chip (CL + MSR Enable)
3. Support PIN Variant.

...

NEO IDG_Rev 108.doc

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.31.docx

...

VP4880 NEO v1.01.032
1. Fixed JIRA issues:
GRN-77: [Quick Chip Mode] Encryption ON, reader did not beep once after swiped ISO4909 (3 tracks) card.
GRN-78: [Suggestion] The RX of cmd 60-13, default output tags may not need to include DFEF4C/ DFEF4D/ DFEE26.
GRN-86: Tag 9F39 of contact transction response is incorrect
GRN-88: [Quick Chip Mode] Sometimes LED 0 was become off status after swiped IDT test card.
GRN-89: [Quick Chip Mode] Sometimes reader can not read CL card after swiped card.

...

NEO IDG_Rev 107.doc 

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.31.docx

...

1. Fixed JIRA issues:
GRN-63: [Quick Chip Mode] Encryption ON -> inserted Discover card, reader returned data w/ incorrect KSN.
GRN-66: [Quick Chip Mode] Encryption ON -> inserted Discover card -> reader did not return tags DFEF5D (Mask for Tag 57) & DFEF5B (Mask for Tag 5A).
GRN-68: [Quick Chip Mode] Reader did not return default output tags list after inserted Discover card.
GRN-74: [Quick Chip Mode] Encryption ON -> tapped card, reader did not return tags DFEF5C (Mask for Tag56), DFEF5E (Mask for Tag9F6B), DFEF5B (Mask for Tag5A) and DFEF5D (Mask for Tag57).
GRN-77: [Quick Chip Mode] Encryption ON, reader did not beep once after swiped ISO4909 (3 tracks) card.
GRN-78: [Suggestion] The RX of cmd 60-13, default output tags may not need to include DFEF4C/ DFEF4D/ DFEE26.
GRN-81: Contact transaction response miss byte DFEE25
GRN-82: Reader returned incorrect "Clear/mask data sent status" value when swipe JIS1/PAN=11/PAN=20 test card.
GRN-83: [Quick Chip Mode] After swiped card -> inserted/ removed card -> tapped card, reader was reset automatically.
GRN-84: [Quick Chip Mode] Reader returned strange data after inserted card (EMV Test Card V2 T=0).
GRN-85: [Quick Chip Mode] Encryption ON -> tapped INTERAC card, sometimes reader did not return any data.

...

20170330
1. Support ApplePay/VAS and SmartTap in Quickchip Mode.
2. Fixed JIRA issues:
GRN-53: [Quick Chip Mode] No 5C terminal data -> swiped card (service code = 201), reader terminated transaction but outputted tag DFEF61 continuously.
GRN-54: [Quick Chip Mode] No 5C terminal data -> inserted card (dual interface ICC & CL), reader read the card via CL interface.
GRN-55: [Quick Chip Mode] No 5C terminal data -> inserted card @ 2nd times, reader did not return tag DFEF61.
GRN-56: [Quick Chip Mode] Swiped card (service code = 201) -> waited for fallback transaction timeout, reader returned timeout status but LED 3 was still ON.
GRN-57: [Quick Chip Mode] Reader did not return length data of track 2 after swiped VISA MSD card. That did not meet spec.
GRN-58: [Quick Chip Mode] No 5C terminal data but set CT ICS identification as 5C -> inserted Discover card, CT trancation was successful.
GRN-59: [Quick Chip Mode] Fallback to chip reader -> inserted card w/ opposite direction (IC chip can not be powered on) -> reinserted card normally, reader can not read the card.
GRN-60: [Quick Chip Mode] Fallback to chip reader -> swiped IDT test card, reader can read the card.
GRN-61: [Quick Chip Mode] Reader returned strange data after tapped INTERAC card.
GRN-62: [Quick Chip Mode] Reader did not return tag FFEE14 after tapped INTERAC card.
GRN-63: [Quick Chip Mode] Encryption ON -> inserted Discover card, reader returned data w/ incorrect KSN.
GRN-64: [Quick Chip Mode] Encryption ON -> inserted card, reader returned more tags than encryption off status.
GRN-65: [Quick Chip Mode] Encryption ON -> inserted IDT test card -> swiped IDT test card, reader returned strange data.
GRN-66: [Quick Chip Mode] Encryption ON -> inserted Discover card -> reader did not return tags DFEF5D (Mask for Tag 57) & DFEF5B (Mask for Tag 5A).
GRN-67: [Quick Chip Mode] Encryption ON -> tapped Discover card -> reader did not return tag DFEF5F (Mask for Tag FFEE13).
GRN-68: [Quick Chip Mode] Reader did not return default output tags list after inserted Discover card.
GRN-69: [Quick Chip Mode] Reader did not return correct tags list that has been defined in tag DFEF5A after inserted Discover card.
GRN-70: [Quick Chip Mode] Reader returned duplicate tag 9F39 after inserted Discover card.
GRN-71: [Quick Chip Mode] Reader returned strange data after tapped VISA MSD card.
GRN-72: [Quick Chip Mode] Reader returned strange data after tapped VISA qVSDC (EMV) card.
GRN-73: [Quick Chip Mode] Encryption ON -> tapped INTERAC card, reader did not return any data.
GRN-74: [Quick Chip Mode] Encryption ON -> tapped card, reader did not return tags DFEF5C (Mask for Tag56), DFEF5E (Mask for Tag9F6B), DFEF5B (Mask for Tag5A) and DFEF5D (Mask for Tag57).
GRN-75: [Quick Chip Mode] Reader did not return tag DFEF59 after inserted card.
GRN-76: [Quick Chip Mode] Encryption ON, reader returned track 2 data that length was incorrect after swiped JIS 2 card.
GRN-77: [Quick Chip Mode] Encryption ON, reader did not beep once after swiped ISO4909 (3 tracks) card.
GRN-78: [Suggestion] The RX of cmd 60-13, default output tags may not need to include DFEF4C/ DFEF4D/ DFEE26.
3. Please be noticed: to fixed GRN-54 and support ApplePay/VAS and SmartTap in Quickchip, CL transaction speed would slower than others poll modes.

...

NEO IDG_Rev 101.doc 

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.26_draft.docx

VP4880 NEO v1.01.029
1. Support Quickchip, under Quickchip mode:
a. Do not enter VLPS.
b. LED 3 turn ON when MSR fallback to ICC, timeout is 30 second.
c. format refer to NEO IDG Supplement for UniPay III and UniPay 1.5 v1.26_draft.

Please use this tool to send command under USB KB mode:

FAT 4.09.zip

TerminalData _2C_5C.txt

...

NEO IDG_Rev 101.doc 

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.21.docx

...

VP4880 NEO v1.01.028
1. Fixed FU-23 : After sent cmd 60-10 -> swiped card w/ abnormal method, reader did not terminate the transaction.

...

NEO IDG_Rev 101.doc 

NEO IDG Supplement for UniPay III and UniPay 1.5 v1.21.docx

...

VP4880 NEO v1.01.027
1. TS-4281 : Fixed Tag9F5B and TagDF21 are define conflict in VISA and AMEX spec.
In Visa card, Tag9F5B and Tag DF21 are define Issuer Script Result.
Other card brands Tag9F5B define in card spec. TagDF21 is define Issuer Script Result.

2. Add tag DFEF64 set referral timeout value. default is 30s

...

VP4880 NEO v1.01.026
1. Fix JIRA issues: CAKE-13

...

20161118
VP4880 NEO v1.01.025
1. Fix JIRA issues:
GRN-48 : Tag DFEF4B = 60 (Enable Track 1 + PAN), after sent cmd 60-10 -> inserted ICC card, reader returned PAN in tags DFEF4C/ DFEF4D but length/ data format were incorrect.
GRN-49 : Encryption ON (AES), after sent cmd 60-10 -> swiped VISA MSD, reader returned tag DFEF4D w/ unnecessary data.
GRN-50 : DFEF4B = 24 (Enable Track 1 w/ sentinels), after tapped VISA qVSDC -> sent cmd 03-40, reader returned tags DFEF4C and DFEF4D w/ incorrect data.
GRN-51 : After sent cmd 02-01/ 02-40 -> tapped INTERAC CL card, reader returned RX w/o tag DF30.

...

NEO IDG_Rev 99.doc 

NEO IDG Supplement for Goose Run v1.02.docx

VP4880 NEO v1.01.024
1. Update 03-00 when Encryption OFF only, and response in ViVOtech format.
2. Add 03-40 could use when Encryption On and Off, and response in IDTECH format.
3. Add MSR new tag DFEF4C and DFEF4D.
4. Burst off automatically and could not set on when Encryption ON( no matter CL or MSR) and DUKPT exist.
5. update PID to 0x3530 to Bootloader and Application.

Note: before upgrade to this version, NEO Download Tool V1.02.005 support; after upgrade to this version or later, please use NEO Download Application later than NEO Download Tool V1.02.005.

...

VP4880 NEO v1.01.023
Normal release.

...

VP4880 NEO v1.01.022G
1. Fix JIRA issues:
GRN-45 : After sent cmd 02-01 for AppleVAS -> tapped iPhone and chose IDTECH ENCRYPTION YES card, reader returned RX w/ unnecessary data.

...

20161003
VP4880 NEO v1.01.022F
1. Fix JIRA issues:
GRN-36 : Reader should return MST track 1 and track2 data twice when set burst mode on and Auto poll
GRN-37 : Reader miss track1 or track2 data length byte when set config as poll on demand + burst mode off and activate transaction (02-01)
GRN-38 : Download Tool can't update new firmware, however when click load again, it can work.
GRN-39 : Goose Run can't connect to EMV L2 contact SDK and TS160
GRN-40 : Reader sometimes returns MST data with incorrect card type and tract status
GRN-41 : After sent cmd 02-01 for AppleVAS -> tapped iPhone and chose IDTECH ENCRYPTION YES card, reader returned duplicate tag DF02.
GRN-42 : Reader sometimes retrurns status code as 0x04 (CRC error) sometimes, and sometimes there is no response returned
GRN-43 : Encryption ON, after sent cmd 02-40 for AppleVAS -> tapped iPhone and chose Panera Bread card, reader returned RX w/o tag DFEE26.
GRN-44 : Encryption ON, after sent cmd 02-40 for AppleVAS & SmartTap both -> tapped iPhone, reader returned tag FFEE06 as plaintext.

...

20160921
VP4880 NEO v1.01.022E
1. Fix JIRA issues:
GRN-9 : Tag DFEF25 value should not change, status should be "0B" instead "00"
GRN-16 : Burst mode should be disable if reader is set burst mode as auto exit and receive activate transaction command
GRN-27 : Reader returned unnecessary data after tap MST card
GRN-30 : After canceled cmd 02-01 -> swiped card directly, reader returned unnecessary data
GRN-31 : After sent cmd 02-01 -> swiped card, reader did not returned tag 9F39
GRN-2 : Reader returned unnecessary data after swiped card directly

...

20160919
VP4880 NEO v1.01.022D
1. Fix JIRA issues:
GRN-1 : Tag DFEE26 does not return when Activate transaction (02-01)
GRN-2 : Reader returned unnecessary data after swiped card directly.
GRN-3 : After sent cmd 02-01 -> swiped card, reader returned burst mode payload frame type data.
GRN-4 : Burst mode auto-exit -> swipe card, the data format that reader returned is inconsistent w/ burst mode on.
GRN-5 : Command 60-10, 60-11 response missing tag head "DF", tag should be DF EE 25
GRN-6 : (1) Command 60-12 response missing tag head "DF", tag should be DF EE 25 (2) Command 60-10, 60-11, 60-12 response missing tag DF EE 26
GRN-7 : after swipe IDT Test Card,tag DF EE 23 format error
GRN-8 : FallBack issue, after swipe discover card (service code = 201), it should insert discover card, not transaction complete
GRN-9 : Tag DFEF25 value should not change, status should be "0B" instead "00"
GRN-10 : After sent cmd 02-01 or 02-40 -> tapped MasterCard, LED 0~3 were flashed too quick.
GRN-11 : Reader had no key but enabled encryption, cmd 02-01 can not work (got "0B" = "Command not Allowed" status code).
GRN-12 : After sent cmd 60-10 -> inserted ICC that can not be powered on -> swiped card, reader returned nothing.
GRN-13 : Encryption ON - TDES, command 60-12 Contact Apply Host Response - tag 9F02 missing two bytes
GRN-14 : CMD 29-04, reader returned data that displayed unsuitable info. "Unipay III".
GRN-15 : CMD 18-01 w/ incorrect parameter, reader returned response frame. That did not meet NEO spec.
GRN-16 : Burst mode should be disable if reader is set burst mode as auto exit and receive activate transaction command
GRN-17 : Reader returned incorrect Tag FFEE05 data after sent cmd 03-06 (Get Configurable Group).
GRN-18 : Protocol 1 cmd can work. That did not meet NEO spec.
GRN-19 : Burst mode can not be turned on after enabled encryption.
GRN-20 : Attribution byte and Tag DFEE25, DFEE23, 9F39, FFEE01, DF30, DFEE26 is missed when get transaction 03-00 and swipe MSR card
GRN-21 : Burst mode response format is inconsistent with NEO IDG supplement
GRN-22 : After sent cmd 02-01 -> tapped SmartTap phone, reader LEDs 1~3 did not be flashed once.
GRN-23 : There are 2 byte data missed when swipe PAN=11 MSR test card via USB interface
GRN-24 : Encryption ON -> sent cmd 02-40 -> tapped SmartTap phone, reader returned tag FFEE02 in plaintext format.
GRN-25 : There are no data returned when tap Samsung pay under auto poll + burst mode on or POM+ burst mode off
GRN-26 : After completed transaction once, sent cmd 02-40 w/ APPLE_VAS_ONLY -> tapped MasterCard paypass again, reader returned tags 9F39/ DFEE26 that had inconsistent data.
GRN-27 : Reader returned unnecessary data after tap MST card
GRN-28 : Burst mode can't be enabled when set encryption mode as 0x01, 0x02, 0x03 but without Account DUKPT key exist
GRN-29 : After sent cmd 02-01 -> tapped Apple iPhone 6 (used any pass), reader was failed to read phone but returned "00" (OK) as status code.