1 Commits

Author SHA1 Message Date
f48e277369 VBA Test Code 2025-06-16 14:23:32 -07:00
232 changed files with 88609 additions and 106198 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
LSL2/STPROC/TEST_DANIEL*.txt
LSL2/STPROC/TEST_DAKOTA.txt
LSL2/STPROC/JONATHAN_SERVICES.txt
LSL2/STPROC/CHASE_SERVICES.txt
.vscode/**/*.png

234
.vscode/.txt vendored Normal file
View File

@ -0,0 +1,234 @@
// T:\met08resisrp2100\06_SourceCode\met08resisrp2100\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// x.Date // 001
// x.Employee // 002
// x.Recipe // 003
// x.Reactor // 004
// x.RDS // 005
// x.PSN // 006
// x.Layer // 007
// x.Zone // 008
// T:\met08anlysdifaast230\06_SourceCode\met08anlysdifaast230\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// x.PSN // 001
// x.Reactor // 002
// logistics.MesEntity // 003
// x.RDS // 004
// x.Recipe // 005
// x.Employee // 006
// x.SlotNumber // 007
// T:\met08thftirstratus\06_SourceCode\met08thftirstratus\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// "Stratus_" // 001
// x.Date // 002
// logistics.JobID // 003
// "FQA Thickness" // 004
// x.Employee // 005
// x.Recipe // 006
// x.Reactor // 007
// x.RDS // 008
// x.PSN // 009
// x.Lot // 010
// x.Cassette // 011
// x.MeanThickness // 012
// descriptions[i].Slot // 013
// descriptions[i].Mean // 014
// T:\met08thftirqs408m\06_SourceCode\met08thftirqs408m\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// Bio-Rad UniqueId // 001
// Date // 002
// ThicknessFourteenCriticalPointsAverage // 003
// Recipe // 004
// Reactor // 005
// RDS // 006
// PSN // 007
// Layer // 008
// Zone // 009
// Cassette // 010
// Wafer // 011
// RVThickness // 012
// Position // 013
// Thickness // 014
// T:\met08resimapcde\06_SourceCode\met08resimapcde\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// x.UniqueId // 001
// x.Run // 002
// x.Date // 003
// x.Lot // 004
// x.Recipe // 005
// x.Reactor // 006
// x.RDS // 007
// x.PSN // 008
// x.Layer // 009
// x.Zone // 010
// logistics.MesEntity // 011
// x.Employee // 012
// x.Engineer // 013
// x.DLRatio // 014
// x.Temp // 015
// x.AutoOptimizeGain // 016
// x.AutoProbeHeightSet // 017
// x.DataReject // 018
// x.FileName // 019
// x.Avg // 020
// x.StdDev // 021
// x.SemiRadial // 022
// description.Pt // 023
// description.R // 024
// description.T // 025
// description.Rs // 026
// description.Merit // 027
// T:\met08resihgcv\06_SourceCode\met08resihgcv\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// x.UniqueId // 001
// logistics.MesEntity // 002
// x.Reactor // 003
// x.RDS // 004
// x.PSN // 005
// x.Layer // 006
// x.Zone // 007
// x.Wafer // 008
// x.Lot // 009
// x.Plan // 010
// x.Date // 011
// x.WaferSize // 012
// x.Ccomp // 013
// x.Area // 014
// x.CondType // 015
// x.Model // 016
// x.StartVoltage // 017
// x.StopVoltage // 018
// x.RampRate // 019
// x.GLimit // 020
// x.SetupFile // 021
// x.SetupFile // 022
// x.Folder // 023
// x.Pattern // 024
// x.RhoMethod // 025
// x.NAvgMean // 026
// x.NAvgStdDev // 027
// x.NAvgRadialGradient // 028
// x.NslMean // 029
// x.NslStdDev // 030
// x.NslRadialGradient // 031
// x.VdMean // 032
// x.VdStdDev // 033
// x.VdRadialGradient // 034
// x.FlatZMean // 035
// x.FlatZStdDev // 036
// x.FlatZRadialGradient // 037
// x.RhoAvgMean // 038
// x.RhoAvgStdDev // 039
// x.RhoAvgRadialGradient // 040
// x.RhoslMean // 041
// x.RhoslStdDev // 042
// x.RhoslRadialGradient // 043
// x.PhaseMean // 044
// x.PhaseStdDev // 045
// x.PhaseRadialGradient // 046
// x.GradeMean // 047
// x.GradeStdDev // 048
// x.GradeRadialGradient // 049
// x.RsMean // 050
// x.RsStdDev // 051
// x.RsRadialGradient // 052
// description.Index // 053
// description.NAvg // 054
// description.Nsl // 055
// description.Vd // 056
// description.FlatZ // 057
// description.RhoAvg // 058
// description.Rhosl // 059
// description.Phase // 060
// description.Grade // 061
// T:\met08ddupsfs6420\06_SourceCode\met08ddupsfs6420\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// x.AreaCountAvg // 001 - AreaCountAvg
// x.AreaCountMax // 002 - AreaCountMax
// x.AreaCountMin // 003 - AreaCountMin
// x.AreaCountStdDev // 004 - AreaCountStdDev
// x.AreaTotalAvg // 005 - AreaTotalAvg
// x.AreaTotalMax // 006 - AreaTotalMax
// x.AreaTotalMin // 007 - AreaTotalMin
// x.AreaTotalStdDev // 008 - AreaTotalStdDev
// x.Date // 009 -
// x.HazeAverageAvg // 010 - Haze Average
// x.HazeAverageMax // 011 -
// x.HazeAverageMin // 012 -
// x.HazeAverageStdDev // 013 -
// x.HazeRegionAvg // 014 -
// x.HazeRegionMax // 015 -
// x.HazeRegionMin // 016 -
// x.HazeRegionStdDev // 017 -
// x.Lot // 018 -
// x.LPDCM2Avg // 019 -
// x.LPDCM2Max // 020 -
// x.LPDCM2Min // 021 -
// x.LPDCM2StdDev // 022 -
// x.LPDCountAvg // 023 -
// x.LPDCountMax // 024 -
// x.LPDCM2Min // 025 -
// x.LPDCountStdDev // 026 -
// x.Employee // 027 -
// x.RDS // 028 - Lot
// x.Reactor // 029 - Process
// x.Recipe // 030 - Part
// x.ScratchCountAvg // 031 - Scratch Count
// x.ScratchCountMax // 032 -
// x.ScratchCountMin // 033 -
// x.ScratchTotalStdDev // 034 -
// x.ScratchTotalAvg // 035 - Scratch Length
// x.ScratchTotalMax // 036 -
// x.ScratchTotalMin // 037 -
// x.ScratchTotalStdDev // 038 -
// x.SumOfDefectsAvg // 039 - Average Sum of Defects
// x.SumOfDefectsMax // 040 - Max Sum of Defects
// x.SumOfDefectsMin // 041 - Min Sum of Defects
// x.SumOfDefectsStdDev // 042 - SumOfDefectsStdDev
// logistics.MesEntity // 043 -
// T:\met08ddupsp1tbi\06_SourceCode\met08ddupsp1tbi\Adaptation\FileHandlers\OpenInsight\FileRead.cs
// x.DcnLpdMin // 001 -
// x.DcnLpdMax // 002 -
// x.DcnLpdMean // 003 - DCN LPD
// x.DcnAreaCountMin // 004 -
// x.DcnAreaCountMax // 005 -
// x.DcnAreaCountMean // 006 - DCN Area
// x.DcnAreaMin // 007 -
// x.DcnAreaMax // 008 -
// x.Date // 009 -
// x.DcnHazeAvgMean // 010 - Haze Average
// string.Empty // 011 -
// string.Empty // 012 -
// string.Empty // 013 -
// string.Empty // 014 -
// string.Empty // 015 -
// string.Empty // 016 -
// string.Empty // 017 -
// string.Empty // 018 -
// string.Empty // 019 -
// string.Empty // 020 -
// string.Empty // 021 -
// string.Empty // 022 -
// string.Empty // 023 -
// string.Empty // 024 -
// string.Empty // 025 -
// string.Empty // 026 -
// string.Empty // 027 -
// x.RDS // 028 - Lot
// x.Reactor // 029 - Process
// x.Recipe // 030 - Part
// x.DcnScrMean // 031 - Scratch Count
// string.Empty // 032 -
// string.Empty // 033 -
// string.Empty // 034 -
// x.DcnMicroScrMean // 035 - Scratch Length
// string.Empty // 036 -
// string.Empty // 037 -
// string.Empty // 038 -
// x.DcnAllMean // 039 - Average Sum of Defects
// x.DcnAllMax // 040 - Max Sum of defects
// x.DcnAllMin // 041 - Min Sum of Defects
// string.Empty // 042 -
// logistics.MesEntity // 043 -
// x.DcnAreaMean // 044 - DCN MM2

280
.vscode/.vba vendored Normal file
View File

@ -0,0 +1,280 @@
Service SetJsonFromProcessDataStandardFormat(DataPath, FileName)
OSREAD Text FROM DataPath:FileName THEN
Records = 0;
Sequence = -1;
HeaderId = -1;
SubgroupId = -1;
ColumnTitlesLine = 0;
FoundEndOfFile = False$;
json = '{ "Records": [':@FM;
SWAP '|' WITH @VM IN Text;
SWAP CRLF$ WITH @FM IN Text;
ColumnTitlesIndexCount = 0;
LineCount = DCOUNT(Text, @FM);
FOR LineLoopIndex = 1 TO LineCount
Line = Text<LineLoopIndex>;
IF FoundEndOfFile = True$ THEN
IF Line<1, 1> = 'END_OFFSET' THEN
ColumnTitlesLine = LineLoopIndex + 2;
END
IF ColumnTitlesLine GT 0 THEN
Row = '{';
SegmentsCount = DCOUNT(Line, @VM);
IF ColumnTitlesIndexCount EQ 0 THEN
FOR SegmentLoopIndex = 1 TO SegmentsCount
IF SegmentLoopIndex = ColumnTitlesLine THEN
ColumnTitlesIndexCount = SegmentsCount - 2;
END
NEXT SegmentLoopIndex
END
IF ColumnTitlesIndexCount GT 0 AND SegmentsCount = ColumnTitlesIndexCount THEN
FOR SegmentLoopIndex = 1 TO SegmentsCount
Value = SRP_String('Trim', Line<1,SegmentLoopIndex>, 'FB');
swap '"' with '\"' in Value;
swap '\' with '\\' in Value;
Column = Text<ColumnTitlesLine,SegmentLoopIndex + 1>;
IF Column[1,1] = '"' AND Column[-1,1] = '"' THEN
Column = Column[2,LEN(Column) - 2];
END
Row = Row:'"':Column:'":"':Value:'",';
NEXT SegmentLoopIndex
Row = SRP_String('Trim', Row, 'B', ','):'},':@FM;
json = json:Row;
Records = Records + 1;
END
END
END
IF Line = 'EOF' THEN
FoundEndOfFile = True$;
Line = Text<LineLoopIndex - 1>;
Convert Tab$ to @FM IN Line
SWAP '=' WITH @VM IN Line;
SWAP ';' WITH @FM IN Line;
IF Line<2, 1> = 'B_HeaderId' THEN
HeaderId = Line<2, 2>
END
IF Line<3, 1> = 'B_SubgroupId' THEN
SubgroupId = Line<3, 2>
END
IF Line<14, 1> = 'B_SEQUENCE' THEN
Sequence = Line<14, 2>
END
END
NEXT LineLoopIndex
IF ColumnTitlesLine GT 0 AND ColumnTitlesIndexCount GT 0 THEN
json = SRP_String('Trim', json, 'B', @FM);
json = SRP_String('Trim', json, 'B', ',');
json = json:@FM:']':@FM:',"Sequence":':Sequence:',"HeaderId":':HeaderId:',"SubgroupId":':SubgroupId:',"Count":':Records:'}';
SWAP @FM WITH CRLF$ IN json;
END
IF LEN(json) GT 0 THEN
set_status(0);
OSWRITE json to DataPath:FileName:'.json'
StatusCode = '';
If Get_Status(StatusCode) THEN
ErrorMessage = 'Error writing run data file to repository: StatusCode = ' : StatusCode;
Metrology_Services('LogResults', '', Machine, 'UID001', Service : ' : ' : ErrorMessage);
Set_Status(0);
END
END
END ELSE
json = '';
END
Response = json;
end service
Service GetStratus(Handle)
Result = ''; // Service ImportStratusData(
Offset = 1
FieldPosition = 13
FieldPositionIncrement = 2
Result<1, 1> = SRP_JSON(Handle, 'GETVALUE', 'Count');
Result<1, 2> = SRP_JSON(Handle, 'GETVALUE', 'Sequence');
Result<1, 3> = SRP_JSON(Handle, 'GETVALUE', 'HeaderId');
Result<1, 4> = SRP_JSON(Handle, 'GETVALUE', 'SubgroupId');
FOR RecordIndex = 1 TO Result<1, 1>
IF RecordIndex = 1 THEN
Result<2> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DateTime'); // Timestamp
Result<3> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']MesEntity'); // Tool
Result<4> = 'FQA Thickness'; // DataType
Result<5> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Employee'); // Operator
Result<6> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Recipe'); // Recipe
Result<7> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Reactor'); // Reactor
Result<8> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RDS'); // RDSNo
Result<9> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']PSN'); // PSN
Result<10> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Batch'); // BatchID
Result<11> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Cassette'); // Cassette
Result<12> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']GradeMean'); // ThickAvg
END
ForOffset = (RecordIndex - 1) * FieldPositionIncrement;
Result<FieldPosition + ForOffset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Slot'); // Position
Result<FieldPosition + ForOffset + Offset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Mean'); // DataPoint
NEXT RecordIndex
Response = Result;
end service
Service GetBioRadEPPFQA(Handle)
Result = ''; // Service ImportBioRadEPPFQAData(
Offset = 1
FieldPosition = 13
FieldPositionIncrement = 1
Result<1, 1> = SRP_JSON(Handle, 'GETVALUE', 'Count');
Result<1, 2> = SRP_JSON(Handle, 'GETVALUE', 'Sequence');
Result<1, 3> = SRP_JSON(Handle, 'GETVALUE', 'HeaderId');
Result<1, 4> = SRP_JSON(Handle, 'GETVALUE', 'SubgroupId');
FOR RecordIndex = 1 TO Result<1, 1>
IF RecordIndex = 1 THEN
Result<2> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DateTime'); // Timestamp
Result<4> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Recipe'); // ScanRecipe
Result<5> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Reactor'); // ReactorID
Result<6> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RDS'); // WMOKeyID
Result<8> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Layer'); // RunDataLayer
END
ForOffset = (RecordIndex - 1) * FieldPositionIncrement;
Result<FieldPosition + ForOffset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Position'); // Position
Result<FieldPosition + ForOffset + Offset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Thickness'); // DataPoint
NEXT RecordIndex
Response = Result;
end service
Service GetBioRad(Handle)
Result = ''; // Service ImportBioRadData(
Offset = 1
FieldPosition = 13
FieldPositionIncrement = 2
Result<1, 1> = SRP_JSON(Handle, 'GETVALUE', 'Count');
Result<1, 2> = SRP_JSON(Handle, 'GETVALUE', 'Sequence');
Result<1, 3> = SRP_JSON(Handle, 'GETVALUE', 'HeaderId');
Result<1, 4> = SRP_JSON(Handle, 'GETVALUE', 'SubgroupId');
FOR RecordIndex = 1 TO Result<1, 1>
IF RecordIndex = 1 THEN
Result<2> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DateTime'); // TimeStamp
Result<4> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Recipe'); // ScanRecipe
Result<5> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Reactor'); // ReactorID
Result<5> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Reactor'); // ToolID
Result<6> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RDS'); // RDSKeyID
Result<7> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']PSN'); // PSN
Result<8> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Layer'); // RunDataLayer
Result<9> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Zone'); // RunDataZone
END
ForOffset = (RecordIndex - 1) * FieldPositionIncrement;
Result<FieldPosition + ForOffset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Position'); // Position
Result<FieldPosition + ForOffset + Offset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Thickness'); // DataPoint
NEXT RecordIndex
Response = Result;
end service
Service GetCDE(Handle)
Result = ''; // Service ImportCDEData(
Offset = 3
FieldPosition = 23
FieldPositionIncrement = 5
Result<1, 1> = SRP_JSON(Handle, 'GETVALUE', 'Count');
Result<1, 2> = SRP_JSON(Handle, 'GETVALUE', 'Sequence');
Result<1, 3> = SRP_JSON(Handle, 'GETVALUE', 'HeaderId');
Result<1, 4> = SRP_JSON(Handle, 'GETVALUE', 'SubgroupId');
FOR RecordIndex = 1 TO Result<1, 1>
IF RecordIndex = 1 THEN
Result<3> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Date'); // Timestamp
Result<5> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RecipeName'); // ScanRecip
Result<6> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Reactor'); // ReactorID
Result<7> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RDS'); // RDSKeyID
Result<8> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']PSN'); // PSN
Result<9> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Layer'); // RunDataLayer
Result<10> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Zone'); // RunDataZo
END
ForOffset = (RecordIndex - 1) * FieldPositionIncrement;
Result<FieldPosition + ForOffset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']InferredPoint'); // Position
Result<FieldPosition + ForOffset + Offset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Data'); // DataPoint
Result<FieldPosition + ForOffset + FieldPositionIncrement - 1> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']MeritGOF'); // N/A
NEXT RecordIndex
Response = Result;
end service
Service GetHgCV(Handle)
Result = ''; // Service ImportHgCVData(
Offset = 5
PhaseOffset = 7
FieldPosition = 53
FieldPositionIncrement = 9
Result<1, 1> = SRP_JSON(Handle, 'GETVALUE', 'Count');
Result<1, 2> = SRP_JSON(Handle, 'GETVALUE', 'Sequence');
Result<1, 3> = SRP_JSON(Handle, 'GETVALUE', 'HeaderId');
Result<1, 4> = SRP_JSON(Handle, 'GETVALUE', 'SubgroupId');
FOR RecordIndex = 1 TO Result<1, 1>
IF RecordIndex = 1 THEN
Result<2> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']MesEntity'); // ToolID
Result<3> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Reactor'); // ReactorID
Result<4> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RDS'); // RDSKeyID
Result<5> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']PSN'); // PSN
Result<8> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Wafer'); // LayerZonePair
Result<11> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Date'); // Timestamp
END
ForOffset = (RecordIndex - 1) * FieldPositionIncrement;
Result<FieldPosition + ForOffset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Site'); // Position
Result<FieldPosition + ForOffset + Offset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RhoAvg'); // HgCVDataPoint
Result<FieldPosition + ForOffset + PhaseOffset> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Phase'); // PhaseDataPoint
Result<FieldPosition + ForOffset + FieldPositionIncrement - 1> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Grade'); // N/A
NEXT RecordIndex
Response = Result;
end service
Service GetTencor(Handle)
Result = ''; // Service ImportTencorData(
Result<1, 1> = SRP_JSON(Handle, 'GETVALUE', 'Count');
Result<1, 2> = SRP_JSON(Handle, 'GETVALUE', 'Sequence');
Result<1, 3> = SRP_JSON(Handle, 'GETVALUE', 'HeaderId');
Result<1, 4> = SRP_JSON(Handle, 'GETVALUE', 'SubgroupId');
FOR RecordIndex = 1 TO Result<1, 1>
IF RecordIndex = 1 THEN
Result<9> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Date'); // Timestamp
Result<10> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']HazeAverageAvg'); // HazeAvg
Result<28> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RDS'); // RDSKeyID
Result<30> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']WaferRecipe'); // ScanRecipe
Result<39> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']SumOfDefectsAvg'); // SoDAvg
Result<40> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']SumOfDefectsMax'); // SoDMax
Result<41> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']SumOfDefectsMin'); // SoDMin
Result<43> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']MesEntity'); // ScanTool
END
NEXT RecordIndex
Response = Result;
end service
Service GetSP1(Handle)
Result = ''; // Service ImportSP1Data(
Result<5, 1> = SRP_JSON(Handle, 'GETVALUE', 'Count');
Result<5, 2> = SRP_JSON(Handle, 'GETVALUE', 'Sequence');
Result<5, 3> = SRP_JSON(Handle, 'GETVALUE', 'HeaderId');
Result<5, 4> = SRP_JSON(Handle, 'GETVALUE', 'SubgroupId');
FOR RecordIndex = 1 TO Result<5, 1>
IF RecordIndex = 1 THEN
Result<9> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Date'); // Timestamp
Result<10> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnHazeAvgMean'); // HazeAvg
Result<28> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']RDS'); // RDSKeyID
Result<30> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']Session'); // ScanRecipe
IsMisfit = IndexC(Result<30>, 'MISFIT', 1)
IF IsMisfit THEN
Result<3> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnAllMean'); // SoDAvg
Result<2> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnAllMax'); // SoDMax
Result<1> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnAllMin'); // SoDMin
END ELSE
Result<39> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnAllMean'); // SoDAvg
Result<40> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnAllMax'); // SoDMax
Result<41> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnAllMin'); // SoDMin
END
Result<43> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']MesEntity'); // ScanTool
Result<44> = SRP_JSON(Handle, 'GETVALUE', 'Records[':RecordIndex:']DcnAreaMean'); // DCNMM2
END
NEXT RecordIndex
Response = Result;
end service

View File

@ -0,0 +1,50 @@
0 0 0.000 1 12 4.320 0.064 1.176 4/24/2025 1:56:23 AM 0.622 666335 55 6IN_SLIP 0.000 NA 4.440 12 1 SP101 0.357
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
|---|---|---|---|----|------|-------|-------|----------------------|-------|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|--------|----|----------|----|----|----|----|----|----|----|----|------|----|----|----|-------|-------|
| 0 | 0 | 0 | 1 | 12 | 4.32 | 0.064 | 1.176 | 4/24/2025 1:56:23 AM | 0.622 | | | | | | | | | | | | | | | | | | 666335 | 55 | 6IN_SLIP | 0 | | | | NA | | | | 4.44 | 12 | 1 | | SP101 | 0.357 |
<1>:0
<2>:0
<3>:0
<4>:1
<5>:12
<6>:4.32
<7>:0.064
<8>:1.176
<9>:4/24/2025 1:56:23 AM
<10>:0.622
<11>:
<12>:
<13>:
<14>:
<15>:
<16>:
<17>:
<18>:
<19>:
<20>:
<21>:
<22>:
<23>:
<24>:
<25>:
<26>:
<27>:
<28>:666335
<29>:55
<30>:6IN_SLIP
<31>:0
<32>:
<33>:
<34>:
<35>:NA
<36>:
<37>:
<38>:
<39>:4.44
<40>:12
<41>:1
<42>:
<43>:SP101
<44>:0.357

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,87 @@
HEADER_TAG HEADER_VALUE
FORMAT 2.00
NUMBER_PASSES 0001
HEADER_OFFSET H#######T
DATA_OFFSET D#######T
END_OFFSET E#######T
"Time" "A_LOGISTICS" "B_LOGISTICS" "Test" "Count" "Index" "MesEntity" "Date" "Employee" "Lot" "PSN" "Reactor" "Recipe" "Grade" "HeaderUniqueId" "RDS" "Session" "Side" "SrcDest" "UniqueId" "WaferID" "DcnAllMax" "DcnAllMean" "DcnAllMin" "DcnAllStdDev" "DcnAreaCountMax" "DcnAreaCountMean" "DcnAreaCountMin" "DcnAreaCountStdDev" "DcnAreaMax" "DcnAreaMean" "DcnAreaMin" "DcnAreaStdDev" "DcnBin1Max" "DcnBin1Mean" "DcnBin1Min" "DcnBin1StdDev" "DcnBin2Max" "DcnBin2Mean" "DcnBin2Min" "DcnBin2StdDev" "DcnBin3Max" "DcnBin3Mean" "DcnBin3Min" "DcnBin3StdDev" "DcnBin4Max" "DcnBin4Mean" "DcnBin4Min" "DcnBin4StdDev" "DcnBin5Max" "DcnBin5Mean" "DcnBin5Min" "DcnBin5StdDev" "DcnBin6Max" "DcnBin6Mean" "DcnBin6Min" "DcnBin6StdDev" "DcnBin7Max" "DcnBin7Mean" "DcnBin7Min" "DcnBin7StdDev" "DcnBin8Max" "DcnBin8Mean" "DcnBin8Min" "DcnBin8StdDev" "DcnHazeAvgMax" "DcnHazeAvgMean" "DcnHazeAvgMin" "DcnHazeAvgStdDev" "DcnHazeMedianMax" "DcnHazeMedianMean" "DcnHazeMedianMin" "DcnHazeMedianStdDev" "DcnHazeStdDevMax" "DcnHazeStdDevMean" "DcnHazeStdDevMin" "DcnHazeStdDevStdDev" "DcnLpdESMax" "DcnLpdESMean" "DcnLpdESMin" "DcnLpdESStdDev" "DcnLpdMax" "DcnLpdMean" "DcnLpdMin" "DcnLpdNMax" "DcnLpdNMean" "DcnLpdNMin" "DcnLpdNStdDev" "DcnLpdStdDev" "DcnMicroScrMax" "DcnMicroScrMean" "DcnMicroScrMin" "DcnMicroScrStdDev" "DcnScrMax" "DcnScrMean" "DcnScrMin" "DcnScrStdDev" "DcnSlipMax" "DcnSlipMean" "DcnSlipMin" "DcnSlipStdDev" "DnnAllMax" "DnnAllMean" "DnnAllMin" "DnnAllStdDev" "DnnAreaCountMax" "DnnAreaCountMean" "DnnAreaCountMin" "DnnAreaCountStdDev" "DnnAreaMax" "DnnAreaMean" "DnnAreaMin" "DnnAreaStdDev" "DnnBin1Max" "DnnBin1Mean" "DnnBin1Min" "DnnBin1StdDev" "DnnBin2Max" "DnnBin2Mean" "DnnBin2Min" "DnnBin2StdDev" "DnnBin3Max" "DnnBin3Mean" "DnnBin3Min" "DnnBin3StdDev" "DnnBin4Max" "DnnBin4Mean" "DnnBin4Min" "DnnBin4StdDev" "DnnBin5Max" "DnnBin5Mean" "DnnBin5Min" "DnnBin5StdDev" "DnnBin6Max" "DnnBin6Mean" "DnnBin6Min" "DnnBin6StdDev" "DnnBin7Max" "DnnBin7Mean" "DnnBin7Min" "DnnBin7StdDev" "DnnBin8Max" "DnnBin8Mean" "DnnBin8Min" "DnnBin8StdDev" "DnnHazeAvgMax" "DnnHazeAvgMean" "DnnHazeAvgMin" "DnnHazeAvgStdDev" "DnnHazeMedianMax" "DnnHazeMedianMean" "DnnHazeMedianMin" "DnnHazeMedianStdDev" "DnnHazeStdDevMax" "DnnHazeStdDevMean" "DnnHazeStdDevMin" "DnnHazeStdDevStdDev" "DnnLpdESMax" "DnnLpdESMean" "DnnLpdESMin" "DnnLpdESStdDev" "DnnLpdMax" "DnnLpdMean" "DnnLpdMin" "DnnLpdNMax" "DnnLpdNMean" "DnnLpdNMin" "DnnLpdNStdDev" "DnnLpdStdDev" "DnnMicroScrMax" "DnnMicroScrMean" "DnnMicroScrMin" "DnnMicroScrStdDev" "DnnScrMax" "DnnScrMean" "DnnScrMin" "DnnScrStdDev" "DnnSlipMax" "DnnSlipMean" "DnnSlipMin" "DnnSlipStdDev" "DwnAllMax" "DwnAllMean" "DwnAllMin" "DwnAllStdDev" "DwnAreaCountMax" "DwnAreaCountMean" "DwnAreaCountMin" "DwnAreaCountStdDev" "DwnAreaMax" "DwnAreaMean" "DwnAreaMin" "DwnAreaStdDev" "DwnBin1Max" "DwnBin1Mean" "DwnBin1Min" "DwnBin1StdDev" "DwnBin2Max" "DwnBin2Mean" "DwnBin2Min" "DwnBin2StdDev" "DwnBin3Max" "DwnBin3Mean" "DwnBin3Min" "DwnBin3StdDev" "DwnBin4Max" "DwnBin4Mean" "DwnBin4Min" "DwnBin4StdDev" "DwnBin5Max" "DwnBin5Mean" "DwnBin5Min" "DwnBin5StdDev" "DwnBin6Max" "DwnBin6Mean" "DwnBin6Min" "DwnBin6StdDev" "DwnBin7Max" "DwnBin7Mean" "DwnBin7Min" "DwnBin7StdDev" "DwnBin8Max" "DwnBin8Mean" "DwnBin8Min" "DwnBin8StdDev" "DwnHazeAvgMax" "DwnHazeAvgMean" "DwnHazeAvgMin" "DwnHazeAvgStdDev" "DwnHazeMedianMax" "DwnHazeMedianMean" "DwnHazeMedianMin" "DwnHazeMedianStdDev" "DwnHazeStdDevMax" "DwnHazeStdDevMean" "DwnHazeStdDevMin" "DwnHazeStdDevStdDev" "DwnLpdESMax" "DwnLpdESMean" "DwnLpdESMin" "DwnLpdESStdDev" "DwnLpdMax" "DwnLpdMean" "DwnLpdMin" "DwnLpdNMax" "DwnLpdNMean" "DwnLpdNMin" "DwnLpdNStdDev" "DwnLpdStdDev" "DwnMicroScrMax" "DwnMicroScrMean" "DwnMicroScrMin" "DwnMicroScrStdDev" "DwnScrMax" "DwnScrMean" "DwnScrMin" "DwnScrStdDev" "DwnSlipMax" "DwnSlipMean" "DwnSlipMin" "DwnSlipStdDev" "DcnAll" "DcnArea" "DcnAreaCount" "DcnBin1" "DcnBin2" "DcnBin3" "DcnBin4" "DcnBin5" "DcnBin6" "DcnBin7" "DcnBin8" "DcnHazeAvg" "DcnHazeMedian" "DcnHazeStdDev" "DcnLpd" "DcnLpdES" "DcnLpdN" "DcnMicroScr" "DcnScr" "DcnSlip" "DnnAll" "DnnArea" "DnnAreaCount" "DnnBin1" "DnnBin2" "DnnBin3" "DnnBin4" "DnnBin5" "DnnBin6" "DnnBin7" "DnnBin8" "DnnHazeAvg" "DnnHazeMedian" "DnnHazeStdDev" "DnnLpd" "DnnLpdES" "DnnLpdN" "DnnMicroScr" "DnnScr" "DnnSlip" "DwnAll" "DwnArea" "DwnAreaCount" "DwnBin1" "DwnBin2" "DwnBin3" "DwnBin4" "DwnBin5" "DwnBin6" "DwnBin7" "DwnBin8" "DwnHazeAvg" "DwnHazeMedian" "DwnHazeStdDev" "DwnLpd" "DwnLpdES" "DwnLpdN" "DwnMicroScr" "DwnScr" "DwnSlip"
0.00 1 2 8 25 0 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/1-2/1 UniqueId 1 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.230 2 0 0 0 0 0 0 0 0 0.640 0.636 0.061 0 NA NA NA 0 0.000 0.155 4 0 0 0 0 0 0 0 0 0.448 0.443 0.028 0 NA NA NA NA NA 0.000 0 0 0 0 0 0 0 0 0 0.192 0.179 0.066 0 NA NA NA NA NA
0.00 1 2 8 25 1 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/2-2/2 UniqueId 2 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.064 2 0 0 0 0 0 0 0 0 0.644 0.636 0.058 0 NA NA NA 0 0.581 0.073 4 0 0 0 0 0 0 0 0 0.459 0.456 0.024 0 NA NA NA NA NA 0.000 0 0 0 0 0 0 0 0 0 0.185 0.169 0.062 0 NA NA NA NA NA
0.00 1 2 8 25 2 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/3-2/3 UniqueId 3 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.345 7 0 0 0 0 0 0 0 0 0.615 0.601 0.070 0 NA NA NA 0 0.000 0.284 9 0 0 0 0 0 0 0 0 0.449 0.447 0.017 0 NA NA NA NA NA 0.000 4 0 0 0 0 0 0 0 0 0.165 0.145 0.068 0 NA NA NA NA NA
0.00 1 2 8 25 3 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/4-2/4 UniqueId 4 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.284 4 0 0 0 0 0 0 0 0 0.631 0.625 0.065 0 NA NA NA 0 0.000 0.192 4 0 0 0 0 0 0 0 0 0.450 0.448 0.026 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.181 0.166 0.062 0 NA NA NA NA NA
0.00 1 2 8 25 4 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/5-2/5 UniqueId 5 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.298 2 0 0 0 0 0 0 0 0 0.624 0.612 0.065 0 NA NA NA 0 0.000 0.202 2 0 0 0 0 0 0 0 0 0.453 0.452 0.026 0 NA NA NA NA NA 0.028 2 0 0 0 0 0 0 0 0 0.170 0.153 0.061 0 NA NA NA NA NA
0.00 1 2 8 25 5 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/6-2/6 UniqueId 6 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.119 1 0 0 0 0 0 0 0 0 0.650 0.641 0.060 0 NA NA NA 0 0.000 0.083 1 0 0 0 0 0 0 0 0 0.468 0.467 0.027 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.182 0.166 0.066 0 NA NA NA NA NA
0.00 1 2 8 25 6 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/7-2/7 UniqueId 7 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.293 5 0 0 0 0 0 0 0 0 0.660 0.645 0.072 0 NA NA NA 0 0.000 0.222 5 0 0 0 0 0 0 0 0 0.477 0.476 0.018 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.182 0.164 0.072 0 NA NA NA NA NA
0.00 1 2 8 25 7 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/8-2/8 UniqueId 8 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.530 5 0 0 0 0 0 0 0 0 0.608 0.596 0.059 0 NA NA NA 0 0.000 0.309 7 0 0 0 0 0 0 0 0 0.442 0.437 0.030 0 NA NA NA NA NA 0.024 3 0 0 0 0 0 0 0 0 0.167 0.145 0.065 0 NA NA NA NA NA
0.00 1 2 8 25 8 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/9-2/9 UniqueId 9 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.138 3 0 0 0 0 0 0 0 0 0.607 0.598 0.086 0 NA NA NA 0 0.000 0.113 3 0 0 0 0 0 0 0 0 0.448 0.444 0.043 0 NA NA NA NA NA 0.000 0 0 0 0 0 0 0 0 0 0.160 0.147 0.065 0 NA NA NA NA NA
0.00 1 2 8 25 9 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/10-2/10 UniqueId 10 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.501 5 0 0 0 0 0 0 0 0 0.627 0.618 0.060 0 NA NA NA 0 0.000 0.347 5 0 0 0 0 0 0 0 0 0.459 0.453 0.027 0 NA NA NA NA NA 0.021 2 0 0 0 0 0 0 0 0 0.169 0.154 0.066 0 NA NA NA NA NA
0.00 1 2 8 25 10 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/11-2/11 UniqueId 11 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.498 7 0 0 0 0 0 0 0 0 0.611 0.604 0.057 0 NA NA NA 0 0.000 0.342 7 0 0 0 0 0 0 0 0 0.461 0.461 0.020 0 NA NA NA NA NA 0.022 3 0 0 0 0 0 0 0 0 0.151 0.137 0.061 0 NA NA NA NA NA
0.00 1 2 8 25 11 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/12-2/12 UniqueId 12 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.311 3 0 0 0 0 0 0 0 0 0.617 0.608 0.059 0 NA NA NA 0 0.000 0.197 3 0 0 0 0 0 0 0 0 0.448 0.444 0.022 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.169 0.156 0.062 0 NA NA NA NA NA
0.00 1 2 8 25 12 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/13-2/13 UniqueId 13 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.254 4 0 0 0 0 0 0 0 0 0.623 0.619 0.059 0 NA NA NA 0 0.000 0.191 4 0 0 0 0 0 0 0 0 0.461 0.458 0.023 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.162 0.153 0.057 0 NA NA NA NA NA
0.00 1 2 8 25 13 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/14-2/14 UniqueId 14 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.445 5 0 0 0 0 0 0 0 0 0.622 0.615 0.057 0 NA NA NA 0 0.000 0.316 5 0 0 0 0 0 0 0 0 0.444 0.440 0.025 0 NA NA NA NA NA 0.000 2 0 0 0 0 0 0 0 0 0.178 0.168 0.064 0 NA NA NA NA NA
0.00 1 2 8 25 14 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/15-2/15 UniqueId 15 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.285 2 0 0 0 0 0 0 0 0 0.609 0.602 0.058 0 NA NA NA 0 0.000 0.190 3 0 0 0 0 0 0 0 0 0.425 0.418 0.027 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.184 0.172 0.062 0 NA NA NA NA NA
0.00 1 2 8 25 15 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/16-2/16 UniqueId 16 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.845 6 0 0 0 0 0 0 0 0 0.604 0.604 0.057 0 NA NA NA 0 0.000 0.547 6 0 0 0 0 0 0 0 0 0.426 0.423 0.024 0 NA NA NA NA NA 0.026 3 0 0 0 0 0 0 0 0 0.178 0.170 0.063 0 NA NA NA NA NA
0.00 1 2 8 25 16 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/17-2/17 UniqueId 17 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.148 3 0 0 0 0 0 0 0 0 0.625 0.623 0.053 0 NA NA NA 0 0.000 0.111 3 0 0 0 0 0 0 0 0 0.432 0.430 0.022 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.193 0.188 0.060 0 NA NA NA NA NA
0.00 1 2 8 25 17 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/18-2/18 UniqueId 18 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.467 5 0 0 0 0 0 0 0 0 0.638 0.635 0.048 0 NA NA NA 0 0.000 0.308 5 0 0 0 0 0 0 0 0 0.439 0.436 0.021 0 NA NA NA NA NA 0.000 3 0 0 0 0 0 0 0 0 0.199 0.191 0.053 0 NA NA NA NA NA
0.00 1 2 8 25 18 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/19-2/19 UniqueId 19 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.282 6 0 0 0 0 0 0 0 0 0.624 0.622 0.050 0 NA NA NA 0 0.000 0.247 6 0 0 0 0 0 0 0 0 0.423 0.416 0.027 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.201 0.193 0.058 0 NA NA NA NA NA
0.00 1 2 8 25 19 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/20-2/20 UniqueId 20 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 1.176 12 0 0 0 0 0 0 0 0 0.619 0.617 0.054 0 NA NA NA 0 0.000 0.786 14 0 0 0 0 0 0 0 0 0.411 0.408 0.026 0 NA NA NA NA NA 0.000 3 0 0 0 0 0 0 0 0 0.208 0.198 0.061 0 NA NA NA NA NA
0.00 1 2 8 25 20 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/21-2/21 UniqueId 21 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.170 3 0 0 0 0 0 0 0 0 0.589 0.584 0.064 0 NA NA NA 0 0.000 0.135 3 0 0 0 0 0 0 0 0 0.416 0.416 0.023 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.173 0.165 0.067 0 NA NA NA NA NA
0.00 1 2 8 25 21 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/22-2/22 UniqueId 22 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.407 4 0 0 0 0 0 0 0 0 0.602 0.596 0.058 0 NA NA NA 0 0.000 0.269 4 0 0 0 0 0 0 0 0 0.422 0.418 0.027 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.181 0.167 0.066 0 NA NA NA NA NA
0.00 1 2 8 25 22 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/23-2/23 UniqueId 23 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.516 4 0 0 0 0 0 0 0 0 0.609 0.603 0.063 0 NA NA NA 0 0.000 0.319 4 0 0 0 0 0 0 0 0 0.415 0.413 0.024 0 NA NA NA NA NA 0.000 1 0 0 0 0 0 0 0 0 0.194 0.181 0.058 0 NA NA NA NA NA
0.00 1 2 8 25 23 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/24-2/24 UniqueId 24 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.180 4 0 0 0 0 0 0 0 0 0.614 0.606 0.067 0 NA NA NA 0 1.732 0.178 6 0 0 0 0 0 0 0 0 0.418 0.415 0.023 0 NA NA NA NA NA 0.000 2 0 0 0 0 0 0 0 0 0.196 0.179 0.060 0 NA NA NA NA NA
0.00 1 2 8 25 24 SP101 4/24/2025 1:56:23 AM 666335 5113 55 6IN_SLIP Grade1 HeaderUniqueId 666335 6IN_SLIP F 2/25-2/25 UniqueId 25 12 4.440 1 2.238 12 4.320 1 2.249 1.176 0.357 0.064 0.243 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.660 0.622 0.589 0.016 0.645 0.615 0.584 0.016 0.278 0.070 0.048 0.044 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA 0 0.000 0 0.000 1.732 0.093 0.000 0.361 14 4.840 1 2.577 14 4.840 1 2.577 0.786 0.250 0.073 0.154 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.477 0.440 0.411 0.019 0.476 0.437 0.408 0.019 0.187 0.032 0.017 0.033 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 4 1.560 0 1.083 4 1.560 0 1.083 0.042 0.007 0.000 0.012 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0 0.000 0.218 0.182 0.151 0.016 0.200 0.168 0.137 0.017 0.108 0.065 0.053 0.010 NA NA NA NA 0 0.000 0 NA NA NA NA 0.000 NA NA NA NA NA NA NA NA NA NA NA NA 0.152 4 0 0 0 0 0 0 0 0 0.633 0.622 0.278 0 NA NA NA 0 0.000 0.128 4 0 0 0 0 0 0 0 0 0.415 0.414 0.187 0 NA NA NA NA NA 0.042 1 0 0 0 0 0 0 0 0 0.218 0.200 0.108 0 NA NA NA NA NA
NUM_DATA_ROWS 000000025
NUM_DATA_COLUMNS 000000321
DELIMITER ;
START_TIME_FORMAT MM/dd/yyyy HH:mm:ss
START_TIME 04/24/2025 01:56:23
LOGISTICS_COLUMN A_LOGISTICS
LOGISTICS_COLUMN B_LOGISTICS
LOGISTICS_1 A_BASIC_TYPE=;A_INFO=6IN_SLIP_20250424_0127_2025-04-24_01;56;37;581.txt.csv;A_INFO2=25;A_JOBID=SP101;A_MES_ENTITY=SP101;A_MID=55-666335-5113;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638810565835457504;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2 B_BASIC_TYPE=Left - High Thruput;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=666335;B_NULL_DATA=;B_PPID=6IN_SLIP;B_PROCESS_JOBID=55;B_PRODUCT=5113;B_SEQUENCE=638810565835457504;B_WAFER_ID=-;B_WAFER_POS=-;
EOF
HEADER_TAG|HEADER_VALUE
FORMAT|2.00
NUMBER_PASSES|0001
HEADER_OFFSET|000037963
DATA_OFFSET|000000128
END_OFFSET|000038659
|Time|A_LOGISTICS|B_LOGISTICS|Count|Sequence|MesEntity|Index|Lot|Session|DcnAllMin|DcnLpdMin|DcnLpdNMin|DcnLpdESMin|DcnMicroScrMin|DcnScrMin|DcnSlipMin|DcnAreaCountMin|DcnAreaMin|DcnHazeAvgMin|DcnHazeMedianMin|DcnHazeStdDevMin|DcnBin1Min|DcnBin2Min|DcnBin3Min|DcnBin4Min|DcnBin5Min|DcnBin6Min|DcnBin7Min|DcnBin8Min|DcnAllMax|DcnLpdMax|DcnLpdNMax|DcnLpdESMax|DcnMicroScrMax|DcnScrMax|DcnSlipMax|DcnAreaCountMax|DcnAreaMax|DcnHazeAvgMax|DcnHazeMedianMax|DcnHazeStdDevMax|DcnBin1Max|DcnBin2Max|DcnBin3Max|DcnBin4Max|DcnBin5Max|DcnBin6Max|DcnBin7Max|DcnBin8Max|DcnAllMean|DcnLpdMean|DcnLpdNMean|DcnLpdESMean|DcnMicroScrMean|DcnScrMean|DcnSlipMean|DcnAreaCountMean|DcnAreaMean|DcnHazeAvgMean|DcnHazeMedianMean|DcnHazeStdDevMean|DcnBin1Mean|DcnBin2Mean|DcnBin3Mean|DcnBin4Mean|DcnBin5Mean|DcnBin6Mean|DcnBin7Mean|DcnBin8Mean|DcnAllStdDev|DcnLpdStdDev|DcnLpdNStdDev|DcnLpdESStdDev|DcnMicroScrStdDev|DcnScrStdDev|DcnSlipStdDev|DcnAreaCountStdDev|DcnAreaStdDev|DcnHazeAvgStdDev|DcnHazeMedianStdDev|DcnHazeStdDevStdDev|DcnBin1StdDev|DcnBin2StdDev|DcnBin3StdDev|DcnBin4StdDev|DcnBin5StdDev|DcnBin6StdDev|DcnBin7StdDev|DcnBin8StdDev|DwnAllMin|DwnLpdMin|DwnLpdNMin|DwnLpdESMin|DwnMicroScrMin|DwnScrMin|DwnSlipMin|DwnAreaCountMin|DwnAreaMin|DwnHazeAvgMin|DwnHazeMedianMin|DwnHazeStdDevMin|DwnBin1Min|DwnBin2Min|DwnBin3Min|DwnBin4Min|DwnBin5Min|DwnBin6Min|DwnBin7Min|DwnBin8Min|DwnAllMax|DwnLpdMax|DwnLpdNMax|DwnLpdESMax|DwnMicroScrMax|DwnScrMax|DwnSlipMax|DwnAreaCountMax|DwnAreaMax|DwnHazeAvgMax|DwnHazeMedianMax|DwnHazeStdDevMax|DwnBin1Max|DwnBin2Max|DwnBin3Max|DwnBin4Max|DwnBin5Max|DwnBin6Max|DwnBin7Max|DwnBin8Max|DwnAllMean|DwnLpdMean|DwnLpdNMean|DwnLpdESMean|DwnMicroScrMean|DwnScrMean|DwnSlipMean|DwnAreaCountMean|DwnAreaMean|DwnHazeAvgMean|DwnHazeMedianMean|DwnHazeStdDevMean|DwnBin1Mean|DwnBin2Mean|DwnBin3Mean|DwnBin4Mean|DwnBin5Mean|DwnBin6Mean|DwnBin7Mean|DwnBin8Mean|DwnAllStdDev|DwnLpdStdDev|DwnLpdNStdDev|DwnLpdESStdDev|DwnMicroScrStdDev|DwnScrStdDev|DwnSlipStdDev|DwnAreaCountStdDev|DwnAreaStdDev|DwnHazeAvgStdDev|DwnHazeMedianStdDev|DwnHazeStdDevStdDev|DwnBin1StdDev|DwnBin2StdDev|DwnBin3StdDev|DwnBin4StdDev|DwnBin5StdDev|DwnBin6StdDev|DwnBin7StdDev|DwnBin8StdDev|DnnAllMin|DnnLpdMin|DnnLpdNMin|DnnLpdESMin|DnnMicroScrMin|DnnScrMin|DnnSlipMin|DnnAreaCountMin|DnnAreaMin|DnnHazeAvgMin|DnnHazeMedianMin|DnnHazeStdDevMin|DnnBin1Min|DnnBin2Min|DnnBin3Min|DnnBin4Min|DnnBin5Min|DnnBin6Min|DnnBin7Min|DnnBin8Min|DnnAllMax|DnnLpdMax|DnnLpdNMax|DnnLpdESMax|DnnMicroScrMax|DnnScrMax|DnnSlipMax|DnnAreaCountMax|DnnAreaMax|DnnHazeAvgMax|DnnHazeMedianMax|DnnHazeStdDevMax|DnnBin1Max|DnnBin2Max|DnnBin3Max|DnnBin4Max|DnnBin5Max|DnnBin6Max|DnnBin7Max|DnnBin8Max|DnnAllMean|DnnLpdMean|DnnLpdNMean|DnnLpdESMean|DnnMicroScrMean|DnnScrMean|DnnSlipMean|DnnAreaCountMean|DnnAreaMean|DnnHazeAvgMean|DnnHazeMedianMean|DnnHazeStdDevMean|DnnBin1Mean|DnnBin2Mean|DnnBin3Mean|DnnBin4Mean|DnnBin5Mean|DnnBin6Mean|DnnBin7Mean|DnnBin8Mean|DnnAllStdDev|DnnLpdStdDev|DnnLpdNStdDev|DnnLpdESStdDev|DnnMicroScrStdDev|DnnScrStdDev|DnnSlipStdDev|DnnAreaCountStdDev|DnnAreaStdDev|DnnHazeAvgStdDev|DnnHazeMedianStdDev|DnnHazeStdDevStdDev|DnnBin1StdDev|DnnBin2StdDev|DnnBin3StdDev|DnnBin4StdDev|DnnBin5StdDev|DnnBin6StdDev|DnnBin7StdDev|DnnBin8StdDev|Side|WaferID|Grade|SrcDest|DcnAll|DcnLpd|DcnLpdN|DcnLpdES|DcnMicroScr|DcnScr|DcnSlip|DcnAreaCount|DcnArea|DcnHazeAvg|DcnHazeMedian|DcnHazeStdDev|DcnBin1|DcnBin2|DcnBin3|DcnBin4|DcnBin5|DcnBin6|DcnBin7|DcnBin8|DwnAll|DwnLpd|DwnLpdN|DwnLpdES|DwnMicroScr|DwnScr|DwnSlip|DwnAreaCount|DwnArea|DwnHazeAvg|DwnHazeMedian|DwnHazeStdDev|DwnBin1|DwnBin2|DwnBin3|DwnBin4|DwnBin5|DwnBin6|DwnBin7|DwnBin8|DnnAll|DnnLpd|DnnLpdN|DnnLpdES|DnnMicroScr|DnnScr|DnnSlip|DnnAreaCount|DnnArea|DnnHazeAvg|DnnHazeMedian|DnnHazeStdDev|DnnBin1|DnnBin2|DnnBin3|DnnBin4|DnnBin5|DnnBin6|DnnBin7|DnnBin8|RDS|PSN|Reactor|Layer|Zone|Employee|InferredLot|Date|EventId|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
0.00|1|2|25|638810565835457504|SP101|0|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|1|Grade1|2/1-2/1||0|NA|NA|NA|0|0.000|2|0.230|0.640|0.636|0.061|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|0|0.000|0.192|0.179|0.066|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.155|0.448|0.443|0.028|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|1|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|2|Grade1|2/2-2/2||0|NA|NA|NA|0|0.581|2|0.064|0.644|0.636|0.058|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|0|0.000|0.185|0.169|0.062|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.073|0.459|0.456|0.024|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|2|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|3|Grade1|2/3-2/3||0|NA|NA|NA|0|0.000|7|0.345|0.615|0.601|0.070|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.000|0.165|0.145|0.068|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|9|0.284|0.449|0.447|0.017|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|3|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|4|Grade1|2/4-2/4||0|NA|NA|NA|0|0.000|4|0.284|0.631|0.625|0.065|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.181|0.166|0.062|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.192|0.450|0.448|0.026|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|4|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|5|Grade1|2/5-2/5||0|NA|NA|NA|0|0.000|2|0.298|0.624|0.612|0.065|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|2|0.028|0.170|0.153|0.061|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|2|0.202|0.453|0.452|0.026|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|5|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|6|Grade1|2/6-2/6||0|NA|NA|NA|0|0.000|1|0.119|0.650|0.641|0.060|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.182|0.166|0.066|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.083|0.468|0.467|0.027|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|6|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|7|Grade1|2/7-2/7||0|NA|NA|NA|0|0.000|5|0.293|0.660|0.645|0.072|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.182|0.164|0.072|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|5|0.222|0.477|0.476|0.018|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|7|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|8|Grade1|2/8-2/8||0|NA|NA|NA|0|0.000|5|0.530|0.608|0.596|0.059|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.024|0.167|0.145|0.065|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|7|0.309|0.442|0.437|0.030|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|8|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|9|Grade1|2/9-2/9||0|NA|NA|NA|0|0.000|3|0.138|0.607|0.598|0.086|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|0|0.000|0.160|0.147|0.065|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.113|0.448|0.444|0.043|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|9|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|10|Grade1|2/10-2/10||0|NA|NA|NA|0|0.000|5|0.501|0.627|0.618|0.060|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|2|0.021|0.169|0.154|0.066|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|5|0.347|0.459|0.453|0.027|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|10|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|11|Grade1|2/11-2/11||0|NA|NA|NA|0|0.000|7|0.498|0.611|0.604|0.057|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.022|0.151|0.137|0.061|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|7|0.342|0.461|0.461|0.020|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|11|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|12|Grade1|2/12-2/12||0|NA|NA|NA|0|0.000|3|0.311|0.617|0.608|0.059|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.169|0.156|0.062|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.197|0.448|0.444|0.022|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|12|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|13|Grade1|2/13-2/13||0|NA|NA|NA|0|0.000|4|0.254|0.623|0.619|0.059|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.162|0.153|0.057|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.191|0.461|0.458|0.023|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|13|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|14|Grade1|2/14-2/14||0|NA|NA|NA|0|0.000|5|0.445|0.622|0.615|0.057|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|2|0.000|0.178|0.168|0.064|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|5|0.316|0.444|0.440|0.025|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|14|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|15|Grade1|2/15-2/15||0|NA|NA|NA|0|0.000|2|0.285|0.609|0.602|0.058|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.184|0.172|0.062|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.190|0.425|0.418|0.027|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|15|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|16|Grade1|2/16-2/16||0|NA|NA|NA|0|0.000|6|0.845|0.604|0.604|0.057|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.026|0.178|0.170|0.063|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|6|0.547|0.426|0.423|0.024|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|16|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|17|Grade1|2/17-2/17||0|NA|NA|NA|0|0.000|3|0.148|0.625|0.623|0.053|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.193|0.188|0.060|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.111|0.432|0.430|0.022|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|17|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|18|Grade1|2/18-2/18||0|NA|NA|NA|0|0.000|5|0.467|0.638|0.635|0.048|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.000|0.199|0.191|0.053|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|5|0.308|0.439|0.436|0.021|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|18|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|19|Grade1|2/19-2/19||0|NA|NA|NA|0|0.000|6|0.282|0.624|0.622|0.050|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.201|0.193|0.058|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|6|0.247|0.423|0.416|0.027|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|19|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|20|Grade1|2/20-2/20||0|NA|NA|NA|0|0.000|12|1.176|0.619|0.617|0.054|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.000|0.208|0.198|0.061|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|14|0.786|0.411|0.408|0.026|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|20|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|21|Grade1|2/21-2/21||0|NA|NA|NA|0|0.000|3|0.170|0.589|0.584|0.064|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.173|0.165|0.067|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|3|0.135|0.416|0.416|0.023|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|21|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|22|Grade1|2/22-2/22||0|NA|NA|NA|0|0.000|4|0.407|0.602|0.596|0.058|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.181|0.167|0.066|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.269|0.422|0.418|0.027|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|22|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|23|Grade1|2/23-2/23||0|NA|NA|NA|0|0.000|4|0.516|0.609|0.603|0.063|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.000|0.194|0.181|0.058|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.319|0.415|0.413|0.024|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|23|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|24|Grade1|2/24-2/24||0|NA|NA|NA|0|1.732|4|0.180|0.614|0.606|0.067|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|2|0.000|0.196|0.179|0.060|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|6|0.178|0.418|0.415|0.023|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
0.00|1|2|25|638810565835457504|SP101|24|666335|6IN_SLIP|1|0|NA|NA|NA|0|0.000|1|0.064|0.589|0.584|0.048|0|0|0|0|0|0|0|0|12|0|NA|NA|NA|0|1.732|12|1.176|0.660|0.645|0.278|0|0|0|0|0|0|0|0|4.440|0.000|NA|NA|NA|0.000|0.093|4.320|0.357|0.622|0.615|0.070|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.238|0.000|NA|NA|NA|0.000|0.361|2.249|0.243|0.016|0.016|0.044|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0|0|NA|NA|NA|NA|NA|0|0.000|0.151|0.137|0.053|0|0|0|0|0|0|0|0|4|0|NA|NA|NA|NA|NA|4|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0|1.560|0.000|NA|NA|NA|NA|NA|1.560|0.007|0.182|0.168|0.065|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1.083|0.000|NA|NA|NA|NA|NA|1.083|0.012|0.016|0.017|0.010|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|1|0|NA|NA|NA|NA|NA|1|0.073|0.411|0.408|0.017|0|0|0|0|0|0|0|0|14|0|NA|NA|NA|NA|NA|14|0.786|0.477|0.476|0.187|0|0|0|0|0|0|0|0|4.840|0.000|NA|NA|NA|NA|NA|4.840|0.250|0.440|0.437|0.032|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|2.577|0.000|NA|NA|NA|NA|NA|2.577|0.154|0.019|0.019|0.033|0.000|0.000|0.000|0.000|0.000|0.000|0.000|0.000|F|25|Grade1|2/25-2/25||0|NA|NA|NA|0|0.000|4|0.152|0.633|0.622|0.278|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|1|0.042|0.218|0.200|0.108|0|0|0|0|0|0|0|0||0|NA|NA|NA|NA|NA|4|0.128|0.415|0.414|0.187|0|0|0|0|0|0|0|0|666335|5113|55|-|-||55-666335-5113|4/24/2025 1:56:23 AM|8
NUM_DATA_ROWS|000000025
NUM_DATA_COLUMNS|000000322
DELIMITER|;
START_TIME_FORMAT|MM/dd/yyyy HH:mm:ss
START_TIME|04/24/2025 01:56:23
LOGISTICS_COLUMN|A_LOGISTICS
LOGISTICS_COLUMN|B_LOGISTICS
LOGISTICS_1|A_BASIC_TYPE=;A_INFO=6IN_SLIP_20250424_0127_2025-04-24_01;56;37;581.txt.csv;A_INFO2=25;A_JOBID=SP101;A_MES_ENTITY=SP101;A_MID=55-666335-5113;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638810565835457504;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2|B_BASIC_TYPE=Left - High Thruput;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=666335;B_NULL_DATA=;B_PPID=6IN_SLIP;B_PROCESS_JOBID=55;B_PRODUCT=5113;B_SEQUENCE=638810565835457504;B_WAFER_ID=-;B_WAFER_POS=-;
END_HEADER

View File

@ -0,0 +1,49 @@
1 1 1 0 0.10 0.21 0.019 0.10 4/24/2025 4:46:29 PM 1.15 1.18 1.12 0.0291 100 100 100 0 667227 0.013 0.019 0.006 0.006 2 3 0.006 1 667227 36 6IN_THIN ROTR 0.3 1 0 0.59 0.34 1.02 0 0.59 3 4 2 1 TENCOR1
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
|---|---|---|---|-----|------|-------|-----|----------------------|------|------|------|--------|-----|-----|-----|----|--------|-------|-------|-------|-------|----|----|-------|----|----|--------|----|---------------|-----|----|----|------|------|------|----|------|----|----|----|----|---------|
| 1 | 1 | 1 | 0 | 0.1 | 0.21 | 0.019 | 0.1 | 4/24/2025 4:46:29 PM | 1.15 | 1.18 | 1.12 | 0.0291 | 100 | 100 | 100 | 0 | 667227 | 0.013 | 0.019 | 0.006 | 0.006 | 2 | 3 | 0.006 | 1 | | 667227 | 36 | 6IN_THIN ROTR | 0.3 | 1 | 0 | 0.59 | 0.34 | 1.02 | 0 | 0.59 | 3 | 4 | 2 | 1 | TENCOR1 |
<1>:1
<2>:1
<3>:1
<4>:0
<5>:0.1
<6>:0.21
<7>:0.019
<8>:0.1
<9>:4/24/2025 4:46:29 PM
<10>:1.15
<11>:1.18
<12>:1.12
<13>:0.0291
<14>:100
<15>:100
<16>:100
<17>:0
<18>:667227
<19>:0.013
<20>:0.019
<21>:0.006
<22>:0.006
<23>:2
<24>:3
<25>:0.006
<26>:1
<27>:
<28>:667227
<29>:36
<30>:6IN_THIN ROTR
<31>:0.3
<32>:1
<33>:0
<34>:0.59
<35>:0.34
<36>:1.02
<37>:0
<38>:0.59
<39>:3
<40>:4
<41>:2
<42>:1
<43>:TENCOR1

View File

@ -0,0 +1,176 @@
{
"Id": -1,
"AreaCountAvg": "1",
"AreaCountMax": "1",
"AreaCountMin": "1",
"AreaCountStdDev": "0",
"AreaTotalAvg": "0.10",
"AreaTotalMax": "0.21",
"AreaTotalMin": "0.019",
"AreaTotalStdDev": "0.10",
"Date": "4/24/2025 4:46:29 PM",
"HazeAverageAvg": "1.15",
"HazeAverageMax": "1.18",
"HazeAverageMin": "1.12",
"HazeAverageStdDev": "0.0291",
"HazeRegionAvg": "100",
"HazeRegionMax": "100",
"HazeRegionMin": "100",
"HazeRegionStdDev": "0",
"Layer": null,
"LotID": "667227",
"LPDCM2Avg": "0.013",
"LPDCM2Max": "0.019",
"LPDCM2Min": "0.006",
"LPDCM2StdDev": "0.006",
"LPDCountAvg": "2",
"LPDCountMax": "3",
"LPDCountMin": "1",
"LPDCountStdDev": "1",
"Operator": "",
"ParseErrorText": "ParseErrorText",
"PSN": "5142",
"RDS": "667227",
"Reactor": "36",
"Recipe": "6IN_THIN ROTR",
"ScratchCountAvg": "0.3",
"ScratchCountMax": "1",
"ScratchCountMin": "0",
"ScratchCountStdDev": "0.6",
"ScratchTotalAvg": "0.34",
"ScratchTotalMax": "1.02",
"ScratchTotalMin": "0",
"ScratchTotalStdDev": "0.59",
"SumOfDefectsAvg": "3",
"SumOfDefectsMax": "4",
"SumOfDefectsMin": "2",
"SumOfDefectsStdDev": "1",
"Title": null,
"UniqueId": "TENCOR1_1T667227_202504241646295374",
"Zone": null,
"CellName": "TENCOR1",
"Data": "*Data*",
"i": -1,
"Details": [
{
"Id": 0,
"AreaCount": "1",
"AreaTotal": "0.0716mm2",
"Bin1": "2",
"Bin2": "1",
"Bin3": "0",
"Bin4": "0",
"Bin5": "0",
"Bin6": "0",
"Bin7": null,
"Bin8": null,
"Comments": "- High Thruput",
"Date": "4/24/2025 4:46:29 PM",
"Diameter": "150 mm",
"Exclusion": "4mm",
"Gain": "4",
"HazeAverage": "1.16ppm",
"HazePeak": "25.5ppm",
"HazeRegion": "100%",
"HazeRng": "500ppm",
"HeaderUniqueId": "TENCOR1_1T667227_202504241646295374",
"LPDCM2": "0.019",
"LPDCount": "3",
"Laser": "488nm",
"Mean": "0.252",
"Recipe": "6IN_THIN ROTR",
"ScratchCount": "1",
"ScratchTotal": "1.02mm",
"Slot": "01",
"Sort": "PASS",
"StdDev": "0.043",
"SumOfDefects": "4",
"Thresh": "0.200um",
"Thruput": "Normal",
"Title": null,
"UniqueId": "TENCOR1_1T667227_202504241646295374_Item-1",
"Data": "*Data*",
"i": -1
},
{
"Id": 0,
"AreaCount": "1",
"AreaTotal": "0.0195mm2",
"Bin1": "1",
"Bin2": "0",
"Bin3": "0",
"Bin4": "0",
"Bin5": "1",
"Bin6": "0",
"Bin7": null,
"Bin8": null,
"Comments": "- High Thruput",
"Date": "4/24/2025 4:46:29 PM",
"Diameter": "150 mm",
"Exclusion": "4mm",
"Gain": "4",
"HazeAverage": "1.18ppm",
"HazePeak": "25.0ppm",
"HazeRegion": "100%",
"HazeRng": "500ppm",
"HeaderUniqueId": "TENCOR1_1T667227_202504241646295374",
"LPDCM2": "0.013",
"LPDCount": "2",
"Laser": "488nm",
"Mean": "1.32",
"Recipe": "6IN_THIN ROTR",
"ScratchCount": "0",
"ScratchTotal": "0mm",
"Slot": "15",
"Sort": "PASS",
"StdDev": "1.54",
"SumOfDefects": "3",
"Thresh": "0.200um",
"Thruput": "Normal",
"Title": null,
"UniqueId": "TENCOR1_1T667227_202504241646295374_Item-2",
"Data": "*Data*",
"i": -1
},
{
"Id": 0,
"AreaCount": "1",
"AreaTotal": "0.213mm2",
"Bin1": "0",
"Bin2": "1",
"Bin3": "0",
"Bin4": "0",
"Bin5": "0",
"Bin6": "0",
"Bin7": null,
"Bin8": null,
"Comments": "- High Thruput",
"Date": "4/24/2025 4:46:29 PM",
"Diameter": "150 mm",
"Exclusion": "4mm",
"Gain": "4",
"HazeAverage": "1.12ppm",
"HazePeak": "22.5ppm",
"HazeRegion": "100%",
"HazeRng": "500ppm",
"HeaderUniqueId": "TENCOR1_1T667227_202504241646295374",
"LPDCM2": "0.006",
"LPDCount": "1",
"Laser": "488nm",
"Mean": "0.307",
"Recipe": "6IN_THIN ROTR",
"ScratchCount": "0",
"ScratchTotal": "0mm",
"Slot": "25",
"Sort": "PASS",
"StdDev": "0.000",
"SumOfDefects": "2",
"Thresh": "0.200um",
"Thruput": "Normal",
"Title": null,
"UniqueId": "TENCOR1_1T667227_202504241646295374_Item-3",
"Data": "*Data*",
"i": -1
}
]
}

View File

@ -0,0 +1,43 @@
HEADER_TAG HEADER_VALUE
FORMAT 2.00
NUMBER_PASSES 0001
HEADER_OFFSET H#######T
DATA_OFFSET D#######T
END_OFFSET E#######T
"Time" "A_LOGISTICS" "B_LOGISTICS" "Test" "Count" "Index" "MesEntity" "Date" "Employee" "Lot" "PSN" "Reactor" "Recipe" "Comments" "Diameter" "Exclusion" "Gain" "HeaderUniqueId" "Laser" "ParseErrorText" "RDS" "Slot" "UniqueId" "AreaCount" "AreaCountAvg" "AreaCountMax" "AreaCountMin" "AreaCountStdDev" "AreaTotal" "AreaTotalAvg" "AreaTotalMax" "AreaTotalMin" "AreaTotalStdDev" "Bin1" "Bin2" "Bin3" "Bin4" "Bin5" "Bin6" "Bin7" "Bin8" "HazeAverage" "HazeAverageAvg" "HazeAverageMax" "HazeAverageMin" "HazeAverageStdDev" "HazePeak" "HazeRegion" "HazeRegionAvg" "HazeRegionMax" "HazeRegionMin" "HazeRegionStdDev" "HazeRng" "LPDCM2" "LPDCM2Avg" "LPDCM2Max" "LPDCM2Min" "LPDCM2StdDev" "LPDCount" "LPDCountAvg" "LPDCountMax" "LPDCountMin" "LPDCountStdDev" "Mean" "ScratchCount" "ScratchCountAvg" "ScratchCountMax" "ScratchCountMin" "ScratchCountStdDev" "ScratchTotal" "ScratchTotalAvg" "ScratchTotalMax" "ScratchTotalMin" "ScratchTotalStdDev" "Sort" "StdDev" "SumOfDefects" "SumOfDefectsAvg" "SumOfDefectsMax" "SumOfDefectsMin" "SumOfDefectsStdDev" "Thresh" "Thruput"
0.00 1 2 7 3 0 TENCOR1 4/24/2025 4:46:29 PM 667227 5142 36 6IN_THIN ROTR - High Thruput 150 mm 4mm 4 HeaderUniqueId 488nm ParseErrorText 667227 01 UniqueId 1 1 1 1 0 0.0716mm2 0.10 0.21 0.019 0.10 2 1 0 0 0 0 1.16ppm 1.15 1.18 1.12 0.0291 25.5ppm 100% 100 100 100 0 500ppm 0.019 0.013 0.019 0.006 0.006 3 2 3 1 1 0.252 1 0.3 1 0 0.6 1.02mm 0.34 1.02 0 0.59 PASS 0.043 4 3 4 2 1 0.200um Normal
0.00 1 2 7 3 1 TENCOR1 4/24/2025 4:46:29 PM 667227 5142 36 6IN_THIN ROTR - High Thruput 150 mm 4mm 4 HeaderUniqueId 488nm ParseErrorText 667227 15 UniqueId 1 1 1 1 0 0.0195mm2 0.10 0.21 0.019 0.10 1 0 0 0 1 0 1.18ppm 1.15 1.18 1.12 0.0291 25.0ppm 100% 100 100 100 0 500ppm 0.013 0.013 0.019 0.006 0.006 2 2 3 1 1 1.32 0 0.3 1 0 0.6 0mm 0.34 1.02 0 0.59 PASS 1.54 3 3 4 2 1 0.200um Normal
0.00 1 2 7 3 2 TENCOR1 4/24/2025 4:46:29 PM 667227 5142 36 6IN_THIN ROTR - High Thruput 150 mm 4mm 4 HeaderUniqueId 488nm ParseErrorText 667227 25 UniqueId 1 1 1 1 0 0.213mm2 0.10 0.21 0.019 0.10 0 1 0 0 0 0 1.12ppm 1.15 1.18 1.12 0.0291 22.5ppm 100% 100 100 100 0 500ppm 0.006 0.013 0.019 0.006 0.006 1 2 3 1 1 0.307 0 0.3 1 0 0.6 0mm 0.34 1.02 0 0.59 PASS 0.000 2 3 4 2 1 0.200um Normal
NUM_DATA_ROWS 000000003
NUM_DATA_COLUMNS 000000083
DELIMITER ;
START_TIME_FORMAT MM/dd/yyyy HH:mm:ss
START_TIME 04/24/2025 16:46:29
LOGISTICS_COLUMN A_LOGISTICS
LOGISTICS_COLUMN B_LOGISTICS
LOGISTICS_1 A_HeaderId=524300;A_SubgroupId=1745538421;A_BASIC_TYPE=;A_INFO=202504241646295374.pcl.csv;A_INFO2=3;A_JOBID=TENCOR1;A_MES_ENTITY=TENCOR1;A_MID=1T667227;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811099895374259;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2 B_HeaderId=524300;B_SubgroupId=1745538421;B_BASIC_TYPE=- High Thruput;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667227;B_NULL_DATA=;B_PPID=6IN_THIN ROTR;B_PROCESS_JOBID=36;B_PRODUCT=5142;B_SEQUENCE=638811099895374259;B_WAFER_ID=-;B_WAFER_POS=-;
EOF
HEADER_TAG|HEADER_VALUE
FORMAT|2.00
NUMBER_PASSES|0001
HEADER_OFFSET|000002772
DATA_OFFSET|000000128
END_OFFSET|000003437
|Time|A_LOGISTICS|B_LOGISTICS|Count|Sequence|MesEntity|Index|Date|Recipe|Id|WaferId|LPDCount|LPDCM2|AreaCount|AreaTotal|ScratchCount|ScratchTotal|SumOfDefects|HazeRegion|HazeAverage|Grade|LPDCountMin|LPDCM2Min|AreaCountMin|AreaTotalMin|ScratchCountMin|ScratchTotalMin|SumOfDefectsMin|HazeRegionMin|HazeAverageMin|LPDCountMax|LPDCM2Max|AreaCountMax|AreaTotalMax|ScratchCountMax|ScratchTotalMax|SumOfDefectsMax|HazeRegionMax|HazeAverageMax|LPDCountAvg|LPDCM2Avg|AreaCountAvg|AreaTotalAvg|ScratchCountAvg|ScratchTotalAvg|SumOfDefectsAvg|HazeRegionAvg|HazeAverageAvg|LPDCountStdDev|LPDCM2StdDev|AreaCountStdDev|AreaTotalStdDev|ScratchCountStdDev|ScratchTotalStdDev|SumOfDefectsStdDev|HazeRegionStdDev|HazeAverageStdDev|WaferDate|Comments|Sort|WaferLPDCount|WaferLPDCM2|Bin1|Bin2|Bin3|Bin4|Bin5|Bin6|Bin7|Bin8|Mean|StdDev|WaferAreaCount|WaferAreaTotal|WaferScratchCount|WaferScratchTotal|WaferSumOfDefects|WaferHazeRegion|WaferHazeAverage|HazePeak|Laser|Gain|Diameter|Thresh|Exclusion|HazeRng|Thruput|WaferRecipe|RDS|PSN|Reactor|Layer|Zone|Employee|InferredLot|EventId|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
0.00|1|2|3|638811099895374259|TENCOR1|0|4/24/2025 4:46:29 PM|6IN_THIN ROTR|667227|01|3|0.019|1|0.072|1|1.02|4|100|1.16|P|1|0.006|1|0.019|0|0|2|100|1.12|3|0.019|1|0.21|1|1.02|4|100|1.18|2|0.013|1|0.10|0.3|0.34|3|100|1.15|1|0.006|0|0.10|0.6|0.59|1|0|0.0291|Wed, Apr 23, 2025 08:34:51 AM|- High Thruput|PASS|3|0.019|2|1|0|0|0|0|||0.252|0.043|1|0.0716mm2|1|1.02mm|4|100%|1.16ppm|25.5ppm|488nm|4|150 mm|0.200um|4mm|500ppm|Normal|6IN_THIN ROTR|667227|5142|36|-|-||667227|7
0.00|1|2|3|638811099895374259|TENCOR1|1|4/24/2025 4:46:29 PM|6IN_THIN ROTR|667227|15|2|0.013|1|0.019|0|0|3|100|1.18|P|1|0.006|1|0.019|0|0|2|100|1.12|3|0.019|1|0.21|1|1.02|4|100|1.18|2|0.013|1|0.10|0.3|0.34|3|100|1.15|1|0.006|0|0.10|0.6|0.59|1|0|0.0291|Wed, Apr 23, 2025 08:35:39 AM|- High Thruput|PASS|2|0.013|1|0|0|0|1|0|||1.32|1.54|1|0.0195mm2|0|0mm|3|100%|1.18ppm|25.0ppm|488nm|4|150 mm|0.200um|4mm|500ppm|Normal|6IN_THIN ROTR|667227|5142|36|-|-||667227|7
0.00|1|2|3|638811099895374259|TENCOR1|2|4/24/2025 4:46:29 PM|6IN_THIN ROTR|667227|25|1|0.006|1|0.21|0|0|2|100|1.12|P|1|0.006|1|0.019|0|0|2|100|1.12|3|0.019|1|0.21|1|1.02|4|100|1.18|2|0.013|1|0.10|0.3|0.34|3|100|1.15|1|0.006|0|0.10|0.6|0.59|1|0|0.0291|Wed, Apr 23, 2025 08:36:22 AM|- High Thruput|PASS|1|0.006|0|1|0|0|0|0|||0.307|0.000|1|0.213mm2|0|0mm|2|100%|1.12ppm|22.5ppm|488nm|4|150 mm|0.200um|4mm|500ppm|Normal|6IN_THIN ROTR|667227|5142|36|-|-||667227|7
NUM_DATA_ROWS|000000003
NUM_DATA_COLUMNS|000000096
DELIMITER|;
START_TIME_FORMAT|MM/dd/yyyy HH:mm:ss
START_TIME|04/24/2025 16:46:29
LOGISTICS_COLUMN|A_LOGISTICS
LOGISTICS_COLUMN|B_LOGISTICS
LOGISTICS_1|A_BASIC_TYPE=;A_INFO=202504241646295374.pcl.csv;A_INFO2=3;A_JOBID=TENCOR1;A_MES_ENTITY=TENCOR1;A_MID=1T667227;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811099895374259;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2|B_BASIC_TYPE=- High Thruput;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667227;B_NULL_DATA=;B_PPID=6IN_THIN ROTR;B_PROCESS_JOBID=36;B_PRODUCT=5142;B_SEQUENCE=638811099895374259;B_WAFER_ID=-;B_WAFER_POS=-;
END_HEADER

View File

@ -0,0 +1,78 @@
UniqueId 666765 4/24/2025 5:14:32 PM Lot LSL8IN \ 10PT_5mm 57 666765 4626 1 - CDE5 Operator Engineer DLRatio 18.55 AutoOptimizeGain AutoProbeHeightSet 3.00 915.190 0.0069647 SemiRadial 1 95.00 270.000 913.9620971680 1.3236315 2 71.00 270.000 923.2605590820 1.2676778 3 47.00 270.000 921.4100952148 1.3205365 4 23.00 270.000 913.6674194336 1.2704575 5 0.00 0.000 908.1397705078 1.3234487 6 11.00 90.000 908.0071411133 1.2582344 7 35.00 90.000 916.3591918945 1.5512319 8 59.00 90.000 920.1303100586 1.7320848 9 83.00 90.000 921.3920288086 1.6781629 10 95.00 90.000 905.5722656250 1.7448909
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
|----------|--------|----------------------|-----|-------------------|----|--------|------|---|----|------|----------|----------|---------|-------|------------------|--------------------|------|----|---------|-----------|------------|----|-------|---------|----------------|-----------|----|-------|---------|----------------|-----------|----|-------|---------|----------------|-----------|----|-------|---------|----------------|-----------|----|------|-------|----------------|-----------|----|-------|--------|----------------|-----------|----|-------|--------|----------------|-----------|----|-------|--------|----------------|-----------|----|-------|--------|----------------|-----------|----|-------|--------|----------------|-----------|
| UniqueId | 666765 | 4/24/2025 5:14:32 PM | Lot | LSL8IN \ 10PT_5mm | 57 | 666765 | 4626 | 1 | - | CDE5 | Operator | Engineer | DLRatio | 18.55 | AutoOptimizeGain | AutoProbeHeightSet | 3.00 | | 915.190 | 0.0069647 | SemiRadial | 1 | 95.00 | 270.000 | 913.9620971680 | 1.3236315 | 2 | 71.00 | 270.000 | 923.2605590820 | 1.2676778 | 3 | 47.00 | 270.000 | 921.4100952148 | 1.3205365 | 4 | 23.00 | 270.000 | 913.6674194336 | 1.2704575 | 5 | 0.00 | 0.000 | 908.1397705078 | 1.3234487 | 6 | 11.00 | 90.000 | 908.0071411133 | 1.2582344 | 7 | 35.00 | 90.000 | 916.3591918945 | 1.5512319 | 8 | 59.00 | 90.000 | 920.1303100586 | 1.7320848 | 9 | 83.00 | 90.000 | 921.3920288086 | 1.6781629 | 10 | 95.00 | 90.000 | 905.5722656250 | 1.7448909 |
<1>:UniqueId
<2>:666765
<3>:4/24/2025 5:14:32 PM
<4>:Lot
<5>:LSL8IN \ 10PT_5mm
<6>:57
<7>:666765
<8>:4626
<9>:1
<10>:-
<11>:CDE5
<12>:Operator
<13>:Engineer
<14>:DLRatio
<15>:18.55
<16>:AutoOptimizeGain
<17>:AutoProbeHeightSet
<18>:3
<19>:
<20>:915.19
<21>:0.0069647
<22>:SemiRadial
<23>:1
<24>:95
<25>:270
<26>:913.9620972
<27>:1.3236315
<28>:2
<29>:71
<30>:270
<31>:923.2605591
<32>:1.2676778
<33>:3
<34>:47
<35>:270
<36>:921.4100952
<37>:1.3205365
<38>:4
<39>:23
<40>:270
<41>:913.6674194
<42>:1.2704575
<43>:5
<44>:0
<45>:0
<46>:908.1397705
<47>:1.3234487
<48>:6
<49>:11
<50>:90
<51>:908.0071411
<52>:1.2582344
<53>:7
<54>:35
<55>:90
<56>:916.3591919
<57>:1.5512319
<58>:8
<59>:59
<60>:90
<61>:920.1303101
<62>:1.7320848
<63>:9
<64>:83
<65>:90
<66>:921.3920288
<67>:1.6781629
<68>:10
<69>:95
<70>:90
<71>:905.5722656
<72>:1.7448909

View File

@ -0,0 +1,122 @@
{
"SentToMetrology": false,
"SentToSPC": false,
"AutoOptimizeGain": "AutoOptimizeGain",
"AutoProbeHeightSet": "AutoProbeHeightSet",
"Avg": "915.190",
"CellName": "CDE5",
"DLRatio": "DLRatio",
"DataReject": "3.00",
"Date": "4/24/2025 5:14:32 PM",
"Engineer": "Engineer",
"EquipId": "CDE5",
"FileName": "",
"FilePath": "",
"Id": -1,
"Layer": "1",
"LotId": "Lot",
"Op": "Operator",
"PSN": "4626",
"RDS": "666765",
"Reactor": "57",
"Recipe": "LSL8IN \\ 10PT_5mm",
"ResistivitySpec": "ResistivitySpec",
"Run": "666765",
"SemiRadial": "SemiRadial",
"StDev": "0.0069647",
"Temp": "18.55",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Zone": "-",
"Details": [
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.3236315",
"Pt": "1",
"R": "95.00",
"Rs": "913.9620971680",
"T": "270.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-1"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.2676778",
"Pt": "2",
"R": "71.00",
"Rs": "923.2605590820",
"T": "270.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-2"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.3205365",
"Pt": "3",
"R": "47.00",
"Rs": "921.4100952148",
"T": "270.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-3"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.2704575",
"Pt": "4",
"R": "23.00",
"Rs": "913.6674194336",
"T": "270.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-4"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.3234487",
"Pt": "5",
"R": "0.00",
"Rs": "908.1397705078",
"T": "0.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-5"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.2582344",
"Pt": "6",
"R": "11.00",
"Rs": "908.0071411133",
"T": "90.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-6"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.5512319",
"Pt": "7",
"R": "35.00",
"Rs": "916.3591918945",
"T": "90.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-7"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.7320848",
"Pt": "8",
"R": "59.00",
"Rs": "920.1303100586",
"T": "90.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-8"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.6781629",
"Pt": "9",
"R": "83.00",
"Rs": "921.3920288086",
"T": "90.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-9"
},
{
"HeaderUniqueId": "CDE5_57-666765-4626.1_202504241714320000",
"Merit": "1.7448909",
"Pt": "10",
"R": "95.00",
"Rs": "905.5722656250",
"T": "90.000",
"UniqueId": "CDE5_57-666765-4626.1_202504241714320000_Item-10"
}
]
}

View File

@ -0,0 +1,57 @@
HEADER_TAG HEADER_VALUE
FORMAT 2.00
NUMBER_PASSES 0001
HEADER_OFFSET H#######T
DATA_OFFSET D#######T
END_OFFSET E#######T
"Time" "A_LOGISTICS" "B_LOGISTICS" "Test" "Count" "Index" "MesEntity" "Date" "Employee" "Lot" "PSN" "Reactor" "Recipe" "AutoOptimizeGain" "AutoProbeHeightSet" "Avg" "DataReject" "DLRatio" "Merit" "Pt" "R" "ResistivitySpec" "Rs" "SemiRadial" "StdDev" "T" "Temp" "Engineer" "EquipId" "FileName" "HeaderUniqueId" "Id" "Layer" "RDS" "Run" "UniqueId" "Zone" "SheetRhoVariation"
0.00 1 2 24 10 0 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.3236315 1 95.00 ResistivitySpec 913.9620971680 SemiRadial 0.0069647 270.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 1 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.2676778 2 71.00 ResistivitySpec 923.2605590820 SemiRadial 0.0069647 270.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 2 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.3205365 3 47.00 ResistivitySpec 921.4100952148 SemiRadial 0.0069647 270.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 3 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.2704575 4 23.00 ResistivitySpec 913.6674194336 SemiRadial 0.0069647 270.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 4 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.3234487 5 0.00 ResistivitySpec 908.1397705078 SemiRadial 0.0069647 0.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 5 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.2582344 6 11.00 ResistivitySpec 908.0071411133 SemiRadial 0.0069647 90.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 6 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.5512319 7 35.00 ResistivitySpec 916.3591918945 SemiRadial 0.0069647 90.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 7 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.7320848 8 59.00 ResistivitySpec 920.1303100586 SemiRadial 0.0069647 90.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 8 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.6781629 9 83.00 ResistivitySpec 921.3920288086 SemiRadial 0.0069647 90.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
0.00 1 2 24 10 9 CDE5 4/24/2025 5:14:32 PM Operator Lot 4626 57 LSL8IN \ 10PT_5mm AutoOptimizeGain AutoProbeHeightSet 915.190 3.00 DLRatio 1.7448909 10 95.00 ResistivitySpec 905.5722656250 SemiRadial 0.0069647 90.000 18.55 Engineer ResMap5 HeaderUniqueId Id 1 666765 666765 UniqueId -
NUM_DATA_ROWS 000000010
NUM_DATA_COLUMNS 000000038
DELIMITER ;
START_TIME_FORMAT MM/dd/yyyy HH:mm:ss
START_TIME 04/24/2025 17:14:32
LOGISTICS_COLUMN A_LOGISTICS
LOGISTICS_COLUMN B_LOGISTICS
LOGISTICS_1 A_HeaderId=309148;A_SubgroupId=1745540084;A_BASIC_TYPE=;A_INFO=5424R116.RsM.csv;A_INFO2=10;A_JOBID=CDE5;A_MES_ENTITY=CDE5;A_MID=57-666765-4626.1;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811116720000000;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2 B_HeaderId=309148;B_SubgroupId=1745540084;B_BASIC_TYPE=-;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=666765;B_NULL_DATA=;B_PPID=10PT_5mm;B_PROCESS_JOBID=57;B_PRODUCT=4626;B_SEQUENCE=638811116720000000;B_WAFER_ID=-;B_WAFER_POS=-;
EOF
HEADER_TAG|HEADER_VALUE
FORMAT|2.00
NUMBER_PASSES|0001
HEADER_OFFSET|000007317
DATA_OFFSET|000000128
END_OFFSET|000007957
|Time|A_LOGISTICS|B_LOGISTICS|Count|Sequence|MesEntity|Index|Title|TheFileName|Project|RecipeName|LotID|WfrID|Is_TF_DataFile|Directory|Time|Date|Temp|TCRPercent|NOrP|Avg|Dev|Min|Max|Operator|Equipment|Engineer|AreaOrDiamScan|WaferShape|BNBand|TemplateFile|XSize|YSize|CalibrationFactor|MsmtMode|DataType|DataUnit|NumProbePoints|SingleOrDualProbeConfig|NumberActPrbPts|Rsens|IdrvMx|VinGain|DataRejectSigma|MeritThreshold|PrbChgNumber|PrbName|WaferSize|EdgeEx|Xll|Yll|Xur|Yur|X|Y|CutCorners|DiamThScan|DiamStart|DiamEnd|DiamStep|FlatOrNotch|FollowMajorFlat|AutoOrManualLoad|RangeOrIndividual|PauseAfterEveryRun|AutoPrint|Plot|BulkSampleThk|Unit|RangeFrom|RangeTo|CassetteSlotSelected|R|Th|Data|Rs|RsA|RsB|NumberSample|PointX|PointY|Irng|Vrng|ChiSq|MeritGOF|DataIntegrity|RDS|PSN|Reactor|Layer|Zone|Employee|InferredLot|InferredPoint|StandardDeviationPercentage|SheetRhoVariation|EventId|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
0.00|1|2|10|638811116720000000|CDE5|0|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|95.00|270.000|913.9620971680|913.9620971680|914.08798462|731.11854485|1184|-95.00|-0.00|3051|1102|1.4E+02|1.3236315|0|666765|4626|57|1|-||57-666765-4626.1|1|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|1|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|71.00|270.000|923.2605590820|923.2605590820|923.56932267|738.79669064|1184|-71.00|-0.00|3051|1057|1.3E+02|1.2676778|0|666765|4626|57|1|-||57-666765-4626.1|2|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|2|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|47.00|270.000|921.4100952148|921.4100952148|909.70358100|721.40113210|1184|-47.00|-0.00|3054|1046|1.2E+02|1.3205365|0|666765|4626|57|1|-||57-666765-4626.1|3|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|3|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|23.00|270.000|913.6674194336|913.6674194336|896.28473107|707.65557259|1184|-23.00|-0.00|3055|1042|1.2E+02|1.2704575|0|666765|4626|57|1|-||57-666765-4626.1|4|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|4|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|0.00|0.000|908.1397705078|908.1397705078|898.61367587|713.68271830|1184|0.00|0.00|3052|1033|1.0E+02|1.3234487|0|666765|4626|57|1|-||57-666765-4626.1|5|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|5|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|11.00|90.000|908.0071411133|908.0071411133|900.37349147|716.08698414|1184|11.00|0.00|3052|1027|1.2E+02|1.2582344|0|666765|4626|57|1|-||57-666765-4626.1|6|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|6|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|35.00|90.000|916.3591918945|916.3591918945|903.86156023|716.31006062|1184|35.00|0.00|3052|1020|8.3E+01|1.5512319|0|666765|4626|57|1|-||57-666765-4626.1|7|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|7|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|59.00|90.000|920.1303100586|920.1303100586|914.46298514|728.38862138|1184|59.00|0.00|3050|1047|7.1E+01|1.7320848|0|666765|4626|57|1|-||57-666765-4626.1|8|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|8|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|83.00|90.000|921.3920288086|921.3920288086|913.59693033|726.57794711|1184|83.00|0.00|3051|1029|7.6E+01|1.6781629|0|666765|4626|57|1|-||57-666765-4626.1|9|0.0069647||24
0.00|1|2|10|638811116720000000|CDE5|9|666765||LSL8IN|LSL8IN \ 10PT_5mm|MyCarrierID|WaferID|0||17:14|4/24/2025 5:14:32 PM|18.55|0.300|?|915.190|6.374|905.57|923.26|Operator|ResMap5|Engineer|TC|8|10PT_5mm.TPL|125.00|125.00|1.00000|0|Rs|Ohms/sq||10|2|10|99348.000|0.0000750007|0.01287|3.00|0.10|1|MyFavoriteProbe|200.00|10.00|-55.00|-55.00|55.00|55.00|5|5|89|0.00|-50.00|50.00|2.0000|N|Y|M|I|N|Y|N|500.000000|U|25|25|NNNNNNNNNNNNNNNNNNNNNNNNNN|95.00|90.000|905.5722656250|905.5722656250|917.53049853|739.99994302|1184|95.00|0.00|3052|1055|6.7E+01|1.7448909|0|666765|4626|57|1|-||57-666765-4626.1|10|0.0069647||24
NUM_DATA_ROWS|000000010
NUM_DATA_COLUMNS|000000097
DELIMITER|;
START_TIME_FORMAT|MM/dd/yyyy HH:mm:ss
START_TIME|04/24/2025 17:14:32
LOGISTICS_COLUMN|A_LOGISTICS
LOGISTICS_COLUMN|B_LOGISTICS
LOGISTICS_1|A_BASIC_TYPE=;A_INFO=5424R116.RsM.csv;A_INFO2=10;A_JOBID=CDE5;A_MES_ENTITY=CDE5;A_MID=57-666765-4626.1;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811116720000000;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2|B_BASIC_TYPE=-;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=666765;B_NULL_DATA=;B_PPID=10PT_5mm;B_PROCESS_JOBID=57;B_PRODUCT=4626;B_SEQUENCE=638811116720000000;B_WAFER_ID=-;B_WAFER_POS=-;
END_HEADER

View File

@ -0,0 +1,36 @@
Bio-Rad UniqueId 4/24/2025 6:11:07 PM 6inTHICK 40 667740 5159 1 1 667740 2.520 1 119.11 2 0.00 3 118.87 4 0.00 5 0.00 6 0.00 7 117.12 8 116.95 9 116.18
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
|------------------|----------------------|---|----------|----|--------|------|---|---|----|--------|------|----|--------|----|----|----|--------|----|----|----|----|----|----|----|--------|----|--------|----|--------|
| Bio-Rad UniqueId | 4/24/2025 6:11:07 PM | | 6inTHICK | 40 | 667740 | 5159 | 1 | 1 | | 667740 | 2.52 | 1 | 119.11 | 2 | 0 | 3 | 118.87 | 4 | 0 | 5 | 0 | 6 | 0 | 7 | 117.12 | 8 | 116.95 | 9 | 116.18 |
<1>:Bio-Rad UniqueId
<2>:4/24/2025 6:11:07 PM
<3>:
<4>:6inTHICK
<5>:40
<6>:667740
<7>:5159
<8>:1
<9>:1
<10>:
<11>:667740
<12>:2.52
<13>:1
<14>:119.11
<15>:2
<16>:0
<17>:3
<18>:118.87
<19>:4
<20>:0
<21>:5
<22>:0
<23>:6
<24>:0
<25>:7
<26>:117.12
<27>:8
<28>:116.95
<29>:9
<30>:116.18

View File

@ -0,0 +1,80 @@
{
"SentToMetrology": false,
"SentToSPC": false,
"Id": -1,
"Batch": "667740",
"Cassette": "",
"CellName": "BIORAD2",
"Date": "4/24/2025 6:11:07 PM",
"FilePath": "",
"Layer": "1",
"MeanThickness": "117.645",
"Op": "CL",
"PSN": "5159",
"PassFail": "FAIL",
"RDS": "667740",
"RVThickness": "2.520",
"Reactor": "40",
"Recipe": "6inTHICK",
"StdDev": "1.279",
"Title": "Bio-Rad QS400MEPI",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Wafer": "667740",
"Zone": "1",
"Details": [
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "1",
"Thickness": "119.11",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-1"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "2",
"Thickness": "0.00",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-2"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "3",
"Thickness": "118.87",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-3"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "4",
"Thickness": "0.00",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-4"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "5",
"Thickness": "0.00",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-5"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "6",
"Thickness": "0.00",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-6"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "7",
"Thickness": "117.12",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-7"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "8",
"Thickness": "116.95",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-8"
},
{
"HeaderUniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527",
"Position": "9",
"Thickness": "116.18",
"UniqueId": "BIORAD2_40-667740-5159.1-1_202504241811079527_Item-9"
}
]
}

View File

@ -0,0 +1,55 @@
HEADER_TAG HEADER_VALUE
FORMAT 2.00
NUMBER_PASSES 0001
HEADER_OFFSET H#######T
DATA_OFFSET D#######T
END_OFFSET E#######T
"Time" "A_LOGISTICS" "B_LOGISTICS" "Test" "Count" "Index" "MesEntity" "Date" "Employee" "Lot" "PSN" "Reactor" "Recipe" "Cassette" "HeaderUniqueId" "Layer" "PassFail" "Position" "RDS" "Title" "UniqueId" "Wafer" "Zone" "MeanThickness" "RVThickness" "StdDev" "Thickness" "Slot" "ThicknessFourteen3mmEdgeMean" "ThicknessFourteen3mmEdgePercent" "ThicknessFourteen5mmEdgeMean" "ThicknessFourteen5mmEdgePercent" "ThicknessFourteenCenterMean" "ThicknessFourteenCriticalPointsAverage" "ThicknessFourteenCriticalPointsStdDev" "ThicknessFourteenMeanFrom" "Thickness01" "Thickness02" "Thickness03" "Thickness04" "Thickness05" "Thickness06" "Thickness07" "Thickness08" "Thickness09" "Thickness10" "Thickness11" "Thickness12" "Thickness13" "Thickness14"
0.00 1 2 25 9 0 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 1 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 119.11 00 119.11
0.00 1 2 25 9 1 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 2 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 0.00 00 0.00
0.00 1 2 25 9 2 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 3 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 118.87 00 118.87
0.00 1 2 25 9 3 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 4 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 0.00 00 0.00
0.00 1 2 25 9 4 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 5 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 0.00 00 0.00
0.00 1 2 25 9 5 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 6 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 0.00 00 0.00
0.00 1 2 25 9 6 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 7 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 117.12 00 117.12
0.00 1 2 25 9 7 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 8 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 116.95 00 116.95
0.00 1 2 25 9 8 BIORAD2 4/24/2025 6:11:07 PM CL 667740 5159 40 6inTHICK HeaderUniqueId 1 FAIL 9 667740 Bio-Rad QS400MEPI UniqueId 667740 1 117.645 2.520 1.279 116.18 00 116.18
NUM_DATA_ROWS 000000009
NUM_DATA_COLUMNS 000000050
DELIMITER ;
START_TIME_FORMAT MM/dd/yyyy HH:mm:ss
START_TIME 04/24/2025 18:11:07
LOGISTICS_COLUMN A_LOGISTICS
LOGISTICS_COLUMN B_LOGISTICS
LOGISTICS_1 A_HeaderId=514141;A_SubgroupId=1745543491;A_BASIC_TYPE=;A_INFO=202504241811079527.TXT.csv;A_INFO2=9;A_JOBID=BIORAD2;A_MES_ENTITY=BIORAD2;A_MID=40-667740-5159.1-1;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811150679527382;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2 B_HeaderId=514141;B_SubgroupId=1745543491;B_BASIC_TYPE=- EpiPro 5000;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667740;B_NULL_DATA=;B_PPID=6inTHICK;B_PROCESS_JOBID=40;B_PRODUCT=5159;B_SEQUENCE=638811150679527382;B_WAFER_ID=-;B_WAFER_POS=1;
EOF
HEADER_TAG|HEADER_VALUE
FORMAT|2.00
NUMBER_PASSES|0001
HEADER_OFFSET|000003202
DATA_OFFSET|000000128
END_OFFSET|000003871
|Time|A_LOGISTICS|B_LOGISTICS|Count|Sequence|MesEntity|Index|Title|Recipe|DateTime|Operator|Batch|Cassette|UsedLast|Wafer|Position|Thickness|WaferMeanThickness|StdDev|PassFail|Line|RadialVariationThickness|Slot|RDS|PSN|Reactor|Layer|Zone|Employee|InferredLot|Thickness 14 3mm Edge Mean|Thickness 14 3mm Edge % from R/2|Thickness 14 5mm Edge Mean|Thickness 14 5mm Edge % from R/2|Thickness 14 Center Mean|Thickness 14 Average|Thickness 14 Std Dev|Thickness 14 R 2/Mean|Thickness01|Thickness02|Thickness03|Thickness04|Thickness05|Thickness06|Thickness07|Thickness08|Thickness09|Thickness10|Thickness11|Thickness12|Thickness13|Thickness14|EventId|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
0.00|1|2|9|638811150679527382|BIORAD2|0|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|1|119.11|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1|||||||||119.11||||||||||||||25
0.00|1|2|9|638811150679527382|BIORAD2|1|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|2|0.00|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1||||||||||0.00|||||||||||||25
0.00|1|2|9|638811150679527382|BIORAD2|2|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|3|118.87|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1|||||||||||118.87||||||||||||25
0.00|1|2|9|638811150679527382|BIORAD2|3|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|4|0.00|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1||||||||||||0.00|||||||||||25
0.00|1|2|9|638811150679527382|BIORAD2|4|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|5|0.00|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1|||||||||||||0.00||||||||||25
0.00|1|2|9|638811150679527382|BIORAD2|5|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|6|0.00|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1||||||||||||||0.00|||||||||25
0.00|1|2|9|638811150679527382|BIORAD2|6|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|7|117.12|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1|||||||||||||||117.12||||||||25
0.00|1|2|9|638811150679527382|BIORAD2|7|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|8|116.95|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1||||||||||||||||116.95|||||||25
0.00|1|2|9|638811150679527382|BIORAD2|8|Bio-Rad QS400MEPI|6inTHICK|4/24/2025 6:11:07 PM|CL|BIORAD#2||True|667740|9|116.18|117.645|1.279|FAIL|Radial variation (computation B) PASS:|2.520|00|667740|5159|40|1|1||40-667740-5159.1-1|||||||||||||||||116.18||||||25
NUM_DATA_ROWS|000000009
NUM_DATA_COLUMNS|000000053
DELIMITER|;
START_TIME_FORMAT|MM/dd/yyyy HH:mm:ss
START_TIME|04/24/2025 18:11:07
LOGISTICS_COLUMN|A_LOGISTICS
LOGISTICS_COLUMN|B_LOGISTICS
LOGISTICS_1|A_BASIC_TYPE=;A_INFO=202504241811079527.TXT.csv;A_INFO2=9;A_JOBID=BIORAD2;A_MES_ENTITY=BIORAD2;A_MID=40-667740-5159.1-1;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811150679527382;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2|B_BASIC_TYPE=- EpiPro 5000;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667740;B_NULL_DATA=;B_PPID=6inTHICK;B_PROCESS_JOBID=40;B_PRODUCT=5159;B_SEQUENCE=638811150679527382;B_WAFER_ID=-;B_WAFER_POS=1;
END_HEADER

View File

@ -0,0 +1,22 @@
Stratus_32-667283-5095_20250424074408371 4/24/2025 7:44:08 PM BIORAD5 FQA Thickness 6in_CENTERPOINT 32 667283 5095 _24_19_41 667283 6.971 1 6.963 25 6.980
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
|------------------------------------------|----------------------|---------|---------------|---|-----------------|----|--------|------|-----------|--------|-------|----|-------|----|------|
| Stratus_32-667283-5095_20250424074408371 | 4/24/2025 7:44:08 PM | BIORAD5 | FQA Thickness | | 6in_CENTERPOINT | 32 | 667283 | 5095 | _24_19_41 | 667283 | 6.971 | 1 | 6.963 | 25 | 6.98 |
<1>:Stratus_32-667283-5095_20250424074408371
<2>:4/24/2025 7:44:08 PM
<3>:BIORAD5
<4>:FQA Thickness
<5>:
<6>:6in_CENTERPOINT
<7>:32
<8>:667283
<9>:5095
<10>:_24_19_41
<11>:667283
<12>:6.971
<13>:1
<14>:6.963
<15>:25
<16>:6.98

View File

@ -0,0 +1,59 @@
{
"Id": -1,
"Batch": "_24_19_41",
"Cassette": "667283",
"CellName": "BIORAD5",
"Date": "4/24/2025 7:44:08 PM",
"FilePath": "",
"MeanThickness": "6.971",
"Operator": "",
"PSN": "5095",
"RDS": "667283",
"Reactor": "32",
"Recipe": "6in_CENTERPOINT",
"StdDev": "0.0115",
"Title": "_24_19_41",
"UniqueId": "BIORAD5_32-667283-5095_202504241944083711",
"Details": [
{
"HeaderUniqueId": "BIORAD5_32-667283-5095_202504241944083711",
"Mean": "6.963",
"PassFail": "PASS",
"Position": "1",
"Recipe": "6in_CENTERPOINT",
"Slot": "1",
"StdDev": "0",
"UniqueId": "BIORAD5_32-667283-5095_202504241944083711_Item-1",
"Thickness": "6.963",
"Wafer": "Wafer 1",
"Points": [
{
"HeaderUniqueId": "HeaderUniqueId",
"Position": "1",
"Thickness": "6.963",
"UniqueId": "UniqueId"
}
]
},
{
"HeaderUniqueId": "BIORAD5_32-667283-5095_202504241944083711",
"Mean": "6.980",
"PassFail": "PASS",
"Position": "25",
"Recipe": "6in_CENTERPOINT",
"Slot": "25",
"StdDev": "0",
"UniqueId": "BIORAD5_32-667283-5095_202504241944083711_Item-2",
"Thickness": "6.980",
"Wafer": "Wafer 25",
"Points": [
{
"HeaderUniqueId": "HeaderUniqueId",
"Position": "25",
"Thickness": "6.980",
"UniqueId": "UniqueId"
}
]
}
]
}

View File

@ -0,0 +1,41 @@
HEADER_TAG HEADER_VALUE
FORMAT 2.00
NUMBER_PASSES 0001
HEADER_OFFSET H#######T
DATA_OFFSET D#######T
END_OFFSET E#######T
"Time" "A_LOGISTICS" "B_LOGISTICS" "Test" "Count" "Index" "MesEntity" "MID" "Date" "Employee" "Lot" "PSN" "Reactor" "Recipe" "Cassette" "GradeStdDev" "HeaderUniqueId" "Layer" "MeanThickness" "PassFail" "RDS" "Slot" "Title" "UniqueId" "Wafer" "Zone" "Mean" "Position" "StdDev" "Thickness" "ThicknessSlotOne" "ThicknessSlotTwentyFive" "DeltaThicknessSlotsOneAndTwentyFive" "PercentDeltaThicknessSlotsOneAndTwentyFive"
0.00 1 2 26 2 0 BIORAD5 667283 4/24/2025 7:44:08 PM _24_19_41 5095 32 6in_CENTERPOINT 667283 0.0115 HeaderUniqueId - 6.971 PASS 667283 1 _24_19_41 UniqueId Wafer 1 - 6.963 1 0 6.963 ThicknessSlotOne ThicknessSlotTwentyFive
0.00 1 2 26 2 1 BIORAD5 667283 4/24/2025 7:44:08 PM _24_19_41 5095 32 6in_CENTERPOINT 667283 0.0115 HeaderUniqueId - 6.971 PASS 667283 25 _24_19_41 UniqueId Wafer 25 - 6.980 25 0 6.980 ThicknessSlotOne ThicknessSlotTwentyFive
NUM_DATA_ROWS 000000002
NUM_DATA_COLUMNS 000000034
DELIMITER ;
START_TIME_FORMAT MM/dd/yyyy HH:mm:ss
START_TIME 04/24/2025 19:44:08
LOGISTICS_COLUMN A_LOGISTICS
LOGISTICS_COLUMN B_LOGISTICS
LOGISTICS_1 A_HeaderId=348729;A_SubgroupId=1745549064;A_BASIC_TYPE=;A_INFO=DataBiorad.txt-0.csv;A_INFO2=2;A_JOBID=BIORAD5;A_MES_ENTITY=BIORAD5;A_MID=32-667283-5095;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811206483711430;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2 B_HeaderId=348729;B_SubgroupId=1745549064;B_BASIC_TYPE=Left - High Thruput;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667283;B_NULL_DATA=;B_PPID=6in_CENTERPOINT;B_PROCESS_JOBID=32;B_PRODUCT=5095;B_SEQUENCE=638811206483711430;B_WAFER_ID=-;B_WAFER_POS=-;
EOF
HEADER_TAG|HEADER_VALUE
FORMAT|2.00
NUMBER_PASSES|0001
HEADER_OFFSET|000000838
DATA_OFFSET|000000128
END_OFFSET|000001510
|Time|A_LOGISTICS|B_LOGISTICS|Count|Sequence|MesEntity|Index|Batch|Cassette|DateTime|Destination|Mean|PassFail|Recipe|Reference|Site|Slot|Source|StdDev|Text|GradeMean|GradeStdDev|RDS|PSN|Reactor|Layer|Zone|Employee|InferredLot|Actual Delta Thick Pts 1 and 25|% Delta Thick Pts 1 and 25|EventId|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
0.00|1|2|2|638811206483711430|BIORAD5|0|_24_19_41|667283|4/24/2025 7:44:08 PM||6.963|PASS|6in_CENTERPOINT||6.963|1||0|Wafer 1|6.971|0.0115|667283|5095|32|-|-||_24_19_41|||26
0.00|1|2|2|638811206483711430|BIORAD5|1|_24_19_41|667283|4/24/2025 7:44:08 PM||6.980|PASS|6in_CENTERPOINT||6.980|25||0|Wafer 25|6.971|0.0115|667283|5095|32|-|-||_24_19_41|||26
NUM_DATA_ROWS|000000002
NUM_DATA_COLUMNS|000000032
DELIMITER|;
START_TIME_FORMAT|MM/dd/yyyy HH:mm:ss
START_TIME|04/24/2025 19:44:08
LOGISTICS_COLUMN|A_LOGISTICS
LOGISTICS_COLUMN|B_LOGISTICS
LOGISTICS_1|A_BASIC_TYPE=;A_INFO=DataBiorad.txt-0.csv;A_INFO2=2;A_JOBID=BIORAD5;A_MES_ENTITY=BIORAD5;A_MID=32-667283-5095;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811206483711430;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2|B_BASIC_TYPE=Left - High Thruput;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667283;B_NULL_DATA=;B_PPID=6in_CENTERPOINT;B_PROCESS_JOBID=32;B_PRODUCT=5095;B_SEQUENCE=638811206483711430;B_WAFER_ID=-;B_WAFER_POS=-;
END_HEADER

View File

@ -0,0 +1,103 @@
UniqueId HGCV2 46 667776 5159 - - ZONE2 667776 5PT MES 4/25/2025 8:40:01 AM 150.00 1.02 2.130E-002 N PARALLEL -5.00 -20.00 2500 2000.00 6IN5PT 6IN5PT SSMDATA 6_5PT10M.PAT ASTM: F723 - 82 7.599e+013 2.352e+000 2.799e+000 7.634e+013 2.352e+000 2.766e+000 3.342e-001 4.365e+001 4.605e+001 1.713e+001 2.053e+000 2.563e+000 5.632e+001 2.315e+000 2.779e+000 5.607e+001 2.321e+000 2.746e+000 9.000e+001 -1.000e+000 0.000e+000 2.251e+000 2.931e+001 3.713e+001 -1.000e+000 -1.000e+000 0.000e+000 1 7.854E+013 7.882E+013 0.294 17.109 54.482 54.286 90.000 2.193 2 7.447E+013 7.472E+013 0.216 17.428 57.431 57.247 90.000 1.898 3 7.426E+013 7.458E+013 0.250 17.496 57.596 57.352 90.000 2.414 4 7.695E+013 7.733E+013 0.327 16.621 55.595 55.324 90.000 1.493 5 7.571E+013 7.623E+013 0.584 17.015 56.500 56.121 90.000 3.257
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
|----------|-------|----|--------|------|---|---|-------|--------|---------|----------------------|-----|------|----------|----|----------|----|-----|------|------|--------|--------|---------|--------------|-----------------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|-----------|----------|----------|----------|----------|-----------|-----------|----------|----|----------|----------|-------|--------|--------|--------|----|-------|----|----------|----------|-------|--------|--------|--------|----|-------|----|----------|----------|------|--------|--------|--------|----|-------|----|----------|----------|-------|--------|--------|--------|----|-------|----|----------|----------|-------|--------|------|--------|----|-------|
| UniqueId | HGCV2 | 46 | 667776 | 5159 | - | - | ZONE2 | 667776 | 5PT MES | 4/25/2025 8:40:01 AM | 150 | 1.02 | 2.13E-02 | N | PARALLEL | -5 | -20 | 2500 | 2000 | 6IN5PT | 6IN5PT | SSMDATA | 6_5PT10M.PAT | ASTM: F723 - 82 | 7.60E+13 | 2.35E+00 | 2.80E+00 | 7.63E+13 | 2.35E+00 | 2.77E+00 | 3.34E-01 | 4.37E+01 | 4.61E+01 | 1.71E+01 | 2.05E+00 | 2.56E+00 | 5.63E+01 | 2.32E+00 | 2.78E+00 | 5.61E+01 | 2.32E+00 | 2.75E+00 | 9.00E+01 | -1.00E+00 | 0.00E+00 | 2.25E+00 | 2.93E+01 | 3.71E+01 | -1.00E+00 | -1.00E+00 | 0.00E+00 | 1 | 7.85E+13 | 7.88E+13 | 0.294 | 17.109 | 54.482 | 54.286 | 90 | 2.193 | 2 | 7.45E+13 | 7.47E+13 | 0.216 | 17.428 | 57.431 | 57.247 | 90 | 1.898 | 3 | 7.43E+13 | 7.46E+13 | 0.25 | 17.496 | 57.596 | 57.352 | 90 | 2.414 | 4 | 7.70E+13 | 7.73E+13 | 0.327 | 16.621 | 55.595 | 55.324 | 90 | 1.493 | 5 | 7.57E+13 | 7.62E+13 | 0.584 | 17.015 | 56.5 | 56.121 | 90 | 3.257 |
<1>:UniqueId
<2>:HGCV2
<3>:46
<4>:667776
<5>:5159
<6>:-
<7>:-
<8>:ZONE2
<9>:667776
<10>:5PT MES
<11>:4/25/2025 8:40:01 AM
<12>:150
<13>:1.02
<14>:0.0213
<15>:N
<16>:PARALLEL
<17>:-5
<18>:-20
<19>:2500
<20>:2000
<21>:6IN5PT
<22>:6IN5PT
<23>:SSMDATA
<24>:6_5PT10M.PAT
<25>:ASTM: F723 - 82
<26>:7.599E+13
<27>:2.352
<28>:2.799
<29>:7.634E+13
<30>:2.352
<31>:2.766
<32>:0.3342
<33>:43.65
<34>:46.05
<35>:17.13
<36>:2.053
<37>:2.563
<38>:56.32
<39>:2.315
<40>:2.779
<41>:56.07
<42>:2.321
<43>:2.746
<44>:90
<45>:-1
<46>:0
<47>:2.251
<48>:29.31
<49>:37.13
<50>:-1
<51>:-1
<52>:0
<53>:1
<54>:7.854E+13
<55>:7.882E+13
<56>:0.294
<57>:17.109
<58>:54.482
<59>:54.286
<60>:90
<61>:2.193
<62>:2
<63>:7.447E+13
<64>:7.472E+13
<65>:0.216
<66>:17.428
<67>:57.431
<68>:57.247
<69>:90
<70>:1.898
<71>:3
<72>:7.426E+13
<73>:7.458E+13
<74>:0.25
<75>:17.496
<76>:57.596
<77>:57.352
<78>:90
<79>:2.414
<80>:4
<81>:7.695E+13
<82>:7.733E+13
<83>:0.327
<84>:16.621
<85>:55.595
<86>:55.324
<87>:90
<88>:1.493
<89>:5
<90>:7.571E+13
<91>:7.623E+13
<92>:0.584
<93>:17.015
<94>:56.5
<95>:56.121
<96>:90
<97>:3.257

View File

@ -0,0 +1,119 @@
{
"SentToMetrology": false,
"SentToSPC": false,
"Area": "2.130E-002",
"Ccomp": "1.02",
"CellName": "HGCV2",
"CondType": "N",
"Date": "4/25/2025 8:40:01 AM",
"FlatZMean": "1.713e\u002B001",
"FlatZRadialGradient": "2.563e\u002B000",
"FlatZStdDev": "2.053e\u002B000",
"Folder": "SSMDATA",
"GLimit": "2000.00",
"GradeMean": "2.251e\u002B000",
"GradeRadialGradient": "3.713e\u002B001",
"GradeStdDev": "2.931e\u002B001",
"Id": -1,
"Layer": "-",
"Lot": "667776",
"Model": "PARALLEL",
"NAvgMean": "7.599e\u002B013",
"NAvgRadialGradient": "2.799e\u002B000",
"NAvgStdDev": "2.352e\u002B000",
"NslMean": "7.634e\u002B013",
"NslRadialGradient": "2.766e\u002B000",
"NslStdDev": "2.352e\u002B000",
"Operator": "HGCV2",
"PSN": "5159",
"Pattern": "6_5PT10M.PAT",
"PhaseMean": "9.000e\u002B001",
"PhaseRadialGradient": "0.000e\u002B000",
"PhaseStdDev": "-1.000e\u002B000",
"Plan": "5PT MES",
"RDS": "667776",
"RampRate": "2500",
"Reactor": "46",
"RhoAvgMean": "5.632e\u002B001",
"RhoAvgRadialGradient": "2.779e\u002B000",
"RhoAvgStdDev": "2.315e\u002B000",
"RhoMethod": "ASTM: F723 - 82",
"RhoslMean": "5.607e\u002B001",
"RhoslRadialGradient": "2.746e\u002B000",
"RhoslStdDev": "2.321e\u002B000",
"RsMean": "-1.000e\u002B000",
"RsRadialGradient": "0.000e\u002B000",
"RsStdDev": "-1.000e\u002B000",
"SetupFile": "6IN5PT",
"StartVoltage": "-5.00",
"StopVoltage": "-20.00",
"UniqueId": "HGCV2_46-667776-5159_202504250840019538",
"VdMean": "3.342e-001",
"VdRadialGradient": "4.605e\u002B001",
"VdStdDev": "4.365e\u002B001",
"Wafer": "ZONE2",
"WaferSize": "150.00",
"Zone": "-",
"Details": [
{
"FlatZ": "17.109",
"Grade": "2.193",
"HeaderUniqueId": "HGCV2_46-667776-5159_202504250840019538",
"NAvg": "7.854E\u002B013",
"Nsl": "7.882E\u002B013",
"Phase": "90.000",
"RhoAvg": "54.482",
"Rhosl": "54.286",
"UniqueId": "HGCV2_46-667776-5159_202504250840019538_Item-1",
"Vd": "0.294"
},
{
"FlatZ": "17.428",
"Grade": "1.898",
"HeaderUniqueId": "HGCV2_46-667776-5159_202504250840019538",
"NAvg": "7.447E\u002B013",
"Nsl": "7.472E\u002B013",
"Phase": "90.000",
"RhoAvg": "57.431",
"Rhosl": "57.247",
"UniqueId": "HGCV2_46-667776-5159_202504250840019538_Item-2",
"Vd": "0.216"
},
{
"FlatZ": "17.496",
"Grade": "2.414",
"HeaderUniqueId": "HGCV2_46-667776-5159_202504250840019538",
"NAvg": "7.426E\u002B013",
"Nsl": "7.458E\u002B013",
"Phase": "90.000",
"RhoAvg": "57.596",
"Rhosl": "57.352",
"UniqueId": "HGCV2_46-667776-5159_202504250840019538_Item-3",
"Vd": "0.250"
},
{
"FlatZ": "16.621",
"Grade": "1.493",
"HeaderUniqueId": "HGCV2_46-667776-5159_202504250840019538",
"NAvg": "7.695E\u002B013",
"Nsl": "7.733E\u002B013",
"Phase": "90.000",
"RhoAvg": "55.595",
"Rhosl": "55.324",
"UniqueId": "HGCV2_46-667776-5159_202504250840019538_Item-4",
"Vd": "0.327"
},
{
"FlatZ": "17.015",
"Grade": "3.257",
"HeaderUniqueId": "HGCV2_46-667776-5159_202504250840019538",
"NAvg": "7.571E\u002B013",
"Nsl": "7.623E\u002B013",
"Phase": "90.000",
"RhoAvg": "56.500",
"Rhosl": "56.121",
"UniqueId": "HGCV2_46-667776-5159_202504250840019538_Item-5",
"Vd": "0.584"
}
]
}

View File

@ -0,0 +1,47 @@
HEADER_TAG HEADER_VALUE
FORMAT 2.00
NUMBER_PASSES 0001
HEADER_OFFSET H#######T
DATA_OFFSET D#######T
END_OFFSET E#######T
"Time" "A_LOGISTICS" "B_LOGISTICS" "Test" "Count" "Index" "MesEntity" "Date" "Employee" "Lot" "PSN" "Reactor" "Recipe" "Area" "Folder" "HeaderUniqueId" "Id" "Layer" "Model" "Pattern" "Phase" "Plan" "RampRate" "RDS" "SetupFile" "StartVoltage" "StopVoltage" "UniqueId" "Wafer" "WaferSize" "Zone" "Ccomp" "CondType" "FlatZ" "FlatZMean" "FlatZRadialGradient" "FlatZStdDev" "GLimit" "Grade" "GradeMean" "GradeRadialGradient" "GradeStdDev" "NAvg" "NAvgMean" "NAvgRadialGradient" "NAvgStdDev" "Nsl" "NslMean" "NslRadialGradient" "NslStdDev" "PhaseMean" "PhaseRadialGradient" "PhaseStdDev" "RhoAvg" "RhoAvgMean" "RhoAvgRadialGradient" "RhoAvgStdDev" "RhoMethod" "Rhosl" "RhoslMean" "RhoslRadialGradient" "RhoslStdDev" "RsMean" "RsRadialGradient" "RsStdDev" "Vd" "VdMean" "VdRadialGradient" "VdStdDev" "Variation" "AreaDeltaFromLastRun" "Nine10mmEdgeMean" "Nine4mmEdgeMean" "NineCriticalPointsAverage" "NineCriticalPointsPhaseAngleAverage" "NineCriticalPointsStdDev" "NineEdgeMeanDelta" "NineMean" "NineResRangePercent" "RhoAvg01" "RhoAvg02" "RhoAvg03" "RhoAvg04" "RhoAvg05" "RhoAvg06" "RhoAvg07" "RhoAvg08" "RhoAvg09"
0.00 1 2 23 5 0 HGCV2 4/25/2025 8:40:01 AM 667776 5159 46 Recipe 2.130E-002 SSMDATA HeaderUniqueId Id - PARALLEL 6_5PT10M.PAT 90.000 5PT MES 2500 667776 6IN5PT -5.00 -20.00 UniqueId ZONE2 150.00 - 1.02 N 17.109 1.713e+001 2.563e+000 2.053e+000 2000.00 2.193 2.251e+000 3.713e+001 2.931e+001 7.854E+013 7.599e+013 2.799e+000 2.352e+000 7.882E+013 7.634e+013 2.766e+000 2.352e+000 9.000e+001 0.000e+000 -1.000e+000 54.482 5.632e+001 2.779e+000 2.315e+000 ASTM: F723 - 82 54.286 5.607e+001 2.746e+000 2.321e+000 -1.000e+000 0.000e+000 -1.000e+000 0.294 3.342e-001 4.605e+001 4.365e+001 54.482
0.00 1 2 23 5 1 HGCV2 4/25/2025 8:40:01 AM 667776 5159 46 Recipe 2.130E-002 SSMDATA HeaderUniqueId Id - PARALLEL 6_5PT10M.PAT 90.000 5PT MES 2500 667776 6IN5PT -5.00 -20.00 UniqueId ZONE2 150.00 - 1.02 N 17.428 1.713e+001 2.563e+000 2.053e+000 2000.00 1.898 2.251e+000 3.713e+001 2.931e+001 7.447E+013 7.599e+013 2.799e+000 2.352e+000 7.472E+013 7.634e+013 2.766e+000 2.352e+000 9.000e+001 0.000e+000 -1.000e+000 57.431 5.632e+001 2.779e+000 2.315e+000 ASTM: F723 - 82 57.247 5.607e+001 2.746e+000 2.321e+000 -1.000e+000 0.000e+000 -1.000e+000 0.216 3.342e-001 4.605e+001 4.365e+001 57.431
0.00 1 2 23 5 2 HGCV2 4/25/2025 8:40:01 AM 667776 5159 46 Recipe 2.130E-002 SSMDATA HeaderUniqueId Id - PARALLEL 6_5PT10M.PAT 90.000 5PT MES 2500 667776 6IN5PT -5.00 -20.00 UniqueId ZONE2 150.00 - 1.02 N 17.496 1.713e+001 2.563e+000 2.053e+000 2000.00 2.414 2.251e+000 3.713e+001 2.931e+001 7.426E+013 7.599e+013 2.799e+000 2.352e+000 7.458E+013 7.634e+013 2.766e+000 2.352e+000 9.000e+001 0.000e+000 -1.000e+000 57.596 5.632e+001 2.779e+000 2.315e+000 ASTM: F723 - 82 57.352 5.607e+001 2.746e+000 2.321e+000 -1.000e+000 0.000e+000 -1.000e+000 0.250 3.342e-001 4.605e+001 4.365e+001 57.596
0.00 1 2 23 5 3 HGCV2 4/25/2025 8:40:01 AM 667776 5159 46 Recipe 2.130E-002 SSMDATA HeaderUniqueId Id - PARALLEL 6_5PT10M.PAT 90.000 5PT MES 2500 667776 6IN5PT -5.00 -20.00 UniqueId ZONE2 150.00 - 1.02 N 16.621 1.713e+001 2.563e+000 2.053e+000 2000.00 1.493 2.251e+000 3.713e+001 2.931e+001 7.695E+013 7.599e+013 2.799e+000 2.352e+000 7.733E+013 7.634e+013 2.766e+000 2.352e+000 9.000e+001 0.000e+000 -1.000e+000 55.595 5.632e+001 2.779e+000 2.315e+000 ASTM: F723 - 82 55.324 5.607e+001 2.746e+000 2.321e+000 -1.000e+000 0.000e+000 -1.000e+000 0.327 3.342e-001 4.605e+001 4.365e+001 55.595
0.00 1 2 23 5 4 HGCV2 4/25/2025 8:40:01 AM 667776 5159 46 Recipe 2.130E-002 SSMDATA HeaderUniqueId Id - PARALLEL 6_5PT10M.PAT 90.000 5PT MES 2500 667776 6IN5PT -5.00 -20.00 UniqueId ZONE2 150.00 - 1.02 N 17.015 1.713e+001 2.563e+000 2.053e+000 2000.00 3.257 2.251e+000 3.713e+001 2.931e+001 7.571E+013 7.599e+013 2.799e+000 2.352e+000 7.623E+013 7.634e+013 2.766e+000 2.352e+000 9.000e+001 0.000e+000 -1.000e+000 56.500 5.632e+001 2.779e+000 2.315e+000 ASTM: F723 - 82 56.121 5.607e+001 2.746e+000 2.321e+000 -1.000e+000 0.000e+000 -1.000e+000 0.584 3.342e-001 4.605e+001 4.365e+001 56.500
NUM_DATA_ROWS 000000005
NUM_DATA_COLUMNS 000000088
DELIMITER ;
START_TIME_FORMAT MM/dd/yyyy HH:mm:ss
START_TIME 04/25/2025 08:40:01
LOGISTICS_COLUMN A_LOGISTICS
LOGISTICS_COLUMN B_LOGISTICS
LOGISTICS_1 A_HeaderId=241989;A_SubgroupId=1745595622;A_BASIC_TYPE=;A_INFO=202504250840019538.pcl.csv;A_INFO2=5;A_JOBID=HGCV2;A_MES_ENTITY=HGCV2;A_MID=46-667776-5159;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811672019538124;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2 B_HeaderId=241989;B_SubgroupId=1745595622;B_BASIC_TYPE=- EpiPro 5000;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667776;B_NULL_DATA=;B_PPID=6_5PT10M.PAT;B_PROCESS_JOBID=46;B_PRODUCT=5159;B_SEQUENCE=638811672019538124;B_WAFER_ID=-;B_WAFER_POS=-;
EOF
HEADER_TAG|HEADER_VALUE
FORMAT|2.00
NUMBER_PASSES|0001
HEADER_OFFSET|000004856
DATA_OFFSET|000000128
END_OFFSET|000005521
|Time|A_LOGISTICS|B_LOGISTICS|Count|Sequence|MesEntity|Index|Operator|StartVoltage|Wafer|StopVoltage|Lot|RampRate|Plan|GLimit|Date|Time|SetupFile|WaferSize|Folder|Ccomp|Pattern|Area|CondType|RhoMethod|Model|MeanNAvg|MeanNsl|MeanVd|MeanFlatZ|MeanRhoAvg|MeanRhosl|MeanPhase|MeanGrade|MeanRs|StandardDeviationPercentageNAvg|StandardDeviationPercentageNsl|StandardDeviationPercentageVd|StandardDeviationPercentageFlatZ|StandardDeviationPercentageRhoAvg|StandardDeviationPercentageRhosl|StandardDeviationPercentagePhase|StandardDeviationPercentageGrade|StandardDeviationPercentageRs|RadialGradientNAvg|RadialGradientNsl|RadialGradientVd|RadialGradientFlatZ|RadialGradientRhoAvg|RadialGradientRhosl|RadialGradientPhase|RadialGradientGrade|RadialGradientRs|Site|X|Y|NAvg|RhoAvg|Nsl|Rhosl|Vd|Phase|FlatZ|Grade|XLeft|XRight|BottomY|TopY|RDS|PSN|Reactor|Layer|Zone|Employee|InferredLot|Nine10mmEdgeMean|Nine4mmEdgeMean|NineCriticalPointsAverage|NineCriticalPointsPhaseAngleAverage|NineCriticalPointsStdDev|NineEdgeMeanDelta|NineMean|NineResRangePercent|AreaDeltaFromLastRun|Variation|Percentage HgCV 4PP Delta|RhoAvg01|RhoAvg02|RhoAvg03|RhoAvg04|RhoAvg05|RhoAvg06|RhoAvg07|RhoAvg08|RhoAvg09|EventId|
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
0.00|1|2|5|638811672019538124|HGCV2|0|PROBE 2|-5.00|ZONE2|-20.00|667776|2500|5PT MES|2000.00|4/25/2025 8:40:01 AM|11:57:16 AM|6IN5PT|150.00|SSMDATA|1.02|6_5PT10M.PAT|2.130E-002|N|ASTM: F723 - 82|PARALLEL|7.599e+013|7.634e+013|3.342e-001|1.713e+001|5.632e+001|5.607e+001|9.000e+001|2.251e+000|-1.000e+000|2.352e+000|2.352e+000|4.365e+001|2.053e+000|2.315e+000|2.321e+000|-1.000e+000|2.931e+001|-1.000e+000|2.799e+000|2.766e+000|4.605e+001|2.563e+000|2.779e+000|2.746e+000|0.000e+000|3.713e+001|0.000e+000|1|0.0|0.0|7.854E+013|54.482|7.882E+013|54.286|0.294|90.000|17.109|2.193|9.00E+000|1.80E+001|13|14|667776|5159|46|-|-||46-667776-5159||||||||||||54.482|||||||||23
0.00|1|2|5|638811672019538124|HGCV2|1|PROBE 2|-5.00|ZONE2|-20.00|667776|2500|5PT MES|2000.00|4/25/2025 8:40:01 AM|11:57:16 AM|6IN5PT|150.00|SSMDATA|1.02|6_5PT10M.PAT|2.130E-002|N|ASTM: F723 - 82|PARALLEL|7.599e+013|7.634e+013|3.342e-001|1.713e+001|5.632e+001|5.607e+001|9.000e+001|2.251e+000|-1.000e+000|2.352e+000|2.352e+000|4.365e+001|2.053e+000|2.315e+000|2.321e+000|-1.000e+000|2.931e+001|-1.000e+000|2.799e+000|2.766e+000|4.605e+001|2.563e+000|2.779e+000|2.746e+000|0.000e+000|3.713e+001|0.000e+000|2|56.3|32.5|7.447E+013|57.431|7.472E+013|57.247|0.216|90.000|17.428|1.898|9.00E+000|1.80E+001|13|14|667776|5159|46|-|-||46-667776-5159|||||||||||||57.431||||||||23
0.00|1|2|5|638811672019538124|HGCV2|2|PROBE 2|-5.00|ZONE2|-20.00|667776|2500|5PT MES|2000.00|4/25/2025 8:40:01 AM|11:57:16 AM|6IN5PT|150.00|SSMDATA|1.02|6_5PT10M.PAT|2.130E-002|N|ASTM: F723 - 82|PARALLEL|7.599e+013|7.634e+013|3.342e-001|1.713e+001|5.632e+001|5.607e+001|9.000e+001|2.251e+000|-1.000e+000|2.352e+000|2.352e+000|4.365e+001|2.053e+000|2.315e+000|2.321e+000|-1.000e+000|2.931e+001|-1.000e+000|2.799e+000|2.766e+000|4.605e+001|2.563e+000|2.779e+000|2.746e+000|0.000e+000|3.713e+001|0.000e+000|3|-32.5|56.3|7.426E+013|57.596|7.458E+013|57.352|0.250|90.000|17.496|2.414|9.00E+000|1.80E+001|13|14|667776|5159|46|-|-||46-667776-5159||||||||||||||57.596|||||||23
0.00|1|2|5|638811672019538124|HGCV2|3|PROBE 2|-5.00|ZONE2|-20.00|667776|2500|5PT MES|2000.00|4/25/2025 8:40:01 AM|11:57:16 AM|6IN5PT|150.00|SSMDATA|1.02|6_5PT10M.PAT|2.130E-002|N|ASTM: F723 - 82|PARALLEL|7.599e+013|7.634e+013|3.342e-001|1.713e+001|5.632e+001|5.607e+001|9.000e+001|2.251e+000|-1.000e+000|2.352e+000|2.352e+000|4.365e+001|2.053e+000|2.315e+000|2.321e+000|-1.000e+000|2.931e+001|-1.000e+000|2.799e+000|2.766e+000|4.605e+001|2.563e+000|2.779e+000|2.746e+000|0.000e+000|3.713e+001|0.000e+000|4|-56.3|-32.5|7.695E+013|55.595|7.733E+013|55.324|0.327|90.000|16.621|1.493|9.00E+000|1.80E+001|13|14|667776|5159|46|-|-||46-667776-5159|||||||||||||||55.595||||||23
0.00|1|2|5|638811672019538124|HGCV2|4|PROBE 2|-5.00|ZONE2|-20.00|667776|2500|5PT MES|2000.00|4/25/2025 8:40:01 AM|11:57:16 AM|6IN5PT|150.00|SSMDATA|1.02|6_5PT10M.PAT|2.130E-002|N|ASTM: F723 - 82|PARALLEL|7.599e+013|7.634e+013|3.342e-001|1.713e+001|5.632e+001|5.607e+001|9.000e+001|2.251e+000|-1.000e+000|2.352e+000|2.352e+000|4.365e+001|2.053e+000|2.315e+000|2.321e+000|-1.000e+000|2.931e+001|-1.000e+000|2.799e+000|2.766e+000|4.605e+001|2.563e+000|2.779e+000|2.746e+000|0.000e+000|3.713e+001|0.000e+000|5|32.5|-56.3|7.571E+013|56.500|7.623E+013|56.121|0.584|90.000|17.015|3.257|9.00E+000|1.80E+001|13|14|667776|5159|46|-|-||46-667776-5159||||||||||||||||56.500|||||23
NUM_DATA_ROWS|000000005
NUM_DATA_COLUMNS|000000096
DELIMITER|;
START_TIME_FORMAT|MM/dd/yyyy HH:mm:ss
START_TIME|04/25/2025 08:40:01
LOGISTICS_COLUMN|A_LOGISTICS
LOGISTICS_COLUMN|B_LOGISTICS
LOGISTICS_1|A_BASIC_TYPE=;A_INFO=202504250840019538.pcl.csv;A_INFO2=5;A_JOBID=HGCV2;A_MES_ENTITY=HGCV2;A_MID=46-667776-5159;A_NULL_DATA=;A_PPID=NO_PPID;A_PROCESS_JOBID=;A_PRODUCT=;A_SEQUENCE=638811672019538124;A_WAFER_ID=;A_WAFER_POS=;
LOGISTICS_2|B_BASIC_TYPE=- EpiPro 5000;B_INFO=-;B_INFO2=;B_JOBID=;B_MES_ENTITY=;B_MID=667776;B_NULL_DATA=;B_PPID=6_5PT10M.PAT;B_PROCESS_JOBID=46;B_PRODUCT=5159;B_SEQUENCE=638811672019538124;B_WAFER_ID=-;B_WAFER_POS=-;
END_HEADER

3337
.vscode/METROLOGY_SERVICES.vba vendored Normal file

File diff suppressed because it is too large Load Diff

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"files.associations": {
"*.txt": "vba"
},
"cSpell.words": []
}

View File

@ -21,77 +21,75 @@
"<1,12>": "SCOPE #3",
"<1,13>": "SCOPE #4",
"<1,14>": "SCOPE #5",
"<1,15>": "SCOPE #6",
"<1,16>": "SP1 1",
"<1,17>": "TENCOR1",
"<1,18>": "TENCOR2",
"<1,19>": "TENCOR3",
"<1,20>": "BIORAD2",
"<1,21>": "BIORAD3",
"<1,22>": "BIORAD4",
"<1,23>": "BIORAD5",
"<1,24>": "CDE4",
"<1,25>": "CDE5",
"<1,26>": "CDE6",
"<1,27>": "HGCV1",
"<1,28>": "HGCV2",
"<1,29>": "HGCV3",
"<1,30>": "SPV",
"<1,31>": "SRP",
"<1,32>": "BELLJAR",
"<1,33>": "6INLESS",
"<1,34>": "6INLESS2",
"<1,35>": "6MACTRONIX #1",
"<1,36>": "6MACTRONIX #2",
"<1,37>": "6MACTRONIX #3",
"<1,38>": "6MACTRONIX #4",
"<1,39>": "8INLESS",
"<1,40>": "8INLESS2",
"<1,41>": "BAGGER1",
"<1,42>": "BAGGER2",
"<1,43>": "BAGGER3",
"<1,44>": "BAGGER4",
"<1,45>": "6INFF01",
"<1,46>": "6INFF02",
"<1,47>": "6INFF03",
"<1,48>": "6INFF04",
"<1,49>": "6INFF05",
"<1,50>": "6INFF06",
"<1,51>": "6INFF07",
"<1,52>": "6INFF08",
"<1,53>": "6INFF09",
"<1,54>": "6INFF10",
"<1,55>": "8INNF01",
"<1,56>": "8INNF02",
"<1,57>": "8INNF03",
"<1,58>": "8INNF04",
"<1,59>": "8INNF05",
"<1,60>": "8INFF01",
"<1,61>": "8INFF02",
"<1,62>": "8INFF03",
"<1,63>": "8INFF04",
"<1,64>": "MACTRONIX #1",
"<1,65>": "MACTRONIX #2 ",
"<1,66>": "MACTRONIX #3",
"<1,67>": "MACTRONIX #4",
"<1,68>": "MACTRONIX #5",
"<1,69>": "MACTRONIX #6",
"<1,70>": "MACTRONIX #7",
"<1,71>": "TALL_PITCH1",
"<1,72>": "TALL_PITCH2",
"<1,73>": "TALL_PITCH3",
"<1,74>": "TALL_PITCH4",
"<1,75>": "WC6INCH1",
"<1,76>": "WC6INCH2",
"<1,77>": "WC6INCH3",
"<1,78>": "WC6INCH4",
"<1,79>": "WC8INCH1",
"<1,80>": "WC8INCH2",
"<1,81>": "WC8INCH3",
"<1,82>": "ELLP01",
"<1,83>": "LEAKCHK01",
"<1,84>": "LEAKCHK02",
"<1,85>": "TBI #1"
"<1,15>": "SP1 1",
"<1,16>": "TENCOR1",
"<1,17>": "TENCOR2",
"<1,18>": "TENCOR3",
"<1,19>": "BIORAD2",
"<1,20>": "BIORAD3",
"<1,21>": "BIORAD4",
"<1,22>": "BIORAD5",
"<1,23>": "CDE4",
"<1,24>": "CDE5",
"<1,25>": "CDE6",
"<1,26>": "HGCV1",
"<1,27>": "HGCV2",
"<1,28>": "HGCV3",
"<1,29>": "SPV",
"<1,30>": "SRP",
"<1,31>": "BELLJAR",
"<1,32>": "6INLESS",
"<1,33>": "6INLESS2",
"<1,34>": "6MACTRONIX #1",
"<1,35>": "6MACTRONIX #2",
"<1,36>": "6MACTRONIX #3",
"<1,37>": "6MACTRONIX #4",
"<1,38>": "8INLESS",
"<1,39>": "8INLESS2",
"<1,40>": "BAGGER1",
"<1,41>": "BAGGER2",
"<1,42>": "BAGGER3",
"<1,43>": "BAGGER4",
"<1,44>": "6INFF01",
"<1,45>": "6INFF02",
"<1,46>": "6INFF03",
"<1,47>": "6INFF04",
"<1,48>": "6INFF05",
"<1,49>": "6INFF06",
"<1,50>": "6INFF07",
"<1,51>": "6INFF08",
"<1,52>": "6INFF09",
"<1,53>": "6INFF10",
"<1,54>": "8INNF01",
"<1,55>": "8INNF02",
"<1,56>": "8INNF03",
"<1,57>": "8INNF04",
"<1,58>": "8INNF05",
"<1,59>": "8INFF01",
"<1,60>": "8INFF02",
"<1,61>": "8INFF03",
"<1,62>": "8INFF04",
"<1,63>": "MACTRONIX #1",
"<1,64>": "MACTRONIX #2 ",
"<1,65>": "MACTRONIX #3",
"<1,66>": "MACTRONIX #4",
"<1,67>": "MACTRONIX #5",
"<1,68>": "MACTRONIX #6",
"<1,69>": "MACTRONIX #7",
"<1,70>": "TALL_PITCH1",
"<1,71>": "TALL_PITCH2",
"<1,72>": "TALL_PITCH3",
"<1,73>": "TALL_PITCH4",
"<1,74>": "WC6INCH1",
"<1,75>": "WC6INCH2",
"<1,76>": "WC6INCH3",
"<1,77>": "WC6INCH4",
"<1,78>": "WC8INCH1",
"<1,79>": "WC8INCH2",
"<1,80>": "WC8INCH3",
"<1,81>": "ELLP01",
"<1,82>": "LEAKCHK01",
"<1,83>": "LEAKCHK02"
}
}
}

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "declare function set_printer, Get_Property\r\ndeclare subroutine record_lock, Set_Property\r\n$insert msg_equates\r\n$insert lsl_users_equ\r\n\r\n*Void = Set_Property('SYSTSEM','IDLEPROC','')\r\nVoid = Set_Property(@WINDOW,'TIMER','')\r\n\r\n\r\nUNLOCK All\r\n/*\r\nDEAD - 1/27/2005 JCH\r\n* will write out the x and y coords for the user, so the menu comes up at the last used\r\n* location\r\nWinSize = get_property( @window, 'SIZE' )\r\nX = WinSize<1>\r\nY = WinSize<2>\r\nXsize = WinSize<3>\r\nYsize = WinSize<4>\r\n\r\nIF @USERNAME = 'BRYCE_BARB' THEN DEBUG\r\n\r\nopen 'LSL_USERS' to LSLUsersTableVar else\r\n MsgInfo = ''\r\n MsgInfo<mtext$> = 'Unable to open LSL_USERS...'\r\n MsgInfo<mcol$> = -2\r\n MsgInfo<mrow$> = -2\r\n Void = msg( '', MsgInfo )\r\nend\r\n\r\nread UserRec from LSLUsersTableVar, @user4 then\r\n\t \r\n\t*UserRec = xlate( 'LSL_USERS', @user4, '', 'X' )\r\n\tUserRec<lsl_users_menu_xpos$> = X\r\n\tUserRec<lsl_users_menu_ypos$> = Y\r\n\tUserRec<lsl_users_menu_xsize$> = Xsize\r\n\tUserRec<lsl_users_menu_ysize$> = Ysize\r\n\twrite UserRec on LSLUsersTableVar, @user4 else Null\r\n\r\nEND;* End of User Rec Read\r\n*/\r\n\r\nRETURN 1\r\n"
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE FUNCTION Start_Window\r\n\r\nvoid = Start_Window('REACT_STATUS_EVEN',@WINDOW,'')\r\nvoid = Start_Window('REACT_STATUS_ODD',@WINDOW,'')\r\n\r\nvoid = Start_Window('TOOL_STATUS',@WINDOW,'')\r\n\r\n\r\nRETURN 1"
}
}
}

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "DECLARE subroutine Print_Barcode_Label, ErrMsg\r\nDECLARE function Popup\r\n\r\nUserIDs = Popup(@WINDOW,TypeOver,'USER_ID')\t;* Popup uses active select list created with MAKE.LIST\r\n\r\nIF UserIDs = '' THEN\r\n\tErrMsg('No users selected...')\r\n\tRETURN\r\nEND\r\n\r\nUserCnt = COUNT(UserIDs,@VM) + (UserIDs NE '')\r\n\r\n\r\nIDList = ''\r\nFOR I = 1 TO UserCnt\r\n\tUserID = UserIDs<1,I>\r\nNEXT I\r\n\r\nPrint_Barcode_Label ('EmployeeBadge', UserIDs)\r\n\r\nRETURN 0"
}
}
}

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "declare subroutine forward_event\r\n\r\nforward_event( x, y, Width, Height )\r\n*.group_1->size = -10:@fm:-10:@fm:Width:@fm:Height\r\nRETURN 0"
}
}
}

View File

@ -0,0 +1,11 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "\r\nDeclare subroutine Post_Event, Set_Property\r\n\r\n*If @User4 EQ 'ERIK_L' then Set_Property(@Window, '@CLOSE', 1)\r\n\r\nClose = Get_Property(@Window, '@CLOSE')\r\n\r\nCurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')\r\n\r\nOPEN 'SYSLISTS' TO ListsFile THEN\r\n\tStation = @STATION\r\n\tStation = Station[1,'_']\t\t\r\n\tListKey = Station:'*KEEP_ALIVE'\r\n\tListRec = @USERNAME:@FM:CurrDTM\r\n\tWRITE ListRec ON ListsFile,ListKey ELSE NULL\r\nEND \r\n\r\n\r\nRETURN 1"
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

402
LSL2/OIWIN/LSL_MAIN.json Normal file
View File

@ -0,0 +1,402 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "1010",
"<2>": "1",
"<3>": ""
},
"record2": {
"<1>": {
"<1,1>": "LSL_MAIN",
"<1,2>": "",
"<1,3>": "WINDOW",
"<1,4>": "",
"<1,5>": "147",
"<1,6>": "181",
"<1,7>": "-631",
"<1,8>": "-427",
"<1,9>": "Infineon Technologies",
"<1,10>": {
"<1,10,1>": "0x92C70000",
"<1,10,2>": "0x0"
},
"<1,11>": {
"<1,11,1>": "0x100",
"<1,11,2>": "0x80000000"
},
"<1,12>": "0",
"<1,13>": "-2",
"<1,14>": "0",
"<1,15>": "",
"<1,16>": "",
"<1,17>": "",
"<1,18>": "",
"<1,19>": "",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": {
"<1,24,1>": "0",
"<1,24,2>": "0",
"<1,24,3>": "0",
"<1,24,4>": "0",
"<1,24,5>": "0",
"<1,24,6>": "0"
},
"<1,25>": "0",
"<1,26>": "0",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": {
"<1,32,1>": "0x7FFFE",
"<1,32,2>": "0xF001E988"
},
"<1,33>": "",
"<1,34>": "LSL2*IMAGE*ICO*DATASET",
"<1,35>": "",
"<1,36>": "",
"<1,37>": {
"<1,37,1>": "0x10001",
"<1,37,2>": "0x10001"
},
"<1,38>": {
"<1,38,1>": "1",
"<1,38,2>": "1"
},
"<1,39>": "",
"<1,40>": "0",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": ""
}
},
"record3": {
"<1>": {
"<1,1>": "MDICLIENT",
"<1,2>": "RTIMDICLIENT",
"<1,3>": "MDICLIENT",
"<1,4>": "LSL_MAIN",
"<1,5>": "3",
"<1,6>": "7",
"<1,7>": "-625",
"<1,8>": "-607",
"<1,9>": "",
"<1,10>": {
"<1,10,1>": "0x56B00000",
"<1,10,2>": "0x0"
},
"<1,11>": {
"<1,11,1>": "0xC000",
"<1,11,2>": "0x80000000"
},
"<1,12>": "1",
"<1,13>": "-2",
"<1,14>": "0",
"<1,15>": "",
"<1,16>": "",
"<1,17>": "",
"<1,18>": "",
"<1,19>": "",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": "",
"<1,25>": "0",
"<1,26>": "0",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": {
"<1,32,1>": "0x7fffc",
"<1,32,2>": "0xf001c808"
},
"<1,33>": "",
"<1,34>": "",
"<1,35>": "",
"<1,36>": "",
"<1,37>": "",
"<1,38>": "",
"<1,39>": "",
"<1,40>": "1"
},
"<2>": ""
},
"record4": {
"<1>": {
"<1,1>": {
"<1,1,1>": "MENU",
"<1,1,2>": "4",
"<1,1,3>": "",
"<1,1,4>": "",
"<1,1,5>": "0",
"<1,1,6>": "0",
"<1,1,7>": "0",
"<1,1,8>": "0",
"<1,1,9>": "12",
"<1,1,10>": "",
"<1,1,11>": "0",
"<1,1,12>": ""
},
"<1,2>": {
"<1,2,1>": "POPUP",
"<1,2,2>": "1",
"<1,2,3>": "",
"<1,2,4>": "&File",
"<1,2,5>": "0",
"<1,2,6>": "0",
"<1,2,7>": "0",
"<1,2,8>": "0",
"<1,2,9>": "",
"<1,2,10>": "",
"<1,2,11>": "0",
"<1,2,12>": ""
},
"<1,3>": {
"<1,3,1>": "ITEM",
"<1,3,2>": "",
"<1,3,3>": "",
"<1,3,4>": "E&xit\tAlt+F4",
"<1,3,5>": "0",
"<1,3,6>": "0",
"<1,3,7>": "0",
"<1,3,8>": "1139",
"<1,3,9>": "",
"<1,3,10>": "",
"<1,3,11>": "0",
"<1,3,12>": ""
},
"<1,4>": {
"<1,4,1>": "POPUP",
"<1,4,2>": "2",
"<1,4,3>": "",
"<1,4,4>": "&DataWindows",
"<1,4,5>": "0",
"<1,4,6>": "0",
"<1,4,7>": "0",
"<1,4,8>": "0",
"<1,4,9>": "",
"<1,4,10>": "",
"<1,4,11>": "0",
"<1,4,12>": ""
},
"<1,5>": {
"<1,5,1>": "ITEM",
"<1,5,2>": "",
"<1,5,3>": "",
"<1,5,4>": "&Company",
"<1,5,5>": "0",
"<1,5,6>": "0",
"<1,5,7>": "0",
"<1,5,8>": "0",
"<1,5,9>": "",
"<1,5,10>": "",
"<1,5,11>": "0",
"<1,5,12>": ""
},
"<1,6>": {
"<1,6,1>": "ITEM",
"<1,6,2>": "",
"<1,6,3>": "",
"<1,6,4>": "&Personal Names",
"<1,6,5>": "0",
"<1,6,6>": "0",
"<1,6,7>": "0",
"<1,6,8>": "0",
"<1,6,9>": "",
"<1,6,10>": "",
"<1,6,11>": "0",
"<1,6,12>": ""
},
"<1,7>": {
"<1,7,1>": "POPUP",
"<1,7,2>": "2",
"<1,7,3>": "",
"<1,7,4>": "&Messages",
"<1,7,5>": "0",
"<1,7,6>": "0",
"<1,7,7>": "0",
"<1,7,8>": "0",
"<1,7,9>": "",
"<1,7,10>": "",
"<1,7,11>": "0",
"<1,7,12>": ""
},
"<1,8>": {
"<1,8,1>": "ITEM",
"<1,8,2>": "",
"<1,8,3>": "",
"<1,8,4>": "&New",
"<1,8,5>": "0",
"<1,8,6>": "0",
"<1,8,7>": "0",
"<1,8,8>": "0",
"<1,8,9>": "",
"<1,8,10>": "",
"<1,8,11>": "0",
"<1,8,12>": ""
},
"<1,9>": {
"<1,9,1>": "ITEM",
"<1,9,2>": "",
"<1,9,3>": "",
"<1,9,4>": "&Check/View",
"<1,9,5>": "0",
"<1,9,6>": "0",
"<1,9,7>": "0",
"<1,9,8>": "0",
"<1,9,9>": "",
"<1,9,10>": "",
"<1,9,11>": "0",
"<1,9,12>": ""
},
"<1,10>": {
"<1,10,1>": "POPUP",
"<1,10,2>": "2",
"<1,10,3>": "",
"<1,10,4>": "&Help",
"<1,10,5>": "0",
"<1,10,6>": "0",
"<1,10,7>": "0",
"<1,10,8>": "0",
"<1,10,9>": "",
"<1,10,10>": "",
"<1,10,11>": "0",
"<1,10,12>": ""
},
"<1,11>": {
"<1,11,1>": "ITEM",
"<1,11,2>": "",
"<1,11,3>": "",
"<1,11,4>": "&Help\tF1",
"<1,11,5>": "0",
"<1,11,6>": "0",
"<1,11,7>": "0",
"<1,11,8>": "112",
"<1,11,9>": "",
"<1,11,10>": "",
"<1,11,11>": "0",
"<1,11,12>": ""
},
"<1,12>": {
"<1,12,1>": "ITEM",
"<1,12,2>": "",
"<1,12,3>": "",
"<1,12,4>": "&About\tCtrl+F1",
"<1,12,5>": "0",
"<1,12,6>": "0",
"<1,12,7>": "0",
"<1,12,8>": "624",
"<1,12,9>": "",
"<1,12,10>": "",
"<1,12,11>": "0",
"<1,12,12>": ""
}
},
"<2>": {
"<2,1>": "",
"<2,2>": {
"<2,2,1>": {
"<2,2,1,1>": "E",
"<2,2,1,2>": "CLOSE",
"<2,2,1,3>": "@WINDOW",
"<2,2,1,4>": "",
"<2,2,1,5>": "",
"<2,2,1,6>": ""
},
"<2,2,2>": {
"<2,2,2,1>": "R",
"<2,2,2,2>": "EXECUTE",
"<2,2,2,3>": "LSL2*OIWINEXE**COMPANY",
"<2,2,2,4>": {
"<2,2,2,4,1>": "CreateParam",
"<2,2,2,4,2>": "LSL_MAIN"
},
"<2,2,2,5>": "",
"<2,2,2,6>": ""
},
"<2,2,3>": {
"<2,2,3,1>": "R",
"<2,2,3,2>": "EXECUTE",
"<2,2,3,3>": "LSL2*OIWINEXE**P_NAMES",
"<2,2,3,4>": {
"<2,2,3,4,1>": "CreateParam",
"<2,2,3,4,2>": "LSL_MAIN"
},
"<2,2,3,5>": "",
"<2,2,3,6>": ""
},
"<2,2,4>": {
"<2,2,4,1>": "R",
"<2,2,4,2>": "EXECUTE",
"<2,2,4,3>": "LSL2*OIWINEXE**NOTES",
"<2,2,4,4>": {
"<2,2,4,4,1>": "CreateParam",
"<2,2,4,4,2>": "LSL_MAIN"
},
"<2,2,4,5>": "",
"<2,2,4,6>": ""
},
"<2,2,5>": {
"<2,2,5,1>": "R",
"<2,2,5,2>": "EXECUTE",
"<2,2,5,3>": "LSL2*OIWINEXE**NOTE_PTRS",
"<2,2,5,4>": {
"<2,2,5,4,1>": "CreateParam",
"<2,2,5,4,2>": "LSL_MAIN"
},
"<2,2,5,5>": "",
"<2,2,5,6>": ""
},
"<2,2,6>": {
"<2,2,6,1>": "E",
"<2,2,6,2>": "HELP",
"<2,2,6,3>": "@FOCUS",
"<2,2,6,4>": "",
"<2,2,6,5>": "",
"<2,2,6,6>": ""
},
"<2,2,7>": {
"<2,2,7,1>": "E",
"<2,2,7,2>": "NOTES",
"<2,2,7,3>": "@FOCUS",
"<2,2,7,4>": "",
"<2,2,7,5>": "",
"<2,2,7,6>": ""
},
"<2,2,8>": ""
},
"<2,3>": {
"<2,3,1>": "FILE.EXIT",
"<2,3,2>": "DATAWINDOWS.COMPANY",
"<2,3,3>": "DATAWINDOWS.PERSONAL_NAMES",
"<2,3,4>": "MESSAGES.NEW",
"<2,3,5>": "MESSAGES.CHECK/VIEW",
"<2,3,6>": "HELP.HELP",
"<2,3,7>": "HELP.ABOUT",
"<2,3,8>": ""
},
"<2,4>": "0"
}
}
}
}

7708
LSL2/OIWIN/LSL_MAIN2.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -572,7 +572,7 @@
"<3,8>": "28",
"<3,9>": "",
"<3,10>": {
"<3,10,1>": "0x5E000088",
"<3,10,1>": "0x5E000080",
"<3,10,2>": "0x200"
},
"<3,11>": {
@ -739,7 +739,7 @@
"<4,8>": "28",
"<4,9>": "",
"<4,10>": {
"<4,10,1>": "0x5E000088",
"<4,10,1>": "0x5E000080",
"<4,10,2>": "0x200"
},
"<4,11>": {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -78,7 +78,7 @@
"<1,31>": "",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "LSL2*IMAGE*ICO*INFINEON",
"<1,34>": "",
"<1,35>": "",
"<1,36>": "",
"<1,37>": {
@ -18233,7 +18233,7 @@
"<120,33>": "",
"<120,34>": "",
"<120,35>": "",
"<120,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<120,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<120,37>": "",
"<120,38>": "",
"<120,39>": "",
@ -18430,7 +18430,7 @@
"<121,33>": "",
"<121,34>": "",
"<121,35>": "",
"<121,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<121,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<121,37>": "",
"<121,38>": "",
"<121,39>": "",
@ -18627,7 +18627,7 @@
"<122,33>": "",
"<122,34>": "",
"<122,35>": "",
"<122,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<122,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<122,37>": "",
"<122,38>": "",
"<122,39>": "",
@ -18824,7 +18824,7 @@
"<123,33>": "",
"<123,34>": "",
"<123,35>": "",
"<123,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<123,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<123,37>": "",
"<123,38>": "",
"<123,39>": "",
@ -19021,7 +19021,7 @@
"<124,33>": "",
"<124,34>": "",
"<124,35>": "",
"<124,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<124,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<124,37>": "",
"<124,38>": "",
"<124,39>": "",
@ -19218,7 +19218,7 @@
"<125,33>": "",
"<125,34>": "",
"<125,35>": "",
"<125,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<125,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<125,37>": "",
"<125,38>": "",
"<125,39>": "",
@ -19415,7 +19415,7 @@
"<126,33>": "",
"<126,34>": "",
"<126,35>": "",
"<126,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<126,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<126,37>": "",
"<126,38>": "",
"<126,39>": "",
@ -19612,7 +19612,7 @@
"<127,33>": "",
"<127,34>": "",
"<127,35>": "",
"<127,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<127,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<127,37>": "",
"<127,38>": "",
"<127,39>": "",
@ -19809,7 +19809,7 @@
"<128,33>": "",
"<128,34>": "",
"<128,35>": "",
"<128,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<128,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<128,37>": "",
"<128,38>": "",
"<128,39>": "",
@ -20006,7 +20006,7 @@
"<129,33>": "",
"<129,34>": "",
"<129,35>": "",
"<129,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<129,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<129,37>": "",
"<129,38>": "",
"<129,39>": "",
@ -20203,7 +20203,7 @@
"<130,33>": "",
"<130,34>": "",
"<130,35>": "",
"<130,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<130,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<130,37>": "",
"<130,38>": "",
"<130,39>": "",
@ -20400,7 +20400,7 @@
"<131,33>": "",
"<131,34>": "",
"<131,35>": "",
"<131,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<131,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<131,37>": "",
"<131,38>": "",
"<131,39>": "",
@ -20597,7 +20597,7 @@
"<132,33>": "",
"<132,34>": "",
"<132,35>": "",
"<132,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<132,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<132,37>": "",
"<132,38>": "",
"<132,39>": "",
@ -20794,7 +20794,7 @@
"<133,33>": "",
"<133,34>": "",
"<133,35>": "",
"<133,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<133,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<133,37>": "",
"<133,38>": "",
"<133,39>": "",
@ -20991,7 +20991,7 @@
"<134,33>": "",
"<134,34>": "",
"<134,35>": "",
"<134,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<134,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<134,37>": "",
"<134,38>": "",
"<134,39>": "",
@ -21188,7 +21188,7 @@
"<135,33>": "",
"<135,34>": "",
"<135,35>": "",
"<135,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<135,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<135,37>": "",
"<135,38>": "",
"<135,39>": "",
@ -21385,7 +21385,7 @@
"<136,33>": "",
"<136,34>": "",
"<136,35>": "",
"<136,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<136,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<136,37>": "",
"<136,38>": "",
"<136,39>": "",
@ -21582,7 +21582,7 @@
"<137,33>": "",
"<137,34>": "",
"<137,35>": "",
"<137,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<137,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<137,37>": "",
"<137,38>": "",
"<137,39>": "",
@ -21779,7 +21779,7 @@
"<138,33>": "",
"<138,34>": "",
"<138,35>": "",
"<138,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<138,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<138,37>": "",
"<138,38>": "",
"<138,39>": "",
@ -21976,7 +21976,7 @@
"<139,33>": "",
"<139,34>": "",
"<139,35>": "",
"<139,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<139,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<139,37>": "",
"<139,38>": "",
"<139,39>": "",
@ -22173,7 +22173,7 @@
"<140,33>": "",
"<140,34>": "",
"<140,35>": "",
"<140,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<140,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<140,37>": "",
"<140,38>": "",
"<140,39>": "",
@ -22370,7 +22370,7 @@
"<141,33>": "",
"<141,34>": "",
"<141,35>": "",
"<141,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<141,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<141,37>": "",
"<141,38>": "",
"<141,39>": "",
@ -22567,7 +22567,7 @@
"<142,33>": "",
"<142,34>": "",
"<142,35>": "",
"<142,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<142,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<142,37>": "",
"<142,38>": "",
"<142,39>": "",
@ -22764,7 +22764,7 @@
"<143,33>": "",
"<143,34>": "",
"<143,35>": "",
"<143,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<143,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<143,37>": "",
"<143,38>": "",
"<143,39>": "",
@ -22961,7 +22961,7 @@
"<144,33>": "",
"<144,34>": "",
"<144,35>": "",
"<144,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<144,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<144,37>": "",
"<144,38>": "",
"<144,39>": "",
@ -23158,7 +23158,7 @@
"<145,33>": "",
"<145,34>": "",
"<145,35>": "",
"<145,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<145,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<145,37>": "",
"<145,38>": "",
"<145,39>": "",
@ -23355,7 +23355,7 @@
"<146,33>": "",
"<146,34>": "",
"<146,35>": "",
"<146,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<146,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<146,37>": "",
"<146,38>": "",
"<146,39>": "",
@ -23552,7 +23552,7 @@
"<147,33>": "",
"<147,34>": "",
"<147,35>": "",
"<147,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<147,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<147,37>": "",
"<147,38>": "",
"<147,39>": "",
@ -23749,7 +23749,7 @@
"<148,33>": "",
"<148,34>": "",
"<148,35>": "",
"<148,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<148,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<148,37>": "",
"<148,38>": "",
"<148,39>": "",
@ -23946,7 +23946,7 @@
"<149,33>": "",
"<149,34>": "",
"<149,35>": "",
"<149,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<149,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<149,37>": "",
"<149,38>": "",
"<149,39>": "",
@ -24293,7 +24293,7 @@
"<151,33>": "",
"<151,34>": "",
"<151,35>": "",
"<151,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<151,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<151,37>": "",
"<151,38>": "",
"<151,39>": "",
@ -24490,7 +24490,7 @@
"<152,33>": "",
"<152,34>": "",
"<152,35>": "",
"<152,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<152,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<152,37>": "",
"<152,38>": "",
"<152,39>": "",
@ -24687,7 +24687,7 @@
"<153,33>": "",
"<153,34>": "",
"<153,35>": "",
"<153,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<153,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<153,37>": "",
"<153,38>": "",
"<153,39>": "",
@ -24884,7 +24884,7 @@
"<154,33>": "",
"<154,34>": "",
"<154,35>": "",
"<154,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<154,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<154,37>": "",
"<154,38>": "",
"<154,39>": "",
@ -25081,7 +25081,7 @@
"<155,33>": "",
"<155,34>": "",
"<155,35>": "",
"<155,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<155,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<155,37>": "",
"<155,38>": "",
"<155,39>": "",
@ -25278,7 +25278,7 @@
"<156,33>": "",
"<156,34>": "",
"<156,35>": "",
"<156,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<156,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<156,37>": "",
"<156,38>": "",
"<156,39>": "",
@ -25475,7 +25475,7 @@
"<157,33>": "",
"<157,34>": "",
"<157,35>": "",
"<157,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<157,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<157,37>": "",
"<157,38>": "",
"<157,39>": "",
@ -25672,7 +25672,7 @@
"<158,33>": "",
"<158,34>": "",
"<158,35>": "",
"<158,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<158,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<158,37>": "",
"<158,38>": "",
"<158,39>": "",
@ -25869,7 +25869,7 @@
"<159,33>": "",
"<159,34>": "",
"<159,35>": "",
"<159,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<159,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<159,37>": "",
"<159,38>": "",
"<159,39>": "",
@ -26066,7 +26066,7 @@
"<160,33>": "",
"<160,34>": "",
"<160,35>": "",
"<160,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<160,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<160,37>": "",
"<160,38>": "",
"<160,39>": "",
@ -26263,7 +26263,7 @@
"<161,33>": "",
"<161,34>": "",
"<161,35>": "",
"<161,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<161,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<161,37>": "",
"<161,38>": "",
"<161,39>": "",
@ -26460,7 +26460,7 @@
"<162,33>": "",
"<162,34>": "",
"<162,35>": "",
"<162,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<162,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<162,37>": "",
"<162,38>": "",
"<162,39>": "",
@ -26657,7 +26657,7 @@
"<163,33>": "",
"<163,34>": "",
"<163,35>": "",
"<163,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<163,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<163,37>": "",
"<163,38>": "",
"<163,39>": "",
@ -26854,7 +26854,7 @@
"<164,33>": "",
"<164,34>": "",
"<164,35>": "",
"<164,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<164,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<164,37>": "",
"<164,38>": "",
"<164,39>": "",
@ -27051,7 +27051,7 @@
"<165,33>": "",
"<165,34>": "",
"<165,35>": "",
"<165,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<165,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<165,37>": "",
"<165,38>": "",
"<165,39>": "",
@ -27248,7 +27248,7 @@
"<166,33>": "",
"<166,34>": "",
"<166,35>": "",
"<166,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<166,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<166,37>": "",
"<166,38>": "",
"<166,39>": "",
@ -27445,7 +27445,7 @@
"<167,33>": "",
"<167,34>": "",
"<167,35>": "",
"<167,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<167,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<167,37>": "",
"<167,38>": "",
"<167,39>": "",
@ -27642,7 +27642,7 @@
"<168,33>": "",
"<168,34>": "",
"<168,35>": "",
"<168,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<168,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<168,37>": "",
"<168,38>": "",
"<168,39>": "",
@ -27839,7 +27839,7 @@
"<169,33>": "",
"<169,34>": "",
"<169,35>": "",
"<169,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<169,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<169,37>": "",
"<169,38>": "",
"<169,39>": "",
@ -28036,7 +28036,7 @@
"<170,33>": "",
"<170,34>": "",
"<170,35>": "",
"<170,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<170,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<170,37>": "",
"<170,38>": "",
"<170,39>": "",
@ -28233,7 +28233,7 @@
"<171,33>": "",
"<171,34>": "",
"<171,35>": "",
"<171,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<171,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<171,37>": "",
"<171,38>": "",
"<171,39>": "",
@ -28430,7 +28430,7 @@
"<172,33>": "",
"<172,34>": "",
"<172,35>": "",
"<172,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<172,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<172,37>": "",
"<172,38>": "",
"<172,39>": "",
@ -28627,7 +28627,7 @@
"<173,33>": "",
"<173,34>": "",
"<173,35>": "",
"<173,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<173,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<173,37>": "",
"<173,38>": "",
"<173,39>": "",
@ -28824,7 +28824,7 @@
"<174,33>": "",
"<174,34>": "",
"<174,35>": "",
"<174,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<174,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<174,37>": "",
"<174,38>": "",
"<174,39>": "",
@ -29021,7 +29021,7 @@
"<175,33>": "",
"<175,34>": "",
"<175,35>": "",
"<175,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<175,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<175,37>": "",
"<175,38>": "",
"<175,39>": "",
@ -29218,7 +29218,7 @@
"<176,33>": "",
"<176,34>": "",
"<176,35>": "",
"<176,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<176,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<176,37>": "",
"<176,38>": "",
"<176,39>": "",
@ -29415,7 +29415,7 @@
"<177,33>": "",
"<177,34>": "",
"<177,35>": "",
"<177,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<177,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<177,37>": "",
"<177,38>": "",
"<177,39>": "",
@ -29612,7 +29612,7 @@
"<178,33>": "",
"<178,34>": "",
"<178,35>": "",
"<178,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<178,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<178,37>": "",
"<178,38>": "",
"<178,39>": "",
@ -29809,7 +29809,7 @@
"<179,33>": "",
"<179,34>": "",
"<179,35>": "",
"<179,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<179,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<179,37>": "",
"<179,38>": "",
"<179,39>": "",
@ -30006,7 +30006,7 @@
"<180,33>": "",
"<180,34>": "",
"<180,35>": "",
"<180,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<180,36>": "05000000000000000000000032000000FFFEFF044E006F006E006500FFFEFF0341006C006C00FFFEFF044E006F006E006500FFFEFF044E006F006E0065000100000001000000FFFEFF0D430065006E00740065007200FEF0430065006E00740065007200FFFEFF162E005C0042004D00500053005C004100630074006900760065005F0030003300310031002E0070006E006700FFFEFF075300740072006500740063006800FFFEFF044100750074006F00FFFEFF00FFFEFF044E006F006E006500FFFEFF205300650067006F006500200055004900FCF03000FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000000000000000F03FFFFEFF0D430065006E00740065007200FEF0430065006E007400650072000000000000000000000000000000000001000000",
"<180,37>": "",
"<180,38>": "",
"<180,39>": "",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -39,10 +39,6 @@
"<8,2>": {
"<8,2,1>": "Update QA Metrology Specs",
"<8,2,2>": "QA_MET"
},
"<8,3>": {
"<8,3,1>": "Update RDS Layer Parameters",
"<8,3,2>": "UPDATE_RDS_LAYER"
}
},
"<9>": {
@ -50,21 +46,29 @@
"<9,1,1>": "1",
"<9,1,2>": "20",
"<9,1,3>": "L",
"<9,1,4>": "L",
"<9,1,4>": "",
"<9,1,5>": "",
"<9,1,6>": "Window Option"
},
"<9,2>": {
"<9,2,1>": "2",
"<9,2,2>": "0",
"<9,2,3>": "R",
"<9,2,4>": "R",
"<9,2,3>": "L",
"<9,2,4>": "",
"<9,2,5>": "",
"<9,2,6>": "2"
"<9,2,6>": ""
},
"<9,3>": {
"<9,3,1>": "",
"<9,3,2>": "",
"<9,3,3>": "",
"<9,3,4>": "",
"<9,3,5>": "",
"<9,3,6>": ""
}
},
"<10>": "L",
"<11>": "2",
"<11>": "3",
"<12>": "Engineering Options",
"<13>": "2",
"<14>": "F",
@ -87,18 +91,8 @@
"<31>": "0",
"<32>": "0",
"<33>": "0",
"<34>": "-2",
"<35>": "-2",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
"<34>": "16777215",
"<35>": "16777215"
}
}
}

View File

@ -9,7 +9,7 @@
"<2>": "-2",
"<3>": "-1",
"<4>": "-1",
"<5>": "-2",
"<5>": "16777215",
"<6>": {
"<6,1>": {
"<6,1,1>": "Tahoma",
@ -76,21 +76,11 @@
"<28>": "",
"<29>": "0",
"<30>": "0",
"<31>": "1",
"<31>": "0",
"<32>": "0",
"<33>": "0",
"<34>": "-2",
"<35>": "-2",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
"<34>": "16777215",
"<35>": "16777215"
}
}
}

View File

@ -9,7 +9,7 @@
"<2>": "-2",
"<3>": "-1",
"<4>": "-1",
"<5>": "-2",
"<5>": "16777215",
"<6>": {
"<6,1>": {
"<6,1,1>": "Tahoma",
@ -84,21 +84,11 @@
"<28>": "",
"<29>": "0",
"<30>": "0",
"<31>": "1",
"<31>": "0",
"<32>": "0",
"<33>": "0",
"<34>": "-2",
"<35>": "-2",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
"<34>": "16777215",
"<35>": "16777215"
}
}
}

View File

@ -9,7 +9,7 @@
"<2>": "-1",
"<3>": "-1",
"<4>": "-1",
"<5>": "-2",
"<5>": "16777215",
"<6>": {
"<6,1>": {
"<6,1,1>": "Tahoma",
@ -53,28 +53,24 @@
"<8,5,2>": "Graphite Machining Services Inc"
},
"<8,6>": {
"<8,6,1>": "MERSEN",
"<8,6,2>": "Mersen USA GS Corp."
"<8,6,1>": "NRD",
"<8,6,2>": "Nuclecel"
},
"<8,7>": {
"<8,7,1>": "NRD",
"<8,7,2>": "Nuclecel"
"<8,7,1>": "SGL",
"<8,7,2>": "SGL Group"
},
"<8,8>": {
"<8,8,1>": "SGL",
"<8,8,2>": "SGL Group"
"<8,8,1>": "TOYO",
"<8,8,2>": "Toyo Tanso USA"
},
"<8,9>": {
"<8,9,1>": "TOYO",
"<8,9,2>": "Toyo Tanso USA"
"<8,9,1>": "WACOM",
"<8,9,2>": "WaCom"
},
"<8,10>": {
"<8,10,1>": "WACOM",
"<8,10,2>": "WaCom"
},
"<8,11>": {
"<8,11,1>": "XYCARB",
"<8,11,2>": "Xycarb Ceramic"
"<8,10,1>": "XYCARB",
"<8,10,2>": "Xycarb Ceramic"
}
},
"<9>": {
@ -93,6 +89,14 @@
"<9,2,4>": "C",
"<9,2,5>": "",
"<9,2,6>": "Description"
},
"<9,3>": {
"<9,3,1>": "",
"<9,3,2>": "",
"<9,3,3>": "",
"<9,3,4>": "",
"<9,3,5>": "",
"<9,3,6>": ""
}
},
"<10>": "L",
@ -120,17 +124,7 @@
"<32>": "0",
"<33>": "1",
"<34>": "16777215",
"<35>": "16777215",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
"<35>": "16777215"
}
}
}

View File

@ -9,7 +9,7 @@
"<2>": "-2",
"<3>": "-1",
"<4>": "-1",
"<5>": "-2",
"<5>": "16777215",
"<6>": {
"<6,1>": {
"<6,1,1>": "MS Sans Serif",
@ -143,21 +143,11 @@
"<28>": "",
"<29>": "0",
"<30>": "0",
"<31>": "1",
"<31>": "0",
"<32>": "0",
"<33>": "1",
"<34>": "-2",
"<35>": "-2",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
"<33>": "0",
"<34>": "16777215",
"<35>": "16777215"
}
}
}

View File

@ -9,7 +9,7 @@
"<2>": "-2",
"<3>": "-1",
"<4>": "-1",
"<5>": "-2",
"<5>": "16777215",
"<6>": {
"<6,1>": {
"<6,1,1>": "MS Sans Serif",
@ -93,21 +93,8 @@
"<28>": "",
"<29>": "0",
"<30>": "0",
"<31>": "1",
"<32>": "0",
"<33>": "0",
"<34>": "-2",
"<35>": "-2",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
"<31>": "0",
"<32>": "0"
}
}
}

View File

@ -1,151 +1,152 @@
Function Authentication_API(@API)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Authentication_API
Description : API logic for the Authentication resource.
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
FullEndpointURL - The URL submitted by the client, including query params.
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
EndpointSegment - The URL endpoint segment.
ParentURL - The URL path preceeding the current endpoint.
CurrentAPI - The name of this stored procedure.
Parameters :
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
- APIPattern must follow this structure Authentication[.ID.[<Property>]]
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
Examples:
- Authentication.POST
- Authentication.ID.PUT
- Authentication.ID.firstName.GET
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
services do not rely upon anything being returned in the response. This is what the
various services like SetResponseBody and SetResponseStatus services are for. A response
value is only helpful if the developers want to use it for debug purposes.
History : (Date, Initials, Notes)
07/17/24 djs Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$insert APP_INSERTS
$insert API_SETUP
$insert HTTP_INSERTS
$insert LSL_USERS_EQUATES
Equ USERNAME$ To 1
Equ GROUP$ To 2
Equ PASSWORD$ To 3
Equ CONTEXT$ To 4
Declare function Database_Services, MemberOf
GoToAPI else
// The specific resource endpoint doesn't have a API handler yet.
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Endpoint Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
API authentication.POST
Body = HTTP_Services('GetHTTPPostString')
If Body NE '' then
// The POST string will have been encoded so use percent (URL) decoding
AuthJson = HTTP_Services('DecodePercentString', Body)
hAuthJson = ''
ParseResponse = SRP_JSON(hAuthJson, 'PARSE', AuthJson)
If (ParseResponse EQ '') then
Username = SRP_JSON(hAuthJson, 'GetValue', 'Username')
Password = SRP_JSON(hAuthJson, 'GetValue', 'Password')
Groups = ''
hGroups = SRP_JSON(hAuthJson, 'get', 'Groups')
If hGroups then
ElementHandles = SRP_JSON(hGroups, 'GetElements', @VM)
If ElementHandles NE '' then
For each ElementHandle in ElementHandles using @VM
Groups<0, -1> = SRP_JSON(ElementHandle, 'GetValue')
SRP_JSON(ElementHandle, 'Release')
Next ElementHandle
end
SRP_JSON(hGroups, 'Release')
end
SRP_JSON(hAuthJson, 'Release')
// Validate Credentials
UserRec = Database_Services('ReadDataRow', 'LSL_USERS', Username)
If Error_Services('NoError') then
Credentials = ''
Credentials<USERNAME$> = Username
Credentials<PASSWORD$> = UserRec<LSL_USERS_PASSWORD$>
Credentials<GROUP$> = UserRec<LSL_USERS_GROUPS$>
Member = False$
Group = ''
If Groups NE '' then
For each Group in Groups using @VM
Member = MemberOf(Credentials<USERNAME$>, Group)
Until Member EQ True$
Next Group
end else
Member = True$
end
Begin Case
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ True$)
// Return 200, authentication successful
StatusCode = 200
Message = 'Authentication successful'
HTTP_Services('SetResponseStatus', 200, Message)
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ False$)
// Return 401, not a member of required groups
NumGroups = DCount(Groups, @VM)
If NumGroups GT 1 then
Swap @VM with ' or ' in Groups
Message = 'User is not a member of the ' : Groups : ' groups.'
end else
Message = 'User is not a member of the ' : Group : ' group.'
end
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
Case Password NE Credentials<PASSWORD$>
// Return 401, unable to validate password
Message = 'Unable to validate username. Please re-enter.'
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
Case Otherwise$
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Unhandled case.')
End Case
end else
// Error reading user record
ErrorMsg = Error_Services('GetMessage')
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Message: ': ErrorMsg)
end
end else
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Error parsing JSON.')
end
end else
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Empty request.')
end
end api
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Function Authentication_API(@API)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Authentication_API
Description : API logic for the Authentication resource.
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
FullEndpointURL - The URL submitted by the client, including query params.
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
EndpointSegment - The URL endpoint segment.
ParentURL - The URL path preceeding the current endpoint.
CurrentAPI - The name of this stored procedure.
Parameters :
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
- APIPattern must follow this structure Authentication[.ID.[<Property>]]
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
Examples:
- Authentication.POST
- Authentication.ID.PUT
- Authentication.ID.firstName.GET
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
services do not rely upon anything being returned in the response. This is what the
various services like SetResponseBody and SetResponseStatus services are for. A response
value is only helpful if the developers want to use it for debug purposes.
History : (Date, Initials, Notes)
07/17/24 djs Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$insert APP_INSERTS
$insert API_SETUP
$insert HTTP_INSERTS
$insert LSL_USERS_EQUATES
Equ USERNAME$ To 1
Equ GROUP$ To 2
Equ PASSWORD$ To 3
Equ CONTEXT$ To 4
Declare function Database_Services, MemberOf
GoToAPI else
// The specific resource endpoint doesn't have a API handler yet.
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Endpoint Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
API authentication.POST
Body = HTTP_Services('GetHTTPPostString')
If Body NE '' then
// The POST string will have been encoded so use percent (URL) decoding
AuthJson = HTTP_Services('DecodePercentString', Body)
hAuthJson = ''
ParseResponse = SRP_JSON(hAuthJson, 'PARSE', AuthJson)
If (ParseResponse EQ '') then
Username = SRP_JSON(hAuthJson, 'GetValue', 'Username')
Password = SRP_JSON(hAuthJson, 'GetValue', 'Password')
Groups = ''
hGroups = SRP_JSON(hAuthJson, 'get', 'Groups')
If hGroups then
ElementHandles = SRP_JSON(hGroups, 'GetElements', @VM)
If ElementHandles NE '' then
For each ElementHandle in ElementHandles using @VM
Groups<0, -1> = SRP_JSON(ElementHandle, 'GetValue')
SRP_JSON(ElementHandle, 'Release')
Next ElementHandle
end
SRP_JSON(hGroups, 'Release')
end
SRP_JSON(hAuthJson, 'Release')
// Validate Credentials
UserRec = Database_Services('ReadDataRow', 'LSL_USERS', Username)
If Error_Services('NoError') then
Credentials = ''
Credentials<USERNAME$> = Username
Credentials<PASSWORD$> = UserRec<LSL_USERS_PASSWORD$>
Credentials<GROUP$> = UserRec<LSL_USERS_GROUPS$>
Member = False$
Group = ''
If Groups NE '' then
For each Group in Groups using @VM
Member = MemberOf(Credentials<USERNAME$>, Group)
Until Member EQ True$
Next Group
end else
Member = True$
end
Begin Case
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ True$)
// Return 200, authentication successful
StatusCode = 200
Message = 'Authentication successful'
HTTP_Services('SetResponseStatus', 200, Message)
Case (Password EQ Credentials<PASSWORD$>) AND (Member EQ False$)
// Return 401, not a member of required groups
NumGroups = DCount(Groups, @VM)
If NumGroups GT 1 then
Swap @VM with ' or ' in Groups
Message = 'User is not a member of the ' : Groups : ' groups.'
end else
Message = 'User is not a member of the ' : Group : ' group.'
end
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
Case Password NE Credentials<PASSWORD$>
// Return 401, unable to validate password
Message = 'Unable to validate username. Please re-enter.'
HTTP_Services('SetResponseStatus', 401, 'Authentication failed. ':Message)
Case Otherwise$
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Unhandled case.')
End Case
end else
// Error reading user record
ErrorMsg = Error_Services('GetMessage')
HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Message: ': ErrorMsg)
end
end else
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Error parsing JSON.')
end
end else
HTTP_Services('SetResponseStatus', 400, 'Error in the ' : CurrentAPI : ' API. Empty request.')
end
end api
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -67,22 +67,25 @@ END
RETURN Result
* * * * * * *
Create:
* * * * * * *
IF MemberOf(@USER4,'CALIBRATION') ELSE
ErrMsg('Only authorized personnel may update the Calibration List.')
End_Window(@WINDOW)
RETURN
END
obj_Appwindow('Create',@WINDOW)
IF MemberOf(@USER4,'CALIBRATION') ELSE
ErrMsg('Only authorized personnel may update the Calibration List.')
End_Window(@WINDOW)
RETURN
END
Set_List_Box_Data( @WINDOW )
// Use to determine whether or not the New Calibration label was just clicked
Set_Property(@Window : '.CALIBRATIONS', '@PrintLabel', False$)
GOSUB Refresh
obj_Appwindow('Create',@WINDOW)
Set_List_Box_Data( @WINDOW )
// Use to determine whether or not the New Calibration label was just clicked
Set_Property(@Window : '.CALIBRATIONS', '@PrintLabel', False$)
GOSUB Refresh
RETURN
@ -92,76 +95,81 @@ Clear:
* * * * * * *
IF Get_Property(@WINDOW,'@READONLY') THEN
obj_AppWindow('ReadOnly',@RM:1) ;* Reenables data bound controls
Set_Property(@WINDOW,'@READONLY',0) ;* Clear flag on window
END
IF Get_Property(@WINDOW,'@READONLY') THEN
obj_AppWindow('ReadOnly',@RM:1) ;* Reenables data bound controls
Set_Property(@WINDOW,'@READONLY',0) ;* Clear flag on window
END
* * * * * * *
Refresh:
* * * * * * *
* QBF buttons
* QBF buttons
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
END ELSE
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
END
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
END ELSE
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
END
Set_Property(Ctrls,Props,Vals)
Set_Property(Ctrls,Props,Vals)
* Turn edit table symbolic column backgrounds to green
* Turn edit table symbolic column backgrounds to green
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
ETCtrls = ETSymbolics<1>
ETCols = ETSymbolics<2>
ETCtrls = ETSymbolics<1>
ETCols = ETSymbolics<2>
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
ETCtrl = ETCtrls<1,I>
ETList = Get_Property(ETCtrl,'LIST')
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
IF ETList<Line,1> NE '' THEN
FOR N = 1 TO COUNT(ETCols<1,Line>,@SVM) + (ETCols<1,Line> NE '')
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,Line,N>,Line,GREEN$)
NEXT N
END
NEXT Line
NEXT I
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
ETCtrl = ETCtrls<1,I>
ETList = Get_Property(ETCtrl,'LIST')
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
IF ETList<Line,1> NE '' THEN
FOR N = 1 TO COUNT(ETCols<1,Line>,@SVM) + (ETCols<1,Line> NE '')
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,Line,N>,Line,GREEN$)
NEXT N
END
NEXT Line
NEXT I
RETURN
* * * * * * *
Read:
* * * * * * *
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
IF RowExists('CALIB_LIST',CLNo) ELSE
IF Get_Property(@WINDOW:'.ENTER_DTM','DEFPROP') = '' THEN
CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTH')
Set_Property(@WINDOW:'.ENTER_DTM','DEFPROP',CurrDTM)
END
IF RowExists('CALIB_LIST',CLNo) ELSE
IF Get_Property(@WINDOW:'.ENTER_DTM','DEFPROP') = '' THEN
CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTH')
Set_Property(@WINDOW:'.ENTER_DTM','DEFPROP',CurrDTM)
END
END
GOSUB Refresh
// Use to determine whether or not the New Calibration button was just clicked and print if it was
PrintCheck = Get_Property(@Window : '.CALIBRATIONS', '@PrintLabel')
If PrintCheck EQ True$ then
Gosub PrintMostRecentLabel
end
// Reset flag after read regardless
Set_Property(@Window : '.CALIBRATIONS', '@PrintLabel', False$)
GOSUB Refresh
// Use to determine whether or not the New Calibration button was just clicked and print if it was
PrintCheck = Get_Property(@Window : '.CALIBRATIONS', '@PrintLabel')
If PrintCheck EQ True$ then
Gosub PrintMostRecentLabel
end
// Reset flag after read regardless
Set_Property(@Window : '.CALIBRATIONS', '@PrintLabel', False$)
RETURN
@ -179,6 +187,14 @@ RETURN
Delete:
* * * * * * *
/*
IF Security_Check('Order',Delete$) THEN
Result = 1 ;* Proceed with delete
END ELSE
Security_Err_Msg('Order',Delete$)
Result = 0 ;* Stop event chain
END
*/
RETURN
@ -187,12 +203,13 @@ RETURN
NewItem:
* * * * * * *
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
IF CLNo = '' THEN
NextCLNo = NextKey('CALIB_LIST')
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:NextCLNo)
END
IF CLNo = '' THEN
NextCLNo = NextKey('CALIB_LIST')
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:NextCLNo)
END
RETURN
@ -201,35 +218,37 @@ RETURN
LUCalibItem:
* * * * * * *
CLKeys = Popup(@WINDOW,'','CALIB_LIST')
CLKeys = Popup(@WINDOW,'','CALIB_LIST')
IF Get_Status(errCode) THEN ErrMsg(ErrCode)
IF Get_Status(errCode) THEN ErrMsg(ErrCode)
CONVERT @VM TO @FM IN CLKeys
CONVERT @VM TO @FM IN CLKeys
IF INDEX(CLKeys,@FM,1) THEN
Send_Event(@WINDOW,'QBFINIT')
Set_Property(@WINDOW,'QBFLIST',CLKeys)
GOSUB Refresh
Send_Event(@WINDOW,'QBFIRST')
END ELSE
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:CLKeys)
END
IF INDEX(CLKeys,@FM,1) THEN
Send_Event(@WINDOW,'QBFINIT')
Set_Property(@WINDOW,'QBFLIST',CLKeys)
GOSUB Refresh
Send_Event(@WINDOW,'QBFIRST')
END ELSE
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:CLKeys)
END
RETURN
* * * * * * *
LUCalibItemType:
* * * * * * *
CLItemType = Popup(@WINDOW,'','CALIB_LIST_TYPE')
CLItemType = Popup(@WINDOW,'','CALIB_LIST_TYPE')
IF Get_Status(errCode) THEN ErrMsg(ErrCode)
IF Get_Status(errCode) THEN ErrMsg(ErrCode)
IF CLItemType NE '' THEN
obj_AppWindow('LUValReturn',CLItemType:@RM:@WINDOW:'.CL_TYPE')
END
IF CLItemType NE '' THEN
obj_AppWindow('LUValReturn',CLItemType:@RM:@WINDOW:'.CL_TYPE')
END
RETURN
@ -238,24 +257,27 @@ RETURN
LUCalibItemLoc:
* * * * * * *
CLItemLoc = Popup(@WINDOW,'','CALIB_LIST_LOC')
CLItemLoc = Popup(@WINDOW,'','CALIB_LIST_LOC')
IF Get_Status(errCode) THEN ErrMsg(ErrCode)
IF Get_Status(errCode) THEN ErrMsg(ErrCode)
IF CLItemLoc NE '' THEN
obj_AppWindow('LUValReturn',CLItemLoc:@RM:@WINDOW:'.CAL_LOC')
END
IF CLItemLoc NE '' THEN
obj_AppWindow('LUValReturn',CLItemLoc:@RM:@WINDOW:'.CAL_LOC')
END
RETURN
* * * * * *
Close:
* * * * * *
obj_Notes('Inbox',@USER4) ;* Checks for any new messages
Send_Event('MASTER_CALIB_LIST','CREATE')
obj_Notes('Inbox',@USER4) ;* Checks for any new messages
Send_Event('MASTER_CALIB_LIST','CREATE')
RETURN
@ -265,34 +287,35 @@ RETURN
CalibrationsDC:
* * * * * * *
CtrlEntID = @WINDOW:'.CALIBRATIONS'
CtrlEntID = @WINDOW:'.CALIBRATIONS'
CurrPos = Get_Property(CtrlEntID,'SELPOS')
CurrCol = CurrPos<1>
CurrRow = CurrPos<2>
CurrPos = Get_Property(CtrlEntID,'SELPOS')
CurrCol = CurrPos<1>
CurrRow = CurrPos<2>
CalDt = Get_Property(CtrlEntID,'CELLPOS',COL$CAL_DT:@FM:CurrRow)
CalDt = Get_Property(CtrlEntID,'CELLPOS',COL$CAL_DT:@FM:CurrRow)
CalDt = ICONV(CalDt,'D')
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
IF CLNo NE '' AND CalDt NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
oaParms = 'CALIBRATION':@RM
oaParms := CLNo:'*':CalDt:@RM
oaParms := '':@RM ;* Default Record
oaParms := CLNo:@RM
oaParms := @RM
oaParms := CtrlEntID:@RM
oaParms := CurrPos
obj_Appwindow('ViewNewDetail', oaParms)
CalDt = ICONV(CalDt,'D')
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
IF CLNo NE '' AND CalDt NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
oaParms = 'CALIBRATION':@RM
oaParms := CLNo:'*':CalDt:@RM
oaParms := '':@RM ;* Default Record
oaParms := CLNo:@RM
oaParms := @RM
oaParms := CtrlEntID:@RM
oaParms := CurrPos
obj_Appwindow('ViewNewDetail', oaParms)
END
RETURN
@ -301,49 +324,51 @@ RETURN
NewCalibClick:
* * * * * * *
CtrlEntID = @WINDOW:'.CALIBRATIONS'
CtrlEntID = @WINDOW:'.CALIBRATIONS'
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
IF CLNo NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
oaParms = 'CALIBRATION':@RM
oaParms := CLNo:@RM
oaParms := '':@RM ;* Default Record
oaParms := CLNo:@RM
oaParms := @RM
oaParms := CtrlEntID:@RM
oaParms := 1:@FM:1
obj_Appwindow('ViewNewDetail', oaParms)
// New Calibration label was just clicked, set to true
Set_Property(@Window : '.CALIBRATIONS', '@PrintLabel', True$)
IF CLNo NE '' THEN
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
Send_Event(@WINDOW,'WRITE')
END
oaParms = 'CALIBRATION':@RM
oaParms := CLNo:@RM
oaParms := '':@RM ;* Default Record
oaParms := CLNo:@RM
oaParms := @RM
oaParms := CtrlEntID:@RM
oaParms := 1:@FM:1
obj_Appwindow('ViewNewDetail', oaParms)
// New Calibration label was just clicked, set to true
Set_Property(@Window : '.CALIBRATIONS', '@PrintLabel', True$)
END
RETURN
*********************
PrintMostRecentLabel:
*********************
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
CLNo = Get_Property(@WINDOW:'.CL_NO','DEFPROP')
IF CLNo NE '' THEN
TableList = Get_Property(@WINDOW:'.CALIBRATIONS', 'LIST')
EquipmentID = Get_Property(@WINDOW:'.EQ_DESC', 'TEXT')
LastCalibration = Get_Property(@WINDOW:'.LAST_CAL_DT', 'TEXT')
FrequencyVal = Get_Property(@WINDOW:'.CAL_INTERVAL', 'TEXT')
FrequencyUnit = 'Months'
NextCalibration = Get_Property(@WINDOW:'.NEXT_CAL_DT', 'TEXT')
CalibratedBy = TableList<1,2>
Labeling_Services('PrintCalibrationLabel', EquipmentID, LastCalibration, NextCalibration, CalibratedBy, FrequencyVal, FrequencyUnit, '')
end
IF CLNo NE '' THEN
TableList = Get_Property(@WINDOW:'.CALIBRATIONS', 'LIST')
EquipmentID = Get_Property(@WINDOW:'.EQ_DESC', 'TEXT')
LastCalibration = Get_Property(@WINDOW:'.LAST_CAL_DT', 'TEXT')
FrequencyVal = Get_Property(@WINDOW:'.CAL_INTERVAL', 'TEXT')
FrequencyUnit = 'Months'
NextCalibration = Get_Property(@WINDOW:'.NEXT_CAL_DT', 'TEXT')
CalibratedBy = TableList<1,2>
Labeling_Services('PrintCalibrationLabel', EquipmentID, LastCalibration, NextCalibration, CalibratedBy, FrequencyVal, FrequencyUnit, '')
end
return

View File

@ -1,138 +1,139 @@
Function Changelog_API(@API)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Changelog_API
Description : API logic for the Changelog resource.
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
FullEndpointURL - The URL submitted by the client, including query params.
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
EndpointSegment - The URL endpoint segment.
ParentURL - The URL path preceeding the current endpoint.
CurrentAPI - The name of this stored procedure.
Parameters :
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
- APIPattern must follow this structure Changelog[.ID.[<Property>]]
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
Examples:
- Changelog.POST
- Changelog.ID.PUT
- Changelog.ID.firstName.GET
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
services do not rely upon anything being returned in the response. This is what the
various services like SetResponseBody and SetResponseStatus services are for. A response
value is only helpful if the developers want to use it for debug purposes.
History : (Date, Initials, Notes)
07/24/24 xxx Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
Declare function Datetime, SRP_Datetime, Change_Log_Services, Environment_Services, Logging_Services
Declare subroutine Logging_Services
$insert APP_INSERTS
$insert API_SETUP
$insert HTTP_INSERTS
EQU Comma$ to ','
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\API\Admin\ChangeLog'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ChangeLogArchiveService.csv'
Headers = 'Logging DTM' : @FM : 'From IP Address' : @FM : 'Message'
objLogChangeLogAPI = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
RequesterIPAddr = HTTP_Services('GetHTTPRemoteAddr')
GoToAPI else
// The specific resource endpoint doesn't have a API handler yet.
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Endpoint Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
API changelog.HEAD
API changelog.GET
StartDtm = Http_Services('GetQueryField', 'FromDatetime')
ToDtm = Http_Services('GetQueryField', 'ToDatetime')
StartDtm = IConv(StartDtm, 'DT')
ToDtm = IConv(ToDtm, 'DT')
If StartDtm EQ '' then
StartDtm = SRP_Datetime('AddDays', Datetime(), -60)
end
If ToDtm EQ '' then
ToDtm = Datetime()
end
EntityName = Http_Services('GetQueryField', 'EntityName')
UserId = Http_Services('GetQueryField', 'UserID')
ChangeLogIDs = Change_Log_Services('GetChangeLogRecIDs', EntityName, StartDtm, ToDtm, UserId)
If Error_Services('NoError') then
GoSub CreateHALCollection
end else
ErrorMsg = Error_Services('GetMessage')
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = RequesterIPAddr
LogData<3> = ErrorMsg
Logging_Services('AppendLog', objLogChangeLogAPI, LogData, @RM, @FM)
HTTP_Services('SetResponseStatus', 500, 'Error Getting change log records from change_log table.')
end
end api
CreateHALCollection:
hJsonCollection = ''
hChangeLogArray = ''
hChangeLogObj = ''
hChangeLog = ''
hChangeLogJson = ''
Abort = False$
If SRP_JSON(hJSONCollection, 'New', 'Object') then
If SRP_JSON(hChangeLogArray, 'New', 'Array') then
For each ChangeLogID in ChangeLogIDs using @VM setting fPos
//rdsJSON = Rds_Services('ConvertRecordToJSON', rds, '' ,FullEndpointURL:'/':rds)
ChangeLogJson = Change_Log_Services('ConvertRecordToJSON', ChangeLogID)
If Error_Services('NoError') then
If (SRP_JSON(hChangeLog, 'Parse', ChangeLogJson) EQ '') then
SRP_JSON(hChangeLogArray, 'Add', hChangeLog)
SRP_JSON(hChangeLog, 'Release')
end
end else
Abort = True$
end
Until Abort
Next rds
If Abort EQ False$ then
SRP_JSON(hJSONCollection, 'Set', 'ChangeLogRecords', hChangeLogArray)
end
SRP_JSON(hChangeLogArray, 'Release')
end
JSONCollection = SRP_JSON(hJSONCollection, 'Stringify', 'Styled')
SRP_JSON(hJSONCollection, 'Release')
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseBody', JSONCollection, False$, 'application/hal+json')
HTTP_Services('SetResponseStatus', 200)
end
return
Function Changelog_API(@API)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Changelog_API
Description : API logic for the Changelog resource.
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
FullEndpointURL - The URL submitted by the client, including query params.
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
EndpointSegment - The URL endpoint segment.
ParentURL - The URL path preceeding the current endpoint.
CurrentAPI - The name of this stored procedure.
Parameters :
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
- APIPattern must follow this structure Changelog[.ID.[<Property>]]
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
Examples:
- Changelog.POST
- Changelog.ID.PUT
- Changelog.ID.firstName.GET
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
services do not rely upon anything being returned in the response. This is what the
various services like SetResponseBody and SetResponseStatus services are for. A response
value is only helpful if the developers want to use it for debug purposes.
History : (Date, Initials, Notes)
07/24/24 xxx Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
Declare function Datetime, SRP_Datetime, Change_Log_Services, Environment_Services, Logging_Services
Declare subroutine Logging_Services
$insert APP_INSERTS
$insert API_SETUP
$insert HTTP_INSERTS
EQU Comma$ to ','
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\API\Admin\ChangeLog'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ChangeLogArchiveService.csv'
Headers = 'Logging DTM' : @FM : 'From IP Address' : @FM : 'Message'
objLogChangeLogAPI = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
RequesterIPAddr = HTTP_Services('GetHTTPRemoteAddr')
GoToAPI else
// The specific resource endpoint doesn't have a API handler yet.
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Endpoint Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
API changelog.HEAD
API changelog.GET
StartDtm = Http_Services('GetQueryField', 'FromDatetime')
ToDtm = Http_Services('GetQueryField', 'ToDatetime')
StartDtm = IConv(StartDtm, 'DT')
ToDtm = IConv(ToDtm, 'DT')
If StartDtm EQ '' then
StartDtm = SRP_Datetime('AddDays', Datetime(), -60)
end
If ToDtm EQ '' then
ToDtm = Datetime()
end
EntityName = Http_Services('GetQueryField', 'EntityName')
UserId = Http_Services('GetQueryField', 'UserID')
ChangeLogIDs = Change_Log_Services('GetChangeLogRecIDs', EntityName, StartDtm, ToDtm, UserId)
If Error_Services('NoError') then
GoSub CreateHALCollection
end else
ErrorMsg = Error_Services('GetMessage')
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = RequesterIPAddr
LogData<3> = ErrorMsg
Logging_Services('AppendLog', objLogChangeLogAPI, LogData, @RM, @FM)
HTTP_Services('SetResponseStatus', 500, 'Error Getting change log records from change_log table.')
end
end api
CreateHALCollection:
hJsonCollection = ''
hChangeLogArray = ''
hChangeLogObj = ''
hChangeLog = ''
hChangeLogJson = ''
Abort = False$
If SRP_JSON(hJSONCollection, 'New', 'Object') then
If SRP_JSON(hChangeLogArray, 'New', 'Array') then
For each ChangeLogID in ChangeLogIDs using @VM setting fPos
//rdsJSON = Rds_Services('ConvertRecordToJSON', rds, '' ,FullEndpointURL:'/':rds)
ChangeLogJson = Change_Log_Services('ConvertRecordToJSON', ChangeLogID)
If Error_Services('NoError') then
If (SRP_JSON(hChangeLog, 'Parse', ChangeLogJson) EQ '') then
SRP_JSON(hChangeLogArray, 'Add', hChangeLog)
SRP_JSON(hChangeLog, 'Release')
end
end else
Abort = True$
end
Until Abort
Next rds
If Abort EQ False$ then
SRP_JSON(hJSONCollection, 'Set', 'ChangeLogRecords', hChangeLogArray)
end
SRP_JSON(hChangeLogArray, 'Release')
end
JSONCollection = SRP_JSON(hJSONCollection, 'Stringify', 'Styled')
SRP_JSON(hJSONCollection, 'Release')
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseBody', JSONCollection, False$, 'application/hal+json')
HTTP_Services('SetResponseStatus', 200)
end
return

View File

@ -1,258 +0,0 @@
Function Clean_API(@API)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Clean_API
Description : API logic for the Clean resource.
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
FullEndpointURL - The URL submitted by the client, including query params.
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
EndpointSegment - The URL endpoint segment.
ParentURL - The URL path preceeding the current endpoint.
CurrentAPI - The name of this stored procedure.
Parameters :
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
- APIPattern must follow this structure Clean[.ID.[<Property>]]
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
Examples:
- Clean.POST
- Clean.ID.PUT
- Clean.ID.firstName.GET
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
services do not rely upon anything being returned in the response. This is what the
various services like SetResponseBody and SetResponseStatus services are for. A response
value is only helpful if the developers want to use it for debug purposes.
History : (Date, Initials, Notes)
06/18/25 xxx Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
Declare function OI_Wizard_Services, Lot_Operation_Services, Database_Services, Lot_Services, Clean_Services
Declare subroutine Clean_Services, Lot_Services
$insert APP_INSERTS
$insert API_SETUP
$insert HTTP_INSERTS
$insert OI_WIZARD_EQUATES
$insert LOT_OPERATION_EQUATES
GoToAPI else
// The specific resource endpoint doesn't have a API handler yet.
HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Endpoint Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
API clean.ID.HEAD
API clean.ID.GET
ErrorMessage = ''
ResponseCode = ''
ResponseMessage = ''
Body = ''
OIWizardID = ''
Cookies = HTTP_Services('GetHTTPCookie')
For each Cookie in Cookies using ';'
Key = Field(Cookie, '=', 1)
If Key EQ 'sessionID' then
OIWizardID = Field(Cookie, '=', 2)
end
Next Cookie
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
If ValidSession then
UserId = Xlate('OI_WIZARD', OIWizardID, OI_WIZARD.EMPLOYEE_ID$, 'X')
StatusCode = ''
CleanRecId = EndpointSegment
CleanRecJson = Clean_Services('ConvertCleanRecToJson', CleanRecId)
If Error_Services('NoError') then
Http_Services('SetResponseBody', CleanRecJson, False$, 'application/hal+json')
ResponseCode = 200
end else
ErrorMessage = Error_Services('GetMessage')
ResponseCode = 500
end
end else
ErrorMessage = 'Invalid session. Reauthentication required.'
ResponseCode = 401
end
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseStatus', ResponseCode, ErrorMessage)
end api
API clean.ID.markcleanrecordcomplete.POST
ErrorMessage = ''
ResponseCode = ''
ResponseMessage = ''
Body = ''
OIWizardID = ''
Cookies = HTTP_Services('GetHTTPCookie')
For each Cookie in Cookies using ';'
Key = Field(Cookie, '=', 1)
If Key EQ 'sessionID' then
OIWizardID = Field(Cookie, '=', 2)
end
Next Cookie
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
If ValidSession then
UserId = Xlate('OI_WIZARD', OIWizardID, OI_WIZARD.EMPLOYEE_ID$, 'X')
StatusCode = ''
Body = HTTP_Services('GetHTTPPostString', True$)
// The POST string will have been encoded so use percent (URL) decoding.
DecodedJSON = HTTP_Services('DecodePercentString', Body)
If SRP_JSON(objBody, 'Parse', Body) EQ '' then
CleanRecId = ParentSegment
LotOperationId = SRP_JSON(objBody, 'GetValue', 'LotOperationId')
CleanTool = SRP_JSON(objBody, 'GetValue', 'CleanTool')
CleanRecipe = SRP_JSON(objBody, 'GetValue', 'CleanRecipe')
SRP_JSON(objBody, 'Release')
Clean_Services('MarkCleanRecComplete', CleanRecId, CleanRecipe, CleanTool, UserId)
If Error_Services('NoError') then
CleanRecJson = Clean_Services('ConvertCleanRecToJson', CleanRecId)
HTTP_Services('SetResponseBody', CleanRecJson, False$, 'application/hal+json')
ResponseCode = 200
end else
ErrorMessage = Error_Services('GetMessage')
ResponseCode = 500
end
end
end else
ErrorMessage = 'Invalid session. Reauthentication required.'
ResponseCode = 401
end
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseStatus', ResponseCode, ErrorMessage)
end api
API clean.createcleanrecord.POST
ErrorMessage = ''
ResponseCode = ''
ResponseMessage = ''
Body = ''
OIWizardID = ''
Cookies = HTTP_Services('GetHTTPCookie')
For each Cookie in Cookies using ';'
Key = Field(Cookie, '=', 1)
If Key EQ 'sessionID' then
OIWizardID = Field(Cookie, '=', 2)
end
Next Cookie
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
If ValidSession then
UserId = Xlate('OI_WIZARD', OIWizardID, OI_WIZARD.EMPLOYEE_ID$, 'X')
StatusCode = ''
Body = HTTP_Services('GetHTTPPostString', True$)
// The POST string will have been encoded so use percent (URL) decoding.
DecodedJSON = HTTP_Services('DecodePercentString', Body)
If SRP_JSON(objBody, 'Parse', Body) EQ '' then
LotId = SRP_JSON(objBody, 'GetValue', 'LotId')
LotOperationId = SRP_JSON(objBody, 'GetValue', 'LotOperationId')
SRP_JSON(objBody, 'Release')
end
CleanRecId = Clean_Services('CreateNewCleanRecord', LotId, LotOperationId, UserId)
If Error_Services('NoError') then
CleanRecJson = Clean_Services('ConvertCleanRecToJson', CleanRecId)
HTTP_Services('SetResponseBody', CleanRecJson, False$, 'application/hal+json')
ResponseCode = 200
end else
ErrorMessage = Error_Services('GetMessage')
ResponseCode = 500
end
end else
ErrorMessage = 'Invalid session. Reauthentication required.'
ResponseCode = 401
end
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseStatus', ResponseCode, ErrorMessage)
end api
API clean.getnewcleanoperationparams.HEAD
API clean.getnewcleanoperationparams.GET
JSONCollection = ''
OIWizardID = ''
Cookies = HTTP_Services('GetHTTPCookie')
For each Cookie in Cookies using ';'
Key = Field(Cookie, '=', 1)
If Key EQ 'sessionID' then
OIWizardID = Field(Cookie, '=', 2)
end
Next Cookie
ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID)
If ValidSession then
Body = HTTP_Services('GetHTTPGetString')
If Body NE '' then
RequestJson = HTTP_Services('DecodePercentString', Body)
LotId = Http_Services('GetQueryField', 'LotId')
objJSONResponse = ''
If SRP_Json(objJSONResponse, 'New', 'Object') then
//Available Tools
If SRP_Json(objCleanTools, 'New', 'Array') then
CleanTools = Clean_Services('GetCleanToolOptions')
for each CleanTool in CleanTools using @FM
SRP_Json(objCleanTools, 'AddValue', CleanTool, 'String')
Next CleanTool
SRP_Json(objJsonResponse, 'Set', 'CleanToolOptions', objCleanTools)
SRP_Json(objCleanTools, 'Release')
end
//Available Recipes
If SRP_Json(objCleanRecipes, 'New', 'Array') then
CleanRecipes = Clean_Services('GetCleanRecipeOptions')
for each Recipe in CleanRecipes using @VM
SRP_Json(objCleanRecipes, 'AddValue', Recipe, 'String')
Next Recipe
SRP_Json(objJsonResponse, 'Set', 'CleanRecipeOptions', objCleanRecipes)
SRP_Json(objCleanRecipes, 'Release')
end
JsonResponse = SRP_Json(objJsonResponse, 'Stringify', 'Styled')
SRP_Json(objJsonResponse, 'Release')
end else
Error_Services('Add', 'Error when creating JSON response.')
end
end else
Error_Services('Add', 'No body was sent with the request.')
end
If Error_Services('NoError') then
HTTP_Services('SetResponseStatus', 201, 'Success')
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseBody', JsonResponse, False$, 'application/hal+json')
end else
HTTP_Services('SetResponseStatus', 400, Error_Services('GetMessage'))
end
end else
HTTP_Services('SetResponseStatus', 401, 'Invalid session. Reauthentication required.')
end
end api

View File

@ -72,12 +72,11 @@ $insert WM_OUT_EQUATES
$insert WO_LOG_EQUATES
$insert ROTR_EQUATES
$insert WO_MAT_EQUATES
$Insert IFX_EQUATES
Equ Comma$ to ','
Declare function Error_Services, Database_Services, Environment_Services, QA_Services, RDS_Services, MemberOf
Declare subroutine Error_Services, Database_Services, Post_Metrology_Manual_Data_Entry_Log, Service_Services
Declare subroutine Error_Services, Database_Services, Post_Metrology_Manual_Data_Entry_Log
Declare subroutine Qa_Services
If KeyID then GoSub Initialize_System_Variables
@ -800,15 +799,96 @@ WRITE_RECORD:
WONo = Record<CLEAN_INSP_WO_NO$>
ReactType = Xlate('WO_LOG', WONo, 'REACT_TYPE', 'X')
EpiPro = (ReactType EQ 'EPP')
GaN = (ReactType EQ 'GAN')
NonEpiPro = ( (ReactType NE 'EPP') and (ReactType NE 'GAN') )
Stage = Record<CLEAN_INSP_STAGE$>
If Stage EQ 'LWI' then
Service_Services('PostProcedure', 'CLEAN_INSP_SERVICES', 'UpdatePostCISampleQty':SD$:Name)
RDSNo = Record<CLEAN_INSP_RDS_NO$>
PostCIKey = Xlate('RDS', RDSNo, 'POST_CI_NO', 'X')
If PostCIKey NE '' then
FailedWafers = Record<CLEAN_INSP_FAILED_WAFERS$>
If FailedWafers NE '' then
NewPostSpecSampleQty = Sum(FailedWafers)
PostCIRec = Database_Services('ReadDataRow', 'CLEAN_INSP', PostCIKey)
PostSpecRecipes = PostCIRec<CLEAN_INSP_SPEC_SURFSCAN_RECIPE$>
NumRecipes = DCount(PostSpecRecipes, @VM)
If NumRecipes GT 0 then
For RecipeIndex = 1 to NumRecipes
CurrSpec = PostCIRec<CLEAN_INSP_SPEC_SS_SAMP_QTY$, RecipeIndex>
If ( (CurrSpec EQ '') or (CurrSpec LT NewPostSpecSampleQty) ) then
PostCIRec<CLEAN_INSP_SPEC_SS_SAMP_QTY$, RecipeIndex> = NewPostSpecSampleQty
end
Next RecipeIndex
Database_Services('WriteDataRow', 'CLEAN_INSP', PostCIKey, PostCIRec, True$, False$, True$)
end
end
end
end
If NonEpiPro then
// Sync up Insp, Clean, and SurfScan signatures with WO_MAT signature profile
Stage = {STAGE}
WOMatKey = {WO_MAT_KEY}
Service_Services('PostProcedure', 'QA_SERVICES', 'UpdateFailedWafers':SD$:WOMatKey)
Service_Services('PostProcedure', 'CLEAN_INSP_SERVICES', 'PushSigProfileToWoMat':SD$:Name)
// Update failed wafer list
QA_Services('UpdateFailedWafers', WOMatKey)
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
WOMatSigProf = WOMatRec<WO_MAT_SIG_PROFILE$>
WOMatSigs = WOMatRec<WO_MAT_SIGNATURE$>
WOMatSigDTMs = WOMatRec<WO_MAT_SIG_DTM$>
OrigInspSig = OrigRecord<CLEAN_INSP_INSP_SIG$>
OrigInspSigDTM = OrigRecord<CLEAN_INSP_INSP_SIG_DTM$>
InspSig = Record<CLEAN_INSP_INSP_SIG$>
InspSigDTM = Record<CLEAN_INSP_INSP_SIG_DTM$>
OrigCleanSig = OrigRecord<CLEAN_INSP_CLEAN_SIG$>
OrigCleanSigDTM = OrigRecord<CLEAN_INSP_CLEAN_SIG_DTM$>
CleanSig = Record<CLEAN_INSP_CLEAN_SIG$>
CleanSigDTM = Record<CLEAN_INSP_CLEAN_SIG_DTM$>
OrigScanSig = OrigRecord<CLEAN_INSP_SCAN_SIG$>
OrigScanSigDTM = OrigRecord<CLEAN_INSP_SCAN_SIG_DTM$>
ScanSig = Record<CLEAN_INSP_SCAN_SIG$>
ScanSigDTM = Record<CLEAN_INSP_SCAN_SIG_DTM$>
SigProfUpdate = False$
If ( (OrigInspSig NE InspSig) or (OrigInspSigDTM NE InspSigDTM) ) then
WOMatStage = '1':Stage:'I'
Locate WOMatStage in WOMatSigProf using @VM setting vPos then
WOMatSigs<0, vPos> = InspSig[-1, 'B':@VM]
WOMatSigDTMs<0, vPos> = InspSigDTM[-1, 'B':@VM]
SigProfUpdate = True$
end
end
If ( (OrigCleanSig NE CleanSig) or (OrigCleanSigDTM NE CleanSigDTM) ) then
WOMatStage = '1':Stage:'C'
Locate WOMatStage in WOMatSigProf using @VM setting vPos then
WOMatSigs<0, vPos> = CleanSig[-1, 'B':@VM]
WOMatSigDTMs<0, vPos> = CleanSigDTM[-1, 'B':@VM]
SigProfUpdate = True$
end
end
If ( (OrigScanSig NE ScanSig) or (OrigScanSigDTM NE ScanSigDTM) ) then
WOMatStage = '1':Stage:'S'
Locate WOMatStage in WOMatSigProf using @VM setting vPos then
WOMatSigs<0, vPos> = ScanSig[-1, 'B':@VM]
WOMatSigDTMs<0, vPos> = ScanSigDTM[-1, 'B':@VM]
SigProfUpdate = True$
end
end
If SigProfUpdate then
NumSteps = DCount(WOMatSigProf, @VM)
WOMatRec<WO_MAT_SIGNATURE$> = Field(WOMatSigs, @VM, 1, NumSteps)
WOMatRec<WO_MAT_SIG_DTM$> = Field(WOMatSigDTMs, @VM, 1, NumSteps)
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
end
end
return
@ -865,3 +945,4 @@ Restore_System_Variables:
@FILE.ERROR = OrigFileError
return

View File

@ -56,8 +56,7 @@ $Insert PRS_STAGE_EQUATES
$Insert WO_MAT_EQUATES
Declare function Database_Services, SRP_JSON, Error_Services, obj_Clean_Insp
Declare subroutine Database_Services, SRP_JSON, Error_Services, obj_React_Run, Clean_Insp_Services, React_Run_Services
Declare subroutine Transaction_Services, Btree.Extract
Declare subroutine Database_Services, SRP_JSON, Error_Services, obj_React_Run, Clean_Insp_Services, React_Run_Services, Btree.Extract
GoToService
@ -440,13 +439,11 @@ Service UpdateAllCleanInsp(WOMatKey)
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// This service functions as a means to get the latest CINo for a specified RDS No where the defectivity measurements took place
// This is specifically used to have the latest defectivity data
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Service GetLatestDefectCINoByRDSId(RDSNo)
LatestCINo = ''
LatestInspDtm = ''
Open 'DICT CLEAN_INSP' to @DICT then
@ -467,136 +464,6 @@ Service GetLatestDefectCINoByRDSId(RDSNo)
end
end
Response = LatestCINo
end service
Service PushSigProfileToWoMat(CleanInspKey)
ErrorMsg = ''
If (CleanInspKey NE '') then
If RowExists('CLEAN_INSP', CleanInspKey) then
Record = Database_Services('ReadDataRow', 'CLEAN_INSP', CleanInspKey)
If Error_Services('NoError') then
WONo = Record<CLEAN_INSP_WO_NO$>
ReactType = Xlate('WO_LOG', WONo, 'REACT_TYPE', 'X')
NonEpiPro = ( (ReactType NE 'EPP') and (ReactType NE 'GAN') )
If NonEpiPro then
// Sync up Insp, Clean, and SurfScan signatures with WO_MAT signature profile
Stage = Record<CLEAN_INSP_STAGE$>
WOMatKey = Xlate('CLEAN_INSP', CleanInspKey, 'WO_MAT_KEY', 'X')
If WOMatKey NE '' then
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
If Error_Services('NoError') then
WOMatSigProf = WOMatRec<WO_MAT_SIG_PROFILE$>
WOMatSigs = WOMatRec<WO_MAT_SIGNATURE$>
WOMatSigDTMs = WOMatRec<WO_MAT_SIG_DTM$>
WOMatSigsOrig = WOMatSigs
WOMatSigDTMsOrig = WOMatSigDTMs
InspSig = Record<CLEAN_INSP_INSP_SIG$>
InspSigDTM = Record<CLEAN_INSP_INSP_SIG_DTM$>
CleanSig = Record<CLEAN_INSP_CLEAN_SIG$>
CleanSigDTM = Record<CLEAN_INSP_CLEAN_SIG_DTM$>
ScanSig = Record<CLEAN_INSP_SCAN_SIG$>
ScanSigDTM = Record<CLEAN_INSP_SCAN_SIG_DTM$>
WOMatStage = '1':Stage:'I'
Locate WOMatStage in WOMatSigProf using @VM setting vPos then
WOMatSigs<0, vPos> = InspSig[-1, 'B':@VM]
WOMatSigDTMs<0, vPos> = InspSigDTM[-1, 'B':@VM]
end
WOMatStage = '1':Stage:'C'
Locate WOMatStage in WOMatSigProf using @VM setting vPos then
WOMatSigs<0, vPos> = CleanSig[-1, 'B':@VM]
WOMatSigDTMs<0, vPos> = CleanSigDTM[-1, 'B':@VM]
end
WOMatStage = '1':Stage:'S'
Locate WOMatStage in WOMatSigProf using @VM setting vPos then
WOMatSigs<0, vPos> = ScanSig[-1, 'B':@VM]
WOMatSigDTMs<0, vPos> = ScanSigDTM[-1, 'B':@VM]
end
NumSteps = DCount(WOMatSigProf, @VM)
WOMatSigs = Field(WOMatSigs, @VM, 1, NumSteps)
WOMatSigDTMs = Field(WOMatSigDTMs, @VM, 1, NumSteps)
If WOMatSigs NE WOMatSigsOrig then
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIGNATURE$, WOMatSigs)
end
If WOMatSigDTMs NE WOMatSigDTMsOrig then
Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_SIG_DTM$, WOMatSigDTMs)
end
end else
ErrorMsg = 'Error in ':Service:' service. Error message: ':Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Null WO_MAT_KEY returned for CLEAN_INSP ':CleanInspKey:'.'
end
end
end else
ErrorMsg = 'Error in ':Service:' service. Error message: ':Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. CLEAN_INSP ':CleanInspKey:' does not exist.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null CleanInspKey passed into service.'
end
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
end service
Service UpdatePostCISampleQty(CleanInspKey)
ErrorMsg = ''
If CleanInspKey NE '' then
If RowExists('CLEAN_INSP', CleanInspKey) then
Record = Database_Services('ReadDataRow', 'CLEAN_INSP', CleanInspKey)
If Error_Services('NoError') then
Stage = Record<CLEAN_INSP_STAGE$>
If Stage EQ 'LWI' then
RDSNo = Record<CLEAN_INSP_RDS_NO$>
PostCIKey = Xlate('RDS', RDSNo, 'POST_CI_NO', 'X')
If PostCIKey NE '' then
FailedWafers = Record<CLEAN_INSP_FAILED_WAFERS$>
If FailedWafers NE '' then
NewPostSpecSampleQty = Sum(FailedWafers)
PostCIRec = Database_Services('ReadDataRow', 'CLEAN_INSP', PostCIKey)
PostSpecRecipes = PostCIRec<CLEAN_INSP_SPEC_SURFSCAN_RECIPE$>
NumRecipes = DCount(PostSpecRecipes, @VM)
If NumRecipes GT 0 then
UpdatePostRec = False$
For RecipeIndex = 1 to NumRecipes
CurrSpec = PostCIRec<CLEAN_INSP_SPEC_SS_SAMP_QTY$, RecipeIndex>
If ( (CurrSpec EQ '') or (CurrSpec LT NewPostSpecSampleQty) ) then
UpdatePostRec = True$
PostCIRec<CLEAN_INSP_SPEC_SS_SAMP_QTY$, RecipeIndex> = NewPostSpecSampleQty
end
Next RecipeIndex
If UpdatePostRec then
PostCISpecSampQty = PostCIRec<CLEAN_INSP_SPEC_SS_SAMP_QTY$>
Transaction_Services('PostWriteFieldTransaction', 'CLEAN_INSP', PostCIKey, CLEAN_INSP_SPEC_SS_SAMP_QTY$, PostCISpecSampQty)
end
end
end
end
end
end else
ErrorMsg = 'Error in ':Service:' service. Error message: ':Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. CLEAN_INSP ':CleanInspKey:' does not exist.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null CleanInspKey passed into service.'
end
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -1,217 +0,0 @@
Compile function Clean_Services(@Service, @Params)
#pragma precomp SRP_PreCompiler
Declare Function Database_Services, Error_Services, Logging_Services, Datetime
Declare Function RTI_CreateGUID, Tool_Services, SRP_Json, Date_Services
Declare Subroutine Database_Services, Error_Services, Logging_Services, SRP_Json, Lot_Event_Services
$insert LOGICAL
$Insert CLEAN_EQUATES
$Insert LOT_EQUATES
$Insert LOT_OPERATION_EQUATES
$Insert TOOL_EQUATES
$Insert TOOL_CLASS_EQUATES
Options Stage = 'LWI',
GoToService
Return Response or ""
//-----------------------------------------------------------------------------
// SERVICES
//-----------------------------------------------------------------------------
Service CreateNewCleanRecord(LotId, LotOperationId, UserId)
ErrorMessage = ''
CleanRecId = ''
If RowExists('LOT', LotId) then
//ToDo check Lot Operation Exists
//Checks complete, create the CLEAN record
TransDtm = Datetime()
CleanRecId = RTI_CreateGUID()
CleanRec = ''
CleanRec<CLEAN_LOT_ID$> = LotId
CleanRec<CLEAN_LOT_OPERATION_ID$> = LotOperationId
CleanRec<CLEAN_CLEAN_START_DTM$> = TransDtm
CleanRec<CLEAN_CLEAN_START_USER_ID$> = UserId
Database_Services('WriteDataRow', 'CLEAN', CleanRecId, CleanRec)
If Error_Services('NoError') then
If LotOperationId NE '' then
LotOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', LotOperationId, True$, 0, False$)
LotOperationRec<LOT_OPERATION_CLEAN_ID$> = CleanRecId
Database_Services('WriteDataRow', 'LOT_OPERATION', LotOperationId, LotOperationRec)
If Error_Services('NoError') then
Lot_Event_Services('CreateLotEvent', LotId, TransDtm, 'CLEAN_START', 'Created clean record.', '', UserId)
end else
ErrorMessage = Error_Services('GetMessage')
end
end
end else
ErrorMessage = Error_Services('GetMessage')
end
end else
//Todo add error message
end
If ErrorMessage EQ '' then
Response = CleanRecId
end else
// Todo: Add logging
ErrorMessage = 'Error Creating a new clean record: ' : ErrorMessage
Error_Services('Add', ErrorMessage)
end
End Service
Service ConvertCleanRecToJson(CleanRecId)
ErrorMessage = ''
CleanRecJson = ''
If RowExists('CLEAN', CleanRecId) then
CleanRec = Database_Services('ReadDataRow', 'CLEAN', CleanRecId, True$, 0, False$)
If Error_Services('NoError') then
objJson = ''
If SRP_Json(objJson, 'New', 'Object') then
SRP_Json(objJson, 'SetValue', 'CleanId', CleanRecId, 'String')
SRP_Json(objJson, 'SetValue', 'LotId', CleanRec<CLEAN_LOT_ID$>, 'String')
LegacyLotId = Database_Services('ReadDataColumn', 'LOT', CleanRec<CLEAN_LOT_ID$>, LOT_LEGACY_LOT_ID$)
SRP_Json(objJson, 'SetValue', 'LegacyLotId', LegacyLotId, 'String')
SRP_Json(objJson, 'SetValue', 'Recipe', CleanRec<CLEAN_RECIPE$>, 'String')
SRP_Json(objJson, 'SetValue', 'Tool', CleanRec<CLEAN_TOOL$>, 'String')
SRP_Json(objJson, 'SetValue', 'StartUser', CleanRec<CLEAN_CLEAN_START_USER_ID$>, 'String')
StartDtm = Date_Services('ConvertDateTimeToISO8601', CleanRec<CLEAN_CLEAN_START_DTM$>)
if StartDtm NE '' then
SRP_Json(objJson, 'SetValue', 'StartDtm', StartDtm)
end
SRP_Json(objJson, 'SetValue', 'StopUser', CleanRec<CLEAN_CLEAN_STOP_USER_ID$>, 'String')
StopDtm = Date_Services('ConvertDateTimeToISO8601', CleanRec<CLEAN_CLEAN_STOP_DTM$>)
if StopDtm NE '' then
SRP_Json(objJson, 'SetValue', 'StopDtm', StopDtm, 'String')
end
SRP_Json(objJson, 'SetValue', 'LotOperationId', CleanRec<CLEAN_LOT_OPERATION_ID$>, 'String')
CleanRecJson = SRP_Json(objJson, 'Stringify', 'Styled')
SRP_Json(objJson, 'Release')
end else
ErrorMessage = 'Error creating clean record json'
end
end else
ErrorMessage = Error_Services('GetMessage')
end
end else
ErrorMessage = 'Clean record not found.'
end
If ErrorMessage EQ '' then
Response = CleanRecJson
end else
Error_Services('Add', 'Error getting clean record : ' : ErrorMessage)
end
end service
Service MarkCleanRecComplete(CleanRecId, CleanRecipe, CleanTool, CleanUser)
ErrorMessage = ''
TransDtm = Datetime()
If RowExists('CLEAN', CleanRecId) then
CleanRec = Database_Services('ReadDataRow', 'CLEAN', CleanRecId, True$, 0, False$)
If CleanRec<CLEAN_CLEAN_START_DTM$> NE '' then
If CleanRec<CLEAN_TOOL$> EQ '' AND CleanRec<CLEAN_RECIPE$> EQ '' then
if RowExists('LSL_USERS', CleanUser) then
If CleanRec<CLEAN_COMPLETE_DTM$> EQ '' then
CleanRec<CLEAN_TOOL$> = CleanTool
CleanRec<CLEAN_RECIPE$> = CleanRecipe
CleanRec<CLEAN_CLEAN_STOP_USER_ID$> = CleanUser
CleanRec<CLEAN_CLEAN_STOP_DTM$> = TransDtm
Database_Services('WriteDataRow', 'CLEAN', CleanRecId, CleanRec)
If Error_Services('NoError') then
LotId = CleanRec<CLEAN_LOT_ID$>
Lot_Event_Services('CreateLotEvent', LotId, TransDtm, 'CLEAN', 'Clean completed', CleanTool, CleanUser)
end else
ErrorMessage = Error_Services('GetMessage')
end
end else
ErrorMessage = 'Clean is already signed off.'
end
end else
ErrorMessage = 'Clean tool or clean recipe is missing.'
end
end else
ErrorMessage = 'Clean has already been logged.'
end
end else
ErrorMessage = 'Clean has not been started.'
end
end else
ErrorMessage = 'Clean record not found.'
end
If ErrorMessage NE '' then
Error_Services('Add', ErrorMessage)
end
end service
Service ValidateCleanRecord(CleanRecId)
//ErrorMessage = ''
CleanRecValid = False$
* If CleanRecId NE '' then
* If RowExists('CLEAN', CleanRecId) then
* CleanRec = Database_Services('ReadDataRow', 'CLEAN', CleanRecId, True$, 0, False$)
* SpecTool = CleanRec<CLEAN_TOOL$>
* ToolUsed = CleanRec<CLEAN_RECIPE$>
* If ToolUsed EQ SpecTool AND ToolUsed NE '' then
* SpecRecipe = CleanRec<CLEAN_SPEC_RECIPE$>
* RecipeUsed = CleanRec<CLEAN_RECIPE$>
* If RecipeUsed EQ SpecRecipe AND RecipeUsed NE '' then
* CleanRecValid = True$
* end
* end
* end else
* ErrorMessage = 'Clean record not found in CLEAN database.'
* end
* end else
* ErrorMessage = 'Clean ID was null.'
* end
*
* If ErrorMessage EQ '' then
* Response = CleanRecValid
* end else
* // Todo: Add logging
* ErrorMessage = 'Error validating clean record: ' : ErrorMessage
* Error_Services('Add', ErrorMessage)
* end
Response = CleanRecValid
End Service
Service GetCleanToolOptions(CleanRecId)
If RowExists('CLEAN', CleanRecId) then
CleanTools = Database_Services('ReadDataColumn', 'CLEAN', CleanRecId, CLEAN_SPEC_CLEAN_TOOL$, True$, 0, False$)
end else
CleanTools = Tool_Services('GetTools', 'AKRION')
end
Response = CleanTools
end service
Service GetCleanRecipeOptions(CleanRecId)
If RowExists('CLEAN', CleanRecId) then
Recipes = Database_Services('ReadDataColumn', 'CLEAN', CleanRecId, CLEAN_SPEC_CLEAN_RECIPE$, True$, 0, False$)
end else
//Todo: Make this smarter, so as to block out pre-epi recipes
Recipes = XLATE('TOOL_CLASS','AKRION',TOOL_CLASS_RECIPES$,'X')
end
Response = Recipes
end service

File diff suppressed because it is too large Load Diff

View File

@ -556,6 +556,8 @@ UnloadProduct:
Next CassNo
end
RETURN
@ -637,4 +639,3 @@ SlotOverview:
RETURN

File diff suppressed because it is too large Load Diff

View File

@ -10,12 +10,11 @@ COMPILE FUNCTION Comm_Dialog_WO_Scan(Method, Parm1)
DECLARE SUBROUTINE Set_Property, End_Dialog, Set_Status, ErrMsg, Extract_SI_Keys, Logging_Services
DECLARE SUBROUTINE obj_Appwindow, Start_Window, Msg, Btree.Extract, Error_Services
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Send_Message, Set_FSError, Environment_Services
DECLARE FUNCTION obj_Vendor_Code, Msg, Error_Services, Logging_Services, Error_Services, Service_Services
DECLARE FUNCTION obj_Vendor_Code, Msg, Error_Services, Logging_Services
$INSERT LOGICAL
$INSERT MSG_EQUATES
$INSERT APPCOLORS
$INSERT IFX_EQUATES
EQU CRLF$ TO \0D0A\
@ -24,16 +23,14 @@ EQU COL$LQP_QTY TO 2
EQU COL$LQP_PART TO 3 ;* This is either Cust Part No OR Substrate Part Number depending on which control is visible
EQU COL$LQP_VENDOR TO 4 ;* Vendor code on the Substrate screen 7/14/2011 JCH for SAP
EQU CA$ITEM_NO TO 1 ;* Equates for Checking Array passed to Scan routine
EQU CA$LOT_NO TO 2
EQU CA$LOT_QTY TO 3
EQU CA$CUST_PART_NO TO 4
EQU CA$SUB_PART_NO TO 5
EQU CA$SCANNED_LOT_QTY TO 6
EQU CA$VERIFY_PART_NO TO 7
EQU CA$SUB_SUPP_BY TO 8
EQU CA$WO_NO TO 9
EQU CA$REC_DTM TO 10
EQU CA$ITEM_NO TO 1 ;* Equates for Checking Array passed to Scan routine
EQU CA$LOT_NO TO 2
EQU CA$LOT_QTY TO 3
EQU CA$CUST_PART_NO TO 4
EQU CA$SUB_PART_NO TO 5
EQU CA$SCANNED_LOT_QTY TO 6
EQU CA$VERIFY_PART_NO TO 7
EQU CA$SUB_SUPP_BY TO 8
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Receiving'
LogDate = Oconv(Date(), 'D4/')
@ -51,6 +48,7 @@ Result = ''
BEGIN CASE
CASE Method = 'Create' ; GOSUB Create
CASE Method = 'OK' ; GOSUB OK
CASE Method = 'Cancel' ; GOSUB Cancel
CASE Method = 'FieldClick' ; GOSUB FieldClick
CASE Method = 'LQP' ; GOSUB LQP
CASE 1
@ -63,47 +61,47 @@ RETURN Result
Create:
* * * * * * *
VendorDef = Parm1[1,@FM]
VendorDef = Parm1[1,@FM]
CheckArray = FIELD(Parm1,@FM,2,999)
CheckArray = FIELD(Parm1,@FM,2,999)
Set_Property(@WINDOW,'@VENDOR_DEF',VendorDef)
Set_Property(@WINDOW,'@VENDOR_DEF',VendorDef)
OpenQty = CheckArray<CA$LOT_QTY>
Set_Property(@WINDOW:'.OPEN_QTY','TEXT',OCONV(OpenQty,'MD0,')) ;* 12/6/2011 JCH
OpenQty = CheckArray<CA$LOT_QTY>
Set_Property(@WINDOW:'.OPEN_QTY','TEXT',OCONV(OpenQty,'MD0,')) ;* 12/6/2011 JCH
Set_Property(@WINDOW,'@CHECK_ARRAY',CheckArray)
obj_AppWindow('Create')
Set_Property(@WINDOW,'@CHECK_ARRAY',CheckArray)
obj_AppWindow('Create')
TimeStamp = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')
Set_Property(@WINDOW:'.RX_DTM','DEFPROP',TimeStamp)
Set_Property(@WINDOW,'FOCUS',@WINDOW:'.RX_DTM')
Set_Property(@WINDOW:'.RX_DTM','SELECTION',1:@FM:65534)
TimeStamp = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')
Set_Property(@WINDOW:'.RX_DTM','DEFPROP',TimeStamp)
Set_Property(@WINDOW,'FOCUS',@WINDOW:'.RX_DTM')
Set_Property(@WINDOW:'.RX_DTM','SELECTION',1:@FM:65534)
GOSUB Refresh
GOSUB Refresh
* * * * * * *
FieldClick:
* * * * * * *
CtrlEntID = @WINDOW:'.FIELD_RADIO'
CtrlEntID = @WINDOW:'.FIELD_RADIO'
ControlSelection = Get_Property(CtrlEntID,'VALUE')
ControlSelection = Get_Property(CtrlEntID,'VALUE')
Ctrls = @WINDOW:'.LOT_QTY':@RM ; Props = 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_PART':@RM ; Props := 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_SUB_PART':@RM ; Props := 'VISIBLE':@RM
Ctrls := @WINDOW:'.WINDOW_LABEL_FIX' ; Props := 'TEXT'
Ctrls = @WINDOW:'.LOT_QTY':@RM ; Props = 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_PART':@RM ; Props := 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_SUB_PART':@RM ; Props := 'VISIBLE':@RM
Ctrls := @WINDOW:'.WINDOW_LABEL_FIX' ; Props := 'TEXT'
BEGIN CASE
CASE ControlSelection = 'LQ' ; Vals = '1':@RM:'0':@RM:'0':@RM:'Customer Wafers'
CASE ControlSelection = 'LQP' ; Vals = '0':@RM:'1':@RM:'0':@RM:'Customer Wafers'
CASE ControlSelection = 'LQSP' ; Vals = '0':@RM:'0':@RM:'1':@RM:'Substrates'
END CASE
BEGIN CASE
CASE ControlSelection = 'LQ' ; Vals = '1':@RM:'0':@RM:'0':@RM:'Customer Wafers'
CASE ControlSelection = 'LQP' ; Vals = '0':@RM:'1':@RM:'0':@RM:'Customer Wafers'
CASE ControlSelection = 'LQSP' ; Vals = '0':@RM:'0':@RM:'1':@RM:'Substrates'
END CASE
Set_Property(Ctrls,Props,Vals)
Set_Property(Ctrls,Props,Vals)
RETURN
@ -111,15 +109,11 @@ RETURN
Close:
* * * * * * *
ProcIds = Get_Property(@Window, '@PROC_IDS')
* * * * * * *
Cancel:
* * * * * * *
If ProcIds NE '' then
Response = ProcIds
end else
Response = 'Cancel'
end
End_Dialog(@WINDOW,Response)
End_Dialog(@WINDOW,'Cancel')
RETURN
@ -128,288 +122,271 @@ RETURN
Refresh:
* * * * * * *
ListArray = Get_Property(CtrlEntId,'ARRAY')
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
TotalScannedQty = SUM(ListArray<COL$LQP_QTY>)
OpenQty = CheckArray<CA$LOT_QTY>
ListArray = Get_Property(CtrlEntId,'ARRAY')
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
TotalScannedQty = SUM(ListArray<COL$LQP_QTY>)
OpenQty = CheckArray<CA$LOT_QTY>
Set_Property(@WINDOW:'.SCANNED_QTY','TEXT',OCONV(TotalScannedQty,'MD0,'))
Set_Property(@WINDOW:'.SCANNED_QTY','TEXT',OCONV(TotalScannedQty,'MD0,'))
IF TotalScannedQty < OpenQty THEN
Set_Property(@WINDOW:'.SCANNED_QTY','BACKCOLOR',GREEN$)
END ELSE
Set_Property(@WINDOW:'.SCANNED_QTY','BACKCOLOR',RED$)
END
IF TotalScannedQty < OpenQty THEN
Set_Property(@WINDOW:'.SCANNED_QTY','BACKCOLOR',GREEN$)
END ELSE
Set_Property(@WINDOW:'.SCANNED_QTY','BACKCOLOR',RED$)
END
RETURN
* * * * * * *
LQP:
* * * * * * *
CtrlEntID = Get_Property(@WINDOW,'FOCUS')
StripANSI = Get_Property(@WINDOW:'.STRIP_ANSI','CHECK')
SkipSubANSI = Get_Property(@WINDOW:'.SKIP_SUBSTRATE_ANSI','CHECK')
CtrlEntID = Get_Property(@WINDOW,'FOCUS')
StripANSI = Get_Property(@WINDOW:'.STRIP_ANSI','CHECK')
SkipSubANSI = Get_Property(@WINDOW:'.SKIP_SUBSTRATE_ANSI','CHECK')
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
BEGIN CASE
CASE CtrlEntID = @WINDOW:'.LOT_QTY' ; ColCnt = 2
CASE CtrlEntID = @WINDOW:'.LOT_QTY_PART' ; ColCnt = 3
CASE CtrlEntID = @WINDOW:'.LOT_QTY_SUB_PART' ; ColCnt = 4
END CASE
BEGIN CASE
CASE CtrlEntID = @WINDOW:'.LOT_QTY' ; ColCnt = 2
CASE CtrlEntID = @WINDOW:'.LOT_QTY_PART' ; ColCnt = 3
CASE CtrlEntID = @WINDOW:'.LOT_QTY_SUB_PART' ; ColCnt = 4
END CASE
PrevSelPos = Get_Property(CtrlEntId,"PREVSELPOS")
PrevCol = PrevSelPos<1>
PrevRow = PrevSelPos<2>
CurrPos = Get_Property(CtrlEntId,'SELPOS')
CurrCol = CurrPos<1>
CurrRow = CurrPos<2>
ListData = Get_Property(CtrlEntId,'LIST')
PrevSelPos = Get_Property(CtrlEntId,"PREVSELPOS")
PrevCol = PrevSelPos<1>
PrevRow = PrevSelPos<2>
CurrPos = Get_Property(CtrlEntId,'SELPOS')
CurrCol = CurrPos<1>
CurrRow = CurrPos<2>
ListData = Get_Property(CtrlEntId,'LIST')
IF ListData<CurrRow,CurrCol> = '' THEN
ColPointer = CurrCol
LinePointer = CurrRow
* Find the first non-empty cell
LOOP
Test = ListData<LinePointer,(ColPointer) >
UNTIL Test NE '' OR (LinePointer = 0 AND ColPointer = 1)
ColPointer -= 1
IF ColPointer = 0 THEN
ColPointer = ColCnt
LinePointer -= 1
END
REPEAT
* Move one past the non empty cell
IF ListData<CurrRow,CurrCol> = '' THEN
ColPointer = CurrCol
LinePointer = CurrRow
* Find the first non-empty cell
LOOP
Test = ListData<LinePointer,(ColPointer) >
UNTIL Test NE '' OR (LinePointer = 0 AND ColPointer = 1)
ColPointer -= 1
IF ColPointer = 0 THEN
ColPointer = ColCnt
LinePointer -= 1
END
REPEAT
* Move one past the non empty cell
BEGIN CASE
CASE LinePointer = 0
* Empty Table
LinePointer = 1
CoilPointer = 1
CASE ColPointer = ColCnt
LinePointer += 1
ColPointer = 1
CASE 1
ColPointer += 1
END CASE
Set_Property(CtrlEntId,"SELPOS",ColPointer:@FM:LinePointer)
END
// Global scan validation check. Only alpha-numeric, dashes, spaces, and periods permitted.
ValidationScan = Trim(ListData<PrevRow,PrevCol>)
Convert @Lower_Case to @Upper_Case in ValidationScan
Convert 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ./' to '' in ValidationScan
//DPC 2/18/20 - changed validation to allow foward slash per supplier lot naming (Global Wafer)
//FYI - conversion would only work when separated from above line
Convert '/' to '' in ValidationScan
If ValidationScan NE '' then
Error_Services('Set', 'Scanned code ' : Quote(Trim(ListData<PrevRow,PrevCol>)) : ' contains an invalid character. Please re-scan.')
end
If Error_Services('NoError') then
IF ListData<PrevRow,PrevCol> NE '' THEN
BEGIN CASE
CASE LinePointer = 0
* Empty Table
LinePointer = 1
CoilPointer = 1
CASE ColPointer = ColCnt
LinePointer += 1
ColPointer = 1
CASE 1
ColPointer += 1
END CASE
Set_Property(CtrlEntId,"SELPOS",ColPointer:@FM:LinePointer)
END
CASE PrevCol = COL$LQP_LOT
// Global scan validation check. Only alpha-numeric, dashes, spaces, and periods permitted.
ValidationScan = Trim(ListData<PrevRow,PrevCol>)
Convert @Lower_Case to @Upper_Case in ValidationScan
Convert 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ./' to '' in ValidationScan
//DPC 2/18/20 - changed validation to allow foward slash per supplier lot naming (Global Wafer)
//FYI - conversion would only work when separated from above line
Convert '/' to '' in ValidationScan
If ValidationScan NE '' then
Error_Services('Set', 'Scanned code ' : Quote(Trim(ListData<PrevRow,PrevCol>)) : ' contains an invalid character. Please re-scan.')
end
If Error_Services('NoError') then
IF ListData<PrevRow,PrevCol> NE '' THEN
BEGIN CASE
CASE PrevCol = COL$LQP_LOT
IF StripANSI THEN
RawLot = TRIM(ListData<PrevRow,PrevCol>)
IF RawLot[1,2] = '1T' OR RawLot[1,2] = '2T' THEN
LotNo = RawLot[3,99]
END ELSE
Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawLot):' is not an ANSI Lot No.')
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
IF StripANSI THEN
RawLot = TRIM(ListData<PrevRow,PrevCol>)
IF RawLot[1,2] = '1T' OR RawLot[1,2] = '2T' THEN
LotNo = RawLot[3,99]
END ELSE
LotNo = TRIM(ListData<PrevRow,PrevCol>)
END
IF CtrlEntID NE @WINDOW:'.LOT_QTY_SUB_PART' THEN
* Don't check Customer Lot Numbers if scanning substrates
LOCATE LotNo IN CheckArray<CA$LOT_NO> USING @VM SETTING Pos ELSE
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Lot No ':QUOTE(LotNo):' not found in':@TM:'Order Item Lot Numbers!')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
END
END
Set_Property(CtrlEntID,'INVALUE',LotNo,PrevSelPos)
CASE PrevCol = COL$LQP_QTY
IF StripANSI THEN
RawLotQty = ListData<PrevRow,PrevCol>
IF RawLotQty[1,1] = 'Q' THEN
LotQty = RawLotQty[2,99]
END ELSE
Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawLotQty):' is not an ANSI Quantity')
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
END ELSE
LotQty = ListData<PrevRow,PrevCol>
END
IF NOT(NUM(LotQty)) THEN
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Lot Qty ':QUOTE(LotQty):' is not a number!')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
END
Set_Property(CtrlEntID,'INVALUE',LotQty,PrevSelPos)
CASE PrevCol = COL$LQP_PART
// Check scanned part number for 5 segments. If there are 5 segments then use segments 3 and 4
// to make the actual part number.
ScannedPartNo = Trim(ListData<PrevRow, PrevCol>)
If DCount(ScannedPartNo, '-') EQ 5 then
RawPartNo = ''
If ScannedPartNo[1, 1] _EQC 'P' then RawPartNo := 'P'
If ScannedPartNo[1, 1] _EQC 'S' then RawPartNo := 'S'
RawPartNo := Field(ScannedPartNo, '-', 3, 2)
ListData<PrevRow, PrevCol> = RawPartNo
end
RawPartNo = TRIM(ListData<PrevRow,PrevCol>)
IF StripANSI AND NOT(SkipSubAnsi) THEN ;***************************************
RawPartNo = TRIM(ListData<PrevRow,PrevCol>)
IF RawPartNo[1,1] _EQC 'P' OR RawPartNo[1,1] _EQC 'S' THEN
PartNo = RawPartNo[2,99]
END ELSE
Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawPartNo):' is not an ANSI Part No')
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
END ELSE
PartNo = ListData<PrevRow,PrevCol>
END
IF CtrlEntID = @WINDOW:'.LOT_QTY_PART' THEN
* Check Customer Part Numbers
LOCATE PartNo IN CheckArray<CA$VERIFY_PART_NO> USING @VM SETTING Pos THEN
PartNo = CheckArray<CA$CUST_PART_NO,Pos>
END ELSE
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Part No ':QUOTE(PartNo):' not found in':@TM:'Order Customer Part Numbers!')
PartNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
END
END ELSE
* Check Substrate Part Numbers
LOCATE PartNo IN CheckArray<CA$SUB_PART_NO> USING @VM SETTING Pos ELSE
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Part No ':QUOTE(PartNo):' not found in':@TM:'Order Substrate Part Numbers!')
PartNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
END
END ;* End of check for Customer supplied or Inventory substrate part number
Set_Property(CtrlEntID,'INVALUE',PartNo,PrevSelPos)
CASE PrevCol = COL$LQP_VENDOR
SubSuppBy = CheckArray<CA$SUB_SUPP_BY>
VendCode = ''
IF StripANSI AND NOT(SkipSubAnsi) THEN
RawVendCode = TRIM(ListData<PrevRow,PrevCol>)
IF RawVendCode[1,2] = '1V' THEN
VendCode = RawVendCode[3,99]
END ELSE
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
TypeOver<MTEXT$> = 'Scanned Code ':QUOTE(RawVendCode):' is not an ANSI Vendor Code'
Resp = Msg(@WINDOW, '','OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawVendCode):' is not an ANSI Vendor Code')
Set_Property(CtrlEntID,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
END ELSE
VendCode = ListData<PrevRow,PrevCol>
END
IF RowExists('SEMI_VEND_CODE', VendCode) OR SubSuppBy = 'C' ELSE
* Accept or Rescan message
If VendCode EQ '' then VendCode = RawVendCode
Resp = Msg(@WINDOW, '','OK', '', 'Scan Error':@FM:'Vendor Code ':QUOTE(VendCode):' not found in':@TM:'Vendor Codes on file!')
VendCode = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawLot):' is not an ANSI Lot No.')
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
END ELSE
LotNo = TRIM(ListData<PrevRow,PrevCol>)
END
IF CtrlEntID NE @WINDOW:'.LOT_QTY_SUB_PART' THEN
* Don't check Customer Lot Numbers if scanning substrates
Set_Property(CtrlEntID,'INVALUE',VendCode,PrevSelPos)
ExpectedCode = Get_Property(@WINDOW,'@VENDOR_DEF')
IF VendCode NE ExpectedCode AND ExpectedCode NE '' THEN
void = Msg(@WINDOW,'','EXPECTED_VENDOR_CODE','',ExpectedCode:@FM:VendCode)
LOCATE LotNo IN CheckArray<CA$LOT_NO> USING @VM SETTING Pos ELSE
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Lot No ':QUOTE(LotNo):' not found in':@TM:'Order Item Lot Numbers!')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
END
END
Set_Property(CtrlEntID,'INVALUE',LotNo,PrevSelPos)
CASE PrevCol = COL$LQP_QTY
IF StripANSI THEN
RawLotQty = ListData<PrevRow,PrevCol>
IF RawLotQty[1,1] = 'Q' THEN
LotQty = RawLotQty[2,99]
END ELSE
Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawLotQty):' is not an ANSI Quantity')
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
END ELSE
LotQty = ListData<PrevRow,PrevCol>
END
IF NOT(NUM(LotQty)) THEN
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Lot Qty ':QUOTE(LotQty):' is not a number!')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
END
Set_Property(CtrlEntID,'INVALUE',LotQty,PrevSelPos)
CASE PrevCol = COL$LQP_PART
// Check scanned part number for 5 segments. If there are 5 segments then use segments 3 and 4
// to make the actual part number.
ScannedPartNo = Trim(ListData<PrevRow, PrevCol>)
If DCount(ScannedPartNo, '-') EQ 5 then
RawPartNo = ''
If ScannedPartNo[1, 1] _EQC 'P' then RawPartNo := 'P'
If ScannedPartNo[1, 1] _EQC 'S' then RawPartNo := 'S'
RawPartNo := Field(ScannedPartNo, '-', 3, 2)
ListData<PrevRow, PrevCol> = RawPartNo
end
RawPartNo = TRIM(ListData<PrevRow,PrevCol>)
IF StripANSI AND NOT(SkipSubAnsi) THEN ;***************************************
RawPartNo = TRIM(ListData<PrevRow,PrevCol>)
IF RawPartNo[1,1] _EQC 'P' OR RawPartNo[1,1] _EQC 'S' THEN
PartNo = RawPartNo[2,99]
END ELSE
Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawPartNo):' is not an ANSI Part No')
Set_Property(CtrlEntId,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
END ELSE
PartNo = ListData<PrevRow,PrevCol>
END
IF CtrlEntID = @WINDOW:'.LOT_QTY_PART' THEN
* Check Customer Part Numbers
LOCATE PartNo IN CheckArray<CA$VERIFY_PART_NO> USING @VM SETTING Pos THEN
PartNo = CheckArray<CA$CUST_PART_NO,Pos>
END ELSE
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Part No ':QUOTE(PartNo):' not found in':@TM:'Order Customer Part Numbers!')
PartNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
end
ProcIds = Get_Property(@Window, '@PROC_IDS')
ListData = Get_Property(CtrlEntId, 'LIST')
WONo = CheckArray<CA$WO_NO - 1>
RecDtm = CheckArray<CA$REC_DTM - 1>
ScanLotNo = ListData<PrevRow, 1>
ScanQty = ListData<PrevRow, 2>
ScanSubPartNo = ListData<PrevRow, 3>
ScanVendor = ListData<PrevRow, 4>
ProcIds<-1> = Service_Services('PostProcedure', 'WORK_ORDER_SERVICES', 'ReceiveReleaseCassette':SD$:WONo:SD$:@User4:SD$:ScanLotNo:SD$:ScanQty:SD$:ScanSubPartNo:SD$:ScanVendor:SD$:RecDtm)
If Error_Services('NoError') then
Set_Property(@Window, '@PROC_IDS', ProcIds)
end else
ErrorMsg = Error_Services('GetMessage')
Msg(@Window, '', 'OK', '', 'Process Error':@FM:'Error submitting scan data to server for processing')
end
ListArray = Get_Property(CtrlEntId,'ARRAY')
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
TotalScannedQty = SUM(ListArray<COL$LQP_QTY>)
OpenQty = CheckArray<CA$LOT_QTY>
IF TotalScannedQty >= OpenQty THEN
Resp = Msg(@WINDOW,'','WO_REC_COMPLETE')
GOTO OK
END
END CASE
END
end
END ELSE
* Check Substrate Part Numbers
LOCATE PartNo IN CheckArray<CA$SUB_PART_NO> USING @VM SETTING Pos ELSE
* Accept or Rescan message
Resp = Msg(@Window, '', 'OK', '', 'Scan Error':@FM:'Part No ':QUOTE(PartNo):' not found in':@TM:'Order Substrate Part Numbers!')
PartNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID, 'FOCUS', True$)
END
END ;* End of check for Customer supplied or Inventory substrate part number
Set_Property(CtrlEntID,'INVALUE',PartNo,PrevSelPos)
CASE PrevCol = COL$LQP_VENDOR
SubSuppBy = CheckArray<CA$SUB_SUPP_BY>
VendCode = ''
IF StripANSI AND NOT(SkipSubAnsi) THEN
RawVendCode = TRIM(ListData<PrevRow,PrevCol>)
IF RawVendCode[1,2] = '1V' THEN
VendCode = RawVendCode[3,99]
END ELSE
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
TypeOver<MTEXT$> = 'Scanned Code ':QUOTE(RawVendCode):' is not an ANSI Vendor Code'
Resp = Msg(@WINDOW, '','OK', '', 'Scan Error':@FM:'Scanned Code ':QUOTE(RawVendCode):' is not an ANSI Vendor Code')
Set_Property(CtrlEntID,"SELPOS",PrevSelPos)
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
END ELSE
VendCode = ListData<PrevRow,PrevCol>
END
IF RowExists('SEMI_VEND_CODE', VendCode) OR SubSuppBy = 'C' ELSE
* Accept or Rescan message
If VendCode EQ '' then VendCode = RawVendCode
Resp = Msg(@WINDOW, '','OK', '', 'Scan Error':@FM:'Vendor Code ':QUOTE(VendCode):' not found in':@TM:'Vendor Codes on file!')
VendCode = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",PrevSelPos) ;* Cursor to Lot No for a rescan
Set_Property(CtrlEntID,'INVALUE','',PrevSelPos)
Set_Property(CtrlEntID, 'FOCUS', True$)
RETURN
END
Set_Property(CtrlEntID,'INVALUE',VendCode,PrevSelPos)
ExpectedCode = Get_Property(@WINDOW,'@VENDOR_DEF')
IF VendCode NE ExpectedCode AND ExpectedCode NE '' THEN
void = Msg(@WINDOW,'','EXPECTED_VENDOR_CODE','',ExpectedCode:@FM:VendCode)
Set_Property(CtrlEntID, 'FOCUS', True$)
END
If Error_Services('HasError') then
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
Message = Error_Services('GetMessage')
TypeOver<MTEXT$> = Message
Msg(@Window, TypeOver, 'LABEL_DATA_ERROR')
Set_Property(CtrlEntId, 'SELPOS', PrevSelPos)
Set_Property(CtrlEntID, 'INVALUE', '', PrevSelPos)
Error_Services('Clear')
end else
GOSUB Refresh
end
ListArray = Get_Property(CtrlEntId,'ARRAY')
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
TotalScannedQty = SUM(ListArray<COL$LQP_QTY>)
OpenQty = CheckArray<CA$LOT_QTY>
IF TotalScannedQty >= OpenQty THEN
Resp = Msg(@WINDOW,'','WO_REC_COMPLETE')
GOTO OK
END
END CASE
END
end
If Error_Services('HasError') then
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
Message = Error_Services('GetMessage')
TypeOver<MTEXT$> = Message
Msg(@Window, TypeOver, 'LABEL_DATA_ERROR')
Set_Property(CtrlEntId, 'SELPOS', PrevSelPos)
Set_Property(CtrlEntID, 'INVALUE', '', PrevSelPos)
Error_Services('Clear')
end else
GOSUB Refresh
end
RETURN
@ -418,166 +395,159 @@ RETURN
OK:
* * * * * * *
CtrlEntID = @WINDOW:'.FIELD_RADIO'
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
CtrlEntID = @WINDOW:'.FIELD_RADIO'
CheckArray = Get_Property(@WINDOW,'@CHECK_ARRAY')
ControlSelection = Get_Property(CtrlEntID,'VALUE')
ControlSelection = Get_Property(CtrlEntID,'VALUE')
Ctrls = @WINDOW:'.LOT_QTY':@RM ; Props = 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_PART':@RM ; Props := 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_SUB_PART' ; Props := 'VISIBLE'
Ctrls = @WINDOW:'.LOT_QTY':@RM ; Props = 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_PART':@RM ; Props := 'VISIBLE':@RM
Ctrls := @WINDOW:'.LOT_QTY_SUB_PART' ; Props := 'VISIBLE'
BEGIN CASE
CASE ControlSelection = 'LQ' ; Ctrl = @WINDOW:'.LOT_QTY'
CASE ControlSelection = 'LQP' ; Ctrl = @WINDOW:'.LOT_QTY_PART'
CASE ControlSelection = 'LQSP' ; Ctrl = @WINDOW:'.LOT_QTY_SUB_PART'
END CASE
BEGIN CASE
CASE ControlSelection = 'LQ' ; Ctrl = @WINDOW:'.LOT_QTY'
CASE ControlSelection = 'LQP' ; Ctrl = @WINDOW:'.LOT_QTY_PART'
CASE ControlSelection = 'LQSP' ; Ctrl = @WINDOW:'.LOT_QTY_SUB_PART'
END CASE
ListData = Get_Property(Ctrl,'LIST')
ListData = Get_Property(Ctrl,'LIST')
TimeStamp = Get_Property(@WINDOW:'.RX_DTM','TEXT')
TimeStamp = ICONV(TimeStamp,'DT')
IF TimeStamp = '' THEN
ErrMsg('Invalid Received DateTime data entered. "mm/dd/yy hh:mm:ss" is the basic format.')
RETURN
END
TimeStamp = Get_Property(@WINDOW:'.RX_DTM','TEXT')
TimeStamp = ICONV(TimeStamp,'DT')
IF TimeStamp = '' THEN
ErrMsg('Invalid Received DateTime data entered. "mm/dd/yy hh:mm:ss" is the basic format.')
RETURN
END
CheckArray<CA$SCANNED_LOT_QTY> = '' ;* Clear scanned lot quantities column
CheckArray<CA$SCANNED_LOT_QTY> = '' ;* Clear scanned lot quantities column
LineCnt = 1
LOOP
TestVal = ListData<LineCnt,1>
UNTIL TestVal = ''
LotNo = TRIM(ListData<LineCnt,1>)
Qty = TRIM(ListData<LineCnt,2>)
IF ControlSelection = 'LQ' THEN
LOCATE LotNo IN CheckArray<CA$LOT_NO> USING @VM SETTING Pos THEN
OrderItemNo = CheckArray<CA$ITEM_NO,Pos>
CustPartNo = CheckArray<CA$CUST_PART_NO,Pos>
SubPartNo = CheckArray<CA$SUB_PART_NO,Pos>
CheckArray<CA$SCANNED_LOT_QTY,Pos> = CheckArray<CA$SCANNED_LOT_QTY,Pos> + Qty
END ELSE
* Accept or Rescan message
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
TypeOver<MTEXT$> = 'Lot No ':QUOTE(LotNo):' not found in':@TM:'Order Item Lot Numbers!'
Resp = Msg(@WINDOW,TypeOver,'LABEL_DATA_ERROR')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",CA$LOT_NO:@FM:LineCnt) ;* Cursor to Lot No for a rescan
RETURN
END
LineCnt = 1
LOOP
TestVal = ListData<LineCnt,1>
UNTIL TestVal = ''
LotNo = TRIM(ListData<LineCnt,1>)
Qty = TRIM(ListData<LineCnt,2>)
IF ControlSelection = 'LQ' THEN
LOCATE LotNo IN CheckArray<CA$LOT_NO> USING @VM SETTING Pos THEN
OrderItemNo = CheckArray<CA$ITEM_NO,Pos>
CustPartNo = CheckArray<CA$CUST_PART_NO,Pos>
SubPartNo = CheckArray<CA$SUB_PART_NO,Pos>
CheckArray<CA$SCANNED_LOT_QTY,Pos> = CheckArray<CA$SCANNED_LOT_QTY,Pos> + Qty
END ELSE
* Accept or Rescan message
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
TypeOver<MTEXT$> = 'Lot No ':QUOTE(LotNo):' not found in':@TM:'Order Item Lot Numbers!'
Resp = Msg(@WINDOW,TypeOver,'LABEL_DATA_ERROR')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",CA$LOT_NO:@FM:LineCnt) ;* Cursor to Lot No for a rescan
RETURN
END
END
IF ControlSelection = 'LQP' THEN
CustPartNo = TRIM(ListData<LineCnt,3>)
LOCATE LotNo IN CheckArray<CA$LOT_NO> USING @VM SETTING Pos THEN
OrderItemNo = CheckArray<CA$ITEM_NO,Pos>
SubPartNo = CheckArray<CA$SUB_PART_NO,Pos>
CheckArray<CA$SCANNED_LOT_QTY,Pos> = CheckArray<CA$SCANNED_LOT_QTY,Pos> + Qty
END ELSE
* Accept or Rescan message
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
TypeOver<MTEXT$> = 'Lot No ':QUOTE(LotNo):' not found in':@TM:'Order Item Lot Numbers!'
Resp = Msg(@WINDOW,TypeOver,'LABEL_DATA_ERROR')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",CA$LOT_NO:@FM:LineCnt) ;* Cursor to Lot No for a rescan
RETURN
END
END
IF ControlSelection = 'LQSP' THEN
SubPartNo = TRIM(ListData<LineCnt,3>)
Vendor = TRIM(ListData<LineCnt,4>) ;* Added 7/14/2011 JCH for SAP
OrderItemNo = CheckArray<CA$ITEM_NO,1> ;* Changed 2/8/2010 from ' = 1 ' JCH
CustPartNo = CheckArray<CA$CUST_PART_NO,1>
END ELSE
Vendor = ''
END
END
IF ControlSelection = 'LQP' THEN
CustPartNo = TRIM(ListData<LineCnt,3>)
LOCATE LotNo IN CheckArray<CA$LOT_NO> USING @VM SETTING Pos THEN
OrderItemNo = CheckArray<CA$ITEM_NO,Pos>
SubPartNo = CheckArray<CA$SUB_PART_NO,Pos>
CheckArray<CA$SCANNED_LOT_QTY,Pos> = CheckArray<CA$SCANNED_LOT_QTY,Pos> + Qty
END ELSE
* Accept or Rescan message
TypeOver = ''
TypeOver<MTYPE$> = 'B&Rescan'
TypeOver<MTEXT$> = 'Lot No ':QUOTE(LotNo):' not found in':@TM:'Order Item Lot Numbers!'
Resp = Msg(@WINDOW,TypeOver,'LABEL_DATA_ERROR')
LotNo = '' ;* Clear entered field for a rescan
Set_Property(CtrlEntId,"SELPOS",CA$LOT_NO:@FM:LineCnt) ;* Cursor to Lot No for a rescan
RETURN
END
END
IF ControlSelection = 'LQSP' THEN
SubPartNo = TRIM(ListData<LineCnt,3>)
Vendor = TRIM(ListData<LineCnt,4>) ;* Added 7/14/2011 JCH for SAP
OrderItemNo = CheckArray<CA$ITEM_NO,1> ;* Changed 2/8/2010 from ' = 1 ' JCH
CustPartNo = CheckArray<CA$CUST_PART_NO,1>
END ELSE
Vendor = ''
END
Result<1,LineCnt> = LineCnt
Result<2,LineCnt> = LotNo ;* Lot No
Result<3,LineCnt> = Qty
Result<4,LineCnt> = CustPartNo ;* PartNo
Result<5,LineCnt> = SubPartNo ;* Substrate Part No
Result<6,LineCnt> = Vendor ;* Substrate Vendor Code
Result<7,LineCnt> = OCONV(TimeStamp,'DT')
Result<8,LineCnt> = @USER4
Result<9,LineCnt> = OrderItemNo
LineCnt += 1
REPEAT
Result<1,LineCnt> = LineCnt
Result<2,LineCnt> = LotNo ;* Lot No
Result<3,LineCnt> = Qty
Result<4,LineCnt> = CustPartNo ;* PartNo
Result<5,LineCnt> = SubPartNo ;* Substrate Part No
Result<6,LineCnt> = Vendor ;* Substrate Vendor Code
Result<7,LineCnt> = OCONV(TimeStamp,'DT')
Result<8,LineCnt> = @USER4
Result<9,LineCnt> = OrderItemNo
LineCnt += 1
REPEAT
IF ControlSelection NE 'LQSP' THEN
IF ControlSelection NE 'LQSP' THEN
* Orders with Epi supplied substrates don't have any lot quantities to check against.
ProblemQtyLots = ''
FOR I = 1 TO COUNT(CheckArray<CA$LOT_NO>,@VM) + (CheckArray<CA$LOT_NO> NE '')
IF (CheckArray<CA$SCANNED_LOT_QTY,I> NE '') AND (CheckArray<CA$LOT_QTY,I> NE CheckArray<CA$SCANNED_LOT_QTY,I>) THEN
* Lot quantity mismatch
ProblemQtyLots<-1> = CheckArray<CA$LOT_NO,I>
END
NEXT I
* Orders with Epi supplied substrates don't have any lot quantities to check against.
ProblemQtyLots = ''
FOR I = 1 TO COUNT(CheckArray<CA$LOT_NO>,@VM) + (CheckArray<CA$LOT_NO> NE '')
IF (CheckArray<CA$SCANNED_LOT_QTY,I> NE '') AND (CheckArray<CA$LOT_QTY,I> NE CheckArray<CA$SCANNED_LOT_QTY,I>) THEN
* Lot quantity mismatch
ProblemQtyLots<-1> = CheckArray<CA$LOT_NO,I>
END
NEXT I
IF ProblemQtyLots NE '' THEN
LineCnt = 1
LOOP
TestVal = ListData<LineCnt,1>
UNTIL TestVal = ''
LotNo = TRIM(ListData<LineCnt,1>)
LOCATE LotNo IN ProblemQtyLots USING @FM SETTING Pos THEN
stat = Send_Message(Ctrl,'COLOR_BY_POS',0,LineCnt,RED$) ;* Flag all the lines with lot numbers having qty problems
END
LineCnt += 1
REPEAT
ErrMsg('Lot Quantity(s) Scanned do not match Order Item Lot Quantity(s)!||Review and rescan highlighted items.')
RETURN
END
END ELSE
*
END
IF ProblemQtyLots NE '' THEN
LineCnt = 1
LOOP
TestVal = ListData<LineCnt,1>
UNTIL TestVal = ''
LotNo = TRIM(ListData<LineCnt,1>)
LOCATE LotNo IN ProblemQtyLots USING @FM SETTING Pos THEN
stat = Send_Message(Ctrl,'COLOR_BY_POS',0,LineCnt,RED$) ;* Flag all the lines with lot numbers having qty problems
END
LineCnt += 1
REPEAT
ErrMsg('Lot Quantity(s) Scanned do not match Order Item Lot Quantity(s)!||Review and rescan highlighted items.')
RETURN
END
END ELSE
*
END
NumRows = DCount(Result, @FM)
NullFound = False$
For LineIndex = 1 to NumRows
Row = Result<LineIndex>
NumVals = DCount(Row, @VM)
For ValIndex = 1 to NumVals
Val = Row<0, ValIndex>
If Val EQ '' then NullFound = True$
Next ValIndex
Until NullFound
Next LineIndex
If NullFound EQ True$ then
ErrMsg('Missing value found in scanned data! Verify your labels and restart your scan operation.')
Result = 'Cancel'
end
NumRows = DCount(Result, @FM)
NullFound = False$
For LineIndex = 1 to NumRows
Row = Result<LineIndex>
NumVals = DCount(Row, @VM)
For ValIndex = 1 to NumVals
Val = Row<0, ValIndex>
If Val EQ '' then NullFound = True$
Next ValIndex
Until NullFound
Next LineIndex
If NullFound EQ True$ then
ErrMsg('Missing value found in scanned data! Verify your labels and restart your scan operation.')
Result = 'Cancel'
end
ScanResult = Result
Swap @VM with ' | ' in ScanResult
ScanResult = Result
Swap @VM with ' | ' in ScanResult
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = @User4
LogData<3> = ScanResult
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
LogData = ''
LogData<1> = LoggingDTM
LogData<2> = @User4
LogData<3> = ScanResult
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
ProcIds = Get_Property(@Window, '@PROC_IDS')
If ProcIds NE '' then
Response = ProcIds
end else
Response = 'Cancel'
end
End_Dialog(@WINDOW,Response)
End_Dialog(@WINDOW,Result)
RETURN

View File

@ -858,4 +858,3 @@ Result = ReturnData
RETURN

View File

@ -9,7 +9,7 @@ COMPILE FUNCTION Comm_PRS_Stage(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Event, Security_Err_Msg
DECLARE SUBROUTINE Send_Message, Btree.Extract, Comm_Prod_Spec, Forward_Event, Post_Event
DECLARE FUNCTION Get_Property, Get_Status, Popup, Send_Message, Msg, Start_Window, MemberOf, Security_Check
DECLARE FUNCTION Comm_Prod_Spec, obj_Popup
DECLARE FUNCTION Comm_Prod_Spec
$INSERT POPUP_EQUATES
@ -143,7 +143,7 @@ obj_Appwindow('Create',@WINDOW)
**** Set Dropdown columns in .MET_TEST edit table ****
MetStyles = Send_Message(@WINDOW:'.MET_TEST','COLSTYLE',0,'')
MetStyles = Send_Message(@WINDOW:'.MET_TEST','COLSTYLE',0,'')
MetStyles<COL$MET_TEST> = BitOr(MetStyles<COL$MET_TEST>,DROPDOWN_STYLE$)
MetStyles<COL$MET_PROP> = BitOr(MetStyles<COL$MET_PROP>,DROPDOWN_STYLE$)
@ -192,6 +192,7 @@ NEXT I
Send_Message(@WINDOW:'.MET_TEST','COLFORMAT',COL$MET_PROP,PropCodes)
* Class Tools is set in the POSCHANGED event for the edit table.
/*
@ -234,23 +235,6 @@ Read:
GOSUB Refresh
* Met Property Descriptions *
PSNo = Get_Property(@WINDOW : '.PS_NO', 'TEXT')
Stage = Get_Property(@WINDOW:'.STAGE','DEFPROP')
Props = Xlate('PRS_STAGE', PSNo:'*':Stage, PRS_STAGE_MET_PROP$, 'X')
PropDescs = obj_Popup('CodeDesc','MET_PROPERTY':@RM:Props)
CtrlEntID = @WINDOW:'.MET_TEST'
DescCount = DCount(PropDescs, @VM)
FOR Row = 1 to DescCount
PropDesc = PropDescs<1, Row>
Set_Property(CtrlEntId,"CELLPOS",PropDesc,COL$MET_PROP_DESC:@FM:Row)
Next Row
RETURN
@ -738,8 +722,8 @@ CurrLine = Get_Property(CtrlEntID,'LIST')<CurrRow>
DefProp = ''
BEGIN CASE
BEGIN CASE
CASE CurrCol = COL$MET_TOOL_CLASS
PropCode = CurrLine<1,COL$MET_PROP>
@ -780,12 +764,6 @@ BEGIN CASE
RETURN
CASE CurrCol = COL$MET_PROP_DESC
PropCode = CurrLine<1,COL$MET_PROP>
DefProp = obj_Popup('CodeDesc','MET_PROPERTY':@RM:PropCode)
CASE CurrCol = COL$MET_MIN AND CurrLine<1,COL$MET_MIN> = ''
MetTest = CurrLine<1,COL$MET_TEST>
@ -1251,4 +1229,3 @@ return

View File

@ -2015,7 +2015,7 @@ HoldClick:
HoldData = Dialog_Box('DIALOG_HOLD',@WINDOW,Transition:@FM:@FM:HoldType:@FM:Stage:@FM:Interrupted)
If HoldData NE 'Cancel' then
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEnt, '', HoldData, @User4)
Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEnt, '', HoldData, '')
IF Error_Services("HasError") THEN
ErrCode = Error_Services("GetMessage")
ErrMsg(errCode)

2505
LSL2/STPROC/COMM_WO_LOG.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ COMPILE FUNCTION Comm_WO_Mat(Instruction, Parm1,Parm2)
10/18/2006 - John C. Henry, J.C. Henry & Co., Inc.
*/
DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Wo_Mat_Services
DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message
DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window
DECLARE SUBROUTINE EditCell, obj_NCR, obj_Notes, obj_WO_Mat, obj_Tables, SAP_Services, Hold_Services
@ -627,7 +627,6 @@ MakeUpClick:
LotId = Xlate('WO_MAT', WOMatKey, 'WMO_KEY', 'X')
end else
LotId = Xlate('WO_MAT', WOMatKey, 'RDS_NO', 'X')
RDSNo = LotID
end
If LotId NE '' then
@ -637,22 +636,12 @@ MakeUpClick:
Parms<3> = 'MU' ; // Wafer counter tool location
Proceed = Dialog_Box('NDW_WAFER_COUNTER', @Window, Parms)
If Proceed EQ True$ then
obj_WO_Mat('ChangeFlag',WOMatKey:@RM:FieldNo:@RM:CheckValue)
If EpiPro EQ False$ then
IF Get_Status(errCode) THEN
ErrMsg('Unable to set makeup flag until Unload stage is signed.')
InvalidRequest = True$
END else
Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR')
If (CheckValue EQ True$) then
Wo_Mat_Services('MakeupFlagOn', RDSNo)
end
end
end else
Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR')
end
Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR')
obj_WO_Mat('ChangeFlag',WOMatKey:@RM:FieldNo:@RM:CheckValue)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
end else
InvalidRequest = True$
end

View File

@ -17,11 +17,11 @@ DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindo
DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window
DECLARE SUBROUTINE EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables
DECLARE SUBROUTINE SRP_Stopwatch, Update_Index, Database_Services, obj_RDS, Create_Dialog, Dialog_Box
DECLARE SUBROUTINE Sleepery, Wo_Mat_Services
DECLARE SUBROUTINE Sleepery
DECLARE FUNCTION Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists
DECLARE FUNCTION Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Signature_Services
DECLARE FUNCTION MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services
DECLARE FUNCTION Database_Services, RetStack, Datetime, Error_Services, Rds_Services
DECLARE FUNCTION Database_Services, RetStack, Datetime, Error_Services
$INSERT POPUP_EQUATES
$INSERT LOGICAL
@ -434,7 +434,7 @@ RejMat:
WfrID = SlotList<SelectedRows<I>, COL$WAFER_ID>
PrevNCR = SlotList<SelectedRows<I>, COL$SLOT_NCR>
MUWfrID = SlotList<SelectedRows<I>, COL$MU_WAFER_ID>
If (WfrID EQ '') then
If ( (MetNo NE '') or (WfrID EQ '') or (PrevNCR NE '' and MUWfrID EQ '') ) then
AllSlotsPermitted = False$
IneligibleSlots<0, -1> = SlotNo
end
@ -830,18 +830,8 @@ AddMakeup:
FieldNo = WO_MAT_MAKEUP_BOX$
CheckValue = 1
EpiCheck = Rds_Services('IsEpiPro', RDSNo)
obj_WO_Mat('ChangeFlag',WOMatKey:@RM:FieldNo:@RM:CheckValue)
If EpiCheck EQ False$ then
IF Get_Status(errCode) THEN
ErrMsg('Unable to set makeup flag until Unload stage is signed.')
Return
END else
Wo_Mat_Services('MakeupFlagOn', RDSNo)
end
end
SlotWaferIDs = Xlate('WO_MAT', WOMatKey, 'SLOT_WAFER_ID', 'X')
Convert @VM to '' in SlotWaferIDs
@ -1067,7 +1057,6 @@ MakeUpLot:
If Not(InvalidRequest) then
RDSNo = Get_Property(@Window:'.RDS_NO', 'TEXT')
EpiCheck = Rds_Services('IsEpiPro', RDSNo)
If RDSNo NE '' then
Parms = ''
Parms<1> = RDSNo ; // Cassette to verify wafer count of.
@ -1075,22 +1064,12 @@ MakeUpLot:
Parms<3> = 'MU' ; // Wafer counter tool location
Proceed = Dialog_Box('NDW_WAFER_COUNTER', @Window, Parms)
If Proceed EQ True$ then
Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR')
obj_WO_Mat('ChangeFlag',WOMatKey:@RM:FieldNo:@RM:CheckValue)
If EpiCheck EQ False$ then
IF Get_Status(errCode) THEN
ErrMsg('Unable to set makeup flag until Unload stage is signed.')
InvalidRequest = True$
END else
Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR')
If (CheckValue EQ True$) then
Wo_Mat_Services('MakeupFlagOn', RDSNo)
end
end
end else
Set_Property(@WINDOW,'SAVEWARN', False$)
Send_Event(@WINDOW,'CLEAR')
end
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
end else
InvalidRequest = True$
end
@ -1235,5 +1214,3 @@ return

File diff suppressed because it is too large Load Diff

View File

@ -213,3 +213,4 @@ UpdateHALItem:
end
return

View File

@ -1,4 +1,6 @@
Compile subroutine Copy_Backlog_Records_To_SQL(VOID)
#pragma precomp SRP_PreCompiler
/*****************************************************************************\
This is a utility function. For each record found in SQL_BACKLOG, it makes
sure the identified record is copied to SQL. Then the backlog record is
@ -8,97 +10,95 @@ Compile subroutine Copy_Backlog_Records_To_SQL(VOID)
-------
08/10/2010 KRF Original Programmer
\*****************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert APP_INSERTS
Declare subroutine Copy_Record_To_SQL, Delete_Record_From_SQL, SRP_TcpClient, Copy_Pending_Records_To_Sql
Declare function GetTickCount, Database_Services, SRP_TcpClient, Datetime, Environment_Services
Main:
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
Lock hSysLists, 'Copy_Backlog_Records_To_SQL' then
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
Lock hSysLists, 'Copy_Backlog_Records_To_SQL' then
Copy_Pending_Records_To_Sql()
Copy_Pending_Records_To_Sql()
CurrDtm = Datetime()
TablesToSkip = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_TABLES_TO_SKIP')
NonCriticalTables = Database_Services('ReadDataRow', 'APP_INFO', 'NONCRITICAL_SQL_TABLES')
Open "SQL_PENDING" to pTable then
Open "SQL_BACKLOG" to hTable then
ClearSelect
Select hTable
Done = 0
Loop
ReadNext Key else Done = 1
Command = ''
Skip = False$
Until Done
Table = Key[1, "*"]
Locate Table in TablesToSkip by "AL" using "," setting ListPos then
Delete hTable, Key else null
end else
Locate Table in NonCriticalTables using @FM setting Dummy then
ID = Key[Col2() + 1, Len(Key)]
Read Dummy From pTable, Key then
Skip = True$
end
If Skip EQ False$ then
Begin Case
Case ID[-7, 7] EQ "*DELETE"
ID[-7, 7] = ""
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
Write CurrDtm to pTable, Key then Delete hTable, Key
Case ID[-6, 6] EQ "*WRITE"
ID[-6, 6] = ""
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
Write CurrDtm to pTable, Key then Delete hTable, Key
End Case
end else
// This record is already being processed and we don't need to process it multiple times.
Delete hTable, Key else null
end
end else
TempKey = Key
TempKey[1, Len(Table) + 1] = ''
TransTime = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransTime) + 1)] = ''
TransDate = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransDate) + 1)] = ''
Process = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(Process) + 1)] = ''
ID = TempKey
If Process EQ 'DELETE' then
pKey = Key
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(pKey)
Write CurrDtm to pTable, pKey then Delete hTable, Key
end else
pKey = Key
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(pKey)
Write CurrDtm to pTable, pKey then Delete hTable, Key
end
end
CurrDtm = Datetime()
TablesToSkip = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_TABLES_TO_SKIP')
NonCriticalTables = Database_Services('ReadDataRow', 'APP_INFO', 'NONCRITICAL_SQL_TABLES')
Open "SQL_PENDING" to pTable then
Open "SQL_BACKLOG" to hTable then
ClearSelect
Select hTable
Done = 0
Loop
ReadNext Key else Done = 1
Command = ''
Skip = False$
Until Done
Table = Key[1, "*"]
Locate Table in TablesToSkip by "AL" using "," setting ListPos then
Delete hTable, Key else null
end else
Locate Table in NonCriticalTables using @FM setting Dummy then
ID = Key[Col2() + 1, Len(Key)]
Read Dummy From pTable, Key then
Skip = True$
end
If Skip EQ False$ then
Begin Case
Case ID[-7, 7] EQ "*DELETE"
ID[-7, 7] = ""
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
Write CurrDtm to pTable, Key then Delete hTable, Key
Case ID[-6, 6] EQ "*WRITE"
ID[-6, 6] = ""
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
Write CurrDtm to pTable, Key then Delete hTable, Key
End Case
end else
// This record is already being processed and we don't need to process it multiple times.
Delete hTable, Key else null
end
end else
TempKey = Key
TempKey[1, Len(Table) + 1] = ''
TransTime = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransTime) + 1)] = ''
TransDate = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransDate) + 1)] = ''
Process = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(Process) + 1)] = ''
ID = TempKey
If Process EQ 'DELETE' then
pKey = Key
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(pKey)
Write CurrDtm to pTable, pKey then Delete hTable, Key
end else
pKey = Key
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(pKey)
Write CurrDtm to pTable, pKey then Delete hTable, Key
end
end
If Skip EQ False$ then
TcpClientHandle = 0
ServerIP = Environment_Services('GetApplicationRootIP')
ServerPort = Environment_Services('GetScrapeServerPort')
Convert '\' to '' in ServerIP
If SRP_TcpClient(TcpClientHandle, 'CONNECT', ServerIP, ServerPort) then
SRP_TcpClient(TcpClientHandle, 'SEND_SES', Command)
SRP_TcpClient(TcpClientHandle, 'CLOSE_SES')
end
end
end
Repeat
end
end
Unlock hSysLists, 'Copy_Backlog_Records_To_SQL' else Null
end
If Skip EQ False$ then
TcpClientHandle = 0
ServerIP = Environment_Services('GetApplicationRootIP')
Convert '\' to '' in ServerIP
If SRP_TcpClient(TcpClientHandle, 'CONNECT', ServerIP, '20779') then
SRP_TcpClient(TcpClientHandle, 'SEND_SES', Command)
SRP_TcpClient(TcpClientHandle, 'CLOSE_SES')
end
end
end
Repeat
end
end
Unlock hSysLists, 'Copy_Backlog_Records_To_SQL' else Null
end
Return

View File

@ -1,47 +0,0 @@
Compile function Copy_LOT_EVENT_Record_To_SQL(Connection, Key, Record)
/*****************************************************************************\
Copies the given LOT_EVENT record to the MSSQL database.
History
-------
06/10/2025 DJS Original Programmer
\*****************************************************************************/
$insert LOT_EVENT_EQUATES
Declare function SQL_Write, SQL_Write_MV, SQL_Format
Ans = ""
// Parse record into a dimensioned array for speed
Dim Rec(13)
MatParse Record into Rec
// List of key names and their values
Keys = "LOT_EVENT_ID":@VM:SQL_Format(Key, "STR")
// List of data fields and their values
DataFields = "LOT_ID" :@VM:SQL_Format(Rec(LOT_EVENT_LOT_ID$), "STR"):@FM
DataFields := "LOT_EVENT_TYPE" :@VM:SQL_Format(Rec(LOT_EVENT_LOT_EVENT_TYPE$), "STR"):@FM
DataFields := "EVENT_DATETIME" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_DATETIME$), "DATETIME"):@FM
DataFields := "EVENT_NOTE" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_NOTE$), "STR"):@FM
DataFields := "EQUIPMENT_ID" :@VM:SQL_Format(Rec(LOT_EVENT_EQUIPMENT_ID$), "STR"):@FM
DataFields := "EVENT_REDUCE_WAFER_QTY" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_REDUCE_WAFER_QTY$), "INT"):@FM
DataFields := "EVENT_BONUS_WAFER_QTY" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_BONUS_WAFER_QTY$), "INT"):@FM
DataFields := "EVENT_BEGIN_WAFER_QTY" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_BEGIN_WAFER_QTY$), "INT"):@FM
DataFields := "EVENT_END_WAFER_QTY" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_END_WAFER_QTY$), "INT"):@FM
DataFields := "EVENT_OPERATION_ID" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_OPERATION_ID$), "STR"):@FM
DataFields := "EVENT_OPERATOR_ID" :@VM:SQL_Format(Rec(LOT_EVENT_EVENT_OPERATOR_ID$), "STR"):@FM
DataFields := "SEQUENCE" :@VM:SQL_Format(Rec(LOT_EVENT_SEQUENCE$), "INT"):@FM
DataFields := "CHRON_ID" :@VM:SQL_Format(Rec(LOT_EVENT_CHRON_ID$), "INT")
// Symbolics
// Write the data to the SQL database
Ans = SQL_Write(Connection, "LOT_EVENT", Keys, DataFields);
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
Return Ans

View File

@ -1,35 +0,0 @@
Compile function Copy_LOT_EVENT_TYPE_Record_To_SQL(Connection, Key, Record)
/*****************************************************************************\
Copies the given OPERATION record to the MSSQL database.
History
-------
06/19/2025 DJS Original Programmer
\*****************************************************************************/
$insert LOT_EVENT_TYPE_EQUATES
Declare function SQL_Write, SQL_Write_MV, SQL_Format
Ans = ""
// Parse record into a dimensioned array for speed
Dim Rec(2)
MatParse Record into Rec
// List of key names and their values
Keys = "LOT_EVENT_TYPE_ID":@VM:SQL_Format(Key, "STR")
// List of data fields and their values
DataFields = "DESCRIPTION" :@VM:SQL_Format(Rec(LOT_EVENT_TYPE.DESCRIPTION$), "STR"):@FM
DataFields := "WIP_TRANS_TYPE" :@VM:SQL_Format(Rec(LOT_EVENT_TYPE.WIP_TRANS_TYPE$), "STR")
// Symbolics
// Write the data to the SQL database
Ans = SQL_Write(Connection, "LOT_EVENT_TYPE", Keys, DataFields);
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
Return Ans

View File

@ -1,57 +0,0 @@
Compile function Copy_LOT_OPERATION_Record_To_SQL(Connection, Key, Record)
/*****************************************************************************\
Copies the given LOT_OPERATION record to the MSSQL database.
History
-------
06/19/2025 DJS Original Programmer
\*****************************************************************************/
$insert LOT_OPERATION_EQUATES
Declare function SQL_Write, SQL_Write_MV, SQL_Format
Ans = ""
// Parse record into a dimensioned array for speed
Dim Rec(25)
MatParse Record into Rec
// List of key names and their values
Keys = "LOT_OPERATION_ID":@VM:SQL_Format(Key, "STR")
// List of data fields and their values
DataFields = "LOT_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_LOT_ID$), "STR"):@FM
DataFields := "OPERATION_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_OPERATION_ID$), "STR"):@FM
DataFields := "DATETIME_IN" :@VM:SQL_Format(Rec(LOT_OPERATION_DATETIME_IN$), "DATETIME"):@FM
DataFields := "DATETIME_OUT" :@VM:SQL_Format(Rec(LOT_OPERATION_DATETIME_OUT$), "DATETIME"):@FM
DataFields := "EQUIPMENT_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_EQUIPMENT_ID$), "STR"):@FM
DataFields := "WAFER_IN_QTY" :@VM:SQL_Format(Rec(LOT_OPERATION_WAFER_IN_QTY$), "INT"):@FM
DataFields := "WAFER_OUT_QTY" :@VM:SQL_Format(Rec(LOT_OPERATION_WAFER_OUT_QTY$), "INT"):@FM
DataFields := "OPERATOR_IN_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_OPERATOR_IN_ID$), "STR"):@FM
DataFields := "OPERATOR_OUT_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_OPERATOR_OUT_ID$), "STR"):@FM
DataFields := "OPERATION_SEQUENCE" :@VM:SQL_Format(Rec(LOT_OPERATION_OPERATION_SEQUENCE$), "INT"):@FM
DataFields := "REWORK" :@VM:SQL_Format(Rec(LOT_OPERATION_REWORK$), "BIT"):@FM
DataFields := "DATETIME_START" :@VM:SQL_Format(Rec(LOT_OPERATION_DATETIME_START$), "DATETIME"):@FM
DataFields := "DATETIME_STOP" :@VM:SQL_Format(Rec(LOT_OPERATION_DATETIME_STOP$), "DATETIME"):@FM
DataFields := "CLEAN_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_CLEAN_ID$), "STR"):@FM
DataFields := "PACKAGING_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_PACKAGING_ID$), "STR"):@FM
DataFields := "WAFER_COUNTER_ID" :@VM:SQL_Format(Rec(LOT_OPERATION_WAFER_COUNTER_ID$), "STR"):@FM
DataFields := "OPERATION_TYPE" :@VM:SQL_Format(Rec(LOT_OPERATION_OPERATION_TYPE$), "STR"):@FM
DataFields := "OPERATION_CLASS" :@VM:SQL_Format(Rec(LOT_OPERATION_OPERATION_CLASS$), "STR"):@FM
DataFields := "MET_TEST_TYPE_REQUIRED" :@VM:SQL_Format(Rec(LOT_OPERATION_MET_TEST_TYPE_REQUIRED$), "BIT"):@FM
DataFields := "MET_TEST_REQUIRED" :@VM:SQL_Format(Rec(LOT_OPERATION_MET_TEST_REQUIRED$), "BIT"):@FM
DataFields := "PACKAGING_REQUIRED" :@VM:SQL_Format(Rec(LOT_OPERATION_PACKAGING_REQUIRED$), "BIT"):@FM
DataFields := "CLEAN_REQUIRED" :@VM:SQL_Format(Rec(LOT_OPERATION_CLEAN_REQUIRED$), "BIT"):@FM
DataFields := "WAFER_COUNTER_REQUIRED" :@VM:SQL_Format(Rec(LOT_OPERATION_WAFER_COUNTER_REQUIRED$), "BIT")
// Symbolics
// Write the data to the SQL database
Ans = SQL_Write(Connection, "LOT_OPERATION", Keys, DataFields);
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
Return Ans

View File

@ -1,51 +0,0 @@
Compile function Copy_LOT_Record_To_SQL(Connection, Key, Record)
/*****************************************************************************\
Copies the given LOT record to the MSSQL database.
History
-------
06/10/2025 DJS Original Programmer
\*****************************************************************************/
$insert LOT_EQUATES
Declare function SQL_Write, SQL_Write_MV, SQL_Format
Ans = ""
// Parse record into a dimensioned array for speed
Dim Rec(23)
MatParse Record into Rec
// List of key names and their values
Keys = "LOT_ID":@VM:SQL_Format(Key, "STR")
// List of data fields and their values
DataFields = "TYPE" :@VM:SQL_Format(Rec(LOT_TYPE$), "STR"):@FM
DataFields := "PROD_ID" :@VM:SQL_Format(Rec(LOT_PROD_ID$), "STR"):@FM
DataFields := "ORIG_WAFER_QTY" :@VM:SQL_Format(Rec(LOT_ORIG_WAFER_QTY$), "INT"):@FM
DataFields := "WAFER_QTY" :@VM:SQL_Format(Rec(LOT_WAFER_QTY$), "INT"):@FM
DataFields := "VENDOR_PART_NO" :@VM:SQL_Format(Rec(LOT_VENDOR_PART_NO$), "STR"):@FM
DataFields := "VENDOR_LOT_NO" :@VM:SQL_Format(Rec(LOT_VENDOR_LOT_NO$), "STR"):@FM
DataFields := "VENDOR_CODE" :@VM:SQL_Format(Rec(LOT_VENDOR_CODE$), "STR"):@FM
DataFields := "[OPEN]" :@VM:SQL_Format(Rec(LOT_OPEN$), "BIT"):@FM
DataFields := "HOLD" :@VM:SQL_Format(Rec(LOT_HOLD$), "BIT"):@FM
DataFields := "HOT" :@VM:SQL_Format(Rec(LOT_HOT$), "BIT"):@FM
DataFields := "LEGACY_LOT_ID" :@VM:SQL_Format(Rec(LOT_LEGACY_LOT_ID$), "STR"):@FM
DataFields := "MOST_RECENT_LOT_EVENT_ID" :@VM:SQL_Format(Rec(LOT_MOST_RECENT_LOT_EVENT_ID$), "STR"):@FM
DataFields := "LEGACY_LOT_TYPE" :@VM:SQL_Format(Rec(LOT_LEGACY_LOT_TYPE$), "STR"):@FM
DataFields := "WO_LOG_ID" :@VM:SQL_Format(Rec(LOT_WO_LOG_ID$), "INT"):@FM
DataFields := "PROD_SPEC_ID" :@VM:SQL_Format(Rec(LOT_PROD_SPEC_ID$), "INT"):@FM
DataFields := "EPI_PART_NO" :@VM:SQL_Format(Rec(LOT_EPI_PART_NO$), "STR"):@FM
DataFields := "PROD_VER_NO" :@VM:SQL_Format(Rec(LOT_PROD_VER_NO$), "STR")
// Symbolics
// Write the data to the SQL database
Ans = SQL_Write(Connection, "LOT", Keys, DataFields);
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
Return Ans

View File

@ -1,43 +0,0 @@
Compile function Copy_OPERATION_Record_To_SQL(Connection, Key, Record)
/*****************************************************************************\
Copies the given OPERATION record to the MSSQL database.
History
-------
06/19/2025 DJS Original Programmer
\*****************************************************************************/
$insert OPERATION_EQUATES
Declare function SQL_Write, SQL_Write_MV, SQL_Format
Ans = ""
// Parse record into a dimensioned array for speed
Dim Rec(10)
MatParse Record into Rec
// List of key names and their values
Keys = "OPERATION_ID":@VM:SQL_Format(Key, "STR")
// List of data fields and their values
DataFields = "ACTIVE" :@VM:SQL_Format(Rec(OPERATION_ACTIVE$), "BIT"):@FM
DataFields := "CLASS_ID" :@VM:SQL_Format(Rec(OPERATION_CLASS_ID$), "STR"):@FM
DataFields := "OPERATION_DESCRIPTION" :@VM:SQL_Format(Rec(OPERATION_OPERATION_DESCRIPTION$), "STR"):@FM
DataFields := "TYPE" :@VM:SQL_Format(Rec(OPERATION_TYPE$), "STR"):@FM
DataFields := "REWORK" :@VM:SQL_Format(Rec(OPERATION_REWORK$), "BIT"):@FM
DataFields := "MET_TEST_TYPE_REQUIRED" :@VM:SQL_Format(Rec(OPERATION_MET_TEST_TYPE_REQUIRED$), "BIT"):@FM
DataFields := "MET_TEST_REQUIRED" :@VM:SQL_Format(Rec(OPERATION_MET_TEST_REQUIRED$), "BIT"):@FM
DataFields := "PACKAGING_REQUIRED" :@VM:SQL_Format(Rec(OPERATION_PACKAGING_REQUIRED$), "BIT"):@FM
DataFields := "CLEAN_REQUIRED" :@VM:SQL_Format(Rec(OPERATION_CLEAN_REQUIRED$), "BIT"):@FM
DataFields := "WAFER_COUNTER_REQUIRED" :@VM:SQL_Format(Rec(OPERATION_WAFER_COUNTER_REQUIRED$), "BIT")
// Symbolics
// Write the data to the SQL database
Ans = SQL_Write(Connection, "OPERATION", Keys, DataFields);
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
Return Ans

View File

@ -1,4 +1,6 @@
Compile subroutine Copy_Pending_Records_To_SQL(VOID)
#pragma precomp SRP_PreCompiler
/*****************************************************************************\
This is a utility function. For each record found in SQL_PENDING, it makes
sure the identified record is copied to SQL.
@ -7,104 +9,98 @@ Compile subroutine Copy_Pending_Records_To_SQL(VOID)
-------
02/06/2023 DJS Adapted from Copy_Backlog_Records_To_SQL
\*****************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert APP_INSERTS
EQU FIVE_MINUTES$ to 0.003472
EQU SECONDS_PER_DAY$ to 86400
EQU THIRTY_MINUTES$ to 1800
$Insert APP_INSERTS
Declare subroutine Copy_Record_To_SQL, Delete_Record_From_SQL, SRP_TcpClient, Database_Services
Declare function GetTickCount, Database_Services, SRP_TcpClient, Datetime, Database_Services, Environment_Services
Main:
// This only needs to be called every once in a while (e.g. 5 minutes ~ 0.003472)
Run = False$
CurrDtm = Datetime()
LastRunDtm = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_PENDING_LAST_RUNTIME')
If LastRunDtm NE '' then
TimeDiff = CurrDtm - LastRunDtm
If TimeDiff GT 0.003472 then
Run = True$
LastRunDtm = CurrDtm
end
end else
Run = True$
LastRunDtm = CurrDtm
end
// This only needs to be called every once in a while (e.g. 5 minutes ~ 0.003472)
Run = False$
CurrDtm = Datetime()
LastRunDtm = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_PENDING_LAST_RUNTIME')
If LastRunDtm NE '' then
TimeDiff = CurrDtm - LastRunDtm
If TimeDiff GT FIVE_MINUTES$ then
Run = True$
LastRunDtm = CurrDtm
end
end else
Run = True$
LastRunDtm = CurrDtm
end
If Run then
Database_Services('WriteDataRow', 'APP_INFO', 'SQL_PENDING_LAST_RUNTIME', LastRunDtm)
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
Lock hSysLists, 'Copy_Pending_Records_To_SQL' then
If Run then
Database_Services('WriteDataRow', 'APP_INFO', 'SQL_PENDING_LAST_RUNTIME', LastRunDtm)
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
Lock hSysLists, 'Copy_Pending_Records_To_SQL' then
NonCriticalTables = Database_Services('ReadDataRow', 'APP_INFO', 'NONCRITICAL_SQL_TABLES')
Open "SQL_PENDING" to pTable then
ClearSelect
Select pTable
Done = False$
Loop
ReadNext Key else Done = True$
Command = ''
Until Done
Read Rec from pTable, Key then
TransDtm = Rec<1>
ElapSecs = (CurrDtm - TransDtm) * 86400
If ElapSecs LT 1800 then
// Retry recent pending transactions (1800 seconds = 30 minutes)
Table = Key[1, "*"]
Locate Table in NonCriticalTables using @FM setting Dummy then
ID = Key[Col2() + 1, Len(Key)]
Begin Case
Case ID[-7, 7] EQ "*DELETE"
ID[-7, 7] = ""
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
Case ID[-6, 6] EQ "*WRITE"
ID[-6, 6] = ""
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
End Case
end else
TempKey = Key
TempKey[1, Len(Table) + 1] = ''
TransTime = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransTime) + 1)] = ''
TransDate = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransDate) + 1)] = ''
Process = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(Process) + 1)] = ''
ID = TempKey
If Process EQ 'DELETE' then
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
end else
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
end
end
TcpClientHandle = 0
ServerIP = Environment_Services('GetApplicationRootIP')
Convert '\' to '' in ServerIP
If SRP_TcpClient(TcpClientHandle, 'CONNECT', ServerIP, '20779') then
SRP_TcpClient(TcpClientHandle, 'SEND_SES', Command)
SRP_TcpClient(TcpClientHandle, 'CLOSE_SES')
end
end else
// This transaction most likely won't replicate due to a schema mapping issue or because
// the record no longer exists in OI, so remove this transaction from the pending queue.
Delete pTable, Key else null
end
end
NonCriticalTables = Database_Services('ReadDataRow', 'APP_INFO', 'NONCRITICAL_SQL_TABLES')
Open "SQL_PENDING" to pTable then
ClearSelect
Select pTable
Done = False$
Loop
ReadNext Key else Done = True$
Command = ''
Until Done
Read Rec from pTable, Key then
TransDtm = Rec<1>
ElapSecs = (CurrDtm - TransDtm) * SECONDS_PER_DAY$
If ElapSecs LT THIRTY_MINUTES$ then
// Retry recent pending transactions (i.e., those submitted in the last 30 minutes)
Table = Key[1, "*"]
Locate Table in NonCriticalTables using @FM setting Dummy then
ID = Key[Col2() + 1, Len(Key)]
Begin Case
Case ID[-7, 7] EQ "*DELETE"
ID[-7, 7] = ""
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
Case ID[-6, 6] EQ "*WRITE"
ID[-6, 6] = ""
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
End Case
end else
TempKey = Key
TempKey[1, Len(Table) + 1] = ''
TransTime = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransTime) + 1)] = ''
TransDate = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(TransDate) + 1)] = ''
Process = TempKey[-1, 'B*']
TempKey[-1, Neg(Len(Process) + 1)] = ''
ID = TempKey
If Process EQ 'DELETE' then
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
end else
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
end
end
TcpClientHandle = 0
ServerIP = Environment_Services('GetApplicationRootIP')
ServerPort = Environment_Services('GetScrapeServerPort')
Convert '\' to '' in ServerIP
If SRP_TcpClient(TcpClientHandle, 'CONNECT', ServerIP, ServerPort) then
SRP_TcpClient(TcpClientHandle, 'SEND_SES', Command)
SRP_TcpClient(TcpClientHandle, 'CLOSE_SES')
end
end else
// This transaction most likely won't replicate due to a schema mapping issue or because
// the record no longer exists in OI, so remove this transaction from the pending queue.
Delete pTable, Key else null
end
end
Repeat
end
Unlock hSysLists, 'Copy_Pending_Records_To_SQL' else Null
end
end
Repeat
end
Unlock hSysLists, 'Copy_Pending_Records_To_SQL' else Null
end
end
Return

View File

@ -22,108 +22,98 @@ Compile function Copy_Record_To_SQL(Table, Key, LogError, pKey)
09/23/2010 KRF Added logic to set @DICT, @ID, and @RECORD so handlers
can use symbolics
\*****************************************************************************/
$Insert APP_INSERTS
$Insert MICROSOFT_ADO_EQUATES
$insert Microsoft_Ado_Equates
If Assigned(LogError) else LogError = 0
Declare subroutine SRP_Com, Sql_Services
Declare function SRP_Com, Environment_Services, Datetime, Sql_Services, Error_Services, Database_Services, Unassigned
Declare function SRP_Com, Environment_Services, Datetime, Sql_Services, Error_Services, Database_Services
Ans = ""
Main:
If Unassigned(LogError) then LogError = False$
If Unassigned(pKey) then pKey = ''
Ans = ""
Done = False$
// Make sure table is uppercase
Convert @LOWER_CASE to @UPPER_CASE in Table
// Make sure table is uppercase
Convert @LOWER_CASE to @UPPER_CASE in Table
TablesToSkip = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_TABLES_TO_SKIP')
Locate Table in TablesToSkip by "AL" using "," setting ListPos else
Open 'SQL_PENDING' to pTable then
If pKey NE '' then Lock pTable, pKey else Done = True$
If Not(Done) then
// The expected name of the handler
Handler = "COPY_":Table:"_RECORD_TO_SQL"
// Find the stored procedure that handles this table
Open "SYSOBJ" to hSysObj then
Read ObjCode from hSysObj, "$":Handler:"*LSL2" then
// Connect to the ODBC
If SRP_Com(Connection, "CREATE", "ADODB.Connection") then
ConnectionString = Environment_Services('GetSQLScrapeConnectionString')
If SRP_Com(Connection, "CALL", "Open", ConnectionString) EQ "" then
// Read the record and call the handler
Open Table to hTable then
Read @RECORD from hTable, Key then
If Key NE "" then
Open "DICT.":Table to @DICT then null
@ID = Key
Ans = Function(@Handler(Connection, Key, @RECORD))
If (Ans EQ '') then
If Assigned(pKey) then
If (pKey NE '') then
Delete pTable, pKey else Null
end
end
TablesToSkip = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_TABLES_TO_SKIP')
Locate Table in TablesToSkip by "AL" using "," setting ListPos else
// The expected name of the handler
Handler = "COPY_":Table:"_RECORD_TO_SQL"
// Find the stored procedure that handles this table
Open "SYSOBJ" to hSysObj then
Read ObjCode from hSysObj, "$":Handler:"*LSL2" then
// Connect to the ODBC
If SRP_Com(Connection, "CREATE", "ADODB.Connection") then
ConnectionString = Environment_Services('GetSQLScrapeConnectionString')
If SRP_Com(Connection, "CALL", "Open", ConnectionString) EQ "" then
// Read the record and call the handler
Open Table to hTable then
Read @RECORD from hTable, Key then
If Key NE "" then
Open "DICT.":Table to @DICT then null
@ID = Key
Ans = Function(@Handler(Connection, Key, @RECORD))
If Ans EQ '' then
If Assigned(pKey) then
If pKey NE '' then
Open 'SQL_PENDING' to pTable then
Delete pTable, pKey else null
end
end
end else
Ans = 'Unable to read ':Key:' from ':Table:' table.'
end
end
end else
Ans = 'Unable to open connection to SQL server. SQL connection error: '
Ans := SRP_Com(Connection, "ERROR")
end
SRP_Com(Connection, "CALL", "Close")
SRP_Com(Connection, "RELEASE")
end else
Ans = "Unable to create ADO connection."
end
end
end
end
end else
Ans = 'Unable to read ':Key:' from ':Table:' table.'
end
end
end else
Ans = 'Unable to open connection to SQL server. SQL connection error: ':SRP_Com(Connection, "ERROR")
end
SRP_Com(Connection, "CALL", "Close")
SRP_Com(Connection, "RELEASE")
end else
Ans = "Unable to create ADO connection."
end
end
If LogError and Len(Ans) then
Open "SQL_ERROR" to hSqlError then
ErrorKey = OConv(Date(), "D4-J")
Timestamp = OConv(Datetime(), 'DT')
Read Errors from hSqlError, ErrorKey then
Errors := @FM:Table:@VM:Key:@VM:Timestamp:@VM:Ans
Write Errors to hSqlError, ErrorKey
end else
Errors = Table:@VM:Key:@VM:Timestamp:@VM:Ans
Write Errors to hSqlError, ErrorKey
end
end
end
If Assigned(pKey) then
If (pKey NE '') then
// Always log the result
Open 'SQL_LOG' to hLog then
If Ans EQ '' then
Result = 'PROCESSED'
end else
Result = Ans
end
If LogError and Len(Ans) then
Open "SQL_ERROR" to hSqlError then
ErrorKey = OConv(Date(), "D4-J")
Timestamp = OConv(Datetime(), 'DT')
Read Errors from hSqlError, ErrorKey then
Errors := @FM:Table:@VM:Key:@VM:Timestamp:@VM:Ans
Write Errors to hSqlError, ErrorKey
end else
Errors = Table:@VM:Key:@VM:Timestamp:@VM:Ans
Write Errors to hSqlError, ErrorKey
end
end
end
If Assigned(pKey) then
If (pKey NE '') then
// Call unlock here in case we ran into an error above
Unlock pTable, pKey else Null
// Always log the result
Open 'SQL_LOG' to hLog then
If Ans EQ '' then
Result = 'PROCESSED'
end else
Result = Ans
end
CurrDate = Date()
Read Log from hLog, CurrDate then
Log := @FM:pKey:@VM:Result
end else
Log = pKey:@VM:Result
end
Write Log to hLog, CurrDate
end
end
CurrDate = Date()
Read Log from hLog, CurrDate then
Log := @FM:pKey:@VM:Result
end else
Log = pKey:@VM:Result
end
Write Log to hLog, CurrDate
end
end
end
end
end
end
end
Return Ans

View File

@ -14,52 +14,49 @@ Declare function SQL_Write, SQL_Write_MV, SQL_Format
Ans = ""
// Parse record into a dimensioned array for speed
Dim Rec(86)
Dim Rec(82)
MatParse Record into Rec
// List of key names and their values
Keys = "WO":@VM:SQL_Format(Key, "INT")
// List of data fields and their values
DataFields = "ENTRY_ID" :@VM:SQL_Format(Rec(WO_LOG_ENTRY_ID$), "STR"):@FM
DataFields := "ENTRY_DATE" :@VM:SQL_Format(Rec(WO_LOG_ENTRY_DATE$), "DATE"):@FM
DataFields := "CUST_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_NO$), "INT"):@FM
DataFields := "QTY" :@VM:SQL_Format(Rec(WO_LOG_QTY$), "INT"):@FM
DataFields := "PROD_SPEC_ID" :@VM:SQL_Format(Rec(WO_LOG_PROD_SPEC_ID$), "INT"):@FM
DataFields := "NOTES" :@VM:SQL_Format(Rec(WO_LOG_NOTES$), "STR", 1):@FM
DataFields := "CUST_SHIP_DATE" :@VM:SQL_Format(Rec(WO_LOG_CUST_SHIP_DATE$), "DATE"):@FM
DataFields := "STATUS" :@VM:SQL_Format(Rec(WO_LOG_STATUS$), "STR"):@FM
DataFields := "ORG_SCHEDULED" :@VM:SQL_Format(Rec(WO_LOG_ORG_SCHEDULED$), "BIT"):@FM
DataFields := "RECEIVED_DATE" :@VM:SQL_Format(Rec(WO_LOG_RECEIVED_DATE$), "DATE"):@FM
DataFields := "CLOSE_DATE" :@VM:SQL_Format(Rec(WO_LOG_CLOSE_DATE$), "DATE"):@FM
DataFields := "RECEIVED_TIME" :@VM:SQL_Format(Rec(WO_LOG_RECEIVED_TIME$), "TIME"):@FM
DataFields := "COMMIT_DATE" :@VM:SQL_Format(Rec(WO_LOG_COMMIT_DATE$), "DATE"):@FM
DataFields := "CYCLE_TIME" :@VM:SQL_Format(Rec(WO_LOG_CYCLE_TIME$), "STR"):@FM
DataFields := "UNIT_PRICE" :@VM:SQL_Format(Rec(WO_LOG_UNIT_PRICE$), "STR"):@FM
DataFields := "ORDER_NO" :@VM:SQL_Format(Rec(WO_LOG_ORDER_NO$), "STR"):@FM
DataFields := "RX_DTM" :@VM:SQL_Format(Rec(WO_LOG_RX_DTM$), "DATETIME"):@FM
DataFields := "OUT_CASS_LOAD_QTY" :@VM:SQL_Format(Rec(WO_LOG_OUT_CASS_LOAD_QTY$), "INT"):@FM
DataFields := "PART_NO" :@VM:SQL_Format(Rec(WO_LOG_PART_NO$), "STR"):@FM
DataFields := "PROD_ORD_NO" :@VM:SQL_Format(Rec(WO_LOG_PROD_ORD_NO$), "STR"):@FM
DataFields := "WO_START_DTM" :@VM:SQL_Format(Rec(WO_LOG_WO_START_DTM$), "DATETIME"):@FM
DataFields := "WO_STOP_DTM" :@VM:SQL_Format(Rec(WO_LOG_WO_STOP_DTM$), "DATETIME"):@FM
DataFields := "WO_HOLD" :@VM:SQL_Format(Rec(WO_LOG_WO_HOLD$), "BIT"):@FM
DataFields := "EPI_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_EPI_PART_NO$), "STR"):@FM
DataFields := "ORD_SUB_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_ORD_SUB_PART_NO$), "STR"):@FM
DataFields := "ORD_SUB_PART_REV" :@VM:SQL_Format(Rec(WO_LOG_ORD_SUB_PART_REV$), "STR"):@FM
DataFields := "CUST_PO_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_PO_NO$), "STR"):@FM
DataFields := "SAP_ORD_QTY" :@VM:SQL_Format(Rec(WO_LOG_SAP_ORD_QTY$), "INT"):@FM
DataFields := "CUST_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_PART_NO$), "STR"):@FM
DataFields := "CUST_PART_INBOUND" :@VM:SQL_Format(Rec(WO_LOG_CUST_PART_INBOUND$), "STR"):@FM
DataFields := "CUST_SUB_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_SUB_PART_NO$), "STR"):@FM
DataFields := "CUST_SUB_MFR" :@VM:SQL_Format(Rec(WO_LOG_CUST_SUB_MFR$), "STR"):@FM
DataFields := "PROD_ORD_NO_TMP" :@VM:SQL_Format(Rec(WO_LOG_PROD_ORD_NO_TMP$), "STR"):@FM
DataFields := "ORIGIN" :@VM:SQL_Format(Rec(WO_LOG_ORIGIN$), "STR"):@FM
DataFields := "INCO_CODE" :@VM:SQL_Format(Rec(WO_LOG_INCO_CODE$), "STR"):@FM
DataFields := "HOT_FLAG" :@VM:SQL_Format(Rec(WO_LOG_HOT_FLAG$), "BIT"):@FM
DataFields := "CURR_STATUS_STATIC" :@VM:SQL_Format(Rec(WO_LOG_CURR_STATUS_STATIC$), "STR"):@FM
DataFields := "REL_QTY" :@VM:SQL_Format(Rec(WO_LOG_REL_QTY_STATIC$), "INT"):@FM
DataFields := "UNREL_QTY" :@VM:SQL_Format(Rec(WO_LOG_UNREL_QTY_STATIC$), "INT"):@FM
DataFields = "ENTRY_ID" :@VM:SQL_Format(Rec(WO_LOG_ENTRY_ID$), "STR"):@FM
DataFields := "ENTRY_DATE" :@VM:SQL_Format(Rec(WO_LOG_ENTRY_DATE$), "DATE"):@FM
DataFields := "CUST_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_NO$), "INT"):@FM
DataFields := "QTY" :@VM:SQL_Format(Rec(WO_LOG_QTY$), "INT"):@FM
DataFields := "PROD_SPEC_ID" :@VM:SQL_Format(Rec(WO_LOG_PROD_SPEC_ID$), "INT"):@FM
DataFields := "NOTES" :@VM:SQL_Format(Rec(WO_LOG_NOTES$), "STR", 1):@FM
DataFields := "CUST_SHIP_DATE" :@VM:SQL_Format(Rec(WO_LOG_CUST_SHIP_DATE$), "DATE"):@FM
DataFields := "STATUS" :@VM:SQL_Format(Rec(WO_LOG_STATUS$), "STR"):@FM
DataFields := "ORG_SCHEDULED" :@VM:SQL_Format(Rec(WO_LOG_ORG_SCHEDULED$), "BIT"):@FM
DataFields := "RECEIVED_DATE" :@VM:SQL_Format(Rec(WO_LOG_RECEIVED_DATE$), "DATE"):@FM
DataFields := "CLOSE_DATE" :@VM:SQL_Format(Rec(WO_LOG_CLOSE_DATE$), "DATE"):@FM
DataFields := "RECEIVED_TIME" :@VM:SQL_Format(Rec(WO_LOG_RECEIVED_TIME$), "TIME"):@FM
DataFields := "COMMIT_DATE" :@VM:SQL_Format(Rec(WO_LOG_COMMIT_DATE$), "DATE"):@FM
DataFields := "CYCLE_TIME" :@VM:SQL_Format(Rec(WO_LOG_CYCLE_TIME$), "STR"):@FM
DataFields := "UNIT_PRICE" :@VM:SQL_Format(Rec(WO_LOG_UNIT_PRICE$), "STR"):@FM
DataFields := "ORDER_NO" :@VM:SQL_Format(Rec(WO_LOG_ORDER_NO$), "STR"):@FM
DataFields := "RX_DTM" :@VM:SQL_Format(Rec(WO_LOG_RX_DTM$), "DATETIME"):@FM
DataFields := "OUT_CASS_LOAD_QTY":@VM:SQL_Format(Rec(WO_LOG_OUT_CASS_LOAD_QTY$), "INT"):@FM
DataFields := "PART_NO" :@VM:SQL_Format(Rec(WO_LOG_PART_NO$), "STR"):@FM
DataFields := "PROD_ORD_NO" :@VM:SQL_Format(Rec(WO_LOG_PROD_ORD_NO$), "STR"):@FM
DataFields := "WO_START_DTM" :@VM:SQL_Format(Rec(WO_LOG_WO_START_DTM$), "DATETIME"):@FM
DataFields := "WO_STOP_DTM" :@VM:SQL_Format(Rec(WO_LOG_WO_STOP_DTM$), "DATETIME"):@FM
DataFields := "WO_HOLD" :@VM:SQL_Format(Rec(WO_LOG_WO_HOLD$), "BIT"):@FM
DataFields := "EPI_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_EPI_PART_NO$), "STR"):@FM
DataFields := "ORD_SUB_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_ORD_SUB_PART_NO$), "STR"):@FM
DataFields := "ORD_SUB_PART_REV" :@VM:SQL_Format(Rec(WO_LOG_ORD_SUB_PART_REV$), "STR"):@FM
DataFields := "CUST_PO_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_PO_NO$), "STR"):@FM
DataFields := "SAP_ORD_QTY" :@VM:SQL_Format(Rec(WO_LOG_SAP_ORD_QTY$), "INT"):@FM
DataFields := "CUST_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_PART_NO$), "STR"):@FM
DataFields := "CUST_PART_INBOUND":@VM:SQL_Format(Rec(WO_LOG_CUST_PART_INBOUND$), "STR"):@FM
DataFields := "CUST_SUB_PART_NO" :@VM:SQL_Format(Rec(WO_LOG_CUST_SUB_PART_NO$), "STR"):@FM
DataFields := "CUST_SUB_MFR" :@VM:SQL_Format(Rec(WO_LOG_CUST_SUB_MFR$), "STR"):@FM
DataFields := "PROD_ORD_NO_TMP" :@VM:SQL_Format(Rec(WO_LOG_PROD_ORD_NO_TMP$), "STR"):@FM
DataFields := "ORIGIN" :@VM:SQL_Format(Rec(WO_LOG_ORIGIN$), "STR"):@FM
DataFields := "INCO_CODE" :@VM:SQL_Format(Rec(WO_LOG_INCO_CODE$), "STR"):@FM
DataFields := "HOT_FLAG" :@VM:SQL_Format(Rec(WO_LOG_HOT_FLAG$), "BIT"):@FM
// Symbolics
DataFields := "START_DT" :@VM:SQL_Format({START_DT}, "DATE"):@FM
@ -71,7 +68,9 @@ DataFields := "CYCLE_TIME_WIP" :@VM:SQL_Format({CYCLE_TIME_WIP},
DataFields := "CYCLE_TIME_DELTA" :@VM:SQL_Format({CYCLE_TIME_DELTA}, "DEC", 1):@FM
DataFields := "CYCLE_TIME_QA_SHIP" :@VM:SQL_Format({CYCLE_TIME_QA_SHIP}, "DEC", 1):@FM
DataFields := "CYCLE_TIME_REL_FIRST_VER":@VM:SQL_Format({CYCLE_TIME_REL_FIRST_VER}, "DEC", 1):@FM
DataFields := "SAP_TOT_WFR_QTY" :@VM:SQL_Format({SAP_TOT_WFR_QTY}, "STR")
DataFields := "SAP_TOT_WFR_QTY" :@VM:SQL_Format({SAP_TOT_WFR_QTY}, "STR"):@FM
DataFields := "REL_QTY" :@VM:SQL_Format({REL_QTY}, "INT"):@FM
DataFields := "UNREL_QTY" :@VM:SQL_Format({UNREL_QTY}, "INT")
// Write the data to the SQL database
Ans = SQL_Write(Connection, "WO_LOG", Keys, DataFields)
@ -350,4 +349,3 @@ If Ans EQ "" AND CassIdSap NE "" then
end
Return Ans

View File

@ -527,7 +527,7 @@ end service
// Reads a data column for the indicated Key ID and database table.
//----------------------------------------------------------------------------------------------------------------------
Service ReadDataColumn(TableName, KeyID, ColumnNo, NotExpired, ExpirationDuration, IgnoreMFSRoutines)
If NotExpired NE False$ then NotExpired = True$
If (ExpirationDuration EQ '') OR (Not(Num(ExpirationDuration))) then ExpirationDuration = 0
If IgnoreMFSRoutines NE True$ then IgnoreMFSRoutines = False$
@ -609,6 +609,7 @@ Service ReadDataRow(TableName, KeyID, NotExpired, ExpirationDuration, IgnoreMFSR
Memory_Services('SetValue', ServiceKeyID, DataRow)
end else
Error_Services('Add', 'Error reading ' : KeyID : ' from the ' : TableName : ' table in the ' : Service : ' service. Error = ' : @File_Error<1>)
end
end
end
@ -942,9 +943,11 @@ Service WriteDataRow(TableName, KeyID, DataRow, IgnoreSelfLock, IgnoreMFSRoutine
Error_Services('Add', 'Error writing ' : KeyID : ' to the ' : TableName : ' table in the ' : Service : ' service. Error message: ':ErrorMsg)
end
end
If IgnoreAllLocks EQ False$ then
Database_Services('ReleaseKeyIDLock', TableName, KeyID)
end
* If Error_Services('NoError') then
If IgnoreAllLocks EQ False$ then
Database_Services('ReleaseKeyIDLock', TableName, KeyID)
end
* end
end else
Error_Services('Add', 'Unable to lock ' : KeyID : ' for the ' : TableName : ' table in the ' : Service : ' service.')
end
@ -955,68 +958,6 @@ Service WriteDataRow(TableName, KeyID, DataRow, IgnoreSelfLock, IgnoreMFSRoutine
end service
//----------------------------------------------------------------------------------------------------------------------
// WriteDataColumn
//
// TableName. The linear hash database table name. - [REQUIRED]
// KeyID. The KeyID to the database table. - [REQUIRED]
// ColumnNo. Column number of the table to write. - [REQUIRED]
//
// Writes a value to a column for the indicated Key ID and database table.
//----------------------------------------------------------------------------------------------------------------------
Service WriteDataColumn(TableName, KeyID, ColumnNo, Value, IgnoreSelfLock, IgnoreMFSRoutines, IgnoreAllLocks)
If TableName NE '' AND KeyID NE '' AND ColumnNo NE '' then
If ( Num(ColumnNo) and (ColumnNo GT 0) ) then
If Unassigned(Value) then Value = ''
If IgnoreSelfLock NE True$ then IgnoreSelfLock = False$
If IgnoreMFSRoutines NE True$ then IgnoreMFSRoutines = False$
If IgnoreAllLocks NE True$ then IgnoreAllLocks = False$
If IgnoreAllLocks then
HaveLock = True$
end else
HaveLock = Database_Services('GetKeyIDLock', TableName, KeyID, IgnoreSelfLock)
end
If HaveLock EQ True$ then
TableHandle = Database_Services('GetTableHandle', TableName)
If IgnoreMFSRoutines then
MFSList = TableHandle<1, 1> ; // MFS routines are @SVM delimited.
NumMFS = DCount(MFSList, @SVM)
For MFSCnt = NumMFS to 1 Step -1
MFSRoutine = MFSList<0, 0, MFSCnt>
If (MFSRoutine NE 'SI.MFS') AND (MFSRoutine NE 'RTP57') then
MFSList = Delete(MFSList, 0, 0, MFSCnt)
end
Next MFSCnt
TableHandle<1, 1> = MFSList
end
If Error_Services('NoError') then
WriteV Value on TableHandle, KeyID, ColumnNo then
Memory_Services('SetValue', ServiceModule : '*' : 'ReadDataColumn' : '*' : TableName : '*' : KeyID : '*' : ColumnNo, Value)
end else
ErrorMsg = 'Error writing value ' : Quote(Value) ' to column number ' : ColumnNo : ' to key ' : KeyID |
: ' of table ' : TableName : ' in the ' : Service : ' service.'
Error_Services('Add', ErrorMsg)
end
end
If IgnoreAllLocks EQ False$ then
Database_Services('ReleaseKeyIDLock', TableName, KeyID)
end
end else
Error_Services('Add', 'Unable to lock ' : KeyID : ' for the ' : TableName : ' table in the ' : Service : ' service.')
end
end else
Error_Services('Add', 'ColumnNo was not a number or was not greater than zero in the ' :Service : ' service.')
end
end else
Error_Services('Add', 'TableName, KeyID, or ColumnNo argument was missing in the ' : Service : ' service.')
end
end service
//----------------------------------------------------------------------------------------------------------------------
// UnlockKeyID
//
@ -1102,3 +1043,5 @@ end service
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -220,13 +220,6 @@ Service GetWeekNum(InputDate)
end service
Service ConvertDateTimeToISO8601(DatetimeToConv)
Response = OConv(DatetimeToConv, "[SRP_DATETIME,()YYYY-MM-DD hh:mm:ss.000Z]")
swap ' ' with 'T' in Response
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs

View File

@ -1,30 +0,0 @@
Compile function Delete_LOT_EVENT_Record_From_SQL(Connection, Key, Record)
/*****************************************************************************\
Deletes the given LOT_EVENT record from the MSSQL database.
History
-------
08/15/2025 DJS Original Programmer
\*****************************************************************************/
Declare function SQL_Delete, SQL_Format
Ans = ""
// List of key names and their values
Keys = "LOT_EVENT_ID":@VM:SQL_Format(Key, "STR")
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
!! Delete records from MV tables first !!
// Currently no multi-value (child) tables
// LOT_EVENT
If Ans EQ "" then
Ans = SQL_Delete(Connection, "LOT_EVENT", Keys)
end
Return Ans

View File

@ -1,30 +0,0 @@
Compile function Delete_LOT_EVENT_TYPE_Record_From_SQL(Connection, Key, Record)
/*****************************************************************************\
Deletes the given LOT_EVENT_TYPE record from the MSSQL database.
History
-------
08/15/2025 DJS Original Programmer
\*****************************************************************************/
Declare function SQL_Delete, SQL_Format
Ans = ""
// List of key names and their values
Keys = "LOT_EVENT_TYPE_ID":@VM:SQL_Format(Key, "STR")
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
!! Delete records from MV tables first !!
// Currently no multi-value (child) tables
// LOT_EVENT_TYPE
If Ans EQ "" then
Ans = SQL_Delete(Connection, "LOT_EVENT_TYPE", Keys)
end
Return Ans

View File

@ -1,30 +0,0 @@
Compile function Delete_LOT_OPERATION_Record_From_SQL(Connection, Key, Record)
/*****************************************************************************\
Deletes the given LOT_OPERATION record from the MSSQL database.
History
-------
08/15/2025 DJS Original Programmer
\*****************************************************************************/
Declare function SQL_Delete, SQL_Format
Ans = ""
// List of key names and their values
Keys = "LOT_OPERATION_ID":@VM:SQL_Format(Key, "STR")
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
!! Delete records from MV tables first !!
// Currently no multi-value (child) tables
// LOT_OPERATION
If Ans EQ "" then
Ans = SQL_Delete(Connection, "LOT_OPERATION", Keys)
end
Return Ans

View File

@ -1,30 +0,0 @@
Compile function Delete_LOT_Record_From_SQL(Connection, Key, Record)
/*****************************************************************************\
Deletes the given LOT record from the MSSQL database.
History
-------
08/15/2025 DJS Original Programmer
\*****************************************************************************/
Declare function SQL_Delete, SQL_Format
Ans = ""
// List of key names and their values
Keys = "LOT_ID":@VM:SQL_Format(Key, "STR")
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
!! Delete records from MV tables first !!
// Currently no multi-value (child) tables
// LOT
If Ans EQ "" then
Ans = SQL_Delete(Connection, "LOT", Keys)
end
Return Ans

View File

@ -1,30 +0,0 @@
Compile function Delete_OPERATION_Record_From_SQL(Connection, Key, Record)
/*****************************************************************************\
Deletes the given OPERATION record from the MSSQL database.
History
-------
08/15/2025 DJS Original Programmer
\*****************************************************************************/
Declare function SQL_Delete, SQL_Format
Ans = ""
// List of key names and their values
Keys = "OPERATION_ID":@VM:SQL_Format(Key, "STR")
//-------------------------------------------------------------------------------------------------
// Multi-valued Fields
!! Delete records from MV tables first !!
// Currently no multi-value (child) tables
// OPERATION
If Ans EQ "" then
Ans = SQL_Delete(Connection, "OPERATION", Keys)
end
Return Ans

View File

@ -18,95 +18,81 @@ Compile function Delete_Record_From_SQL(Table, Key, LogError, pKey)
-------
09/15/2010 KRF Original Programmer
\*****************************************************************************/
$Insert APP_INSERTS
$insert MICROSOFT_ADO_EQUATES
$insert Microsoft_Ado_Equates
If Assigned(LogError) else LogError = 0
Declare subroutine Sql_Services, SRP_COM
Declare function Sql_Services, Error_Services, SRP_COM, Environment_Services, Unassigned
Declare function Sql_Services, Error_Services, SRP_COM, Environment_Services
Ans = ""
Main:
If Unassigned(LogError) then LogError = False$
If Unassigned(pKey) then pKey = ''
Ans = ""
Done = False$
// Make sure table is uppercase
Convert @LOWER_CASE to @UPPER_CASE in Table
Open 'SQL_PENDING' to pTable then
// Make sure table is uppercase
Convert @LOWER_CASE to @UPPER_CASE in Table
If pKey NE '' then Lock pTable, pKey else Done = True$
If Not(Done) then
// The expected name of the handler
Handler = "DELETE_":Table:"_RECORD_FROM_SQL"
// The expected name of the handler
Handler = "DELETE_":Table:"_RECORD_FROM_SQL"
// Find the stored procedure that handles this table
Open "SYSOBJ" to hSysObj then
Read ObjCode from hSysObj, "$":Handler:"*LSL2" then
// Connect to the ODBC/ADO
If SRP_Com(Connection, "CREATE", "ADODB.Connection") then
// Connect to the database via ODBC
ConnectionString = Environment_Services('GetSQLScrapeConnectionString')
If SRP_Com(Connection, "CALL", "Open", ConnectionString) EQ "" then
// Read the record and call the handler
If Key NE "" then
Ans = Function(@Handler(Connection, Key))
If (Ans EQ '') then
If Assigned(pKey) then
If (pKey NE '') then
Delete pTable, pKey else Null
end
end
end
end
end else
Ans = 'Unable to open connection to SQL server. SQL connection error: ':SRP_Com(Connection, "ERROR")
end
SRP_Com(Connection, "CALL", "Close")
SRP_Com(Connection, "RELEASE")
end else
Ans = "Unable to create ADO connection."
end
end
end
// Find the stored procedure that handles this table
Open "SYSOBJ" to hSysObj then
Read ObjCode from hSysObj, "$":Handler:"*LSL2" then
// Connect to the ODBC/ADO
If SRP_Com(Connection, "CREATE", "ADODB.Connection") then
// Connect to the database via ODBC
ConnectionString = Environment_Services('GetSQLScrapeConnectionString')
If SRP_Com(Connection, "CALL", "Open", ConnectionString) EQ "" then
// Read the record and call the handler
If Key NE "" then
Ans = Function(@Handler(Connection, Key))
If Ans EQ '' then
If Assigned(pKey) then
Open 'SQL_PENDING' to pTable then
Delete pTable, pKey else null
end
end
end
end
end else
Ans = 'Unable to open connection to SQL server. SQL connection error: ':SRP_Com(Connection, "ERROR")
end
SRP_Com(Connection, "CALL", "Close")
SRP_Com(Connection, "RELEASE")
end else
Ans = "Unable to create ADO connection."
end
end
end
If LogError AND Len(Ans) then
Open "SQL_ERROR" to hSqlError then
Read Errors from hSqlError, Date() then
Errors := @FM:Table:@VM:Key:@VM:Ans
Write Errors to hSqlError, Date()
end else
Errors = Table:@VM:Key:@VM:Ans
Write Errors to hSqlError, Date()
end
end
end
If LogError AND Len(Ans) then
Open "SQL_ERROR" to hSqlError then
Read Errors from hSqlError, Date() then
Errors := @FM:Table:@VM:Key:@VM:Ans
Write Errors to hSqlError, Date()
end else
Errors = Table:@VM:Key:@VM:Ans
Write Errors to hSqlError, Date()
end
end
end
// Always log the result
// Always log the result
If Assigned(pKey) then
Open 'SQL_LOG' to hLog then
If Ans EQ '' then
Result = 'PROCESSED'
end else
Result = Ans
end
CurrDate = Date()
Read Log from hLog, CurrDate then
Log := @FM:pKey:@VM:Result
end else
Log = pKey:@VM:Result
end
Write Log to hLog, CurrDate
end
end
If Assigned(pKey) then
If (pKey NE '') then
// Call unlock here in case an error was encountered above
Unlock pTable, pKey else Null
Open 'SQL_LOG' to hLog then
If Ans EQ '' then
Result = 'PROCESSED'
end else
Result = Ans
end
CurrDate = Date()
Read Log from hLog, CurrDate then
Log := @FM:pKey:@VM:Result
end else
Log = pKey:@VM:Result
end
Write Log to hLog, CurrDate
end
end
end
end
end
Return Ans

View File

@ -590,9 +590,7 @@ Service SetupDevServices()
BaselineServices = 'Update Material Logs':@VM:'Log Transaction Postings':@VM:'Process Wafer Image Queue':@VM
BaselineServices := 'Process UCL Requests':@VM:'Process ROTR Requests':@VM:'Process Wafer Image Requests':@VM
BaselineServices := 'Process SQL Requests':@VM:'Send Notes':@VM:'Update Notification Groups':@VM
BaselineServices := 'Update Security Groups':@VM:'Auto Scheduler':@VM:'Update NICA Orders':@VM:'Process Procedure Queue':@VM
BaselineServices := 'Process Transaction Queue':@VM:'Update Open Work Order Statuses':@VM:'Update Work Order Wafer Quantities':@VM
BaselineServices := 'Process Mona Requests'
BaselineServices := 'Update Security Groups':@VM:'Auto Scheduler'
Query = "SELECT SERVICES"

View File

@ -1,96 +1,97 @@
Function Engineinfo_API(@API)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Engineinfo_API
Description : API logic for the Engineinfo resource.
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
FullEndpointURL - The URL submitted by the client, including query params.
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
EndpointSegment - The URL endpoint segment.
ParentURL - The URL path preceeding the current endpoint.
CurrentAPI - The name of this stored procedure.
Parameters :
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
- APIPattern must follow this structure Engineinfo[.ID.[<Property>]]
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
Examples:
- Engineinfo.POST
- Engineinfo.ID.PUT
- Engineinfo.ID.firstName.GET
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
services do not rely upon anything being returned in the response. This is what the
various services like SetResponseBody and SetResponseStatus services are for. A response
value is only helpful if the developers want to use it for debug purposes.
History : (Date, Initials, Notes)
07/17/24 xxx Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$insert APP_INSERTS
$insert API_SETUP
$insert HTTP_INSERTS
$insert ENGINE_HEALTH_EQUATES
Declare function System_Healthcheck_Services
GoToAPI else
// The specific resource endpoint doesn't have a API handler yet.
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Endpoint Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
API remotehealthcheck.HEAD
API remotehealthcheck.GET
HTTP_Resource_Services('LoremIpsum')
end api
API engineinfo.HEAD
API engineinfo.GET
HTTP_Resource_Services('LoremIpsum')
end api
API engineinfo.ID.HEAD
API engineinfo.ID.GET
EngineID = EndpointSegment
If RowExists('APP_INFO', EngineID) then
EngineHealthInfo = System_Healthcheck_Services('GetEngineHealthInfo', EngineID)
If Error_Services('NoError') then
EngineJSON = System_Healthcheck_Services('ConvertEngineHealthInfoToJSON', EngineHealthInfo, FullEndpointURL)
ResponseCode = 200
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseBody', EngineJSON, False$, 'application/hal+json')
HTTP_Services('SetResponseStatus', ResponseCode)
end else
HTTP_Services('SetResponseStatus', 500, Error_Services('GetMessage'))
end
end else
HTTP_Services('SetResponseStatus', 401, 'Invalid Engine ID.')
end
end api
Function Engineinfo_API(@API)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Engineinfo_API
Description : API logic for the Engineinfo resource.
Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables:
HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.)
APIURL - The URL for the API entry point (e.g., api.mysite.com/v1).
FullEndpointURL - The URL submitted by the client, including query params.
FullEndpointURLNoQuery - The URL submitted by the client, excluding query params.
EndpointSegment - The URL endpoint segment.
ParentURL - The URL path preceeding the current endpoint.
CurrentAPI - The name of this stored procedure.
Parameters :
API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]:
- APIPattern must follow this structure Engineinfo[.ID.[<Property>]]
- HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc.
Examples:
- Engineinfo.POST
- Engineinfo.ID.PUT
- Engineinfo.ID.firstName.GET
Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API
services do not rely upon anything being returned in the response. This is what the
various services like SetResponseBody and SetResponseStatus services are for. A response
value is only helpful if the developers want to use it for debug purposes.
History : (Date, Initials, Notes)
07/17/24 xxx Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$insert APP_INSERTS
$insert API_SETUP
$insert HTTP_INSERTS
$insert ENGINE_HEALTH_EQUATES
Declare function System_Healthcheck_Services
GoToAPI else
// The specific resource endpoint doesn't have a API handler yet.
HTTP_Services('SetResponseStatus', 200, 'This is a valid endpoint but a web API handler has not yet been created.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Endpoint Handlers
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
API remotehealthcheck.HEAD
API remotehealthcheck.GET
HTTP_Resource_Services('LoremIpsum')
end api
API engineinfo.HEAD
API engineinfo.GET
HTTP_Resource_Services('LoremIpsum')
end api
API engineinfo.ID.HEAD
API engineinfo.ID.GET
EngineID = EndpointSegment
If RowExists('APP_INFO', EngineID) then
EngineHealthInfo = System_Healthcheck_Services('GetEngineHealthInfo', EngineID)
If Error_Services('NoError') then
EngineJSON = System_Healthcheck_Services('ConvertEngineHealthInfoToJSON', EngineHealthInfo, FullEndpointURL)
ResponseCode = 200
HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL)
HTTP_Services('SetResponseBody', EngineJSON, False$, 'application/hal+json')
HTTP_Services('SetResponseStatus', ResponseCode)
end else
HTTP_Services('SetResponseStatus', 500, Error_Services('GetMessage'))
end
end else
HTTP_Services('SetResponseStatus', 401, 'Invalid Engine ID.')
end
end api

View File

@ -36,7 +36,7 @@ Function Environment_Services(@Service, @Params)
#pragma precomp SRP_PreCompiler
$insert APP_INSERTS
$insert LOGICAL
$insert SERVICE_SETUP
$insert SRPMail_Inserts
@ -84,7 +84,7 @@ Service IsProd()
Machine = Environment_Services('GetServer')
IsProd = False$
If Machine _NEC "messa012" and Machine _NEC "mestsa01ec" and Machine _NEC "mestsa09ec" and Machine _NEC "mestsa010ec" and Machine _NEC "mestsa011ec" and Machine _NEC "mestsa012ec" and Machine _NEC "mestsa024ec" and Machine _NEC "MESTST1010" and Machine _NEC "MESTST1009" then
If Machine _NEC "messa012" and Machine _NEC "mestsa01ec" and Machine _NEC "mestsa09ec" and Machine _NEC "mestsa010ec" and Machine _NEC "mestsa011ec" and Machine _NEC "mestsa012ec" and Machine _NEC "MESTST1010" and Machine _NEC "MESTST1009" then
IsProd = True$
end
Response = IsProd
@ -122,8 +122,7 @@ Service GetApplicationRootIP()
Case Machine EQ 'MESTSA09EC' ; ApplicationRootIP = '\\10.95.140.62'
Case Machine EQ 'MESTSA010EC' ; ApplicationRootIP = '\\10.95.140.63'
Case Machine EQ 'MESTSA011EC' ; ApplicationRootIP = '\\10.95.140.64'
Case Machine EQ 'MESTSA012EC' ; ApplicationRootIP = '\\10.95.140.65'
Case Machine EQ 'MESTSA024EC' ; ApplicationRootIP = '\\10.95.140.66'
Case Machine EQ 'MESTSA012EC' ; ApplicationRootIP = '\\10.95.140.65'
Case Machine EQ 'MESSA012' ; ApplicationRootIP = '\\10.95.176.50'
Case Machine EQ 'MESST5201' ; ApplicationRootIP = '\\10.95.140.14'
Case Machine EQ 'MESST5202' ; ApplicationRootIP = '\\10.95.140.14'
@ -326,7 +325,6 @@ Service GetLocalRootPath()
Case Machine EQ 'MESTSA010EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA011EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA012EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESTSA024EC' ; LocalRootPath = 'D:'
Case Machine EQ 'MESST6501' ; LocalRootPath = 'C:' ; // This is a map to the user's actual C drive.
Case Machine EQ 'MESST6502' ; LocalRootPath = 'C:' ; // This is a map to the user's actual C drive.
Case Machine EQ 'MESTST1006' ; LocalRootPath = 'C:' ; // This is a map to the user's actual C drive.
@ -555,30 +553,6 @@ Service GetEnvironmentVariable(VariableName)
end service
Service GetServiceManagerPort()
FilePath = Drive():'\SRPEngineServer.ini'
OSRead IniFile from FilePath then
CharIndex = Index(IniFile, 'Port', 1)
Line = IniFile[CharIndex, 'F':CRLF$]
Response = Trim(Line[-1, 'B='])
end
end service
Service GetScrapeServerPort()
FilePath = Drive():'\SRPEngineServerScrape.ini'
OSRead IniFile from FilePath then
CharIndex = Index(IniFile, 'Port', 1)
Line = IniFile[CharIndex, 'F':CRLF$]
Response = Trim(Line[-1, 'B='])
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Some files were not shown because too many files have changed in this diff Show More