Files
TBgen_App/prompt_scripts/legacy/__pycache__/script_RTLchecker0306.cpython-312.pyc

78 lines
21 KiB
Plaintext
Raw Normal View History

2026-03-30 16:46:48 +08:00
<EFBFBD>
P<>Yi<59>B<00><00><><00>dZddlmZmZddlZGd<05>de<02>ZdZdZGd <09>d
e<03>Zd Z d Z
Gd <0A>de<03>Z dZ Gd<10>de<03>Z dZGd<13>de<03>ZdZGd<16>de<03>ZGd<18>de<03>Zd<1A>Zy)z<>
Description : original txt script: config/templates/script_template/DUT_stage_template_0306.txt
Author : Ruidi Qiu (r.qiu@tum.de)
Time : 2024/3/22 13:02:22
LastEdited : 2024/7/24 19:53:29
<EFBFBD>)<02>
BaseScript<EFBFBD>BaseScriptStage<67>Nc<00><<00><00>eZdZdZdededef<06>fd<05> Zd<06>Zd<07>Z <09>xZ
S)<08>WF_RTLchecker0306zm
stages: stage1, stage2, stage3, stage3b, stage4
check: check "scenario list"(stage2) in stage 4
<20> prob_data<74>task_dir<69>configc<00><><00><01>t<00>|<00>|||<03>|jjjj
|_y<00>N)<07>super<65>__init__r
<00>autoline<6E> checklist<73>max<61>max_check_iter)<05>selfrr r
<00> __class__s <20><>G/home/zhang/CorrectBench/prompt_scripts/legacy/script_RTLchecker0306.pyrzWF_RTLchecker0306.__init__s2<00><><00> <0A><07><18><19>H<EFBFBD>f<EFBFBD>5<>"<22>k<EFBFBD>k<EFBFBD>2<>2<><<3C><<3C>@<40>@<40><04><1B>c<00><><00>t|jfi|j<00><01>|_|j |j<00>t |j|jj fi|j<00><01>|_|j |j<00>t|j|jj |jj fi|j<00><01>|_ |j |j<00>t|j|jj |jj fi|j<00><01>|_ |j |j<00>t|j|jj |jj |jj fi|j<00><01>|_ |j |j<00>t|j|jj |j fi|j<00><01>|_|j |j"<00>yr )<12>Stage1r<00> gptkwargs<67>stage1<65>stage_operation<6F>Stage2<65>response<73>stage2<65>Stage3<65>stage3<65>Stage3b<33>stage3b<33>Stage4<65>stage4<65>StageChecklist<73>TB_coder<00>
stagecheck<EFBFBD>rs r<00>make_and_run_stagesz%WF_RTLchecker0306.make_and_run_stagess<><00><00><1C>T<EFBFBD>^<5E>^<5E>><3E>t<EFBFBD>~<7E>~<7E>><3E><04> <0B> <0C><1C><1C>T<EFBFBD>[<5B>[<5B>)<29><1C>T<EFBFBD>^<5E>^<5E>T<EFBFBD>[<5B>[<5B>-A<>-A<>T<>T<EFBFBD>^<5E>^<5E>T<><04> <0B> <0C><1C><1C>T<EFBFBD>[<5B>[<5B>)<29><1C>T<EFBFBD>^<5E>^<5E>T<EFBFBD>[<5B>[<5B>-A<>-A<>4<EFBFBD>;<3B>;<3B>CW<43>CW<43>j<>[_<>[i<>[i<>j<><04> <0B> <0C><1C><1C>T<EFBFBD>[<5B>[<5B>)<29><1E>t<EFBFBD>~<7E>~<7E>t<EFBFBD>{<7B>{<7B>/C<>/C<>T<EFBFBD>[<5B>[<5B>EY<45>EY<45>l<>]a<>]k<>]k<>l<><04> <0C> <0C><1C><1C>T<EFBFBD>\<5C>\<5C>*<2A><1C>T<EFBFBD>^<5E>^<5E>T<EFBFBD>[<5B>[<5B>-A<>-A<>4<EFBFBD>;<3B>;<3B>CW<43>CW<43>Y]<5D>Ye<59>Ye<59>Yn<59>Yn<59>B<02>rv<72>sA<02>sA<02>B<02><04> <0B> <0C><1C><1C>T<EFBFBD>[<5B>[<5B>)<29>(<28><14><1C><1C>t<EFBFBD>{<7B>{<7B>7K<37>7K<37>T<EFBFBD>M`<60>M`<60>s<>dh<64>dr<64>dr<64>s<><04><0F> <0C><1C><1C>T<EFBFBD>_<EFBFBD>_<EFBFBD>-rc<00><><00>t|j|jj|jj|j
jfi|j <00><01>}|j||d<01><02>t|j|jj|jfi|j <00><01>}|j||d<01><02>y)NT)<01> reboot_en) r#rrrrr"rrr%r&r)r<00> debug_dir<69> stage4_rebootr's r<00>make_and_run_reboot_stagesz,WF_RTLchecker0306.make_and_run_reboot_stages*s<><00><00><1E>t<EFBFBD>~<7E>~<7E>t<EFBFBD>{<7B>{<7B>/C<>/C<>T<EFBFBD>[<5B>[<5B>EY<45>EY<45>[_<>[g<>[g<>[p<>[p<>D<02>tx<74>uC<02>uC<02>D<02> <0A> <0C><1C><1C>]<5D>I<EFBFBD><14><1C>F<>#<23>D<EFBFBD>L<EFBFBD>L<EFBFBD>$<24>+<2B>+<2B>2F<32>2F<32><04>H[<5B>H[<5B>n<>_c<5F>_m<5F>_m<5F>n<>
<EFBFBD> <0C><1C><1C>Z<EFBFBD><19>d<EFBFBD><1C>Cr) <0B>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>dict<63>str<74>objectrr)r.<00> __classcell__<5F>rs@rrr s1<00><><00><08>A<01><14>A<01><03>A<01>F<EFBFBD>A<01>.<2E>,Drra<>1. Your task is to write a verilog testbench for an verilog RTL module code (we call it as "DUT", device under test). The infomation we have is the problem description that guides student to write the RTL code (DUT) and the header of the "DUT". Our target is to generate the verilog testbench for the DUT. This testbench can check if the DUT in verilog satisfies all technical requirements of the problem description.
2. You are in the first stage. In this stage, please summarize the technical details of the DUT and give me a technical specification of the testbench generation task, so we can use it to design its corresponding testbench.
3. The core of testbench is the testcases. It usually include two parts logically: the input signals to the DUT and the expected result signals from DUT. The testbench will send the input signals to DUT and check if the result signals are the same as the expected result signals. If they are the same, this means the DUT is passed. Otherwise the DUT fails.
4. Your technical specification should include these sections:
- section 1: specification of the DUT, including the module header of the RTL code. If table or other detailed data is provided in the original problem description, DO repeat them in your response. They are very important!!!
5. your response should be in the form of JSON.
6. below is the information including the problem description and the DUT header:a<>your response must be in JSON form. example:
{
"circuit type": "...", # type: string. should be "CMB" for combinational circuit or "SEQ" for sequential circuit. you should only choose one from "CMB" and "SEQ".
"important data": "...", # type: string. If no table, state transition or other direct data, leave this with ""
"technical specifications": ["...", "...", ...] # each element of the list is one specification string, the starting of the string is its index
}
c<00>$<00><00>eZdZ<02>fd<01>Zd<02>Z<04>xZS)rc <00>h<00><01>d|d<t<00>|<00>di|<02><01>||_t|_t
|_y)NT<4E> json_mode)<01>stage_1)r rr<00> STAGE1_TXT1<54>txt1<74> STAGE1_TXT2<54>txt2)rrrrs <20>rrzStage1.__init__Bs2<00><><00>!%<25> <09>+<2B><1E> <0A><07><18>0<>i<EFBFBD>0<>"<22><04><0E><1F><04> <09><1F><04> rc<00>:<00>d|_|j|j<00>|jd<02>|j|jd<00>|jd<04>|j|jd<00>|j|j<00>y)N<><00> RTL circuit problem description:<3A> description<6F> DUT header:<3A>header)<05>prompt<70>add_prompt_liner=rr?r(s r<00> make_promptzStage1.make_promptIsx<00><00><18><04> <0B> <0C><1C><1C>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'<27> <0C><1C><1C>?<3F>@<40> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>M<EFBFBD>:<3A>;<3B> <0C><1C><1C>]<5D>+<2B> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>H<EFBFBD>5<>6<> <0C><1C><1C>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'r<00>r/r0r1rrHr6r7s@rrrAs <00><><00> <20>
(rra!1. Your task is to write a verilog testbench for an verilog RTL module code (we call it as "DUT", device under test). The infomation we have is the problem description that guides student to write the RTL code (DUT) and the header of the "DUT". Our target is to generate the verilog testbench for the DUT. This testbench can check if the DUT in verilog satisfies all technical requirements of the problem description.
2. you are in section 2. in this section, please give me the test scenarios. you only need to describe the stimulus in each test scenarios. If time is important, please inform the clock cycle information. we will use the stimulus description to generate the test vectors and send them to DUT. you must not tell the expected results even though you know that.
3. your information is:a<>
you only need to describe the stimulus in each test scenarios. If time is important, please inform the clock cycle information. we will use the stimulus description to generate the test vectors and send them to DUT. you must not tell the expected results even though you know that.
your response must be in JSON form. example:
{
"scenario 1": "...", # each content is a string
"scenario 2": "...",
"scenario 3": "...",
...
}c<00>&<00><00>eZdZd<03>fd<01> Zd<02>Z<04>xZS)rc <00>v<00><01>d|d<t<00>|<00>di|<03><01>||_||_t|_t |_y)NTr:)<01>stage_2)r rr<00>response_stage1<65> STAGE2_TXT1r=<00> STAGE2_TXT2r?)rrrMrrs <20>rrzStage2.__init__gs:<00><><00>!%<25> <09>+<2B><1E> <0A><07><18>0<>i<EFBFBD>0<>"<22><04><0E>.<2E><04><1C><1F><04> <09><1F><04> rc<00><><00>d|_|j|j<00>|jd<02>|j|jd<00>|jd<04>|j|j<00>|jd<05>|j|jd<00>|j|j
<00>y)NrArBrC<00>RTL testbench specification:rDrE)rFrGr=rrMr?r(s rrHzStage2.make_promptos<><00><00><18><04> <0B> <0C><1C><1C>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'<27> <0C><1C><1C>?<3F>@<40> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>M<EFBFBD>:<3A>;<3B> <0C><1C><1C>;<3B><<3C> <0C><1C><1C>T<EFBFBD>1<>1<>2<> <0C><1C><1C>]<5D>+<2B> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>H<EFBFBD>5<>6<> <0C><1C><1C>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'r<00><02>returnNrIr7s@rrrfs <00><><00> <20> (rra<>1. Your task is to write a verilog testbench for an verilog RTL module code (we call it as "DUT", device under test). The information we have is the problem description that guides student to write the RTL code (DUT) and the header of the "DUT". Our target is to generate the verilog testbench for the DUT. This testbench can check if the DUT in verilog satisfies all technical requirements of the problem description.
2. you are in section 3; in this section, please give me the rules of an ideal DUT. you should give these rules in python. (For convenience, you can use binary or hexadecimal format in python, i.e. 0b0010 and 0x1a). Later we will use these ideal rules to generate expected values in each test scenario. currently you must only generate the rules. the input of these rules should be related to the test vectors from test scenario. the rule should give the expected values under test vectors.
3. your information is:c<00>,<00><00>eZdZd<04>fd<01> Zd<02>Zd<03>Z<05>xZS)rc <00>d<00><01>t<00>|<00>di|<04><01>||_||_||_t
|_y)N)<01>stage_3)r rrrM<00>response_stage2<65> STAGE3_TXT1r=)rrrMrWrrs <20>rrzStage3.__init__<5F>s1<00><><00> <0A><07><18>0<>i<EFBFBD>0<>"<22><04><0E>.<2E><04><1C>.<2E><04><1C><1F><04> rc<00><><00>d|_|j|j<00>|jd<02>|j|jd<00>|jd<04>|j|j<00>|jd<05>|j|jd<00>|jd<07>|j|j
<00>|jd<08>y) NrArBrCrQrDrEzqtest scenario: (please note the test vectors below, it will help you determine the input parameters of the rules)z<>your response should only contain python code. For convenience, you can use binary or hexadecimal format in python. For example: 0b0010 and 0x1a)rFrGr=rrMrWr(s rrHzStage3.make_prompt<70>s<><00><00><18><04> <0B> <0C><1C><1C>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'<27> <0C><1C><1C>?<3F>@<40> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>M<EFBFBD>:<3A>;<3B> <0C><1C><1C>;<3B><<3C> <0C><1C><1C>T<EFBFBD>1<>1<>2<> <0C><1C><1C>]<5D>+<2B> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>H<EFBFBD>5<>6<> <0C><1C><1C>Q<02> R<02> <0C><1C><1C>T<EFBFBD>1<>1<>2<> <0C><1C><1C>p<02> qrc<00>l<00>|j|jd<01>}d}|D]
}||dzz }<02> ||_y)N<>pythonrA<00>
<EFBFBD><02> extract_coder)r<00> python_codesr<00> python_codes r<00>postprocessingzStage3.postprocessing<6E>sB<00><00><1B>(<28>(<28><14><1D><1D><08>A<> <0C><15><08>'<27> +<2B>K<EFBFBD> <14> <0B>d<EFBFBD>*<2A> *<2A>H<EFBFBD> +<2B> <20><04> rrR<00>r/r0r1rrHrar6r7s@rrr<00>s<00><><00> <20>q<02>$!rra<>1. background: Your task is to write a verilog testbench for an verilog RTL module code (we call it as "DUT", device under test). The infomation we have is the problem description that guides student to write the RTL code (DUT) and the header of the "DUT". Our target is to generate the verilog testbench for the DUT. This testbench can check if the DUT in verilog satisfies all technical requirements of the problem description.
2. Task: you are in section 3. in this section, please give me the golden RTL code that fullfill the description. This golden RTL code should have the same input and output ports as module header. The name of the module is "golden_DUT". The module will be the reference module in the final testbench. The final testbench will compare the golden RTL's output signals with DUT's output signals. If the same in all cases, the test passes. Your current task is to generate the golden RTL module.
3. Prior Knowledge: We already have the core rules expressed in python. You can use this infomation to help you design your golden RTL. You can use high level syntax and unsynthesizable syntax. Your golden module name is "golden_DUT" and ports are the same as DUT's ports.
4. your information is:c<00>,<00><00>eZdZd<04>fd<01> Zd<02>Zd<03>Z<05>xZS)r!c <00>d<00><01>t<00>|<00>di|<04><01>||_||_||_t
|_y)N)<01>stage_3b)r rrrM<00>response_stage3<65> STAGE3B_TXT1r=)rrrMrfrrs <20>rrzStage3b.__init__<5F>s1<00><><00> <0A><07><18>1<>y<EFBFBD>1<>"<22><04><0E>.<2E><04><1C>.<2E><04><1C> <20><04> rc<00><><00>d|_|j|j<00>|jd<02>|j|jd<00>|jd<04>|j|j<00>|jd<05>|j|jd<00>|jd<07>|j|j
<00>|jd<08>y) NrArBrCrQrDrEz"IMPORTANT: THE RULES OF IDEAL DUT:<3A>_please generate the golden module code. please only generate the verilog codes, no other words.)rFrGr=rrMrfr(s rrHzStage3b.make_prompt<70>s<><00><00><18><04> <0B> <0C><1C><1C>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'<27> <0C><1C><1C>?<3F>@<40> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>M<EFBFBD>:<3A>;<3B> <0C><1C><1C>;<3B><<3C> <0C><1C><1C>T<EFBFBD>1<>1<>2<> <0C><1C><1C>]<5D>+<2B> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>H<EFBFBD>5<>6<> <0C><1C><1C>A<>B<> <0C><1C><1C>T<EFBFBD>1<>1<>2<> <0C><1C><1C>~<7E>rc<00>L<00>|j|jd<01>d|_y)N<>verilog<6F><67><EFBFBD><EFBFBD><EFBFBD>r]r(s rrazStage3b.postprocessing<6E>s<00><00><1C>)<29>)<29>$<24>-<2D>-<2D><19>C<>B<EFBFBD>G<><04> rrRrbr7s@rr!r!<00>s<00><><00>!<21>@<02>$Hrr!a<>1. Your task is to write a verilog testbench for an verilog RTL module code (we call it as "DUT", device under test). The infomation we have is
- 1.1. the problem description that guides student to write the RTL code (DUT) and the header of the "DUT".
- 1.2. the module header.
- 1.3. the technical specification of testbench
- 1.4. test scenarios which determines value and sequential information of test vectors
- 1.5. the golden RTL codes in verilog. In testbench you should compare the signals from golden RTL and DUT. If not the same, then this DUT fails in the test.
Our target is to generate the verilog testbench for the DUT. This testbench can check if the DUT in verilog satisfies all technical requirements from the problem description.
2. you are in section 4. in this section, you will be provided with test scenarios and golden DUT. please highly based on these information to generate the testbench.
3. There should be a reg "error". It is "0" at the beginning. In each scenario, if test fails, the error should become "1" permanently and testbench should print like "scenario ... failed, got ..., expected ...". At the end of the test, if the "error" is still "0", testbench should print "All test cases passed!". This is very important!
4. In the scenarios testing part, do not directly write the value of expected value, but generate expected value from golden RTL.
5. your information is:c<00>,<00><00>eZdZd<04>fd<01> Zd<02>Zd<03>Z<05>xZS)r#c <00><><00><01>t<00>|<00>di|<05><01>||_||_||_||_t |_d|_y)NrA)<01>stage_4) r rrrMrW<00>response_stage3b<33> STAGE4_TXT1r=<00> TB_code_out)rrrMrWrprrs <20>rrzStage4.__init__<5F>sA<00><><00> <0A><07><18>0<>i<EFBFBD>0<>"<22><04><0E>.<2E><04><1C>.<2E><04><1C> 0<><04><1D><1F><04> <09><1D><04>rc<00>.<00>d|_|j|j<00>|jd<02>|j|jd<00>|jd<04>|j|j<00>|jd<05>|j|jd<00>|jd<07>|j|j
<00>|jd<08>|j|j <00>|jd <09>y)
NrArBrCrQrDrEzIMPORTANT - test scenario:z{IMPORTANT - golden RTL: (please instantiate it in your testbench. Your code should not contain the full code of golden RTL)ri)rFrGr=rrMrWrpr(s rrHzStage4.make_prompt<70>s<><00><00><18><04> <0B> <0C><1C><1C>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>'<27> <0C><1C><1C>?<3F>@<40> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>M<EFBFBD>:<3A>;<3B> <0C><1C><1C>;<3B><<3C> <0C><1C><1C>T<EFBFBD>1<>1<>2<> <0C><1C><1C>]<5D>+<2B> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>H<EFBFBD>5<>6<> <0C><1C><1C>9<>:<3A> <0C><1C><1C>T<EFBFBD>1<>1<>2<> <0C><1C><1C>[<02> \<02> <0C><1C><1C>T<EFBFBD>2<>2<>3<> <0C><1C><1C>~<7E>rc<00><><00>|j|jd<01>d|_|jdz|jz|_y)Nrkrlr\)r^rrprrr(s rrazStage4.postprocessing<6E>s;<00><00><1C>)<29>)<29>$<24>-<2D>-<2D><19>C<>B<EFBFBD>G<><04> <0A><1F>=<3D>=<3D>4<EFBFBD>/<2F>$<24>2G<32>2G<32>G<><04>rrRrbr7s@rr#r#<00>s<00><><00><1E>@<02>*Hrr#c<00>B<00><00>eZdZdedededdf<08>fd<06> Zd<07>Zd<08>Zd <09>Z<08>xZ S)
r%r&<00> checklist_str<74>max_iterrSNc <00>x<00><01>t<00>|<00>di|<04><01>||_||_||_d|_d|_d|_y)NFr)<01>stage_checklist)r rrrwrr<00>exit<69>iter<65> TB_modified)rr&rvrwrrs <20>rrzStageChecklist.__init__<5F>s?<00><><00> <0A><07><18>8<>i<EFBFBD>8<>&<26><04><0E> <20><04> <0A>"<22><04><18><19><04> <09><15><04> <09> <20><04>rc<00>.<00>d|_|jd<02>|jd<03>|j|jdz<00>|jd<05>|j|j<00>|jd<06>|jd<07>y)NrAzOplease check the if the testbench code contains all the items in the checklist:ztestbench code here...
r\zYplease check the if the testbench code above contains all the scenarios in the checklist:z<>please reply 'YES' if all the items are included. If some of the items are missed in testbench, please add the missing items and reply the modified testbench code (full code).ziVERY IMPORTANT: please ONLY reply 'YES' or the full code modified. NEVER remove other irrelevant codes!!!)rFrGrrrr(s rrHzStageChecklist.make_prompts<><00><00><18><04> <0B> <0C><1C><1C>n<>o<> <0C><1C><1C>7<>8<> <0C><1C><1C>T<EFBFBD>-<2D>-<2D><04>4<>5<> <0C><1C><1C>x<>y<> <0C><1C><1C>T<EFBFBD>^<5E>^<5E>,<2C> <0C><1C><1C>O<03> P<03> <0C><1C><1C>I<02> Jrc<00><><00>|xjdz c_d|jvrd|_yd|_|j |jd<04>d|_y)N<><00>YESTrkrl)r{rrzr|r^rrr(s rrazStageChecklist.postprocessing sH<00><00> <0C> <09> <09>Q<EFBFBD><0E> <09> <10>D<EFBFBD>M<EFBFBD>M<EFBFBD> !<21><1C>D<EFBFBD>I<EFBFBD>#<23>D<EFBFBD> <1C>#<23>0<>0<><14><1D><1D> <09>J<>2<EFBFBD>N<>D<EFBFBD> rc<00><00>d|_|jsr|j|jkrX|j <00>|j <00>|j <00>|js|j|jkr<01>Vyyyy)NF)r|rzr{rwrH<00>call_gptrar(s r<00>runzStageChecklist.runs`<00><00> <20><04><18><17>9<EFBFBD>9<EFBFBD>4<EFBFBD>9<EFBFBD>9<EFBFBD>t<EFBFBD>}<7D>}<7D>#<<3C> <10> <1C> <1C> <1E> <10>M<EFBFBD>M<EFBFBD>O<EFBFBD> <10> <1F> <1F> !<21><18>9<EFBFBD>9<EFBFBD>4<EFBFBD>9<EFBFBD>9<EFBFBD>t<EFBFBD>}<7D>}<7D>#<<3C>9<EFBFBD>#<<3C>9r)
r/r0r1r4<00>intrrHrar<>r6r7s@rr%r%<00>s6<00><><00>!<21>s<EFBFBD>!<21>#<23>!<21><03>!<21>UY<55>!<21>J<02>O<01>"rr%c<00>h<00>tdd<02><03>}|j<00>t|j<00>y)Nz gpt-3.5-turbozgpt_key/gpt_key_0306.json)<02>model<65>
gptkeypath)rrH<00>printrF)<01> test_stage1s r<00>testr<74>s)<00><00><18><1F>?Z<>[<5B>K<EFBFBD><0F><1B><1B><1D> <09>+<2B>
<1C>
<1C>r)r2<00> base_scriptrr<00>jsonrr<r>rrNrOrrXrrgr!rqr#r%r<><00>rr<00><module>r<>s<><00><01><04>6<> <0B>%D<01>
<EFBFBD>%D<01>P U<01> <0B> <04> <0B>(<28>_<EFBFBD>(<28>0 <1B> <0B> <05> <0B>(<28>_<EFBFBD>(<28>2 <1B> <0B> !<21>_<EFBFBD> !<21>D<1B> <0C>H<01>o<EFBFBD>H<01><
<1B> <0B>"H<01>_<EFBFBD>"H<01>J!"<22>_<EFBFBD>!"<22>Jr